/**
 * Load and validate CAE artifact + activation registries (T858).
 * Paths are repo-relative from workspace root by default.
 */
export type CaeRegistryArtifactRow = Record<string, unknown>;
export type CaeRegistryActivationRow = Record<string, unknown>;
export type CaeLoadedRegistry = {
    artifacts: CaeRegistryArtifactRow[];
    activations: CaeRegistryActivationRow[];
    artifactById: Map<string, CaeRegistryArtifactRow>;
    activationById: Map<string, CaeRegistryActivationRow>;
    /** Stable content digest for cache keys (sha256 hex). */
    registryDigest: string;
};
export type LoadCaeRegistryOptions = {
    artifactsRelativePath?: string;
    activationsRelativePath?: string;
    /** When false, skip on-disk existence checks for artifact ref.path (tests). */
    verifyArtifactPaths?: boolean;
};
export type LoadCaeRegistryResult = {
    ok: true;
    value: CaeLoadedRegistry;
} | {
    ok: false;
    code: string;
    message: string;
};
export type SingleRecordValidationResult<T> = {
    ok: true;
    value: T;
} | {
    ok: false;
    code: string;
    message: string;
};
/** Deterministic JSON for hashing (sorted object keys at every object depth). */
export declare function stableStringifyForCaeDigest(value: unknown): string;
/**
 * Content-based registry digest: active **`versionId`** plus normalized artifact + activation rows (**CAE_PLAN B3 / T894**).
 * JSON seed path uses **`JSON_REGISTRY_DIGEST_VERSION_ID`** instead of a SQLite version row.
 */
export declare const JSON_REGISTRY_DIGEST_VERSION_ID = "json-registry:v1";
export declare function digestCaeRegistryContent(versionId: string, artifacts: CaeRegistryArtifactRow[], activations: CaeRegistryActivationRow[]): string;
/**
 * Verify every artifact `ref.path` resolves inside `workspaceRoot` and exists on disk.
 * Rejects empty paths, absolute paths, and `..` escapes (**Phase 70 / T892**).
 */
export declare function verifyCaeArtifactRefPathsExist(workspaceRoot: string, artifacts: CaeRegistryArtifactRow[]): LoadCaeRegistryResult | null;
/**
 * Load default CAE registry files under the workspace root.
 */
export declare function loadCaeRegistry(workspaceRoot: string, options?: LoadCaeRegistryOptions): LoadCaeRegistryResult;
/** Validate a single artifact object (registry-entry schema). */
export declare function validateSingleCaeArtifactRecord(record: unknown): SingleRecordValidationResult<CaeRegistryArtifactRow>;
/** Validate a single activation object (activation-definition schema). */
export declare function validateSingleCaeActivationRecord(record: unknown): SingleRecordValidationResult<CaeRegistryActivationRow>;
/** In-memory overlay for preview/tests — does not persist or mutate kit SQLite registries. */
export declare function appendValidatedCaeRegistryOverlay(base: CaeLoadedRegistry, appendedArtifacts: CaeRegistryArtifactRow[], appendedActivations: CaeRegistryActivationRow[], digestSeed: string): {
    ok: false;
    code: string;
    message: string;
} | {
    ok: true;
    value: CaeLoadedRegistry;
};
