πŸ–₯️SDK

SDK for swaps, balances, token lists, and prices

Installation

Using npm

npm install @panoraexchange/swap-sdk

Using yarn

yarn add @panoraexchange/swap-sdk

Using pnpm

pnpm add @panoraexchange/swap-sdk

Usage

1. Initialize

import Panora, { PanoraConfig } from "@panoraexchange/swap-sdk"

const config: PanoraConfig = {
  panoraApiKey: "PANORA_API_KEY", // Optional. Default is Panora's public api key
  geomiApiKey: "GEOMI_API_KEY", // Optional. AKA Aptos Build Api Key. Takes higher priority over rpcUrl
  rpcUrl: "CUSTOM_RPC_URL", // Optional
}

const panora = new Panora(config)
  • Public API Key:

    a4^KV_EaTf4MW#ZdvgGKX#HUD^3IFEAOV_kzpIE^3BQGA8pDnrkT7JcIy#HNlLGi

    Note: This API key's limits should be sufficient for most use cases. Protocols within the Aptos ecosystem with specific requirements or customization may submit a ticket on Discord.

2. Swap

Fetches a swap quote and executes the transaction on-chain in a single step. Use this when you want to trigger end-to-end transaction without fetching or managing quotes separately. Refer API page for all available query parameters

i. ExactInSwap:

const exactInSwap = async () => {
  const response = await panora.swap({
    params: {
      chainId: "1",
      fromTokenAddress:
        "0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b",
      toTokenAddress: "0xa",
      fromTokenAmount: "100",
      toWalletAddress: "YOUR WALLET ADDRESS",
      slippagePercentage: "1",
      integratorFeeAddress: "INTEGRATOR FEE WALLET ADDRESS",
      integratorFeePercentage: "1",
    },
    private_key: "YOUR PRIVATE KEY",
  })
}

ii. ExactOutSwap:

const exactOutSwap = async () => {
  const response = await panora.swap({
    params: {
      chainId: "1",
      fromTokenAddress:
        "0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b",
      toTokenAddress: "0xa",
      toTokenAmount: "10.5",
      toWalletAddress: "YOUR WALLET ADDRESS",
      slippagePercentage: "1",
      integratorFeeAddress: "INTEGRATOR FEE WALLET ADDRESS",
      integratorFeePercentage: "1",
    },
    private_key: "YOUR_PRIVATE_KEY",
  })
}

3. Quote & Execute

a. Quote: Returns quote for a swap transaction. Contains transaction data that can be used to build, sign and submit directly

i. ExactInSwapQuote

const exactInSwapQuote = async () => {
  const response = await panora.getQuote({
    params: {
      chainId: "1",
      fromTokenAddress:
        "0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b",
      toTokenAddress: "0xa",
      fromTokenAmount: "100",
      toWalletAddress: "YOUR WALLET ADDRESS",
      slippagePercentage: "1",
      integratorFeeAddress: "INTEGRATOR FEE WALLET ADDRESS",
      integratorFeePercentage: "1",
    },
  });
};

ii. ExactOutSwapQuote

const exactOutSwapQuote = async () => {
  const response = await panora.getQuote({
    params: {
      chainId: "1",
      fromTokenAddress:
        "0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b",
      toTokenAddress: "0xa",
      toTokenAmount: "10.5",
      toWalletAddress: "YOUR WALLET ADDRESS",
      slippagePercentage: "1",
      integratorFeeAddress: "INTEGRATOR FEE WALLET ADDRESS",
      integratorFeePercentage: "1",
    },
  });
};

b. Execute Quote: Executes a transaction using a pre-fetched swap quote. Unlike swap function, this function does not fetch the quote itself. Use getQuote function to fetch a swap quote.

const quoteResponse = await panora.getQuote({
  params: {
    chainId: "1",
    fromTokenAddress:
      "0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b",
    toTokenAddress: "0xa",
    toTokenAmount: "10.5",
    toWalletAddress: "YOUR WALLET ADDRESS",
    slippagePercentage: "1",
    integratorFeeAddress: "INTEGRATOR FEE WALLET ADDRESS",
    integratorFeePercentage: "1",
  },
});

const txResponse = await panora.executeQuote({
  quote: quoteResponse,
  privateKey: "YOUR_PRIVATE_KEY"
});

4. Get Balances

Fetch wallet balances

const response = await panora.getBalances({
  walletAddress: "YOUR WALLET ADDRESS",
});

5. Get Tokenlist

Fetch Panora's Aptos Token List

const response = await panora.getTokenList()

6. Get Prices

Fetch Token Prices

const response = await panora.getPrices({
  tokenAddress: ["0xa"],
});

Attribution

Kindly include proper attribution when using the SDK in projects or presentations. Mention β€œPowered by Panora” wherever applicable.

Last updated