/** * OS 模块订阅句柄:所有 OS 模块(BaseModule 子类)都暴露 `effectsOn(event, cb): () => void`。 */ export interface OsModuleHandle { effectsOn: (event: string, callback: (payload: any) => void) => () => void; } /** * 通用 useSyncExternalStore 适配 OS effects 事件。 * * 设计点: * - subscribe 通过 `module.effectsOn(evt, onStoreChange)` 注册多事件,返回组合 cleanup。 * - getSnapshot 在 React 内部维护 lastSnapshotRef + isEqual 浅比较,确保未变更时返回稳定引用, * 避免 React 18 在 useSyncExternalStore 中因引用变化反复 tear(getServerSnapshot 同体引用)。 * - 调用方传入的 events 数组用 join('|') 作为 subscribe 依赖项,避免数组每次新引用导致重订阅。 * * 示例: * const data = useSyncOsModule( * bookingTicket, * ['onSalesOrderLoaded'], * () => ({ * tempOrder: bookingTicket?.getTempOrder() ?? null, * summary: bookingTicket?.getSalesOrder()?.summary ?? null, * }), * ); */ export declare function useSyncOsModule(module: OsModuleHandle | null | undefined, events: readonly string[], getSnapshot: () => T, isEqual?: (a: T, b: T) => boolean): T;