/* 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 declare namespace IAttestation {
  export type StateStruct = {
    requestCID: BytesLike;
    responseCID: BytesLike;
    subgraphDeploymentId: BytesLike;
    r: BytesLike;
    s: BytesLike;
    v: BigNumberish;
  };

  export type StateStructOutput = [
    requestCID: string,
    responseCID: string,
    subgraphDeploymentId: string,
    r: string,
    s: string,
    v: bigint,
  ] & {
    requestCID: string;
    responseCID: string;
    subgraphDeploymentId: string;
    r: string;
    s: string;
    v: bigint;
  };

  export type ReceiptStruct = {
    requestCID: BytesLike;
    responseCID: BytesLike;
    subgraphDeploymentId: BytesLike;
  };

  export type ReceiptStructOutput = [
    requestCID: string,
    responseCID: string,
    subgraphDeploymentId: string,
  ] & { requestCID: string; responseCID: string; subgraphDeploymentId: string };
}

export interface IDisputeManagerInterface extends Interface {
  getFunction(
    nameOrSignature:
      | "acceptDispute"
      | "acceptDisputeConflict"
      | "areConflictingAttestations"
      | "cancelDispute"
      | "createAndAcceptLegacyDispute"
      | "createIndexingDispute"
      | "createQueryDispute"
      | "createQueryDisputeConflict"
      | "drawDispute"
      | "encodeReceipt"
      | "getAttestationIndexer"
      | "getDisputePeriod"
      | "getFishermanRewardCut"
      | "getStakeSnapshot"
      | "initialize"
      | "isDisputeCreated"
      | "rejectDispute"
      | "setArbitrator"
      | "setDisputeDeposit"
      | "setDisputePeriod"
      | "setFishermanRewardCut"
      | "setMaxSlashingCut"
      | "setSubgraphService",
  ): FunctionFragment;

  getEvent(
    nameOrSignatureOrTopic:
      | "ArbitratorSet"
      | "DisputeAccepted"
      | "DisputeCancelled"
      | "DisputeDepositSet"
      | "DisputeDrawn"
      | "DisputeLinked"
      | "DisputePeriodSet"
      | "DisputeRejected"
      | "FishermanRewardCutSet"
      | "IndexingDisputeCreated"
      | "LegacyDisputeCreated"
      | "MaxSlashingCutSet"
      | "QueryDisputeCreated"
      | "SubgraphServiceSet",
  ): EventFragment;

  encodeFunctionData(
    functionFragment: "acceptDispute",
    values: [BytesLike, BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "acceptDisputeConflict",
    values: [BytesLike, BigNumberish, boolean, BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "areConflictingAttestations",
    values: [IAttestation.StateStruct, IAttestation.StateStruct],
  ): string;
  encodeFunctionData(
    functionFragment: "cancelDispute",
    values: [BytesLike],
  ): string;
  encodeFunctionData(
    functionFragment: "createAndAcceptLegacyDispute",
    values: [AddressLike, AddressLike, BigNumberish, BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "createIndexingDispute",
    values: [AddressLike, BytesLike, BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "createQueryDispute",
    values: [BytesLike],
  ): string;
  encodeFunctionData(
    functionFragment: "createQueryDisputeConflict",
    values: [BytesLike, BytesLike],
  ): string;
  encodeFunctionData(
    functionFragment: "drawDispute",
    values: [BytesLike],
  ): string;
  encodeFunctionData(
    functionFragment: "encodeReceipt",
    values: [IAttestation.ReceiptStruct],
  ): string;
  encodeFunctionData(
    functionFragment: "getAttestationIndexer",
    values: [IAttestation.StateStruct],
  ): string;
  encodeFunctionData(
    functionFragment: "getDisputePeriod",
    values?: undefined,
  ): string;
  encodeFunctionData(
    functionFragment: "getFishermanRewardCut",
    values?: undefined,
  ): string;
  encodeFunctionData(
    functionFragment: "getStakeSnapshot",
    values: [AddressLike],
  ): string;
  encodeFunctionData(
    functionFragment: "initialize",
    values: [
      AddressLike,
      AddressLike,
      BigNumberish,
      BigNumberish,
      BigNumberish,
      BigNumberish,
    ],
  ): string;
  encodeFunctionData(
    functionFragment: "isDisputeCreated",
    values: [BytesLike],
  ): string;
  encodeFunctionData(
    functionFragment: "rejectDispute",
    values: [BytesLike],
  ): string;
  encodeFunctionData(
    functionFragment: "setArbitrator",
    values: [AddressLike],
  ): string;
  encodeFunctionData(
    functionFragment: "setDisputeDeposit",
    values: [BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "setDisputePeriod",
    values: [BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "setFishermanRewardCut",
    values: [BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "setMaxSlashingCut",
    values: [BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "setSubgraphService",
    values: [AddressLike],
  ): string;

  decodeFunctionResult(
    functionFragment: "acceptDispute",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "acceptDisputeConflict",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "areConflictingAttestations",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "cancelDispute",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "createAndAcceptLegacyDispute",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "createIndexingDispute",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "createQueryDispute",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "createQueryDisputeConflict",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "drawDispute",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "encodeReceipt",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "getAttestationIndexer",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "getDisputePeriod",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "getFishermanRewardCut",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "getStakeSnapshot",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isDisputeCreated",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "rejectDispute",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "setArbitrator",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "setDisputeDeposit",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "setDisputePeriod",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "setFishermanRewardCut",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMaxSlashingCut",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "setSubgraphService",
    data: BytesLike,
  ): Result;
}

export namespace ArbitratorSetEvent {
  export type InputTuple = [arbitrator: AddressLike];
  export type OutputTuple = [arbitrator: string];
  export interface OutputObject {
    arbitrator: 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 DisputeAcceptedEvent {
  export type InputTuple = [
    disputeId: BytesLike,
    indexer: AddressLike,
    fisherman: AddressLike,
    tokens: BigNumberish,
  ];
  export type OutputTuple = [
    disputeId: string,
    indexer: string,
    fisherman: string,
    tokens: bigint,
  ];
  export interface OutputObject {
    disputeId: string;
    indexer: string;
    fisherman: string;
    tokens: 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 DisputeCancelledEvent {
  export type InputTuple = [
    disputeId: BytesLike,
    indexer: AddressLike,
    fisherman: AddressLike,
    tokens: BigNumberish,
  ];
  export type OutputTuple = [
    disputeId: string,
    indexer: string,
    fisherman: string,
    tokens: bigint,
  ];
  export interface OutputObject {
    disputeId: string;
    indexer: string;
    fisherman: string;
    tokens: 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 DisputeDepositSetEvent {
  export type InputTuple = [disputeDeposit: BigNumberish];
  export type OutputTuple = [disputeDeposit: bigint];
  export interface OutputObject {
    disputeDeposit: 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 DisputeDrawnEvent {
  export type InputTuple = [
    disputeId: BytesLike,
    indexer: AddressLike,
    fisherman: AddressLike,
    tokens: BigNumberish,
  ];
  export type OutputTuple = [
    disputeId: string,
    indexer: string,
    fisherman: string,
    tokens: bigint,
  ];
  export interface OutputObject {
    disputeId: string;
    indexer: string;
    fisherman: string;
    tokens: 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 DisputeLinkedEvent {
  export type InputTuple = [disputeId1: BytesLike, disputeId2: BytesLike];
  export type OutputTuple = [disputeId1: string, disputeId2: string];
  export interface OutputObject {
    disputeId1: string;
    disputeId2: 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 DisputePeriodSetEvent {
  export type InputTuple = [disputePeriod: BigNumberish];
  export type OutputTuple = [disputePeriod: bigint];
  export interface OutputObject {
    disputePeriod: 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 DisputeRejectedEvent {
  export type InputTuple = [
    disputeId: BytesLike,
    indexer: AddressLike,
    fisherman: AddressLike,
    tokens: BigNumberish,
  ];
  export type OutputTuple = [
    disputeId: string,
    indexer: string,
    fisherman: string,
    tokens: bigint,
  ];
  export interface OutputObject {
    disputeId: string;
    indexer: string;
    fisherman: string;
    tokens: 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 FishermanRewardCutSetEvent {
  export type InputTuple = [fishermanRewardCut: BigNumberish];
  export type OutputTuple = [fishermanRewardCut: bigint];
  export interface OutputObject {
    fishermanRewardCut: 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 IndexingDisputeCreatedEvent {
  export type InputTuple = [
    disputeId: BytesLike,
    indexer: AddressLike,
    fisherman: AddressLike,
    tokens: BigNumberish,
    allocationId: AddressLike,
    poi: BytesLike,
    blockNumber: BigNumberish,
    stakeSnapshot: BigNumberish,
    cancellableAt: BigNumberish,
  ];
  export type OutputTuple = [
    disputeId: string,
    indexer: string,
    fisherman: string,
    tokens: bigint,
    allocationId: string,
    poi: string,
    blockNumber: bigint,
    stakeSnapshot: bigint,
    cancellableAt: bigint,
  ];
  export interface OutputObject {
    disputeId: string;
    indexer: string;
    fisherman: string;
    tokens: bigint;
    allocationId: string;
    poi: string;
    blockNumber: bigint;
    stakeSnapshot: bigint;
    cancellableAt: 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 LegacyDisputeCreatedEvent {
  export type InputTuple = [
    disputeId: BytesLike,
    indexer: AddressLike,
    fisherman: AddressLike,
    allocationId: AddressLike,
    tokensSlash: BigNumberish,
    tokensRewards: BigNumberish,
  ];
  export type OutputTuple = [
    disputeId: string,
    indexer: string,
    fisherman: string,
    allocationId: string,
    tokensSlash: bigint,
    tokensRewards: bigint,
  ];
  export interface OutputObject {
    disputeId: string;
    indexer: string;
    fisherman: string;
    allocationId: string;
    tokensSlash: bigint;
    tokensRewards: 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 MaxSlashingCutSetEvent {
  export type InputTuple = [maxSlashingCut: BigNumberish];
  export type OutputTuple = [maxSlashingCut: bigint];
  export interface OutputObject {
    maxSlashingCut: 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 QueryDisputeCreatedEvent {
  export type InputTuple = [
    disputeId: BytesLike,
    indexer: AddressLike,
    fisherman: AddressLike,
    tokens: BigNumberish,
    subgraphDeploymentId: BytesLike,
    attestation: BytesLike,
    stakeSnapshot: BigNumberish,
    cancellableAt: BigNumberish,
  ];
  export type OutputTuple = [
    disputeId: string,
    indexer: string,
    fisherman: string,
    tokens: bigint,
    subgraphDeploymentId: string,
    attestation: string,
    stakeSnapshot: bigint,
    cancellableAt: bigint,
  ];
  export interface OutputObject {
    disputeId: string;
    indexer: string;
    fisherman: string;
    tokens: bigint;
    subgraphDeploymentId: string;
    attestation: string;
    stakeSnapshot: bigint;
    cancellableAt: 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 SubgraphServiceSetEvent {
  export type InputTuple = [subgraphService: AddressLike];
  export type OutputTuple = [subgraphService: string];
  export interface OutputObject {
    subgraphService: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

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

  interface: IDisputeManagerInterface;

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

  acceptDispute: TypedContractMethod<
    [disputeId: BytesLike, tokensSlash: BigNumberish],
    [void],
    "nonpayable"
  >;

  acceptDisputeConflict: TypedContractMethod<
    [
      disputeId: BytesLike,
      tokensSlash: BigNumberish,
      acceptDisputeInConflict: boolean,
      tokensSlashRelated: BigNumberish,
    ],
    [void],
    "nonpayable"
  >;

  areConflictingAttestations: TypedContractMethod<
    [
      attestation1: IAttestation.StateStruct,
      attestation2: IAttestation.StateStruct,
    ],
    [boolean],
    "view"
  >;

  cancelDispute: TypedContractMethod<
    [disputeId: BytesLike],
    [void],
    "nonpayable"
  >;

  createAndAcceptLegacyDispute: TypedContractMethod<
    [
      allocationId: AddressLike,
      fisherman: AddressLike,
      tokensSlash: BigNumberish,
      tokensRewards: BigNumberish,
    ],
    [string],
    "nonpayable"
  >;

  createIndexingDispute: TypedContractMethod<
    [allocationId: AddressLike, poi: BytesLike, blockNumber: BigNumberish],
    [string],
    "nonpayable"
  >;

  createQueryDispute: TypedContractMethod<
    [attestationData: BytesLike],
    [string],
    "nonpayable"
  >;

  createQueryDisputeConflict: TypedContractMethod<
    [attestationData1: BytesLike, attestationData2: BytesLike],
    [[string, string]],
    "nonpayable"
  >;

  drawDispute: TypedContractMethod<
    [disputeId: BytesLike],
    [void],
    "nonpayable"
  >;

  encodeReceipt: TypedContractMethod<
    [receipt: IAttestation.ReceiptStruct],
    [string],
    "view"
  >;

  getAttestationIndexer: TypedContractMethod<
    [attestation: IAttestation.StateStruct],
    [string],
    "view"
  >;

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

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

  getStakeSnapshot: TypedContractMethod<
    [indexer: AddressLike],
    [bigint],
    "view"
  >;

  initialize: TypedContractMethod<
    [
      owner: AddressLike,
      arbitrator: AddressLike,
      disputePeriod: BigNumberish,
      disputeDeposit: BigNumberish,
      fishermanRewardCut_: BigNumberish,
      maxSlashingCut_: BigNumberish,
    ],
    [void],
    "nonpayable"
  >;

  isDisputeCreated: TypedContractMethod<
    [disputeId: BytesLike],
    [boolean],
    "view"
  >;

  rejectDispute: TypedContractMethod<
    [disputeId: BytesLike],
    [void],
    "nonpayable"
  >;

  setArbitrator: TypedContractMethod<
    [arbitrator: AddressLike],
    [void],
    "nonpayable"
  >;

  setDisputeDeposit: TypedContractMethod<
    [disputeDeposit: BigNumberish],
    [void],
    "nonpayable"
  >;

  setDisputePeriod: TypedContractMethod<
    [disputePeriod: BigNumberish],
    [void],
    "nonpayable"
  >;

  setFishermanRewardCut: TypedContractMethod<
    [fishermanRewardCut_: BigNumberish],
    [void],
    "nonpayable"
  >;

  setMaxSlashingCut: TypedContractMethod<
    [maxSlashingCut_: BigNumberish],
    [void],
    "nonpayable"
  >;

  setSubgraphService: TypedContractMethod<
    [subgraphService: AddressLike],
    [void],
    "nonpayable"
  >;

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

  getFunction(
    nameOrSignature: "acceptDispute",
  ): TypedContractMethod<
    [disputeId: BytesLike, tokensSlash: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "acceptDisputeConflict",
  ): TypedContractMethod<
    [
      disputeId: BytesLike,
      tokensSlash: BigNumberish,
      acceptDisputeInConflict: boolean,
      tokensSlashRelated: BigNumberish,
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "areConflictingAttestations",
  ): TypedContractMethod<
    [
      attestation1: IAttestation.StateStruct,
      attestation2: IAttestation.StateStruct,
    ],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "cancelDispute",
  ): TypedContractMethod<[disputeId: BytesLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "createAndAcceptLegacyDispute",
  ): TypedContractMethod<
    [
      allocationId: AddressLike,
      fisherman: AddressLike,
      tokensSlash: BigNumberish,
      tokensRewards: BigNumberish,
    ],
    [string],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "createIndexingDispute",
  ): TypedContractMethod<
    [allocationId: AddressLike, poi: BytesLike, blockNumber: BigNumberish],
    [string],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "createQueryDispute",
  ): TypedContractMethod<[attestationData: BytesLike], [string], "nonpayable">;
  getFunction(
    nameOrSignature: "createQueryDisputeConflict",
  ): TypedContractMethod<
    [attestationData1: BytesLike, attestationData2: BytesLike],
    [[string, string]],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "drawDispute",
  ): TypedContractMethod<[disputeId: BytesLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "encodeReceipt",
  ): TypedContractMethod<
    [receipt: IAttestation.ReceiptStruct],
    [string],
    "view"
  >;
  getFunction(
    nameOrSignature: "getAttestationIndexer",
  ): TypedContractMethod<
    [attestation: IAttestation.StateStruct],
    [string],
    "view"
  >;
  getFunction(
    nameOrSignature: "getDisputePeriod",
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getFishermanRewardCut",
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getStakeSnapshot",
  ): TypedContractMethod<[indexer: AddressLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "initialize",
  ): TypedContractMethod<
    [
      owner: AddressLike,
      arbitrator: AddressLike,
      disputePeriod: BigNumberish,
      disputeDeposit: BigNumberish,
      fishermanRewardCut_: BigNumberish,
      maxSlashingCut_: BigNumberish,
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "isDisputeCreated",
  ): TypedContractMethod<[disputeId: BytesLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "rejectDispute",
  ): TypedContractMethod<[disputeId: BytesLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setArbitrator",
  ): TypedContractMethod<[arbitrator: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setDisputeDeposit",
  ): TypedContractMethod<[disputeDeposit: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setDisputePeriod",
  ): TypedContractMethod<[disputePeriod: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setFishermanRewardCut",
  ): TypedContractMethod<
    [fishermanRewardCut_: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setMaxSlashingCut",
  ): TypedContractMethod<[maxSlashingCut_: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setSubgraphService",
  ): TypedContractMethod<[subgraphService: AddressLike], [void], "nonpayable">;

  getEvent(
    key: "ArbitratorSet",
  ): TypedContractEvent<
    ArbitratorSetEvent.InputTuple,
    ArbitratorSetEvent.OutputTuple,
    ArbitratorSetEvent.OutputObject
  >;
  getEvent(
    key: "DisputeAccepted",
  ): TypedContractEvent<
    DisputeAcceptedEvent.InputTuple,
    DisputeAcceptedEvent.OutputTuple,
    DisputeAcceptedEvent.OutputObject
  >;
  getEvent(
    key: "DisputeCancelled",
  ): TypedContractEvent<
    DisputeCancelledEvent.InputTuple,
    DisputeCancelledEvent.OutputTuple,
    DisputeCancelledEvent.OutputObject
  >;
  getEvent(
    key: "DisputeDepositSet",
  ): TypedContractEvent<
    DisputeDepositSetEvent.InputTuple,
    DisputeDepositSetEvent.OutputTuple,
    DisputeDepositSetEvent.OutputObject
  >;
  getEvent(
    key: "DisputeDrawn",
  ): TypedContractEvent<
    DisputeDrawnEvent.InputTuple,
    DisputeDrawnEvent.OutputTuple,
    DisputeDrawnEvent.OutputObject
  >;
  getEvent(
    key: "DisputeLinked",
  ): TypedContractEvent<
    DisputeLinkedEvent.InputTuple,
    DisputeLinkedEvent.OutputTuple,
    DisputeLinkedEvent.OutputObject
  >;
  getEvent(
    key: "DisputePeriodSet",
  ): TypedContractEvent<
    DisputePeriodSetEvent.InputTuple,
    DisputePeriodSetEvent.OutputTuple,
    DisputePeriodSetEvent.OutputObject
  >;
  getEvent(
    key: "DisputeRejected",
  ): TypedContractEvent<
    DisputeRejectedEvent.InputTuple,
    DisputeRejectedEvent.OutputTuple,
    DisputeRejectedEvent.OutputObject
  >;
  getEvent(
    key: "FishermanRewardCutSet",
  ): TypedContractEvent<
    FishermanRewardCutSetEvent.InputTuple,
    FishermanRewardCutSetEvent.OutputTuple,
    FishermanRewardCutSetEvent.OutputObject
  >;
  getEvent(
    key: "IndexingDisputeCreated",
  ): TypedContractEvent<
    IndexingDisputeCreatedEvent.InputTuple,
    IndexingDisputeCreatedEvent.OutputTuple,
    IndexingDisputeCreatedEvent.OutputObject
  >;
  getEvent(
    key: "LegacyDisputeCreated",
  ): TypedContractEvent<
    LegacyDisputeCreatedEvent.InputTuple,
    LegacyDisputeCreatedEvent.OutputTuple,
    LegacyDisputeCreatedEvent.OutputObject
  >;
  getEvent(
    key: "MaxSlashingCutSet",
  ): TypedContractEvent<
    MaxSlashingCutSetEvent.InputTuple,
    MaxSlashingCutSetEvent.OutputTuple,
    MaxSlashingCutSetEvent.OutputObject
  >;
  getEvent(
    key: "QueryDisputeCreated",
  ): TypedContractEvent<
    QueryDisputeCreatedEvent.InputTuple,
    QueryDisputeCreatedEvent.OutputTuple,
    QueryDisputeCreatedEvent.OutputObject
  >;
  getEvent(
    key: "SubgraphServiceSet",
  ): TypedContractEvent<
    SubgraphServiceSetEvent.InputTuple,
    SubgraphServiceSetEvent.OutputTuple,
    SubgraphServiceSetEvent.OutputObject
  >;

  filters: {
    "ArbitratorSet(address)": TypedContractEvent<
      ArbitratorSetEvent.InputTuple,
      ArbitratorSetEvent.OutputTuple,
      ArbitratorSetEvent.OutputObject
    >;
    ArbitratorSet: TypedContractEvent<
      ArbitratorSetEvent.InputTuple,
      ArbitratorSetEvent.OutputTuple,
      ArbitratorSetEvent.OutputObject
    >;

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

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

    "DisputeDepositSet(uint256)": TypedContractEvent<
      DisputeDepositSetEvent.InputTuple,
      DisputeDepositSetEvent.OutputTuple,
      DisputeDepositSetEvent.OutputObject
    >;
    DisputeDepositSet: TypedContractEvent<
      DisputeDepositSetEvent.InputTuple,
      DisputeDepositSetEvent.OutputTuple,
      DisputeDepositSetEvent.OutputObject
    >;

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

    "DisputeLinked(bytes32,bytes32)": TypedContractEvent<
      DisputeLinkedEvent.InputTuple,
      DisputeLinkedEvent.OutputTuple,
      DisputeLinkedEvent.OutputObject
    >;
    DisputeLinked: TypedContractEvent<
      DisputeLinkedEvent.InputTuple,
      DisputeLinkedEvent.OutputTuple,
      DisputeLinkedEvent.OutputObject
    >;

    "DisputePeriodSet(uint64)": TypedContractEvent<
      DisputePeriodSetEvent.InputTuple,
      DisputePeriodSetEvent.OutputTuple,
      DisputePeriodSetEvent.OutputObject
    >;
    DisputePeriodSet: TypedContractEvent<
      DisputePeriodSetEvent.InputTuple,
      DisputePeriodSetEvent.OutputTuple,
      DisputePeriodSetEvent.OutputObject
    >;

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

    "FishermanRewardCutSet(uint32)": TypedContractEvent<
      FishermanRewardCutSetEvent.InputTuple,
      FishermanRewardCutSetEvent.OutputTuple,
      FishermanRewardCutSetEvent.OutputObject
    >;
    FishermanRewardCutSet: TypedContractEvent<
      FishermanRewardCutSetEvent.InputTuple,
      FishermanRewardCutSetEvent.OutputTuple,
      FishermanRewardCutSetEvent.OutputObject
    >;

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

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

    "MaxSlashingCutSet(uint32)": TypedContractEvent<
      MaxSlashingCutSetEvent.InputTuple,
      MaxSlashingCutSetEvent.OutputTuple,
      MaxSlashingCutSetEvent.OutputObject
    >;
    MaxSlashingCutSet: TypedContractEvent<
      MaxSlashingCutSetEvent.InputTuple,
      MaxSlashingCutSetEvent.OutputTuple,
      MaxSlashingCutSetEvent.OutputObject
    >;

    "QueryDisputeCreated(bytes32,address,address,uint256,bytes32,bytes,uint256,uint256)": TypedContractEvent<
      QueryDisputeCreatedEvent.InputTuple,
      QueryDisputeCreatedEvent.OutputTuple,
      QueryDisputeCreatedEvent.OutputObject
    >;
    QueryDisputeCreated: TypedContractEvent<
      QueryDisputeCreatedEvent.InputTuple,
      QueryDisputeCreatedEvent.OutputTuple,
      QueryDisputeCreatedEvent.OutputObject
    >;

    "SubgraphServiceSet(address)": TypedContractEvent<
      SubgraphServiceSetEvent.InputTuple,
      SubgraphServiceSetEvent.OutputTuple,
      SubgraphServiceSetEvent.OutputObject
    >;
    SubgraphServiceSet: TypedContractEvent<
      SubgraphServiceSetEvent.InputTuple,
      SubgraphServiceSetEvent.OutputTuple,
      SubgraphServiceSetEvent.OutputObject
    >;
  };
}
