/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import type {
  BaseContract,
  BigNumberish,
  BytesLike,
  FunctionFragment,
  Result,
  Interface,
  EventFragment,
  AddressLike,
  ContractRunner,
  ContractMethod,
  Listener,
} from "ethers";
import type {
  TypedContractEvent,
  TypedDeferredTopicFilter,
  TypedEventLog,
  TypedLogDescription,
  TypedListener,
  TypedContractMethod,
} from "../../common";

export interface INavigatorRegistryInterface extends Interface {
  getFunction(
    nameOrSignature:
      | "BASIS_POINTS"
      | "GOVERNANCE_ROLE"
      | "UPGRADER_ROLE"
      | "addStake"
      | "announceExit"
      | "canAcceptDelegations"
      | "claimFee"
      | "deactivateNavigator"
      | "delegate"
      | "depositNavigatorFee"
      | "exitAnnouncedRound"
      | "getAllocationPreferences"
      | "getDelegatedAmount"
      | "getDelegatedAmountAtTimepoint"
      | "getDelegationCapacity"
      | "getExitNoticePeriod"
      | "getFeeLockPeriod"
      | "getFeePercentage"
      | "getLastReportRound"
      | "getLastReportURI"
      | "getMaxStake"
      | "getMetadataURI"
      | "getMinStake"
      | "getMinorSlashPercentage"
      | "getNavigator"
      | "getNavigatorAtTimepoint"
      | "getPreferenceCutoffPeriod"
      | "getPreferencesSetBlock"
      | "getProposalDecision"
      | "getRawNavigator"
      | "getRawNavigatorAtTimepoint"
      | "getRemainingCapacity"
      | "getReportInterval"
      | "getRoundFee"
      | "getStake"
      | "getStakedAmountAtTimepoint"
      | "getStatus"
      | "getTotalDelegated"
      | "getTotalDelegatedAtTimepoint"
      | "getTotalDelegatedCitizensAtTimepoint"
      | "getTotalSlashed"
      | "hasSetDecision"
      | "hasSetPreferences"
      | "increaseDelegation"
      | "isDeactivated"
      | "isDeactivatedAtTimepoint"
      | "isDelegated"
      | "isDelegatedAtTimepoint"
      | "isExiting"
      | "isNavigator"
      | "isRoundFeeUnlocked"
      | "isSlashedForRound"
      | "reduceDelegation"
      | "reduceStake"
      | "register"
      | "reportRoundInfractions"
      | "setAllocationPreferences"
      | "setExitNoticePeriod"
      | "setFeeLockPeriod"
      | "setFeePercentage"
      | "setMaxStakePercentage"
      | "setMetadataURI"
      | "setMinStake"
      | "setMinorSlashPercentage"
      | "setPreferenceCutoffPeriod"
      | "setProposalDecision"
      | "setRelayerRewardsPool"
      | "setReportInterval"
      | "setVoterRewards"
      | "setXAllocationVoting"
      | "submitReport"
      | "undelegate"
      | "version"
      | "withdrawStake"
  ): FunctionFragment;

  getEvent(
    nameOrSignatureOrTopic:
      | "AllocationPreferencesSet"
      | "DelegationCreated"
      | "DelegationDecreased"
      | "DelegationIncreased"
      | "DelegationRemoved"
      | "ExitAnnounced"
      | "FeeClaimed"
      | "FeeDeposited"
      | "MetadataURIUpdated"
      | "NavigatorDeactivatedEvent"
      | "NavigatorMinorSlashed"
      | "NavigatorRegistered"
      | "NavigatorSlashed"
      | "ProposalDecisionSet"
      | "ReportSubmitted"
      | "StakeAdded"
      | "StakeWithdrawn"
  ): EventFragment;

  encodeFunctionData(
    functionFragment: "BASIS_POINTS",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "GOVERNANCE_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "UPGRADER_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "addStake",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "announceExit",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "canAcceptDelegations",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "claimFee",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "deactivateNavigator",
    values: [AddressLike, BigNumberish, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "delegate",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "depositNavigatorFee",
    values: [AddressLike, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "exitAnnouncedRound",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getAllocationPreferences",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getDelegatedAmount",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getDelegatedAmountAtTimepoint",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getDelegationCapacity",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getExitNoticePeriod",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getFeeLockPeriod",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getFeePercentage",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getLastReportRound",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getLastReportURI",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getMaxStake",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getMetadataURI",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getMinStake",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getMinorSlashPercentage",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getNavigator",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getNavigatorAtTimepoint",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getPreferenceCutoffPeriod",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getPreferencesSetBlock",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getProposalDecision",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getRawNavigator",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getRawNavigatorAtTimepoint",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getRemainingCapacity",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getReportInterval",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getRoundFee",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getStake",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getStakedAmountAtTimepoint",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getStatus",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getTotalDelegated",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getTotalDelegatedAtTimepoint",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getTotalDelegatedCitizensAtTimepoint",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getTotalSlashed",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "hasSetDecision",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "hasSetPreferences",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "increaseDelegation",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isDeactivated",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isDeactivatedAtTimepoint",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isDelegated",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isDelegatedAtTimepoint",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isExiting",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isNavigator",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isRoundFeeUnlocked",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isSlashedForRound",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "reduceDelegation",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "reduceStake",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "register",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "reportRoundInfractions",
    values: [AddressLike, BigNumberish, BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "setAllocationPreferences",
    values: [BigNumberish, BytesLike[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "setExitNoticePeriod",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setFeeLockPeriod",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setFeePercentage",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setMaxStakePercentage",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setMetadataURI",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "setMinStake",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setMinorSlashPercentage",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setPreferenceCutoffPeriod",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setProposalDecision",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setRelayerRewardsPool",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setReportInterval",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setVoterRewards",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setXAllocationVoting",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "submitReport",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "undelegate",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "version", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "withdrawStake",
    values: [BigNumberish]
  ): string;

  decodeFunctionResult(
    functionFragment: "BASIS_POINTS",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "GOVERNANCE_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "UPGRADER_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "addStake", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "announceExit",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "canAcceptDelegations",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "claimFee", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "deactivateNavigator",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "delegate", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "depositNavigatorFee",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "exitAnnouncedRound",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getAllocationPreferences",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getDelegatedAmount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getDelegatedAmountAtTimepoint",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getDelegationCapacity",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getExitNoticePeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getFeeLockPeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getFeePercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getLastReportRound",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getLastReportURI",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMaxStake",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMetadataURI",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMinStake",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMinorSlashPercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getNavigator",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getNavigatorAtTimepoint",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPreferenceCutoffPeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPreferencesSetBlock",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getProposalDecision",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getRawNavigator",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getRawNavigatorAtTimepoint",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getRemainingCapacity",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getReportInterval",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getRoundFee",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "getStake", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getStakedAmountAtTimepoint",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "getStatus", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getTotalDelegated",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTotalDelegatedAtTimepoint",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTotalDelegatedCitizensAtTimepoint",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTotalSlashed",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "hasSetDecision",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "hasSetPreferences",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "increaseDelegation",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isDeactivated",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isDeactivatedAtTimepoint",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isDelegated",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isDelegatedAtTimepoint",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "isExiting", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isNavigator",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isRoundFeeUnlocked",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isSlashedForRound",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "reduceDelegation",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "reduceStake",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "register", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "reportRoundInfractions",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setAllocationPreferences",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setExitNoticePeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setFeeLockPeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setFeePercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMaxStakePercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMetadataURI",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMinStake",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMinorSlashPercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setPreferenceCutoffPeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setProposalDecision",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setRelayerRewardsPool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setReportInterval",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setVoterRewards",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setXAllocationVoting",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "submitReport",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "undelegate", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "version", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "withdrawStake",
    data: BytesLike
  ): Result;
}

export namespace AllocationPreferencesSetEvent {
  export type InputTuple = [
    navigator: AddressLike,
    roundId: BigNumberish,
    appIds: BytesLike[]
  ];
  export type OutputTuple = [
    navigator: string,
    roundId: bigint,
    appIds: string[]
  ];
  export interface OutputObject {
    navigator: string;
    roundId: bigint;
    appIds: 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 DelegationCreatedEvent {
  export type InputTuple = [
    citizen: AddressLike,
    navigator: AddressLike,
    amount: BigNumberish
  ];
  export type OutputTuple = [
    citizen: string,
    navigator: string,
    amount: bigint
  ];
  export interface OutputObject {
    citizen: string;
    navigator: string;
    amount: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace DelegationDecreasedEvent {
  export type InputTuple = [
    citizen: AddressLike,
    navigator: AddressLike,
    removedAmount: BigNumberish,
    newTotal: BigNumberish
  ];
  export type OutputTuple = [
    citizen: string,
    navigator: string,
    removedAmount: bigint,
    newTotal: bigint
  ];
  export interface OutputObject {
    citizen: string;
    navigator: string;
    removedAmount: bigint;
    newTotal: 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 DelegationIncreasedEvent {
  export type InputTuple = [
    citizen: AddressLike,
    navigator: AddressLike,
    addedAmount: BigNumberish,
    newTotal: BigNumberish
  ];
  export type OutputTuple = [
    citizen: string,
    navigator: string,
    addedAmount: bigint,
    newTotal: bigint
  ];
  export interface OutputObject {
    citizen: string;
    navigator: string;
    addedAmount: bigint;
    newTotal: 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 DelegationRemovedEvent {
  export type InputTuple = [
    citizen: AddressLike,
    navigator: AddressLike,
    amount: BigNumberish
  ];
  export type OutputTuple = [
    citizen: string,
    navigator: string,
    amount: bigint
  ];
  export interface OutputObject {
    citizen: string;
    navigator: string;
    amount: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace ExitAnnouncedEvent {
  export type InputTuple = [
    navigator: AddressLike,
    announcedAtRound: BigNumberish,
    effectiveDeadline: BigNumberish
  ];
  export type OutputTuple = [
    navigator: string,
    announcedAtRound: bigint,
    effectiveDeadline: bigint
  ];
  export interface OutputObject {
    navigator: string;
    announcedAtRound: bigint;
    effectiveDeadline: 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 FeeClaimedEvent {
  export type InputTuple = [
    navigator: AddressLike,
    roundId: BigNumberish,
    amount: BigNumberish
  ];
  export type OutputTuple = [
    navigator: string,
    roundId: bigint,
    amount: bigint
  ];
  export interface OutputObject {
    navigator: string;
    roundId: bigint;
    amount: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace FeeDepositedEvent {
  export type InputTuple = [
    navigator: AddressLike,
    roundId: BigNumberish,
    amount: BigNumberish
  ];
  export type OutputTuple = [
    navigator: string,
    roundId: bigint,
    amount: bigint
  ];
  export interface OutputObject {
    navigator: string;
    roundId: bigint;
    amount: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace MetadataURIUpdatedEvent {
  export type InputTuple = [navigator: AddressLike, newURI: string];
  export type OutputTuple = [navigator: string, newURI: string];
  export interface OutputObject {
    navigator: string;
    newURI: 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 NavigatorDeactivatedEventEvent {
  export type InputTuple = [
    navigator: AddressLike,
    slashPercentage: BigNumberish
  ];
  export type OutputTuple = [navigator: string, slashPercentage: bigint];
  export interface OutputObject {
    navigator: string;
    slashPercentage: 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 NavigatorMinorSlashedEvent {
  export type InputTuple = [
    navigator: AddressLike,
    amount: BigNumberish,
    remainingStake: BigNumberish,
    roundId: BigNumberish,
    infractionFlags: BigNumberish
  ];
  export type OutputTuple = [
    navigator: string,
    amount: bigint,
    remainingStake: bigint,
    roundId: bigint,
    infractionFlags: bigint
  ];
  export interface OutputObject {
    navigator: string;
    amount: bigint;
    remainingStake: bigint;
    roundId: bigint;
    infractionFlags: 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 NavigatorRegisteredEvent {
  export type InputTuple = [
    navigator: AddressLike,
    stakeAmount: BigNumberish,
    metadataURI: string
  ];
  export type OutputTuple = [
    navigator: string,
    stakeAmount: bigint,
    metadataURI: string
  ];
  export interface OutputObject {
    navigator: string;
    stakeAmount: bigint;
    metadataURI: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace NavigatorSlashedEvent {
  export type InputTuple = [
    navigator: AddressLike,
    amount: BigNumberish,
    remainingStake: BigNumberish,
    reason: string
  ];
  export type OutputTuple = [
    navigator: string,
    amount: bigint,
    remainingStake: bigint,
    reason: string
  ];
  export interface OutputObject {
    navigator: string;
    amount: bigint;
    remainingStake: bigint;
    reason: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace ProposalDecisionSetEvent {
  export type InputTuple = [
    navigator: AddressLike,
    proposalId: BigNumberish,
    decision: BigNumberish
  ];
  export type OutputTuple = [
    navigator: string,
    proposalId: bigint,
    decision: bigint
  ];
  export interface OutputObject {
    navigator: string;
    proposalId: bigint;
    decision: 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 ReportSubmittedEvent {
  export type InputTuple = [
    navigator: AddressLike,
    roundId: BigNumberish,
    reportURI: string
  ];
  export type OutputTuple = [
    navigator: string,
    roundId: bigint,
    reportURI: string
  ];
  export interface OutputObject {
    navigator: string;
    roundId: bigint;
    reportURI: 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 StakeAddedEvent {
  export type InputTuple = [
    navigator: AddressLike,
    amount: BigNumberish,
    newTotal: BigNumberish
  ];
  export type OutputTuple = [
    navigator: string,
    amount: bigint,
    newTotal: bigint
  ];
  export interface OutputObject {
    navigator: string;
    amount: bigint;
    newTotal: 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 StakeWithdrawnEvent {
  export type InputTuple = [
    navigator: AddressLike,
    amount: BigNumberish,
    remaining: BigNumberish
  ];
  export type OutputTuple = [
    navigator: string,
    amount: bigint,
    remaining: bigint
  ];
  export interface OutputObject {
    navigator: string;
    amount: bigint;
    remaining: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

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

  interface: INavigatorRegistryInterface;

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

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

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

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

  addStake: TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">;

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

  canAcceptDelegations: TypedContractMethod<
    [navigator: AddressLike],
    [boolean],
    "view"
  >;

  claimFee: TypedContractMethod<[roundId: BigNumberish], [void], "nonpayable">;

  deactivateNavigator: TypedContractMethod<
    [navigator: AddressLike, slashPercentage: BigNumberish, slashFees: boolean],
    [void],
    "nonpayable"
  >;

  delegate: TypedContractMethod<
    [navigator: AddressLike, amount: BigNumberish],
    [void],
    "nonpayable"
  >;

  depositNavigatorFee: TypedContractMethod<
    [navigator: AddressLike, roundId: BigNumberish, amount: BigNumberish],
    [void],
    "nonpayable"
  >;

  exitAnnouncedRound: TypedContractMethod<
    [navigator: AddressLike],
    [bigint],
    "view"
  >;

  getAllocationPreferences: TypedContractMethod<
    [navigator: AddressLike, roundId: BigNumberish],
    [[string[], bigint[]] & { appIds: string[]; percentages: bigint[] }],
    "view"
  >;

  getDelegatedAmount: TypedContractMethod<
    [citizen: AddressLike],
    [bigint],
    "view"
  >;

  getDelegatedAmountAtTimepoint: TypedContractMethod<
    [citizen: AddressLike, timepoint: BigNumberish],
    [bigint],
    "view"
  >;

  getDelegationCapacity: TypedContractMethod<
    [navigator: AddressLike],
    [bigint],
    "view"
  >;

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

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

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

  getLastReportRound: TypedContractMethod<
    [navigator: AddressLike],
    [bigint],
    "view"
  >;

  getLastReportURI: TypedContractMethod<
    [navigator: AddressLike],
    [string],
    "view"
  >;

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

  getMetadataURI: TypedContractMethod<
    [navigator: AddressLike],
    [string],
    "view"
  >;

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

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

  getNavigator: TypedContractMethod<[citizen: AddressLike], [string], "view">;

  getNavigatorAtTimepoint: TypedContractMethod<
    [citizen: AddressLike, timepoint: BigNumberish],
    [string],
    "view"
  >;

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

  getPreferencesSetBlock: TypedContractMethod<
    [navigator: AddressLike, roundId: BigNumberish],
    [bigint],
    "view"
  >;

  getProposalDecision: TypedContractMethod<
    [navigator: AddressLike, proposalId: BigNumberish],
    [bigint],
    "view"
  >;

  getRawNavigator: TypedContractMethod<
    [citizen: AddressLike],
    [string],
    "view"
  >;

  getRawNavigatorAtTimepoint: TypedContractMethod<
    [citizen: AddressLike, timepoint: BigNumberish],
    [string],
    "view"
  >;

  getRemainingCapacity: TypedContractMethod<
    [navigator: AddressLike],
    [bigint],
    "view"
  >;

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

  getRoundFee: TypedContractMethod<
    [navigator: AddressLike, roundId: BigNumberish],
    [bigint],
    "view"
  >;

  getStake: TypedContractMethod<[navigator: AddressLike], [bigint], "view">;

  getStakedAmountAtTimepoint: TypedContractMethod<
    [navigator: AddressLike, timepoint: BigNumberish],
    [bigint],
    "view"
  >;

  getStatus: TypedContractMethod<[account: AddressLike], [bigint], "view">;

  getTotalDelegated: TypedContractMethod<
    [navigator: AddressLike],
    [bigint],
    "view"
  >;

  getTotalDelegatedAtTimepoint: TypedContractMethod<
    [navigator: AddressLike, timepoint: BigNumberish],
    [bigint],
    "view"
  >;

  getTotalDelegatedCitizensAtTimepoint: TypedContractMethod<
    [timepoint: BigNumberish],
    [bigint],
    "view"
  >;

  getTotalSlashed: TypedContractMethod<
    [navigator: AddressLike],
    [bigint],
    "view"
  >;

  hasSetDecision: TypedContractMethod<
    [navigator: AddressLike, proposalId: BigNumberish],
    [boolean],
    "view"
  >;

  hasSetPreferences: TypedContractMethod<
    [navigator: AddressLike, roundId: BigNumberish],
    [boolean],
    "view"
  >;

  increaseDelegation: TypedContractMethod<
    [amount: BigNumberish],
    [void],
    "nonpayable"
  >;

  isDeactivated: TypedContractMethod<
    [navigator: AddressLike],
    [boolean],
    "view"
  >;

  isDeactivatedAtTimepoint: TypedContractMethod<
    [navigator: AddressLike, timepoint: BigNumberish],
    [boolean],
    "view"
  >;

  isDelegated: TypedContractMethod<[citizen: AddressLike], [boolean], "view">;

  isDelegatedAtTimepoint: TypedContractMethod<
    [citizen: AddressLike, timepoint: BigNumberish],
    [boolean],
    "view"
  >;

  isExiting: TypedContractMethod<[navigator: AddressLike], [boolean], "view">;

  isNavigator: TypedContractMethod<[account: AddressLike], [boolean], "view">;

  isRoundFeeUnlocked: TypedContractMethod<
    [roundId: BigNumberish],
    [boolean],
    "view"
  >;

  isSlashedForRound: TypedContractMethod<
    [navigator: AddressLike, roundId: BigNumberish],
    [[boolean, bigint] & { slashed: boolean; infractionFlags: bigint }],
    "view"
  >;

  reduceDelegation: TypedContractMethod<
    [reduceBy: BigNumberish],
    [void],
    "nonpayable"
  >;

  reduceStake: TypedContractMethod<
    [amount: BigNumberish],
    [void],
    "nonpayable"
  >;

  register: TypedContractMethod<
    [amount: BigNumberish, metadataURI: string],
    [void],
    "nonpayable"
  >;

  reportRoundInfractions: TypedContractMethod<
    [
      navigator: AddressLike,
      roundId: BigNumberish,
      proposalIds: BigNumberish[]
    ],
    [void],
    "nonpayable"
  >;

  setAllocationPreferences: TypedContractMethod<
    [roundId: BigNumberish, appIds: BytesLike[], percentages: BigNumberish[]],
    [void],
    "nonpayable"
  >;

  setExitNoticePeriod: TypedContractMethod<
    [newPeriod: BigNumberish],
    [void],
    "nonpayable"
  >;

  setFeeLockPeriod: TypedContractMethod<
    [newPeriod: BigNumberish],
    [void],
    "nonpayable"
  >;

  setFeePercentage: TypedContractMethod<
    [newPercentage: BigNumberish],
    [void],
    "nonpayable"
  >;

  setMaxStakePercentage: TypedContractMethod<
    [newPercentage: BigNumberish],
    [void],
    "nonpayable"
  >;

  setMetadataURI: TypedContractMethod<[uri: string], [void], "nonpayable">;

  setMinStake: TypedContractMethod<
    [newMinStake: BigNumberish],
    [void],
    "nonpayable"
  >;

  setMinorSlashPercentage: TypedContractMethod<
    [newPercentage: BigNumberish],
    [void],
    "nonpayable"
  >;

  setPreferenceCutoffPeriod: TypedContractMethod<
    [newPeriod: BigNumberish],
    [void],
    "nonpayable"
  >;

  setProposalDecision: TypedContractMethod<
    [proposalId: BigNumberish, decision: BigNumberish],
    [void],
    "nonpayable"
  >;

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

  setReportInterval: TypedContractMethod<
    [newInterval: BigNumberish],
    [void],
    "nonpayable"
  >;

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

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

  submitReport: TypedContractMethod<[reportURI: string], [void], "nonpayable">;

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

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

  withdrawStake: TypedContractMethod<
    [amount: BigNumberish],
    [void],
    "nonpayable"
  >;

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

  getFunction(
    nameOrSignature: "BASIS_POINTS"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "GOVERNANCE_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "UPGRADER_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "addStake"
  ): TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "announceExit"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "canAcceptDelegations"
  ): TypedContractMethod<[navigator: AddressLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "claimFee"
  ): TypedContractMethod<[roundId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "deactivateNavigator"
  ): TypedContractMethod<
    [navigator: AddressLike, slashPercentage: BigNumberish, slashFees: boolean],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "delegate"
  ): TypedContractMethod<
    [navigator: AddressLike, amount: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "depositNavigatorFee"
  ): TypedContractMethod<
    [navigator: AddressLike, roundId: BigNumberish, amount: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "exitAnnouncedRound"
  ): TypedContractMethod<[navigator: AddressLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "getAllocationPreferences"
  ): TypedContractMethod<
    [navigator: AddressLike, roundId: BigNumberish],
    [[string[], bigint[]] & { appIds: string[]; percentages: bigint[] }],
    "view"
  >;
  getFunction(
    nameOrSignature: "getDelegatedAmount"
  ): TypedContractMethod<[citizen: AddressLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "getDelegatedAmountAtTimepoint"
  ): TypedContractMethod<
    [citizen: AddressLike, timepoint: BigNumberish],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getDelegationCapacity"
  ): TypedContractMethod<[navigator: AddressLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "getExitNoticePeriod"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getFeeLockPeriod"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getFeePercentage"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getLastReportRound"
  ): TypedContractMethod<[navigator: AddressLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "getLastReportURI"
  ): TypedContractMethod<[navigator: AddressLike], [string], "view">;
  getFunction(
    nameOrSignature: "getMaxStake"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getMetadataURI"
  ): TypedContractMethod<[navigator: AddressLike], [string], "view">;
  getFunction(
    nameOrSignature: "getMinStake"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getMinorSlashPercentage"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getNavigator"
  ): TypedContractMethod<[citizen: AddressLike], [string], "view">;
  getFunction(
    nameOrSignature: "getNavigatorAtTimepoint"
  ): TypedContractMethod<
    [citizen: AddressLike, timepoint: BigNumberish],
    [string],
    "view"
  >;
  getFunction(
    nameOrSignature: "getPreferenceCutoffPeriod"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getPreferencesSetBlock"
  ): TypedContractMethod<
    [navigator: AddressLike, roundId: BigNumberish],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getProposalDecision"
  ): TypedContractMethod<
    [navigator: AddressLike, proposalId: BigNumberish],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getRawNavigator"
  ): TypedContractMethod<[citizen: AddressLike], [string], "view">;
  getFunction(
    nameOrSignature: "getRawNavigatorAtTimepoint"
  ): TypedContractMethod<
    [citizen: AddressLike, timepoint: BigNumberish],
    [string],
    "view"
  >;
  getFunction(
    nameOrSignature: "getRemainingCapacity"
  ): TypedContractMethod<[navigator: AddressLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "getReportInterval"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getRoundFee"
  ): TypedContractMethod<
    [navigator: AddressLike, roundId: BigNumberish],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getStake"
  ): TypedContractMethod<[navigator: AddressLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "getStakedAmountAtTimepoint"
  ): TypedContractMethod<
    [navigator: AddressLike, timepoint: BigNumberish],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getStatus"
  ): TypedContractMethod<[account: AddressLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "getTotalDelegated"
  ): TypedContractMethod<[navigator: AddressLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "getTotalDelegatedAtTimepoint"
  ): TypedContractMethod<
    [navigator: AddressLike, timepoint: BigNumberish],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getTotalDelegatedCitizensAtTimepoint"
  ): TypedContractMethod<[timepoint: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getTotalSlashed"
  ): TypedContractMethod<[navigator: AddressLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "hasSetDecision"
  ): TypedContractMethod<
    [navigator: AddressLike, proposalId: BigNumberish],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "hasSetPreferences"
  ): TypedContractMethod<
    [navigator: AddressLike, roundId: BigNumberish],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "increaseDelegation"
  ): TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "isDeactivated"
  ): TypedContractMethod<[navigator: AddressLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "isDeactivatedAtTimepoint"
  ): TypedContractMethod<
    [navigator: AddressLike, timepoint: BigNumberish],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "isDelegated"
  ): TypedContractMethod<[citizen: AddressLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "isDelegatedAtTimepoint"
  ): TypedContractMethod<
    [citizen: AddressLike, timepoint: BigNumberish],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "isExiting"
  ): TypedContractMethod<[navigator: AddressLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "isNavigator"
  ): TypedContractMethod<[account: AddressLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "isRoundFeeUnlocked"
  ): TypedContractMethod<[roundId: BigNumberish], [boolean], "view">;
  getFunction(
    nameOrSignature: "isSlashedForRound"
  ): TypedContractMethod<
    [navigator: AddressLike, roundId: BigNumberish],
    [[boolean, bigint] & { slashed: boolean; infractionFlags: bigint }],
    "view"
  >;
  getFunction(
    nameOrSignature: "reduceDelegation"
  ): TypedContractMethod<[reduceBy: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "reduceStake"
  ): TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "register"
  ): TypedContractMethod<
    [amount: BigNumberish, metadataURI: string],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "reportRoundInfractions"
  ): TypedContractMethod<
    [
      navigator: AddressLike,
      roundId: BigNumberish,
      proposalIds: BigNumberish[]
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setAllocationPreferences"
  ): TypedContractMethod<
    [roundId: BigNumberish, appIds: BytesLike[], percentages: BigNumberish[]],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setExitNoticePeriod"
  ): TypedContractMethod<[newPeriod: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setFeeLockPeriod"
  ): TypedContractMethod<[newPeriod: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setFeePercentage"
  ): TypedContractMethod<[newPercentage: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMaxStakePercentage"
  ): TypedContractMethod<[newPercentage: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMetadataURI"
  ): TypedContractMethod<[uri: string], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMinStake"
  ): TypedContractMethod<[newMinStake: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMinorSlashPercentage"
  ): TypedContractMethod<[newPercentage: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setPreferenceCutoffPeriod"
  ): TypedContractMethod<[newPeriod: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setProposalDecision"
  ): TypedContractMethod<
    [proposalId: BigNumberish, decision: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setRelayerRewardsPool"
  ): TypedContractMethod<[newAddress: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setReportInterval"
  ): TypedContractMethod<[newInterval: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setVoterRewards"
  ): TypedContractMethod<[newAddress: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setXAllocationVoting"
  ): TypedContractMethod<[newAddress: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "submitReport"
  ): TypedContractMethod<[reportURI: string], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "undelegate"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "version"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "withdrawStake"
  ): TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">;

  getEvent(
    key: "AllocationPreferencesSet"
  ): TypedContractEvent<
    AllocationPreferencesSetEvent.InputTuple,
    AllocationPreferencesSetEvent.OutputTuple,
    AllocationPreferencesSetEvent.OutputObject
  >;
  getEvent(
    key: "DelegationCreated"
  ): TypedContractEvent<
    DelegationCreatedEvent.InputTuple,
    DelegationCreatedEvent.OutputTuple,
    DelegationCreatedEvent.OutputObject
  >;
  getEvent(
    key: "DelegationDecreased"
  ): TypedContractEvent<
    DelegationDecreasedEvent.InputTuple,
    DelegationDecreasedEvent.OutputTuple,
    DelegationDecreasedEvent.OutputObject
  >;
  getEvent(
    key: "DelegationIncreased"
  ): TypedContractEvent<
    DelegationIncreasedEvent.InputTuple,
    DelegationIncreasedEvent.OutputTuple,
    DelegationIncreasedEvent.OutputObject
  >;
  getEvent(
    key: "DelegationRemoved"
  ): TypedContractEvent<
    DelegationRemovedEvent.InputTuple,
    DelegationRemovedEvent.OutputTuple,
    DelegationRemovedEvent.OutputObject
  >;
  getEvent(
    key: "ExitAnnounced"
  ): TypedContractEvent<
    ExitAnnouncedEvent.InputTuple,
    ExitAnnouncedEvent.OutputTuple,
    ExitAnnouncedEvent.OutputObject
  >;
  getEvent(
    key: "FeeClaimed"
  ): TypedContractEvent<
    FeeClaimedEvent.InputTuple,
    FeeClaimedEvent.OutputTuple,
    FeeClaimedEvent.OutputObject
  >;
  getEvent(
    key: "FeeDeposited"
  ): TypedContractEvent<
    FeeDepositedEvent.InputTuple,
    FeeDepositedEvent.OutputTuple,
    FeeDepositedEvent.OutputObject
  >;
  getEvent(
    key: "MetadataURIUpdated"
  ): TypedContractEvent<
    MetadataURIUpdatedEvent.InputTuple,
    MetadataURIUpdatedEvent.OutputTuple,
    MetadataURIUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "NavigatorDeactivatedEvent"
  ): TypedContractEvent<
    NavigatorDeactivatedEventEvent.InputTuple,
    NavigatorDeactivatedEventEvent.OutputTuple,
    NavigatorDeactivatedEventEvent.OutputObject
  >;
  getEvent(
    key: "NavigatorMinorSlashed"
  ): TypedContractEvent<
    NavigatorMinorSlashedEvent.InputTuple,
    NavigatorMinorSlashedEvent.OutputTuple,
    NavigatorMinorSlashedEvent.OutputObject
  >;
  getEvent(
    key: "NavigatorRegistered"
  ): TypedContractEvent<
    NavigatorRegisteredEvent.InputTuple,
    NavigatorRegisteredEvent.OutputTuple,
    NavigatorRegisteredEvent.OutputObject
  >;
  getEvent(
    key: "NavigatorSlashed"
  ): TypedContractEvent<
    NavigatorSlashedEvent.InputTuple,
    NavigatorSlashedEvent.OutputTuple,
    NavigatorSlashedEvent.OutputObject
  >;
  getEvent(
    key: "ProposalDecisionSet"
  ): TypedContractEvent<
    ProposalDecisionSetEvent.InputTuple,
    ProposalDecisionSetEvent.OutputTuple,
    ProposalDecisionSetEvent.OutputObject
  >;
  getEvent(
    key: "ReportSubmitted"
  ): TypedContractEvent<
    ReportSubmittedEvent.InputTuple,
    ReportSubmittedEvent.OutputTuple,
    ReportSubmittedEvent.OutputObject
  >;
  getEvent(
    key: "StakeAdded"
  ): TypedContractEvent<
    StakeAddedEvent.InputTuple,
    StakeAddedEvent.OutputTuple,
    StakeAddedEvent.OutputObject
  >;
  getEvent(
    key: "StakeWithdrawn"
  ): TypedContractEvent<
    StakeWithdrawnEvent.InputTuple,
    StakeWithdrawnEvent.OutputTuple,
    StakeWithdrawnEvent.OutputObject
  >;

  filters: {
    "AllocationPreferencesSet(address,uint256,bytes32[])": TypedContractEvent<
      AllocationPreferencesSetEvent.InputTuple,
      AllocationPreferencesSetEvent.OutputTuple,
      AllocationPreferencesSetEvent.OutputObject
    >;
    AllocationPreferencesSet: TypedContractEvent<
      AllocationPreferencesSetEvent.InputTuple,
      AllocationPreferencesSetEvent.OutputTuple,
      AllocationPreferencesSetEvent.OutputObject
    >;

    "DelegationCreated(address,address,uint256)": TypedContractEvent<
      DelegationCreatedEvent.InputTuple,
      DelegationCreatedEvent.OutputTuple,
      DelegationCreatedEvent.OutputObject
    >;
    DelegationCreated: TypedContractEvent<
      DelegationCreatedEvent.InputTuple,
      DelegationCreatedEvent.OutputTuple,
      DelegationCreatedEvent.OutputObject
    >;

    "DelegationDecreased(address,address,uint256,uint256)": TypedContractEvent<
      DelegationDecreasedEvent.InputTuple,
      DelegationDecreasedEvent.OutputTuple,
      DelegationDecreasedEvent.OutputObject
    >;
    DelegationDecreased: TypedContractEvent<
      DelegationDecreasedEvent.InputTuple,
      DelegationDecreasedEvent.OutputTuple,
      DelegationDecreasedEvent.OutputObject
    >;

    "DelegationIncreased(address,address,uint256,uint256)": TypedContractEvent<
      DelegationIncreasedEvent.InputTuple,
      DelegationIncreasedEvent.OutputTuple,
      DelegationIncreasedEvent.OutputObject
    >;
    DelegationIncreased: TypedContractEvent<
      DelegationIncreasedEvent.InputTuple,
      DelegationIncreasedEvent.OutputTuple,
      DelegationIncreasedEvent.OutputObject
    >;

    "DelegationRemoved(address,address,uint256)": TypedContractEvent<
      DelegationRemovedEvent.InputTuple,
      DelegationRemovedEvent.OutputTuple,
      DelegationRemovedEvent.OutputObject
    >;
    DelegationRemoved: TypedContractEvent<
      DelegationRemovedEvent.InputTuple,
      DelegationRemovedEvent.OutputTuple,
      DelegationRemovedEvent.OutputObject
    >;

    "ExitAnnounced(address,uint256,uint256)": TypedContractEvent<
      ExitAnnouncedEvent.InputTuple,
      ExitAnnouncedEvent.OutputTuple,
      ExitAnnouncedEvent.OutputObject
    >;
    ExitAnnounced: TypedContractEvent<
      ExitAnnouncedEvent.InputTuple,
      ExitAnnouncedEvent.OutputTuple,
      ExitAnnouncedEvent.OutputObject
    >;

    "FeeClaimed(address,uint256,uint256)": TypedContractEvent<
      FeeClaimedEvent.InputTuple,
      FeeClaimedEvent.OutputTuple,
      FeeClaimedEvent.OutputObject
    >;
    FeeClaimed: TypedContractEvent<
      FeeClaimedEvent.InputTuple,
      FeeClaimedEvent.OutputTuple,
      FeeClaimedEvent.OutputObject
    >;

    "FeeDeposited(address,uint256,uint256)": TypedContractEvent<
      FeeDepositedEvent.InputTuple,
      FeeDepositedEvent.OutputTuple,
      FeeDepositedEvent.OutputObject
    >;
    FeeDeposited: TypedContractEvent<
      FeeDepositedEvent.InputTuple,
      FeeDepositedEvent.OutputTuple,
      FeeDepositedEvent.OutputObject
    >;

    "MetadataURIUpdated(address,string)": TypedContractEvent<
      MetadataURIUpdatedEvent.InputTuple,
      MetadataURIUpdatedEvent.OutputTuple,
      MetadataURIUpdatedEvent.OutputObject
    >;
    MetadataURIUpdated: TypedContractEvent<
      MetadataURIUpdatedEvent.InputTuple,
      MetadataURIUpdatedEvent.OutputTuple,
      MetadataURIUpdatedEvent.OutputObject
    >;

    "NavigatorDeactivatedEvent(address,uint256)": TypedContractEvent<
      NavigatorDeactivatedEventEvent.InputTuple,
      NavigatorDeactivatedEventEvent.OutputTuple,
      NavigatorDeactivatedEventEvent.OutputObject
    >;
    NavigatorDeactivatedEvent: TypedContractEvent<
      NavigatorDeactivatedEventEvent.InputTuple,
      NavigatorDeactivatedEventEvent.OutputTuple,
      NavigatorDeactivatedEventEvent.OutputObject
    >;

    "NavigatorMinorSlashed(address,uint256,uint256,uint256,uint256)": TypedContractEvent<
      NavigatorMinorSlashedEvent.InputTuple,
      NavigatorMinorSlashedEvent.OutputTuple,
      NavigatorMinorSlashedEvent.OutputObject
    >;
    NavigatorMinorSlashed: TypedContractEvent<
      NavigatorMinorSlashedEvent.InputTuple,
      NavigatorMinorSlashedEvent.OutputTuple,
      NavigatorMinorSlashedEvent.OutputObject
    >;

    "NavigatorRegistered(address,uint256,string)": TypedContractEvent<
      NavigatorRegisteredEvent.InputTuple,
      NavigatorRegisteredEvent.OutputTuple,
      NavigatorRegisteredEvent.OutputObject
    >;
    NavigatorRegistered: TypedContractEvent<
      NavigatorRegisteredEvent.InputTuple,
      NavigatorRegisteredEvent.OutputTuple,
      NavigatorRegisteredEvent.OutputObject
    >;

    "NavigatorSlashed(address,uint256,uint256,string)": TypedContractEvent<
      NavigatorSlashedEvent.InputTuple,
      NavigatorSlashedEvent.OutputTuple,
      NavigatorSlashedEvent.OutputObject
    >;
    NavigatorSlashed: TypedContractEvent<
      NavigatorSlashedEvent.InputTuple,
      NavigatorSlashedEvent.OutputTuple,
      NavigatorSlashedEvent.OutputObject
    >;

    "ProposalDecisionSet(address,uint256,uint8)": TypedContractEvent<
      ProposalDecisionSetEvent.InputTuple,
      ProposalDecisionSetEvent.OutputTuple,
      ProposalDecisionSetEvent.OutputObject
    >;
    ProposalDecisionSet: TypedContractEvent<
      ProposalDecisionSetEvent.InputTuple,
      ProposalDecisionSetEvent.OutputTuple,
      ProposalDecisionSetEvent.OutputObject
    >;

    "ReportSubmitted(address,uint256,string)": TypedContractEvent<
      ReportSubmittedEvent.InputTuple,
      ReportSubmittedEvent.OutputTuple,
      ReportSubmittedEvent.OutputObject
    >;
    ReportSubmitted: TypedContractEvent<
      ReportSubmittedEvent.InputTuple,
      ReportSubmittedEvent.OutputTuple,
      ReportSubmittedEvent.OutputObject
    >;

    "StakeAdded(address,uint256,uint256)": TypedContractEvent<
      StakeAddedEvent.InputTuple,
      StakeAddedEvent.OutputTuple,
      StakeAddedEvent.OutputObject
    >;
    StakeAdded: TypedContractEvent<
      StakeAddedEvent.InputTuple,
      StakeAddedEvent.OutputTuple,
      StakeAddedEvent.OutputObject
    >;

    "StakeWithdrawn(address,uint256,uint256)": TypedContractEvent<
      StakeWithdrawnEvent.InputTuple,
      StakeWithdrawnEvent.OutputTuple,
      StakeWithdrawnEvent.OutputObject
    >;
    StakeWithdrawn: TypedContractEvent<
      StakeWithdrawnEvent.InputTuple,
      StakeWithdrawnEvent.OutputTuple,
      StakeWithdrawnEvent.OutputObject
    >;
  };
}
