import { ExecutionResult } from '../core/result.js';
import { BaseAdapter, BaseAdapterConfig } from './base-adapter.js';
import { Command } from '../core/command.js';
export interface KubernetesAdapterConfig extends BaseAdapterConfig {
    kubeconfig?: string;
    context?: string;
    namespace?: string;
    kubectlPath?: string;
    kubectlTimeout?: number;
}
export declare class KubernetesAdapter extends BaseAdapter {
    protected readonly adapterName = "kubernetes";
    private kubectlPath;
    private k8sConfig;
    constructor(config?: KubernetesAdapterConfig);
    isAvailable(): Promise<boolean>;
    execute(command: Command): Promise<ExecutionResult>;
    private buildKubectlExecArgs;
    private buildCommandArray;
    executeKubectl(args: string[], options?: {
        timeout?: number;
        throwOnNonZeroExit?: boolean;
    }): Promise<{
        stdout: string;
        stderr: string;
        exitCode: number;
    }>;
    getPodFromSelector(selector: string, namespace?: string): Promise<string | null>;
    isPodReady(pod: string, namespace?: string): Promise<boolean>;
    copyFiles(source: string, destination: string, options: {
        namespace?: string;
        container?: string;
        direction: 'to' | 'from';
    }): Promise<void>;
    dispose(): Promise<void>;
    portForward(pod: string, localPort: number, remotePort: number, options?: {
        namespace?: string;
        dynamicLocalPort?: boolean;
    }): Promise<KubernetesPortForward>;
    streamLogs(pod: string, onData: (data: string) => void, options?: {
        namespace?: string;
        container?: string;
        follow?: boolean;
        tail?: number;
        previous?: boolean;
        timestamps?: boolean;
    }): Promise<{
        stop: () => void;
    }>;
    private buildGlobalOptions;
    private portForwards;
    private closeAllPortForwards;
}
declare class KubernetesPortForward {
    private kubectlPath;
    private args;
    private requestedLocalPort;
    readonly remotePort: number;
    private globalOptions;
    private proc;
    private _localPort;
    private _isOpen;
    constructor(kubectlPath: string, args: string[], requestedLocalPort: number, remotePort: number, globalOptions: string[]);
    get localPort(): number;
    get isOpen(): boolean;
    open(): Promise<void>;
    close(): Promise<void>;
}
export {};
