import { VoiceThemeColors, VoiceBeamColorVariant } from './types'; /** * Per-theme presets. Tuned against border-beam's `line` type on the same * dark/light stages, so the two read as one family when used side by side. */ export declare const themePresets: Record<'dark' | 'light', VoiceThemeColors>; /** * Lobe geometry, in px for a ~350px-wide reference element. Seven soft * ellipses fan out from the bottom center: the centre lobe follows the low * band, its neighbours the mids, the outer pair the highs and the far pair * the mids again, so a voice makes the colours ripple outward instead of * one blob pumping. `x` is the resting offset from centre; the driver * slides every lobe along by the flow phase (wrapping at ±LOBE_SPAN/2 so * the colours cycle through the centre) and it scales with the spread so * a loud sound pushes the side lobes apart. */ export interface VoiceLobe { x: number; w: number; h: number; band: 0 | 1 | 2; } export declare const voiceLobes: readonly VoiceLobe[]; /** Resting distance between neighbouring lobes, px. */ export declare const LOBE_SPACING = 36; /** Width of the ring the lobes travel around, px — one full turn of the flow. */ export declare const LOBE_SPAN: number; /** * Seven colours per palette, one per lobe (centre first, then pairs). Light * palettes use deeper values because they sit on a white surface at far * lower opacity. */ export declare const voicePalettes: Record; export interface GenerateVoiceStylesOptions { id: string; borderRadius: number; borderWidth: number; strokeOpacity: number; innerOpacity: number; bloomOpacity: number; innerShadow: string; colorVariant: VoiceBeamColorVariant; /** Lobe colours overriding the variant palette (any CSS hex / rgb). */ colors?: string[]; brightness: number; saturation: number; theme: 'dark' | 'light'; /** The theme's resting hue shift in degrees (the `--voice-hue-base` fallback). */ hueBase?: number; glowSize?: number; /** Multiplies every lobe's width / height, all layers. */ glowWidth?: number; glowHeight?: number; /** Per-layer scale (both axes) and extra vertical scale. */ strokeScale?: number; innerScale?: number; innerHeight?: number; bloomScale?: number; bloomHeight?: number; /** The white hot spot at the centre of the edge. */ coreSize?: number; /** The epicentre wash under the band line: its opacity (0 = no layer) and size. */ coreLight?: number; coreLightWidth?: number; coreLightHeight?: number; /** The visible ellipse every layer is masked to. */ rangeWidth?: number; rangeHeight?: number; /** Where each lobe's gradient fades out; 1 is the tuned edge. */ softness?: number; /** Reference the instance's distortion filter on the inner and bloom layers. */ distortion?: boolean; /** The effect's overall scale, for the px values not carried by a multiplier. */ scale?: number; } /** * Generate the complete stylesheet for one VoiceBeam instance. * * Three layers, bottom-centred and clipped to the element, mirror * border-beam's `line` type: `::after` paints the colours into the 1px edge * ring (the crisp stroke), `::before` the soft light inside the element, and * `[data-voice-beam-bloom]` a blurred halo above both. Every size and * position multiplies a per-instance custom property the JS driver writes * each frame: `--vb-h` (height), `--vb-w` (spread), `--vb-xN` / `--vb-lN` * (each lobe's offset along the flow and its amplitude from the band it * follows and its distance from centre), `--vb-bh` / `--vb-bendA` (the * bend's extra height at the centre and its strength), `--vb-glow` * (presence), * `--vb-cx` / `--vb-mw` (where the whole beam sits and how narrow its * range is — the processing travel) and `--vb-hue` (drift). */ export declare function generateVoiceBeamCSS(options: GenerateVoiceStylesOptions): string;