import { Interface } from '@ethersproject/abi'; import { Currency, Percent, TradeType } from 'uniswapredchain/sdk-core'; import { Trade as V2Trade } from 'uniswapredchain/v2-sdk'; import { FeeOptions, MethodParameters, PermitOptions, Position, Trade as V3Trade } from 'uniswapredchain/v3-sdk'; import { ApprovalTypes, CondensedAddLiquidityOptions } from './approveAndCall'; import { Trade } from './entities/trade'; import { Validation } from './multicallExtended'; /** * Options for producing the arguments to send calls to the router. */ export interface SwapOptions { /** * How much the execution price is allowed to move unfavorably from the trade execution price. */ slippageTolerance: Percent; /** * The account that should receive the output. If omitted, output is sent to msg.sender. */ recipient?: string; /** * Either deadline (when the transaction expires, in epoch seconds), or previousBlockhash. */ deadlineOrPreviousBlockhash?: Validation; /** * The optional permit parameters for spending the input. */ inputTokenPermit?: PermitOptions; /** * Optional information for taking a fee on output. */ fee?: FeeOptions; } export interface SwapAndAddOptions extends SwapOptions { /** * The optional permit parameters for pulling in remaining output token. */ outputTokenPermit?: PermitOptions; } /** * Represents the Uniswap V2 + V3 SwapRouter02, and has static methods for helping execute trades. */ export declare abstract class SwapRouter { static INTERFACE: Interface; /** * Cannot be constructed. */ private constructor(); private static encodeV2Swap; private static encodeV3Swap; private static encodeSwaps; /** * Produces the on-chain method name to call and the hex encoded parameters to pass as arguments for a given trade. * @param trade to produce call parameters for * @param options options for the call parameters */ static swapCallParameters(trades: Trade | V2Trade | V3Trade | (V2Trade | V3Trade)[], options: SwapOptions): MethodParameters; /** * Produces the on-chain method name to call and the hex encoded parameters to pass as arguments for a given trade. * @param trade to produce call parameters for * @param options options for the call parameters */ static swapAndAddCallParameters(trades: Trade | V2Trade | V3Trade | (V2Trade | V3Trade)[], options: SwapAndAddOptions, position: Position, addLiquidityOptions: CondensedAddLiquidityOptions, tokenInApprovalType: ApprovalTypes, tokenOutApprovalType: ApprovalTypes): MethodParameters; private static getPositionAmounts; }