import { KeyframesSteps } from '../injector/types';
import { Styles } from '../styles/types';
export interface ExtractedChunk {
    className: string;
    css: string;
}
export interface ExtractedSelector {
    selector: string;
    css: string;
}
export interface ExtractedKeyframes {
    name: string;
    css: string;
}
export interface KeyframesExtractionResult {
    /** Keyframes to inject (deduplicated by content) */
    keyframes: ExtractedKeyframes[];
    /** Map from original animation name to canonical name (for replacement) */
    nameMap: Map<string, string>;
}
/**
 * Extract styles using chunking (for className mode).
 * Returns multiple classes, one per chunk.
 */
export declare function extractStylesWithChunks(styles: Styles): ExtractedChunk[];
/**
 * Extract styles for a specific selector (for global/selector mode).
 * Returns a single CSS block.
 */
export declare function extractStylesForSelector(selector: string, styles: Styles): ExtractedSelector;
/**
 * Extract keyframes that are used in styles.
 * Merges local @keyframes with global keyframes, filters to only used ones.
 * Generates hash-based names from content for automatic deduplication.
 *
 * @param styles - The styles object (may contain @keyframes and animation properties)
 * @param globalKeyframes - Optional global keyframes from config
 * @returns Keyframes to inject and name mapping for replacement
 */
export declare function extractKeyframesFromStyles(styles: Styles, globalKeyframes?: Record<string, KeyframesSteps> | null): KeyframesExtractionResult;
