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

import BN from "bn.js";

export type TxID = { transactionId: string };

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

  DEFAULT_ADMIN_ROLE(): Promise<string>;

  DOMAIN_SEPARATOR(): Promise<string>;

  MINTER_ROLE(): Promise<string>;

  OPERATOR_ROLE(): Promise<string>;

  PAUSER_ROLE(): Promise<string>;

  RARUM_LOYALTY_INTERFACE_ID(): Promise<string>;

  addTierURI: {
    ({ _newURI }: { _newURI: string }): Promise<TxID>;
  };

  approve: {
    ({
      to,
      tokenId,
    }: {
      to: string;
      tokenId: number | BN | string;
    }): Promise<TxID>;
  };

  attributes({
    _tokenId,
  }: {
    _tokenId: number | BN | string;
  }): Promise<{ key: string; value: BN }[]>;

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

  authorizeOperator: {
    ({
      _authorization,
    }: {
      _authorization: {
        owner: string;
        operator: string;
        approved: boolean;
        deadline: number | BN | string;
        authorization: string;
        v: number | BN | string;
        r: string;
        s: string;
      };
    }): Promise<TxID>;
  };

  authorizedTransfer: {
    ({
      _authorization,
    }: {
      _authorization: {
        signer: string;
        to: string;
        id: number | BN | string;
        deadline: number | BN | string;
        authorization: string;
        v: number | BN | string;
        r: string;
        s: string;
      };
    }): Promise<TxID>;
  };

  balanceOf({ owner }: { owner: string }): Promise<BN>;

  balancesOf({
    _owner,
  }: {
    _owner: string;
  }): Promise<{ tokenIds: BN[]; tiers: BN[] }>;

  burn: {
    ({ tokenId }: { tokenId: number | BN | string }): Promise<TxID>;
  };

  createTier: {
    ({
      _cid,
      _schema,
      _traits,
    }: {
      _cid: string;
      _schema: string;
      _traits: { key: string; value: number | BN | string }[];
    }): Promise<TxID>;
  };

  eip712Domain(): Promise<{
    fields: string;
    name: string;
    version: string;
    chainId: BN;
    verifyingContract: string;
    salt: string;
    extensions: BN[];
  }>;

  getApproved({ tokenId }: { tokenId: number | BN | string }): 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: {
    ({
      _name,
      _symbol,
      _owner,
    }: {
      _name: string;
      _symbol: string;
      _owner: string;
    }): Promise<TxID>;
  };

  isApprovedForAll({
    owner,
    operator,
  }: {
    owner: string;
    operator: string;
  }): Promise<boolean>;

  isSchema({ _schema }: { _schema: string }): Promise<boolean>;

  mint: {
    ({
      _to,
      _tier,
    }: {
      _to: string;
      _tier: number | BN | string;
    }): Promise<TxID>;
  };

  name(): Promise<string>;

  owner(): Promise<string>;

  ownerOf({ tokenId }: { tokenId: number | BN | string }): Promise<string>;

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

  paused(): Promise<boolean>;

  redeem: {
    ({
      _tokenId,
      _benefit,
      _amount,
    }: {
      _tokenId: number | BN | string;
      _benefit: string;
      _amount: number | BN | string;
    }): Promise<TxID>;
  };

  renounceApproval: {
    ({ _owner }: { _owner: string }): Promise<TxID>;
  };

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

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

  schema({
    _version,
  }: {
    _version: string;
  }): Promise<{ key: string; value: BN }[]>;

  setApprovalForAll: {
    ({
      operator,
      approved,
    }: {
      operator: string;
      approved: boolean;
    }): Promise<TxID>;
  };

  setAttribute: {
    ({
      _tokenId,
      _trait,
      _value,
    }: {
      _tokenId: number | BN | string;
      _trait: string;
      _value: number | BN | string;
    }): Promise<TxID>;
  };

  setOwner: {
    ({ _newOwner }: { _newOwner: string }): Promise<TxID>;
  };

  setSchema: {
    ({
      _version,
      _traits,
    }: {
      _version: string;
      _traits: { key: string; value: number | BN | string }[];
    }): Promise<TxID>;
  };

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

  symbol(): Promise<string>;

  tierCIDs({ arg0 }: { arg0: number | BN | string }): Promise<string>;

  tierList(): Promise<string[]>;

  tierSchemaVersion({ arg0 }: { arg0: number | BN | string }): Promise<string>;

  tokenByIndex({ index }: { index: number | BN | string }): Promise<BN>;

  tokenOfOwnerByIndex({
    owner,
    index,
  }: {
    owner: string;
    index: number | BN | string;
  }): Promise<BN>;

  tokenTierMap({ _tokenId }: { _tokenId: number | BN | string }): Promise<BN>;

  tokenURI({ tokenId }: { tokenId: number | BN | string }): Promise<string>;

  tokensBySchema({ _schema }: { _schema: string }): Promise<{ 0: BN[]; 1: BN }>;

  totalSupply(): Promise<BN>;

  transferFrom: {
    ({
      from,
      to,
      tokenId,
    }: {
      from: string;
      to: string;
      tokenId: number | BN | string;
    }): Promise<TxID>;
  };

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

  updateBaseTokenURI: {
    ({ _newBaseTokenURI }: { _newBaseTokenURI: string }): Promise<TxID>;
  };

  updateTierSchema: {
    ({
      _tier,
      _schema,
    }: {
      _tier: number | BN | string;
      _schema: string;
    }): Promise<TxID>;
  };

  updateTierURI: {
    ({
      _tier,
      _newURI,
    }: {
      _tier: number | BN | string;
      _newURI: string;
    }): Promise<TxID>;
  };

  "safeTransferFrom(address,address,uint256)": {
    ({
      from,
      to,
      tokenId,
    }: {
      from: string;
      to: string;
      tokenId: number | BN | string;
    }): Promise<TxID>;
  };

  "safeTransferFrom(address,address,uint256,bytes)": {
    ({
      from,
      to,
      tokenId,
      data,
    }: {
      from: string;
      to: string;
      tokenId: number | BN | string;
      data: string;
    }): Promise<TxID>;
  };
}
