import type { Component, ComponentType, ComponentCategory, ProjectInfo } from '../types/config.js'; interface ComponentMetadata { id: string; name: string; description: string; category: ComponentCategory; dependencies: string[]; enabled?: boolean; allowedTools?: string[]; argumentHint?: string; version?: string; author?: string; shellOptions?: string[]; timeout?: number; retries?: number; requiredBy?: string[]; optional?: boolean; agentCategory?: string; universal?: boolean; displayName?: string; color?: string; bundle?: string[]; defaultSelected?: boolean; } interface ComponentFile { path: string; type: ComponentType; metadata: ComponentMetadata; hash: string; lastModified: Date; } export interface ComponentRegistry { components: Map; dependencies: Map>; dependents: Map>; categories: Map>; lastScan: Date; cacheValid: boolean; dependencyGraph?: DependencyGraph; } interface DependencyGraph { nodes: Map; edges: Map>; reverseEdges: Map>; cycles: string[][]; } interface DependencyNode { id: string; component?: ComponentFile; external: boolean; depth: number; visited: boolean; } interface ScanOptions { includeDisabled?: boolean; forceRefresh?: boolean; filterByCategory?: ComponentCategory[]; filterByType?: ComponentType[]; } export declare function invalidateCache(baseDir?: string): void; export declare function resolveAllDependencies(componentIds: string[], registry: ComponentRegistry, options?: { includeOptional?: boolean; maxDepth?: number; }): string[]; export declare function resolveDependencyOrder(componentIds: string[], registry: ComponentRegistry): string[]; export declare function discoverComponents(baseDir: string, options?: ScanOptions): Promise; export declare function getComponent(id: string, registry: ComponentRegistry): ComponentFile | undefined; export declare function getComponentsByCategory(category: ComponentCategory, registry: ComponentRegistry): ComponentFile[]; export declare function getComponentsByType(type: ComponentType, registry: ComponentRegistry): ComponentFile[]; export declare function getDependents(componentId: string, registry: ComponentRegistry): ComponentFile[]; export declare function getDependencies(componentId: string, registry: ComponentRegistry): ComponentFile[]; export declare function getTransitiveDependencies(componentId: string, registry: ComponentRegistry, maxDepth?: number): ComponentFile[]; export declare function wouldCreateCircularDependency(componentId: string, newDependencyId: string, registry: ComponentRegistry): boolean; export declare function getMissingDependencies(componentIds: string[], registry: ComponentRegistry): string[]; export declare function searchComponents(query: string, registry: ComponentRegistry, options?: { fuzzy?: boolean; includeDescription?: boolean; }): ComponentFile[]; export declare function registryToComponents(registry: ComponentRegistry): Component[]; export declare function getDiscoveryStats(registry: ComponentRegistry): { totalComponents: number; commandCount: number; hookCount: number; categoryCounts: Record; dependencyCount: number; lastScanDuration: number; cacheStatus: 'valid' | 'invalid' | 'expired'; }; export interface ComponentRecommendation { component: ComponentFile; score: number; reasons: string[]; dependencies: string[]; isRequired: boolean; } export interface RecommendationResult { essential: ComponentRecommendation[]; recommended: ComponentRecommendation[]; optional: ComponentRecommendation[]; totalScore: number; } export declare function recommendComponents(projectInfo: ProjectInfo, registry: ComponentRegistry, options?: { includeOptional?: boolean; excludeCategories?: ComponentCategory[]; maxRecommendations?: number; }): Promise; export declare function formatRecommendationSummary(result: RecommendationResult): string; export {}; //# sourceMappingURL=components.d.ts.map