import type { Dispose } from '@zhin.js/plugin-runtime'; import { type GenerationInvalidationPlan, type InvalidationPlan, type ProcessInvalidationPlan } from './invalidation-planner.js'; import type { ModuleRuntime } from './module-runtime.js'; import type { SourceOwnershipIndex } from './source-ownership.js'; export interface HmrReloadPort { handlesSource?(source: string): boolean; reload(plan: GenerationInvalidationPlan): Promise; } export interface HmrCoordinatorOptions { readonly modules: ModuleRuntime; readonly ownership: () => SourceOwnershipIndex; readonly runtime: HmrReloadPort; onRestartRequired(plan: ProcessInvalidationPlan): void | Promise; onError(error: unknown): void | Promise; onPlan?(plan: InvalidationPlan): void | Promise; /** Fires once after a generation transaction commits successfully. */ onReload?(plan: GenerationInvalidationPlan, durationMs: number): void | Promise; } export declare class HmrCoordinator { #private; private readonly options; constructor(options: HmrCoordinatorOptions); start(): Dispose; stop(): Promise; enqueue(source: string): Promise; }