/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
import type { KubeApiResource } from "../rbac";
import type { ClusterState, ClusterId, ClusterMetadata, ClusterModel, ClusterPreferences, ClusterPrometheusPreferences, UpdateClusterModel } from "../cluster-types";
import type { IObservableValue } from "mobx";
export declare class Cluster {
    /**
     * Unique id for a cluster
     */
    readonly id: ClusterId;
    /**
     * Kubeconfig context name
     */
    readonly contextName: IObservableValue<string>;
    /**
     * Path to kubeconfig
     */
    readonly kubeConfigPath: IObservableValue<string>;
    /**
     * Describes if we can detect that cluster is online
     */
    readonly online: IObservableValue<boolean>;
    /**
     * Describes if user is able to access cluster resources
     */
    readonly accessible: IObservableValue<boolean>;
    /**
     * Is cluster instance in usable state
     */
    readonly ready: IObservableValue<boolean>;
    /**
     * Is cluster disconnected. False if user has selected to connect.
     */
    readonly disconnected: IObservableValue<boolean>;
    /**
     * Does user have admin like access
     */
    readonly isAdmin: IObservableValue<boolean>;
    /**
     * Global watch-api accessibility , e.g. "/api/v1/services?watch=1"
     */
    readonly isGlobalWatchEnabled: IObservableValue<boolean>;
    /**
     * Preferences
     */
    readonly preferences: ClusterPreferences;
    /**
     * Metadata
     */
    readonly metadata: ClusterMetadata;
    /**
     * List of allowed namespaces verified via K8S::SelfSubjectAccessReview api
     */
    readonly allowedNamespaces: import("mobx").IObservableArray<string>;
    /**
     * List of accessible namespaces provided by user in the Cluster Settings
     */
    readonly accessibleNamespaces: import("mobx").IObservableArray<string>;
    /**
     * The list of all known resources associated with this cluster
     */
    readonly knownResources: import("mobx").IObservableArray<KubeApiResource>;
    /**
     * The formatting of this is `group.name` or `name` (if in core)
     */
    readonly resourcesToShow: import("mobx").ObservableSet<string>;
    /**
     * Labels for the catalog entity
     */
    readonly labels: Partial<Record<string, string>>;
    /**
     * Is cluster available
     */
    readonly available: import("mobx").IComputedValue<boolean>;
    /**
     * Cluster name
     */
    readonly name: import("mobx").IComputedValue<string>;
    /**
     * The detected kubernetes distribution
     */
    readonly distribution: import("mobx").IComputedValue<string>;
    /**
     * The detected kubernetes version
     */
    readonly version: import("mobx").IComputedValue<string>;
    /**
     * Prometheus preferences
     */
    readonly prometheusPreferences: import("mobx").IComputedValue<ClusterPrometheusPreferences>;
    constructor({ id, ...model }: ClusterModel);
    /**
     * Update cluster data model
     *
     * @param model
     */
    updateModel(model: UpdateClusterModel): void;
    toJSON(): ClusterModel;
    /**
     * Serializable cluster-state used for sync btw main <-> renderer
     */
    getState(): ClusterState;
    /**
     * @param state cluster state
     */
    setState(state: ClusterState): void;
    getMeta(): {
        id: string;
        name: string;
        ready: boolean;
        online: boolean;
        accessible: boolean;
        disconnected: boolean;
    };
}
