import type { OrchestratorTree, NodeKind, NodeStatus, UsageSnapshot, NodeMetrics } from "../orchestrator-tree.js";
export interface NodeViewModel {
    id: string;
    label: string;
    kind: NodeKind;
    parentId: string | null;
    children: string[];
    status: NodeStatus;
    depth: number;
    startedAt: number;
    endedAt?: number;
    usage: UsageSnapshot;
    model?: string;
    provider?: string;
    compression?: {
        calls: number;
        tokensSaved: number;
    };
    metrics: NodeMetrics;
    iteration?: number;
    tailBuffer: string[];
    unreadWarnings: number;
    firstTurnPreview?: string;
    lastTurnPreview?: string;
    promptPreview?: string;
    outcomePreview?: string;
}
export interface TreeViewModel {
    /** Active root node IDs, in insertion order. */
    roots: string[];
    /** All projected nodes keyed by ID (reaches all descendants of active roots). */
    nodes: Map<string, NodeViewModel>;
}
/** Build a fresh TreeViewModel snapshot from the live model. */
export declare function buildViewModel(tree: OrchestratorTree): TreeViewModel;
