interface PerformanceMetric {
    name: string;
    startTime: number;
    endTime?: number;
    duration?: number;
    metadata?: Record<string, any>;
}
declare class PerformanceMonitor {
    private metrics;
    private enabled;
    enable(): void;
    disable(): void;
    startTimer(name: string, metadata?: Record<string, any>): void;
    endTimer(name: string): number | null;
    measure<T>(name: string, fn: () => T, metadata?: Record<string, any>): T;
    measureAsync<T>(name: string, fn: () => Promise<T>, metadata?: Record<string, any>): Promise<T>;
    getMetrics(): PerformanceMetric[];
    clearMetrics(): void;
    logSummary(): void;
}
export declare const performanceMonitor: PerformanceMonitor;
export declare const usePerformanceMonitor: () => {
    startTimer: (name: string, metadata?: Record<string, any>) => void;
    endTimer: (name: string) => number | null;
    measure: <T>(name: string, fn: () => T, metadata?: Record<string, any>) => T;
    measureAsync: <T>(name: string, fn: () => Promise<T>, metadata?: Record<string, any>) => Promise<T>;
};
export declare function measurePerformance(name?: string): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
export declare const getMemoryUsage: () => {
    used: number;
    total: number;
    limit: number;
} | null;
export {};
//# sourceMappingURL=performance.d.ts.map