/** * Core type definitions for GoodTake SDK */ import { BigNumber } from 'ethers'; import { GasStrategy, GasTier } from './utils/gas-configs'; import { ethers } from 'ethers'; export interface GasConfig { gasLimit?: number | string | BigNumber; maxFeePerGas?: number | string | BigNumber; maxPriorityFeePerGas?: number | string | BigNumber; gasPriceMultiplier?: number; priorityFeeMultiplier?: number; strategy?: GasStrategy; tier?: GasTier; } export interface TransactionOptions { gasConfig?: GasConfig; } export interface BaseTransactionParams { gasConfig?: GasConfig; } export declare enum VideoStatus { UPLOADING = "uploading",// Video is being uploaded to API server PROCESSING = "processing",// Video is being processed by Livepeer READY = "ready",// Video is processed and ready for viewing MINT_READY = "mint_ready",// Video is ready to mint NFT MINTING = "minting",// NFT is being minted COMPLETED = "completed",// Process completed successfully ERROR = "error" } export interface VideoMetadata { title?: string; description?: string; tags?: string[] | string; } export interface MediaInfo { seriesTitle: string; description: string; totalSeasons: BigNumber; totalEpisodes: BigNumber; genres: string[]; creators: string[]; createdAt: BigNumber; posterUri: string; } export interface MediaMetadata { title: string; description?: string; totalSeasons?: number; totalEpisodes?: number; genres?: string[]; creators?: string[]; posterUri?: string; thumbnailUrl?: string; creator?: string; } export interface IPInfo { title: string; description: string; ipType: number; createdAt: BigNumber; } export interface VideoStatusInfo { id: string; status: VideoStatus; progress?: number; message?: string; error?: { code: string; message: string; }; assetInfo?: { assetId: string; playbackUrl?: string; thumbnailUrl?: string; }; mintInfo?: { tokenId?: string; transactionHash?: string; }; updated_at: string; } export type StatusCallback = (status: VideoStatusInfo) => void; export interface Subscription { unsubscribe: () => void; } export interface MintOptions { royaltyPercentage?: number; extraMetadata?: Record; } export interface MintResult { tokenId: string; transactionHash: string; owner: string; metadata: MediaInfo; } export interface PollController { stop: () => void; } export declare enum PaymentMethod { ETH = "ETH", ERC20 = "ERC20" } export interface ContentConfig { contentId: number; nativePrice: BigNumber; viewCount: number; isActive: boolean; } export interface ViewPermission { purchaseTime: BigNumber; remainingViews: BigNumber; isValid: boolean; } export interface PurchaseParams { contentId: number; paymentMethod: PaymentMethod; tokenAddress?: string; amount?: string | number | BigNumber; } export interface PurchaseResult { transactionHash: string; contentId: number; purchaseTime: BigNumber; viewCount: BigNumber; validUntil: BigNumber; gasUsed?: BigNumber; error?: string; } export interface AdminContentParams { contentId: number; nativePrice: string | number | BigNumber; viewCount: number; isActive: boolean; } export interface BatchContentParams { contentIds: number[]; nativePrices: (string | number | BigNumber)[]; viewCounts: number[]; isActiveArray: boolean[]; } export interface TokenPriceParams { contentId: number; tokenAddress: string; price: string | number | BigNumber; } export interface ContentInfo { contentId: number; nativePrice: BigNumber; viewCount: number; isActive: boolean; tokenPrices: Record; } export interface ContentPurchaseInfo { contentId: number; nativePrice: BigNumber; viewCount: number; isActive: boolean; supportedTokens: string[]; tokenPrices: BigNumber[]; isUnlimitedViewing: boolean; } export interface UserPermissionSummary { contentId: number; permission: ViewPermission; contentInfo: ContentInfo; } export interface BatchPurchaseParams { contentIds: number[]; paymentMethod: PaymentMethod; tokenAddress?: string; } export interface BatchPermissionResult { contentId: number; hasPermission: boolean; permission?: ViewPermission; error?: string; } export interface AdminRoleInfo { isOwner: boolean; isAdmin: boolean; canManageContent: boolean; canManageTokens: boolean; canManageAdmins: boolean; } export interface ContentPurchasedEvent { user: string; contentId: number; paymentMethod: PaymentMethod; amount: BigNumber; timestamp: BigNumber; } export interface ViewConsumedEvent { user: string; contentId: number; remainingViews: number; timestamp: BigNumber; } export interface ContentConfigUpdatedEvent { contentId: number; nativePrice: BigNumber; defaultViewCount: number; viewDuration: number; isActive: boolean; timestamp: BigNumber; } export { GasStrategy, GasTier } from './utils/gas-configs'; export { VideoMetadata as OriginalVideoMetadata } from './utils/types'; export type ContractName = 'contentNFT' | 'videoPayment' | 'registry' | 'accountImplementation' | 'mockERC20' | 'accountNFT'; export interface TokenInfo { address: string; name: string; symbol: string; decimals: number; } export interface NetworkInfo { contracts: Record; tokens: TokenInfo[]; } export interface AllNetworkInfo { [networkKey: string]: NetworkInfo; } export interface ContractAddressMap { [contractName: string]: string; } export interface NetworkAddressMap { [networkKey: string]: ContractAddressMap; } /** * Parameters for creating a new user account (AccountNFT + TBA) */ export interface CreateNewUserAccountParams { recipientAddress: string; accountNFTMetadata?: { uri?: string; }; tbaConfig?: { salt?: string | number | ethers.BigNumber; }; } /** * Result of creating a new user account */ export interface CreateNewUserAccountResult { accountNFT: { tokenId: ethers.BigNumber; tx: ethers.ContractTransaction; contractAddress: string; }; tba: { tbaAddress: string; tx: ethers.ContractTransaction; }; } //# sourceMappingURL=types.d.ts.map