import type { BaseContract, BytesLike, FunctionFragment, Result, Interface, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers";
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener, TypedContractMethod } from "../../../common";
export interface FxBaseRootTunnelInterface extends Interface {
    getFunction(nameOrSignature: "SEND_MESSAGE_EVENT_SIG" | "checkpointManager" | "fxChildTunnel" | "fxRoot" | "processedExits" | "receiveMessage" | "setFxChildTunnel"): FunctionFragment;
    encodeFunctionData(functionFragment: "SEND_MESSAGE_EVENT_SIG", values?: undefined): string;
    encodeFunctionData(functionFragment: "checkpointManager", values?: undefined): string;
    encodeFunctionData(functionFragment: "fxChildTunnel", values?: undefined): string;
    encodeFunctionData(functionFragment: "fxRoot", values?: undefined): string;
    encodeFunctionData(functionFragment: "processedExits", values: [BytesLike]): string;
    encodeFunctionData(functionFragment: "receiveMessage", values: [BytesLike]): string;
    encodeFunctionData(functionFragment: "setFxChildTunnel", values: [AddressLike]): string;
    decodeFunctionResult(functionFragment: "SEND_MESSAGE_EVENT_SIG", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "checkpointManager", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "fxChildTunnel", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "fxRoot", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "processedExits", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "receiveMessage", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setFxChildTunnel", data: BytesLike): Result;
}
export interface FxBaseRootTunnel extends BaseContract {
    connect(runner?: ContractRunner | null): FxBaseRootTunnel;
    waitForDeployment(): Promise<this>;
    interface: FxBaseRootTunnelInterface;
    queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    on<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
    listeners(eventName?: string): Promise<Array<Listener>>;
    removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
    SEND_MESSAGE_EVENT_SIG: TypedContractMethod<[], [string], "view">;
    checkpointManager: TypedContractMethod<[], [string], "view">;
    fxChildTunnel: TypedContractMethod<[], [string], "view">;
    fxRoot: TypedContractMethod<[], [string], "view">;
    processedExits: TypedContractMethod<[arg0: BytesLike], [boolean], "view">;
    receiveMessage: TypedContractMethod<[
        inputData: BytesLike
    ], [
        void
    ], "nonpayable">;
    setFxChildTunnel: TypedContractMethod<[
        _fxChildTunnel: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
    getFunction(nameOrSignature: "SEND_MESSAGE_EVENT_SIG"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "checkpointManager"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "fxChildTunnel"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "fxRoot"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "processedExits"): TypedContractMethod<[arg0: BytesLike], [boolean], "view">;
    getFunction(nameOrSignature: "receiveMessage"): TypedContractMethod<[inputData: BytesLike], [void], "nonpayable">;
    getFunction(nameOrSignature: "setFxChildTunnel"): TypedContractMethod<[_fxChildTunnel: AddressLike], [void], "nonpayable">;
    filters: {};
}
