import type { SqliteConnection } from '../sqlite-connection.js'; import type { PIArtifactRecord, PIArtifactStore } from '../../internalization/pi-artifact.js'; export interface PiArtifactRow { artifact_id: string; artifact_kind: string; source_task_id: string; source_principle_id: string | null; source_rule_id: string | null; lineage_artifact_ids: string; validation_status: string; content_json: string; created_at: string; updated_at: string; } /** * The ONE pi_artifacts row -> PIArtifactRecord mapping. Exported so * enforcement-time consumers (host-runtime production gate, OpenClaw plugin * RuleHost) can rebuild the exact snapshot object the promotion chain hashed: * `computeArtifactDigest(mapPiArtifactRow(row))` reproduces the * `activation_decisions.artifact_digest` byte-for-byte, because JSON.stringify * preserves this function's key order. Do not hand-roll a second mapping — a * divergent key order would silently break digest verification. */ export declare function mapPiArtifactRow(row: PiArtifactRow): PIArtifactRecord; export declare class SqlitePIArtifactStore implements PIArtifactStore { private readonly connection; constructor(connection: SqliteConnection); createArtifact(record: PIArtifactRecord): Promise; upsertArtifact(record: PIArtifactRecord): Promise; getArtifactById(artifactId: string): Promise; listBySourceTaskId(sourceTaskId: string): Promise; listLineage(artifactId: string): Promise; updateValidationStatus(artifactId: string, validationStatus: PIArtifactRecord['validationStatus']): Promise; } //# sourceMappingURL=sqlite-pi-artifact-store.d.ts.map