import type { events as helperEvents, handlers as helperHandlers, } from '@affine/electron/helper/exposed'; import type { events as mainEvents, handlers as mainHandlers, } from '@affine/electron/main/exposed'; import type { appInfo as exposedAppInfo } from '@affine/electron/preload/electron-api'; import type { SharedStorage } from '@affine/electron/preload/shared-storage'; type MainHandlers = typeof mainHandlers; type HelperHandlers = typeof helperHandlers; type HelperEvents = typeof helperEvents; type MainEvents = typeof mainEvents; export type ClientHandler = { [namespace in keyof MainHandlers]: { [method in keyof MainHandlers[namespace]]: MainHandlers[namespace][method] extends ( arg0: any, ...rest: infer A ) => any ? ( ...args: A ) => ReturnType extends Promise ? ReturnType : Promise> : never; }; } & HelperHandlers; export type ClientEvents = MainEvents & HelperEvents; export const appInfo = (globalThis as any).__appInfo as | typeof exposedAppInfo | null; export const apis = (globalThis as any).__apis as ClientHandler | undefined; export const events = (globalThis as any).__events as ClientEvents | undefined; export const sharedStorage = (globalThis as any).__sharedStorage as | SharedStorage | undefined; export type { SharedStorage }; export { type SpellCheckStateSchema, type TabViewsMetaSchema, type WorkbenchMeta, type WorkbenchViewMeta, type WorkbenchViewModule, } from '@affine/electron/main/shared-state-schema'; export type { UpdateMeta } from '@affine/electron/main/updater/event';