/**
 * DiskArchiveBackend — reference filesystem-backed {@link ArchiveBackend}.
 *
 * Convention #8 (atomic writes): every file lands via write-tmp-rename; the
 * final `archive.json` marker is written LAST so a crash mid-bundle leaves
 * the directory visible but UN-marked, and `restore` treats such a bundle
 * as missing. This mirrors the Phase 5 materializer's "marker-last"
 * invariant.
 *
 * Layout:
 *
 *   {rootDir}/archive/{arc_<opaque>}/
 *     subsession.json        # Identity + metadata
 *     summary.json            # SessionSummaryRef (optional — present iff input.summaryRef)
 *     messages.jsonl          # One SessionMessage per line (append-style, serialized once)
 *     workspace.json          # WorkspaceRef (optional — present iff input.workspace)
 *     archive.json            # Marker — final write; presence = bundle committed
 *
 * Workspace directory contents are NOT archived — we persist the
 * {@link WorkspaceRef} only. The pattern doc §12.3 explicitly allows this:
 * the ref is the re-hydration handle; the worktree itself is disposed at
 * archive time via the caller's {@link WorkspaceBackendDriver}, not copied
 * into the archive bundle. This is a Phase 8 interpretation — see the
 * roadmap deliverable report for rationale (tar bundling deferred).
 *
 * See session-hierarchy.md §12.3.
 */
import type { ArchiveBackendRef } from '../../types/retention/archive-backend-ref.js';
import type { ArchiveBackend, ArchiveInput, ArchiveOutput } from './backend.js';
/**
 * Raised when {@link DiskArchiveBackend.restore} cannot resolve the supplied
 * ref — either the directory is missing, or the `archive.json` marker is
 * absent (crash-mid-write signal).
 */
export declare class ArchiveNotFoundError extends Error {
    readonly details: {
        archiveRef: ArchiveBackendRef;
        reason: 'missing' | 'incomplete';
    };
    constructor(details: {
        archiveRef: ArchiveBackendRef;
        reason: 'missing' | 'incomplete';
    });
}
/**
 * Config for {@link DiskArchiveBackend}. `rootDir` is absolute — bundles land
 * under `{rootDir}/archive/`.
 */
export interface DiskArchiveBackendConfig {
    readonly rootDir: string;
}
export declare class DiskArchiveBackend implements ArchiveBackend {
    readonly kind = "disk";
    private readonly rootDir;
    constructor(config: DiskArchiveBackendConfig);
    store(input: ArchiveInput): Promise<ArchiveOutput>;
    restore(archiveRef: ArchiveBackendRef): Promise<ArchiveInput>;
}
//# sourceMappingURL=disk-backend.d.ts.map