import type express from 'express'; import prometheus from 'prom-client'; import { TypedError } from 'typed-error'; import type { AuthTestFunc, CustomParams, LabelSet, MetricsMetaMap } from './types'; export declare class MetricsGathererError extends TypedError { } interface Describer { [kind: string]: (name: string, help: string, customParams?: CustomParams) => void; } export declare class MetricsGatherer { internalErrorCount: number; meta: MetricsMetaMap; private metrics; describe: Describer; client: typeof prometheus; constructor(); private initState; private setupDescribe; gauge(name: string, val: number, labels?: LabelSet): void; inc(name: string, val?: number, labels?: LabelSet): void; dec(name: string, val?: number, labels?: LabelSet): void; counter(name: string, val?: number, labels?: LabelSet): void; summary(name: string, val: number, labels?: LabelSet, customParams?: CustomParams): void; histogram(name: string, val: number, labels?: LabelSet, customParams?: CustomParams): void; histogramSummary(name: string, val: number, labels?: LabelSet): void; checkMetricType(name: string, kinds: string[]): boolean | undefined; getMetric(name: string): prometheus.Metric | undefined; exists(name: string): boolean; private ensureExists; reset(name?: string): void; requestHandler(authTest?: AuthTestFunc): express.Handler; /** * Create an express request handler given an auth test function which is suitable * for use in a context where we're using node's `cluster` module. * Note: This *must* be paired with an `aggregateRequestWorker()` call on all workers */ aggregateRequestHandler(authTest?: AuthTestFunc): express.Handler; aggregateRequestWorker(): void; collectDefaultMetrics(): void; collectAPIMetrics(app: express.Application): express.Application; output(): Promise; clear(): void; private err; } export {};