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

import BN from "bn.js";

export type TxID = { transactionId: string };

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

  DOMAIN_SEPARATOR(): Promise<string>;

  MINTER_ROLE(): Promise<string>;

  PAUSER_ROLE(): Promise<string>;

  __ERC20AuthorizedPermit_init: {
    ({ _name }: { _name: string }): Promise<TxID>;
  };

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

  allowance({
    owner,
    spender,
  }: {
    owner: string;
    spender: string;
  }): Promise<BN>;

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

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

  authorize: {
    ({
      owner,
      spender,
      value,
      nonce,
      deadline,
      v,
      r,
      s,
    }: {
      owner: string;
      spender: string;
      value: number | BN | string;
      nonce: string;
      deadline: number | BN | string;
      v: number | BN | string;
      r: string;
      s: string;
    }): Promise<TxID>;
  };

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

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

  burnFrom: {
    ({
      account,
      amount,
    }: {
      account: string;
      amount: number | BN | string;
    }): Promise<TxID>;
  };

  decimals(): Promise<BN>;

  decreaseAllowance: {
    ({
      spender,
      subtractedValue,
    }: {
      spender: string;
      subtractedValue: number | BN | string;
    }): Promise<TxID>;
  };

  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>;

  increaseAllowance: {
    ({
      spender,
      addedValue,
    }: {
      spender: string;
      addedValue: number | BN | string;
    }): Promise<TxID>;
  };

  initialize: {
    ({ _name, _symbol }: { _name: string; _symbol: string }): Promise<TxID>;
  };

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

  name(): Promise<string>;

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

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

  paused(): Promise<boolean>;

  permit: {
    ({
      owner,
      spender,
      value,
      deadline,
      v,
      r,
      s,
    }: {
      owner: string;
      spender: string;
      value: number | BN | string;
      deadline: number | BN | string;
      v: number | BN | string;
      r: string;
      s: string;
    }): Promise<TxID>;
  };

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

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

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

  symbol(): Promise<string>;

  totalSupply(): Promise<BN>;

  transfer: {
    ({
      recipient,
      amount,
    }: {
      recipient: string;
      amount: number | BN | string;
    }): Promise<TxID>;
  };

  transferFrom: {
    ({
      sender,
      recipient,
      amount,
    }: {
      sender: string;
      recipient: string;
      amount: number | BN | string;
    }): Promise<TxID>;
  };

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