/**
 * Asset Pool Engine
 * Phase 2, Checkpoint B1 - Advanced asset management and pool system
 */
import { LoadedAsset } from './asset-loader';
export interface AssetPool {
    id: string;
    name: string;
    description?: string;
    baseDirectory: string;
    patterns: string[];
    assets: LoadedAsset[];
    metadata: {
        totalAssets: number;
        assetTypes: Record<string, number>;
        lastLoaded: Date;
        loadDuration: number;
        averageFileSize: number;
        validationRate: number;
    };
    config: AssetPoolConfig;
}
export interface AssetPoolConfig {
    includeContent: boolean;
    validateAssets: boolean;
    maxFileSize: number;
    allowedExtensions: string[];
    enableCaching: boolean;
    cacheDirectory?: string;
    refreshInterval?: number;
    contentFilters?: {
        minContentLength?: number;
        requiredFields?: string[];
        tagFilters?: string[];
        categoryFilters?: string[];
    };
    batchSize?: number;
    maxConcurrentLoads?: number;
    memoryLimit?: number;
}
export interface AssetPoolStats {
    totalPools: number;
    totalAssets: number;
    averagePoolSize: number;
    typeDistribution: Record<string, number>;
    healthStatus: 'healthy' | 'warning' | 'error';
    issues: string[];
}
export declare class AssetPoolEngine {
    private pools;
    private assetLoader;
    private defaultConfig;
    constructor();
    /**
     * Create a new asset pool
     */
    createPool(id: string, name: string, baseDirectory: string, patterns: string[], config?: Partial<AssetPoolConfig>): Promise<AssetPool>;
    /**
     * Get an asset pool by ID
     */
    getPool(id: string): AssetPool | undefined;
    /**
     * List all asset pools
     */
    getAllPools(): AssetPool[];
    /**
     * Refresh a pool by reloading its assets
     */
    refreshPool(id: string): Promise<AssetPool>;
    /**
     * Remove a pool
     */
    removePool(id: string): boolean;
    /**
     * Get assets from multiple pools
     */
    getAssetsFromPools(poolIds: string[]): LoadedAsset[];
    /**
     * Search assets across all pools
     */
    searchAssets(query: {
        pools?: string[];
        types?: ('markdown' | 'json' | 'image' | 'csv')[];
        tags?: string[];
        categories?: string[];
        titleContains?: string;
        contentContains?: string;
        validOnly?: boolean;
    }): LoadedAsset[];
    /**
     * Get comprehensive statistics about all pools
     */
    getPoolStats(): AssetPoolStats;
    /**
     * Apply content filters to assets
     */
    private applyContentFilters;
    /**
     * Calculate pool metadata and statistics
     */
    private calculatePoolMetadata;
    /**
     * Validate pool configuration
     */
    static validatePoolConfig(config: Partial<AssetPoolConfig>): {
        isValid: boolean;
        errors: string[];
    };
    /**
     * Export pool configuration for persistence
     */
    exportPoolConfig(id: string): any;
    /**
     * Import pool configuration and create pool
     */
    importPoolConfig(config: any): Promise<AssetPool>;
}
//# sourceMappingURL=asset-pool-engine.d.ts.map