/**
 * Migration 106: Create sdlc_subtasks table (SDLC Kanban Board — Phase 2).
 *
 * First-class persisted SDLC sub-task entities. Each row represents one
 * sub-task within an SdlcTask, keyed by (task_id, sub_task_key) for
 * idempotent seeding from agent plan output. feature_id is denormalised for
 * efficient board-level queries that group by epic.
 *
 * Columns:
 *  - id            TEXT PK (UUID)
 *  - task_id       TEXT NOT NULL — FK to sdlc_tasks
 *  - feature_id    TEXT NOT NULL — denormalized FK to features (epic)
 *  - sub_task_key  TEXT NOT NULL — stable idempotency key within a task
 *  - name          TEXT NOT NULL
 *  - description   TEXT — optional
 *  - status        TEXT NOT NULL — TaskState enum value
 *  - sort_order    REAL NOT NULL — float64 for fractional indexing
 *  - created_at    INTEGER NOT NULL (unix ms)
 *  - updated_at    INTEGER NOT NULL (unix ms)
 *
 * Indexes:
 *  - unique (task_id, sub_task_key) — idempotency / upsert target
 *  - non-unique (task_id)           — listByTask lookups
 *  - non-unique (feature_id)        — listByFeature lookups
 */
import type { MigrationParams } from 'umzug';
import type Database from 'better-sqlite3';
export declare function up({ context: db }: MigrationParams<Database.Database>): Promise<void>;
export declare function down({ context: db }: MigrationParams<Database.Database>): Promise<void>;
//# sourceMappingURL=106-create-sdlc-subtasks.d.ts.map