import { AgoraRestfulClient } from '../imports';
import { FcrCloudRecordingConfig, FcrGroupCreateConfig, FcrGroupUpdateOptions, FcrLiveStreamingLayoutType, FcrLiveStreamingConfig, FcrSharePermissionProps, FcrAllowWatermarkPayloadBody } from '../type';
import { AgoraRteRegion } from '../imports';
import { FcrChatRoomTokenResData } from './type';
import { FcrBoardRegion, FcrSharePermissionState } from '../room-control/whiteboard-control/enums';
import { FcrPrivilegeUserRole, FcrSecuritySendChatPayload } from '../room-control/privilege-control/type';
import { FcrUserKickedOutType } from '../room-control/user-control/type';
export declare class FcrCoreServiceApi {
    private _client;
    protected logger: import("agora-foundation/lib/logger").Logger;
    constructor(_client: AgoraRestfulClient, appId: string, region: AgoraRteRegion, pathIncludeRegion?: boolean);
    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;
    }): Promise<any>;
    deleteRoomSession(params: {
        userId: string;
        sessionId: string;
        sessionKey: string;
        receiverIds: string[];
        action: 1 | 2;
        payload: unknown;
    }): Promise<any>;
    /** peer session */
    updatePeerSession(params: {
        userId: string;
        sessionId: string;
        sessionKey: string;
        duration: number;
        payload: unknown;
        targetId: string;
    }): Promise<any>;
    deletePeerSession(params: {
        userId: string;
        sessionId: string;
        sessionKey: string;
        receiverIds: string[];
        action: 1 | 2;
        payload: unknown;
    }): Promise<any>;
    checkIn(params: {
        roomId: string;
        userName: string;
        userRole: string;
        userId: string;
        platform?: number;
        /** Primary Stream | 主流 */
        stream?: {
            videoSourceUuid?: string;
            audioSourceUuid?: string;
            streamName?: string;
            audioState: number;
            videoState: number;
            videoSourceType: number;
            audioSourceType: number;
            audioSourceState?: number;
            videoSourceState?: number;
        };
        streams?: {
            videoSourceUuid?: string;
            audioSourceUuid?: string;
            streamName?: string;
            audioState: number;
            videoState: number;
            videoSourceType: number;
            audioSourceType: number;
            audioSourceState?: number;
            videoSourceState?: number;
        }[];
        userProperties?: Record<string, unknown>;
        password?: string;
        version: string;
    }): Promise<{
        data: any;
        ts: any;
    }>;
    checkInInternal(params: {
        roomId: string;
        userName: string;
        userRole: string;
        userId: string;
        platform?: number;
        /** Primary Stream | 主流 */
        stream?: {
            videoSourceUuid?: string;
            audioSourceUuid?: string;
            streamName?: string;
            audioState: number;
            videoState: number;
            videoSourceType: number;
            audioSourceType: number;
            audioSourceState?: number;
            videoSourceState?: number;
        };
        streams?: {
            videoSourceUuid?: string;
            audioSourceUuid?: string;
            streamName?: string;
            audioState: number;
            videoState: number;
            videoSourceType: number;
            audioSourceType: number;
            audioSourceState?: number;
            videoSourceState?: number;
        }[];
        userProperties?: Record<string, unknown>;
        password?: string;
        version: string;
        ticket?: string;
    }): Promise<{
        data: any;
        ts: any;
    }>;
    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>;
    allowStartVideo({ roomId, enable, targetRoles, }: {
        roomId: string;
        enable: boolean;
        targetRoles: string[];
    }): Promise<any>;
    allowJoinWithMuteAudio({ 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, localRole, userId, }: {
        roomId: string;
        userId: string;
        remoteRole: string;
        localRole: 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, }: {
        roomId: string;
        userId?: string;
        userName: string;
        callNumber: 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: {
            boardAppId: string;
            boardId: string;
            boardRegion: FcrBoardRegion;
            boardToken: string;
        };
    }>;
    /**
     * @description 开 / 关白板
     */
    toggleWhiteboardActivityState(roomId: string, state: FcrSharePermissionState): 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 开启 / 关闭屏幕共享
     */
    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 修改白板背景
     */
    setBackgroundColor(params: {
        roomId: string;
        backgroundColor: string;
    }): Promise<{
        msg: string;
        code: number;
    }>;
    startShareScreen(params: {
        roomId: string;
        userId: string;
        config: {
            videoState: number;
            videoSourceType: number;
            audioState: number;
            audioSourceType: number;
            videoSourceUuid?: string;
            audioSourceUuid?: string;
            videoSourceState?: number;
            audioSourceState?: 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>;
}
