/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface NetworkManagementVpcFlowLogsConfigConfig extends cdktf.TerraformMetaArguments {
    /**
    * Optional. The aggregation interval for the logs. Default value is
    * INTERVAL_5_SEC.   Possible values:  AGGREGATION_INTERVAL_UNSPECIFIED INTERVAL_5_SEC INTERVAL_30_SEC INTERVAL_1_MIN INTERVAL_5_MIN INTERVAL_10_MIN INTERVAL_15_MIN"
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#aggregation_interval NetworkManagementVpcFlowLogsConfig#aggregation_interval}
    */
    readonly aggregationInterval?: string;
    /**
    * Optional. The user-supplied description of the VPC Flow Logs configuration. Maximum
    * of 512 characters.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#description NetworkManagementVpcFlowLogsConfig#description}
    */
    readonly description?: string;
    /**
    * Optional. Export filter used to define which VPC Flow Logs should be logged.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#filter_expr NetworkManagementVpcFlowLogsConfig#filter_expr}
    */
    readonly filterExpr?: string;
    /**
    * Optional. The value of the field must be in (0, 1]. The sampling rate
    * of VPC Flow Logs where 1.0 means all collected logs are reported. Setting the
    * sampling rate to 0.0 is not allowed. If you want to disable VPC Flow Logs, use
    * the state field instead. Default value is 1.0.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#flow_sampling NetworkManagementVpcFlowLogsConfig#flow_sampling}
    */
    readonly flowSampling?: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#id NetworkManagementVpcFlowLogsConfig#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;
    /**
    * Traffic will be logged from the Interconnect Attachment. Format: projects/{project_id}/regions/{region}/interconnectAttachments/{name}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#interconnect_attachment NetworkManagementVpcFlowLogsConfig#interconnect_attachment}
    */
    readonly interconnectAttachment?: string;
    /**
    * Optional. Resource labels to represent user-provided metadata.
    *
    *
    * **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.36.0/docs/resources/network_management_vpc_flow_logs_config#labels NetworkManagementVpcFlowLogsConfig#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * Resource ID segment making up resource 'name'. It identifies the resource
    * within its parent collection as described in https://google.aip.dev/122. See documentation
    * for resource type 'networkmanagement.googleapis.com/VpcFlowLogsConfig'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#location NetworkManagementVpcFlowLogsConfig#location}
    */
    readonly location: string;
    /**
    * Optional. Configures whether all, none or a subset of metadata fields
    * should be added to the reported VPC flow logs. Default value is INCLUDE_ALL_METADATA.
    *   Possible values:  METADATA_UNSPECIFIED INCLUDE_ALL_METADATA EXCLUDE_ALL_METADATA CUSTOM_METADATA
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#metadata NetworkManagementVpcFlowLogsConfig#metadata}
    */
    readonly metadata?: string;
    /**
    * Optional. Custom metadata fields to include in the reported VPC flow
    * logs. Can only be specified if \"metadata\" was set to CUSTOM_METADATA.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#metadata_fields NetworkManagementVpcFlowLogsConfig#metadata_fields}
    */
    readonly metadataFields?: string[];
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#project NetworkManagementVpcFlowLogsConfig#project}
    */
    readonly project?: string;
    /**
    * Optional. The state of the VPC Flow Log configuration. Default value
    * is ENABLED. When creating a new configuration, it must be enabled.   Possible
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#state NetworkManagementVpcFlowLogsConfig#state}
    */
    readonly state?: string;
    /**
    * Required. ID of the 'VpcFlowLogsConfig'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#vpc_flow_logs_config_id NetworkManagementVpcFlowLogsConfig#vpc_flow_logs_config_id}
    */
    readonly vpcFlowLogsConfigId: string;
    /**
    * Traffic will be logged from the VPN Tunnel. Format: projects/{project_id}/regions/{region}/vpnTunnels/{name}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#vpn_tunnel NetworkManagementVpcFlowLogsConfig#vpn_tunnel}
    */
    readonly vpnTunnel?: string;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#timeouts NetworkManagementVpcFlowLogsConfig#timeouts}
    */
    readonly timeouts?: NetworkManagementVpcFlowLogsConfigTimeouts;
}
export interface NetworkManagementVpcFlowLogsConfigTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#create NetworkManagementVpcFlowLogsConfig#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#delete NetworkManagementVpcFlowLogsConfig#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#update NetworkManagementVpcFlowLogsConfig#update}
    */
    readonly update?: string;
}
export declare function networkManagementVpcFlowLogsConfigTimeoutsToTerraform(struct?: NetworkManagementVpcFlowLogsConfigTimeouts | cdktf.IResolvable): any;
export declare function networkManagementVpcFlowLogsConfigTimeoutsToHclTerraform(struct?: NetworkManagementVpcFlowLogsConfigTimeouts | cdktf.IResolvable): any;
export declare class NetworkManagementVpcFlowLogsConfigTimeoutsOutputReference 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(): NetworkManagementVpcFlowLogsConfigTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: NetworkManagementVpcFlowLogsConfigTimeouts | 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.36.0/docs/resources/network_management_vpc_flow_logs_config google_network_management_vpc_flow_logs_config}
*/
export declare class NetworkManagementVpcFlowLogsConfig extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_network_management_vpc_flow_logs_config";
    /**
    * Generates CDKTF code for importing a NetworkManagementVpcFlowLogsConfig 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 NetworkManagementVpcFlowLogsConfig to import
    * @param importFromId The id of the existing NetworkManagementVpcFlowLogsConfig that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/network_management_vpc_flow_logs_config#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the NetworkManagementVpcFlowLogsConfig 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.36.0/docs/resources/network_management_vpc_flow_logs_config google_network_management_vpc_flow_logs_config} 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 NetworkManagementVpcFlowLogsConfigConfig
    */
    constructor(scope: Construct, id: string, config: NetworkManagementVpcFlowLogsConfigConfig);
    private _aggregationInterval?;
    get aggregationInterval(): string;
    set aggregationInterval(value: string);
    resetAggregationInterval(): void;
    get aggregationIntervalInput(): string | undefined;
    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 _filterExpr?;
    get filterExpr(): string;
    set filterExpr(value: string);
    resetFilterExpr(): void;
    get filterExprInput(): string | undefined;
    private _flowSampling?;
    get flowSampling(): number;
    set flowSampling(value: number);
    resetFlowSampling(): void;
    get flowSamplingInput(): number | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _interconnectAttachment?;
    get interconnectAttachment(): string;
    set interconnectAttachment(value: string);
    resetInterconnectAttachment(): void;
    get interconnectAttachmentInput(): string | undefined;
    private _labels?;
    get labels(): {
        [key: string]: string;
    };
    set labels(value: {
        [key: string]: string;
    });
    resetLabels(): void;
    get labelsInput(): {
        [key: string]: string;
    } | undefined;
    private _location?;
    get location(): string;
    set location(value: string);
    get locationInput(): string | undefined;
    private _metadata?;
    get metadata(): string;
    set metadata(value: string);
    resetMetadata(): void;
    get metadataInput(): string | undefined;
    private _metadataFields?;
    get metadataFields(): string[];
    set metadataFields(value: string[]);
    resetMetadataFields(): void;
    get metadataFieldsInput(): string[] | undefined;
    get name(): string;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _state?;
    get state(): string;
    set state(value: string);
    resetState(): void;
    get stateInput(): string | undefined;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    get updateTime(): string;
    private _vpcFlowLogsConfigId?;
    get vpcFlowLogsConfigId(): string;
    set vpcFlowLogsConfigId(value: string);
    get vpcFlowLogsConfigIdInput(): string | undefined;
    private _vpnTunnel?;
    get vpnTunnel(): string;
    set vpnTunnel(value: string);
    resetVpnTunnel(): void;
    get vpnTunnelInput(): string | undefined;
    private _timeouts;
    get timeouts(): NetworkManagementVpcFlowLogsConfigTimeoutsOutputReference;
    putTimeouts(value: NetworkManagementVpcFlowLogsConfigTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | NetworkManagementVpcFlowLogsConfigTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
