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

export type RoyaltyFeeRateStruct = {
  receipt: string;
  marketlist: BigNumberish;
  vault: BigNumberish;
  raffle: BigNumberish;
};

export type RoyaltyFeeRateStructOutput = [string, number, number, number] & {
  receipt: string;
  marketlist: number;
  vault: number;
  raffle: number;
};

export type SafeboxFeeRateStruct = {
  receipt: string;
  auctionOwned: BigNumberish;
  auctionExpired: BigNumberish;
  raffle: BigNumberish;
  marketlist: BigNumberish;
};

export type SafeboxFeeRateStructOutput = [
  string,
  number,
  number,
  number,
  number
] & {
  receipt: string;
  auctionOwned: number;
  auctionExpired: number;
  raffle: number;
  marketlist: number;
};

export type VaultFeeRateStruct = {
  receipt: string;
  vaultAuction: BigNumberish;
  redemptionBase: BigNumberish;
};

export type VaultFeeRateStructOutput = [string, number, number] & {
  receipt: string;
  vaultAuction: number;
  redemptionBase: number;
};

export type FeeConfigStruct = {
  royalty: RoyaltyFeeRateStruct;
  safeboxFee: SafeboxFeeRateStruct;
  vaultFee: VaultFeeRateStruct;
};

export type FeeConfigStructOutput = [
  RoyaltyFeeRateStructOutput,
  SafeboxFeeRateStructOutput,
  VaultFeeRateStructOutput
] & {
  royalty: RoyaltyFeeRateStructOutput;
  safeboxFee: SafeboxFeeRateStructOutput;
  vaultFee: VaultFeeRateStructOutput;
};

export type FeeRateStruct = { receipt: string; rateBips: BigNumberish };

export type FeeRateStructOutput = [string, number] & {
  receipt: string;
  rateBips: number;
};

export type FeesStruct = { royalty: FeeRateStruct; protocol: FeeRateStruct };

export type FeesStructOutput = [FeeRateStructOutput, FeeRateStructOutput] & {
  royalty: FeeRateStructOutput;
  protocol: FeeRateStructOutput;
};

export type TicketRecordStruct = {
  buyer: string;
  startIdx: BigNumberish;
  endIdx: BigNumberish;
};

export type TicketRecordStructOutput = [string, number, number] & {
  buyer: string;
  startIdx: number;
  endIdx: number;
};

export type SafeBoxStruct = {
  keyId: BigNumberish;
  expiryTs: BigNumberish;
  owner: string;
};

export type SafeBoxStructOutput = [BigNumber, number, string] & {
  keyId: BigNumber;
  expiryTs: number;
  owner: string;
};

export type SafeBoxKeyStruct = {
  lockingCredit: BigNumberish;
  keyId: BigNumberish;
  vipLevel: BigNumberish;
};

export type SafeBoxKeyStructOutput = [BigNumber, BigNumber, number] & {
  lockingCredit: BigNumber;
  keyId: BigNumber;
  vipLevel: number;
};

export declare namespace FloorGetter {
  export type CollectionInfoStruct = {
    fragmentToken: string;
    freeNftLength: BigNumberish;
    lastUpdatedBucket: BigNumberish;
    nextKeyId: BigNumberish;
    activeSafeBoxCnt: BigNumberish;
    infiniteCnt: BigNumberish;
    nextActivityId: BigNumberish;
    lastVaultAuctionPeriodTs: BigNumberish;
    _contractAddr: string;
  };

  export type CollectionInfoStructOutput = [
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    number,
    string
  ] & {
    fragmentToken: string;
    freeNftLength: BigNumber;
    lastUpdatedBucket: BigNumber;
    nextKeyId: BigNumber;
    activeSafeBoxCnt: BigNumber;
    infiniteCnt: BigNumber;
    nextActivityId: BigNumber;
    lastVaultAuctionPeriodTs: number;
    _contractAddr: string;
  };
}

export interface FloorGetterInterface extends utils.Interface {
  functions: {
    "_flooring()": FunctionFragment;
    "collectionFee(address,address)": FunctionFragment;
    "collectionInfo(address)": FunctionFragment;
    "collectionProxy(address)": FunctionFragment;
    "fragmentTokenOf(address)": FunctionFragment;
    "getAuction(address,uint256)": FunctionFragment;
    "getFreeNftIds(address,uint256,uint256)": FunctionFragment;
    "getPrivateOffer(address,uint256)": FunctionFragment;
    "getRaffle(address,uint256)": FunctionFragment;
    "getRaffleTicketRecords(address,uint256,uint256,uint256)": FunctionFragment;
    "getSafeBox(address,uint256)": FunctionFragment;
    "multicall(bytes[])": FunctionFragment;
    "supportedToken(address)": FunctionFragment;
    "tokenBalance(address,address)": FunctionFragment;
    "userAccount(address)": FunctionFragment;
    "userCollection(address,address,uint256)": FunctionFragment;
  };

  getFunction(
    nameOrSignatureOrTopic:
      | "_flooring"
      | "collectionFee"
      | "collectionInfo"
      | "collectionProxy"
      | "fragmentTokenOf"
      | "getAuction"
      | "getFreeNftIds"
      | "getPrivateOffer"
      | "getRaffle"
      | "getRaffleTicketRecords"
      | "getSafeBox"
      | "multicall"
      | "supportedToken"
      | "tokenBalance"
      | "userAccount"
      | "userCollection"
  ): FunctionFragment;

  encodeFunctionData(functionFragment: "_flooring", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "collectionFee",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "collectionInfo",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "collectionProxy",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "fragmentTokenOf",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "getAuction",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getFreeNftIds",
    values: [string, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getPrivateOffer",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getRaffle",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getRaffleTicketRecords",
    values: [string, BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getSafeBox",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "multicall",
    values: [BytesLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "supportedToken",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "tokenBalance",
    values: [string, string]
  ): string;
  encodeFunctionData(functionFragment: "userAccount", values: [string]): string;
  encodeFunctionData(
    functionFragment: "userCollection",
    values: [string, string, BigNumberish]
  ): string;

  decodeFunctionResult(functionFragment: "_flooring", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "collectionFee",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "collectionInfo",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "collectionProxy",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "fragmentTokenOf",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "getAuction", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getFreeNftIds",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPrivateOffer",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "getRaffle", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getRaffleTicketRecords",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "getSafeBox", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "supportedToken",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "tokenBalance",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "userAccount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "userCollection",
    data: BytesLike
  ): Result;

  events: {};
}

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

  interface: FloorGetterInterface;

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

    collectionFee(
      collection: string,
      token: string,
      overrides?: CallOverrides
    ): Promise<[FeeConfigStructOutput] & { fee: FeeConfigStructOutput }>;

    collectionInfo(
      collection: string,
      overrides?: CallOverrides
    ): Promise<
      [FloorGetter.CollectionInfoStructOutput] & {
        info: FloorGetter.CollectionInfoStructOutput;
      }
    >;

    collectionProxy(
      proxy: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    fragmentTokenOf(
      collection: string,
      overrides?: CallOverrides
    ): Promise<[string] & { token: string }>;

    getAuction(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [
        BigNumber,
        string,
        BigNumber,
        BigNumber,
        string,
        string,
        BigNumber,
        number,
        FeesStructOutput
      ] & {
        endTime: BigNumber;
        bidToken: string;
        minimumBid: BigNumber;
        lastBidAmount: BigNumber;
        lastBidder: string;
        triggerAddress: string;
        activityId: BigNumber;
        typ: number;
        fees: FeesStructOutput;
      }
    >;

    getFreeNftIds(
      collection: string,
      startIdx: BigNumberish,
      size: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber[]] & { nftIds: BigNumber[] }>;

    getPrivateOffer(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [
        BigNumber,
        string,
        BigNumber,
        string,
        string,
        BigNumber,
        FeesStructOutput
      ] & {
        endTime: BigNumber;
        token: string;
        price: BigNumber;
        owner: string;
        buyer: string;
        activityId: BigNumber;
        fees: FeesStructOutput;
      }
    >;

    getRaffle(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [
        number,
        number,
        string,
        BigNumber,
        BigNumber,
        BigNumber,
        string,
        number,
        boolean,
        BigNumber,
        FeesStructOutput
      ] & {
        endTime: number;
        maxTickets: number;
        token: string;
        ticketPrice: BigNumber;
        collectedFund: BigNumber;
        activityId: BigNumber;
        owner: string;
        ticketSold: number;
        isSettling: boolean;
        ticketsArrLen: BigNumber;
        fees: FeesStructOutput;
      }
    >;

    getRaffleTicketRecords(
      collection: string,
      nftId: BigNumberish,
      startIdx: BigNumberish,
      size: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [TicketRecordStructOutput[]] & { tickets: TicketRecordStructOutput[] }
    >;

    getSafeBox(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[SafeBoxStructOutput] & { safeBox: SafeBoxStructOutput }>;

    multicall(
      data: BytesLike[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    supportedToken(
      token: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    tokenBalance(
      user: string,
      token: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    userAccount(
      user: string,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, string, number, BigNumber[], BigNumber, number, number] & {
        minMaintCredit: BigNumber;
        firstCollection: string;
        minMaintVipLevel: number;
        vipKeyCnts: BigNumber[];
        lockedCredit: BigNumber;
        lastQuotaPeriodTs: number;
        safeboxQuotaUsed: number;
      }
    >;

    userCollection(
      user: string,
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, string, number, number, number, SafeBoxKeyStructOutput] & {
        totalLockingCredit: BigNumber;
        next: string;
        keyCnt: number;
        vaultContQuota: number;
        lastVaultActiveTs: number;
        key: SafeBoxKeyStructOutput;
      }
    >;
  };

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

  collectionFee(
    collection: string,
    token: string,
    overrides?: CallOverrides
  ): Promise<FeeConfigStructOutput>;

  collectionInfo(
    collection: string,
    overrides?: CallOverrides
  ): Promise<FloorGetter.CollectionInfoStructOutput>;

  collectionProxy(proxy: string, overrides?: CallOverrides): Promise<string>;

  fragmentTokenOf(
    collection: string,
    overrides?: CallOverrides
  ): Promise<string>;

  getAuction(
    collection: string,
    nftId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<
    [
      BigNumber,
      string,
      BigNumber,
      BigNumber,
      string,
      string,
      BigNumber,
      number,
      FeesStructOutput
    ] & {
      endTime: BigNumber;
      bidToken: string;
      minimumBid: BigNumber;
      lastBidAmount: BigNumber;
      lastBidder: string;
      triggerAddress: string;
      activityId: BigNumber;
      typ: number;
      fees: FeesStructOutput;
    }
  >;

  getFreeNftIds(
    collection: string,
    startIdx: BigNumberish,
    size: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber[]>;

  getPrivateOffer(
    collection: string,
    nftId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<
    [
      BigNumber,
      string,
      BigNumber,
      string,
      string,
      BigNumber,
      FeesStructOutput
    ] & {
      endTime: BigNumber;
      token: string;
      price: BigNumber;
      owner: string;
      buyer: string;
      activityId: BigNumber;
      fees: FeesStructOutput;
    }
  >;

  getRaffle(
    collection: string,
    nftId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<
    [
      number,
      number,
      string,
      BigNumber,
      BigNumber,
      BigNumber,
      string,
      number,
      boolean,
      BigNumber,
      FeesStructOutput
    ] & {
      endTime: number;
      maxTickets: number;
      token: string;
      ticketPrice: BigNumber;
      collectedFund: BigNumber;
      activityId: BigNumber;
      owner: string;
      ticketSold: number;
      isSettling: boolean;
      ticketsArrLen: BigNumber;
      fees: FeesStructOutput;
    }
  >;

  getRaffleTicketRecords(
    collection: string,
    nftId: BigNumberish,
    startIdx: BigNumberish,
    size: BigNumberish,
    overrides?: CallOverrides
  ): Promise<TicketRecordStructOutput[]>;

  getSafeBox(
    collection: string,
    nftId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<SafeBoxStructOutput>;

  multicall(
    data: BytesLike[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  supportedToken(token: string, overrides?: CallOverrides): Promise<boolean>;

  tokenBalance(
    user: string,
    token: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  userAccount(
    user: string,
    overrides?: CallOverrides
  ): Promise<
    [BigNumber, string, number, BigNumber[], BigNumber, number, number] & {
      minMaintCredit: BigNumber;
      firstCollection: string;
      minMaintVipLevel: number;
      vipKeyCnts: BigNumber[];
      lockedCredit: BigNumber;
      lastQuotaPeriodTs: number;
      safeboxQuotaUsed: number;
    }
  >;

  userCollection(
    user: string,
    collection: string,
    nftId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<
    [BigNumber, string, number, number, number, SafeBoxKeyStructOutput] & {
      totalLockingCredit: BigNumber;
      next: string;
      keyCnt: number;
      vaultContQuota: number;
      lastVaultActiveTs: number;
      key: SafeBoxKeyStructOutput;
    }
  >;

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

    collectionFee(
      collection: string,
      token: string,
      overrides?: CallOverrides
    ): Promise<FeeConfigStructOutput>;

    collectionInfo(
      collection: string,
      overrides?: CallOverrides
    ): Promise<FloorGetter.CollectionInfoStructOutput>;

    collectionProxy(proxy: string, overrides?: CallOverrides): Promise<string>;

    fragmentTokenOf(
      collection: string,
      overrides?: CallOverrides
    ): Promise<string>;

    getAuction(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [
        BigNumber,
        string,
        BigNumber,
        BigNumber,
        string,
        string,
        BigNumber,
        number,
        FeesStructOutput
      ] & {
        endTime: BigNumber;
        bidToken: string;
        minimumBid: BigNumber;
        lastBidAmount: BigNumber;
        lastBidder: string;
        triggerAddress: string;
        activityId: BigNumber;
        typ: number;
        fees: FeesStructOutput;
      }
    >;

    getFreeNftIds(
      collection: string,
      startIdx: BigNumberish,
      size: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber[]>;

    getPrivateOffer(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [
        BigNumber,
        string,
        BigNumber,
        string,
        string,
        BigNumber,
        FeesStructOutput
      ] & {
        endTime: BigNumber;
        token: string;
        price: BigNumber;
        owner: string;
        buyer: string;
        activityId: BigNumber;
        fees: FeesStructOutput;
      }
    >;

    getRaffle(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [
        number,
        number,
        string,
        BigNumber,
        BigNumber,
        BigNumber,
        string,
        number,
        boolean,
        BigNumber,
        FeesStructOutput
      ] & {
        endTime: number;
        maxTickets: number;
        token: string;
        ticketPrice: BigNumber;
        collectedFund: BigNumber;
        activityId: BigNumber;
        owner: string;
        ticketSold: number;
        isSettling: boolean;
        ticketsArrLen: BigNumber;
        fees: FeesStructOutput;
      }
    >;

    getRaffleTicketRecords(
      collection: string,
      nftId: BigNumberish,
      startIdx: BigNumberish,
      size: BigNumberish,
      overrides?: CallOverrides
    ): Promise<TicketRecordStructOutput[]>;

    getSafeBox(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<SafeBoxStructOutput>;

    multicall(data: BytesLike[], overrides?: CallOverrides): Promise<string[]>;

    supportedToken(token: string, overrides?: CallOverrides): Promise<boolean>;

    tokenBalance(
      user: string,
      token: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    userAccount(
      user: string,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, string, number, BigNumber[], BigNumber, number, number] & {
        minMaintCredit: BigNumber;
        firstCollection: string;
        minMaintVipLevel: number;
        vipKeyCnts: BigNumber[];
        lockedCredit: BigNumber;
        lastQuotaPeriodTs: number;
        safeboxQuotaUsed: number;
      }
    >;

    userCollection(
      user: string,
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, string, number, number, number, SafeBoxKeyStructOutput] & {
        totalLockingCredit: BigNumber;
        next: string;
        keyCnt: number;
        vaultContQuota: number;
        lastVaultActiveTs: number;
        key: SafeBoxKeyStructOutput;
      }
    >;
  };

  filters: {};

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

    collectionFee(
      collection: string,
      token: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    collectionInfo(
      collection: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    collectionProxy(
      proxy: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    fragmentTokenOf(
      collection: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getAuction(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getFreeNftIds(
      collection: string,
      startIdx: BigNumberish,
      size: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getPrivateOffer(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getRaffle(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getRaffleTicketRecords(
      collection: string,
      nftId: BigNumberish,
      startIdx: BigNumberish,
      size: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getSafeBox(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    multicall(
      data: BytesLike[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    supportedToken(
      token: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    tokenBalance(
      user: string,
      token: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    userAccount(user: string, overrides?: CallOverrides): Promise<BigNumber>;

    userCollection(
      user: string,
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;
  };

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

    collectionFee(
      collection: string,
      token: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    collectionInfo(
      collection: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    collectionProxy(
      proxy: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    fragmentTokenOf(
      collection: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getAuction(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getFreeNftIds(
      collection: string,
      startIdx: BigNumberish,
      size: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getPrivateOffer(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getRaffle(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getRaffleTicketRecords(
      collection: string,
      nftId: BigNumberish,
      startIdx: BigNumberish,
      size: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getSafeBox(
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    multicall(
      data: BytesLike[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    supportedToken(
      token: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    tokenBalance(
      user: string,
      token: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    userAccount(
      user: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    userCollection(
      user: string,
      collection: string,
      nftId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;
  };
}
