/** * Metrics and logging system for IBGE MCP Server * * Tracks: * - API call counts and timing * - Error rates by tool/API * - Cache hit/miss rates * - Response sizes */ export interface MetricEntry { timestamp: number; tool: string; api?: string; duration: number; success: boolean; cached: boolean; errorType?: string; responseSize?: number; } export interface ToolMetrics { calls: number; successes: number; failures: number; totalDuration: number; avgDuration: number; cacheHits: number; cacheMisses: number; lastCalled?: number; errors: Record; } export interface GlobalMetrics { startTime: number; totalCalls: number; totalSuccesses: number; totalFailures: number; totalCacheHits: number; totalCacheMisses: number; byTool: Record; byApi: Record; recentErrors: Array<{ timestamp: number; tool: string; error: string; }>; } declare class MetricsCollector { private metrics; private maxRecentErrors; private enabled; constructor(); private initializeMetrics; /** * Enable or disable metrics collection */ setEnabled(enabled: boolean): void; /** * Record a tool call */ record(entry: MetricEntry): void; private updateToolMetrics; private updateApiMetrics; /** * Get current metrics snapshot */ getMetrics(): GlobalMetrics; /** * Get formatted metrics report */ getReport(): string; /** * Reset all metrics */ reset(): void; private percentage; } export declare const metrics: MetricsCollector; /** * Helper to measure and record a tool execution */ export declare function withMetrics(tool: string, api: string | undefined, fn: () => Promise, cached?: boolean): Promise; /** * Logger utility with levels */ export type LogLevel = "debug" | "info" | "warn" | "error"; declare class Logger { private level; private enabled; private levels; setLevel(level: LogLevel): void; setEnabled(enabled: boolean): void; private shouldLog; debug(message: string, data?: unknown): void; info(message: string, data?: unknown): void; warn(message: string, data?: unknown): void; error(message: string, data?: unknown): void; } export declare const logger: Logger; export {}; //# sourceMappingURL=metrics.d.ts.map