import type { TypedEventEmitter } from '@livekit/typed-emitter';
import type { InterruptionMetrics } from '../../metrics/base.js';
import { InterruptionDetectionError } from './errors.js';
import { InterruptionStreamBase } from './interruption_stream.js';
import type { InterruptionOptions, OverlappingSpeechEvent } from './types.js';
type InterruptionCallbacks = {
    overlapping_speech: (event: OverlappingSpeechEvent) => void;
    metrics_collected: (metrics: InterruptionMetrics) => void;
    error: (error: InterruptionDetectionError) => void;
};
export type AdaptiveInterruptionDetectorOptions = Partial<InterruptionOptions>;
declare const AdaptiveInterruptionDetector_base: new () => TypedEventEmitter<InterruptionCallbacks>;
export declare class AdaptiveInterruptionDetector extends AdaptiveInterruptionDetector_base {
    options: InterruptionOptions;
    private readonly _label;
    private logger;
    private streams;
    constructor(options?: AdaptiveInterruptionDetectorOptions);
    /**
     * The model identifier for this detector.
     */
    get model(): string;
    /**
     * The provider identifier for this detector.
     */
    get provider(): string;
    /**
     * The label for this detector instance.
     */
    get label(): string;
    /**
     * The sample rate used for audio processing.
     */
    get sampleRate(): number;
    /**
     * Emit an error event from the detector.
     */
    emitError(error: InterruptionDetectionError): void;
    /**
     * Creates a new InterruptionStreamBase for internal use.
     * The stream can receive audio frames and sentinels via pushFrame().
     * Use this when you need direct access to the stream for pushing frames.
     */
    createStream(): InterruptionStreamBase;
    /**
     * Remove a stream from tracking (called when stream is closed).
     */
    removeStream(stream: InterruptionStreamBase): void;
    /**
     * Update options for the detector and propagate to all active streams.
     * For WebSocket streams, this triggers a reconnection with new settings.
     */
    updateOptions(options: {
        threshold?: number;
        minInterruptionDurationInS?: number;
    }): Promise<void>;
}
export {};
//# sourceMappingURL=interruption_detector.d.ts.map