UNPKG

@gotake/gotake-sdk

Version:

SDK for interacting with GoTake blockchain contracts

169 lines 6.13 kB
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; defaultViewCount: number; viewDuration: number; isActive: boolean; } 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<void>; /** * Purchase content with specified payment method * @param contentId Content ID 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 */ purchaseContent(contentId: number, paymentMethod: 'ETH' | 'ERC20', tokenAddress?: string, options?: TransactionOptions): Promise<PurchaseResult>; /** * 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<PurchaseResult>; /** * 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<boolean>; /** * Get current user's permission details for content * @param contentId Content ID * @returns View permission details */ getMyPermissions(contentId: number): Promise<ViewPermission>; /** * Get content configuration information * @param contentId Content ID * @returns Content configuration */ getContentInfo(contentId: number): Promise<ContentConfig>; /** * Batch get content information for multiple items * @param contentIds Array of content IDs * @returns Array of content configurations */ batchGetContentInfo(contentIds: number[]): Promise<ContentConfig[]>; /** * 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<BatchPermissionResult[]>; /** * Get current user's admin role information * @returns Admin role information */ getMyAdminRole(): Promise<AdminRoleInfo>; /** * Set content configuration (Admin only) * @param config Content configuration * @param options Transaction options * @returns Transaction hash */ setContentConfig(config: { contentId: number; nativePrice: string; defaultViewCount: number; viewDuration: number; isActive: boolean; }, options?: TransactionOptions): Promise<string>; /** * Batch set content configurations (Admin only) * @param configs Array of content configurations * @param options Transaction options * @returns Transaction hash */ batchSetContentConfig(configs: { contentIds: number[]; nativePrices: string[]; defaultViewCounts: number[]; viewDurations: number[]; isActiveArray: boolean[]; }, options?: TransactionOptions): Promise<string>; /** * Update content price (Admin only) * @param contentId Content ID * @param newPrice New price in ETH * @param options Transaction options * @returns Transaction hash */ updateContentPrice(contentId: number, newPrice: ethers.BigNumber, options?: TransactionOptions): Promise<string>; /** * 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<string>; /** * 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<boolean>; /** * 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<ViewPermission>; /** * Process connection update */ protected onConnectionUpdated(): Promise<void>; } //# sourceMappingURL=video-payment-api.d.ts.map