import type { webpack } from 'next/dist/compiled/webpack/webpack'; import type ws from 'next/dist/compiled/ws'; import type { DevToolsConfig } from '../../next-devtools/dev-overlay/shared'; import type { VersionInfo } from './parse-version-info'; import type { HMR_ACTION_TYPES } from './hot-reloader-types'; declare class EventStream { clients: Set; constructor(); close(): void; handler(client: ws): void; publish(payload: any): void; } export declare class WebpackHotMiddleware { eventStream: EventStream; clientLatestStats: { ts: number; stats: webpack.Stats; } | null; middlewareLatestStats: { ts: number; stats: webpack.Stats; } | null; serverLatestStats: { ts: number; stats: webpack.Stats; } | null; closed: boolean; versionInfo: VersionInfo; devtoolsFrontendUrl: string | undefined; devToolsConfig: DevToolsConfig; constructor(compilers: webpack.Compiler[], versionInfo: VersionInfo, devtoolsFrontendUrl: string | undefined, devToolsConfig: DevToolsConfig); onClientInvalid: () => void; onClientDone: (statsResult: webpack.Stats) => void; onServerInvalid: () => void; onServerDone: (statsResult: webpack.Stats) => void; onEdgeServerInvalid: () => void; onEdgeServerDone: (statsResult: webpack.Stats) => void; updateDevToolsConfig(newConfig: DevToolsConfig): void; /** * To sync we use the most recent stats but also we append middleware * errors. This is because it is possible that middleware fails to compile * and we still want to show the client overlay with the error while * the error page should be rendered just fine. */ onHMR: (client: ws) => void; publishStats: (statsResult: webpack.Stats) => void; publish: (payload: HMR_ACTION_TYPES) => void; close: () => void; } export {};