/**
 * Component Discovery
 *
 * Discovers and catalogs components in a Zenith project
 * Similar to layout discovery but for reusable components
 */
import type { TemplateNode, ExpressionIR } from '../ir/types';
export interface SlotDefinition {
    name: string | null;
    location: {
        line: number;
        column: number;
    };
}
export interface ComponentMetadata {
    name: string;
    path: string;
    template: string;
    nodes: TemplateNode[];
    expressions: ExpressionIR[];
    slots: SlotDefinition[];
    props: string[];
    styles: string[];
    script: string | null;
    scriptAttributes: Record<string, string> | null;
    hasScript: boolean;
    hasStyles: boolean;
}
/**
 * Discover all components in a directory
 * @param baseDir - Base directory to search (e.g., src/components)
 * @returns Map of component name to metadata
 */
export declare function discoverComponents(baseDir: string): Map<string, ComponentMetadata>;
/**
 * Use native bridge for tag name checks
 */
export declare function isComponentTag(tagName: string): boolean;
/**
 * Get component metadata by name
 */
export declare function getComponent(components: Map<string, ComponentMetadata>, name: string): ComponentMetadata | undefined;
