import { ASL } from "../types/asl";
export interface ShadCNComponentMetadata {
    name: string;
    version: string;
    installedAt: string;
}
export interface CustomComponentMetadata {
    name: string;
    type: 'auth' | 'entity' | 'custom';
    path: string;
    shadcnDeps: string[];
    props?: Record<string, string>;
    createdAt: string;
    lastModified?: string;
    usedIn: string[];
}
export interface ComponentRegistryData {
    version: string;
    shadcnComponents: ShadCNComponentMetadata[];
    customComponents: CustomComponentMetadata[];
    stats: {
        totalShadCN: number;
        totalCustom: number;
    };
}
/**
 * ComponentRegistry - Track all components in the project
 *
 * Maintains .mycontext/components_registry.json with metadata about:
 * - Installed shadCN components
 * - Custom generated components
 * - Component dependencies and usage
 *
 * Enables:
 * - LEGO assembly (component reuse)
 * - Token usage tracking
 * - Avoiding duplicate installations
 */
export declare class ComponentRegistry {
    /**
     * Initialize component registry for a new project
     */
    initialize(projectPath: string, asl: ASL, shadcnComponents: string[]): Promise<void>;
    /**
     * Register a custom component
     */
    registerComponent(projectPath: string, component: CustomComponentMetadata): Promise<void>;
    /**
     * Check if a shadCN component is installed
     */
    has(projectPath: string, componentName: string): Promise<boolean>;
    /**
     * Get all custom components of a specific type
     */
    findByType(projectPath: string, type: CustomComponentMetadata['type']): Promise<CustomComponentMetadata[]>;
    /**
     * Get registry stats
     */
    getStats(projectPath: string): Promise<ComponentRegistryData['stats'] | null>;
}
//# sourceMappingURL=ComponentRegistry.d.ts.map