import type { AudioTrackType } from '../types';
import { CallState } from '../store';
import { Tracer } from '../stats';
/**
 * Tracks audio element bindings and periodically warns about
 * remote participants whose audio streams have no bound element.
 */
export declare class AudioBindingsWatchdog {
    private bindings;
    private enabled;
    private watchdogInterval?;
    private readonly unsubscribeCallingState;
    private logger;
    private readonly state;
    private readonly tracer;
    constructor(state: CallState, tracer: Tracer);
    /**
     * Registers an audio element binding for the given session and track type.
     * Warns if a different element is already bound to the same key.
     */
    register: (element: HTMLAudioElement, sessionId: string, trackType: AudioTrackType) => void;
    /**
     * Removes the audio element binding for the given session and track type.
     */
    unregister: (sessionId: string, trackType: AudioTrackType) => void;
    /**
     * Enables or disables the watchdog.
     * When disabled, the periodic check stops but bindings are still tracked.
     */
    setEnabled: (enabled: boolean) => void;
    /**
     * Stops the watchdog and unsubscribes from callingState changes.
     */
    dispose: () => void;
    private start;
    private stop;
}
