interface ERC1155 /* is ERC165 */ {
        event TransferSingle(address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value);
        event TransferBatch(address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values);
        event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
        event URI(string _value, uint256 indexed _id);
        function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data) external;
        function safeBatchTransferFrom(address _from, address _to, uint256[] calldata _ids, uint256[] calldata _values, bytes calldata _data) external;
        function balanceOf(address _owner, uint256 _id) external view returns (uint256);
        function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) external view returns (uint256[] memory);
        function setApprovalForAll(address _operator, bool _approved) external;
        function isApprovedForAll(address _owner, address _operator) external view returns (bool);
    }
    /// type(I).interfaceId
    interface ERC165 {
        function supportsInterface(bytes4 interfaceID) external view returns (bool);
    }
     
web3-ethweb3.eth.getBalance : balance of an address at a given blockweb3.eth.signTransaction : sign a transactionweb3.eth.sendSignedTransaction : send a signed transaction to the Ethereum blockchain.web3-shhweb3.shh.post : posts a whisper message to the networkweb3.shh.subscribe : creates a subscription to incoming whisper messagesweb3-bzzweb3.bzz.upload : upload files and folders to Swarmweb3.bzz.download : download files and folders from Swarmweb3-netweb3.*.net.getID : returns the network IDweb3.*.net.getPeerCount : returns the number of peers that the node is connected toweb3-utilsweb3.utils.toWei : converts Ether to Weiweb3.utils.hexToNumberString : converts a hexadecimal value to a stringweb3.utils.isAddress checks if a given string is a valid Ethereum address.ethers.providerethers.providers.InfuraProvider : connect to the Infura hosted network of Ethereum nodesethers.provider.getBalance : Balance of an address or a block in the blockchainethers.provider.resolve : resolve an Ethereum Name Service (ENS) name passed in to an Ethereum address.ethers.contractethers.ContractFactory.fromSolidity : creates a “factory” for deployment of a smart contract from compiler output of the Solidity compiler or from the Truffle generated JSON fileethers.Contract allows you to interact with a smart contract once it has been deployed.ethers.utilsethers.utils.getContractAddress : retrieves a smart contract address from the transaction used to deploy the smart contractethers.utils.computeAddress : computes an address by passing the function the public or private key associated with the addressethers.utils.formatEther will format a passed in amount of Wei into a decimal string of Etherethers.walletethers.wallet.createRandom : create a random new account.ethers.wallet.sign : sign a transaction and returns the signed transaction as a hex string.ethers.wallet.getBalance : balance of a wallet address.