// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

interface IAddressesProvider {
  /**
   * @dev Sets the address of a contract.
   * @param contractAddress Address of the contract.
   * @param contractName Name of the contract.
   */
  function set(address contractAddress, string memory contractName) external;

  /**
   * @dev Sets the address of multiple contracts.
   * @param contractAddresses Addresses of the contracts.
   * @param contractNames Names of the contracts.
   */
  function setBatch(address[] calldata contractAddresses, string[] calldata contractNames) external;

  /**
   * @dev Returns the address of a contract.
   * @param contractName Name of the contract (string).
   * @return Address of the contract.
   */
  function get(string memory contractName) external view returns (address);

  /**
   * @dev Returns the address of a contract.
   * @param contractNameHash Hash of the name of the contract (bytes32).
   * @return Address of the contract.
   */
  function get(bytes32 contractNameHash) external view returns (address);

  /**
   * @dev Returns the addresses of all contracts inputed.
   * @param contractNames Names of the contracts as strings.
   */
  function getBatch(string[] calldata contractNames) external view returns (address[] memory);

  /**
   * @dev Returns the addresses of all contracts inputed.
   * @param contractNamesHash Names of the contracts as strings.
   */
  function getBatch(bytes32[] calldata contractNamesHash) external view returns (address[] memory);

  /**
   * @dev Returns the addresses of all contracts in `_contractNames`
   * @return Names, Hashed Names and Addresses of all contracts.
   */
  function getAll() external view returns (string[] memory, bytes32[] memory, address[] memory);
}
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"string","name":"baseURI_","type":"string"},{"internalType":"bytes16","name":"appId_","type":"bytes16"},{"internalType":"bool","name":"isImpersonationMode_","type":"bool"},{"components":[{"internalType":"enum AuthType","name":"authType","type":"uint8"},{"internalType":"uint256","name":"userId","type":"uint256"},{"internalType":"bool","name":"isAnon","type":"bool"},{"internalType":"bool","name":"isOptional","type":"bool"},{"internalType":"bool","name":"isSelectableByUser","type":"bool"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"internalType":"struct AuthRequest[]","name":"authRequests_","type":"tuple[]"},{"components":[{"internalType":"enum ClaimType","name":"claimType","type":"uint8"},{"internalType":"bytes16","name":"groupId","type":"bytes16"},{"internalType":"bytes16","name":"groupTimestamp","type":"bytes16"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bool","name":"isOptional","type":"bool"},{"internalType":"bool","name":"isSelectableByUser","type":"bool"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"internalType":"struct ClaimRequest[]","name":"claimRequests_","type":"tuple[]"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"bool","name":"isTransferable_","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"enum AuthType","name":"authType","type":"uint8"}],"name":"AuthTypeNotFoundInVerifiedResult","type":"error"},{"inputs":[],"name":"ERC721NonTransferable","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"baseTokenURI","type":"string"}],"name":"BaseTokenURISet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ADDRESSES_PROVIDER_V2","outputs":[{"internalType":"contract IAddressesProvider","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"APP_ID","outputs":[{"internalType":"bytes16","name":"","type":"bytes16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"IS_IMPERSONATION_MODE","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"IS_TRANSFERABLE","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SISMO_CONNECT_LIB_VERSION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isSelectableByUser","type":"bool"}],"name":"buildSignature","outputs":[{"components":[{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bool","name":"isSelectableByUser","type":"bool"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"internalType":"struct SignatureRequest","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"buildSignature","outputs":[{"components":[{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bool","name":"isSelectableByUser","type":"bool"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"internalType":"struct SignatureRequest","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isSelectableByUser","type":"bool"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"buildSignature","outputs":[{"components":[{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bool","name":"isSelectableByUser","type":"bool"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"internalType":"struct SignatureRequest","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bool","name":"isSelectableByUser","type":"bool"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"buildSignature","outputs":[{"components":[{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bool","name":"isSelectableByUser","type":"bool"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"internalType":"struct SignatureRequest","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"responseBytes","type":"bytes"},{"internalType":"address","name":"to","type":"address"}],"name":"claimWithSismoConnect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"config","outputs":[{"components":[{"internalType":"bytes16","name":"appId","type":"bytes16"},{"components":[{"internalType":"bool","name":"isImpersonationMode","type":"bool"}],"internalType":"struct VaultConfig","name":"vault","type":"tuple"}],"internalType":"struct SismoConnectConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRequests","outputs":[{"components":[{"components":[{"internalType":"enum AuthType","name":"authType","type":"uint8"},{"internalType":"uint256","name":"userId","type":"uint256"},{"internalType":"bool","name":"isAnon","type":"bool"},{"internalType":"bool","name":"isOptional","type":"bool"},{"internalType":"bool","name":"isSelectableByUser","type":"bool"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"internalType":"struct AuthRequest[]","name":"auths","type":"tuple[]"},{"components":[{"internalType":"enum ClaimType","name":"claimType","type":"uint8"},{"internalType":"bytes16","name":"groupId","type":"bytes16"},{"internalType":"bytes16","name":"groupTimestamp","type":"bytes16"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bool","name":"isOptional","type":"bool"},{"internalType":"bool","name":"isSelectableByUser","type":"bool"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"internalType":"struct ClaimRequest[]","name":"claims","type":"tuple[]"}],"internalType":"struct ZKDrop.Requests","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseUri","type":"string"}],"name":"setBaseTokenUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]