import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, 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 IL2GraphTokenGatewayInterface extends utils.Interface {
    functions: {
        "calculateL2TokenAddress(address)": FunctionFragment;
        "finalizeInboundTransfer(address,address,address,uint256,bytes)": FunctionFragment;
        "getOutboundCalldata(address,address,address,uint256,bytes)": FunctionFragment;
        "initialize(address)": FunctionFragment;
        "outboundTransfer(address,address,uint256,bytes)": FunctionFragment;
        "outboundTransfer(address,address,uint256,uint256,uint256,bytes)": FunctionFragment;
        "setL1CounterpartAddress(address)": FunctionFragment;
        "setL1TokenAddress(address)": FunctionFragment;
        "setL2Router(address)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "calculateL2TokenAddress" | "finalizeInboundTransfer" | "getOutboundCalldata" | "initialize" | "outboundTransfer(address,address,uint256,bytes)" | "outboundTransfer(address,address,uint256,uint256,uint256,bytes)" | "setL1CounterpartAddress" | "setL1TokenAddress" | "setL2Router"): FunctionFragment;
    encodeFunctionData(functionFragment: "calculateL2TokenAddress", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "finalizeInboundTransfer", values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: "getOutboundCalldata", values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: "initialize", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "outboundTransfer(address,address,uint256,bytes)", values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: "outboundTransfer(address,address,uint256,uint256,uint256,bytes)", values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: "setL1CounterpartAddress", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "setL1TokenAddress", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "setL2Router", values: [PromiseOrValue<string>]): string;
    decodeFunctionResult(functionFragment: "calculateL2TokenAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "finalizeInboundTransfer", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getOutboundCalldata", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "outboundTransfer(address,address,uint256,bytes)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "outboundTransfer(address,address,uint256,uint256,uint256,bytes)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setL1CounterpartAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setL1TokenAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setL2Router", data: BytesLike): Result;
    events: {
        "DepositFinalized(address,address,address,uint256)": EventFragment;
        "L1CounterpartAddressSet(address)": EventFragment;
        "L1TokenAddressSet(address)": EventFragment;
        "L2RouterSet(address)": EventFragment;
        "WithdrawalInitiated(address,address,address,uint256,uint256,uint256)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "DepositFinalized"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "L1CounterpartAddressSet"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "L1TokenAddressSet"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "L2RouterSet"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "WithdrawalInitiated"): EventFragment;
}
export interface DepositFinalizedEventObject {
    l1Token: string;
    from: string;
    to: string;
    amount: BigNumber;
}
export type DepositFinalizedEvent = TypedEvent<[
    string,
    string,
    string,
    BigNumber
], DepositFinalizedEventObject>;
export type DepositFinalizedEventFilter = TypedEventFilter<DepositFinalizedEvent>;
export interface L1CounterpartAddressSetEventObject {
    l1Counterpart: string;
}
export type L1CounterpartAddressSetEvent = TypedEvent<[
    string
], L1CounterpartAddressSetEventObject>;
export type L1CounterpartAddressSetEventFilter = TypedEventFilter<L1CounterpartAddressSetEvent>;
export interface L1TokenAddressSetEventObject {
    l1GRT: string;
}
export type L1TokenAddressSetEvent = TypedEvent<[
    string
], L1TokenAddressSetEventObject>;
export type L1TokenAddressSetEventFilter = TypedEventFilter<L1TokenAddressSetEvent>;
export interface L2RouterSetEventObject {
    l2Router: string;
}
export type L2RouterSetEvent = TypedEvent<[string], L2RouterSetEventObject>;
export type L2RouterSetEventFilter = TypedEventFilter<L2RouterSetEvent>;
export interface WithdrawalInitiatedEventObject {
    l1Token: string;
    from: string;
    to: string;
    l2ToL1Id: BigNumber;
    exitNum: BigNumber;
    amount: BigNumber;
}
export type WithdrawalInitiatedEvent = TypedEvent<[
    string,
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber
], WithdrawalInitiatedEventObject>;
export type WithdrawalInitiatedEventFilter = TypedEventFilter<WithdrawalInitiatedEvent>;
export interface IL2GraphTokenGateway extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: IL2GraphTokenGatewayInterface;
    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: {
        calculateL2TokenAddress(l1ERC20: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
        finalizeInboundTransfer(l1Token: PromiseOrValue<string>, from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getOutboundCalldata(token: PromiseOrValue<string>, from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
        initialize(controller: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        "outboundTransfer(address,address,uint256,bytes)"(l1Token: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        "outboundTransfer(address,address,uint256,uint256,uint256,bytes)"(l1Token: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, unused1: PromiseOrValue<BigNumberish>, unused2: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setL1CounterpartAddress(l1Counterpart: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setL1TokenAddress(l1GRT: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setL2Router(l2Router: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    calculateL2TokenAddress(l1ERC20: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    finalizeInboundTransfer(l1Token: PromiseOrValue<string>, from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getOutboundCalldata(token: PromiseOrValue<string>, from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
    initialize(controller: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    "outboundTransfer(address,address,uint256,bytes)"(l1Token: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    "outboundTransfer(address,address,uint256,uint256,uint256,bytes)"(l1Token: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, unused1: PromiseOrValue<BigNumberish>, unused2: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setL1CounterpartAddress(l1Counterpart: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setL1TokenAddress(l1GRT: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setL2Router(l2Router: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        calculateL2TokenAddress(l1ERC20: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        finalizeInboundTransfer(l1Token: PromiseOrValue<string>, from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        getOutboundCalldata(token: PromiseOrValue<string>, from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        initialize(controller: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        "outboundTransfer(address,address,uint256,bytes)"(l1Token: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        "outboundTransfer(address,address,uint256,uint256,uint256,bytes)"(l1Token: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, unused1: PromiseOrValue<BigNumberish>, unused2: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        setL1CounterpartAddress(l1Counterpart: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setL1TokenAddress(l1GRT: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setL2Router(l2Router: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "DepositFinalized(address,address,address,uint256)"(l1Token?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, amount?: null): DepositFinalizedEventFilter;
        DepositFinalized(l1Token?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, amount?: null): DepositFinalizedEventFilter;
        "L1CounterpartAddressSet(address)"(l1Counterpart?: null): L1CounterpartAddressSetEventFilter;
        L1CounterpartAddressSet(l1Counterpart?: null): L1CounterpartAddressSetEventFilter;
        "L1TokenAddressSet(address)"(l1GRT?: null): L1TokenAddressSetEventFilter;
        L1TokenAddressSet(l1GRT?: null): L1TokenAddressSetEventFilter;
        "L2RouterSet(address)"(l2Router?: null): L2RouterSetEventFilter;
        L2RouterSet(l2Router?: null): L2RouterSetEventFilter;
        "WithdrawalInitiated(address,address,address,uint256,uint256,uint256)"(l1Token?: null, from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, l2ToL1Id?: PromiseOrValue<BigNumberish> | null, exitNum?: null, amount?: null): WithdrawalInitiatedEventFilter;
        WithdrawalInitiated(l1Token?: null, from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, l2ToL1Id?: PromiseOrValue<BigNumberish> | null, exitNum?: null, amount?: null): WithdrawalInitiatedEventFilter;
    };
    estimateGas: {
        calculateL2TokenAddress(l1ERC20: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        finalizeInboundTransfer(l1Token: PromiseOrValue<string>, from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getOutboundCalldata(token: PromiseOrValue<string>, from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        initialize(controller: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        "outboundTransfer(address,address,uint256,bytes)"(l1Token: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        "outboundTransfer(address,address,uint256,uint256,uint256,bytes)"(l1Token: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, unused1: PromiseOrValue<BigNumberish>, unused2: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setL1CounterpartAddress(l1Counterpart: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setL1TokenAddress(l1GRT: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setL2Router(l2Router: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        calculateL2TokenAddress(l1ERC20: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        finalizeInboundTransfer(l1Token: PromiseOrValue<string>, from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getOutboundCalldata(token: PromiseOrValue<string>, from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(controller: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        "outboundTransfer(address,address,uint256,bytes)"(l1Token: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        "outboundTransfer(address,address,uint256,uint256,uint256,bytes)"(l1Token: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, unused1: PromiseOrValue<BigNumberish>, unused2: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setL1CounterpartAddress(l1Counterpart: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setL1TokenAddress(l1GRT: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setL2Router(l2Router: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
//# sourceMappingURL=IL2GraphTokenGateway.d.ts.map