import { UserRenderer } from '../../../agora-rte-sdk/src';
import { SceneDefinition } from 'white-web-sdk';
export type { IMediaRenderer } from '../../../agora-rte-sdk/src';
export declare type AgoraExtAppUserInfo = {
    userUuid: string;
    userName: string;
    roleType: number;
};
export declare type AgoraExtAppRoomInfo = {
    roomUuid: string;
    roomName: string;
    roomType: number;
};
export declare type AgoraExtAppContext = {
    properties: any;
    dependencies: Map<string, any>;
    localUserInfo: AgoraExtAppUserInfo;
    roomInfo: AgoraExtAppRoomInfo;
    language: string;
};
export declare type AgoraExtAppHandle = {
    updateRoomProperty: (properties: any, cause: any) => Promise<void>;
    deleteRoomProperties: (properties: string[], cause: any) => Promise<void>;
};
export interface IAgoraExtApp {
    appIdentifier: string;
    appName: string;
    width: number;
    height: number;
    extAppDidLoad(dom: Element, ctx: AgoraExtAppContext, handle: AgoraExtAppHandle): void;
    extAppRoomPropertiesDidUpdate(properties: any, cause: any): void;
    extAppWillUnload(): void;
}
export declare type ConvertedFile = {
    width: number;
    height: number;
    ppt: {
        width: number;
        src: string;
        height: number;
    };
    conversionFileUrl: string;
};
export declare type CourseWareItem = {
    resourceName: string;
    resourceUuid: string;
    ext: string;
    url: string;
    conversion: {
        type: string;
    };
    size: number;
    updateTime: number;
    scenes: SceneDefinition[];
    convert?: boolean;
    taskUuid?: string;
    taskToken?: string;
    taskProgress?: {
        totalPageSize?: number;
        convertedPageSize?: number;
        convertedPercentage?: number;
        convertedFileList: any;
    };
};
declare type RoomInfoParams = {
    roomName: string;
    roomId: string;
    userName: string;
    userId: string;
    roomPassword: string;
    openCamera: boolean;
    openMic: boolean;
    duration: number;
    totalPeople: number;
    userInOutNotificationLimitCount?: number;
};
export declare type AppStoreConfigParams = {
    agoraAppId: string;
    agoraNetlessAppId: string;
    enableLog: boolean;
    sdkDomain: string;
    rtmUid: string;
    token: string;
    recordUrl: string;
    isRobot?: boolean;
    userProperties?: {
        [key: string]: any;
    };
    flexRoomProps?: {
        [key: string]: any;
    };
    recordConfig?: RecordConfig;
};
export declare type AppStoreInitParams = {
    roomInfoParams?: RoomInfoParams;
    config: AppStoreConfigParams;
    pretest?: boolean;
    mainPath?: string;
    roomPath?: string;
    resetRoomInfo: boolean;
};
export declare enum RoleTypeEnum {
    host = "host",
    broadcaster = "broadcaster",
    audience = "audience"
}
export declare enum DeviceTypeEnum {
    camera = 1,
    mic = 2
}
export declare type RoomInfo = {
    roomName: string;
    roomId: string;
    userId: string;
    userName: string;
    userRole: RoleTypeEnum;
    roomPassword: string;
    startTime: number;
    duration: number;
    streamId?: string;
};
export declare type DeviceInfo = {
    cameraName: string;
    microphoneName: string;
};
export declare type RoomConfigProps<T> = {
    store: T;
};
export interface RoomComponentConfigProps<T> {
    store: T;
    dom: Element;
}
export declare type MeetingConfig = {
    appId: string;
};
export declare type ListenerCallback = (evt: AgoraEvent) => void;
export declare type ChatMessage = {
    timestamp: number;
    messageId: number;
    fromUser: UserInfo;
    content: string;
    isFromMyself: boolean;
    sendState: MessageSendState;
};
export declare type NotifyMessage = {
    payload?: any;
    timestamp: number;
    messageId: number;
    sender: UserInfo;
    type: NotifyMessageType;
};
export declare enum NotifyMessageType {
    ADMIN_MUTE_ALL_MIC = 1,
    ADMIN_MUTE_ALL_CAM = 2,
    ACCESS_CHANGE_CAM_ON = 3,
    ACCESS_CHANGE_MIC_ON = 4,
    ACCESS_CHANGE_CAM_OFF = 5,
    ACCESS_CHANGE_MIC_OFF = 6,
    ADMIN_MUTE_YOUR_CAM = 7,
    ADMIN_MUTE_YOUR_MIC = 8,
    ADMIN_CHANGE_BE_HOST = 9,
    ADMIN_CHANGE_NO_HOST = 10,
    USER_CHANGE_ENTER = 11,
    USER_CHANGE_LEFT = 12,
    SCREEN_CHNAGE_ON = 13,
    SCREEN_CHANGE_OFF = 14,
    BOARD_CHANGE_ON = 15,
    BOARD_CHANGE_OFF = 16,
    BOARD_INTERACT_ON = 17,
    USER_APPROVE_APPLY_CAM = 18,
    USER_APPROVE_APPLY_MIC = 19,
    USER_APPROVE_ACCEPT_CAM = 20,
    USER_APPROVE_ACCEPT_MIC = 21,
    NOTIFY_IN_OUT_OVER_MAX_LIMIT = 22,
    NOTIFY_IN_OUT_CLOSED = 23,
    SYS_PERMISSION_MIC_DENIED = 24,
    SYS_PERMISSION_CAM_DENIED = 25,
    RECORD_CLOSED = 26
}
export declare enum CmdEnum {
    close_all_camera_devices = 300,
    close_all_micro_devices = 301,
    close_single_camera_device = 302,
    close_single_micro_device = 303,
    user_permission_changed = 310,
    start_board = 320,
    close_board = 321,
    update_board = 2,
    update_record = 1,
    start_screen_share = 322,
    close_screen_share = 323
}
export declare enum RenderInfoType {
    media = 1,
    board = 2,
    screenSharing = 3
}
export declare type UserInfo = {
    userId: string;
    userName: string;
    userRole: RoleTypeEnum;
    userProperties?: {
        [key: string]: any;
    };
};
export declare type UserDetailInfo = UserInfo & {
    hasVideo: boolean;
    hasAudio: boolean;
    isSharing: boolean;
    isMe: boolean;
    options: UserOperation[];
};
export declare type RenderInfo = {
    type: RenderInfoType;
    id: string;
    isMe: boolean;
    userInfo: UserInfo;
    isSharing: boolean;
    streamId: string;
    hasVideo: boolean;
    hasAudio: boolean;
    options: UserOperation[];
    renderer: UserRenderer;
    videoPlayerConfig?: VideoPlayerConfig;
};
export declare enum UserOperation {
    abandonHost = 1,
    beHost = 2,
    setAsHost = 3,
    closeCamera = 4,
    closeMic = 5,
    kickOut = 6,
    closeAllCamera = 7,
    closeAllMic = 8
}
export declare enum LocalDeviceState {
    open = 1,
    close = 2,
    approving = 3
}
export declare enum MessageSendState {
    sending = 1,
    success = 2,
    fail = 3
}
export declare enum DevicePermission {
    systemDenied = 1,
    approveNeed = 2,
    granted = 3
}
export declare enum NetworkQualityLevel {
    unknown = "unknown",
    excellent = "excellent",
    good = "good",
    bad = "bad",
    poor = "poor"
}
export declare enum BoardPermission {
    admin = 1,
    interact = 2,
    noPremission = 3
}
export declare enum RecordState {
    recording = 1,
    end = 2
}
export interface RecordConfig {
    audioOnly?: string;
}
export declare enum ApproveAction {
    apply = 1,
    invite = 2,
    accept = 3,
    reject = 4,
    cancel = 5
}
export declare interface VideoPlayerConfig {
    mirror?: boolean;
    fit?: 'cover' | 'contain' | 'fill';
}
export declare type ConnectState = 'DISCONNECTED' | 'CONNECTING' | 'CONNECTED' | 'RECONNECTING' | 'ABORTED';
export interface RoomCache {
    /** 房间信息 */
    roomInfo: RoomInfo;
    /** 用户信息 */
    userInfo: UserInfo;
    /** 房间进出通知人数 */
    userInOutNotifyLimit: number;
}
export declare enum AgoraEvent {
    ready = 1,
    LeaveInitiative = 2,
    LeaveForKickedOut = 3,
    LeaveForTimeout = 4,
    CloseInitiative = 5,
    CloseForMeetingEnded = 6
}
export interface PrivateChatMessage {
    content: string;
    fromUser: UserInfo;
}
