import { z } from "zod"; export { z }; export * from "./types/plugin-registry-base"; export type PluginNames = string; export type PluginApiType = any; export declare enum WorkerMessageType { RPC_CALL = "RPC_CALL", HOOK_CALL = "HOOK_CALL", HOOK_RESULT = "HOOK_RESULT", HOOK_ERROR = "HOOK_ERROR", EVENT_EMIT = "EVENT_EMIT", MANIFEST = "MANIFEST", LOAD_SUCCESS = "LOAD_SUCCESS", LOAD_ERROR = "LOAD_ERROR", START_UP = "START_UP", UNLOAD = "UNLOAD" } export declare enum PluginPermission { Network = "network", Filesystem = "filesystem", Env = "env" } export declare enum RPCMethod { StorageGet = "storage:get", StorageSet = "storage:set", StorageDelete = "storage:delete", StorageClear = "storage:clear", EventsEmit = "events:emit", EventsOn = "events:on", HooksRegister = "hooks:register", ManagerGetPlugin = "manager:getPlugin", ManagerRegisterApi = "manager:registerApi", Log = "log", NetworkFetch = "network:fetch", PermissionCheck = "perm:check", ConfigGet = "config:get", StorageReload = "storage:reload" } export declare enum HookType { ON_RESOLVE = "onResolve", ON_LOAD = "onLoad", ON_START = "onStart" } export declare enum HookOrder { PRE = "pre", POST = "post" } export interface PluginResource { workers: Worker[]; timers: { id: number | Timer; type: "timeout" | "interval"; }[]; eventListeners: { event: string; listener: Function; }[]; } export interface HookRegistry { filter: RegExp; callback: T; pluginName: string; order?: HookOrder; } export interface AppEvents { log: { level: "info" | "error" | "warn"; message: string; }; "plugin:updated": { name: string; version: string; }; [key: string]: any; } export type EventCallback = (payload: T) => void | Promise; export interface IPluginStorage { get(key: string, defaultValue?: T): Promise; set(key: string, value: T): Promise; delete(key: string): Promise; clear(): Promise; reload(): Promise; } export interface Logger { info(msg: string, ...args: any[]): void; warn(msg: string, ...args: any[]): void; error(msg: string, ...args: any[]): void; debug?(msg: string, ...args: any[]): void; child?(context: string): Logger; } export interface IPluginManager { register(plugin: IPlugin): Promise; registerIsolated(pluginPath: string, pluginName: string): Promise; unregister(pluginName: string): Promise; getPlugin(name: string): IPlugin | undefined; listPlugins(): string[]; loadPluginsFromDirectory(directoryPath?: string): Promise; disablePlugin(name: string): Promise; enablePlugin(name: string): Promise; reloadPlugin(name: string): Promise; runOnResolve(args: OnResolveArgs): Promise; runOnLoad(args: OnLoadArgs): Promise; toBunPlugin(): any; enableHotReload(pluginDir: string): void; getWorkerFactory(): (url: string | URL, options?: BunWorkerOptions) => Worker; getMetrics(): any; getPluginStatus(): Record; registerApi(pluginName: string, api: any): void; getPluginApi(pluginName: string): any | undefined; use(plugin: IPlugin): Promise; plugin(plugin: IPlugin): Promise; remove(pluginName: string): Promise; emit(eventName: K, payload: AppEvents[K]): boolean; on(eventName: K & string, listener: (payload: AppEvents[K]) => void): this; once(eventName: K & string, listener: (payload: AppEvents[K]) => void): this; off(eventName: K & string, listener: (payload: AppEvents[K]) => void): this; } export interface PluginContext { emit(event: K, payload: AppEvents[K]): void; on(event: K, callback: EventCallback): void; events: { emit(event: K, payload: AppEvents[K]): void; on(event: K, callback: EventCallback): void; }; storage: IPluginStorage; config: Record; manager: IPluginManager; getPlugin(name: TName): Promise | undefined>; registerApi(api: any): void; log: Logger; createWorker(url: string | URL, options?: BunWorkerOptions): BunWorker; network: { fetch: (input: string | URL | Request, init?: RequestInit) => Promise; }; file: (path: string) => any; env: Record; setTimeout: (callback: (...args: any[]) => void, delay?: number, ...args: any[]) => number | Timer; setInterval: (callback: (...args: any[]) => void, delay?: number, ...args: any[]) => number | Timer; clearTimeout: (id: number | Timer) => void; clearInterval: (id: number | Timer) => void; } export interface BunWorkerOptions extends WorkerOptions { smol?: boolean; preload?: string[] | string; ref?: boolean; env?: Record; } export interface BunWorker extends Worker { ref(): void; unref(): void; } export declare class AccessDeniedError extends Error { constructor(permission: string, pluginName: string); } export declare const BasicPluginSchema: z.ZodObject<{ name: z.ZodString; version: z.ZodString; }, z.core.$strip>; export interface IPlugin { name: string; version: string; description?: string; author?: string; engines?: { host?: string; }; configSchema?: z.ZodSchema; defaultConfig?: Record; dependencies?: Record; permissions?: PluginPermission[]; allowedDomains?: string[]; onLoad(context: PluginContext): Promise | void; onStarted?: () => Promise | void; onUnload(): Promise | void; onReload?: (context: PluginContext) => Promise | void; setup?: (build: PluginBuilder) => void | Promise; } export type OnResolveArgs = { path: string; importer?: string; namespace?: string; }; export type OnResolveResult = { path: string; namespace?: string; } | undefined | null; export type OnResolveCallback = (args: OnResolveArgs) => OnResolveResult | Promise; export type OnLoadArgs = { path: string; namespace?: string; previousContents?: string; }; export type OnLoadResult = { contents: string; loader?: string; } | undefined | null; export type OnLoadCallback = (args: OnLoadArgs) => OnLoadResult | Promise; export interface PluginBuilder { onStart(callback: () => void | Promise): void; onResolve(filter: RegExp | { filter: RegExp; namespace?: string; }, callback: OnResolveCallback, options?: { order?: HookOrder; }): void; onLoad(filter: RegExp | { filter: RegExp; namespace?: string; }, callback: OnLoadCallback, options?: { order?: HookOrder; }): void; config: Record; } //# sourceMappingURL=types.d.ts.map