import type { WorkflowModule } from "../contracts/module-contract.js";
export declare class ModuleRegistryError extends Error {
    readonly code: string;
    constructor(code: string, message: string);
}
export type ModuleActivationEntry = {
    moduleId: string;
    enabled: boolean;
    /** dependsOn entries not present in the enabled set (non-empty only if misconfigured). */
    unsatisfiedHardDependencies: string[];
    /** optionalPeers not currently enabled (informational). */
    missingOptionalPeers: string[];
};
export type ModuleActivationReport = {
    schemaVersion: 1;
    modules: ModuleActivationEntry[];
};
export declare function validateModuleSet(modules: WorkflowModule[], workspacePath?: string): void;
export type ModuleRegistryOptions = {
    enabledModules?: string[];
    disabledModules?: string[];
    workspacePath?: string;
};
export declare class ModuleRegistry {
    private readonly modules;
    private readonly enabledModules;
    private readonly sortedModules;
    private readonly moduleMap;
    private readonly enabledModuleMap;
    constructor(modules: WorkflowModule[], options?: ModuleRegistryOptions);
    getAllModules(): WorkflowModule[];
    getModuleById(id: string): WorkflowModule | undefined;
    isModuleEnabled(id: string): boolean;
    getEnabledModules(): WorkflowModule[];
    getStartupOrder(): WorkflowModule[];
    /** Snapshot for doctor / tooling: enablement and peer satisfaction. */
    getActivationReport(): ModuleActivationReport;
}
