import type { Database } from "bun:sqlite";
import { type ArtifactExportManifest, type CleanupPolicy } from "../lib/artifact-store.js";
export declare const ARTIFACT_ENTITY_TYPES: readonly ["task", "project", "plan", "run", "verification", "handoff"];
export type ArtifactEntityType = (typeof ARTIFACT_ENTITY_TYPES)[number];
export declare const ARTIFACT_STORAGE_MODES: readonly ["reference", "copy"];
export type ArtifactStorageMode = (typeof ARTIFACT_STORAGE_MODES)[number];
export declare const ARTIFACT_REDACTION_STATUSES: readonly ["none", "partial", "full"];
export type ArtifactRedactionStatus = (typeof ARTIFACT_REDACTION_STATUSES)[number];
export interface Artifact {
    id: string;
    entity_type: ArtifactEntityType;
    entity_id: string;
    name: string;
    storage_mode: ArtifactStorageMode;
    source_path: string | null;
    local_path: string;
    content_hash: string;
    mime_type: string | null;
    size_bytes: number;
    redaction_status: ArtifactRedactionStatus;
    metadata: Record<string, unknown>;
    created_at: string;
    updated_at: string;
    deleted_at: string | null;
}
export interface AddArtifactInput {
    entity_type: ArtifactEntityType;
    entity_id: string;
    source_path: string;
    name?: string;
    storage_mode?: ArtifactStorageMode;
    redaction_status?: ArtifactRedactionStatus;
    metadata?: Record<string, unknown>;
}
export interface ListArtifactsFilter {
    entity_type?: ArtifactEntityType;
    entity_id?: string;
    include_deleted?: boolean;
    limit?: number;
}
export declare function addArtifact(input: AddArtifactInput, db?: Database, dbPath?: string): Artifact;
export declare function getArtifact(id: string, db?: Database): Artifact | null;
export declare function listArtifacts(filter?: ListArtifactsFilter, db?: Database): Artifact[];
export declare function updateArtifactRedaction(id: string, redactionStatus: ArtifactRedactionStatus, db?: Database): Artifact | null;
export declare function softDeleteArtifact(id: string, db?: Database): boolean;
export declare function purgeArtifact(id: string, db?: Database, dbPath?: string): boolean;
export declare function cleanupArtifacts(policy?: CleanupPolicy, db?: Database, dbPath?: string): number;
export declare function exportArtifacts(filter?: ListArtifactsFilter, db?: Database, dbPath?: string): ArtifactExportManifest;
export interface ImportArtifactInput {
    entity_type: ArtifactEntityType;
    entity_id: string;
    source_path: string;
    name?: string;
    storage_mode?: ArtifactStorageMode;
    redaction_status?: ArtifactRedactionStatus;
    metadata?: Record<string, unknown>;
    content_hash?: string;
}
export declare function importArtifactFromManifestEntry(entry: ImportArtifactInput, db?: Database, dbPath?: string): Artifact;
//# sourceMappingURL=artifacts.d.ts.map