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