/// <reference types="node" />
import OT from '@opentok/client';
import { EventEmitter } from 'events';
import { LayoutMode, ManagedLayoutOptions, RoomProperties, IceConfig } from '../../utils/types';
import Participant from '../../internal/participant';
import CameraPublisher from '../camera-publisher';
import ScreenPublisher from '../screen-publisher';
import ParticipantWrapper from '../participant';
import { SignalOptions, SignalEvent } from '../../types/signaling';
import LocalParticipantWrapper from '../local-participant';
declare interface RoomWrapper {
    on(event: 'connected', listener: () => void): this;
    on(event: 'disconnected', listener: (reason: string) => void): this;
    on(event: 'reconnecting', listener: () => void): this;
    on(event: 'reconnected', listener: () => void): this;
    on(event: 'cameraPublisherMediaDisabled', listener: () => void): this;
    on(event: 'cameraSubscriberVideoDisabled', listener: (id: string) => void): this;
    on(event: 'participantJoined', listener: (participant: Participant) => void): this;
    on(event: 'participantLeft', listener: (participant: Participant, reason: string) => void): this;
    on(event: 'activeSpeakerChanged', listener: (participant: Participant) => void): this;
    on(event: 'signal', listener: (event: SignalEvent) => void): this;
}
declare class RoomWrapper extends EventEmitter {
    apiKey: string;
    roomId: string;
    token: string;
    iceConfig?: IceConfig;
    roomContainer?: HTMLElement | string;
    managedLayoutOptions?: ManagedLayoutOptions;
    mediaShutoffThreshold?: number;
    maxVideoParticipantsOnScreen?: number;
    camera: CameraPublisher;
    screen: ScreenPublisher;
    participants: Record<string, ParticipantWrapper | LocalParticipantWrapper>;
    participantId?: string;
    participantName?: string;
    analytics: any;
    participantConnectionData?: string;
    participantInitials?: string;
    join: (publisherOptions?: {
        targetElement?: HTMLElement | string;
        publisherProperties?: OT.PublisherProperties;
    }) => Promise<void>;
    leave: () => Promise<void>;
    setLayoutMode: (mode: LayoutMode) => void;
    startScreensharing: (targetElement?: HTMLElement | string) => Promise<void>;
    stopScreensharing: () => void;
    setEncryptionSecret: (encryptionSecret: string) => Promise<void>;
    signal: (payload: SignalOptions) => Promise<void>;
    constructor(props: RoomProperties);
}
export default RoomWrapper;
