import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from "ethers";
import type { FunctionFragment, Result, EventFragment } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from "./common";
export interface SwapInterface extends utils.Interface {
    functions: {
        "addLiquidity(uint256[],uint256,uint256)": FunctionFragment;
        "calculateCurrentWithdrawFee(address)": FunctionFragment;
        "calculateRemoveLiquidity(address,uint256)": FunctionFragment;
        "calculateRemoveLiquidityOneToken(address,uint256,uint8)": FunctionFragment;
        "calculateSwap(uint8,uint8,uint256)": FunctionFragment;
        "calculateSwapUnderlying(uint8,uint8,uint256)": FunctionFragment;
        "calculateTokenAmount(address,uint256[],bool)": FunctionFragment;
        "getA()": FunctionFragment;
        "getAPrecise()": FunctionFragment;
        "getAdminBalance(uint256)": FunctionFragment;
        "getBalances()": FunctionFragment;
        "getDepositTimestamp(address)": FunctionFragment;
        "getLpToken()": FunctionFragment;
        "getToken(uint8)": FunctionFragment;
        "getTokenBalance(uint8)": FunctionFragment;
        "getTokenIndex(address)": FunctionFragment;
        "getVirtualPrice()": FunctionFragment;
        "initialize(address[],uint8[],string,string,uint256,uint256,uint256,uint256,uint256,address)": FunctionFragment;
        "initializeMetaSwap(address[],uint8[],string,string,uint256,uint256,uint256,uint256,uint256,address,address)": FunctionFragment;
        "metaSwapStorage()": FunctionFragment;
        "owner()": FunctionFragment;
        "pause()": FunctionFragment;
        "paused()": FunctionFragment;
        "rampA(uint256,uint256)": FunctionFragment;
        "removeLiquidity(uint256,uint256[],uint256)": FunctionFragment;
        "removeLiquidityImbalance(uint256[],uint256,uint256)": FunctionFragment;
        "removeLiquidityOneToken(uint256,uint8,uint256,uint256)": FunctionFragment;
        "renounceOwnership()": FunctionFragment;
        "setAdminFee(uint256)": FunctionFragment;
        "setDefaultDepositFee(uint256)": FunctionFragment;
        "setDefaultWithdrawFee(uint256)": FunctionFragment;
        "setDevAddress(address)": FunctionFragment;
        "setSwapFee(uint256)": FunctionFragment;
        "stopRampA()": FunctionFragment;
        "swap(uint8,uint8,uint256,uint256,uint256)": FunctionFragment;
        "swapStorage()": FunctionFragment;
        "swapUnderlying(uint8,uint8,uint256,uint256,uint256)": FunctionFragment;
        "transferOwnership(address)": FunctionFragment;
        "unpause()": FunctionFragment;
        "updateUserWithdrawFee(address,uint256)": FunctionFragment;
        "withdrawAdminFees()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "addLiquidity" | "calculateCurrentWithdrawFee" | "calculateRemoveLiquidity" | "calculateRemoveLiquidityOneToken" | "calculateSwap" | "calculateSwapUnderlying" | "calculateTokenAmount" | "getA" | "getAPrecise" | "getAdminBalance" | "getBalances" | "getDepositTimestamp" | "getLpToken" | "getToken" | "getTokenBalance" | "getTokenIndex" | "getVirtualPrice" | "initialize" | "initializeMetaSwap" | "metaSwapStorage" | "owner" | "pause" | "paused" | "rampA" | "removeLiquidity" | "removeLiquidityImbalance" | "removeLiquidityOneToken" | "renounceOwnership" | "setAdminFee" | "setDefaultDepositFee" | "setDefaultWithdrawFee" | "setDevAddress" | "setSwapFee" | "stopRampA" | "swap" | "swapStorage" | "swapUnderlying" | "transferOwnership" | "unpause" | "updateUserWithdrawFee" | "withdrawAdminFees"): FunctionFragment;
    encodeFunctionData(functionFragment: "addLiquidity", values: [
        PromiseOrValue<BigNumberish>[],
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "calculateCurrentWithdrawFee", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "calculateRemoveLiquidity", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "calculateRemoveLiquidityOneToken", values: [
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "calculateSwap", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "calculateSwapUnderlying", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "calculateTokenAmount", values: [
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>[],
        PromiseOrValue<boolean>
    ]): string;
    encodeFunctionData(functionFragment: "getA", values?: undefined): string;
    encodeFunctionData(functionFragment: "getAPrecise", values?: undefined): string;
    encodeFunctionData(functionFragment: "getAdminBalance", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "getBalances", values?: undefined): string;
    encodeFunctionData(functionFragment: "getDepositTimestamp", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "getLpToken", values?: undefined): string;
    encodeFunctionData(functionFragment: "getToken", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "getTokenBalance", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "getTokenIndex", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "getVirtualPrice", values?: undefined): string;
    encodeFunctionData(functionFragment: "initialize", values: [
        PromiseOrValue<string>[],
        PromiseOrValue<BigNumberish>[],
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>
    ]): string;
    encodeFunctionData(functionFragment: "initializeMetaSwap", values: [
        PromiseOrValue<string>[],
        PromiseOrValue<BigNumberish>[],
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>,
        PromiseOrValue<string>
    ]): string;
    encodeFunctionData(functionFragment: "metaSwapStorage", values?: undefined): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "pause", values?: undefined): string;
    encodeFunctionData(functionFragment: "paused", values?: undefined): string;
    encodeFunctionData(functionFragment: "rampA", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "removeLiquidity", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>[],
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "removeLiquidityImbalance", values: [
        PromiseOrValue<BigNumberish>[],
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "removeLiquidityOneToken", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "renounceOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "setAdminFee", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "setDefaultDepositFee", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "setDefaultWithdrawFee", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "setDevAddress", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "setSwapFee", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "stopRampA", values?: undefined): string;
    encodeFunctionData(functionFragment: "swap", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "swapStorage", values?: undefined): string;
    encodeFunctionData(functionFragment: "swapUnderlying", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "transferOwnership", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "unpause", values?: undefined): string;
    encodeFunctionData(functionFragment: "updateUserWithdrawFee", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "withdrawAdminFees", values?: undefined): string;
    decodeFunctionResult(functionFragment: "addLiquidity", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "calculateCurrentWithdrawFee", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "calculateRemoveLiquidity", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "calculateRemoveLiquidityOneToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "calculateSwap", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "calculateSwapUnderlying", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "calculateTokenAmount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getA", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAPrecise", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAdminBalance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getBalances", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getDepositTimestamp", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getLpToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getTokenBalance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getTokenIndex", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getVirtualPrice", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initializeMetaSwap", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "metaSwapStorage", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rampA", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "removeLiquidity", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "removeLiquidityImbalance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "removeLiquidityOneToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setAdminFee", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setDefaultDepositFee", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setDefaultWithdrawFee", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setDevAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setSwapFee", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stopRampA", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "swap", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "swapStorage", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "swapUnderlying", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "updateUserWithdrawFee", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdrawAdminFees", data: BytesLike): Result;
    events: {
        "AddLiquidity(address,uint256[],uint256[],uint256,uint256)": EventFragment;
        "NewAdminFee(uint256)": EventFragment;
        "NewDepositFee(uint256)": EventFragment;
        "NewSwapFee(uint256)": EventFragment;
        "NewWithdrawFee(uint256)": EventFragment;
        "OwnershipTransferred(address,address)": EventFragment;
        "Paused(address)": EventFragment;
        "RampA(uint256,uint256,uint256,uint256)": EventFragment;
        "RemoveLiquidity(address,uint256[],uint256)": EventFragment;
        "RemoveLiquidityImbalance(address,uint256[],uint256[],uint256,uint256)": EventFragment;
        "RemoveLiquidityOne(address,uint256,uint256,uint256,uint256)": EventFragment;
        "StopRampA(uint256,uint256)": EventFragment;
        "TokenSwap(address,uint256,uint256,uint128,uint128)": EventFragment;
        "TokenSwapUnderlying(address,uint256,uint256,uint128,uint128)": EventFragment;
        "Unpaused(address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "AddLiquidity"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "NewAdminFee"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "NewDepositFee"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "NewSwapFee"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "NewWithdrawFee"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Paused"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RampA"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RemoveLiquidity"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RemoveLiquidityImbalance"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RemoveLiquidityOne"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "StopRampA"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TokenSwap"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TokenSwapUnderlying"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Unpaused"): EventFragment;
}
export interface AddLiquidityEventObject {
    provider: string;
    tokenAmounts: BigNumber[];
    fees: BigNumber[];
    invariant: BigNumber;
    lpTokenSupply: BigNumber;
}
export type AddLiquidityEvent = TypedEvent<[
    string,
    BigNumber[],
    BigNumber[],
    BigNumber,
    BigNumber
], AddLiquidityEventObject>;
export type AddLiquidityEventFilter = TypedEventFilter<AddLiquidityEvent>;
export interface NewAdminFeeEventObject {
    newAdminFee: BigNumber;
}
export type NewAdminFeeEvent = TypedEvent<[BigNumber], NewAdminFeeEventObject>;
export type NewAdminFeeEventFilter = TypedEventFilter<NewAdminFeeEvent>;
export interface NewDepositFeeEventObject {
    newDepositFee: BigNumber;
}
export type NewDepositFeeEvent = TypedEvent<[
    BigNumber
], NewDepositFeeEventObject>;
export type NewDepositFeeEventFilter = TypedEventFilter<NewDepositFeeEvent>;
export interface NewSwapFeeEventObject {
    newSwapFee: BigNumber;
}
export type NewSwapFeeEvent = TypedEvent<[BigNumber], NewSwapFeeEventObject>;
export type NewSwapFeeEventFilter = TypedEventFilter<NewSwapFeeEvent>;
export interface NewWithdrawFeeEventObject {
    newWithdrawFee: BigNumber;
}
export type NewWithdrawFeeEvent = TypedEvent<[
    BigNumber
], NewWithdrawFeeEventObject>;
export type NewWithdrawFeeEventFilter = TypedEventFilter<NewWithdrawFeeEvent>;
export interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
export type OwnershipTransferredEvent = TypedEvent<[
    string,
    string
], OwnershipTransferredEventObject>;
export type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface PausedEventObject {
    account: string;
}
export type PausedEvent = TypedEvent<[string], PausedEventObject>;
export type PausedEventFilter = TypedEventFilter<PausedEvent>;
export interface RampAEventObject {
    oldA: BigNumber;
    newA: BigNumber;
    initialTime: BigNumber;
    futureTime: BigNumber;
}
export type RampAEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], RampAEventObject>;
export type RampAEventFilter = TypedEventFilter<RampAEvent>;
export interface RemoveLiquidityEventObject {
    provider: string;
    tokenAmounts: BigNumber[];
    lpTokenSupply: BigNumber;
}
export type RemoveLiquidityEvent = TypedEvent<[
    string,
    BigNumber[],
    BigNumber
], RemoveLiquidityEventObject>;
export type RemoveLiquidityEventFilter = TypedEventFilter<RemoveLiquidityEvent>;
export interface RemoveLiquidityImbalanceEventObject {
    provider: string;
    tokenAmounts: BigNumber[];
    fees: BigNumber[];
    invariant: BigNumber;
    lpTokenSupply: BigNumber;
}
export type RemoveLiquidityImbalanceEvent = TypedEvent<[
    string,
    BigNumber[],
    BigNumber[],
    BigNumber,
    BigNumber
], RemoveLiquidityImbalanceEventObject>;
export type RemoveLiquidityImbalanceEventFilter = TypedEventFilter<RemoveLiquidityImbalanceEvent>;
export interface RemoveLiquidityOneEventObject {
    provider: string;
    lpTokenAmount: BigNumber;
    lpTokenSupply: BigNumber;
    boughtId: BigNumber;
    tokensBought: BigNumber;
}
export type RemoveLiquidityOneEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], RemoveLiquidityOneEventObject>;
export type RemoveLiquidityOneEventFilter = TypedEventFilter<RemoveLiquidityOneEvent>;
export interface StopRampAEventObject {
    currentA: BigNumber;
    time: BigNumber;
}
export type StopRampAEvent = TypedEvent<[
    BigNumber,
    BigNumber
], StopRampAEventObject>;
export type StopRampAEventFilter = TypedEventFilter<StopRampAEvent>;
export interface TokenSwapEventObject {
    buyer: string;
    tokensSold: BigNumber;
    tokensBought: BigNumber;
    soldId: BigNumber;
    boughtId: BigNumber;
}
export type TokenSwapEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], TokenSwapEventObject>;
export type TokenSwapEventFilter = TypedEventFilter<TokenSwapEvent>;
export interface TokenSwapUnderlyingEventObject {
    buyer: string;
    tokensSold: BigNumber;
    tokensBought: BigNumber;
    soldId: BigNumber;
    boughtId: BigNumber;
}
export type TokenSwapUnderlyingEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], TokenSwapUnderlyingEventObject>;
export type TokenSwapUnderlyingEventFilter = TypedEventFilter<TokenSwapUnderlyingEvent>;
export interface UnpausedEventObject {
    account: string;
}
export type UnpausedEvent = TypedEvent<[string], UnpausedEventObject>;
export type UnpausedEventFilter = TypedEventFilter<UnpausedEvent>;
export interface Swap extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: SwapInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        addLiquidity(amounts: PromiseOrValue<BigNumberish>[], minToMint: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        calculateCurrentWithdrawFee(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        calculateRemoveLiquidity(account: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber[]]>;
        calculateRemoveLiquidityOneToken(account: PromiseOrValue<string>, tokenAmount: PromiseOrValue<BigNumberish>, tokenIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        calculateSwap(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        calculateSwapUnderlying(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        calculateTokenAmount(account: PromiseOrValue<string>, amounts: PromiseOrValue<BigNumberish>[], deposit: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getA(overrides?: CallOverrides): Promise<[BigNumber]>;
        getAPrecise(overrides?: CallOverrides): Promise<[BigNumber]>;
        getAdminBalance(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getBalances(overrides?: CallOverrides): Promise<[BigNumber[]]>;
        getDepositTimestamp(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getLpToken(overrides?: CallOverrides): Promise<[string]>;
        getToken(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        getTokenBalance(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getTokenIndex(tokenAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[number]>;
        getVirtualPrice(overrides?: CallOverrides): Promise<[BigNumber]>;
        initialize(_pooledTokens: PromiseOrValue<string>[], decimals: PromiseOrValue<BigNumberish>[], lpTokenName: PromiseOrValue<string>, lpTokenSymbol: PromiseOrValue<string>, _a: PromiseOrValue<BigNumberish>, _fee: PromiseOrValue<BigNumberish>, _adminFee: PromiseOrValue<BigNumberish>, _depositFee: PromiseOrValue<BigNumberish>, _withdrawFee: PromiseOrValue<BigNumberish>, _devaddr: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        initializeMetaSwap(_pooledTokens: PromiseOrValue<string>[], decimals: PromiseOrValue<BigNumberish>[], lpTokenName: PromiseOrValue<string>, lpTokenSymbol: PromiseOrValue<string>, _a: PromiseOrValue<BigNumberish>, _fee: PromiseOrValue<BigNumberish>, _adminFee: PromiseOrValue<BigNumberish>, _depositFee: PromiseOrValue<BigNumberish>, _withdrawFee: PromiseOrValue<BigNumberish>, _devaddr: PromiseOrValue<string>, baseSwap: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        metaSwapStorage(overrides?: CallOverrides): Promise<[
            string,
            BigNumber,
            BigNumber
        ] & {
            baseSwap: string;
            baseVirtualPrice: BigNumber;
            baseCacheLastUpdated: BigNumber;
        }>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        paused(overrides?: CallOverrides): Promise<[boolean]>;
        rampA(futureA: PromiseOrValue<BigNumberish>, futureTime: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        removeLiquidity(amount: PromiseOrValue<BigNumberish>, minAmounts: PromiseOrValue<BigNumberish>[], deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        removeLiquidityImbalance(amounts: PromiseOrValue<BigNumberish>[], maxBurnAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        removeLiquidityOneToken(tokenAmount: PromiseOrValue<BigNumberish>, tokenIndex: PromiseOrValue<BigNumberish>, minAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setAdminFee(newAdminFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setDefaultDepositFee(newDepositFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setDefaultWithdrawFee(newWithdrawFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setDevAddress(_devaddr: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setSwapFee(newSwapFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        stopRampA(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        swap(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, minDy: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        swapStorage(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            string,
            string
        ] & {
            initialA: BigNumber;
            futureA: BigNumber;
            initialATime: BigNumber;
            futureATime: BigNumber;
            swapFee: BigNumber;
            adminFee: BigNumber;
            defaultDepositFee: BigNumber;
            defaultWithdrawFee: BigNumber;
            lpToken: string;
            devaddr: string;
        }>;
        swapUnderlying(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, minDy: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        updateUserWithdrawFee(recipient: PromiseOrValue<string>, transferAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawAdminFees(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    addLiquidity(amounts: PromiseOrValue<BigNumberish>[], minToMint: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    calculateCurrentWithdrawFee(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    calculateRemoveLiquidity(account: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber[]>;
    calculateRemoveLiquidityOneToken(account: PromiseOrValue<string>, tokenAmount: PromiseOrValue<BigNumberish>, tokenIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    calculateSwap(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    calculateSwapUnderlying(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    calculateTokenAmount(account: PromiseOrValue<string>, amounts: PromiseOrValue<BigNumberish>[], deposit: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<BigNumber>;
    getA(overrides?: CallOverrides): Promise<BigNumber>;
    getAPrecise(overrides?: CallOverrides): Promise<BigNumber>;
    getAdminBalance(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getBalances(overrides?: CallOverrides): Promise<BigNumber[]>;
    getDepositTimestamp(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    getLpToken(overrides?: CallOverrides): Promise<string>;
    getToken(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    getTokenBalance(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getTokenIndex(tokenAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<number>;
    getVirtualPrice(overrides?: CallOverrides): Promise<BigNumber>;
    initialize(_pooledTokens: PromiseOrValue<string>[], decimals: PromiseOrValue<BigNumberish>[], lpTokenName: PromiseOrValue<string>, lpTokenSymbol: PromiseOrValue<string>, _a: PromiseOrValue<BigNumberish>, _fee: PromiseOrValue<BigNumberish>, _adminFee: PromiseOrValue<BigNumberish>, _depositFee: PromiseOrValue<BigNumberish>, _withdrawFee: PromiseOrValue<BigNumberish>, _devaddr: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    initializeMetaSwap(_pooledTokens: PromiseOrValue<string>[], decimals: PromiseOrValue<BigNumberish>[], lpTokenName: PromiseOrValue<string>, lpTokenSymbol: PromiseOrValue<string>, _a: PromiseOrValue<BigNumberish>, _fee: PromiseOrValue<BigNumberish>, _adminFee: PromiseOrValue<BigNumberish>, _depositFee: PromiseOrValue<BigNumberish>, _withdrawFee: PromiseOrValue<BigNumberish>, _devaddr: PromiseOrValue<string>, baseSwap: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    metaSwapStorage(overrides?: CallOverrides): Promise<[
        string,
        BigNumber,
        BigNumber
    ] & {
        baseSwap: string;
        baseVirtualPrice: BigNumber;
        baseCacheLastUpdated: BigNumber;
    }>;
    owner(overrides?: CallOverrides): Promise<string>;
    pause(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    paused(overrides?: CallOverrides): Promise<boolean>;
    rampA(futureA: PromiseOrValue<BigNumberish>, futureTime: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    removeLiquidity(amount: PromiseOrValue<BigNumberish>, minAmounts: PromiseOrValue<BigNumberish>[], deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    removeLiquidityImbalance(amounts: PromiseOrValue<BigNumberish>[], maxBurnAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    removeLiquidityOneToken(tokenAmount: PromiseOrValue<BigNumberish>, tokenIndex: PromiseOrValue<BigNumberish>, minAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    renounceOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setAdminFee(newAdminFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setDefaultDepositFee(newDepositFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setDefaultWithdrawFee(newWithdrawFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setDevAddress(_devaddr: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setSwapFee(newSwapFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    stopRampA(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    swap(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, minDy: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    swapStorage(overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        string,
        string
    ] & {
        initialA: BigNumber;
        futureA: BigNumber;
        initialATime: BigNumber;
        futureATime: BigNumber;
        swapFee: BigNumber;
        adminFee: BigNumber;
        defaultDepositFee: BigNumber;
        defaultWithdrawFee: BigNumber;
        lpToken: string;
        devaddr: string;
    }>;
    swapUnderlying(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, minDy: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    unpause(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    updateUserWithdrawFee(recipient: PromiseOrValue<string>, transferAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawAdminFees(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        addLiquidity(amounts: PromiseOrValue<BigNumberish>[], minToMint: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        calculateCurrentWithdrawFee(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        calculateRemoveLiquidity(account: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber[]>;
        calculateRemoveLiquidityOneToken(account: PromiseOrValue<string>, tokenAmount: PromiseOrValue<BigNumberish>, tokenIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        calculateSwap(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        calculateSwapUnderlying(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        calculateTokenAmount(account: PromiseOrValue<string>, amounts: PromiseOrValue<BigNumberish>[], deposit: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<BigNumber>;
        getA(overrides?: CallOverrides): Promise<BigNumber>;
        getAPrecise(overrides?: CallOverrides): Promise<BigNumber>;
        getAdminBalance(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getBalances(overrides?: CallOverrides): Promise<BigNumber[]>;
        getDepositTimestamp(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getLpToken(overrides?: CallOverrides): Promise<string>;
        getToken(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        getTokenBalance(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getTokenIndex(tokenAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<number>;
        getVirtualPrice(overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_pooledTokens: PromiseOrValue<string>[], decimals: PromiseOrValue<BigNumberish>[], lpTokenName: PromiseOrValue<string>, lpTokenSymbol: PromiseOrValue<string>, _a: PromiseOrValue<BigNumberish>, _fee: PromiseOrValue<BigNumberish>, _adminFee: PromiseOrValue<BigNumberish>, _depositFee: PromiseOrValue<BigNumberish>, _withdrawFee: PromiseOrValue<BigNumberish>, _devaddr: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        initializeMetaSwap(_pooledTokens: PromiseOrValue<string>[], decimals: PromiseOrValue<BigNumberish>[], lpTokenName: PromiseOrValue<string>, lpTokenSymbol: PromiseOrValue<string>, _a: PromiseOrValue<BigNumberish>, _fee: PromiseOrValue<BigNumberish>, _adminFee: PromiseOrValue<BigNumberish>, _depositFee: PromiseOrValue<BigNumberish>, _withdrawFee: PromiseOrValue<BigNumberish>, _devaddr: PromiseOrValue<string>, baseSwap: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        metaSwapStorage(overrides?: CallOverrides): Promise<[
            string,
            BigNumber,
            BigNumber
        ] & {
            baseSwap: string;
            baseVirtualPrice: BigNumber;
            baseCacheLastUpdated: BigNumber;
        }>;
        owner(overrides?: CallOverrides): Promise<string>;
        pause(overrides?: CallOverrides): Promise<void>;
        paused(overrides?: CallOverrides): Promise<boolean>;
        rampA(futureA: PromiseOrValue<BigNumberish>, futureTime: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        removeLiquidity(amount: PromiseOrValue<BigNumberish>, minAmounts: PromiseOrValue<BigNumberish>[], deadline: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber[]>;
        removeLiquidityImbalance(amounts: PromiseOrValue<BigNumberish>[], maxBurnAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        removeLiquidityOneToken(tokenAmount: PromiseOrValue<BigNumberish>, tokenIndex: PromiseOrValue<BigNumberish>, minAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        setAdminFee(newAdminFee: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setDefaultDepositFee(newDepositFee: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setDefaultWithdrawFee(newWithdrawFee: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setDevAddress(_devaddr: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setSwapFee(newSwapFee: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        stopRampA(overrides?: CallOverrides): Promise<void>;
        swap(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, minDy: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        swapStorage(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            string,
            string
        ] & {
            initialA: BigNumber;
            futureA: BigNumber;
            initialATime: BigNumber;
            futureATime: BigNumber;
            swapFee: BigNumber;
            adminFee: BigNumber;
            defaultDepositFee: BigNumber;
            defaultWithdrawFee: BigNumber;
            lpToken: string;
            devaddr: string;
        }>;
        swapUnderlying(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, minDy: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        unpause(overrides?: CallOverrides): Promise<void>;
        updateUserWithdrawFee(recipient: PromiseOrValue<string>, transferAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        withdrawAdminFees(overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "AddLiquidity(address,uint256[],uint256[],uint256,uint256)"(provider?: PromiseOrValue<string> | null, tokenAmounts?: null, fees?: null, invariant?: null, lpTokenSupply?: null): AddLiquidityEventFilter;
        AddLiquidity(provider?: PromiseOrValue<string> | null, tokenAmounts?: null, fees?: null, invariant?: null, lpTokenSupply?: null): AddLiquidityEventFilter;
        "NewAdminFee(uint256)"(newAdminFee?: null): NewAdminFeeEventFilter;
        NewAdminFee(newAdminFee?: null): NewAdminFeeEventFilter;
        "NewDepositFee(uint256)"(newDepositFee?: null): NewDepositFeeEventFilter;
        NewDepositFee(newDepositFee?: null): NewDepositFeeEventFilter;
        "NewSwapFee(uint256)"(newSwapFee?: null): NewSwapFeeEventFilter;
        NewSwapFee(newSwapFee?: null): NewSwapFeeEventFilter;
        "NewWithdrawFee(uint256)"(newWithdrawFee?: null): NewWithdrawFeeEventFilter;
        NewWithdrawFee(newWithdrawFee?: null): NewWithdrawFeeEventFilter;
        "OwnershipTransferred(address,address)"(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        "Paused(address)"(account?: null): PausedEventFilter;
        Paused(account?: null): PausedEventFilter;
        "RampA(uint256,uint256,uint256,uint256)"(oldA?: null, newA?: null, initialTime?: null, futureTime?: null): RampAEventFilter;
        RampA(oldA?: null, newA?: null, initialTime?: null, futureTime?: null): RampAEventFilter;
        "RemoveLiquidity(address,uint256[],uint256)"(provider?: PromiseOrValue<string> | null, tokenAmounts?: null, lpTokenSupply?: null): RemoveLiquidityEventFilter;
        RemoveLiquidity(provider?: PromiseOrValue<string> | null, tokenAmounts?: null, lpTokenSupply?: null): RemoveLiquidityEventFilter;
        "RemoveLiquidityImbalance(address,uint256[],uint256[],uint256,uint256)"(provider?: PromiseOrValue<string> | null, tokenAmounts?: null, fees?: null, invariant?: null, lpTokenSupply?: null): RemoveLiquidityImbalanceEventFilter;
        RemoveLiquidityImbalance(provider?: PromiseOrValue<string> | null, tokenAmounts?: null, fees?: null, invariant?: null, lpTokenSupply?: null): RemoveLiquidityImbalanceEventFilter;
        "RemoveLiquidityOne(address,uint256,uint256,uint256,uint256)"(provider?: PromiseOrValue<string> | null, lpTokenAmount?: null, lpTokenSupply?: null, boughtId?: null, tokensBought?: null): RemoveLiquidityOneEventFilter;
        RemoveLiquidityOne(provider?: PromiseOrValue<string> | null, lpTokenAmount?: null, lpTokenSupply?: null, boughtId?: null, tokensBought?: null): RemoveLiquidityOneEventFilter;
        "StopRampA(uint256,uint256)"(currentA?: null, time?: null): StopRampAEventFilter;
        StopRampA(currentA?: null, time?: null): StopRampAEventFilter;
        "TokenSwap(address,uint256,uint256,uint128,uint128)"(buyer?: PromiseOrValue<string> | null, tokensSold?: null, tokensBought?: null, soldId?: null, boughtId?: null): TokenSwapEventFilter;
        TokenSwap(buyer?: PromiseOrValue<string> | null, tokensSold?: null, tokensBought?: null, soldId?: null, boughtId?: null): TokenSwapEventFilter;
        "TokenSwapUnderlying(address,uint256,uint256,uint128,uint128)"(buyer?: PromiseOrValue<string> | null, tokensSold?: null, tokensBought?: null, soldId?: null, boughtId?: null): TokenSwapUnderlyingEventFilter;
        TokenSwapUnderlying(buyer?: PromiseOrValue<string> | null, tokensSold?: null, tokensBought?: null, soldId?: null, boughtId?: null): TokenSwapUnderlyingEventFilter;
        "Unpaused(address)"(account?: null): UnpausedEventFilter;
        Unpaused(account?: null): UnpausedEventFilter;
    };
    estimateGas: {
        addLiquidity(amounts: PromiseOrValue<BigNumberish>[], minToMint: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        calculateCurrentWithdrawFee(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        calculateRemoveLiquidity(account: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        calculateRemoveLiquidityOneToken(account: PromiseOrValue<string>, tokenAmount: PromiseOrValue<BigNumberish>, tokenIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        calculateSwap(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        calculateSwapUnderlying(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        calculateTokenAmount(account: PromiseOrValue<string>, amounts: PromiseOrValue<BigNumberish>[], deposit: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<BigNumber>;
        getA(overrides?: CallOverrides): Promise<BigNumber>;
        getAPrecise(overrides?: CallOverrides): Promise<BigNumber>;
        getAdminBalance(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getBalances(overrides?: CallOverrides): Promise<BigNumber>;
        getDepositTimestamp(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getLpToken(overrides?: CallOverrides): Promise<BigNumber>;
        getToken(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getTokenBalance(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getTokenIndex(tokenAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getVirtualPrice(overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_pooledTokens: PromiseOrValue<string>[], decimals: PromiseOrValue<BigNumberish>[], lpTokenName: PromiseOrValue<string>, lpTokenSymbol: PromiseOrValue<string>, _a: PromiseOrValue<BigNumberish>, _fee: PromiseOrValue<BigNumberish>, _adminFee: PromiseOrValue<BigNumberish>, _depositFee: PromiseOrValue<BigNumberish>, _withdrawFee: PromiseOrValue<BigNumberish>, _devaddr: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        initializeMetaSwap(_pooledTokens: PromiseOrValue<string>[], decimals: PromiseOrValue<BigNumberish>[], lpTokenName: PromiseOrValue<string>, lpTokenSymbol: PromiseOrValue<string>, _a: PromiseOrValue<BigNumberish>, _fee: PromiseOrValue<BigNumberish>, _adminFee: PromiseOrValue<BigNumberish>, _depositFee: PromiseOrValue<BigNumberish>, _withdrawFee: PromiseOrValue<BigNumberish>, _devaddr: PromiseOrValue<string>, baseSwap: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        metaSwapStorage(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        paused(overrides?: CallOverrides): Promise<BigNumber>;
        rampA(futureA: PromiseOrValue<BigNumberish>, futureTime: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        removeLiquidity(amount: PromiseOrValue<BigNumberish>, minAmounts: PromiseOrValue<BigNumberish>[], deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        removeLiquidityImbalance(amounts: PromiseOrValue<BigNumberish>[], maxBurnAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        removeLiquidityOneToken(tokenAmount: PromiseOrValue<BigNumberish>, tokenIndex: PromiseOrValue<BigNumberish>, minAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setAdminFee(newAdminFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setDefaultDepositFee(newDepositFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setDefaultWithdrawFee(newWithdrawFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setDevAddress(_devaddr: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setSwapFee(newSwapFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        stopRampA(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        swap(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, minDy: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        swapStorage(overrides?: CallOverrides): Promise<BigNumber>;
        swapUnderlying(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, minDy: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        updateUserWithdrawFee(recipient: PromiseOrValue<string>, transferAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawAdminFees(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        addLiquidity(amounts: PromiseOrValue<BigNumberish>[], minToMint: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        calculateCurrentWithdrawFee(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        calculateRemoveLiquidity(account: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        calculateRemoveLiquidityOneToken(account: PromiseOrValue<string>, tokenAmount: PromiseOrValue<BigNumberish>, tokenIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        calculateSwap(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        calculateSwapUnderlying(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        calculateTokenAmount(account: PromiseOrValue<string>, amounts: PromiseOrValue<BigNumberish>[], deposit: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getA(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAPrecise(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAdminBalance(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getBalances(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getDepositTimestamp(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getLpToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getToken(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getTokenBalance(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getTokenIndex(tokenAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getVirtualPrice(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(_pooledTokens: PromiseOrValue<string>[], decimals: PromiseOrValue<BigNumberish>[], lpTokenName: PromiseOrValue<string>, lpTokenSymbol: PromiseOrValue<string>, _a: PromiseOrValue<BigNumberish>, _fee: PromiseOrValue<BigNumberish>, _adminFee: PromiseOrValue<BigNumberish>, _depositFee: PromiseOrValue<BigNumberish>, _withdrawFee: PromiseOrValue<BigNumberish>, _devaddr: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        initializeMetaSwap(_pooledTokens: PromiseOrValue<string>[], decimals: PromiseOrValue<BigNumberish>[], lpTokenName: PromiseOrValue<string>, lpTokenSymbol: PromiseOrValue<string>, _a: PromiseOrValue<BigNumberish>, _fee: PromiseOrValue<BigNumberish>, _adminFee: PromiseOrValue<BigNumberish>, _depositFee: PromiseOrValue<BigNumberish>, _withdrawFee: PromiseOrValue<BigNumberish>, _devaddr: PromiseOrValue<string>, baseSwap: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        metaSwapStorage(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        paused(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rampA(futureA: PromiseOrValue<BigNumberish>, futureTime: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        removeLiquidity(amount: PromiseOrValue<BigNumberish>, minAmounts: PromiseOrValue<BigNumberish>[], deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        removeLiquidityImbalance(amounts: PromiseOrValue<BigNumberish>[], maxBurnAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        removeLiquidityOneToken(tokenAmount: PromiseOrValue<BigNumberish>, tokenIndex: PromiseOrValue<BigNumberish>, minAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setAdminFee(newAdminFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setDefaultDepositFee(newDepositFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setDefaultWithdrawFee(newWithdrawFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setDevAddress(_devaddr: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setSwapFee(newSwapFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        stopRampA(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        swap(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, minDy: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        swapStorage(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        swapUnderlying(tokenIndexFrom: PromiseOrValue<BigNumberish>, tokenIndexTo: PromiseOrValue<BigNumberish>, dx: PromiseOrValue<BigNumberish>, minDy: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        updateUserWithdrawFee(recipient: PromiseOrValue<string>, transferAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawAdminFees(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
//# sourceMappingURL=Swap.d.ts.map