import type { WidgetRenderOut, WidgetStats } from '../../client/lib/contract/types'; /** 对话轨迹 — the official 轨迹 (trajectory) rail compressed into one card. * * One ROW per lane, exactly the lanes the official timeline draws — 输入 (a user * or steering message), 模型 (an assistant step) and 工具 (a tool call) — in that * order, and all three lanes are always drawn (an empty lane is an empty track, * as in the official strip). Every beat is one bar in its own lane, oldest left, * newest right. The card renders the official HORIZONTAL geometry (the official * `min(width*.08%, 1px)` gap, the 2px floor, 1px corners) but its own VERTICAL * layout: three flush bands filling the card's remaining height. * * WIDTH is a per-card switch (`泳道宽度`), mirroring the official toolbar's 时长 * toggle: * - 按时长 (default): the recorded-duration projection — a bar's width is its * share of the window's total duration (idle compressed), so a 26.7s tool * call is visibly longer than a 17ms one; anything under the official 2px * floor is drawn at 2px; * - 等宽: the official DEFAULT projection — one equal slot per beat, back to * back, the slot frozen at TRAJECTORY_WINDOW beats so the row stops * re-scaling as the window rolls (n beats share the lane while it fills). * * The subtitle is the window's per-lane counts, so the numbers and the lanes * always describe the same 30 beats. */ declare function trajectoryRender(stats: WidgetStats): WidgetRenderOut | null; declare const _default: { id: string; name: () => string; desc: () => string; builtin: true; group: string; render: typeof trajectoryRender; configSchema: { key: string; label: () => string; type: "mode"; default: string; options: [string, () => string][]; }[]; }; export default _default;