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

import {
  ethers,
  EventFilter,
  Signer,
  BigNumber,
  BigNumberish,
  PopulatedTransaction,
} from "ethers";
import {
  Contract,
  ContractTransaction,
  Overrides,
  CallOverrides,
} from "@ethersproject/contracts";
import { BytesLike } from "@ethersproject/bytes";
import { Listener, Provider } from "@ethersproject/providers";
import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi";

interface BasicRewardControllerInterface extends ethers.utils.Interface {
  functions: {
    "admin_addRewardPool(address)": FunctionFragment;
    "admin_addRewardProvider(address,address,address)": FunctionFragment;
    "admin_removeRewardPool(address)": FunctionFragment;
    "admin_removeRewardProvider(address,address)": FunctionFragment;
    "admin_setRewardMinter(address)": FunctionFragment;
    "allocatedByPool(address,uint256,uint32,uint8)": FunctionFragment;
    "balanceOf(address)": FunctionFragment;
    "claimReward()": FunctionFragment;
    "claimRewardAndTransferTo(address,uint256)": FunctionFragment;
    "claimRewardFor(address,uint256)": FunctionFragment;
    "claimablePools(address)": FunctionFragment;
    "claimableReward(address,uint32)": FunctionFragment;
    "claimableRewardFor(address,uint256,uint32)": FunctionFragment;
    "getPools()": FunctionFragment;
    "getRewardMinter()": FunctionFragment;
    "isConfigurator(address)": FunctionFragment;
    "isEmergencyAdmin(address)": FunctionFragment;
    "isPaused()": FunctionFragment;
    "isRateController(address)": FunctionFragment;
    "owner()": FunctionFragment;
    "renounceOwnership()": FunctionFragment;
    "setPaused(bool)": FunctionFragment;
    "transferOwnership(address)": FunctionFragment;
    "updateBaseline(uint256)": FunctionFragment;
  };

  encodeFunctionData(
    functionFragment: "admin_addRewardPool",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "admin_addRewardProvider",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "admin_removeRewardPool",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "admin_removeRewardProvider",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "admin_setRewardMinter",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "allocatedByPool",
    values: [string, BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "balanceOf", values: [string]): string;
  encodeFunctionData(
    functionFragment: "claimReward",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "claimRewardAndTransferTo",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "claimRewardFor",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "claimablePools",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "claimableReward",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "claimableRewardFor",
    values: [string, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "getPools", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "getRewardMinter",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "isConfigurator",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "isEmergencyAdmin",
    values: [string]
  ): string;
  encodeFunctionData(functionFragment: "isPaused", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "isRateController",
    values: [string]
  ): string;
  encodeFunctionData(functionFragment: "owner", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "renounceOwnership",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "setPaused", values: [boolean]): string;
  encodeFunctionData(
    functionFragment: "transferOwnership",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "updateBaseline",
    values: [BigNumberish]
  ): string;

  decodeFunctionResult(
    functionFragment: "admin_addRewardPool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "admin_addRewardProvider",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "admin_removeRewardPool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "admin_removeRewardProvider",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "admin_setRewardMinter",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "allocatedByPool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "claimReward",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "claimRewardAndTransferTo",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "claimRewardFor",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "claimablePools",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "claimableReward",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "claimableRewardFor",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "getPools", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getRewardMinter",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isConfigurator",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isEmergencyAdmin",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "isPaused", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isRateController",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "renounceOwnership",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "setPaused", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "transferOwnership",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateBaseline",
    data: BytesLike
  ): Result;

  events: {
    "OwnershipTransferred(address,address)": EventFragment;
    "RewardsAllocated(address,uint256)": EventFragment;
    "RewardsClaimed(address,address,uint256)": EventFragment;
  };

  getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "RewardsAllocated"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "RewardsClaimed"): EventFragment;
}

export class BasicRewardController extends Contract {
  connect(signerOrProvider: Signer | Provider | string): this;
  attach(addressOrName: string): this;
  deployed(): Promise<this>;

  on(event: EventFilter | string, listener: Listener): this;
  once(event: EventFilter | string, listener: Listener): this;
  addListener(eventName: EventFilter | string, listener: Listener): this;
  removeAllListeners(eventName: EventFilter | string): this;
  removeListener(eventName: any, listener: Listener): this;

  interface: BasicRewardControllerInterface;

  functions: {
    admin_addRewardPool(
      pool: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "admin_addRewardPool(address)"(
      pool: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    admin_addRewardProvider(
      pool: string,
      provider: string,
      token: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "admin_addRewardProvider(address,address,address)"(
      pool: string,
      provider: string,
      token: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    admin_removeRewardPool(
      pool: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "admin_removeRewardPool(address)"(
      pool: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    admin_removeRewardProvider(
      pool: string,
      provider: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "admin_removeRewardProvider(address,address)"(
      pool: string,
      provider: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    admin_setRewardMinter(
      minter: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "admin_setRewardMinter(address)"(
      minter: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    allocatedByPool(
      holder: string,
      allocated: BigNumberish,
      sinceBlock: BigNumberish,
      mode: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "allocatedByPool(address,uint256,uint32,uint8)"(
      holder: string,
      allocated: BigNumberish,
      sinceBlock: BigNumberish,
      mode: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    balanceOf(
      holder: string,
      overrides?: CallOverrides
    ): Promise<{
      0: BigNumber;
    }>;

    "balanceOf(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<{
      0: BigNumber;
    }>;

    claimReward(overrides?: Overrides): Promise<ContractTransaction>;

    "claimReward()"(overrides?: Overrides): Promise<ContractTransaction>;

    claimRewardAndTransferTo(
      receiver: string,
      mask: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "claimRewardAndTransferTo(address,uint256)"(
      receiver: string,
      mask: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    claimRewardFor(
      holder: string,
      mask: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "claimRewardFor(address,uint256)"(
      holder: string,
      mask: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    claimablePools(
      holder: string,
      overrides?: CallOverrides
    ): Promise<{
      0: BigNumber;
    }>;

    "claimablePools(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<{
      0: BigNumber;
    }>;

    claimableReward(
      holder: string,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<{
      claimable: BigNumber;
      delayed: BigNumber;
      0: BigNumber;
      1: BigNumber;
    }>;

    "claimableReward(address,uint32)"(
      holder: string,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<{
      claimable: BigNumber;
      delayed: BigNumber;
      0: BigNumber;
      1: BigNumber;
    }>;

    claimableRewardFor(
      holder: string,
      mask: BigNumberish,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<{
      claimable: BigNumber;
      delayed: BigNumber;
      0: BigNumber;
      1: BigNumber;
    }>;

    "claimableRewardFor(address,uint256,uint32)"(
      holder: string,
      mask: BigNumberish,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<{
      claimable: BigNumber;
      delayed: BigNumber;
      0: BigNumber;
      1: BigNumber;
    }>;

    getPools(
      overrides?: CallOverrides
    ): Promise<{
      ignoreMask: BigNumber;
      0: string[];
      1: BigNumber;
    }>;

    "getPools()"(
      overrides?: CallOverrides
    ): Promise<{
      ignoreMask: BigNumber;
      0: string[];
      1: BigNumber;
    }>;

    getRewardMinter(
      overrides?: CallOverrides
    ): Promise<{
      0: string;
    }>;

    "getRewardMinter()"(
      overrides?: CallOverrides
    ): Promise<{
      0: string;
    }>;

    isConfigurator(
      addr: string,
      overrides?: CallOverrides
    ): Promise<{
      0: boolean;
    }>;

    "isConfigurator(address)"(
      addr: string,
      overrides?: CallOverrides
    ): Promise<{
      0: boolean;
    }>;

    isEmergencyAdmin(
      addr: string,
      overrides?: CallOverrides
    ): Promise<{
      0: boolean;
    }>;

    "isEmergencyAdmin(address)"(
      addr: string,
      overrides?: CallOverrides
    ): Promise<{
      0: boolean;
    }>;

    isPaused(
      overrides?: CallOverrides
    ): Promise<{
      0: boolean;
    }>;

    "isPaused()"(
      overrides?: CallOverrides
    ): Promise<{
      0: boolean;
    }>;

    isRateController(
      addr: string,
      overrides?: CallOverrides
    ): Promise<{
      0: boolean;
    }>;

    "isRateController(address)"(
      addr: string,
      overrides?: CallOverrides
    ): Promise<{
      0: boolean;
    }>;

    owner(
      overrides?: CallOverrides
    ): Promise<{
      0: string;
    }>;

    "owner()"(
      overrides?: CallOverrides
    ): Promise<{
      0: string;
    }>;

    renounceOwnership(overrides?: Overrides): Promise<ContractTransaction>;

    "renounceOwnership()"(overrides?: Overrides): Promise<ContractTransaction>;

    setPaused(
      paused: boolean,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "setPaused(bool)"(
      paused: boolean,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    transferOwnership(
      newOwner: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "transferOwnership(address)"(
      newOwner: string,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    updateBaseline(
      baseline: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;

    "updateBaseline(uint256)"(
      baseline: BigNumberish,
      overrides?: Overrides
    ): Promise<ContractTransaction>;
  };

  admin_addRewardPool(
    pool: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "admin_addRewardPool(address)"(
    pool: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  admin_addRewardProvider(
    pool: string,
    provider: string,
    token: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "admin_addRewardProvider(address,address,address)"(
    pool: string,
    provider: string,
    token: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  admin_removeRewardPool(
    pool: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "admin_removeRewardPool(address)"(
    pool: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  admin_removeRewardProvider(
    pool: string,
    provider: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "admin_removeRewardProvider(address,address)"(
    pool: string,
    provider: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  admin_setRewardMinter(
    minter: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "admin_setRewardMinter(address)"(
    minter: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  allocatedByPool(
    holder: string,
    allocated: BigNumberish,
    sinceBlock: BigNumberish,
    mode: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "allocatedByPool(address,uint256,uint32,uint8)"(
    holder: string,
    allocated: BigNumberish,
    sinceBlock: BigNumberish,
    mode: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  balanceOf(holder: string, overrides?: CallOverrides): Promise<BigNumber>;

  "balanceOf(address)"(
    holder: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  claimReward(overrides?: Overrides): Promise<ContractTransaction>;

  "claimReward()"(overrides?: Overrides): Promise<ContractTransaction>;

  claimRewardAndTransferTo(
    receiver: string,
    mask: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "claimRewardAndTransferTo(address,uint256)"(
    receiver: string,
    mask: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  claimRewardFor(
    holder: string,
    mask: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "claimRewardFor(address,uint256)"(
    holder: string,
    mask: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  claimablePools(holder: string, overrides?: CallOverrides): Promise<BigNumber>;

  "claimablePools(address)"(
    holder: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  claimableReward(
    holder: string,
    atBlock: BigNumberish,
    overrides?: CallOverrides
  ): Promise<{
    claimable: BigNumber;
    delayed: BigNumber;
    0: BigNumber;
    1: BigNumber;
  }>;

  "claimableReward(address,uint32)"(
    holder: string,
    atBlock: BigNumberish,
    overrides?: CallOverrides
  ): Promise<{
    claimable: BigNumber;
    delayed: BigNumber;
    0: BigNumber;
    1: BigNumber;
  }>;

  claimableRewardFor(
    holder: string,
    mask: BigNumberish,
    atBlock: BigNumberish,
    overrides?: CallOverrides
  ): Promise<{
    claimable: BigNumber;
    delayed: BigNumber;
    0: BigNumber;
    1: BigNumber;
  }>;

  "claimableRewardFor(address,uint256,uint32)"(
    holder: string,
    mask: BigNumberish,
    atBlock: BigNumberish,
    overrides?: CallOverrides
  ): Promise<{
    claimable: BigNumber;
    delayed: BigNumber;
    0: BigNumber;
    1: BigNumber;
  }>;

  getPools(
    overrides?: CallOverrides
  ): Promise<{
    ignoreMask: BigNumber;
    0: string[];
    1: BigNumber;
  }>;

  "getPools()"(
    overrides?: CallOverrides
  ): Promise<{
    ignoreMask: BigNumber;
    0: string[];
    1: BigNumber;
  }>;

  getRewardMinter(overrides?: CallOverrides): Promise<string>;

  "getRewardMinter()"(overrides?: CallOverrides): Promise<string>;

  isConfigurator(addr: string, overrides?: CallOverrides): Promise<boolean>;

  "isConfigurator(address)"(
    addr: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  isEmergencyAdmin(addr: string, overrides?: CallOverrides): Promise<boolean>;

  "isEmergencyAdmin(address)"(
    addr: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  isPaused(overrides?: CallOverrides): Promise<boolean>;

  "isPaused()"(overrides?: CallOverrides): Promise<boolean>;

  isRateController(addr: string, overrides?: CallOverrides): Promise<boolean>;

  "isRateController(address)"(
    addr: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  owner(overrides?: CallOverrides): Promise<string>;

  "owner()"(overrides?: CallOverrides): Promise<string>;

  renounceOwnership(overrides?: Overrides): Promise<ContractTransaction>;

  "renounceOwnership()"(overrides?: Overrides): Promise<ContractTransaction>;

  setPaused(
    paused: boolean,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "setPaused(bool)"(
    paused: boolean,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  transferOwnership(
    newOwner: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "transferOwnership(address)"(
    newOwner: string,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  updateBaseline(
    baseline: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  "updateBaseline(uint256)"(
    baseline: BigNumberish,
    overrides?: Overrides
  ): Promise<ContractTransaction>;

  callStatic: {
    admin_addRewardPool(pool: string, overrides?: CallOverrides): Promise<void>;

    "admin_addRewardPool(address)"(
      pool: string,
      overrides?: CallOverrides
    ): Promise<void>;

    admin_addRewardProvider(
      pool: string,
      provider: string,
      token: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "admin_addRewardProvider(address,address,address)"(
      pool: string,
      provider: string,
      token: string,
      overrides?: CallOverrides
    ): Promise<void>;

    admin_removeRewardPool(
      pool: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "admin_removeRewardPool(address)"(
      pool: string,
      overrides?: CallOverrides
    ): Promise<void>;

    admin_removeRewardProvider(
      pool: string,
      provider: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "admin_removeRewardProvider(address,address)"(
      pool: string,
      provider: string,
      overrides?: CallOverrides
    ): Promise<void>;

    admin_setRewardMinter(
      minter: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "admin_setRewardMinter(address)"(
      minter: string,
      overrides?: CallOverrides
    ): Promise<void>;

    allocatedByPool(
      holder: string,
      allocated: BigNumberish,
      sinceBlock: BigNumberish,
      mode: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "allocatedByPool(address,uint256,uint32,uint8)"(
      holder: string,
      allocated: BigNumberish,
      sinceBlock: BigNumberish,
      mode: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    balanceOf(holder: string, overrides?: CallOverrides): Promise<BigNumber>;

    "balanceOf(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    claimReward(overrides?: CallOverrides): Promise<BigNumber>;

    "claimReward()"(overrides?: CallOverrides): Promise<BigNumber>;

    claimRewardAndTransferTo(
      receiver: string,
      mask: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "claimRewardAndTransferTo(address,uint256)"(
      receiver: string,
      mask: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    claimRewardFor(
      holder: string,
      mask: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "claimRewardFor(address,uint256)"(
      holder: string,
      mask: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    claimablePools(
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "claimablePools(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    claimableReward(
      holder: string,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<{
      claimable: BigNumber;
      delayed: BigNumber;
      0: BigNumber;
      1: BigNumber;
    }>;

    "claimableReward(address,uint32)"(
      holder: string,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<{
      claimable: BigNumber;
      delayed: BigNumber;
      0: BigNumber;
      1: BigNumber;
    }>;

    claimableRewardFor(
      holder: string,
      mask: BigNumberish,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<{
      claimable: BigNumber;
      delayed: BigNumber;
      0: BigNumber;
      1: BigNumber;
    }>;

    "claimableRewardFor(address,uint256,uint32)"(
      holder: string,
      mask: BigNumberish,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<{
      claimable: BigNumber;
      delayed: BigNumber;
      0: BigNumber;
      1: BigNumber;
    }>;

    getPools(
      overrides?: CallOverrides
    ): Promise<{
      ignoreMask: BigNumber;
      0: string[];
      1: BigNumber;
    }>;

    "getPools()"(
      overrides?: CallOverrides
    ): Promise<{
      ignoreMask: BigNumber;
      0: string[];
      1: BigNumber;
    }>;

    getRewardMinter(overrides?: CallOverrides): Promise<string>;

    "getRewardMinter()"(overrides?: CallOverrides): Promise<string>;

    isConfigurator(addr: string, overrides?: CallOverrides): Promise<boolean>;

    "isConfigurator(address)"(
      addr: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    isEmergencyAdmin(addr: string, overrides?: CallOverrides): Promise<boolean>;

    "isEmergencyAdmin(address)"(
      addr: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    isPaused(overrides?: CallOverrides): Promise<boolean>;

    "isPaused()"(overrides?: CallOverrides): Promise<boolean>;

    isRateController(addr: string, overrides?: CallOverrides): Promise<boolean>;

    "isRateController(address)"(
      addr: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    owner(overrides?: CallOverrides): Promise<string>;

    "owner()"(overrides?: CallOverrides): Promise<string>;

    renounceOwnership(overrides?: CallOverrides): Promise<void>;

    "renounceOwnership()"(overrides?: CallOverrides): Promise<void>;

    setPaused(paused: boolean, overrides?: CallOverrides): Promise<void>;

    "setPaused(bool)"(
      paused: boolean,
      overrides?: CallOverrides
    ): Promise<void>;

    transferOwnership(
      newOwner: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "transferOwnership(address)"(
      newOwner: string,
      overrides?: CallOverrides
    ): Promise<void>;

    updateBaseline(
      baseline: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "updateBaseline(uint256)"(
      baseline: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;
  };

  filters: {
    OwnershipTransferred(
      previousOwner: string | null,
      newOwner: string | null
    ): EventFilter;

    RewardsAllocated(user: string | null, amount: null): EventFilter;

    RewardsClaimed(
      user: string | null,
      to: string | null,
      amount: null
    ): EventFilter;
  };

  estimateGas: {
    admin_addRewardPool(
      pool: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "admin_addRewardPool(address)"(
      pool: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    admin_addRewardProvider(
      pool: string,
      provider: string,
      token: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "admin_addRewardProvider(address,address,address)"(
      pool: string,
      provider: string,
      token: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    admin_removeRewardPool(
      pool: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "admin_removeRewardPool(address)"(
      pool: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    admin_removeRewardProvider(
      pool: string,
      provider: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "admin_removeRewardProvider(address,address)"(
      pool: string,
      provider: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    admin_setRewardMinter(
      minter: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "admin_setRewardMinter(address)"(
      minter: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    allocatedByPool(
      holder: string,
      allocated: BigNumberish,
      sinceBlock: BigNumberish,
      mode: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "allocatedByPool(address,uint256,uint32,uint8)"(
      holder: string,
      allocated: BigNumberish,
      sinceBlock: BigNumberish,
      mode: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;

    balanceOf(holder: string, overrides?: CallOverrides): Promise<BigNumber>;

    "balanceOf(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    claimReward(overrides?: Overrides): Promise<BigNumber>;

    "claimReward()"(overrides?: Overrides): Promise<BigNumber>;

    claimRewardAndTransferTo(
      receiver: string,
      mask: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "claimRewardAndTransferTo(address,uint256)"(
      receiver: string,
      mask: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;

    claimRewardFor(
      holder: string,
      mask: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "claimRewardFor(address,uint256)"(
      holder: string,
      mask: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;

    claimablePools(
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "claimablePools(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    claimableReward(
      holder: string,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "claimableReward(address,uint32)"(
      holder: string,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    claimableRewardFor(
      holder: string,
      mask: BigNumberish,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "claimableRewardFor(address,uint256,uint32)"(
      holder: string,
      mask: BigNumberish,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getPools(overrides?: CallOverrides): Promise<BigNumber>;

    "getPools()"(overrides?: CallOverrides): Promise<BigNumber>;

    getRewardMinter(overrides?: CallOverrides): Promise<BigNumber>;

    "getRewardMinter()"(overrides?: CallOverrides): Promise<BigNumber>;

    isConfigurator(addr: string, overrides?: CallOverrides): Promise<BigNumber>;

    "isConfigurator(address)"(
      addr: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    isEmergencyAdmin(
      addr: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "isEmergencyAdmin(address)"(
      addr: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    isPaused(overrides?: CallOverrides): Promise<BigNumber>;

    "isPaused()"(overrides?: CallOverrides): Promise<BigNumber>;

    isRateController(
      addr: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "isRateController(address)"(
      addr: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    owner(overrides?: CallOverrides): Promise<BigNumber>;

    "owner()"(overrides?: CallOverrides): Promise<BigNumber>;

    renounceOwnership(overrides?: Overrides): Promise<BigNumber>;

    "renounceOwnership()"(overrides?: Overrides): Promise<BigNumber>;

    setPaused(paused: boolean, overrides?: Overrides): Promise<BigNumber>;

    "setPaused(bool)"(
      paused: boolean,
      overrides?: Overrides
    ): Promise<BigNumber>;

    transferOwnership(
      newOwner: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "transferOwnership(address)"(
      newOwner: string,
      overrides?: Overrides
    ): Promise<BigNumber>;

    updateBaseline(
      baseline: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;

    "updateBaseline(uint256)"(
      baseline: BigNumberish,
      overrides?: Overrides
    ): Promise<BigNumber>;
  };

  populateTransaction: {
    admin_addRewardPool(
      pool: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "admin_addRewardPool(address)"(
      pool: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    admin_addRewardProvider(
      pool: string,
      provider: string,
      token: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "admin_addRewardProvider(address,address,address)"(
      pool: string,
      provider: string,
      token: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    admin_removeRewardPool(
      pool: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "admin_removeRewardPool(address)"(
      pool: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    admin_removeRewardProvider(
      pool: string,
      provider: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "admin_removeRewardProvider(address,address)"(
      pool: string,
      provider: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    admin_setRewardMinter(
      minter: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "admin_setRewardMinter(address)"(
      minter: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    allocatedByPool(
      holder: string,
      allocated: BigNumberish,
      sinceBlock: BigNumberish,
      mode: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "allocatedByPool(address,uint256,uint32,uint8)"(
      holder: string,
      allocated: BigNumberish,
      sinceBlock: BigNumberish,
      mode: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    balanceOf(
      holder: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "balanceOf(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    claimReward(overrides?: Overrides): Promise<PopulatedTransaction>;

    "claimReward()"(overrides?: Overrides): Promise<PopulatedTransaction>;

    claimRewardAndTransferTo(
      receiver: string,
      mask: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "claimRewardAndTransferTo(address,uint256)"(
      receiver: string,
      mask: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    claimRewardFor(
      holder: string,
      mask: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "claimRewardFor(address,uint256)"(
      holder: string,
      mask: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    claimablePools(
      holder: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "claimablePools(address)"(
      holder: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    claimableReward(
      holder: string,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "claimableReward(address,uint32)"(
      holder: string,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    claimableRewardFor(
      holder: string,
      mask: BigNumberish,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "claimableRewardFor(address,uint256,uint32)"(
      holder: string,
      mask: BigNumberish,
      atBlock: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getPools(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    "getPools()"(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    getRewardMinter(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    "getRewardMinter()"(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isConfigurator(
      addr: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "isConfigurator(address)"(
      addr: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isEmergencyAdmin(
      addr: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "isEmergencyAdmin(address)"(
      addr: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isPaused(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    "isPaused()"(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    isRateController(
      addr: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "isRateController(address)"(
      addr: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    "owner()"(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    renounceOwnership(overrides?: Overrides): Promise<PopulatedTransaction>;

    "renounceOwnership()"(overrides?: Overrides): Promise<PopulatedTransaction>;

    setPaused(
      paused: boolean,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "setPaused(bool)"(
      paused: boolean,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    transferOwnership(
      newOwner: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "transferOwnership(address)"(
      newOwner: string,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    updateBaseline(
      baseline: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;

    "updateBaseline(uint256)"(
      baseline: BigNumberish,
      overrides?: Overrides
    ): Promise<PopulatedTransaction>;
  };
}
