/* 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 ChallengeTypes {
  export type CreateChallengeParamsStruct = {
    kind: BigNumberish;
    visibility: BigNumberish;
    challengeType: BigNumberish;
    stakeAmount: BigNumberish;
    startRound: BigNumberish;
    endRound: BigNumberish;
    threshold: BigNumberish;
    numWinners: BigNumberish;
    appIds: BytesLike[];
    invitees: AddressLike[];
    title: string;
    description: string;
    imageURI: string;
    metadataURI: string;
  };

  export type CreateChallengeParamsStructOutput = [
    kind: bigint,
    visibility: bigint,
    challengeType: bigint,
    stakeAmount: bigint,
    startRound: bigint,
    endRound: bigint,
    threshold: bigint,
    numWinners: bigint,
    appIds: string[],
    invitees: string[],
    title: string,
    description: string,
    imageURI: string,
    metadataURI: string
  ] & {
    kind: bigint;
    visibility: bigint;
    challengeType: bigint;
    stakeAmount: bigint;
    startRound: bigint;
    endRound: bigint;
    threshold: bigint;
    numWinners: bigint;
    appIds: string[];
    invitees: string[];
    title: string;
    description: string;
    imageURI: string;
    metadataURI: string;
  };

  export type ChallengeViewStruct = {
    challengeId: BigNumberish;
    kind: BigNumberish;
    visibility: BigNumberish;
    challengeType: BigNumberish;
    status: BigNumberish;
    settlementMode: BigNumberish;
    creator: AddressLike;
    stakeAmount: BigNumberish;
    startRound: BigNumberish;
    endRound: BigNumberish;
    duration: BigNumberish;
    threshold: BigNumberish;
    numWinners: BigNumberish;
    winnersClaimed: BigNumberish;
    prizePerWinner: BigNumberish;
    allApps: boolean;
    totalPrize: BigNumberish;
    participantCount: BigNumberish;
    invitedCount: BigNumberish;
    declinedCount: BigNumberish;
    selectedAppsCount: BigNumberish;
    winnersCount: BigNumberish;
    bestScore: BigNumberish;
    bestCount: BigNumberish;
    payoutsClaimed: BigNumberish;
    title: string;
    description: string;
    imageURI: string;
    metadataURI: string;
  };

  export type ChallengeViewStructOutput = [
    challengeId: bigint,
    kind: bigint,
    visibility: bigint,
    challengeType: bigint,
    status: bigint,
    settlementMode: bigint,
    creator: string,
    stakeAmount: bigint,
    startRound: bigint,
    endRound: bigint,
    duration: bigint,
    threshold: bigint,
    numWinners: bigint,
    winnersClaimed: bigint,
    prizePerWinner: bigint,
    allApps: boolean,
    totalPrize: bigint,
    participantCount: bigint,
    invitedCount: bigint,
    declinedCount: bigint,
    selectedAppsCount: bigint,
    winnersCount: bigint,
    bestScore: bigint,
    bestCount: bigint,
    payoutsClaimed: bigint,
    title: string,
    description: string,
    imageURI: string,
    metadataURI: string
  ] & {
    challengeId: bigint;
    kind: bigint;
    visibility: bigint;
    challengeType: bigint;
    status: bigint;
    settlementMode: bigint;
    creator: string;
    stakeAmount: bigint;
    startRound: bigint;
    endRound: bigint;
    duration: bigint;
    threshold: bigint;
    numWinners: bigint;
    winnersClaimed: bigint;
    prizePerWinner: bigint;
    allApps: boolean;
    totalPrize: bigint;
    participantCount: bigint;
    invitedCount: bigint;
    declinedCount: bigint;
    selectedAppsCount: bigint;
    winnersCount: bigint;
    bestScore: bigint;
    bestCount: bigint;
    payoutsClaimed: bigint;
    title: string;
    description: string;
    imageURI: string;
    metadataURI: string;
  };

  export type InitializationDataStruct = {
    b3trAddress: AddressLike;
    veBetterPassportAddress: AddressLike;
    xAllocationVotingAddress: AddressLike;
    x2EarnAppsAddress: AddressLike;
    maxChallengeDuration: BigNumberish;
    maxSelectedApps: BigNumberish;
    maxParticipants: BigNumberish;
    minBetAmount: BigNumberish;
  };

  export type InitializationDataStructOutput = [
    b3trAddress: string,
    veBetterPassportAddress: string,
    xAllocationVotingAddress: string,
    x2EarnAppsAddress: string,
    maxChallengeDuration: bigint,
    maxSelectedApps: bigint,
    maxParticipants: bigint,
    minBetAmount: bigint
  ] & {
    b3trAddress: string;
    veBetterPassportAddress: string;
    xAllocationVotingAddress: string;
    x2EarnAppsAddress: string;
    maxChallengeDuration: bigint;
    maxSelectedApps: bigint;
    maxParticipants: bigint;
    minBetAmount: bigint;
  };

  export type InitializationRoleDataStruct = {
    admin: AddressLike;
    upgrader: AddressLike;
    contractsAddressManager: AddressLike;
    settingsManager: AddressLike;
  };

  export type InitializationRoleDataStructOutput = [
    admin: string,
    upgrader: string,
    contractsAddressManager: string,
    settingsManager: string
  ] & {
    admin: string;
    upgrader: string;
    contractsAddressManager: string;
    settingsManager: string;
  };
}

export interface IChallengesInterface extends Interface {
  getFunction(
    nameOrSignature:
      | "addInvites"
      | "cancelChallenge"
      | "challengeCount"
      | "claimChallengePayout"
      | "claimChallengeRefund"
      | "claimCreatorSplitWinRefund"
      | "claimSplitWinPrize"
      | "completeChallenge"
      | "createChallenge"
      | "declineChallenge"
      | "getChallenge"
      | "getChallengeDeclined"
      | "getChallengeInvited"
      | "getChallengeParticipants"
      | "getChallengeSelectedApps"
      | "getChallengeStatus"
      | "getChallengeWinners"
      | "getParticipantActions"
      | "getParticipantStatus"
      | "initialize"
      | "isInvitationEligible"
      | "isSplitWinWinner"
      | "joinChallenge"
      | "leaveChallenge"
      | "maxChallengeDuration"
      | "maxParticipants"
      | "maxSelectedApps"
      | "minBetAmount"
      | "setB3TRAddress"
      | "setMaxChallengeDuration"
      | "setMaxParticipants"
      | "setMaxSelectedApps"
      | "setMinBetAmount"
      | "setVeBetterPassportAddress"
      | "setX2EarnAppsAddress"
      | "setXAllocationVotingAddress"
      | "syncChallenge"
      | "version"
      | "withdraw"
  ): FunctionFragment;

  getEvent(
    nameOrSignatureOrTopic:
      | "AdminWithdrawal"
      | "B3TRAddressUpdated"
      | "ChallengeActivated"
      | "ChallengeCancelled"
      | "ChallengeCompleted"
      | "ChallengeCreated"
      | "ChallengeDeclined"
      | "ChallengeInvalidated"
      | "ChallengeInviteAdded"
      | "ChallengeJoined"
      | "ChallengeLeft"
      | "ChallengePayoutClaimed"
      | "ChallengeRefundClaimed"
      | "MaxChallengeDurationUpdated"
      | "MaxParticipantsUpdated"
      | "MaxSelectedAppsUpdated"
      | "MinBetAmountUpdated"
      | "SplitWinConfigured"
      | "SplitWinCreatorRefunded"
      | "SplitWinPrizeClaimed"
      | "VeBetterPassportAddressUpdated"
      | "X2EarnAppsAddressUpdated"
      | "XAllocationVotingAddressUpdated"
  ): EventFragment;

  encodeFunctionData(
    functionFragment: "addInvites",
    values: [BigNumberish, AddressLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "cancelChallenge",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "challengeCount",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "claimChallengePayout",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "claimChallengeRefund",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "claimCreatorSplitWinRefund",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "claimSplitWinPrize",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "completeChallenge",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "createChallenge",
    values: [ChallengeTypes.CreateChallengeParamsStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "declineChallenge",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getChallenge",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getChallengeDeclined",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getChallengeInvited",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getChallengeParticipants",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getChallengeSelectedApps",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getChallengeStatus",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getChallengeWinners",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getParticipantActions",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getParticipantStatus",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "initialize",
    values: [
      ChallengeTypes.InitializationDataStruct,
      ChallengeTypes.InitializationRoleDataStruct
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "isInvitationEligible",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isSplitWinWinner",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "joinChallenge",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "leaveChallenge",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "maxChallengeDuration",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "maxParticipants",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "maxSelectedApps",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "minBetAmount",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "setB3TRAddress",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setMaxChallengeDuration",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setMaxParticipants",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setMaxSelectedApps",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setMinBetAmount",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setVeBetterPassportAddress",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setX2EarnAppsAddress",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setXAllocationVotingAddress",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "syncChallenge",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "version", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "withdraw",
    values: [AddressLike, BigNumberish]
  ): string;

  decodeFunctionResult(functionFragment: "addInvites", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "cancelChallenge",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "challengeCount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "claimChallengePayout",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "claimChallengeRefund",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "claimCreatorSplitWinRefund",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "claimSplitWinPrize",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "completeChallenge",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "createChallenge",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "declineChallenge",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getChallenge",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getChallengeDeclined",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getChallengeInvited",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getChallengeParticipants",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getChallengeSelectedApps",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getChallengeStatus",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getChallengeWinners",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getParticipantActions",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getParticipantStatus",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isInvitationEligible",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isSplitWinWinner",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "joinChallenge",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "leaveChallenge",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "maxChallengeDuration",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "maxParticipants",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "maxSelectedApps",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "minBetAmount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setB3TRAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMaxChallengeDuration",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMaxParticipants",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMaxSelectedApps",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMinBetAmount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setVeBetterPassportAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setX2EarnAppsAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setXAllocationVotingAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "syncChallenge",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "version", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result;
}

export namespace AdminWithdrawalEvent {
  export type InputTuple = [
    admin: AddressLike,
    recipient: AddressLike,
    amount: BigNumberish
  ];
  export type OutputTuple = [admin: string, recipient: string, amount: bigint];
  export interface OutputObject {
    admin: string;
    recipient: string;
    amount: 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 B3TRAddressUpdatedEvent {
  export type InputTuple = [oldAddress: AddressLike, newAddress: AddressLike];
  export type OutputTuple = [oldAddress: string, newAddress: string];
  export interface OutputObject {
    oldAddress: string;
    newAddress: 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 ChallengeActivatedEvent {
  export type InputTuple = [challengeId: BigNumberish];
  export type OutputTuple = [challengeId: bigint];
  export interface OutputObject {
    challengeId: 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 ChallengeCancelledEvent {
  export type InputTuple = [challengeId: BigNumberish];
  export type OutputTuple = [challengeId: bigint];
  export interface OutputObject {
    challengeId: 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 ChallengeCompletedEvent {
  export type InputTuple = [
    challengeId: BigNumberish,
    settlementMode: BigNumberish,
    bestScore: BigNumberish,
    bestCount: BigNumberish
  ];
  export type OutputTuple = [
    challengeId: bigint,
    settlementMode: bigint,
    bestScore: bigint,
    bestCount: bigint
  ];
  export interface OutputObject {
    challengeId: bigint;
    settlementMode: bigint;
    bestScore: bigint;
    bestCount: 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 ChallengeCreatedEvent {
  export type InputTuple = [
    challengeId: BigNumberish,
    creator: AddressLike,
    endRound: BigNumberish,
    kind: BigNumberish,
    visibility: BigNumberish,
    challengeType: BigNumberish,
    stakeAmount: BigNumberish,
    startRound: BigNumberish,
    threshold: BigNumberish,
    allApps: boolean,
    selectedApps: BytesLike[],
    title: string,
    description: string,
    imageURI: string,
    metadataURI: string
  ];
  export type OutputTuple = [
    challengeId: bigint,
    creator: string,
    endRound: bigint,
    kind: bigint,
    visibility: bigint,
    challengeType: bigint,
    stakeAmount: bigint,
    startRound: bigint,
    threshold: bigint,
    allApps: boolean,
    selectedApps: string[],
    title: string,
    description: string,
    imageURI: string,
    metadataURI: string
  ];
  export interface OutputObject {
    challengeId: bigint;
    creator: string;
    endRound: bigint;
    kind: bigint;
    visibility: bigint;
    challengeType: bigint;
    stakeAmount: bigint;
    startRound: bigint;
    threshold: bigint;
    allApps: boolean;
    selectedApps: string[];
    title: string;
    description: string;
    imageURI: string;
    metadataURI: 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 ChallengeDeclinedEvent {
  export type InputTuple = [
    challengeId: BigNumberish,
    participant: AddressLike
  ];
  export type OutputTuple = [challengeId: bigint, participant: string];
  export interface OutputObject {
    challengeId: bigint;
    participant: 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 ChallengeInvalidatedEvent {
  export type InputTuple = [challengeId: BigNumberish];
  export type OutputTuple = [challengeId: bigint];
  export interface OutputObject {
    challengeId: 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 ChallengeInviteAddedEvent {
  export type InputTuple = [challengeId: BigNumberish, invitee: AddressLike];
  export type OutputTuple = [challengeId: bigint, invitee: string];
  export interface OutputObject {
    challengeId: bigint;
    invitee: 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 ChallengeJoinedEvent {
  export type InputTuple = [
    challengeId: BigNumberish,
    participant: AddressLike
  ];
  export type OutputTuple = [challengeId: bigint, participant: string];
  export interface OutputObject {
    challengeId: bigint;
    participant: 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 ChallengeLeftEvent {
  export type InputTuple = [
    challengeId: BigNumberish,
    participant: AddressLike
  ];
  export type OutputTuple = [challengeId: bigint, participant: string];
  export interface OutputObject {
    challengeId: bigint;
    participant: 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 ChallengePayoutClaimedEvent {
  export type InputTuple = [
    challengeId: BigNumberish,
    account: AddressLike,
    amount: BigNumberish
  ];
  export type OutputTuple = [
    challengeId: bigint,
    account: string,
    amount: bigint
  ];
  export interface OutputObject {
    challengeId: bigint;
    account: string;
    amount: 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 ChallengeRefundClaimedEvent {
  export type InputTuple = [
    challengeId: BigNumberish,
    account: AddressLike,
    amount: BigNumberish
  ];
  export type OutputTuple = [
    challengeId: bigint,
    account: string,
    amount: bigint
  ];
  export interface OutputObject {
    challengeId: bigint;
    account: string;
    amount: 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 MaxChallengeDurationUpdatedEvent {
  export type InputTuple = [oldValue: BigNumberish, newValue: BigNumberish];
  export type OutputTuple = [oldValue: bigint, newValue: bigint];
  export interface OutputObject {
    oldValue: bigint;
    newValue: 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 MaxParticipantsUpdatedEvent {
  export type InputTuple = [oldValue: BigNumberish, newValue: BigNumberish];
  export type OutputTuple = [oldValue: bigint, newValue: bigint];
  export interface OutputObject {
    oldValue: bigint;
    newValue: 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 MaxSelectedAppsUpdatedEvent {
  export type InputTuple = [oldValue: BigNumberish, newValue: BigNumberish];
  export type OutputTuple = [oldValue: bigint, newValue: bigint];
  export interface OutputObject {
    oldValue: bigint;
    newValue: 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 MinBetAmountUpdatedEvent {
  export type InputTuple = [oldValue: BigNumberish, newValue: BigNumberish];
  export type OutputTuple = [oldValue: bigint, newValue: bigint];
  export interface OutputObject {
    oldValue: bigint;
    newValue: 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 SplitWinConfiguredEvent {
  export type InputTuple = [
    challengeId: BigNumberish,
    numWinners: BigNumberish,
    prizePerWinner: BigNumberish
  ];
  export type OutputTuple = [
    challengeId: bigint,
    numWinners: bigint,
    prizePerWinner: bigint
  ];
  export interface OutputObject {
    challengeId: bigint;
    numWinners: bigint;
    prizePerWinner: 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 SplitWinCreatorRefundedEvent {
  export type InputTuple = [
    challengeId: BigNumberish,
    creator: AddressLike,
    amount: BigNumberish
  ];
  export type OutputTuple = [
    challengeId: bigint,
    creator: string,
    amount: bigint
  ];
  export interface OutputObject {
    challengeId: bigint;
    creator: string;
    amount: 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 SplitWinPrizeClaimedEvent {
  export type InputTuple = [
    challengeId: BigNumberish,
    winner: AddressLike,
    prize: BigNumberish,
    actions: BigNumberish,
    winnersClaimed: BigNumberish
  ];
  export type OutputTuple = [
    challengeId: bigint,
    winner: string,
    prize: bigint,
    actions: bigint,
    winnersClaimed: bigint
  ];
  export interface OutputObject {
    challengeId: bigint;
    winner: string;
    prize: bigint;
    actions: bigint;
    winnersClaimed: 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 VeBetterPassportAddressUpdatedEvent {
  export type InputTuple = [oldAddress: AddressLike, newAddress: AddressLike];
  export type OutputTuple = [oldAddress: string, newAddress: string];
  export interface OutputObject {
    oldAddress: string;
    newAddress: 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 X2EarnAppsAddressUpdatedEvent {
  export type InputTuple = [oldAddress: AddressLike, newAddress: AddressLike];
  export type OutputTuple = [oldAddress: string, newAddress: string];
  export interface OutputObject {
    oldAddress: string;
    newAddress: 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 XAllocationVotingAddressUpdatedEvent {
  export type InputTuple = [oldAddress: AddressLike, newAddress: AddressLike];
  export type OutputTuple = [oldAddress: string, newAddress: string];
  export interface OutputObject {
    oldAddress: string;
    newAddress: 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 IChallenges extends BaseContract {
  connect(runner?: ContractRunner | null): IChallenges;
  waitForDeployment(): Promise<this>;

  interface: IChallengesInterface;

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

  addInvites: TypedContractMethod<
    [challengeId: BigNumberish, invitees: AddressLike[]],
    [void],
    "nonpayable"
  >;

  cancelChallenge: TypedContractMethod<
    [challengeId: BigNumberish],
    [void],
    "nonpayable"
  >;

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

  claimChallengePayout: TypedContractMethod<
    [challengeId: BigNumberish],
    [bigint],
    "nonpayable"
  >;

  claimChallengeRefund: TypedContractMethod<
    [challengeId: BigNumberish],
    [bigint],
    "nonpayable"
  >;

  claimCreatorSplitWinRefund: TypedContractMethod<
    [challengeId: BigNumberish],
    [bigint],
    "nonpayable"
  >;

  claimSplitWinPrize: TypedContractMethod<
    [challengeId: BigNumberish],
    [bigint],
    "nonpayable"
  >;

  completeChallenge: TypedContractMethod<
    [challengeId: BigNumberish],
    [void],
    "nonpayable"
  >;

  createChallenge: TypedContractMethod<
    [params: ChallengeTypes.CreateChallengeParamsStruct],
    [bigint],
    "nonpayable"
  >;

  declineChallenge: TypedContractMethod<
    [challengeId: BigNumberish],
    [void],
    "nonpayable"
  >;

  getChallenge: TypedContractMethod<
    [challengeId: BigNumberish],
    [ChallengeTypes.ChallengeViewStructOutput],
    "view"
  >;

  getChallengeDeclined: TypedContractMethod<
    [challengeId: BigNumberish],
    [string[]],
    "view"
  >;

  getChallengeInvited: TypedContractMethod<
    [challengeId: BigNumberish],
    [string[]],
    "view"
  >;

  getChallengeParticipants: TypedContractMethod<
    [challengeId: BigNumberish],
    [string[]],
    "view"
  >;

  getChallengeSelectedApps: TypedContractMethod<
    [challengeId: BigNumberish],
    [string[]],
    "view"
  >;

  getChallengeStatus: TypedContractMethod<
    [challengeId: BigNumberish],
    [bigint],
    "view"
  >;

  getChallengeWinners: TypedContractMethod<
    [challengeId: BigNumberish],
    [string[]],
    "view"
  >;

  getParticipantActions: TypedContractMethod<
    [challengeId: BigNumberish, participant: AddressLike],
    [bigint],
    "view"
  >;

  getParticipantStatus: TypedContractMethod<
    [challengeId: BigNumberish, account: AddressLike],
    [bigint],
    "view"
  >;

  initialize: TypedContractMethod<
    [
      data: ChallengeTypes.InitializationDataStruct,
      roles: ChallengeTypes.InitializationRoleDataStruct
    ],
    [void],
    "nonpayable"
  >;

  isInvitationEligible: TypedContractMethod<
    [challengeId: BigNumberish, account: AddressLike],
    [boolean],
    "view"
  >;

  isSplitWinWinner: TypedContractMethod<
    [challengeId: BigNumberish, account: AddressLike],
    [boolean],
    "view"
  >;

  joinChallenge: TypedContractMethod<
    [challengeId: BigNumberish],
    [void],
    "nonpayable"
  >;

  leaveChallenge: TypedContractMethod<
    [challengeId: BigNumberish],
    [void],
    "nonpayable"
  >;

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

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

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

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

  setB3TRAddress: TypedContractMethod<
    [newAddress: AddressLike],
    [void],
    "nonpayable"
  >;

  setMaxChallengeDuration: TypedContractMethod<
    [newValue: BigNumberish],
    [void],
    "nonpayable"
  >;

  setMaxParticipants: TypedContractMethod<
    [newValue: BigNumberish],
    [void],
    "nonpayable"
  >;

  setMaxSelectedApps: TypedContractMethod<
    [newValue: BigNumberish],
    [void],
    "nonpayable"
  >;

  setMinBetAmount: TypedContractMethod<
    [newValue: BigNumberish],
    [void],
    "nonpayable"
  >;

  setVeBetterPassportAddress: TypedContractMethod<
    [newAddress: AddressLike],
    [void],
    "nonpayable"
  >;

  setX2EarnAppsAddress: TypedContractMethod<
    [newAddress: AddressLike],
    [void],
    "nonpayable"
  >;

  setXAllocationVotingAddress: TypedContractMethod<
    [newAddress: AddressLike],
    [void],
    "nonpayable"
  >;

  syncChallenge: TypedContractMethod<
    [challengeId: BigNumberish],
    [bigint],
    "nonpayable"
  >;

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

  withdraw: TypedContractMethod<
    [to: AddressLike, amount: BigNumberish],
    [void],
    "nonpayable"
  >;

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

  getFunction(
    nameOrSignature: "addInvites"
  ): TypedContractMethod<
    [challengeId: BigNumberish, invitees: AddressLike[]],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "cancelChallenge"
  ): TypedContractMethod<[challengeId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "challengeCount"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "claimChallengePayout"
  ): TypedContractMethod<[challengeId: BigNumberish], [bigint], "nonpayable">;
  getFunction(
    nameOrSignature: "claimChallengeRefund"
  ): TypedContractMethod<[challengeId: BigNumberish], [bigint], "nonpayable">;
  getFunction(
    nameOrSignature: "claimCreatorSplitWinRefund"
  ): TypedContractMethod<[challengeId: BigNumberish], [bigint], "nonpayable">;
  getFunction(
    nameOrSignature: "claimSplitWinPrize"
  ): TypedContractMethod<[challengeId: BigNumberish], [bigint], "nonpayable">;
  getFunction(
    nameOrSignature: "completeChallenge"
  ): TypedContractMethod<[challengeId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "createChallenge"
  ): TypedContractMethod<
    [params: ChallengeTypes.CreateChallengeParamsStruct],
    [bigint],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "declineChallenge"
  ): TypedContractMethod<[challengeId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "getChallenge"
  ): TypedContractMethod<
    [challengeId: BigNumberish],
    [ChallengeTypes.ChallengeViewStructOutput],
    "view"
  >;
  getFunction(
    nameOrSignature: "getChallengeDeclined"
  ): TypedContractMethod<[challengeId: BigNumberish], [string[]], "view">;
  getFunction(
    nameOrSignature: "getChallengeInvited"
  ): TypedContractMethod<[challengeId: BigNumberish], [string[]], "view">;
  getFunction(
    nameOrSignature: "getChallengeParticipants"
  ): TypedContractMethod<[challengeId: BigNumberish], [string[]], "view">;
  getFunction(
    nameOrSignature: "getChallengeSelectedApps"
  ): TypedContractMethod<[challengeId: BigNumberish], [string[]], "view">;
  getFunction(
    nameOrSignature: "getChallengeStatus"
  ): TypedContractMethod<[challengeId: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getChallengeWinners"
  ): TypedContractMethod<[challengeId: BigNumberish], [string[]], "view">;
  getFunction(
    nameOrSignature: "getParticipantActions"
  ): TypedContractMethod<
    [challengeId: BigNumberish, participant: AddressLike],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getParticipantStatus"
  ): TypedContractMethod<
    [challengeId: BigNumberish, account: AddressLike],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "initialize"
  ): TypedContractMethod<
    [
      data: ChallengeTypes.InitializationDataStruct,
      roles: ChallengeTypes.InitializationRoleDataStruct
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "isInvitationEligible"
  ): TypedContractMethod<
    [challengeId: BigNumberish, account: AddressLike],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "isSplitWinWinner"
  ): TypedContractMethod<
    [challengeId: BigNumberish, account: AddressLike],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "joinChallenge"
  ): TypedContractMethod<[challengeId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "leaveChallenge"
  ): TypedContractMethod<[challengeId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "maxChallengeDuration"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "maxParticipants"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "maxSelectedApps"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "minBetAmount"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "setB3TRAddress"
  ): TypedContractMethod<[newAddress: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMaxChallengeDuration"
  ): TypedContractMethod<[newValue: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMaxParticipants"
  ): TypedContractMethod<[newValue: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMaxSelectedApps"
  ): TypedContractMethod<[newValue: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMinBetAmount"
  ): TypedContractMethod<[newValue: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setVeBetterPassportAddress"
  ): TypedContractMethod<[newAddress: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setX2EarnAppsAddress"
  ): TypedContractMethod<[newAddress: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setXAllocationVotingAddress"
  ): TypedContractMethod<[newAddress: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "syncChallenge"
  ): TypedContractMethod<[challengeId: BigNumberish], [bigint], "nonpayable">;
  getFunction(
    nameOrSignature: "version"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "withdraw"
  ): TypedContractMethod<
    [to: AddressLike, amount: BigNumberish],
    [void],
    "nonpayable"
  >;

  getEvent(
    key: "AdminWithdrawal"
  ): TypedContractEvent<
    AdminWithdrawalEvent.InputTuple,
    AdminWithdrawalEvent.OutputTuple,
    AdminWithdrawalEvent.OutputObject
  >;
  getEvent(
    key: "B3TRAddressUpdated"
  ): TypedContractEvent<
    B3TRAddressUpdatedEvent.InputTuple,
    B3TRAddressUpdatedEvent.OutputTuple,
    B3TRAddressUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "ChallengeActivated"
  ): TypedContractEvent<
    ChallengeActivatedEvent.InputTuple,
    ChallengeActivatedEvent.OutputTuple,
    ChallengeActivatedEvent.OutputObject
  >;
  getEvent(
    key: "ChallengeCancelled"
  ): TypedContractEvent<
    ChallengeCancelledEvent.InputTuple,
    ChallengeCancelledEvent.OutputTuple,
    ChallengeCancelledEvent.OutputObject
  >;
  getEvent(
    key: "ChallengeCompleted"
  ): TypedContractEvent<
    ChallengeCompletedEvent.InputTuple,
    ChallengeCompletedEvent.OutputTuple,
    ChallengeCompletedEvent.OutputObject
  >;
  getEvent(
    key: "ChallengeCreated"
  ): TypedContractEvent<
    ChallengeCreatedEvent.InputTuple,
    ChallengeCreatedEvent.OutputTuple,
    ChallengeCreatedEvent.OutputObject
  >;
  getEvent(
    key: "ChallengeDeclined"
  ): TypedContractEvent<
    ChallengeDeclinedEvent.InputTuple,
    ChallengeDeclinedEvent.OutputTuple,
    ChallengeDeclinedEvent.OutputObject
  >;
  getEvent(
    key: "ChallengeInvalidated"
  ): TypedContractEvent<
    ChallengeInvalidatedEvent.InputTuple,
    ChallengeInvalidatedEvent.OutputTuple,
    ChallengeInvalidatedEvent.OutputObject
  >;
  getEvent(
    key: "ChallengeInviteAdded"
  ): TypedContractEvent<
    ChallengeInviteAddedEvent.InputTuple,
    ChallengeInviteAddedEvent.OutputTuple,
    ChallengeInviteAddedEvent.OutputObject
  >;
  getEvent(
    key: "ChallengeJoined"
  ): TypedContractEvent<
    ChallengeJoinedEvent.InputTuple,
    ChallengeJoinedEvent.OutputTuple,
    ChallengeJoinedEvent.OutputObject
  >;
  getEvent(
    key: "ChallengeLeft"
  ): TypedContractEvent<
    ChallengeLeftEvent.InputTuple,
    ChallengeLeftEvent.OutputTuple,
    ChallengeLeftEvent.OutputObject
  >;
  getEvent(
    key: "ChallengePayoutClaimed"
  ): TypedContractEvent<
    ChallengePayoutClaimedEvent.InputTuple,
    ChallengePayoutClaimedEvent.OutputTuple,
    ChallengePayoutClaimedEvent.OutputObject
  >;
  getEvent(
    key: "ChallengeRefundClaimed"
  ): TypedContractEvent<
    ChallengeRefundClaimedEvent.InputTuple,
    ChallengeRefundClaimedEvent.OutputTuple,
    ChallengeRefundClaimedEvent.OutputObject
  >;
  getEvent(
    key: "MaxChallengeDurationUpdated"
  ): TypedContractEvent<
    MaxChallengeDurationUpdatedEvent.InputTuple,
    MaxChallengeDurationUpdatedEvent.OutputTuple,
    MaxChallengeDurationUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "MaxParticipantsUpdated"
  ): TypedContractEvent<
    MaxParticipantsUpdatedEvent.InputTuple,
    MaxParticipantsUpdatedEvent.OutputTuple,
    MaxParticipantsUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "MaxSelectedAppsUpdated"
  ): TypedContractEvent<
    MaxSelectedAppsUpdatedEvent.InputTuple,
    MaxSelectedAppsUpdatedEvent.OutputTuple,
    MaxSelectedAppsUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "MinBetAmountUpdated"
  ): TypedContractEvent<
    MinBetAmountUpdatedEvent.InputTuple,
    MinBetAmountUpdatedEvent.OutputTuple,
    MinBetAmountUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "SplitWinConfigured"
  ): TypedContractEvent<
    SplitWinConfiguredEvent.InputTuple,
    SplitWinConfiguredEvent.OutputTuple,
    SplitWinConfiguredEvent.OutputObject
  >;
  getEvent(
    key: "SplitWinCreatorRefunded"
  ): TypedContractEvent<
    SplitWinCreatorRefundedEvent.InputTuple,
    SplitWinCreatorRefundedEvent.OutputTuple,
    SplitWinCreatorRefundedEvent.OutputObject
  >;
  getEvent(
    key: "SplitWinPrizeClaimed"
  ): TypedContractEvent<
    SplitWinPrizeClaimedEvent.InputTuple,
    SplitWinPrizeClaimedEvent.OutputTuple,
    SplitWinPrizeClaimedEvent.OutputObject
  >;
  getEvent(
    key: "VeBetterPassportAddressUpdated"
  ): TypedContractEvent<
    VeBetterPassportAddressUpdatedEvent.InputTuple,
    VeBetterPassportAddressUpdatedEvent.OutputTuple,
    VeBetterPassportAddressUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "X2EarnAppsAddressUpdated"
  ): TypedContractEvent<
    X2EarnAppsAddressUpdatedEvent.InputTuple,
    X2EarnAppsAddressUpdatedEvent.OutputTuple,
    X2EarnAppsAddressUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "XAllocationVotingAddressUpdated"
  ): TypedContractEvent<
    XAllocationVotingAddressUpdatedEvent.InputTuple,
    XAllocationVotingAddressUpdatedEvent.OutputTuple,
    XAllocationVotingAddressUpdatedEvent.OutputObject
  >;

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

    "B3TRAddressUpdated(address,address)": TypedContractEvent<
      B3TRAddressUpdatedEvent.InputTuple,
      B3TRAddressUpdatedEvent.OutputTuple,
      B3TRAddressUpdatedEvent.OutputObject
    >;
    B3TRAddressUpdated: TypedContractEvent<
      B3TRAddressUpdatedEvent.InputTuple,
      B3TRAddressUpdatedEvent.OutputTuple,
      B3TRAddressUpdatedEvent.OutputObject
    >;

    "ChallengeActivated(uint256)": TypedContractEvent<
      ChallengeActivatedEvent.InputTuple,
      ChallengeActivatedEvent.OutputTuple,
      ChallengeActivatedEvent.OutputObject
    >;
    ChallengeActivated: TypedContractEvent<
      ChallengeActivatedEvent.InputTuple,
      ChallengeActivatedEvent.OutputTuple,
      ChallengeActivatedEvent.OutputObject
    >;

    "ChallengeCancelled(uint256)": TypedContractEvent<
      ChallengeCancelledEvent.InputTuple,
      ChallengeCancelledEvent.OutputTuple,
      ChallengeCancelledEvent.OutputObject
    >;
    ChallengeCancelled: TypedContractEvent<
      ChallengeCancelledEvent.InputTuple,
      ChallengeCancelledEvent.OutputTuple,
      ChallengeCancelledEvent.OutputObject
    >;

    "ChallengeCompleted(uint256,uint8,uint256,uint256)": TypedContractEvent<
      ChallengeCompletedEvent.InputTuple,
      ChallengeCompletedEvent.OutputTuple,
      ChallengeCompletedEvent.OutputObject
    >;
    ChallengeCompleted: TypedContractEvent<
      ChallengeCompletedEvent.InputTuple,
      ChallengeCompletedEvent.OutputTuple,
      ChallengeCompletedEvent.OutputObject
    >;

    "ChallengeCreated(uint256,address,uint256,uint8,uint8,uint8,uint256,uint256,uint256,bool,bytes32[],string,string,string,string)": TypedContractEvent<
      ChallengeCreatedEvent.InputTuple,
      ChallengeCreatedEvent.OutputTuple,
      ChallengeCreatedEvent.OutputObject
    >;
    ChallengeCreated: TypedContractEvent<
      ChallengeCreatedEvent.InputTuple,
      ChallengeCreatedEvent.OutputTuple,
      ChallengeCreatedEvent.OutputObject
    >;

    "ChallengeDeclined(uint256,address)": TypedContractEvent<
      ChallengeDeclinedEvent.InputTuple,
      ChallengeDeclinedEvent.OutputTuple,
      ChallengeDeclinedEvent.OutputObject
    >;
    ChallengeDeclined: TypedContractEvent<
      ChallengeDeclinedEvent.InputTuple,
      ChallengeDeclinedEvent.OutputTuple,
      ChallengeDeclinedEvent.OutputObject
    >;

    "ChallengeInvalidated(uint256)": TypedContractEvent<
      ChallengeInvalidatedEvent.InputTuple,
      ChallengeInvalidatedEvent.OutputTuple,
      ChallengeInvalidatedEvent.OutputObject
    >;
    ChallengeInvalidated: TypedContractEvent<
      ChallengeInvalidatedEvent.InputTuple,
      ChallengeInvalidatedEvent.OutputTuple,
      ChallengeInvalidatedEvent.OutputObject
    >;

    "ChallengeInviteAdded(uint256,address)": TypedContractEvent<
      ChallengeInviteAddedEvent.InputTuple,
      ChallengeInviteAddedEvent.OutputTuple,
      ChallengeInviteAddedEvent.OutputObject
    >;
    ChallengeInviteAdded: TypedContractEvent<
      ChallengeInviteAddedEvent.InputTuple,
      ChallengeInviteAddedEvent.OutputTuple,
      ChallengeInviteAddedEvent.OutputObject
    >;

    "ChallengeJoined(uint256,address)": TypedContractEvent<
      ChallengeJoinedEvent.InputTuple,
      ChallengeJoinedEvent.OutputTuple,
      ChallengeJoinedEvent.OutputObject
    >;
    ChallengeJoined: TypedContractEvent<
      ChallengeJoinedEvent.InputTuple,
      ChallengeJoinedEvent.OutputTuple,
      ChallengeJoinedEvent.OutputObject
    >;

    "ChallengeLeft(uint256,address)": TypedContractEvent<
      ChallengeLeftEvent.InputTuple,
      ChallengeLeftEvent.OutputTuple,
      ChallengeLeftEvent.OutputObject
    >;
    ChallengeLeft: TypedContractEvent<
      ChallengeLeftEvent.InputTuple,
      ChallengeLeftEvent.OutputTuple,
      ChallengeLeftEvent.OutputObject
    >;

    "ChallengePayoutClaimed(uint256,address,uint256)": TypedContractEvent<
      ChallengePayoutClaimedEvent.InputTuple,
      ChallengePayoutClaimedEvent.OutputTuple,
      ChallengePayoutClaimedEvent.OutputObject
    >;
    ChallengePayoutClaimed: TypedContractEvent<
      ChallengePayoutClaimedEvent.InputTuple,
      ChallengePayoutClaimedEvent.OutputTuple,
      ChallengePayoutClaimedEvent.OutputObject
    >;

    "ChallengeRefundClaimed(uint256,address,uint256)": TypedContractEvent<
      ChallengeRefundClaimedEvent.InputTuple,
      ChallengeRefundClaimedEvent.OutputTuple,
      ChallengeRefundClaimedEvent.OutputObject
    >;
    ChallengeRefundClaimed: TypedContractEvent<
      ChallengeRefundClaimedEvent.InputTuple,
      ChallengeRefundClaimedEvent.OutputTuple,
      ChallengeRefundClaimedEvent.OutputObject
    >;

    "MaxChallengeDurationUpdated(uint256,uint256)": TypedContractEvent<
      MaxChallengeDurationUpdatedEvent.InputTuple,
      MaxChallengeDurationUpdatedEvent.OutputTuple,
      MaxChallengeDurationUpdatedEvent.OutputObject
    >;
    MaxChallengeDurationUpdated: TypedContractEvent<
      MaxChallengeDurationUpdatedEvent.InputTuple,
      MaxChallengeDurationUpdatedEvent.OutputTuple,
      MaxChallengeDurationUpdatedEvent.OutputObject
    >;

    "MaxParticipantsUpdated(uint256,uint256)": TypedContractEvent<
      MaxParticipantsUpdatedEvent.InputTuple,
      MaxParticipantsUpdatedEvent.OutputTuple,
      MaxParticipantsUpdatedEvent.OutputObject
    >;
    MaxParticipantsUpdated: TypedContractEvent<
      MaxParticipantsUpdatedEvent.InputTuple,
      MaxParticipantsUpdatedEvent.OutputTuple,
      MaxParticipantsUpdatedEvent.OutputObject
    >;

    "MaxSelectedAppsUpdated(uint256,uint256)": TypedContractEvent<
      MaxSelectedAppsUpdatedEvent.InputTuple,
      MaxSelectedAppsUpdatedEvent.OutputTuple,
      MaxSelectedAppsUpdatedEvent.OutputObject
    >;
    MaxSelectedAppsUpdated: TypedContractEvent<
      MaxSelectedAppsUpdatedEvent.InputTuple,
      MaxSelectedAppsUpdatedEvent.OutputTuple,
      MaxSelectedAppsUpdatedEvent.OutputObject
    >;

    "MinBetAmountUpdated(uint256,uint256)": TypedContractEvent<
      MinBetAmountUpdatedEvent.InputTuple,
      MinBetAmountUpdatedEvent.OutputTuple,
      MinBetAmountUpdatedEvent.OutputObject
    >;
    MinBetAmountUpdated: TypedContractEvent<
      MinBetAmountUpdatedEvent.InputTuple,
      MinBetAmountUpdatedEvent.OutputTuple,
      MinBetAmountUpdatedEvent.OutputObject
    >;

    "SplitWinConfigured(uint256,uint256,uint256)": TypedContractEvent<
      SplitWinConfiguredEvent.InputTuple,
      SplitWinConfiguredEvent.OutputTuple,
      SplitWinConfiguredEvent.OutputObject
    >;
    SplitWinConfigured: TypedContractEvent<
      SplitWinConfiguredEvent.InputTuple,
      SplitWinConfiguredEvent.OutputTuple,
      SplitWinConfiguredEvent.OutputObject
    >;

    "SplitWinCreatorRefunded(uint256,address,uint256)": TypedContractEvent<
      SplitWinCreatorRefundedEvent.InputTuple,
      SplitWinCreatorRefundedEvent.OutputTuple,
      SplitWinCreatorRefundedEvent.OutputObject
    >;
    SplitWinCreatorRefunded: TypedContractEvent<
      SplitWinCreatorRefundedEvent.InputTuple,
      SplitWinCreatorRefundedEvent.OutputTuple,
      SplitWinCreatorRefundedEvent.OutputObject
    >;

    "SplitWinPrizeClaimed(uint256,address,uint256,uint256,uint256)": TypedContractEvent<
      SplitWinPrizeClaimedEvent.InputTuple,
      SplitWinPrizeClaimedEvent.OutputTuple,
      SplitWinPrizeClaimedEvent.OutputObject
    >;
    SplitWinPrizeClaimed: TypedContractEvent<
      SplitWinPrizeClaimedEvent.InputTuple,
      SplitWinPrizeClaimedEvent.OutputTuple,
      SplitWinPrizeClaimedEvent.OutputObject
    >;

    "VeBetterPassportAddressUpdated(address,address)": TypedContractEvent<
      VeBetterPassportAddressUpdatedEvent.InputTuple,
      VeBetterPassportAddressUpdatedEvent.OutputTuple,
      VeBetterPassportAddressUpdatedEvent.OutputObject
    >;
    VeBetterPassportAddressUpdated: TypedContractEvent<
      VeBetterPassportAddressUpdatedEvent.InputTuple,
      VeBetterPassportAddressUpdatedEvent.OutputTuple,
      VeBetterPassportAddressUpdatedEvent.OutputObject
    >;

    "X2EarnAppsAddressUpdated(address,address)": TypedContractEvent<
      X2EarnAppsAddressUpdatedEvent.InputTuple,
      X2EarnAppsAddressUpdatedEvent.OutputTuple,
      X2EarnAppsAddressUpdatedEvent.OutputObject
    >;
    X2EarnAppsAddressUpdated: TypedContractEvent<
      X2EarnAppsAddressUpdatedEvent.InputTuple,
      X2EarnAppsAddressUpdatedEvent.OutputTuple,
      X2EarnAppsAddressUpdatedEvent.OutputObject
    >;

    "XAllocationVotingAddressUpdated(address,address)": TypedContractEvent<
      XAllocationVotingAddressUpdatedEvent.InputTuple,
      XAllocationVotingAddressUpdatedEvent.OutputTuple,
      XAllocationVotingAddressUpdatedEvent.OutputObject
    >;
    XAllocationVotingAddressUpdated: TypedContractEvent<
      XAllocationVotingAddressUpdatedEvent.InputTuple,
      XAllocationVotingAddressUpdatedEvent.OutputTuple,
      XAllocationVotingAddressUpdatedEvent.OutputObject
    >;
  };
}
