import type { IComponent } from '../../component/interface'; import type { IBasePlugin, IBasePluginService, MaybePromise } from '../base/interface'; interface IContext { skipLayout: boolean; } export interface IComponentPlugin extends IBasePlugin { onWillLayout?: (service: T, ...params: any) => MaybePromise; onDidLayout?: (service: T, ...params: any) => MaybePromise; onWillLayoutVertical?: (service: T, context: IContext, ...params: any) => MaybePromise; onWillLayoutHorizontal?: (service: T, context: IContext, ...params: any) => MaybePromise; onDidLayoutVertical?: (service: T, ...params: any) => MaybePromise; onDidLayoutHorizontal?: (service: T, ...params: any) => MaybePromise; } export interface IComponentPluginConstructor { readonly pluginType: 'component'; readonly specKey?: string; readonly type: string; new (): IComponentPlugin; } export interface IComponentPluginService extends IBasePluginService { component: IComponent; } export {};