import { IComGithubFluxcdHelmControllerApiV2HelmChartTemplate } from "./HelmChartTemplate.js";
import { IComGithubFluxcdHelmControllerApiV2CrossNamespaceSourceReference } from "./CrossNamespaceSourceReference.js";
import { IComGithubFluxcdHelmControllerApiV2CommonMetadata } from "./CommonMetadata.js";
import { IComGithubFluxcdHelmControllerApiV2DependencyReference } from "./DependencyReference.js";
import { IComGithubFluxcdHelmControllerApiV2DriftDetection } from "./DriftDetection.js";
import { IComGithubFluxcdPkgApisKustomizeCustomHealthCheck } from "../../github.com/fluxcd/pkg/apis/kustomize/CustomHealthCheck.js";
import { IComGithubFluxcdHelmControllerApiV2Install } from "./Install.js";
import { IComGithubFluxcdPkgApisMetaKubeConfigReference } from "../../github.com/fluxcd/pkg/apis/meta/KubeConfigReference.js";
import { IComGithubFluxcdHelmControllerApiV2PostRenderer } from "./PostRenderer.js";
import { IComGithubFluxcdHelmControllerApiV2Rollback } from "./Rollback.js";
import { IComGithubFluxcdHelmControllerApiV2Test } from "./Test.js";
import { IComGithubFluxcdHelmControllerApiV2Uninstall } from "./Uninstall.js";
import { IComGithubFluxcdHelmControllerApiV2Upgrade } from "./Upgrade.js";
import { IIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON } from "kubernetes-models/apiextensions.k8s.io/v1/JSON";
import { IComGithubFluxcdPkgApisMetaValuesReference } from "../../github.com/fluxcd/pkg/apis/meta/ValuesReference.js";
import { IComGithubFluxcdHelmControllerApiV2WaitStrategy } from "./WaitStrategy.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * HelmReleaseSpec defines the desired state of a Helm release.
 */
export interface IHelmReleaseSpec {
    /**
     * Chart defines the template of the v1.HelmChart that should be created
     * for this HelmRelease.
     */
    "chart"?: IComGithubFluxcdHelmControllerApiV2HelmChartTemplate;
    /**
     * ChartRef holds a reference to a source controller resource containing the
     * Helm chart artifact.
     */
    "chartRef"?: IComGithubFluxcdHelmControllerApiV2CrossNamespaceSourceReference;
    /**
     * CommonMetadata specifies the common labels and annotations that are
     * applied to all resources. Any existing label or annotation will be
     * overridden if its key matches a common one.
     */
    "commonMetadata"?: IComGithubFluxcdHelmControllerApiV2CommonMetadata;
    /**
     * DependsOn may contain a DependencyReference slice with
     * references to HelmRelease resources that must be ready before this HelmRelease
     * can be reconciled.
     */
    "dependsOn"?: Array<IComGithubFluxcdHelmControllerApiV2DependencyReference>;
    /**
     * DriftDetection holds the configuration for detecting and handling
     * differences between the manifest in the Helm storage and the resources
     * currently existing in the cluster.
     */
    "driftDetection"?: IComGithubFluxcdHelmControllerApiV2DriftDetection;
    /**
     * HealthCheckExprs is a list of healthcheck expressions for evaluating the
     * health of custom resources using Common Expression Language (CEL).
     * The expressions are evaluated only when the specific Helm action
     * taking place has wait enabled, i.e. DisableWait is false, and the
     * 'poller' WaitStrategy is used.
     */
    "healthCheckExprs"?: Array<IComGithubFluxcdPkgApisKustomizeCustomHealthCheck>;
    /**
     * Install holds the configuration for Helm install actions for this HelmRelease.
     */
    "install"?: IComGithubFluxcdHelmControllerApiV2Install;
    "interval": string;
    /**
     * KubeConfig for reconciling the HelmRelease on a remote cluster.
     * When used in combination with HelmReleaseSpec.ServiceAccountName,
     * forces the controller to act on behalf of that Service Account at the
     * target cluster.
     * If the --default-service-account flag is set, its value will be used as
     * a controller level fallback for when HelmReleaseSpec.ServiceAccountName
     * is empty.
     */
    "kubeConfig"?: IComGithubFluxcdPkgApisMetaKubeConfigReference;
    /**
     * MaxHistory is the number of revisions saved by Helm for this HelmRelease.
     * Use '0' for an unlimited number of revisions; defaults to '5'.
     */
    "maxHistory"?: number;
    /**
     * PersistentClient tells the controller to use a persistent Kubernetes
     * client for this release. When enabled, the client will be reused for the
     * duration of the reconciliation, instead of being created and destroyed
     * for each (step of a) Helm action.
     *
     * This can improve performance, but may cause issues with some Helm charts
     * that for example do create Custom Resource Definitions during installation
     * outside Helm's CRD lifecycle hooks, which are then not observed to be
     * available by e.g. post-install hooks.
     *
     * If not set, it defaults to true.
     */
    "persistentClient"?: boolean;
    /**
     * PostRenderers holds an array of Helm PostRenderers, which will be applied in order
     * of their definition.
     */
    "postRenderers"?: Array<IComGithubFluxcdHelmControllerApiV2PostRenderer>;
    /**
     * ReleaseName used for the Helm release. Defaults to a composition of
     * '[TargetNamespace-]Name'.
     */
    "releaseName"?: string;
    /**
     * Rollback holds the configuration for Helm rollback actions for this HelmRelease.
     */
    "rollback"?: IComGithubFluxcdHelmControllerApiV2Rollback;
    /**
     * The name of the Kubernetes service account to impersonate
     * when reconciling this HelmRelease.
     */
    "serviceAccountName"?: string;
    /**
     * StorageNamespace used for the Helm storage.
     * Defaults to the namespace of the HelmRelease.
     */
    "storageNamespace"?: string;
    /**
     * Suspend tells the controller to suspend reconciliation for this HelmRelease,
     * it does not apply to already started reconciliations. Defaults to false.
     */
    "suspend"?: boolean;
    /**
     * TargetNamespace to target when performing operations for the HelmRelease.
     * Defaults to the namespace of the HelmRelease.
     */
    "targetNamespace"?: string;
    /**
     * Test holds the configuration for Helm test actions for this HelmRelease.
     */
    "test"?: IComGithubFluxcdHelmControllerApiV2Test;
    "timeout"?: string;
    /**
     * Uninstall holds the configuration for Helm uninstall actions for this HelmRelease.
     */
    "uninstall"?: IComGithubFluxcdHelmControllerApiV2Uninstall;
    /**
     * Upgrade holds the configuration for Helm upgrade actions for this HelmRelease.
     */
    "upgrade"?: IComGithubFluxcdHelmControllerApiV2Upgrade;
    /**
     * Values holds the values for this Helm release.
     */
    "values"?: IIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON;
    /**
     * ValuesFrom holds references to resources containing Helm values for this HelmRelease,
     * and information about how they should be merged.
     */
    "valuesFrom"?: Array<IComGithubFluxcdPkgApisMetaValuesReference>;
    /**
     * WaitStrategy defines Helm's wait strategy for waiting for applied
     * resources to become ready.
     */
    "waitStrategy"?: IComGithubFluxcdHelmControllerApiV2WaitStrategy;
}
/**
 * HelmReleaseSpec defines the desired state of a Helm release.
 */
export declare class HelmReleaseSpec extends Model<IHelmReleaseSpec> implements IHelmReleaseSpec {
    "chart"?: IComGithubFluxcdHelmControllerApiV2HelmChartTemplate;
    "chartRef"?: IComGithubFluxcdHelmControllerApiV2CrossNamespaceSourceReference;
    "commonMetadata"?: IComGithubFluxcdHelmControllerApiV2CommonMetadata;
    "dependsOn"?: Array<IComGithubFluxcdHelmControllerApiV2DependencyReference>;
    "driftDetection"?: IComGithubFluxcdHelmControllerApiV2DriftDetection;
    "healthCheckExprs"?: Array<IComGithubFluxcdPkgApisKustomizeCustomHealthCheck>;
    "install"?: IComGithubFluxcdHelmControllerApiV2Install;
    "interval": string;
    "kubeConfig"?: IComGithubFluxcdPkgApisMetaKubeConfigReference;
    "maxHistory"?: number;
    "persistentClient"?: boolean;
    "postRenderers"?: Array<IComGithubFluxcdHelmControllerApiV2PostRenderer>;
    "releaseName"?: string;
    "rollback"?: IComGithubFluxcdHelmControllerApiV2Rollback;
    "serviceAccountName"?: string;
    "storageNamespace"?: string;
    "suspend"?: boolean;
    "targetNamespace"?: string;
    "test"?: IComGithubFluxcdHelmControllerApiV2Test;
    "timeout"?: string;
    "uninstall"?: IComGithubFluxcdHelmControllerApiV2Uninstall;
    "upgrade"?: IComGithubFluxcdHelmControllerApiV2Upgrade;
    "values"?: IIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON;
    "valuesFrom"?: Array<IComGithubFluxcdPkgApisMetaValuesReference>;
    "waitStrategy"?: IComGithubFluxcdHelmControllerApiV2WaitStrategy;
    constructor(data?: ModelData<IHelmReleaseSpec>);
}
export type { IHelmReleaseSpec as IComGithubFluxcdHelmControllerApiV2HelmReleaseSpec, HelmReleaseSpec as ComGithubFluxcdHelmControllerApiV2HelmReleaseSpec };
