/** 菜单项配置接口 */ export interface MenuItemConfig { /** 菜单项标识 */ action: 'qr-code' | 'ai-chat' | 'remote-control' | 'remote-url'; /** 是否显示该菜单项 */ show?: boolean; /** 菜单项文本 */ text?: string; /** 菜单文字颜色 */ active?: boolean; /** 识别码 */ know?: boolean; /** 菜单项描述 */ desc?: string; /** 菜单项提示 */ tip?: string; /** 菜单项图标SVG */ icon?: string; /** 是否显示复制图标 */ showCopyIcon?: boolean; } /** 配置选项接口 */ export interface FloatingBlockOptions { /** 弹出 AI 对话框的回调函数 */ onShowAIChat?: () => void; /** 遥控端页面地址,默认为: https://ai.opentiny.design/next-remoter */ qrCodeUrl?: string; /** 被遥控页面的 sessionId;无 sessionId 时仅显示「打开对话框」菜单,不显示二维码、识别码、遥控器链接 */ sessionId?: string; /** 菜单项配置 */ menuItems?: MenuItemConfig[]; /** 遥控端页面地址,默认为: https://chat.opentiny.design */ remoteUrl?: string; /** 悬浮Logo的url地址,默认为: https://ai.opentiny.design/next-remoter/svgs/logo-next-no-bg-left.svg */ logoUrl?: string; } export type ActionType = 'qr-code' | 'ai-chat' | 'remote-control' | 'remote-url'; declare class FloatingBlock { private options; private isExpanded; private floatingBlock; private dropdownMenu; private menuItems; /** 即将关闭dropdown的定时器 */ private closingTimer; private get sessionPrefix(); constructor(options: FloatingBlockOptions); private getImageUrl; private renderItem; /** * 合并菜单项配置。 * - 用户明确传入 menuItems:直接使用用户配置,不受 sessionId 限制;未传 icon 时自动补充默认图标 * - 有 sessionId 且未传 menuItems:使用默认菜单 * - 无 sessionId 且未传 menuItems:不渲染任何下拉菜单,仅保留点击浮标打开对话框的能力 */ private mergeMenuItems; private init; private createFloatingBlock; private readyTips; private createDropdownMenu; private bindEvents; private openDropdown; private shouldCloseDropdown; /** 真正的立即关闭 */ private closeDropdown; private handleAction; private copyRemoteControl; private copyRemoteURL; private copyToClipboard; private showCopyFeedback; private showQRCode; private showAIChat; private createModal; private showModal; private hideModal; private addStyles; destroy(): void; hide(): void; show(): void; } export declare const createRemoter: (options?: FloatingBlockOptions) => FloatingBlock; export {};