import { EventBus } from '../events/EventBus';
import { HMSAudioListener, HMSConnectionQualityListener, HMSUpdateListener } from '../interfaces';
import { HMSRemoteTrack } from '../media/tracks';
import { Store } from '../sdk/store';
import HMSTransport from '../transport';
export declare class NotificationManager {
    private store;
    private transport;
    private listener?;
    private audioListener?;
    private connectionQualityListener?;
    private readonly TAG;
    private trackManager;
    private peerManager;
    private peerListManager;
    private activeSpeakerManager;
    private connectionQualityManager;
    private broadcastManager;
    private policyChangeManager;
    private requestManager;
    private roomUpdateManager;
    private sessionMetadataManager;
    private pollsManager;
    private whiteboardManager;
    /**
     * room state can be sent before join in preview stage as well but that is outdated, based on
     * eventual consistency and doesn't have all data. If we get at least one consistent room update
     * from that point onwards we can rely on live server updates and ignore periodic room state messages
     */
    private hasConsistentRoomStateArrived;
    constructor(store: Store, eventBus: EventBus, transport: HMSTransport, listener?: HMSUpdateListener | undefined, audioListener?: HMSAudioListener | undefined, connectionQualityListener?: HMSConnectionQualityListener | undefined);
    setListener(listener?: HMSUpdateListener): void;
    setAudioListener(audioListener?: HMSAudioListener): void;
    setConnectionQualityListener(qualityListener?: HMSConnectionQualityListener): void;
    handleNotification(message: {
        method: string;
        params: any;
    }, isReconnecting?: boolean): void;
    handleIsolatedMethods(method: string, notification: any): void;
    ignoreNotification: (method: string) => boolean;
    handleTrackAdd: (track: HMSRemoteTrack) => void;
    handleTrackRemove: (track: HMSRemoteTrack) => void;
    updateLocalPeer: ({ name, metadata }: {
        name?: string | undefined;
        metadata?: string | undefined;
    }) => void;
}
