import { IIoK8sAutoscalerVerticalPodAutoscalerPkgApisAutoscalingK8sIoV1VerticalPodAutoscalerRecommenderSelector } from "./VerticalPodAutoscalerRecommenderSelector.js";
import { IIoK8sAutoscalerVerticalPodAutoscalerPkgApisAutoscalingK8sIoV1PodResourcePolicy } from "./PodResourcePolicy.js";
import { IIoK8sApiAutoscalingV1CrossVersionObjectReference } from "kubernetes-models/autoscaling/v1/CrossVersionObjectReference";
import { IIoK8sAutoscalerVerticalPodAutoscalerPkgApisAutoscalingK8sIoV1PodUpdatePolicy } from "./PodUpdatePolicy.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * VerticalPodAutoscalerSpec is the specification of the behavior of the autoscaler.
 */
export interface IVerticalPodAutoscalerSpec {
    /**
     * Recommender responsible for generating recommendation for this object.
     * List should be empty (then the default recommender will generate the
     * recommendation) or contain exactly one recommender.
     */
    "recommenders"?: Array<IIoK8sAutoscalerVerticalPodAutoscalerPkgApisAutoscalingK8sIoV1VerticalPodAutoscalerRecommenderSelector>;
    /**
     * Controls how the autoscaler computes recommended resources.
     * The resource policy may be used to set constraints on the recommendations
     * for individual containers.
     * If any individual containers need to be excluded from getting the VPA recommendations, then
     * it must be disabled explicitly by setting mode to "Off" under containerPolicies.
     * If not specified, the autoscaler computes recommended resources for all containers in the pod,
     * without additional constraints.
     */
    "resourcePolicy"?: IIoK8sAutoscalerVerticalPodAutoscalerPkgApisAutoscalingK8sIoV1PodResourcePolicy;
    /**
     * TargetRef points to the controller managing the set of pods for the
     * autoscaler to control - e.g. Deployment, StatefulSet. VerticalPodAutoscaler
     * can be targeted at controller implementing scale subresource (the pod set is
     * retrieved from the controller's ScaleStatus) or some well known controllers
     * (e.g. for DaemonSet the pod set is read from the controller's spec).
     * If VerticalPodAutoscaler cannot use specified target it will report
     * ConfigUnsupported condition.
     * Note that VerticalPodAutoscaler does not require full implementation
     * of scale subresource - it will not use it to modify the replica count.
     * The only thing retrieved is a label selector matching pods grouped by
     * the target resource.
     */
    "targetRef": IIoK8sApiAutoscalingV1CrossVersionObjectReference;
    /**
     * Describes the rules on how changes are applied to the pods.
     * If not specified, all fields in the `PodUpdatePolicy` are set to their
     * default values.
     */
    "updatePolicy"?: IIoK8sAutoscalerVerticalPodAutoscalerPkgApisAutoscalingK8sIoV1PodUpdatePolicy;
}
/**
 * VerticalPodAutoscalerSpec is the specification of the behavior of the autoscaler.
 */
export declare class VerticalPodAutoscalerSpec extends Model<IVerticalPodAutoscalerSpec> implements IVerticalPodAutoscalerSpec {
    "recommenders"?: Array<IIoK8sAutoscalerVerticalPodAutoscalerPkgApisAutoscalingK8sIoV1VerticalPodAutoscalerRecommenderSelector>;
    "resourcePolicy"?: IIoK8sAutoscalerVerticalPodAutoscalerPkgApisAutoscalingK8sIoV1PodResourcePolicy;
    "targetRef": IIoK8sApiAutoscalingV1CrossVersionObjectReference;
    "updatePolicy"?: IIoK8sAutoscalerVerticalPodAutoscalerPkgApisAutoscalingK8sIoV1PodUpdatePolicy;
    constructor(data?: ModelData<IVerticalPodAutoscalerSpec>);
}
export type { IVerticalPodAutoscalerSpec as IIoK8sAutoscalerVerticalPodAutoscalerPkgApisAutoscalingK8sIoV1VerticalPodAutoscalerSpec, VerticalPodAutoscalerSpec as IoK8sAutoscalerVerticalPodAutoscalerPkgApisAutoscalingK8sIoV1VerticalPodAutoscalerSpec };
