/** * ERC20 授权(approve 侧) * * 发送授权交易、批量授权(直接发送或仅签名)、智能路由授权等。 */ import { type SellApprovalChain } from './helpers.js'; import type { EnsureAllowanceResult, EnsureAllowanceBatchItemResult, ApproveTokenBatchParams, ApproveTokenBatchRawParams, ApproveTokenBatchResult, ApproveTokenBatchSignResult } from '../types-erc20.js'; /** * 确保代币已授权给 Four.meme V1 代理合约 */ export declare function ensureSellApprovalV1(chain: SellApprovalChain, rpcUrl: string, privateKey: string, token: string, owner: string, amount: bigint): Promise; /** * 确保代币已授权给 Four.meme V2 代理合约 */ export declare function ensureSellApprovalV2(chain: SellApprovalChain, rpcUrl: string, privateKey: string, token: string, owner: string, amount: bigint): Promise; /** * 确保代币已授权给 Four.meme 代理合约(通用,默认使用 V2) * @deprecated 建议使用明确版本的方法:ensureSellApprovalV1 或 ensureSellApprovalV2 */ export declare function ensureSellApproval(chain: 'BSC' | 'BASE' | 'ARBITRUM_ONE', rpcUrl: string, privateKey: string, token: string, owner: string, amount: bigint): Promise; /** * 确保代币已授权给 Flap Protocol 代理合约 * 用于 Flap Protocol 代币的卖出操作 * @returns 授权结果,包含是否已授权、当前额度、交易回执等信息 */ export declare function ensureFlapSellApproval(chain: 'BSC' | 'BASE' | 'XLAYER' | 'MORPH' | 'MONAD', rpcUrl: string, privateKey: string, token: string, owner: string, amount: bigint): Promise; /** * 批量确保代币已授权给 Flap Protocol 代理合约(默认授权上限 2^256-1) * @param privateKeys 拥有者私钥数组(每个地址需自行签名) * @returns 每个地址的授权结果(包含 owner 与交易回执等信息) */ export declare function ensureFlapSellApprovalBatch(chain: 'BSC' | 'BASE' | 'XLAYER' | 'MORPH' | 'MONAD', rpcUrl: string, privateKeys: string[], token: string, required?: bigint): Promise; /** * ✅ 智能路由:授权 ERC20 代币(自动选择 spender,自动检查,只在不足时才发送交易) * * @param chain - 链名称 ('BSC' | 'BASE' | 'XLAYER' | 'MORPH' | 'MONAD') * @param platform - 平台名称 ('flap' | 'four' | 'pancake-v2' | 'pancake-v3') * @param rpcUrl - RPC 节点地址 * @param privateKey - 私钥 * @param tokenAddress - 代币合约地址 * @param amount - 授权数量(bigint),传 'max' 表示最大授权 * @returns 授权结果 */ export declare function approveToken(chain: 'BSC' | 'BASE' | 'XLAYER' | 'MORPH' | 'MONAD', platform: 'flap' | 'four' | 'pancake-v2' | 'pancake-v3', rpcUrl: string, privateKey: string, tokenAddress: string, amount: bigint | 'max'): Promise; /** * ✅ 底层方法:授权 ERC20 代币给指定合约(手动指定 spender) * 适用于任意 spender 地址(Flap、Four、PancakeSwap V2/V3 等) * * @param rpcUrl - RPC 节点地址 * @param privateKey - 私钥 * @param tokenAddress - 代币合约地址 * @param spenderAddress - 被授权的合约地址(如 Router、Portal、TokenManager 等) * @param amount - 授权数量(bigint),传 'max' 或 ethers.MaxUint256 表示最大授权 * @returns 授权结果 */ export declare function approveTokenRaw(rpcUrl: string, privateKey: string, tokenAddress: string, spenderAddress: string, amount: bigint | 'max'): Promise; /** * ✅ 智能路由:批量授权 ERC20 代币(自动选择 spender,自动检查,只在不足时才发送交易) * * @param params - 批量授权参数 * @param params.signOnly - 是否只签名不提交(默认 false) * - false: 直接发送交易并等待确认,返回 ApproveTokenBatchResult * - true: 只签名不提交,返回 ApproveTokenBatchSignResult,前端可通过 submitBundleToBlockRazor 提交 * @returns 批量授权结果 * * @example * ```typescript * // 模式1:直接发送交易(默认) * const result = await approveTokenBatch({ * chain: 'BSC', * platform: 'four', * rpcUrl: 'https://bsc-dataseed.binance.org', * privateKeys: [key1, key2], * tokenAddress: '0x...', * amounts: ['max', 'max'] * }); * * // 模式2:只签名,前端提交 * const signResult = await approveTokenBatch({ * chain: 'BSC', * platform: 'four', * rpcUrl: 'https://bsc-dataseed.binance.org', * privateKeys: [key1, key2], * tokenAddress: '0x...', * amounts: ['max', 'max'], * signOnly: true * }); * // 提交到 BlockRazor * if (signResult.signedTransactions.length > 0) { * await submitBundleToBlockRazor(signResult.signedTransactions, { blockOffset: 10 }); * } * ``` */ export declare function approveTokenBatch(params: ApproveTokenBatchParams & { signOnly: true; }): Promise; export declare function approveTokenBatch(params: ApproveTokenBatchParams & { signOnly?: false; }): Promise; /** * ✅ 底层方法:批量授权 ERC20 代币(手动指定 spender) * 适用于任意 spender 地址(Flap、Four、PancakeSwap V2/V3 等) * * @param params - 批量授权参数 * @param params.signOnly - 是否只签名不提交(默认 false) * - false: 直接发送交易并等待确认,返回 ApproveTokenBatchResult * - true: 只签名不提交,返回 ApproveTokenBatchSignResult,前端可通过 submitBundleToBlockRazor 提交 * @returns 批量授权结果 * * @example * ```typescript * // 模式1:直接发送交易(默认) * const result = await approveTokenBatchRaw({ * rpcUrl: 'https://bsc-dataseed.binance.org', * privateKeys: [key1, key2], * tokenAddress: '0x...', * spenderAddress: '0x...', * amounts: ['max', 'max'] * }); * * // 模式2:只签名,前端提交 * const signResult = await approveTokenBatchRaw({ * rpcUrl: 'https://bsc-dataseed.binance.org', * privateKeys: [key1, key2], * tokenAddress: '0x...', * spenderAddress: '0x...', * amounts: ['max', 'max'], * signOnly: true * }); * // 提交到 BlockRazor * if (signResult.signedTransactions.length > 0) { * await submitBundleToBlockRazor(signResult.signedTransactions, { blockOffset: 10 }); * } * ``` */ export declare function approveTokenBatchRaw(params: ApproveTokenBatchRawParams & { signOnly: true; }): Promise; export declare function approveTokenBatchRaw(params: ApproveTokenBatchRawParams & { signOnly?: false; }): Promise;