/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import type { BaseContract, BigNumber, BytesLike, Signer, utils } from "ethers";
import type { EventFragment } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type {
  TypedEventFilter,
  TypedEvent,
  TypedListener,
  OnEvent,
} from "./common";

export interface SponsoredCCTPInterfaceInterface extends utils.Interface {
  functions: {};

  events: {
    "EmergencyReceiveMessage(bytes32,address,address,uint256)": EventFragment;
    "SponsoredCCTPDirectExecution(bytes32,address,bytes32,uint256,uint256,uint256,bytes32,uint32,uint8,bytes)": EventFragment;
    "SponsoredDepositForBurn(bytes32,address,bytes32,uint256,uint256,uint256,bytes32,uint32,uint8,bytes)": EventFragment;
  };

  getEvent(nameOrSignatureOrTopic: "EmergencyReceiveMessage"): EventFragment;
  getEvent(
    nameOrSignatureOrTopic: "SponsoredCCTPDirectExecution"
  ): EventFragment;
  getEvent(nameOrSignatureOrTopic: "SponsoredDepositForBurn"): EventFragment;
}

export interface EmergencyReceiveMessageEventObject {
  nonce: string;
  finalRecipent: string;
  finalToken: string;
  amount: BigNumber;
}
export type EmergencyReceiveMessageEvent = TypedEvent<
  [string, string, string, BigNumber],
  EmergencyReceiveMessageEventObject
>;

export type EmergencyReceiveMessageEventFilter =
  TypedEventFilter<EmergencyReceiveMessageEvent>;

export interface SponsoredCCTPDirectExecutionEventObject {
  quoteNonce: string;
  originSender: string;
  finalRecipient: string;
  quoteDeadline: BigNumber;
  maxBpsToSponsor: BigNumber;
  maxUserSlippageBps: BigNumber;
  finalToken: string;
  destinationDex: number;
  accountCreationMode: number;
  signature: string;
}
export type SponsoredCCTPDirectExecutionEvent = TypedEvent<
  [
    string,
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    string,
    number,
    number,
    string
  ],
  SponsoredCCTPDirectExecutionEventObject
>;

export type SponsoredCCTPDirectExecutionEventFilter =
  TypedEventFilter<SponsoredCCTPDirectExecutionEvent>;

export interface SponsoredDepositForBurnEventObject {
  quoteNonce: string;
  originSender: string;
  finalRecipient: string;
  quoteDeadline: BigNumber;
  maxBpsToSponsor: BigNumber;
  maxUserSlippageBps: BigNumber;
  finalToken: string;
  destinationDex: number;
  accountCreationMode: number;
  signature: string;
}
export type SponsoredDepositForBurnEvent = TypedEvent<
  [
    string,
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    string,
    number,
    number,
    string
  ],
  SponsoredDepositForBurnEventObject
>;

export type SponsoredDepositForBurnEventFilter =
  TypedEventFilter<SponsoredDepositForBurnEvent>;

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

  interface: SponsoredCCTPInterfaceInterface;

  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: {};

  callStatic: {};

  filters: {
    "EmergencyReceiveMessage(bytes32,address,address,uint256)"(
      nonce?: null,
      finalRecipent?: null,
      finalToken?: null,
      amount?: null
    ): EmergencyReceiveMessageEventFilter;
    EmergencyReceiveMessage(
      nonce?: null,
      finalRecipent?: null,
      finalToken?: null,
      amount?: null
    ): EmergencyReceiveMessageEventFilter;

    "SponsoredCCTPDirectExecution(bytes32,address,bytes32,uint256,uint256,uint256,bytes32,uint32,uint8,bytes)"(
      quoteNonce?: BytesLike | null,
      originSender?: string | null,
      finalRecipient?: BytesLike | null,
      quoteDeadline?: null,
      maxBpsToSponsor?: null,
      maxUserSlippageBps?: null,
      finalToken?: null,
      destinationDex?: null,
      accountCreationMode?: null,
      signature?: null
    ): SponsoredCCTPDirectExecutionEventFilter;
    SponsoredCCTPDirectExecution(
      quoteNonce?: BytesLike | null,
      originSender?: string | null,
      finalRecipient?: BytesLike | null,
      quoteDeadline?: null,
      maxBpsToSponsor?: null,
      maxUserSlippageBps?: null,
      finalToken?: null,
      destinationDex?: null,
      accountCreationMode?: null,
      signature?: null
    ): SponsoredCCTPDirectExecutionEventFilter;

    "SponsoredDepositForBurn(bytes32,address,bytes32,uint256,uint256,uint256,bytes32,uint32,uint8,bytes)"(
      quoteNonce?: BytesLike | null,
      originSender?: string | null,
      finalRecipient?: BytesLike | null,
      quoteDeadline?: null,
      maxBpsToSponsor?: null,
      maxUserSlippageBps?: null,
      finalToken?: null,
      destinationDex?: null,
      accountCreationMode?: null,
      signature?: null
    ): SponsoredDepositForBurnEventFilter;
    SponsoredDepositForBurn(
      quoteNonce?: BytesLike | null,
      originSender?: string | null,
      finalRecipient?: BytesLike | null,
      quoteDeadline?: null,
      maxBpsToSponsor?: null,
      maxUserSlippageBps?: null,
      finalToken?: null,
      destinationDex?: null,
      accountCreationMode?: null,
      signature?: null
    ): SponsoredDepositForBurnEventFilter;
  };

  estimateGas: {};

  populateTransaction: {};
}
