/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import type {
  BaseContract,
  BigNumberish,
  BytesLike,
  FunctionFragment,
  Result,
  Interface,
  EventFragment,
  AddressLike,
  ContractRunner,
  ContractMethod,
  Listener,
} from "ethers";
import type {
  TypedContractEvent,
  TypedDeferredTopicFilter,
  TypedEventLog,
  TypedLogDescription,
  TypedListener,
  TypedContractMethod,
} from "../../common";

export type ClaimStruct = {
  stateRoot: BytesLike;
  claimer: AddressLike;
  timestampClaimed: BigNumberish;
  timestampVerification: BigNumberish;
  blocknumberVerification: BigNumberish;
  honest: BigNumberish;
  challenger: AddressLike;
};

export type ClaimStructOutput = [
  stateRoot: string,
  claimer: string,
  timestampClaimed: bigint,
  timestampVerification: bigint,
  blocknumberVerification: bigint,
  honest: bigint,
  challenger: string
] & {
  stateRoot: string;
  claimer: string;
  timestampClaimed: bigint;
  timestampVerification: bigint;
  blocknumberVerification: bigint;
  honest: bigint;
  challenger: string;
};

export interface VeaOutboxArbToEthDevnetInterface extends Interface {
  getFunction(
    nameOrSignature:
      | "BURN_ADDRESS"
      | "bridge"
      | "burn"
      | "censorshipTestStatus"
      | "challenge(uint256,(bytes32,address,uint32,uint32,uint32,uint8,address))"
      | "challenge(uint256,(bytes32,address,uint32,uint32,uint32,uint8,address),address)"
      | "changeDevnetOperator"
      | "claim"
      | "claimHashes"
      | "deposit"
      | "depositPlusReward"
      | "devnetAdvanceState"
      | "devnetOperator"
      | "epochAt"
      | "epochNow"
      | "epochPeriod"
      | "executeSequencerDelayLimitDecreaseRequest"
      | "hashClaim"
      | "isMsgRelayed"
      | "latestVerifiedEpoch"
      | "maxMissingBlocks"
      | "minChallengePeriod"
      | "resolveDisputedClaim"
      | "sendMessage"
      | "sequencerDelayLimit"
      | "sequencerDelayLimitDecreaseRequest"
      | "startVerification"
      | "stateRoot"
      | "timeoutEpochs"
      | "updateSequencerDelayLimit"
      | "veaInboxArbToEth"
      | "verifySnapshot"
      | "withdrawChallengeDeposit"
      | "withdrawChallengerEscapeHatch"
      | "withdrawClaimDeposit"
      | "withdrawClaimerEscapeHatch"
  ): FunctionFragment;

  getEvent(
    nameOrSignatureOrTopic:
      | "Challenged"
      | "Claimed"
      | "MessageRelayed"
      | "SequencerDelayLimitDecreaseRequested"
      | "SequencerDelayLimitUpdated"
      | "VerificationStarted"
      | "Verified"
  ): EventFragment;

  encodeFunctionData(
    functionFragment: "BURN_ADDRESS",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "bridge", values?: undefined): string;
  encodeFunctionData(functionFragment: "burn", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "censorshipTestStatus",
    values: [ClaimStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "challenge(uint256,(bytes32,address,uint32,uint32,uint32,uint8,address))",
    values: [BigNumberish, ClaimStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "challenge(uint256,(bytes32,address,uint32,uint32,uint32,uint8,address),address)",
    values: [BigNumberish, ClaimStruct, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "changeDevnetOperator",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "claim",
    values: [BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "claimHashes",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "deposit", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "depositPlusReward",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "devnetAdvanceState",
    values: [BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "devnetOperator",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "epochAt",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "epochNow", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "epochPeriod",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "executeSequencerDelayLimitDecreaseRequest",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "hashClaim",
    values: [ClaimStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "isMsgRelayed",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "latestVerifiedEpoch",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "maxMissingBlocks",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "minChallengePeriod",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "resolveDisputedClaim",
    values: [BigNumberish, BytesLike, ClaimStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "sendMessage",
    values: [BytesLike[], BigNumberish, AddressLike, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "sequencerDelayLimit",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "sequencerDelayLimitDecreaseRequest",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "startVerification",
    values: [BigNumberish, ClaimStruct]
  ): string;
  encodeFunctionData(functionFragment: "stateRoot", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "timeoutEpochs",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "updateSequencerDelayLimit",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "veaInboxArbToEth",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "verifySnapshot",
    values: [BigNumberish, ClaimStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "withdrawChallengeDeposit",
    values: [BigNumberish, ClaimStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "withdrawChallengerEscapeHatch",
    values: [BigNumberish, ClaimStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "withdrawClaimDeposit",
    values: [BigNumberish, ClaimStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "withdrawClaimerEscapeHatch",
    values: [BigNumberish, ClaimStruct]
  ): string;

  decodeFunctionResult(
    functionFragment: "BURN_ADDRESS",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "bridge", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "censorshipTestStatus",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "challenge(uint256,(bytes32,address,uint32,uint32,uint32,uint8,address))",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "challenge(uint256,(bytes32,address,uint32,uint32,uint32,uint8,address),address)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "changeDevnetOperator",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "claimHashes",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "depositPlusReward",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "devnetAdvanceState",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "devnetOperator",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "epochAt", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "epochNow", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "epochPeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "executeSequencerDelayLimitDecreaseRequest",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "hashClaim", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isMsgRelayed",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "latestVerifiedEpoch",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "maxMissingBlocks",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "minChallengePeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "resolveDisputedClaim",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "sendMessage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "sequencerDelayLimit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "sequencerDelayLimitDecreaseRequest",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "startVerification",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "stateRoot", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "timeoutEpochs",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateSequencerDelayLimit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "veaInboxArbToEth",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "verifySnapshot",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "withdrawChallengeDeposit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "withdrawChallengerEscapeHatch",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "withdrawClaimDeposit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "withdrawClaimerEscapeHatch",
    data: BytesLike
  ): Result;
}

export namespace ChallengedEvent {
  export type InputTuple = [_epoch: BigNumberish, _challenger: AddressLike];
  export type OutputTuple = [_epoch: bigint, _challenger: string];
  export interface OutputObject {
    _epoch: bigint;
    _challenger: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace ClaimedEvent {
  export type InputTuple = [
    _claimer: AddressLike,
    _epoch: BigNumberish,
    _stateRoot: BytesLike
  ];
  export type OutputTuple = [
    _claimer: string,
    _epoch: bigint,
    _stateRoot: string
  ];
  export interface OutputObject {
    _claimer: string;
    _epoch: bigint;
    _stateRoot: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace MessageRelayedEvent {
  export type InputTuple = [_msgId: BigNumberish];
  export type OutputTuple = [_msgId: bigint];
  export interface OutputObject {
    _msgId: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SequencerDelayLimitDecreaseRequestedEvent {
  export type InputTuple = [_requestedSequencerDelayLimit: BigNumberish];
  export type OutputTuple = [_requestedSequencerDelayLimit: bigint];
  export interface OutputObject {
    _requestedSequencerDelayLimit: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SequencerDelayLimitUpdatedEvent {
  export type InputTuple = [_newSequencerDelayLimit: BigNumberish];
  export type OutputTuple = [_newSequencerDelayLimit: bigint];
  export interface OutputObject {
    _newSequencerDelayLimit: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace VerificationStartedEvent {
  export type InputTuple = [_epoch: BigNumberish];
  export type OutputTuple = [_epoch: bigint];
  export interface OutputObject {
    _epoch: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace VerifiedEvent {
  export type InputTuple = [_epoch: BigNumberish];
  export type OutputTuple = [_epoch: bigint];
  export interface OutputObject {
    _epoch: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export interface VeaOutboxArbToEthDevnet extends BaseContract {
  connect(runner?: ContractRunner | null): VeaOutboxArbToEthDevnet;
  waitForDeployment(): Promise<this>;

  interface: VeaOutboxArbToEthDevnetInterface;

  queryFilter<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEventLog<TCEvent>>>;
  queryFilter<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEventLog<TCEvent>>>;

  on<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    listener: TypedListener<TCEvent>
  ): Promise<this>;
  on<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    listener: TypedListener<TCEvent>
  ): Promise<this>;

  once<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    listener: TypedListener<TCEvent>
  ): Promise<this>;
  once<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    listener: TypedListener<TCEvent>
  ): Promise<this>;

  listeners<TCEvent extends TypedContractEvent>(
    event: TCEvent
  ): Promise<Array<TypedListener<TCEvent>>>;
  listeners(eventName?: string): Promise<Array<Listener>>;
  removeAllListeners<TCEvent extends TypedContractEvent>(
    event?: TCEvent
  ): Promise<this>;

  BURN_ADDRESS: TypedContractMethod<[], [string], "view">;

  bridge: TypedContractMethod<[], [string], "view">;

  burn: TypedContractMethod<[], [bigint], "view">;

  censorshipTestStatus: TypedContractMethod<
    [_claim: ClaimStruct],
    [bigint],
    "view"
  >;

  "challenge(uint256,(bytes32,address,uint32,uint32,uint32,uint8,address))": TypedContractMethod<
    [_epoch: BigNumberish, _claim: ClaimStruct],
    [void],
    "payable"
  >;

  "challenge(uint256,(bytes32,address,uint32,uint32,uint32,uint8,address),address)": TypedContractMethod<
    [
      _epoch: BigNumberish,
      _claim: ClaimStruct,
      _withdrawalAddress: AddressLike
    ],
    [void],
    "payable"
  >;

  changeDevnetOperator: TypedContractMethod<
    [_devnetOperator: AddressLike],
    [void],
    "nonpayable"
  >;

  claim: TypedContractMethod<
    [_epoch: BigNumberish, _stateRoot: BytesLike],
    [void],
    "payable"
  >;

  claimHashes: TypedContractMethod<[epoch: BigNumberish], [string], "view">;

  deposit: TypedContractMethod<[], [bigint], "view">;

  depositPlusReward: TypedContractMethod<[], [bigint], "view">;

  devnetAdvanceState: TypedContractMethod<
    [_epoch: BigNumberish, _stateroot: BytesLike],
    [void],
    "payable"
  >;

  devnetOperator: TypedContractMethod<[], [string], "view">;

  epochAt: TypedContractMethod<[timestamp: BigNumberish], [bigint], "view">;

  epochNow: TypedContractMethod<[], [bigint], "view">;

  epochPeriod: TypedContractMethod<[], [bigint], "view">;

  executeSequencerDelayLimitDecreaseRequest: TypedContractMethod<
    [],
    [void],
    "nonpayable"
  >;

  hashClaim: TypedContractMethod<[_claim: ClaimStruct], [string], "view">;

  isMsgRelayed: TypedContractMethod<[_msgId: BigNumberish], [boolean], "view">;

  latestVerifiedEpoch: TypedContractMethod<[], [bigint], "view">;

  maxMissingBlocks: TypedContractMethod<[], [bigint], "view">;

  minChallengePeriod: TypedContractMethod<[], [bigint], "view">;

  resolveDisputedClaim: TypedContractMethod<
    [_epoch: BigNumberish, _stateRoot: BytesLike, _claim: ClaimStruct],
    [void],
    "nonpayable"
  >;

  sendMessage: TypedContractMethod<
    [
      _proof: BytesLike[],
      _msgId: BigNumberish,
      _to: AddressLike,
      _message: BytesLike
    ],
    [void],
    "nonpayable"
  >;

  sequencerDelayLimit: TypedContractMethod<[], [bigint], "view">;

  sequencerDelayLimitDecreaseRequest: TypedContractMethod<
    [],
    [
      [bigint, bigint] & {
        requestedsequencerDelayLimit: bigint;
        timestamp: bigint;
      }
    ],
    "view"
  >;

  startVerification: TypedContractMethod<
    [_epoch: BigNumberish, _claim: ClaimStruct],
    [void],
    "nonpayable"
  >;

  stateRoot: TypedContractMethod<[], [string], "view">;

  timeoutEpochs: TypedContractMethod<[], [bigint], "view">;

  updateSequencerDelayLimit: TypedContractMethod<[], [void], "nonpayable">;

  veaInboxArbToEth: TypedContractMethod<[], [string], "view">;

  verifySnapshot: TypedContractMethod<
    [_epoch: BigNumberish, _claim: ClaimStruct],
    [void],
    "nonpayable"
  >;

  withdrawChallengeDeposit: TypedContractMethod<
    [_epoch: BigNumberish, _claim: ClaimStruct],
    [void],
    "nonpayable"
  >;

  withdrawChallengerEscapeHatch: TypedContractMethod<
    [_epoch: BigNumberish, _claim: ClaimStruct],
    [void],
    "nonpayable"
  >;

  withdrawClaimDeposit: TypedContractMethod<
    [_epoch: BigNumberish, _claim: ClaimStruct],
    [void],
    "nonpayable"
  >;

  withdrawClaimerEscapeHatch: TypedContractMethod<
    [_epoch: BigNumberish, _claim: ClaimStruct],
    [void],
    "nonpayable"
  >;

  getFunction<T extends ContractMethod = ContractMethod>(
    key: string | FunctionFragment
  ): T;

  getFunction(
    nameOrSignature: "BURN_ADDRESS"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "bridge"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "burn"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "censorshipTestStatus"
  ): TypedContractMethod<[_claim: ClaimStruct], [bigint], "view">;
  getFunction(
    nameOrSignature: "challenge(uint256,(bytes32,address,uint32,uint32,uint32,uint8,address))"
  ): TypedContractMethod<
    [_epoch: BigNumberish, _claim: ClaimStruct],
    [void],
    "payable"
  >;
  getFunction(
    nameOrSignature: "challenge(uint256,(bytes32,address,uint32,uint32,uint32,uint8,address),address)"
  ): TypedContractMethod<
    [
      _epoch: BigNumberish,
      _claim: ClaimStruct,
      _withdrawalAddress: AddressLike
    ],
    [void],
    "payable"
  >;
  getFunction(
    nameOrSignature: "changeDevnetOperator"
  ): TypedContractMethod<[_devnetOperator: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "claim"
  ): TypedContractMethod<
    [_epoch: BigNumberish, _stateRoot: BytesLike],
    [void],
    "payable"
  >;
  getFunction(
    nameOrSignature: "claimHashes"
  ): TypedContractMethod<[epoch: BigNumberish], [string], "view">;
  getFunction(
    nameOrSignature: "deposit"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "depositPlusReward"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "devnetAdvanceState"
  ): TypedContractMethod<
    [_epoch: BigNumberish, _stateroot: BytesLike],
    [void],
    "payable"
  >;
  getFunction(
    nameOrSignature: "devnetOperator"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "epochAt"
  ): TypedContractMethod<[timestamp: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "epochNow"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "epochPeriod"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "executeSequencerDelayLimitDecreaseRequest"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "hashClaim"
  ): TypedContractMethod<[_claim: ClaimStruct], [string], "view">;
  getFunction(
    nameOrSignature: "isMsgRelayed"
  ): TypedContractMethod<[_msgId: BigNumberish], [boolean], "view">;
  getFunction(
    nameOrSignature: "latestVerifiedEpoch"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "maxMissingBlocks"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "minChallengePeriod"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "resolveDisputedClaim"
  ): TypedContractMethod<
    [_epoch: BigNumberish, _stateRoot: BytesLike, _claim: ClaimStruct],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "sendMessage"
  ): TypedContractMethod<
    [
      _proof: BytesLike[],
      _msgId: BigNumberish,
      _to: AddressLike,
      _message: BytesLike
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "sequencerDelayLimit"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "sequencerDelayLimitDecreaseRequest"
  ): TypedContractMethod<
    [],
    [
      [bigint, bigint] & {
        requestedsequencerDelayLimit: bigint;
        timestamp: bigint;
      }
    ],
    "view"
  >;
  getFunction(
    nameOrSignature: "startVerification"
  ): TypedContractMethod<
    [_epoch: BigNumberish, _claim: ClaimStruct],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "stateRoot"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "timeoutEpochs"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "updateSequencerDelayLimit"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "veaInboxArbToEth"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "verifySnapshot"
  ): TypedContractMethod<
    [_epoch: BigNumberish, _claim: ClaimStruct],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "withdrawChallengeDeposit"
  ): TypedContractMethod<
    [_epoch: BigNumberish, _claim: ClaimStruct],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "withdrawChallengerEscapeHatch"
  ): TypedContractMethod<
    [_epoch: BigNumberish, _claim: ClaimStruct],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "withdrawClaimDeposit"
  ): TypedContractMethod<
    [_epoch: BigNumberish, _claim: ClaimStruct],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "withdrawClaimerEscapeHatch"
  ): TypedContractMethod<
    [_epoch: BigNumberish, _claim: ClaimStruct],
    [void],
    "nonpayable"
  >;

  getEvent(
    key: "Challenged"
  ): TypedContractEvent<
    ChallengedEvent.InputTuple,
    ChallengedEvent.OutputTuple,
    ChallengedEvent.OutputObject
  >;
  getEvent(
    key: "Claimed"
  ): TypedContractEvent<
    ClaimedEvent.InputTuple,
    ClaimedEvent.OutputTuple,
    ClaimedEvent.OutputObject
  >;
  getEvent(
    key: "MessageRelayed"
  ): TypedContractEvent<
    MessageRelayedEvent.InputTuple,
    MessageRelayedEvent.OutputTuple,
    MessageRelayedEvent.OutputObject
  >;
  getEvent(
    key: "SequencerDelayLimitDecreaseRequested"
  ): TypedContractEvent<
    SequencerDelayLimitDecreaseRequestedEvent.InputTuple,
    SequencerDelayLimitDecreaseRequestedEvent.OutputTuple,
    SequencerDelayLimitDecreaseRequestedEvent.OutputObject
  >;
  getEvent(
    key: "SequencerDelayLimitUpdated"
  ): TypedContractEvent<
    SequencerDelayLimitUpdatedEvent.InputTuple,
    SequencerDelayLimitUpdatedEvent.OutputTuple,
    SequencerDelayLimitUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "VerificationStarted"
  ): TypedContractEvent<
    VerificationStartedEvent.InputTuple,
    VerificationStartedEvent.OutputTuple,
    VerificationStartedEvent.OutputObject
  >;
  getEvent(
    key: "Verified"
  ): TypedContractEvent<
    VerifiedEvent.InputTuple,
    VerifiedEvent.OutputTuple,
    VerifiedEvent.OutputObject
  >;

  filters: {
    "Challenged(uint256,address)": TypedContractEvent<
      ChallengedEvent.InputTuple,
      ChallengedEvent.OutputTuple,
      ChallengedEvent.OutputObject
    >;
    Challenged: TypedContractEvent<
      ChallengedEvent.InputTuple,
      ChallengedEvent.OutputTuple,
      ChallengedEvent.OutputObject
    >;

    "Claimed(address,uint256,bytes32)": TypedContractEvent<
      ClaimedEvent.InputTuple,
      ClaimedEvent.OutputTuple,
      ClaimedEvent.OutputObject
    >;
    Claimed: TypedContractEvent<
      ClaimedEvent.InputTuple,
      ClaimedEvent.OutputTuple,
      ClaimedEvent.OutputObject
    >;

    "MessageRelayed(uint64)": TypedContractEvent<
      MessageRelayedEvent.InputTuple,
      MessageRelayedEvent.OutputTuple,
      MessageRelayedEvent.OutputObject
    >;
    MessageRelayed: TypedContractEvent<
      MessageRelayedEvent.InputTuple,
      MessageRelayedEvent.OutputTuple,
      MessageRelayedEvent.OutputObject
    >;

    "SequencerDelayLimitDecreaseRequested(uint256)": TypedContractEvent<
      SequencerDelayLimitDecreaseRequestedEvent.InputTuple,
      SequencerDelayLimitDecreaseRequestedEvent.OutputTuple,
      SequencerDelayLimitDecreaseRequestedEvent.OutputObject
    >;
    SequencerDelayLimitDecreaseRequested: TypedContractEvent<
      SequencerDelayLimitDecreaseRequestedEvent.InputTuple,
      SequencerDelayLimitDecreaseRequestedEvent.OutputTuple,
      SequencerDelayLimitDecreaseRequestedEvent.OutputObject
    >;

    "SequencerDelayLimitUpdated(uint256)": TypedContractEvent<
      SequencerDelayLimitUpdatedEvent.InputTuple,
      SequencerDelayLimitUpdatedEvent.OutputTuple,
      SequencerDelayLimitUpdatedEvent.OutputObject
    >;
    SequencerDelayLimitUpdated: TypedContractEvent<
      SequencerDelayLimitUpdatedEvent.InputTuple,
      SequencerDelayLimitUpdatedEvent.OutputTuple,
      SequencerDelayLimitUpdatedEvent.OutputObject
    >;

    "VerificationStarted(uint256)": TypedContractEvent<
      VerificationStartedEvent.InputTuple,
      VerificationStartedEvent.OutputTuple,
      VerificationStartedEvent.OutputObject
    >;
    VerificationStarted: TypedContractEvent<
      VerificationStartedEvent.InputTuple,
      VerificationStartedEvent.OutputTuple,
      VerificationStartedEvent.OutputObject
    >;

    "Verified(uint256)": TypedContractEvent<
      VerifiedEvent.InputTuple,
      VerifiedEvent.OutputTuple,
      VerifiedEvent.OutputObject
    >;
    Verified: TypedContractEvent<
      VerifiedEvent.InputTuple,
      VerifiedEvent.OutputTuple,
      VerifiedEvent.OutputObject
    >;
  };
}
