Class SolanaAgentKit

Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, trading and more

SolanaAgentKit

Constructors

Properties

Methods

approveMultisigProposal batchOrder burnTokens cancelAllOrders cctpTransfer checkDebridgeTransactionStatus closeAccounts closeEmptyTokenAccounts closePerpTradeLong closePerpTradeShort create3LandCollection create3LandNft createDebridgeOrder createDriftUserAccount createDriftVault createGibworkTask createMultisigProposal createSquadsMultisig createTiplink CreateWebhook createWrappedToken deleteWebhook deployCollection deployToken depositIntoDriftVault depositToDriftUserAccount depositToMultisig deriveDriftVaultAddress doesUserHaveDriftAccount driftSpotTokenSwap driftUserAccountInfo executeDebridgeOrder executeMultisigTransaction executeOkxSwap fetchTokenDetailedReport fetchTokenPrice fetchTokenReportSummary flashCloseTrade flashOpenTrade fluxbeamCreatePool getAllAssetsbyOwner getAllDomainsTLDs getAllRegisteredAllDomains getAllTopics getAsset getAssetsByAuthority getAssetsByCreator getAvailableDriftMarkets getBalance getBalanceOther getCoingeckoLatestPools getCoingeckoTrendingPools getDebridgeSupportedChains getDebridgeTokensInfo getDriftVaultInfo getElfaAiApiKeyStatus getEntryQuoteOfPerpTrade getInferenceByTopicId getLendAndBorrowAPY getMainAllDomainsDomain getOkxChainData getOkxLiquidity getOkxQuote getOkxTokens getOwnedAllDomains getOwnedDomainsForTLD getPerpMarketFundingRate getPriceInference getPrimaryDomain getPythPrice getPythPriceFeedID getSmartMentions getSmartTwitterAccountStats getTokenBalances getTokenDataByAddress getTokenDataByTicker getTokenInfoUsingCoingecko getTokenPriceDataUsingCoingecko getTopGainersOnCoingecko getTopMentionsByTicker getTPS getTrendingTokens getTrendingTokensOnCoingecko getTrendingTokensUsingElfaAi getWebhook getWormholeSupportedChains heliusParseTransactions launchPumpFunToken lendAssets limitOrder luloLend luloWithdraw manifestCreateMarket mergeTokens meteoraCreateDlmmPool meteoraCreateDynamicPool mintNFT openbookCreateMarket openPerpTradeLong openPerpTradeShort orcaClosePosition orcaCreateCLMM orcaCreateSingleSidedLiquidityPool orcaFetchPositions orcaOpenCenteredPositionWithLiquidity orcaOpenSingleSidedPosition pingElfaAiApi raydiumCreateAmmV4 raydiumCreateClmm raydiumCreateCpmm registerDomain rejectMultisigProposal requestFaucetFunds requestUnstakeFromDriftInsuranceFund requestWithdrawalFromDriftVault resolveAllDomains resolveSolDomain restake rockPaperScissors searchMentionsByKeywords sendCompressedAirdrop sendTranctionWithPriority simulateSwitchboardFeed spreadToken stake stakeToDriftInsuranceFund swap tensorCancelListing tensorListNFT tokenTransfer trade tradeUsingDelegatedDriftVault tradeUsingDriftPerpAccount transfer transferFromMultisig unstakeFromDriftInsuranceFund updateDriftVault updateDriftVaultDelegate voltrDepositStrategy voltrGetPositionValues voltrWithdrawStrategy withdrawAll withdrawFromDriftAccount withdrawFromDriftVault

Constructors

  • Parameters

    • private_key: string
    • rpc_url: string
    • openai_api_key: null | string

    Returns SolanaAgentKit

    Using openai_api_key directly in constructor is deprecated. Please use the new constructor with Config object instead:

    const agent = new SolanaAgentKit(privateKey, rpcUrl, {
    OPENAI_API_KEY: 'your-key'
    });
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

Properties

config: Config

Configuration object

connection: Connection

Solana RPC connection

wallet: Keypair

Wallet keypair for signing transactions

wallet_address: PublicKey

Public key of the wallet

Methods

  • Parameters

    • OptionaltransactionIndex: number | bigint

    Returns Promise<string>

  • Parameters

    • mints: string[]

    Returns Promise<string[]>

  • Parameters

    • marketId: PublicKey

    Returns Promise<string>

  • Parameters

    Returns Promise<
        | {
            amount: string;
            attestation: any[];
            automatic: boolean;
            destinationChain: | "Solana"
            | "Ethereum"
            | "Terra"
            | "Bsc"
            | "Polygon"
            | "Avalanche"
            | "Oasis"
            | "Algorand"
            | "Aurora"
            | "Fantom"
            | "Karura"
            | "Acala"
            | "Klaytn"
            | "Celo"
            | "Near"
            | "Moonbeam"
            | "Neon"
            | "Terra2"
            | "Injective"
            | "Osmosis"
            | "Sui"
            | "Aptos"
            | "Arbitrum"
            | "Optimism"
            | "Gnosis"
            | "Pythnet"
            | "Xpla"
            | "Btc"
            | "Base"
            | "Sei"
            | "Scroll"
            | "Mantle"
            | "Blast"
            | "Xlayer"
            | "Linea"
            | "Berachain"
            | "Seievm"
            | "Snaxchain"
            | "Unichain"
            | "Worldchain"
            | "Ink"
            | "HyperEVM"
            | "Monad"
            | "Wormchain"
            | "Cosmoshub"
            | "Evmos"
            | "Kujira"
            | "Neutron"
            | "Celestia"
            | "Stargaze"
            | "Seda"
            | "Dymension"
            | "Provenance"
            | "Noble"
            | "Sepolia"
            | "ArbitrumSepolia"
            | "BaseSepolia"
            | "OptimismSepolia"
            | "Holesky"
            | "PolygonSepolia";
            destinationTransaction: string[];
            error?: undefined;
            sourceChain: string;
            sourceTransaction: string[];
            status: string;
            success: boolean;
        }
        | {
            amount?: undefined;
            attestation?: undefined;
            automatic?: undefined;
            destinationChain?: undefined;
            destinationTransaction?: undefined;
            error: string;
            sourceChain?: undefined;
            sourceTransaction?: undefined;
            status?: undefined;
            success: boolean;
        },
    >

  • Parameters

    • mints: string[]

    Returns Promise<string[]>

  • Returns Promise<{ signature: string; size: number }>

  • Parameters

    • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

    Returns Promise<string>

  • Parameters

    • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

    Returns Promise<string>

  • Parameters

    • collectionOpts: CreateCollectionOptions
    • isDevnet: boolean = false
    • OptionalpriorityFeeParam: number

    Returns Promise<string>

  • Parameters

    • collectionAccount: string
    • createItemOptions: CreateSingleOptions
    • isDevnet: boolean = false
    • withPool: boolean = false
    • OptionalpriorityFeeParam: number

    Returns Promise<string>

  • Parameters

    • depositAmount: number
    • depositSymbol: string

    Returns Promise<
        | { account: PublicKey; message?: undefined; txSignature: string }
        | { account: PublicKey; message: string; txSignature?: undefined },
    >

  • Parameters

    • params: {
          hurdleRate?: number;
          managementFee: number;
          marketName: `${string}-${string}`;
          maxTokens: number;
          minDepositAmount: number;
          name: string;
          permissioned?: boolean;
          profitShare: number;
          redeemPeriod: number;
      }

    Returns Promise<string>

  • Parameters

    • title: string
    • content: string
    • requirements: string
    • tags: string[]
    • tokenMintAddress: string
    • tokenAmount: number
    • Optionalpayer: string

    Returns Promise<GibworkCreateTaskReponse>

  • Parameters

    • OptionaltransactionIndex: number | bigint

    Returns Promise<string>

  • Parameters

    • creator: PublicKey

    Returns Promise<string>

  • Parameters

    • amount: number
    • OptionalsplmintAddress: PublicKey

    Returns Promise<{ signature: string; url: string }>

  • Parameters

    • webhookID: string

    Returns Promise<any>

  • Parameters

    • name: string
    • uri: string
    • symbol: string
    • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
    • authority: SplAuthorityInput
    • OptionalinitialSupply: number

    Returns Promise<{ mint: PublicKey }>

  • Parameters

    • amount: number
    • vault: string

    Returns Promise<string>

  • Parameters

    • amount: number
    • symbol: string
    • OptionalisRepayment: boolean

    Returns Promise<TxSigAndSlot>

  • Parameters

    • amount: number
    • vaultIndex: number = 0
    • Optionalmint: PublicKey

    Returns Promise<string>

  • Parameters

    • name: string

    Returns Promise<PublicKey>

  • Returns Promise<{ account: PublicKey; hasAccount: boolean }>

  • Parameters

    • params: { fromSymbol: string; slippage?: number; toSymbol: string } & (
          { toAmount: number }
          | { fromAmount: number }
      )

    Returns Promise<string>

  • Returns Promise<
        {
            accountAddress: string;
            authority: PublicKey;
            lastActiveSlot: number;
            name: number[];
            overallBalance: number;
            perpPositions: {
                baseAssetAmount: number;
                market: string;
                openAsks: number;
                openBids: number;
                openOrders: number;
                positionType: string;
                quoteAssetAmount: number;
                quoteBreakEvenAmount: number;
                quoteEntryAmount: number;
                settledPnl: number;
            }[];
            settledPerpPnl: string;
            spotPositions: (
                | undefined
                | {
                    availableBalance: number;
                    openAsks: number;
                    openBids: number;
                    openOrders: number;
                    symbol: string;
                    type: string;
                }
            )[];
        },
    >

  • Parameters

    • transactionData: string

    Returns Promise<string>

  • Parameters

    • OptionaltransactionIndex: number | bigint

    Returns Promise<string>

  • Execute token swap on OKX DEX

    Parameters

    • fromTokenAddress: string

      Source token address

    • toTokenAddress: string

      Target token address

    • amount: string

      Amount to swap in base units

    • slippage: string = "0.5"

      Slippage tolerance as a decimal (default: 0.5%)

    • autoSlippage: boolean = false

      Use auto slippage (default: false)

    • maxAutoSlippageBps: string = "100"

      Maximum auto slippage in basis points (default: 100 = 1%)

    • OptionaluserWalletAddress: string

      Optional wallet address to use (defaults to agent's wallet)

    Returns Promise<any>

    Swap result with transaction ID

  • Parameters

    • mint: string

    Returns Promise<string>

  • Opens a new trading position on Flash.Trade

    Parameters

    • params: FlashTradeParams

      Flash trade parameters including market, side, collateral, leverage, and pool name

    Returns Promise<string>

    Transaction signature

  • Parameters

    • token_a: PublicKey
    • token_a_amount: number
    • token_b: PublicKey
    • token_b_amount: number

    Returns Promise<string>

  • Parameters

    • owner: PublicKey
    • limit: number

    Returns Promise<any>

  • Parameters

    • assetId: string

    Returns Promise<DasApiAsset>

  • Parameters

    • params: GetAssetsByAuthorityRpcInput

    Returns Promise<DasApiAssetList>

  • Parameters

    • params: GetAssetsByCreatorRpcInput

    Returns Promise<DasApiAssetList>

  • Parameters

    • Optionaltype: "spot" | "perp"

    Returns
        | SpotMarketConfig[]
        | PerpMarketConfig[]
        | { perp: PerpMarketConfig[]; spot: SpotMarketConfig[] }

  • Parameters

    • Optionaltoken_address: PublicKey

    Returns Promise<number>

  • Parameters

    • walletAddress: PublicKey
    • OptionaltokenAddress: PublicKey

    Returns Promise<number>

  • Parameters

    • Optionalduration: "1h" | "24h" | "5m" | "6h"

    Returns Promise<any>

  • Parameters

    • vaultName: string

    Returns Promise<
        {
            address: string;
            balance: string;
            delegate: string;
            hurdleRate: number;
            managementFee: number;
            marketName: string;
            maxTokens: number;
            minDepositAmount: number;
            name: string;
            permissioned: boolean;
            profitShare: number;
            redeemPeriod: number;
        },
    >

  • Parameters

    • amount: number
    • symbol: `${string}-PERP`
    • action: "long" | "short"

    Returns Promise<
        {
            bestPrice: number;
            entryPrice: number;
            priceImpact: number;
            worstPrice: number;
        },
    >

  • Parameters

    • topicId: number

    Returns Promise<AlloraInference>

  • Parameters

    • symbol: string

    Returns Promise<{ borrowAPY: number; lendingAPY: number }>

  • Parameters

    • owner: PublicKey

    Returns Promise<null | string>

  • Get chain data from OKX DEX

    Returns Promise<any>

    Chain data

  • Get liquidity information from OKX DEX

    Parameters

    • chainId: string

      Chain ID to query liquidity for

    Returns Promise<any>

    Liquidity data

  • Get quote for token swap on OKX DEX

    Parameters

    • fromTokenAddress: string

      Source token address

    • toTokenAddress: string

      Target token address

    • amount: string

      Amount to swap in base units

    • slippage: string = "0.5"

      Slippage tolerance as a decimal (default: 0.5%)

    Returns Promise<any>

    Quote information

  • Get list of tokens supported by OKX DEX

    Returns Promise<any>

    List of supported tokens

  • Parameters

    • owner: PublicKey

    Returns Promise<string[]>

  • Parameters

    • tld: string

    Returns Promise<string[]>

  • Parameters

    • symbol: `${string}-PERP`
    • period: "year" | "hour" = "year"

    Returns Promise<{ friendlyString: string; longRate: number; shortRate: number }>

  • Parameters

    • tokenSymbol: string
    • timeframe: string

    Returns Promise<string>

  • Parameters

    • account: PublicKey

    Returns Promise<string>

  • Parameters

    • priceFeedID: string

    Returns Promise<string>

  • Parameters

    • tokenSymbol: string

    Returns Promise<string>

  • Parameters

    • limit: number = 100
    • offset: number = 0

    Returns Promise<any>

  • Parameters

    • username: string

    Returns Promise<any>

  • Parameters

    • Optionalwallet_address: PublicKey

    Returns Promise<
        {
            sol: number;
            tokens: {
                balance: number;
                decimals: number;
                name: string;
                symbol: string;
                tokenAddress: string;
            }[];
        },
    >

  • Parameters

    • tokenAddress: string

    Returns Promise<any>

  • Parameters

    • ...tokenAddresses: string[]

    Returns Promise<any>

  • Parameters

    • Optionalduration: "1h" | "24h" | "7d" | "14d" | "30d" | "60d" | "1y"
    • OptionalnoOfCoins: 300 | 1000 | 500 | "all"

    Returns Promise<any>

  • Parameters

    • ticker: string
    • timeWindow: string = "1h"
    • page: number = 1
    • pageSize: number = 10
    • includeAccountDetails: boolean = false

    Returns Promise<any>

  • Parameters

    • transactionId: string

    Returns Promise<any>

  • Parameters

    • amount: number

    Returns Promise<string>

  • Parameters

    • marketId: PublicKey
    • quantity: number
    • side: string
    • price: number

    Returns Promise<string>

  • Parameters

    • mintAddress: string
    • amount: number

    Returns Promise<string>

  • Parameters

    • mintAddress: string
    • amount: number

    Returns Promise<string>

  • Parameters

    • baseMint: PublicKey
    • quoteMint: PublicKey

    Returns Promise<string[]>

  • Parameters

    • inputAssets: InputAssetStruct[]
    • outputMint: string
    • priorityFee: PriorityFee

    Returns Promise<string[]>

  • Parameters

    • tokenAMint: PublicKey
    • tokenBMint: PublicKey
    • binStep: number
    • initialPrice: number
    • priceRoundingUp: boolean
    • feeBps: number
    • activationType: number
    • hasAlphaVault: boolean
    • activationPoint: undefined | BN

    Returns Promise<string>

  • Parameters

    • tokenAMint: PublicKey
    • tokenBMint: PublicKey
    • tokenAAmount: BN
    • tokenBAmount: BN
    • tradeFeeNumerator: number
    • activationPoint: null | BN
    • hasAlphaVault: boolean
    • activationType: number

    Returns Promise<string>

  • Parameters

    • collectionMint: PublicKey
    • metadata: {
          creators?: { address: string; share: number }[];
          name: string;
          sellerFeeBasisPoints?: number;
          uri: string;
      }
    • Optionalrecipient: PublicKey

    Returns Promise<MintCollectionNFTResponse>

  • Parameters

    • baseMint: PublicKey
    • quoteMint: PublicKey
    • lotSize: number = 1
    • tickSize: number = 0.01

    Returns Promise<string[]>

  • Parameters

    • args: Omit<
          {
              agent: SolanaAgentKit;
              collateralAmount: number;
              collateralMint?: PublicKey;
              leverage?: number;
              price: number;
              slippage?: number;
              tradeMint?: PublicKey;
          },
          "agent",
      >

    Returns Promise<string>

  • Parameters

    • args: Omit<
          {
              agent: SolanaAgentKit;
              collateralAmount: number;
              collateralMint?: PublicKey;
              leverage?: number;
              price: number;
              slippage?: number;
              tradeMint?: PublicKey;
          },
          "agent",
      >

    Returns Promise<string>

  • Parameters

    • positionMintAddress: PublicKey

    Returns Promise<string>

  • Parameters

    • mintDeploy: PublicKey
    • mintPair: PublicKey
    • initialPrice: Decimal
    • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

    Returns Promise<string>

  • Parameters

    • depositTokenAmount: number
    • depositTokenMint: PublicKey
    • otherTokenMint: PublicKey
    • initialPrice: Decimal
    • maxPrice: Decimal
    • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

    Returns Promise<string>

  • Parameters

    • whirlpoolAddress: PublicKey
    • priceOffsetBps: number
    • inputTokenMint: PublicKey
    • inputAmount: Decimal

    Returns Promise<string>

  • Parameters

    • whirlpoolAddress: PublicKey
    • distanceFromCurrentPriceBps: number
    • widthBps: number
    • inputTokenMint: PublicKey
    • inputAmount: Decimal

    Returns Promise<string>

  • Parameters

    • marketId: PublicKey
    • baseAmount: BN
    • quoteAmount: BN
    • startTime: BN

    Returns Promise<string>

  • Parameters

    • mint1: PublicKey
    • mint2: PublicKey
    • configId: PublicKey
    • initialPrice: Decimal
    • startTime: BN

    Returns Promise<string>

  • Parameters

    • mint1: PublicKey
    • mint2: PublicKey
    • configId: PublicKey
    • mintAAmount: BN
    • mintBAmount: BN
    • startTime: BN

    Returns Promise<string>

  • Parameters

    • name: string
    • OptionalspaceKB: number

    Returns Promise<string>

  • Parameters

    • OptionaltransactionIndex: number | bigint

    Returns Promise<string>

  • Parameters

    • amount: number
    • symbol: string

    Returns Promise<string>

  • Parameters

    • amount: number
    • vault: string

    Returns Promise<string>

  • Parameters

    • domain: string

    Returns Promise<undefined | PublicKey>

  • Parameters

    • domain: string

    Returns Promise<PublicKey>

  • Parameters

    • amount: number

    Returns Promise<string>

  • Parameters

    • amount: number
    • choice: "rock" | "paper" | "scissors"

    Returns Promise<string>

  • Parameters

    • keywords: string
    • from: number
    • to: number
    • limit: number = 20

    Returns Promise<any>

  • Parameters

    • mintAddress: string
    • amount: number
    • decimals: number
    • recipients: string[]
    • priorityFeeInLamports: number
    • shouldLog: boolean

    Returns Promise<string[]>

  • Parameters

    • priorityLevel: string
    • amount: number
    • to: PublicKey
    • OptionalsplmintAddress: PublicKey

    Returns Promise<{ fee: number; transactionId: string }>

  • Parameters

    • feed: string
    • crossbarUrl: string

    Returns Promise<string>

  • Parameters

    • inputAsset: InputAssetStruct
    • targetTokens: TargetTokenStruct[]
    • priorityFee: PriorityFee

    Returns Promise<string[]>

  • Parameters

    • amount: number

    Returns Promise<string>

  • Parameters

    • amount: number
    • symbol: string

    Returns Promise<string>

  • Parameters

    • amount: string
    • fromChain: string
    • fromToken: string
    • toChain: string
    • toToken: string
    • dstAddr: string
    • OptionalslippageBps: number

    Returns Promise<string>

  • Parameters

    • nftMint: PublicKey

    Returns Promise<string>

  • Parameters

    • nftMint: PublicKey
    • price: number

    Returns Promise<string>

  • Parameters

    • outputMint: PublicKey
    • inputAmount: number
    • OptionalinputMint: PublicKey
    • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

    Returns Promise<string>

  • Parameters

    • vault: string
    • amount: number
    • symbol: string
    • action: "long" | "short"
    • type: "market" | "limit"
    • Optionalprice: number

    Returns Promise<TxSigAndSlot>

  • Parameters

    • amount: number
    • symbol: string
    • action: "long" | "short"
    • type: "market" | "limit"
    • Optionalprice: number

    Returns Promise<string>

  • Parameters

    • to: PublicKey
    • amount: number
    • Optionalmint: PublicKey

    Returns Promise<string>

  • Parameters

    • amount: number
    • to: PublicKey
    • vaultIndex: number = 0
    • Optionalmint: PublicKey

    Returns Promise<string>

  • Parameters

    • symbol: string

    Returns Promise<string>

  • Parameters

    • vaultAddress: string
    • params: {
          hurdleRate?: number;
          managementFee: number;
          marketName: `${string}-${string}`;
          maxTokens: number;
          minDepositAmount: number;
          name: string;
          permissioned?: boolean;
          profitShare: number;
          redeemPeriod: number;
      }

    Returns Promise<string>

  • Parameters

    • vaultAddress: string
    • delegate: string

    Returns Promise<string>

  • Parameters

    • depositAmount: BN
    • vault: PublicKey
    • strategy: PublicKey

    Returns Promise<string>

  • Parameters

    • vault: PublicKey

    Returns Promise<string>

  • Parameters

    • withdrawAmount: BN
    • vault: PublicKey
    • strategy: PublicKey

    Returns Promise<string>

  • Parameters

    • marketId: PublicKey

    Returns Promise<string>

  • Parameters

    • amount: number
    • symbol: string
    • OptionalisBorrow: boolean

    Returns Promise<TxSigAndSlot>

  • Parameters

    • vault: string

    Returns Promise<string>