import { ethers } from 'ethers'; import { Provider } from '@ethersproject/providers'; import { BaseApi } from './base-api'; import type { VideoPaymentStorage } from 'gotake-contracts/dist/typechain/contracts/VideoPayment'; import { TransactionOptions } from '../types'; export interface PurchaseResult { transactionHash: string; contentId: number; gasUsed?: ethers.BigNumber; } export interface ContentConfig { contentId: number; nativePrice: ethers.BigNumber; viewCount: number; isActive: boolean; tokenPrices: Record; } export interface ViewPermission { purchaseTime: ethers.BigNumber; remainingViews: ethers.BigNumber; isValid: boolean; } export interface AdminRoleInfo { isOwner: boolean; isAdmin: boolean; canManageContent: boolean; canManageTokens: boolean; canManageAdmins: boolean; } export interface BatchPermissionResult { hasPermission: boolean; permissionDetails?: VideoPaymentStorage.ViewPermissionStructOutput; } /** * High-level API for VideoPayment contract interactions * Provides user-friendly interfaces for purchasing and managing video content */ export declare class VideoPaymentApi extends BaseApi { private _videoPaymentWrapper; /** * Create VideoPaymentApi instance * @param provider Provider instance * @param signer Signer instance */ constructor(provider: Provider, signer: ethers.Signer); /** * Initialize VideoPayment wrapper */ private getVideoPaymentWrapper; /** * Initialize the API */ init(): Promise; /** * Purchase content with specified payment method * @param contentId Content ID to purchase * @param paymentMethod Payment method: 'ETH' or 'ERC20' * @param tokenAddress ERC20 token address (optional, auto-detected if not provided) * @param options Transaction options * @returns Purchase result */ purchaseContent(contentId: number, paymentMethod: 'ETH' | 'ERC20', tokenAddress?: string, options?: TransactionOptions): Promise; /** * Batch purchase multiple content items * @param contentIds Array of content IDs to purchase * @param paymentMethod Payment method: 'ETH' or 'ERC20' * @param tokenAddress ERC20 token address (required for ERC20 payment) * @param options Transaction options * @returns Purchase result */ batchPurchaseContent(contentIds: number[], paymentMethod: 'ETH' | 'ERC20', tokenAddress?: string, options?: TransactionOptions): Promise; /** * Check if current user has view permission for content * @param contentId Content ID * @returns True if user has valid view permission */ hasViewPermission(contentId: number): Promise; /** * Get current user's permission details for content * @param contentId Content ID * @returns View permission details */ getMyPermissions(contentId: number): Promise; /** * Get content configuration information * @param contentId Content ID * @returns Content configuration */ getContentInfo(contentId: number): Promise; /** * Batch get content information for multiple items * @param contentIds Array of content IDs * @returns Array of content configurations */ batchGetContentInfo(contentIds: number[]): Promise; /** * Batch check user permissions for multiple content items * @param userAddress User address * @param contentIds Array of content IDs * @returns Array of permission results */ batchCheckUserPermissions(userAddress: string, contentIds: number[]): Promise; /** * Get current user's admin role information * @returns Admin role information */ getMyAdminRole(): Promise; /** * Set content configuration (Admin only) * @param config Content configuration * @param options Transaction options * @returns Transaction hash */ setContentConfig(config: { contentId: number; price: string; token?: string; viewCount: number; isActive: boolean; }, options?: TransactionOptions): Promise; /** * Batch set content configurations (Admin only) * @param configs Array of content configurations * @param options Transaction options * @returns Transaction hash */ batchSetContentConfig(configs: { contentIds: number[]; prices: string[]; token?: string; viewCounts: number[]; isActiveArray: boolean[]; }, options?: TransactionOptions): Promise; /** * Set content active status (Admin only) * @param contentId Content ID * @param isActive Active status * @param options Transaction options * @returns Transaction hash */ setContentActive(contentId: number, isActive: boolean, options?: TransactionOptions): Promise; /** * Set content price for a specific token (Admin only) * @param contentId Content ID * @param priceWei New price in wei * @param tokenAddress Token address (defaults to native token) * @param options Transaction options * @returns Transaction hash */ setContentPrice(contentId: number, priceWei: ethers.BigNumber, tokenAddress?: string, options?: TransactionOptions): Promise; /** * Check if user has view permission (wrapper for external address) * @param userAddress User address * @param contentId Content ID * @returns True if user has valid view permission */ userHasViewPermission(userAddress: string, contentId: number): Promise; /** * Get user permissions (wrapper for external address) * @param userAddress User address * @param contentId Content ID * @returns View permission details */ getUserPermissions(userAddress: string, contentId: number): Promise; /** * Process connection update */ protected onConnectionUpdated(): Promise; } //# sourceMappingURL=video-payment-api.d.ts.map