import { EventEmitter } from 'events';
import { P as PerformanceProfile, b as PerformanceMeasurement } from '../index-D9DTurRB.js';

/**
 * @fileoverview OrdoJS Dev Tools - Performance Profiler
 *
 * Performance profiler for analyzing and optimizing application performance.
 */

/**
 * Performance profiler for analyzing application performance
 */
declare class PerformanceProfiler extends EventEmitter {
    private profiles;
    private activeProfiles;
    private measurements;
    private isRunning;
    private port;
    /**
     * Create a new PerformanceProfiler instance
     *
     * @param port - WebSocket port for profiler
     */
    constructor(port?: number);
    /**
     * Start the performance profiler
     */
    start(): Promise<void>;
    /**
     * Stop the performance profiler
     */
    stop(): Promise<void>;
    /**
     * Start a performance profile
     *
     * @param name - Profile name
     * @param metadata - Profile metadata
     * @returns Profile instance
     */
    startProfile(name: string, metadata?: Record<string, any>): PerformanceProfile;
    /**
     * Stop a performance profile
     *
     * @param name - Profile name
     * @returns Completed profile
     */
    stopProfile(name: string): PerformanceProfile;
    /**
     * Add a performance measurement
     *
     * @param profileName - Profile name
     * @param measurementName - Measurement name
     * @param category - Measurement category
     * @param metadata - Measurement metadata
     * @returns Measurement instance
     */
    addMeasurement(profileName: string, measurementName: string, category?: string, metadata?: Record<string, any>): PerformanceMeasurement;
    /**
     * End a performance measurement
     *
     * @param profileName - Profile name
     * @param measurementName - Measurement name
     * @returns Completed measurement
     */
    endMeasurement(profileName: string, measurementName: string): PerformanceMeasurement;
    /**
     * Get a profile by name
     *
     * @param name - Profile name
     * @returns Profile or undefined
     */
    getProfile(name: string): PerformanceProfile | undefined;
    /**
     * Get all profiles
     *
     * @returns Array of all profiles
     */
    getAllProfiles(): PerformanceProfile[];
    /**
     * Get active profiles
     *
     * @returns Array of active profiles
     */
    getActiveProfiles(): PerformanceProfile[];
    /**
     * Clear all profiles
     */
    clearProfiles(): void;
    /**
     * Get profiler statistics
     *
     * @returns Profiler statistics
     */
    getStats(): {
        totalProfiles: number;
        activeProfiles: number;
        totalMeasurements: number;
        averageProfileDuration: number;
    };
    /**
     * Start WebSocket server for profiler communication
     */
    private startWebSocketServer;
    /**
     * Stop WebSocket server
     */
    private stopWebSocketServer;
}

export { PerformanceProfiler };
