/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import type {
  BaseContract,
  BigNumber,
  BigNumberish,
  BytesLike,
  CallOverrides,
  ContractTransaction,
  Overrides,
  PayableOverrides,
  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";

export interface UBISchemeV2Interface extends utils.Interface {
  functions: {
    "avatar()": FunctionFragment;
    "checkEntitlement(address)": FunctionFragment;
    "checkEntitlement()": FunctionFragment;
    "claim()": FunctionFragment;
    "claimDay(uint256)": FunctionFragment;
    "currentCycleLength()": FunctionFragment;
    "currentDay()": FunctionFragment;
    "currentDayInCycle()": FunctionFragment;
    "cycleLength()": FunctionFragment;
    "dailyCyclePool()": FunctionFragment;
    "dailyUBIHistory(uint256)": FunctionFragment;
    "dailyUbi()": FunctionFragment;
    "dao()": FunctionFragment;
    "estimateNextDailyUBI()": FunctionFragment;
    "getClaimAmount(uint256)": FunctionFragment;
    "getClaimerCount(uint256)": FunctionFragment;
    "getDailyStats()": FunctionFragment;
    "hasClaimed(address)": FunctionFragment;
    "initialize(address,uint256)": FunctionFragment;
    "isNotNewUser(address)": FunctionFragment;
    "lastClaimed(address)": FunctionFragment;
    "lastWithdrawDay()": FunctionFragment;
    "minActiveUsers()": FunctionFragment;
    "nameService()": FunctionFragment;
    "nativeToken()": FunctionFragment;
    "pause(bool)": FunctionFragment;
    "paused()": FunctionFragment;
    "periodStart()": FunctionFragment;
    "proxiableUUID()": FunctionFragment;
    "reserveFactor()": FunctionFragment;
    "setCycleLength(uint256)": FunctionFragment;
    "setDay()": FunctionFragment;
    "setNewClaimersReserveFactor(uint32)": FunctionFragment;
    "setShouldWithdrawFromDAO(bool)": FunctionFragment;
    "shouldWithdrawFromDAO()": FunctionFragment;
    "startOfCycle()": FunctionFragment;
    "totalClaimsPerUser(address)": FunctionFragment;
    "updateAvatar()": FunctionFragment;
    "upgradeTo(address)": FunctionFragment;
    "upgradeToAndCall(address,bytes)": FunctionFragment;
    "withdraw(uint256,address)": FunctionFragment;
  };

  getFunction(
    nameOrSignatureOrTopic:
      | "avatar"
      | "checkEntitlement(address)"
      | "checkEntitlement()"
      | "claim"
      | "claimDay"
      | "currentCycleLength"
      | "currentDay"
      | "currentDayInCycle"
      | "cycleLength"
      | "dailyCyclePool"
      | "dailyUBIHistory"
      | "dailyUbi"
      | "dao"
      | "estimateNextDailyUBI"
      | "getClaimAmount"
      | "getClaimerCount"
      | "getDailyStats"
      | "hasClaimed"
      | "initialize"
      | "isNotNewUser"
      | "lastClaimed"
      | "lastWithdrawDay"
      | "minActiveUsers"
      | "nameService"
      | "nativeToken"
      | "pause"
      | "paused"
      | "periodStart"
      | "proxiableUUID"
      | "reserveFactor"
      | "setCycleLength"
      | "setDay"
      | "setNewClaimersReserveFactor"
      | "setShouldWithdrawFromDAO"
      | "shouldWithdrawFromDAO"
      | "startOfCycle"
      | "totalClaimsPerUser"
      | "updateAvatar"
      | "upgradeTo"
      | "upgradeToAndCall"
      | "withdraw"
  ): FunctionFragment;

  encodeFunctionData(functionFragment: "avatar", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "checkEntitlement(address)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "checkEntitlement()",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "claim", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "claimDay",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "currentCycleLength",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "currentDay",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "currentDayInCycle",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "cycleLength",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "dailyCyclePool",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "dailyUBIHistory",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "dailyUbi", values?: undefined): string;
  encodeFunctionData(functionFragment: "dao", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "estimateNextDailyUBI",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getClaimAmount",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getClaimerCount",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getDailyStats",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "hasClaimed", values: [string]): string;
  encodeFunctionData(
    functionFragment: "initialize",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isNotNewUser",
    values: [string]
  ): string;
  encodeFunctionData(functionFragment: "lastClaimed", values: [string]): string;
  encodeFunctionData(
    functionFragment: "lastWithdrawDay",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "minActiveUsers",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "nameService",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "nativeToken",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "pause", values: [boolean]): string;
  encodeFunctionData(functionFragment: "paused", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "periodStart",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "proxiableUUID",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "reserveFactor",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "setCycleLength",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "setDay", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "setNewClaimersReserveFactor",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setShouldWithdrawFromDAO",
    values: [boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "shouldWithdrawFromDAO",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "startOfCycle",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "totalClaimsPerUser",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "updateAvatar",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "upgradeTo", values: [string]): string;
  encodeFunctionData(
    functionFragment: "upgradeToAndCall",
    values: [string, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "withdraw",
    values: [BigNumberish, string]
  ): string;

  decodeFunctionResult(functionFragment: "avatar", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "checkEntitlement(address)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "checkEntitlement()",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "claimDay", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "currentCycleLength",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "currentDay", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "currentDayInCycle",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "cycleLength",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "dailyCyclePool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "dailyUBIHistory",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "dailyUbi", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "dao", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "estimateNextDailyUBI",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getClaimAmount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getClaimerCount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getDailyStats",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "hasClaimed", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isNotNewUser",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "lastClaimed",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "lastWithdrawDay",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "minActiveUsers",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "nameService",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "nativeToken",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "periodStart",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "proxiableUUID",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "reserveFactor",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setCycleLength",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "setDay", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "setNewClaimersReserveFactor",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setShouldWithdrawFromDAO",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "shouldWithdrawFromDAO",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "startOfCycle",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "totalClaimsPerUser",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateAvatar",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "upgradeToAndCall",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result;

  events: {
    "AdminChanged(address,address)": EventFragment;
    "BeaconUpgraded(address)": EventFragment;
    "CycleLengthSet(uint256)": EventFragment;
    "DaySet(uint256)": EventFragment;
    "Initialized(uint8)": EventFragment;
    "ShouldWithdrawFromDAOSet(bool)": EventFragment;
    "UBICalculated(uint256,uint256,uint256)": EventFragment;
    "UBIClaimed(address,uint256)": EventFragment;
    "UBICycleCalculated(uint256,uint256,uint256,uint256)": EventFragment;
    "Upgraded(address)": EventFragment;
    "WithdrawFromDao(uint256,uint256)": EventFragment;
  };

  getEvent(nameOrSignatureOrTopic: "AdminChanged"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "CycleLengthSet"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "DaySet"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ShouldWithdrawFromDAOSet"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UBICalculated"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UBIClaimed"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "UBICycleCalculated"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "WithdrawFromDao"): EventFragment;
}

export interface AdminChangedEventObject {
  previousAdmin: string;
  newAdmin: string;
}
export type AdminChangedEvent = TypedEvent<
  [string, string],
  AdminChangedEventObject
>;

export type AdminChangedEventFilter = TypedEventFilter<AdminChangedEvent>;

export interface BeaconUpgradedEventObject {
  beacon: string;
}
export type BeaconUpgradedEvent = TypedEvent<
  [string],
  BeaconUpgradedEventObject
>;

export type BeaconUpgradedEventFilter = TypedEventFilter<BeaconUpgradedEvent>;

export interface CycleLengthSetEventObject {
  newCycleLength: BigNumber;
}
export type CycleLengthSetEvent = TypedEvent<
  [BigNumber],
  CycleLengthSetEventObject
>;

export type CycleLengthSetEventFilter = TypedEventFilter<CycleLengthSetEvent>;

export interface DaySetEventObject {
  newDay: BigNumber;
}
export type DaySetEvent = TypedEvent<[BigNumber], DaySetEventObject>;

export type DaySetEventFilter = TypedEventFilter<DaySetEvent>;

export interface InitializedEventObject {
  version: number;
}
export type InitializedEvent = TypedEvent<[number], InitializedEventObject>;

export type InitializedEventFilter = TypedEventFilter<InitializedEvent>;

export interface ShouldWithdrawFromDAOSetEventObject {
  ShouldWithdrawFromDAO: boolean;
}
export type ShouldWithdrawFromDAOSetEvent = TypedEvent<
  [boolean],
  ShouldWithdrawFromDAOSetEventObject
>;

export type ShouldWithdrawFromDAOSetEventFilter =
  TypedEventFilter<ShouldWithdrawFromDAOSetEvent>;

export interface UBICalculatedEventObject {
  day: BigNumber;
  dailyUbi: BigNumber;
  blockNumber: BigNumber;
}
export type UBICalculatedEvent = TypedEvent<
  [BigNumber, BigNumber, BigNumber],
  UBICalculatedEventObject
>;

export type UBICalculatedEventFilter = TypedEventFilter<UBICalculatedEvent>;

export interface UBIClaimedEventObject {
  claimer: string;
  amount: BigNumber;
}
export type UBIClaimedEvent = TypedEvent<
  [string, BigNumber],
  UBIClaimedEventObject
>;

export type UBIClaimedEventFilter = TypedEventFilter<UBIClaimedEvent>;

export interface UBICycleCalculatedEventObject {
  day: BigNumber;
  pool: BigNumber;
  cycleLength: BigNumber;
  dailyUBIPool: BigNumber;
}
export type UBICycleCalculatedEvent = TypedEvent<
  [BigNumber, BigNumber, BigNumber, BigNumber],
  UBICycleCalculatedEventObject
>;

export type UBICycleCalculatedEventFilter =
  TypedEventFilter<UBICycleCalculatedEvent>;

export interface UpgradedEventObject {
  implementation: string;
}
export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>;

export type UpgradedEventFilter = TypedEventFilter<UpgradedEvent>;

export interface WithdrawFromDaoEventObject {
  prevBalance: BigNumber;
  newBalance: BigNumber;
}
export type WithdrawFromDaoEvent = TypedEvent<
  [BigNumber, BigNumber],
  WithdrawFromDaoEventObject
>;

export type WithdrawFromDaoEventFilter = TypedEventFilter<WithdrawFromDaoEvent>;

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

  interface: UBISchemeV2Interface;

  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: {
    avatar(overrides?: CallOverrides): Promise<[string]>;

    "checkEntitlement(address)"(
      _member: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    "checkEntitlement()"(overrides?: CallOverrides): Promise<[BigNumber]>;

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

    claimDay(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, BigNumber] & {
        amountOfClaimers: BigNumber;
        claimAmount: BigNumber;
      }
    >;

    currentCycleLength(overrides?: CallOverrides): Promise<[BigNumber]>;

    currentDay(overrides?: CallOverrides): Promise<[BigNumber]>;

    currentDayInCycle(overrides?: CallOverrides): Promise<[BigNumber]>;

    cycleLength(overrides?: CallOverrides): Promise<[BigNumber]>;

    dailyCyclePool(overrides?: CallOverrides): Promise<[BigNumber]>;

    dailyUBIHistory(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [boolean, BigNumber] & { hasWithdrawn: boolean; openAmount: BigNumber }
    >;

    dailyUbi(overrides?: CallOverrides): Promise<[BigNumber]>;

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

    estimateNextDailyUBI(overrides?: CallOverrides): Promise<[BigNumber]>;

    getClaimAmount(
      day: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    getClaimerCount(
      day: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    getDailyStats(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;

    hasClaimed(account: string, overrides?: CallOverrides): Promise<[boolean]>;

    initialize(
      _ns: string,
      _maxInactiveDays: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    isNotNewUser(
      _account: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    lastClaimed(arg0: string, overrides?: CallOverrides): Promise<[BigNumber]>;

    lastWithdrawDay(overrides?: CallOverrides): Promise<[BigNumber]>;

    minActiveUsers(overrides?: CallOverrides): Promise<[BigNumber]>;

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

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

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

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

    periodStart(overrides?: CallOverrides): Promise<[BigNumber]>;

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

    reserveFactor(overrides?: CallOverrides): Promise<[number]>;

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

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

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

    setShouldWithdrawFromDAO(
      _shouldWithdraw: boolean,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

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

    startOfCycle(overrides?: CallOverrides): Promise<[BigNumber]>;

    totalClaimsPerUser(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

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

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

    upgradeToAndCall(
      newImplementation: string,
      data: BytesLike,
      overrides?: PayableOverrides & { from?: string }
    ): Promise<ContractTransaction>;

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

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

  "checkEntitlement(address)"(
    _member: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

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

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

  claimDay(
    arg0: BigNumberish,
    overrides?: CallOverrides
  ): Promise<
    [BigNumber, BigNumber] & {
      amountOfClaimers: BigNumber;
      claimAmount: BigNumber;
    }
  >;

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

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

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

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

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

  dailyUBIHistory(
    arg0: BigNumberish,
    overrides?: CallOverrides
  ): Promise<
    [boolean, BigNumber] & { hasWithdrawn: boolean; openAmount: BigNumber }
  >;

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

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

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

  getClaimAmount(
    day: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  getClaimerCount(
    day: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  getDailyStats(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;

  hasClaimed(account: string, overrides?: CallOverrides): Promise<boolean>;

  initialize(
    _ns: string,
    _maxInactiveDays: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  isNotNewUser(_account: string, overrides?: CallOverrides): Promise<boolean>;

  lastClaimed(arg0: string, overrides?: CallOverrides): Promise<BigNumber>;

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

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

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

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

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

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

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

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

  reserveFactor(overrides?: CallOverrides): Promise<number>;

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

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

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

  setShouldWithdrawFromDAO(
    _shouldWithdraw: boolean,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

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

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

  totalClaimsPerUser(
    arg0: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

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

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

  upgradeToAndCall(
    newImplementation: string,
    data: BytesLike,
    overrides?: PayableOverrides & { from?: string }
  ): Promise<ContractTransaction>;

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

  callStatic: {
    avatar(overrides?: CallOverrides): Promise<string>;

    "checkEntitlement(address)"(
      _member: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

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

    claimDay(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, BigNumber] & {
        amountOfClaimers: BigNumber;
        claimAmount: BigNumber;
      }
    >;

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

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

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

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

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

    dailyUBIHistory(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [boolean, BigNumber] & { hasWithdrawn: boolean; openAmount: BigNumber }
    >;

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

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

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

    getClaimAmount(
      day: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getClaimerCount(
      day: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getDailyStats(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;

    hasClaimed(account: string, overrides?: CallOverrides): Promise<boolean>;

    initialize(
      _ns: string,
      _maxInactiveDays: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    isNotNewUser(_account: string, overrides?: CallOverrides): Promise<boolean>;

    lastClaimed(arg0: string, overrides?: CallOverrides): Promise<BigNumber>;

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

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

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

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

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

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

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

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

    reserveFactor(overrides?: CallOverrides): Promise<number>;

    setCycleLength(
      _newLength: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

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

    setNewClaimersReserveFactor(
      _reserveFactor: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    setShouldWithdrawFromDAO(
      _shouldWithdraw: boolean,
      overrides?: CallOverrides
    ): Promise<void>;

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

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

    totalClaimsPerUser(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    upgradeTo(
      newImplementation: string,
      overrides?: CallOverrides
    ): Promise<void>;

    upgradeToAndCall(
      newImplementation: string,
      data: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    withdraw(
      _amount: BigNumberish,
      _recipient: string,
      overrides?: CallOverrides
    ): Promise<void>;
  };

  filters: {
    "AdminChanged(address,address)"(
      previousAdmin?: null,
      newAdmin?: null
    ): AdminChangedEventFilter;
    AdminChanged(
      previousAdmin?: null,
      newAdmin?: null
    ): AdminChangedEventFilter;

    "BeaconUpgraded(address)"(
      beacon?: string | null
    ): BeaconUpgradedEventFilter;
    BeaconUpgraded(beacon?: string | null): BeaconUpgradedEventFilter;

    "CycleLengthSet(uint256)"(newCycleLength?: null): CycleLengthSetEventFilter;
    CycleLengthSet(newCycleLength?: null): CycleLengthSetEventFilter;

    "DaySet(uint256)"(newDay?: null): DaySetEventFilter;
    DaySet(newDay?: null): DaySetEventFilter;

    "Initialized(uint8)"(version?: null): InitializedEventFilter;
    Initialized(version?: null): InitializedEventFilter;

    "ShouldWithdrawFromDAOSet(bool)"(
      ShouldWithdrawFromDAO?: null
    ): ShouldWithdrawFromDAOSetEventFilter;
    ShouldWithdrawFromDAOSet(
      ShouldWithdrawFromDAO?: null
    ): ShouldWithdrawFromDAOSetEventFilter;

    "UBICalculated(uint256,uint256,uint256)"(
      day?: null,
      dailyUbi?: null,
      blockNumber?: null
    ): UBICalculatedEventFilter;
    UBICalculated(
      day?: null,
      dailyUbi?: null,
      blockNumber?: null
    ): UBICalculatedEventFilter;

    "UBIClaimed(address,uint256)"(
      claimer?: string | null,
      amount?: null
    ): UBIClaimedEventFilter;
    UBIClaimed(claimer?: string | null, amount?: null): UBIClaimedEventFilter;

    "UBICycleCalculated(uint256,uint256,uint256,uint256)"(
      day?: null,
      pool?: null,
      cycleLength?: null,
      dailyUBIPool?: null
    ): UBICycleCalculatedEventFilter;
    UBICycleCalculated(
      day?: null,
      pool?: null,
      cycleLength?: null,
      dailyUBIPool?: null
    ): UBICycleCalculatedEventFilter;

    "Upgraded(address)"(implementation?: string | null): UpgradedEventFilter;
    Upgraded(implementation?: string | null): UpgradedEventFilter;

    "WithdrawFromDao(uint256,uint256)"(
      prevBalance?: null,
      newBalance?: null
    ): WithdrawFromDaoEventFilter;
    WithdrawFromDao(
      prevBalance?: null,
      newBalance?: null
    ): WithdrawFromDaoEventFilter;
  };

  estimateGas: {
    avatar(overrides?: CallOverrides): Promise<BigNumber>;

    "checkEntitlement(address)"(
      _member: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

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

    claimDay(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;

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

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

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

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

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

    dailyUBIHistory(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

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

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

    getClaimAmount(
      day: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getClaimerCount(
      day: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    hasClaimed(account: string, overrides?: CallOverrides): Promise<BigNumber>;

    initialize(
      _ns: string,
      _maxInactiveDays: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    isNotNewUser(
      _account: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    lastClaimed(arg0: string, overrides?: CallOverrides): Promise<BigNumber>;

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

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

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

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

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

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

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

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

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

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

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

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

    setShouldWithdrawFromDAO(
      _shouldWithdraw: boolean,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

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

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

    totalClaimsPerUser(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

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

    upgradeToAndCall(
      newImplementation: string,
      data: BytesLike,
      overrides?: PayableOverrides & { from?: string }
    ): Promise<BigNumber>;

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

  populateTransaction: {
    avatar(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    "checkEntitlement(address)"(
      _member: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

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

    claimDay(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

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

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

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

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

    dailyUBIHistory(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

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

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

    getClaimAmount(
      day: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getClaimerCount(
      day: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

    hasClaimed(
      account: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    initialize(
      _ns: string,
      _maxInactiveDays: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    isNotNewUser(
      _account: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    lastClaimed(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

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

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

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

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

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

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

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

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

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

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

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

    setShouldWithdrawFromDAO(
      _shouldWithdraw: boolean,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

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

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

    totalClaimsPerUser(
      arg0: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

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

    upgradeToAndCall(
      newImplementation: string,
      data: BytesLike,
      overrides?: PayableOverrides & { from?: string }
    ): Promise<PopulatedTransaction>;

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