/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */

import {
  ethers,
  EventFilter,
  Signer,
  BigNumber,
  BigNumberish,
  PopulatedTransaction,
  BaseContract,
  ContractTransaction,
  Overrides,
  PayableOverrides,
  CallOverrides,
} from "ethers";
import { BytesLike } from "@ethersproject/bytes";
import { Listener, Provider } from "@ethersproject/providers";
import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi";
import type { TypedEventFilter, TypedEvent, TypedListener } from "./common";

interface XVSProxyOFTSrcInterface extends ethers.utils.Interface {
  functions: {
    "DEFAULT_PAYLOAD_SIZE_LIMIT()": FunctionFragment;
    "NO_EXTRA_GAS()": FunctionFragment;
    "PT_SEND()": FunctionFragment;
    "PT_SEND_AND_CALL()": FunctionFragment;
    "callOnOFTReceived(uint16,bytes,uint64,bytes32,address,uint256,bytes,uint256)": FunctionFragment;
    "chainIdToLast24HourReceiveWindowStart(uint16)": FunctionFragment;
    "chainIdToLast24HourReceived(uint16)": FunctionFragment;
    "chainIdToLast24HourTransferred(uint16)": FunctionFragment;
    "chainIdToLast24HourWindowStart(uint16)": FunctionFragment;
    "chainIdToMaxDailyLimit(uint16)": FunctionFragment;
    "chainIdToMaxDailyReceiveLimit(uint16)": FunctionFragment;
    "chainIdToMaxSingleReceiveTransactionLimit(uint16)": FunctionFragment;
    "chainIdToMaxSingleTransactionLimit(uint16)": FunctionFragment;
    "circulatingSupply()": FunctionFragment;
    "creditedPackets(uint16,bytes,uint64)": FunctionFragment;
    "dropFailedMessage(uint16,bytes,uint64)": FunctionFragment;
    "estimateSendAndCallFee(uint16,bytes32,uint256,bytes,uint64,bool,bytes)": FunctionFragment;
    "estimateSendFee(uint16,bytes32,uint256,bool,bytes)": FunctionFragment;
    "failedMessages(uint16,bytes,uint64)": FunctionFragment;
    "fallbackDeposit(address,uint256)": FunctionFragment;
    "fallbackWithdraw(address,uint256)": FunctionFragment;
    "forceResumeReceive(uint16,bytes)": FunctionFragment;
    "getConfig(uint16,uint16,address,uint256)": FunctionFragment;
    "getTrustedRemoteAddress(uint16)": FunctionFragment;
    "isEligibleToSend(address,uint16,uint256)": FunctionFragment;
    "isTrustedRemote(uint16,bytes)": FunctionFragment;
    "lzEndpoint()": FunctionFragment;
    "lzReceive(uint16,bytes,uint64,bytes)": FunctionFragment;
    "minDstGasLookup(uint16,uint16)": FunctionFragment;
    "nonblockingLzReceive(uint16,bytes,uint64,bytes)": FunctionFragment;
    "oracle()": FunctionFragment;
    "outboundAmount()": FunctionFragment;
    "owner()": FunctionFragment;
    "pause()": FunctionFragment;
    "paused()": FunctionFragment;
    "payloadSizeLimitLookup(uint16)": FunctionFragment;
    "precrime()": FunctionFragment;
    "removeTrustedRemote(uint16)": FunctionFragment;
    "renounceOwnership()": FunctionFragment;
    "retryMessage(uint16,bytes,uint64,bytes)": FunctionFragment;
    "sendAndCall(address,uint16,bytes32,uint256,bytes,uint64,(address,address,bytes))": FunctionFragment;
    "sendAndCallEnabled()": FunctionFragment;
    "sendFrom(address,uint16,bytes32,uint256,(address,address,bytes))": FunctionFragment;
    "setConfig(uint16,uint16,uint256,bytes)": FunctionFragment;
    "setMaxDailyLimit(uint16,uint256)": FunctionFragment;
    "setMaxDailyReceiveLimit(uint16,uint256)": FunctionFragment;
    "setMaxSingleReceiveTransactionLimit(uint16,uint256)": FunctionFragment;
    "setMaxSingleTransactionLimit(uint16,uint256)": FunctionFragment;
    "setMinDstGas(uint16,uint16,uint256)": FunctionFragment;
    "setOracle(address)": FunctionFragment;
    "setPayloadSizeLimit(uint16,uint256)": FunctionFragment;
    "setPrecrime(address)": FunctionFragment;
    "setReceiveVersion(uint16)": FunctionFragment;
    "setSendVersion(uint16)": FunctionFragment;
    "setTrustedRemote(uint16,bytes)": FunctionFragment;
    "setTrustedRemoteAddress(uint16,bytes)": FunctionFragment;
    "setWhitelist(address,bool)": FunctionFragment;
    "sharedDecimals()": FunctionFragment;
    "supportsInterface(bytes4)": FunctionFragment;
    "sweepToken(address,address,uint256)": FunctionFragment;
    "token()": FunctionFragment;
    "transferOwnership(address)": FunctionFragment;
    "trustedRemoteLookup(uint16)": FunctionFragment;
    "unpause()": FunctionFragment;
    "updateSendAndCallEnabled(bool)": FunctionFragment;
    "whitelist(address)": FunctionFragment;
  };

  encodeFunctionData(
    functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "NO_EXTRA_GAS",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "PT_SEND", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "PT_SEND_AND_CALL",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "callOnOFTReceived",
    values: [
      BigNumberish,
      BytesLike,
      BigNumberish,
      BytesLike,
      string,
      BigNumberish,
      BytesLike,
      BigNumberish
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "chainIdToLast24HourReceiveWindowStart",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "chainIdToLast24HourReceived",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "chainIdToLast24HourTransferred",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "chainIdToLast24HourWindowStart",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "chainIdToMaxDailyLimit",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "chainIdToMaxDailyReceiveLimit",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "chainIdToMaxSingleReceiveTransactionLimit",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "chainIdToMaxSingleTransactionLimit",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "circulatingSupply",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "creditedPackets",
    values: [BigNumberish, BytesLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "dropFailedMessage",
    values: [BigNumberish, BytesLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "estimateSendAndCallFee",
    values: [
      BigNumberish,
      BytesLike,
      BigNumberish,
      BytesLike,
      BigNumberish,
      boolean,
      BytesLike
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "estimateSendFee",
    values: [BigNumberish, BytesLike, BigNumberish, boolean, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "failedMessages",
    values: [BigNumberish, BytesLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "fallbackDeposit",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "fallbackWithdraw",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "forceResumeReceive",
    values: [BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getConfig",
    values: [BigNumberish, BigNumberish, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getTrustedRemoteAddress",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isEligibleToSend",
    values: [string, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isTrustedRemote",
    values: [BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "lzEndpoint",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "lzReceive",
    values: [BigNumberish, BytesLike, BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "minDstGasLookup",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "nonblockingLzReceive",
    values: [BigNumberish, BytesLike, BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(functionFragment: "oracle", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "outboundAmount",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "owner", values?: undefined): string;
  encodeFunctionData(functionFragment: "pause", values?: undefined): string;
  encodeFunctionData(functionFragment: "paused", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "payloadSizeLimitLookup",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "precrime", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "removeTrustedRemote",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "renounceOwnership",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "retryMessage",
    values: [BigNumberish, BytesLike, BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "sendAndCall",
    values: [
      string,
      BigNumberish,
      BytesLike,
      BigNumberish,
      BytesLike,
      BigNumberish,
      {
        refundAddress: string;
        zroPaymentAddress: string;
        adapterParams: BytesLike;
      }
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "sendAndCallEnabled",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "sendFrom",
    values: [
      string,
      BigNumberish,
      BytesLike,
      BigNumberish,
      {
        refundAddress: string;
        zroPaymentAddress: string;
        adapterParams: BytesLike;
      }
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "setConfig",
    values: [BigNumberish, BigNumberish, BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setMaxDailyLimit",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setMaxDailyReceiveLimit",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setMaxSingleReceiveTransactionLimit",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setMaxSingleTransactionLimit",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setMinDstGas",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "setOracle", values: [string]): string;
  encodeFunctionData(
    functionFragment: "setPayloadSizeLimit",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "setPrecrime", values: [string]): string;
  encodeFunctionData(
    functionFragment: "setReceiveVersion",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setSendVersion",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setTrustedRemote",
    values: [BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setTrustedRemoteAddress",
    values: [BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setWhitelist",
    values: [string, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "sharedDecimals",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "supportsInterface",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "sweepToken",
    values: [string, string, BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "token", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "transferOwnership",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "trustedRemoteLookup",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "unpause", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "updateSendAndCallEnabled",
    values: [boolean]
  ): string;
  encodeFunctionData(functionFragment: "whitelist", values: [string]): string;

  decodeFunctionResult(
    functionFragment: "DEFAULT_PAYLOAD_SIZE_LIMIT",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "NO_EXTRA_GAS",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "PT_SEND", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "PT_SEND_AND_CALL",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "callOnOFTReceived",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "chainIdToLast24HourReceiveWindowStart",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "chainIdToLast24HourReceived",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "chainIdToLast24HourTransferred",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "chainIdToLast24HourWindowStart",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "chainIdToMaxDailyLimit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "chainIdToMaxDailyReceiveLimit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "chainIdToMaxSingleReceiveTransactionLimit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "chainIdToMaxSingleTransactionLimit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "circulatingSupply",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "creditedPackets",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "dropFailedMessage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "estimateSendAndCallFee",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "estimateSendFee",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "failedMessages",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "fallbackDeposit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "fallbackWithdraw",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "forceResumeReceive",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "getConfig", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getTrustedRemoteAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isEligibleToSend",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isTrustedRemote",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "lzEndpoint", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "lzReceive", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "minDstGasLookup",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "nonblockingLzReceive",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "oracle", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "outboundAmount",
    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: "removeTrustedRemote",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "renounceOwnership",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "retryMessage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "sendAndCall",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "sendAndCallEnabled",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "sendFrom", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "setConfig", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "setMaxDailyLimit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMaxDailyReceiveLimit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMaxSingleReceiveTransactionLimit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMaxSingleTransactionLimit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMinDstGas",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "setOracle", 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: "setTrustedRemote",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTrustedRemoteAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setWhitelist",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "sharedDecimals",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "supportsInterface",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "sweepToken", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "token", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "transferOwnership",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "trustedRemoteLookup",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "updateSendAndCallEnabled",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "whitelist", data: BytesLike): Result;

  events: {
    "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)": EventFragment;
    "DropFailedMessage(uint16,bytes,uint64)": EventFragment;
    "FallbackDeposit(address,uint256)": EventFragment;
    "FallbackWithdraw(address,uint256)": EventFragment;
    "InnerTokenAdded(address)": EventFragment;
    "MessageFailed(uint16,bytes,uint64,bytes,bytes)": EventFragment;
    "NonContractAddress(address)": EventFragment;
    "OracleChanged(address,address)": EventFragment;
    "OwnershipTransferred(address,address)": EventFragment;
    "Paused(address)": EventFragment;
    "ReceiveFromChain(uint16,address,uint256)": EventFragment;
    "RetryMessageSuccess(uint16,bytes,uint64,bytes32)": EventFragment;
    "SendToChain(uint16,address,bytes32,uint256)": EventFragment;
    "SetMaxDailyLimit(uint16,uint256,uint256)": EventFragment;
    "SetMaxDailyReceiveLimit(uint16,uint256,uint256)": EventFragment;
    "SetMaxSingleReceiveTransactionLimit(uint16,uint256,uint256)": EventFragment;
    "SetMaxSingleTransactionLimit(uint16,uint256,uint256)": EventFragment;
    "SetMinDstGas(uint16,uint16,uint256)": EventFragment;
    "SetPrecrime(address)": EventFragment;
    "SetTrustedRemote(uint16,bytes)": EventFragment;
    "SetTrustedRemoteAddress(uint16,bytes)": EventFragment;
    "SetWhitelist(address,bool)": EventFragment;
    "SweepToken(address,address,uint256)": EventFragment;
    "TrustedRemoteRemoved(uint16)": EventFragment;
    "Unpaused(address)": EventFragment;
    "UpdateSendAndCallEnabled(bool)": EventFragment;
  };

  getEvent(nameOrSignatureOrTopic: "CallOFTReceivedSuccess"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "DropFailedMessage"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "FallbackDeposit"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "FallbackWithdraw"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "InnerTokenAdded"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "MessageFailed"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "NonContractAddress"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "OracleChanged"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Paused"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ReceiveFromChain"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "RetryMessageSuccess"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SendToChain"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SetMaxDailyLimit"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SetMaxDailyReceiveLimit"): EventFragment;
  getEvent(
    nameOrSignatureOrTopic: "SetMaxSingleReceiveTransactionLimit"
  ): EventFragment;
  getEvent(
    nameOrSignatureOrTopic: "SetMaxSingleTransactionLimit"
  ): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SetMinDstGas"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SetPrecrime"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SetTrustedRemote"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SetTrustedRemoteAddress"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SetWhitelist"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SweepToken"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "TrustedRemoteRemoved"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Unpaused"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UpdateSendAndCallEnabled"): EventFragment;
}

export type CallOFTReceivedSuccessEvent = TypedEvent<
  [number, string, BigNumber, string] & {
    _srcChainId: number;
    _srcAddress: string;
    _nonce: BigNumber;
    _hash: string;
  }
>;

export type DropFailedMessageEvent = TypedEvent<
  [number, string, BigNumber] & {
    srcChainId: number;
    srcAddress: string;
    nonce: BigNumber;
  }
>;

export type FallbackDepositEvent = TypedEvent<
  [string, BigNumber] & { from: string; amount_: BigNumber }
>;

export type FallbackWithdrawEvent = TypedEvent<
  [string, BigNumber] & { to: string; amount: BigNumber }
>;

export type InnerTokenAddedEvent = TypedEvent<
  [string] & { innerToken: string }
>;

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

export type NonContractAddressEvent = TypedEvent<
  [string] & { _address: string }
>;

export type OracleChangedEvent = TypedEvent<
  [string, string] & { oldOracle: string; newOracle: string }
>;

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

export type PausedEvent = TypedEvent<[string] & { account: string }>;

export type ReceiveFromChainEvent = TypedEvent<
  [number, string, BigNumber] & {
    _srcChainId: number;
    _to: string;
    _amount: BigNumber;
  }
>;

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

export type SendToChainEvent = TypedEvent<
  [number, string, string, BigNumber] & {
    _dstChainId: number;
    _from: string;
    _toAddress: string;
    _amount: BigNumber;
  }
>;

export type SetMaxDailyLimitEvent = TypedEvent<
  [number, BigNumber, BigNumber] & {
    chainId: number;
    oldMaxLimit: BigNumber;
    newMaxLimit: BigNumber;
  }
>;

export type SetMaxDailyReceiveLimitEvent = TypedEvent<
  [number, BigNumber, BigNumber] & {
    chainId: number;
    oldMaxLimit: BigNumber;
    newMaxLimit: BigNumber;
  }
>;

export type SetMaxSingleReceiveTransactionLimitEvent = TypedEvent<
  [number, BigNumber, BigNumber] & {
    chainId: number;
    oldMaxLimit: BigNumber;
    newMaxLimit: BigNumber;
  }
>;

export type SetMaxSingleTransactionLimitEvent = TypedEvent<
  [number, BigNumber, BigNumber] & {
    chainId: number;
    oldMaxLimit: BigNumber;
    newMaxLimit: BigNumber;
  }
>;

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

export type SetPrecrimeEvent = TypedEvent<[string] & { precrime: string }>;

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

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

export type SetWhitelistEvent = TypedEvent<
  [string, boolean] & { addr: string; isWhitelist: boolean }
>;

export type SweepTokenEvent = TypedEvent<
  [string, string, BigNumber] & {
    token: string;
    to: string;
    sweepAmount: BigNumber;
  }
>;

export type TrustedRemoteRemovedEvent = TypedEvent<
  [number] & { chainId: number }
>;

export type UnpausedEvent = TypedEvent<[string] & { account: string }>;

export type UpdateSendAndCallEnabledEvent = TypedEvent<
  [boolean] & { enabled: boolean }
>;

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

  listeners<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
  ): Array<TypedListener<EventArgsArray, EventArgsObject>>;
  off<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
    listener: TypedListener<EventArgsArray, EventArgsObject>
  ): this;
  on<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
    listener: TypedListener<EventArgsArray, EventArgsObject>
  ): this;
  once<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
    listener: TypedListener<EventArgsArray, EventArgsObject>
  ): this;
  removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
    listener: TypedListener<EventArgsArray, EventArgsObject>
  ): this;
  removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
  ): this;

  listeners(eventName?: string): Array<Listener>;
  off(eventName: string, listener: Listener): this;
  on(eventName: string, listener: Listener): this;
  once(eventName: string, listener: Listener): this;
  removeListener(eventName: string, listener: Listener): this;
  removeAllListeners(eventName?: string): this;

  queryFilter<EventArgsArray extends Array<any>, EventArgsObject>(
    event: TypedEventFilter<EventArgsArray, EventArgsObject>,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;

  interface: XVSProxyOFTSrcInterface;

  functions: {
    DEFAULT_PAYLOAD_SIZE_LIMIT(overrides?: CallOverrides): Promise<[BigNumber]>;

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

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

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

    callOnOFTReceived(
      _srcChainId: BigNumberish,
      _srcAddress: BytesLike,
      _nonce: BigNumberish,
      _from: BytesLike,
      _to: string,
      _amount: BigNumberish,
      _payload: BytesLike,
      _gasForCall: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

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

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

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

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

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

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

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

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

    creditedPackets(
      arg0: BigNumberish,
      arg1: BytesLike,
      arg2: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    dropFailedMessage(
      srcChainId_: BigNumberish,
      srcAddress_: BytesLike,
      nonce_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    estimateSendAndCallFee(
      _dstChainId: BigNumberish,
      _toAddress: BytesLike,
      _amount: BigNumberish,
      _payload: BytesLike,
      _dstGasForCall: BigNumberish,
      _useZro: boolean,
      _adapterParams: BytesLike,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber }
    >;

    estimateSendFee(
      _dstChainId: BigNumberish,
      _toAddress: BytesLike,
      _amount: BigNumberish,
      _useZro: boolean,
      _adapterParams: BytesLike,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber }
    >;

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

    fallbackDeposit(
      depositor_: string,
      amount_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    fallbackWithdraw(
      to_: string,
      amount_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

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

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

    isEligibleToSend(
      from_: string,
      dstChainId_: BigNumberish,
      amount_: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [
        boolean,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        boolean
      ] & {
        eligibleToSend: boolean;
        maxSingleTransactionLimit: BigNumber;
        maxDailyLimit: BigNumber;
        amountInUsd: BigNumber;
        transferredInWindow: BigNumber;
        last24HourWindowStart: BigNumber;
        isWhiteListedUser: boolean;
      }
    >;

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

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

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

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

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

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

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

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

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

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

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

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

    removeTrustedRemote(
      remoteChainId_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

    retryMessage(
      _srcChainId: BigNumberish,
      _srcAddress: BytesLike,
      _nonce: BigNumberish,
      _payload: BytesLike,
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    sendAndCall(
      from_: string,
      dstChainId_: BigNumberish,
      toAddress_: BytesLike,
      amount_: BigNumberish,
      payload_: BytesLike,
      dstGasForCall_: BigNumberish,
      callparams_: {
        refundAddress: string;
        zroPaymentAddress: string;
        adapterParams: BytesLike;
      },
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

    sendFrom(
      _from: string,
      _dstChainId: BigNumberish,
      _toAddress: BytesLike,
      _amount: BigNumberish,
      _callParams: {
        refundAddress: string;
        zroPaymentAddress: string;
        adapterParams: BytesLike;
      },
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

    setMaxDailyLimit(
      chainId_: BigNumberish,
      limit_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

    setMaxSingleReceiveTransactionLimit(
      chainId_: BigNumberish,
      limit_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    setMaxSingleTransactionLimit(
      chainId_: BigNumberish,
      limit_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

    setOracle(
      oracleAddress_: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

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

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

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

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

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

    setWhitelist(
      user_: string,
      val_: boolean,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    sweepToken(
      token_: string,
      to_: string,
      amount_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

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

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

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

    updateSendAndCallEnabled(
      enabled_: boolean,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    whitelist(arg0: string, overrides?: CallOverrides): Promise<[boolean]>;
  };

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

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

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

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

  callOnOFTReceived(
    _srcChainId: BigNumberish,
    _srcAddress: BytesLike,
    _nonce: BigNumberish,
    _from: BytesLike,
    _to: string,
    _amount: BigNumberish,
    _payload: BytesLike,
    _gasForCall: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

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

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

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

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

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

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

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

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

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

  creditedPackets(
    arg0: BigNumberish,
    arg1: BytesLike,
    arg2: BigNumberish,
    overrides?: CallOverrides
  ): Promise<boolean>;

  dropFailedMessage(
    srcChainId_: BigNumberish,
    srcAddress_: BytesLike,
    nonce_: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  estimateSendAndCallFee(
    _dstChainId: BigNumberish,
    _toAddress: BytesLike,
    _amount: BigNumberish,
    _payload: BytesLike,
    _dstGasForCall: BigNumberish,
    _useZro: boolean,
    _adapterParams: BytesLike,
    overrides?: CallOverrides
  ): Promise<
    [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber }
  >;

  estimateSendFee(
    _dstChainId: BigNumberish,
    _toAddress: BytesLike,
    _amount: BigNumberish,
    _useZro: boolean,
    _adapterParams: BytesLike,
    overrides?: CallOverrides
  ): Promise<
    [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber }
  >;

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

  fallbackDeposit(
    depositor_: string,
    amount_: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  fallbackWithdraw(
    to_: string,
    amount_: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

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

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

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

  isEligibleToSend(
    from_: string,
    dstChainId_: BigNumberish,
    amount_: BigNumberish,
    overrides?: CallOverrides
  ): Promise<
    [
      boolean,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      BigNumber,
      boolean
    ] & {
      eligibleToSend: boolean;
      maxSingleTransactionLimit: BigNumber;
      maxDailyLimit: BigNumber;
      amountInUsd: BigNumber;
      transferredInWindow: BigNumber;
      last24HourWindowStart: BigNumber;
      isWhiteListedUser: boolean;
    }
  >;

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

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

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

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

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

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

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

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

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

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

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

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

  removeTrustedRemote(
    remoteChainId_: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

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

  retryMessage(
    _srcChainId: BigNumberish,
    _srcAddress: BytesLike,
    _nonce: BigNumberish,
    _payload: BytesLike,
    overrides?: PayableOverrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  sendAndCall(
    from_: string,
    dstChainId_: BigNumberish,
    toAddress_: BytesLike,
    amount_: BigNumberish,
    payload_: BytesLike,
    dstGasForCall_: BigNumberish,
    callparams_: {
      refundAddress: string;
      zroPaymentAddress: string;
      adapterParams: BytesLike;
    },
    overrides?: PayableOverrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

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

  sendFrom(
    _from: string,
    _dstChainId: BigNumberish,
    _toAddress: BytesLike,
    _amount: BigNumberish,
    _callParams: {
      refundAddress: string;
      zroPaymentAddress: string;
      adapterParams: BytesLike;
    },
    overrides?: PayableOverrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

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

  setMaxDailyLimit(
    chainId_: BigNumberish,
    limit_: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

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

  setMaxSingleReceiveTransactionLimit(
    chainId_: BigNumberish,
    limit_: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  setMaxSingleTransactionLimit(
    chainId_: BigNumberish,
    limit_: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

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

  setOracle(
    oracleAddress_: string,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

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

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

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

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

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

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

  setWhitelist(
    user_: string,
    val_: boolean,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

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

  supportsInterface(
    interfaceId: BytesLike,
    overrides?: CallOverrides
  ): Promise<boolean>;

  sweepToken(
    token_: string,
    to_: string,
    amount_: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

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

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

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

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

  updateSendAndCallEnabled(
    enabled_: boolean,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  whitelist(arg0: string, overrides?: CallOverrides): Promise<boolean>;

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

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

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

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

    callOnOFTReceived(
      _srcChainId: BigNumberish,
      _srcAddress: BytesLike,
      _nonce: BigNumberish,
      _from: BytesLike,
      _to: string,
      _amount: BigNumberish,
      _payload: BytesLike,
      _gasForCall: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

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

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

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

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

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

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

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

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

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

    creditedPackets(
      arg0: BigNumberish,
      arg1: BytesLike,
      arg2: BigNumberish,
      overrides?: CallOverrides
    ): Promise<boolean>;

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

    estimateSendAndCallFee(
      _dstChainId: BigNumberish,
      _toAddress: BytesLike,
      _amount: BigNumberish,
      _payload: BytesLike,
      _dstGasForCall: BigNumberish,
      _useZro: boolean,
      _adapterParams: BytesLike,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber }
    >;

    estimateSendFee(
      _dstChainId: BigNumberish,
      _toAddress: BytesLike,
      _amount: BigNumberish,
      _useZro: boolean,
      _adapterParams: BytesLike,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, BigNumber] & { nativeFee: BigNumber; zroFee: BigNumber }
    >;

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

    fallbackDeposit(
      depositor_: string,
      amount_: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    fallbackWithdraw(
      to_: string,
      amount_: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

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

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

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

    isEligibleToSend(
      from_: string,
      dstChainId_: BigNumberish,
      amount_: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [
        boolean,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        boolean
      ] & {
        eligibleToSend: boolean;
        maxSingleTransactionLimit: BigNumber;
        maxDailyLimit: BigNumber;
        amountInUsd: BigNumber;
        transferredInWindow: BigNumber;
        last24HourWindowStart: BigNumber;
        isWhiteListedUser: boolean;
      }
    >;

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

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

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

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

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

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

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

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

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

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

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

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

    removeTrustedRemote(
      remoteChainId_: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

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

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

    sendAndCall(
      from_: string,
      dstChainId_: BigNumberish,
      toAddress_: BytesLike,
      amount_: BigNumberish,
      payload_: BytesLike,
      dstGasForCall_: BigNumberish,
      callparams_: {
        refundAddress: string;
        zroPaymentAddress: string;
        adapterParams: BytesLike;
      },
      overrides?: CallOverrides
    ): Promise<void>;

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

    sendFrom(
      _from: string,
      _dstChainId: BigNumberish,
      _toAddress: BytesLike,
      _amount: BigNumberish,
      _callParams: {
        refundAddress: string;
        zroPaymentAddress: string;
        adapterParams: BytesLike;
      },
      overrides?: CallOverrides
    ): Promise<void>;

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

    setMaxDailyLimit(
      chainId_: BigNumberish,
      limit_: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

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

    setMaxSingleReceiveTransactionLimit(
      chainId_: BigNumberish,
      limit_: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    setMaxSingleTransactionLimit(
      chainId_: BigNumberish,
      limit_: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

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

    setOracle(oracleAddress_: string, overrides?: CallOverrides): Promise<void>;

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

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

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

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

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

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

    setWhitelist(
      user_: string,
      val_: boolean,
      overrides?: CallOverrides
    ): Promise<void>;

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

    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<boolean>;

    sweepToken(
      token_: string,
      to_: string,
      amount_: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

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

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

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

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

    updateSendAndCallEnabled(
      enabled_: boolean,
      overrides?: CallOverrides
    ): Promise<void>;

    whitelist(arg0: string, overrides?: CallOverrides): Promise<boolean>;
  };

  filters: {
    "CallOFTReceivedSuccess(uint16,bytes,uint64,bytes32)"(
      _srcChainId?: BigNumberish | null,
      _srcAddress?: null,
      _nonce?: null,
      _hash?: null
    ): TypedEventFilter<
      [number, string, BigNumber, string],
      {
        _srcChainId: number;
        _srcAddress: string;
        _nonce: BigNumber;
        _hash: string;
      }
    >;

    CallOFTReceivedSuccess(
      _srcChainId?: BigNumberish | null,
      _srcAddress?: null,
      _nonce?: null,
      _hash?: null
    ): TypedEventFilter<
      [number, string, BigNumber, string],
      {
        _srcChainId: number;
        _srcAddress: string;
        _nonce: BigNumber;
        _hash: string;
      }
    >;

    "DropFailedMessage(uint16,bytes,uint64)"(
      srcChainId?: null,
      srcAddress?: BytesLike | null,
      nonce?: null
    ): TypedEventFilter<
      [number, string, BigNumber],
      { srcChainId: number; srcAddress: string; nonce: BigNumber }
    >;

    DropFailedMessage(
      srcChainId?: null,
      srcAddress?: BytesLike | null,
      nonce?: null
    ): TypedEventFilter<
      [number, string, BigNumber],
      { srcChainId: number; srcAddress: string; nonce: BigNumber }
    >;

    "FallbackDeposit(address,uint256)"(
      from?: string | null,
      amount_?: null
    ): TypedEventFilter<
      [string, BigNumber],
      { from: string; amount_: BigNumber }
    >;

    FallbackDeposit(
      from?: string | null,
      amount_?: null
    ): TypedEventFilter<
      [string, BigNumber],
      { from: string; amount_: BigNumber }
    >;

    "FallbackWithdraw(address,uint256)"(
      to?: string | null,
      amount?: null
    ): TypedEventFilter<[string, BigNumber], { to: string; amount: BigNumber }>;

    FallbackWithdraw(
      to?: string | null,
      amount?: null
    ): TypedEventFilter<[string, BigNumber], { to: string; amount: BigNumber }>;

    "InnerTokenAdded(address)"(
      innerToken?: string | null
    ): TypedEventFilter<[string], { innerToken: string }>;

    InnerTokenAdded(
      innerToken?: string | null
    ): TypedEventFilter<[string], { innerToken: string }>;

    "MessageFailed(uint16,bytes,uint64,bytes,bytes)"(
      _srcChainId?: null,
      _srcAddress?: null,
      _nonce?: null,
      _payload?: null,
      _reason?: null
    ): TypedEventFilter<
      [number, string, BigNumber, string, string],
      {
        _srcChainId: number;
        _srcAddress: string;
        _nonce: BigNumber;
        _payload: string;
        _reason: string;
      }
    >;

    MessageFailed(
      _srcChainId?: null,
      _srcAddress?: null,
      _nonce?: null,
      _payload?: null,
      _reason?: null
    ): TypedEventFilter<
      [number, string, BigNumber, string, string],
      {
        _srcChainId: number;
        _srcAddress: string;
        _nonce: BigNumber;
        _payload: string;
        _reason: string;
      }
    >;

    "NonContractAddress(address)"(
      _address?: null
    ): TypedEventFilter<[string], { _address: string }>;

    NonContractAddress(
      _address?: null
    ): TypedEventFilter<[string], { _address: string }>;

    "OracleChanged(address,address)"(
      oldOracle?: string | null,
      newOracle?: string | null
    ): TypedEventFilter<
      [string, string],
      { oldOracle: string; newOracle: string }
    >;

    OracleChanged(
      oldOracle?: string | null,
      newOracle?: string | null
    ): TypedEventFilter<
      [string, string],
      { oldOracle: string; newOracle: string }
    >;

    "OwnershipTransferred(address,address)"(
      previousOwner?: string | null,
      newOwner?: string | null
    ): TypedEventFilter<
      [string, string],
      { previousOwner: string; newOwner: string }
    >;

    OwnershipTransferred(
      previousOwner?: string | null,
      newOwner?: string | null
    ): TypedEventFilter<
      [string, string],
      { previousOwner: string; newOwner: string }
    >;

    "Paused(address)"(
      account?: null
    ): TypedEventFilter<[string], { account: string }>;

    Paused(account?: null): TypedEventFilter<[string], { account: string }>;

    "ReceiveFromChain(uint16,address,uint256)"(
      _srcChainId?: BigNumberish | null,
      _to?: string | null,
      _amount?: null
    ): TypedEventFilter<
      [number, string, BigNumber],
      { _srcChainId: number; _to: string; _amount: BigNumber }
    >;

    ReceiveFromChain(
      _srcChainId?: BigNumberish | null,
      _to?: string | null,
      _amount?: null
    ): TypedEventFilter<
      [number, string, BigNumber],
      { _srcChainId: number; _to: string; _amount: BigNumber }
    >;

    "RetryMessageSuccess(uint16,bytes,uint64,bytes32)"(
      _srcChainId?: null,
      _srcAddress?: null,
      _nonce?: null,
      _payloadHash?: null
    ): TypedEventFilter<
      [number, string, BigNumber, string],
      {
        _srcChainId: number;
        _srcAddress: string;
        _nonce: BigNumber;
        _payloadHash: string;
      }
    >;

    RetryMessageSuccess(
      _srcChainId?: null,
      _srcAddress?: null,
      _nonce?: null,
      _payloadHash?: null
    ): TypedEventFilter<
      [number, string, BigNumber, string],
      {
        _srcChainId: number;
        _srcAddress: string;
        _nonce: BigNumber;
        _payloadHash: string;
      }
    >;

    "SendToChain(uint16,address,bytes32,uint256)"(
      _dstChainId?: BigNumberish | null,
      _from?: string | null,
      _toAddress?: BytesLike | null,
      _amount?: null
    ): TypedEventFilter<
      [number, string, string, BigNumber],
      {
        _dstChainId: number;
        _from: string;
        _toAddress: string;
        _amount: BigNumber;
      }
    >;

    SendToChain(
      _dstChainId?: BigNumberish | null,
      _from?: string | null,
      _toAddress?: BytesLike | null,
      _amount?: null
    ): TypedEventFilter<
      [number, string, string, BigNumber],
      {
        _dstChainId: number;
        _from: string;
        _toAddress: string;
        _amount: BigNumber;
      }
    >;

    "SetMaxDailyLimit(uint16,uint256,uint256)"(
      chainId?: null,
      oldMaxLimit?: null,
      newMaxLimit?: null
    ): TypedEventFilter<
      [number, BigNumber, BigNumber],
      { chainId: number; oldMaxLimit: BigNumber; newMaxLimit: BigNumber }
    >;

    SetMaxDailyLimit(
      chainId?: null,
      oldMaxLimit?: null,
      newMaxLimit?: null
    ): TypedEventFilter<
      [number, BigNumber, BigNumber],
      { chainId: number; oldMaxLimit: BigNumber; newMaxLimit: BigNumber }
    >;

    "SetMaxDailyReceiveLimit(uint16,uint256,uint256)"(
      chainId?: null,
      oldMaxLimit?: null,
      newMaxLimit?: null
    ): TypedEventFilter<
      [number, BigNumber, BigNumber],
      { chainId: number; oldMaxLimit: BigNumber; newMaxLimit: BigNumber }
    >;

    SetMaxDailyReceiveLimit(
      chainId?: null,
      oldMaxLimit?: null,
      newMaxLimit?: null
    ): TypedEventFilter<
      [number, BigNumber, BigNumber],
      { chainId: number; oldMaxLimit: BigNumber; newMaxLimit: BigNumber }
    >;

    "SetMaxSingleReceiveTransactionLimit(uint16,uint256,uint256)"(
      chainId?: null,
      oldMaxLimit?: null,
      newMaxLimit?: null
    ): TypedEventFilter<
      [number, BigNumber, BigNumber],
      { chainId: number; oldMaxLimit: BigNumber; newMaxLimit: BigNumber }
    >;

    SetMaxSingleReceiveTransactionLimit(
      chainId?: null,
      oldMaxLimit?: null,
      newMaxLimit?: null
    ): TypedEventFilter<
      [number, BigNumber, BigNumber],
      { chainId: number; oldMaxLimit: BigNumber; newMaxLimit: BigNumber }
    >;

    "SetMaxSingleTransactionLimit(uint16,uint256,uint256)"(
      chainId?: null,
      oldMaxLimit?: null,
      newMaxLimit?: null
    ): TypedEventFilter<
      [number, BigNumber, BigNumber],
      { chainId: number; oldMaxLimit: BigNumber; newMaxLimit: BigNumber }
    >;

    SetMaxSingleTransactionLimit(
      chainId?: null,
      oldMaxLimit?: null,
      newMaxLimit?: null
    ): TypedEventFilter<
      [number, BigNumber, BigNumber],
      { chainId: number; oldMaxLimit: BigNumber; newMaxLimit: BigNumber }
    >;

    "SetMinDstGas(uint16,uint16,uint256)"(
      _dstChainId?: null,
      _type?: null,
      _minDstGas?: null
    ): TypedEventFilter<
      [number, number, BigNumber],
      { _dstChainId: number; _type: number; _minDstGas: BigNumber }
    >;

    SetMinDstGas(
      _dstChainId?: null,
      _type?: null,
      _minDstGas?: null
    ): TypedEventFilter<
      [number, number, BigNumber],
      { _dstChainId: number; _type: number; _minDstGas: BigNumber }
    >;

    "SetPrecrime(address)"(
      precrime?: null
    ): TypedEventFilter<[string], { precrime: string }>;

    SetPrecrime(
      precrime?: null
    ): TypedEventFilter<[string], { precrime: string }>;

    "SetTrustedRemote(uint16,bytes)"(
      _remoteChainId?: null,
      _path?: null
    ): TypedEventFilter<
      [number, string],
      { _remoteChainId: number; _path: string }
    >;

    SetTrustedRemote(
      _remoteChainId?: null,
      _path?: null
    ): TypedEventFilter<
      [number, string],
      { _remoteChainId: number; _path: string }
    >;

    "SetTrustedRemoteAddress(uint16,bytes)"(
      _remoteChainId?: null,
      _remoteAddress?: null
    ): TypedEventFilter<
      [number, string],
      { _remoteChainId: number; _remoteAddress: string }
    >;

    SetTrustedRemoteAddress(
      _remoteChainId?: null,
      _remoteAddress?: null
    ): TypedEventFilter<
      [number, string],
      { _remoteChainId: number; _remoteAddress: string }
    >;

    "SetWhitelist(address,bool)"(
      addr?: string | null,
      isWhitelist?: null
    ): TypedEventFilter<
      [string, boolean],
      { addr: string; isWhitelist: boolean }
    >;

    SetWhitelist(
      addr?: string | null,
      isWhitelist?: null
    ): TypedEventFilter<
      [string, boolean],
      { addr: string; isWhitelist: boolean }
    >;

    "SweepToken(address,address,uint256)"(
      token?: string | null,
      to?: string | null,
      sweepAmount?: null
    ): TypedEventFilter<
      [string, string, BigNumber],
      { token: string; to: string; sweepAmount: BigNumber }
    >;

    SweepToken(
      token?: string | null,
      to?: string | null,
      sweepAmount?: null
    ): TypedEventFilter<
      [string, string, BigNumber],
      { token: string; to: string; sweepAmount: BigNumber }
    >;

    "TrustedRemoteRemoved(uint16)"(
      chainId?: null
    ): TypedEventFilter<[number], { chainId: number }>;

    TrustedRemoteRemoved(
      chainId?: null
    ): TypedEventFilter<[number], { chainId: number }>;

    "Unpaused(address)"(
      account?: null
    ): TypedEventFilter<[string], { account: string }>;

    Unpaused(account?: null): TypedEventFilter<[string], { account: string }>;

    "UpdateSendAndCallEnabled(bool)"(
      enabled?: boolean | null
    ): TypedEventFilter<[boolean], { enabled: boolean }>;

    UpdateSendAndCallEnabled(
      enabled?: boolean | null
    ): TypedEventFilter<[boolean], { enabled: boolean }>;
  };

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

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

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

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

    callOnOFTReceived(
      _srcChainId: BigNumberish,
      _srcAddress: BytesLike,
      _nonce: BigNumberish,
      _from: BytesLike,
      _to: string,
      _amount: BigNumberish,
      _payload: BytesLike,
      _gasForCall: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

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

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

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

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

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

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

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

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

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

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

    dropFailedMessage(
      srcChainId_: BigNumberish,
      srcAddress_: BytesLike,
      nonce_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    estimateSendAndCallFee(
      _dstChainId: BigNumberish,
      _toAddress: BytesLike,
      _amount: BigNumberish,
      _payload: BytesLike,
      _dstGasForCall: BigNumberish,
      _useZro: boolean,
      _adapterParams: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    estimateSendFee(
      _dstChainId: BigNumberish,
      _toAddress: BytesLike,
      _amount: BigNumberish,
      _useZro: boolean,
      _adapterParams: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    fallbackDeposit(
      depositor_: string,
      amount_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    fallbackWithdraw(
      to_: string,
      amount_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

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

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

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

    isEligibleToSend(
      from_: string,
      dstChainId_: BigNumberish,
      amount_: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

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

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

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

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

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

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

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

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

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

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

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

    removeTrustedRemote(
      remoteChainId_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

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

    retryMessage(
      _srcChainId: BigNumberish,
      _srcAddress: BytesLike,
      _nonce: BigNumberish,
      _payload: BytesLike,
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    sendAndCall(
      from_: string,
      dstChainId_: BigNumberish,
      toAddress_: BytesLike,
      amount_: BigNumberish,
      payload_: BytesLike,
      dstGasForCall_: BigNumberish,
      callparams_: {
        refundAddress: string;
        zroPaymentAddress: string;
        adapterParams: BytesLike;
      },
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

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

    sendFrom(
      _from: string,
      _dstChainId: BigNumberish,
      _toAddress: BytesLike,
      _amount: BigNumberish,
      _callParams: {
        refundAddress: string;
        zroPaymentAddress: string;
        adapterParams: BytesLike;
      },
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

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

    setMaxDailyLimit(
      chainId_: BigNumberish,
      limit_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

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

    setMaxSingleReceiveTransactionLimit(
      chainId_: BigNumberish,
      limit_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    setMaxSingleTransactionLimit(
      chainId_: BigNumberish,
      limit_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

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

    setOracle(
      oracleAddress_: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

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

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

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

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

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

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

    setWhitelist(
      user_: string,
      val_: boolean,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

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

    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    sweepToken(
      token_: string,
      to_: string,
      amount_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

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

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

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

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

    updateSendAndCallEnabled(
      enabled_: boolean,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    whitelist(arg0: string, overrides?: CallOverrides): Promise<BigNumber>;
  };

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

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

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

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

    callOnOFTReceived(
      _srcChainId: BigNumberish,
      _srcAddress: BytesLike,
      _nonce: BigNumberish,
      _from: BytesLike,
      _to: string,
      _amount: BigNumberish,
      _payload: BytesLike,
      _gasForCall: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

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

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

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

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

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

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

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

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

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

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

    dropFailedMessage(
      srcChainId_: BigNumberish,
      srcAddress_: BytesLike,
      nonce_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    estimateSendAndCallFee(
      _dstChainId: BigNumberish,
      _toAddress: BytesLike,
      _amount: BigNumberish,
      _payload: BytesLike,
      _dstGasForCall: BigNumberish,
      _useZro: boolean,
      _adapterParams: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    estimateSendFee(
      _dstChainId: BigNumberish,
      _toAddress: BytesLike,
      _amount: BigNumberish,
      _useZro: boolean,
      _adapterParams: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

    fallbackDeposit(
      depositor_: string,
      amount_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    fallbackWithdraw(
      to_: string,
      amount_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

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

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

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

    isEligibleToSend(
      from_: string,
      dstChainId_: BigNumberish,
      amount_: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

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

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

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

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

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

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

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

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

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

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

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

    removeTrustedRemote(
      remoteChainId_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

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

    retryMessage(
      _srcChainId: BigNumberish,
      _srcAddress: BytesLike,
      _nonce: BigNumberish,
      _payload: BytesLike,
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    sendAndCall(
      from_: string,
      dstChainId_: BigNumberish,
      toAddress_: BytesLike,
      amount_: BigNumberish,
      payload_: BytesLike,
      dstGasForCall_: BigNumberish,
      callparams_: {
        refundAddress: string;
        zroPaymentAddress: string;
        adapterParams: BytesLike;
      },
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

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

    sendFrom(
      _from: string,
      _dstChainId: BigNumberish,
      _toAddress: BytesLike,
      _amount: BigNumberish,
      _callParams: {
        refundAddress: string;
        zroPaymentAddress: string;
        adapterParams: BytesLike;
      },
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

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

    setMaxDailyLimit(
      chainId_: BigNumberish,
      limit_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

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

    setMaxSingleReceiveTransactionLimit(
      chainId_: BigNumberish,
      limit_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    setMaxSingleTransactionLimit(
      chainId_: BigNumberish,
      limit_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

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

    setOracle(
      oracleAddress_: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

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

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

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

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

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

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

    setWhitelist(
      user_: string,
      val_: boolean,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

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

    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    sweepToken(
      token_: string,
      to_: string,
      amount_: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

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

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

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

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

    updateSendAndCallEnabled(
      enabled_: boolean,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    whitelist(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;
  };
}
