/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface VertexAiFeatureOnlineStoreConfig extends cdktf.TerraformMetaArguments {
    /**
    * If set to true, any FeatureViews and Features for this FeatureOnlineStore will also be deleted.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#force_destroy VertexAiFeatureOnlineStore#force_destroy}
    */
    readonly forceDestroy?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#id VertexAiFeatureOnlineStore#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 labels with user-defined metadata to organize your feature online stores.
    *
    * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
    * Please refer to the field 'effective_labels' for all of the labels present on the resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#labels VertexAiFeatureOnlineStore#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * The resource name of the Feature Online Store. This value may be up to 60 characters, and valid characters are [a-z0-9_]. The first character cannot be a number.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#name VertexAiFeatureOnlineStore#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#project VertexAiFeatureOnlineStore#project}
    */
    readonly project?: string;
    /**
    * The region of feature online store. eg us-central1
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#region VertexAiFeatureOnlineStore#region}
    */
    readonly region?: string;
    /**
    * bigtable block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#bigtable VertexAiFeatureOnlineStore#bigtable}
    */
    readonly bigtable?: VertexAiFeatureOnlineStoreBigtable;
    /**
    * dedicated_serving_endpoint block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#dedicated_serving_endpoint VertexAiFeatureOnlineStore#dedicated_serving_endpoint}
    */
    readonly dedicatedServingEndpoint?: VertexAiFeatureOnlineStoreDedicatedServingEndpoint;
    /**
    * optimized block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#optimized VertexAiFeatureOnlineStore#optimized}
    */
    readonly optimized?: VertexAiFeatureOnlineStoreOptimized;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#timeouts VertexAiFeatureOnlineStore#timeouts}
    */
    readonly timeouts?: VertexAiFeatureOnlineStoreTimeouts;
}
export interface VertexAiFeatureOnlineStoreBigtableAutoScaling {
    /**
    * A percentage of the cluster's CPU capacity. Can be from 10% to 80%. When a cluster's CPU utilization exceeds the target that you have set, Bigtable immediately adds nodes to the cluster. When CPU utilization is substantially lower than the target, Bigtable removes nodes. If not set will default to 50%.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#cpu_utilization_target VertexAiFeatureOnlineStore#cpu_utilization_target}
    */
    readonly cpuUtilizationTarget?: number;
    /**
    * The maximum number of nodes to scale up to. Must be greater than or equal to minNodeCount, and less than or equal to 10 times of 'minNodeCount'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#max_node_count VertexAiFeatureOnlineStore#max_node_count}
    */
    readonly maxNodeCount: number;
    /**
    * The minimum number of nodes to scale down to. Must be greater than or equal to 1.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#min_node_count VertexAiFeatureOnlineStore#min_node_count}
    */
    readonly minNodeCount: number;
}
export declare function vertexAiFeatureOnlineStoreBigtableAutoScalingToTerraform(struct?: VertexAiFeatureOnlineStoreBigtableAutoScalingOutputReference | VertexAiFeatureOnlineStoreBigtableAutoScaling): any;
export declare function vertexAiFeatureOnlineStoreBigtableAutoScalingToHclTerraform(struct?: VertexAiFeatureOnlineStoreBigtableAutoScalingOutputReference | VertexAiFeatureOnlineStoreBigtableAutoScaling): any;
export declare class VertexAiFeatureOnlineStoreBigtableAutoScalingOutputReference 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(): VertexAiFeatureOnlineStoreBigtableAutoScaling | undefined;
    set internalValue(value: VertexAiFeatureOnlineStoreBigtableAutoScaling | undefined);
    private _cpuUtilizationTarget?;
    get cpuUtilizationTarget(): number;
    set cpuUtilizationTarget(value: number);
    resetCpuUtilizationTarget(): void;
    get cpuUtilizationTargetInput(): number | undefined;
    private _maxNodeCount?;
    get maxNodeCount(): number;
    set maxNodeCount(value: number);
    get maxNodeCountInput(): number | undefined;
    private _minNodeCount?;
    get minNodeCount(): number;
    set minNodeCount(value: number);
    get minNodeCountInput(): number | undefined;
}
export interface VertexAiFeatureOnlineStoreBigtable {
    /**
    * auto_scaling block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#auto_scaling VertexAiFeatureOnlineStore#auto_scaling}
    */
    readonly autoScaling: VertexAiFeatureOnlineStoreBigtableAutoScaling;
}
export declare function vertexAiFeatureOnlineStoreBigtableToTerraform(struct?: VertexAiFeatureOnlineStoreBigtableOutputReference | VertexAiFeatureOnlineStoreBigtable): any;
export declare function vertexAiFeatureOnlineStoreBigtableToHclTerraform(struct?: VertexAiFeatureOnlineStoreBigtableOutputReference | VertexAiFeatureOnlineStoreBigtable): any;
export declare class VertexAiFeatureOnlineStoreBigtableOutputReference 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(): VertexAiFeatureOnlineStoreBigtable | undefined;
    set internalValue(value: VertexAiFeatureOnlineStoreBigtable | undefined);
    private _autoScaling;
    get autoScaling(): VertexAiFeatureOnlineStoreBigtableAutoScalingOutputReference;
    putAutoScaling(value: VertexAiFeatureOnlineStoreBigtableAutoScaling): void;
    get autoScalingInput(): VertexAiFeatureOnlineStoreBigtableAutoScaling | undefined;
}
export interface VertexAiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfig {
    /**
    * If set to true, customers will use private service connection to send request. Otherwise, the connection will set to public endpoint.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#enable_private_service_connect VertexAiFeatureOnlineStore#enable_private_service_connect}
    */
    readonly enablePrivateServiceConnect: boolean | cdktf.IResolvable;
    /**
    * A list of Projects from which the forwarding rule will target the service attachment.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#project_allowlist VertexAiFeatureOnlineStore#project_allowlist}
    */
    readonly projectAllowlist?: string[];
}
export declare function vertexAiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigToTerraform(struct?: VertexAiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigOutputReference | VertexAiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfig): any;
export declare function vertexAiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigToHclTerraform(struct?: VertexAiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigOutputReference | VertexAiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfig): any;
export declare class VertexAiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigOutputReference 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(): VertexAiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfig | undefined;
    set internalValue(value: VertexAiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfig | undefined);
    private _enablePrivateServiceConnect?;
    get enablePrivateServiceConnect(): boolean | cdktf.IResolvable;
    set enablePrivateServiceConnect(value: boolean | cdktf.IResolvable);
    get enablePrivateServiceConnectInput(): boolean | cdktf.IResolvable | undefined;
    private _projectAllowlist?;
    get projectAllowlist(): string[];
    set projectAllowlist(value: string[]);
    resetProjectAllowlist(): void;
    get projectAllowlistInput(): string[] | undefined;
}
export interface VertexAiFeatureOnlineStoreDedicatedServingEndpoint {
    /**
    * private_service_connect_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#private_service_connect_config VertexAiFeatureOnlineStore#private_service_connect_config}
    */
    readonly privateServiceConnectConfig?: VertexAiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfig;
}
export declare function vertexAiFeatureOnlineStoreDedicatedServingEndpointToTerraform(struct?: VertexAiFeatureOnlineStoreDedicatedServingEndpointOutputReference | VertexAiFeatureOnlineStoreDedicatedServingEndpoint): any;
export declare function vertexAiFeatureOnlineStoreDedicatedServingEndpointToHclTerraform(struct?: VertexAiFeatureOnlineStoreDedicatedServingEndpointOutputReference | VertexAiFeatureOnlineStoreDedicatedServingEndpoint): any;
export declare class VertexAiFeatureOnlineStoreDedicatedServingEndpointOutputReference 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(): VertexAiFeatureOnlineStoreDedicatedServingEndpoint | undefined;
    set internalValue(value: VertexAiFeatureOnlineStoreDedicatedServingEndpoint | undefined);
    get publicEndpointDomainName(): string;
    get serviceAttachment(): string;
    private _privateServiceConnectConfig;
    get privateServiceConnectConfig(): VertexAiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigOutputReference;
    putPrivateServiceConnectConfig(value: VertexAiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfig): void;
    resetPrivateServiceConnectConfig(): void;
    get privateServiceConnectConfigInput(): VertexAiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfig | undefined;
}
export interface VertexAiFeatureOnlineStoreOptimized {
}
export declare function vertexAiFeatureOnlineStoreOptimizedToTerraform(struct?: VertexAiFeatureOnlineStoreOptimizedOutputReference | VertexAiFeatureOnlineStoreOptimized): any;
export declare function vertexAiFeatureOnlineStoreOptimizedToHclTerraform(struct?: VertexAiFeatureOnlineStoreOptimizedOutputReference | VertexAiFeatureOnlineStoreOptimized): any;
export declare class VertexAiFeatureOnlineStoreOptimizedOutputReference 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(): VertexAiFeatureOnlineStoreOptimized | undefined;
    set internalValue(value: VertexAiFeatureOnlineStoreOptimized | undefined);
}
export interface VertexAiFeatureOnlineStoreTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#create VertexAiFeatureOnlineStore#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#delete VertexAiFeatureOnlineStore#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#update VertexAiFeatureOnlineStore#update}
    */
    readonly update?: string;
}
export declare function vertexAiFeatureOnlineStoreTimeoutsToTerraform(struct?: VertexAiFeatureOnlineStoreTimeouts | cdktf.IResolvable): any;
export declare function vertexAiFeatureOnlineStoreTimeoutsToHclTerraform(struct?: VertexAiFeatureOnlineStoreTimeouts | cdktf.IResolvable): any;
export declare class VertexAiFeatureOnlineStoreTimeoutsOutputReference 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(): VertexAiFeatureOnlineStoreTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: VertexAiFeatureOnlineStoreTimeouts | 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;
    private _update?;
    get update(): string;
    set update(value: string);
    resetUpdate(): void;
    get updateInput(): string | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store google_vertex_ai_feature_online_store}
*/
export declare class VertexAiFeatureOnlineStore extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_vertex_ai_feature_online_store";
    /**
    * Generates CDKTF code for importing a VertexAiFeatureOnlineStore 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 VertexAiFeatureOnlineStore to import
    * @param importFromId The id of the existing VertexAiFeatureOnlineStore that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/vertex_ai_feature_online_store#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the VertexAiFeatureOnlineStore 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/5.43.0/docs/resources/vertex_ai_feature_online_store google_vertex_ai_feature_online_store} 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 VertexAiFeatureOnlineStoreConfig
    */
    constructor(scope: Construct, id: string, config: VertexAiFeatureOnlineStoreConfig);
    get createTime(): string;
    private _effectiveLabels;
    get effectiveLabels(): cdktf.StringMap;
    get etag(): string;
    private _forceDestroy?;
    get forceDestroy(): boolean | cdktf.IResolvable;
    set forceDestroy(value: boolean | cdktf.IResolvable);
    resetForceDestroy(): void;
    get forceDestroyInput(): boolean | cdktf.IResolvable | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _labels?;
    get labels(): {
        [key: string]: string;
    };
    set labels(value: {
        [key: string]: string;
    });
    resetLabels(): void;
    get labelsInput(): {
        [key: string]: 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;
    get state(): string;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    get updateTime(): string;
    private _bigtable;
    get bigtable(): VertexAiFeatureOnlineStoreBigtableOutputReference;
    putBigtable(value: VertexAiFeatureOnlineStoreBigtable): void;
    resetBigtable(): void;
    get bigtableInput(): VertexAiFeatureOnlineStoreBigtable | undefined;
    private _dedicatedServingEndpoint;
    get dedicatedServingEndpoint(): VertexAiFeatureOnlineStoreDedicatedServingEndpointOutputReference;
    putDedicatedServingEndpoint(value: VertexAiFeatureOnlineStoreDedicatedServingEndpoint): void;
    resetDedicatedServingEndpoint(): void;
    get dedicatedServingEndpointInput(): VertexAiFeatureOnlineStoreDedicatedServingEndpoint | undefined;
    private _optimized;
    get optimized(): VertexAiFeatureOnlineStoreOptimizedOutputReference;
    putOptimized(value: VertexAiFeatureOnlineStoreOptimized): void;
    resetOptimized(): void;
    get optimizedInput(): VertexAiFeatureOnlineStoreOptimized | undefined;
    private _timeouts;
    get timeouts(): VertexAiFeatureOnlineStoreTimeoutsOutputReference;
    putTimeouts(value: VertexAiFeatureOnlineStoreTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | VertexAiFeatureOnlineStoreTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
