import { type SoloLogger } from './logging/solo-logger.js';
import { type NamespaceName } from '../types/namespace/namespace-name.js';
import { type HelmClient } from '../integration/helm/helm-client.js';
export declare class ChartManager {
    private readonly helm?;
    private readonly logger?;
    constructor(helm?: HelmClient, logger?: SoloLogger);
    /**
     * Setup chart repositories
     *
     * This must be invoked before calling other methods
     *
     * @param repoURLs - a map of name and chart repository URLs
     * @param force - whether or not to update the repo
     * @returns the urls
     */
    setup(repoURLs?: Map<string, string>, force?: boolean): Promise<string[]>;
    /**
     * Check if the required chart repositories are set up
     *
     * @param repoURLs - a map of name and chart repository URLs
     * @returns true if all repos are set up, false otherwise
     */
    isSetup(repoURLs?: Map<string, string>): Promise<boolean>;
    addRepo(name: string, url: string, force: boolean): Promise<string>;
    /** List available clusters
     *
     * @param namespaceName - the namespace name
     * @param kubeContext - the kube context
     */
    getInstalledCharts(namespaceName: NamespaceName, kubeContext?: string): Promise<string[]>;
    install(namespaceName: NamespaceName, chartReleaseName: string, chartName: string, repoName: string, version: string, valuesArgument: string, kubeContext: string, atomic?: boolean, waitFor?: boolean): Promise<boolean>;
    isChartInstalled(namespaceName: NamespaceName, chartReleaseName: string, kubeContext?: string): Promise<boolean>;
    uninstall(namespaceName: NamespaceName, chartReleaseName: string, kubeContext?: string): Promise<boolean>;
    upgrade(namespaceName: NamespaceName, chartReleaseName: string, chartName: string, repoName: string, version?: string, valuesArgument?: string, kubeContext?: string, reuseValues?: boolean): Promise<boolean>;
}
