/* 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 Emissions {
  export type InitializationDataStruct = {
    minter: AddressLike;
    admin: AddressLike;
    upgrader: AddressLike;
    contractsAddressManager: AddressLike;
    decaySettingsManager: AddressLike;
    b3trAddress: AddressLike;
    destinations: [AddressLike, AddressLike, AddressLike, AddressLike];
    migrationAmount: BigNumberish;
    initialXAppAllocation: BigNumberish;
    cycleDuration: BigNumberish;
    decaySettings: [BigNumberish, BigNumberish, BigNumberish, BigNumberish];
    treasuryPercentage: BigNumberish;
    maxVote2EarnDecay: BigNumberish;
  };

  export type InitializationDataStructOutput = [
    minter: string,
    admin: string,
    upgrader: string,
    contractsAddressManager: string,
    decaySettingsManager: string,
    b3trAddress: string,
    destinations: [string, string, string, string],
    migrationAmount: bigint,
    initialXAppAllocation: bigint,
    cycleDuration: bigint,
    decaySettings: [bigint, bigint, bigint, bigint],
    treasuryPercentage: bigint,
    maxVote2EarnDecay: bigint
  ] & {
    minter: string;
    admin: string;
    upgrader: string;
    contractsAddressManager: string;
    decaySettingsManager: string;
    b3trAddress: string;
    destinations: [string, string, string, string];
    migrationAmount: bigint;
    initialXAppAllocation: bigint;
    cycleDuration: bigint;
    decaySettings: [bigint, bigint, bigint, bigint];
    treasuryPercentage: bigint;
    maxVote2EarnDecay: bigint;
  };
}

export interface EmissionsInterface extends Interface {
  getFunction(
    nameOrSignature:
      | "CONTRACTS_ADDRESS_MANAGER_ROLE"
      | "DECAY_SETTINGS_MANAGER_ROLE"
      | "DEFAULT_ADMIN_ROLE"
      | "MINTER_ROLE"
      | "SCALING_FACTOR"
      | "UPGRADER_ROLE"
      | "UPGRADE_INTERFACE_VERSION"
      | "b3tr"
      | "bootstrap"
      | "cycleDuration"
      | "distribute"
      | "emissions"
      | "getCurrentCycle"
      | "getGMAmount"
      | "getNextCycleBlock"
      | "getRemainingEmissions"
      | "getRoleAdmin"
      | "getTreasuryAmount"
      | "getVote2EarnAmount"
      | "getXAllocationAmount"
      | "gmPercentage"
      | "grantRole"
      | "hasRole"
      | "initialXAppAllocation"
      | "initialize"
      | "initializeV2"
      | "initializeV3"
      | "isCycleDistributed"
      | "isCycleEnded"
      | "isEmissionsNotAligned"
      | "isNextCycleDistributable"
      | "lastEmissionBlock"
      | "maxVote2EarnDecay"
      | "nextCycle"
      | "proxiableUUID"
      | "renounceRole"
      | "revokeRole"
      | "setCycleDuration"
      | "setGmPercentage"
      | "setMaxVote2EarnDecay"
      | "setTreasuryAddress"
      | "setTreasuryPercentage"
      | "setVote2EarnAddress"
      | "setVote2EarnDecay"
      | "setVote2EarnDecayPeriod"
      | "setXAllocationsDecay"
      | "setXAllocationsDecayPeriod"
      | "setXAllocationsGovernorAddress"
      | "setXallocationsAddress"
      | "start"
      | "supportsInterface"
      | "totalEmissions"
      | "treasury"
      | "treasuryPercentage"
      | "upgradeToAndCall"
      | "version"
      | "vote2Earn"
      | "vote2EarnDecay"
      | "vote2EarnDecayPeriod"
      | "xAllocations"
      | "xAllocationsDecay"
      | "xAllocationsDecayPeriod"
      | "xAllocationsGovernor"
  ): FunctionFragment;

  getEvent(
    nameOrSignatureOrTopic:
      | "EmissionCycleDurationUpdated"
      | "EmissionDistributed"
      | "EmissionDistributedV2"
      | "GMPercentageUpdated"
      | "Initialized"
      | "MaxVote2EarnDecayUpdated"
      | "RoleAdminChanged"
      | "RoleGranted"
      | "RoleRevoked"
      | "TreasuryAddressUpdated"
      | "TreasuryPercentageUpdated"
      | "Upgraded"
      | "Vote2EarnAddressUpdated"
      | "Vote2EarnDecayPeriodUpdated"
      | "Vote2EarnDecayUpdated"
      | "XAllocationsAddressUpdated"
      | "XAllocationsDecayPeriodUpdated"
      | "XAllocationsDecayUpdated"
      | "XAllocationsGovernorAddressUpdated"
  ): EventFragment;

  encodeFunctionData(
    functionFragment: "CONTRACTS_ADDRESS_MANAGER_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "DECAY_SETTINGS_MANAGER_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "DEFAULT_ADMIN_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "MINTER_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "SCALING_FACTOR",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "UPGRADER_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "UPGRADE_INTERFACE_VERSION",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "b3tr", values?: undefined): string;
  encodeFunctionData(functionFragment: "bootstrap", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "cycleDuration",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "distribute",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "emissions",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getCurrentCycle",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getGMAmount",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getNextCycleBlock",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getRemainingEmissions",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getRoleAdmin",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getTreasuryAmount",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getVote2EarnAmount",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getXAllocationAmount",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "gmPercentage",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "grantRole",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "hasRole",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "initialXAppAllocation",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "initialize",
    values: [Emissions.InitializationDataStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "initializeV2",
    values: [boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "initializeV3",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isCycleDistributed",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isCycleEnded",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isEmissionsNotAligned",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "isNextCycleDistributable",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "lastEmissionBlock",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "maxVote2EarnDecay",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "nextCycle", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "proxiableUUID",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "renounceRole",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "revokeRole",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setCycleDuration",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setGmPercentage",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setMaxVote2EarnDecay",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setTreasuryAddress",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setTreasuryPercentage",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setVote2EarnAddress",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setVote2EarnDecay",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setVote2EarnDecayPeriod",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setXAllocationsDecay",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setXAllocationsDecayPeriod",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setXAllocationsGovernorAddress",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setXallocationsAddress",
    values: [AddressLike]
  ): string;
  encodeFunctionData(functionFragment: "start", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "supportsInterface",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "totalEmissions",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "treasury", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "treasuryPercentage",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "upgradeToAndCall",
    values: [AddressLike, BytesLike]
  ): string;
  encodeFunctionData(functionFragment: "version", values?: undefined): string;
  encodeFunctionData(functionFragment: "vote2Earn", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "vote2EarnDecay",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "vote2EarnDecayPeriod",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "xAllocations",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "xAllocationsDecay",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "xAllocationsDecayPeriod",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "xAllocationsGovernor",
    values?: undefined
  ): string;

  decodeFunctionResult(
    functionFragment: "CONTRACTS_ADDRESS_MANAGER_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "DECAY_SETTINGS_MANAGER_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "DEFAULT_ADMIN_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "MINTER_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "SCALING_FACTOR",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "UPGRADER_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "UPGRADE_INTERFACE_VERSION",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "b3tr", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "bootstrap", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "cycleDuration",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "distribute", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "emissions", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getCurrentCycle",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getGMAmount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getNextCycleBlock",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getRemainingEmissions",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getRoleAdmin",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTreasuryAmount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getVote2EarnAmount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getXAllocationAmount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "gmPercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "initialXAppAllocation",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "initializeV2",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "initializeV3",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isCycleDistributed",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isCycleEnded",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isEmissionsNotAligned",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isNextCycleDistributable",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "lastEmissionBlock",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "maxVote2EarnDecay",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "nextCycle", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "proxiableUUID",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "renounceRole",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "setCycleDuration",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setGmPercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMaxVote2EarnDecay",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTreasuryAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTreasuryPercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setVote2EarnAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setVote2EarnDecay",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setVote2EarnDecayPeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setXAllocationsDecay",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setXAllocationsDecayPeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setXAllocationsGovernorAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setXallocationsAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "start", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "supportsInterface",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "totalEmissions",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "treasury", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "treasuryPercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "upgradeToAndCall",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "version", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "vote2Earn", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "vote2EarnDecay",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "vote2EarnDecayPeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "xAllocations",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "xAllocationsDecay",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "xAllocationsDecayPeriod",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "xAllocationsGovernor",
    data: BytesLike
  ): Result;
}

export namespace EmissionCycleDurationUpdatedEvent {
  export type InputTuple = [
    newDuration: BigNumberish,
    oldDuration: BigNumberish
  ];
  export type OutputTuple = [newDuration: bigint, oldDuration: bigint];
  export interface OutputObject {
    newDuration: bigint;
    oldDuration: 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 EmissionDistributedEvent {
  export type InputTuple = [
    cycle: BigNumberish,
    xAllocations: BigNumberish,
    vote2Earn: BigNumberish,
    treasury: BigNumberish
  ];
  export type OutputTuple = [
    cycle: bigint,
    xAllocations: bigint,
    vote2Earn: bigint,
    treasury: bigint
  ];
  export interface OutputObject {
    cycle: bigint;
    xAllocations: bigint;
    vote2Earn: bigint;
    treasury: 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 EmissionDistributedV2Event {
  export type InputTuple = [
    cycle: BigNumberish,
    xAllocations: BigNumberish,
    vote2Earn: BigNumberish,
    treasury: BigNumberish,
    gm: BigNumberish
  ];
  export type OutputTuple = [
    cycle: bigint,
    xAllocations: bigint,
    vote2Earn: bigint,
    treasury: bigint,
    gm: bigint
  ];
  export interface OutputObject {
    cycle: bigint;
    xAllocations: bigint;
    vote2Earn: bigint;
    treasury: bigint;
    gm: 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 GMPercentageUpdatedEvent {
  export type InputTuple = [
    newPercentage: BigNumberish,
    oldPercentage: BigNumberish
  ];
  export type OutputTuple = [newPercentage: bigint, oldPercentage: bigint];
  export interface OutputObject {
    newPercentage: bigint;
    oldPercentage: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace InitializedEvent {
  export type InputTuple = [version: BigNumberish];
  export type OutputTuple = [version: bigint];
  export interface OutputObject {
    version: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace MaxVote2EarnDecayUpdatedEvent {
  export type InputTuple = [newDecay: BigNumberish, oldDecay: BigNumberish];
  export type OutputTuple = [newDecay: bigint, oldDecay: bigint];
  export interface OutputObject {
    newDecay: bigint;
    oldDecay: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace RoleAdminChangedEvent {
  export type InputTuple = [
    role: BytesLike,
    previousAdminRole: BytesLike,
    newAdminRole: BytesLike
  ];
  export type OutputTuple = [
    role: string,
    previousAdminRole: string,
    newAdminRole: string
  ];
  export interface OutputObject {
    role: string;
    previousAdminRole: string;
    newAdminRole: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace RoleGrantedEvent {
  export type InputTuple = [
    role: BytesLike,
    account: AddressLike,
    sender: AddressLike
  ];
  export type OutputTuple = [role: string, account: string, sender: string];
  export interface OutputObject {
    role: string;
    account: string;
    sender: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace RoleRevokedEvent {
  export type InputTuple = [
    role: BytesLike,
    account: AddressLike,
    sender: AddressLike
  ];
  export type OutputTuple = [role: string, account: string, sender: string];
  export interface OutputObject {
    role: string;
    account: string;
    sender: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace TreasuryAddressUpdatedEvent {
  export type InputTuple = [newAddress: AddressLike, oldAddress: AddressLike];
  export type OutputTuple = [newAddress: string, oldAddress: string];
  export interface OutputObject {
    newAddress: string;
    oldAddress: 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 TreasuryPercentageUpdatedEvent {
  export type InputTuple = [
    newPercentage: BigNumberish,
    oldPercentage: BigNumberish
  ];
  export type OutputTuple = [newPercentage: bigint, oldPercentage: bigint];
  export interface OutputObject {
    newPercentage: bigint;
    oldPercentage: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace UpgradedEvent {
  export type InputTuple = [implementation: AddressLike];
  export type OutputTuple = [implementation: string];
  export interface OutputObject {
    implementation: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace Vote2EarnAddressUpdatedEvent {
  export type InputTuple = [newAddress: AddressLike, oldAddress: AddressLike];
  export type OutputTuple = [newAddress: string, oldAddress: string];
  export interface OutputObject {
    newAddress: string;
    oldAddress: 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 Vote2EarnDecayPeriodUpdatedEvent {
  export type InputTuple = [newPeriod: BigNumberish, oldPeriod: BigNumberish];
  export type OutputTuple = [newPeriod: bigint, oldPeriod: bigint];
  export interface OutputObject {
    newPeriod: bigint;
    oldPeriod: 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 Vote2EarnDecayUpdatedEvent {
  export type InputTuple = [newDecay: BigNumberish, oldDecay: BigNumberish];
  export type OutputTuple = [newDecay: bigint, oldDecay: bigint];
  export interface OutputObject {
    newDecay: bigint;
    oldDecay: 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 XAllocationsAddressUpdatedEvent {
  export type InputTuple = [newAddress: AddressLike, oldAddress: AddressLike];
  export type OutputTuple = [newAddress: string, oldAddress: string];
  export interface OutputObject {
    newAddress: string;
    oldAddress: 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 XAllocationsDecayPeriodUpdatedEvent {
  export type InputTuple = [newPeriod: BigNumberish, oldPeriod: BigNumberish];
  export type OutputTuple = [newPeriod: bigint, oldPeriod: bigint];
  export interface OutputObject {
    newPeriod: bigint;
    oldPeriod: 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 XAllocationsDecayUpdatedEvent {
  export type InputTuple = [newDecay: BigNumberish, oldDecay: BigNumberish];
  export type OutputTuple = [newDecay: bigint, oldDecay: bigint];
  export interface OutputObject {
    newDecay: bigint;
    oldDecay: 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 XAllocationsGovernorAddressUpdatedEvent {
  export type InputTuple = [newAddress: AddressLike, oldAddress: AddressLike];
  export type OutputTuple = [newAddress: string, oldAddress: string];
  export interface OutputObject {
    newAddress: string;
    oldAddress: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

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

  interface: EmissionsInterface;

  queryFilter<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEventLog<TCEvent>>>;
  queryFilter<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEventLog<TCEvent>>>;

  on<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    listener: TypedListener<TCEvent>
  ): Promise<this>;
  on<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    listener: TypedListener<TCEvent>
  ): Promise<this>;

  once<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    listener: TypedListener<TCEvent>
  ): Promise<this>;
  once<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    listener: TypedListener<TCEvent>
  ): Promise<this>;

  listeners<TCEvent extends TypedContractEvent>(
    event: TCEvent
  ): Promise<Array<TypedListener<TCEvent>>>;
  listeners(eventName?: string): Promise<Array<Listener>>;
  removeAllListeners<TCEvent extends TypedContractEvent>(
    event?: TCEvent
  ): Promise<this>;

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

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

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

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

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

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

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

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

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

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

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

  emissions: TypedContractMethod<
    [cycle: BigNumberish],
    [
      [bigint, bigint, bigint, bigint] & {
        xAllocationsAmount: bigint;
        vote2EarnAmount: bigint;
        treasuryAmount: bigint;
        gmAmount: bigint;
      }
    ],
    "view"
  >;

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

  getGMAmount: TypedContractMethod<[cycle: BigNumberish], [bigint], "view">;

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

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

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

  getTreasuryAmount: TypedContractMethod<
    [cycle: BigNumberish],
    [bigint],
    "view"
  >;

  getVote2EarnAmount: TypedContractMethod<
    [cycle: BigNumberish],
    [bigint],
    "view"
  >;

  getXAllocationAmount: TypedContractMethod<
    [cycle: BigNumberish],
    [bigint],
    "view"
  >;

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

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

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

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

  initialize: TypedContractMethod<
    [data: Emissions.InitializationDataStruct],
    [void],
    "nonpayable"
  >;

  initializeV2: TypedContractMethod<
    [_isEmissionsNotAligned: boolean],
    [void],
    "nonpayable"
  >;

  initializeV3: TypedContractMethod<
    [_gmPercentage: BigNumberish],
    [void],
    "nonpayable"
  >;

  isCycleDistributed: TypedContractMethod<
    [cycle: BigNumberish],
    [boolean],
    "view"
  >;

  isCycleEnded: TypedContractMethod<[cycle: BigNumberish], [boolean], "view">;

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

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

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

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

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

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

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

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

  setCycleDuration: TypedContractMethod<
    [_cycleDuration: BigNumberish],
    [void],
    "nonpayable"
  >;

  setGmPercentage: TypedContractMethod<
    [_percentage: BigNumberish],
    [void],
    "nonpayable"
  >;

  setMaxVote2EarnDecay: TypedContractMethod<
    [_maxVote2EarnDecay: BigNumberish],
    [void],
    "nonpayable"
  >;

  setTreasuryAddress: TypedContractMethod<
    [treasuryAddress: AddressLike],
    [void],
    "nonpayable"
  >;

  setTreasuryPercentage: TypedContractMethod<
    [_percentage: BigNumberish],
    [void],
    "nonpayable"
  >;

  setVote2EarnAddress: TypedContractMethod<
    [vote2EarnAddress: AddressLike],
    [void],
    "nonpayable"
  >;

  setVote2EarnDecay: TypedContractMethod<
    [_decay: BigNumberish],
    [void],
    "nonpayable"
  >;

  setVote2EarnDecayPeriod: TypedContractMethod<
    [_period: BigNumberish],
    [void],
    "nonpayable"
  >;

  setXAllocationsDecay: TypedContractMethod<
    [_decay: BigNumberish],
    [void],
    "nonpayable"
  >;

  setXAllocationsDecayPeriod: TypedContractMethod<
    [_period: BigNumberish],
    [void],
    "nonpayable"
  >;

  setXAllocationsGovernorAddress: TypedContractMethod<
    [_xAllocationsGovernor: AddressLike],
    [void],
    "nonpayable"
  >;

  setXallocationsAddress: TypedContractMethod<
    [xAllocationAddress: AddressLike],
    [void],
    "nonpayable"
  >;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  getFunction(
    nameOrSignature: "CONTRACTS_ADDRESS_MANAGER_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "DECAY_SETTINGS_MANAGER_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "DEFAULT_ADMIN_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "MINTER_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "SCALING_FACTOR"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "UPGRADER_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "UPGRADE_INTERFACE_VERSION"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "b3tr"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "bootstrap"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "cycleDuration"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "distribute"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "emissions"
  ): TypedContractMethod<
    [cycle: BigNumberish],
    [
      [bigint, bigint, bigint, bigint] & {
        xAllocationsAmount: bigint;
        vote2EarnAmount: bigint;
        treasuryAmount: bigint;
        gmAmount: bigint;
      }
    ],
    "view"
  >;
  getFunction(
    nameOrSignature: "getCurrentCycle"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getGMAmount"
  ): TypedContractMethod<[cycle: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getNextCycleBlock"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getRemainingEmissions"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getRoleAdmin"
  ): TypedContractMethod<[role: BytesLike], [string], "view">;
  getFunction(
    nameOrSignature: "getTreasuryAmount"
  ): TypedContractMethod<[cycle: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getVote2EarnAmount"
  ): TypedContractMethod<[cycle: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getXAllocationAmount"
  ): TypedContractMethod<[cycle: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "gmPercentage"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "grantRole"
  ): TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "hasRole"
  ): TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "initialXAppAllocation"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "initialize"
  ): TypedContractMethod<
    [data: Emissions.InitializationDataStruct],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "initializeV2"
  ): TypedContractMethod<
    [_isEmissionsNotAligned: boolean],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "initializeV3"
  ): TypedContractMethod<[_gmPercentage: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "isCycleDistributed"
  ): TypedContractMethod<[cycle: BigNumberish], [boolean], "view">;
  getFunction(
    nameOrSignature: "isCycleEnded"
  ): TypedContractMethod<[cycle: BigNumberish], [boolean], "view">;
  getFunction(
    nameOrSignature: "isEmissionsNotAligned"
  ): TypedContractMethod<[], [boolean], "view">;
  getFunction(
    nameOrSignature: "isNextCycleDistributable"
  ): TypedContractMethod<[], [boolean], "view">;
  getFunction(
    nameOrSignature: "lastEmissionBlock"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "maxVote2EarnDecay"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "nextCycle"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "proxiableUUID"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "renounceRole"
  ): TypedContractMethod<
    [role: BytesLike, callerConfirmation: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "revokeRole"
  ): TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setCycleDuration"
  ): TypedContractMethod<[_cycleDuration: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setGmPercentage"
  ): TypedContractMethod<[_percentage: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMaxVote2EarnDecay"
  ): TypedContractMethod<
    [_maxVote2EarnDecay: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setTreasuryAddress"
  ): TypedContractMethod<[treasuryAddress: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setTreasuryPercentage"
  ): TypedContractMethod<[_percentage: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setVote2EarnAddress"
  ): TypedContractMethod<[vote2EarnAddress: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setVote2EarnDecay"
  ): TypedContractMethod<[_decay: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setVote2EarnDecayPeriod"
  ): TypedContractMethod<[_period: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setXAllocationsDecay"
  ): TypedContractMethod<[_decay: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setXAllocationsDecayPeriod"
  ): TypedContractMethod<[_period: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setXAllocationsGovernorAddress"
  ): TypedContractMethod<
    [_xAllocationsGovernor: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setXallocationsAddress"
  ): TypedContractMethod<
    [xAllocationAddress: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "start"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "supportsInterface"
  ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "totalEmissions"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "treasury"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "treasuryPercentage"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "upgradeToAndCall"
  ): TypedContractMethod<
    [newImplementation: AddressLike, data: BytesLike],
    [void],
    "payable"
  >;
  getFunction(
    nameOrSignature: "version"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "vote2Earn"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "vote2EarnDecay"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "vote2EarnDecayPeriod"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "xAllocations"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "xAllocationsDecay"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "xAllocationsDecayPeriod"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "xAllocationsGovernor"
  ): TypedContractMethod<[], [string], "view">;

  getEvent(
    key: "EmissionCycleDurationUpdated"
  ): TypedContractEvent<
    EmissionCycleDurationUpdatedEvent.InputTuple,
    EmissionCycleDurationUpdatedEvent.OutputTuple,
    EmissionCycleDurationUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "EmissionDistributed"
  ): TypedContractEvent<
    EmissionDistributedEvent.InputTuple,
    EmissionDistributedEvent.OutputTuple,
    EmissionDistributedEvent.OutputObject
  >;
  getEvent(
    key: "EmissionDistributedV2"
  ): TypedContractEvent<
    EmissionDistributedV2Event.InputTuple,
    EmissionDistributedV2Event.OutputTuple,
    EmissionDistributedV2Event.OutputObject
  >;
  getEvent(
    key: "GMPercentageUpdated"
  ): TypedContractEvent<
    GMPercentageUpdatedEvent.InputTuple,
    GMPercentageUpdatedEvent.OutputTuple,
    GMPercentageUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "Initialized"
  ): TypedContractEvent<
    InitializedEvent.InputTuple,
    InitializedEvent.OutputTuple,
    InitializedEvent.OutputObject
  >;
  getEvent(
    key: "MaxVote2EarnDecayUpdated"
  ): TypedContractEvent<
    MaxVote2EarnDecayUpdatedEvent.InputTuple,
    MaxVote2EarnDecayUpdatedEvent.OutputTuple,
    MaxVote2EarnDecayUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "RoleAdminChanged"
  ): TypedContractEvent<
    RoleAdminChangedEvent.InputTuple,
    RoleAdminChangedEvent.OutputTuple,
    RoleAdminChangedEvent.OutputObject
  >;
  getEvent(
    key: "RoleGranted"
  ): TypedContractEvent<
    RoleGrantedEvent.InputTuple,
    RoleGrantedEvent.OutputTuple,
    RoleGrantedEvent.OutputObject
  >;
  getEvent(
    key: "RoleRevoked"
  ): TypedContractEvent<
    RoleRevokedEvent.InputTuple,
    RoleRevokedEvent.OutputTuple,
    RoleRevokedEvent.OutputObject
  >;
  getEvent(
    key: "TreasuryAddressUpdated"
  ): TypedContractEvent<
    TreasuryAddressUpdatedEvent.InputTuple,
    TreasuryAddressUpdatedEvent.OutputTuple,
    TreasuryAddressUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "TreasuryPercentageUpdated"
  ): TypedContractEvent<
    TreasuryPercentageUpdatedEvent.InputTuple,
    TreasuryPercentageUpdatedEvent.OutputTuple,
    TreasuryPercentageUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "Upgraded"
  ): TypedContractEvent<
    UpgradedEvent.InputTuple,
    UpgradedEvent.OutputTuple,
    UpgradedEvent.OutputObject
  >;
  getEvent(
    key: "Vote2EarnAddressUpdated"
  ): TypedContractEvent<
    Vote2EarnAddressUpdatedEvent.InputTuple,
    Vote2EarnAddressUpdatedEvent.OutputTuple,
    Vote2EarnAddressUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "Vote2EarnDecayPeriodUpdated"
  ): TypedContractEvent<
    Vote2EarnDecayPeriodUpdatedEvent.InputTuple,
    Vote2EarnDecayPeriodUpdatedEvent.OutputTuple,
    Vote2EarnDecayPeriodUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "Vote2EarnDecayUpdated"
  ): TypedContractEvent<
    Vote2EarnDecayUpdatedEvent.InputTuple,
    Vote2EarnDecayUpdatedEvent.OutputTuple,
    Vote2EarnDecayUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "XAllocationsAddressUpdated"
  ): TypedContractEvent<
    XAllocationsAddressUpdatedEvent.InputTuple,
    XAllocationsAddressUpdatedEvent.OutputTuple,
    XAllocationsAddressUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "XAllocationsDecayPeriodUpdated"
  ): TypedContractEvent<
    XAllocationsDecayPeriodUpdatedEvent.InputTuple,
    XAllocationsDecayPeriodUpdatedEvent.OutputTuple,
    XAllocationsDecayPeriodUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "XAllocationsDecayUpdated"
  ): TypedContractEvent<
    XAllocationsDecayUpdatedEvent.InputTuple,
    XAllocationsDecayUpdatedEvent.OutputTuple,
    XAllocationsDecayUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "XAllocationsGovernorAddressUpdated"
  ): TypedContractEvent<
    XAllocationsGovernorAddressUpdatedEvent.InputTuple,
    XAllocationsGovernorAddressUpdatedEvent.OutputTuple,
    XAllocationsGovernorAddressUpdatedEvent.OutputObject
  >;

  filters: {
    "EmissionCycleDurationUpdated(uint256,uint256)": TypedContractEvent<
      EmissionCycleDurationUpdatedEvent.InputTuple,
      EmissionCycleDurationUpdatedEvent.OutputTuple,
      EmissionCycleDurationUpdatedEvent.OutputObject
    >;
    EmissionCycleDurationUpdated: TypedContractEvent<
      EmissionCycleDurationUpdatedEvent.InputTuple,
      EmissionCycleDurationUpdatedEvent.OutputTuple,
      EmissionCycleDurationUpdatedEvent.OutputObject
    >;

    "EmissionDistributed(uint256,uint256,uint256,uint256)": TypedContractEvent<
      EmissionDistributedEvent.InputTuple,
      EmissionDistributedEvent.OutputTuple,
      EmissionDistributedEvent.OutputObject
    >;
    EmissionDistributed: TypedContractEvent<
      EmissionDistributedEvent.InputTuple,
      EmissionDistributedEvent.OutputTuple,
      EmissionDistributedEvent.OutputObject
    >;

    "EmissionDistributedV2(uint256,uint256,uint256,uint256,uint256)": TypedContractEvent<
      EmissionDistributedV2Event.InputTuple,
      EmissionDistributedV2Event.OutputTuple,
      EmissionDistributedV2Event.OutputObject
    >;
    EmissionDistributedV2: TypedContractEvent<
      EmissionDistributedV2Event.InputTuple,
      EmissionDistributedV2Event.OutputTuple,
      EmissionDistributedV2Event.OutputObject
    >;

    "GMPercentageUpdated(uint256,uint256)": TypedContractEvent<
      GMPercentageUpdatedEvent.InputTuple,
      GMPercentageUpdatedEvent.OutputTuple,
      GMPercentageUpdatedEvent.OutputObject
    >;
    GMPercentageUpdated: TypedContractEvent<
      GMPercentageUpdatedEvent.InputTuple,
      GMPercentageUpdatedEvent.OutputTuple,
      GMPercentageUpdatedEvent.OutputObject
    >;

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

    "MaxVote2EarnDecayUpdated(uint256,uint256)": TypedContractEvent<
      MaxVote2EarnDecayUpdatedEvent.InputTuple,
      MaxVote2EarnDecayUpdatedEvent.OutputTuple,
      MaxVote2EarnDecayUpdatedEvent.OutputObject
    >;
    MaxVote2EarnDecayUpdated: TypedContractEvent<
      MaxVote2EarnDecayUpdatedEvent.InputTuple,
      MaxVote2EarnDecayUpdatedEvent.OutputTuple,
      MaxVote2EarnDecayUpdatedEvent.OutputObject
    >;

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

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

    "RoleRevoked(bytes32,address,address)": TypedContractEvent<
      RoleRevokedEvent.InputTuple,
      RoleRevokedEvent.OutputTuple,
      RoleRevokedEvent.OutputObject
    >;
    RoleRevoked: TypedContractEvent<
      RoleRevokedEvent.InputTuple,
      RoleRevokedEvent.OutputTuple,
      RoleRevokedEvent.OutputObject
    >;

    "TreasuryAddressUpdated(address,address)": TypedContractEvent<
      TreasuryAddressUpdatedEvent.InputTuple,
      TreasuryAddressUpdatedEvent.OutputTuple,
      TreasuryAddressUpdatedEvent.OutputObject
    >;
    TreasuryAddressUpdated: TypedContractEvent<
      TreasuryAddressUpdatedEvent.InputTuple,
      TreasuryAddressUpdatedEvent.OutputTuple,
      TreasuryAddressUpdatedEvent.OutputObject
    >;

    "TreasuryPercentageUpdated(uint256,uint256)": TypedContractEvent<
      TreasuryPercentageUpdatedEvent.InputTuple,
      TreasuryPercentageUpdatedEvent.OutputTuple,
      TreasuryPercentageUpdatedEvent.OutputObject
    >;
    TreasuryPercentageUpdated: TypedContractEvent<
      TreasuryPercentageUpdatedEvent.InputTuple,
      TreasuryPercentageUpdatedEvent.OutputTuple,
      TreasuryPercentageUpdatedEvent.OutputObject
    >;

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

    "Vote2EarnAddressUpdated(address,address)": TypedContractEvent<
      Vote2EarnAddressUpdatedEvent.InputTuple,
      Vote2EarnAddressUpdatedEvent.OutputTuple,
      Vote2EarnAddressUpdatedEvent.OutputObject
    >;
    Vote2EarnAddressUpdated: TypedContractEvent<
      Vote2EarnAddressUpdatedEvent.InputTuple,
      Vote2EarnAddressUpdatedEvent.OutputTuple,
      Vote2EarnAddressUpdatedEvent.OutputObject
    >;

    "Vote2EarnDecayPeriodUpdated(uint256,uint256)": TypedContractEvent<
      Vote2EarnDecayPeriodUpdatedEvent.InputTuple,
      Vote2EarnDecayPeriodUpdatedEvent.OutputTuple,
      Vote2EarnDecayPeriodUpdatedEvent.OutputObject
    >;
    Vote2EarnDecayPeriodUpdated: TypedContractEvent<
      Vote2EarnDecayPeriodUpdatedEvent.InputTuple,
      Vote2EarnDecayPeriodUpdatedEvent.OutputTuple,
      Vote2EarnDecayPeriodUpdatedEvent.OutputObject
    >;

    "Vote2EarnDecayUpdated(uint256,uint256)": TypedContractEvent<
      Vote2EarnDecayUpdatedEvent.InputTuple,
      Vote2EarnDecayUpdatedEvent.OutputTuple,
      Vote2EarnDecayUpdatedEvent.OutputObject
    >;
    Vote2EarnDecayUpdated: TypedContractEvent<
      Vote2EarnDecayUpdatedEvent.InputTuple,
      Vote2EarnDecayUpdatedEvent.OutputTuple,
      Vote2EarnDecayUpdatedEvent.OutputObject
    >;

    "XAllocationsAddressUpdated(address,address)": TypedContractEvent<
      XAllocationsAddressUpdatedEvent.InputTuple,
      XAllocationsAddressUpdatedEvent.OutputTuple,
      XAllocationsAddressUpdatedEvent.OutputObject
    >;
    XAllocationsAddressUpdated: TypedContractEvent<
      XAllocationsAddressUpdatedEvent.InputTuple,
      XAllocationsAddressUpdatedEvent.OutputTuple,
      XAllocationsAddressUpdatedEvent.OutputObject
    >;

    "XAllocationsDecayPeriodUpdated(uint256,uint256)": TypedContractEvent<
      XAllocationsDecayPeriodUpdatedEvent.InputTuple,
      XAllocationsDecayPeriodUpdatedEvent.OutputTuple,
      XAllocationsDecayPeriodUpdatedEvent.OutputObject
    >;
    XAllocationsDecayPeriodUpdated: TypedContractEvent<
      XAllocationsDecayPeriodUpdatedEvent.InputTuple,
      XAllocationsDecayPeriodUpdatedEvent.OutputTuple,
      XAllocationsDecayPeriodUpdatedEvent.OutputObject
    >;

    "XAllocationsDecayUpdated(uint256,uint256)": TypedContractEvent<
      XAllocationsDecayUpdatedEvent.InputTuple,
      XAllocationsDecayUpdatedEvent.OutputTuple,
      XAllocationsDecayUpdatedEvent.OutputObject
    >;
    XAllocationsDecayUpdated: TypedContractEvent<
      XAllocationsDecayUpdatedEvent.InputTuple,
      XAllocationsDecayUpdatedEvent.OutputTuple,
      XAllocationsDecayUpdatedEvent.OutputObject
    >;

    "XAllocationsGovernorAddressUpdated(address,address)": TypedContractEvent<
      XAllocationsGovernorAddressUpdatedEvent.InputTuple,
      XAllocationsGovernorAddressUpdatedEvent.OutputTuple,
      XAllocationsGovernorAddressUpdatedEvent.OutputObject
    >;
    XAllocationsGovernorAddressUpdated: TypedContractEvent<
      XAllocationsGovernorAddressUpdatedEvent.InputTuple,
      XAllocationsGovernorAddressUpdatedEvent.OutputTuple,
      XAllocationsGovernorAddressUpdatedEvent.OutputObject
    >;
  };
}
