import { type InternalEvent, type InternalEventData } from '../manager/event-types'; import type { ComponentManager } from '../manager/component-manager'; /** * useEventBridge 配置选项 */ export interface UseEventBridgeOptions { /** * ComponentManager 实例 */ componentManager: ComponentManager; /** * 是否启用调试模式 */ debug?: boolean; /** * Vue emit 函数 * 通常是 defineEmits 返回的函数 */ emit: (event: string, ...args: unknown[]) => void; } /** * useEventBridge 返回值 */ export interface UseEventBridgeReturn { /** * 清理所有事件监听 */ cleanup: () => void; /** * 手动触发 Vue emit * 用于需要直接发射 Vue emit 而不经过 Manager 的场景 * * @param event Vue emit 事件名 * @param args 事件参数 */ emitDirect: (event: string, ...args: unknown[]) => void; /** * 转发事件到 ComponentManager * 用于将子组件的 Vue emit 事件转发到统一事件系统 * * @param event 内部事件名 * @param data 事件数据 */ forwardToManager: (event: T, data: InternalEventData[T]) => void; } /** * 创建事件转发器 * * 用于简化子组件事件到 Manager 的转发 * 返回一个预配置的转发函数集合 * * @param forwardToManager useEventBridge 返回的 forwardToManager 函数 */ export declare function createEventForwarders(forwardToManager: UseEventBridgeReturn['forwardToManager']): { sendMessage: (content: string) => void; receiveStart: () => void; receiveText: () => void; receiveEnd: () => void; stop: () => void; newChat: () => void; newChatCreated: (session: { sessionCode: string; sessionName?: string; createdAt?: string; }) => void; historyClick: (event: Event) => void; autoGenerateName: () => void; helpClick: () => void; rename: (newName: string) => void; share: () => void; transferMessages: (messageIds: string[]) => void; shareMessages: (messageIds: string[]) => void; }; /** * 事件桥接 Composable * * 自动将 ComponentManager 的内部事件桥接到 Vue emit,实现: * 1. 统一的事件管理 - 所有事件通过 ComponentManager 统一管理 * 2. 自动桥接 - 内部事件自动转换为 Vue emit * 3. 事件转换 - 支持事件名和数据的转换 * 4. 子组件事件转发 - 提供 forwardToManager 方法 * * 使用示例: * ```typescript * const emit = defineEmits(); * const { forwardToManager } = useEventBridge({ * componentManager, * emit, * }); * * // 子组件事件转发 * const handleSendMessage = (message: string) => { * forwardToManager('send-message', { content: message }); * }; * ``` */ export declare function useEventBridge(options: UseEventBridgeOptions): UseEventBridgeReturn; //# sourceMappingURL=use-event-bridge.d.ts.map