import { type K8 } from '../k8.js';
import { type Namespaces } from '../../../types/namespace/namespaces.js';
import { type Clusters } from '../resources/cluster/clusters.js';
import { type ConfigMaps } from '../resources/config-map/config-maps.js';
import { type Containers } from '../resources/container/containers.js';
import { type Contexts } from '../resources/context/contexts.js';
import { type Pods } from '../resources/pod/pods.js';
import { type Services } from '../resources/service/services.js';
import { type Pvcs } from '../resources/pvc/pvcs.js';
import { type Leases } from '../resources/lease/leases.js';
import { type IngressClasses } from '../resources/ingress-class/ingress-classes.js';
import { type Secrets } from '../resources/secret/secrets.js';
import { type Ingresses } from '../resources/ingress/ingresses.js';
import { type Crds } from '../resources/crd/crds.js';
import { type Optional } from '../../../types/index.js';
import { K8ClientManifests } from './resources/manifest/k8-client-manifests.js';
import { type Rbacs } from '../resources/rbac/rbacs.js';
/**
 * A kubernetes API wrapper class providing custom functionalities required by solo
 *
 * Note: Take care if the same instance is used for parallel execution, as the behaviour may be unpredictable.
 * For parallel execution, create separate instances by invoking clone()
 */
export declare class K8Client implements K8 {
    private readonly context;
    private readonly kubectlInstallationDirectory;
    private kubeConfig;
    private kubeClient;
    private coordinationApiClient;
    private extensionApi;
    private networkingApi;
    private rbacApi;
    private k8sObjectApi;
    private k8Leases;
    private k8Clusters;
    private k8ConfigMaps;
    private k8Containers;
    private k8Pods;
    private k8Contexts;
    private k8Services;
    private k8Pvcs;
    private k8Namespaces;
    private k8IngressClasses;
    private k8Secrets;
    private k8Ingresses;
    private k8Crds;
    private k8Rbacs;
    private k8Manifests;
    /**
     * Create a new k8Factory client for the given context, if context is undefined it will use the current context in kubeconfig
     * @param context - The context to create the k8Factory client for
     * @param kubectlInstallationDirectory - Path to executable of kubectl
     */
    constructor(context: string, kubectlInstallationDirectory: string);
    init(context?: Optional<string>): K8;
    private getKubeConfig;
    namespaces(): Namespaces;
    clusters(): Clusters;
    configMaps(): ConfigMaps;
    containers(): Containers;
    contexts(): Contexts;
    services(): Services;
    pods(): Pods;
    pvcs(): Pvcs;
    leases(): Leases;
    secrets(): Secrets;
    ingressClasses(): IngressClasses;
    ingresses(): Ingresses;
    crds(): Crds;
    rbac(): Rbacs;
    manifests(): K8ClientManifests;
    getKubectlExecutablePath(): string;
}
