import React, { PropsWithChildren } from 'react';
import './index.css';
/** Room type (copied from core for ui-foundation independence). */
export declare enum FcrRoomType {
    Mainroom = 0,
    Subroom = 1,
    Waitingroom = 2,
    Interpreterroom = 3,
    JoinBeforeHostWaitingRoom = 4,
    Infinityroom = 5
}
/** Target user role for privilege (copied from core). */
export declare enum FcrTargetUserType {
    SELF = 1,
    HOST = 2,
    COHOST = 4,
    PARTICIPANT = 8,
    AUDIENCE = 16
}
/** Private chat privilege config (copied from core). */
export interface FcrChatPrivilegePrivateConfig {
    host: boolean;
    cohost: boolean;
    participant: boolean;
}
/** Chat privilege config (copied from core). */
export interface FcrChatPrivilegeConfig {
    public: boolean;
    private: FcrChatPrivilegePrivateConfig;
}
/** Single chat permission level (used for one panel or legacy single-level mode). */
export type AllowChatLevelType = 'everyone' | 'public' | 'private_to_manager' | 'no_one';
/** Role key for per-role chat level (e.g. webinar guest vs audience). */
export type ChatLevelRoleKey = 'participant' | 'audience';
/** Chat level conditions by role. Use when room shows separate guest/audience menus. */
export type AllowChatLevelByRole = Partial<Record<ChatLevelRoleKey, AllowChatLevelType>>;
export interface ChatManagerProps {
    isManager?: boolean;
    setAllowChat?: (allowChat: boolean) => void;
    setAllowChatWithPayload?: (type: 'public' | 'private_to_manager') => void;
    /** 按用户角色设置聊天权限（公聊/私聊配置 + 目标角色列表） */
    setAllowChatByUserRole?: (config: FcrChatPrivilegeConfig, targetRoles: FcrTargetUserType[]) => Promise<number>;
    allowChatLevel: AllowChatLevelType;
    showArrow?: boolean;
    /** 房间类型 */
    roomType?: number | undefined;
    /** 按角色的聊天档位 */
    allowChatLevelByRole?: AllowChatLevelByRole;
    /** 展示聊天气泡开关 */
    showChatBubbles?: boolean;
    onShowChatBubblesChange?: (value: boolean) => void;
}
export declare const ChatManager: React.FC<PropsWithChildren<ChatManagerProps>>;
