import { type Kysely } from 'kysely';
/**
 * Cold-store chunk index — Phase 2 (cold-store purge).
 *
 * One row per archived chunk that the GC sweep can later purge from S3.
 * Inserted inside the same transaction as `markArchivedAndDelete` so a
 * chunk is either fully recorded (S3 + index + rollup + audit) or fully
 * absent (no orphan rows).
 *
 * Schema notes:
 *
 * - `chunk_id` is the deterministic 16-hex chunk filename stem; primary
 *   key is `(db, table_name, chunk_id)` so the framework can `DELETE`
 *   without scanning. The `db` column matches `cold_store_chunk_counts`
 *   (always `'orchestrator'` here, included for shape parity with the
 *   Platform-side migration).
 * - `bucket` is the S3 prefix segment (`'30d'` / `'180d'` / `'1y'` /
 *   `'2y'` / `'forever'`). Carried for `cold-store list-chunks` /
 *   `list-purgeable` filtering.
 * - `max_cold_days` is the row-level retention horizon — TEXT to
 *   accommodate both numeric values and the literal `'forever'`. The
 *   GC sweep checks `max_cold_days != 'forever' AND now() > archived_at
 *   + (max_cold_days || ' days')::interval`.
 * - `object_key` is the full S3 key of the data chunk; the GC sweep
 *   uses this to issue `DeleteObject` directly without recomputing the
 *   key from the prefix.
 *
 * Pre-Phase-2 chunks (v1 manifest) are NOT in this table — they live
 * forever. Adapters that don't opt into per-bucket archival via
 * `coldTtlDays` don't insert here either.
 */
export declare function up(db: Kysely<unknown>): Promise<void>;
export declare function down(db: Kysely<unknown>): Promise<void>;
//# sourceMappingURL=010_cold_store_chunks.d.ts.map