import Star from '../star';
import { BaseMetricOptions, MetricRegistryOptions } from '../../typings/metric';
import { LoggerInstance } from '../../typings/logger';
import BaseMetric from './type/base';
import { GenericObject } from '../../typings';
import MetricBaseReporter from './reporters/base';
export default class MetricRegistry {
    star: Star;
    logger: LoggerInstance;
    dirty: boolean;
    options: MetricRegistryOptions;
    store: Map<string, BaseMetric>;
    reporter: MetricBaseReporter[];
    collectTimer: NodeJS.Timer | null;
    constructor(star: Star, options?: MetricRegistryOptions | boolean);
    init(): void;
    stop(): Promise<void[]> | undefined;
    isEnabled(): boolean | undefined;
    changed(metric: BaseMetric, value: any, labels?: GenericObject, timestamp?: number): void;
    register(options: BaseMetricOptions): BaseMetric | null;
    hasMetric(name: string): boolean;
    getMetric(name: string): BaseMetric | null;
    set(name: string, value: any | null, labels?: GenericObject, timestamp?: number): void | null;
    increment(name: string, labels?: GenericObject | null, value?: number, timestamp?: number): void | null;
    decrement(name: string, labels?: GenericObject | null, value?: number, timestamp?: number): void | null;
    observe(name: string, value: number, labels?: GenericObject, timestamp?: number): void | null;
    reset(name: string, labels?: GenericObject, timestamp?: number): null | undefined;
    resetAll(name: string, timestamp?: number): null | undefined;
    timer(name?: string, labels?: GenericObject, timestamp?: number): () => number;
    list(options?: GenericObject): GenericObject[];
    pluralizeUnit(unit: string): string;
}
