@gotake/gotake-sdk
Version:
SDK for interacting with GoTake blockchain contracts
120 lines • 4.37 kB
TypeScript
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 IPNFT contract, used for minting and managing IP NFTs
*/
export declare class IPNFTWrapper extends BaseTransactionWrapper {
private _ipnft;
/**
* Create IPNFT wrapper instance
* @param provider Provider instance
* @param signer Signer instance
*/
constructor(provider: Provider, signer: ethers.Signer);
/**
* Get IPNFT contract instance
* @returns IPNFT contract instance
*/
private getIPNFT;
/**
* Mint a new IPNFT (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<ethers.ContractTransaction>;
/**
* Get media information (New Contract Interface)
* @param tokenId NFT ID
* @returns Media information
*/
getMediaInfo(tokenId: ethers.BigNumber | number | string): Promise<MediaInfo>;
/**
* 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<string>;
/**
* 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<boolean>;
/**
* Get the owner of a specific NFT
* @param tokenId NFT ID
* @returns Owner address
*/
ownerOf(tokenId: ethers.BigNumber | number | string): Promise<string>;
/**
* Legacy getIPInfo method (for backward compatibility)
* @deprecated Use getMediaInfo instead
* @param tokenId NFT ID
* @returns IP information
*/
getIPInfo(tokenId: ethers.BigNumber | number | string): Promise<IPInfo>;
/**
* 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=ipnft-wrapper.d.ts.map