import type { CanvasSource } from '../../../core/canvas/source.js'; import type { CronDTO } from '../../../api/dto/crons.js'; import type { BashJobStatus } from '../../../core/bash-jobs.js'; import type { AttachPalette } from '../config.js'; export type CanvasPanelItem = { key: string; kind: 'node'; nodeId: string; line: string; } | { key: 'human'; kind: 'human'; line: string; } | { key: 'bash'; kind: 'bash'; line: string; } | { key: 'crons'; kind: 'crons'; line: string; }; export interface CanvasPanelLines { /** Below-editor relationship and wait rows, in render order. */ reports: string[]; /** Node ids backing relationship rows. Retained for graph/remote callers. */ reportIds: string[]; /** Actionable cockpit rows. Enter swaps nodes or opens the matching wait detail surface. */ items: CanvasPanelItem[]; } /** Build the BASE panel line stacks for `nodeId`. `asks` is the per-node * pending human-ticket count map the caller polls (deck/review/notify); pass * `{}` to omit the ⚑ badges. `crons` are this node's armed schedules. * `palette` * drives the headers + dim cells; omit it and the panels render uncolored. */ export declare function buildCanvasPanelLines(nodeId: string, asks: Record, palette: AttachPalette | undefined, source: CanvasSource, crons?: readonly CronDTO[], jobs?: readonly BashJobStatus[]): Promise;