@gotake/gotake-sdk
Version:
SDK for interacting with GoTake blockchain contracts
109 lines • 3.8 kB
TypeScript
import { BigNumber } from 'ethers';
import { ViewPermission, ContentConfig } from '../types';
/**
* Utility functions for content management
*/
export declare class ContentUtils {
/**
* Validate content ID
* @param contentId Content ID to validate
* @returns True if content ID is valid
*/
static isValidContentId(contentId: number): boolean;
/**
* Format price for display
* @param price Price in wei/smallest unit
* @param decimals Token decimals (default 18 for ETH)
* @param maxDecimals Maximum decimal places to show
* @returns Formatted price string
*/
static formatPrice(price: BigNumber, decimals?: number, maxDecimals?: number): string;
/**
* Parse price from string
* @param priceString Price string
* @param decimals Token decimals (default 18 for ETH)
* @returns Price in BigNumber
*/
static parsePrice(priceString: string, decimals?: number): BigNumber;
/**
* Calculate remaining time in seconds
* @param validUntil Valid until timestamp
* @returns Remaining seconds (0 if expired)
*/
static getRemainingTime(validUntil: BigNumber): number;
/**
* Format time duration for display
* @param seconds Duration in seconds
* @returns Formatted duration string
*/
static formatDuration(seconds: number): string;
/**
* Check if permission is still valid
* @param permission View permission object
* @returns True if permission is valid and not expired
*/
static isPermissionValid(permission: ViewPermission): boolean;
/**
* Get permission status description
* @param permission View permission object
* @returns Status description string
*/
static getPermissionStatus(permission: ViewPermission): string;
/**
* Calculate expiry timestamp
* @param durationSeconds Duration in seconds
* @returns Expiry timestamp
*/
static calculateExpiry(durationSeconds: number): BigNumber;
/**
* Validate content configuration
* @param config Content configuration
* @returns Validation result with errors if any
*/
static validateContentConfig(config: ContentConfig): {
isValid: boolean;
errors: string[];
};
/**
* Compare two content configurations
* @param config1 First configuration
* @param config2 Second configuration
* @returns Object showing differences
*/
static compareConfigs(config1: ContentConfig, config2: ContentConfig): {
hasChanges: boolean;
changes: Record<string, {
old: any;
new: any;
}>;
};
/**
* Generate content summary for display
* @param config Content configuration
* @returns Human-readable summary
*/
static generateContentSummary(config: ContentConfig): string;
/**
* Sort content configurations by various criteria
* @param configs Array of content configurations
* @param sortBy Sort criteria
* @param ascending Sort order
* @returns Sorted configurations
*/
static sortConfigs(configs: ContentConfig[], sortBy: 'contentId' | 'nativePrice' | 'defaultViewCount' | 'viewDuration' | 'isActive', ascending?: boolean): ContentConfig[];
/**
* Filter content configurations by criteria
* @param configs Array of content configurations
* @param filters Filter criteria
* @returns Filtered configurations
*/
static filterConfigs(configs: ContentConfig[], filters: {
isActive?: boolean;
minPrice?: BigNumber;
maxPrice?: BigNumber;
minViewCount?: number;
maxViewCount?: number;
contentIds?: number[];
}): ContentConfig[];
}
//# sourceMappingURL=content-utils.d.ts.map