export declare const PROJECT_MODEL_SCHEMA_VERSION = "1.0.0"; export type LifecycleStage = "unknown" | "initialized" | "specification" | "design" | "implementation" | "operation" | "maintenance" | "archive"; export type ConfidenceLabel = "none" | "low" | "medium" | "high"; export type ConfidenceScore = { value: number; label: ConfidenceLabel; }; export type ProjectIdentity = { id: string; name: string; displayName?: string; }; export type ProjectIntent = { statement: string; targetOutcomes?: string[]; }; export type DomainModel = { name: string; description?: string; }; export type Constraint = { type: string; statement: string; }; export type EvidenceReference = { adapterId: string; adapterVersion: string; sourceType: string; collectedAt: string; summary: string; }; export interface ProjectModel { schemaVersion: typeof PROJECT_MODEL_SCHEMA_VERSION; identity: ProjectIdentity; intent: ProjectIntent; lifecycleStage: LifecycleStage; domains: DomainModel[]; constraints: Constraint[]; evidence: EvidenceReference[]; confidence: ConfidenceScore; } export type ProjectModelInput = { identity: ProjectIdentity; intent?: Partial | string; lifecycleStage?: LifecycleStage; domains?: DomainModel[]; constraints?: Constraint[]; evidence?: EvidenceReference[]; confidence?: Partial; metadata?: Record; }; export declare class ProjectModelError extends Error { constructor(message: string); } /** * Construct a governed ProjectModel from normalized evidence. * * Enforces the contract-only invariants: * - No implementation assumptions may be introduced. * - No missions, expeditions, or work items may be created. * - Missing evidence remains explicitly unknown. */ export declare function createProjectModel(input: ProjectModelInput): ProjectModel; /** * Determine whether two ProjectModel instances are semantically equivalent. * * Equivalence ignores provenance (evidence references) and compares the * governed interpretation: identity, intent, lifecycle stage, domains, and * constraints. This is the testable form of the semantic equivalence * invariant: different input sources with the same intent must converge to * an equivalent model. */ export declare function areProjectModelsEquivalent(a: ProjectModel, b: ProjectModel): boolean;