import type { GeneratedWallet } from '../utils/wallet.js'; export interface DirectRouterSignConfig { rpcUrl: string; chainId?: number; gasLimit?: number | bigint; gasLimitMultiplier?: number; gasPrice?: bigint; minGasPriceGwei?: number; maxGasPriceGwei?: number; txType?: 0 | 2; /** 是否跳过授权检查 */ skipApprovalCheck?: boolean; /** 滑点(基点),默认 100 = 1% */ slippageBps?: number; /** BlockRazor 贿赂金额(BNB),仅 BSC 链有效,用于提高 bundle 打包优先级 */ bribeAmount?: number; /** ✅ 利润模式:'single'(默认,从最大钱包统一扣)或 'distributed'(每个钱包独立扣) */ profitMode?: 'single' | 'distributed'; /** ✅ 是否跳过利润扣除(EOA 普通模式使用) */ skipProfit?: boolean; } export interface DirectV2BuyParams { chain: 'BSC' | 'MONAD' | 'XLAYER' | 'ENI'; privateKeys: string[]; buyAmounts: string[]; tokenAddress: string; routerAddress: string; quoteToken?: string; quoteTokenDecimals?: number; startNonces?: number[]; config: DirectRouterSignConfig; } export interface DirectV2SellParams { chain: 'BSC' | 'MONAD' | 'XLAYER' | 'ENI'; privateKeys: string[]; sellPercentages?: number[]; sellAmounts?: string[]; startNonces?: number[]; tokenAddress: string; tokenDecimals?: number; routerAddress: string; quoteToken?: string; config: DirectRouterSignConfig; } export interface DirectV3BuyParams { chain: 'BSC' | 'MONAD' | 'XLAYER' | 'ENI'; privateKeys: string[]; buyAmounts: string[]; tokenAddress: string; routerAddress: string; fee: number; quoteToken?: string; quoteTokenDecimals?: number; startNonces?: number[]; config: DirectRouterSignConfig; } export interface DirectV3SellParams { chain: 'BSC' | 'MONAD' | 'XLAYER' | 'ENI'; privateKeys: string[]; sellPercentages?: number[]; sellAmounts?: string[]; tokenAddress: string; tokenDecimals?: number; routerAddress: string; fee: number; quoteToken?: string; startNonces?: number[]; config: DirectRouterSignConfig; } export interface DirectRouterResult { signedTransactions: string[]; profitHopWallets?: GeneratedWallet[]; metadata?: { profitMode?: 'single' | 'distributed'; profitAmount: string; profitRecipient: string; totalFlow: string; }; } export type DexKey = 'PANCAKESWAP' | 'UNISWAP' | 'POTATOSWAP' | 'DYORSWAP' | 'IROSWAP'; export type RouterVersion = 'v2' | 'v3';