import execa = require("execa");
import { Environment } from "../env";
import { Kubeconfig } from "./common";
import { Manifest } from "./manifest_support";
/**
 * Downloads kubectl and returns path to its location
 *
 * @returns path to kubectl on host
 * @internal
 */
export declare function getKubectl(): Promise<string>;
/** @internal */
interface KubectlOptions {
    /** path to kubeconfig */
    kubeconfig?: string;
    env?: Environment;
}
export declare function kubectl(args: string[], options: KubectlOptions): Promise<execa.ExecaReturnValue<string>>;
/** @internal */
export interface KubectlGetOptions {
    /** path to kubeconfig, or kubeconfig as a Javascript object */
    kubeconfig?: Kubeconfig | string;
    /**  Type of k8s object to get (e.g., pod, service) */
    kind: string;
    /** Name of object to get */
    name: string;
}
/** @internal */
export declare function kubectlGet(options: KubectlGetOptions): Promise<any>;
/** @internal */
export interface KubectlDiffOptions {
    kubeconfig?: Kubeconfig | string;
    manifest: Manifest;
}
export interface KubectlDiffReturns {
    diff?: string;
    errs: string;
    forbidden: boolean;
    clientFallback: boolean;
}
/** @internal */
export declare function kubectlDiff(options: KubectlDiffOptions): Promise<KubectlDiffReturns>;
/** @internal */
export interface KubectlOpManifestOptions {
    /** kubeconfig as a Javascript object, or a path to a kubeconfig file */
    kubeconfig?: Kubeconfig | string;
    dryRun?: boolean;
    manifest: Manifest;
    wait?: boolean;
}
export declare function kubectlOpManifest(op: "create" | "apply" | "delete", options: KubectlOpManifestOptions): Promise<execa.ExecaReturnValue<string>>;
/** @internal */
export interface KubectlProxyOptions {
    kubeconfig?: Kubeconfig | string;
}
export interface KubectlProxyInfo {
    url: string;
    child: execa.ExecaChildProcess<string>;
    kill: () => void;
}
/**  @internal */
export declare function kubectlProxy(options: KubectlProxyOptions): Promise<KubectlProxyInfo>;
export {};
//# sourceMappingURL=kubectl.d.ts.map