Solutions
This section explains how to get solutions for specific actions using the Gopher API.
GET - /solutions/aggregation
Description
This endpoint calculates the best combination of single-hop transfers.
Endpoint
GET /solutions/aggregation
Response
The response is a JSON object containing an array of solutions.
Example Request
curl -X 'GET' \
  'https://gopher.test.buildwithsygma.com/solutions/aggregation' \
  -H 'accept: application/json'
Example Response
{
  "data": [
    {
      "destinationChain": 42161,
      "destinationTokenAddress": "0x...",
      "duration": 300,
      "fee": {
        "amount": "1000000",
        "amountUSD": 1.00
      },
      "gasCost": {
        "amount": "50000",
        "amountUSD": 0.05
      },
      "senderAddress": "0x...",
      "sourceChain": 1,
      "sourceTokenAddress": "0x...",
      "amount": "1000000000",
      "tool": {
        "logoURI": "https://example.com/logos/tool.png",
        "name": "ToolName"
      },
      "transaction": {
        "chainId": 1,
        "data": "0x...",
        "from": "0x...",
        "gasLimit": "21000",
        "gasPrice": "20000000000",
        "to": "0x...",
        "value": "1000000000"
      }
    }
  ]
}
Fields
- destinationChain: The ID of the destination chain.
- destinationTokenAddress: The address of the destination token.
- duration: The estimated duration for the transaction in seconds.
- fee: The fee for the transaction, including the amount in the smallest unit and its equivalent in USD.
- gasCost: The gas cost for the transaction, including the amount in the smallest unit and its equivalent in USD.
- senderAddress: The sender's address.
- sourceChain: The ID of the source chain.
- sourceTokenAddress: The address of the source token.
- amount: The amount to be transferred in the smallest unit.
- tool: An object containing information about the tool used for the transaction.- logoURI: The URI for the tool's logo.
- name: The name of the tool.
 
- transaction: The transaction object to be used for executing the transaction.- chainId: The ID of the chain.
- data: The data for the transaction.
- from: The sender's address.
- gasLimit: The gas limit for the transaction.
- gasPrice: The gas price for the transaction.
- to: The recipient's address.
- value: The value of the transaction in the smallest unit.
 
POST - /solutions/aggregation
Description
This endpoint calculates the best combination of single-hop transfers with a smart contract call.
Endpoint
POST /solutions/aggregation
Request Body
The request body should be a JSON object containing the following fields:
- account: The account address.
- destinationChain: The ID of the destination blockchain.
- token: The token symbol (e.g., "USDC").
- amount: The amount to be transferred.
- threshold?: An optional threshold parameter.
- whitelistedSourceChains?: An optional array of whitelisted source chain IDs.
Example Request
curl -X 'POST' \
  'https://gopher.test.buildwithsygma.com/solutions/aggregation' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
        "account": "0x123...",
        "destinationChain": 42161,
        "token": "USDC",
        "amount": 1000000000
      }'
Example Response
{
  "data": [
    {
      "destinationChain": 42161,
      "destinationTokenAddress": "0x...",
      "duration": 300,
      "fee": {
        "amount": "1000000",
        "amountUSD": 1.00
      },
      "gasCost": {
        "amount": "50000",
        "amountUSD": 0.05
      },
      "senderAddress": "0x...",
      "sourceChain": 1,
      "sourceTokenAddress": "0x...",
      "amount": "1000000000",
      "tool": {
        "logoURI": "https://example.com/logos/tool.png",
        "name": "ToolName"
      },
      "transaction": {
        "chainId": 1,
        "data": "0x...",
        "from": "0x...",
        "gasLimit": "21000",
        "gasPrice": "20000000000",
        "to": "0x...",
        "value": "1000000000"
      }
    }
  ]
}
Usage Notes
- Replace the placeholders in the example requests with appropriate values.
- Ensure the request body is correctly formatted for the POSTendpoint.
These endpoints return a JSON object with the best solutions for token transfers, either as a simple aggregation or with a smart contract call.