/** * PancakeSwap V2/V3 通用捆绑换手(Merkle Bundle)- 先买后卖 * * 功能:钱包B先买入代币 → 钱包A卖出相同数量 → 原子执行 */ import { CommonBundleConfig } from '../../../utils/bundle-helpers.js'; import type { GeneratedWallet } from '../../../utils/wallet.js'; export interface PancakeBuyFirstSignConfig { rpcUrl: string; gasLimit?: number | bigint; gasLimitMultiplier?: number; minGasPriceGwei?: number; maxGasPriceGwei?: number; txType?: 0 | 2; chainId?: number; reserveGasBNB?: number; skipQuoteOnError?: boolean; userType?: UserType; bribeAmount?: number; v2RouterAddress?: string; } export type UserType = 'v0' | 'v1'; export type SwapRouteType = 'v2' | 'v3-single' | 'v3-multi'; export interface V2RouteParams { routeType: 'v2'; v2Path: string[]; } export interface V3SingleRouteParams { routeType: 'v3-single'; v3TokenIn: string; v3TokenOut: string; v3Fee: number; v2Path?: string[]; } export interface V3MultiRouteParams { routeType: 'v3-multi'; v3LpAddresses: string[]; v3ExactTokenIn: string; v2Path?: string[]; } export type RouteParams = V2RouteParams | V3SingleRouteParams | V3MultiRouteParams; export interface PancakeBuyFirstConfig extends CommonBundleConfig { apiKey: string; customRpcUrl?: string; bundleBlockOffset?: number; reserveGasBNB?: number; waitForConfirmation?: boolean; waitTimeoutMs?: number; } export interface PancakeBundleBuyFirstSignParams { buyerPrivateKey?: string; buyerPrivateKeys?: string[]; sellerPrivateKey?: string; sellerPrivateKeys?: string[]; tokenAddress: string; routeParams: RouteParams; buyerFunds?: string; buyerFundsPercentage?: number; config: PancakeBuyFirstSignConfig; quoteToken?: string; quoteTokenDecimals?: number; startNonces?: number[]; buyCount?: number; sellCount?: number; taxRateBps?: number; } export interface PancakeBundleBuyFirstParams { buyerPrivateKey: string; sellerPrivateKey: string; tokenAddress: string; routeParams: RouteParams; buyerFunds?: string; buyerFundsPercentage?: number; config: PancakeBuyFirstConfig; } /** ✅ Pancake BuyFirst 结果(简化版) */ export type PancakeBuyFirstResult = { signedTransactions: string[]; profitHopWallets?: GeneratedWallet[]; metadata?: { buyerAddress: string; sellerAddress: string; buyAmount: string; sellAmount: string; profitAmount?: string; buyCount?: number; sellCount?: number; buyAmounts?: string[]; sellAmounts?: string[]; }; }; export declare function pancakeBundleBuyFirstMerkle(params: PancakeBundleBuyFirstSignParams): Promise;