import type { FrameworkConfig, Language } from './framework-config.js'; import type { InstallerOptions } from '../utils/types.js'; /** * Standard exports from an integration module. * Each `src/integrations/{name}/index.ts` must export these. */ export interface IntegrationModule { config: FrameworkConfig; run: (options: InstallerOptions) => Promise; } /** * Registry that provides lookup, detection, and enumeration of integrations. */ export interface IntegrationRegistry { /** All registered integrations */ all(): FrameworkConfig[]; /** Get config by integration name */ get(name: string): IntegrationModule | undefined; /** Get integrations for a specific language, ordered by priority */ forLanguage(language: Language): FrameworkConfig[]; /** Get integration names for CLI choices */ choices(): Array<{ name: string; value: string; }>; /** Detection order: all integrations sorted by priority (higher = checked first) */ detectionOrder(): FrameworkConfig[]; } /** * Build the integration registry by discovering all integration modules. * Scans `src/integrations/` (or `dist/integrations/` at runtime) for directories * with an index.js/index.ts file and dynamically imports them. */ export declare function buildRegistry(): Promise; /** * Get the integration registry (builds once, caches thereafter). */ export declare function getRegistry(): Promise; /** * Reset the registry cache. Used in tests. */ export declare function resetRegistry(): void;