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

import BN from "bn.js";

export type TxID = { transactionId: string };

export interface RarumSales {
  ADMIN_ROLE(): Promise<string>;

  DEFAULT_ADMIN_ROLE(): Promise<string>;

  DOMAIN_SEPARATOR(): Promise<string>;

  MINTER_ROLE(): Promise<string>;

  OPERATOR_ROLE(): Promise<string>;

  allowedPaymentTokens({ arg0 }: { arg0: string }): Promise<boolean>;

  authorizationState({
    authorizer,
    authorization,
  }: {
    authorizer: string;
    authorization: string;
  }): Promise<boolean>;

  authorizedCollections({
    arg0,
  }: {
    arg0: string;
  }): Promise<{
    fee: BN;
    metadataURI: string;
    authorized: boolean;
    created: boolean;
  }>;

  buy: {
    ({
      _owner,
      _offerId,
      _maxPrice,
      _amount,
    }: {
      _owner: string;
      _offerId: number | BN | string;
      _maxPrice: number | BN | string;
      _amount: number | BN | string;
    }): Promise<TxID>;
  };

  collectionOfferCount({ _nft }: { _nft: string }): Promise<BN>;

  createAuthorizedOffer: {
    ({
      _offer,
    }: {
      _offer: {
        supply: number | BN | string;
        maxUnitsPerPurchase: number | BN | string;
        startTime: number | BN | string;
        endTime: number | BN | string;
        owner: string;
        metadataURI: string;
        active: boolean;
        paymentOptions: {
          price: number | BN | string;
          beneficiary: string;
          paymentToken: string;
        };
        deliveryOptions: {
          tokenId: number | BN | string;
          lootBoxOptionId: number | BN | string;
          nft: string;
          lootBox: string;
          deliveryType: number | BN | string;
        };
      };
    }): Promise<TxID>;
  };

  createOffer: {
    ({
      _offer,
    }: {
      _offer: {
        supply: number | BN | string;
        maxUnitsPerPurchase: number | BN | string;
        startTime: number | BN | string;
        endTime: number | BN | string;
        owner: string;
        metadataURI: string;
        active: boolean;
        paymentOptions: {
          price: number | BN | string;
          beneficiary: string;
          paymentToken: string;
        };
        deliveryOptions: {
          tokenId: number | BN | string;
          lootBoxOptionId: number | BN | string;
          nft: string;
          lootBox: string;
          deliveryType: number | BN | string;
        };
      };
    }): Promise<TxID>;
  };

  createSignedOffer: {
    ({
      _offer,
      _authorization,
    }: {
      _offer: {
        supply: number | BN | string;
        maxUnitsPerPurchase: number | BN | string;
        startTime: number | BN | string;
        endTime: number | BN | string;
        owner: string;
        metadataURI: string;
        active: boolean;
        paymentOptions: {
          price: number | BN | string;
          beneficiary: string;
          paymentToken: string;
        };
        deliveryOptions: {
          tokenId: number | BN | string;
          lootBoxOptionId: number | BN | string;
          nft: string;
          lootBox: string;
          deliveryType: number | BN | string;
        };
      };
      _authorization: {
        authorization: string;
        deadline: number | BN | string;
        signer: string;
        v: number | BN | string;
        r: string;
        s: string;
      };
    }): Promise<TxID>;
  };

  feeAddress(): Promise<string>;

  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: {
    ({
      _operator,
      _feeAddress,
    }: {
      _operator: string;
      _feeAddress: string;
    }): Promise<TxID>;
  };

  offchainBuy: {
    ({
      _to,
      _offerId,
      _maxPrice,
      _amount,
    }: {
      _to: string;
      _offerId: number | BN | string;
      _maxPrice: number | BN | string;
      _amount: number | BN | string;
    }): Promise<TxID>;
  };

  offers({
    arg0,
    arg1,
  }: {
    arg0: string;
    arg1: number | BN | string;
  }): Promise<{
    id: BN;
    supply: BN;
    totalSold: BN;
    maxUnitsPerPurchase: BN;
    startTime: BN;
    endTime: BN;
    owner: string;
    metadataURI: string;
    active: boolean;
    fromTenant: boolean;
    offerType: BN;
    paymentOptions: { price: BN; beneficiary: string; paymentToken: string };
    deliveryOptions: {
      tokenId: BN;
      lootBoxOptionId: BN;
      nft: string;
      lootBox: string;
      deliveryType: BN;
    };
  }>;

  offersByCollection({
    arg0,
    arg1,
  }: {
    arg0: string;
    arg1: number | BN | string;
  }): Promise<{
    id: BN;
    supply: BN;
    totalSold: BN;
    maxUnitsPerPurchase: BN;
    startTime: BN;
    endTime: BN;
    owner: string;
    metadataURI: string;
    active: boolean;
    fromTenant: boolean;
    offerType: BN;
    paymentOptions: { price: BN; beneficiary: string; paymentToken: string };
    deliveryOptions: {
      tokenId: BN;
      lootBoxOptionId: BN;
      nft: string;
      lootBox: string;
      deliveryType: BN;
    };
  }>;

  offersInCollection({
    _nft,
  }: {
    _nft: string;
  }): Promise<
    {
      id: BN;
      supply: BN;
      totalSold: BN;
      maxUnitsPerPurchase: BN;
      startTime: BN;
      endTime: BN;
      owner: string;
      metadataURI: string;
      active: boolean;
      fromTenant: boolean;
      offerType: BN;
      paymentOptions: { price: BN; beneficiary: string; paymentToken: string };
      deliveryOptions: {
        tokenId: BN;
        lootBoxOptionId: BN;
        nft: string;
        lootBox: string;
        deliveryType: BN;
      };
    }[]
  >;

  offersOf({
    _owner,
  }: {
    _owner: string;
  }): Promise<
    {
      id: BN;
      supply: BN;
      totalSold: BN;
      maxUnitsPerPurchase: BN;
      startTime: BN;
      endTime: BN;
      owner: string;
      metadataURI: string;
      active: boolean;
      fromTenant: boolean;
      offerType: BN;
      paymentOptions: { price: BN; beneficiary: string; paymentToken: string };
      deliveryOptions: {
        tokenId: BN;
        lootBoxOptionId: BN;
        nft: string;
        lootBox: string;
        deliveryType: BN;
      };
    }[]
  >;

  ownerOfferCount({ _owner }: { _owner: string }): Promise<BN>;

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

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

  setCollection: {
    ({
      _nft,
      _fee,
      _metadataURI,
      _authorized,
    }: {
      _nft: string;
      _fee: number | BN | string;
      _metadataURI: string;
      _authorized: boolean;
    }): Promise<TxID>;
  };

  setCollectionStatus: {
    ({ _nft, _newState }: { _nft: string; _newState: boolean }): Promise<TxID>;
  };

  setOfferStatus: {
    ({
      _owner,
      _offerId,
      _newState,
    }: {
      _owner: string;
      _offerId: number | BN | string;
      _newState: boolean;
    }): Promise<TxID>;
  };

  setPaymentTokenStatus: {
    ({
      _paymentToken,
      _newState,
    }: {
      _paymentToken: string;
      _newState: boolean;
    }): Promise<TxID>;
  };

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

  updatePrice: {
    ({
      _owner,
      _offerId,
      _newPrice,
    }: {
      _owner: string;
      _offerId: number | BN | string;
      _newPrice: number | BN | string;
    }): Promise<TxID>;
  };

  updateSupply: {
    ({
      _owner,
      _offerId,
      _newSupply,
    }: {
      _owner: string;
      _offerId: number | BN | string;
      _newSupply: number | BN | string;
    }): Promise<TxID>;
  };

  updateTime: {
    ({
      _owner,
      _offerId,
      _startTime,
      _endTime,
    }: {
      _owner: string;
      _offerId: number | BN | string;
      _startTime: number | BN | string;
      _endTime: number | BN | string;
    }): Promise<TxID>;
  };
}
