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 ComponentId, type Context, NamespaceNameAsString, type SoloListrTaskWrapper } 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';
import { type ComponentFactoryApi } from '../core/config/remote/api/component-factory-api.js';
import { type OneShotState } from '../core/one-shot-state.js';
import { NamespaceName } from '../types/namespace/namespace-name.js';
import { AnyListrContext } from '../types/aliases.js';
import { NodeCommandTasks } from './node/tasks.js';
import { SoloConfig } from '../business/runtime-state/config/solo/solo-config.js';
import { type ConfigProvider } from '../data/configuration/api/config-provider.js';
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>;
    protected readonly componentFactory?: ComponentFactoryApi;
    protected readonly oneShotState?: OneShotState;
    protected readonly nodeCommandTasks?: NodeCommandTasks;
    private readonly configProvider?;
    readonly soloConfig: SoloConfig;
    constructor(helm?: HelmClient, k8Factory?: K8Factory, chartManager?: ChartManager, configManager?: ConfigManager, depManager?: DependencyManager, leaseManager?: LockManager, localConfig?: LocalConfigRuntimeState, remoteConfig?: RemoteConfigRuntimeStateApi, taskList?: TaskList<ListrContext, ListrRendererValue, ListrRendererValue>, componentFactory?: ComponentFactoryApi, oneShotState?: OneShotState, nodeCommandTasks?: NodeCommandTasks, configProvider?: ConfigProvider);
    protected loadRemoteConfigOrWarn(argv: {
        _: string[];
    } & Record<string, unknown>, validate?: boolean, skipConsensusNodesValidation?: boolean): Promise<boolean>;
    abstract close(): Promise<void>;
    /**
     * Setup home directories
     * @param directories
     */
    setupHomeDirectory(directories?: string[]): string[];
    protected getClusterReference(): ClusterReferenceName;
    protected getClusterContext(clusterReference: ClusterReferenceName): Context;
    protected getNamespace(task: SoloListrTaskWrapper<AnyListrContext>): Promise<NamespaceName>;
    protected throwIfNamespaceIsMissing(context: Context, namespace: NamespaceName): Promise<void>;
    private inferMirrorNodeDataFromRemoteConfig;
    protected inferMirrorNodeData(namespace: NamespaceName, context: Context): Promise<{
        mirrorNodeId: ComponentId;
        mirrorNamespace: NamespaceNameAsString;
        mirrorNodeReleaseName: string;
    }>;
    private inferMirrorNodeReleaseName;
    protected resolveNamespaceFromDeployment(task?: SoloListrTaskWrapper<AnyListrContext>): Promise<NamespaceName>;
}
