import { LifecycleHook, LifecycleName, LifecycleResult, PageInfo, PluginDefinition } from '../types/lifecycle'; /** * Lifecycle interface defining the public API for lifecycle management */ export interface LifecycleInterface { /** * 注册 configInit 生命周期钩子 * @param hook 生命周期钩子 */ serviceInit: (hook: LifecycleHook) => void; /** * 注册 resourceLoad 生命周期钩子 * @param hook 生命周期钩子 */ /** * 注册 licenseValidate 生命周期钩子 * @param hook 生命周期钩子 */ /** * 注册 loginValidate 生命周期钩子 * @param hook 生命周期钩子 */ /** * 注册 ready 生命周期钩子 * @param hook 生命周期钩子 */ systemSetup: (hook: LifecycleHook) => void; /** * 注册 beforePageEnter 生命周期钩子 * @param hook 生命周期钩子 */ beforePageEnter: (hook: LifecycleHook) => void; /** * 注册 dataInit 生命周期钩子 * @param hook 生命周期钩子 */ /** * 注册 dataReady 生命周期钩子 * @param hook 生命周期钩子 */ /** * 注册 pageEnter 生命周期钩子 * @param hook 生命周期钩子 */ pageEnter: (hook: LifecycleHook) => void; /** * 注册 pageTlStart 生命周期钩子 * @param hook 生命周期钩子 */ pageTlStart: (hook: LifecycleHook) => void; /** * 注册 pageTlEnd 生命周期钩子 * @param hook 生命周期钩子 */ pageTlEnd: (hook: LifecycleHook) => void; /** * 注册 pageLeave 生命周期钩子 * @param hook 生命周期钩子 */ pageLeave: (hook: LifecycleHook) => void; /** * 注册自定义生命周期钩子 * @param pluginName 插件名称 * @param lifecycleName 生命周期名称 * @param hook 生命周期钩子 * @param id 插件ID 可选 用于移除钩子 */ registerHook: (pluginName: string, lifecycleName: LifecycleName, hook: LifecycleHook, id?: string) => void; /** * 注册插件 * @param pluginCallback 插件回调 */ registerPlugin: (pluginCallback: () => PluginDefinition) => void; /** * 执行生命周期 * @param lifecycleName 生命周期名称 * @param isAutoTransition 是否自动执行的,默认false * @returns 生命周期结果 */ execute: (lifecycleName: LifecycleName, isAutoTransition?: boolean) => Promise; /** * 启动生命周期 * @returns 是否启动成功 */ start: (data: Record) => Promise; /** * 导航到页面 * @param page 页面信息 * @returns 是否导航成功 */ navigateTo: (page?: PageInfo) => Promise; /** * 暂停生命周期 * @param hookName 生命周期名称 * @returns next function 调用该函数会触发执行生命周期钩子 */ pauseAt: (hookName: T) => T extends LifecycleName[] ? (() => void)[] : () => void; /** * 触发生命周期 * @param lifecycle 生命周期名称 */ dispatchLifecycle: (lifecycle: LifecycleName) => void; }