import type { ApplicabilityCondition, InstitutionalMemory, MemoryContext, MemoryWrite } from "./types.js"; export type InstitutionalValidationCode = "duplicate_id" | "missing_authority" | "missing_provenance" | "missing_source_ref" | "invalid_applicability" | "invalid_review" | "expired" | "invalid_position" | "invalid_procedure" | "missing_reference" | "dependency_cycle"; export interface InstitutionalValidationIssue { code: InstitutionalValidationCode; id: string; message: string; } export interface InstitutionalValidationResult { valid: boolean; issues: InstitutionalValidationIssue[]; } export interface InstitutionalValidationOptions { asOf?: Date; } export type InstitutionalReviewStatus = "current" | "expired" | "invalid"; export type InstitutionalWrite = Pick; export declare function isInstitutionalMemory(value: unknown): value is InstitutionalMemory; export declare function institutionalReviewStatus(institutional: unknown, asOf?: number): InstitutionalReviewStatus; /** * The single source of truth for whether one applicability condition is * satisfied, shared by `institutionalApplies` and by planner diagnostics * (`DeterministicRetrievalPlanner.plan`'s `ApplicabilityDecision.reason`) so * both always agree on which condition actually failed. A `topic` condition * matches via `containsPhrase` -- a normalized (case/punctuation-insensitive) * substring match against the whole condition value -- rather than checking * for a single token, so multi-word topics like "production rollout" match * as a phrase instead of never matching at all. `containsPhrase` pads both * sides with spaces before comparing, so "cat" still never matches inside * "category": partial word matches are rejected the same way single-word * topics always were. */ export declare function applicabilityConditionSatisfied(condition: ApplicabilityCondition, context: MemoryContext, prompt?: string): boolean; export declare function institutionalApplies(institutional: unknown, context: MemoryContext, prompt?: string): boolean; export declare function procedureContent(memory: InstitutionalMemory): string | undefined; export declare function validateInstitutionalMemory(memory: MemoryWrite, options?: InstitutionalValidationOptions): InstitutionalValidationResult; /** * Validates a curated collection before a provider persists or routes it. * Generic memories without `institutional` metadata are intentionally ignored. */ export declare function validateInstitutionalMemories(memories: InstitutionalWrite[], options?: InstitutionalValidationOptions): InstitutionalValidationResult;