/** * EIP-7702 批量授权 * * 只生成签名,由调用方决定如何提交 * * 注意:ERC20 approve 需要 msg.sender 是 token owner * 在 EIP-7702 中,通过 delegate 调用时 msg.sender 是 EOA 本身 * 需要使用 executeApprove 函数 */ import type { BundleApproveParams, BundleApproveResult, EIP7702Config } from './types.js'; /** * 批量授权 - 生成签名后的交易 * * @param params 授权参数 * @returns 签名后的交易和元数据 */ export declare function bundleApprove(params: BundleApproveParams): Promise; export interface BundleApproveMultiSpendersParams { /** 主钱包(发起交易,支付 gas) */ mainPrivateKey: string; /** 需要授权的钱包私钥列表 */ privateKeys: string[]; /** 代币地址 */ tokenAddress: string; /** 授权给的地址列表(多个 spender) */ spenderAddresses: string[]; /** 授权金额(可选,默认 MaxUint256) */ amount?: bigint; /** 配置 */ config?: EIP7702Config; } export interface BundleApproveMultiSpendersResult { /** 签名后的交易 */ signedTransaction: string; /** 元数据 */ metadata: { walletCount: number; tokenAddress: string; spenderAddresses: string[]; totalApproveCalls: number; }; } /** * 多 spender 批量授权 - 生成签名后的交易 * * ✅ 将所有钱包对所有 spender 的授权合并到一笔交易中 * 避免多笔交易导致的 nonce 冲突问题 * * @param params 授权参数 * @returns 签名后的交易和元数据 */ export declare function bundleApproveMultiSpenders(params: BundleApproveMultiSpendersParams): Promise; /** * 检查授权状态 * * @param walletAddresses 钱包地址列表 * @param tokenAddress 代币地址 * @param spenderAddress 被授权地址 * @param config 配置 * @param decimals 代币精度(可选,默认 18) */ export declare function checkApprovalStatus(walletAddresses: string[], tokenAddress: string, spenderAddress: string, config?: EIP7702Config, decimals?: number): Promise<{ address: string; allowance: string; allowanceRaw: string; isApproved: boolean; }[]>;