import { TypedEventEmitter } from './typed-event-emitter'; export interface VoiceActivityConfig { /** Порог громкости для определения речи (шкала 0–100) */ volumeThreshold: number; /** Через сколько мс тишины считаем что перестал говорить */ silenceTimeout: number; /** Размер FFT-блока (по умолчанию 256 или 512) */ fftSize?: number; /** Интервал обновления анализа, мс */ updateInterval?: number; /** 0–1, ближе к 1 — сильнее сглаживание */ smoothingFactor?: number; } export interface VoiceActivityState { volume: number; isSpeaking: boolean; } export type VoiceActivityCallback = (state: VoiceActivityState) => void; interface VADEventMap { stateChange: (state: VoiceActivityState) => void; } export declare class VoiceActivityDetector extends TypedEventEmitter { private audioContext; private analyser; private source; private intervalId; private lastSpeaking; private lastVolume; private silenceStart; private config; constructor(config?: VoiceActivityConfig); start(track: MediaStreamTrack): void; stop(): void; updateConfig(newConfig: Partial): void; onStateChange(callback: VoiceActivityCallback): VoidFunction; private smoothVolume; } export type VoiceActivityDetectorFactory = (options: { volumeThreshold: number; silenceTimeout: number; }) => VoiceActivityDetector; export {};