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, /** VaultPortal.newTokenV6WithVault 金库发射必须使用此版本 */ TOKEN_TAXED_V3 = 6 } 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 } /** * V3 LP 费率档位 * 决定代币迁移到 Uniswap V3 或 PancakeSwap V3 时使用的费率 */ export declare enum V3LPFeeProfile { /** 标准费率: PancakeSwap 0.25%, Uniswap 0.3% */ LP_FEE_PROFILE_STANDARD = 0, /** 低费率: PancakeSwap 0.01%, Uniswap 0.05% (BNB 链需要白名单) */ LP_FEE_PROFILE_LOW = 1, /** 高费率: 1% (适用于特殊交易对) */ LP_FEE_PROFILE_HIGH = 2 } /** * DEX ID * 决定代币迁移到哪个 DEX * - BSC: DEX0 = PancakeSwap * - xLayer: DEX0 = PotatoSwap * - Monad: DEX0 = Uniswap, DEX1 = PancakeSwap, DEX2 = Monday */ export declare enum DEXId { DEX0 = 0, DEX1 = 1, DEX2 = 2 } 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}`; }; /** * TokenStateV7 - 包含毕业相关信息(pool, progress, lpFeeProfile) * 用于 XLayer 等支持 V7 的链 */ export type TokenStateV7 = TokenStateV5 & { taxRate: bigint; pool: string; progress: bigint; lpFeeProfile: number; }; /** * 将 lpFeeProfile 转换为 V3 fee 值 */ export declare function lpFeeProfileToV3Fee(profile: number): number; /** * 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; }; /** * newTokenV4 参数 * 相比 V3 新增了 DEX 选择和 LP 费率配置 */ export type NewTokenV4Params = { 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; dexId: number; lpFeeProfile: number; }; /** * newTokenV5 参数 * 相比 V4 新增了 Tax Token V2 高级税收分配功能 * 当 taxRate > 0 时,支持多种税收分配方式:营销、销毁、分红、流动性 */ export type NewTokenV5Params = { 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; dexId: number; lpFeeProfile: number; taxDuration: bigint; antiFarmerDuration: bigint; mktBps: number; deflationBps: number; dividendBps: number; lpBps: number; minimumShareBalance: bigint; }; /** * 税收分配配置(用于 UI) * 注意:mktBps + deflationBps + dividendBps + lpBps 必须等于 10000 (100%) */ export type TaxDistributionConfig = { mktBps: number; deflationBps: number; dividendBps: number; lpBps: number; minimumShareBalance?: bigint; }; /** * 验证税收分配是否有效 */ export declare function validateTaxDistribution(config: TaxDistributionConfig): { valid: boolean; error?: string; }; export declare class FlapPortal { private rpcUrl; protected portal: string; protected contract: Contract; private buyFeeRate; private sellFeeRate; constructor(cfg: PortalConfig); getTokenV2(token: string): Promise; getTokenV3(token: string): Promise; getTokenV4(token: string): Promise; getTokenV5(token: string): Promise; /** * 获取代币状态 V7(包含毕业相关信息) * 注意:仅部分链支持 V7(如 XLayer v5.7+),不支持的链会 revert */ getTokenV7(token: string): Promise; /** * 计算距离毕业还需多少 OKB/ETH(含手续费) * @param state TokenStateV5 或 TokenStateV7 * @returns 毕业相关信息 */ computeRemainingToGraduation(state: TokenStateV5 | TokenStateV7): { remainingOkb: string; graduationReserve: string; currentReserve: string; isGraduated: boolean; progressPercent: string; }; 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; previewSell(token: string, tokenAmount: bigint): Promise; quoteExactInput(params: QuoteExactInputParams): Promise; getFeeRate(): Promise<{ buyFeeRate: bigint; sellFeeRate: bigint; }>; nonce(): Promise; version(): Promise; getLocks(token: string): Promise; } export declare class FlapPortalWriter extends FlapPortal { private wallet; constructor(cfg: PortalConfig, privateKey: string); buy(token: string, to: string, minAmount: bigint, msgValue: bigint): Promise; sell(token: string, amount: bigint, minEth: bigint): Promise; swapExactInput(params: ExactInputParams, msgValue?: bigint): Promise; swapExactInputBuy(params: ExactInputParams, msgValue?: bigint): Promise; swapExactInputSell(params: ExactInputParams): Promise; swapExactInputV3(params: ExactInputV3Params, msgValue?: bigint): Promise; 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; newTokenV3(args: NewTokenV3Params & { msgValue?: bigint; }): Promise; /** * 创建代币 V4 版本 * 相比 V3 新增了 DEX 选择和 LP 费率配置 * * @param args 创建代币参数 * @param args.dexId DEX ID,选择迁移到哪个 DEX(使用 DEXId 枚举) * @param args.lpFeeProfile LP 费率档位(使用 V3LPFeeProfile 枚举) * * @example * ```typescript * await portal.newTokenV4({ * name: 'My Token', * symbol: 'MTK', * meta: 'bafkreicwlkpvrcqg4bbhyp2fnhdwbqos5ghka6gdjra3tdkgxxs74hqsze', * dexThresh: DexThreshType.FOUR_FIFTHS, * salt: '0x...', * taxRate: 0, * migratorType: MigratorType.V3_MIGRATOR, * quoteToken: '0x0000000000000000000000000000000000000000', * quoteAmt: 0n, * beneficiary: '0x...', * extensionID: '0x0000000000000000000000000000000000000000000000000000000000000000', * dexId: DEXId.DEX0, * lpFeeProfile: V3LPFeeProfile.LP_FEE_PROFILE_STANDARD, * msgValue: parseEther('0.01'), * }); * ``` * * @note BNB 链上使用 LP_FEE_PROFILE_LOW (0.01%) 需要白名单地址 */ newTokenV4(args: NewTokenV4Params & { msgValue?: bigint; }): Promise; /** * 创建 Token V5(支持 Tax Token V2 高级税收分配) * * 当 taxRate > 0 时,支持以下税收分配: * - mktBps: 营销分配(发送到 beneficiary 地址) * - deflationBps: 通缩销毁(直接销毁) * - dividendBps: 持有者分红(发送到分红合约) * - lpBps: 流动性提供(LP 发送到 dead address) * * 注意:mktBps + deflationBps + dividendBps + lpBps 必须等于 10000 (100%) * * @example * ```typescript * // 创建一个 3% 税率的代币,税收分配:40% 营销,30% 销毁,20% 分红,10% 流动性 * await portal.newTokenV5({ * name: 'My Tax Token', * symbol: 'MTT', * meta: 'bafkrei...', * dexThresh: DexThreshType.FOUR_FIFTHS, * salt: '0x...', * taxRate: 300, // 3% * migratorType: MigratorType.V2_MIGRATOR, // 税代币必须使用 V2 迁移器 * quoteToken: '0x0000000000000000000000000000000000000000', * quoteAmt: 0n, * beneficiary: '0x...', * extensionID: '0x0000000000000000000000000000000000000000000000000000000000000000', * dexId: DEXId.DEX0, * lpFeeProfile: V3LPFeeProfile.LP_FEE_PROFILE_STANDARD, * taxDuration: 365n * 24n * 60n * 60n, // 1 年 * antiFarmerDuration: 60n * 60n, // 1 小时 * mktBps: 4000, // 40% * deflationBps: 3000, // 30% * dividendBps: 2000, // 20% * lpBps: 1000, // 10% * minimumShareBalance: 10000n * 10n ** 18n, // 10K 代币 * msgValue: parseEther('0.01'), * }); * ``` * * @note 税代币(taxRate > 0)必须使用 V2_MIGRATOR */ newTokenV5(args: NewTokenV5Params & { msgValue?: bigint; }): Promise; claim(token: string): Promise<{ txHash: string; tokenAmount: bigint; ethAmount: bigint; }>; delegateClaim(token: string): Promise<{ txHash: string; tokenAmount: bigint; ethAmount: bigint; }>; /** * 获取当前使用的 Portal 合约地址 * 用于事件监听等场景 */ getContractAddress(): string; }