/**
 * Copyright (C) 2024 Hedera Hashgraph, LLC
 *
 * Licensed under the Apache License, Version 2.0 (the ""License"");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an ""AS IS"" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
import { ShellRunner } from '../core/shell_runner.js';
import { type LeaseManager } from '../core/lease/lease_manager.js';
import { type LocalConfig } from '../core/config/local_config.js';
import { type RemoteConfigManager } from '../core/config/remote/remote_config_manager.js';
import { type Helm } from '../core/helm.js';
import { type K8 } from '../core/k8.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 Opts } from '../types/command_types.js';
import { type CommandFlag } from '../types/flag_types.js';
import { type Lease } from '../core/lease/lease.js';
export interface CommandHandlers {
    parent: BaseCommand;
}
export declare abstract class BaseCommand extends ShellRunner {
    protected readonly helm: Helm;
    protected readonly k8: K8;
    protected readonly chartManager: ChartManager;
    protected readonly configManager: ConfigManager;
    protected readonly depManager: DependencyManager;
    protected readonly leaseManager: LeaseManager;
    protected readonly _configMaps: Map<string, any>;
    protected readonly localConfig: LocalConfig;
    protected readonly remoteConfigManager: RemoteConfigManager;
    constructor(opts: Opts);
    prepareChartPath(chartDir: string, chartRepo: string, chartReleaseName: string): Promise<string>;
    prepareValuesFiles(valuesFile: string): string;
    getConfigManager(): ConfigManager;
    getChartManager(): ChartManager;
    /**
     * Dynamically builds a class with properties from the provided list of flags
     * and extra properties, will keep track of which properties are used.  Call
     * getUnusedConfigs() to get an array of unused properties.
     */
    getConfig(configName: string, flags: CommandFlag[], extraProperties?: string[]): object;
    getLeaseManager(): LeaseManager;
    /**
     * Get the list of unused configurations that were not accessed
     * @returns an array of unused configurations
     */
    getUnusedConfigs(configName: string): string[];
    getK8(): K8;
    getLocalConfig(): LocalConfig;
    getRemoteConfigManager(): RemoteConfigManager;
    abstract close(): Promise<void>;
    commandActionBuilder(actionTasks: any, options: any, errorString: string, lease: Lease | null): (argv: any, commandDef: CommandHandlers) => Promise<void>;
    /**
     * Setup home directories
     * @param dirs a list of directories that need to be created in sequence
     */
    setupHomeDirectory(dirs?: string[]): string[];
}
