import type { WorkspaceStatusSnapshot } from "./dashboard-status.js";
import type { TaskEntity } from "../types.js";
export type DashboardPhaseBucket<T> = {
    schemaVersion: 1;
    phaseKey: string | null;
    label: string;
    count: number;
    top: T[];
    /** Every task id in this bucket (not capped by `top`); for dashboard batch accept. */
    taskIds?: string[];
};
/**
 * Partition tasks into phase buckets (current / next from maintainer YAML, then other keys, then Not Phased).
 * `top` holds up to `topPerBucket` mapped rows per bucket for dashboard previews.
 */
export declare function buildDashboardPhaseBucketsForTasks<T>(taskEntities: TaskEntity[], workspaceStatus: WorkspaceStatusSnapshot | null, mapRow: (t: TaskEntity) => T, topPerBucket: number, options?: {
    includeAllTaskIds?: boolean;
}): DashboardPhaseBucket<T>[];
export type BlockingRow = {
    taskId: string;
    blockedBy: string[];
};
/**
 * Bucket blocking-analysis entries by the blocked task's phase (same ordering as task buckets).
 */
export declare function buildDashboardPhaseBucketsForBlocking(entries: {
    taskId: string;
    blockedBy: string[];
}[], resolveTask: (taskId: string) => TaskEntity | undefined, workspaceStatus: WorkspaceStatusSnapshot | null, topPerBucket: number): DashboardPhaseBucket<BlockingRow>[];
