/* 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 EndorsementUtils {
  export type NodeStrengthScoresStruct = {
    strength: BigNumberish;
    thunder: BigNumberish;
    mjolnir: BigNumberish;
    veThorX: BigNumberish;
    strengthX: BigNumberish;
    thunderX: BigNumberish;
    mjolnirX: BigNumberish;
  };

  export type NodeStrengthScoresStructOutput = [
    strength: bigint,
    thunder: bigint,
    mjolnir: bigint,
    veThorX: bigint,
    strengthX: bigint,
    thunderX: bigint,
    mjolnirX: bigint
  ] & {
    strength: bigint;
    thunder: bigint;
    mjolnir: bigint;
    veThorX: bigint;
    strengthX: bigint;
    thunderX: bigint;
    mjolnirX: bigint;
  };
}

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 declare namespace X2EarnAppsStorageTypes {
  export type EndorsementStruct = {
    appId: BytesLike;
    points: BigNumberish;
    endorsedAtRound: BigNumberish;
  };

  export type EndorsementStructOutput = [
    appId: string,
    points: bigint,
    endorsedAtRound: bigint
  ] & { appId: string; points: bigint; endorsedAtRound: bigint };

  export type NodePointsInfoStruct = {
    totalPoints: BigNumberish;
    usedPoints: BigNumberish;
    availablePoints: BigNumberish;
    lockedPoints: BigNumberish;
  };

  export type NodePointsInfoStructOutput = [
    totalPoints: bigint,
    usedPoints: bigint,
    availablePoints: bigint,
    lockedPoints: bigint
  ] & {
    totalPoints: bigint;
    usedPoints: bigint;
    availablePoints: bigint;
    lockedPoints: bigint;
  };
}

export interface IX2EarnAppsInterface extends Interface {
  getFunction(
    nameOrSignature:
      | "addAppModerator"
      | "addCreator"
      | "addRewardDistributor"
      | "allEligibleApps"
      | "app"
      | "appAdmin"
      | "appCreators"
      | "appExists"
      | "apps"
      | "baseURI"
      | "canUnendorse"
      | "checkEndorsement"
      | "cooldownPeriod"
      | "creatorApps"
      | "enableRewardsPoolForNewApp"
      | "endorseApp"
      | "endorsementScoreThreshold"
      | "endorsementsPaused"
      | "getEndorserNodes"
      | "getEndorsers"
      | "getNodeActiveEndorsements"
      | "getNodeAvailablePoints"
      | "getNodeEndorsementScore"
      | "getNodePointsInfo"
      | "getScore"
      | "getScoreAtTimepoint"
      | "getUsersEndorsementScore"
      | "gracePeriod"
      | "hashAppName"
      | "initializeV8"
      | "isAppAdmin"
      | "isAppUnendorsed"
      | "isBlacklisted"
      | "isCreatorOfAnyApp"
      | "isEligible"
      | "isRewardDistributor"
      | "markMigrationComplete"
      | "maxPointsPerApp"
      | "maxPointsPerNodePerApp"
      | "nodeLevelEndorsementScore"
      | "pauseEndorsements"
      | "removeAppCreator"
      | "removeAppModerator"
      | "removeNodeEndorsement"
      | "removeRewardDistributor"
      | "removeXAppSubmission"
      | "seedEndorsement"
      | "selfBlacklistApp"
      | "setAppAdmin"
      | "setMaxPointsPerApp"
      | "setMaxPointsPerNodePerApp"
      | "setTeamAllocationPercentage"
      | "setVotingEligibility"
      | "submitApp"
      | "teamAllocationPercentage"
      | "teamWalletAddress"
      | "unendorseApp"
      | "unendorsedAppIds"
      | "unendorsedApps"
      | "unpauseEndorsements"
      | "updateAppMetadata"
      | "updateCooldownPeriod"
      | "updateEndorsementScoreThreshold"
      | "updateGracePeriod"
      | "updateNodeEndorsementScores"
      | "updateTeamWalletAddress"
      | "version"
  ): FunctionFragment;

  getEvent(
    nameOrSignatureOrTopic:
      | "AppAdded"
      | "AppAdminUpdated"
      | "AppEndorsed"
      | "AppEndorsementStatusUpdated"
      | "AppMetadataURIUpdated"
      | "AppSelfBlacklisted"
      | "AppUnendorsed"
      | "AppUnendorsedGracePeriodStarted"
      | "BaseURIUpdated"
      | "BlacklistUpdated"
      | "CooldownPeriodUpdated"
      | "CreatorAddedToApp"
      | "CreatorRemovedFromApp"
      | "EndorsementScoreThresholdUpdated"
      | "EndorsementsPausedUpdated"
      | "GracePeriodUpdated"
      | "MaxPointsPerAppUpdated"
      | "MaxPointsPerNodePerAppUpdated"
      | "ModeratorAddedToApp"
      | "ModeratorRemovedFromApp"
      | "NodeStrengthScoresUpdated"
      | "RewardDistributorAddedToApp"
      | "RewardDistributorRemovedFromApp"
      | "TeamAllocationPercentageUpdated"
      | "TeamWalletAddressUpdated"
      | "VotingEligibilityUpdated"
  ): EventFragment;

  encodeFunctionData(
    functionFragment: "addAppModerator",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "addCreator",
    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: "appCreators",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "appExists",
    values: [BytesLike]
  ): string;
  encodeFunctionData(functionFragment: "apps", values?: undefined): string;
  encodeFunctionData(functionFragment: "baseURI", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "canUnendorse",
    values: [BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "checkEndorsement",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "cooldownPeriod",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "creatorApps",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "enableRewardsPoolForNewApp",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "endorseApp",
    values: [BytesLike, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "endorsementScoreThreshold",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "endorsementsPaused",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getEndorserNodes",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getEndorsers",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getNodeActiveEndorsements",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getNodeAvailablePoints",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getNodeEndorsementScore",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getNodePointsInfo",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "getScore", values: [BytesLike]): string;
  encodeFunctionData(
    functionFragment: "getScoreAtTimepoint",
    values: [BytesLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getUsersEndorsementScore",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "gracePeriod",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "hashAppName", values: [string]): string;
  encodeFunctionData(
    functionFragment: "initializeV8",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isAppAdmin",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isAppUnendorsed",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isBlacklisted",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isCreatorOfAnyApp",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isEligible",
    values: [BytesLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isRewardDistributor",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "markMigrationComplete",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "maxPointsPerApp",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "maxPointsPerNodePerApp",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "nodeLevelEndorsementScore",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "pauseEndorsements",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "removeAppCreator",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "removeAppModerator",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "removeNodeEndorsement",
    values: [BytesLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "removeRewardDistributor",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "removeXAppSubmission",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "seedEndorsement",
    values: [BytesLike, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "selfBlacklistApp",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setAppAdmin",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setMaxPointsPerApp",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setMaxPointsPerNodePerApp",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setTeamAllocationPercentage",
    values: [BytesLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setVotingEligibility",
    values: [BytesLike, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "submitApp",
    values: [AddressLike, AddressLike, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "teamAllocationPercentage",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "teamWalletAddress",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "unendorseApp",
    values: [BytesLike, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "unendorsedAppIds",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "unendorsedApps",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "unpauseEndorsements",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "updateAppMetadata",
    values: [BytesLike, string]
  ): string;
  encodeFunctionData(
    functionFragment: "updateCooldownPeriod",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "updateEndorsementScoreThreshold",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "updateGracePeriod",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "updateNodeEndorsementScores",
    values: [EndorsementUtils.NodeStrengthScoresStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "updateTeamWalletAddress",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(functionFragment: "version", values?: undefined): string;

  decodeFunctionResult(
    functionFragment: "addAppModerator",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "addCreator", 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: "appCreators",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "appExists", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "apps", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "baseURI", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "canUnendorse",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "checkEndorsement",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "cooldownPeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "creatorApps",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "enableRewardsPoolForNewApp",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "endorseApp", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "endorsementScoreThreshold",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "endorsementsPaused",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getEndorserNodes",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getEndorsers",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getNodeActiveEndorsements",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getNodeAvailablePoints",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getNodeEndorsementScore",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getNodePointsInfo",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "getScore", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getScoreAtTimepoint",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getUsersEndorsementScore",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "gracePeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "hashAppName",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "initializeV8",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "isAppAdmin", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isAppUnendorsed",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isBlacklisted",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isCreatorOfAnyApp",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "isEligible", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isRewardDistributor",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "markMigrationComplete",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "maxPointsPerApp",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "maxPointsPerNodePerApp",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "nodeLevelEndorsementScore",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "pauseEndorsements",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "removeAppCreator",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "removeAppModerator",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "removeNodeEndorsement",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "removeRewardDistributor",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "removeXAppSubmission",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "seedEndorsement",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "selfBlacklistApp",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setAppAdmin",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMaxPointsPerApp",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMaxPointsPerNodePerApp",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTeamAllocationPercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setVotingEligibility",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "submitApp", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "teamAllocationPercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "teamWalletAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "unendorseApp",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "unendorsedAppIds",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "unendorsedApps",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "unpauseEndorsements",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateAppMetadata",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateCooldownPeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateEndorsementScoreThreshold",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateGracePeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateNodeEndorsementScores",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateTeamWalletAddress",
    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 AppEndorsedEvent {
  export type InputTuple = [
    appId: BytesLike,
    nodeId: BigNumberish,
    endorser: AddressLike,
    points: BigNumberish
  ];
  export type OutputTuple = [
    appId: string,
    nodeId: bigint,
    endorser: string,
    points: bigint
  ];
  export interface OutputObject {
    appId: string;
    nodeId: bigint;
    endorser: string;
    points: 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 AppEndorsementStatusUpdatedEvent {
  export type InputTuple = [appId: BytesLike, endorsed: boolean];
  export type OutputTuple = [appId: string, endorsed: boolean];
  export interface OutputObject {
    appId: string;
    endorsed: 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 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 AppSelfBlacklistedEvent {
  export type InputTuple = [appId: BytesLike, admin: AddressLike];
  export type OutputTuple = [appId: string, admin: string];
  export interface OutputObject {
    appId: string;
    admin: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace AppUnendorsedEvent {
  export type InputTuple = [
    appId: BytesLike,
    nodeId: BigNumberish,
    points: BigNumberish
  ];
  export type OutputTuple = [appId: string, nodeId: bigint, points: bigint];
  export interface OutputObject {
    appId: string;
    nodeId: bigint;
    points: 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 AppUnendorsedGracePeriodStartedEvent {
  export type InputTuple = [
    appId: BytesLike,
    startBlock: BigNumberish,
    endBlock: BigNumberish
  ];
  export type OutputTuple = [
    appId: string,
    startBlock: bigint,
    endBlock: bigint
  ];
  export interface OutputObject {
    appId: string;
    startBlock: bigint;
    endBlock: 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 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 BlacklistUpdatedEvent {
  export type InputTuple = [appId: BytesLike, isBlacklisted: boolean];
  export type OutputTuple = [appId: string, isBlacklisted: boolean];
  export interface OutputObject {
    appId: string;
    isBlacklisted: 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 CooldownPeriodUpdatedEvent {
  export type InputTuple = [
    oldCooldownPeriod: BigNumberish,
    newCooldownPeriod: BigNumberish
  ];
  export type OutputTuple = [
    oldCooldownPeriod: bigint,
    newCooldownPeriod: bigint
  ];
  export interface OutputObject {
    oldCooldownPeriod: bigint;
    newCooldownPeriod: 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 CreatorAddedToAppEvent {
  export type InputTuple = [appId: BytesLike, creatorAddress: AddressLike];
  export type OutputTuple = [appId: string, creatorAddress: string];
  export interface OutputObject {
    appId: string;
    creatorAddress: 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 CreatorRemovedFromAppEvent {
  export type InputTuple = [appId: BytesLike, creator: AddressLike];
  export type OutputTuple = [appId: string, creator: string];
  export interface OutputObject {
    appId: string;
    creator: 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 EndorsementScoreThresholdUpdatedEvent {
  export type InputTuple = [
    oldThreshold: BigNumberish,
    newThreshold: BigNumberish
  ];
  export type OutputTuple = [oldThreshold: bigint, newThreshold: bigint];
  export interface OutputObject {
    oldThreshold: bigint;
    newThreshold: 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 EndorsementsPausedUpdatedEvent {
  export type InputTuple = [paused: boolean];
  export type OutputTuple = [paused: boolean];
  export interface OutputObject {
    paused: 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 GracePeriodUpdatedEvent {
  export type InputTuple = [
    oldGracePeriod: BigNumberish,
    newGracePeriod: BigNumberish
  ];
  export type OutputTuple = [oldGracePeriod: bigint, newGracePeriod: bigint];
  export interface OutputObject {
    oldGracePeriod: bigint;
    newGracePeriod: 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 MaxPointsPerAppUpdatedEvent {
  export type InputTuple = [oldMax: BigNumberish, newMax: BigNumberish];
  export type OutputTuple = [oldMax: bigint, newMax: bigint];
  export interface OutputObject {
    oldMax: bigint;
    newMax: 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 MaxPointsPerNodePerAppUpdatedEvent {
  export type InputTuple = [oldMax: BigNumberish, newMax: BigNumberish];
  export type OutputTuple = [oldMax: bigint, newMax: bigint];
  export interface OutputObject {
    oldMax: bigint;
    newMax: 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 NodeStrengthScoresUpdatedEvent {
  export type InputTuple = [
    nodeStrengthScores: EndorsementUtils.NodeStrengthScoresStruct
  ];
  export type OutputTuple = [
    nodeStrengthScores: EndorsementUtils.NodeStrengthScoresStructOutput
  ];
  export interface OutputObject {
    nodeStrengthScores: EndorsementUtils.NodeStrengthScoresStructOutput;
  }
  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 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 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 IX2EarnApps extends BaseContract {
  connect(runner?: ContractRunner | null): IX2EarnApps;
  waitForDeployment(): Promise<this>;

  interface: IX2EarnAppsInterface;

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

  addAppModerator: TypedContractMethod<
    [appId: BytesLike, moderator: AddressLike],
    [void],
    "nonpayable"
  >;

  addCreator: TypedContractMethod<
    [appId: BytesLike, creator: AddressLike],
    [void],
    "nonpayable"
  >;

  addRewardDistributor: TypedContractMethod<
    [appId: BytesLike, distributorAddress: AddressLike],
    [void],
    "nonpayable"
  >;

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

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

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

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

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

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

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

  canUnendorse: TypedContractMethod<
    [nodeId: BigNumberish, appId: BytesLike],
    [boolean],
    "view"
  >;

  checkEndorsement: TypedContractMethod<
    [appId: BytesLike],
    [boolean],
    "nonpayable"
  >;

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

  creatorApps: TypedContractMethod<[creator: AddressLike], [bigint], "view">;

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

  endorseApp: TypedContractMethod<
    [appId: BytesLike, nodeId: BigNumberish, points: BigNumberish],
    [void],
    "nonpayable"
  >;

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

  endorsementsPaused: TypedContractMethod<[], [boolean], "view">;

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

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

  getNodeActiveEndorsements: TypedContractMethod<
    [nodeId: BigNumberish],
    [X2EarnAppsStorageTypes.EndorsementStructOutput[]],
    "view"
  >;

  getNodeAvailablePoints: TypedContractMethod<
    [nodeId: BigNumberish],
    [bigint],
    "view"
  >;

  getNodeEndorsementScore: TypedContractMethod<
    [nodeId: BigNumberish],
    [bigint],
    "view"
  >;

  getNodePointsInfo: TypedContractMethod<
    [nodeId: BigNumberish],
    [X2EarnAppsStorageTypes.NodePointsInfoStructOutput],
    "view"
  >;

  getScore: TypedContractMethod<[appId: BytesLike], [bigint], "nonpayable">;

  getScoreAtTimepoint: TypedContractMethod<
    [appId: BytesLike, timepoint: BigNumberish],
    [bigint],
    "view"
  >;

  getUsersEndorsementScore: TypedContractMethod<
    [user: AddressLike],
    [bigint],
    "view"
  >;

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

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

  initializeV8: TypedContractMethod<
    [_maxPointsPerNodePerApp: BigNumberish, _maxPointsPerApp: BigNumberish],
    [void],
    "nonpayable"
  >;

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

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

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

  isCreatorOfAnyApp: TypedContractMethod<
    [creator: AddressLike],
    [boolean],
    "nonpayable"
  >;

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

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

  markMigrationComplete: TypedContractMethod<[], [void], "nonpayable">;

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

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

  nodeLevelEndorsementScore: TypedContractMethod<
    [nodeLevel: BigNumberish],
    [bigint],
    "view"
  >;

  pauseEndorsements: TypedContractMethod<[], [void], "nonpayable">;

  removeAppCreator: TypedContractMethod<
    [appId: BytesLike, creator: AddressLike],
    [void],
    "nonpayable"
  >;

  removeAppModerator: TypedContractMethod<
    [appId: BytesLike, moderator: AddressLike],
    [void],
    "nonpayable"
  >;

  removeNodeEndorsement: TypedContractMethod<
    [_appId: BytesLike, _nodeId: BigNumberish],
    [void],
    "nonpayable"
  >;

  removeRewardDistributor: TypedContractMethod<
    [appId: BytesLike, distributorAddress: AddressLike],
    [void],
    "nonpayable"
  >;

  removeXAppSubmission: TypedContractMethod<
    [_appId: BytesLike],
    [void],
    "nonpayable"
  >;

  seedEndorsement: TypedContractMethod<
    [appId: BytesLike, nodeId: BigNumberish, points: BigNumberish],
    [void],
    "nonpayable"
  >;

  selfBlacklistApp: TypedContractMethod<
    [_appId: BytesLike],
    [void],
    "nonpayable"
  >;

  setAppAdmin: TypedContractMethod<
    [appId: BytesLike, admin: AddressLike],
    [void],
    "nonpayable"
  >;

  setMaxPointsPerApp: TypedContractMethod<
    [maxPoints: BigNumberish],
    [void],
    "nonpayable"
  >;

  setMaxPointsPerNodePerApp: TypedContractMethod<
    [maxPoints: BigNumberish],
    [void],
    "nonpayable"
  >;

  setTeamAllocationPercentage: TypedContractMethod<
    [appId: BytesLike, percentage: BigNumberish],
    [void],
    "nonpayable"
  >;

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

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

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

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

  unendorseApp: TypedContractMethod<
    [appId: BytesLike, nodeId: BigNumberish, points: BigNumberish],
    [void],
    "nonpayable"
  >;

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

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

  unpauseEndorsements: TypedContractMethod<[], [void], "nonpayable">;

  updateAppMetadata: TypedContractMethod<
    [appId: BytesLike, metadataURI: string],
    [void],
    "nonpayable"
  >;

  updateCooldownPeriod: TypedContractMethod<
    [_newCooldownPeriod: BigNumberish],
    [void],
    "nonpayable"
  >;

  updateEndorsementScoreThreshold: TypedContractMethod<
    [_scoreThreshold: BigNumberish],
    [void],
    "nonpayable"
  >;

  updateGracePeriod: TypedContractMethod<
    [_newGracePeriod: BigNumberish],
    [void],
    "nonpayable"
  >;

  updateNodeEndorsementScores: TypedContractMethod<
    [_nodeStrengthScores: EndorsementUtils.NodeStrengthScoresStruct],
    [void],
    "nonpayable"
  >;

  updateTeamWalletAddress: TypedContractMethod<
    [appId: BytesLike, newTeamWalletAddress: AddressLike],
    [void],
    "nonpayable"
  >;

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

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

  getFunction(
    nameOrSignature: "addAppModerator"
  ): TypedContractMethod<
    [appId: BytesLike, moderator: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "addCreator"
  ): TypedContractMethod<
    [appId: BytesLike, creator: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "addRewardDistributor"
  ): TypedContractMethod<
    [appId: BytesLike, distributorAddress: 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: "appCreators"
  ): TypedContractMethod<[appId: BytesLike], [string[]], "view">;
  getFunction(
    nameOrSignature: "appExists"
  ): TypedContractMethod<[appId: BytesLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "apps"
  ): TypedContractMethod<
    [],
    [X2EarnAppsDataTypes.AppWithDetailsReturnTypeStructOutput[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "baseURI"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "canUnendorse"
  ): TypedContractMethod<
    [nodeId: BigNumberish, appId: BytesLike],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "checkEndorsement"
  ): TypedContractMethod<[appId: BytesLike], [boolean], "nonpayable">;
  getFunction(
    nameOrSignature: "cooldownPeriod"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "creatorApps"
  ): TypedContractMethod<[creator: AddressLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "enableRewardsPoolForNewApp"
  ): TypedContractMethod<[appId: BytesLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "endorseApp"
  ): TypedContractMethod<
    [appId: BytesLike, nodeId: BigNumberish, points: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "endorsementScoreThreshold"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "endorsementsPaused"
  ): TypedContractMethod<[], [boolean], "view">;
  getFunction(
    nameOrSignature: "getEndorserNodes"
  ): TypedContractMethod<[appId: BytesLike], [bigint[]], "view">;
  getFunction(
    nameOrSignature: "getEndorsers"
  ): TypedContractMethod<[appId: BytesLike], [string[]], "view">;
  getFunction(
    nameOrSignature: "getNodeActiveEndorsements"
  ): TypedContractMethod<
    [nodeId: BigNumberish],
    [X2EarnAppsStorageTypes.EndorsementStructOutput[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "getNodeAvailablePoints"
  ): TypedContractMethod<[nodeId: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getNodeEndorsementScore"
  ): TypedContractMethod<[nodeId: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getNodePointsInfo"
  ): TypedContractMethod<
    [nodeId: BigNumberish],
    [X2EarnAppsStorageTypes.NodePointsInfoStructOutput],
    "view"
  >;
  getFunction(
    nameOrSignature: "getScore"
  ): TypedContractMethod<[appId: BytesLike], [bigint], "nonpayable">;
  getFunction(
    nameOrSignature: "getScoreAtTimepoint"
  ): TypedContractMethod<
    [appId: BytesLike, timepoint: BigNumberish],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getUsersEndorsementScore"
  ): TypedContractMethod<[user: AddressLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "gracePeriod"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "hashAppName"
  ): TypedContractMethod<[name: string], [string], "view">;
  getFunction(
    nameOrSignature: "initializeV8"
  ): TypedContractMethod<
    [_maxPointsPerNodePerApp: BigNumberish, _maxPointsPerApp: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "isAppAdmin"
  ): TypedContractMethod<
    [appId: BytesLike, account: AddressLike],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "isAppUnendorsed"
  ): TypedContractMethod<[appId: BytesLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "isBlacklisted"
  ): TypedContractMethod<[appId: BytesLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "isCreatorOfAnyApp"
  ): TypedContractMethod<[creator: AddressLike], [boolean], "nonpayable">;
  getFunction(
    nameOrSignature: "isEligible"
  ): TypedContractMethod<
    [appId: BytesLike, timepoint: BigNumberish],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "isRewardDistributor"
  ): TypedContractMethod<
    [appId: BytesLike, distributorAddress: AddressLike],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "markMigrationComplete"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "maxPointsPerApp"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "maxPointsPerNodePerApp"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "nodeLevelEndorsementScore"
  ): TypedContractMethod<[nodeLevel: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "pauseEndorsements"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "removeAppCreator"
  ): TypedContractMethod<
    [appId: BytesLike, creator: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "removeAppModerator"
  ): TypedContractMethod<
    [appId: BytesLike, moderator: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "removeNodeEndorsement"
  ): TypedContractMethod<
    [_appId: BytesLike, _nodeId: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "removeRewardDistributor"
  ): TypedContractMethod<
    [appId: BytesLike, distributorAddress: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "removeXAppSubmission"
  ): TypedContractMethod<[_appId: BytesLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "seedEndorsement"
  ): TypedContractMethod<
    [appId: BytesLike, nodeId: BigNumberish, points: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "selfBlacklistApp"
  ): TypedContractMethod<[_appId: BytesLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setAppAdmin"
  ): TypedContractMethod<
    [appId: BytesLike, admin: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setMaxPointsPerApp"
  ): TypedContractMethod<[maxPoints: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMaxPointsPerNodePerApp"
  ): TypedContractMethod<[maxPoints: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setTeamAllocationPercentage"
  ): TypedContractMethod<
    [appId: BytesLike, percentage: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setVotingEligibility"
  ): TypedContractMethod<
    [_appId: BytesLike, _isEligible: boolean],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "submitApp"
  ): TypedContractMethod<
    [
      _teamWalletAddress: AddressLike,
      _admin: AddressLike,
      _appName: string,
      _appMetadataURI: string
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "teamAllocationPercentage"
  ): TypedContractMethod<[appId: BytesLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "teamWalletAddress"
  ): TypedContractMethod<[appId: BytesLike], [string], "view">;
  getFunction(
    nameOrSignature: "unendorseApp"
  ): TypedContractMethod<
    [appId: BytesLike, nodeId: BigNumberish, points: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "unendorsedAppIds"
  ): TypedContractMethod<[], [string[]], "view">;
  getFunction(
    nameOrSignature: "unendorsedApps"
  ): TypedContractMethod<
    [],
    [X2EarnAppsDataTypes.AppWithDetailsReturnTypeStructOutput[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "unpauseEndorsements"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "updateAppMetadata"
  ): TypedContractMethod<
    [appId: BytesLike, metadataURI: string],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "updateCooldownPeriod"
  ): TypedContractMethod<
    [_newCooldownPeriod: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "updateEndorsementScoreThreshold"
  ): TypedContractMethod<[_scoreThreshold: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "updateGracePeriod"
  ): TypedContractMethod<[_newGracePeriod: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "updateNodeEndorsementScores"
  ): TypedContractMethod<
    [_nodeStrengthScores: EndorsementUtils.NodeStrengthScoresStruct],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "updateTeamWalletAddress"
  ): TypedContractMethod<
    [appId: BytesLike, newTeamWalletAddress: AddressLike],
    [void],
    "nonpayable"
  >;
  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: "AppEndorsed"
  ): TypedContractEvent<
    AppEndorsedEvent.InputTuple,
    AppEndorsedEvent.OutputTuple,
    AppEndorsedEvent.OutputObject
  >;
  getEvent(
    key: "AppEndorsementStatusUpdated"
  ): TypedContractEvent<
    AppEndorsementStatusUpdatedEvent.InputTuple,
    AppEndorsementStatusUpdatedEvent.OutputTuple,
    AppEndorsementStatusUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "AppMetadataURIUpdated"
  ): TypedContractEvent<
    AppMetadataURIUpdatedEvent.InputTuple,
    AppMetadataURIUpdatedEvent.OutputTuple,
    AppMetadataURIUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "AppSelfBlacklisted"
  ): TypedContractEvent<
    AppSelfBlacklistedEvent.InputTuple,
    AppSelfBlacklistedEvent.OutputTuple,
    AppSelfBlacklistedEvent.OutputObject
  >;
  getEvent(
    key: "AppUnendorsed"
  ): TypedContractEvent<
    AppUnendorsedEvent.InputTuple,
    AppUnendorsedEvent.OutputTuple,
    AppUnendorsedEvent.OutputObject
  >;
  getEvent(
    key: "AppUnendorsedGracePeriodStarted"
  ): TypedContractEvent<
    AppUnendorsedGracePeriodStartedEvent.InputTuple,
    AppUnendorsedGracePeriodStartedEvent.OutputTuple,
    AppUnendorsedGracePeriodStartedEvent.OutputObject
  >;
  getEvent(
    key: "BaseURIUpdated"
  ): TypedContractEvent<
    BaseURIUpdatedEvent.InputTuple,
    BaseURIUpdatedEvent.OutputTuple,
    BaseURIUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "BlacklistUpdated"
  ): TypedContractEvent<
    BlacklistUpdatedEvent.InputTuple,
    BlacklistUpdatedEvent.OutputTuple,
    BlacklistUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "CooldownPeriodUpdated"
  ): TypedContractEvent<
    CooldownPeriodUpdatedEvent.InputTuple,
    CooldownPeriodUpdatedEvent.OutputTuple,
    CooldownPeriodUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "CreatorAddedToApp"
  ): TypedContractEvent<
    CreatorAddedToAppEvent.InputTuple,
    CreatorAddedToAppEvent.OutputTuple,
    CreatorAddedToAppEvent.OutputObject
  >;
  getEvent(
    key: "CreatorRemovedFromApp"
  ): TypedContractEvent<
    CreatorRemovedFromAppEvent.InputTuple,
    CreatorRemovedFromAppEvent.OutputTuple,
    CreatorRemovedFromAppEvent.OutputObject
  >;
  getEvent(
    key: "EndorsementScoreThresholdUpdated"
  ): TypedContractEvent<
    EndorsementScoreThresholdUpdatedEvent.InputTuple,
    EndorsementScoreThresholdUpdatedEvent.OutputTuple,
    EndorsementScoreThresholdUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "EndorsementsPausedUpdated"
  ): TypedContractEvent<
    EndorsementsPausedUpdatedEvent.InputTuple,
    EndorsementsPausedUpdatedEvent.OutputTuple,
    EndorsementsPausedUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "GracePeriodUpdated"
  ): TypedContractEvent<
    GracePeriodUpdatedEvent.InputTuple,
    GracePeriodUpdatedEvent.OutputTuple,
    GracePeriodUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "MaxPointsPerAppUpdated"
  ): TypedContractEvent<
    MaxPointsPerAppUpdatedEvent.InputTuple,
    MaxPointsPerAppUpdatedEvent.OutputTuple,
    MaxPointsPerAppUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "MaxPointsPerNodePerAppUpdated"
  ): TypedContractEvent<
    MaxPointsPerNodePerAppUpdatedEvent.InputTuple,
    MaxPointsPerNodePerAppUpdatedEvent.OutputTuple,
    MaxPointsPerNodePerAppUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "ModeratorAddedToApp"
  ): TypedContractEvent<
    ModeratorAddedToAppEvent.InputTuple,
    ModeratorAddedToAppEvent.OutputTuple,
    ModeratorAddedToAppEvent.OutputObject
  >;
  getEvent(
    key: "ModeratorRemovedFromApp"
  ): TypedContractEvent<
    ModeratorRemovedFromAppEvent.InputTuple,
    ModeratorRemovedFromAppEvent.OutputTuple,
    ModeratorRemovedFromAppEvent.OutputObject
  >;
  getEvent(
    key: "NodeStrengthScoresUpdated"
  ): TypedContractEvent<
    NodeStrengthScoresUpdatedEvent.InputTuple,
    NodeStrengthScoresUpdatedEvent.OutputTuple,
    NodeStrengthScoresUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "RewardDistributorAddedToApp"
  ): TypedContractEvent<
    RewardDistributorAddedToAppEvent.InputTuple,
    RewardDistributorAddedToAppEvent.OutputTuple,
    RewardDistributorAddedToAppEvent.OutputObject
  >;
  getEvent(
    key: "RewardDistributorRemovedFromApp"
  ): TypedContractEvent<
    RewardDistributorRemovedFromAppEvent.InputTuple,
    RewardDistributorRemovedFromAppEvent.OutputTuple,
    RewardDistributorRemovedFromAppEvent.OutputObject
  >;
  getEvent(
    key: "TeamAllocationPercentageUpdated"
  ): TypedContractEvent<
    TeamAllocationPercentageUpdatedEvent.InputTuple,
    TeamAllocationPercentageUpdatedEvent.OutputTuple,
    TeamAllocationPercentageUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "TeamWalletAddressUpdated"
  ): TypedContractEvent<
    TeamWalletAddressUpdatedEvent.InputTuple,
    TeamWalletAddressUpdatedEvent.OutputTuple,
    TeamWalletAddressUpdatedEvent.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
    >;

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

    "AppEndorsementStatusUpdated(bytes32,bool)": TypedContractEvent<
      AppEndorsementStatusUpdatedEvent.InputTuple,
      AppEndorsementStatusUpdatedEvent.OutputTuple,
      AppEndorsementStatusUpdatedEvent.OutputObject
    >;
    AppEndorsementStatusUpdated: TypedContractEvent<
      AppEndorsementStatusUpdatedEvent.InputTuple,
      AppEndorsementStatusUpdatedEvent.OutputTuple,
      AppEndorsementStatusUpdatedEvent.OutputObject
    >;

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

    "AppSelfBlacklisted(bytes32,address)": TypedContractEvent<
      AppSelfBlacklistedEvent.InputTuple,
      AppSelfBlacklistedEvent.OutputTuple,
      AppSelfBlacklistedEvent.OutputObject
    >;
    AppSelfBlacklisted: TypedContractEvent<
      AppSelfBlacklistedEvent.InputTuple,
      AppSelfBlacklistedEvent.OutputTuple,
      AppSelfBlacklistedEvent.OutputObject
    >;

    "AppUnendorsed(bytes32,uint256,uint256)": TypedContractEvent<
      AppUnendorsedEvent.InputTuple,
      AppUnendorsedEvent.OutputTuple,
      AppUnendorsedEvent.OutputObject
    >;
    AppUnendorsed: TypedContractEvent<
      AppUnendorsedEvent.InputTuple,
      AppUnendorsedEvent.OutputTuple,
      AppUnendorsedEvent.OutputObject
    >;

    "AppUnendorsedGracePeriodStarted(bytes32,uint48,uint48)": TypedContractEvent<
      AppUnendorsedGracePeriodStartedEvent.InputTuple,
      AppUnendorsedGracePeriodStartedEvent.OutputTuple,
      AppUnendorsedGracePeriodStartedEvent.OutputObject
    >;
    AppUnendorsedGracePeriodStarted: TypedContractEvent<
      AppUnendorsedGracePeriodStartedEvent.InputTuple,
      AppUnendorsedGracePeriodStartedEvent.OutputTuple,
      AppUnendorsedGracePeriodStartedEvent.OutputObject
    >;

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

    "BlacklistUpdated(bytes32,bool)": TypedContractEvent<
      BlacklistUpdatedEvent.InputTuple,
      BlacklistUpdatedEvent.OutputTuple,
      BlacklistUpdatedEvent.OutputObject
    >;
    BlacklistUpdated: TypedContractEvent<
      BlacklistUpdatedEvent.InputTuple,
      BlacklistUpdatedEvent.OutputTuple,
      BlacklistUpdatedEvent.OutputObject
    >;

    "CooldownPeriodUpdated(uint256,uint256)": TypedContractEvent<
      CooldownPeriodUpdatedEvent.InputTuple,
      CooldownPeriodUpdatedEvent.OutputTuple,
      CooldownPeriodUpdatedEvent.OutputObject
    >;
    CooldownPeriodUpdated: TypedContractEvent<
      CooldownPeriodUpdatedEvent.InputTuple,
      CooldownPeriodUpdatedEvent.OutputTuple,
      CooldownPeriodUpdatedEvent.OutputObject
    >;

    "CreatorAddedToApp(bytes32,address)": TypedContractEvent<
      CreatorAddedToAppEvent.InputTuple,
      CreatorAddedToAppEvent.OutputTuple,
      CreatorAddedToAppEvent.OutputObject
    >;
    CreatorAddedToApp: TypedContractEvent<
      CreatorAddedToAppEvent.InputTuple,
      CreatorAddedToAppEvent.OutputTuple,
      CreatorAddedToAppEvent.OutputObject
    >;

    "CreatorRemovedFromApp(bytes32,address)": TypedContractEvent<
      CreatorRemovedFromAppEvent.InputTuple,
      CreatorRemovedFromAppEvent.OutputTuple,
      CreatorRemovedFromAppEvent.OutputObject
    >;
    CreatorRemovedFromApp: TypedContractEvent<
      CreatorRemovedFromAppEvent.InputTuple,
      CreatorRemovedFromAppEvent.OutputTuple,
      CreatorRemovedFromAppEvent.OutputObject
    >;

    "EndorsementScoreThresholdUpdated(uint256,uint256)": TypedContractEvent<
      EndorsementScoreThresholdUpdatedEvent.InputTuple,
      EndorsementScoreThresholdUpdatedEvent.OutputTuple,
      EndorsementScoreThresholdUpdatedEvent.OutputObject
    >;
    EndorsementScoreThresholdUpdated: TypedContractEvent<
      EndorsementScoreThresholdUpdatedEvent.InputTuple,
      EndorsementScoreThresholdUpdatedEvent.OutputTuple,
      EndorsementScoreThresholdUpdatedEvent.OutputObject
    >;

    "EndorsementsPausedUpdated(bool)": TypedContractEvent<
      EndorsementsPausedUpdatedEvent.InputTuple,
      EndorsementsPausedUpdatedEvent.OutputTuple,
      EndorsementsPausedUpdatedEvent.OutputObject
    >;
    EndorsementsPausedUpdated: TypedContractEvent<
      EndorsementsPausedUpdatedEvent.InputTuple,
      EndorsementsPausedUpdatedEvent.OutputTuple,
      EndorsementsPausedUpdatedEvent.OutputObject
    >;

    "GracePeriodUpdated(uint256,uint256)": TypedContractEvent<
      GracePeriodUpdatedEvent.InputTuple,
      GracePeriodUpdatedEvent.OutputTuple,
      GracePeriodUpdatedEvent.OutputObject
    >;
    GracePeriodUpdated: TypedContractEvent<
      GracePeriodUpdatedEvent.InputTuple,
      GracePeriodUpdatedEvent.OutputTuple,
      GracePeriodUpdatedEvent.OutputObject
    >;

    "MaxPointsPerAppUpdated(uint256,uint256)": TypedContractEvent<
      MaxPointsPerAppUpdatedEvent.InputTuple,
      MaxPointsPerAppUpdatedEvent.OutputTuple,
      MaxPointsPerAppUpdatedEvent.OutputObject
    >;
    MaxPointsPerAppUpdated: TypedContractEvent<
      MaxPointsPerAppUpdatedEvent.InputTuple,
      MaxPointsPerAppUpdatedEvent.OutputTuple,
      MaxPointsPerAppUpdatedEvent.OutputObject
    >;

    "MaxPointsPerNodePerAppUpdated(uint256,uint256)": TypedContractEvent<
      MaxPointsPerNodePerAppUpdatedEvent.InputTuple,
      MaxPointsPerNodePerAppUpdatedEvent.OutputTuple,
      MaxPointsPerNodePerAppUpdatedEvent.OutputObject
    >;
    MaxPointsPerNodePerAppUpdated: TypedContractEvent<
      MaxPointsPerNodePerAppUpdatedEvent.InputTuple,
      MaxPointsPerNodePerAppUpdatedEvent.OutputTuple,
      MaxPointsPerNodePerAppUpdatedEvent.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
    >;

    "NodeStrengthScoresUpdated(tuple)": TypedContractEvent<
      NodeStrengthScoresUpdatedEvent.InputTuple,
      NodeStrengthScoresUpdatedEvent.OutputTuple,
      NodeStrengthScoresUpdatedEvent.OutputObject
    >;
    NodeStrengthScoresUpdated: TypedContractEvent<
      NodeStrengthScoresUpdatedEvent.InputTuple,
      NodeStrengthScoresUpdatedEvent.OutputTuple,
      NodeStrengthScoresUpdatedEvent.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
    >;

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

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