/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
import type { CoreV1Api } from "@kubernetes/client-node";
export interface PrometheusService extends PrometheusServiceInfo {
    kind: string;
}
export interface PrometheusServiceInfo {
    namespace: string;
    service: string;
    port: number;
}
export interface PrometheusProvider {
    readonly kind: string;
    readonly name: string;
    readonly isConfigurable: boolean;
    getQuery(opts: Record<string, string>, queryName: string): string;
    getPrometheusService(client: CoreV1Api): Promise<PrometheusService>;
}
export interface CreatePrometheusProviderOpts {
    readonly kind: string;
    readonly name: string;
    readonly isConfigurable: boolean;
    getQuery(opts: Record<string, string>, queryName: string): string;
    getService(client: CoreV1Api): Promise<PrometheusServiceInfo>;
}
export declare const createPrometheusProvider: ({ getService, ...opts }: CreatePrometheusProviderOpts) => PrometheusProvider;
export declare function findFirstNamespacedService(client: CoreV1Api, ...selectors: string[]): Promise<PrometheusServiceInfo>;
export declare function findNamespacedService(client: CoreV1Api, name: string, namespace: string): Promise<PrometheusServiceInfo>;
export interface BytesSentArgs {
    rateAccuracy: string;
    ingress: string;
    namespace: string;
    statuses: string;
}
export declare function bytesSent({ rateAccuracy, ingress, namespace, statuses }: BytesSentArgs): string;
export declare const prometheusProviderInjectionToken: import("@ogre-tools/injectable").InjectionToken<PrometheusProvider, void>;
