import type { BuilderRegistries } from '../model/builder.js'; import type { MEMOConfig } from '../model/config.js'; import type { Diagnostic } from './diagnostic.js'; import { type EffectiveToolchain } from './effective.js'; import { type Availability, type LoweringRunResult, type ProviderRegistry, type ProviderRole, type ProviderRunResult } from './registry.js'; export interface ToolchainRunOptions { config: MEMOConfig; projectDir: string; registry?: ProviderRegistry; /** Overrides the include paths derived from the project's library roots. */ includeDirs?: string[]; /** * The exact sources to analyse, instead of the directory's own discovery. * See `ProviderContext.files` — a conformance corpus is a file set, not a * project, and every role has to be told the same set or the counts are not * comparable. */ files?: readonly string[]; outputPath?: string; /** Ontology registries the caller already loaded. See `ProviderContext`. */ registries?: BuilderRegistries; } /** Run the selected validator. Diagnostics come back in the `sysml` domain. */ export declare function runValidator(options: ToolchainRunOptions): Promise; /** Run the selected lowering provider. Diagnostics are `memo-ingest`. */ export declare function runLowering(options: ToolchainRunOptions): Promise; /** Run the selected packager against `outputPath`. */ export declare function runPackager(options: ToolchainRunOptions): Promise; /** * Collapse an ingest failure that the validator already reported. * * When one provider fills both roles it sees the same defect twice, once per * role. Reporting it twice, in two domains, would make the domain split look * like noise. A failure is reported once, in the domain with the most * authority — `sysml` outranks `memo-ingest`, because a source the validator * rejected is not a story about MEMO's ingest. */ export declare function mergeDiagnostics(validatorDiagnostics: readonly Diagnostic[], ingestDiagnostics: readonly Diagnostic[]): Diagnostic[]; export interface RoleProbe { role: ProviderRole; /** The settings key that selects this role, e.g. `validator`. */ setting: string; provider: string; source: 'settings' | 'deprecated-alias' | 'default'; availability: Availability; } export interface ToolchainProbe { projectDir: string; effective: EffectiveToolchain; roles: RoleProbe[]; } /** * Resolve every role and ask each selected provider whether it can run here, * without running it. * * This is what answers "which `syside` am I actually using?" — a question that * costs an afternoon when the only way to ask it is to run a build and read * the errors. */ export declare function probeToolchain(options: { config: MEMOConfig; projectDir: string; registry?: ProviderRegistry; }): ToolchainProbe; /** One `role provider path version` line per role, for `memo toolchain probe`. */ export declare function formatProbeLine(probe: RoleProbe): string; /** The full resolved picture, for `memo config effective`. */ export interface EffectiveConfigReport { projectName: string; projectRoot: string; settingsFile?: string; toolchain: { validator: string; lowering: string; packager: string; selections: EffectiveToolchain['selections']; providers: Record; }; deprecations: string[]; } export declare function effectiveConfigReport(options: { config: MEMOConfig; projectDir: string; settingsFile?: string; registry?: ProviderRegistry; }): EffectiveConfigReport; //# sourceMappingURL=operations.d.ts.map