import type { ValidationResult } from './types'; import type { ProjectConfig } from './config'; export type PluginId = string; export type PluginPhase = 'pre' | 'render' | 'post' | 'ci'; export type ConflictPolicy = 'error' | 'last-wins'; import type { GeneratorContext } from './context'; export interface Plugin { id: PluginId; version: string; dependencies?: PluginId[]; appliesTo(config: ProjectConfig): boolean; phase?: PluginPhase; conflictPolicy?: ConflictPolicy; apply(ctx: GeneratorContext): void; validate?(ctx: GeneratorContext): ValidationResult; } export interface PluginRegistry { register(plugin: Plugin): void; get(id: PluginId): Plugin | undefined; getAll(): Plugin[]; } export declare class InMemoryPluginRegistry implements PluginRegistry { private plugins; register(plugin: Plugin): void; get(id: PluginId): Plugin | undefined; getAll(): Plugin[]; } export interface DependencyGraph { nodes: Set; edges: Map>; } export declare function buildDependencyGraph(plugins: Plugin[]): DependencyGraph; export declare function detectCycles(graph: DependencyGraph): string[]; export declare function resolvePluginOrder(plugins: Plugin[], registry: PluginRegistry): Plugin[]; export declare function groupPluginsByPhase(plugins: Plugin[]): Map; //# sourceMappingURL=plugin.d.ts.map