/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import type {
  BaseContract,
  BigNumber,
  BigNumberish,
  BytesLike,
  CallOverrides,
  ContractTransaction,
  Overrides,
  PopulatedTransaction,
  Signer,
  utils,
} from "ethers";
import type {
  FunctionFragment,
  Result,
  EventFragment,
} from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type {
  TypedEventFilter,
  TypedEvent,
  TypedListener,
  OnEvent,
} from "./common.js";

export interface JnglStakingInterface extends utils.Interface {
  functions: {
    "addPool(address,uint256,uint256,uint256)": FunctionFragment;
    "claimRewards(uint256)": FunctionFragment;
    "earned(address,uint256)": FunctionFragment;
    "getDailyRewardRate(uint256)": FunctionFragment;
    "getLastReward(uint256)": FunctionFragment;
    "getLockTime(uint256)": FunctionFragment;
    "getRewardShare(uint256)": FunctionFragment;
    "getStaked(address,uint256)": FunctionFragment;
    "getStakedLock(address,uint256)": FunctionFragment;
    "getStakingTokenBalance(uint256)": FunctionFragment;
    "getStartTime(uint256)": FunctionFragment;
    "getTimeElapsed(uint256)": FunctionFragment;
    "getTimeRemaining(uint256)": FunctionFragment;
    "getTotalRewardsClaimed(address,uint256)": FunctionFragment;
    "getTotalStaked(uint256)": FunctionFragment;
    "owner()": FunctionFragment;
    "pause()": FunctionFragment;
    "paused()": FunctionFragment;
    "recoverTokens(address)": FunctionFragment;
    "renounceOwnership()": FunctionFragment;
    "setDailyReward(uint256,uint256)": FunctionFragment;
    "stake(uint256,uint256)": FunctionFragment;
    "transferOwnership(address)": FunctionFragment;
    "unpause()": FunctionFragment;
    "unstake(uint256,uint256)": FunctionFragment;
    "updatePoolRewards(uint256)": FunctionFragment;
  };

  getFunction(
    nameOrSignatureOrTopic:
      | "addPool"
      | "claimRewards"
      | "earned"
      | "getDailyRewardRate"
      | "getLastReward"
      | "getLockTime"
      | "getRewardShare"
      | "getStaked"
      | "getStakedLock"
      | "getStakingTokenBalance"
      | "getStartTime"
      | "getTimeElapsed"
      | "getTimeRemaining"
      | "getTotalRewardsClaimed"
      | "getTotalStaked"
      | "owner"
      | "pause"
      | "paused"
      | "recoverTokens"
      | "renounceOwnership"
      | "setDailyReward"
      | "stake"
      | "transferOwnership"
      | "unpause"
      | "unstake"
      | "updatePoolRewards"
  ): FunctionFragment;

  encodeFunctionData(
    functionFragment: "addPool",
    values: [string, BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "claimRewards",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "earned",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getDailyRewardRate",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getLastReward",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getLockTime",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getRewardShare",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getStaked",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getStakedLock",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getStakingTokenBalance",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getStartTime",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getTimeElapsed",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getTimeRemaining",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getTotalRewardsClaimed",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getTotalStaked",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "owner", values?: undefined): string;
  encodeFunctionData(functionFragment: "pause", values?: undefined): string;
  encodeFunctionData(functionFragment: "paused", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "recoverTokens",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "renounceOwnership",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "setDailyReward",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "stake",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "transferOwnership",
    values: [string]
  ): string;
  encodeFunctionData(functionFragment: "unpause", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "unstake",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "updatePoolRewards",
    values: [BigNumberish]
  ): string;

  decodeFunctionResult(functionFragment: "addPool", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "claimRewards",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "earned", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getDailyRewardRate",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getLastReward",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getLockTime",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getRewardShare",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "getStaked", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getStakedLock",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getStakingTokenBalance",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getStartTime",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTimeElapsed",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTimeRemaining",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTotalRewardsClaimed",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTotalStaked",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "recoverTokens",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "renounceOwnership",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setDailyReward",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "stake", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "transferOwnership",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "unstake", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "updatePoolRewards",
    data: BytesLike
  ): Result;

  events: {
    "OffchainReward(address,uint256,uint256)": EventFragment;
    "OwnershipTransferred(address,address)": EventFragment;
    "Paused(address)": EventFragment;
    "Recover(address,uint256)": EventFragment;
    "Staked(address,uint256,uint256)": EventFragment;
    "Unpaused(address)": EventFragment;
    "Withdraw(address,uint256,uint256)": EventFragment;
  };

  getEvent(nameOrSignatureOrTopic: "OffchainReward"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Paused"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Recover"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Staked"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Unpaused"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment;
}

export interface OffchainRewardEventObject {
  to: string;
  poolId: BigNumber;
  reward: BigNumber;
}
export type OffchainRewardEvent = TypedEvent<
  [string, BigNumber, BigNumber],
  OffchainRewardEventObject
>;

export type OffchainRewardEventFilter = TypedEventFilter<OffchainRewardEvent>;

export interface OwnershipTransferredEventObject {
  previousOwner: string;
  newOwner: string;
}
export type OwnershipTransferredEvent = TypedEvent<
  [string, string],
  OwnershipTransferredEventObject
>;

export type OwnershipTransferredEventFilter =
  TypedEventFilter<OwnershipTransferredEvent>;

export interface PausedEventObject {
  account: string;
}
export type PausedEvent = TypedEvent<[string], PausedEventObject>;

export type PausedEventFilter = TypedEventFilter<PausedEvent>;

export interface RecoverEventObject {
  token: string;
  amount: BigNumber;
}
export type RecoverEvent = TypedEvent<[string, BigNumber], RecoverEventObject>;

export type RecoverEventFilter = TypedEventFilter<RecoverEvent>;

export interface StakedEventObject {
  staker: string;
  amount: BigNumber;
  poolId: BigNumber;
}
export type StakedEvent = TypedEvent<
  [string, BigNumber, BigNumber],
  StakedEventObject
>;

export type StakedEventFilter = TypedEventFilter<StakedEvent>;

export interface UnpausedEventObject {
  account: string;
}
export type UnpausedEvent = TypedEvent<[string], UnpausedEventObject>;

export type UnpausedEventFilter = TypedEventFilter<UnpausedEvent>;

export interface WithdrawEventObject {
  staker: string;
  rewardAmount: BigNumber;
  poolId: BigNumber;
}
export type WithdrawEvent = TypedEvent<
  [string, BigNumber, BigNumber],
  WithdrawEventObject
>;

export type WithdrawEventFilter = TypedEventFilter<WithdrawEvent>;

export interface JnglStaking extends BaseContract {
  connect(signerOrProvider: Signer | Provider | string): this;
  attach(addressOrName: string): this;
  deployed(): Promise<this>;

  interface: JnglStakingInterface;

  queryFilter<TEvent extends TypedEvent>(
    event: TypedEventFilter<TEvent>,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TEvent>>;

  listeners<TEvent extends TypedEvent>(
    eventFilter?: TypedEventFilter<TEvent>
  ): Array<TypedListener<TEvent>>;
  listeners(eventName?: string): Array<Listener>;
  removeAllListeners<TEvent extends TypedEvent>(
    eventFilter: TypedEventFilter<TEvent>
  ): this;
  removeAllListeners(eventName?: string): this;
  off: OnEvent<this>;
  on: OnEvent<this>;
  once: OnEvent<this>;
  removeListener: OnEvent<this>;

  functions: {
    addPool(
      _stakingToken: string,
      _dailyRewardRate: BigNumberish,
      _startTime: BigNumberish,
      _lockTime: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    claimRewards(
      _poolId: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    earned(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    getDailyRewardRate(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    getLastReward(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    getLockTime(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    getRewardShare(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    getStaked(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    getStakedLock(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    getStakingTokenBalance(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    getStartTime(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    getTimeElapsed(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    getTimeRemaining(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    getTotalRewardsClaimed(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    getTotalStaked(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

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

    pause(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    paused(overrides?: CallOverrides): Promise<[boolean]>;

    recoverTokens(
      _token: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    renounceOwnership(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setDailyReward(
      _poolId: BigNumberish,
      _dailyRewardRate: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    stake(
      _amount: BigNumberish,
      _poolId: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    transferOwnership(
      newOwner: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    unpause(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    unstake(
      _amount: BigNumberish,
      _poolId: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    updatePoolRewards(
      pid: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;
  };

  addPool(
    _stakingToken: string,
    _dailyRewardRate: BigNumberish,
    _startTime: BigNumberish,
    _lockTime: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  claimRewards(
    _poolId: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  earned(
    _stakeholder: string,
    _poolId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  getDailyRewardRate(
    _poolId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  getLastReward(
    _poolId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  getLockTime(
    _poolId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  getRewardShare(
    _poolId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  getStaked(
    _stakeholder: string,
    _poolId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  getStakedLock(
    _stakeholder: string,
    _poolId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  getStakingTokenBalance(
    _poolId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  getStartTime(
    _poolId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  getTimeElapsed(
    _poolId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  getTimeRemaining(
    _poolId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  getTotalRewardsClaimed(
    _stakeholder: string,
    _poolId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  getTotalStaked(
    _poolId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

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

  pause(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

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

  recoverTokens(
    _token: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  renounceOwnership(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setDailyReward(
    _poolId: BigNumberish,
    _dailyRewardRate: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  stake(
    _amount: BigNumberish,
    _poolId: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  transferOwnership(
    newOwner: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  unpause(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  unstake(
    _amount: BigNumberish,
    _poolId: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  updatePoolRewards(
    pid: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  callStatic: {
    addPool(
      _stakingToken: string,
      _dailyRewardRate: BigNumberish,
      _startTime: BigNumberish,
      _lockTime: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    claimRewards(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    earned(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getDailyRewardRate(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getLastReward(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getLockTime(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getRewardShare(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getStaked(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getStakedLock(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getStakingTokenBalance(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getStartTime(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getTimeElapsed(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getTimeRemaining(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getTotalRewardsClaimed(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getTotalStaked(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

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

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

    recoverTokens(_token: string, overrides?: CallOverrides): Promise<void>;

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

    setDailyReward(
      _poolId: BigNumberish,
      _dailyRewardRate: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    stake(
      _amount: BigNumberish,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

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

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

    unstake(
      _amount: BigNumberish,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    updatePoolRewards(
      pid: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;
  };

  filters: {
    "OffchainReward(address,uint256,uint256)"(
      to?: string | null,
      poolId?: null,
      reward?: null
    ): OffchainRewardEventFilter;
    OffchainReward(
      to?: string | null,
      poolId?: null,
      reward?: null
    ): OffchainRewardEventFilter;

    "OwnershipTransferred(address,address)"(
      previousOwner?: string | null,
      newOwner?: string | null
    ): OwnershipTransferredEventFilter;
    OwnershipTransferred(
      previousOwner?: string | null,
      newOwner?: string | null
    ): OwnershipTransferredEventFilter;

    "Paused(address)"(account?: null): PausedEventFilter;
    Paused(account?: null): PausedEventFilter;

    "Recover(address,uint256)"(
      token?: string | null,
      amount?: null
    ): RecoverEventFilter;
    Recover(token?: string | null, amount?: null): RecoverEventFilter;

    "Staked(address,uint256,uint256)"(
      staker?: string | null,
      amount?: null,
      poolId?: null
    ): StakedEventFilter;
    Staked(
      staker?: string | null,
      amount?: null,
      poolId?: null
    ): StakedEventFilter;

    "Unpaused(address)"(account?: null): UnpausedEventFilter;
    Unpaused(account?: null): UnpausedEventFilter;

    "Withdraw(address,uint256,uint256)"(
      staker?: string | null,
      rewardAmount?: null,
      poolId?: null
    ): WithdrawEventFilter;
    Withdraw(
      staker?: string | null,
      rewardAmount?: null,
      poolId?: null
    ): WithdrawEventFilter;
  };

  estimateGas: {
    addPool(
      _stakingToken: string,
      _dailyRewardRate: BigNumberish,
      _startTime: BigNumberish,
      _lockTime: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    claimRewards(
      _poolId: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    earned(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getDailyRewardRate(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getLastReward(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getLockTime(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getRewardShare(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getStaked(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getStakedLock(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getStakingTokenBalance(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getStartTime(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getTimeElapsed(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getTimeRemaining(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getTotalRewardsClaimed(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getTotalStaked(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    pause(overrides?: Overrides & { from?: string }): Promise<BigNumber>;

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

    recoverTokens(
      _token: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    renounceOwnership(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setDailyReward(
      _poolId: BigNumberish,
      _dailyRewardRate: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    stake(
      _amount: BigNumberish,
      _poolId: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    transferOwnership(
      newOwner: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    unpause(overrides?: Overrides & { from?: string }): Promise<BigNumber>;

    unstake(
      _amount: BigNumberish,
      _poolId: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    updatePoolRewards(
      pid: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;
  };

  populateTransaction: {
    addPool(
      _stakingToken: string,
      _dailyRewardRate: BigNumberish,
      _startTime: BigNumberish,
      _lockTime: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    claimRewards(
      _poolId: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    earned(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getDailyRewardRate(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getLastReward(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getLockTime(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getRewardShare(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getStaked(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getStakedLock(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getStakingTokenBalance(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getStartTime(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getTimeElapsed(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getTimeRemaining(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getTotalRewardsClaimed(
      _stakeholder: string,
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getTotalStaked(
      _poolId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

    pause(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

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

    recoverTokens(
      _token: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    renounceOwnership(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setDailyReward(
      _poolId: BigNumberish,
      _dailyRewardRate: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    stake(
      _amount: BigNumberish,
      _poolId: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    transferOwnership(
      newOwner: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    unpause(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    unstake(
      _amount: BigNumberish,
      _poolId: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    updatePoolRewards(
      pid: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;
  };
}
