UNPKG

four-flap-meme-sdk

Version:

SDK for Flap bonding curve and four.meme TokenManager

193 lines (192 loc) 5.24 kB
import { Contract } from 'ethers'; export declare enum TokenStatus { Invalid = 0, Tradable = 1, InDuel = 2, Killed = 3, DEX = 4 } export declare enum TokenVersion { TOKEN_LEGACY_MINT_NO_PERMIT = 0, TOKEN_LEGACY_MINT_NO_PERMIT_DUPLICATE = 1, TOKEN_V2_PERMIT = 2, TOKEN_GOPLUS = 3, TOKEN_TAXED = 4 } export declare enum DexThreshType { TWO_THIRDS = 0, FOUR_FIFTHS = 1, HALF = 2, _95_PERCENT = 3, _81_PERCENT = 4, _1_PERCENT = 5 } export declare enum MigratorType { V3_MIGRATOR = 0, V2_MIGRATOR = 1 } export type TokenStateV2 = { status: number; reserve: bigint; circulatingSupply: bigint; price: bigint; tokenVersion: number; r: bigint; dexSupplyThresh: bigint; }; export type TokenStateV3 = { status: number; reserve: bigint; circulatingSupply: bigint; price: bigint; tokenVersion: number; r: bigint; dexSupplyThresh: bigint; quoteTokenAddress: string; nativeToQuoteSwapEnabled: boolean; }; export type TokenStateV4 = { status: number; reserve: bigint; circulatingSupply: bigint; price: bigint; tokenVersion: number; r: bigint; dexSupplyThresh: bigint; quoteTokenAddress: string; nativeToQuoteSwapEnabled: boolean; extensionID: `0x${string}`; }; export type TokenStateV5 = { status: number; reserve: bigint; circulatingSupply: bigint; price: bigint; tokenVersion: number; r: bigint; h: bigint; k: bigint; dexSupplyThresh: bigint; quoteTokenAddress: string; nativeToQuoteSwapEnabled: boolean; extensionID: `0x${string}`; }; /** * Flap Portal 支持的链 */ export type FlapChain = 'BSC' | 'BASE' | 'XLAYER' | 'MORPH' | 'MONAD'; /** * Flap Portal 配置 */ export type PortalConfig = { chain: FlapChain; rpcUrl: string; addressOverride?: string; buyFeeRate?: number; sellFeeRate?: number; }; export type QuoteExactInputParams = { inputToken: string; outputToken: string; inputAmount: bigint; }; export type ExactInputParams = { inputToken: string; outputToken: string; inputAmount: bigint; minOutputAmount: bigint; permitData?: string; }; export type ExactInputV3Params = { inputToken: string; outputToken: string; inputAmount: bigint; minOutputAmount: bigint; permitData?: string; extensionData?: string; }; export type NewTokenV3Params = { name: string; symbol: string; meta: string; dexThresh: number; salt: string; taxRate: number; migratorType: number; quoteToken: string; quoteAmt: bigint; beneficiary: string; permitData?: string; extensionID: string; extensionData?: string; }; export declare class FlapPortal { private rpcUrl; protected portal: string; protected contract: Contract; private buyFeeRate; private sellFeeRate; constructor(cfg: PortalConfig); getTokenV2(token: string): Promise<TokenStateV2>; getTokenV3(token: string): Promise<TokenStateV3>; getTokenV4(token: string): Promise<TokenStateV4>; getTokenV5(token: string): Promise<TokenStateV5>; computePriceAndProgress(state: TokenStateV5): { price: string; progress: string; }; quoteBuy(state: TokenStateV5, inputEth: string): string; quoteSell(state: TokenStateV5, inputToken: string): string; previewBuy(token: string, ethAmount: bigint): Promise<bigint>; previewSell(token: string, tokenAmount: bigint): Promise<bigint>; quoteExactInput(params: QuoteExactInputParams): Promise<bigint>; getFeeRate(): Promise<{ buyFeeRate: bigint; sellFeeRate: bigint; }>; nonce(): Promise<bigint>; version(): Promise<string>; getLocks(token: string): Promise<bigint[]>; } export declare class FlapPortalWriter extends FlapPortal { private wallet; constructor(cfg: PortalConfig, privateKey: string); buy(token: string, to: string, minAmount: bigint, msgValue: bigint): Promise<any>; sell(token: string, amount: bigint, minEth: bigint): Promise<any>; swapExactInput(params: ExactInputParams, msgValue?: bigint): Promise<any>; swapExactInputBuy(params: ExactInputParams, msgValue?: bigint): Promise<any>; swapExactInputSell(params: ExactInputParams): Promise<any>; swapExactInputV3(params: ExactInputV3Params, msgValue?: bigint): Promise<any>; newTokenV2(args: { name: string; symbol: string; meta: string; dexThresh: number; salt: string; taxRate: number; migratorType: number; quoteToken: string; quoteAmt: bigint; beneficiary: string; permitData?: string; msgValue?: bigint; }): Promise<any>; newTokenV3(args: NewTokenV3Params & { msgValue?: bigint; }): Promise<any>; claim(token: string): Promise<{ txHash: string; tokenAmount: bigint; ethAmount: bigint; }>; delegateClaim(token: string): Promise<{ txHash: string; tokenAmount: bigint; ethAmount: bigint; }>; /** * 获取当前使用的 Portal 合约地址 * 用于事件监听等场景 */ getContractAddress(): string; }