/**
 * @fileoverview CSS Scoping System for OrdoJS Framework
 * Handles scoping CSS selectors to prevent style conflicts between components
 */
import { type StyleBlockNode } from '../types/index.js';
/**
 * CSS Scoping options
 */
export interface CSSScopingOptions {
    /**
     * Prefix to use for scoped selectors
     */
    scopePrefix?: string;
    /**
     * Whether to use data attributes for scoping (true) or class names (false)
     */
    useDataAttributes?: boolean;
    /**
     * Whether to preserve original selectors in addition to scoped ones
     */
    preserveOriginalSelectors?: boolean;
}
/**
 * CSS Scoper for OrdoJS components
 */
export declare class OrdoJSCSSScoper {
    private options;
    constructor(options?: Partial<CSSScopingOptions>);
    /**
     * Scope CSS rules to a specific component
     */
    scopeStyles(styleBlock: StyleBlockNode, componentName: string): StyleBlockNode;
    /**
     * Scope a single CSS rule
     */
    private scopeRule;
    /**
     * Scope a CSS selector
     */
    private scopeSelector;
    /**
     * Scope a single CSS selector (without commas)
     */
    private scopeSingleSelector;
    /**
     * Scope a single selector part (no combinators)
     */
    private scopeSelectorPart;
    /**
     * Generate a unique scope ID for a component
     */
    private generateScopeId;
    /**
     * Generate a simple hash from a string
     */
    private hashString;
    /**
     * Generate the data attribute or class name for component markup
     */
    generateScopeAttribute(componentName: string): string;
    /**
     * Convert a scoped StyleBlockNode back to CSS text
     */
    generateScopedCSS(styleBlock: StyleBlockNode): string;
}
//# sourceMappingURL=css-scoper.d.ts.map