import { ethers } from 'ethers';
import { Provider } from '@ethersproject/providers';
import { BaseApi } from './base-api';
import { VideoMetadata } from '../utils';
import { TransactionOptions } from '../types';
/**
 * IPNFT API module, providing functionality related to IP NFT minting
 */
export declare class IPNFTApi extends BaseApi {
    private _ipnftWrapper;
    /**
     * Create IPNFT API instance
     * @param provider Provider instance
     * @param signer Signer instance
     */
    constructor(provider: Provider, signer: ethers.Signer);
    /**
     * Mint IP NFT
     * @param to Recipient address
     * @param metadata Content metadata
     * @param options Transaction options
     * @returns Transaction object and token ID
     */
    mint(to: string, metadata: VideoMetadata, options?: TransactionOptions): Promise<{
        tx: ethers.ContractTransaction;
        tokenId: ethers.BigNumber;
    }>;
    /**
     * Get NFT details
     * @param tokenId Token ID
     * @returns NFT metadata
     */
    getNFTDetails(tokenId: ethers.BigNumber | number | string): Promise<{
        tokenId: ethers.BigNumber;
        uri: string;
        owner: string;
        seriesTitle: string;
        description: string;
        totalSeasons: ethers.BigNumber;
        totalEpisodes: ethers.BigNumber;
        genres: string[];
        creators: string[];
        createdAt: ethers.BigNumber;
        posterUri: string;
    }>;
    /**
     * Set media details for an NFT
     * @param tokenId Token ID
     * @param mediaData Media information
     * @param options Transaction options
     * @returns Transaction object
     */
    setMediaDetails(tokenId: ethers.BigNumber | number | string, mediaData: {
        seriesTitle: string;
        description: string;
        totalSeasons: number;
        totalEpisodes: number;
        genres: string[];
        creators: string[];
        posterUri: string;
    }, options?: TransactionOptions): Promise<ethers.ContractTransaction>;
    /**
     * Check if a user is the owner of an NFT
     * @param tokenId Token ID
     * @param address User address
     * @returns Whether the user is the owner
     */
    isOwner(tokenId: ethers.BigNumber | number | string, address: string): Promise<boolean>;
    /**
     * Process connection update
     */
    protected onConnectionUpdated(): Promise<void>;
}
//# sourceMappingURL=ipnft-api.d.ts.map