import { KnownRoles, TrackStateEntry } from './StoreInterfaces';
import { HMSConfig, HMSFrameworkInfo, HMSPoll, HMSSpeaker, HMSWhiteboard } from '../../interfaces';
import { IErrorListener } from '../../interfaces/error-listener';
import { HMSSimulcastLayerDefinition, SimulcastLayer } from '../../interfaces/simulcast-layers';
import { HMSAudioTrack, HMSLocalTrack, HMSRemoteVideoTrack, HMSTrack, HMSTrackSource, HMSVideoTrack } from '../../media/tracks';
import { PolicyParams } from '../../notification-manager';
import { ENV } from '../../utils/support';
import HMSRoom from '../models/HMSRoom';
import { HMSLocalPeer, HMSPeer, HMSRemotePeer } from '../models/peer';
declare class Store {
    private TAG;
    private room?;
    private knownRoles;
    private localPeerId?;
    private peers;
    private tracks;
    private templateAppData?;
    private peerTrackStates;
    private speakers;
    private videoLayers?;
    private config?;
    private errorListener?;
    private roleDetailsArrived;
    private env;
    private simulcastEnabled;
    private userAgent;
    private polls;
    private whiteboards;
    getConfig(): HMSConfig | undefined;
    setSimulcastEnabled(enabled: boolean): void;
    removeRemoteTracks(): void;
    getEnv(): ENV;
    getPublishParams(): import("../../interfaces").PublishParams | undefined;
    getRoom(): HMSRoom | undefined;
    getPolicyForRole(role: string): import("../../interfaces").HMSRole;
    getKnownRoles(): KnownRoles;
    getTemplateAppData(): Record<string, string> | undefined;
    getLocalPeer(): HMSLocalPeer | undefined;
    getRemotePeers(): HMSRemotePeer[];
    getPeers(): HMSPeer[];
    getPeerMap(): Record<string, HMSPeer>;
    getPeerById(peerId: string): HMSPeer | undefined;
    getTracksMap(): Map<HMSTrack, HMSTrack>;
    getTracks(): HMSTrack[];
    getVideoTracks(): HMSVideoTrack[];
    getRemoteVideoTracks(): HMSRemoteVideoTrack[];
    getAudioTracks(): HMSAudioTrack[];
    getPeerTracks(peerId?: string): HMSTrack[];
    getLocalPeerTracks(): HMSLocalTrack[];
    hasTrack(track: HMSTrack): boolean;
    getTrackById(trackId: string): HMSTrack | import("../../media/tracks").HMSLocalAudioTrack | undefined;
    getPeerByTrackId(trackId: string): HMSPeer | undefined;
    getSpeakers(): HMSSpeaker[];
    getSpeakerPeers(): HMSPeer[];
    getUserAgent(): string;
    createAndSetUserAgent(frameworkInfo?: HMSFrameworkInfo): void;
    setRoom(room: HMSRoom): void;
    setKnownRoles(params: PolicyParams): void;
    hasRoleDetailsArrived(): boolean;
    setConfig(config: HMSConfig): void;
    addPeer(peer: HMSPeer): void;
    /**
     * @param {HMSTrack} track the published track that has to be added
     *
     * Note: Only use this method to add published tracks not preview traks
     */
    addTrack(track: HMSTrack): void;
    getTrackState(trackId: string): TrackStateEntry;
    setTrackState(trackStateEntry: TrackStateEntry): void;
    removeTrackState(trackId: string): void;
    removePeer(peerId: string): void;
    removeTrack(track: HMSTrack): void;
    updateSpeakers(speakers: HMSSpeaker[]): void;
    updateAudioOutputVolume(value: number): Promise<void>;
    updateAudioOutputDevice(device: MediaDeviceInfo): Promise<void>;
    getSimulcastLayers(source: HMSTrackSource): SimulcastLayer[];
    /**
     * Convert maxBitrate from kbps to bps
     * @internal
     * @param simulcastLayers
     * @returns {SimulcastLayers}
     */
    private convertSimulcastLayers;
    getSimulcastDefinitionsForPeer(peer: HMSPeer, source: HMSTrackSource): HMSSimulcastLayerDefinition[];
    setPoll(poll: HMSPoll): void;
    getPoll(id: string): HMSPoll | undefined;
    setWhiteboard(whiteboard: HMSWhiteboard): void;
    getWhiteboards(): Map<string, HMSWhiteboard>;
    getWhiteboard(id?: string): HMSWhiteboard | undefined;
    getErrorListener(): IErrorListener | undefined;
    cleanup(): void;
    setErrorListener(listener: IErrorListener): void;
    private updatePeersPolicy;
    private addPluginsToRoles;
    private addPermissionToRole;
    private addWhiteboardPluginToRole;
    private addTranscriptionsPluginToRole;
    private handleNoiseCancellationPlugin;
    private setEnv;
}
export { Store };
