export type NatsTrafficMetricSource = 'nats.publish' | 'nats.request' | 'nats.subscribe' | 'nats.kv'; export type NatsTrafficDirection = 'upload' | 'download'; export interface NatsTrafficMetricBucket { uploadBytes: number; downloadBytes: number; } export interface NatsTrafficMetrics extends NatsTrafficMetricBucket { bySource: Partial>; } export type NatsTrafficRecordEvent = { type: 'METRICS.RECORD'; source: NatsTrafficMetricSource; uploadBytes?: number; downloadBytes?: number; }; export type NatsTrafficResetEvent = { type: 'METRICS.RESET_UPLOAD'; source?: NatsTrafficMetricSource; } | { type: 'METRICS.RESET_DOWNLOAD'; source?: NatsTrafficMetricSource; } | { type: 'METRICS.RESET_ALL'; source?: NatsTrafficMetricSource; }; export type NatsTrafficEvent = NatsTrafficRecordEvent | NatsTrafficResetEvent; export declare function createEmptyTrafficMetrics(): NatsTrafficMetrics; export declare function byteLength(value: unknown): number; export declare function recordTrafficMetric(metrics: NatsTrafficMetrics, event: NatsTrafficRecordEvent): NatsTrafficMetrics; export declare function resetTrafficUpload(metrics: NatsTrafficMetrics, source?: NatsTrafficMetricSource): NatsTrafficMetrics; export declare function resetTrafficDownload(metrics: NatsTrafficMetrics, source?: NatsTrafficMetricSource): NatsTrafficMetrics; export declare function resetTrafficAll(metrics: NatsTrafficMetrics, source?: NatsTrafficMetricSource): NatsTrafficMetrics; //# sourceMappingURL=traffic.d.ts.map