import { IComGithubFluxcdKustomizeControllerApiV1CommonMetadata } from "./CommonMetadata.js";
import { IComGithubFluxcdKustomizeControllerApiV1Decryption } from "./Decryption.js";
import { IComGithubFluxcdKustomizeControllerApiV1DependencyReference } from "./DependencyReference.js";
import { IComGithubFluxcdPkgApisKustomizeCustomHealthCheck } from "../../github.com/fluxcd/pkg/apis/kustomize/CustomHealthCheck.js";
import { IComGithubFluxcdPkgApisMetaNamespacedObjectKindReference } from "../../github.com/fluxcd/pkg/apis/meta/NamespacedObjectKindReference.js";
import { IComGithubFluxcdPkgApisKustomizeImage } from "../../github.com/fluxcd/pkg/apis/kustomize/Image.js";
import { IComGithubFluxcdPkgApisMetaKubeConfigReference } from "../../github.com/fluxcd/pkg/apis/meta/KubeConfigReference.js";
import { IComGithubFluxcdPkgApisKustomizePatch } from "../../github.com/fluxcd/pkg/apis/kustomize/Patch.js";
import { IComGithubFluxcdKustomizeControllerApiV1PostBuild } from "./PostBuild.js";
import { IComGithubFluxcdKustomizeControllerApiV1CrossNamespaceSourceReference } from "./CrossNamespaceSourceReference.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * KustomizationSpec defines the configuration to calculate the desired state
 * from a Source using Kustomize.
 */
export interface IKustomizationSpec {
    /**
     * 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"?: IComGithubFluxcdKustomizeControllerApiV1CommonMetadata;
    /**
     * Components specifies relative paths to kustomize Components.
     */
    "components"?: Array<string>;
    /**
     * Decrypt Kubernetes secrets before applying them on the cluster.
     */
    "decryption"?: IComGithubFluxcdKustomizeControllerApiV1Decryption;
    /**
     * DeletionPolicy can be used to control garbage collection when this
     * Kustomization is deleted. Valid values are ('MirrorPrune', 'Delete',
     * 'WaitForTermination', 'Orphan'). 'MirrorPrune' mirrors the Prune field
     * (orphan if false, delete if true). Defaults to 'MirrorPrune'.
     */
    "deletionPolicy"?: "MirrorPrune" | "Delete" | "WaitForTermination" | "Orphan";
    /**
     * DependsOn may contain a DependencyReference slice
     * with references to Kustomization resources that must be ready before this
     * Kustomization can be reconciled.
     */
    "dependsOn"?: Array<IComGithubFluxcdKustomizeControllerApiV1DependencyReference>;
    /**
     * Force instructs the controller to recreate resources
     * when patching fails due to an immutable field change.
     */
    "force"?: boolean;
    /**
     * 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 Wait or HealthChecks are specified.
     */
    "healthCheckExprs"?: Array<IComGithubFluxcdPkgApisKustomizeCustomHealthCheck>;
    /**
     * A list of resources to be included in the health assessment.
     */
    "healthChecks"?: Array<IComGithubFluxcdPkgApisMetaNamespacedObjectKindReference>;
    /**
     * IgnoreMissingComponents instructs the controller to ignore Components paths
     * not found in source by removing them from the generated kustomization.yaml
     * before running kustomize build.
     */
    "ignoreMissingComponents"?: boolean;
    /**
     * Images is a list of (image name, new name, new tag or digest)
     * for changing image names, tags or digests. This can also be achieved with a
     * patch, but this operator is simpler to specify.
     */
    "images"?: Array<IComGithubFluxcdPkgApisKustomizeImage>;
    "interval": string;
    /**
     * The KubeConfig for reconciling the Kustomization on a remote cluster.
     * When used in combination with KustomizationSpec.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 KustomizationSpec.ServiceAccountName
     * is empty.
     */
    "kubeConfig"?: IComGithubFluxcdPkgApisMetaKubeConfigReference;
    /**
     * NamePrefix will prefix the names of all managed resources.
     */
    "namePrefix"?: string;
    /**
     * NameSuffix will suffix the names of all managed resources.
     */
    "nameSuffix"?: string;
    /**
     * Strategic merge and JSON patches, defined as inline YAML objects,
     * capable of targeting objects based on kind, label and annotation selectors.
     */
    "patches"?: Array<IComGithubFluxcdPkgApisKustomizePatch>;
    /**
     * Path to the directory containing the kustomization.yaml file, or the
     * set of plain YAMLs a kustomization.yaml should be generated for.
     * Defaults to 'None', which translates to the root path of the SourceRef.
     */
    "path"?: string;
    /**
     * PostBuild describes which actions to perform on the YAML manifest
     * generated by building the kustomize overlay.
     */
    "postBuild"?: IComGithubFluxcdKustomizeControllerApiV1PostBuild;
    /**
     * Prune enables garbage collection.
     */
    "prune": boolean;
    "retryInterval"?: string;
    /**
     * The name of the Kubernetes service account to impersonate
     * when reconciling this Kustomization.
     */
    "serviceAccountName"?: string;
    /**
     * Reference of the source where the kustomization file is.
     */
    "sourceRef": IComGithubFluxcdKustomizeControllerApiV1CrossNamespaceSourceReference;
    /**
     * This flag tells the controller to suspend subsequent kustomize executions,
     * it does not apply to already started executions. Defaults to false.
     */
    "suspend"?: boolean;
    /**
     * TargetNamespace sets or overrides the namespace in the
     * kustomization.yaml file.
     */
    "targetNamespace"?: string;
    "timeout"?: string;
    /**
     * Wait instructs the controller to check the health of all the reconciled
     * resources. When enabled, the HealthChecks are ignored. Defaults to false.
     */
    "wait"?: boolean;
}
/**
 * KustomizationSpec defines the configuration to calculate the desired state
 * from a Source using Kustomize.
 */
export declare class KustomizationSpec extends Model<IKustomizationSpec> implements IKustomizationSpec {
    "commonMetadata"?: IComGithubFluxcdKustomizeControllerApiV1CommonMetadata;
    "components"?: Array<string>;
    "decryption"?: IComGithubFluxcdKustomizeControllerApiV1Decryption;
    "deletionPolicy"?: "MirrorPrune" | "Delete" | "WaitForTermination" | "Orphan";
    "dependsOn"?: Array<IComGithubFluxcdKustomizeControllerApiV1DependencyReference>;
    "force"?: boolean;
    "healthCheckExprs"?: Array<IComGithubFluxcdPkgApisKustomizeCustomHealthCheck>;
    "healthChecks"?: Array<IComGithubFluxcdPkgApisMetaNamespacedObjectKindReference>;
    "ignoreMissingComponents"?: boolean;
    "images"?: Array<IComGithubFluxcdPkgApisKustomizeImage>;
    "interval": string;
    "kubeConfig"?: IComGithubFluxcdPkgApisMetaKubeConfigReference;
    "namePrefix"?: string;
    "nameSuffix"?: string;
    "patches"?: Array<IComGithubFluxcdPkgApisKustomizePatch>;
    "path"?: string;
    "postBuild"?: IComGithubFluxcdKustomizeControllerApiV1PostBuild;
    "prune": boolean;
    "retryInterval"?: string;
    "serviceAccountName"?: string;
    "sourceRef": IComGithubFluxcdKustomizeControllerApiV1CrossNamespaceSourceReference;
    "suspend"?: boolean;
    "targetNamespace"?: string;
    "timeout"?: string;
    "wait"?: boolean;
    constructor(data?: ModelData<IKustomizationSpec>);
}
export type { IKustomizationSpec as IComGithubFluxcdKustomizeControllerApiV1KustomizationSpec, KustomizationSpec as ComGithubFluxcdKustomizeControllerApiV1KustomizationSpec };
