export interface AssetIssue { type: 'large-image' | 'unoptimized-format' | 'unused-asset' | 'duplicate-asset'; severity: 'high' | 'medium' | 'low'; file: string; size: number; message: string; recommendation: string; duplicateOf?: string; hash?: string; } export interface AssetAnalysisResult { totalAssets: number; totalSize: number; imageCount: number; imageSize: number; largeImages: AssetIssue[]; unoptimizedImages: AssetIssue[]; unusedAssets: AssetIssue[]; duplicateAssets: AssetIssue[]; assetsByType: { [key: string]: { count: number; totalSize: number; files: string[]; }; }; recommendations: { potentialSavings: number; webpConversion: number; duplicateRemoval: number; compressionSavings: number; }; timestamp: string; } export declare class AssetAnalyzer { private projectRoot; private assets; private imageExtensions; private assetExtensions; private LARGE_IMAGE_THRESHOLD; private MEDIUM_IMAGE_THRESHOLD; constructor(projectRoot: string); analyze(): Promise; private scanAssets; private scanDirectory; private calculateFileHash; private findLargeImages; private findUnoptimizedImages; private findDuplicateAssets; private findUnusedAssets; private getAllSourceFiles; private categorizeAssets; private calculateRecommendations; private parseSize; private formatBytes; saveReport(outputPath: string, result: AssetAnalysisResult): void; }