/**
 * Created by Bohdan on Sep, 2021
 */
import { IMetric, IMetricOptions } from "../types/MetricsInterfaces";
/**
 * Real-time metrics
 */
declare class Metrics {
    private metricsRepository;
    private clusterName;
    private showKeys;
    /**
     * Initialize metrics
     * @param clusterName cluster name used for prefix in metric names
     * @param showKeys show keys instead names
     */
    init(clusterName: string, showKeys: boolean): void;
    /**
     * set value in metric with type Metric
     * @param metric metric object
     * @param value the value what need to change
     * @param options extra options for metric like pool name or service name
     */
    set(metric: IMetric, value: number, options?: IMetricOptions): void;
    /**
     * Increase value by 1 in metric with type Counter
     * @param metric metric object
     * @param options extra options for metric like pool name or service name
     */
    inc(metric: IMetric, options?: IMetricOptions): void;
    /**
     * Decrease value by 1 in metric with type Counter
     * @param metric metric object
     * @param options extra options for metric like pool name or service name
     */
    dec(metric: IMetric, options?: IMetricOptions): void;
    /**
     * Mark the state to compute frequency in metric with type Meter
     * @param metric metric object
     * @param options extra options for metric like pool name or service name
     */
    mark(metric: IMetric, options?: IMetricOptions): void;
    update(metric: IMetric, value: number, options?: IMetricOptions): void;
    /**
     * Check if type is valid for current metric
     * @param metric metric object
     * @param type type what need to compare with current metric
     * @private
     */
    private static _isMetricTypeValid;
    /**
     * Get formatted metric key and name with prefix by cluster name and extra options
     * @param metric metric object
     * @param useService use service options to generate prop
     * @param options extra options for metric like pool name or service name
     * @private
     */
    private _generatePrefixes;
    /**
     * Get all metric separated to service metric and common
     * @param metric metric object
     * @param options extra options for metric like pool name or/and service name
     * @private
     */
    private _getMetricValues;
    /**
     * Create metric
     * @param metric metric object
     * @private
     */
    private _createMetric;
}
declare const _default: Metrics;
export default _default;
