/**
 * @fileoverview CSS Optimization Engine for OrdoJS Framework
 * Handles CSS dead code elimination, minification, and optimization
 */
import { type ComponentAST, type StyleBlockNode } from '../types/index.js';
/**
 * CSS optimization options
 */
export interface CSSOptimizationOptions {
    /**
     * Whether to remove unused CSS rules
     */
    removeUnusedRules?: boolean;
    /**
     * Whether to minify CSS output
     */
    minify?: boolean;
    /**
     * Whether to merge duplicate rules
     */
    mergeDuplicateRules?: boolean;
    /**
     * Whether to remove redundant declarations
     */
    removeRedundantDeclarations?: boolean;
    /**
     * Whether to optimize shorthand properties
     */
    optimizeShorthands?: boolean;
    /**
     * Whether to remove empty rules
     */
    removeEmptyRules?: boolean;
    /**
     * Whether to sort declarations for better compression
     */
    sortDeclarations?: boolean;
    /**
     * Preserve important comments
     */
    preserveImportantComments?: boolean;
}
/**
 * CSS usage analysis result
 */
export interface CSSUsageAnalysis {
    usedSelectors: Set<string>;
    usedClasses: Set<string>;
    usedIds: Set<string>;
    usedElements: Set<string>;
    usedPseudoClasses: Set<string>;
    usedPseudoElements: Set<string>;
}
/**
 * CSS optimization result
 */
export interface CSSOptimizationResult {
    optimizedCSS: string;
    originalSize: number;
    optimizedSize: number;
    compressionRatio: number;
    removedRules: number;
    mergedRules: number;
    optimizedDeclarations: number;
}
/**
 * CSS Optimizer for OrdoJS components
 */
export declare class OrdoJSCSSOptimizer {
    private options;
    constructor(options?: Partial<CSSOptimizationOptions>);
    /**
     * Optimize CSS styles for a component
     */
    optimize(styleBlock: StyleBlockNode, componentAST?: ComponentAST): CSSOptimizationResult;
    /**
     * Analyze CSS usage in component AST
     */
    private analyzeUsage;
    /**
     * Analyze markup block for CSS usage
     */
    private analyzeMarkupUsage;
    /**
     * Analyze client block for dynamic CSS usage
     */
    private analyzeClientUsage;
    /**
     * Remove unused CSS rules based on usage analysis
     */
    private removeUnusedRules;
    /**
     * Check if a CSS rule is used based on usage analysis
     */
    private isRuleUsed;
    /**
     * Check if a selector part is used
     */
    private isPartUsed;
    /**
     * Parse CSS selector into components
     */
    private parseSelector;
    /**
     * Remove empty CSS rules
     */
    private removeEmptyRules;
    /**
     * Merge duplicate CSS rules
     */
    private mergeDuplicateRules;
    /**
     * Remove redundant CSS declarations
     */
    private removeRedundantDeclarations;
    /**
     * Optimize shorthand properties
     */
    private optimizeShorthands;
    /**
     * Create shorthand property from individual properties
     */
    private createShorthand;
    /**
     * Sort CSS declarations for better compression
     */
    private sortDeclarations;
    /**
     * Generate CSS string from StyleBlockNode
     */
    private generateCSS;
    /**
     * Minify CSS output
     */
    private minifyCSS;
    /**
     * Optimize multiple style blocks and generate a single optimized bundle
     */
    optimizeBundle(styleBlocks: StyleBlockNode[], componentASTs?: ComponentAST[]): CSSOptimizationResult;
}
//# sourceMappingURL=css-optimizer.d.ts.map