/* Autogenerated file. Do not edit manually. */

/* tslint:disable */

/* eslint-disable */
import type {
  TypedEventFilter,
  TypedEvent,
  TypedListener,
  OnEvent,
  PromiseOrValue,
} from "../../common";
import type {
  FunctionFragment,
  Result,
  EventFragment,
} from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type {
  BaseContract,
  BigNumber,
  BigNumberish,
  BytesLike,
  CallOverrides,
  ContractTransaction,
  Overrides,
  PayableOverrides,
  PopulatedTransaction,
  Signer,
  utils,
} from "ethers";

export interface OmnichainGovernanceExecutorInterface extends utils.Interface {
  functions: {
    "DEFAULT_PAYLOAD_SIZE_LIMIT()": FunctionFragment;
    "addTimelocks(address[])": FunctionFragment;
    "cancel(uint256)": FunctionFragment;
    "execute(uint256)": FunctionFragment;
    "failedMessages(uint16,bytes,uint64)": FunctionFragment;
    "forceResumeReceive(uint16,bytes)": FunctionFragment;
    "getConfig(uint16,uint16,address,uint256)": FunctionFragment;
    "getTrustedRemoteAddress(uint16)": FunctionFragment;
    "guardian()": FunctionFragment;
    "isTrustedRemote(uint16,bytes)": FunctionFragment;
    "last24HourCommandsReceived()": FunctionFragment;
    "last24HourReceiveWindowStart()": FunctionFragment;
    "lastProposalReceived()": FunctionFragment;
    "lzEndpoint()": FunctionFragment;
    "lzReceive(uint16,bytes,uint64,bytes)": FunctionFragment;
    "maxDailyReceiveLimit()": FunctionFragment;
    "minDstGasLookup(uint16,uint16)": FunctionFragment;
    "nonblockingLzReceive(uint16,bytes,uint64,bytes)": FunctionFragment;
    "owner()": FunctionFragment;
    "pause()": FunctionFragment;
    "paused()": FunctionFragment;
    "payloadSizeLimitLookup(uint16)": FunctionFragment;
    "precrime()": FunctionFragment;
    "proposalTimelocks(uint256)": FunctionFragment;
    "proposals(uint256)": FunctionFragment;
    "queued(uint256)": FunctionFragment;
    "renounceOwnership()": FunctionFragment;
    "retryMessage(uint16,bytes,uint64,bytes)": FunctionFragment;
    "setConfig(uint16,uint16,uint256,bytes)": FunctionFragment;
    "setGuardian(address)": FunctionFragment;
    "setMaxDailyReceiveLimit(uint256)": FunctionFragment;
    "setMinDstGas(uint16,uint16,uint256)": FunctionFragment;
    "setPayloadSizeLimit(uint16,uint256)": FunctionFragment;
    "setPrecrime(address)": FunctionFragment;
    "setReceiveVersion(uint16)": FunctionFragment;
    "setSendVersion(uint16)": FunctionFragment;
    "setSrcChainId(uint16)": FunctionFragment;
    "setTimelockPendingAdmin(address,uint8)": FunctionFragment;
    "setTrustedRemote(uint16,bytes)": FunctionFragment;
    "setTrustedRemoteAddress(uint16,bytes)": FunctionFragment;
    "srcChainId()": FunctionFragment;
    "state(uint256)": FunctionFragment;
    "transferOwnership(address)": FunctionFragment;
    "trustedRemoteLookup(uint16)": FunctionFragment;
    "unpause()": FunctionFragment;
  };

  getFunction(
    nameOrSignatureOrTopic:
      | "DEFAULT_PAYLOAD_SIZE_LIMIT"
      | "addTimelocks"
      | "cancel"
      | "execute"
      | "failedMessages"
      | "forceResumeReceive"
      | "getConfig"
      | "getTrustedRemoteAddress"
      | "guardian"
      | "isTrustedRemote"
      | "last24HourCommandsReceived"
      | "last24HourReceiveWindowStart"
      | "lastProposalReceived"
      | "lzEndpoint"
      | "lzReceive"
      | "maxDailyReceiveLimit"
      | "minDstGasLookup"
      | "nonblockingLzReceive"
      | "owner"
      | "pause"
      | "paused"
      | "payloadSizeLimitLookup"
      | "precrime"
      | "proposalTimelocks"
      | "proposals"
      | "queued"
      | "renounceOwnership"
      | "retryMessage"
      | "setConfig"
      | "setGuardian"
      | "setMaxDailyReceiveLimit"
      | "setMinDstGas"
      | "setPayloadSizeLimit"
      | "setPrecrime"
      | "setReceiveVersion"
      | "setSendVersion"
      | "setSrcChainId"
      | "setTimelockPendingAdmin"
      | "setTrustedRemote"
      | "setTrustedRemoteAddress"
      | "srcChainId"
      | "state"
      | "transferOwnership"
      | "trustedRemoteLookup"
      | "unpause"
  ): FunctionFragment;

  encodeFunctionData(
    functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "addTimelocks",
    values: [PromiseOrValue<string>[]]
  ): string;
  encodeFunctionData(
    functionFragment: "cancel",
    values: [PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(
    functionFragment: "execute",
    values: [PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(
    functionFragment: "failedMessages",
    values: [
      PromiseOrValue<BigNumberish>,
      PromiseOrValue<BytesLike>,
      PromiseOrValue<BigNumberish>
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "forceResumeReceive",
    values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BytesLike>]
  ): string;
  encodeFunctionData(
    functionFragment: "getConfig",
    values: [
      PromiseOrValue<BigNumberish>,
      PromiseOrValue<BigNumberish>,
      PromiseOrValue<string>,
      PromiseOrValue<BigNumberish>
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "getTrustedRemoteAddress",
    values: [PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(functionFragment: "guardian", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "isTrustedRemote",
    values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BytesLike>]
  ): string;
  encodeFunctionData(
    functionFragment: "last24HourCommandsReceived",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "last24HourReceiveWindowStart",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "lastProposalReceived",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "lzEndpoint",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "lzReceive",
    values: [
      PromiseOrValue<BigNumberish>,
      PromiseOrValue<BytesLike>,
      PromiseOrValue<BigNumberish>,
      PromiseOrValue<BytesLike>
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "maxDailyReceiveLimit",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "minDstGasLookup",
    values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(
    functionFragment: "nonblockingLzReceive",
    values: [
      PromiseOrValue<BigNumberish>,
      PromiseOrValue<BytesLike>,
      PromiseOrValue<BigNumberish>,
      PromiseOrValue<BytesLike>
    ]
  ): string;
  encodeFunctionData(functionFragment: "owner", values?: undefined): string;
  encodeFunctionData(functionFragment: "pause", values?: undefined): string;
  encodeFunctionData(functionFragment: "paused", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "payloadSizeLimitLookup",
    values: [PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(functionFragment: "precrime", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "proposalTimelocks",
    values: [PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(
    functionFragment: "proposals",
    values: [PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(
    functionFragment: "queued",
    values: [PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(
    functionFragment: "renounceOwnership",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "retryMessage",
    values: [
      PromiseOrValue<BigNumberish>,
      PromiseOrValue<BytesLike>,
      PromiseOrValue<BigNumberish>,
      PromiseOrValue<BytesLike>
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "setConfig",
    values: [
      PromiseOrValue<BigNumberish>,
      PromiseOrValue<BigNumberish>,
      PromiseOrValue<BigNumberish>,
      PromiseOrValue<BytesLike>
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "setGuardian",
    values: [PromiseOrValue<string>]
  ): string;
  encodeFunctionData(
    functionFragment: "setMaxDailyReceiveLimit",
    values: [PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(
    functionFragment: "setMinDstGas",
    values: [
      PromiseOrValue<BigNumberish>,
      PromiseOrValue<BigNumberish>,
      PromiseOrValue<BigNumberish>
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "setPayloadSizeLimit",
    values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(
    functionFragment: "setPrecrime",
    values: [PromiseOrValue<string>]
  ): string;
  encodeFunctionData(
    functionFragment: "setReceiveVersion",
    values: [PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(
    functionFragment: "setSendVersion",
    values: [PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(
    functionFragment: "setSrcChainId",
    values: [PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(
    functionFragment: "setTimelockPendingAdmin",
    values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(
    functionFragment: "setTrustedRemote",
    values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BytesLike>]
  ): string;
  encodeFunctionData(
    functionFragment: "setTrustedRemoteAddress",
    values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BytesLike>]
  ): string;
  encodeFunctionData(
    functionFragment: "srcChainId",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "state",
    values: [PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(
    functionFragment: "transferOwnership",
    values: [PromiseOrValue<string>]
  ): string;
  encodeFunctionData(
    functionFragment: "trustedRemoteLookup",
    values: [PromiseOrValue<BigNumberish>]
  ): string;
  encodeFunctionData(functionFragment: "unpause", values?: undefined): string;

  decodeFunctionResult(
    functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "addTimelocks",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "cancel", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "failedMessages",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "forceResumeReceive",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "getConfig", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getTrustedRemoteAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "guardian", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isTrustedRemote",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "last24HourCommandsReceived",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "last24HourReceiveWindowStart",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "lastProposalReceived",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "lzEndpoint", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "lzReceive", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "maxDailyReceiveLimit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "minDstGasLookup",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "nonblockingLzReceive",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "payloadSizeLimitLookup",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "precrime", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "proposalTimelocks",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "proposals", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "queued", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "renounceOwnership",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "retryMessage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "setConfig", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "setGuardian",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMaxDailyReceiveLimit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMinDstGas",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setPayloadSizeLimit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setPrecrime",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setReceiveVersion",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setSendVersion",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setSrcChainId",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTimelockPendingAdmin",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTrustedRemote",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTrustedRemoteAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "srcChainId", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "state", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "transferOwnership",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "trustedRemoteLookup",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result;

  events: {
    "MessageFailed(uint16,bytes,uint64,bytes,bytes)": EventFragment;
    "NewGuardian(address,address)": EventFragment;
    "OwnershipTransferred(address,address)": EventFragment;
    "Paused(address)": EventFragment;
    "ProposalCanceled(uint256)": EventFragment;
    "ProposalExecuted(uint256)": EventFragment;
    "ProposalQueued(uint256,uint256)": EventFragment;
    "ProposalReceived(uint256,address[],uint256[],string[],bytes[],uint8)": EventFragment;
    "ReceivePayloadFailed(uint16,bytes,uint64,bytes)": EventFragment;
    "RetryMessageSuccess(uint16,bytes,uint64,bytes32)": EventFragment;
    "SetMaxDailyReceiveLimit(uint256,uint256)": EventFragment;
    "SetMinDstGas(uint16,uint16,uint256)": EventFragment;
    "SetPrecrime(address)": EventFragment;
    "SetSrcChainId(uint16,uint16)": EventFragment;
    "SetTimelockPendingAdmin(address,uint8)": EventFragment;
    "SetTrustedRemote(uint16,bytes)": EventFragment;
    "SetTrustedRemoteAddress(uint16,bytes)": EventFragment;
    "TimelockAdded(uint8,address,address)": EventFragment;
    "Unpaused(address)": EventFragment;
  };

  getEvent(nameOrSignatureOrTopic: "MessageFailed"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "NewGuardian"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Paused"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ProposalCanceled"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ProposalExecuted"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ProposalQueued"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ProposalReceived"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ReceivePayloadFailed"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "RetryMessageSuccess"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SetMaxDailyReceiveLimit"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SetMinDstGas"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SetPrecrime"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SetSrcChainId"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SetTimelockPendingAdmin"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SetTrustedRemote"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SetTrustedRemoteAddress"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "TimelockAdded"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Unpaused"): EventFragment;
}

export interface MessageFailedEventObject {
  _srcChainId: number;
  _srcAddress: string;
  _nonce: BigNumber;
  _payload: string;
  _reason: string;
}
export type MessageFailedEvent = TypedEvent<
  [number, string, BigNumber, string, string],
  MessageFailedEventObject
>;

export type MessageFailedEventFilter = TypedEventFilter<MessageFailedEvent>;

export interface NewGuardianEventObject {
  oldGuardian: string;
  newGuardian: string;
}
export type NewGuardianEvent = TypedEvent<
  [string, string],
  NewGuardianEventObject
>;

export type NewGuardianEventFilter = TypedEventFilter<NewGuardianEvent>;

export interface OwnershipTransferredEventObject {
  previousOwner: string;
  newOwner: string;
}
export type OwnershipTransferredEvent = TypedEvent<
  [string, string],
  OwnershipTransferredEventObject
>;

export type OwnershipTransferredEventFilter =
  TypedEventFilter<OwnershipTransferredEvent>;

export interface PausedEventObject {
  account: string;
}
export type PausedEvent = TypedEvent<[string], PausedEventObject>;

export type PausedEventFilter = TypedEventFilter<PausedEvent>;

export interface ProposalCanceledEventObject {
  id: BigNumber;
}
export type ProposalCanceledEvent = TypedEvent<
  [BigNumber],
  ProposalCanceledEventObject
>;

export type ProposalCanceledEventFilter =
  TypedEventFilter<ProposalCanceledEvent>;

export interface ProposalExecutedEventObject {
  id: BigNumber;
}
export type ProposalExecutedEvent = TypedEvent<
  [BigNumber],
  ProposalExecutedEventObject
>;

export type ProposalExecutedEventFilter =
  TypedEventFilter<ProposalExecutedEvent>;

export interface ProposalQueuedEventObject {
  id: BigNumber;
  eta: BigNumber;
}
export type ProposalQueuedEvent = TypedEvent<
  [BigNumber, BigNumber],
  ProposalQueuedEventObject
>;

export type ProposalQueuedEventFilter = TypedEventFilter<ProposalQueuedEvent>;

export interface ProposalReceivedEventObject {
  proposalId: BigNumber;
  targets: string[];
  values: BigNumber[];
  signatures: string[];
  calldatas: string[];
  proposalType: number;
}
export type ProposalReceivedEvent = TypedEvent<
  [BigNumber, string[], BigNumber[], string[], string[], number],
  ProposalReceivedEventObject
>;

export type ProposalReceivedEventFilter =
  TypedEventFilter<ProposalReceivedEvent>;

export interface ReceivePayloadFailedEventObject {
  srcChainId: number;
  srcAddress: string;
  nonce: BigNumber;
  reason: string;
}
export type ReceivePayloadFailedEvent = TypedEvent<
  [number, string, BigNumber, string],
  ReceivePayloadFailedEventObject
>;

export type ReceivePayloadFailedEventFilter =
  TypedEventFilter<ReceivePayloadFailedEvent>;

export interface RetryMessageSuccessEventObject {
  _srcChainId: number;
  _srcAddress: string;
  _nonce: BigNumber;
  _payloadHash: string;
}
export type RetryMessageSuccessEvent = TypedEvent<
  [number, string, BigNumber, string],
  RetryMessageSuccessEventObject
>;

export type RetryMessageSuccessEventFilter =
  TypedEventFilter<RetryMessageSuccessEvent>;

export interface SetMaxDailyReceiveLimitEventObject {
  oldMaxLimit: BigNumber;
  newMaxLimit: BigNumber;
}
export type SetMaxDailyReceiveLimitEvent = TypedEvent<
  [BigNumber, BigNumber],
  SetMaxDailyReceiveLimitEventObject
>;

export type SetMaxDailyReceiveLimitEventFilter =
  TypedEventFilter<SetMaxDailyReceiveLimitEvent>;

export interface SetMinDstGasEventObject {
  _dstChainId: number;
  _type: number;
  _minDstGas: BigNumber;
}
export type SetMinDstGasEvent = TypedEvent<
  [number, number, BigNumber],
  SetMinDstGasEventObject
>;

export type SetMinDstGasEventFilter = TypedEventFilter<SetMinDstGasEvent>;

export interface SetPrecrimeEventObject {
  precrime: string;
}
export type SetPrecrimeEvent = TypedEvent<[string], SetPrecrimeEventObject>;

export type SetPrecrimeEventFilter = TypedEventFilter<SetPrecrimeEvent>;

export interface SetSrcChainIdEventObject {
  oldSrcChainId: number;
  newSrcChainId: number;
}
export type SetSrcChainIdEvent = TypedEvent<
  [number, number],
  SetSrcChainIdEventObject
>;

export type SetSrcChainIdEventFilter = TypedEventFilter<SetSrcChainIdEvent>;

export interface SetTimelockPendingAdminEventObject {
  arg0: string;
  arg1: number;
}
export type SetTimelockPendingAdminEvent = TypedEvent<
  [string, number],
  SetTimelockPendingAdminEventObject
>;

export type SetTimelockPendingAdminEventFilter =
  TypedEventFilter<SetTimelockPendingAdminEvent>;

export interface SetTrustedRemoteEventObject {
  _remoteChainId: number;
  _path: string;
}
export type SetTrustedRemoteEvent = TypedEvent<
  [number, string],
  SetTrustedRemoteEventObject
>;

export type SetTrustedRemoteEventFilter =
  TypedEventFilter<SetTrustedRemoteEvent>;

export interface SetTrustedRemoteAddressEventObject {
  _remoteChainId: number;
  _remoteAddress: string;
}
export type SetTrustedRemoteAddressEvent = TypedEvent<
  [number, string],
  SetTrustedRemoteAddressEventObject
>;

export type SetTrustedRemoteAddressEventFilter =
  TypedEventFilter<SetTrustedRemoteAddressEvent>;

export interface TimelockAddedEventObject {
  routeType: number;
  oldTimelock: string;
  newTimelock: string;
}
export type TimelockAddedEvent = TypedEvent<
  [number, string, string],
  TimelockAddedEventObject
>;

export type TimelockAddedEventFilter = TypedEventFilter<TimelockAddedEvent>;

export interface UnpausedEventObject {
  account: string;
}
export type UnpausedEvent = TypedEvent<[string], UnpausedEventObject>;

export type UnpausedEventFilter = TypedEventFilter<UnpausedEvent>;

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

  interface: OmnichainGovernanceExecutorInterface;

  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: {
    DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise<[BigNumber]>;

    addTimelocks(
      timelocks_: PromiseOrValue<string>[],
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    cancel(
      proposalId_: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    execute(
      proposalId_: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    failedMessages(
      arg0: PromiseOrValue<BigNumberish>,
      arg1: PromiseOrValue<BytesLike>,
      arg2: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<[string]>;

    forceResumeReceive(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    getConfig(
      _version: PromiseOrValue<BigNumberish>,
      _chainId: PromiseOrValue<BigNumberish>,
      arg2: PromiseOrValue<string>,
      _configType: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<[string]>;

    getTrustedRemoteAddress(
      _remoteChainId: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<[string]>;

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

    isTrustedRemote(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    last24HourCommandsReceived(overrides?: CallOverrides): Promise<[BigNumber]>;

    last24HourReceiveWindowStart(
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    lastProposalReceived(overrides?: CallOverrides): Promise<[BigNumber]>;

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

    lzReceive(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      _nonce: PromiseOrValue<BigNumberish>,
      _payload: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    maxDailyReceiveLimit(overrides?: CallOverrides): Promise<[BigNumber]>;

    minDstGasLookup(
      arg0: PromiseOrValue<BigNumberish>,
      arg1: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    nonblockingLzReceive(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      _nonce: PromiseOrValue<BigNumberish>,
      _payload: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

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

    pause(
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

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

    payloadSizeLimitLookup(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

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

    proposalTimelocks(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<[string]>;

    proposals(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, BigNumber, boolean, boolean, number] & {
        id: BigNumber;
        eta: BigNumber;
        canceled: boolean;
        executed: boolean;
        proposalType: number;
      }
    >;

    queued(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    renounceOwnership(
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    retryMessage(
      srcChainId_: PromiseOrValue<BigNumberish>,
      srcAddress_: PromiseOrValue<BytesLike>,
      nonce_: PromiseOrValue<BigNumberish>,
      payload_: PromiseOrValue<BytesLike>,
      overrides?: PayableOverrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    setConfig(
      _version: PromiseOrValue<BigNumberish>,
      _chainId: PromiseOrValue<BigNumberish>,
      _configType: PromiseOrValue<BigNumberish>,
      _config: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    setGuardian(
      newGuardian: PromiseOrValue<string>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    setMaxDailyReceiveLimit(
      limit_: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    setMinDstGas(
      _dstChainId: PromiseOrValue<BigNumberish>,
      _packetType: PromiseOrValue<BigNumberish>,
      _minGas: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    setPayloadSizeLimit(
      _dstChainId: PromiseOrValue<BigNumberish>,
      _size: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    setPrecrime(
      _precrime: PromiseOrValue<string>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    setReceiveVersion(
      _version: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    setSendVersion(
      _version: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    setSrcChainId(
      srcChainId_: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    setTimelockPendingAdmin(
      pendingAdmin_: PromiseOrValue<string>,
      proposalType_: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    setTrustedRemote(
      _remoteChainId: PromiseOrValue<BigNumberish>,
      _path: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    setTrustedRemoteAddress(
      _remoteChainId: PromiseOrValue<BigNumberish>,
      _remoteAddress: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

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

    state(
      proposalId_: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<[number]>;

    transferOwnership(
      newOwner: PromiseOrValue<string>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;

    trustedRemoteLookup(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<[string]>;

    unpause(
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<ContractTransaction>;
  };

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

  addTimelocks(
    timelocks_: PromiseOrValue<string>[],
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  cancel(
    proposalId_: PromiseOrValue<BigNumberish>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  execute(
    proposalId_: PromiseOrValue<BigNumberish>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  failedMessages(
    arg0: PromiseOrValue<BigNumberish>,
    arg1: PromiseOrValue<BytesLike>,
    arg2: PromiseOrValue<BigNumberish>,
    overrides?: CallOverrides
  ): Promise<string>;

  forceResumeReceive(
    _srcChainId: PromiseOrValue<BigNumberish>,
    _srcAddress: PromiseOrValue<BytesLike>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  getConfig(
    _version: PromiseOrValue<BigNumberish>,
    _chainId: PromiseOrValue<BigNumberish>,
    arg2: PromiseOrValue<string>,
    _configType: PromiseOrValue<BigNumberish>,
    overrides?: CallOverrides
  ): Promise<string>;

  getTrustedRemoteAddress(
    _remoteChainId: PromiseOrValue<BigNumberish>,
    overrides?: CallOverrides
  ): Promise<string>;

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

  isTrustedRemote(
    _srcChainId: PromiseOrValue<BigNumberish>,
    _srcAddress: PromiseOrValue<BytesLike>,
    overrides?: CallOverrides
  ): Promise<boolean>;

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

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

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

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

  lzReceive(
    _srcChainId: PromiseOrValue<BigNumberish>,
    _srcAddress: PromiseOrValue<BytesLike>,
    _nonce: PromiseOrValue<BigNumberish>,
    _payload: PromiseOrValue<BytesLike>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

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

  minDstGasLookup(
    arg0: PromiseOrValue<BigNumberish>,
    arg1: PromiseOrValue<BigNumberish>,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  nonblockingLzReceive(
    _srcChainId: PromiseOrValue<BigNumberish>,
    _srcAddress: PromiseOrValue<BytesLike>,
    _nonce: PromiseOrValue<BigNumberish>,
    _payload: PromiseOrValue<BytesLike>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

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

  pause(
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

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

  payloadSizeLimitLookup(
    arg0: PromiseOrValue<BigNumberish>,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

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

  proposalTimelocks(
    arg0: PromiseOrValue<BigNumberish>,
    overrides?: CallOverrides
  ): Promise<string>;

  proposals(
    arg0: PromiseOrValue<BigNumberish>,
    overrides?: CallOverrides
  ): Promise<
    [BigNumber, BigNumber, boolean, boolean, number] & {
      id: BigNumber;
      eta: BigNumber;
      canceled: boolean;
      executed: boolean;
      proposalType: number;
    }
  >;

  queued(
    arg0: PromiseOrValue<BigNumberish>,
    overrides?: CallOverrides
  ): Promise<boolean>;

  renounceOwnership(
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  retryMessage(
    srcChainId_: PromiseOrValue<BigNumberish>,
    srcAddress_: PromiseOrValue<BytesLike>,
    nonce_: PromiseOrValue<BigNumberish>,
    payload_: PromiseOrValue<BytesLike>,
    overrides?: PayableOverrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  setConfig(
    _version: PromiseOrValue<BigNumberish>,
    _chainId: PromiseOrValue<BigNumberish>,
    _configType: PromiseOrValue<BigNumberish>,
    _config: PromiseOrValue<BytesLike>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  setGuardian(
    newGuardian: PromiseOrValue<string>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  setMaxDailyReceiveLimit(
    limit_: PromiseOrValue<BigNumberish>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  setMinDstGas(
    _dstChainId: PromiseOrValue<BigNumberish>,
    _packetType: PromiseOrValue<BigNumberish>,
    _minGas: PromiseOrValue<BigNumberish>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  setPayloadSizeLimit(
    _dstChainId: PromiseOrValue<BigNumberish>,
    _size: PromiseOrValue<BigNumberish>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  setPrecrime(
    _precrime: PromiseOrValue<string>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  setReceiveVersion(
    _version: PromiseOrValue<BigNumberish>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  setSendVersion(
    _version: PromiseOrValue<BigNumberish>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  setSrcChainId(
    srcChainId_: PromiseOrValue<BigNumberish>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  setTimelockPendingAdmin(
    pendingAdmin_: PromiseOrValue<string>,
    proposalType_: PromiseOrValue<BigNumberish>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  setTrustedRemote(
    _remoteChainId: PromiseOrValue<BigNumberish>,
    _path: PromiseOrValue<BytesLike>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  setTrustedRemoteAddress(
    _remoteChainId: PromiseOrValue<BigNumberish>,
    _remoteAddress: PromiseOrValue<BytesLike>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

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

  state(
    proposalId_: PromiseOrValue<BigNumberish>,
    overrides?: CallOverrides
  ): Promise<number>;

  transferOwnership(
    newOwner: PromiseOrValue<string>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  trustedRemoteLookup(
    arg0: PromiseOrValue<BigNumberish>,
    overrides?: CallOverrides
  ): Promise<string>;

  unpause(
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<ContractTransaction>;

  callStatic: {
    DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise<BigNumber>;

    addTimelocks(
      timelocks_: PromiseOrValue<string>[],
      overrides?: CallOverrides
    ): Promise<void>;

    cancel(
      proposalId_: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<void>;

    execute(
      proposalId_: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<void>;

    failedMessages(
      arg0: PromiseOrValue<BigNumberish>,
      arg1: PromiseOrValue<BytesLike>,
      arg2: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<string>;

    forceResumeReceive(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      overrides?: CallOverrides
    ): Promise<void>;

    getConfig(
      _version: PromiseOrValue<BigNumberish>,
      _chainId: PromiseOrValue<BigNumberish>,
      arg2: PromiseOrValue<string>,
      _configType: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<string>;

    getTrustedRemoteAddress(
      _remoteChainId: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<string>;

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

    isTrustedRemote(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      overrides?: CallOverrides
    ): Promise<boolean>;

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

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

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

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

    lzReceive(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      _nonce: PromiseOrValue<BigNumberish>,
      _payload: PromiseOrValue<BytesLike>,
      overrides?: CallOverrides
    ): Promise<void>;

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

    minDstGasLookup(
      arg0: PromiseOrValue<BigNumberish>,
      arg1: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    nonblockingLzReceive(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      _nonce: PromiseOrValue<BigNumberish>,
      _payload: PromiseOrValue<BytesLike>,
      overrides?: CallOverrides
    ): Promise<void>;

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

    pause(overrides?: CallOverrides): Promise<void>;

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

    payloadSizeLimitLookup(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    proposalTimelocks(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<string>;

    proposals(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, BigNumber, boolean, boolean, number] & {
        id: BigNumber;
        eta: BigNumber;
        canceled: boolean;
        executed: boolean;
        proposalType: number;
      }
    >;

    queued(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<boolean>;

    renounceOwnership(overrides?: CallOverrides): Promise<void>;

    retryMessage(
      srcChainId_: PromiseOrValue<BigNumberish>,
      srcAddress_: PromiseOrValue<BytesLike>,
      nonce_: PromiseOrValue<BigNumberish>,
      payload_: PromiseOrValue<BytesLike>,
      overrides?: CallOverrides
    ): Promise<void>;

    setConfig(
      _version: PromiseOrValue<BigNumberish>,
      _chainId: PromiseOrValue<BigNumberish>,
      _configType: PromiseOrValue<BigNumberish>,
      _config: PromiseOrValue<BytesLike>,
      overrides?: CallOverrides
    ): Promise<void>;

    setGuardian(
      newGuardian: PromiseOrValue<string>,
      overrides?: CallOverrides
    ): Promise<void>;

    setMaxDailyReceiveLimit(
      limit_: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<void>;

    setMinDstGas(
      _dstChainId: PromiseOrValue<BigNumberish>,
      _packetType: PromiseOrValue<BigNumberish>,
      _minGas: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<void>;

    setPayloadSizeLimit(
      _dstChainId: PromiseOrValue<BigNumberish>,
      _size: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<void>;

    setPrecrime(
      _precrime: PromiseOrValue<string>,
      overrides?: CallOverrides
    ): Promise<void>;

    setReceiveVersion(
      _version: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<void>;

    setSendVersion(
      _version: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<void>;

    setSrcChainId(
      srcChainId_: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<void>;

    setTimelockPendingAdmin(
      pendingAdmin_: PromiseOrValue<string>,
      proposalType_: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<void>;

    setTrustedRemote(
      _remoteChainId: PromiseOrValue<BigNumberish>,
      _path: PromiseOrValue<BytesLike>,
      overrides?: CallOverrides
    ): Promise<void>;

    setTrustedRemoteAddress(
      _remoteChainId: PromiseOrValue<BigNumberish>,
      _remoteAddress: PromiseOrValue<BytesLike>,
      overrides?: CallOverrides
    ): Promise<void>;

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

    state(
      proposalId_: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<number>;

    transferOwnership(
      newOwner: PromiseOrValue<string>,
      overrides?: CallOverrides
    ): Promise<void>;

    trustedRemoteLookup(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<string>;

    unpause(overrides?: CallOverrides): Promise<void>;
  };

  filters: {
    "MessageFailed(uint16,bytes,uint64,bytes,bytes)"(
      _srcChainId?: null,
      _srcAddress?: null,
      _nonce?: null,
      _payload?: null,
      _reason?: null
    ): MessageFailedEventFilter;
    MessageFailed(
      _srcChainId?: null,
      _srcAddress?: null,
      _nonce?: null,
      _payload?: null,
      _reason?: null
    ): MessageFailedEventFilter;

    "NewGuardian(address,address)"(
      oldGuardian?: PromiseOrValue<string> | null,
      newGuardian?: PromiseOrValue<string> | null
    ): NewGuardianEventFilter;
    NewGuardian(
      oldGuardian?: PromiseOrValue<string> | null,
      newGuardian?: PromiseOrValue<string> | null
    ): NewGuardianEventFilter;

    "OwnershipTransferred(address,address)"(
      previousOwner?: PromiseOrValue<string> | null,
      newOwner?: PromiseOrValue<string> | null
    ): OwnershipTransferredEventFilter;
    OwnershipTransferred(
      previousOwner?: PromiseOrValue<string> | null,
      newOwner?: PromiseOrValue<string> | null
    ): OwnershipTransferredEventFilter;

    "Paused(address)"(account?: null): PausedEventFilter;
    Paused(account?: null): PausedEventFilter;

    "ProposalCanceled(uint256)"(
      id?: PromiseOrValue<BigNumberish> | null
    ): ProposalCanceledEventFilter;
    ProposalCanceled(
      id?: PromiseOrValue<BigNumberish> | null
    ): ProposalCanceledEventFilter;

    "ProposalExecuted(uint256)"(
      id?: PromiseOrValue<BigNumberish> | null
    ): ProposalExecutedEventFilter;
    ProposalExecuted(
      id?: PromiseOrValue<BigNumberish> | null
    ): ProposalExecutedEventFilter;

    "ProposalQueued(uint256,uint256)"(
      id?: PromiseOrValue<BigNumberish> | null,
      eta?: null
    ): ProposalQueuedEventFilter;
    ProposalQueued(
      id?: PromiseOrValue<BigNumberish> | null,
      eta?: null
    ): ProposalQueuedEventFilter;

    "ProposalReceived(uint256,address[],uint256[],string[],bytes[],uint8)"(
      proposalId?: PromiseOrValue<BigNumberish> | null,
      targets?: null,
      values?: null,
      signatures?: null,
      calldatas?: null,
      proposalType?: null
    ): ProposalReceivedEventFilter;
    ProposalReceived(
      proposalId?: PromiseOrValue<BigNumberish> | null,
      targets?: null,
      values?: null,
      signatures?: null,
      calldatas?: null,
      proposalType?: null
    ): ProposalReceivedEventFilter;

    "ReceivePayloadFailed(uint16,bytes,uint64,bytes)"(
      srcChainId?: PromiseOrValue<BigNumberish> | null,
      srcAddress?: PromiseOrValue<BytesLike> | null,
      nonce?: null,
      reason?: null
    ): ReceivePayloadFailedEventFilter;
    ReceivePayloadFailed(
      srcChainId?: PromiseOrValue<BigNumberish> | null,
      srcAddress?: PromiseOrValue<BytesLike> | null,
      nonce?: null,
      reason?: null
    ): ReceivePayloadFailedEventFilter;

    "RetryMessageSuccess(uint16,bytes,uint64,bytes32)"(
      _srcChainId?: null,
      _srcAddress?: null,
      _nonce?: null,
      _payloadHash?: null
    ): RetryMessageSuccessEventFilter;
    RetryMessageSuccess(
      _srcChainId?: null,
      _srcAddress?: null,
      _nonce?: null,
      _payloadHash?: null
    ): RetryMessageSuccessEventFilter;

    "SetMaxDailyReceiveLimit(uint256,uint256)"(
      oldMaxLimit?: null,
      newMaxLimit?: null
    ): SetMaxDailyReceiveLimitEventFilter;
    SetMaxDailyReceiveLimit(
      oldMaxLimit?: null,
      newMaxLimit?: null
    ): SetMaxDailyReceiveLimitEventFilter;

    "SetMinDstGas(uint16,uint16,uint256)"(
      _dstChainId?: null,
      _type?: null,
      _minDstGas?: null
    ): SetMinDstGasEventFilter;
    SetMinDstGas(
      _dstChainId?: null,
      _type?: null,
      _minDstGas?: null
    ): SetMinDstGasEventFilter;

    "SetPrecrime(address)"(precrime?: null): SetPrecrimeEventFilter;
    SetPrecrime(precrime?: null): SetPrecrimeEventFilter;

    "SetSrcChainId(uint16,uint16)"(
      oldSrcChainId?: PromiseOrValue<BigNumberish> | null,
      newSrcChainId?: PromiseOrValue<BigNumberish> | null
    ): SetSrcChainIdEventFilter;
    SetSrcChainId(
      oldSrcChainId?: PromiseOrValue<BigNumberish> | null,
      newSrcChainId?: PromiseOrValue<BigNumberish> | null
    ): SetSrcChainIdEventFilter;

    "SetTimelockPendingAdmin(address,uint8)"(
      arg0?: null,
      arg1?: null
    ): SetTimelockPendingAdminEventFilter;
    SetTimelockPendingAdmin(
      arg0?: null,
      arg1?: null
    ): SetTimelockPendingAdminEventFilter;

    "SetTrustedRemote(uint16,bytes)"(
      _remoteChainId?: null,
      _path?: null
    ): SetTrustedRemoteEventFilter;
    SetTrustedRemote(
      _remoteChainId?: null,
      _path?: null
    ): SetTrustedRemoteEventFilter;

    "SetTrustedRemoteAddress(uint16,bytes)"(
      _remoteChainId?: null,
      _remoteAddress?: null
    ): SetTrustedRemoteAddressEventFilter;
    SetTrustedRemoteAddress(
      _remoteChainId?: null,
      _remoteAddress?: null
    ): SetTrustedRemoteAddressEventFilter;

    "TimelockAdded(uint8,address,address)"(
      routeType?: null,
      oldTimelock?: PromiseOrValue<string> | null,
      newTimelock?: PromiseOrValue<string> | null
    ): TimelockAddedEventFilter;
    TimelockAdded(
      routeType?: null,
      oldTimelock?: PromiseOrValue<string> | null,
      newTimelock?: PromiseOrValue<string> | null
    ): TimelockAddedEventFilter;

    "Unpaused(address)"(account?: null): UnpausedEventFilter;
    Unpaused(account?: null): UnpausedEventFilter;
  };

  estimateGas: {
    DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise<BigNumber>;

    addTimelocks(
      timelocks_: PromiseOrValue<string>[],
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    cancel(
      proposalId_: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    execute(
      proposalId_: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    failedMessages(
      arg0: PromiseOrValue<BigNumberish>,
      arg1: PromiseOrValue<BytesLike>,
      arg2: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    forceResumeReceive(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    getConfig(
      _version: PromiseOrValue<BigNumberish>,
      _chainId: PromiseOrValue<BigNumberish>,
      arg2: PromiseOrValue<string>,
      _configType: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getTrustedRemoteAddress(
      _remoteChainId: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    isTrustedRemote(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

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

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

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

    lzReceive(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      _nonce: PromiseOrValue<BigNumberish>,
      _payload: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

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

    minDstGasLookup(
      arg0: PromiseOrValue<BigNumberish>,
      arg1: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    nonblockingLzReceive(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      _nonce: PromiseOrValue<BigNumberish>,
      _payload: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

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

    pause(
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

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

    payloadSizeLimitLookup(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    proposalTimelocks(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    proposals(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    queued(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    renounceOwnership(
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    retryMessage(
      srcChainId_: PromiseOrValue<BigNumberish>,
      srcAddress_: PromiseOrValue<BytesLike>,
      nonce_: PromiseOrValue<BigNumberish>,
      payload_: PromiseOrValue<BytesLike>,
      overrides?: PayableOverrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    setConfig(
      _version: PromiseOrValue<BigNumberish>,
      _chainId: PromiseOrValue<BigNumberish>,
      _configType: PromiseOrValue<BigNumberish>,
      _config: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    setGuardian(
      newGuardian: PromiseOrValue<string>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    setMaxDailyReceiveLimit(
      limit_: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    setMinDstGas(
      _dstChainId: PromiseOrValue<BigNumberish>,
      _packetType: PromiseOrValue<BigNumberish>,
      _minGas: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    setPayloadSizeLimit(
      _dstChainId: PromiseOrValue<BigNumberish>,
      _size: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    setPrecrime(
      _precrime: PromiseOrValue<string>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    setReceiveVersion(
      _version: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    setSendVersion(
      _version: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    setSrcChainId(
      srcChainId_: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    setTimelockPendingAdmin(
      pendingAdmin_: PromiseOrValue<string>,
      proposalType_: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    setTrustedRemote(
      _remoteChainId: PromiseOrValue<BigNumberish>,
      _path: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    setTrustedRemoteAddress(
      _remoteChainId: PromiseOrValue<BigNumberish>,
      _remoteAddress: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

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

    state(
      proposalId_: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    transferOwnership(
      newOwner: PromiseOrValue<string>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;

    trustedRemoteLookup(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    unpause(
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<BigNumber>;
  };

  populateTransaction: {
    DEFAULT_PAYLOAD_SIZE_LIMIT(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    addTimelocks(
      timelocks_: PromiseOrValue<string>[],
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    cancel(
      proposalId_: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    execute(
      proposalId_: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    failedMessages(
      arg0: PromiseOrValue<BigNumberish>,
      arg1: PromiseOrValue<BytesLike>,
      arg2: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    forceResumeReceive(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    getConfig(
      _version: PromiseOrValue<BigNumberish>,
      _chainId: PromiseOrValue<BigNumberish>,
      arg2: PromiseOrValue<string>,
      _configType: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getTrustedRemoteAddress(
      _remoteChainId: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

    isTrustedRemote(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

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

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

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

    lzReceive(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      _nonce: PromiseOrValue<BigNumberish>,
      _payload: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

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

    minDstGasLookup(
      arg0: PromiseOrValue<BigNumberish>,
      arg1: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    nonblockingLzReceive(
      _srcChainId: PromiseOrValue<BigNumberish>,
      _srcAddress: PromiseOrValue<BytesLike>,
      _nonce: PromiseOrValue<BigNumberish>,
      _payload: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

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

    pause(
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

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

    payloadSizeLimitLookup(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

    proposalTimelocks(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    proposals(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    queued(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    renounceOwnership(
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    retryMessage(
      srcChainId_: PromiseOrValue<BigNumberish>,
      srcAddress_: PromiseOrValue<BytesLike>,
      nonce_: PromiseOrValue<BigNumberish>,
      payload_: PromiseOrValue<BytesLike>,
      overrides?: PayableOverrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    setConfig(
      _version: PromiseOrValue<BigNumberish>,
      _chainId: PromiseOrValue<BigNumberish>,
      _configType: PromiseOrValue<BigNumberish>,
      _config: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    setGuardian(
      newGuardian: PromiseOrValue<string>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    setMaxDailyReceiveLimit(
      limit_: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    setMinDstGas(
      _dstChainId: PromiseOrValue<BigNumberish>,
      _packetType: PromiseOrValue<BigNumberish>,
      _minGas: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    setPayloadSizeLimit(
      _dstChainId: PromiseOrValue<BigNumberish>,
      _size: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    setPrecrime(
      _precrime: PromiseOrValue<string>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    setReceiveVersion(
      _version: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    setSendVersion(
      _version: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    setSrcChainId(
      srcChainId_: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    setTimelockPendingAdmin(
      pendingAdmin_: PromiseOrValue<string>,
      proposalType_: PromiseOrValue<BigNumberish>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    setTrustedRemote(
      _remoteChainId: PromiseOrValue<BigNumberish>,
      _path: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    setTrustedRemoteAddress(
      _remoteChainId: PromiseOrValue<BigNumberish>,
      _remoteAddress: PromiseOrValue<BytesLike>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

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

    state(
      proposalId_: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    transferOwnership(
      newOwner: PromiseOrValue<string>,
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;

    trustedRemoteLookup(
      arg0: PromiseOrValue<BigNumberish>,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    unpause(
      overrides?: Overrides & { from?: PromiseOrValue<string> }
    ): Promise<PopulatedTransaction>;
  };
}
