import { IComGithubFluxcdHelmControllerApiV2CRDsPolicy } from "./CRDsPolicy.js";
import { IComGithubFluxcdHelmControllerApiV2InstallRemediation } from "./InstallRemediation.js";
import { IComGithubFluxcdHelmControllerApiV2InstallStrategy } from "./InstallStrategy.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * Install holds the configuration for Helm install actions performed for this
 * HelmRelease.
 */
export interface IInstall {
    /**
     * CRDs upgrade CRDs from the Helm Chart's crds directory according
     * to the CRD upgrade policy provided here. Valid values are `Skip`,
     * `Create` or `CreateReplace`. Default is `Create` and if omitted
     * CRDs are installed but not updated.
     *
     * Skip: do neither install nor replace (update) any CRDs.
     *
     * Create: new CRDs are created, existing CRDs are neither updated nor deleted.
     *
     * CreateReplace: new CRDs are created, existing CRDs are updated (replaced)
     * but not deleted.
     *
     * By default, CRDs are applied (installed) during Helm install action.
     * With this option users can opt in to CRD replace existing CRDs on Helm
     * install actions, which is not (yet) natively supported by Helm.
     * https://helm.sh/docs/chart_best_practices/custom_resource_definitions.
     */
    "crds"?: IComGithubFluxcdHelmControllerApiV2CRDsPolicy;
    /**
     * CreateNamespace tells the Helm install action to create the
     * HelmReleaseSpec.TargetNamespace if it does not exist yet.
     * On uninstall, the namespace will not be garbage collected.
     */
    "createNamespace"?: boolean;
    /**
     * DisableHooks prevents hooks from running during the Helm install action.
     */
    "disableHooks"?: boolean;
    /**
     * DisableOpenAPIValidation prevents the Helm install action from validating
     * rendered templates against the Kubernetes OpenAPI Schema.
     */
    "disableOpenAPIValidation"?: boolean;
    /**
     * DisableSchemaValidation prevents the Helm install action from validating
     * the values against the JSON Schema.
     */
    "disableSchemaValidation"?: boolean;
    /**
     * DisableTakeOwnership disables taking ownership of existing resources
     * during the Helm install action. Defaults to false.
     */
    "disableTakeOwnership"?: boolean;
    /**
     * DisableWait disables the waiting for resources to be ready after a Helm
     * install has been performed.
     */
    "disableWait"?: boolean;
    /**
     * DisableWaitForJobs disables waiting for jobs to complete after a Helm
     * install has been performed.
     */
    "disableWaitForJobs"?: boolean;
    /**
     * Remediation holds the remediation configuration for when the Helm install
     * action for the HelmRelease fails. The default is to not perform any action.
     */
    "remediation"?: IComGithubFluxcdHelmControllerApiV2InstallRemediation;
    /**
     * Replace tells the Helm install action to re-use the 'ReleaseName', but only
     * if that name is a deleted release which remains in the history.
     */
    "replace"?: boolean;
    /**
     * ServerSideApply enables server-side apply for resources during install.
     * Defaults to true (or false when UseHelm3Defaults feature gate is enabled).
     */
    "serverSideApply"?: boolean;
    /**
     * SkipCRDs tells the Helm install action to not install any CRDs. By default,
     * CRDs are installed if not already present.
     *
     * Deprecated use CRD policy (`crds`) attribute with value `Skip` instead.
     */
    "skipCRDs"?: boolean;
    /**
     * Strategy defines the install strategy to use for this HelmRelease.
     * Defaults to 'RemediateOnFailure', or 'RetryOnFailure' when the
     * DefaultToRetryOnFailure feature gate is enabled.
     */
    "strategy"?: IComGithubFluxcdHelmControllerApiV2InstallStrategy;
    "timeout"?: string;
}
/**
 * Install holds the configuration for Helm install actions performed for this
 * HelmRelease.
 */
export declare class Install extends Model<IInstall> implements IInstall {
    "crds"?: IComGithubFluxcdHelmControllerApiV2CRDsPolicy;
    "createNamespace"?: boolean;
    "disableHooks"?: boolean;
    "disableOpenAPIValidation"?: boolean;
    "disableSchemaValidation"?: boolean;
    "disableTakeOwnership"?: boolean;
    "disableWait"?: boolean;
    "disableWaitForJobs"?: boolean;
    "remediation"?: IComGithubFluxcdHelmControllerApiV2InstallRemediation;
    "replace"?: boolean;
    "serverSideApply"?: boolean;
    "skipCRDs"?: boolean;
    "strategy"?: IComGithubFluxcdHelmControllerApiV2InstallStrategy;
    "timeout"?: string;
    constructor(data?: ModelData<IInstall>);
}
export type { IInstall as IComGithubFluxcdHelmControllerApiV2Install, Install as ComGithubFluxcdHelmControllerApiV2Install };
