/** The row's content-addressed revision identity: a lowercase hex sha-256. */ export declare const REVISION_ID_PATTERN: RegExp; export interface RevisionContent { slug: string; displayName: string; description: string; category: string; tags: string[]; source: string; kind: "executable" | "instruction"; version?: string; skillMd?: string; bundleSha256?: string; bundleByteSize?: number; lifecycle?: "active" | "archived"; archiveReason?: string; replacementSlug?: string; } export declare function revisionIdOf(content: RevisionContent): string; export declare function revisionIdOfRecord(record: RevisionContent): string; /** * The legacy-row marker the 0004 migration leaves behind. * * Migration 0004 adds revision_id with DEFAULT '', so rows written before the migration * carry an empty id. An empty id would make the If-Match guard vacuous for those rows: * two clients that both read '' would both "match" and both land, silently overwriting * each other. The stores replace the marker with a real content sha on first open * (idempotent: new code always writes a full id, so the marker never reappears). */ export declare const LEGACY_REVISION_ID = ""; /** True when a revision id is the empty legacy marker (needs backfill). */ export declare function isLegacyRevisionId(value: string): boolean;