import { PluginHookContext } from './HookContext'; export type PluginDefinition = LocalPluginDefinition | PackagePluginDefinition | RemotePluginDefinition; export type LocalPluginDefinition = { modulePath: string; className: string; config: Config; type: 'local'; }; export type PackagePluginDefinition = { packageName: string; className: string; config: Config; type: 'package'; }; export type RemotePluginDefinition = { baseURL: string; hooks: Record; name: string; version: string; config: Config; type: 'remote'; dependsOn: string[]; publicKey: string; }; export interface Plugin { name(): string; version(): string; dependsOn(): string[]; description(): string; invoke(context: PluginHookContext): Promise; } export interface Initializable { initialize(): Promise; } export declare function isInitializable(value: unknown): value is Initializable; export interface Disposable { dispose(): Promise; } export declare function isDisposable(value: unknown): value is Disposable;