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 declare namespace ITradingLimits {
    type ConfigStruct = {
        timestep0: PromiseOrValue<BigNumberish>;
        timestep1: PromiseOrValue<BigNumberish>;
        limit0: PromiseOrValue<BigNumberish>;
        limit1: PromiseOrValue<BigNumberish>;
        limitGlobal: PromiseOrValue<BigNumberish>;
        flags: PromiseOrValue<BigNumberish>;
    };
    type ConfigStructOutput = [
        number,
        number,
        number,
        number,
        number,
        number
    ] & {
        timestep0: number;
        timestep1: number;
        limit0: number;
        limit1: number;
        limitGlobal: number;
        flags: number;
    };
}
export interface BrokerInterface extends utils.Interface {
    functions: {
        "__deprecated0()": FunctionFragment;
        "addExchangeProvider(address,address)": FunctionFragment;
        "burnStableTokens(address,uint256)": FunctionFragment;
        "configureTradingLimit(bytes32,address,(uint32,uint32,int48,int48,int48,uint8))": FunctionFragment;
        "exchangeProviders(uint256)": FunctionFragment;
        "exchangeReserve(address)": FunctionFragment;
        "getAmountIn(address,bytes32,address,address,uint256)": FunctionFragment;
        "getAmountOut(address,bytes32,address,address,uint256)": FunctionFragment;
        "getExchangeProviders()": FunctionFragment;
        "initialize(address[],address[])": FunctionFragment;
        "initialized()": FunctionFragment;
        "isExchangeProvider(address)": FunctionFragment;
        "owner()": FunctionFragment;
        "removeExchangeProvider(address,uint256)": FunctionFragment;
        "renounceOwnership()": FunctionFragment;
        "setReserves(address[],address[])": FunctionFragment;
        "swapIn(address,bytes32,address,address,uint256,uint256)": FunctionFragment;
        "swapOut(address,bytes32,address,address,uint256,uint256)": FunctionFragment;
        "tradingLimitsConfig(bytes32)": FunctionFragment;
        "tradingLimitsState(bytes32)": FunctionFragment;
        "transferOwnership(address)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "__deprecated0" | "addExchangeProvider" | "burnStableTokens" | "configureTradingLimit" | "exchangeProviders" | "exchangeReserve" | "getAmountIn" | "getAmountOut" | "getExchangeProviders" | "initialize" | "initialized" | "isExchangeProvider" | "owner" | "removeExchangeProvider" | "renounceOwnership" | "setReserves" | "swapIn" | "swapOut" | "tradingLimitsConfig" | "tradingLimitsState" | "transferOwnership"): FunctionFragment;
    encodeFunctionData(functionFragment: "__deprecated0", values?: undefined): string;
    encodeFunctionData(functionFragment: "addExchangeProvider", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "burnStableTokens", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "configureTradingLimit", values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<string>,
        ITradingLimits.ConfigStruct
    ]): string;
    encodeFunctionData(functionFragment: "exchangeProviders", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "exchangeReserve", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "getAmountIn", values: [
        PromiseOrValue<string>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "getAmountOut", values: [
        PromiseOrValue<string>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "getExchangeProviders", values?: undefined): string;
    encodeFunctionData(functionFragment: "initialize", values: [PromiseOrValue<string>[], PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: "initialized", values?: undefined): string;
    encodeFunctionData(functionFragment: "isExchangeProvider", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "removeExchangeProvider", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "renounceOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "setReserves", values: [PromiseOrValue<string>[], PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: "swapIn", values: [
        PromiseOrValue<string>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "swapOut", values: [
        PromiseOrValue<string>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "tradingLimitsConfig", values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "tradingLimitsState", values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "transferOwnership", values: [PromiseOrValue<string>]): string;
    decodeFunctionResult(functionFragment: "__deprecated0", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "addExchangeProvider", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "burnStableTokens", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "configureTradingLimit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "exchangeProviders", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "exchangeReserve", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAmountIn", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAmountOut", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getExchangeProviders", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialized", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isExchangeProvider", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "removeExchangeProvider", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setReserves", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "swapIn", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "swapOut", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "tradingLimitsConfig", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "tradingLimitsState", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
    events: {
        "ExchangeProviderAdded(address)": EventFragment;
        "ExchangeProviderRemoved(address)": EventFragment;
        "OwnershipTransferred(address,address)": EventFragment;
        "ReserveSet(address,address)": EventFragment;
        "Swap(address,bytes32,address,address,address,uint256,uint256)": EventFragment;
        "TradingLimitConfigured(bytes32,address,tuple)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "ExchangeProviderAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ExchangeProviderRemoved"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ReserveSet"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Swap"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TradingLimitConfigured"): EventFragment;
}
export interface ExchangeProviderAddedEventObject {
    exchangeProvider: string;
}
export type ExchangeProviderAddedEvent = TypedEvent<[
    string
], ExchangeProviderAddedEventObject>;
export type ExchangeProviderAddedEventFilter = TypedEventFilter<ExchangeProviderAddedEvent>;
export interface ExchangeProviderRemovedEventObject {
    exchangeProvider: string;
}
export type ExchangeProviderRemovedEvent = TypedEvent<[
    string
], ExchangeProviderRemovedEventObject>;
export type ExchangeProviderRemovedEventFilter = TypedEventFilter<ExchangeProviderRemovedEvent>;
export interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
export type OwnershipTransferredEvent = TypedEvent<[
    string,
    string
], OwnershipTransferredEventObject>;
export type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface ReserveSetEventObject {
    newAddress: string;
    prevAddress: string;
}
export type ReserveSetEvent = TypedEvent<[
    string,
    string
], ReserveSetEventObject>;
export type ReserveSetEventFilter = TypedEventFilter<ReserveSetEvent>;
export interface SwapEventObject {
    exchangeProvider: string;
    exchangeId: string;
    trader: string;
    tokenIn: string;
    tokenOut: string;
    amountIn: BigNumber;
    amountOut: BigNumber;
}
export type SwapEvent = TypedEvent<[
    string,
    string,
    string,
    string,
    string,
    BigNumber,
    BigNumber
], SwapEventObject>;
export type SwapEventFilter = TypedEventFilter<SwapEvent>;
export interface TradingLimitConfiguredEventObject {
    exchangeId: string;
    token: string;
    config: ITradingLimits.ConfigStructOutput;
}
export type TradingLimitConfiguredEvent = TypedEvent<[
    string,
    string,
    ITradingLimits.ConfigStructOutput
], TradingLimitConfiguredEventObject>;
export type TradingLimitConfiguredEventFilter = TypedEventFilter<TradingLimitConfiguredEvent>;
export interface Broker extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: BrokerInterface;
    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: {
        __deprecated0(overrides?: CallOverrides): Promise<[BigNumber]>;
        addExchangeProvider(exchangeProvider: PromiseOrValue<string>, reserve: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        burnStableTokens(token: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        configureTradingLimit(exchangeId: PromiseOrValue<BytesLike>, token: PromiseOrValue<string>, config: ITradingLimits.ConfigStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        exchangeProviders(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        exchangeReserve(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
        getAmountIn(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountOut: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            amountIn: BigNumber;
        }>;
        getAmountOut(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountIn: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            amountOut: BigNumber;
        }>;
        getExchangeProviders(overrides?: CallOverrides): Promise<[string[]]>;
        initialize(_exchangeProviders: PromiseOrValue<string>[], _reserves: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        initialized(overrides?: CallOverrides): Promise<[boolean]>;
        isExchangeProvider(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        removeExchangeProvider(exchangeProvider: PromiseOrValue<string>, index: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setReserves(_exchangeProviders: PromiseOrValue<string>[], _reserves: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        swapIn(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountIn: PromiseOrValue<BigNumberish>, amountOutMin: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        swapOut(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountOut: PromiseOrValue<BigNumberish>, amountInMax: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        tradingLimitsConfig(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[
            number,
            number,
            number,
            number,
            number,
            number
        ] & {
            timestep0: number;
            timestep1: number;
            limit0: number;
            limit1: number;
            limitGlobal: number;
            flags: number;
        }>;
        tradingLimitsState(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[
            number,
            number,
            number,
            number,
            number
        ] & {
            lastUpdated0: number;
            lastUpdated1: number;
            netflow0: number;
            netflow1: number;
            netflowGlobal: number;
        }>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    __deprecated0(overrides?: CallOverrides): Promise<BigNumber>;
    addExchangeProvider(exchangeProvider: PromiseOrValue<string>, reserve: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    burnStableTokens(token: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    configureTradingLimit(exchangeId: PromiseOrValue<BytesLike>, token: PromiseOrValue<string>, config: ITradingLimits.ConfigStruct, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    exchangeProviders(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    exchangeReserve(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    getAmountIn(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountOut: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getAmountOut(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountIn: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getExchangeProviders(overrides?: CallOverrides): Promise<string[]>;
    initialize(_exchangeProviders: PromiseOrValue<string>[], _reserves: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    initialized(overrides?: CallOverrides): Promise<boolean>;
    isExchangeProvider(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    owner(overrides?: CallOverrides): Promise<string>;
    removeExchangeProvider(exchangeProvider: PromiseOrValue<string>, index: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    renounceOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setReserves(_exchangeProviders: PromiseOrValue<string>[], _reserves: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    swapIn(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountIn: PromiseOrValue<BigNumberish>, amountOutMin: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    swapOut(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountOut: PromiseOrValue<BigNumberish>, amountInMax: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    tradingLimitsConfig(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[
        number,
        number,
        number,
        number,
        number,
        number
    ] & {
        timestep0: number;
        timestep1: number;
        limit0: number;
        limit1: number;
        limitGlobal: number;
        flags: number;
    }>;
    tradingLimitsState(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[
        number,
        number,
        number,
        number,
        number
    ] & {
        lastUpdated0: number;
        lastUpdated1: number;
        netflow0: number;
        netflow1: number;
        netflowGlobal: number;
    }>;
    transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        __deprecated0(overrides?: CallOverrides): Promise<BigNumber>;
        addExchangeProvider(exchangeProvider: PromiseOrValue<string>, reserve: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        burnStableTokens(token: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        configureTradingLimit(exchangeId: PromiseOrValue<BytesLike>, token: PromiseOrValue<string>, config: ITradingLimits.ConfigStruct, overrides?: CallOverrides): Promise<void>;
        exchangeProviders(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        exchangeReserve(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        getAmountIn(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountOut: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getAmountOut(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountIn: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getExchangeProviders(overrides?: CallOverrides): Promise<string[]>;
        initialize(_exchangeProviders: PromiseOrValue<string>[], _reserves: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        initialized(overrides?: CallOverrides): Promise<boolean>;
        isExchangeProvider(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        owner(overrides?: CallOverrides): Promise<string>;
        removeExchangeProvider(exchangeProvider: PromiseOrValue<string>, index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        setReserves(_exchangeProviders: PromiseOrValue<string>[], _reserves: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        swapIn(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountIn: PromiseOrValue<BigNumberish>, amountOutMin: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        swapOut(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountOut: PromiseOrValue<BigNumberish>, amountInMax: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        tradingLimitsConfig(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[
            number,
            number,
            number,
            number,
            number,
            number
        ] & {
            timestep0: number;
            timestep1: number;
            limit0: number;
            limit1: number;
            limitGlobal: number;
            flags: number;
        }>;
        tradingLimitsState(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[
            number,
            number,
            number,
            number,
            number
        ] & {
            lastUpdated0: number;
            lastUpdated1: number;
            netflow0: number;
            netflow1: number;
            netflowGlobal: number;
        }>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "ExchangeProviderAdded(address)"(exchangeProvider?: PromiseOrValue<string> | null): ExchangeProviderAddedEventFilter;
        ExchangeProviderAdded(exchangeProvider?: PromiseOrValue<string> | null): ExchangeProviderAddedEventFilter;
        "ExchangeProviderRemoved(address)"(exchangeProvider?: PromiseOrValue<string> | null): ExchangeProviderRemovedEventFilter;
        ExchangeProviderRemoved(exchangeProvider?: PromiseOrValue<string> | null): ExchangeProviderRemovedEventFilter;
        "OwnershipTransferred(address,address)"(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        "ReserveSet(address,address)"(newAddress?: PromiseOrValue<string> | null, prevAddress?: PromiseOrValue<string> | null): ReserveSetEventFilter;
        ReserveSet(newAddress?: PromiseOrValue<string> | null, prevAddress?: PromiseOrValue<string> | null): ReserveSetEventFilter;
        "Swap(address,bytes32,address,address,address,uint256,uint256)"(exchangeProvider?: null, exchangeId?: PromiseOrValue<BytesLike> | null, trader?: PromiseOrValue<string> | null, tokenIn?: PromiseOrValue<string> | null, tokenOut?: null, amountIn?: null, amountOut?: null): SwapEventFilter;
        Swap(exchangeProvider?: null, exchangeId?: PromiseOrValue<BytesLike> | null, trader?: PromiseOrValue<string> | null, tokenIn?: PromiseOrValue<string> | null, tokenOut?: null, amountIn?: null, amountOut?: null): SwapEventFilter;
        "TradingLimitConfigured(bytes32,address,tuple)"(exchangeId?: null, token?: null, config?: null): TradingLimitConfiguredEventFilter;
        TradingLimitConfigured(exchangeId?: null, token?: null, config?: null): TradingLimitConfiguredEventFilter;
    };
    estimateGas: {
        __deprecated0(overrides?: CallOverrides): Promise<BigNumber>;
        addExchangeProvider(exchangeProvider: PromiseOrValue<string>, reserve: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        burnStableTokens(token: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        configureTradingLimit(exchangeId: PromiseOrValue<BytesLike>, token: PromiseOrValue<string>, config: ITradingLimits.ConfigStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        exchangeProviders(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        exchangeReserve(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getAmountIn(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountOut: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getAmountOut(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountIn: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getExchangeProviders(overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_exchangeProviders: PromiseOrValue<string>[], _reserves: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        initialized(overrides?: CallOverrides): Promise<BigNumber>;
        isExchangeProvider(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        removeExchangeProvider(exchangeProvider: PromiseOrValue<string>, index: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setReserves(_exchangeProviders: PromiseOrValue<string>[], _reserves: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        swapIn(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountIn: PromiseOrValue<BigNumberish>, amountOutMin: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        swapOut(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountOut: PromiseOrValue<BigNumberish>, amountInMax: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        tradingLimitsConfig(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        tradingLimitsState(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        __deprecated0(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        addExchangeProvider(exchangeProvider: PromiseOrValue<string>, reserve: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        burnStableTokens(token: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        configureTradingLimit(exchangeId: PromiseOrValue<BytesLike>, token: PromiseOrValue<string>, config: ITradingLimits.ConfigStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        exchangeProviders(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        exchangeReserve(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAmountIn(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountOut: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAmountOut(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountIn: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getExchangeProviders(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(_exchangeProviders: PromiseOrValue<string>[], _reserves: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        initialized(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isExchangeProvider(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        removeExchangeProvider(exchangeProvider: PromiseOrValue<string>, index: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setReserves(_exchangeProviders: PromiseOrValue<string>[], _reserves: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        swapIn(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountIn: PromiseOrValue<BigNumberish>, amountOutMin: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        swapOut(exchangeProvider: PromiseOrValue<string>, exchangeId: PromiseOrValue<BytesLike>, tokenIn: PromiseOrValue<string>, tokenOut: PromiseOrValue<string>, amountOut: PromiseOrValue<BigNumberish>, amountInMax: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        tradingLimitsConfig(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        tradingLimitsState(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
