import * as Prometheus from "prom-client";
import { TDefaultedPromsterOptions, TGcMetrics, TGraphQlMetrics, THttpMetrics, TLabelValues, TOptionalPromsterOptions } from "@promster/types";
export type * from "@promster/types";

//#region src/client/client.d.ts
declare const defaultRegister: Prometheus.Registry<"text/plain; version=0.0.4; charset=utf-8">;
//#endregion
//#region src/create-gc-metrics/create-gc-metrics.d.ts
declare const createGcMetrics: {
  (options: TDefaultedPromsterOptions): TGcMetrics;
  defaultOptions: {
    getLabelValues: () => {};
    labels: never[];
    metricPrefix: string;
    metricNames: {
      up: string[];
    };
    gcCollectionInterval: number;
  };
};
//#endregion
//#region src/create-gc-observer/create-gc-observer.d.ts
declare const createGcObserver: (_metrics: TGcMetrics, options: TDefaultedPromsterOptions) => () => void;
//#endregion
//#region src/create-graphql-metrics/create-graphql-metrics.d.ts
declare const createGraphQlMetrics: {
  (options: TDefaultedPromsterOptions): TGraphQlMetrics;
  defaultOptions: {
    getLabelValues: () => {};
    labels: never[];
    metricPrefix: string;
    metricTypes: string[];
    metricNames: {
      graphQlParseDuration: string[];
      graphQlValidationDuration: string[];
      graphQlResolveFieldDuration: string[];
      graphQlRequestDuration: string[];
      graphQlErrorsTotal: string[];
    };
    metricPercentiles: {
      graphQlParseDuration: number[];
      graphQlValidationDuration: number[];
      graphQlResolveFieldDuration: number[];
      graphQlRequestDuration: number[];
      graphQlErrorsTotal: number[];
    };
  };
};
//#endregion
//#region src/create-http-metrics/create-http-metrics.d.ts
declare const createHttpMetrics: {
  (options: TDefaultedPromsterOptions): THttpMetrics;
  defaultOptions: {
    getLabelValues: () => {};
    labels: never[];
    metricPrefix: string;
    metricTypes: string[];
    metricNames: {
      httpRequestsTotal: string[];
      httpRequestDurationPerPercentileInSeconds: string[];
      httpRequestDurationInSeconds: string[];
      httpRequestContentLengthInBytes: string[];
      httpResponseContentLengthInBytes: string[];
    };
    metricBuckets: {
      httpRequestContentLengthInBytes: number[];
      httpRequestDurationInSeconds: number[];
    };
    metricPercentiles: {
      httpRequestDurationPerPercentileInSeconds: number[];
      httpResponseContentLengthInBytes: number[];
    };
  };
};
//#endregion
//#region src/end-measurement-from/end-measurement-from.d.ts
declare function endMeasurementFrom(start: [number, number]): {
  durationS: number;
};
//#endregion
//#region src/sort-labels/sort-labels.d.ts
declare function sortLabels(unsortedLabels: TLabelValues): TLabelValues;
//#endregion
//#region src/timing/timing.d.ts
declare class Timing {
  #private;
  static NS_PER_SEC: bigint;
  constructor();
  value(): {
    seconds: undefined;
  } | {
    seconds: number;
  };
  reset(): this;
  end(): this;
}
declare const timing: {
  start(): Timing;
};
//#endregion
//#region src/create-request-recorder/create-request-recorder.d.ts
type TRecordingOptions = {
  labels: TLabelValues;
  requestContentLength?: number;
  responseContentLength?: number;
};
type TLegacyTiming = [number, number];
type TRequestRecorder = (_timing: Timing | TLegacyTiming, _recordingOptions: TRecordingOptions) => void;
declare const createRequestRecorder: {
  (metrics: THttpMetrics, options?: TOptionalPromsterOptions): TRequestRecorder;
  defaultOptions: TOptionalPromsterOptions;
};
//#endregion
//#region src/environment/kubernetes.d.ts
declare const isRunningInKubernetes: () => boolean;
//#endregion
//#region src/environment/skip-metrics-in-environment.d.ts
type TSkipMetricsInEnvironmentOptions = {
  detectKubernetes?: TOptionalPromsterOptions['detectKubernetes'];
};
declare const skipMetricsInEnvironment: (options: TSkipMetricsInEnvironmentOptions) => boolean;
//#endregion
//#region src/normalizers/method/method.d.ts
declare const normalizeMethod: (method: string) => string;
//#endregion
//#region src/normalizers/path/path.d.ts
declare const normalizePath: (path: string) => string;
//#endregion
//#region src/normalizers/status-code/status-code.d.ts
declare const normalizeStatusCode: (statusCode: number) => number;
//#endregion
//#region src/normalizers/index.d.ts
declare const defaultNormalizers: {
  normalizeStatusCode: (statusCode: number) => number;
  normalizePath: (path: string) => string;
  normalizeMethod: (method: string) => string;
};
//#endregion
//#region src/summary/summary.d.ts
declare const getSummary: () => Promise<string>;
declare const getContentType: () => "text/plain; version=0.0.4; charset=utf-8";
//#endregion
export { Prometheus, type Timing as TPromsterTiming, type TRequestRecorder, createGcMetrics, createGcObserver, createGraphQlMetrics, createHttpMetrics, createRequestRecorder, defaultNormalizers, defaultRegister, endMeasurementFrom, getContentType, getSummary, isRunningInKubernetes, normalizeMethod, normalizePath, normalizeStatusCode, skipMetricsInEnvironment, sortLabels, timing };
//# sourceMappingURL=index.d.ts.map