/**
 * FaceZK Core Utilities
 * Essential utilities for memory management and browser compatibility
 */
import * as tf from '@tensorflow/tfjs';
export declare const isBrowser: boolean;
declare class MemoryManager {
    private tensors;
    private isEnabled;
    /**
     * Track a tensor for automatic cleanup
     */
    track(tensor: tf.Tensor): void;
    /**
     * Untrack a tensor (when manually disposed)
     */
    untrack(tensor: tf.Tensor): void;
    /**
     * Clean up all tracked tensors
     */
    cleanup(): void;
    /**
     * Get memory usage statistics
     */
    getStats(): {
        tracked: number;
        memory: number;
    };
    /**
     * Enable/disable automatic memory management
     */
    setEnabled(enabled: boolean): void;
    /**
     * Check if memory management is enabled
     */
    isMemoryManagementEnabled(): boolean;
}
export declare const memoryManager: MemoryManager;
export declare const getGlobalMemoryManager: () => MemoryManager;
export declare const tfUtils: {
    /**
     * Safely dispose a tensor
     */
    dispose(tensor: tf.Tensor | null | undefined): void;
    /**
     * Dispose multiple tensors
     */
    disposeAll(tensors: (tf.Tensor | null | undefined)[]): void;
    /**
     * Get memory usage
     */
    getMemoryUsage(): tf.MemoryInfo;
    /**
     * Clear all tensors
     */
    clearMemory(): void;
};
export declare const browserUtils: {
    /**
     * Check if WebGL is available
     */
    isWebGLAvailable(): boolean;
    /**
     * Check if WebAssembly is available
     */
    isWebAssemblyAvailable(): boolean;
    /**
     * Get available backends
     */
    getAvailableBackends(): string[];
    /**
     * Get recommended backend
     */
    getRecommendedBackend(): string;
};
export declare const validationUtils: {
    /**
     * Validate configuration
     */
    validateConfig(config: any): {
        valid: boolean;
        errors: string[];
    };
    /**
     * Validate input
     */
    validateInput(input: any): {
        valid: boolean;
        errors: string[];
    };
};
export declare const performanceUtils: {
    /**
     * Measure execution time
     */
    measureTime<T>(fn: () => T | Promise<T>): Promise<{
        result: T;
        time: number;
    }>;
    /**
     * Debounce function
     */
    debounce<T extends (...args: any[]) => any>(func: T, wait: number): (...args: Parameters<T>) => void;
    /**
     * Throttle function
     */
    throttle<T extends (...args: any[]) => any>(func: T, limit: number): (...args: Parameters<T>) => void;
};
declare const _default: {
    memoryManager: MemoryManager;
    getGlobalMemoryManager: () => MemoryManager;
    tfUtils: {
        /**
         * Safely dispose a tensor
         */
        dispose(tensor: tf.Tensor | null | undefined): void;
        /**
         * Dispose multiple tensors
         */
        disposeAll(tensors: (tf.Tensor | null | undefined)[]): void;
        /**
         * Get memory usage
         */
        getMemoryUsage(): tf.MemoryInfo;
        /**
         * Clear all tensors
         */
        clearMemory(): void;
    };
    browserUtils: {
        /**
         * Check if WebGL is available
         */
        isWebGLAvailable(): boolean;
        /**
         * Check if WebAssembly is available
         */
        isWebAssemblyAvailable(): boolean;
        /**
         * Get available backends
         */
        getAvailableBackends(): string[];
        /**
         * Get recommended backend
         */
        getRecommendedBackend(): string;
    };
    validationUtils: {
        /**
         * Validate configuration
         */
        validateConfig(config: any): {
            valid: boolean;
            errors: string[];
        };
        /**
         * Validate input
         */
        validateInput(input: any): {
            valid: boolean;
            errors: string[];
        };
    };
    performanceUtils: {
        /**
         * Measure execution time
         */
        measureTime<T>(fn: () => T | Promise<T>): Promise<{
            result: T;
            time: number;
        }>;
        /**
         * Debounce function
         */
        debounce<T extends (...args: any[]) => any>(func: T, wait: number): (...args: Parameters<T>) => void;
        /**
         * Throttle function
         */
        throttle<T extends (...args: any[]) => any>(func: T, limit: number): (...args: Parameters<T>) => void;
    };
    isBrowser: boolean;
};
export default _default;
//# sourceMappingURL=utils.d.ts.map