/** * @file ERC721 NFT Helpers * @version 1.0.0 * @lastModified 2024-06-07 * * Helper functions for interacting with ERC721 NFT tokens */ import { ethers } from 'ethers'; import { EthersService } from '../ethersService.js'; import { ERC721Info, ERC721TokenInfo, NFTMetadata, TokenOperationOptions } from './types.js'; /** * Get basic information about an ERC721 NFT collection * * @param ethersService EthersService instance * @param contractAddress NFT contract address * @param provider Optional provider name or instance * @param chainId Optional chain ID * @returns Promise with NFT collection information */ export declare function getNFTInfo(ethersService: EthersService, contractAddress: string, provider?: string, chainId?: number): Promise; /** * Get the owner of a specific NFT * * @param ethersService EthersService instance * @param contractAddress NFT contract address * @param tokenId Token ID to check ownership * @param provider Optional provider name or instance * @param chainId Optional chain ID * @returns Promise with owner address */ export declare function ownerOf(ethersService: EthersService, contractAddress: string, tokenId: string | number, provider?: string, chainId?: number): Promise; /** * Get the token URI for a specific NFT * * @param ethersService EthersService instance * @param contractAddress NFT contract address * @param tokenId Token ID * @param provider Optional provider name or instance * @param chainId Optional chain ID * @returns Promise with token URI */ export declare function getTokenURI(ethersService: EthersService, contractAddress: string, tokenId: string | number, provider?: string, chainId?: number): Promise; /** * Get and parse metadata for a specific NFT * * @param ethersService EthersService instance * @param contractAddress NFT contract address * @param tokenId Token ID * @param provider Optional provider name or instance * @param chainId Optional chain ID * @returns Promise with parsed metadata */ export declare function getMetadata(ethersService: EthersService, contractAddress: string, tokenId: string | number, provider?: string, chainId?: number): Promise; /** * Get the NFT balance of an address * * @param ethersService EthersService instance * @param contractAddress NFT contract address * @param ownerAddress Owner address to check * @param provider Optional provider name or instance * @param chainId Optional chain ID * @returns Promise with number of NFTs owned */ export declare function balanceOf(ethersService: EthersService, contractAddress: string, ownerAddress: string, provider?: string, chainId?: number): Promise; /** * Check if an operator is approved to manage all NFTs * * @param ethersService EthersService instance * @param contractAddress NFT contract address * @param ownerAddress Owner address * @param operatorAddress Operator address to check * @param provider Optional provider name or instance * @param chainId Optional chain ID * @returns Promise with approval status */ export declare function isApprovedForAll(ethersService: EthersService, contractAddress: string, ownerAddress: string, operatorAddress: string, provider?: string, chainId?: number): Promise; /** * Get the approved address for a specific NFT * * @param ethersService EthersService instance * @param contractAddress NFT contract address * @param tokenId Token ID to check * @param provider Optional provider name or instance * @param chainId Optional chain ID * @returns Promise with approved address */ export declare function getApproved(ethersService: EthersService, contractAddress: string, tokenId: string | number, provider?: string, chainId?: number): Promise; /** * Transfer an NFT to a new owner * * @param ethersService EthersService instance * @param contractAddress NFT contract address * @param toAddress Recipient address * @param tokenId Token ID to transfer * @param provider Optional provider name or instance * @param chainId Optional chain ID * @param options Optional transaction options * @returns Promise with transaction response */ export declare function transferNFT(ethersService: EthersService, contractAddress: string, toAddress: string, tokenId: string | number, provider?: string, chainId?: number, options?: TokenOperationOptions): Promise; /** * Safely transfer an NFT to a new owner * * @param ethersService EthersService instance * @param contractAddress NFT contract address * @param toAddress Recipient address * @param tokenId Token ID to transfer * @param data Optional data to include * @param provider Optional provider name or instance * @param chainId Optional chain ID * @param options Optional transaction options * @returns Promise with transaction response */ export declare function safeTransferNFT(ethersService: EthersService, contractAddress: string, toAddress: string, tokenId: string | number, data?: string, provider?: string, chainId?: number, options?: TokenOperationOptions): Promise; /** * Approve an address to manage a specific NFT * * @param ethersService EthersService instance * @param contractAddress NFT contract address * @param approvedAddress Address to approve * @param tokenId Token ID to approve for * @param provider Optional provider name or instance * @param chainId Optional chain ID * @param options Optional transaction options * @returns Promise with transaction response */ export declare function approve(ethersService: EthersService, contractAddress: string, approvedAddress: string, tokenId: string | number, provider?: string, chainId?: number, options?: TokenOperationOptions): Promise; /** * Approve an operator to manage all NFTs * * @param ethersService EthersService instance * @param contractAddress NFT contract address * @param operatorAddress Operator address to approve * @param approved Approval status to set * @param provider Optional provider name or instance * @param chainId Optional chain ID * @param options Optional transaction options * @returns Promise with transaction response */ export declare function setApprovalForAll(ethersService: EthersService, contractAddress: string, operatorAddress: string, approved: boolean, provider?: string, chainId?: number, options?: TokenOperationOptions): Promise; /** * Get all NFTs owned by an address * * @param ethersService EthersService instance * @param contractAddress NFT contract address * @param ownerAddress Owner address to check * @param includeMetadata Whether to include metadata * @param provider Optional provider name or instance * @param chainId Optional chain ID * @returns Promise with array of owned NFTs */ export declare function getUserNFTs(ethersService: EthersService, contractAddress: string, ownerAddress: string, includeMetadata?: boolean, provider?: string, chainId?: number): Promise;