# API Documentation

#### API Documentation

**SynaptiQ Systems** provides several APIs for developers to interact with nodes, integrate LLMs, manage tasks, and enable decentralized collaboration.

***

**1. SwarmNode Class**

The **SwarmNode** class enables decentralized communication between nodes using IPFS.

**Methods**

* **send\_decentralized\_message(message)**\
  Send a message using IPFS.

  **Example:**

  ```python
  pythonCopy codenode.send_decentralized_message("Hello, world!")
  ```
* **retrieve\_decentralized\_message(ipfs\_hash)**\
  Retrieve a message from IPFS using its hash.

  **Example:**

  ```python
  pythonCopy codenode.retrieve_decentralized_message("QmHashHere")
  ```

***

**2. TaskScheduler Class**

The **TaskScheduler** class manages task distribution and assignment within the swarm.

**Methods**

* **add\_task(node\_id, task, priority)**\
  Add a task to the scheduler.

  **Example:**

  ```python
  pythonCopy codescheduler.add_task(1, "Process data", priority=5)
  ```
* **assign\_task(nodes)**\
  Assign tasks to nodes dynamically based on priority.

  **Example:**

  ```python
  pythonCopy codescheduler.assign_task(swarm.nodes)
  ```

***

**3. SwarmConsensus Class**

The **SwarmConsensus** class handles collaborative decision-making among agents.

**Methods**

* **propose\_task(task\_description)**\
  Propose a task to the swarm for consensus.

  **Example:**

  ```python
  pythonCopy codeproposal_id = swarm.propose_task("Analyze data trends")
  ```
* **vote(proposal\_id)**\
  Vote on a task proposal.

  **Example:**

  ```python
  pythonCopy codeswarm.vote(proposal_id)
  ```
* **get\_consensus()**\
  Check if consensus has been reached for a task.

  **Example:**

  ```python
  pythonCopy codeconsensus = swarm.get_consensus()
  print(consensus)
  ```

***

**4. IPFSClient Class**

The **IPFSClient** class enables decentralized storage and retrieval of data using IPFS.

**Methods**

* **upload\_file(file\_path)**\
  Upload a file to IPFS.

  **Example:**

  ```python
  pythonCopy codecid = ipfs_client.upload_file("data/task_data.json")
  print(f"Uploaded to IPFS with CID: {cid}")
  ```
* **retrieve\_file(cid, output\_path)**\
  Retrieve a file from IPFS using its CID.

  **Example:**

  ```python
  pythonCopy codeipfs_client.retrieve_file(cid, output_path="downloaded_data.json")
  ```

***

**5. Task Execution Examples**

* **Example 1: Running a Swarm Simulation**\
  Simulate a swarm with 10 nodes:

  ```python
  pythonCopy codefrom src.swarm.advanced_swarm_behavior import Swarm

  swarm = Swarm(10)
  swarm.simulate(5)
  ```
* **Example 2: Decentralized Messaging**\
  Send and retrieve messages using IPFS:

  ```python
  pythonCopy code# Send a message
  node.send_decentralized_message("Task completed successfully.")

  # Retrieve a message
  message = node.retrieve_decentralized_message("QmHashHere")
  print(f"Retrieved message: {message}")
  ```
* **Example 3: Task Scheduling**\
  Add and assign tasks dynamically:

  ```python
  pythonCopy codescheduler.add_task(1, "Optimize reinforcement learning parameters", priority=5)
  scheduler.assign_task(swarm.nodes)
  ```

***

**6. Integration Notes**

* **Environment Variables**\
  Set wallet configurations securely for blockchain integration:

  ```bash
  bashCopy codeSOLANA_WALLET_PATH=/path/to/solana-wallet.json
  ETHEREUM_WALLET_PRIVATE_KEY=your_private_key_here
  ```
* **Modular Components**\
  All components (e.g., **IPFSClient**, **SwarmConsensus**) are designed to work independently or in combination.
* **Extensibility**\
  Developers can extend core classes to customize workflows for specific use cases.

***

**Common Errors and Troubleshooting**

| **Error**                           | **Solution**                                                            |
| ----------------------------------- | ----------------------------------------------------------------------- |
| **FileNotFoundError: Wallet path**  | Ensure the `SOLANA_WALLET_PATH` variable is set correctly.              |
| **ValueError: Private key missing** | Set the `ETHEREUM_WALLET_PRIVATE_KEY` variable in your environment.     |
| **Consensus not reached**           | Increase the threshold or verify voting agents are active in the swarm. |
