/** * Metrics Collection System * * Collect and expose application metrics for monitoring */ export type MetricType = 'counter' | 'gauge' | 'histogram' | 'summary'; export interface MetricLabels { [key: string]: string | number; } export interface MetricValue { value: number; timestamp: number; labels?: MetricLabels; } export interface Metric { name: string; type: MetricType; help: string; values: MetricValue[]; labels?: string[]; } export interface HistogramBucket { le: number; count: number; } export interface HistogramMetric extends Metric { type: 'histogram'; buckets: HistogramBucket[]; sum: number; count: number; } export declare class MetricsCollector { private metrics; /** * Register a counter metric */ counter(name: string, help: string, labels?: string[]): Counter; /** * Register a gauge metric */ gauge(name: string, help: string, labels?: string[]): Gauge; /** * Register a histogram metric */ histogram(name: string, help: string, buckets?: number[], labels?: string[]): Histogram; /** * Get all metrics */ getMetrics(): Metric[]; /** * Get metric by name */ getMetric(name: string): Metric | undefined; /** * Clear all metrics */ clear(): void; /** * Export metrics in Prometheus format */ exportPrometheus(): string; /** * Export metrics as JSON */ exportJSON(): Record; } /** * Counter metric */ export declare class Counter { private metric; constructor(metric: Metric); /** * Increment counter */ inc(value?: number, labels?: MetricLabels): void; /** * Get current value */ get(labels?: MetricLabels): number; /** * Find value by labels */ private findValue; /** * Check if labels match */ private labelsMatch; } /** * Gauge metric */ export declare class Gauge { private metric; constructor(metric: Metric); /** * Set gauge value */ set(value: number, labels?: MetricLabels): void; /** * Increment gauge */ inc(value?: number, labels?: MetricLabels): void; /** * Decrement gauge */ dec(value?: number, labels?: MetricLabels): void; /** * Get current value */ get(labels?: MetricLabels): number; /** * Find value by labels */ private findValue; /** * Check if labels match */ private labelsMatch; } /** * Histogram metric */ export declare class Histogram { private metric; constructor(metric: HistogramMetric); /** * Observe a value */ observe(value: number, labels?: MetricLabels): void; /** * Start a timer */ startTimer(labels?: MetricLabels): () => void; /** * Get percentile */ percentile(p: number): number; /** * Get average */ average(): number; } /** * Default metrics collector */ export declare const metrics: MetricsCollector; /** * Application metrics */ export declare const appMetrics: { httpRequestsTotal: Counter; httpRequestDuration: Histogram; dbQueriesTotal: Counter; dbQueryDuration: Histogram; cacheOperationsTotal: Counter; cacheHitRate: Gauge; activeConnections: Gauge; errorsTotal: Counter; queueSize: Gauge; queueProcessingDuration: Histogram; memoryUsage: Gauge; apiCallsTotal: Counter; apiCallDuration: Histogram; x402PaymentRequiredTotal: Counter; x402PaymentVerifyTotal: Counter; x402PaymentVerifyDuration: Histogram; }; /** * Track HTTP request */ export declare function trackHTTPRequest(method: string, path: string, status: number, duration: number): void; /** * Track database query */ export declare function trackDBQuery(operation: string, table: string, duration: number): void; /** * Track cache operation */ export declare function trackCacheOperation(operation: 'hit' | 'miss' | 'set' | 'delete', result?: 'success' | 'error'): void; /** * Track error */ export declare function trackError(type: string, severity?: 'low' | 'medium' | 'high' | 'critical'): void; /** * Update active connections */ export declare function updateActiveConnections(type: string, delta: number): void; /** * Track an x402 HTTP 402 emission at a route. Call when the route returns * 402 with `X-PAYMENT-REQUIRED`. `currency` is always `'usdc-only'` — USDC on * Base is the sole settlement currency. */ export declare function trackX402PaymentRequired(route: string, currency: 'usdc-only'): void; /** * Track an x402 payment verification. Increments the result counter and * observes the duration histogram (latency = Coinbase facilitator round-trip * for USDC). */ export declare function trackX402PaymentVerify(route: string, scheme: 'exact', result: 'valid' | 'invalid', durationMs: number): void; /** * Update memory usage */ export declare function updateMemoryUsage(): void; /** * Start memory monitoring */ export declare function startMemoryMonitoring(intervalMs?: number): NodeJS.Timeout; /** * Create metrics middleware */ export declare function createMetricsMiddleware(): (request: TRequest & { method: string; url: string; }, next: () => Promise) => Promise; //# sourceMappingURL=metrics.d.ts.map