import { AgoraRtcDeviceInfo, AgoraRtcDisplayInfo, AgoraRtcNetworkStats, AgoraRtcWindowInfo, AgoraRteConnectionState, AgoraRteMessage, AgoraRteNetworkQualityEvent, AgoraRteOperatCause, AgoraRtePerformanceInfo, AgoraRteRenderView, AgoraRteScenePropertiesDeletedEvent, AgoraRteScenePropertiesUpdatedEvent, AgoraRteStreamEncryptionConfig, AgoraRteStreamJoinConfig, AgoraRteUploadEvent, FcrWhiteboardView } from './imports';
import type { FcrAudioSourceType, FcrMediaSourceState, FcrRoomConnectorType, FcrStreamType, FcrVideoSourceType } from '.';
import { FcrSharePermissionState } from './room-control/sharing-control/type';
import { FcrLineType, FcrRoomJoinOptions, FcrRoomType } from './room-control/type';
import { FcrUserRole } from './room-control/user-control/type';
import { FcrRoomRoute } from './room-router/type';
import { FcrGroupCreateConfigSchema, FcrGroupUpdateOptionsSchema, FcrRenderConfigSchema, FcrRoomJoinOptionsWithTicketSchema, FcrSessionBaseSchema } from './schema';
export type { FcrBaseRoomControl, FcrRoomObserver } from './room-control/type';
export type { FcrChatConnector, FcrChatConnectionObserver, FcrChatConnectionState, } from './chat-connector/type';
export { AgoraRtcAiDenoiseLevel as FcrAiDenoiseLevel, AgoraRtcAudioSourceType as FcrAudioSourceType, AgoraRtcCapability as FcrCapability, AgoraRteConnectionState as FcrConnectionState, AgoraRtcMediaSourceState as FcrMediaSourceState, AgoraRteRegion as FcrRegion, AgoraRteRoomConnectorType as FcrRoomConnectorType, AgoraRteScreenCaptureType as FcrScreenCaptureType, AgoraRteLatencyLevel as FcrStreamLatencyLevel, AgoraRteStreamPrivilegeAudioSourceType as FcrStreamPrivilegeAudioSourceType, AgoraRteStreamPrivilegeOperation as FcrStreamPrivilegeOperation, AgoraRteStreamPrivilegeVideoSourceType as FcrStreamPrivilegeVideoSourceType, AgoraRteMediaStreamType as FcrStreamType, AgoraRteUserUpdatedReason as FcrUserUpdatedReason, AgoraRteVideoOrientation as FcrVideoOrientation, AgoraRtcRenderMode as FcrVideoRenderMode, AgoraRtcVideoSourceType as FcrVideoSourceType, AgoraRtcVideoStreamType as FcrVideoStreamType, registerPlugin, } from './imports';
import { FcrDualVideoStreamConfig } from './utilities/dual-video-stream-config';
import { FcrVideoEncoderConfig } from './utilities/video-encoder-config';
export { FcrDualVideoStreamConfig };
export type FcrMessage = AgoraRteMessage;
export type FcrRenderView = AgoraRteRenderView;
export type { FcrAudioOutputRouting, FcrDesktopMediaControl, FcrDesktopMediaObserver, FcrMobileMediaControl, FcrMobileMediaObserver, } from './media-control/type';
export type { FcrMonitorControl, FcrMonitorObserver } from './monitor-control/type';
export type { FcrPeerSessionControl, FcrPeerSessionObserver } from './peer-session/type';
export { FcrAbility } from './room-control/ability-control/type';
export type { FcrAbilityControl } from './room-control/ability-control/type';
export { FcrChatRoomConnectionState, FcrChatRoomMessageType, } from './room-control/chatroom-control/type';
export type { FcrChatRoomControl, FcrChatRoomControlInitConfig, FcrChatRoomFile, FcrChatRoomObserver, FcrChatRoomReceiveCustomMessage, FcrChatRoomReceivedBaseMessage, FcrChatRoomReceivedImageMessage, FcrChatRoomReceivedTextMessage, FcrChatRoomSendBaseMessage, FcrChatRoomSendImageMessage, FcrChatRoomSendTextMessage, } from './room-control/chatroom-control/type';
export { FcrInterpreterActionType, FcrLanguage } from './room-control/interpreter-control/types';
export type { FcrInterpreterObserver, FcrInterpreterRoomControl, FcrInterpreterRoomInfo, FcrInterpreterState, FcrInterpreterUsersParams, FcrLanguageChannelInfo, } from './room-control/interpreter-control/types';
export type { FcrPermission, FcrPermissionInfo, FcrPermissionInfoAddedEvent, FcrPermissionInfoDeletedEvent, FcrPrivilegeControl, FcrPrivilegeObserver, FcrSecurityInfo, FcrSecurityInfoUpdatedEvent, FcrSecurityObj, FcrSecurityPrivateChatConfig, FcrSecuritySendChatPayload, FcrSecuritySharePayload, FcrSecurityWriteBoardPayload, } from './room-control/privilege-control/type';
export { FcrChatPermissionType, FcrOperatePermissionType, FcrPermissionAction, FcrPrivilegeUserRole, FcrPrivilegeUserRoleToStringMap, FcrPrivilegeUserStringToRoleMap, FcrSecurityAction, FcrWatermarkPermissionState, } from './room-control/privilege-control/type';
export { FcrIPConnectorSessionType, FcrRoomConnectorPhoneRegion, FcrRoomConnectorSessionReason, FcrRoomConnectorSessionState, } from './room-control/room-connector-control/type';
export type { FcrRemoteControl, FcrRemoteControlSessionParams, FcrRemoteObserver, } from './remote-control/type';
export { FcrRemoteControlState } from './remote-control/type';
export type { FcrIPConnectorSession, FcrIPConnectorSessionParams, FcrPhoneConnectorSession, FcrPhoneConnectorSessionParams, FcrRoomConnectorControl, FcrRoomConnectorIpInfo, FcrRoomConnectorObserver, FcrRoomConnectorPhoneInfo, } from './room-control/room-connector-control/type';
export type { FcrRoomSession, FcrRoomSessionControl, FcrRoomSessionObserver, FcrRoomSessionParams, } from './room-control/room-session/type';
export { FcrScreenSharingState, FcrWhiteboardState } from './room-control/sharing-control/type';
export type { FcrSharingControl, FcrSharingObserver } from './room-control/sharing-control/type';
export type { FcrDimensions, FcrLocalAudioStats, FcrLocalStreamCreateConfig, FcrLocalVideoStats, FcrRemoteAudioStats, FcrRemoteVideoStats, FcrSize, FcrSnapshotInfo, FcrStreamControl, FcrStreamCreateConfig, FcrStreamEvent, FcrStreamObserver, FcrUpdateStreamPrivilege, FcrUpdateStreamPrivilegeScope, } from './room-control/stream-control/type';
export { FcrUserKickedOutType, FcrUserLeftReason, FcrUserRole, } from './room-control/user-control/type';
export type { FcrUserControl, FcrUserJoinedEvent, FcrUserKickedOutEvent, FcrUserLeftEvent, FcrUserObserver, FcrUserPageParams, FcrUserPageResponse, FcrUserPropertiesDeletedEvent, FcrUserPropertiesUpdatedEvent, FcrUserUpdatedEvent, } from './room-control/user-control/type';
export type { FcrAnnotationConfig, FcrAnnotationControl, } from './room-control/whiteboard-control-v2/annotation-control/type';
export type { FcrBoardConfig, FcrWhiteboardControl, FcrWhiteboardObserver, } from './room-control/whiteboard-control-v2/whiteboard-control/type';
export type { FcrRoomControlImplType, FcrRoomControlType, FcrRoomRoute, FcrRoomRouter, FcrRoomRouterObserver, } from './room-router/type';
export type { FcrChatRoomTokenResData, FcrCheckInParams } from './service/type';
export { FcrVideoEncoderConfig };
export type FcrCoreEngineObserver = {
    /** 连接状态更新回调 */
    onConnectionStateUpdated?(state: FcrConnectionState): void;
    /** 收到点对点消息回调 */
    onPeerMessageReceived?(message: FcrMessage): void;
    /** 用户令牌即将过期回调 */
    onUserTokenWillExpire?(): void;
};
export declare enum FcrRoomState {
    Initialized = 0,
    Started = 1,
    Ended = 2,
    Closed = 3
}
export declare enum FcrRecordingState {
    Starting = 1,
    Started = 2,
    Paused = 3,
    Stopped = 4
}
/** 房间基本信息 */
export type FcrRoomInfo = {
    readonly roomId: string;
    readonly roomName: string;
    readonly roomType: FcrRoomType;
    readonly password?: string;
    readonly inviteLink?: string;
    readonly label?: Record<string, unknown>;
};
/** 平台类型枚举 */
export declare enum FcrPlatform {
    UNSUPPORTED = -1,
    WEB_DESKTOP = 1,
    MACOS = 2,
    WINDOWS = 3,
    IOS = 4,
    ANDROID = 5,
    WEB_MOBILE = 6,
    HARMONY = 7,
    LINUX = 8,
    CONNECTOR_PSTN = 101,
    CONNECTOR_SIP = 102,
    CONNECTOR_H323 = 103
}
/** 用户信息类型 */
export type FcrUserInfo = {
    readonly userId: string;
    readonly userName: string;
    readonly userRole: FcrUserRole;
    readonly connectorType: FcrRoomConnectorType;
    readonly platform: FcrPlatform;
    readonly avatar?: string;
};
/** 流信息类型 */
export type FcrStreamInfo = {
    readonly streamId: string;
    readonly streamName?: string;
    readonly owner: FcrUserInfo;
    readonly streamType: FcrStreamType;
    readonly videoSourceType: FcrVideoSourceType;
    readonly audioSourceType: FcrAudioSourceType;
    readonly videoSourceState: FcrMediaSourceState;
    readonly audioSourceState: FcrMediaSourceState;
    readonly videoSourceId?: string;
    readonly audioSourceId?: string;
    readonly connectorType: FcrRoomConnectorType;
};
/** 房间日程安排 */
export type FcrRoomSchedule = {
    /** 日程持续时间（秒） */
    /**
     * The start time of the schedule, in sceonds.
     */
    readonly duration: number;
    /** 日程开始时间（秒） */
    /**
     * The start time of the schedule, in sceonds.
     */
    readonly startTime: number;
};
/** 录制信息 */
export type FcrRecordInfo = {
    /** 云端录制状态 */
    /**
     * The state of cloud recording.
     */
    readonly state: FcrRecordingState;
};
type FcrConnectionState = AgoraRteConnectionState;
export type FcrGroupInfoFromSceneProperties = {
    [groupId: string]: {
        groupName: string;
        users: {
            userUuid: string;
        }[];
        sort: number;
    };
};
export type FcrRoomJoinSnapshotOptions = {
    snapshot: unknown;
    timestamp: number;
} & Partial<FcrRoomJoinOptions>;
export type FcrRoomJoinOptionsWithTicket = FcrRoomJoinOptionsWithTicketSchema;
export type FcrGroupInfo = {
    groupId: string;
    groupName: string;
};
export type FcrGroupCreateConfig = FcrGroupCreateConfigSchema;
export type FcrGroupUpdateOptions = FcrGroupUpdateOptionsSchema;
export type FcrGroupEventBase = {
    operatorUser?: FcrUserInfo;
};
export type FcrGroupAddedEvent = FcrGroupEventBase & {
    info: FcrGroupInfo;
};
export type FcrGroupUpdatedEvent = FcrGroupEventBase & {
    info: FcrGroupInfo;
};
export type FcrGroupRemovedEvent = FcrGroupEventBase & {
    info: FcrGroupInfo;
};
export type FcrGroupUserAddedEvent = FcrGroupEventBase & {
    groupId: string;
    userId: string;
};
export type FcrGroupUserMovedEvent = FcrGroupEventBase & {
    fromGroupId: string;
    toGroupId: string;
    userId: string;
};
export type FcrGroupUserRemovedEvent = FcrGroupEventBase & {
    groupId: string;
    userId: string;
};
export type FcrRoomRouteSwitchEvent = {
    targetRouting: FcrRoomRoute;
    operatorUser?: FcrUserInfo;
};
export type FcrGroupObserver = {
    onGroupsAdded(events: FcrGroupAddedEvent[]): void;
    onGroupsUpdated(events: FcrGroupUpdatedEvent[]): void;
    onGroupsRemoved(events: FcrGroupRemovedEvent[]): void;
    onUserListAddedToGroup(events: FcrGroupUserAddedEvent[]): void;
    onUserListMoveToGroup(events: FcrGroupUserMovedEvent[]): void;
    onUserListRemovedFromGroup(events: FcrGroupUserRemovedEvent[]): void;
};
export type FcrSessionBase = FcrSessionBaseSchema;
export type FcrSessionResponse = {
    sessionId: string;
    sessionKey: string;
    responderId: string;
    payload: Record<string, unknown>;
    cause: Record<string, unknown>;
    keepAlive?: boolean;
};
export type FcrOperateCause = AgoraRteOperatCause;
export type FcrStreamEncryptionConfig = AgoraRteStreamEncryptionConfig;
export type FcrDeviceInfo = AgoraRtcDeviceInfo;
export type FcrWindowInfo = AgoraRtcWindowInfo;
export type FcrDisplayInfo = AgoraRtcDisplayInfo;
export type FcrPerformanceInfo = AgoraRtePerformanceInfo;
export type FcrStreamJoinConfig = AgoraRteStreamJoinConfig;
export type FcrRoomPropertiesUpdatedEvent = AgoraRteScenePropertiesUpdatedEvent;
export type FcrRoomPropertiesDeletedEvent = AgoraRteScenePropertiesDeletedEvent;
export type FcrNetworkQualityEvent = AgoraRteNetworkQualityEvent;
export type FcrNetworkStats = AgoraRtcNetworkStats;
export declare enum FcrCloudRecordingAudioProfile {
    DEFAULT = 0,// mono 单声道 48khz 48kbps
    MONO_48KHZ_128KBPS = 1,// mono 单声道 48khz 128kbps
    STEREO_48KHZ_192KBPS = 2
}
export type FcrCloudRecordingConfig = {
    videoEncoderConfig: FcrVideoEncoderConfig;
    audioProfile: FcrCloudRecordingAudioProfile;
    retryTimeout: number;
};
export declare const FcrUserRoleToStringMap: {
    readonly 1: "host";
    readonly 2: "cohost";
    readonly 3: "participant";
    readonly 4: "audience";
    readonly 5: "observer";
    readonly 6: "robot";
};
export declare const FcrUserStringToRoleMap: {
    host: FcrUserRole;
    cohost: FcrUserRole;
    participant: FcrUserRole;
    audience: FcrUserRole;
    observer: FcrUserRole;
    robot: FcrUserRole;
};
export declare enum FcrReturnCode {
    UNDEFINED = -1,
    SUCCESS = 0
}
export declare enum FcrLiveStreamingLayoutType {
    GALLERY = 1,// 画廊模式
    SPEAKER = 2
}
export interface FcrLiveStreamingConfig {
    pushStreamingUrl: string;
    pushStreamingKey: string;
    pullStreamingUrl: string;
    layoutType: FcrLiveStreamingLayoutType;
}
export declare enum FcrLiveStreamingState {
    STARTING = 1,
    STARTED = 2,
    STOPPED = 3
}
export type FcrSharePermissionProps = {
    screen?: FcrSharePermissionState;
    board?: {
        start?: FcrSharePermissionState;
        write?: FcrSharePermissionState;
    };
    annotation?: {
        start?: FcrSharePermissionState;
        write?: FcrSharePermissionState;
    };
};
export type FcrAnnotationProps = {
    write?: FcrSharePermissionState;
};
export type FcrVideoRenderConfig = FcrRenderConfigSchema;
export type FcrAllowWatermarkPayloadBody = {
    lineType: FcrLineType;
};
export declare enum RoomMessageKey {
    USER_WAITING_ROOM_JOINED = "USER_WAITING_ROOM_JOINED",
    USER_BANNED_CHAT_HISTORY = "USER_BANNED_CHAT_HISTORY"
}
export type FcrMonitorUploadEvent = AgoraRteUploadEvent;
export { FcrDeviceType } from './media-control/type';
export { FcrLineType } from './room-control/type';
export { FcrError } from './utilities/error';
export declare enum FcrStreamState {
    UNPUBLISH = 0,
    PUBLISH = 1
}
export type FcrWhiteboardParameters = {
    cursor?: boolean;
    syncMode?: boolean;
    extras?: unknown;
    extendClass?: unknown;
    windowManagerParams?: unknown;
    floatBar?: unknown;
    containerElement?: FcrWhiteboardView;
};
export type { FcrLanguageConfig } from './room-control/stt-control/type';
export { FcrBoardShape, FcrBoardToolType } from './room-control/whiteboard-control-v2/enum';
export type { FcrBoardMainWindow, FcrBoardMainWindowObserver, } from './room-control/whiteboard-control-v2/type';
export type { FcrColor } from './room-control/whiteboard-control/type';
export type { FcrCoreEngineConfig } from './struct';
export type { FcrCoreEngine } from './engine/type';
