@gotake/gotake-sdk
Version:
SDK for interacting with GoTake blockchain contracts
199 lines • 5.1 kB
TypeScript
/**
* Core type definitions for GoodTake SDK
*/
import { BigNumber } from 'ethers';
export interface GasConfig {
gasLimit?: number | string | BigNumber;
maxFeePerGas?: number | string | BigNumber;
maxPriorityFeePerGas?: number | string | BigNumber;
gasPriceMultiplier?: number;
priorityFeeMultiplier?: number;
}
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<string, any>;
}
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;
defaultViewCount: number;
viewDuration: 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;
defaultViewCount: number;
viewDuration: number;
isActive: boolean;
}
export interface BatchContentParams {
contentIds: number[];
nativePrices: (string | number | BigNumber)[];
defaultViewCounts: number[];
viewDurations: number[];
isActiveArray: boolean[];
}
export interface TokenPriceParams {
contentId: number;
tokenAddress: string;
price: string | number | BigNumber;
}
export interface ContentInfo {
contentId: number;
nativePrice: BigNumber;
defaultViewCount: number;
viewDuration: number;
isActive: boolean;
tokenPrices: Record<string, BigNumber>;
}
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 { VideoMetadata as OriginalVideoMetadata } from './utils/types';
//# sourceMappingURL=types.d.ts.map