import { ChatSDK } from '../../node_modules/@tencentcloud/chat';
import { StartParams, JoinParams, LanguageOption } from './services';
import { TUIRoomEngine } from './index';
import { StreamInfo, UserInfo } from './stores/room';
import { Comparator } from './utils/utils';

export declare enum RoomEvent {
    ROOM_START = "RoomStart",
    ROOM_JOIN = "RoomJoin",
    ROOM_LEAVE = "RoomLeave",
    ROOM_DISMISS = "RoomDestroy",
    ROOM_ERROR = "RoomError",
    KICKED_OUT = "KickedOut",
    KICKED_OFFLINE = "KickedOffline",
    USER_SIG_EXPIRED = "UserSigExpired",
    USER_LOGOUT = "UserLogout",
    LANGUAGE_CHANGED = "LanguageChanged",
    THEME_CHANGED = "ThemeChanged",
    CONFERENCE_INVITATION_ACCEPTED = "ConferenceInvitationAccepted"
}
export declare enum FeatureButton {
    SwitchTheme = "SwitchTheme",
    SwitchLayout = "LayoutControl",
    SwitchLanguage = "Language",
    FullScreen = "FullScreen",
    Invitation = "InviteControl",
    BasicBeauty = "BasicBeauty"
}
export type ThemeOption = 'LIGHT' | 'DARK';
interface IConference {
    getRoomEngine(): TUIRoomEngine | null;
    on: (eventType: RoomEvent, callback: (data?: LanguageOption | ThemeOption | any) => void) => void;
    off: (eventType: RoomEvent, callback: (data?: LanguageOption | ThemeOption | any) => void) => void;
    login: (params: {
        sdkAppId: number;
        userId: string;
        userSig: string;
        tim?: ChatSDK;
    }) => Promise<void>;
    logout: () => Promise<void>;
    start: (roomId: string, params: StartParams) => Promise<void>;
    join: (roomId: string, params: JoinParams) => Promise<void>;
    leave: () => Promise<void>;
    dismiss: () => Promise<void>;
    setSelfInfo: (options: {
        userName: string;
        avatarUrl: string;
    }) => Promise<void>;
    setLanguage: (language: LanguageOption) => void;
    setTheme: (theme: ThemeOption) => void;
    disableTextMessaging: () => void;
    disableScreenSharing: () => void;
    enableWatermark: () => void;
    enableVirtualBackground: () => void;
    hideFeatureButton: (name: FeatureButton) => void;
    replaceFriendList: (userList: Array<any>) => void;
    setUserListSortComparator: (comparator: Comparator<UserInfo>) => void;
    setStreamListSortComparator: (comparator: Comparator<StreamInfo>) => void;
    setParticipants: (participants: Array<{
        userName: string;
        userId: string;
        avatarUrl: string;
    }>) => void;
}
declare class Conference implements IConference {
    login(params: {
        sdkAppId: number;
        userId: string;
        userSig: string;
        tim?: ChatSDK;
    }): Promise<void>;
    logout(): Promise<void>;
    getRoomEngine(): TUIRoomEngine | null;
    on(eventType: RoomEvent, callback: (data?: LanguageOption | ThemeOption | any) => void): void;
    off(eventType: RoomEvent, callback: (data?: LanguageOption | ThemeOption | any) => void): void;
    start(roomId: string, params?: StartParams): Promise<void>;
    join(roomId: string, params?: JoinParams): Promise<void>;
    leave(): Promise<void>;
    dismiss(): Promise<void>;
    setSelfInfo(options: {
        userName: string;
        avatarUrl: string;
    }): Promise<void>;
    setLanguage(language: LanguageOption): void;
    setTheme(theme: ThemeOption): void;
    disableTextMessaging(): void;
    disableScreenSharing(): void;
    enableWatermark(): void;
    enableVirtualBackground(): void;
    hideFeatureButton(name: FeatureButton): void;
    replaceFriendList(userList: Array<any>): void;
    setUserListSortComparator(comparator: Comparator<UserInfo>): void;
    setStreamListSortComparator(comparator: Comparator<StreamInfo>): void;
    setParticipants(participants: Array<{
        userName: string;
        userId: string;
        avatarUrl: string;
    }>): void;
}
export declare const conference: Conference;
export {};
