/* 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 X2EarnAppsDataTypes {
  export type AppWithDetailsReturnTypeStruct = {
    id: BytesLike;
    teamWalletAddress: AddressLike;
    name: string;
    metadataURI: string;
    createdAtTimestamp: BigNumberish;
    appAvailableForAllocationVoting: boolean;
  };

  export type AppWithDetailsReturnTypeStructOutput = [
    id: string,
    teamWalletAddress: string,
    name: string,
    metadataURI: string,
    createdAtTimestamp: bigint,
    appAvailableForAllocationVoting: boolean
  ] & {
    id: string;
    teamWalletAddress: string;
    name: string;
    metadataURI: string;
    createdAtTimestamp: bigint;
    appAvailableForAllocationVoting: boolean;
  };

  export type AppStruct = {
    id: BytesLike;
    name: string;
    createdAtTimestamp: BigNumberish;
  };

  export type AppStructOutput = [
    id: string,
    name: string,
    createdAtTimestamp: bigint
  ] & { id: string; name: string; createdAtTimestamp: bigint };
}

export interface X2EarnAppsV1Interface extends Interface {
  getFunction(
    nameOrSignature:
      | "CLOCK_MODE"
      | "DEFAULT_ADMIN_ROLE"
      | "GOVERNANCE_ROLE"
      | "MAX_MODERATORS"
      | "MAX_REWARD_DISTRIBUTORS"
      | "UPGRADER_ROLE"
      | "UPGRADE_INTERFACE_VERSION"
      | "addApp"
      | "addAppModerator"
      | "addRewardDistributor"
      | "allEligibleApps"
      | "app"
      | "appAdmin"
      | "appExists"
      | "appModerators"
      | "appURI"
      | "apps"
      | "appsCount"
      | "baseURI"
      | "clock"
      | "getPaginatedApps"
      | "getRoleAdmin"
      | "grantRole"
      | "hasRole"
      | "hashAppName"
      | "initialize"
      | "isAppAdmin"
      | "isAppModerator"
      | "isEligible"
      | "isEligibleNow"
      | "isRewardDistributor"
      | "metadataURI"
      | "proxiableUUID"
      | "removeAppModerator"
      | "removeRewardDistributor"
      | "renounceRole"
      | "revokeRole"
      | "rewardDistributors"
      | "setAppAdmin"
      | "setBaseURI"
      | "setTeamAllocationPercentage"
      | "setVotingEligibility"
      | "supportsInterface"
      | "teamAllocationPercentage"
      | "teamWalletAddress"
      | "updateAppMetadata"
      | "updateTeamWalletAddress"
      | "upgradeToAndCall"
      | "version"
  ): FunctionFragment;

  getEvent(
    nameOrSignatureOrTopic:
      | "AppAdded"
      | "AppAdminUpdated"
      | "AppMetadataURIUpdated"
      | "BaseURIUpdated"
      | "Initialized"
      | "ModeratorAddedToApp"
      | "ModeratorRemovedFromApp"
      | "RewardDistributorAddedToApp"
      | "RewardDistributorRemovedFromApp"
      | "RoleAdminChanged"
      | "RoleGranted"
      | "RoleRevoked"
      | "TeamAllocationPercentageUpdated"
      | "TeamWalletAddressUpdated"
      | "Upgraded"
      | "VotingEligibilityUpdated"
  ): EventFragment;

  encodeFunctionData(
    functionFragment: "CLOCK_MODE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "DEFAULT_ADMIN_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "GOVERNANCE_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "MAX_MODERATORS",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "MAX_REWARD_DISTRIBUTORS",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "UPGRADER_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "UPGRADE_INTERFACE_VERSION",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "addApp",
    values: [AddressLike, AddressLike, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "addAppModerator",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "addRewardDistributor",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "allEligibleApps",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "app", values: [BytesLike]): string;
  encodeFunctionData(functionFragment: "appAdmin", values: [BytesLike]): string;
  encodeFunctionData(
    functionFragment: "appExists",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "appModerators",
    values: [BytesLike]
  ): string;
  encodeFunctionData(functionFragment: "appURI", values: [BytesLike]): string;
  encodeFunctionData(functionFragment: "apps", values?: undefined): string;
  encodeFunctionData(functionFragment: "appsCount", values?: undefined): string;
  encodeFunctionData(functionFragment: "baseURI", values?: undefined): string;
  encodeFunctionData(functionFragment: "clock", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "getPaginatedApps",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getRoleAdmin",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "grantRole",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "hasRole",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(functionFragment: "hashAppName", values: [string]): string;
  encodeFunctionData(
    functionFragment: "initialize",
    values: [string, AddressLike[], AddressLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isAppAdmin",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isAppModerator",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isEligible",
    values: [BytesLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isEligibleNow",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isRewardDistributor",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "metadataURI",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "proxiableUUID",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "removeAppModerator",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "removeRewardDistributor",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "renounceRole",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "revokeRole",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "rewardDistributors",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setAppAdmin",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(functionFragment: "setBaseURI", values: [string]): string;
  encodeFunctionData(
    functionFragment: "setTeamAllocationPercentage",
    values: [BytesLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setVotingEligibility",
    values: [BytesLike, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "supportsInterface",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "teamAllocationPercentage",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "teamWalletAddress",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "updateAppMetadata",
    values: [BytesLike, string]
  ): string;
  encodeFunctionData(
    functionFragment: "updateTeamWalletAddress",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "upgradeToAndCall",
    values: [AddressLike, BytesLike]
  ): string;
  encodeFunctionData(functionFragment: "version", values?: undefined): string;

  decodeFunctionResult(functionFragment: "CLOCK_MODE", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "DEFAULT_ADMIN_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "GOVERNANCE_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "MAX_MODERATORS",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "MAX_REWARD_DISTRIBUTORS",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "UPGRADER_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "UPGRADE_INTERFACE_VERSION",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "addApp", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "addAppModerator",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "addRewardDistributor",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "allEligibleApps",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "app", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "appAdmin", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "appExists", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "appModerators",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "appURI", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "apps", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "appsCount", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "baseURI", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "clock", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getPaginatedApps",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getRoleAdmin",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "hashAppName",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "isAppAdmin", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isAppModerator",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "isEligible", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isEligibleNow",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isRewardDistributor",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "metadataURI",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "proxiableUUID",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "removeAppModerator",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "removeRewardDistributor",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "renounceRole",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "rewardDistributors",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setAppAdmin",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "setBaseURI", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "setTeamAllocationPercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setVotingEligibility",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "supportsInterface",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "teamAllocationPercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "teamWalletAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateAppMetadata",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateTeamWalletAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "upgradeToAndCall",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "version", data: BytesLike): Result;
}

export namespace AppAddedEvent {
  export type InputTuple = [
    id: BytesLike,
    addr: AddressLike,
    name: string,
    appAvailableForAllocationVoting: boolean
  ];
  export type OutputTuple = [
    id: string,
    addr: string,
    name: string,
    appAvailableForAllocationVoting: boolean
  ];
  export interface OutputObject {
    id: string;
    addr: string;
    name: string;
    appAvailableForAllocationVoting: boolean;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace AppAdminUpdatedEvent {
  export type InputTuple = [
    appId: BytesLike,
    oldAdmin: AddressLike,
    newAdmin: AddressLike
  ];
  export type OutputTuple = [appId: string, oldAdmin: string, newAdmin: string];
  export interface OutputObject {
    appId: string;
    oldAdmin: string;
    newAdmin: 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 AppMetadataURIUpdatedEvent {
  export type InputTuple = [
    appId: BytesLike,
    oldMetadataURI: string,
    newMetadataURI: string
  ];
  export type OutputTuple = [
    appId: string,
    oldMetadataURI: string,
    newMetadataURI: string
  ];
  export interface OutputObject {
    appId: string;
    oldMetadataURI: string;
    newMetadataURI: 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 BaseURIUpdatedEvent {
  export type InputTuple = [oldBaseURI: string, newBaseURI: string];
  export type OutputTuple = [oldBaseURI: string, newBaseURI: string];
  export interface OutputObject {
    oldBaseURI: string;
    newBaseURI: 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 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 ModeratorAddedToAppEvent {
  export type InputTuple = [appId: BytesLike, moderator: AddressLike];
  export type OutputTuple = [appId: string, moderator: string];
  export interface OutputObject {
    appId: string;
    moderator: 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 ModeratorRemovedFromAppEvent {
  export type InputTuple = [appId: BytesLike, moderator: AddressLike];
  export type OutputTuple = [appId: string, moderator: string];
  export interface OutputObject {
    appId: string;
    moderator: 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 RewardDistributorAddedToAppEvent {
  export type InputTuple = [appId: BytesLike, distributorAddress: AddressLike];
  export type OutputTuple = [appId: string, distributorAddress: string];
  export interface OutputObject {
    appId: string;
    distributorAddress: 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 RewardDistributorRemovedFromAppEvent {
  export type InputTuple = [appId: BytesLike, distributorAddress: AddressLike];
  export type OutputTuple = [appId: string, distributorAddress: string];
  export interface OutputObject {
    appId: string;
    distributorAddress: 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 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 TeamAllocationPercentageUpdatedEvent {
  export type InputTuple = [
    appId: BytesLike,
    oldPercentage: BigNumberish,
    newPercentage: BigNumberish
  ];
  export type OutputTuple = [
    appId: string,
    oldPercentage: bigint,
    newPercentage: bigint
  ];
  export interface OutputObject {
    appId: string;
    oldPercentage: bigint;
    newPercentage: 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 TeamWalletAddressUpdatedEvent {
  export type InputTuple = [
    appId: BytesLike,
    oldTeamWalletAddress: AddressLike,
    newTeamWalletAddress: AddressLike
  ];
  export type OutputTuple = [
    appId: string,
    oldTeamWalletAddress: string,
    newTeamWalletAddress: string
  ];
  export interface OutputObject {
    appId: string;
    oldTeamWalletAddress: string;
    newTeamWalletAddress: 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 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 VotingEligibilityUpdatedEvent {
  export type InputTuple = [appId: BytesLike, isAvailable: boolean];
  export type OutputTuple = [appId: string, isAvailable: boolean];
  export interface OutputObject {
    appId: string;
    isAvailable: boolean;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

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

  interface: X2EarnAppsV1Interface;

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

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

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

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

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

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

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

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

  addApp: TypedContractMethod<
    [
      _teamWalletAddress: AddressLike,
      _admin: AddressLike,
      _appName: string,
      _appMetadataURI: string
    ],
    [void],
    "nonpayable"
  >;

  addAppModerator: TypedContractMethod<
    [_appId: BytesLike, _moderator: AddressLike],
    [void],
    "nonpayable"
  >;

  addRewardDistributor: TypedContractMethod<
    [_appId: BytesLike, _distributor: AddressLike],
    [void],
    "nonpayable"
  >;

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

  app: TypedContractMethod<
    [appId: BytesLike],
    [X2EarnAppsDataTypes.AppWithDetailsReturnTypeStructOutput],
    "view"
  >;

  appAdmin: TypedContractMethod<[appId: BytesLike], [string], "view">;

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

  appModerators: TypedContractMethod<[appId: BytesLike], [string[]], "view">;

  appURI: TypedContractMethod<[appId: BytesLike], [string], "view">;

  apps: TypedContractMethod<
    [],
    [X2EarnAppsDataTypes.AppWithDetailsReturnTypeStructOutput[]],
    "view"
  >;

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

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

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

  getPaginatedApps: TypedContractMethod<
    [startIndex: BigNumberish, count: BigNumberish],
    [X2EarnAppsDataTypes.AppStructOutput[]],
    "view"
  >;

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

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

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

  hashAppName: TypedContractMethod<[appName: string], [string], "view">;

  initialize: TypedContractMethod<
    [
      _baseURI: string,
      _admins: AddressLike[],
      _upgrader: AddressLike,
      _governor: AddressLike
    ],
    [void],
    "nonpayable"
  >;

  isAppAdmin: TypedContractMethod<
    [appId: BytesLike, account: AddressLike],
    [boolean],
    "view"
  >;

  isAppModerator: TypedContractMethod<
    [appId: BytesLike, account: AddressLike],
    [boolean],
    "view"
  >;

  isEligible: TypedContractMethod<
    [appId: BytesLike, timepoint: BigNumberish],
    [boolean],
    "view"
  >;

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

  isRewardDistributor: TypedContractMethod<
    [appId: BytesLike, account: AddressLike],
    [boolean],
    "view"
  >;

  metadataURI: TypedContractMethod<[appId: BytesLike], [string], "view">;

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

  removeAppModerator: TypedContractMethod<
    [_appId: BytesLike, _moderator: AddressLike],
    [void],
    "nonpayable"
  >;

  removeRewardDistributor: TypedContractMethod<
    [_appId: BytesLike, _distributor: AddressLike],
    [void],
    "nonpayable"
  >;

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

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

  rewardDistributors: TypedContractMethod<
    [appId: BytesLike],
    [string[]],
    "view"
  >;

  setAppAdmin: TypedContractMethod<
    [_appId: BytesLike, _newAdmin: AddressLike],
    [void],
    "nonpayable"
  >;

  setBaseURI: TypedContractMethod<[_baseURI: string], [void], "nonpayable">;

  setTeamAllocationPercentage: TypedContractMethod<
    [_appId: BytesLike, _percentage: BigNumberish],
    [void],
    "nonpayable"
  >;

  setVotingEligibility: TypedContractMethod<
    [_appId: BytesLike, _isEligible: boolean],
    [void],
    "nonpayable"
  >;

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

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

  teamWalletAddress: TypedContractMethod<[appId: BytesLike], [string], "view">;

  updateAppMetadata: TypedContractMethod<
    [_appId: BytesLike, _newMetadataURI: string],
    [void],
    "nonpayable"
  >;

  updateTeamWalletAddress: TypedContractMethod<
    [_appId: BytesLike, _newReceiverAddress: AddressLike],
    [void],
    "nonpayable"
  >;

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

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

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

  getFunction(
    nameOrSignature: "CLOCK_MODE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "DEFAULT_ADMIN_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "GOVERNANCE_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "MAX_MODERATORS"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "MAX_REWARD_DISTRIBUTORS"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "UPGRADER_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "UPGRADE_INTERFACE_VERSION"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "addApp"
  ): TypedContractMethod<
    [
      _teamWalletAddress: AddressLike,
      _admin: AddressLike,
      _appName: string,
      _appMetadataURI: string
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "addAppModerator"
  ): TypedContractMethod<
    [_appId: BytesLike, _moderator: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "addRewardDistributor"
  ): TypedContractMethod<
    [_appId: BytesLike, _distributor: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "allEligibleApps"
  ): TypedContractMethod<[], [string[]], "view">;
  getFunction(
    nameOrSignature: "app"
  ): TypedContractMethod<
    [appId: BytesLike],
    [X2EarnAppsDataTypes.AppWithDetailsReturnTypeStructOutput],
    "view"
  >;
  getFunction(
    nameOrSignature: "appAdmin"
  ): TypedContractMethod<[appId: BytesLike], [string], "view">;
  getFunction(
    nameOrSignature: "appExists"
  ): TypedContractMethod<[appId: BytesLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "appModerators"
  ): TypedContractMethod<[appId: BytesLike], [string[]], "view">;
  getFunction(
    nameOrSignature: "appURI"
  ): TypedContractMethod<[appId: BytesLike], [string], "view">;
  getFunction(
    nameOrSignature: "apps"
  ): TypedContractMethod<
    [],
    [X2EarnAppsDataTypes.AppWithDetailsReturnTypeStructOutput[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "appsCount"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "baseURI"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "clock"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getPaginatedApps"
  ): TypedContractMethod<
    [startIndex: BigNumberish, count: BigNumberish],
    [X2EarnAppsDataTypes.AppStructOutput[]],
    "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: "hashAppName"
  ): TypedContractMethod<[appName: string], [string], "view">;
  getFunction(
    nameOrSignature: "initialize"
  ): TypedContractMethod<
    [
      _baseURI: string,
      _admins: AddressLike[],
      _upgrader: AddressLike,
      _governor: AddressLike
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "isAppAdmin"
  ): TypedContractMethod<
    [appId: BytesLike, account: AddressLike],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "isAppModerator"
  ): TypedContractMethod<
    [appId: BytesLike, account: AddressLike],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "isEligible"
  ): TypedContractMethod<
    [appId: BytesLike, timepoint: BigNumberish],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "isEligibleNow"
  ): TypedContractMethod<[appId: BytesLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "isRewardDistributor"
  ): TypedContractMethod<
    [appId: BytesLike, account: AddressLike],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "metadataURI"
  ): TypedContractMethod<[appId: BytesLike], [string], "view">;
  getFunction(
    nameOrSignature: "proxiableUUID"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "removeAppModerator"
  ): TypedContractMethod<
    [_appId: BytesLike, _moderator: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "removeRewardDistributor"
  ): TypedContractMethod<
    [_appId: BytesLike, _distributor: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "renounceRole"
  ): TypedContractMethod<
    [role: BytesLike, callerConfirmation: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "revokeRole"
  ): TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "rewardDistributors"
  ): TypedContractMethod<[appId: BytesLike], [string[]], "view">;
  getFunction(
    nameOrSignature: "setAppAdmin"
  ): TypedContractMethod<
    [_appId: BytesLike, _newAdmin: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setBaseURI"
  ): TypedContractMethod<[_baseURI: string], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setTeamAllocationPercentage"
  ): TypedContractMethod<
    [_appId: BytesLike, _percentage: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setVotingEligibility"
  ): TypedContractMethod<
    [_appId: BytesLike, _isEligible: boolean],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "supportsInterface"
  ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "teamAllocationPercentage"
  ): TypedContractMethod<[appId: BytesLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "teamWalletAddress"
  ): TypedContractMethod<[appId: BytesLike], [string], "view">;
  getFunction(
    nameOrSignature: "updateAppMetadata"
  ): TypedContractMethod<
    [_appId: BytesLike, _newMetadataURI: string],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "updateTeamWalletAddress"
  ): TypedContractMethod<
    [_appId: BytesLike, _newReceiverAddress: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "upgradeToAndCall"
  ): TypedContractMethod<
    [newImplementation: AddressLike, data: BytesLike],
    [void],
    "payable"
  >;
  getFunction(
    nameOrSignature: "version"
  ): TypedContractMethod<[], [string], "view">;

  getEvent(
    key: "AppAdded"
  ): TypedContractEvent<
    AppAddedEvent.InputTuple,
    AppAddedEvent.OutputTuple,
    AppAddedEvent.OutputObject
  >;
  getEvent(
    key: "AppAdminUpdated"
  ): TypedContractEvent<
    AppAdminUpdatedEvent.InputTuple,
    AppAdminUpdatedEvent.OutputTuple,
    AppAdminUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "AppMetadataURIUpdated"
  ): TypedContractEvent<
    AppMetadataURIUpdatedEvent.InputTuple,
    AppMetadataURIUpdatedEvent.OutputTuple,
    AppMetadataURIUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "BaseURIUpdated"
  ): TypedContractEvent<
    BaseURIUpdatedEvent.InputTuple,
    BaseURIUpdatedEvent.OutputTuple,
    BaseURIUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "Initialized"
  ): TypedContractEvent<
    InitializedEvent.InputTuple,
    InitializedEvent.OutputTuple,
    InitializedEvent.OutputObject
  >;
  getEvent(
    key: "ModeratorAddedToApp"
  ): TypedContractEvent<
    ModeratorAddedToAppEvent.InputTuple,
    ModeratorAddedToAppEvent.OutputTuple,
    ModeratorAddedToAppEvent.OutputObject
  >;
  getEvent(
    key: "ModeratorRemovedFromApp"
  ): TypedContractEvent<
    ModeratorRemovedFromAppEvent.InputTuple,
    ModeratorRemovedFromAppEvent.OutputTuple,
    ModeratorRemovedFromAppEvent.OutputObject
  >;
  getEvent(
    key: "RewardDistributorAddedToApp"
  ): TypedContractEvent<
    RewardDistributorAddedToAppEvent.InputTuple,
    RewardDistributorAddedToAppEvent.OutputTuple,
    RewardDistributorAddedToAppEvent.OutputObject
  >;
  getEvent(
    key: "RewardDistributorRemovedFromApp"
  ): TypedContractEvent<
    RewardDistributorRemovedFromAppEvent.InputTuple,
    RewardDistributorRemovedFromAppEvent.OutputTuple,
    RewardDistributorRemovedFromAppEvent.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: "TeamAllocationPercentageUpdated"
  ): TypedContractEvent<
    TeamAllocationPercentageUpdatedEvent.InputTuple,
    TeamAllocationPercentageUpdatedEvent.OutputTuple,
    TeamAllocationPercentageUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "TeamWalletAddressUpdated"
  ): TypedContractEvent<
    TeamWalletAddressUpdatedEvent.InputTuple,
    TeamWalletAddressUpdatedEvent.OutputTuple,
    TeamWalletAddressUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "Upgraded"
  ): TypedContractEvent<
    UpgradedEvent.InputTuple,
    UpgradedEvent.OutputTuple,
    UpgradedEvent.OutputObject
  >;
  getEvent(
    key: "VotingEligibilityUpdated"
  ): TypedContractEvent<
    VotingEligibilityUpdatedEvent.InputTuple,
    VotingEligibilityUpdatedEvent.OutputTuple,
    VotingEligibilityUpdatedEvent.OutputObject
  >;

  filters: {
    "AppAdded(bytes32,address,string,bool)": TypedContractEvent<
      AppAddedEvent.InputTuple,
      AppAddedEvent.OutputTuple,
      AppAddedEvent.OutputObject
    >;
    AppAdded: TypedContractEvent<
      AppAddedEvent.InputTuple,
      AppAddedEvent.OutputTuple,
      AppAddedEvent.OutputObject
    >;

    "AppAdminUpdated(bytes32,address,address)": TypedContractEvent<
      AppAdminUpdatedEvent.InputTuple,
      AppAdminUpdatedEvent.OutputTuple,
      AppAdminUpdatedEvent.OutputObject
    >;
    AppAdminUpdated: TypedContractEvent<
      AppAdminUpdatedEvent.InputTuple,
      AppAdminUpdatedEvent.OutputTuple,
      AppAdminUpdatedEvent.OutputObject
    >;

    "AppMetadataURIUpdated(bytes32,string,string)": TypedContractEvent<
      AppMetadataURIUpdatedEvent.InputTuple,
      AppMetadataURIUpdatedEvent.OutputTuple,
      AppMetadataURIUpdatedEvent.OutputObject
    >;
    AppMetadataURIUpdated: TypedContractEvent<
      AppMetadataURIUpdatedEvent.InputTuple,
      AppMetadataURIUpdatedEvent.OutputTuple,
      AppMetadataURIUpdatedEvent.OutputObject
    >;

    "BaseURIUpdated(string,string)": TypedContractEvent<
      BaseURIUpdatedEvent.InputTuple,
      BaseURIUpdatedEvent.OutputTuple,
      BaseURIUpdatedEvent.OutputObject
    >;
    BaseURIUpdated: TypedContractEvent<
      BaseURIUpdatedEvent.InputTuple,
      BaseURIUpdatedEvent.OutputTuple,
      BaseURIUpdatedEvent.OutputObject
    >;

    "Initialized(uint64)": TypedContractEvent<
      InitializedEvent.InputTuple,
      InitializedEvent.OutputTuple,
      InitializedEvent.OutputObject
    >;
    Initialized: TypedContractEvent<
      InitializedEvent.InputTuple,
      InitializedEvent.OutputTuple,
      InitializedEvent.OutputObject
    >;

    "ModeratorAddedToApp(bytes32,address)": TypedContractEvent<
      ModeratorAddedToAppEvent.InputTuple,
      ModeratorAddedToAppEvent.OutputTuple,
      ModeratorAddedToAppEvent.OutputObject
    >;
    ModeratorAddedToApp: TypedContractEvent<
      ModeratorAddedToAppEvent.InputTuple,
      ModeratorAddedToAppEvent.OutputTuple,
      ModeratorAddedToAppEvent.OutputObject
    >;

    "ModeratorRemovedFromApp(bytes32,address)": TypedContractEvent<
      ModeratorRemovedFromAppEvent.InputTuple,
      ModeratorRemovedFromAppEvent.OutputTuple,
      ModeratorRemovedFromAppEvent.OutputObject
    >;
    ModeratorRemovedFromApp: TypedContractEvent<
      ModeratorRemovedFromAppEvent.InputTuple,
      ModeratorRemovedFromAppEvent.OutputTuple,
      ModeratorRemovedFromAppEvent.OutputObject
    >;

    "RewardDistributorAddedToApp(bytes32,address)": TypedContractEvent<
      RewardDistributorAddedToAppEvent.InputTuple,
      RewardDistributorAddedToAppEvent.OutputTuple,
      RewardDistributorAddedToAppEvent.OutputObject
    >;
    RewardDistributorAddedToApp: TypedContractEvent<
      RewardDistributorAddedToAppEvent.InputTuple,
      RewardDistributorAddedToAppEvent.OutputTuple,
      RewardDistributorAddedToAppEvent.OutputObject
    >;

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

    "TeamAllocationPercentageUpdated(bytes32,uint256,uint256)": TypedContractEvent<
      TeamAllocationPercentageUpdatedEvent.InputTuple,
      TeamAllocationPercentageUpdatedEvent.OutputTuple,
      TeamAllocationPercentageUpdatedEvent.OutputObject
    >;
    TeamAllocationPercentageUpdated: TypedContractEvent<
      TeamAllocationPercentageUpdatedEvent.InputTuple,
      TeamAllocationPercentageUpdatedEvent.OutputTuple,
      TeamAllocationPercentageUpdatedEvent.OutputObject
    >;

    "TeamWalletAddressUpdated(bytes32,address,address)": TypedContractEvent<
      TeamWalletAddressUpdatedEvent.InputTuple,
      TeamWalletAddressUpdatedEvent.OutputTuple,
      TeamWalletAddressUpdatedEvent.OutputObject
    >;
    TeamWalletAddressUpdated: TypedContractEvent<
      TeamWalletAddressUpdatedEvent.InputTuple,
      TeamWalletAddressUpdatedEvent.OutputTuple,
      TeamWalletAddressUpdatedEvent.OutputObject
    >;

    "Upgraded(address)": TypedContractEvent<
      UpgradedEvent.InputTuple,
      UpgradedEvent.OutputTuple,
      UpgradedEvent.OutputObject
    >;
    Upgraded: TypedContractEvent<
      UpgradedEvent.InputTuple,
      UpgradedEvent.OutputTuple,
      UpgradedEvent.OutputObject
    >;

    "VotingEligibilityUpdated(bytes32,bool)": TypedContractEvent<
      VotingEligibilityUpdatedEvent.InputTuple,
      VotingEligibilityUpdatedEvent.OutputTuple,
      VotingEligibilityUpdatedEvent.OutputObject
    >;
    VotingEligibilityUpdated: TypedContractEvent<
      VotingEligibilityUpdatedEvent.InputTuple,
      VotingEligibilityUpdatedEvent.OutputTuple,
      VotingEligibilityUpdatedEvent.OutputObject
    >;
  };
}
