import { TUIRoomType } from '../../../../node_modules/@tencentcloud/tuiroom-engine-js';
import { IRoomService, RoomParam } from '../types';

export interface DeviceParams {
    isOpenCamera?: boolean;
    isOpenMicrophone?: boolean;
    defaultCameraId?: string;
    defaultMicrophoneId?: string;
    defaultSpeakerId?: string;
}
export interface StartParams extends DeviceParams {
    roomName?: string;
    isSeatEnabled?: boolean;
    password?: string;
}
export interface JoinParams extends DeviceParams {
    password?: string;
}
export type RoomParamsInfo = {
    roomId: string;
    roomType: TUIRoomType;
};
export declare class RoomActionManager {
    private service;
    private userListNextSequence;
    hasMoreUsers: boolean;
    constructor(service: IRoomService);
    private onRoomUserCountChanged;
    private bindRoomEngineEvents;
    unbindRoomEngineEvents(): void;
    start(roomId: string, params?: StartParams): Promise<void>;
    join(roomId: string, params?: JoinParams): Promise<void>;
    leaveRoom(): Promise<void>;
    dismissRoom(): Promise<void>;
    createRoom(options: {
        roomId: string;
        roomName?: string;
        roomMode?: 'FreeToSpeak' | 'SpeakAfterTakingSeat';
        roomParam?: StartParams;
    }): Promise<void>;
    private handleRoomCreation;
    enterRoom(options: {
        roomId: string;
        roomParam?: RoomParam;
    }): Promise<void>;
    private setRoomParams;
    private doEnterRoom;
    private getUserList;
    loadMoreUsers(): Promise<void>;
    private getInvitationList;
    private fetchAttendeeList;
    private syncUserInfo;
    private getSeatList;
    private closeMediaBeforeLeave;
    fetchRoomInfo(options?: RoomParamsInfo): Promise<any>;
}
