import type { DatabaseSyncLike } from './db.js';
export interface ArchiveOpts {
    reason: string;
    who: string;
    /**
     * Optional hook invoked inside the same SAVEPOINT as the archive INSERT/DELETE,
     * after the audit row is appended and before RELEASE. Used by the Slack
     * deletion connector to mark the deletion event seen atomically — a crash
     * mid-archive must not leave the deletion event untracked. Throwing rolls
     * back the entire archive (including the audit row).
     */
    afterArchive?: (db: DatabaseSyncLike, archivedMemoryId: string) => void;
}
/**
 * The only legitimate path to remove a `kind='raw'` row from `memories`.
 *
 * Snapshots the full row into `raw_archive`, flips `kind` to `'archived'` so the
 * append-only trigger lets the delete through, then deletes the row. All in one
 * SAVEPOINT so it can be nested inside an outer transaction (e.g. batchWriteAndDelete).
 *
 * Throws if the row does not exist or is not `kind='raw'`.
 */
export declare function archiveRawMemory(db: DatabaseSyncLike, id: string, opts: ArchiveOpts): void;
//# sourceMappingURL=raw-archive.d.ts.map