/** * Config G3 — multi-module merge collision policy. * * Defaults match today's strict behavior (`error` on duplicate names). * `lastWins` keeps the declaration from the last file in topological order. */ export declare const MERGE_DUPLICATE_POLICIES: readonly ["error", "lastWins"]; export type MergeDuplicatePolicy = (typeof MERGE_DUPLICATE_POLICIES)[number]; export interface ManifestMergeIntegrityConfig { /** Duplicate entity names across files. Default: `error`. */ onDuplicateEntity?: MergeDuplicatePolicy; /** Duplicate command names (entity-qualified) across files. Default: `error`. */ onDuplicateCommand?: MergeDuplicatePolicy; /** * Module compile order. Only `lexicographic` topo order is supported * (already how `resolveModuleGraph` orders files). */ moduleOrder?: 'lexicographic'; /** Cross-file relationship / store targets. Default: true. */ allowCrossModuleRefs?: boolean; /** * Cycle detection in `use` graphs. Must be true (default); `false` is rejected. */ forbidCycles?: boolean; } export interface ResolvedMergeIntegrity { onDuplicateEntity: MergeDuplicatePolicy; onDuplicateCommand: MergeDuplicatePolicy; moduleOrder: 'lexicographic'; allowCrossModuleRefs: boolean; forbidCycles: true; } export declare function isMergeDuplicatePolicy(value: unknown): value is MergeDuplicatePolicy; /** * Resolve config to a concrete policy. Invalid `forbidCycles: false` throws — * cycles are a language invariant, not a CI knob. */ export declare function resolveMergeIntegrity(raw: ManifestMergeIntegrityConfig | undefined): ResolvedMergeIntegrity; /** Keep the last item per key (topo order / concatenation order). */ export declare function dedupeLastByKey(items: readonly T[], keyOf: (item: T) => string): T[]; //# sourceMappingURL=merge-integrity.d.ts.map