/* 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 ChallengeTypesV1 {
  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 B3TRChallengesV1Interface extends Interface {
  getFunction(
    nameOrSignature:
      | "CONTRACTS_ADDRESS_MANAGER_ROLE"
      | "DEFAULT_ADMIN_ROLE"
      | "SETTINGS_MANAGER_ROLE"
      | "UPGRADER_ROLE"
      | "UPGRADE_INTERFACE_VERSION"
      | "addInvites"
      | "cancelChallenge"
      | "challengeCount"
      | "claimChallengePayout"
      | "claimChallengeRefund"
      | "claimCreatorSplitWinRefund"
      | "claimSplitWinPrize"
      | "completeChallenge"
      | "createChallenge"
      | "declineChallenge"
      | "getChallenge"
      | "getChallengeDeclined"
      | "getChallengeInvited"
      | "getChallengeParticipants"
      | "getChallengeSelectedApps"
      | "getChallengeStatus"
      | "getChallengeWinners"
      | "getParticipantActions"
      | "getParticipantStatus"
      | "getRoleAdmin"
      | "grantRole"
      | "hasRole"
      | "initialize"
      | "isInvitationEligible"
      | "isSplitWinWinner"
      | "joinChallenge"
      | "leaveChallenge"
      | "maxChallengeDuration"
      | "maxParticipants"
      | "maxSelectedApps"
      | "minBetAmount"
      | "proxiableUUID"
      | "renounceRole"
      | "revokeRole"
      | "setB3TRAddress"
      | "setMaxChallengeDuration"
      | "setMaxParticipants"
      | "setMaxSelectedApps"
      | "setMinBetAmount"
      | "setVeBetterPassportAddress"
      | "setX2EarnAppsAddress"
      | "setXAllocationVotingAddress"
      | "supportsInterface"
      | "syncChallenge"
      | "upgradeToAndCall"
      | "version"
      | "withdraw"
  ): FunctionFragment;

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

  encodeFunctionData(
    functionFragment: "CONTRACTS_ADDRESS_MANAGER_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "DEFAULT_ADMIN_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "SETTINGS_MANAGER_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "UPGRADER_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "UPGRADE_INTERFACE_VERSION",
    values?: undefined
  ): string;
  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: [ChallengeTypesV1.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: "getRoleAdmin",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "grantRole",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "hasRole",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "initialize",
    values: [
      ChallengeTypesV1.InitializationDataStruct,
      ChallengeTypesV1.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: "proxiableUUID",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "renounceRole",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "revokeRole",
    values: [BytesLike, AddressLike]
  ): 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: "supportsInterface",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "syncChallenge",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "upgradeToAndCall",
    values: [AddressLike, BytesLike]
  ): string;
  encodeFunctionData(functionFragment: "version", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "withdraw",
    values: [AddressLike, BigNumberish]
  ): string;

  decodeFunctionResult(
    functionFragment: "CONTRACTS_ADDRESS_MANAGER_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "DEFAULT_ADMIN_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "SETTINGS_MANAGER_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "UPGRADER_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "UPGRADE_INTERFACE_VERSION",
    data: BytesLike
  ): Result;
  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: "getRoleAdmin",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "hasRole", 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: "proxiableUUID",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "renounceRole",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "revokeRole", 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: "supportsInterface",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "syncChallenge",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "upgradeToAndCall",
    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 InitializedEvent {
  export type InputTuple = [version: BigNumberish];
  export type OutputTuple = [version: bigint];
  export interface OutputObject {
    version: 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 RoleAdminChangedEvent {
  export type InputTuple = [
    role: BytesLike,
    previousAdminRole: BytesLike,
    newAdminRole: BytesLike
  ];
  export type OutputTuple = [
    role: string,
    previousAdminRole: string,
    newAdminRole: string
  ];
  export interface OutputObject {
    role: string;
    previousAdminRole: string;
    newAdminRole: 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 RoleGrantedEvent {
  export type InputTuple = [
    role: BytesLike,
    account: AddressLike,
    sender: AddressLike
  ];
  export type OutputTuple = [role: string, account: string, sender: string];
  export interface OutputObject {
    role: string;
    account: string;
    sender: 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 RoleRevokedEvent {
  export type InputTuple = [
    role: BytesLike,
    account: AddressLike,
    sender: AddressLike
  ];
  export type OutputTuple = [role: string, account: string, sender: string];
  export interface OutputObject {
    role: string;
    account: string;
    sender: 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 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 UpgradedEvent {
  export type InputTuple = [implementation: AddressLike];
  export type OutputTuple = [implementation: string];
  export interface OutputObject {
    implementation: 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 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 B3TRChallengesV1 extends BaseContract {
  connect(runner?: ContractRunner | null): B3TRChallengesV1;
  waitForDeployment(): Promise<this>;

  interface: B3TRChallengesV1Interface;

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

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

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

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

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

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

  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: ChallengeTypesV1.CreateChallengeParamsStruct],
    [bigint],
    "nonpayable"
  >;

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

  getChallenge: TypedContractMethod<
    [challengeId: BigNumberish],
    [ChallengeTypesV1.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"
  >;

  getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">;

  grantRole: TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [void],
    "nonpayable"
  >;

  hasRole: TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [boolean],
    "view"
  >;

  initialize: TypedContractMethod<
    [
      data: ChallengeTypesV1.InitializationDataStruct,
      roles: ChallengeTypesV1.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">;

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

  renounceRole: TypedContractMethod<
    [role: BytesLike, callerConfirmation: AddressLike],
    [void],
    "nonpayable"
  >;

  revokeRole: TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [void],
    "nonpayable"
  >;

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

  supportsInterface: TypedContractMethod<
    [interfaceId: BytesLike],
    [boolean],
    "view"
  >;

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

  upgradeToAndCall: TypedContractMethod<
    [newImplementation: AddressLike, data: BytesLike],
    [void],
    "payable"
  >;

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

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

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

  getFunction(
    nameOrSignature: "CONTRACTS_ADDRESS_MANAGER_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "DEFAULT_ADMIN_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "SETTINGS_MANAGER_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "UPGRADER_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "UPGRADE_INTERFACE_VERSION"
  ): TypedContractMethod<[], [string], "view">;
  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: ChallengeTypesV1.CreateChallengeParamsStruct],
    [bigint],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "declineChallenge"
  ): TypedContractMethod<[challengeId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "getChallenge"
  ): TypedContractMethod<
    [challengeId: BigNumberish],
    [ChallengeTypesV1.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: "getRoleAdmin"
  ): TypedContractMethod<[role: BytesLike], [string], "view">;
  getFunction(
    nameOrSignature: "grantRole"
  ): TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "hasRole"
  ): TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "initialize"
  ): TypedContractMethod<
    [
      data: ChallengeTypesV1.InitializationDataStruct,
      roles: ChallengeTypesV1.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: "proxiableUUID"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "renounceRole"
  ): TypedContractMethod<
    [role: BytesLike, callerConfirmation: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "revokeRole"
  ): TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [void],
    "nonpayable"
  >;
  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: "supportsInterface"
  ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "syncChallenge"
  ): TypedContractMethod<[challengeId: BigNumberish], [bigint], "nonpayable">;
  getFunction(
    nameOrSignature: "upgradeToAndCall"
  ): TypedContractMethod<
    [newImplementation: AddressLike, data: BytesLike],
    [void],
    "payable"
  >;
  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: "Initialized"
  ): TypedContractEvent<
    InitializedEvent.InputTuple,
    InitializedEvent.OutputTuple,
    InitializedEvent.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: "RoleAdminChanged"
  ): TypedContractEvent<
    RoleAdminChangedEvent.InputTuple,
    RoleAdminChangedEvent.OutputTuple,
    RoleAdminChangedEvent.OutputObject
  >;
  getEvent(
    key: "RoleGranted"
  ): TypedContractEvent<
    RoleGrantedEvent.InputTuple,
    RoleGrantedEvent.OutputTuple,
    RoleGrantedEvent.OutputObject
  >;
  getEvent(
    key: "RoleRevoked"
  ): TypedContractEvent<
    RoleRevokedEvent.InputTuple,
    RoleRevokedEvent.OutputTuple,
    RoleRevokedEvent.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: "Upgraded"
  ): TypedContractEvent<
    UpgradedEvent.InputTuple,
    UpgradedEvent.OutputTuple,
    UpgradedEvent.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
    >;

    "Initialized(uint64)": TypedContractEvent<
      InitializedEvent.InputTuple,
      InitializedEvent.OutputTuple,
      InitializedEvent.OutputObject
    >;
    Initialized: TypedContractEvent<
      InitializedEvent.InputTuple,
      InitializedEvent.OutputTuple,
      InitializedEvent.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
    >;

    "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent<
      RoleAdminChangedEvent.InputTuple,
      RoleAdminChangedEvent.OutputTuple,
      RoleAdminChangedEvent.OutputObject
    >;
    RoleAdminChanged: TypedContractEvent<
      RoleAdminChangedEvent.InputTuple,
      RoleAdminChangedEvent.OutputTuple,
      RoleAdminChangedEvent.OutputObject
    >;

    "RoleGranted(bytes32,address,address)": TypedContractEvent<
      RoleGrantedEvent.InputTuple,
      RoleGrantedEvent.OutputTuple,
      RoleGrantedEvent.OutputObject
    >;
    RoleGranted: TypedContractEvent<
      RoleGrantedEvent.InputTuple,
      RoleGrantedEvent.OutputTuple,
      RoleGrantedEvent.OutputObject
    >;

    "RoleRevoked(bytes32,address,address)": TypedContractEvent<
      RoleRevokedEvent.InputTuple,
      RoleRevokedEvent.OutputTuple,
      RoleRevokedEvent.OutputObject
    >;
    RoleRevoked: TypedContractEvent<
      RoleRevokedEvent.InputTuple,
      RoleRevokedEvent.OutputTuple,
      RoleRevokedEvent.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
    >;

    "Upgraded(address)": TypedContractEvent<
      UpgradedEvent.InputTuple,
      UpgradedEvent.OutputTuple,
      UpgradedEvent.OutputObject
    >;
    Upgraded: TypedContractEvent<
      UpgradedEvent.InputTuple,
      UpgradedEvent.OutputTuple,
      UpgradedEvent.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
    >;
  };
}
