/* 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 IAllocation {
  export type StateStruct = {
    indexer: AddressLike;
    subgraphDeploymentId: BytesLike;
    tokens: BigNumberish;
    createdAt: BigNumberish;
    closedAt: BigNumberish;
    lastPOIPresentedAt: BigNumberish;
    accRewardsPerAllocatedToken: BigNumberish;
    accRewardsPending: BigNumberish;
    createdAtEpoch: BigNumberish;
  };

  export type StateStructOutput = [
    indexer: string,
    subgraphDeploymentId: string,
    tokens: bigint,
    createdAt: bigint,
    closedAt: bigint,
    lastPOIPresentedAt: bigint,
    accRewardsPerAllocatedToken: bigint,
    accRewardsPending: bigint,
    createdAtEpoch: bigint,
  ] & {
    indexer: string;
    subgraphDeploymentId: string;
    tokens: bigint;
    createdAt: bigint;
    closedAt: bigint;
    lastPOIPresentedAt: bigint;
    accRewardsPerAllocatedToken: bigint;
    accRewardsPending: bigint;
    createdAtEpoch: bigint;
  };
}

export declare namespace ILegacyAllocation {
  export type StateStruct = {
    indexer: AddressLike;
    subgraphDeploymentId: BytesLike;
  };

  export type StateStructOutput = [
    indexer: string,
    subgraphDeploymentId: string,
  ] & { indexer: string; subgraphDeploymentId: string };
}

export interface ISubgraphServiceInterface extends Interface {
  getFunction(
    nameOrSignature:
      | "acceptProvisionPendingParameters"
      | "closeStaleAllocation"
      | "collect"
      | "encodeAllocationProof"
      | "getAllocation"
      | "getCuration"
      | "getDelegationRatio"
      | "getDisputeManager"
      | "getGraphTallyCollector"
      | "getLegacyAllocation"
      | "getProvisionTokensRange"
      | "getThawingPeriodRange"
      | "getVerifierCutRange"
      | "initialize"
      | "isOverAllocated"
      | "migrateLegacyAllocation"
      | "register"
      | "releaseStake"
      | "resizeAllocation"
      | "setCurationCut"
      | "setDelegationRatio"
      | "setMaxPOIStaleness"
      | "setMinimumProvisionTokens"
      | "setPauseGuardian"
      | "setPaymentsDestination"
      | "setStakeToFeesRatio"
      | "slash"
      | "startService"
      | "stopService",
  ): FunctionFragment;

  getEvent(
    nameOrSignatureOrTopic:
      | "CurationCutSet"
      | "PaymentsDestinationSet"
      | "ProvisionPendingParametersAccepted"
      | "QueryFeesCollected"
      | "ServicePaymentCollected"
      | "ServiceProviderRegistered"
      | "ServiceProviderSlashed"
      | "ServiceStarted"
      | "ServiceStopped"
      | "StakeClaimLocked"
      | "StakeClaimReleased"
      | "StakeClaimsReleased"
      | "StakeToFeesRatioSet",
  ): EventFragment;

  encodeFunctionData(
    functionFragment: "acceptProvisionPendingParameters",
    values: [AddressLike, BytesLike],
  ): string;
  encodeFunctionData(
    functionFragment: "closeStaleAllocation",
    values: [AddressLike],
  ): string;
  encodeFunctionData(
    functionFragment: "collect",
    values: [AddressLike, BigNumberish, BytesLike],
  ): string;
  encodeFunctionData(
    functionFragment: "encodeAllocationProof",
    values: [AddressLike, AddressLike],
  ): string;
  encodeFunctionData(
    functionFragment: "getAllocation",
    values: [AddressLike],
  ): string;
  encodeFunctionData(
    functionFragment: "getCuration",
    values?: undefined,
  ): string;
  encodeFunctionData(
    functionFragment: "getDelegationRatio",
    values?: undefined,
  ): string;
  encodeFunctionData(
    functionFragment: "getDisputeManager",
    values?: undefined,
  ): string;
  encodeFunctionData(
    functionFragment: "getGraphTallyCollector",
    values?: undefined,
  ): string;
  encodeFunctionData(
    functionFragment: "getLegacyAllocation",
    values: [AddressLike],
  ): string;
  encodeFunctionData(
    functionFragment: "getProvisionTokensRange",
    values?: undefined,
  ): string;
  encodeFunctionData(
    functionFragment: "getThawingPeriodRange",
    values?: undefined,
  ): string;
  encodeFunctionData(
    functionFragment: "getVerifierCutRange",
    values?: undefined,
  ): string;
  encodeFunctionData(
    functionFragment: "initialize",
    values: [AddressLike, BigNumberish, BigNumberish, BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "isOverAllocated",
    values: [AddressLike],
  ): string;
  encodeFunctionData(
    functionFragment: "migrateLegacyAllocation",
    values: [AddressLike, AddressLike, BytesLike],
  ): string;
  encodeFunctionData(
    functionFragment: "register",
    values: [AddressLike, BytesLike],
  ): string;
  encodeFunctionData(
    functionFragment: "releaseStake",
    values: [BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "resizeAllocation",
    values: [AddressLike, AddressLike, BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "setCurationCut",
    values: [BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "setDelegationRatio",
    values: [BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "setMaxPOIStaleness",
    values: [BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "setMinimumProvisionTokens",
    values: [BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "setPauseGuardian",
    values: [AddressLike, boolean],
  ): string;
  encodeFunctionData(
    functionFragment: "setPaymentsDestination",
    values: [AddressLike],
  ): string;
  encodeFunctionData(
    functionFragment: "setStakeToFeesRatio",
    values: [BigNumberish],
  ): string;
  encodeFunctionData(
    functionFragment: "slash",
    values: [AddressLike, BytesLike],
  ): string;
  encodeFunctionData(
    functionFragment: "startService",
    values: [AddressLike, BytesLike],
  ): string;
  encodeFunctionData(
    functionFragment: "stopService",
    values: [AddressLike, BytesLike],
  ): string;

  decodeFunctionResult(
    functionFragment: "acceptProvisionPendingParameters",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "closeStaleAllocation",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(functionFragment: "collect", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "encodeAllocationProof",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "getAllocation",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "getCuration",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "getDelegationRatio",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "getDisputeManager",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "getGraphTallyCollector",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "getLegacyAllocation",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "getProvisionTokensRange",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "getThawingPeriodRange",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "getVerifierCutRange",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isOverAllocated",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "migrateLegacyAllocation",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(functionFragment: "register", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "releaseStake",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "resizeAllocation",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "setCurationCut",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "setDelegationRatio",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMaxPOIStaleness",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMinimumProvisionTokens",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "setPauseGuardian",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "setPaymentsDestination",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "setStakeToFeesRatio",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(functionFragment: "slash", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "startService",
    data: BytesLike,
  ): Result;
  decodeFunctionResult(
    functionFragment: "stopService",
    data: BytesLike,
  ): Result;
}

export namespace CurationCutSetEvent {
  export type InputTuple = [curationCut: BigNumberish];
  export type OutputTuple = [curationCut: bigint];
  export interface OutputObject {
    curationCut: 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 PaymentsDestinationSetEvent {
  export type InputTuple = [
    indexer: AddressLike,
    paymentsDestination: AddressLike,
  ];
  export type OutputTuple = [indexer: string, paymentsDestination: string];
  export interface OutputObject {
    indexer: string;
    paymentsDestination: 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 ProvisionPendingParametersAcceptedEvent {
  export type InputTuple = [serviceProvider: AddressLike];
  export type OutputTuple = [serviceProvider: string];
  export interface OutputObject {
    serviceProvider: 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 QueryFeesCollectedEvent {
  export type InputTuple = [
    serviceProvider: AddressLike,
    payer: AddressLike,
    allocationId: AddressLike,
    subgraphDeploymentId: BytesLike,
    tokensCollected: BigNumberish,
    tokensCurators: BigNumberish,
  ];
  export type OutputTuple = [
    serviceProvider: string,
    payer: string,
    allocationId: string,
    subgraphDeploymentId: string,
    tokensCollected: bigint,
    tokensCurators: bigint,
  ];
  export interface OutputObject {
    serviceProvider: string;
    payer: string;
    allocationId: string;
    subgraphDeploymentId: string;
    tokensCollected: bigint;
    tokensCurators: 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 ServicePaymentCollectedEvent {
  export type InputTuple = [
    serviceProvider: AddressLike,
    feeType: BigNumberish,
    tokens: BigNumberish,
  ];
  export type OutputTuple = [
    serviceProvider: string,
    feeType: bigint,
    tokens: bigint,
  ];
  export interface OutputObject {
    serviceProvider: string;
    feeType: bigint;
    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 ServiceProviderRegisteredEvent {
  export type InputTuple = [serviceProvider: AddressLike, data: BytesLike];
  export type OutputTuple = [serviceProvider: string, data: string];
  export interface OutputObject {
    serviceProvider: string;
    data: 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 ServiceProviderSlashedEvent {
  export type InputTuple = [serviceProvider: AddressLike, tokens: BigNumberish];
  export type OutputTuple = [serviceProvider: string, tokens: bigint];
  export interface OutputObject {
    serviceProvider: 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 ServiceStartedEvent {
  export type InputTuple = [serviceProvider: AddressLike, data: BytesLike];
  export type OutputTuple = [serviceProvider: string, data: string];
  export interface OutputObject {
    serviceProvider: string;
    data: 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 ServiceStoppedEvent {
  export type InputTuple = [serviceProvider: AddressLike, data: BytesLike];
  export type OutputTuple = [serviceProvider: string, data: string];
  export interface OutputObject {
    serviceProvider: string;
    data: 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 StakeClaimLockedEvent {
  export type InputTuple = [
    serviceProvider: AddressLike,
    claimId: BytesLike,
    tokens: BigNumberish,
    unlockTimestamp: BigNumberish,
  ];
  export type OutputTuple = [
    serviceProvider: string,
    claimId: string,
    tokens: bigint,
    unlockTimestamp: bigint,
  ];
  export interface OutputObject {
    serviceProvider: string;
    claimId: string;
    tokens: bigint;
    unlockTimestamp: 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 StakeClaimReleasedEvent {
  export type InputTuple = [
    serviceProvider: AddressLike,
    claimId: BytesLike,
    tokens: BigNumberish,
    releasableAt: BigNumberish,
  ];
  export type OutputTuple = [
    serviceProvider: string,
    claimId: string,
    tokens: bigint,
    releasableAt: bigint,
  ];
  export interface OutputObject {
    serviceProvider: string;
    claimId: string;
    tokens: bigint;
    releasableAt: 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 StakeClaimsReleasedEvent {
  export type InputTuple = [
    serviceProvider: AddressLike,
    claimsCount: BigNumberish,
    tokensReleased: BigNumberish,
  ];
  export type OutputTuple = [
    serviceProvider: string,
    claimsCount: bigint,
    tokensReleased: bigint,
  ];
  export interface OutputObject {
    serviceProvider: string;
    claimsCount: bigint;
    tokensReleased: 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 StakeToFeesRatioSetEvent {
  export type InputTuple = [ratio: BigNumberish];
  export type OutputTuple = [ratio: bigint];
  export interface OutputObject {
    ratio: 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 ISubgraphService extends BaseContract {
  connect(runner?: ContractRunner | null): ISubgraphService;
  waitForDeployment(): Promise<this>;

  interface: ISubgraphServiceInterface;

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

  acceptProvisionPendingParameters: TypedContractMethod<
    [serviceProvider: AddressLike, data: BytesLike],
    [void],
    "nonpayable"
  >;

  closeStaleAllocation: TypedContractMethod<
    [allocationId: AddressLike],
    [void],
    "nonpayable"
  >;

  collect: TypedContractMethod<
    [serviceProvider: AddressLike, feeType: BigNumberish, data: BytesLike],
    [bigint],
    "nonpayable"
  >;

  encodeAllocationProof: TypedContractMethod<
    [indexer: AddressLike, allocationId: AddressLike],
    [string],
    "view"
  >;

  getAllocation: TypedContractMethod<
    [allocationId: AddressLike],
    [IAllocation.StateStructOutput],
    "view"
  >;

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

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

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

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

  getLegacyAllocation: TypedContractMethod<
    [allocationId: AddressLike],
    [ILegacyAllocation.StateStructOutput],
    "view"
  >;

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

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

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

  initialize: TypedContractMethod<
    [
      owner: AddressLike,
      minimumProvisionTokens: BigNumberish,
      maximumDelegationRatio: BigNumberish,
      stakeToFeesRatio: BigNumberish,
    ],
    [void],
    "nonpayable"
  >;

  isOverAllocated: TypedContractMethod<
    [allocationId: AddressLike],
    [boolean],
    "view"
  >;

  migrateLegacyAllocation: TypedContractMethod<
    [
      indexer: AddressLike,
      allocationId: AddressLike,
      subgraphDeploymentId: BytesLike,
    ],
    [void],
    "nonpayable"
  >;

  register: TypedContractMethod<
    [serviceProvider: AddressLike, data: BytesLike],
    [void],
    "nonpayable"
  >;

  releaseStake: TypedContractMethod<
    [numClaimsToRelease: BigNumberish],
    [void],
    "nonpayable"
  >;

  resizeAllocation: TypedContractMethod<
    [indexer: AddressLike, allocationId: AddressLike, tokens: BigNumberish],
    [void],
    "nonpayable"
  >;

  setCurationCut: TypedContractMethod<
    [curationCut: BigNumberish],
    [void],
    "nonpayable"
  >;

  setDelegationRatio: TypedContractMethod<
    [delegationRatio: BigNumberish],
    [void],
    "nonpayable"
  >;

  setMaxPOIStaleness: TypedContractMethod<
    [maxPOIStaleness: BigNumberish],
    [void],
    "nonpayable"
  >;

  setMinimumProvisionTokens: TypedContractMethod<
    [minimumProvisionTokens: BigNumberish],
    [void],
    "nonpayable"
  >;

  setPauseGuardian: TypedContractMethod<
    [pauseGuardian: AddressLike, allowed: boolean],
    [void],
    "nonpayable"
  >;

  setPaymentsDestination: TypedContractMethod<
    [paymentsDestination: AddressLike],
    [void],
    "nonpayable"
  >;

  setStakeToFeesRatio: TypedContractMethod<
    [stakeToFeesRatio: BigNumberish],
    [void],
    "nonpayable"
  >;

  slash: TypedContractMethod<
    [serviceProvider: AddressLike, data: BytesLike],
    [void],
    "nonpayable"
  >;

  startService: TypedContractMethod<
    [serviceProvider: AddressLike, data: BytesLike],
    [void],
    "nonpayable"
  >;

  stopService: TypedContractMethod<
    [serviceProvider: AddressLike, data: BytesLike],
    [void],
    "nonpayable"
  >;

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

  getFunction(
    nameOrSignature: "acceptProvisionPendingParameters",
  ): TypedContractMethod<
    [serviceProvider: AddressLike, data: BytesLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "closeStaleAllocation",
  ): TypedContractMethod<[allocationId: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "collect",
  ): TypedContractMethod<
    [serviceProvider: AddressLike, feeType: BigNumberish, data: BytesLike],
    [bigint],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "encodeAllocationProof",
  ): TypedContractMethod<
    [indexer: AddressLike, allocationId: AddressLike],
    [string],
    "view"
  >;
  getFunction(
    nameOrSignature: "getAllocation",
  ): TypedContractMethod<
    [allocationId: AddressLike],
    [IAllocation.StateStructOutput],
    "view"
  >;
  getFunction(
    nameOrSignature: "getCuration",
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "getDelegationRatio",
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getDisputeManager",
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "getGraphTallyCollector",
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "getLegacyAllocation",
  ): TypedContractMethod<
    [allocationId: AddressLike],
    [ILegacyAllocation.StateStructOutput],
    "view"
  >;
  getFunction(
    nameOrSignature: "getProvisionTokensRange",
  ): TypedContractMethod<[], [[bigint, bigint]], "view">;
  getFunction(
    nameOrSignature: "getThawingPeriodRange",
  ): TypedContractMethod<[], [[bigint, bigint]], "view">;
  getFunction(
    nameOrSignature: "getVerifierCutRange",
  ): TypedContractMethod<[], [[bigint, bigint]], "view">;
  getFunction(
    nameOrSignature: "initialize",
  ): TypedContractMethod<
    [
      owner: AddressLike,
      minimumProvisionTokens: BigNumberish,
      maximumDelegationRatio: BigNumberish,
      stakeToFeesRatio: BigNumberish,
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "isOverAllocated",
  ): TypedContractMethod<[allocationId: AddressLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "migrateLegacyAllocation",
  ): TypedContractMethod<
    [
      indexer: AddressLike,
      allocationId: AddressLike,
      subgraphDeploymentId: BytesLike,
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "register",
  ): TypedContractMethod<
    [serviceProvider: AddressLike, data: BytesLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "releaseStake",
  ): TypedContractMethod<
    [numClaimsToRelease: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "resizeAllocation",
  ): TypedContractMethod<
    [indexer: AddressLike, allocationId: AddressLike, tokens: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setCurationCut",
  ): TypedContractMethod<[curationCut: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setDelegationRatio",
  ): TypedContractMethod<[delegationRatio: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMaxPOIStaleness",
  ): TypedContractMethod<[maxPOIStaleness: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMinimumProvisionTokens",
  ): TypedContractMethod<
    [minimumProvisionTokens: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setPauseGuardian",
  ): TypedContractMethod<
    [pauseGuardian: AddressLike, allowed: boolean],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setPaymentsDestination",
  ): TypedContractMethod<
    [paymentsDestination: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setStakeToFeesRatio",
  ): TypedContractMethod<
    [stakeToFeesRatio: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "slash",
  ): TypedContractMethod<
    [serviceProvider: AddressLike, data: BytesLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "startService",
  ): TypedContractMethod<
    [serviceProvider: AddressLike, data: BytesLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "stopService",
  ): TypedContractMethod<
    [serviceProvider: AddressLike, data: BytesLike],
    [void],
    "nonpayable"
  >;

  getEvent(
    key: "CurationCutSet",
  ): TypedContractEvent<
    CurationCutSetEvent.InputTuple,
    CurationCutSetEvent.OutputTuple,
    CurationCutSetEvent.OutputObject
  >;
  getEvent(
    key: "PaymentsDestinationSet",
  ): TypedContractEvent<
    PaymentsDestinationSetEvent.InputTuple,
    PaymentsDestinationSetEvent.OutputTuple,
    PaymentsDestinationSetEvent.OutputObject
  >;
  getEvent(
    key: "ProvisionPendingParametersAccepted",
  ): TypedContractEvent<
    ProvisionPendingParametersAcceptedEvent.InputTuple,
    ProvisionPendingParametersAcceptedEvent.OutputTuple,
    ProvisionPendingParametersAcceptedEvent.OutputObject
  >;
  getEvent(
    key: "QueryFeesCollected",
  ): TypedContractEvent<
    QueryFeesCollectedEvent.InputTuple,
    QueryFeesCollectedEvent.OutputTuple,
    QueryFeesCollectedEvent.OutputObject
  >;
  getEvent(
    key: "ServicePaymentCollected",
  ): TypedContractEvent<
    ServicePaymentCollectedEvent.InputTuple,
    ServicePaymentCollectedEvent.OutputTuple,
    ServicePaymentCollectedEvent.OutputObject
  >;
  getEvent(
    key: "ServiceProviderRegistered",
  ): TypedContractEvent<
    ServiceProviderRegisteredEvent.InputTuple,
    ServiceProviderRegisteredEvent.OutputTuple,
    ServiceProviderRegisteredEvent.OutputObject
  >;
  getEvent(
    key: "ServiceProviderSlashed",
  ): TypedContractEvent<
    ServiceProviderSlashedEvent.InputTuple,
    ServiceProviderSlashedEvent.OutputTuple,
    ServiceProviderSlashedEvent.OutputObject
  >;
  getEvent(
    key: "ServiceStarted",
  ): TypedContractEvent<
    ServiceStartedEvent.InputTuple,
    ServiceStartedEvent.OutputTuple,
    ServiceStartedEvent.OutputObject
  >;
  getEvent(
    key: "ServiceStopped",
  ): TypedContractEvent<
    ServiceStoppedEvent.InputTuple,
    ServiceStoppedEvent.OutputTuple,
    ServiceStoppedEvent.OutputObject
  >;
  getEvent(
    key: "StakeClaimLocked",
  ): TypedContractEvent<
    StakeClaimLockedEvent.InputTuple,
    StakeClaimLockedEvent.OutputTuple,
    StakeClaimLockedEvent.OutputObject
  >;
  getEvent(
    key: "StakeClaimReleased",
  ): TypedContractEvent<
    StakeClaimReleasedEvent.InputTuple,
    StakeClaimReleasedEvent.OutputTuple,
    StakeClaimReleasedEvent.OutputObject
  >;
  getEvent(
    key: "StakeClaimsReleased",
  ): TypedContractEvent<
    StakeClaimsReleasedEvent.InputTuple,
    StakeClaimsReleasedEvent.OutputTuple,
    StakeClaimsReleasedEvent.OutputObject
  >;
  getEvent(
    key: "StakeToFeesRatioSet",
  ): TypedContractEvent<
    StakeToFeesRatioSetEvent.InputTuple,
    StakeToFeesRatioSetEvent.OutputTuple,
    StakeToFeesRatioSetEvent.OutputObject
  >;

  filters: {
    "CurationCutSet(uint256)": TypedContractEvent<
      CurationCutSetEvent.InputTuple,
      CurationCutSetEvent.OutputTuple,
      CurationCutSetEvent.OutputObject
    >;
    CurationCutSet: TypedContractEvent<
      CurationCutSetEvent.InputTuple,
      CurationCutSetEvent.OutputTuple,
      CurationCutSetEvent.OutputObject
    >;

    "PaymentsDestinationSet(address,address)": TypedContractEvent<
      PaymentsDestinationSetEvent.InputTuple,
      PaymentsDestinationSetEvent.OutputTuple,
      PaymentsDestinationSetEvent.OutputObject
    >;
    PaymentsDestinationSet: TypedContractEvent<
      PaymentsDestinationSetEvent.InputTuple,
      PaymentsDestinationSetEvent.OutputTuple,
      PaymentsDestinationSetEvent.OutputObject
    >;

    "ProvisionPendingParametersAccepted(address)": TypedContractEvent<
      ProvisionPendingParametersAcceptedEvent.InputTuple,
      ProvisionPendingParametersAcceptedEvent.OutputTuple,
      ProvisionPendingParametersAcceptedEvent.OutputObject
    >;
    ProvisionPendingParametersAccepted: TypedContractEvent<
      ProvisionPendingParametersAcceptedEvent.InputTuple,
      ProvisionPendingParametersAcceptedEvent.OutputTuple,
      ProvisionPendingParametersAcceptedEvent.OutputObject
    >;

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

    "ServicePaymentCollected(address,uint8,uint256)": TypedContractEvent<
      ServicePaymentCollectedEvent.InputTuple,
      ServicePaymentCollectedEvent.OutputTuple,
      ServicePaymentCollectedEvent.OutputObject
    >;
    ServicePaymentCollected: TypedContractEvent<
      ServicePaymentCollectedEvent.InputTuple,
      ServicePaymentCollectedEvent.OutputTuple,
      ServicePaymentCollectedEvent.OutputObject
    >;

    "ServiceProviderRegistered(address,bytes)": TypedContractEvent<
      ServiceProviderRegisteredEvent.InputTuple,
      ServiceProviderRegisteredEvent.OutputTuple,
      ServiceProviderRegisteredEvent.OutputObject
    >;
    ServiceProviderRegistered: TypedContractEvent<
      ServiceProviderRegisteredEvent.InputTuple,
      ServiceProviderRegisteredEvent.OutputTuple,
      ServiceProviderRegisteredEvent.OutputObject
    >;

    "ServiceProviderSlashed(address,uint256)": TypedContractEvent<
      ServiceProviderSlashedEvent.InputTuple,
      ServiceProviderSlashedEvent.OutputTuple,
      ServiceProviderSlashedEvent.OutputObject
    >;
    ServiceProviderSlashed: TypedContractEvent<
      ServiceProviderSlashedEvent.InputTuple,
      ServiceProviderSlashedEvent.OutputTuple,
      ServiceProviderSlashedEvent.OutputObject
    >;

    "ServiceStarted(address,bytes)": TypedContractEvent<
      ServiceStartedEvent.InputTuple,
      ServiceStartedEvent.OutputTuple,
      ServiceStartedEvent.OutputObject
    >;
    ServiceStarted: TypedContractEvent<
      ServiceStartedEvent.InputTuple,
      ServiceStartedEvent.OutputTuple,
      ServiceStartedEvent.OutputObject
    >;

    "ServiceStopped(address,bytes)": TypedContractEvent<
      ServiceStoppedEvent.InputTuple,
      ServiceStoppedEvent.OutputTuple,
      ServiceStoppedEvent.OutputObject
    >;
    ServiceStopped: TypedContractEvent<
      ServiceStoppedEvent.InputTuple,
      ServiceStoppedEvent.OutputTuple,
      ServiceStoppedEvent.OutputObject
    >;

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

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

    "StakeClaimsReleased(address,uint256,uint256)": TypedContractEvent<
      StakeClaimsReleasedEvent.InputTuple,
      StakeClaimsReleasedEvent.OutputTuple,
      StakeClaimsReleasedEvent.OutputObject
    >;
    StakeClaimsReleased: TypedContractEvent<
      StakeClaimsReleasedEvent.InputTuple,
      StakeClaimsReleasedEvent.OutputTuple,
      StakeClaimsReleasedEvent.OutputObject
    >;

    "StakeToFeesRatioSet(uint256)": TypedContractEvent<
      StakeToFeesRatioSetEvent.InputTuple,
      StakeToFeesRatioSetEvent.OutputTuple,
      StakeToFeesRatioSetEvent.OutputObject
    >;
    StakeToFeesRatioSet: TypedContractEvent<
      StakeToFeesRatioSetEvent.InputTuple,
      StakeToFeesRatioSetEvent.OutputTuple,
      StakeToFeesRatioSetEvent.OutputObject
    >;
  };
}
