/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */

import type BN from "bn.js";
import type { ContractOptions } from "web3-eth-contract";
import type { EventLog } from "web3-core";
import type { EventEmitter } from "events";
import type {
  Callback,
  PayableTransactionObject,
  NonPayableTransactionObject,
  BlockType,
  ContractEventLog,
  BaseContract,
} from "./types";

export interface EventOptions {
  filter?: object;
  fromBlock?: BlockType;
  topics?: string[];
}

export type GovernanceProposal = ContractEventLog<{
  _pendingGovernance: string;
  0: string;
}>;
export type GovernanceSet = ContractEventLog<{
  _governance: string;
  0: string;
}>;
export type Keep3rRequirementsSet = ContractEventLog<{
  _bond: string;
  _minBond: string;
  _earnings: string;
  _age: string;
  0: string;
  1: string;
  2: string;
  3: string;
}>;
export type Keep3rSet = ContractEventLog<{
  _keep3r: string;
  0: string;
}>;
export type MinCardinalityIncreaseChanged = ContractEventLog<{
  _minCardinalityIncrease: string;
  0: string;
}>;
export type PausedSet = ContractEventLog<{
  _paused: boolean;
  0: boolean;
}>;
export type PoolManagerFactoryChanged = ContractEventLog<{
  _poolManagerFactory: string;
  0: string;
}>;
export type Worked = ContractEventLog<{
  _poolManager: string;
  _increaseAmount: string;
  0: string;
  1: string;
}>;

export interface ICardinalityJob extends BaseContract {
  constructor(
    jsonInterface: any[],
    address?: string,
    options?: ContractOptions
  ): ICardinalityJob;
  clone(): ICardinalityJob;
  methods: {
    acceptGovernance(): NonPayableTransactionObject<void>;

    getMinCardinalityIncreaseForPool(
      _poolManager: string
    ): NonPayableTransactionObject<string>;

    governance(): NonPayableTransactionObject<string>;

    isPaused(): NonPayableTransactionObject<boolean>;

    "isWorkable(address,uint16,address)"(
      _poolManager: string,
      _increaseAmount: number | string | BN,
      _keeper: string
    ): NonPayableTransactionObject<boolean>;

    "isWorkable(address,uint16)"(
      _poolManager: string,
      _increaseAmount: number | string | BN
    ): NonPayableTransactionObject<boolean>;

    keep3r(): NonPayableTransactionObject<string>;

    minCardinalityIncrease(): NonPayableTransactionObject<string>;

    pendingGovernance(): NonPayableTransactionObject<string>;

    poolManagerFactory(): NonPayableTransactionObject<string>;

    requiredAge(): NonPayableTransactionObject<string>;

    requiredBond(): NonPayableTransactionObject<string>;

    requiredEarnings(): NonPayableTransactionObject<string>;

    requiredMinBond(): NonPayableTransactionObject<string>;

    setGovernance(_governance: string): NonPayableTransactionObject<void>;

    setKeep3r(_keep3r: string): NonPayableTransactionObject<void>;

    setKeep3rRequirements(
      _bond: string,
      _minBond: number | string | BN,
      _earnings: number | string | BN,
      _age: number | string | BN
    ): NonPayableTransactionObject<void>;

    setMinCardinalityIncrease(
      _minCardinalityIncrease: number | string | BN
    ): NonPayableTransactionObject<void>;

    setPaused(_paused: boolean): NonPayableTransactionObject<void>;

    setPoolManagerFactory(
      _poolManagerFactory: string
    ): NonPayableTransactionObject<void>;

    work(
      _poolManager: string,
      _increaseAmount: number | string | BN
    ): NonPayableTransactionObject<void>;
  };
  events: {
    GovernanceProposal(cb?: Callback<GovernanceProposal>): EventEmitter;
    GovernanceProposal(
      options?: EventOptions,
      cb?: Callback<GovernanceProposal>
    ): EventEmitter;

    GovernanceSet(cb?: Callback<GovernanceSet>): EventEmitter;
    GovernanceSet(
      options?: EventOptions,
      cb?: Callback<GovernanceSet>
    ): EventEmitter;

    Keep3rRequirementsSet(cb?: Callback<Keep3rRequirementsSet>): EventEmitter;
    Keep3rRequirementsSet(
      options?: EventOptions,
      cb?: Callback<Keep3rRequirementsSet>
    ): EventEmitter;

    Keep3rSet(cb?: Callback<Keep3rSet>): EventEmitter;
    Keep3rSet(options?: EventOptions, cb?: Callback<Keep3rSet>): EventEmitter;

    MinCardinalityIncreaseChanged(
      cb?: Callback<MinCardinalityIncreaseChanged>
    ): EventEmitter;
    MinCardinalityIncreaseChanged(
      options?: EventOptions,
      cb?: Callback<MinCardinalityIncreaseChanged>
    ): EventEmitter;

    PausedSet(cb?: Callback<PausedSet>): EventEmitter;
    PausedSet(options?: EventOptions, cb?: Callback<PausedSet>): EventEmitter;

    PoolManagerFactoryChanged(
      cb?: Callback<PoolManagerFactoryChanged>
    ): EventEmitter;
    PoolManagerFactoryChanged(
      options?: EventOptions,
      cb?: Callback<PoolManagerFactoryChanged>
    ): EventEmitter;

    Worked(cb?: Callback<Worked>): EventEmitter;
    Worked(options?: EventOptions, cb?: Callback<Worked>): EventEmitter;

    allEvents(options?: EventOptions, cb?: Callback<EventLog>): EventEmitter;
  };

  once(event: "GovernanceProposal", cb: Callback<GovernanceProposal>): void;
  once(
    event: "GovernanceProposal",
    options: EventOptions,
    cb: Callback<GovernanceProposal>
  ): void;

  once(event: "GovernanceSet", cb: Callback<GovernanceSet>): void;
  once(
    event: "GovernanceSet",
    options: EventOptions,
    cb: Callback<GovernanceSet>
  ): void;

  once(
    event: "Keep3rRequirementsSet",
    cb: Callback<Keep3rRequirementsSet>
  ): void;
  once(
    event: "Keep3rRequirementsSet",
    options: EventOptions,
    cb: Callback<Keep3rRequirementsSet>
  ): void;

  once(event: "Keep3rSet", cb: Callback<Keep3rSet>): void;
  once(
    event: "Keep3rSet",
    options: EventOptions,
    cb: Callback<Keep3rSet>
  ): void;

  once(
    event: "MinCardinalityIncreaseChanged",
    cb: Callback<MinCardinalityIncreaseChanged>
  ): void;
  once(
    event: "MinCardinalityIncreaseChanged",
    options: EventOptions,
    cb: Callback<MinCardinalityIncreaseChanged>
  ): void;

  once(event: "PausedSet", cb: Callback<PausedSet>): void;
  once(
    event: "PausedSet",
    options: EventOptions,
    cb: Callback<PausedSet>
  ): void;

  once(
    event: "PoolManagerFactoryChanged",
    cb: Callback<PoolManagerFactoryChanged>
  ): void;
  once(
    event: "PoolManagerFactoryChanged",
    options: EventOptions,
    cb: Callback<PoolManagerFactoryChanged>
  ): void;

  once(event: "Worked", cb: Callback<Worked>): void;
  once(event: "Worked", options: EventOptions, cb: Callback<Worked>): void;
}
