UNPKG

@drift-labs/sdk

Version:
278 lines • 6.45 kB
/// <reference types="bn.js" /> import { AddressLookupTableAccount, Connection, PublicKey, TransactionInstruction, TransactionMessage, VersionedTransaction } from '@solana/web3.js'; import { BN } from '@coral-xyz/anchor'; export type SwapMode = 'ExactIn' | 'ExactOut'; export interface MarketInfo { id: string; inAmount: number; inputMint: string; label: string; lpFee: Fee; notEnoughLiquidity: boolean; outAmount: number; outputMint: string; platformFee: Fee; priceImpactPct: number; } export interface Fee { amount: number; mint: string; pct: number; } export interface Route { amount: number; inAmount: number; marketInfos: MarketInfo[]; otherAmountThreshold: number; outAmount: number; priceImpactPct: number; slippageBps: number; swapMode: SwapMode; } /** * * @export * @interface RoutePlanStep */ export interface RoutePlanStep { /** * * @type {SwapInfo} * @memberof RoutePlanStep */ swapInfo: SwapInfo; /** * * @type {number} * @memberof RoutePlanStep */ percent: number; } export interface SwapInfo { /** * * @type {string} * @memberof SwapInfo */ ammKey: string; /** * * @type {string} * @memberof SwapInfo */ label?: string; /** * * @type {string} * @memberof SwapInfo */ inputMint: string; /** * * @type {string} * @memberof SwapInfo */ outputMint: string; /** * * @type {string} * @memberof SwapInfo */ inAmount: string; /** * * @type {string} * @memberof SwapInfo */ outAmount: string; /** * * @type {string} * @memberof SwapInfo */ feeAmount: string; /** * * @type {string} * @memberof SwapInfo */ feeMint: string; } /** * * @export * @interface PlatformFee */ export interface PlatformFee { /** * * @type {string} * @memberof PlatformFee */ amount?: string; /** * * @type {number} * @memberof PlatformFee */ feeBps?: number; } /** * * @export * @interface QuoteResponse */ export interface QuoteResponse { /** * * @type {string} * @memberof QuoteResponse */ inputMint: string; /** * * @type {string} * @memberof QuoteResponse */ inAmount: string; /** * * @type {string} * @memberof QuoteResponse */ outputMint: string; /** * * @type {string} * @memberof QuoteResponse */ outAmount: string; /** * * @type {string} * @memberof QuoteResponse */ otherAmountThreshold: string; /** * * @type {SwapMode} * @memberof QuoteResponse */ swapMode: SwapMode; /** * * @type {number} * @memberof QuoteResponse */ slippageBps: number; /** * * @type {PlatformFee} * @memberof QuoteResponse */ platformFee?: PlatformFee; /** * * @type {string} * @memberof QuoteResponse */ priceImpactPct: string; /** * * @type {Array<RoutePlanStep>} * @memberof QuoteResponse */ routePlan: Array<RoutePlanStep>; /** * * @type {number} * @memberof QuoteResponse */ contextSlot?: number; /** * * @type {number} * @memberof QuoteResponse */ timeTaken?: number; /** * * @type {string} * @memberof QuoteResponse */ error?: string; /** * * @type {string} * @memberof QuoteResponse */ errorCode?: string; } export declare const RECOMMENDED_JUPITER_API_VERSION = "/v1"; export declare const RECOMMENDED_JUPITER_API = "https://lite-api.jup.ag/swap"; export declare class JupiterClient { url: string; connection: Connection; lookupTableCahce: Map<string, AddressLookupTableAccount>; constructor({ connection, url }: { connection: Connection; url?: string; }); /** * Get routes for a swap * @param inputMint the mint of the input token * @param outputMint the mint of the output token * @param amount the amount of the input token * @param slippageBps the slippage tolerance in basis points * @param swapMode the swap mode (ExactIn or ExactOut) * @param onlyDirectRoutes whether to only return direct routes */ getQuote({ inputMint, outputMint, amount, maxAccounts, // 50 is an estimated amount with buffer slippageBps, swapMode, onlyDirectRoutes, excludeDexes, autoSlippage, maxAutoSlippageBps, usdEstimate, }: { inputMint: PublicKey; outputMint: PublicKey; amount: BN; maxAccounts?: number; slippageBps?: number; swapMode?: SwapMode; onlyDirectRoutes?: boolean; excludeDexes?: string[]; autoSlippage?: boolean; maxAutoSlippageBps?: number; usdEstimate?: number; }): Promise<QuoteResponse>; /** * Get a swap transaction for quote * @param quoteResponse quote to perform swap * @param userPublicKey the signer's wallet public key * @param slippageBps the slippage tolerance in basis points */ getSwap({ quote, userPublicKey, slippageBps, }: { quote: QuoteResponse; userPublicKey: PublicKey; slippageBps?: number; }): Promise<VersionedTransaction>; /** * Get the transaction message and lookup tables for a transaction * @param transaction */ getTransactionMessageAndLookupTables({ transaction, }: { transaction: VersionedTransaction; }): Promise<{ transactionMessage: TransactionMessage; lookupTables: AddressLookupTableAccount[]; }>; getLookupTable(accountKey: PublicKey): Promise<AddressLookupTableAccount>; /** * Get the jupiter instructions from transaction by filtering out instructions to compute budget and associated token programs * @param transactionMessage the transaction message * @param inputMint the input mint * @param outputMint the output mint */ getJupiterInstructions({ transactionMessage, inputMint, outputMint, }: { transactionMessage: TransactionMessage; inputMint: PublicKey; outputMint: PublicKey; }): TransactionInstruction[]; } //# sourceMappingURL=jupiterClient.d.ts.map