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 IBroker0828Interface extends utils.Interface {
    functions: {
        "addExchangeProvider(address,address)": FunctionFragment;
        "burnStableTokens(address,uint256)": FunctionFragment;
        "configureTradingLimit(bytes32,address,(uint32,uint32,int48,int48,int48,uint8))": FunctionFragment;
        "exchangeProviders(uint256)": FunctionFragment;
        "getAmountIn(address,bytes32,address,address,uint256)": FunctionFragment;
        "getAmountOut(address,bytes32,address,address,uint256)": FunctionFragment;
        "getExchangeProviders()": FunctionFragment;
        "initialize(address[],address[])": FunctionFragment;
        "isExchangeProvider(address)": FunctionFragment;
        "removeExchangeProvider(address,uint256)": FunctionFragment;
        "setReserves(address[],address[])": FunctionFragment;
        "swapIn(address,bytes32,address,address,uint256,uint256)": FunctionFragment;
        "swapOut(address,bytes32,address,address,uint256,uint256)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "addExchangeProvider" | "burnStableTokens" | "configureTradingLimit" | "exchangeProviders" | "getAmountIn" | "getAmountOut" | "getExchangeProviders" | "initialize" | "isExchangeProvider" | "removeExchangeProvider" | "setReserves" | "swapIn" | "swapOut"): FunctionFragment;
    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: "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: "isExchangeProvider", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "removeExchangeProvider", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): 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;
    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: "getAmountIn", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAmountOut", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getExchangeProviders", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isExchangeProvider", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "removeExchangeProvider", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setReserves", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "swapIn", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "swapOut", data: BytesLike): Result;
    events: {
        "Swap(address,bytes32,address,address,address,uint256,uint256)": EventFragment;
        "TradingLimitConfigured(bytes32,address,tuple)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "Swap"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TradingLimitConfigured"): EventFragment;
}
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 IBroker0828 extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: IBroker0828Interface;
    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: {
        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(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string] & {
            exchangeProvider: 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>;
        isExchangeProvider(exchangeProvider: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        removeExchangeProvider(exchangeProvider: PromiseOrValue<string>, index: PromiseOrValue<BigNumberish>, 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>;
    };
    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(index: PromiseOrValue<BigNumberish>, 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>;
    isExchangeProvider(exchangeProvider: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    removeExchangeProvider(exchangeProvider: PromiseOrValue<string>, index: PromiseOrValue<BigNumberish>, 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>;
    callStatic: {
        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(index: PromiseOrValue<BigNumberish>, 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>;
        isExchangeProvider(exchangeProvider: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        removeExchangeProvider(exchangeProvider: PromiseOrValue<string>, index: PromiseOrValue<BigNumberish>, 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>;
    };
    filters: {
        "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: {
        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(index: PromiseOrValue<BigNumberish>, 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>;
        isExchangeProvider(exchangeProvider: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        removeExchangeProvider(exchangeProvider: PromiseOrValue<string>, index: PromiseOrValue<BigNumberish>, 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>;
    };
    populateTransaction: {
        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(index: PromiseOrValue<BigNumberish>, 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>;
        isExchangeProvider(exchangeProvider: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        removeExchangeProvider(exchangeProvider: PromiseOrValue<string>, index: PromiseOrValue<BigNumberish>, 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>;
    };
}
