/**
 * List SDLC Board Use Case
 *
 * Builds a ready-to-render board data structure:
 *   - Epics = Features (non-deleted)
 *   - Each epic contains tasks sorted by sortOrder ASC
 *   - Each task node contains its sub-tasks sorted by sortOrder ASC
 *
 * Avoids N+1 by fetching all active tasks in one call, then fetching
 * sub-tasks per feature (one call per feature with tasks, or all features
 * with a denormalized featureId lookup).
 */
import type { Feature, SdlcTask, SdlcSubTask } from '../../../domain/generated/output.js';
import type { IFeatureRepository } from '../../ports/output/repositories/feature-repository.interface.js';
import type { ISdlcTaskRepository } from '../../ports/output/repositories/sdlc-task-repository.interface.js';
import type { ISdlcSubTaskRepository } from '../../ports/output/repositories/sdlc-subtask-repository.interface.js';
/** A task with its nested sub-tasks, ready for rendering. */
export interface SdlcBoardTaskNode {
    task: SdlcTask;
    subTasks: SdlcSubTask[];
}
/** An epic (Feature) with its nested task nodes. */
export interface SdlcBoardEpic {
    feature: Feature;
    tasks: SdlcBoardTaskNode[];
}
/** Top-level board data returned by ListSdlcBoardUseCase. */
export interface SdlcBoardData {
    epics: SdlcBoardEpic[];
}
export declare class ListSdlcBoardUseCase {
    private readonly featureRepo;
    private readonly taskRepo;
    private readonly subTaskRepo;
    constructor(featureRepo: IFeatureRepository, taskRepo: ISdlcTaskRepository, subTaskRepo: ISdlcSubTaskRepository);
    execute(): Promise<SdlcBoardData>;
}
//# sourceMappingURL=list-sdlc-board.use-case.d.ts.map