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

import {
  ethers,
  EventFilter,
  Signer,
  BigNumber,
  BigNumberish,
  PopulatedTransaction,
  BaseContract,
  ContractTransaction,
  Overrides,
  CallOverrides,
} from "ethers";
import { BytesLike } from "@ethersproject/bytes";
import { Listener, Provider } from "@ethersproject/providers";
import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi";
import { TypedEventFilter, TypedEvent, TypedListener } from "./commons";

interface RegistryExtendedInterface extends ethers.utils.Interface {
  functions: {
    "balanceOf(address,uint256)": FunctionFragment;
    "balanceOfBatch(address[],uint256[])": FunctionFragment;
    "batchIssue(address,bytes[],uint256[],uint256[],bytes[])": FunctionFragment;
    "certificateStorage(uint256)": FunctionFragment;
    "claimedBalanceOf(address,uint256)": FunctionFragment;
    "claimedBalanceOfBatch(address[],uint256[])": FunctionFragment;
    "claimedBalances(uint256,address)": FunctionFragment;
    "getCertificate(uint256)": FunctionFragment;
    "isApprovedForAll(address,address)": FunctionFragment;
    "issue(address,bytes,uint256,uint256,bytes)": FunctionFragment;
    "mint(uint256,address,uint256)": FunctionFragment;
    "safeBatchTransferAndClaimFrom(address,address,uint256[],uint256[],bytes,bytes[])": FunctionFragment;
    "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": FunctionFragment;
    "safeTransferAndClaimFrom(address,address,uint256,uint256,bytes,bytes)": FunctionFragment;
    "safeTransferFrom(address,address,uint256,uint256,bytes)": FunctionFragment;
    "setApprovalForAll(address,bool)": FunctionFragment;
    "supportsInterface(bytes4)": FunctionFragment;
    "uri(uint256)": FunctionFragment;
    "batchIssueMultiple(address[],bytes[],uint256[],uint256[],bytes[])": FunctionFragment;
    "safeBatchTransferFromMultiple(address[],address[],uint256[],uint256[],bytes[])": FunctionFragment;
    "safeBatchTransferAndClaimFromMultiple(address[],address[],uint256[],uint256[],bytes[],bytes[])": FunctionFragment;
  };

  encodeFunctionData(
    functionFragment: "balanceOf",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "balanceOfBatch",
    values: [string[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "batchIssue",
    values: [string, BytesLike[], BigNumberish[], BigNumberish[], BytesLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "certificateStorage",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "claimedBalanceOf",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "claimedBalanceOfBatch",
    values: [string[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "claimedBalances",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "getCertificate",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isApprovedForAll",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "issue",
    values: [string, BytesLike, BigNumberish, BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "mint",
    values: [BigNumberish, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "safeBatchTransferAndClaimFrom",
    values: [
      string,
      string,
      BigNumberish[],
      BigNumberish[],
      BytesLike,
      BytesLike[]
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "safeBatchTransferFrom",
    values: [string, string, BigNumberish[], BigNumberish[], BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "safeTransferAndClaimFrom",
    values: [string, string, BigNumberish, BigNumberish, BytesLike, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "safeTransferFrom",
    values: [string, string, BigNumberish, BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setApprovalForAll",
    values: [string, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "supportsInterface",
    values: [BytesLike]
  ): string;
  encodeFunctionData(functionFragment: "uri", values: [BigNumberish]): string;
  encodeFunctionData(
    functionFragment: "batchIssueMultiple",
    values: [string[], BytesLike[], BigNumberish[], BigNumberish[], BytesLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "safeBatchTransferFromMultiple",
    values: [string[], string[], BigNumberish[], BigNumberish[], BytesLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "safeBatchTransferAndClaimFromMultiple",
    values: [
      string[],
      string[],
      BigNumberish[],
      BigNumberish[],
      BytesLike[],
      BytesLike[]
    ]
  ): string;

  decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "balanceOfBatch",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "batchIssue", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "certificateStorage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "claimedBalanceOf",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "claimedBalanceOfBatch",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "claimedBalances",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getCertificate",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isApprovedForAll",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "issue", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "safeBatchTransferAndClaimFrom",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "safeBatchTransferFrom",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "safeTransferAndClaimFrom",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "safeTransferFrom",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setApprovalForAll",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "supportsInterface",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "uri", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "batchIssueMultiple",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "safeBatchTransferFromMultiple",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "safeBatchTransferAndClaimFromMultiple",
    data: BytesLike
  ): Result;

  events: {
    "ApprovalForAll(address,address,bool)": EventFragment;
    "ClaimBatch(address,address,uint256[],uint256[],uint256[],bytes[])": EventFragment;
    "ClaimBatchMultiple(address[],address[],uint256[],uint256[],uint256[],bytes[])": EventFragment;
    "ClaimSingle(address,address,uint256,uint256,uint256,bytes)": EventFragment;
    "IssuanceBatch(address,uint256[],uint256[],uint256[])": EventFragment;
    "IssuanceSingle(address,uint256,uint256,uint256)": EventFragment;
    "TransferBatch(address,address,address,uint256[],uint256[])": EventFragment;
    "TransferBatchMultiple(address,address[],address[],uint256[],uint256[])": EventFragment;
    "TransferSingle(address,address,address,uint256,uint256)": EventFragment;
    "URI(string,uint256)": EventFragment;
  };

  getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ClaimBatch"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ClaimBatchMultiple"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "ClaimSingle"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "IssuanceBatch"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "IssuanceSingle"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "TransferBatch"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "TransferBatchMultiple"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "TransferSingle"): EventFragment;
  getEvent(nameOrSignatureOrTopic: "URI"): EventFragment;
}

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

  listeners<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
  ): Array<TypedListener<EventArgsArray, EventArgsObject>>;
  off<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
    listener: TypedListener<EventArgsArray, EventArgsObject>
  ): this;
  on<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
    listener: TypedListener<EventArgsArray, EventArgsObject>
  ): this;
  once<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
    listener: TypedListener<EventArgsArray, EventArgsObject>
  ): this;
  removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
    listener: TypedListener<EventArgsArray, EventArgsObject>
  ): this;
  removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
    eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
  ): this;

  listeners(eventName?: string): Array<Listener>;
  off(eventName: string, listener: Listener): this;
  on(eventName: string, listener: Listener): this;
  once(eventName: string, listener: Listener): this;
  removeListener(eventName: string, listener: Listener): this;
  removeAllListeners(eventName?: string): this;

  queryFilter<EventArgsArray extends Array<any>, EventArgsObject>(
    event: TypedEventFilter<EventArgsArray, EventArgsObject>,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;

  interface: RegistryExtendedInterface;

  functions: {
    /**
     * See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.
     */
    balanceOf(
      account: string,
      id: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    /**
     * See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.
     */
    balanceOfBatch(
      accounts: string[],
      ids: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<[BigNumber[]]>;

    /**
     * `_to` cannot be the zero address.`_data`, `_values` and `_validityData` must have the same length.
     * See {IERC1888-batchIssue}.
     */
    batchIssue(
      _to: string,
      _validityData: BytesLike[],
      _topics: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    certificateStorage(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, string, string, string] & {
        topic: BigNumber;
        issuer: string;
        validityData: string;
        data: string;
      }
    >;

    /**
     * See {IERC1888-claimedBalanceOf}.
     */
    claimedBalanceOf(
      _owner: string,
      _id: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    /**
     * See {IERC1888-claimedBalanceOfBatch}.
     */
    claimedBalanceOfBatch(
      _owners: string[],
      _ids: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<[BigNumber[]]>;

    claimedBalances(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    /**
     * See {IERC1888-getCertificate}.
     */
    getCertificate(
      _id: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [string, BigNumber, string, string] & {
        issuer: string;
        topic: BigNumber;
        validityCall: string;
        data: string;
      }
    >;

    /**
     * See {IERC1155-isApprovedForAll}.
     */
    isApprovedForAll(
      account: string,
      operator: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    /**
     * `_to` cannot be the zero address.
     * See {IERC1888-issue}.
     */
    issue(
      _to: string,
      _validityData: BytesLike,
      _topic: BigNumberish,
      _value: BigNumberish,
      _data: BytesLike,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    /**
     * Allows batch issuing to an array of _to addresses.`_to` cannot be the zero address.
     * Allows the issuer to mint more fungible tokens for existing ERC-188 certificates.
     */
    mint(
      _id: BigNumberish,
      _to: string,
      _quantity: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    /**
     * `_to` and `_from` cannot be the zero addresses.`_from` has to have a balance above 0.
     * See {IERC1888-safeBatchTransferAndClaimFrom}.
     */
    safeBatchTransferAndClaimFrom(
      _from: string,
      _to: string,
      _ids: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike,
      _claimData: BytesLike[],
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    /**
     * See {IERC1155-safeBatchTransferFrom}.
     */
    safeBatchTransferFrom(
      from: string,
      to: string,
      ids: BigNumberish[],
      amounts: BigNumberish[],
      data: BytesLike,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    /**
     * `_to` cannot be the zero address.`_from` has to have a balance above or equal `_value`.
     * See {IERC1888-safeTransferAndClaimFrom}.
     */
    safeTransferAndClaimFrom(
      _from: string,
      _to: string,
      _id: BigNumberish,
      _value: BigNumberish,
      _data: BytesLike,
      _claimData: BytesLike,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    /**
     * See {IERC1155-safeTransferFrom}.
     */
    safeTransferFrom(
      from: string,
      to: string,
      id: BigNumberish,
      amount: BigNumberish,
      data: BytesLike,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    /**
     * See {IERC1155-setApprovalForAll}.
     */
    setApprovalForAll(
      operator: string,
      approved: boolean,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    /**
     * See {IERC165-supportsInterface}.
     */
    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    /**
     * See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\{id\}` substring with the actual token type ID.
     */
    uri(arg0: BigNumberish, overrides?: CallOverrides): Promise<[string]>;

    /**
     * Allows batch issuing to an array of _to addresses.`_to` cannot be the zero addresses.`_to`, `_data`, `_values`, `_topics` and `_validityData` must have the same length.
     * Similar to {IERC1888-batchIssue}, but not a part of the ERC-1888 standard.
     */
    batchIssueMultiple(
      _to: string[],
      _validityData: BytesLike[],
      _topics: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    /**
     * Allows batch transferring to/from an array of addresses.
     * Similar to {ERC1155-safeBatchTransferFrom}, but not a part of the ERC-1155 standard.
     */
    safeBatchTransferFromMultiple(
      _from: string[],
      _to: string[],
      _ids: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;

    /**
     * Allows batch claiming to/from an array of addresses.
     * Similar to {IERC1888-safeBatchTransferAndClaimFrom}, but not a part of the ERC-1888 standard.
     */
    safeBatchTransferAndClaimFromMultiple(
      _from: string[],
      _to: string[],
      _ids: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      _claimData: BytesLike[],
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<ContractTransaction>;
  };

  /**
   * See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.
   */
  balanceOf(
    account: string,
    id: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  /**
   * See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.
   */
  balanceOfBatch(
    accounts: string[],
    ids: BigNumberish[],
    overrides?: CallOverrides
  ): Promise<BigNumber[]>;

  /**
   * `_to` cannot be the zero address.`_data`, `_values` and `_validityData` must have the same length.
   * See {IERC1888-batchIssue}.
   */
  batchIssue(
    _to: string,
    _validityData: BytesLike[],
    _topics: BigNumberish[],
    _values: BigNumberish[],
    _data: BytesLike[],
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  certificateStorage(
    arg0: BigNumberish,
    overrides?: CallOverrides
  ): Promise<
    [BigNumber, string, string, string] & {
      topic: BigNumber;
      issuer: string;
      validityData: string;
      data: string;
    }
  >;

  /**
   * See {IERC1888-claimedBalanceOf}.
   */
  claimedBalanceOf(
    _owner: string,
    _id: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  /**
   * See {IERC1888-claimedBalanceOfBatch}.
   */
  claimedBalanceOfBatch(
    _owners: string[],
    _ids: BigNumberish[],
    overrides?: CallOverrides
  ): Promise<BigNumber[]>;

  claimedBalances(
    arg0: BigNumberish,
    arg1: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  /**
   * See {IERC1888-getCertificate}.
   */
  getCertificate(
    _id: BigNumberish,
    overrides?: CallOverrides
  ): Promise<
    [string, BigNumber, string, string] & {
      issuer: string;
      topic: BigNumber;
      validityCall: string;
      data: string;
    }
  >;

  /**
   * See {IERC1155-isApprovedForAll}.
   */
  isApprovedForAll(
    account: string,
    operator: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  /**
   * `_to` cannot be the zero address.
   * See {IERC1888-issue}.
   */
  issue(
    _to: string,
    _validityData: BytesLike,
    _topic: BigNumberish,
    _value: BigNumberish,
    _data: BytesLike,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  /**
   * Allows batch issuing to an array of _to addresses.`_to` cannot be the zero address.
   * Allows the issuer to mint more fungible tokens for existing ERC-188 certificates.
   */
  mint(
    _id: BigNumberish,
    _to: string,
    _quantity: BigNumberish,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  /**
   * `_to` and `_from` cannot be the zero addresses.`_from` has to have a balance above 0.
   * See {IERC1888-safeBatchTransferAndClaimFrom}.
   */
  safeBatchTransferAndClaimFrom(
    _from: string,
    _to: string,
    _ids: BigNumberish[],
    _values: BigNumberish[],
    _data: BytesLike,
    _claimData: BytesLike[],
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  /**
   * See {IERC1155-safeBatchTransferFrom}.
   */
  safeBatchTransferFrom(
    from: string,
    to: string,
    ids: BigNumberish[],
    amounts: BigNumberish[],
    data: BytesLike,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  /**
   * `_to` cannot be the zero address.`_from` has to have a balance above or equal `_value`.
   * See {IERC1888-safeTransferAndClaimFrom}.
   */
  safeTransferAndClaimFrom(
    _from: string,
    _to: string,
    _id: BigNumberish,
    _value: BigNumberish,
    _data: BytesLike,
    _claimData: BytesLike,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  /**
   * See {IERC1155-safeTransferFrom}.
   */
  safeTransferFrom(
    from: string,
    to: string,
    id: BigNumberish,
    amount: BigNumberish,
    data: BytesLike,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  /**
   * See {IERC1155-setApprovalForAll}.
   */
  setApprovalForAll(
    operator: string,
    approved: boolean,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  /**
   * See {IERC165-supportsInterface}.
   */
  supportsInterface(
    interfaceId: BytesLike,
    overrides?: CallOverrides
  ): Promise<boolean>;

  /**
   * See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\{id\}` substring with the actual token type ID.
   */
  uri(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;

  /**
   * Allows batch issuing to an array of _to addresses.`_to` cannot be the zero addresses.`_to`, `_data`, `_values`, `_topics` and `_validityData` must have the same length.
   * Similar to {IERC1888-batchIssue}, but not a part of the ERC-1888 standard.
   */
  batchIssueMultiple(
    _to: string[],
    _validityData: BytesLike[],
    _topics: BigNumberish[],
    _values: BigNumberish[],
    _data: BytesLike[],
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  /**
   * Allows batch transferring to/from an array of addresses.
   * Similar to {ERC1155-safeBatchTransferFrom}, but not a part of the ERC-1155 standard.
   */
  safeBatchTransferFromMultiple(
    _from: string[],
    _to: string[],
    _ids: BigNumberish[],
    _values: BigNumberish[],
    _data: BytesLike[],
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  /**
   * Allows batch claiming to/from an array of addresses.
   * Similar to {IERC1888-safeBatchTransferAndClaimFrom}, but not a part of the ERC-1888 standard.
   */
  safeBatchTransferAndClaimFromMultiple(
    _from: string[],
    _to: string[],
    _ids: BigNumberish[],
    _values: BigNumberish[],
    _data: BytesLike[],
    _claimData: BytesLike[],
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

  callStatic: {
    /**
     * See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.
     */
    balanceOf(
      account: string,
      id: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    /**
     * See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.
     */
    balanceOfBatch(
      accounts: string[],
      ids: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<BigNumber[]>;

    /**
     * `_to` cannot be the zero address.`_data`, `_values` and `_validityData` must have the same length.
     * See {IERC1888-batchIssue}.
     */
    batchIssue(
      _to: string,
      _validityData: BytesLike[],
      _topics: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      overrides?: CallOverrides
    ): Promise<BigNumber[]>;

    certificateStorage(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, string, string, string] & {
        topic: BigNumber;
        issuer: string;
        validityData: string;
        data: string;
      }
    >;

    /**
     * See {IERC1888-claimedBalanceOf}.
     */
    claimedBalanceOf(
      _owner: string,
      _id: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    /**
     * See {IERC1888-claimedBalanceOfBatch}.
     */
    claimedBalanceOfBatch(
      _owners: string[],
      _ids: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<BigNumber[]>;

    claimedBalances(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    /**
     * See {IERC1888-getCertificate}.
     */
    getCertificate(
      _id: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [string, BigNumber, string, string] & {
        issuer: string;
        topic: BigNumber;
        validityCall: string;
        data: string;
      }
    >;

    /**
     * See {IERC1155-isApprovedForAll}.
     */
    isApprovedForAll(
      account: string,
      operator: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    /**
     * `_to` cannot be the zero address.
     * See {IERC1888-issue}.
     */
    issue(
      _to: string,
      _validityData: BytesLike,
      _topic: BigNumberish,
      _value: BigNumberish,
      _data: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    /**
     * Allows batch issuing to an array of _to addresses.`_to` cannot be the zero address.
     * Allows the issuer to mint more fungible tokens for existing ERC-188 certificates.
     */
    mint(
      _id: BigNumberish,
      _to: string,
      _quantity: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    /**
     * `_to` and `_from` cannot be the zero addresses.`_from` has to have a balance above 0.
     * See {IERC1888-safeBatchTransferAndClaimFrom}.
     */
    safeBatchTransferAndClaimFrom(
      _from: string,
      _to: string,
      _ids: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike,
      _claimData: BytesLike[],
      overrides?: CallOverrides
    ): Promise<void>;

    /**
     * See {IERC1155-safeBatchTransferFrom}.
     */
    safeBatchTransferFrom(
      from: string,
      to: string,
      ids: BigNumberish[],
      amounts: BigNumberish[],
      data: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    /**
     * `_to` cannot be the zero address.`_from` has to have a balance above or equal `_value`.
     * See {IERC1888-safeTransferAndClaimFrom}.
     */
    safeTransferAndClaimFrom(
      _from: string,
      _to: string,
      _id: BigNumberish,
      _value: BigNumberish,
      _data: BytesLike,
      _claimData: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    /**
     * See {IERC1155-safeTransferFrom}.
     */
    safeTransferFrom(
      from: string,
      to: string,
      id: BigNumberish,
      amount: BigNumberish,
      data: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    /**
     * See {IERC1155-setApprovalForAll}.
     */
    setApprovalForAll(
      operator: string,
      approved: boolean,
      overrides?: CallOverrides
    ): Promise<void>;

    /**
     * See {IERC165-supportsInterface}.
     */
    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<boolean>;

    /**
     * See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\{id\}` substring with the actual token type ID.
     */
    uri(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;

    /**
     * Allows batch issuing to an array of _to addresses.`_to` cannot be the zero addresses.`_to`, `_data`, `_values`, `_topics` and `_validityData` must have the same length.
     * Similar to {IERC1888-batchIssue}, but not a part of the ERC-1888 standard.
     */
    batchIssueMultiple(
      _to: string[],
      _validityData: BytesLike[],
      _topics: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      overrides?: CallOverrides
    ): Promise<BigNumber[]>;

    /**
     * Allows batch transferring to/from an array of addresses.
     * Similar to {ERC1155-safeBatchTransferFrom}, but not a part of the ERC-1155 standard.
     */
    safeBatchTransferFromMultiple(
      _from: string[],
      _to: string[],
      _ids: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      overrides?: CallOverrides
    ): Promise<void>;

    /**
     * Allows batch claiming to/from an array of addresses.
     * Similar to {IERC1888-safeBatchTransferAndClaimFrom}, but not a part of the ERC-1888 standard.
     */
    safeBatchTransferAndClaimFromMultiple(
      _from: string[],
      _to: string[],
      _ids: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      _claimData: BytesLike[],
      overrides?: CallOverrides
    ): Promise<void>;
  };

  filters: {
    ApprovalForAll(
      account?: string | null,
      operator?: string | null,
      approved?: null
    ): TypedEventFilter<
      [string, string, boolean],
      { account: string; operator: string; approved: boolean }
    >;

    ClaimBatch(
      _claimIssuer?: string | null,
      _claimSubject?: string | null,
      _topics?: BigNumberish[] | null,
      _ids?: null,
      _values?: null,
      _claimData?: null
    ): TypedEventFilter<
      [string, string, BigNumber[], BigNumber[], BigNumber[], string[]],
      {
        _claimIssuer: string;
        _claimSubject: string;
        _topics: BigNumber[];
        _ids: BigNumber[];
        _values: BigNumber[];
        _claimData: string[];
      }
    >;

    ClaimBatchMultiple(
      _claimIssuer?: null,
      _claimSubject?: null,
      _topics?: BigNumberish[] | null,
      _ids?: null,
      _values?: null,
      _claimData?: null
    ): TypedEventFilter<
      [string[], string[], BigNumber[], BigNumber[], BigNumber[], string[]],
      {
        _claimIssuer: string[];
        _claimSubject: string[];
        _topics: BigNumber[];
        _ids: BigNumber[];
        _values: BigNumber[];
        _claimData: string[];
      }
    >;

    ClaimSingle(
      _claimIssuer?: string | null,
      _claimSubject?: string | null,
      _topic?: BigNumberish | null,
      _id?: null,
      _value?: null,
      _claimData?: null
    ): TypedEventFilter<
      [string, string, BigNumber, BigNumber, BigNumber, string],
      {
        _claimIssuer: string;
        _claimSubject: string;
        _topic: BigNumber;
        _id: BigNumber;
        _value: BigNumber;
        _claimData: string;
      }
    >;

    IssuanceBatch(
      _issuer?: string | null,
      _topics?: BigNumberish[] | null,
      _ids?: null,
      _values?: null
    ): TypedEventFilter<
      [string, BigNumber[], BigNumber[], BigNumber[]],
      {
        _issuer: string;
        _topics: BigNumber[];
        _ids: BigNumber[];
        _values: BigNumber[];
      }
    >;

    IssuanceSingle(
      _issuer?: string | null,
      _topic?: BigNumberish | null,
      _id?: null,
      _value?: null
    ): TypedEventFilter<
      [string, BigNumber, BigNumber, BigNumber],
      { _issuer: string; _topic: BigNumber; _id: BigNumber; _value: BigNumber }
    >;

    TransferBatch(
      operator?: string | null,
      from?: string | null,
      to?: string | null,
      ids?: null,
      values?: null
    ): TypedEventFilter<
      [string, string, string, BigNumber[], BigNumber[]],
      {
        operator: string;
        from: string;
        to: string;
        ids: BigNumber[];
        values: BigNumber[];
      }
    >;

    TransferBatchMultiple(
      operator?: string | null,
      from?: null,
      to?: null,
      ids?: null,
      values?: null
    ): TypedEventFilter<
      [string, string[], string[], BigNumber[], BigNumber[]],
      {
        operator: string;
        from: string[];
        to: string[];
        ids: BigNumber[];
        values: BigNumber[];
      }
    >;

    TransferSingle(
      operator?: string | null,
      from?: string | null,
      to?: string | null,
      id?: null,
      value?: null
    ): TypedEventFilter<
      [string, string, string, BigNumber, BigNumber],
      {
        operator: string;
        from: string;
        to: string;
        id: BigNumber;
        value: BigNumber;
      }
    >;

    URI(
      value?: null,
      id?: BigNumberish | null
    ): TypedEventFilter<[string, BigNumber], { value: string; id: BigNumber }>;
  };

  estimateGas: {
    /**
     * See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.
     */
    balanceOf(
      account: string,
      id: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    /**
     * See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.
     */
    balanceOfBatch(
      accounts: string[],
      ids: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    /**
     * `_to` cannot be the zero address.`_data`, `_values` and `_validityData` must have the same length.
     * See {IERC1888-batchIssue}.
     */
    batchIssue(
      _to: string,
      _validityData: BytesLike[],
      _topics: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    certificateStorage(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    /**
     * See {IERC1888-claimedBalanceOf}.
     */
    claimedBalanceOf(
      _owner: string,
      _id: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    /**
     * See {IERC1888-claimedBalanceOfBatch}.
     */
    claimedBalanceOfBatch(
      _owners: string[],
      _ids: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    claimedBalances(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    /**
     * See {IERC1888-getCertificate}.
     */
    getCertificate(
      _id: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    /**
     * See {IERC1155-isApprovedForAll}.
     */
    isApprovedForAll(
      account: string,
      operator: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    /**
     * `_to` cannot be the zero address.
     * See {IERC1888-issue}.
     */
    issue(
      _to: string,
      _validityData: BytesLike,
      _topic: BigNumberish,
      _value: BigNumberish,
      _data: BytesLike,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    /**
     * Allows batch issuing to an array of _to addresses.`_to` cannot be the zero address.
     * Allows the issuer to mint more fungible tokens for existing ERC-188 certificates.
     */
    mint(
      _id: BigNumberish,
      _to: string,
      _quantity: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    /**
     * `_to` and `_from` cannot be the zero addresses.`_from` has to have a balance above 0.
     * See {IERC1888-safeBatchTransferAndClaimFrom}.
     */
    safeBatchTransferAndClaimFrom(
      _from: string,
      _to: string,
      _ids: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike,
      _claimData: BytesLike[],
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    /**
     * See {IERC1155-safeBatchTransferFrom}.
     */
    safeBatchTransferFrom(
      from: string,
      to: string,
      ids: BigNumberish[],
      amounts: BigNumberish[],
      data: BytesLike,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    /**
     * `_to` cannot be the zero address.`_from` has to have a balance above or equal `_value`.
     * See {IERC1888-safeTransferAndClaimFrom}.
     */
    safeTransferAndClaimFrom(
      _from: string,
      _to: string,
      _id: BigNumberish,
      _value: BigNumberish,
      _data: BytesLike,
      _claimData: BytesLike,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    /**
     * See {IERC1155-safeTransferFrom}.
     */
    safeTransferFrom(
      from: string,
      to: string,
      id: BigNumberish,
      amount: BigNumberish,
      data: BytesLike,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    /**
     * See {IERC1155-setApprovalForAll}.
     */
    setApprovalForAll(
      operator: string,
      approved: boolean,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    /**
     * See {IERC165-supportsInterface}.
     */
    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    /**
     * See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\{id\}` substring with the actual token type ID.
     */
    uri(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;

    /**
     * Allows batch issuing to an array of _to addresses.`_to` cannot be the zero addresses.`_to`, `_data`, `_values`, `_topics` and `_validityData` must have the same length.
     * Similar to {IERC1888-batchIssue}, but not a part of the ERC-1888 standard.
     */
    batchIssueMultiple(
      _to: string[],
      _validityData: BytesLike[],
      _topics: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    /**
     * Allows batch transferring to/from an array of addresses.
     * Similar to {ERC1155-safeBatchTransferFrom}, but not a part of the ERC-1155 standard.
     */
    safeBatchTransferFromMultiple(
      _from: string[],
      _to: string[],
      _ids: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;

    /**
     * Allows batch claiming to/from an array of addresses.
     * Similar to {IERC1888-safeBatchTransferAndClaimFrom}, but not a part of the ERC-1888 standard.
     */
    safeBatchTransferAndClaimFromMultiple(
      _from: string[],
      _to: string[],
      _ids: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      _claimData: BytesLike[],
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<BigNumber>;
  };

  populateTransaction: {
    /**
     * See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.
     */
    balanceOf(
      account: string,
      id: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    /**
     * See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.
     */
    balanceOfBatch(
      accounts: string[],
      ids: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    /**
     * `_to` cannot be the zero address.`_data`, `_values` and `_validityData` must have the same length.
     * See {IERC1888-batchIssue}.
     */
    batchIssue(
      _to: string,
      _validityData: BytesLike[],
      _topics: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    certificateStorage(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    /**
     * See {IERC1888-claimedBalanceOf}.
     */
    claimedBalanceOf(
      _owner: string,
      _id: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    /**
     * See {IERC1888-claimedBalanceOfBatch}.
     */
    claimedBalanceOfBatch(
      _owners: string[],
      _ids: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    claimedBalances(
      arg0: BigNumberish,
      arg1: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    /**
     * See {IERC1888-getCertificate}.
     */
    getCertificate(
      _id: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    /**
     * See {IERC1155-isApprovedForAll}.
     */
    isApprovedForAll(
      account: string,
      operator: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    /**
     * `_to` cannot be the zero address.
     * See {IERC1888-issue}.
     */
    issue(
      _to: string,
      _validityData: BytesLike,
      _topic: BigNumberish,
      _value: BigNumberish,
      _data: BytesLike,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    /**
     * Allows batch issuing to an array of _to addresses.`_to` cannot be the zero address.
     * Allows the issuer to mint more fungible tokens for existing ERC-188 certificates.
     */
    mint(
      _id: BigNumberish,
      _to: string,
      _quantity: BigNumberish,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    /**
     * `_to` and `_from` cannot be the zero addresses.`_from` has to have a balance above 0.
     * See {IERC1888-safeBatchTransferAndClaimFrom}.
     */
    safeBatchTransferAndClaimFrom(
      _from: string,
      _to: string,
      _ids: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike,
      _claimData: BytesLike[],
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    /**
     * See {IERC1155-safeBatchTransferFrom}.
     */
    safeBatchTransferFrom(
      from: string,
      to: string,
      ids: BigNumberish[],
      amounts: BigNumberish[],
      data: BytesLike,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    /**
     * `_to` cannot be the zero address.`_from` has to have a balance above or equal `_value`.
     * See {IERC1888-safeTransferAndClaimFrom}.
     */
    safeTransferAndClaimFrom(
      _from: string,
      _to: string,
      _id: BigNumberish,
      _value: BigNumberish,
      _data: BytesLike,
      _claimData: BytesLike,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    /**
     * See {IERC1155-safeTransferFrom}.
     */
    safeTransferFrom(
      from: string,
      to: string,
      id: BigNumberish,
      amount: BigNumberish,
      data: BytesLike,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    /**
     * See {IERC1155-setApprovalForAll}.
     */
    setApprovalForAll(
      operator: string,
      approved: boolean,
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    /**
     * See {IERC165-supportsInterface}.
     */
    supportsInterface(
      interfaceId: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    /**
     * See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\{id\}` substring with the actual token type ID.
     */
    uri(
      arg0: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    /**
     * Allows batch issuing to an array of _to addresses.`_to` cannot be the zero addresses.`_to`, `_data`, `_values`, `_topics` and `_validityData` must have the same length.
     * Similar to {IERC1888-batchIssue}, but not a part of the ERC-1888 standard.
     */
    batchIssueMultiple(
      _to: string[],
      _validityData: BytesLike[],
      _topics: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    /**
     * Allows batch transferring to/from an array of addresses.
     * Similar to {ERC1155-safeBatchTransferFrom}, but not a part of the ERC-1155 standard.
     */
    safeBatchTransferFromMultiple(
      _from: string[],
      _to: string[],
      _ids: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;

    /**
     * Allows batch claiming to/from an array of addresses.
     * Similar to {IERC1888-safeBatchTransferAndClaimFrom}, but not a part of the ERC-1888 standard.
     */
    safeBatchTransferAndClaimFromMultiple(
      _from: string[],
      _to: string[],
      _ids: BigNumberish[],
      _values: BigNumberish[],
      _data: BytesLike[],
      _claimData: BytesLike[],
      overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<PopulatedTransaction>;
  };
}
