UNPKG

@symmetry-hq/liquidity-sdk

Version:

Exchange functionality using symmetry funds liquidity

88 lines (75 loc) 2.37 kB
# Symmetry Liquidity SDK Exchange functionality using symmetry funds liquidity Documentation: https://docs.symmetry.fi/sdks/liquidity-sdk ## Initialization ```typescript import { TokenSwap } from "@symmetry-hq/liquidity-sdk"; let tokenSwap = await TokenSwap.init( // rpc connection connection: Connection, // wallet (optional | can be provided later, using tokenSwap.setWallet wallet: Wallet, ); ``` OR ```typescript import { TokenSwap } from "@symmetry-hq/liquidity-sdk"; let accountInfos = await TokenSwap.getAccountInfosForTokenSwap(connection); let tokenSwap = new TokenSwap(accountInfos); // Synchronous ``` ## Update ```typescript await tokenSwap.updateLiquiditySources(); ``` OR ```typescript let pubkeys: PublicKey[] = tokenSwap.getAccountsForUpdate(); // Synchronous let accountInfos: AccountInfo<Buffer>[] = await connection.getMultipleAccountsInfo(pubkeys); tokenSwap.update(accountInfos); // Synchronous ``` ## Get output amount and Route data ```typescript let routeData: RouteData = tokenSwap.getRouteData( // Synchronous tokenFrom: PublicKey, // mint address tokenTo: PublicKey, // mint address fromAmount: number, ); type RouteData = { fromAmount: number, toAmount: number, // Expected output amount fromTokenId: number, toTokenId: number, swapAccounts: {...} // accounts used for swap } ``` ## Executing swap ```typescript let tx: TransactionSignature = await tokenSwap.executeSwap( routeData, fromTokenAccount?: PublicKey, // default = user's ATA toTokenAccount?: PublicKey, // default = user's ATA slippage?: number, // slippage percentage 1 = 1%, default = 0.5% ); ``` ## Helpers ```typescript // set wallet before executing swap if it wasn't provided upon initialization tokenSwap.setWallet(wallet: Wallet); // Synchronous // generate swap instruction let instruction: TransactionInstruction = await tokenSwap .generateSwapInstruction( routeData: RouteData, fromTokenAccount: PublicKey, toTokenAccount: PublicKey, user?: PublicKey, // no need to provide if wallet was provided, slippage?: number, // slippage percentage 1 = 1%, default = 0.5% ); // get available tokens for swap let tokenList: { tokenId: number, coingeckoId: string, tokenMint: string, }[] = tokenSwap.getTokenList(); // Synchronous ```