/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
/// <reference types="node" />
/// <reference types="node/http" />
/// <reference types="got/dist/source/core/utils/timed-out" />
import { CoreV1Api } from "@kubernetes/client-node";
import type { KubeConfig } from "@kubernetes/client-node";
import type { ShellSessionArgs, ShellSessionDependencies } from "../shell-session";
import { ShellSession } from "../shell-session";
import type { CreateKubeJsonApiForCluster } from "../../../common/k8s-api/create-kube-json-api-for-cluster.injectable";
import type { CreateKubeApi } from "../../../common/k8s-api/create-kube-api.injectable";
import type { LoadProxyKubeconfig } from "../../cluster/load-proxy-kubeconfig.injectable";
export interface NodeShellSessionArgs extends ShellSessionArgs {
    nodeName: string;
}
export interface NodeShellSessionDependencies extends ShellSessionDependencies {
    createKubeJsonApiForCluster: CreateKubeJsonApiForCluster;
    createKubeApi: CreateKubeApi;
    loadProxyKubeconfig: LoadProxyKubeconfig;
}
export declare class NodeShellSession extends ShellSession {
    protected readonly dependencies: NodeShellSessionDependencies;
    ShellType: string;
    protected readonly podName: string;
    protected readonly nodeName: string;
    protected readonly cwd: string | undefined;
    constructor(dependencies: NodeShellSessionDependencies, { nodeName, ...args }: NodeShellSessionArgs);
    open(): Promise<void>;
    protected createNodeShellPod(coreApi: CoreV1Api): Promise<{
        response: import("http").IncomingMessage;
        body: import("@kubernetes/client-node").V1Pod;
    }>;
    protected waitForRunningPod(kc: KubeConfig): Promise<void>;
}
