/* 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 interface IX2EarnRewardsPoolInterface extends Interface {
  getFunction(
    nameOrSignature:
      | "availableFunds"
      | "buildProof"
      | "deposit"
      | "distributeReward"
      | "distributeRewardDeprecated"
      | "distributeRewardForRound"
      | "distributeRewardWithProof"
      | "distributeRewardWithProofAndMetadata"
      | "distributeRewardWithProofAndMetadataForRound"
      | "distributeRewardWithProofForRound"
      | "enableRewardsPoolForNewApp"
      | "isDistributionPaused"
      | "isRewardsPoolEnabled"
      | "rewardsPoolBalance"
      | "totalBalance"
      | "version"
      | "withdraw"
  ): FunctionFragment;

  getEvent(
    nameOrSignatureOrTopic:
      | "AppPaused"
      | "AppUnpaused"
      | "NewDeposit"
      | "RegisterActionFailed"
      | "RewardDistributed"
      | "RewardMetadata"
      | "RewardsPoolBalanceEnabled"
      | "RewardsPoolBalanceUpdated"
      | "TeamWithdrawal"
  ): EventFragment;

  encodeFunctionData(
    functionFragment: "availableFunds",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "buildProof",
    values: [string[], string[], string[], BigNumberish[], string]
  ): string;
  encodeFunctionData(
    functionFragment: "deposit",
    values: [BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "distributeReward",
    values: [BytesLike, BigNumberish, AddressLike, string]
  ): string;
  encodeFunctionData(
    functionFragment: "distributeRewardDeprecated",
    values: [BytesLike, BigNumberish, AddressLike, string]
  ): string;
  encodeFunctionData(
    functionFragment: "distributeRewardForRound",
    values: [BytesLike, BigNumberish, AddressLike, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "distributeRewardWithProof",
    values: [
      BytesLike,
      BigNumberish,
      AddressLike,
      string[],
      string[],
      string[],
      BigNumberish[],
      string
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "distributeRewardWithProofAndMetadata",
    values: [
      BytesLike,
      BigNumberish,
      AddressLike,
      string[],
      string[],
      string[],
      BigNumberish[],
      string,
      string
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "distributeRewardWithProofAndMetadataForRound",
    values: [
      BytesLike,
      BigNumberish,
      AddressLike,
      string[],
      string[],
      string[],
      BigNumberish[],
      string,
      string,
      BigNumberish
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "distributeRewardWithProofForRound",
    values: [
      BytesLike,
      BigNumberish,
      AddressLike,
      string[],
      string[],
      string[],
      BigNumberish[],
      string,
      BigNumberish
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "enableRewardsPoolForNewApp",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isDistributionPaused",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isRewardsPoolEnabled",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "rewardsPoolBalance",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "totalBalance",
    values: [BytesLike]
  ): string;
  encodeFunctionData(functionFragment: "version", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "withdraw",
    values: [BigNumberish, BytesLike, string]
  ): string;

  decodeFunctionResult(
    functionFragment: "availableFunds",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "buildProof", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "distributeReward",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "distributeRewardDeprecated",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "distributeRewardForRound",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "distributeRewardWithProof",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "distributeRewardWithProofAndMetadata",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "distributeRewardWithProofAndMetadataForRound",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "distributeRewardWithProofForRound",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "enableRewardsPoolForNewApp",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isDistributionPaused",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isRewardsPoolEnabled",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "rewardsPoolBalance",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "totalBalance",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "version", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result;
}

export namespace AppPausedEvent {
  export type InputTuple = [appId: BytesLike, admin: AddressLike];
  export type OutputTuple = [appId: string, admin: string];
  export interface OutputObject {
    appId: string;
    admin: 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 AppUnpausedEvent {
  export type InputTuple = [appId: BytesLike, admin: AddressLike];
  export type OutputTuple = [appId: string, admin: string];
  export interface OutputObject {
    appId: string;
    admin: 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 NewDepositEvent {
  export type InputTuple = [
    amount: BigNumberish,
    appId: BytesLike,
    depositor: AddressLike
  ];
  export type OutputTuple = [amount: bigint, appId: string, depositor: string];
  export interface OutputObject {
    amount: bigint;
    appId: string;
    depositor: 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 RegisterActionFailedEvent {
  export type InputTuple = [reason: string, lowLevelData: BytesLike];
  export type OutputTuple = [reason: string, lowLevelData: string];
  export interface OutputObject {
    reason: string;
    lowLevelData: 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 RewardDistributedEvent {
  export type InputTuple = [
    amount: BigNumberish,
    appId: BytesLike,
    receiver: AddressLike,
    proof: string,
    distributor: AddressLike
  ];
  export type OutputTuple = [
    amount: bigint,
    appId: string,
    receiver: string,
    proof: string,
    distributor: string
  ];
  export interface OutputObject {
    amount: bigint;
    appId: string;
    receiver: string;
    proof: string;
    distributor: 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 RewardMetadataEvent {
  export type InputTuple = [
    amount: BigNumberish,
    appId: BytesLike,
    receiver: AddressLike,
    metadata: string,
    distributor: AddressLike
  ];
  export type OutputTuple = [
    amount: bigint,
    appId: string,
    receiver: string,
    metadata: string,
    distributor: string
  ];
  export interface OutputObject {
    amount: bigint;
    appId: string;
    receiver: string;
    metadata: string;
    distributor: 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 RewardsPoolBalanceEnabledEvent {
  export type InputTuple = [appId: BytesLike, enable: boolean];
  export type OutputTuple = [appId: string, enable: boolean];
  export interface OutputObject {
    appId: string;
    enable: boolean;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace RewardsPoolBalanceUpdatedEvent {
  export type InputTuple = [
    appId: BytesLike,
    amount: BigNumberish,
    availableFunds: BigNumberish,
    rewardsPoolBalance: BigNumberish
  ];
  export type OutputTuple = [
    appId: string,
    amount: bigint,
    availableFunds: bigint,
    rewardsPoolBalance: bigint
  ];
  export interface OutputObject {
    appId: string;
    amount: bigint;
    availableFunds: bigint;
    rewardsPoolBalance: 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 TeamWithdrawalEvent {
  export type InputTuple = [
    amount: BigNumberish,
    appId: BytesLike,
    teamWallet: AddressLike,
    withdrawer: AddressLike,
    reason: string
  ];
  export type OutputTuple = [
    amount: bigint,
    appId: string,
    teamWallet: string,
    withdrawer: string,
    reason: string
  ];
  export interface OutputObject {
    amount: bigint;
    appId: string;
    teamWallet: string;
    withdrawer: string;
    reason: 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 IX2EarnRewardsPool extends BaseContract {
  connect(runner?: ContractRunner | null): IX2EarnRewardsPool;
  waitForDeployment(): Promise<this>;

  interface: IX2EarnRewardsPoolInterface;

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

  availableFunds: TypedContractMethod<[appId: BytesLike], [bigint], "view">;

  buildProof: TypedContractMethod<
    [
      proofTypes: string[],
      proofValues: string[],
      impactCodes: string[],
      impactValues: BigNumberish[],
      description: string
    ],
    [string],
    "nonpayable"
  >;

  deposit: TypedContractMethod<
    [amount: BigNumberish, appId: BytesLike],
    [boolean],
    "nonpayable"
  >;

  distributeReward: TypedContractMethod<
    [
      appId: BytesLike,
      amount: BigNumberish,
      receiver: AddressLike,
      proof: string
    ],
    [void],
    "nonpayable"
  >;

  distributeRewardDeprecated: TypedContractMethod<
    [
      appId: BytesLike,
      amount: BigNumberish,
      receiver: AddressLike,
      proof: string
    ],
    [void],
    "nonpayable"
  >;

  distributeRewardForRound: TypedContractMethod<
    [
      appId: BytesLike,
      amount: BigNumberish,
      receiver: AddressLike,
      proof: string,
      actionRound: BigNumberish
    ],
    [void],
    "nonpayable"
  >;

  distributeRewardWithProof: TypedContractMethod<
    [
      appId: BytesLike,
      amount: BigNumberish,
      receiver: AddressLike,
      proofTypes: string[],
      proofValues: string[],
      impactCodes: string[],
      impactValues: BigNumberish[],
      description: string
    ],
    [void],
    "nonpayable"
  >;

  distributeRewardWithProofAndMetadata: TypedContractMethod<
    [
      appId: BytesLike,
      amount: BigNumberish,
      receiver: AddressLike,
      proofTypes: string[],
      proofValues: string[],
      impactCodes: string[],
      impactValues: BigNumberish[],
      description: string,
      metadata: string
    ],
    [void],
    "nonpayable"
  >;

  distributeRewardWithProofAndMetadataForRound: TypedContractMethod<
    [
      appId: BytesLike,
      amount: BigNumberish,
      receiver: AddressLike,
      proofTypes: string[],
      proofValues: string[],
      impactCodes: string[],
      impactValues: BigNumberish[],
      description: string,
      metadata: string,
      actionRound: BigNumberish
    ],
    [void],
    "nonpayable"
  >;

  distributeRewardWithProofForRound: TypedContractMethod<
    [
      appId: BytesLike,
      amount: BigNumberish,
      receiver: AddressLike,
      proofTypes: string[],
      proofValues: string[],
      impactCodes: string[],
      impactValues: BigNumberish[],
      description: string,
      actionRound: BigNumberish
    ],
    [void],
    "nonpayable"
  >;

  enableRewardsPoolForNewApp: TypedContractMethod<
    [appId: BytesLike],
    [void],
    "nonpayable"
  >;

  isDistributionPaused: TypedContractMethod<
    [appId: BytesLike],
    [boolean],
    "view"
  >;

  isRewardsPoolEnabled: TypedContractMethod<
    [appId: BytesLike],
    [boolean],
    "view"
  >;

  rewardsPoolBalance: TypedContractMethod<[appId: BytesLike], [bigint], "view">;

  totalBalance: TypedContractMethod<[appId: BytesLike], [bigint], "view">;

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

  withdraw: TypedContractMethod<
    [amount: BigNumberish, appId: BytesLike, reason: string],
    [void],
    "nonpayable"
  >;

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

  getFunction(
    nameOrSignature: "availableFunds"
  ): TypedContractMethod<[appId: BytesLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "buildProof"
  ): TypedContractMethod<
    [
      proofTypes: string[],
      proofValues: string[],
      impactCodes: string[],
      impactValues: BigNumberish[],
      description: string
    ],
    [string],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "deposit"
  ): TypedContractMethod<
    [amount: BigNumberish, appId: BytesLike],
    [boolean],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "distributeReward"
  ): TypedContractMethod<
    [
      appId: BytesLike,
      amount: BigNumberish,
      receiver: AddressLike,
      proof: string
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "distributeRewardDeprecated"
  ): TypedContractMethod<
    [
      appId: BytesLike,
      amount: BigNumberish,
      receiver: AddressLike,
      proof: string
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "distributeRewardForRound"
  ): TypedContractMethod<
    [
      appId: BytesLike,
      amount: BigNumberish,
      receiver: AddressLike,
      proof: string,
      actionRound: BigNumberish
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "distributeRewardWithProof"
  ): TypedContractMethod<
    [
      appId: BytesLike,
      amount: BigNumberish,
      receiver: AddressLike,
      proofTypes: string[],
      proofValues: string[],
      impactCodes: string[],
      impactValues: BigNumberish[],
      description: string
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "distributeRewardWithProofAndMetadata"
  ): TypedContractMethod<
    [
      appId: BytesLike,
      amount: BigNumberish,
      receiver: AddressLike,
      proofTypes: string[],
      proofValues: string[],
      impactCodes: string[],
      impactValues: BigNumberish[],
      description: string,
      metadata: string
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "distributeRewardWithProofAndMetadataForRound"
  ): TypedContractMethod<
    [
      appId: BytesLike,
      amount: BigNumberish,
      receiver: AddressLike,
      proofTypes: string[],
      proofValues: string[],
      impactCodes: string[],
      impactValues: BigNumberish[],
      description: string,
      metadata: string,
      actionRound: BigNumberish
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "distributeRewardWithProofForRound"
  ): TypedContractMethod<
    [
      appId: BytesLike,
      amount: BigNumberish,
      receiver: AddressLike,
      proofTypes: string[],
      proofValues: string[],
      impactCodes: string[],
      impactValues: BigNumberish[],
      description: string,
      actionRound: BigNumberish
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "enableRewardsPoolForNewApp"
  ): TypedContractMethod<[appId: BytesLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "isDistributionPaused"
  ): TypedContractMethod<[appId: BytesLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "isRewardsPoolEnabled"
  ): TypedContractMethod<[appId: BytesLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "rewardsPoolBalance"
  ): TypedContractMethod<[appId: BytesLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "totalBalance"
  ): TypedContractMethod<[appId: BytesLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "version"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "withdraw"
  ): TypedContractMethod<
    [amount: BigNumberish, appId: BytesLike, reason: string],
    [void],
    "nonpayable"
  >;

  getEvent(
    key: "AppPaused"
  ): TypedContractEvent<
    AppPausedEvent.InputTuple,
    AppPausedEvent.OutputTuple,
    AppPausedEvent.OutputObject
  >;
  getEvent(
    key: "AppUnpaused"
  ): TypedContractEvent<
    AppUnpausedEvent.InputTuple,
    AppUnpausedEvent.OutputTuple,
    AppUnpausedEvent.OutputObject
  >;
  getEvent(
    key: "NewDeposit"
  ): TypedContractEvent<
    NewDepositEvent.InputTuple,
    NewDepositEvent.OutputTuple,
    NewDepositEvent.OutputObject
  >;
  getEvent(
    key: "RegisterActionFailed"
  ): TypedContractEvent<
    RegisterActionFailedEvent.InputTuple,
    RegisterActionFailedEvent.OutputTuple,
    RegisterActionFailedEvent.OutputObject
  >;
  getEvent(
    key: "RewardDistributed"
  ): TypedContractEvent<
    RewardDistributedEvent.InputTuple,
    RewardDistributedEvent.OutputTuple,
    RewardDistributedEvent.OutputObject
  >;
  getEvent(
    key: "RewardMetadata"
  ): TypedContractEvent<
    RewardMetadataEvent.InputTuple,
    RewardMetadataEvent.OutputTuple,
    RewardMetadataEvent.OutputObject
  >;
  getEvent(
    key: "RewardsPoolBalanceEnabled"
  ): TypedContractEvent<
    RewardsPoolBalanceEnabledEvent.InputTuple,
    RewardsPoolBalanceEnabledEvent.OutputTuple,
    RewardsPoolBalanceEnabledEvent.OutputObject
  >;
  getEvent(
    key: "RewardsPoolBalanceUpdated"
  ): TypedContractEvent<
    RewardsPoolBalanceUpdatedEvent.InputTuple,
    RewardsPoolBalanceUpdatedEvent.OutputTuple,
    RewardsPoolBalanceUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "TeamWithdrawal"
  ): TypedContractEvent<
    TeamWithdrawalEvent.InputTuple,
    TeamWithdrawalEvent.OutputTuple,
    TeamWithdrawalEvent.OutputObject
  >;

  filters: {
    "AppPaused(bytes32,address)": TypedContractEvent<
      AppPausedEvent.InputTuple,
      AppPausedEvent.OutputTuple,
      AppPausedEvent.OutputObject
    >;
    AppPaused: TypedContractEvent<
      AppPausedEvent.InputTuple,
      AppPausedEvent.OutputTuple,
      AppPausedEvent.OutputObject
    >;

    "AppUnpaused(bytes32,address)": TypedContractEvent<
      AppUnpausedEvent.InputTuple,
      AppUnpausedEvent.OutputTuple,
      AppUnpausedEvent.OutputObject
    >;
    AppUnpaused: TypedContractEvent<
      AppUnpausedEvent.InputTuple,
      AppUnpausedEvent.OutputTuple,
      AppUnpausedEvent.OutputObject
    >;

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

    "RegisterActionFailed(string,bytes)": TypedContractEvent<
      RegisterActionFailedEvent.InputTuple,
      RegisterActionFailedEvent.OutputTuple,
      RegisterActionFailedEvent.OutputObject
    >;
    RegisterActionFailed: TypedContractEvent<
      RegisterActionFailedEvent.InputTuple,
      RegisterActionFailedEvent.OutputTuple,
      RegisterActionFailedEvent.OutputObject
    >;

    "RewardDistributed(uint256,bytes32,address,string,address)": TypedContractEvent<
      RewardDistributedEvent.InputTuple,
      RewardDistributedEvent.OutputTuple,
      RewardDistributedEvent.OutputObject
    >;
    RewardDistributed: TypedContractEvent<
      RewardDistributedEvent.InputTuple,
      RewardDistributedEvent.OutputTuple,
      RewardDistributedEvent.OutputObject
    >;

    "RewardMetadata(uint256,bytes32,address,string,address)": TypedContractEvent<
      RewardMetadataEvent.InputTuple,
      RewardMetadataEvent.OutputTuple,
      RewardMetadataEvent.OutputObject
    >;
    RewardMetadata: TypedContractEvent<
      RewardMetadataEvent.InputTuple,
      RewardMetadataEvent.OutputTuple,
      RewardMetadataEvent.OutputObject
    >;

    "RewardsPoolBalanceEnabled(bytes32,bool)": TypedContractEvent<
      RewardsPoolBalanceEnabledEvent.InputTuple,
      RewardsPoolBalanceEnabledEvent.OutputTuple,
      RewardsPoolBalanceEnabledEvent.OutputObject
    >;
    RewardsPoolBalanceEnabled: TypedContractEvent<
      RewardsPoolBalanceEnabledEvent.InputTuple,
      RewardsPoolBalanceEnabledEvent.OutputTuple,
      RewardsPoolBalanceEnabledEvent.OutputObject
    >;

    "RewardsPoolBalanceUpdated(bytes32,uint256,uint256,uint256)": TypedContractEvent<
      RewardsPoolBalanceUpdatedEvent.InputTuple,
      RewardsPoolBalanceUpdatedEvent.OutputTuple,
      RewardsPoolBalanceUpdatedEvent.OutputObject
    >;
    RewardsPoolBalanceUpdated: TypedContractEvent<
      RewardsPoolBalanceUpdatedEvent.InputTuple,
      RewardsPoolBalanceUpdatedEvent.OutputTuple,
      RewardsPoolBalanceUpdatedEvent.OutputObject
    >;

    "TeamWithdrawal(uint256,bytes32,address,address,string)": TypedContractEvent<
      TeamWithdrawalEvent.InputTuple,
      TeamWithdrawalEvent.OutputTuple,
      TeamWithdrawalEvent.OutputObject
    >;
    TeamWithdrawal: TypedContractEvent<
      TeamWithdrawalEvent.InputTuple,
      TeamWithdrawalEvent.OutputTuple,
      TeamWithdrawalEvent.OutputObject
    >;
  };
}
