/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface NetworkConnectivityInternalRangeConfig extends cdktf.TerraformMetaArguments {
    /**
    * An optional description of this resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#description NetworkConnectivityInternalRange#description}
    */
    readonly description?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#id NetworkConnectivityInternalRange#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 IP range that this internal range defines.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#ip_cidr_range NetworkConnectivityInternalRange#ip_cidr_range}
    */
    readonly ipCidrRange?: string;
    /**
    * User-defined labels.
    *
    *
    * **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/6.13.0/docs/resources/network_connectivity_internal_range#labels NetworkConnectivityInternalRange#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * The name of the policy based route.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#name NetworkConnectivityInternalRange#name}
    */
    readonly name: string;
    /**
    * Fully-qualified URL of the network that this route applies to, for example: projects/my-project/global/networks/my-network.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#network NetworkConnectivityInternalRange#network}
    */
    readonly network: string;
    /**
    * Optional. Types of resources that are allowed to overlap with the current internal range. Possible values: ["OVERLAP_ROUTE_RANGE", "OVERLAP_EXISTING_SUBNET_RANGE"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#overlaps NetworkConnectivityInternalRange#overlaps}
    */
    readonly overlaps?: string[];
    /**
    * The type of peering set for this internal range. Possible values: ["FOR_SELF", "FOR_PEER", "NOT_SHARED"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#peering NetworkConnectivityInternalRange#peering}
    */
    readonly peering: string;
    /**
    * An alternate to ipCidrRange. Can be set when trying to create a reservation that automatically finds a free range of the given size.
    * If both ipCidrRange and prefixLength are set, there is an error if the range sizes do not match. Can also be used during updates to change the range size.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#prefix_length NetworkConnectivityInternalRange#prefix_length}
    */
    readonly prefixLength?: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#project NetworkConnectivityInternalRange#project}
    */
    readonly project?: string;
    /**
    * Optional. Can be set to narrow down or pick a different address space while searching for a free range.
    * If not set, defaults to the "10.0.0.0/8" address space. This can be used to search in other rfc-1918 address spaces like "172.16.0.0/12" and "192.168.0.0/16" or non-rfc-1918 address spaces used in the VPC.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#target_cidr_range NetworkConnectivityInternalRange#target_cidr_range}
    */
    readonly targetCidrRange?: string[];
    /**
    * The type of usage set for this InternalRange. Possible values: ["FOR_VPC", "EXTERNAL_TO_VPC", "FOR_MIGRATION"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#usage NetworkConnectivityInternalRange#usage}
    */
    readonly usage: string;
    /**
    * migration block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#migration NetworkConnectivityInternalRange#migration}
    */
    readonly migration?: NetworkConnectivityInternalRangeMigration;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#timeouts NetworkConnectivityInternalRange#timeouts}
    */
    readonly timeouts?: NetworkConnectivityInternalRangeTimeouts;
}
export interface NetworkConnectivityInternalRangeMigration {
    /**
    * Resource path as an URI of the source resource, for example a subnet.
    * The project for the source resource should match the project for the
    * InternalRange.
    * An example /projects/{project}/regions/{region}/subnetworks/{subnet}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#source NetworkConnectivityInternalRange#source}
    */
    readonly source: string;
    /**
    * Resource path of the target resource. The target project can be
    * different, as in the cases when migrating to peer networks. The resource
    * may not exist yet.
    * For example /projects/{project}/regions/{region}/subnetworks/{subnet}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#target NetworkConnectivityInternalRange#target}
    */
    readonly target: string;
}
export declare function networkConnectivityInternalRangeMigrationToTerraform(struct?: NetworkConnectivityInternalRangeMigrationOutputReference | NetworkConnectivityInternalRangeMigration): any;
export declare function networkConnectivityInternalRangeMigrationToHclTerraform(struct?: NetworkConnectivityInternalRangeMigrationOutputReference | NetworkConnectivityInternalRangeMigration): any;
export declare class NetworkConnectivityInternalRangeMigrationOutputReference 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(): NetworkConnectivityInternalRangeMigration | undefined;
    set internalValue(value: NetworkConnectivityInternalRangeMigration | undefined);
    private _source?;
    get source(): string;
    set source(value: string);
    get sourceInput(): string | undefined;
    private _target?;
    get target(): string;
    set target(value: string);
    get targetInput(): string | undefined;
}
export interface NetworkConnectivityInternalRangeTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#create NetworkConnectivityInternalRange#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#delete NetworkConnectivityInternalRange#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#update NetworkConnectivityInternalRange#update}
    */
    readonly update?: string;
}
export declare function networkConnectivityInternalRangeTimeoutsToTerraform(struct?: NetworkConnectivityInternalRangeTimeouts | cdktf.IResolvable): any;
export declare function networkConnectivityInternalRangeTimeoutsToHclTerraform(struct?: NetworkConnectivityInternalRangeTimeouts | cdktf.IResolvable): any;
export declare class NetworkConnectivityInternalRangeTimeoutsOutputReference 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(): NetworkConnectivityInternalRangeTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: NetworkConnectivityInternalRangeTimeouts | 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/6.13.0/docs/resources/network_connectivity_internal_range google_network_connectivity_internal_range}
*/
export declare class NetworkConnectivityInternalRange extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_network_connectivity_internal_range";
    /**
    * Generates CDKTF code for importing a NetworkConnectivityInternalRange 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 NetworkConnectivityInternalRange to import
    * @param importFromId The id of the existing NetworkConnectivityInternalRange that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/network_connectivity_internal_range#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the NetworkConnectivityInternalRange 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.13.0/docs/resources/network_connectivity_internal_range google_network_connectivity_internal_range} 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 NetworkConnectivityInternalRangeConfig
    */
    constructor(scope: Construct, id: string, config: NetworkConnectivityInternalRangeConfig);
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _effectiveLabels;
    get effectiveLabels(): cdktf.StringMap;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _ipCidrRange?;
    get ipCidrRange(): string;
    set ipCidrRange(value: string);
    resetIpCidrRange(): void;
    get ipCidrRangeInput(): 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 _network?;
    get network(): string;
    set network(value: string);
    get networkInput(): string | undefined;
    private _overlaps?;
    get overlaps(): string[];
    set overlaps(value: string[]);
    resetOverlaps(): void;
    get overlapsInput(): string[] | undefined;
    private _peering?;
    get peering(): string;
    set peering(value: string);
    get peeringInput(): string | undefined;
    private _prefixLength?;
    get prefixLength(): number;
    set prefixLength(value: number);
    resetPrefixLength(): void;
    get prefixLengthInput(): number | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _targetCidrRange?;
    get targetCidrRange(): string[];
    set targetCidrRange(value: string[]);
    resetTargetCidrRange(): void;
    get targetCidrRangeInput(): string[] | undefined;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    private _usage?;
    get usage(): string;
    set usage(value: string);
    get usageInput(): string | undefined;
    get users(): string[];
    private _migration;
    get migration(): NetworkConnectivityInternalRangeMigrationOutputReference;
    putMigration(value: NetworkConnectivityInternalRangeMigration): void;
    resetMigration(): void;
    get migrationInput(): NetworkConnectivityInternalRangeMigration | undefined;
    private _timeouts;
    get timeouts(): NetworkConnectivityInternalRangeTimeoutsOutputReference;
    putTimeouts(value: NetworkConnectivityInternalRangeTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | NetworkConnectivityInternalRangeTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
