UNPKG

@candy-swap/candy-sdk

Version:

Candy SDK for Solana

147 lines (146 loc) 4.8 kB
import * as anchor from "@coral-xyz/anchor"; import { AnchorProvider, web3 } from "@coral-xyz/anchor"; import { PublicKey, TransactionInstruction } from "@solana/web3.js"; import BN from 'bn.js'; import { Raydium } from '@raydium-io/raydium-sdk-v2'; export interface InitTokenParams { name: string; symbol: string; uri: string; decimals: number; } export interface SwapParams { amount: BN; style: BN; minOut: BN; } export interface Cfg { swapFee: BN; swapAdmin: PublicKey; devFeeReceiver: PublicKey; mint: PublicKey; } export * from "./utils"; export interface ProjectInfo { currentPrice: { reserveOne: BN; reserveTwo: BN; }; progress: number; liquidity: number; } export declare class CandySDK { private program; private provider; private raydium; private cluster; constructor(programId: PublicKey, provider: AnchorProvider); /** * Create new token * @param name Token name * @param symbol Token symbol * @param uri Token URI * @param decimals Decimal places * @param creator Creator public key * @param mintPk Token mint public key * @param swapFee Swap fee * @param swapAdmin Swap admin public key * @returns Transaction to be signed and related account information */ createMint(name: string, symbol: string, uri: string, decimals: number, creator: PublicKey, mintPk: PublicKey, devFeeReciever?: PublicKey): Promise<{ liquidityAta: anchor.web3.PublicKey; pool: anchor.web3.PublicKey; instructions: anchor.web3.TransactionInstruction[]; mint: anchor.web3.PublicKey; tokenAccount: anchor.web3.PublicKey; dexConfigurationAccount: anchor.web3.PublicKey; cfg: anchor.web3.PublicKey; }>; /** * Swap tokens * @param mint Token mint address * @param amount Swap amount * @param user User address * @param style Trading style * @param minOut Minimum output amount * @returns Unsigned transaction and related account information */ swap(mint: PublicKey, params: SwapParams, user: PublicKey, swapAdmin?: PublicKey, devFeeReceiver?: PublicKey): Promise<{ instructions: Array<TransactionInstruction>; userTokenAccount: PublicKey; poolTokenAccount: PublicKey; }>; /** * Set active status * @param mint Token mint address * @param active Active status * @returns Transaction to be signed and related account information */ setActive(mint: PublicKey, active: boolean): Promise<anchor.web3.Transaction>; /** * Set configuration * @param params Configuration parameters * @returns Transaction to be signed and related account information */ setCfg(params: Cfg): Promise<anchor.web3.Transaction>; /** * Set curve configuration * @param params Curve configuration parameters * @returns Transaction to be signed and related account information */ setCurveCfg({ swapFee, swapAdmin, systemFee, mintFees, admin, }: { swapFee: anchor.BN; swapAdmin?: web3.PublicKey; systemFee: anchor.BN; mintFees: anchor.BN; admin: web3.PublicKey; }): Promise<anchor.web3.Transaction>; /** * Get liquidity pool information * @param mint Token mint address */ getPoolInfo(mint: PublicKey): Promise<{ tokenOne: anchor.web3.PublicKey; tokenTwo: anchor.web3.PublicKey; totalSupply: anchor.BN; reserveOne: anchor.BN; reserveTwo: anchor.BN; bump: number; active: boolean; }>; /** * Get project information, price and current progress * @param mint Token mint address * @returns Project information */ getProjectInfo(mint: PublicKey): Promise<ProjectInfo>; /** * Create CPMM pool * @param baseToken Base token * @param baseAmount Base token amount * @param quoteAmount Quote token amount * @returns */ createCpmmPool(baseToken: string, baseAmount: BN, quoteAmount: BN): Promise<{ pool: import("@raydium-io/raydium-sdk-v2").CreateCpmmPoolAddress; }>; initSdk(params?: { loadToken?: boolean; }): Promise<Raydium>; /** * Prepare liquidity * @param mint Token mint address * @returns */ ammPrepare(mint: PublicKey): Promise<string>; /** * Calculate output amount * @param mint Token mint address * @param amountIn Input amount * @param direction Trading direction * @param slippage Slippage percentage * @returns Output amount */ computeAmountOut(mint: PublicKey, amountIn: BN, direction: 'buy' | 'sell', slippage?: number): Promise<anchor.BN>; } export default CandySDK;