/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
import type { CatalogEntityActionContext, CatalogEntityContextMenuContext, CatalogEntityMetadata, CatalogEntityStatus, CatalogCategorySpec } from "../catalog";
import { CatalogEntity, CatalogCategory } from "../catalog/catalog-entity";
import type { CatalogEntitySpec } from "../catalog/catalog-entity";
export interface KubernetesClusterPrometheusMetrics {
    address?: {
        namespace: string;
        service: string;
        port: number;
        prefix: string;
    };
    type?: string;
}
export interface KubernetesClusterSpec extends CatalogEntitySpec {
    kubeconfigPath: string;
    kubeconfigContext: string;
    metrics?: {
        source: string;
        prometheus?: KubernetesClusterPrometheusMetrics;
    };
    icon?: {
        src?: string;
        material?: string;
        background?: string;
    };
    accessibleNamespaces?: string[];
}
export declare enum LensKubernetesClusterStatus {
    DELETING = "deleting",
    CONNECTING = "connecting",
    CONNECTED = "connected",
    DISCONNECTED = "disconnected"
}
export interface KubernetesClusterMetadata extends CatalogEntityMetadata {
    distro?: string;
    kubeVersion?: string;
}
/**
 * @deprecated This is no longer used as it is incorrect. Other sources can add more values
 */
export type KubernetesClusterStatusPhase = "connected" | "connecting" | "disconnected" | "deleting";
export interface KubernetesClusterStatus extends CatalogEntityStatus {
}
export declare function isKubernetesCluster(item: unknown): item is KubernetesCluster;
export declare class KubernetesCluster<Metadata extends KubernetesClusterMetadata = KubernetesClusterMetadata, Status extends KubernetesClusterStatus = KubernetesClusterStatus, Spec extends KubernetesClusterSpec = KubernetesClusterSpec> extends CatalogEntity<Metadata, Status, Spec> {
    static readonly apiVersion: string;
    static readonly kind: string;
    readonly apiVersion: string;
    readonly kind: string;
    connect(): Promise<void>;
    disconnect(): Promise<void>;
    onRun(context: CatalogEntityActionContext): Promise<void>;
    onDetailsOpen(): void;
    onSettingsOpen(): void;
    onContextMenuOpen(context: CatalogEntityContextMenuContext): void;
}
export declare class KubernetesClusterCategory extends CatalogCategory {
    readonly apiVersion = "catalog.k8slens.dev/v1alpha1";
    readonly kind = "CatalogCategory";
    metadata: {
        name: string;
        icon: string;
    };
    spec: CatalogCategorySpec;
}
