/**
 * 📊 SISTEMA DE LOGS DE PERFORMANCE
 *
 * Sistema completo de monitoramento de performance para aplicações Angular
 * com feedback visual através de emojis e relatórios automáticos.
 *
 * Características:
 * - 📈 Monitoramento em Tempo Real
 * - 🟢🟡🔴 Classificação Visual por Performance
 * - ⏰ Relatórios Automáticos após Inatividade
 * - 📊 Análise Detalhada com Recomendações
 * - 🛠️ API Pública para Controle Manual
 *
 * @author Pedro Henrique dos Santos Leuchs
 * @version 1.0.19
 * @since 2025-07-11
 */
export interface PerformanceStats {
    count: number;
    totalTime: number;
    minTime: number;
    maxTime: number;
    customThresholds?: {
        ok?: number;
        lento?: number;
        critico?: number;
    };
}
export interface DynamicThresholds {
    ok: number;
    lento: number;
    critico: number;
}
export declare class LogsPerformatico {
    private monitoramentoAtivo;
    private performanceTimers;
    private performanceSummary;
    private serviceName;
    private httpRequests;
    private functionContextStack;
    constructor(serviceName?: string);
    /**
     * Registra requisição HTTP associando à função monitorada ativa (se houver)
     * @param payload Dados da requisição
     */
    registerHttpRequest(authReq: any, tempo: number, error?: boolean): void;
    private extrairNomeDeSQL;
    /**
     * 🚀 Mensagem de boas-vindas do sistema
     */
    showWelcomeMessage(): void;
    /**
     * ⏱️ Inicia cronômetro para uma operação
     * @param operationName Nome da operação a ser monitorada
     */
    startTimer(operationName: string): void;
    /**
     * 🏁 Finaliza cronômetro e exibe resultado com emoji
     * @param operationName Nome da operação
     * @param customMessage Mensagem customizada opcional (ex: para erros)
     * @param customThresholds Thresholds customizados para esta operação específica
     */
    endTimer(operationName: string, customMessage?: string, customThresholds?: {
        ok?: number;
        lento?: number;
        critico?: number;
    }): void;
    /**
     * 🎨 Determina status de performance baseado no tempo
     * @param elapsedTime Tempo decorrido em milissegundos
     * @param customThresholds Thresholds customizados para esta operação específica
     * @param operationName Nome da operação (para calcular thresholds dinâmicos)
     * @returns Objeto com emoji, status e cor
     */
    private getPerformanceStatus;
    /**
     * 📈 Atualiza estatísticas de performance para o sumário
     * @param operationName Nome da operação
     * @param elapsedTime Tempo decorrido em milissegundos
     * @param customThresholds Thresholds customizados para armazenar (opcional)
     */
    private updatePerformanceSummary;
    /**
     * 📊 Exibe relatório resumido de todas as operações (compactado)
     */
    showPerformanceSummary(showFullDetails?: boolean): void;
    /**
     * 📑 Exibe relatório detalhado de requisições HTTP agrupadas por função
     */
    showHttpRequestsReport(): void;
    /**
     * 🔍 Gera análise detalhada de performance
     */
    generateDetailedAnalysis(): void;
    /**
     * 📋 Categoriza operações por performance
     * @returns Objeto com arrays de operações categorizadas
     */
    private categorizeOperations;
    /**
     * 💡 Exibe recomendações baseadas na análise
     * @param criticalOperations Array de operações críticas
     * @param slowOperations Array de operações lentas
     */
    private showRecommendations;
    /**
     * 📊 Exibe score de performance
     * @param fastOperationsCount Número de operações rápidas
     */
    private showPerformanceScore;
    /**
     * 📊 Método público para exibir relatório de performance
     * Pode ser chamado no console do navegador para análise
     */
    getPerformanceReport(): void;
    /**
     * 🧹 Método público para limpar dados de performance
     * Útil para resetar estatísticas e começar nova análise
     */
    resetPerformanceData(): void;
    /**
     * ⏰ Configura o delay para relatório por inatividade
     * @param seconds Número de segundos de inatividade para mostrar relatório
     */
    setInactivityDelay(seconds: number): void;
    /**
     * 🔇 Desabilita relatório automático por inatividade
     */
    disableInactivityReport(): void;
    /**
     * ⚙️ Configura o threshold para relatório automático
     * @param threshold Número de operações para mostrar relatório automaticamente
     */
    setAutoReportThreshold(threshold: number): void;
    /**
     * 🔇 Desabilita relatório automático
     */
    disableAutoReport(): void;
    /**
     * 📈 Obtém estatísticas resumidas sem exibir no console
     * @returns Objeto com estatísticas de performance
     */
    getStatistics(): {
        totalOperations: number;
        averageTime: number;
        fastOperations: number;
        slowOperations: number;
        criticalOperations: number;
        performanceScore: number;
    };
    /**
     * 🎯 Obtém dados de uma operação específica
     * @param operationName Nome da operação
     * @returns Estatísticas da operação ou null se não encontrada
     */
    getOperationStats(operationName: string): (PerformanceStats & {
        httpCalls: string[];
    }) | null;
    /**
     * 📋 Lista todas as operações monitoradas
     * @returns Array com nomes das operações
     */
    getMonitoredOperations(): string[];
    /**
     * 🔄 Verifica se há timers ativos
     * @returns true se há timers em execução
     */
    hasActiveTimers(): boolean;
    /**
     * 🗑️ Limpa apenas os timers ativos (não as estatísticas)
     */
    clearActiveTimers(): void;
    /**
     * 💾 Exporta dados de performance para JSON
     * @returns String JSON com todos os dados
     */
    exportData(): string;
    /**
     * 🎯 Calcula thresholds dinâmicos baseados na quantidade de execuções
     * @param executionCount Número de execuções da operação
     * @returns Objeto com thresholds calculados dinamicamente
     */
    private calculateDynamicThresholds;
    injectMonitorButton(): void;
}
/**
 * 🏭 Factory function para criar instância do LogsPerformatico
 * @param serviceName Nome do serviço (para logs personalizados)
 * @returns Nova instância de LogsPerformatico
 */
export declare function createPerformanceLogger(serviceName?: string): LogsPerformatico;
//# sourceMappingURL=log-performatico.d.ts.map