import type { WidgetRenderOut, WidgetStats } from '../../lib/contract/types'; /** Bytes → human GB ("17.4 GB"), one decimal below 10 GB, integer above. */ export declare function fmtGb(bytes: number): string; /** Trim the verbose vendor prefix so the model name fits the 2×4 title row * ("NVIDIA GeForce RTX 5070 Ti Laptop GPU" → "RTX 5070 Ti Laptop GPU"). */ export declare function shortGpuName(name: string): string; /** Shared "no snapshot yet" shape (collector idle / host down / first paint). */ export declare function sysUnavailable(titleKey: string): WidgetRenderOut; /** sys-cpu: big utilization (or used memory, clickable/dropdown) + mem line. */ export declare function sysCpuRender(stats: WidgetStats): WidgetRenderOut | null; /** sys-gpu: big VRAM (or temp / utilization, clickable/dropdown) + util/temp * line. No GPU model name on the card — the value must sit bottom-left as the * large figure (a headRight would pull it into the title row). */ export declare function sysGpuRender(stats: WidgetStats): WidgetRenderOut | null; /** sys-rings: CPU utilization ring + GPU utilization ring (GPU ring absent * while no NVIDIA GPU is detected). Values and names share one row per ring. */ export declare function sysRingsRender(stats: WidgetStats): WidgetRenderOut | null; /** sys-board: the 2×4 monitoring dashboard — every metric as a ring (CPU * utilization, memory, GPU utilization, VRAM). The GPU model (short form) * and temperature sit at the RIGHT END of the title row; no extra volume row * (the 0/0 GB line was removed — the rings + names carry the information). */ export declare function sysBoardRender(stats: WidgetStats): WidgetRenderOut | null; /** sys-gpu-line: GPU performance sparkline (Windows-task-manager style) with the * current utilization as the big figure. The head is the SAME three rungs every * ring card uses — blue title on top, big percent on the next row, grey `°C · GB` * facts on their OWN row under it — which is also the shape the owner asked for * (2026-10-03): the facts used to RIDE the figure's row (`headAfter.small`) and * the grey reading never got a line of its own. The ring on the right shows the * same utilization the figure prints, so the arc and the number never disagree. * The card body carries the sparkline, which is ELASTIC (CardBody gives the line * chart the remaining vertical space, ChartBlock renders it at flex:1/100%) — so * the card's intrinsic height stays inside the 2×2 box at ANY side size or * magnification factor (the old fixed 68px sparkline totalled ≈178px and burst * the 150px box on hover). */ export declare function sysGpuLineRender(stats: WidgetStats): WidgetRenderOut | null;