import fs from 'node:fs'; import { type ResolvedHmrEntrypoint } from '../../../hmr/hmr-entrypoint-output.js'; import type { DefaultHmrContext, EcoPagesAppConfig, IHmrManager, IClientBridge } from '../../../types/internal-types.js'; import { type HmrStrategy } from '../../../hmr/hmr-strategy.js'; import { DevelopmentInvalidationService } from '../../../services/invalidation/development-invalidation.service.js'; import type { ClientBridgeEvent, HmrFileChangeOptions } from '../../../types/public-types.js'; import { DevTransformEntrypointRegistry } from './dev-transform-entrypoint-registry.js'; import { BrowserBundleService } from '../../../services/assets/browser-bundle.service.js'; import { type EntrypointDependencyGraph } from '../../../services/runtime-state/entrypoint-dependency-graph.service.js'; import type { ServerModuleTranspiler } from '../../../services/module-loading/server-module-transpiler.service.js'; import { DevTransformServer } from '../../../dev/transform-server/dev-transform-server.js'; import type { DevTransformBundleContributor } from '../../../dev/transform-server/types.js'; type HandleFileChangeOptions = HmrFileChangeOptions; type SharedHmrManagerParams = { appConfig: EcoPagesAppConfig; bridge: IClientBridge; }; export declare abstract class SharedHmrManager implements IHmrManager { readonly appConfig: EcoPagesAppConfig; protected readonly bridge: IClientBridge; protected watchers: Map; protected runtimeWorkDir: string; protected enabled: boolean; protected strategies: HmrStrategy[]; private readonly registeredScriptReloadRequired; protected readonly entrypointRegistry: DevTransformEntrypointRegistry; protected readonly browserBundleService: BrowserBundleService; protected readonly invalidationService: DevelopmentInvalidationService; protected readonly entrypointDependencyGraph: EntrypointDependencyGraph; protected readonly serverModuleTranspiler: ServerModuleTranspiler; private runtimeBuildPromise; private runtimeReady; private devToolbarWorkDir; private devToolbarBuildPromise; private devToolbarReady; protected readonly devTransformServer: DevTransformServer; constructor({ appConfig, bridge }: SharedHmrManagerParams); protected abstract createEntrypointDependencyGraph(existingEntrypointDependencyGraph: EntrypointDependencyGraph): EntrypointDependencyGraph; protected shouldSkipMissingFileChange(_filePath: string): boolean; protected onRuntimeBundleFailure(error: unknown): void; protected ensureRuntimeWorkDir(): void; protected shouldBuildDevToolbar(): boolean; private getDevToolbarHost; protected shouldJsStrategyProcessEntrypoint(entrypointPath: string): boolean; registerDevTransformContributor(contributor: DevTransformBundleContributor): void; protected initializeStrategies(): void; registerStrategy(strategy: HmrStrategy): void; setEnabled(enabled: boolean): void; isEnabled(): boolean; isRuntimeReady(): boolean; /** * Builds the browser HMR runtime once per manager session and reuses the in-flight build for concurrent callers. */ ensureRuntimeReady(): Promise; private ensureHmrRuntimeReady; private ensureDevToolbarRuntimeReady; buildRuntime(): Promise; getRuntimePath(): string; private buildDevToolbarRuntimeInternal; getDevToolbarRuntimePath(): string; private buildRuntimeInternal; broadcast(event: ClientBridgeEvent): void; handleFileChange(filePath: string, options?: HandleFileChangeOptions): Promise; private broadcastStrategyAction; private invalidateDevTransformDependents; consumeRegisteredScriptReloadRequired(filePath: string): boolean; private getStrategiesByPriority; private selectChangeStrategy; private prepareRegisteredEntrypointChange; getOutputUrl(entrypointPath: string): string | undefined; /** * Returns the registered script output when the entrypoint is already tracked for HMR. * * @remarks * Dev-transform scripts use the source path as `outputPath`. A fresh dev session must * still register the entrypoint so file watchers can invalidate it on change. */ getResolvedScriptOutput(entrypointPath: string): ResolvedHmrEntrypoint | undefined; getWatchedFiles(): Map; getRegisteredEntrypoints(): ReadonlyMap; tryHandleDevClientRequest(request: Request): Promise; tryHandleAssetRequest(request: Request): Response | null; getRuntimeWorkDir(): string; getDefaultContext(): DefaultHmrContext; stop(): void; protected clearFailedEntrypointRegistration(entrypointPath: string): void; registerEntrypoint(entrypointPath: string): Promise; registerScriptEntrypoint(entrypointPath: string): Promise; private registerDevTransformEntrypoint; [Symbol.dispose](): void; } export {};