const Moralis = require("moralis/node"); const logger = require("../logger"); async function getNFTOwners(opts) { logger.info('getNFTOwners', opts) const options = { address: opts.address, chain: opts.chain, }; try { return await Moralis.Web3API.token.getNFTOwners(options); } catch (error) { logger.error('getNFTOwners error', error.toString(), JSON.stringify(options)) } return null } async function getTokenIdMetadata(opts) { logger.info('getNFTOwners', opts) const options = { address: opts.address, token_id: opts.token_id, chain: opts.chain, }; try { return await Moralis.Web3API.token.getTokenIdMetadata(options); } catch (error) { logger.error('getTokenIdMetadata', error.toString(), JSON.stringify(opts)) return null; } } async function getNFTMetadata(opts) { logger.info('getNFTMetadata', opts) const options = { address: opts.address, chain: opts.chain, }; try { return await Moralis.Web3API.token.getNFTMetadata(options); } catch (error) { logger.error('getNFTOwners error', error.toString(), JSON.stringify(options)) } } async function getAllTokenIds(opts) { logger.info('getAllTokenIds', opts) const options = { address: opts.address, chain: opts.chain, }; try { return await Moralis.Web3API.token.getAllTokenIds(options); } catch (error) { logger.error('getAllTokenIds error', error.toString(), JSON.stringify(options)) } } async function enableWeb3(chainId, privateKey_) { // Enable web3 await Moralis.enableWeb3({ chainId: chainId, privateKey: privateKey_, }); } async function transferNft(opts) { // sending a token with token id = 1 const options = { type: opts.type, receiver: opts.toAddress, contractAddress: opts.tokenAddress, tokenId: opts.tokenId, }; try { await enableWeb3(opts.chainId,opts.privateKey) } catch (error) { logger.error('transferNft enableWeb3', error.toString(), JSON.stringify(options)) return { code: -1, errMsg: 'enableWeb3'+error.toString(), } } try { return await Moralis.transfer(options); } catch (error) { logger.error('transferNft', error.toString(), JSON.stringify(options)) return { code: -1, errMsg: 'transfer'+error.toString(), } } } module.exports = { getNFTOwners, getNFTMetadata, getTokenIdMetadata, getAllTokenIds, transferNft, }