/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
import "../../common/ipc/cluster";
import type { IComputedValue, IObservableValue, ObservableSet } from "mobx";
import type { Cluster } from "../../common/cluster/cluster";
import { KubernetesCluster, LensKubernetesClusterStatus } from "../../common/catalog-entities/kubernetes-cluster";
import type { ClusterId } from "../../common/cluster-types";
import type { CatalogEntityRegistry } from "../catalog";
import type { Logger } from "@openlens/logger";
import type { UpdateEntityMetadata } from "./update-entity-metadata.injectable";
import type { UpdateEntitySpec } from "./update-entity-spec.injectable";
import type { ClusterConnection } from "./cluster-connection.injectable";
import type { GetClusterById } from "../../features/cluster/storage/common/get-by-id.injectable";
import type { AddCluster } from "../../features/cluster/storage/common/add.injectable";
interface Dependencies {
    readonly catalogEntityRegistry: CatalogEntityRegistry;
    readonly clustersThatAreBeingDeleted: ObservableSet<ClusterId>;
    readonly visibleCluster: IObservableValue<ClusterId | null>;
    readonly logger: Logger;
    readonly clusters: IComputedValue<Cluster[]>;
    updateEntityMetadata: UpdateEntityMetadata;
    updateEntitySpec: UpdateEntitySpec;
    getClusterConnection: (cluster: Cluster) => ClusterConnection;
    getClusterById: GetClusterById;
    addCluster: AddCluster;
}
export declare class ClusterManager {
    private readonly dependencies;
    constructor(dependencies: Dependencies);
    init: () => void;
    protected updateCatalog(clusters: Cluster[]): void;
    protected updateEntityFromCluster(cluster: Cluster): void;
    protected updateEntityStatus(entity: KubernetesCluster, cluster?: Cluster): void;
    protected syncClustersFromCatalog(entities: KubernetesCluster[]): void;
    protected onNetworkOffline: () => Promise<void>;
    protected onNetworkOnline: () => Promise<void>;
}
export declare function catalogEntityFromCluster(cluster: Cluster): KubernetesCluster<{
    uid: string;
    name: string;
    source: string;
    labels: {
        [x: string]: string | undefined;
    };
    distro: string;
    kubeVersion: string;
}, {
    phase: LensKubernetesClusterStatus;
    reason: string;
    message: string;
    active: boolean;
}, {
    kubeconfigPath: string;
    kubeconfigContext: string;
    icon: {};
}>;
export {};
