import { IComGithubFluxcdHelmControllerApiV2CRDsPolicy } from "./CRDsPolicy.js";
import { IComGithubFluxcdHelmControllerApiV2UpgradeRemediation } from "./UpgradeRemediation.js";
import { IComGithubFluxcdHelmControllerApiV2ServerSideApplyMode } from "./ServerSideApplyMode.js";
import { IComGithubFluxcdHelmControllerApiV2UpgradeStrategy } from "./UpgradeStrategy.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * Upgrade holds the configuration for Helm upgrade actions for this
 * HelmRelease.
 */
export interface IUpgrade {
    /**
     * CleanupOnFail allows deletion of new resources created during the Helm
     * upgrade action when it fails.
     */
    "cleanupOnFail"?: boolean;
    /**
     * 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 `Skip` and if omitted
     * CRDs are neither installed nor upgraded.
     *
     * 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 not applied during Helm upgrade action. With this
     * option users can opt-in to CRD upgrade, which is not (yet) natively supported by Helm.
     * https://helm.sh/docs/chart_best_practices/custom_resource_definitions.
     */
    "crds"?: IComGithubFluxcdHelmControllerApiV2CRDsPolicy;
    /**
     * DisableHooks prevents hooks from running during the Helm upgrade action.
     */
    "disableHooks"?: boolean;
    /**
     * DisableOpenAPIValidation prevents the Helm upgrade action from validating
     * rendered templates against the Kubernetes OpenAPI Schema.
     */
    "disableOpenAPIValidation"?: boolean;
    /**
     * DisableSchemaValidation prevents the Helm upgrade action from validating
     * the values against the JSON Schema.
     */
    "disableSchemaValidation"?: boolean;
    /**
     * DisableTakeOwnership disables taking ownership of existing resources
     * during the Helm upgrade action. Defaults to false.
     */
    "disableTakeOwnership"?: boolean;
    /**
     * DisableWait disables the waiting for resources to be ready after a Helm
     * upgrade has been performed.
     */
    "disableWait"?: boolean;
    /**
     * DisableWaitForJobs disables waiting for jobs to complete after a Helm
     * upgrade has been performed.
     */
    "disableWaitForJobs"?: boolean;
    /**
     * Force forces resource updates through a replacement strategy
     * that avoids 3-way merge conflicts on client-side apply.
     * This field is ignored for server-side apply (which always
     * forces conflicts with other field managers).
     */
    "force"?: boolean;
    /**
     * PreserveValues will make Helm reuse the last release's values and merge in
     * overrides from 'Values'. Setting this flag makes the HelmRelease
     * non-declarative.
     */
    "preserveValues"?: boolean;
    /**
     * Remediation holds the remediation configuration for when the Helm upgrade
     * action for the HelmRelease fails. The default is to not perform any action.
     */
    "remediation"?: IComGithubFluxcdHelmControllerApiV2UpgradeRemediation;
    /**
     * ServerSideApply enables server-side apply for resources during upgrade.
     * Can be "enabled", "disabled", or "auto".
     * When "auto", server-side apply usage will be based on the release's previous usage.
     * Defaults to "auto".
     */
    "serverSideApply"?: IComGithubFluxcdHelmControllerApiV2ServerSideApplyMode;
    /**
     * Strategy defines the upgrade strategy to use for this HelmRelease.
     * Defaults to 'RemediateOnFailure', or 'RetryOnFailure' when the
     * DefaultToRetryOnFailure feature gate is enabled.
     */
    "strategy"?: IComGithubFluxcdHelmControllerApiV2UpgradeStrategy;
    "timeout"?: string;
}
/**
 * Upgrade holds the configuration for Helm upgrade actions for this
 * HelmRelease.
 */
export declare class Upgrade extends Model<IUpgrade> implements IUpgrade {
    "cleanupOnFail"?: boolean;
    "crds"?: IComGithubFluxcdHelmControllerApiV2CRDsPolicy;
    "disableHooks"?: boolean;
    "disableOpenAPIValidation"?: boolean;
    "disableSchemaValidation"?: boolean;
    "disableTakeOwnership"?: boolean;
    "disableWait"?: boolean;
    "disableWaitForJobs"?: boolean;
    "force"?: boolean;
    "preserveValues"?: boolean;
    "remediation"?: IComGithubFluxcdHelmControllerApiV2UpgradeRemediation;
    "serverSideApply"?: IComGithubFluxcdHelmControllerApiV2ServerSideApplyMode;
    "strategy"?: IComGithubFluxcdHelmControllerApiV2UpgradeStrategy;
    "timeout"?: string;
    constructor(data?: ModelData<IUpgrade>);
}
export type { IUpgrade as IComGithubFluxcdHelmControllerApiV2Upgrade, Upgrade as ComGithubFluxcdHelmControllerApiV2Upgrade };
