import { VoiceBeamType } from './types'; /** * The geometry and response knobs a `type` preset may retune. Everything * here is a prop on the component; the preset only supplies the default, * so an explicit prop always wins. */ export interface VoiceGeometry { /** Size of the whole effect (see the `scale` prop). */ scale: number; /** Bloom blur multiplier (see the `glowSize` prop). */ glowSize: number; /** Processing: seconds per pass of the beam, the level it is held at, how far it travels and how it eases into the turns. */ processingDuration: number; processingLevel: number; processingTravel: number; processingCurve: number; /** How much the travelling beam rides the element's corner arcs, 0–1. */ cornerFollow: number; /** Per-layer opacity multipliers on the theme preset. */ strokeOpacity: number; innerOpacity: number; bloomOpacity: number; idle: number; reach: number; spread: number; flow: number; bend: number; bandStrength: number; bandWidth: number; bandPosition: number; bandCurve: number; bandSpread: number; bandSkew: number; bandOffset: number; /** How far the band's ends rise again toward the corners, as a fraction of its peak. */ bandTail: number; /** Where the tail's rise starts, as a share of the centre-to-edge distance; it always reaches full lift at the corner. */ bandTailPosition: number; /** Exponent of the rise: 1 a straight ramp, higher a hook that stays low then whips up at the corner. */ bandTailCurve: number; /** Px the band runs past each side of the element, so the hook is cropped by the component. */ bandTailOverflow: number; bandAberration: number; distortion: number; distortionDetail: number; glowWidth: number; glowHeight: number; lobeSpacing: number; rangeWidth: number; rangeHeight: number; softness: number; coreSize: number; /** The epicentre: a white wash under the band line at the centre of the edge, 0–1 (light theme only by default). */ coreLight: number; coreLightWidth: number; coreLightHeight: number; strokeScale: number; innerScale: number; innerHeight: number; bloomScale: number; bloomHeight: number; } /** * The tuned defaults — the `default` type, a ~350px chat input. */ export declare const voiceDefaults: VoiceGeometry; /** * Per-type overrides on the defaults. The glow is authored in px for the * default host, so a smaller or larger host needs its lobes, range and * band rescaled to read the same. * * - `pill`: a ~150×44 recording pill — everything pulled in, a lower * reach, a shallower bend, a thinner band. * - `mobile`: the bottom of a phone screen (~400px wide, tall) — a wider * range and lobe ring, a taller rise, a broader band. */ export declare const voiceTypePresets: Record>; /** * Colour tuning a type may carry on top of the theme preset (brightness * and saturation default per theme, so these are optional overrides). */ export type VoiceTypeStyle = { brightness?: number; saturation?: number; strength?: number; }; export declare const voiceTypeStyle: Record; /** The colour tuning for a type on a theme. */ export declare function resolveVoiceStyle(type?: VoiceBeamType, theme?: 'dark' | 'light'): VoiceTypeStyle; export declare function resolveVoiceDefaults(type?: VoiceBeamType, theme?: 'dark' | 'light'): VoiceGeometry;