import type { Dispose } from '@zhin.js/plugin-runtime'; import type { ModuleRuntime, ModuleWatchRoot } from './module-runtime.js'; export interface NativeDevelopmentModuleRuntimeOptions { readonly projectRoot: string; readonly watch?: boolean; /** Optional scoped loader used only when the active Node loader rejects TSX. */ readonly tsxLoader?: TsxModuleLoader; } export interface TsxModuleLoader { load(source: string, parentURL: string): Promise; close?(): Promise; } /** * Uses Node's native ESM/TypeScript loader and adds only cache busting and watch. * It deliberately requests a process restart for support modules whose cached * relative import closure cannot be invalidated without a custom loader. */ export declare class NativeDevelopmentModuleRuntime implements ModuleRuntime { #private; constructor(options: NativeDevelopmentModuleRuntimeOptions); load(source: string): Promise; invalidate(source: string): void; requiresProcessRestart(source: string): boolean; updateWatchRoots(roots: readonly ModuleWatchRoot[]): void; watch(listener: (source: string) => void): Dispose; close(): Promise; } export declare function supportsNativeTypeScript(version?: string, execArguments?: readonly string[], nodeOptions?: string): boolean; export declare function assertNativeTypeScriptSupport(): void;