@gotake/gotake-sdk
Version:
SDK for interacting with GoTake blockchain contracts
169 lines • 6.13 kB
TypeScript
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