/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface VertexAiDeploymentResourcePoolConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#id VertexAiDeploymentResourcePool#id}
    *
    * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
    * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
    */
    readonly id?: string;
    /**
    * The resource name of deployment resource pool. The maximum length is 63 characters, and valid characters are '/^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$/'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#name VertexAiDeploymentResourcePool#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#project VertexAiDeploymentResourcePool#project}
    */
    readonly project?: string;
    /**
    * The region of deployment resource pool. eg us-central1
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#region VertexAiDeploymentResourcePool#region}
    */
    readonly region?: string;
    /**
    * dedicated_resources block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#dedicated_resources VertexAiDeploymentResourcePool#dedicated_resources}
    */
    readonly dedicatedResources?: VertexAiDeploymentResourcePoolDedicatedResources;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#timeouts VertexAiDeploymentResourcePool#timeouts}
    */
    readonly timeouts?: VertexAiDeploymentResourcePoolTimeouts;
}
export interface VertexAiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecs {
    /**
    * The resource metric name. Supported metrics: For Online Prediction: * 'aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle' * 'aiplatform.googleapis.com/prediction/online/cpu/utilization'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#metric_name VertexAiDeploymentResourcePool#metric_name}
    */
    readonly metricName: string;
    /**
    * The target resource utilization in percentage (1% - 100%) for the given metric; once the real usage deviates from the target by a certain percentage, the machine replicas change. The default value is 60 (representing 60%) if not provided.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#target VertexAiDeploymentResourcePool#target}
    */
    readonly target?: number;
}
export declare function vertexAiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecsToTerraform(struct?: VertexAiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecs | cdktf.IResolvable): any;
export declare function vertexAiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecsToHclTerraform(struct?: VertexAiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecs | cdktf.IResolvable): any;
export declare class VertexAiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): VertexAiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecs | cdktf.IResolvable | undefined;
    set internalValue(value: VertexAiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecs | cdktf.IResolvable | undefined);
    private _metricName?;
    get metricName(): string;
    set metricName(value: string);
    get metricNameInput(): string | undefined;
    private _target?;
    get target(): number;
    set target(value: number);
    resetTarget(): void;
    get targetInput(): number | undefined;
}
export declare class VertexAiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: VertexAiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecs[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): VertexAiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecsOutputReference;
}
export interface VertexAiDeploymentResourcePoolDedicatedResourcesMachineSpec {
    /**
    * The number of accelerators to attach to the machine.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#accelerator_count VertexAiDeploymentResourcePool#accelerator_count}
    */
    readonly acceleratorCount?: number;
    /**
    * The type of accelerator(s) that may be attached to the machine as per accelerator_count. See possible values [here](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/MachineSpec#AcceleratorType).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#accelerator_type VertexAiDeploymentResourcePool#accelerator_type}
    */
    readonly acceleratorType?: string;
    /**
    * The type of the machine. See the [list of machine types supported for prediction](https://cloud.google.com/vertex-ai/docs/predictions/configure-compute#machine-types).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#machine_type VertexAiDeploymentResourcePool#machine_type}
    */
    readonly machineType?: string;
}
export declare function vertexAiDeploymentResourcePoolDedicatedResourcesMachineSpecToTerraform(struct?: VertexAiDeploymentResourcePoolDedicatedResourcesMachineSpecOutputReference | VertexAiDeploymentResourcePoolDedicatedResourcesMachineSpec): any;
export declare function vertexAiDeploymentResourcePoolDedicatedResourcesMachineSpecToHclTerraform(struct?: VertexAiDeploymentResourcePoolDedicatedResourcesMachineSpecOutputReference | VertexAiDeploymentResourcePoolDedicatedResourcesMachineSpec): any;
export declare class VertexAiDeploymentResourcePoolDedicatedResourcesMachineSpecOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VertexAiDeploymentResourcePoolDedicatedResourcesMachineSpec | undefined;
    set internalValue(value: VertexAiDeploymentResourcePoolDedicatedResourcesMachineSpec | undefined);
    private _acceleratorCount?;
    get acceleratorCount(): number;
    set acceleratorCount(value: number);
    resetAcceleratorCount(): void;
    get acceleratorCountInput(): number | undefined;
    private _acceleratorType?;
    get acceleratorType(): string;
    set acceleratorType(value: string);
    resetAcceleratorType(): void;
    get acceleratorTypeInput(): string | undefined;
    private _machineType?;
    get machineType(): string;
    set machineType(value: string);
    resetMachineType(): void;
    get machineTypeInput(): string | undefined;
}
export interface VertexAiDeploymentResourcePoolDedicatedResources {
    /**
    * The maximum number of replicas this DeployedModel may be deployed on when the traffic against it increases. If the requested value is too large, the deployment will error, but if deployment succeeds then the ability to scale the model to that many replicas is guaranteed (barring service outages). If traffic against the DeployedModel increases beyond what its replicas at maximum may handle, a portion of the traffic will be dropped. If this value is not provided, will use min_replica_count as the default value. The value of this field impacts the charge against Vertex CPU and GPU quotas. Specifically, you will be charged for max_replica_count * number of cores in the selected machine type) and (max_replica_count * number of GPUs per replica in the selected machine type).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#max_replica_count VertexAiDeploymentResourcePool#max_replica_count}
    */
    readonly maxReplicaCount?: number;
    /**
    * The minimum number of machine replicas this DeployedModel will be always deployed on. This value must be greater than or equal to 1. If traffic against the DeployedModel increases, it may dynamically be deployed onto more replicas, and as traffic decreases, some of these extra replicas may be freed.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#min_replica_count VertexAiDeploymentResourcePool#min_replica_count}
    */
    readonly minReplicaCount: number;
    /**
    * autoscaling_metric_specs block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#autoscaling_metric_specs VertexAiDeploymentResourcePool#autoscaling_metric_specs}
    */
    readonly autoscalingMetricSpecs?: VertexAiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecs[] | cdktf.IResolvable;
    /**
    * machine_spec block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#machine_spec VertexAiDeploymentResourcePool#machine_spec}
    */
    readonly machineSpec: VertexAiDeploymentResourcePoolDedicatedResourcesMachineSpec;
}
export declare function vertexAiDeploymentResourcePoolDedicatedResourcesToTerraform(struct?: VertexAiDeploymentResourcePoolDedicatedResourcesOutputReference | VertexAiDeploymentResourcePoolDedicatedResources): any;
export declare function vertexAiDeploymentResourcePoolDedicatedResourcesToHclTerraform(struct?: VertexAiDeploymentResourcePoolDedicatedResourcesOutputReference | VertexAiDeploymentResourcePoolDedicatedResources): any;
export declare class VertexAiDeploymentResourcePoolDedicatedResourcesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VertexAiDeploymentResourcePoolDedicatedResources | undefined;
    set internalValue(value: VertexAiDeploymentResourcePoolDedicatedResources | undefined);
    private _maxReplicaCount?;
    get maxReplicaCount(): number;
    set maxReplicaCount(value: number);
    resetMaxReplicaCount(): void;
    get maxReplicaCountInput(): number | undefined;
    private _minReplicaCount?;
    get minReplicaCount(): number;
    set minReplicaCount(value: number);
    get minReplicaCountInput(): number | undefined;
    private _autoscalingMetricSpecs;
    get autoscalingMetricSpecs(): VertexAiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecsList;
    putAutoscalingMetricSpecs(value: VertexAiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecs[] | cdktf.IResolvable): void;
    resetAutoscalingMetricSpecs(): void;
    get autoscalingMetricSpecsInput(): cdktf.IResolvable | VertexAiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecs[] | undefined;
    private _machineSpec;
    get machineSpec(): VertexAiDeploymentResourcePoolDedicatedResourcesMachineSpecOutputReference;
    putMachineSpec(value: VertexAiDeploymentResourcePoolDedicatedResourcesMachineSpec): void;
    get machineSpecInput(): VertexAiDeploymentResourcePoolDedicatedResourcesMachineSpec | undefined;
}
export interface VertexAiDeploymentResourcePoolTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#create VertexAiDeploymentResourcePool#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#delete VertexAiDeploymentResourcePool#delete}
    */
    readonly delete?: string;
}
export declare function vertexAiDeploymentResourcePoolTimeoutsToTerraform(struct?: VertexAiDeploymentResourcePoolTimeouts | cdktf.IResolvable): any;
export declare function vertexAiDeploymentResourcePoolTimeoutsToHclTerraform(struct?: VertexAiDeploymentResourcePoolTimeouts | cdktf.IResolvable): any;
export declare class VertexAiDeploymentResourcePoolTimeoutsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): VertexAiDeploymentResourcePoolTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: VertexAiDeploymentResourcePoolTimeouts | cdktf.IResolvable | undefined);
    private _create?;
    get create(): string;
    set create(value: string);
    resetCreate(): void;
    get createInput(): string | undefined;
    private _delete?;
    get delete(): string;
    set delete(value: string);
    resetDelete(): void;
    get deleteInput(): string | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool google_vertex_ai_deployment_resource_pool}
*/
export declare class VertexAiDeploymentResourcePool extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_vertex_ai_deployment_resource_pool";
    /**
    * Generates CDKTF code for importing a VertexAiDeploymentResourcePool resource upon running "cdktf plan <stack-name>"
    * @param scope The scope in which to define this construct
    * @param importToId The construct id used in the generated config for the VertexAiDeploymentResourcePool to import
    * @param importFromId The id of the existing VertexAiDeploymentResourcePool that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the VertexAiDeploymentResourcePool to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/hashicorp/google/6.7.0/docs/resources/vertex_ai_deployment_resource_pool google_vertex_ai_deployment_resource_pool} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options VertexAiDeploymentResourcePoolConfig
    */
    constructor(scope: Construct, id: string, config: VertexAiDeploymentResourcePoolConfig);
    get createTime(): string;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _region?;
    get region(): string;
    set region(value: string);
    resetRegion(): void;
    get regionInput(): string | undefined;
    private _dedicatedResources;
    get dedicatedResources(): VertexAiDeploymentResourcePoolDedicatedResourcesOutputReference;
    putDedicatedResources(value: VertexAiDeploymentResourcePoolDedicatedResources): void;
    resetDedicatedResources(): void;
    get dedicatedResourcesInput(): VertexAiDeploymentResourcePoolDedicatedResources | undefined;
    private _timeouts;
    get timeouts(): VertexAiDeploymentResourcePoolTimeoutsOutputReference;
    putTimeouts(value: VertexAiDeploymentResourcePoolTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | VertexAiDeploymentResourcePoolTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
