/** * LP Builder — Builds call arrays for Aerodrome liquidity operations * * addLiquidity: approve → swap half → approve WETH → addLiquidity → approve LP → gauge.deposit * removeLiquidity: getReward → withdraw → approve LP → removeLiquidity * claimRewards: getReward */ import type { Call } from '../wallet/batch-calldata'; import { type AerodromePool } from './aerodrome-pools'; export interface AddLiquidityCallsParams { pool: AerodromePool; /** Full USDC amount (will be split: half swapped to WETH, half kept) */ usdcAmount: bigint; /** Pre-built swap calldata (from AerodromeProvider) */ swapCalldata: { to: string; data: string; value: string; }; /** Expected WETH output from the swap */ expectedWethOut: bigint; /** USDC remaining for liquidity (usdcAmount - swapAmount) */ usdcForLiquidity: bigint; /** Min WETH for addLiquidity (after slippage) */ amountAMin: bigint; /** Min USDC for addLiquidity (after slippage) */ amountBMin: bigint; /** Address that receives LP tokens */ recipient: string; /** TX deadline (unix seconds) */ deadline: bigint; } /** * Build the 6-call batch for adding liquidity from single-token (USDC) input. * * 1. approve USDC → Router (for swap) * 2. swap half USDC → WETH * 3. approve WETH → Router (for addLiquidity) * 4. addLiquidity(WETH, USDC) → LP tokens * 5. approve LP → Gauge * 6. gauge.deposit(LP amount) * * Note: We approve max uint256 for LP → Gauge since we don't know exact LP output. */ export declare function buildAddLiquidityCalls(params: AddLiquidityCallsParams): Call[]; export interface RemoveLiquidityCallsParams { pool: AerodromePool; /** Staked LP amount in gauge */ stakedAmount: bigint; /** Unstaked LP amount on wallet */ unstakedAmount: bigint; /** Min WETH output (after slippage) */ amountAMin: bigint; /** Min USDC output (after slippage) */ amountBMin: bigint; /** Wallet address */ wallet: string; deadline: bigint; } /** * Build the call batch for removing liquidity. * * 1. gauge.getReward(wallet) — claim AERO * 2. gauge.withdraw(stakedAmount) — unstake LP * 3. approve LP → Router * 4. removeLiquidity → WETH + USDC */ export declare function buildRemoveLiquidityCalls(params: RemoveLiquidityCallsParams): Call[]; export declare function buildClaimRewardsCalls(gaugeAddress: string, wallet: string): Call[];