/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface NetworkConnectivityHubConfig extends cdktf.TerraformMetaArguments {
    /**
    * An optional description of the hub.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/network_connectivity_hub#description NetworkConnectivityHub#description}
    */
    readonly description?: string;
    /**
    * Whether Private Service Connect transitivity is enabled for the hub. If true, Private Service Connect endpoints in VPC spokes attached to the hub are made accessible to other VPC spokes attached to the hub. The default value is false.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/network_connectivity_hub#export_psc NetworkConnectivityHub#export_psc}
    */
    readonly exportPsc?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/network_connectivity_hub#id NetworkConnectivityHub#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;
    /**
    * Optional labels in key:value format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements).
    *
    * **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/network_connectivity_hub#labels NetworkConnectivityHub#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * Immutable. The name of the hub. Hub names must be unique. They use the following form: 'projects/{project_number}/locations/global/hubs/{hub_id}'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/network_connectivity_hub#name NetworkConnectivityHub#name}
    */
    readonly name?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/network_connectivity_hub#project NetworkConnectivityHub#project}
    */
    readonly project?: string;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/network_connectivity_hub#timeouts NetworkConnectivityHub#timeouts}
    */
    readonly timeouts?: NetworkConnectivityHubTimeouts;
}
export interface NetworkConnectivityHubRoutingVpcs {
}
export declare function networkConnectivityHubRoutingVpcsToTerraform(struct?: NetworkConnectivityHubRoutingVpcs): any;
export declare function networkConnectivityHubRoutingVpcsToHclTerraform(struct?: NetworkConnectivityHubRoutingVpcs): any;
export declare class NetworkConnectivityHubRoutingVpcsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @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(): NetworkConnectivityHubRoutingVpcs | undefined;
    set internalValue(value: NetworkConnectivityHubRoutingVpcs | undefined);
    get uri(): string;
}
export declare class NetworkConnectivityHubRoutingVpcsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @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): NetworkConnectivityHubRoutingVpcsOutputReference;
}
export interface NetworkConnectivityHubTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/network_connectivity_hub#create NetworkConnectivityHub#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/network_connectivity_hub#delete NetworkConnectivityHub#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/network_connectivity_hub#update NetworkConnectivityHub#update}
    */
    readonly update?: string;
}
export declare function networkConnectivityHubTimeoutsToTerraform(struct?: NetworkConnectivityHubTimeouts | cdktf.IResolvable): any;
export declare function networkConnectivityHubTimeoutsToHclTerraform(struct?: NetworkConnectivityHubTimeouts | cdktf.IResolvable): any;
export declare class NetworkConnectivityHubTimeoutsOutputReference 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(): NetworkConnectivityHubTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: NetworkConnectivityHubTimeouts | 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/network_connectivity_hub google_network_connectivity_hub}
*/
export declare class NetworkConnectivityHub extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_network_connectivity_hub";
    /**
    * Generates CDKTF code for importing a NetworkConnectivityHub 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 NetworkConnectivityHub to import
    * @param importFromId The id of the existing NetworkConnectivityHub that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/network_connectivity_hub#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the NetworkConnectivityHub 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/network_connectivity_hub google_network_connectivity_hub} 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 NetworkConnectivityHubConfig = {}
    */
    constructor(scope: Construct, id: string, config?: NetworkConnectivityHubConfig);
    get createTime(): string;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _effectiveLabels;
    get effectiveLabels(): cdktf.StringMap;
    private _exportPsc?;
    get exportPsc(): boolean | cdktf.IResolvable;
    set exportPsc(value: boolean | cdktf.IResolvable);
    resetExportPsc(): void;
    get exportPscInput(): 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);
    resetName(): void;
    get nameInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _routingVpcs;
    get routingVpcs(): NetworkConnectivityHubRoutingVpcsList;
    get state(): string;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    get uniqueId(): string;
    get updateTime(): string;
    private _timeouts;
    get timeouts(): NetworkConnectivityHubTimeoutsOutputReference;
    putTimeouts(value: NetworkConnectivityHubTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | NetworkConnectivityHubTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
