type Vec3 = [number, number, number]; /** * SpatialAudioZone.ts * * Region-based audio environments: reverb zones, ambient areas, * and audio portals for zone transitions. * * @module audio */ export interface ReverbPreset { name: string; decay: number; density: number; diffusion: number; wetLevel: number; earlyReflections: number; } export interface AudioZoneConfig { id: string; shape: 'box' | 'sphere'; position: [number, number, number]; size: Vec3; reverb: ReverbPreset; ambientClipId?: string; ambientVolume?: number; priority: number; fadeDistance: number; } export interface AudioPortal { id: string; position: [number, number, number]; normal: Vec3; width: number; height: number; fromZoneId: string; toZoneId: string; attenuation: number; } export interface ZoneState { zoneId: string; blendWeight: number; isInside: boolean; } export declare const REVERB_PRESETS: Record; export declare class SpatialAudioZoneSystem { private zones; private portals; private activeZones; private listenerPos; addZone(config: AudioZoneConfig): void; removeZone(zoneId: string): void; getZone(zoneId: string): AudioZoneConfig | undefined; getZoneCount(): number; addPortal(portal: AudioPortal): void; removePortal(portalId: string): void; updateListenerPosition(pos: Vec3): void; private recalculate; private distanceToZone; getActiveZones(): ZoneState[]; /** * Returns the highest-priority active reverb preset, blended by weight. */ getEffectiveReverb(): ReverbPreset | null; isListenerInsideZone(zoneId: string): boolean; /** * Get portal attenuation between two zones. */ getPortalAttenuation(fromZone: string, toZone: string): number; } export {}; //# sourceMappingURL=SpatialAudioZone.d.ts.map