import { TransactionRequest } from 'ethers'; import { MetadataAndTokenURI, NftRoles, ReceiptOrEstimate, AbiItem } from '../@types/index.js'; import { SmartContract } from './SmartContract.js'; import type { MetadataProof } from '@oceanprotocol/ddo-js'; export declare class Nft extends SmartContract { getDefaultAbi(): AbiItem[]; /** * Create new ERC20 Datatoken - only user with DatatokenDeployer permission can succeed * @param {String} nftAddress NFT address * @param {String} address User address * @param {String} minter User set as initial minter for the Datatoken * @param {String} paymentCollector initial paymentCollector for this DT * @param {String} mpFeeAddress Consume marketplace fee address * @param {String} feeToken address of the token marketplace wants to add fee on top * @param {String} feeAmount amount of feeToken to be transferred to mpFeeAddress on top, will be converted to WEI * @param {String} cap Maximum cap (Number) - will be converted to wei * @param {String} name Token name * @param {String} symbol Token symbol * @param {Number} templateIndex NFT template index * @param {Boolean} estimateGas if True, return gas estimate * @return {Promise} ERC20 Datatoken address */ createDatatoken(nftAddress: string, address: string, minter: string, paymentCollector: string, mpFeeAddress: string, feeToken: string, feeAmount: string, cap: string, name?: string, symbol?: string, templateIndex?: number, filesObject?: string, accessListContract?: string, allowAccessList?: string, denyAccessList?: string, estimateGas?: G): Promise; createDatatokenTx(nftAddress: string, address: string, minter: string, paymentCollector: string, mpFeeAddress: string, feeToken: string, feeAmount: string, cap: string, name?: string, symbol?: string, templateIndex?: number, filesObject?: string, accessListContract?: string, allowAccessList?: string, denyAccessList?: string): Promise; /** * Add Manager for NFT Contract (only NFT Owner can succeed) * @param {String} nftAddress NFT contract address * @param {String} address NFT Owner adress * @param {String} manager User adress which is going to be assing manager * @param {Boolean} [estimateGas] if True, return gas estimate * @return {Promise} trxReceipt */ addManager(nftAddress: string, address: string, manager: string, estimateGas?: G): Promise>; addManagerTx(nftAddress: string, address: string, manager: string): Promise; /** * Removes a specific manager for NFT Contract (only NFT Owner can succeed) * @param {String} nftAddress NFT contract address * @param {String} address NFT Owner adress * @param {String} manager User adress which is going to be removed as manager * @param {Boolean} [estimateGas] if True, return gas estimate * @return {Promise} trxReceipt */ removeManager(nftAddress: string, address: string, manager: string, estimateGas?: G): Promise>; removeManagerTx(nftAddress: string, address: string, manager: string): Promise; /** * Add DatatokenDeployer permission - only Manager can succeed * @param {String} nftAddress NFT contract address * @param {String} address NFT Manager adress * @param {String} datatokenDeployer User adress which is going to have DatatokenDeployer permission * @param {Boolean} estimateGas if True, return gas estimate * @return {Promise} trxReceipt */ addDatatokenDeployer(nftAddress: string, address: string, datatokenDeployer: string, estimateGas?: G): Promise>; addDatatokenDeployerTx(nftAddress: string, address: string, datatokenDeployer: string): Promise; /** * Remove DatatokenDeployer permission - only Manager can succeed * @param {String} nftAddress NFT contract address * @param {String} address NFT Manager adress * @param {String} datatokenDeployer Address of the user to be revoked DatatokenDeployer Permission * @param {Boolean} estimateGas if True, return gas estimate * @return {Promise} trxReceipt */ removeDatatokenDeployer(nftAddress: string, address: string, datatokenDeployer: string, estimateGas?: G): Promise>; removeDatatokenDeployerTx(nftAddress: string, address: string, datatokenDeployer: string): Promise; /** * Add Metadata Updater permission - only Manager can succeed * @param {String} nftAddress NFT contract address * @param {String} address NFT Manager adress * @param {String} metadataUpdater User adress which is going to have Metadata Updater permission * @param {Boolean} estimateGas if True, return gas estimate * @return {Promise} trxReceipt */ addMetadataUpdater(nftAddress: string, address: string, metadataUpdater: string, estimateGas?: G): Promise>; addMetadataUpdaterTx(nftAddress: string, address: string, metadataUpdater: string): Promise; /** * Remove Metadata Updater permission - only Manager can succeed * @param {String} nftAddress NFT contract address * @param {String} address NFT Manager adress * @param {String} metadataUpdater Address of the user to be revoked Metadata updater Permission * @param {Boolean} estimateGas if True, return gas estimate * @return {Promise} trxReceipt */ removeMetadataUpdater(nftAddress: string, address: string, metadataUpdater: string, estimateGas?: G): Promise>; removeMetadataUpdaterTx(nftAddress: string, address: string, metadataUpdater: string): Promise; /** * Add Store Updater permission - only Manager can succeed * @param {String} nftAddress NFT contract address * @param {String} address NFT Manager adress * @param {String} storeUpdater User adress which is going to have Store Updater permission * @param {Boolean} estimateGas if True, return gas estimate * @return {Promise} trxReceipt */ addStoreUpdater(nftAddress: string, address: string, storeUpdater: string, estimateGas?: G): Promise>; addStoreUpdaterTx(nftAddress: string, address: string, storeUpdater: string): Promise; /** * Remove Store Updater permission - only Manager can succeed * @param {String} nftAddress NFT contract address * @param {String} address NFT Manager adress * @param {String} storeUpdater Address of the user to be revoked Store Updater Permission * @param {Boolean} estimateGas if True, return gas estimate * @return {Promise} trxReceipt */ removeStoreUpdater(nftAddress: string, address: string, storeUpdater: string, estimateGas?: G): Promise>; removeStoreUpdaterTx(nftAddress: string, address: string, storeUpdater: string): Promise; /** * This function allows to remove all ROLES at NFT level: Managers, DatatokenDeployer, MetadataUpdater, StoreUpdater * Even NFT Owner has to readd himself as Manager * Permissions at Datatoken level stay. * Only NFT Owner can call it. * @param {String} nftAddress NFT contract address * @param {String} address NFT Owner adress * @param {Boolean} estimateGas if True, return gas estimate * @return {Promise} trxReceipt */ cleanPermissions(nftAddress: string, address: string, estimateGas?: G): Promise>; cleanPermissionsTx(nftAddress: string, address: string): Promise; /** * Transfers the NFT * will clean all permissions both on NFT and Datatoken level. * @param {String} nftAddress NFT contract address * @param {String} nftOwner Current NFT Owner adress * @param {String} nftReceiver User which will receive the NFT, will also be set as Manager * @param {Number} tokenId The id of the token to be transfered * @param {Boolean} estimateGas if True, return gas estimate * @return {Promise} trxReceipt */ transferNft(nftAddress: string, nftOwner: string, nftReceiver: string, tokenId?: number, estimateGas?: G): Promise>; transferNftTx(nftAddress: string, nftOwner: string, nftReceiver: string, tokenId?: number): Promise; /** * safeTransferNFT Used for transferring the NFT, can be used by an approved relayer * will clean all permissions both on NFT and Datatoken level. * @param {String} nftAddress NFT contract address * @param {String} nftOwner Current NFT Owner adress * @param {String} nftReceiver User which will receive the NFT, will also be set as Manager * @param {Number} tokenId The id of the token to be transfered * @param {Boolean} estimateGas if True, return gas estimate * @return {Promise} trxReceipt */ safeTransferNft(nftAddress: string, nftOwner: string, nftReceiver: string, tokenId?: number, estimateGas?: G): Promise>; safeTransferNftTx(nftAddress: string, nftOwner: string, nftReceiver: string, tokenId?: number): Promise; /** * Creates or update Metadata cached by Aquarius. Also, updates the METADATA_DECRYPTOR key * @param {String} nftAddress NFT contract address * @param {String} address Caller address NFT Owner adress * @param {Number} metadataState * @param {String} metadataDecryptorUrl * @param {String} metadataDecryptorAddress * @param {String} flags * @param {String} data * @param {String} metadataHash * @param {MetadataProof[]} metadataProofs * @param {Boolean} estimateGas if True, return gas estimate * @return {Promise} trxReceipt */ setMetadata(nftAddress: string, address: string, metadataState: number, metadataDecryptorUrl: string, metadataDecryptorAddress: string, flags: string, data: string, metadataHash: string, metadataProofs?: MetadataProof[], estimateGas?: G): Promise>; setMetadataTx(nftAddress: string, address: string, metadataState: number, metadataDecryptorUrl: string, metadataDecryptorAddress: string, flags: string, data: string, metadataHash: string, metadataProofs?: MetadataProof[]): Promise; /** * Helper function to improve UX sets both MetaData & TokenURI in one tx * @param {String} nftAddress NFT contract address * @param {String} metadataUpdater Caller address * @param {MetadataAndTokenURI} metadataAndTokenURI metaDataAndTokenURI object * @param {Boolean} estimateGas if True, return gas estimate * @return {Promise} trxReceipt */ setMetadataAndTokenURI(nftAddress: string, metadataUpdater: string, metadataAndTokenURI: MetadataAndTokenURI, estimateGas?: G): Promise>; setMetadataAndTokenURITx(nftAddress: string, metadataUpdater: string, metadataAndTokenURI: MetadataAndTokenURI): Promise; /** * setMetadataState Used for updating the metadata State * @param {String} nftAddress NFT contract address * @param {String} address Caller address => metadata updater * @param {Number} metadataState new metadata state * @param {Boolean} estimateGas if True, return gas estimate * @return {Promise} trxReceipt */ setMetadataState(nftAddress: string, address: string, metadataState: number, estimateGas?: G): Promise>; setMetadataStateTx(nftAddress: string, address: string, metadataState: number): Promise; /** * set TokenURI on an nft * @param {String} nftAddress NFT contract address * @param {String} data input data for TokenURI * @param {Boolean} estimateGas if True, return gas estimate * @return {Promise} transaction receipt */ setTokenURI(nftAddress: string, data: string, estimateGas?: G): Promise>; setTokenURITx(nftAddress: string, data: string): Promise; /** * Get NFT Owner * @param {String} nftAddress NFT contract address * @return {Promise} string */ getNftOwner(nftAddress: string): Promise; /** * Gets NFT Permissions for a specified user * @param {String} nftAddress NFT contract address * @param {String} address user adress * @return {Promise} */ getNftPermissions(nftAddress: string, address: string): Promise; /** * Returns Metadata details for an NFT * @param {String} nftAddress NFT contract address * @return {Promise} */ getMetadata(nftAddress: string): Promise; /** * Checks if user has DatatokenDeployer role * @param {String} nftAddress NFT contract address * @param {String} address user adress * @return {Promise} */ isDatatokenDeployer(nftAddress: string, address: string): Promise; /** * Allows users to store data with a preset key (keccak256(ERC20Address)) into NFT 725 Store * only ERC20Deployer can succeed * @param {string} nftAddress Nft datatoken adress * @param {string} address User adress * @param {string} key Key of the data to be stored into 725Y standard * @param {string} value Data to be stored into 725Y standard * @param {boolean} estimateGas if True, return gas estimate * @return {Promise} transactionId */ setData(nftAddress: string, address: string, key: string, value: string, estimateGas?: G): Promise>; setDataTx(nftAddress: string, address: string, key: string, value: string): Promise; /** * Gets stored data at a given `key` in an NFT * @param {string} nftAddress - The address of the NFT. * @param {string} key - The key of the data to get. * @return {Promise} The data stored at the key */ getData(nftAddress: string, key: string): Promise; /** * Gets the token URI of an NFT. * @param {string} nftAddress - The address of the NFT. * @param {number} id - The ID of the token. * @returns {Promise} */ getTokenURI(nftAddress: string, id: number): Promise; /** * Is datatoken deployed? * @param {string} nftAddress - The address of the NFT. * @param {string} datatokenAddress - The datatoken address. * @returns {Promise} */ isDatatokenDeployed(nftAddress: string, datatokenAddress: string): Promise; }