import { HMSInternalEvent } from './HMSInternalEvent';
import AnalyticsEvent from '../analytics/AnalyticsEvent';
import { HMSException } from '../error/HMSException';
import { HMSDeviceChangeEvent, HMSRole } from '../interfaces';
import { HMSLocalAudioTrack, HMSLocalVideoTrack, HMSRemoteAudioTrack, HMSRemoteVideoTrack, HMSWebrtcStats } from '../internal';
import { PolicyParams } from '../notification-manager/HMSNotifications';
import { HMSRemotePeer } from '../sdk/models/peer';
import { ITrackAudioLevelUpdate } from '../utils/track-audio-level-monitor';
export declare class EventBus {
    private eventEmitter;
    readonly analytics: HMSInternalEvent<AnalyticsEvent>;
    readonly deviceChange: HMSInternalEvent<HMSDeviceChangeEvent>;
    readonly localAudioEnabled: HMSInternalEvent<{
        enabled: boolean;
        track: HMSLocalAudioTrack;
    }>;
    readonly localVideoEnabled: HMSInternalEvent<{
        enabled: boolean;
        track: HMSLocalVideoTrack;
    }>;
    readonly localVideoUnmutedNatively: HMSInternalEvent<unknown>;
    readonly localAudioUnmutedNatively: HMSInternalEvent<unknown>;
    /**
     * Emitter which processes raw RTC stats from rtcStatsUpdate and calls client callback
     */
    readonly statsUpdate: HMSInternalEvent<HMSWebrtcStats>;
    readonly trackDegraded: HMSInternalEvent<HMSRemoteVideoTrack>;
    readonly trackRestored: HMSInternalEvent<HMSRemoteVideoTrack>;
    /**
     * Emits audio level updates for audio tracks(used with local track in preview)
     */
    readonly trackAudioLevelUpdate: HMSInternalEvent<ITrackAudioLevelUpdate>;
    readonly audioPluginFailed: HMSInternalEvent<HMSException>;
    readonly localAudioSilence: HMSInternalEvent<{
        track: HMSLocalAudioTrack;
    }>;
    readonly policyChange: HMSInternalEvent<PolicyParams>;
    readonly localRoleUpdate: HMSInternalEvent<{
        oldRole: HMSRole;
        newRole: HMSRole;
    }>;
    readonly audioTrackUpdate: HMSInternalEvent<{
        track: HMSRemoteAudioTrack;
        enabled: boolean;
    }>;
    readonly audioTrackAdded: HMSInternalEvent<{
        track: HMSRemoteAudioTrack;
        peer: HMSRemotePeer;
    }>;
    readonly audioTrackRemoved: HMSInternalEvent<HMSRemoteAudioTrack>;
    readonly autoplayError: HMSInternalEvent<HMSException>;
    readonly leave: HMSInternalEvent<HMSException | undefined>;
    readonly error: HMSInternalEvent<HMSException>;
}
