import type { MetaData } from "@metaobjectsdev/metadata"; /** One requirement, projected for rendering. Ordered depth-first, declaration order. */ export interface RequirementRow { /** Dotted child-name path from the root — the same address every other node uses. */ readonly path: string; /** 0 for a root-level requirement. Derived from `path`, so it cannot disagree with it. */ readonly depth: number; /** "functional" | "architectural" — the check-polarity axis. */ readonly subType: string; /** Undefined on an unlevelled architectural requirement (the flat policy form). */ readonly level: number | undefined; readonly status: string | undefined; readonly disposition: string | undefined; readonly trackedBy: readonly string[]; readonly statement: string | undefined; readonly counterexample: string | undefined; /** Chartered user-facing. `notes` has no counterpart here, by design. */ readonly description: string | undefined; /** `@implementedBy` exactly as authored — provenance a reader can grep for. */ readonly implementedBy: readonly string[]; /** DISTINCT `type.subType` concerns among the targets that actually resolved. */ readonly claimedConcerns: readonly string[]; } /** * Project every `requirement.*` node — nested ones included — into render-ready rows. * * Returns `[]` for a model declaring no requirements, which is what lets the surface * emit NOTHING rather than an empty page, and is in turn what makes turning the surface * on by default a no-op for every project without a ledger. */ export declare function requirementRows(root: MetaData): RequirementRow[]; //# sourceMappingURL=requirements-view.d.ts.map