/**
 * SdlcBoardTracker — Infrastructure adapter for the ISdlcBoardTracker port.
 *
 * Bridges the feature-agent to the SDLC Board by translating high-level,
 * key-addressed calls (`seedTasks`, `setTaskStatus`, `setSubTaskStatus`) into
 * concrete repository operations (`upsertByKey`, `updateStatus`).
 *
 * Design notes:
 * - IDs are generated with `randomUUID()` from `node:crypto`, consistent with
 *   every other infrastructure adapter in this codebase.
 * - `seedTasks` is idempotent: the repository's `upsertByKey` guarantees no
 *   duplicate rows when called with the same (featureId, taskKey) or
 *   (taskId, subTaskKey) combination.
 * - `setTaskStatus` / `setSubTaskStatus` resolve entities by their stable
 *   string keys; if a key is not found the call resolves without error.
 */
import type { ISdlcBoardTracker, SeedTask } from '../../../application/ports/output/agents/sdlc-board-tracker.interface.js';
import type { ISdlcTaskRepository } from '../../../application/ports/output/repositories/sdlc-task-repository.interface.js';
import type { ISdlcSubTaskRepository } from '../../../application/ports/output/repositories/sdlc-subtask-repository.interface.js';
import { TaskState } from '../../../domain/generated/output.js';
export declare class SdlcBoardTracker implements ISdlcBoardTracker {
    private readonly taskRepo;
    private readonly subTaskRepo;
    constructor(taskRepo: ISdlcTaskRepository, subTaskRepo: ISdlcSubTaskRepository);
    /**
     * Idempotent upsert of the entire task plan for a feature.
     *
     * Generates a fresh UUID for each task and sub-task on every call — the
     * repository's upsert-by-key logic ignores the id when a row already
     * exists, so duplicate UUIDs are never written.
     */
    seedTasks(featureId: string, tasks: SeedTask[]): Promise<void>;
    /**
     * Transition a task's workflow state.
     *
     * Resolves the task by its stable `taskKey` within the given `featureId`.
     * No-ops gracefully when the key is not found.
     */
    setTaskStatus(featureId: string, taskKey: string, status: TaskState): Promise<void>;
    /**
     * Transition a sub-task's workflow state.
     *
     * First resolves the parent task by `taskKey` within `featureId`, then
     * resolves the sub-task by `subTaskKey` within that task. No-ops
     * gracefully when either key is not found.
     */
    setSubTaskStatus(featureId: string, taskKey: string, subTaskKey: string, status: TaskState): Promise<void>;
}
//# sourceMappingURL=sdlc-board-tracker.d.ts.map