/** * Debug Dashboard — Panel Widget Types * * Shared types for the live debug dashboard. Unlike the scrolling log stream, * panel widgets have a fixed slot keyed by `id`: sending the same id again * overwrites the value in place instead of scrolling away. Designed for * high-frequency / repeated values (audio levels, buffer fill, FPS, etc.). * * Sibling of log-types.ts — same HTTP-ingest → broadcast flow. */ export type WidgetType = 'label' | 'progress' | 'gauge' | 'plot' | 'slider' | 'number' | 'toggle' | 'button'; export declare const CONTROL_TYPES: Set; /** * Button counters wrap here instead of growing without bound. * * A source detects a press by comparing the current counter against the last * one it saw. That means it must treat ANY backwards jump as "restart, adopt * the new value" rather than as a press count — which happens on wrap, on * POST /panel/clear, and whenever the hub restarts. Kept well inside the range * where common integer types (and JS numbers) are exact, so a 32-bit device * reading the value sees the same number we sent. */ export declare const BUTTON_COUNTER_MAX = 1000000; /** * HTTP body for POST /panel (and array of these for POST /panels). * Only `id` and `type` are required; everything else has sensible defaults. */ export interface PanelHttpEntry { id?: string; type?: string; value?: number | string | number[]; group?: string; label?: string; unit?: string; min?: number; max?: number; step?: number; warn?: number; crit?: number; color?: string; order?: number; state?: string; scale?: string; decimals?: number; autoMin?: boolean; } /** * Server-side widget state (kept in PanelStore, one per id). * For plots, `history` is a ring of the most recent numeric samples. */ export interface PanelWidget { id: string; type: WidgetType; value: number | string; group: string; label: string; unit?: string; min: number; max: number; step?: number; warn?: number; crit?: number; color?: string; order: number; state?: string; scale?: string; decimals?: number; autoMin?: boolean; history?: number[]; lastUpdate: number; } export interface PanelClearParams { id?: string; } //# sourceMappingURL=panel-types.d.ts.map