import { ethers } from 'ethers'; import { Provider } from '@ethersproject/providers'; import { BaseTransactionWrapper } from './base-transaction-wrapper'; import { MintResult, TransactionOptions, MediaInfo, MediaMetadata, IPInfo } from '../types'; /** * Wrapper for ContentNFT contract, used for minting and managing Content NFTs */ export declare class ContentNFTWrapper extends BaseTransactionWrapper { private _contentNFT; /** * Create ContentNFT wrapper instance * @param provider Provider instance * @param signer Signer instance */ constructor(provider: Provider, signer: ethers.Signer); /** * Get ContentNFT contract instance * @returns ContentNFT contract instance */ private getContentNFT; /** * Mint a new ContentNFT (New Contract Interface) * @param to Recipient address * @param uri Metadata URI * @param options Transaction options * @returns Transaction object and minted NFT ID */ mint(to: string, uri: string, options?: TransactionOptions): Promise<{ tx: ethers.ContractTransaction; tokenId: ethers.BigNumber; }>; /** * Set media information for a token * @param tokenId Token ID * @param mediaData Media information data * @param options Transaction options * @returns Transaction object */ setMediaInfo(tokenId: ethers.BigNumber | number | string, mediaData: { seriesTitle: string; description: string; totalSeasons: number; totalEpisodes: number; genres: string[]; creators: string[]; posterUri: string; }, options?: TransactionOptions): Promise; /** * Get media information (New Contract Interface) * @param tokenId NFT ID * @returns Media information */ getMediaInfo(tokenId: ethers.BigNumber | number | string): Promise; /** * Mint with metadata (Convenience method that combines mint and setMediaInfo) * @param to Recipient address * @param uri Metadata URI * @param metadata Media metadata * @param options Transaction options * @returns Transaction object and minted NFT ID */ mintWithMetadata(to: string, uri: string, metadata: MediaMetadata, options?: TransactionOptions): Promise<{ tx: ethers.ContractTransaction; tokenId: ethers.BigNumber; setInfoTx?: ethers.ContractTransaction; }>; /** * Legacy mint method (for backward compatibility) * @deprecated Use mintWithMetadata instead */ legacyMint(to: string, uri: string, title: string, description: string, ipType?: number, options?: TransactionOptions): Promise<{ tx: ethers.ContractTransaction; tokenId: ethers.BigNumber; }>; /** * Get URI for a specific NFT * @param tokenId NFT ID * @returns NFT's metadata URI */ tokenURI(tokenId: ethers.BigNumber | number | string): Promise; /** * Check if a specific address is the owner of a specific NFT * @param address Address to check * @param tokenId NFT ID * @returns true if the address is the owner; otherwise false */ isOwnerOf(address: string, tokenId: ethers.BigNumber | number | string): Promise; /** * Get the owner of a specific NFT * @param tokenId NFT ID * @returns Owner address */ ownerOf(tokenId: ethers.BigNumber | number | string): Promise; /** * Legacy getIPInfo method (for backward compatibility) * @deprecated Use getMediaInfo instead * @param tokenId NFT ID * @returns IP information */ getIPInfo(tokenId: ethers.BigNumber | number | string): Promise; /** * Convert contract NFT details to MintResult (Updated for new contract) * @param details NFT details from contract * @param tx Transaction object * @returns Formatted mint result */ formatMintResult(details: { tokenId: ethers.BigNumber; uri: string; owner: string; mediaInfo: MediaInfo; }, tx: ethers.ContractTransaction): MintResult; /** * Update connection information (when network changes) * @param provider New Provider * @param signer New Signer */ updateConnection(provider: Provider, signer: ethers.Signer): void; } //# sourceMappingURL=content-nft-wrapper.d.ts.map