import { AgoraRestfulClient, AgoraRteEntryRoomResponse } from '../imports';
import { FcrCloudRecordingConfig, FcrGroupCreateConfig, FcrGroupUpdateOptions, FcrLiveStreamingLayoutType, FcrLiveStreamingConfig, FcrSharePermissionProps, FcrAllowWatermarkPayloadBody, FcrAnnotationProps, FcrLanguageConfig, FcrLanguage } from '../type';
import { AgoraRteRegion } from '../imports';
import { FcrCheckInParams, FcrChatRoomTokenResData } from './type';
import { FcrChatPrivilegeConfig, FcrPrivilegeUserRole, FcrPrivilegeUserRoleToStringMap, FcrSecuritySendChatPayload } from '../room-control/privilege-control/type';
import { FcrUserKickedOutType } from '../room-control/user-control/type';
import { AgoraRteAudioSourceType, AgoraRteMediaPublishState, AgoraRteVideoSourceType } from '../imports';
import { FcrBoardRoomConfig } from '../room-control/whiteboard-control-v2/type';
import { FcrSharePermissionState } from '../room-control/sharing-control/type';
export declare class FcrCoreServiceApi {
    private _client;
    protected logger: import("agora-foundation/lib/logger/type").Logger;
    private _pathPrefix;
    constructor(_client: AgoraRestfulClient, appId: string, region: AgoraRteRegion, pathIncludeRegion?: boolean);
    setRestfulClient(client: AgoraRestfulClient): void;
    addGroups(params: FcrGroupCreateConfig[], opts: {
        roomId: string;
        startTime: number;
        inProgress?: boolean;
    }): Promise<void>;
    updateGroups(params: FcrGroupUpdateOptions[], opts: {
        roomId: string;
    }): Promise<void>;
    deleteGroups(groupIds: string[], opts: {
        roomId: string;
    }): Promise<void>;
    deleteAllGroups(opts: {
        roomId: string;
    }): Promise<void>;
    addUsers(userList: string[], groupId: string, opts: {
        roomId: string;
        inProgress?: boolean;
    }): Promise<void>;
    removeUsers(userList: string[], groupId: string, opts: {
        roomId: string;
        inProgress?: boolean;
    }): Promise<void>;
    moveUsers(userList: string[], fromGroupId: string, toGroupId: string, opts: {
        roomId: string;
        inProgress?: boolean;
    }): Promise<void>;
    /*** merge audio ****/
    mergeAudioStream(userId: string, opts: {
        roomId: string;
    }): Promise<any>;
    /*** split audio ****/
    splitAudioStream(userId: string, opts: {
        roomId: string;
    }): Promise<any>;
    /*** user control****/
    kickOut(userId: string, type: FcrUserKickedOutType, opts: {
        roomId: string;
    }): Promise<any>;
    kickOutByUserRoles(type: FcrUserKickedOutType, opts: {
        roomId: string;
    }, userRoles: string[]): Promise<void>;
    kickOutByUserIds(userId: string[], type: FcrUserKickedOutType, opts: {
        roomId: string;
    }): Promise<void>;
    /** room control **/
    startRoom(roomId: string): Promise<any>;
    endRoom(roomId: string): Promise<any>;
    closeRoom(roomId: string): Promise<any>;
    startCloudRecording(config: FcrCloudRecordingConfig, roomId: string): Promise<any>;
    pauseCloudRecording(roomId: string): Promise<any>;
    resumeCloudRecording(roomId: string): Promise<any>;
    stopCloudRecording(roomId: string): Promise<any>;
    setCloudRecordingReady(roomId: string): Promise<any>;
    /** room session */
    updateRoomSession(params: {
        userId: string;
        sessionId: string;
        sessionKey: string;
        duration: number;
        payload: unknown;
        targetId: string;
        targetRoles?: (typeof FcrPrivilegeUserRoleToStringMap)[keyof typeof FcrPrivilegeUserRoleToStringMap][];
        keepAlive?: boolean;
        target?: 1 | 2;
        action?: 1 | 2 | 3;
    }): Promise<any>;
    deleteRoomSession(params: {
        userId: string;
        sessionId: string;
        sessionKey: string;
        receiverIds: string[];
        target: 1 | 2;
        action: 1 | 2 | 3;
        payload: unknown;
        keepAlive?: boolean;
    }): Promise<any>;
    /** peer session */
    updatePeerSession(params: {
        userId: string;
        sessionId: string;
        sessionKey: string;
        duration: number;
        payload: unknown;
        targetId: string;
        keepAlive?: boolean;
        /**
         * 0: receive
         * 1: accept
         */
        action?: 0 | 1;
    }): Promise<any>;
    deletePeerSession(params: {
        userId: string;
        sessionId: string;
        sessionKey: string;
        receiverIds: string[];
        /**
         * 1: accept
         * 2: reject
         * 3: end
         */
        action: 1 | 2 | 3;
        payload: unknown;
    }): Promise<any>;
    checkIn(params: FcrCheckInParams): Promise<{
        data: AgoraRteEntryRoomResponse;
        ts: number;
    }>;
    checkInInternal(params: FcrCheckInParams): Promise<{
        data: AgoraRteEntryRoomResponse;
        ts: number;
    }>;
    updateUserName(params: {
        roomId: string;
        userId: string;
        userName: string;
    }): Promise<any>;
    updateUserProperties({ roomId, userUuid, properties, increments, cause, }: {
        roomId: string;
        userUuid: string;
        properties?: unknown;
        increments?: unknown;
        cause?: unknown;
    }): Promise<any>;
    deleteUserProperties({ roomId, userUuid, properties, cause, }: {
        roomId: string;
        userUuid: string;
        properties: string[];
        cause?: unknown;
    }): Promise<any>;
    updateRoomProperties({ roomId, properties, increments, cause, }: {
        roomId: string;
        properties?: unknown;
        increments?: unknown;
        cause?: unknown;
    }): Promise<any>;
    deleteRoomProperties({ roomId, properties, cause, }: {
        roomId: string;
        properties: string[];
        cause?: unknown;
    }): Promise<any>;
    getChatRoomToken(roomId: string, userId: string): Promise<FcrChatRoomTokenResData>;
    getUserToken(userId: string): Promise<FcrChatRoomTokenResData>;
    enableLockedRoom({ roomId, enable, targetRoles, }: {
        roomId: string;
        enable: boolean;
        targetRoles: FcrPrivilegeUserRole[];
    }): Promise<any>;
    enablePassword({ roomId, enable, password, }: {
        roomId: string;
        enable: boolean;
        password?: string;
    }): Promise<any>;
    enableWaitingRoom({ roomId, enable }: {
        roomId: string;
        enable: boolean;
    }): Promise<any>;
    moveToWaitingRoomByUserIds(userIds: string[], roomId: string): Promise<any>;
    moveToWaitingRoomByUserRoles(toRoles: string[], roomId: string): Promise<any>;
    moveToMainRoomByUserIds(userIds: string[], roomId: string): Promise<any>;
    moveToMainRoomByUserRoles(toRoles: string[], roomId: string): Promise<any>;
    allowSendChat({ roomId, enable, targetRoles, payload, }: {
        roomId: string;
        enable: boolean;
        targetRoles: string[];
        payload?: FcrSecuritySendChatPayload;
    }): Promise<any>;
    allowChangeName({ roomId, enable, targetRoles, }: {
        roomId: string;
        enable: boolean;
        targetRoles: string[];
    }): Promise<any>;
    allowStartAudio({ roomId, enable, targetRoles, }: {
        roomId: string;
        enable: boolean;
        targetRoles: string[];
    }): Promise<any>;
    allowWatermark(params: {
        roomId: string;
        enable: boolean;
        targetRoles: string[];
        payload: FcrAllowWatermarkPayloadBody;
    }): Promise<any>;
    allowChangeUserName(params: {
        roomId: string;
        enable: boolean;
        targetRoles: string[];
    }): Promise<any>;
    allowJoinWithPromptSound({ roomId, enable, targetRoles, }: {
        roomId: string;
        enable: boolean;
        targetRoles: string[];
    }): Promise<any>;
    allowStartVideo({ roomId, enable, targetRoles, }: {
        roomId: string;
        enable: boolean;
        targetRoles: string[];
    }): Promise<any>;
    allowJoinWithMuteAudio({ roomId, enable, targetRoles, }: {
        roomId: string;
        enable: boolean;
        targetRoles: string[];
    }): Promise<any>;
    allowJoinWithMutedVideo({ roomId, enable, targetRoles, }: {
        roomId: string;
        enable: boolean;
        targetRoles: string[];
    }): Promise<any>;
    updateUserRole({ roomId, localRole, remoteRole, userId, }: {
        roomId: string;
        userId: string;
        remoteRole: string;
        localRole?: string;
    }): Promise<any>;
    revokeUserRole({ roomId, remoteRole }: {
        roomId: string;
        remoteRole: string;
    }): Promise<any>;
    claimHost({ roomId, userId, hostKey, }: {
        roomId: string;
        hostKey: string;
        userId: string;
    }): Promise<any>;
    stopLiveStreaming(roomId: string): Promise<any>;
    updateLiveStreamingLayout(roomId: string, layoutType: FcrLiveStreamingLayoutType): Promise<any>;
    startLiveStreaming(roomId: string, data: FcrLiveStreamingConfig): Promise<any>;
    callIp({ roomId, callType, ipAddress, }: {
        roomId: string;
        callType: string;
        ipAddress: string;
    }): Promise<any>;
    callPstn({ roomId, userName, userId, callNumber, callType, }: {
        roomId: string;
        userId?: string;
        userName: string;
        callNumber: string;
        callType: string;
    }): Promise<any>;
    hangup({ roomId, userId, callId }: {
        roomId: string;
        userId: string;
        callId: string;
    }): Promise<any>;
    /**
     * @description 获取白板信息
     */
    getWhiteboardToken({ roomId, userId }: {
        roomId: string;
        userId: string;
    }): Promise<{
        data: Omit<FcrBoardRoomConfig, 'boardPerformance'>;
    }>;
    /**
     * @description 获取批注token
     */
    getAnnotationToken({ roomId, userId }: {
        roomId: string;
        userId: string;
    }): Promise<{
        data: Omit<FcrBoardRoomConfig, 'boardPerformance'>;
    }>;
    /**
     * @description 开启/关闭屏幕共享标注权限
     */
    toggleAnnotationActivityState(roomId: string, state: FcrSharePermissionState): Promise<any>;
    /**
     * @description 开启/关闭屏幕共享标注权限
     */
    syncScreenShareOwnerAnnotationOpenDone(roomId: string): Promise<any>;
    /**
     * @description 启用/禁用屏幕共享&白板
     */
    toggleShareEnable(params: {
        roomId: string;
        enable: boolean;
        targetRoles: string[];
        payload?: FcrSharePermissionProps;
    }): Promise<{
        msg: string;
        data: Record<string, FcrSharePermissionProps>;
        code: number;
        ts: number;
    }>;
    /**
     * @description 设置'启用/禁用屏幕共享&白板'的用户列表
     */
    toggleShareEnableByUserIds(params: {
        roomId: string;
        enable: boolean;
        toUserUuids: string[];
        payload?: FcrSharePermissionProps;
    }): Promise<{
        msg: string;
        data: Record<string, FcrSharePermissionProps>;
        code: number;
        ts: number;
    }>;
    /**
     * @description 开启 / 关闭屏幕共享
     */
    toggleScreenShare(params: {
        roomId: string;
        userId: string;
        enable: boolean;
        data: {
            videoState: number;
            videoSourceState: number;
            videoSourceType: number;
            audioState: number;
            audioSourceState: number;
            audioSourceType: number;
        };
    }): Promise<{
        msg: string;
        code: number;
        ts: number;
    }>;
    /**
     * @description 准备 / 取消白板
     */
    toggleWhiteboardPreloadState(roomId: string, state: FcrSharePermissionState): Promise<any>;
    /**
     * @description 开 / 关白板
     */
    toggleWhiteboardActivityState(roomId: string, state: FcrSharePermissionState): Promise<any>;
    /**
     * @description 启用/禁用屏幕共享&白板
     */
    toggleAnnotation(params: {
        roomId: string;
        enable: boolean;
        targetRoles: string[];
        payload: FcrAnnotationProps;
    }): Promise<{
        msg: string;
        code: number;
        ts: number;
    }>;
    /**
     * @description 修改白板背景
     */
    setBackgroundColor(params: {
        roomId: string;
        backgroundColor: string;
    }): Promise<{
        msg: string;
        code: number;
    }>;
    /**
     * @description 设置白板写权限
     */
    setWhiteboardWriteCount(params: {
        roomId: string;
        userId: string;
        state: 0 | 1;
    }): Promise<{
        msg: string;
        code: number;
        ts: number;
    }>;
    startShareScreen(params: {
        roomId: string;
        userId: string;
        config: {
            videoState: number;
            videoSourceType: number;
            audioState: number;
            audioSourceType: number;
            videoSourceUuid?: string;
            audioSourceUuid?: string;
            videoSourceState?: number;
            audioSourceState?: number;
            annotation?: {
                size: {
                    width: number;
                    height: number;
                };
            };
        };
    }): Promise<{
        data: {
            rtcToken: string;
            streamUuid: string;
        };
    }>;
    stopShareScreen(params: {
        roomId: string;
        userId: string;
    }): Promise<any>;
    openInterpreter(params: {
        roomId: string;
        data: {
            interpreters: {
                userUuid: string;
                languagePair: string[];
            }[];
        };
    }): Promise<{
        code: number;
        msg: string;
        ts: number;
    }>;
    updateInterpreter(params: {
        roomId: string;
        data: {
            interpreters: {
                userUuid: string;
                languagePair: string[];
            }[];
        };
    }): Promise<{
        code: number;
        msg: string;
        ts: number;
    }>;
    closeInterpreter(params: {
        roomId: string;
    }): Promise<any>;
    createStreamBatch(roomUuid: string, streams: {
        streamName?: string;
        userUuid?: string;
        streamUuid?: string;
        videoState?: AgoraRteMediaPublishState;
        audioState?: AgoraRteMediaPublishState;
        videoSourceType?: AgoraRteVideoSourceType;
        audioSourceType?: AgoraRteAudioSourceType;
        videoSourceUuid?: string;
        audioSourceUuid?: string;
    }[]): Promise<any>;
    updateStreamBatch(roomUuid: string, streams: {
        streamName?: string;
        userUuid?: string;
        streamUuid?: string;
        videoState?: AgoraRteMediaPublishState;
        audioState?: AgoraRteMediaPublishState;
        videoSourceType?: AgoraRteVideoSourceType;
        audioSourceType?: AgoraRteAudioSourceType;
        videoSourceUuid?: string;
        audioSourceUuid?: string;
    }[]): Promise<any>;
    updateStreamBatchByCondition({ roomUuid, videoState, audioState, includeRoles, excludeRoles, condition, }: {
        roomUuid: string;
        videoState?: number;
        audioState?: number;
        includeRoles?: string[];
        excludeRoles?: string[];
        condition?: {
            videoSourceType?: number;
            audioSourceType?: number;
        };
    }): Promise<any>;
    deleteStreamBatch(roomUuid: string, streams: {
        streamUuid: string;
    }[]): Promise<any>;
    startCaption(params: {
        roomUuid: string;
        userUuid: string;
        config: FcrLanguageConfig;
    }): Promise<any>;
    stopCaption(params: {
        roomUuid: string;
        userUuid: string;
    }): Promise<any>;
    updateWidgetState(params: {
        roomUuid: string;
        widgetId: string;
        state: 0 | 1;
    }): Promise<any>;
    startTranscribing(params: {
        roomUuid: string;
        userUuid: string;
        config: FcrLanguageConfig;
    }): Promise<any>;
    stopTranscribing(params: {
        roomUuid: string;
        userUuid: string;
    }): Promise<any>;
    updateSourceLanguage(params: {
        roomUuid: string;
        userUuid: string;
        language: FcrLanguage;
    }): Promise<any>;
    subscribeTranscribingLanguage(params: {
        roomUuid: string;
        userUuid: string;
        language: FcrLanguage;
    }): Promise<any>;
    unsubscribeTranscribingLanguage(params: {
        roomUuid: string;
        userUuid: string;
    }): Promise<any>;
    allowStartCaption(params: {
        roomUuid: string;
        enable: boolean;
        targetRoles: string[];
    }): Promise<any>;
    allowStartTranscribing(params: {
        roomUuid: string;
        enable: boolean;
        targetRoles: string[];
    }): Promise<any>;
    allowUpdateSttSourceLanguage(params: {
        roomUuid: string;
        enable: boolean;
        targetRoles: string[];
    }): Promise<any>;
    startApplicatioByRole(params: {
        userUuid: string;
        applicationKey: string;
        targetRoles: string[];
        cause?: Record<string, any>;
        roomUuid: string;
    }): Promise<any>;
    cancelApplication(params: {
        userUuid: string;
        applicationKey: string;
        cause?: Record<string, any>;
        roomUuid: string;
    }): Promise<any>;
    acceptApplicationByUserId(params: {
        userUuid: string;
        applicationKey: string;
        targetUserIds: string[];
        cause?: Record<string, any>;
        roomUuid: string;
    }): Promise<any>;
    acceptAllApplication(params: {
        userUuid: string;
        applicationKey: string;
        cause?: Record<string, any>;
        roomUuid: string;
    }): Promise<any>;
    rejectApplicationByUserId(params: {
        userUuid: string;
        applicationKey: string;
        targetUserIds: string[];
        cause?: Record<string, any>;
        roomUuid: string;
    }): Promise<any>;
    rejectAllApplication(params: {
        userUuid: string;
        applicationKey: string;
        cause?: Record<string, any>;
        roomUuid: string;
    }): Promise<any>;
    allowSendChatByUserId(params: {
        roomUuid: string;
        targetUserIds: string[];
        config: FcrChatPrivilegeConfig;
    }): Promise<any>;
    allowViewUserCount(params: {
        roomUuid: string;
        enable: boolean;
        targetRoles: string[];
    }): Promise<any>;
    allowHandsUp(params: {
        roomUuid: string;
        enable: boolean;
        targetRoles: string[];
    }): Promise<any>;
    allowSendChatByUserRole(params: {
        roomUuid: string;
        targetRoles: string[];
        config: FcrChatPrivilegeConfig;
    }): Promise<any>;
}
