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

import {
  ethers,
  EventFilter,
  Signer,
  BigNumber,
  BigNumberish,
  PopulatedTransaction,
  BaseContract,
  ContractTransaction,
  Overrides,
  PayableOverrides,
  CallOverrides,
} from "ethers";
import { BytesLike } from "@ethersproject/bytes";
import { Listener, Provider } from "@ethersproject/providers";
import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi";
import { TypedEventFilter, TypedEvent, TypedListener } from "./commons";

interface NFTGaugeInterface extends ethers.utils.Interface {
  functions: {
    "acceptOffer(uint256,address)": FunctionFragment;
    "approve(address,uint256)": FunctionFragment;
    "balanceOf(address)": FunctionFragment;
    "bid(uint256,address,uint256)": FunctionFragment;
    "bidETH(uint256,address)": FunctionFragment;
    "buy(uint256,address,uint256)": FunctionFragment;
    "buyETH(uint256,address)": FunctionFragment;
    "cancelListing(uint256)": FunctionFragment;
    "claim(uint256,address)": FunctionFragment;
    "claimDividends(address,uint256)": FunctionFragment;
    "controller()": FunctionFragment;
    "currentBids(uint256,address)": FunctionFragment;
    "dividendRatios(uint256)": FunctionFragment;
    "dividends(address,uint256,uint256)": FunctionFragment;
    "dividendsLength(address,uint256)": FunctionFragment;
    "factory()": FunctionFragment;
    "futureEpochTime()": FunctionFragment;
    "getApproved(uint256)": FunctionFragment;
    "inflationRate()": FunctionFragment;
    "initialize(address,address,address)": FunctionFragment;
    "integrateCheckpoint()": FunctionFragment;
    "integrateFraction(uint256,address)": FunctionFragment;
    "integrateInvSupply(int128)": FunctionFragment;
    "isApprovedForAll(address,address)": FunctionFragment;
    "isKilled()": FunctionFragment;
    "killMe()": FunctionFragment;
    "lastDividendClaimed(address,uint256,address)": FunctionFragment;
    "listForSale(uint256,uint256,address,uint64,bool)": FunctionFragment;
    "makeOffer(uint256,uint256,address,uint64)": FunctionFragment;
    "makeOfferETH(uint256,uint64)": FunctionFragment;
    "minter()": FunctionFragment;
    "name()": FunctionFragment;
    "nftContract()": FunctionFragment;
    "offers(uint256,address)": FunctionFragment;
    "ownerOf(uint256)": FunctionFragment;
    "period()": FunctionFragment;
    "periodOf(uint256,address)": FunctionFragment;
    "periodTimestamp(int128)": FunctionFragment;
    "points(uint256,address)": FunctionFragment;
    "pointsAt(uint256,address,uint256)": FunctionFragment;
    "pointsSum(uint256)": FunctionFragment;
    "pointsSumAt(uint256,uint256)": FunctionFragment;
    "pointsTotal()": FunctionFragment;
    "pointsTotalAt(uint256)": FunctionFragment;
    "safeTransferFrom(address,address,uint256)": FunctionFragment;
    "sales(uint256,address)": FunctionFragment;
    "setApprovalForAll(address,bool)": FunctionFragment;
    "supportsInterface(bytes4)": FunctionFragment;
    "symbol()": FunctionFragment;
    "tokenURI(uint256)": FunctionFragment;
    "tokenURIRenderer()": FunctionFragment;
    "transferFrom(address,address,uint256)": FunctionFragment;
    "unwrap(uint256,address)": FunctionFragment;
    "userCheckpoint(uint256,address)": FunctionFragment;
    "userWeight(address,uint256)": FunctionFragment;
    "userWeightSum(address)": FunctionFragment;
    "vote(uint256,uint256)": FunctionFragment;
    "votingEscrow()": FunctionFragment;
    "withdrawOffer(uint256)": FunctionFragment;
    "wrap(uint256,uint256,address,uint256)": FunctionFragment;
  };

  encodeFunctionData(
    functionFragment: "acceptOffer",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "approve",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "balanceOf", values: [string]): string;
  encodeFunctionData(
    functionFragment: "bid",
    values: [BigNumberish, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "bidETH",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "buy",
    values: [BigNumberish, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "buyETH",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "cancelListing",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "claim",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "claimDividends",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "controller",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "currentBids",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "dividendRatios",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "dividends",
    values: [string, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "dividendsLength",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "factory", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "futureEpochTime",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getApproved",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "inflationRate",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "initialize",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "integrateCheckpoint",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "integrateFraction",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "integrateInvSupply",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isApprovedForAll",
    values: [string, string]
  ): string;
  encodeFunctionData(functionFragment: "isKilled", values?: undefined): string;
  encodeFunctionData(functionFragment: "killMe", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "lastDividendClaimed",
    values: [string, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "listForSale",
    values: [BigNumberish, BigNumberish, string, BigNumberish, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "makeOffer",
    values: [BigNumberish, BigNumberish, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "makeOfferETH",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "minter", values?: undefined): string;
  encodeFunctionData(functionFragment: "name", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "nftContract",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "offers",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "ownerOf",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "period", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "periodOf",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "periodTimestamp",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "points",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "pointsAt",
    values: [BigNumberish, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "pointsSum",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "pointsSumAt",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "pointsTotal",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "pointsTotalAt",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "safeTransferFrom",
    values: [string, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "sales",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "setApprovalForAll",
    values: [string, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "supportsInterface",
    values: [BytesLike]
  ): string;
  encodeFunctionData(functionFragment: "symbol", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "tokenURI",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "tokenURIRenderer",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "transferFrom",
    values: [string, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "unwrap",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "userCheckpoint",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "userWeight",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "userWeightSum",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "vote",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "votingEscrow",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "withdrawOffer",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "wrap",
    values: [BigNumberish, BigNumberish, string, BigNumberish]
  ): string;

  decodeFunctionResult(
    functionFragment: "acceptOffer",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "bid", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "bidETH", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "buy", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "buyETH", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "cancelListing",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "claimDividends",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "controller", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "currentBids",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "dividendRatios",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "dividends", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "dividendsLength",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "factory", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "futureEpochTime",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getApproved",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "inflationRate",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "integrateCheckpoint",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "integrateFraction",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "integrateInvSupply",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isApprovedForAll",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "isKilled", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "killMe", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "lastDividendClaimed",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "listForSale",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "makeOffer", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "makeOfferETH",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "minter", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "name", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "nftContract",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "offers", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "period", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "periodOf", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "periodTimestamp",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "points", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "pointsAt", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "pointsSum", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "pointsSumAt",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "pointsTotal",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "pointsTotalAt",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "safeTransferFrom",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "sales", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "setApprovalForAll",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "supportsInterface",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "tokenURIRenderer",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "transferFrom",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "unwrap", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "userCheckpoint",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "userWeight", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "userWeightSum",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "vote", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "votingEscrow",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "withdrawOffer",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "wrap", data: BytesLike): Result;

  events: {
    "AcceptOffer(uint256,address,address,uint256,address,uint256)": EventFragment;
    "Approval(address,address,uint256)": EventFragment;
    "ApprovalForAll(address,address,bool)": EventFragment;
    "Bid(uint256,address,address,uint256,address)": EventFragment;
    "Buy(uint256,address,address,uint256,address)": EventFragment;
    "CancelListing(uint256,address)": EventFragment;
    "Claim(uint256,address,address,uint256,address)": EventFragment;
    "ClaimDividends(address,uint256,uint256,address)": EventFragment;
    "DistributeDividend(address,uint256,uint256)": EventFragment;
    "Initialized(uint8)": EventFragment;
    "ListForSale(uint256,address,uint256,address,uint64,bool)": EventFragment;
    "MakeOffer(uint256,address,uint256,address,uint256)": EventFragment;
    "Transfer(address,address,uint256)": EventFragment;
    "Unwrap(uint256,address)": EventFragment;
    "Vote(uint256,address,uint256)": EventFragment;
    "WithdrawOffer(uint256,address)": EventFragment;
    "Wrap(uint256,address)": EventFragment;
  };

  getEvent(nameOrSignatureOrTopic: "AcceptOffer"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Bid"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Buy"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "CancelListing"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Claim"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ClaimDividends"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "DistributeDividend"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ListForSale"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "MakeOffer"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Unwrap"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Vote"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "WithdrawOffer"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "Wrap"): EventFragment;
}

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

  listeners<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
  ): Array<TypedListener<EventArgsArray, EventArgsObject>>;
  off<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
    listener: TypedListener<EventArgsArray, EventArgsObject>
  ): this;
  on<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
    listener: TypedListener<EventArgsArray, EventArgsObject>
  ): this;
  once<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
    listener: TypedListener<EventArgsArray, EventArgsObject>
  ): this;
  removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
    listener: TypedListener<EventArgsArray, EventArgsObject>
  ): this;
  removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
  ): this;

  listeners(eventName?: string): Array<Listener>;
  off(eventName: string, listener: Listener): this;
  on(eventName: string, listener: Listener): this;
  once(eventName: string, listener: Listener): this;
  removeListener(eventName: string, listener: Listener): this;
  removeAllListeners(eventName?: string): this;

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

  interface: NFTGaugeInterface;

  functions: {
    acceptOffer(
      tokenId: BigNumberish,
      maker: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    approve(
      to: string,
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

    bid(
      tokenId: BigNumberish,
      owner: string,
      price: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    bidETH(
      tokenId: BigNumberish,
      owner: string,
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    buy(
      tokenId: BigNumberish,
      owner: string,
      price: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    buyETH(
      tokenId: BigNumberish,
      owner: string,
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    cancelListing(
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    claim(
      tokenId: BigNumberish,
      owner: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    claimDividends(
      token: string,
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

    currentBids(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, string, BigNumber] & {
        price: BigNumber;
        bidder: string;
        timestamp: BigNumber;
      }
    >;

    dividendRatios(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    dividends(
      arg0: string,
      arg1: BigNumberish,
      arg2: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, BigNumber] & { timestamp: BigNumber; value: BigNumber }
    >;

    dividendsLength(
      token: string,
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

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

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

    getApproved(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string]>;

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

    initialize(
      _nftContract: string,
      _tokenURIRenderer: string,
      _minter: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

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

    integrateInvSupply(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    isApprovedForAll(
      owner: string,
      operator: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

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

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

    lastDividendClaimed(
      arg0: string,
      arg1: BigNumberish,
      arg2: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    listForSale(
      tokenId: BigNumberish,
      price: BigNumberish,
      currency: string,
      deadline: BigNumberish,
      auction: boolean,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    makeOffer(
      tokenId: BigNumberish,
      price: BigNumberish,
      currency: string,
      deadline: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    makeOfferETH(
      tokenId: BigNumberish,
      deadline: BigNumberish,
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

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

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

    offers(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, string, BigNumber, boolean] & {
        price: BigNumber;
        currency: string;
        deadline: BigNumber;
        auction: boolean;
      }
    >;

    ownerOf(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string]>;

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

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

    periodTimestamp(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    points(
      tokenId: BigNumberish,
      user: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    pointsAt(
      tokenId: BigNumberish,
      user: string,
      timestamp: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    pointsSum(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    pointsSumAt(
      tokenId: BigNumberish,
      timestamp: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

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

    pointsTotalAt(
      timestamp: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    "safeTransferFrom(address,address,uint256)"(
      from: string,
      to: string,
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    "safeTransferFrom(address,address,uint256,bytes)"(
      from: string,
      to: string,
      tokenId: BigNumberish,
      _data: BytesLike,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    sales(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, string, BigNumber, boolean] & {
        price: BigNumber;
        currency: string;
        deadline: BigNumber;
        auction: boolean;
      }
    >;

    setApprovalForAll(
      operator: string,
      approved: boolean,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

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

    tokenURI(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string] & { output: string }>;

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

    transferFrom(
      from: string,
      to: string,
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    unwrap(
      tokenId: BigNumberish,
      to: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    userCheckpoint(
      tokenId: BigNumberish,
      user: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

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

    vote(
      tokenId: BigNumberish,
      _userWeight: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

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

    withdrawOffer(
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    wrap(
      tokenId: BigNumberish,
      dividendRatio: BigNumberish,
      to: string,
      _userWeight: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;
  };

  acceptOffer(
    tokenId: BigNumberish,
    maker: string,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  approve(
    to: string,
    tokenId: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

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

  bid(
    tokenId: BigNumberish,
    owner: string,
    price: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  bidETH(
    tokenId: BigNumberish,
    owner: string,
    overrides?: PayableOverrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  buy(
    tokenId: BigNumberish,
    owner: string,
    price: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  buyETH(
    tokenId: BigNumberish,
    owner: string,
    overrides?: PayableOverrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  cancelListing(
    tokenId: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  claim(
    tokenId: BigNumberish,
    owner: string,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  claimDividends(
    token: string,
    tokenId: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

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

  currentBids(
    arg0: BigNumberish,
    arg1: string,
    overrides?: CallOverrides
  ): Promise<
    [BigNumber, string, BigNumber] & {
      price: BigNumber;
      bidder: string;
      timestamp: BigNumber;
    }
  >;

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

  dividends(
    arg0: string,
    arg1: BigNumberish,
    arg2: BigNumberish,
    overrides?: CallOverrides
  ): Promise<
    [BigNumber, BigNumber] & { timestamp: BigNumber; value: BigNumber }
  >;

  dividendsLength(
    token: string,
    tokenId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

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

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

  getApproved(
    tokenId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<string>;

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

  initialize(
    _nftContract: string,
    _tokenURIRenderer: string,
    _minter: string,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

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

  integrateFraction(
    arg0: BigNumberish,
    arg1: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

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

  isApprovedForAll(
    owner: string,
    operator: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

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

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

  lastDividendClaimed(
    arg0: string,
    arg1: BigNumberish,
    arg2: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  listForSale(
    tokenId: BigNumberish,
    price: BigNumberish,
    currency: string,
    deadline: BigNumberish,
    auction: boolean,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  makeOffer(
    tokenId: BigNumberish,
    price: BigNumberish,
    currency: string,
    deadline: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  makeOfferETH(
    tokenId: BigNumberish,
    deadline: BigNumberish,
    overrides?: PayableOverrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

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

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

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

  offers(
    arg0: BigNumberish,
    arg1: string,
    overrides?: CallOverrides
  ): Promise<
    [BigNumber, string, BigNumber, boolean] & {
      price: BigNumber;
      currency: string;
      deadline: BigNumber;
      auction: boolean;
    }
  >;

  ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise<string>;

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

  periodOf(
    arg0: BigNumberish,
    arg1: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

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

  points(
    tokenId: BigNumberish,
    user: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  pointsAt(
    tokenId: BigNumberish,
    user: string,
    timestamp: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  pointsSum(
    tokenId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  pointsSumAt(
    tokenId: BigNumberish,
    timestamp: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

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

  pointsTotalAt(
    timestamp: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  "safeTransferFrom(address,address,uint256)"(
    from: string,
    to: string,
    tokenId: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  "safeTransferFrom(address,address,uint256,bytes)"(
    from: string,
    to: string,
    tokenId: BigNumberish,
    _data: BytesLike,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  sales(
    arg0: BigNumberish,
    arg1: string,
    overrides?: CallOverrides
  ): Promise<
    [BigNumber, string, BigNumber, boolean] & {
      price: BigNumber;
      currency: string;
      deadline: BigNumber;
      auction: boolean;
    }
  >;

  setApprovalForAll(
    operator: string,
    approved: boolean,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  supportsInterface(
    interfaceId: BytesLike,
    overrides?: CallOverrides
  ): Promise<boolean>;

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

  tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise<string>;

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

  transferFrom(
    from: string,
    to: string,
    tokenId: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  unwrap(
    tokenId: BigNumberish,
    to: string,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  userCheckpoint(
    tokenId: BigNumberish,
    user: string,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  userWeight(
    arg0: string,
    arg1: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

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

  vote(
    tokenId: BigNumberish,
    _userWeight: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

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

  withdrawOffer(
    tokenId: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  wrap(
    tokenId: BigNumberish,
    dividendRatio: BigNumberish,
    to: string,
    _userWeight: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  callStatic: {
    acceptOffer(
      tokenId: BigNumberish,
      maker: string,
      overrides?: CallOverrides
    ): Promise<void>;

    approve(
      to: string,
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

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

    bid(
      tokenId: BigNumberish,
      owner: string,
      price: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    bidETH(
      tokenId: BigNumberish,
      owner: string,
      overrides?: CallOverrides
    ): Promise<void>;

    buy(
      tokenId: BigNumberish,
      owner: string,
      price: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    buyETH(
      tokenId: BigNumberish,
      owner: string,
      overrides?: CallOverrides
    ): Promise<void>;

    cancelListing(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    claim(
      tokenId: BigNumberish,
      owner: string,
      overrides?: CallOverrides
    ): Promise<void>;

    claimDividends(
      token: string,
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

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

    currentBids(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, string, BigNumber] & {
        price: BigNumber;
        bidder: string;
        timestamp: BigNumber;
      }
    >;

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

    dividends(
      arg0: string,
      arg1: BigNumberish,
      arg2: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, BigNumber] & { timestamp: BigNumber; value: BigNumber }
    >;

    dividendsLength(
      token: string,
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

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

    getApproved(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

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

    initialize(
      _nftContract: string,
      _tokenURIRenderer: string,
      _minter: string,
      overrides?: CallOverrides
    ): Promise<void>;

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

    integrateFraction(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    isApprovedForAll(
      owner: string,
      operator: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

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

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

    lastDividendClaimed(
      arg0: string,
      arg1: BigNumberish,
      arg2: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    listForSale(
      tokenId: BigNumberish,
      price: BigNumberish,
      currency: string,
      deadline: BigNumberish,
      auction: boolean,
      overrides?: CallOverrides
    ): Promise<void>;

    makeOffer(
      tokenId: BigNumberish,
      price: BigNumberish,
      currency: string,
      deadline: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    makeOfferETH(
      tokenId: BigNumberish,
      deadline: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

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

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

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

    offers(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, string, BigNumber, boolean] & {
        price: BigNumber;
        currency: string;
        deadline: BigNumber;
        auction: boolean;
      }
    >;

    ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise<string>;

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

    periodOf(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    points(
      tokenId: BigNumberish,
      user: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    pointsAt(
      tokenId: BigNumberish,
      user: string,
      timestamp: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    pointsSum(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    pointsSumAt(
      tokenId: BigNumberish,
      timestamp: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    pointsTotalAt(
      timestamp: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "safeTransferFrom(address,address,uint256)"(
      from: string,
      to: string,
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "safeTransferFrom(address,address,uint256,bytes)"(
      from: string,
      to: string,
      tokenId: BigNumberish,
      _data: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    sales(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, string, BigNumber, boolean] & {
        price: BigNumber;
        currency: string;
        deadline: BigNumber;
        auction: boolean;
      }
    >;

    setApprovalForAll(
      operator: string,
      approved: boolean,
      overrides?: CallOverrides
    ): Promise<void>;

    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<boolean>;

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

    tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise<string>;

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

    transferFrom(
      from: string,
      to: string,
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    unwrap(
      tokenId: BigNumberish,
      to: string,
      overrides?: CallOverrides
    ): Promise<void>;

    userCheckpoint(
      tokenId: BigNumberish,
      user: string,
      overrides?: CallOverrides
    ): Promise<void>;

    userWeight(
      arg0: string,
      arg1: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    vote(
      tokenId: BigNumberish,
      _userWeight: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

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

    withdrawOffer(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    wrap(
      tokenId: BigNumberish,
      dividendRatio: BigNumberish,
      to: string,
      _userWeight: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;
  };

  filters: {
    AcceptOffer(
      tokenId?: BigNumberish | null,
      maker?: string | null,
      taker?: string | null,
      price?: null,
      currency?: null,
      deadline?: null
    ): TypedEventFilter<
      [BigNumber, string, string, BigNumber, string, BigNumber],
      {
        tokenId: BigNumber;
        maker: string;
        taker: string;
        price: BigNumber;
        currency: string;
        deadline: BigNumber;
      }
    >;

    Approval(
      owner?: string | null,
      approved?: string | null,
      tokenId?: BigNumberish | null
    ): TypedEventFilter<
      [string, string, BigNumber],
      { owner: string; approved: string; tokenId: BigNumber }
    >;

    ApprovalForAll(
      owner?: string | null,
      operator?: string | null,
      approved?: null
    ): TypedEventFilter<
      [string, string, boolean],
      { owner: string; operator: string; approved: boolean }
    >;

    Bid(
      tokenId?: BigNumberish | null,
      owner?: string | null,
      bidder?: string | null,
      price?: null,
      currency?: null
    ): TypedEventFilter<
      [BigNumber, string, string, BigNumber, string],
      {
        tokenId: BigNumber;
        owner: string;
        bidder: string;
        price: BigNumber;
        currency: string;
      }
    >;

    Buy(
      tokenId?: BigNumberish | null,
      owner?: string | null,
      bidder?: string | null,
      price?: null,
      currency?: null
    ): TypedEventFilter<
      [BigNumber, string, string, BigNumber, string],
      {
        tokenId: BigNumber;
        owner: string;
        bidder: string;
        price: BigNumber;
        currency: string;
      }
    >;

    CancelListing(
      tokenId?: BigNumberish | null,
      owner?: string | null
    ): TypedEventFilter<
      [BigNumber, string],
      { tokenId: BigNumber; owner: string }
    >;

    Claim(
      tokenId?: BigNumberish | null,
      owner?: string | null,
      bidder?: string | null,
      price?: null,
      currency?: null
    ): TypedEventFilter<
      [BigNumber, string, string, BigNumber, string],
      {
        tokenId: BigNumber;
        owner: string;
        bidder: string;
        price: BigNumber;
        currency: string;
      }
    >;

    ClaimDividends(
      token?: string | null,
      tokenId?: BigNumberish | null,
      amount?: null,
      to?: string | null
    ): TypedEventFilter<
      [string, BigNumber, BigNumber, string],
      { token: string; tokenId: BigNumber; amount: BigNumber; to: string }
    >;

    DistributeDividend(
      token?: string | null,
      tokenId?: BigNumberish | null,
      amount?: null
    ): TypedEventFilter<
      [string, BigNumber, BigNumber],
      { token: string; tokenId: BigNumber; amount: BigNumber }
    >;

    Initialized(
      version?: null
    ): TypedEventFilter<[number], { version: number }>;

    ListForSale(
      tokenId?: BigNumberish | null,
      owner?: string | null,
      price?: null,
      currency?: null,
      deadline?: null,
      auction?: boolean | null
    ): TypedEventFilter<
      [BigNumber, string, BigNumber, string, BigNumber, boolean],
      {
        tokenId: BigNumber;
        owner: string;
        price: BigNumber;
        currency: string;
        deadline: BigNumber;
        auction: boolean;
      }
    >;

    MakeOffer(
      tokenId?: BigNumberish | null,
      maker?: string | null,
      price?: null,
      currency?: null,
      deadline?: null
    ): TypedEventFilter<
      [BigNumber, string, BigNumber, string, BigNumber],
      {
        tokenId: BigNumber;
        maker: string;
        price: BigNumber;
        currency: string;
        deadline: BigNumber;
      }
    >;

    Transfer(
      from?: string | null,
      to?: string | null,
      tokenId?: BigNumberish | null
    ): TypedEventFilter<
      [string, string, BigNumber],
      { from: string; to: string; tokenId: BigNumber }
    >;

    Unwrap(
      tokenId?: BigNumberish | null,
      to?: string | null
    ): TypedEventFilter<
      [BigNumber, string],
      { tokenId: BigNumber; to: string }
    >;

    Vote(
      tokenId?: BigNumberish | null,
      user?: string | null,
      weight?: null
    ): TypedEventFilter<
      [BigNumber, string, BigNumber],
      { tokenId: BigNumber; user: string; weight: BigNumber }
    >;

    WithdrawOffer(
      tokenId?: BigNumberish | null,
      maker?: string | null
    ): TypedEventFilter<
      [BigNumber, string],
      { tokenId: BigNumber; maker: string }
    >;

    Wrap(
      tokenId?: BigNumberish | null,
      to?: string | null
    ): TypedEventFilter<
      [BigNumber, string],
      { tokenId: BigNumber; to: string }
    >;
  };

  estimateGas: {
    acceptOffer(
      tokenId: BigNumberish,
      maker: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    approve(
      to: string,
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

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

    bid(
      tokenId: BigNumberish,
      owner: string,
      price: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    bidETH(
      tokenId: BigNumberish,
      owner: string,
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    buy(
      tokenId: BigNumberish,
      owner: string,
      price: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    buyETH(
      tokenId: BigNumberish,
      owner: string,
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    cancelListing(
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    claim(
      tokenId: BigNumberish,
      owner: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    claimDividends(
      token: string,
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

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

    currentBids(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    dividends(
      arg0: string,
      arg1: BigNumberish,
      arg2: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    dividendsLength(
      token: string,
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

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

    getApproved(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    initialize(
      _nftContract: string,
      _tokenURIRenderer: string,
      _minter: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

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

    integrateFraction(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    isApprovedForAll(
      owner: string,
      operator: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

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

    lastDividendClaimed(
      arg0: string,
      arg1: BigNumberish,
      arg2: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    listForSale(
      tokenId: BigNumberish,
      price: BigNumberish,
      currency: string,
      deadline: BigNumberish,
      auction: boolean,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    makeOffer(
      tokenId: BigNumberish,
      price: BigNumberish,
      currency: string,
      deadline: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    makeOfferETH(
      tokenId: BigNumberish,
      deadline: BigNumberish,
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

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

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

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

    offers(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    ownerOf(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    periodOf(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    points(
      tokenId: BigNumberish,
      user: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    pointsAt(
      tokenId: BigNumberish,
      user: string,
      timestamp: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    pointsSum(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    pointsSumAt(
      tokenId: BigNumberish,
      timestamp: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    pointsTotalAt(
      timestamp: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "safeTransferFrom(address,address,uint256)"(
      from: string,
      to: string,
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    "safeTransferFrom(address,address,uint256,bytes)"(
      from: string,
      to: string,
      tokenId: BigNumberish,
      _data: BytesLike,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    sales(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    setApprovalForAll(
      operator: string,
      approved: boolean,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    tokenURI(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    transferFrom(
      from: string,
      to: string,
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    unwrap(
      tokenId: BigNumberish,
      to: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    userCheckpoint(
      tokenId: BigNumberish,
      user: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    userWeight(
      arg0: string,
      arg1: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

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

    vote(
      tokenId: BigNumberish,
      _userWeight: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

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

    withdrawOffer(
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    wrap(
      tokenId: BigNumberish,
      dividendRatio: BigNumberish,
      to: string,
      _userWeight: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;
  };

  populateTransaction: {
    acceptOffer(
      tokenId: BigNumberish,
      maker: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    approve(
      to: string,
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

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

    bid(
      tokenId: BigNumberish,
      owner: string,
      price: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    bidETH(
      tokenId: BigNumberish,
      owner: string,
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    buy(
      tokenId: BigNumberish,
      owner: string,
      price: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    buyETH(
      tokenId: BigNumberish,
      owner: string,
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    cancelListing(
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    claim(
      tokenId: BigNumberish,
      owner: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    claimDividends(
      token: string,
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

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

    currentBids(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

    dividends(
      arg0: string,
      arg1: BigNumberish,
      arg2: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    dividendsLength(
      token: string,
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

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

    getApproved(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

    initialize(
      _nftContract: string,
      _tokenURIRenderer: string,
      _minter: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

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

    integrateFraction(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

    isApprovedForAll(
      owner: string,
      operator: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

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

    lastDividendClaimed(
      arg0: string,
      arg1: BigNumberish,
      arg2: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    listForSale(
      tokenId: BigNumberish,
      price: BigNumberish,
      currency: string,
      deadline: BigNumberish,
      auction: boolean,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    makeOffer(
      tokenId: BigNumberish,
      price: BigNumberish,
      currency: string,
      deadline: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    makeOfferETH(
      tokenId: BigNumberish,
      deadline: BigNumberish,
      overrides?: PayableOverrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

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

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

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

    offers(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    ownerOf(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

    periodOf(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

    points(
      tokenId: BigNumberish,
      user: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    pointsAt(
      tokenId: BigNumberish,
      user: string,
      timestamp: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    pointsSum(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    pointsSumAt(
      tokenId: BigNumberish,
      timestamp: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

    pointsTotalAt(
      timestamp: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "safeTransferFrom(address,address,uint256)"(
      from: string,
      to: string,
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    "safeTransferFrom(address,address,uint256,bytes)"(
      from: string,
      to: string,
      tokenId: BigNumberish,
      _data: BytesLike,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    sales(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    setApprovalForAll(
      operator: string,
      approved: boolean,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

    tokenURI(
      tokenId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

    transferFrom(
      from: string,
      to: string,
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    unwrap(
      tokenId: BigNumberish,
      to: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    userCheckpoint(
      tokenId: BigNumberish,
      user: string,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    userWeight(
      arg0: string,
      arg1: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

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

    vote(
      tokenId: BigNumberish,
      _userWeight: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

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

    withdrawOffer(
      tokenId: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    wrap(
      tokenId: BigNumberish,
      dividendRatio: BigNumberish,
      to: string,
      _userWeight: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;
  };
}
