import type { App } from '../../App'; import type { Group } from '../../shapes/Group'; import type { Node } from '../../Node'; import { TextNode } from '../../shapes/index'; import { type ThemePalette } from '../themes'; import type { WidgetBounds } from '../layout'; export type PanelApp = App; export declare function panelTheme(props: Record): ThemePalette; export declare function panelBounds(props: Record, dw?: number, dh?: number): WidgetBounds; export declare function panelGroup(app: App, type: string, props: Record, bounds: WidgetBounds): Group; export declare function addPanelFrame(group: Group, app: App, bounds: WidgetBounds, theme: ThemePalette, compact?: boolean): void; /** Absolute Y for text anchor (middle baseline). */ export declare function textAt(anchorY: number, fontSize: number): number; export declare function addPanelTitle(group: Group, app: App, bounds: WidgetBounds, theme: ThemePalette, title: string): number; export declare function addProgressBar(group: Group, app: App, x: number, y: number, w: number, h: number, progress: number, theme: ThemePalette): void; export declare function addIconTile(group: Group, app: App, x: number, y: number, size: number, icon: string, active: boolean, theme: ThemePalette, label?: string): void; export declare function addTransportRow(group: Group, app: App, cx: number, y: number, w: number, h: number, theme: ThemePalette, playing?: boolean): void; export declare function addAlbumPlaceholder(group: Group, app: App, x: number, y: number, size: number, accent?: string): void; export declare function addMediaArtAndMeta(group: Group, app: App, bounds: WidgetBounds, theme: ThemePalette, top: number, title: string, artist: string, accent: string): { artSize: number; bottom: number; }; export declare function addListRow(group: Group, app: App, x: number, y: number, w: number, h: number, icon: string, text: string, meta: string | undefined, theme: ThemePalette, accent?: boolean): void; export declare function lonLatToTile(lon: number, lat: number, zoom: number): { x: number; y: number; }; export declare function osmTileUrl(zoom: number, x: number, y: number): string; export declare function addOsmMapLayer(group: Group, app: App, x: number, y: number, w: number, h: number, theme: ThemePalette, options?: { lat?: number; lon?: number; zoom?: number; route?: boolean; marker?: boolean; useTile?: boolean; }): void; export declare function addCompassRose(group: Group, app: App, cx: number, cy: number, radius: number, heading: number, theme: ThemePalette): void; export declare function finishPanel(group: Group, props: Record, bounds: WidgetBounds, extra?: Record): Node; export declare function fitLabel(app: App, text: string, x: number, y: number, maxW: number, maxSize: number, theme: ThemePalette, bold?: boolean): TextNode; export declare function addTurnArrow(group: Group, app: App, x: number, y: number, size: number, theme: ThemePalette): void;