export interface LiquidityInfoBase {
    protocol: string;
    address: string;
}
export interface LimitOrderInfo extends LiquidityInfoBase {
    maker: string;
    makerToken: string;
    takerToken: string;
    makerAmount: bigint;
    takerAmount: bigint;
    nonce: bigint;
    deadline: bigint;
    signature: string;
}
export interface UniswapV3Info extends LiquidityInfoBase {
    fee: bigint;
}
export type LiquidityInfo = LiquidityInfoBase | LimitOrderInfo | UniswapV3Info;
export interface Swap {
    fromTokenOp: TokenOperation;
    toTokenOp: TokenOperation;
    amountIn: bigint;
    amountOut: bigint;
    liquidityInfo: LiquidityInfo;
}
export interface TokenOperation {
    tokenInfo: {
        address: string;
        name: string;
        symbol: string;
        decimals: number;
        usdPrice?: number;
    };
    fromSwaps: Swap[];
    toSwaps: Swap[];
}
export interface IRoutingPlan {
    tokenOps: TokenOperation[];
    swaps: Swap[];
    fromToken: string;
    toToken: string;
    amountIn: bigint;
    amountOut: bigint;
}
