/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
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,
} from "../../../../common";

export type OriginStruct = {
  srcEid: BigNumberish;
  sender: BytesLike;
  nonce: BigNumberish;
};

export type OriginStructOutput = [number, string, BigNumber] & {
  srcEid: number;
  sender: string;
  nonce: BigNumber;
};

export type MessagingParamsStruct = {
  dstEid: BigNumberish;
  receiver: BytesLike;
  message: BytesLike;
  options: BytesLike;
  payInLzToken: boolean;
};

export type MessagingParamsStructOutput = [
  number,
  string,
  string,
  string,
  boolean
] & {
  dstEid: number;
  receiver: string;
  message: string;
  options: string;
  payInLzToken: boolean;
};

export type MessagingFeeStruct = {
  nativeFee: BigNumberish;
  lzTokenFee: BigNumberish;
};

export type MessagingFeeStructOutput = [BigNumber, BigNumber] & {
  nativeFee: BigNumber;
  lzTokenFee: BigNumber;
};

export type MessagingReceiptStruct = {
  guid: BytesLike;
  nonce: BigNumberish;
  fee: MessagingFeeStruct;
};

export type MessagingReceiptStructOutput = [
  string,
  BigNumber,
  MessagingFeeStructOutput
] & { guid: string; nonce: BigNumber; fee: MessagingFeeStructOutput };

export type SetConfigParamStruct = {
  eid: BigNumberish;
  configType: BigNumberish;
  config: BytesLike;
};

export type SetConfigParamStructOutput = [number, number, string] & {
  eid: number;
  configType: number;
  config: string;
};

export interface ILayerZeroEndpointV2Interface extends utils.Interface {
  functions: {
    "burn(address,uint32,bytes32,uint64,bytes32)": FunctionFragment;
    "clear(address,(uint32,bytes32,uint64),bytes32,bytes)": FunctionFragment;
    "composeQueue(address,address,bytes32,uint16)": FunctionFragment;
    "defaultReceiveLibrary(uint32)": FunctionFragment;
    "defaultReceiveLibraryTimeout(uint32)": FunctionFragment;
    "defaultSendLibrary(uint32)": FunctionFragment;
    "eid()": FunctionFragment;
    "getConfig(address,address,uint32,uint32)": FunctionFragment;
    "getReceiveLibrary(address,uint32)": FunctionFragment;
    "getRegisteredLibraries()": FunctionFragment;
    "getSendContext()": FunctionFragment;
    "getSendLibrary(address,uint32)": FunctionFragment;
    "inboundNonce(address,uint32,bytes32)": FunctionFragment;
    "inboundPayloadHash(address,uint32,bytes32,uint64)": FunctionFragment;
    "initializable((uint32,bytes32,uint64),address)": FunctionFragment;
    "isDefaultSendLibrary(address,uint32)": FunctionFragment;
    "isRegisteredLibrary(address)": FunctionFragment;
    "isSendingMessage()": FunctionFragment;
    "isSupportedEid(uint32)": FunctionFragment;
    "isValidReceiveLibrary(address,uint32,address)": FunctionFragment;
    "lazyInboundNonce(address,uint32,bytes32)": FunctionFragment;
    "lzCompose(address,address,bytes32,uint16,bytes,bytes)": FunctionFragment;
    "lzReceive((uint32,bytes32,uint64),address,bytes32,bytes,bytes)": FunctionFragment;
    "lzToken()": FunctionFragment;
    "nativeToken()": FunctionFragment;
    "nextGuid(address,uint32,bytes32)": FunctionFragment;
    "nilify(address,uint32,bytes32,uint64,bytes32)": FunctionFragment;
    "outboundNonce(address,uint32,bytes32)": FunctionFragment;
    "quote((uint32,bytes32,bytes,bytes,bool),address)": FunctionFragment;
    "receiveLibraryTimeout(address,uint32)": FunctionFragment;
    "registerLibrary(address)": FunctionFragment;
    "send((uint32,bytes32,bytes,bytes,bool),address)": FunctionFragment;
    "sendCompose(address,bytes32,uint16,bytes)": FunctionFragment;
    "setConfig(address,address,(uint32,uint32,bytes)[])": FunctionFragment;
    "setDefaultReceiveLibrary(uint32,address,uint256)": FunctionFragment;
    "setDefaultReceiveLibraryTimeout(uint32,address,uint256)": FunctionFragment;
    "setDefaultSendLibrary(uint32,address)": FunctionFragment;
    "setDelegate(address)": FunctionFragment;
    "setLzToken(address)": FunctionFragment;
    "setReceiveLibrary(address,uint32,address,uint256)": FunctionFragment;
    "setReceiveLibraryTimeout(address,uint32,address,uint256)": FunctionFragment;
    "setSendLibrary(address,uint32,address)": FunctionFragment;
    "skip(address,uint32,bytes32,uint64)": FunctionFragment;
    "verifiable((uint32,bytes32,uint64),address)": FunctionFragment;
    "verify((uint32,bytes32,uint64),address,bytes32)": FunctionFragment;
  };

  getFunction(
    nameOrSignatureOrTopic:
      | "burn"
      | "clear"
      | "composeQueue"
      | "defaultReceiveLibrary"
      | "defaultReceiveLibraryTimeout"
      | "defaultSendLibrary"
      | "eid"
      | "getConfig"
      | "getReceiveLibrary"
      | "getRegisteredLibraries"
      | "getSendContext"
      | "getSendLibrary"
      | "inboundNonce"
      | "inboundPayloadHash"
      | "initializable"
      | "isDefaultSendLibrary"
      | "isRegisteredLibrary"
      | "isSendingMessage"
      | "isSupportedEid"
      | "isValidReceiveLibrary"
      | "lazyInboundNonce"
      | "lzCompose"
      | "lzReceive"
      | "lzToken"
      | "nativeToken"
      | "nextGuid"
      | "nilify"
      | "outboundNonce"
      | "quote"
      | "receiveLibraryTimeout"
      | "registerLibrary"
      | "send"
      | "sendCompose"
      | "setConfig"
      | "setDefaultReceiveLibrary"
      | "setDefaultReceiveLibraryTimeout"
      | "setDefaultSendLibrary"
      | "setDelegate"
      | "setLzToken"
      | "setReceiveLibrary"
      | "setReceiveLibraryTimeout"
      | "setSendLibrary"
      | "skip"
      | "verifiable"
      | "verify"
  ): FunctionFragment;

  encodeFunctionData(
    functionFragment: "burn",
    values: [string, BigNumberish, BytesLike, BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "clear",
    values: [string, OriginStruct, BytesLike, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "composeQueue",
    values: [string, string, BytesLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "defaultReceiveLibrary",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "defaultReceiveLibraryTimeout",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "defaultSendLibrary",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "eid", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "getConfig",
    values: [string, string, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getReceiveLibrary",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getRegisteredLibraries",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getSendContext",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getSendLibrary",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "inboundNonce",
    values: [string, BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "inboundPayloadHash",
    values: [string, BigNumberish, BytesLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "initializable",
    values: [OriginStruct, string]
  ): string;
  encodeFunctionData(
    functionFragment: "isDefaultSendLibrary",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isRegisteredLibrary",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "isSendingMessage",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "isSupportedEid",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isValidReceiveLibrary",
    values: [string, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "lazyInboundNonce",
    values: [string, BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "lzCompose",
    values: [string, string, BytesLike, BigNumberish, BytesLike, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "lzReceive",
    values: [OriginStruct, string, BytesLike, BytesLike, BytesLike]
  ): string;
  encodeFunctionData(functionFragment: "lzToken", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "nativeToken",
    values?: undefined
  ): 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: "quote",
    values: [MessagingParamsStruct, string]
  ): string;
  encodeFunctionData(
    functionFragment: "receiveLibraryTimeout",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "registerLibrary",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "send",
    values: [MessagingParamsStruct, string]
  ): string;
  encodeFunctionData(
    functionFragment: "sendCompose",
    values: [string, BytesLike, BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setConfig",
    values: [string, string, SetConfigParamStruct[]]
  ): string;
  encodeFunctionData(
    functionFragment: "setDefaultReceiveLibrary",
    values: [BigNumberish, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setDefaultReceiveLibraryTimeout",
    values: [BigNumberish, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setDefaultSendLibrary",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(functionFragment: "setDelegate", values: [string]): string;
  encodeFunctionData(functionFragment: "setLzToken", values: [string]): string;
  encodeFunctionData(
    functionFragment: "setReceiveLibrary",
    values: [string, BigNumberish, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setReceiveLibraryTimeout",
    values: [string, BigNumberish, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setSendLibrary",
    values: [string, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "skip",
    values: [string, BigNumberish, BytesLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "verifiable",
    values: [OriginStruct, string]
  ): string;
  encodeFunctionData(
    functionFragment: "verify",
    values: [OriginStruct, string, BytesLike]
  ): string;

  decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "clear", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "composeQueue",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "defaultReceiveLibrary",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "defaultReceiveLibraryTimeout",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "defaultSendLibrary",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "eid", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "getConfig", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getReceiveLibrary",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getRegisteredLibraries",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getSendContext",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getSendLibrary",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "inboundNonce",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "inboundPayloadHash",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "initializable",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isDefaultSendLibrary",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isRegisteredLibrary",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isSendingMessage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isSupportedEid",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isValidReceiveLibrary",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "lazyInboundNonce",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "lzCompose", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "lzReceive", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "lzToken", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "nativeToken",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "nextGuid", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "nilify", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "outboundNonce",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "quote", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "receiveLibraryTimeout",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "registerLibrary",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "send", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "sendCompose",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "setConfig", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "setDefaultReceiveLibrary",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setDefaultReceiveLibraryTimeout",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setDefaultSendLibrary",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setDelegate",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "setLzToken", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "setReceiveLibrary",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setReceiveLibraryTimeout",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setSendLibrary",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "skip", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "verifiable", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "verify", data: BytesLike): Result;

  events: {
    "ComposeDelivered(address,address,bytes32,uint16)": EventFragment;
    "ComposeSent(address,address,bytes32,uint16,bytes)": EventFragment;
    "DefaultReceiveLibrarySet(uint32,address)": EventFragment;
    "DefaultReceiveLibraryTimeoutSet(uint32,address,uint256)": EventFragment;
    "DefaultSendLibrarySet(uint32,address)": EventFragment;
    "DelegateSet(address,address)": EventFragment;
    "InboundNonceSkipped(uint32,bytes32,address,uint64)": EventFragment;
    "LibraryRegistered(address)": EventFragment;
    "LzComposeAlert(address,address,address,bytes32,uint16,uint256,uint256,bytes,bytes,bytes)": EventFragment;
    "LzReceiveAlert(address,address,(uint32,bytes32,uint64),bytes32,uint256,uint256,bytes,bytes,bytes)": EventFragment;
    "LzTokenSet(address)": EventFragment;
    "PacketBurnt(uint32,bytes32,address,uint64,bytes32)": EventFragment;
    "PacketDelivered((uint32,bytes32,uint64),address)": EventFragment;
    "PacketNilified(uint32,bytes32,address,uint64,bytes32)": EventFragment;
    "PacketSent(bytes,bytes,address)": EventFragment;
    "PacketVerified((uint32,bytes32,uint64),address,bytes32)": EventFragment;
    "ReceiveLibrarySet(address,uint32,address)": EventFragment;
    "ReceiveLibraryTimeoutSet(address,uint32,address,uint256)": EventFragment;
    "SendLibrarySet(address,uint32,address)": EventFragment;
  };

  getEvent(nameOrSignatureOrTopic: "ComposeDelivered"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ComposeSent"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "DefaultReceiveLibrarySet"): EventFragment;
  getEvent(
    nameOrSignatureOrTopic: "DefaultReceiveLibraryTimeoutSet"
  ): EventFragment;
  getEvent(nameOrSignatureOrTopic: "DefaultSendLibrarySet"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "DelegateSet"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "InboundNonceSkipped"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "LibraryRegistered"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "LzComposeAlert"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "LzReceiveAlert"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "LzTokenSet"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "PacketBurnt"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "PacketDelivered"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "PacketNilified"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "PacketSent"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "PacketVerified"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ReceiveLibrarySet"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ReceiveLibraryTimeoutSet"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SendLibrarySet"): EventFragment;
}

export interface ComposeDeliveredEventObject {
  from: string;
  to: string;
  guid: string;
  index: number;
}
export type ComposeDeliveredEvent = TypedEvent<
  [string, string, string, number],
  ComposeDeliveredEventObject
>;

export type ComposeDeliveredEventFilter =
  TypedEventFilter<ComposeDeliveredEvent>;

export interface ComposeSentEventObject {
  from: string;
  to: string;
  guid: string;
  index: number;
  message: string;
}
export type ComposeSentEvent = TypedEvent<
  [string, string, string, number, string],
  ComposeSentEventObject
>;

export type ComposeSentEventFilter = TypedEventFilter<ComposeSentEvent>;

export interface DefaultReceiveLibrarySetEventObject {
  eid: number;
  newLib: string;
}
export type DefaultReceiveLibrarySetEvent = TypedEvent<
  [number, string],
  DefaultReceiveLibrarySetEventObject
>;

export type DefaultReceiveLibrarySetEventFilter =
  TypedEventFilter<DefaultReceiveLibrarySetEvent>;

export interface DefaultReceiveLibraryTimeoutSetEventObject {
  eid: number;
  oldLib: string;
  expiry: BigNumber;
}
export type DefaultReceiveLibraryTimeoutSetEvent = TypedEvent<
  [number, string, BigNumber],
  DefaultReceiveLibraryTimeoutSetEventObject
>;

export type DefaultReceiveLibraryTimeoutSetEventFilter =
  TypedEventFilter<DefaultReceiveLibraryTimeoutSetEvent>;

export interface DefaultSendLibrarySetEventObject {
  eid: number;
  newLib: string;
}
export type DefaultSendLibrarySetEvent = TypedEvent<
  [number, string],
  DefaultSendLibrarySetEventObject
>;

export type DefaultSendLibrarySetEventFilter =
  TypedEventFilter<DefaultSendLibrarySetEvent>;

export interface DelegateSetEventObject {
  sender: string;
  delegate: string;
}
export type DelegateSetEvent = TypedEvent<
  [string, string],
  DelegateSetEventObject
>;

export type DelegateSetEventFilter = TypedEventFilter<DelegateSetEvent>;

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 LibraryRegisteredEventObject {
  newLib: string;
}
export type LibraryRegisteredEvent = TypedEvent<
  [string],
  LibraryRegisteredEventObject
>;

export type LibraryRegisteredEventFilter =
  TypedEventFilter<LibraryRegisteredEvent>;

export interface LzComposeAlertEventObject {
  from: string;
  to: string;
  executor: string;
  guid: string;
  index: number;
  gas: BigNumber;
  value: BigNumber;
  message: string;
  extraData: string;
  reason: string;
}
export type LzComposeAlertEvent = TypedEvent<
  [
    string,
    string,
    string,
    string,
    number,
    BigNumber,
    BigNumber,
    string,
    string,
    string
  ],
  LzComposeAlertEventObject
>;

export type LzComposeAlertEventFilter = TypedEventFilter<LzComposeAlertEvent>;

export interface LzReceiveAlertEventObject {
  receiver: string;
  executor: string;
  origin: OriginStructOutput;
  guid: string;
  gas: BigNumber;
  value: BigNumber;
  message: string;
  extraData: string;
  reason: string;
}
export type LzReceiveAlertEvent = TypedEvent<
  [
    string,
    string,
    OriginStructOutput,
    string,
    BigNumber,
    BigNumber,
    string,
    string,
    string
  ],
  LzReceiveAlertEventObject
>;

export type LzReceiveAlertEventFilter = TypedEventFilter<LzReceiveAlertEvent>;

export interface LzTokenSetEventObject {
  token: string;
}
export type LzTokenSetEvent = TypedEvent<[string], LzTokenSetEventObject>;

export type LzTokenSetEventFilter = TypedEventFilter<LzTokenSetEvent>;

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 PacketDeliveredEventObject {
  origin: OriginStructOutput;
  receiver: string;
}
export type PacketDeliveredEvent = TypedEvent<
  [OriginStructOutput, string],
  PacketDeliveredEventObject
>;

export type PacketDeliveredEventFilter = TypedEventFilter<PacketDeliveredEvent>;

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 PacketSentEventObject {
  encodedPayload: string;
  options: string;
  sendLibrary: string;
}
export type PacketSentEvent = TypedEvent<
  [string, string, string],
  PacketSentEventObject
>;

export type PacketSentEventFilter = TypedEventFilter<PacketSentEvent>;

export interface PacketVerifiedEventObject {
  origin: OriginStructOutput;
  receiver: string;
  payloadHash: string;
}
export type PacketVerifiedEvent = TypedEvent<
  [OriginStructOutput, string, string],
  PacketVerifiedEventObject
>;

export type PacketVerifiedEventFilter = TypedEventFilter<PacketVerifiedEvent>;

export interface ReceiveLibrarySetEventObject {
  receiver: string;
  eid: number;
  newLib: string;
}
export type ReceiveLibrarySetEvent = TypedEvent<
  [string, number, string],
  ReceiveLibrarySetEventObject
>;

export type ReceiveLibrarySetEventFilter =
  TypedEventFilter<ReceiveLibrarySetEvent>;

export interface ReceiveLibraryTimeoutSetEventObject {
  receiver: string;
  eid: number;
  oldLib: string;
  timeout: BigNumber;
}
export type ReceiveLibraryTimeoutSetEvent = TypedEvent<
  [string, number, string, BigNumber],
  ReceiveLibraryTimeoutSetEventObject
>;

export type ReceiveLibraryTimeoutSetEventFilter =
  TypedEventFilter<ReceiveLibraryTimeoutSetEvent>;

export interface SendLibrarySetEventObject {
  sender: string;
  eid: number;
  newLib: string;
}
export type SendLibrarySetEvent = TypedEvent<
  [string, number, string],
  SendLibrarySetEventObject
>;

export type SendLibrarySetEventFilter = TypedEventFilter<SendLibrarySetEvent>;

export interface ILayerZeroEndpointV2 extends BaseContract {
  connect(signerOrProvider: Signer | Provider | string): this;
  attach(addressOrName: string): this;
  deployed(): Promise<this>;

  interface: ILayerZeroEndpointV2Interface;

  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>;

    clear(
      _oapp: string,
      _origin: OriginStruct,
      _guid: BytesLike,
      _message: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    composeQueue(
      _from: string,
      _to: string,
      _guid: BytesLike,
      _index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string] & { messageHash: string }>;

    defaultReceiveLibrary(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string]>;

    defaultReceiveLibraryTimeout(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string, BigNumber] & { lib: string; expiry: BigNumber }>;

    defaultSendLibrary(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string]>;

    eid(overrides?: CallOverrides): Promise<[number]>;

    getConfig(
      _oapp: string,
      _lib: string,
      _eid: BigNumberish,
      _configType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string] & { config: string }>;

    getReceiveLibrary(
      _receiver: string,
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string, boolean] & { lib: string; isDefault: boolean }>;

    getRegisteredLibraries(overrides?: CallOverrides): Promise<[string[]]>;

    getSendContext(
      overrides?: CallOverrides
    ): Promise<[number, string] & { dstEid: number; sender: string }>;

    getSendLibrary(
      _sender: string,
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string] & { lib: string }>;

    inboundNonce(
      _receiver: string,
      _srcEid: BigNumberish,
      _sender: BytesLike,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    inboundPayloadHash(
      _receiver: string,
      _srcEid: BigNumberish,
      _sender: BytesLike,
      _nonce: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string]>;

    initializable(
      _origin: OriginStruct,
      _receiver: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    isDefaultSendLibrary(
      _sender: string,
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    isRegisteredLibrary(
      _lib: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    isSendingMessage(overrides?: CallOverrides): Promise<[boolean]>;

    isSupportedEid(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    isValidReceiveLibrary(
      _receiver: string,
      _eid: BigNumberish,
      _lib: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    lazyInboundNonce(
      _receiver: string,
      _srcEid: BigNumberish,
      _sender: BytesLike,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    lzCompose(
      _from: string,
      _to: string,
      _guid: BytesLike,
      _index: BigNumberish,
      _message: BytesLike,
      _extraData: BytesLike,
      overrides?: PayableOverrides & { from?: string }
    ): Promise<ContractTransaction>;

    lzReceive(
      _origin: OriginStruct,
      _receiver: string,
      _guid: BytesLike,
      _message: BytesLike,
      _extraData: BytesLike,
      overrides?: PayableOverrides & { from?: string }
    ): Promise<ContractTransaction>;

    lzToken(overrides?: CallOverrides): Promise<[string]>;

    nativeToken(overrides?: CallOverrides): Promise<[string]>;

    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]>;

    quote(
      _params: MessagingParamsStruct,
      _sender: string,
      overrides?: CallOverrides
    ): Promise<[MessagingFeeStructOutput]>;

    receiveLibraryTimeout(
      _receiver: string,
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string, BigNumber] & { lib: string; expiry: BigNumber }>;

    registerLibrary(
      _lib: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    send(
      _params: MessagingParamsStruct,
      _refundAddress: string,
      overrides?: PayableOverrides & { from?: string }
    ): Promise<ContractTransaction>;

    sendCompose(
      _to: string,
      _guid: BytesLike,
      _index: BigNumberish,
      _message: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setConfig(
      _oapp: string,
      _lib: string,
      _params: SetConfigParamStruct[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setDefaultReceiveLibrary(
      _eid: BigNumberish,
      _newLib: string,
      _gracePeriod: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setDefaultReceiveLibraryTimeout(
      _eid: BigNumberish,
      _lib: string,
      _expiry: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setDefaultSendLibrary(
      _eid: BigNumberish,
      _newLib: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setDelegate(
      _delegate: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setLzToken(
      _lzToken: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setReceiveLibrary(
      _oapp: string,
      _eid: BigNumberish,
      _newLib: string,
      _gracePeriod: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setReceiveLibraryTimeout(
      _oapp: string,
      _eid: BigNumberish,
      _lib: string,
      _expiry: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setSendLibrary(
      _oapp: string,
      _eid: BigNumberish,
      _newLib: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    skip(
      _oapp: string,
      _srcEid: BigNumberish,
      _sender: BytesLike,
      _nonce: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    verifiable(
      _origin: OriginStruct,
      _receiver: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    verify(
      _origin: OriginStruct,
      _receiver: string,
      _payloadHash: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;
  };

  burn(
    _oapp: string,
    _srcEid: BigNumberish,
    _sender: BytesLike,
    _nonce: BigNumberish,
    _payloadHash: BytesLike,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  clear(
    _oapp: string,
    _origin: OriginStruct,
    _guid: BytesLike,
    _message: BytesLike,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  composeQueue(
    _from: string,
    _to: string,
    _guid: BytesLike,
    _index: BigNumberish,
    overrides?: CallOverrides
  ): Promise<string>;

  defaultReceiveLibrary(
    _eid: BigNumberish,
    overrides?: CallOverrides
  ): Promise<string>;

  defaultReceiveLibraryTimeout(
    _eid: BigNumberish,
    overrides?: CallOverrides
  ): Promise<[string, BigNumber] & { lib: string; expiry: BigNumber }>;

  defaultSendLibrary(
    _eid: BigNumberish,
    overrides?: CallOverrides
  ): Promise<string>;

  eid(overrides?: CallOverrides): Promise<number>;

  getConfig(
    _oapp: string,
    _lib: string,
    _eid: BigNumberish,
    _configType: BigNumberish,
    overrides?: CallOverrides
  ): Promise<string>;

  getReceiveLibrary(
    _receiver: string,
    _eid: BigNumberish,
    overrides?: CallOverrides
  ): Promise<[string, boolean] & { lib: string; isDefault: boolean }>;

  getRegisteredLibraries(overrides?: CallOverrides): Promise<string[]>;

  getSendContext(
    overrides?: CallOverrides
  ): Promise<[number, string] & { dstEid: number; sender: string }>;

  getSendLibrary(
    _sender: string,
    _eid: BigNumberish,
    overrides?: CallOverrides
  ): Promise<string>;

  inboundNonce(
    _receiver: string,
    _srcEid: BigNumberish,
    _sender: BytesLike,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  inboundPayloadHash(
    _receiver: string,
    _srcEid: BigNumberish,
    _sender: BytesLike,
    _nonce: BigNumberish,
    overrides?: CallOverrides
  ): Promise<string>;

  initializable(
    _origin: OriginStruct,
    _receiver: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  isDefaultSendLibrary(
    _sender: string,
    _eid: BigNumberish,
    overrides?: CallOverrides
  ): Promise<boolean>;

  isRegisteredLibrary(
    _lib: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  isSendingMessage(overrides?: CallOverrides): Promise<boolean>;

  isSupportedEid(
    _eid: BigNumberish,
    overrides?: CallOverrides
  ): Promise<boolean>;

  isValidReceiveLibrary(
    _receiver: string,
    _eid: BigNumberish,
    _lib: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  lazyInboundNonce(
    _receiver: string,
    _srcEid: BigNumberish,
    _sender: BytesLike,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  lzCompose(
    _from: string,
    _to: string,
    _guid: BytesLike,
    _index: BigNumberish,
    _message: BytesLike,
    _extraData: BytesLike,
    overrides?: PayableOverrides & { from?: string }
  ): Promise<ContractTransaction>;

  lzReceive(
    _origin: OriginStruct,
    _receiver: string,
    _guid: BytesLike,
    _message: BytesLike,
    _extraData: BytesLike,
    overrides?: PayableOverrides & { from?: string }
  ): Promise<ContractTransaction>;

  lzToken(overrides?: CallOverrides): Promise<string>;

  nativeToken(overrides?: CallOverrides): Promise<string>;

  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>;

  quote(
    _params: MessagingParamsStruct,
    _sender: string,
    overrides?: CallOverrides
  ): Promise<MessagingFeeStructOutput>;

  receiveLibraryTimeout(
    _receiver: string,
    _eid: BigNumberish,
    overrides?: CallOverrides
  ): Promise<[string, BigNumber] & { lib: string; expiry: BigNumber }>;

  registerLibrary(
    _lib: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  send(
    _params: MessagingParamsStruct,
    _refundAddress: string,
    overrides?: PayableOverrides & { from?: string }
  ): Promise<ContractTransaction>;

  sendCompose(
    _to: string,
    _guid: BytesLike,
    _index: BigNumberish,
    _message: BytesLike,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setConfig(
    _oapp: string,
    _lib: string,
    _params: SetConfigParamStruct[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setDefaultReceiveLibrary(
    _eid: BigNumberish,
    _newLib: string,
    _gracePeriod: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setDefaultReceiveLibraryTimeout(
    _eid: BigNumberish,
    _lib: string,
    _expiry: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setDefaultSendLibrary(
    _eid: BigNumberish,
    _newLib: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setDelegate(
    _delegate: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setLzToken(
    _lzToken: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setReceiveLibrary(
    _oapp: string,
    _eid: BigNumberish,
    _newLib: string,
    _gracePeriod: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setReceiveLibraryTimeout(
    _oapp: string,
    _eid: BigNumberish,
    _lib: string,
    _expiry: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setSendLibrary(
    _oapp: string,
    _eid: BigNumberish,
    _newLib: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  skip(
    _oapp: string,
    _srcEid: BigNumberish,
    _sender: BytesLike,
    _nonce: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  verifiable(
    _origin: OriginStruct,
    _receiver: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  verify(
    _origin: OriginStruct,
    _receiver: string,
    _payloadHash: BytesLike,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  callStatic: {
    burn(
      _oapp: string,
      _srcEid: BigNumberish,
      _sender: BytesLike,
      _nonce: BigNumberish,
      _payloadHash: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    clear(
      _oapp: string,
      _origin: OriginStruct,
      _guid: BytesLike,
      _message: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    composeQueue(
      _from: string,
      _to: string,
      _guid: BytesLike,
      _index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    defaultReceiveLibrary(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    defaultReceiveLibraryTimeout(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string, BigNumber] & { lib: string; expiry: BigNumber }>;

    defaultSendLibrary(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    eid(overrides?: CallOverrides): Promise<number>;

    getConfig(
      _oapp: string,
      _lib: string,
      _eid: BigNumberish,
      _configType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    getReceiveLibrary(
      _receiver: string,
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string, boolean] & { lib: string; isDefault: boolean }>;

    getRegisteredLibraries(overrides?: CallOverrides): Promise<string[]>;

    getSendContext(
      overrides?: CallOverrides
    ): Promise<[number, string] & { dstEid: number; sender: string }>;

    getSendLibrary(
      _sender: string,
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    inboundNonce(
      _receiver: string,
      _srcEid: BigNumberish,
      _sender: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    inboundPayloadHash(
      _receiver: string,
      _srcEid: BigNumberish,
      _sender: BytesLike,
      _nonce: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    initializable(
      _origin: OriginStruct,
      _receiver: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    isDefaultSendLibrary(
      _sender: string,
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<boolean>;

    isRegisteredLibrary(
      _lib: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    isSendingMessage(overrides?: CallOverrides): Promise<boolean>;

    isSupportedEid(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<boolean>;

    isValidReceiveLibrary(
      _receiver: string,
      _eid: BigNumberish,
      _lib: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    lazyInboundNonce(
      _receiver: string,
      _srcEid: BigNumberish,
      _sender: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    lzCompose(
      _from: string,
      _to: string,
      _guid: BytesLike,
      _index: BigNumberish,
      _message: BytesLike,
      _extraData: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    lzReceive(
      _origin: OriginStruct,
      _receiver: string,
      _guid: BytesLike,
      _message: BytesLike,
      _extraData: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    lzToken(overrides?: CallOverrides): Promise<string>;

    nativeToken(overrides?: CallOverrides): Promise<string>;

    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>;

    quote(
      _params: MessagingParamsStruct,
      _sender: string,
      overrides?: CallOverrides
    ): Promise<MessagingFeeStructOutput>;

    receiveLibraryTimeout(
      _receiver: string,
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string, BigNumber] & { lib: string; expiry: BigNumber }>;

    registerLibrary(_lib: string, overrides?: CallOverrides): Promise<void>;

    send(
      _params: MessagingParamsStruct,
      _refundAddress: string,
      overrides?: CallOverrides
    ): Promise<MessagingReceiptStructOutput>;

    sendCompose(
      _to: string,
      _guid: BytesLike,
      _index: BigNumberish,
      _message: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    setConfig(
      _oapp: string,
      _lib: string,
      _params: SetConfigParamStruct[],
      overrides?: CallOverrides
    ): Promise<void>;

    setDefaultReceiveLibrary(
      _eid: BigNumberish,
      _newLib: string,
      _gracePeriod: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    setDefaultReceiveLibraryTimeout(
      _eid: BigNumberish,
      _lib: string,
      _expiry: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    setDefaultSendLibrary(
      _eid: BigNumberish,
      _newLib: string,
      overrides?: CallOverrides
    ): Promise<void>;

    setDelegate(_delegate: string, overrides?: CallOverrides): Promise<void>;

    setLzToken(_lzToken: string, overrides?: CallOverrides): Promise<void>;

    setReceiveLibrary(
      _oapp: string,
      _eid: BigNumberish,
      _newLib: string,
      _gracePeriod: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    setReceiveLibraryTimeout(
      _oapp: string,
      _eid: BigNumberish,
      _lib: string,
      _expiry: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    setSendLibrary(
      _oapp: string,
      _eid: BigNumberish,
      _newLib: string,
      overrides?: CallOverrides
    ): Promise<void>;

    skip(
      _oapp: string,
      _srcEid: BigNumberish,
      _sender: BytesLike,
      _nonce: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    verifiable(
      _origin: OriginStruct,
      _receiver: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    verify(
      _origin: OriginStruct,
      _receiver: string,
      _payloadHash: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;
  };

  filters: {
    "ComposeDelivered(address,address,bytes32,uint16)"(
      from?: null,
      to?: null,
      guid?: null,
      index?: null
    ): ComposeDeliveredEventFilter;
    ComposeDelivered(
      from?: null,
      to?: null,
      guid?: null,
      index?: null
    ): ComposeDeliveredEventFilter;

    "ComposeSent(address,address,bytes32,uint16,bytes)"(
      from?: null,
      to?: null,
      guid?: null,
      index?: null,
      message?: null
    ): ComposeSentEventFilter;
    ComposeSent(
      from?: null,
      to?: null,
      guid?: null,
      index?: null,
      message?: null
    ): ComposeSentEventFilter;

    "DefaultReceiveLibrarySet(uint32,address)"(
      eid?: null,
      newLib?: null
    ): DefaultReceiveLibrarySetEventFilter;
    DefaultReceiveLibrarySet(
      eid?: null,
      newLib?: null
    ): DefaultReceiveLibrarySetEventFilter;

    "DefaultReceiveLibraryTimeoutSet(uint32,address,uint256)"(
      eid?: null,
      oldLib?: null,
      expiry?: null
    ): DefaultReceiveLibraryTimeoutSetEventFilter;
    DefaultReceiveLibraryTimeoutSet(
      eid?: null,
      oldLib?: null,
      expiry?: null
    ): DefaultReceiveLibraryTimeoutSetEventFilter;

    "DefaultSendLibrarySet(uint32,address)"(
      eid?: null,
      newLib?: null
    ): DefaultSendLibrarySetEventFilter;
    DefaultSendLibrarySet(
      eid?: null,
      newLib?: null
    ): DefaultSendLibrarySetEventFilter;

    "DelegateSet(address,address)"(
      sender?: null,
      delegate?: null
    ): DelegateSetEventFilter;
    DelegateSet(sender?: null, delegate?: null): DelegateSetEventFilter;

    "InboundNonceSkipped(uint32,bytes32,address,uint64)"(
      srcEid?: null,
      sender?: null,
      receiver?: null,
      nonce?: null
    ): InboundNonceSkippedEventFilter;
    InboundNonceSkipped(
      srcEid?: null,
      sender?: null,
      receiver?: null,
      nonce?: null
    ): InboundNonceSkippedEventFilter;

    "LibraryRegistered(address)"(newLib?: null): LibraryRegisteredEventFilter;
    LibraryRegistered(newLib?: null): LibraryRegisteredEventFilter;

    "LzComposeAlert(address,address,address,bytes32,uint16,uint256,uint256,bytes,bytes,bytes)"(
      from?: string | null,
      to?: string | null,
      executor?: string | null,
      guid?: null,
      index?: null,
      gas?: null,
      value?: null,
      message?: null,
      extraData?: null,
      reason?: null
    ): LzComposeAlertEventFilter;
    LzComposeAlert(
      from?: string | null,
      to?: string | null,
      executor?: string | null,
      guid?: null,
      index?: null,
      gas?: null,
      value?: null,
      message?: null,
      extraData?: null,
      reason?: null
    ): LzComposeAlertEventFilter;

    "LzReceiveAlert(address,address,(uint32,bytes32,uint64),bytes32,uint256,uint256,bytes,bytes,bytes)"(
      receiver?: string | null,
      executor?: string | null,
      origin?: null,
      guid?: null,
      gas?: null,
      value?: null,
      message?: null,
      extraData?: null,
      reason?: null
    ): LzReceiveAlertEventFilter;
    LzReceiveAlert(
      receiver?: string | null,
      executor?: string | null,
      origin?: null,
      guid?: null,
      gas?: null,
      value?: null,
      message?: null,
      extraData?: null,
      reason?: null
    ): LzReceiveAlertEventFilter;

    "LzTokenSet(address)"(token?: null): LzTokenSetEventFilter;
    LzTokenSet(token?: null): LzTokenSetEventFilter;

    "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;

    "PacketDelivered((uint32,bytes32,uint64),address)"(
      origin?: null,
      receiver?: null
    ): PacketDeliveredEventFilter;
    PacketDelivered(origin?: null, receiver?: null): PacketDeliveredEventFilter;

    "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;

    "PacketSent(bytes,bytes,address)"(
      encodedPayload?: null,
      options?: null,
      sendLibrary?: null
    ): PacketSentEventFilter;
    PacketSent(
      encodedPayload?: null,
      options?: null,
      sendLibrary?: null
    ): PacketSentEventFilter;

    "PacketVerified((uint32,bytes32,uint64),address,bytes32)"(
      origin?: null,
      receiver?: null,
      payloadHash?: null
    ): PacketVerifiedEventFilter;
    PacketVerified(
      origin?: null,
      receiver?: null,
      payloadHash?: null
    ): PacketVerifiedEventFilter;

    "ReceiveLibrarySet(address,uint32,address)"(
      receiver?: null,
      eid?: null,
      newLib?: null
    ): ReceiveLibrarySetEventFilter;
    ReceiveLibrarySet(
      receiver?: null,
      eid?: null,
      newLib?: null
    ): ReceiveLibrarySetEventFilter;

    "ReceiveLibraryTimeoutSet(address,uint32,address,uint256)"(
      receiver?: null,
      eid?: null,
      oldLib?: null,
      timeout?: null
    ): ReceiveLibraryTimeoutSetEventFilter;
    ReceiveLibraryTimeoutSet(
      receiver?: null,
      eid?: null,
      oldLib?: null,
      timeout?: null
    ): ReceiveLibraryTimeoutSetEventFilter;

    "SendLibrarySet(address,uint32,address)"(
      sender?: null,
      eid?: null,
      newLib?: null
    ): SendLibrarySetEventFilter;
    SendLibrarySet(
      sender?: null,
      eid?: null,
      newLib?: null
    ): SendLibrarySetEventFilter;
  };

  estimateGas: {
    burn(
      _oapp: string,
      _srcEid: BigNumberish,
      _sender: BytesLike,
      _nonce: BigNumberish,
      _payloadHash: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    clear(
      _oapp: string,
      _origin: OriginStruct,
      _guid: BytesLike,
      _message: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    composeQueue(
      _from: string,
      _to: string,
      _guid: BytesLike,
      _index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    defaultReceiveLibrary(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    defaultReceiveLibraryTimeout(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    defaultSendLibrary(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    eid(overrides?: CallOverrides): Promise<BigNumber>;

    getConfig(
      _oapp: string,
      _lib: string,
      _eid: BigNumberish,
      _configType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getReceiveLibrary(
      _receiver: string,
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getRegisteredLibraries(overrides?: CallOverrides): Promise<BigNumber>;

    getSendContext(overrides?: CallOverrides): Promise<BigNumber>;

    getSendLibrary(
      _sender: string,
      _eid: BigNumberish,
      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>;

    initializable(
      _origin: OriginStruct,
      _receiver: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    isDefaultSendLibrary(
      _sender: string,
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    isRegisteredLibrary(
      _lib: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    isSendingMessage(overrides?: CallOverrides): Promise<BigNumber>;

    isSupportedEid(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    isValidReceiveLibrary(
      _receiver: string,
      _eid: BigNumberish,
      _lib: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    lazyInboundNonce(
      _receiver: string,
      _srcEid: BigNumberish,
      _sender: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    lzCompose(
      _from: string,
      _to: string,
      _guid: BytesLike,
      _index: BigNumberish,
      _message: BytesLike,
      _extraData: BytesLike,
      overrides?: PayableOverrides & { from?: string }
    ): Promise<BigNumber>;

    lzReceive(
      _origin: OriginStruct,
      _receiver: string,
      _guid: BytesLike,
      _message: BytesLike,
      _extraData: BytesLike,
      overrides?: PayableOverrides & { from?: string }
    ): Promise<BigNumber>;

    lzToken(overrides?: CallOverrides): Promise<BigNumber>;

    nativeToken(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>;

    quote(
      _params: MessagingParamsStruct,
      _sender: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    receiveLibraryTimeout(
      _receiver: string,
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    registerLibrary(
      _lib: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    send(
      _params: MessagingParamsStruct,
      _refundAddress: string,
      overrides?: PayableOverrides & { from?: string }
    ): Promise<BigNumber>;

    sendCompose(
      _to: string,
      _guid: BytesLike,
      _index: BigNumberish,
      _message: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setConfig(
      _oapp: string,
      _lib: string,
      _params: SetConfigParamStruct[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setDefaultReceiveLibrary(
      _eid: BigNumberish,
      _newLib: string,
      _gracePeriod: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setDefaultReceiveLibraryTimeout(
      _eid: BigNumberish,
      _lib: string,
      _expiry: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setDefaultSendLibrary(
      _eid: BigNumberish,
      _newLib: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setDelegate(
      _delegate: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setLzToken(
      _lzToken: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setReceiveLibrary(
      _oapp: string,
      _eid: BigNumberish,
      _newLib: string,
      _gracePeriod: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setReceiveLibraryTimeout(
      _oapp: string,
      _eid: BigNumberish,
      _lib: string,
      _expiry: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setSendLibrary(
      _oapp: string,
      _eid: BigNumberish,
      _newLib: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    skip(
      _oapp: string,
      _srcEid: BigNumberish,
      _sender: BytesLike,
      _nonce: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    verifiable(
      _origin: OriginStruct,
      _receiver: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    verify(
      _origin: OriginStruct,
      _receiver: string,
      _payloadHash: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;
  };

  populateTransaction: {
    burn(
      _oapp: string,
      _srcEid: BigNumberish,
      _sender: BytesLike,
      _nonce: BigNumberish,
      _payloadHash: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    clear(
      _oapp: string,
      _origin: OriginStruct,
      _guid: BytesLike,
      _message: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    composeQueue(
      _from: string,
      _to: string,
      _guid: BytesLike,
      _index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    defaultReceiveLibrary(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    defaultReceiveLibraryTimeout(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    defaultSendLibrary(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    eid(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    getConfig(
      _oapp: string,
      _lib: string,
      _eid: BigNumberish,
      _configType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getReceiveLibrary(
      _receiver: string,
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getRegisteredLibraries(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getSendContext(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    getSendLibrary(
      _sender: string,
      _eid: BigNumberish,
      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>;

    initializable(
      _origin: OriginStruct,
      _receiver: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isDefaultSendLibrary(
      _sender: string,
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isRegisteredLibrary(
      _lib: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isSendingMessage(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    isSupportedEid(
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isValidReceiveLibrary(
      _receiver: string,
      _eid: BigNumberish,
      _lib: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    lazyInboundNonce(
      _receiver: string,
      _srcEid: BigNumberish,
      _sender: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    lzCompose(
      _from: string,
      _to: string,
      _guid: BytesLike,
      _index: BigNumberish,
      _message: BytesLike,
      _extraData: BytesLike,
      overrides?: PayableOverrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    lzReceive(
      _origin: OriginStruct,
      _receiver: string,
      _guid: BytesLike,
      _message: BytesLike,
      _extraData: BytesLike,
      overrides?: PayableOverrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    lzToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    nativeToken(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>;

    quote(
      _params: MessagingParamsStruct,
      _sender: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    receiveLibraryTimeout(
      _receiver: string,
      _eid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    registerLibrary(
      _lib: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    send(
      _params: MessagingParamsStruct,
      _refundAddress: string,
      overrides?: PayableOverrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    sendCompose(
      _to: string,
      _guid: BytesLike,
      _index: BigNumberish,
      _message: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setConfig(
      _oapp: string,
      _lib: string,
      _params: SetConfigParamStruct[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setDefaultReceiveLibrary(
      _eid: BigNumberish,
      _newLib: string,
      _gracePeriod: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setDefaultReceiveLibraryTimeout(
      _eid: BigNumberish,
      _lib: string,
      _expiry: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setDefaultSendLibrary(
      _eid: BigNumberish,
      _newLib: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setDelegate(
      _delegate: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setLzToken(
      _lzToken: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setReceiveLibrary(
      _oapp: string,
      _eid: BigNumberish,
      _newLib: string,
      _gracePeriod: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setReceiveLibraryTimeout(
      _oapp: string,
      _eid: BigNumberish,
      _lib: string,
      _expiry: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setSendLibrary(
      _oapp: string,
      _eid: BigNumberish,
      _newLib: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    skip(
      _oapp: string,
      _srcEid: BigNumberish,
      _sender: BytesLike,
      _nonce: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    verifiable(
      _origin: OriginStruct,
      _receiver: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    verify(
      _origin: OriginStruct,
      _receiver: string,
      _payloadHash: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;
  };
}
