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 } from "../../../../common";
export interface IMessagingChannelInterface extends utils.Interface {
    functions: {
        "burn(address,uint32,bytes32,uint64,bytes32)": FunctionFragment;
        "eid()": FunctionFragment;
        "inboundNonce(address,uint32,bytes32)": FunctionFragment;
        "inboundPayloadHash(address,uint32,bytes32,uint64)": FunctionFragment;
        "lazyInboundNonce(address,uint32,bytes32)": FunctionFragment;
        "nextGuid(address,uint32,bytes32)": FunctionFragment;
        "nilify(address,uint32,bytes32,uint64,bytes32)": FunctionFragment;
        "outboundNonce(address,uint32,bytes32)": FunctionFragment;
        "skip(address,uint32,bytes32,uint64)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "burn" | "eid" | "inboundNonce" | "inboundPayloadHash" | "lazyInboundNonce" | "nextGuid" | "nilify" | "outboundNonce" | "skip"): FunctionFragment;
    encodeFunctionData(functionFragment: "burn", values: [string, BigNumberish, BytesLike, BigNumberish, BytesLike]): string;
    encodeFunctionData(functionFragment: "eid", values?: undefined): string;
    encodeFunctionData(functionFragment: "inboundNonce", values: [string, BigNumberish, BytesLike]): string;
    encodeFunctionData(functionFragment: "inboundPayloadHash", values: [string, BigNumberish, BytesLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "lazyInboundNonce", values: [string, BigNumberish, BytesLike]): string;
    encodeFunctionData(functionFragment: "nextGuid", values: [string, BigNumberish, BytesLike]): string;
    encodeFunctionData(functionFragment: "nilify", values: [string, BigNumberish, BytesLike, BigNumberish, BytesLike]): string;
    encodeFunctionData(functionFragment: "outboundNonce", values: [string, BigNumberish, BytesLike]): string;
    encodeFunctionData(functionFragment: "skip", values: [string, BigNumberish, BytesLike, BigNumberish]): string;
    decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "eid", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "inboundNonce", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "inboundPayloadHash", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lazyInboundNonce", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "nextGuid", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "nilify", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "outboundNonce", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "skip", data: BytesLike): Result;
    events: {
        "InboundNonceSkipped(uint32,bytes32,address,uint64)": EventFragment;
        "PacketBurnt(uint32,bytes32,address,uint64,bytes32)": EventFragment;
        "PacketNilified(uint32,bytes32,address,uint64,bytes32)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "InboundNonceSkipped"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "PacketBurnt"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "PacketNilified"): EventFragment;
}
export interface InboundNonceSkippedEventObject {
    srcEid: number;
    sender: string;
    receiver: string;
    nonce: BigNumber;
}
export type InboundNonceSkippedEvent = TypedEvent<[
    number,
    string,
    string,
    BigNumber
], InboundNonceSkippedEventObject>;
export type InboundNonceSkippedEventFilter = TypedEventFilter<InboundNonceSkippedEvent>;
export interface PacketBurntEventObject {
    srcEid: number;
    sender: string;
    receiver: string;
    nonce: BigNumber;
    payloadHash: string;
}
export type PacketBurntEvent = TypedEvent<[
    number,
    string,
    string,
    BigNumber,
    string
], PacketBurntEventObject>;
export type PacketBurntEventFilter = TypedEventFilter<PacketBurntEvent>;
export interface PacketNilifiedEventObject {
    srcEid: number;
    sender: string;
    receiver: string;
    nonce: BigNumber;
    payloadHash: string;
}
export type PacketNilifiedEvent = TypedEvent<[
    number,
    string,
    string,
    BigNumber,
    string
], PacketNilifiedEventObject>;
export type PacketNilifiedEventFilter = TypedEventFilter<PacketNilifiedEvent>;
export interface IMessagingChannel extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: IMessagingChannelInterface;
    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: {
        burn(_oapp: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, _payloadHash: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        eid(overrides?: CallOverrides): Promise<[number]>;
        inboundNonce(_receiver: string, _srcEid: BigNumberish, _sender: BytesLike, overrides?: CallOverrides): Promise<[BigNumber]>;
        inboundPayloadHash(_receiver: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
        lazyInboundNonce(_receiver: string, _srcEid: BigNumberish, _sender: BytesLike, overrides?: CallOverrides): Promise<[BigNumber]>;
        nextGuid(_sender: string, _dstEid: BigNumberish, _receiver: BytesLike, overrides?: CallOverrides): Promise<[string]>;
        nilify(_oapp: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, _payloadHash: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        outboundNonce(_sender: string, _dstEid: BigNumberish, _receiver: BytesLike, overrides?: CallOverrides): Promise<[BigNumber]>;
        skip(_oapp: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
    };
    burn(_oapp: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, _payloadHash: BytesLike, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    eid(overrides?: CallOverrides): Promise<number>;
    inboundNonce(_receiver: string, _srcEid: BigNumberish, _sender: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
    inboundPayloadHash(_receiver: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, overrides?: CallOverrides): Promise<string>;
    lazyInboundNonce(_receiver: string, _srcEid: BigNumberish, _sender: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
    nextGuid(_sender: string, _dstEid: BigNumberish, _receiver: BytesLike, overrides?: CallOverrides): Promise<string>;
    nilify(_oapp: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, _payloadHash: BytesLike, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    outboundNonce(_sender: string, _dstEid: BigNumberish, _receiver: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
    skip(_oapp: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    callStatic: {
        burn(_oapp: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, _payloadHash: BytesLike, overrides?: CallOverrides): Promise<void>;
        eid(overrides?: CallOverrides): Promise<number>;
        inboundNonce(_receiver: string, _srcEid: BigNumberish, _sender: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        inboundPayloadHash(_receiver: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, overrides?: CallOverrides): Promise<string>;
        lazyInboundNonce(_receiver: string, _srcEid: BigNumberish, _sender: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        nextGuid(_sender: string, _dstEid: BigNumberish, _receiver: BytesLike, overrides?: CallOverrides): Promise<string>;
        nilify(_oapp: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, _payloadHash: BytesLike, overrides?: CallOverrides): Promise<void>;
        outboundNonce(_sender: string, _dstEid: BigNumberish, _receiver: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        skip(_oapp: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "InboundNonceSkipped(uint32,bytes32,address,uint64)"(srcEid?: null, sender?: null, receiver?: null, nonce?: null): InboundNonceSkippedEventFilter;
        InboundNonceSkipped(srcEid?: null, sender?: null, receiver?: null, nonce?: null): InboundNonceSkippedEventFilter;
        "PacketBurnt(uint32,bytes32,address,uint64,bytes32)"(srcEid?: null, sender?: null, receiver?: null, nonce?: null, payloadHash?: null): PacketBurntEventFilter;
        PacketBurnt(srcEid?: null, sender?: null, receiver?: null, nonce?: null, payloadHash?: null): PacketBurntEventFilter;
        "PacketNilified(uint32,bytes32,address,uint64,bytes32)"(srcEid?: null, sender?: null, receiver?: null, nonce?: null, payloadHash?: null): PacketNilifiedEventFilter;
        PacketNilified(srcEid?: null, sender?: null, receiver?: null, nonce?: null, payloadHash?: null): PacketNilifiedEventFilter;
    };
    estimateGas: {
        burn(_oapp: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, _payloadHash: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        eid(overrides?: CallOverrides): Promise<BigNumber>;
        inboundNonce(_receiver: string, _srcEid: BigNumberish, _sender: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        inboundPayloadHash(_receiver: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        lazyInboundNonce(_receiver: string, _srcEid: BigNumberish, _sender: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        nextGuid(_sender: string, _dstEid: BigNumberish, _receiver: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        nilify(_oapp: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, _payloadHash: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        outboundNonce(_sender: string, _dstEid: BigNumberish, _receiver: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        skip(_oapp: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        burn(_oapp: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, _payloadHash: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        eid(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        inboundNonce(_receiver: string, _srcEid: BigNumberish, _sender: BytesLike, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        inboundPayloadHash(_receiver: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lazyInboundNonce(_receiver: string, _srcEid: BigNumberish, _sender: BytesLike, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        nextGuid(_sender: string, _dstEid: BigNumberish, _receiver: BytesLike, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        nilify(_oapp: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, _payloadHash: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        outboundNonce(_sender: string, _dstEid: BigNumberish, _receiver: BytesLike, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        skip(_oapp: string, _srcEid: BigNumberish, _sender: BytesLike, _nonce: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
    };
}
