import type { Module } from './types.js'; /** Normalised view of a `ModuleRequirement`. */ interface NormalizedRequirement { name: string; optional: boolean; requiredVersion?: string; } /** A module after graph resolution, with its normalised requirements attached. */ export interface ResolvedModule { module: Module; requirements: NormalizedRequirement[]; /** * Names of soft requirements that were absent or version-incompatible at boot. * Integrations targeting these names are silently dropped. */ missingOptionalTargets: Set; } /** * Builds the validated, topologically-ordered module graph from the given roots. * * - Recursively expands `includes` and dedupes by `name` (versions must match). * - Validates every hard `requires` target is present and its version satisfies * any declared `requiredVersion`. * - Drops contributions to soft requirements (`optional: true`) that are missing * or version-incompatible. * - Validates each integration targets a declared requirement and a known field * on the target's `api`. * - Returns modules sorted so each appears after its requirements. */ export declare const buildModuleGraph: (modules: ReadonlyArray) => ResolvedModule[]; export {};