import type { Context, TodoItem } from '@wrongstack/core/agent'; import { type PlanFile, type TaskFile } from '@wrongstack/core/storage'; import { type KanbanBoard, type KanbanTask } from '@wrongstack/kanban'; export interface SessionKanbanSourceUpdate { source: 'todo' | 'task' | 'plan' | null; todos?: TodoItem[] | undefined; tasks?: TaskFile | undefined; plan?: PlanFile | undefined; } export declare function todoStatus(task: KanbanTask): TodoItem['status']; export declare function blockingTitles(board: KanbanBoard, task: KanbanTask): string[]; export declare function orderTasksForTodos(board: KanbanBoard, tasks: readonly KanbanTask[]): KanbanTask[]; export declare function broadcastTodoUpdate(context: Context, todos: readonly TodoItem[]): void; export declare function todosNeedingSessionMirror(todos: readonly TodoItem[], activeBoardId: string | undefined): readonly TodoItem[]; export declare function applySessionKanbanBoardToTodos(context: Context, board: KanbanBoard, options: { sessionIdFromTags: (tags: readonly string[] | undefined) => string | null; isOwnedSessionBoard: (tags: readonly string[] | undefined) => boolean; hasInFlightTodoMirror: (projectRoot: string | undefined, sessionId: string) => boolean; suppressedTodoMirrors: WeakSet; }): TodoItem[]; export declare function applyManagedKanbanBoardToTodos(context: Context, board: KanbanBoard, suppressedTodoMirrors: WeakSet, options?: { /** Extracts the owning session id from board tags (`session:`). */ sessionOwnerFromTags?: ((tags: readonly string[] | undefined) => string | null) | undefined; sourceTodos?: readonly TodoItem[] | undefined; }): TodoItem[]; export declare function applySessionKanbanTaskToSource(context: Context, task: KanbanTask, suppressedTodoMirrors: WeakSet, options?: { remove?: boolean | undefined; }): Promise; //# sourceMappingURL=session-kanban-sync.d.ts.map