import { EventEmitter } from 'events';
import { H as HMRUpdate } from '../index-D9DTurRB.js';

/**
 * @fileoverview OrdoJS Dev Tools - Enhanced HMR
 *
 * Enhanced hot module replacement with state preservation and improved debugging.
 */

/**
 * Enhanced HMR for improved hot module replacement
 */
declare class EnhancedHMR extends EventEmitter {
    private updates;
    private isRunning;
    private port;
    private statePreservation;
    /**
     * Create a new EnhancedHMR instance
     *
     * @param port - WebSocket port for enhanced HMR
     * @param statePreservation - Enable state preservation
     */
    constructor(port?: number, statePreservation?: boolean);
    /**
     * Start the enhanced HMR
     */
    start(): Promise<void>;
    /**
     * Stop the enhanced HMR
     */
    stop(): Promise<void>;
    /**
     * Send an HMR update
     *
     * @param update - HMR update information
     */
    sendUpdate(update: HMRUpdate): void;
    /**
     * Get update by ID
     *
     * @param updateId - Update identifier
     * @returns HMR update or undefined
     */
    getUpdate(updateId: string): HMRUpdate | undefined;
    /**
     * Get all updates
     *
     * @returns Array of all updates
     */
    getAllUpdates(): HMRUpdate[];
    /**
     * Clear all updates
     */
    clearUpdates(): void;
    /**
     * Get HMR statistics
     *
     * @returns HMR statistics
     */
    getHMRStats(): {
        totalUpdates: number;
        updatesByType: Record<string, number>;
        updatesByFile: Record<string, number>;
        averageUpdateTime: number;
    };
    /**
     * Enable state preservation
     */
    enableStatePreservation(): void;
    /**
     * Disable state preservation
     */
    disableStatePreservation(): void;
    /**
     * Check if state preservation is enabled
     *
     * @returns True if state preservation is enabled
     */
    isStatePreservationEnabled(): boolean;
    /**
     * Generate update ID
     *
     * @param update - HMR update
     * @returns Update ID
     */
    private generateUpdateId;
    /**
     * Start WebSocket server for enhanced HMR communication
     */
    private startWebSocketServer;
    /**
     * Stop WebSocket server
     */
    private stopWebSocketServer;
}

export { EnhancedHMR };
