import { IRenderer, LayerHook, RenderFrameState } from '../../interfaces/i-renderer'; import { BubbleState } from '../../models/internal/bubble-state'; import { Configuration, RenderLayer } from '../../models/public/configuration'; export declare class SvgRenderer implements IRenderer { private readonly config; private svgEl; private defsEl; private container; private width; private height; private readonly layerGroups; private readonly hooksByLayer; constructor(config: Configuration); mount(container: HTMLElement): void; renderFrame(bubbles: ReadonlyArray, state: RenderFrameState): void; renderLayer(layer: RenderLayer, bubbles: ReadonlyArray, state: RenderFrameState): void; addLayerHook(hook: Omit): string; removeLayerHook(id: string): void; getLayerHooks(layer?: RenderLayer): ReadonlyArray; resize(width: number, height: number): void; dispose(): void; /** * Registers an internal built-in hook using the reserved "builtin:" prefix. * This method is intentionally separate from the public addLayerHook() to * enforce the prefix restriction at the type boundary. */ private registerBuiltinHook; /** * Inserts a hook in priority-ascending order, preserving insertion order for * ties (stable sort behaviour via scan from the tail). */ private insertHook; /** * Ensures one radial gradient definition per unique bubble color exists in * when the theme is "glass". Clears all defs for the "flat" theme. */ private syncGradientDefs; private drawBackground; private drawShadows; private drawBubbles; private drawText; private drawDebug; private lightenColor; private darkenColor; /** * Shifts each RGB channel of a hex color by amount * 255. * Positive amount lightens; negative darkens. Clamps to [0, 255]. * Handles both 3-digit and 6-digit hex strings, with or without '#'. */ private shiftColor; }