/** * Refusal matrix R1-R5 (spec) — ONE guard, run at BOTH doors: * `collection()` config resolution AND `_applyClassifiedFields` (the reconcile * seam), because crdt/conflictPolicy/perRecordKeys are construction-only * while classifiedFields can attach later (C5's lesson). @module */ import type { ClassifiedFieldSpec } from './descriptor.js'; export interface ClassifiedGuardCtx { readonly perRecordKeys: boolean; readonly crdt: boolean; readonly hasConflictPolicy: boolean; /** False on plaintext (`encrypt: false`) collections — no vdig/seal path exists. */ readonly storeCiphertext: boolean; readonly deterministicFields: ReadonlySet | null; readonly indexedFields: ReadonlySet; readonly textIndexFields: ReadonlySet; readonly vectorSourceFields: ReadonlySet; readonly subjectKeyField: string | undefined; readonly bareSensitiveFields: ReadonlySet; /** Collection-level gate for the `equatable` knob (R8 double door). */ readonly acknowledgeEquatableRisk: boolean; } export declare function guardClassifiedCompat(collection: string, byField: Record, ctx: ClassifiedGuardCtx): void;