/**
 * Debug utilities for inspecting tasty-generated CSS at runtime
 */
type CSSTarget = 'all' | 'global' | 'active' | 'unused' | 'page' | string | string[] | Element;
interface CssOptions {
    root?: Document | ShadowRoot;
    prettify?: boolean;
    log?: boolean;
}
interface ChunkInfo {
    className: string;
    chunkName: string | null;
}
interface InspectResult {
    element?: Element | null;
    classes: string[];
    chunks: ChunkInfo[];
    css: string;
    size: number;
    rules: number;
}
interface CacheMetrics {
    hits: number;
    misses: number;
    bulkCleanups: number;
    totalInsertions: number;
    totalUnused: number;
    stylesCleanedUp: number;
    cleanupHistory: Array<{
        timestamp: number;
        classesDeleted: number;
        cssSize: number;
        rulesDeleted: number;
    }>;
    startTime: number;
    unusedHits?: number;
}
interface CacheStatus {
    classes: {
        active: string[];
        unused: string[];
        all: string[];
    };
    metrics: CacheMetrics | null;
}
interface Definitions {
    properties: string[];
    keyframes: Array<{
        name: string;
        refCount: number;
    }>;
}
interface SummaryOptions {
    root?: Document | ShadowRoot;
    log?: boolean;
    includePageCSS?: false | true | 'all';
}
interface Summary {
    activeClasses: string[];
    unusedClasses: string[];
    totalStyledClasses: string[];
    activeCSSSize: number;
    unusedCSSSize: number;
    globalCSSSize: number;
    rawCSSSize: number;
    keyframesCSSSize: number;
    propertyCSSSize: number;
    totalCSSSize: number;
    activeCSS: string;
    unusedCSS: string;
    globalCSS: string;
    rawCSS: string;
    keyframesCSS: string;
    propertyCSS: string;
    allCSS: string;
    globalRuleCount: number;
    rawRuleCount: number;
    keyframesRuleCount: number;
    propertyRuleCount: number;
    page?: {
        css?: string;
        cssSize: number;
        ruleCount: number;
        stylesheetCount: number;
        skippedStylesheets: number;
    };
    metrics: CacheMetrics | null;
    definedProperties: string[];
    definedKeyframes: Array<{
        name: string;
        refCount: number;
    }>;
    propertyCount: number;
    keyframeCount: number;
    cleanupSummary: {
        enabled: boolean;
        totalCleanups: number;
        totalClassesDeleted: number;
        totalCssDeleted: number;
        totalRulesDeleted: number;
        averageClassesPerCleanup: number;
        averageCssPerCleanup: number;
        averageRulesPerCleanup: number;
        lastCleanup?: {
            timestamp: number;
            date: string;
            classesDeleted: number;
            cssSize: number;
            rulesDeleted: number;
        };
    };
    chunkBreakdown: {
        byChunk: Record<string, {
            classes: string[];
            cssSize: number;
            ruleCount: number;
        }>;
        totalChunkTypes: number;
    };
}
/**
 * Concise tastyDebug API for inspecting styles at runtime
 */
export declare const tastyDebug: {
    css(target: CSSTarget, opts?: CssOptions): string;
    inspect(target: string | Element, opts?: {
        root?: Document | ShadowRoot;
    }): InspectResult;
    cache(opts?: {
        root?: Document | ShadowRoot;
        includeHistory?: boolean;
    }): CacheStatus;
    cleanup(opts?: {
        root?: Document | ShadowRoot;
    }): void;
    metrics(opts?: {
        root?: Document | ShadowRoot;
    }): CacheMetrics | null;
    resetMetrics(opts?: {
        root?: Document | ShadowRoot;
    }): void;
    /**
     * Get breakdown of styles by chunk type.
     *
     * With style chunking enabled, styles are split into logical chunks
     * (appearance, font, dimension, container, etc.) for better caching
     * and CSS reuse.
     *
     * @param opts - Options including root document/shadow root
     * @returns Breakdown by chunk type with class counts and CSS sizes
     */
    chunks(opts?: {
        root?: Document | ShadowRoot;
        log?: boolean;
    }): {
        byChunk: Record<string, {
            classes: string[];
            cssSize: number;
            ruleCount: number;
        }>;
        totalChunkTypes: number;
        totalClasses: number;
    };
    getGlobalTypeCSS(type: "global" | "raw" | "keyframes" | "property", opts?: {
        root?: Document | ShadowRoot;
    }): {
        css: string;
        ruleCount: number;
        size: number;
    };
    defs(opts?: {
        root?: Document | ShadowRoot;
    }): Definitions;
    summary(opts?: SummaryOptions): Summary;
    pageCSS(opts?: {
        root?: Document | ShadowRoot;
        prettify?: boolean;
        log?: boolean;
        includeCrossOrigin?: boolean;
    }): string;
    pageStats(opts?: {
        root?: Document | ShadowRoot;
        includeCrossOrigin?: boolean;
    }): {
        cssSize: number;
        ruleCount: number;
        stylesheetCount: number;
        skippedStylesheets: number;
    };
    install(): void;
    log(target: CSSTarget, opts?: CssOptions & {
        title?: string;
    }): void;
    help(): void;
};
export {};
