import type { Dispose } from '@zhin.js/plugin-runtime'; import type { ClientModuleRequest } from '@zhin.js/feature-kit'; export interface ModuleWatchRoot { readonly root: string; readonly source: 'workspace' | 'local'; } export interface ModuleRuntime { load(source: string): Promise; /** Optional compiler/manifest adapter for browser modules such as Page and Layout. */ loadClientModule?(source: string, request: ClientModuleRequest): Promise; invalidate?(source: string): Promise | void; affectedSources?(source: string): readonly string[]; /** True when this adapter cannot invalidate the complete importer closure safely. */ requiresProcessRestart?(source: string): boolean; /** Replaces the local package roots after a generation commits. */ updateWatchRoots?(roots: readonly ModuleWatchRoot[]): void; watch?(listener: (source: string) => void): Dispose; close(): Promise; } export declare class EsmModuleRuntime implements ModuleRuntime { load(source: string): Promise; close(): Promise; }