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

import BN from "bn.js";

export type TxID = { transactionId: string };

export interface RarumNFTAuction {
  DEFAULT_ADMIN_ROLE(): Promise<string>;

  ONE_HOUR(): Promise<BN>;

  OPERATOR_ROLE(): Promise<string>;

  __ERC1155_init_unchained: {
    (): Promise<TxID>;
  };

  __RarumNFTAuction_init: {
    (): Promise<TxID>;
  };

  _ids(): Promise<BN>;

  auctions({
    arg0,
  }: {
    arg0: number | BN | string;
  }): Promise<{
    amount: BN;
    tokenId: BN;
    bidIncreasePercentage: BN;
    bidExtendPeriod: BN;
    minPrice: BN;
    minNextBid: BN;
    start: BN;
    end: BN;
    highestBid: BN;
    highestBidder: string;
    nftContractAddress: string;
    nftSeller: string;
    ERC20Token: string;
    status: BN;
  }>;

  authorizedAuction: {
    ({
      _newAuction,
      _seller,
    }: {
      _newAuction: {
        nftContractAddress: string;
        tokenId: number | BN | string;
        amount: number | BN | string;
        erc20Token: string;
        minPrice: number | BN | string;
        start: number | BN | string;
        end: number | BN | string;
        bidIncreasePercentage: number | BN | string;
        bidExtendPeriod: number | BN | string;
        feeRecipients: string[];
        feePercentages: (number | BN | string)[];
      };
      _seller: string;
    }): Promise<TxID>;
  };

  authorizedBid: {
    ({
      _auctionId,
      _erc20Token,
      _tokenAmount,
      _bidder,
    }: {
      _auctionId: number | BN | string;
      _erc20Token: string;
      _tokenAmount: number | BN | string;
      _bidder: string;
    }): Promise<TxID>;
  };

  authorizedUpdateMinimumPrice: {
    ({
      _auctionId,
      _seller,
      _newMinPrice,
    }: {
      _auctionId: number | BN | string;
      _seller: string;
      _newMinPrice: number | BN | string;
    }): Promise<TxID>;
  };

  authorizedWithdrawAuction: {
    ({
      _auctionId,
      _seller,
    }: {
      _auctionId: number | BN | string;
      _seller: string;
    }): Promise<TxID>;
  };

  bidPercentageConversionFactor(): Promise<BN>;

  defaultBidExtendPeriod(): Promise<BN>;

  defaultBidIncreasePercentage(): Promise<BN>;

  getActiveAuctionsByHolder({
    _holder,
  }: {
    _holder: string;
  }): Promise<
    {
      amount: BN;
      tokenId: BN;
      bidIncreasePercentage: BN;
      bidExtendPeriod: BN;
      minPrice: BN;
      minNextBid: BN;
      start: BN;
      end: BN;
      highestBid: BN;
      highestBidder: string;
      nftContractAddress: string;
      nftSeller: string;
      ERC20Token: string;
      feeRecipients: string[];
      feePercentages: BN[];
      status: BN;
    }[]
  >;

  getActiveAuctionsByToken({
    _nftContractAddress,
    _tokenId,
  }: {
    _nftContractAddress: string;
    _tokenId: number | BN | string;
  }): Promise<
    {
      amount: BN;
      tokenId: BN;
      bidIncreasePercentage: BN;
      bidExtendPeriod: BN;
      minPrice: BN;
      minNextBid: BN;
      start: BN;
      end: BN;
      highestBid: BN;
      highestBidder: string;
      nftContractAddress: string;
      nftSeller: string;
      ERC20Token: string;
      feeRecipients: string[];
      feePercentages: BN[];
      status: BN;
    }[]
  >;

  getRoleAdmin({ role }: { role: string }): Promise<string>;

  getRoleMember({
    role,
    index,
  }: {
    role: string;
    index: number | BN | string;
  }): Promise<string>;

  getRoleMemberCount({ role }: { role: string }): Promise<BN>;

  grantRole: {
    ({ role, account }: { role: string; account: string }): Promise<TxID>;
  };

  hasRole({
    role,
    account,
  }: {
    role: string;
    account: string;
  }): Promise<boolean>;

  initialize: {
    (): Promise<TxID>;
  };

  onERC1155BatchReceived: {
    ({
      arg0,
      arg1,
      arg2,
      arg3,
      arg4,
    }: {
      arg0: string;
      arg1: string;
      arg2: (number | BN | string)[];
      arg3: (number | BN | string)[];
      arg4: string;
    }): Promise<TxID>;
  };

  onERC1155Received: {
    ({
      arg0,
      arg1,
      arg2,
      arg3,
      arg4,
    }: {
      arg0: string;
      arg1: string;
      arg2: number | BN | string;
      arg3: number | BN | string;
      arg4: string;
    }): Promise<TxID>;
  };

  renounceRole: {
    ({ role, account }: { role: string; account: string }): Promise<TxID>;
  };

  revokeRole: {
    ({ role, account }: { role: string; account: string }): Promise<TxID>;
  };

  settleAuction: {
    ({ _auctionId }: { _auctionId: number | BN | string }): Promise<TxID>;
  };

  supportsInterface({ interfaceId }: { interfaceId: string }): Promise<boolean>;

  takeHighestBid: {
    ({
      _auctionId,
      _seller,
    }: {
      _auctionId: number | BN | string;
      _seller: string;
    }): Promise<TxID>;
  };

  updateExtendBidPeriod: {
    ({ _newPeriod }: { _newPeriod: number | BN | string }): Promise<TxID>;
  };
}
