/** * DEC-097 — SysML v2 interop, slice S1 (spec: docs/sysml-interop.md, DEC-081). * The pure model reference: `H2ASysmlRef` pins a SysML v2 element at an * immutable commit. Embedded in an ENGAGEMENT/CONTRACT body it is ordinary * signed content (DEC-035/073) — signing the envelope pins the model state * *"I commit to {project, commit, element}"* without h2a moving any bytes. * * Pure + total: no I/O. The fetch/re-hash/verify adapter is S2 (cli runtime); * here are only the type, a total validator, a type guard, and equality. */ export declare const H2A_SYSML_REF_KIND = "sysmlv2"; export interface H2ASysmlRef { readonly kind: typeof H2A_SYSML_REF_KIND; /** Repository base URL (omit if implied by context). */ readonly apiBase?: string; /** Project id. */ readonly project: string; /** Immutable Commit id — freezes the state. */ readonly commit: string; /** Optional Element id (omit = whole project at commit). */ readonly element?: string; /** Optional canonical hash of the element (content integrity, §4). */ readonly elementHash?: string; } export type H2ASysmlRefValidationError = "kind-not-sysmlv2" | "project-missing" | "commit-missing" | "apiBase-empty" | "element-empty" | "elementHash-empty"; export interface H2ASysmlRefValidation { readonly ok: boolean; readonly errors: readonly H2ASysmlRefValidationError[]; } /** * Total validation of a ref: required `kind`/`project`/`commit`; optional * `apiBase`/`element`/`elementHash` must be non-empty strings when present. */ export declare function validateSysmlRef(ref: H2ASysmlRef): H2ASysmlRefValidation; /** Type guard for untyped input (e.g. a ref pulled from an envelope body). */ export declare function isH2ASysmlRef(value: unknown): value is H2ASysmlRef; /** * Strict structural equality over all fields (incl. `apiBase` and * `elementHash`). Two refs to the same {project, commit, element} on different * mirrors, or with/without a content hash, are deliberately **not** equal — * see the reversible decision in docs/loop-decisions.md (a looser * `sameModelState` predicate can be added later if needed). */ export declare function sysmlRefEquals(a: H2ASysmlRef, b: H2ASysmlRef): boolean; //# sourceMappingURL=sysml.d.ts.map