import { TUIConferenceInfo, TUIConferenceListManagerEvents, TUIRoomType, TUISeatMode, TUIUserInfo, TUIConferenceStatus } from '@tencentcloud/tuiroom-engine-js';
import { IRoomService } from '../types';

export * from '@tencentcloud/tuiroom-engine-js';
interface IScheduleConferenceManager {
    on(eventType: TUIConferenceListManagerEvents, callback: (data?: any) => any): void;
    off(eventType: TUIConferenceListManagerEvents, callback: (data?: any) => void): void;
    dispose(): void;
    scheduleConference(conferenceInfo: IScheduleConferenceOptions): Promise<void>;
    cancelConference(options: {
        roomId: string;
    }): Promise<void>;
    updateConferenceInfo(options: {
        roomId: string;
        roomName?: string;
        scheduleStartTime?: number;
        scheduleEndTime?: number;
    }): Promise<void>;
    fetchScheduledConferenceList(options: {
        statusArray?: TUIConferenceStatus[];
        cursor: string;
        count: number;
    }): Promise<Array<TUIConferenceInfo>>;
    fetchAttendeeList(options: {
        roomId: string;
        cursor: string;
        count: number;
    }): Promise<Array<TUIUserInfo>>;
    addAttendeesByAdmin(options: {
        roomId: string;
        userIdList: string[];
    }): Promise<void>;
    removeAttendeesByAdmin(options: {
        roomId: string;
        userIdList: string[];
    }): Promise<void>;
    fetchFriendList(): Promise<void>;
    replaceFriendList(userList: Array<{
        userID: string;
        avatar: string;
        nick: string;
    }>): void;
}
export interface IScheduleConferenceOptions {
    scheduleStartTime: number;
    scheduleEndTime: number;
    scheduleAttendees?: string[];
    reminderSecondsBeforeStart?: number;
    roomId: string;
    roomName?: string;
    roomType?: TUIRoomType;
    isSeatEnabled?: boolean;
    seatMode?: TUISeatMode;
    isMicrophoneDisableForAllUser?: boolean;
    isScreenShareDisableForAllUser?: boolean;
    isCameraDisableForAllUser?: boolean;
    isMessageDisableForAllUser?: boolean;
    maxSeatCount?: number;
    password?: string;
}
export declare class ScheduleConferenceManager implements IScheduleConferenceManager {
    private service;
    private customFriendList?;
    private emitter;
    constructor(service: IRoomService);
    dispose(): void;
    on(eventType: TUIConferenceListManagerEvents, callback: (data?: any) => any): void;
    off(eventType: TUIConferenceListManagerEvents, callback: (data?: any) => void): void;
    private emit;
    private bindEventContext;
    private bindEvent;
    private unbindEvent;
    private onConferenceScheduled;
    private onConferenceWillStart;
    private onConferenceCancelled;
    private onConferenceInfoChanged;
    private onScheduleAttendeesChanged;
    private onConferenceStatusChanged;
    fetchFriendList(): Promise<any>;
    replaceFriendList(userList: Array<{
        userID: string;
        avatar: string;
        nick: string;
    }>): void;
    scheduleConference(options: IScheduleConferenceOptions): Promise<any>;
    cancelConference(options: {
        roomId: string;
    }): Promise<any>;
    updateConferenceInfo(options: {
        roomId: string;
        roomName?: string;
        scheduleStartTime?: number;
        scheduleEndTime?: number;
    }): Promise<any>;
    fetchScheduledConferenceList(options: {
        statusArray?: TUIConferenceStatus[];
        cursor: string;
        count: number;
    }): Promise<any>;
    fetchAttendeeList(options: {
        roomId: string;
        cursor: string;
        count: number;
    }): Promise<any>;
    addAttendeesByAdmin(options: {
        roomId: string;
        userIdList: string[];
    }): Promise<any>;
    removeAttendeesByAdmin(options: {
        roomId: string;
        userIdList: string[];
    }): Promise<any>;
}
