import { ShellRunner } from '../core/shell-runner.js';
import { type LockManager } from '../core/lock/lock-manager.js';
import { type ChartManager } from '../core/chart-manager.js';
import { type ConfigManager } from '../core/config-manager.js';
import { type DependencyManager } from '../core/dependency-managers/index.js';
import { type K8Factory } from '../integration/kube/k8-factory.js';
import { type HelmClient } from '../integration/helm/helm-client.js';
import { type LocalConfigRuntimeState } from '../business/runtime-state/config/local/local-config-runtime-state.js';
import { type ClusterReferenceName, type ClusterReferences } from '../types/index.js';
import { type RemoteConfigRuntimeStateApi } from '../business/runtime-state/api/remote-config-runtime-state-api.js';
import { type TaskList } from '../core/task-list/task-list.js';
import { ListrContext, ListrRendererValue } from 'listr2';
export declare abstract class BaseCommand extends ShellRunner {
    protected readonly helm?: HelmClient;
    protected readonly k8Factory?: K8Factory;
    protected readonly chartManager?: ChartManager;
    readonly configManager?: ConfigManager;
    protected readonly depManager?: DependencyManager;
    protected readonly leaseManager?: LockManager;
    readonly localConfig?: LocalConfigRuntimeState;
    protected readonly remoteConfig?: RemoteConfigRuntimeStateApi;
    protected readonly taskList?: TaskList<ListrContext, ListrRendererValue, ListrRendererValue>;
    constructor(helm?: HelmClient, k8Factory?: K8Factory, chartManager?: ChartManager, configManager?: ConfigManager, depManager?: DependencyManager, leaseManager?: LockManager, localConfig?: LocalConfigRuntimeState, remoteConfig?: RemoteConfigRuntimeStateApi, taskList?: TaskList<ListrContext, ListrRendererValue, ListrRendererValue>);
    /**
     * Prepare the values files map for each cluster
     *
     * Order of precedence:
     * 1. Chart's default values file (if chartDirectory is set)
     * 2. Profile values file
     * 3. User's values file
     * @param clusterReferences
     * @param valuesFileInput - the values file input string
     * @param chartDirectory - the chart directory
     * @param profileValuesFile - mapping of clusterRef to the profile values file full path
     */
    static prepareValuesFilesMapMultipleCluster(clusterReferences: ClusterReferences, chartDirectory?: string, profileValuesFile?: Record<ClusterReferenceName, string>, valuesFileInput?: string): Record<ClusterReferenceName, string>;
    /**
     * Prepare the values files map for each cluster
     *
     * Order of precedence:
     * 1. Chart's default values file (if chartDirectory is set)
     * 2. Profile values file
     * 3. User's values file
     * @param clusterReferences
     * @param valuesFileInput - the values file input string
     * @param chartDirectory - the chart directory
     * @param profileValuesFile - the profile values file full path
     */
    static prepareValuesFilesMap(clusterReferences: ClusterReferences, chartDirectory?: string, profileValuesFile?: string, valuesFileInput?: string): Record<ClusterReferenceName, string>;
    abstract close(): Promise<void>;
    /**
     * Setup home directories
     * @param directories
     */
    setupHomeDirectory(directories?: string[]): string[];
    setupHomeDirectoryTask(): {
        tile: string;
        task: () => Promise<void>;
    };
}
