/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface ComputeFirewallPolicyWithRulesConfig extends cdktf.TerraformMetaArguments {
    /**
    * An optional description of this resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#description ComputeFirewallPolicyWithRules#description}
    */
    readonly description?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#id ComputeFirewallPolicyWithRules#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 parent of this FirewallPolicy in the Cloud Resource Hierarchy.
    * Format: organizations/{organization_id} or folders/{folder_id}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#parent ComputeFirewallPolicyWithRules#parent}
    */
    readonly parent: string;
    /**
    * A textual name of the security policy.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#short_name ComputeFirewallPolicyWithRules#short_name}
    */
    readonly shortName: string;
    /**
    * rule block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#rule ComputeFirewallPolicyWithRules#rule}
    */
    readonly rule: ComputeFirewallPolicyWithRulesRule[] | cdktf.IResolvable;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#timeouts ComputeFirewallPolicyWithRules#timeouts}
    */
    readonly timeouts?: ComputeFirewallPolicyWithRulesTimeouts;
}
export interface ComputeFirewallPolicyWithRulesPredefinedRulesMatchLayer4Config {
}
export declare function computeFirewallPolicyWithRulesPredefinedRulesMatchLayer4ConfigToTerraform(struct?: ComputeFirewallPolicyWithRulesPredefinedRulesMatchLayer4Config): any;
export declare function computeFirewallPolicyWithRulesPredefinedRulesMatchLayer4ConfigToHclTerraform(struct?: ComputeFirewallPolicyWithRulesPredefinedRulesMatchLayer4Config): any;
export declare class ComputeFirewallPolicyWithRulesPredefinedRulesMatchLayer4ConfigOutputReference 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(): ComputeFirewallPolicyWithRulesPredefinedRulesMatchLayer4Config | undefined;
    set internalValue(value: ComputeFirewallPolicyWithRulesPredefinedRulesMatchLayer4Config | undefined);
    get ipProtocol(): string;
    get ports(): string[];
}
export declare class ComputeFirewallPolicyWithRulesPredefinedRulesMatchLayer4ConfigList 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): ComputeFirewallPolicyWithRulesPredefinedRulesMatchLayer4ConfigOutputReference;
}
export interface ComputeFirewallPolicyWithRulesPredefinedRulesMatch {
}
export declare function computeFirewallPolicyWithRulesPredefinedRulesMatchToTerraform(struct?: ComputeFirewallPolicyWithRulesPredefinedRulesMatch): any;
export declare function computeFirewallPolicyWithRulesPredefinedRulesMatchToHclTerraform(struct?: ComputeFirewallPolicyWithRulesPredefinedRulesMatch): any;
export declare class ComputeFirewallPolicyWithRulesPredefinedRulesMatchOutputReference 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(): ComputeFirewallPolicyWithRulesPredefinedRulesMatch | undefined;
    set internalValue(value: ComputeFirewallPolicyWithRulesPredefinedRulesMatch | undefined);
    get destAddressGroups(): string[];
    get destFqdns(): string[];
    get destIpRanges(): string[];
    get destRegionCodes(): string[];
    get destThreatIntelligences(): string[];
    private _layer4Config;
    get layer4Config(): ComputeFirewallPolicyWithRulesPredefinedRulesMatchLayer4ConfigList;
    get srcAddressGroups(): string[];
    get srcFqdns(): string[];
    get srcIpRanges(): string[];
    get srcRegionCodes(): string[];
    get srcThreatIntelligences(): string[];
}
export declare class ComputeFirewallPolicyWithRulesPredefinedRulesMatchList 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): ComputeFirewallPolicyWithRulesPredefinedRulesMatchOutputReference;
}
export interface ComputeFirewallPolicyWithRulesPredefinedRules {
}
export declare function computeFirewallPolicyWithRulesPredefinedRulesToTerraform(struct?: ComputeFirewallPolicyWithRulesPredefinedRules): any;
export declare function computeFirewallPolicyWithRulesPredefinedRulesToHclTerraform(struct?: ComputeFirewallPolicyWithRulesPredefinedRules): any;
export declare class ComputeFirewallPolicyWithRulesPredefinedRulesOutputReference 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(): ComputeFirewallPolicyWithRulesPredefinedRules | undefined;
    set internalValue(value: ComputeFirewallPolicyWithRulesPredefinedRules | undefined);
    get action(): string;
    get description(): string;
    get direction(): string;
    get disabled(): cdktf.IResolvable;
    get enableLogging(): cdktf.IResolvable;
    private _match;
    get match(): ComputeFirewallPolicyWithRulesPredefinedRulesMatchList;
    get priority(): number;
    get ruleName(): string;
    get securityProfileGroup(): string;
    get targetResources(): string[];
    get targetServiceAccounts(): string[];
    get tlsInspect(): cdktf.IResolvable;
}
export declare class ComputeFirewallPolicyWithRulesPredefinedRulesList 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): ComputeFirewallPolicyWithRulesPredefinedRulesOutputReference;
}
export interface ComputeFirewallPolicyWithRulesRuleMatchLayer4Config {
    /**
    * The IP protocol to which this rule applies. The protocol
    * type is required when creating a firewall rule.
    * This value can either be one of the following well
    * known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp),
    * or the IP protocol number.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#ip_protocol ComputeFirewallPolicyWithRules#ip_protocol}
    */
    readonly ipProtocol: string;
    /**
    * An optional list of ports to which this rule applies. This field
    * is only applicable for UDP or TCP protocol. Each entry must be
    * either an integer or a range. If not specified, this rule
    * applies to connections through any port.
    * Example inputs include: ["22"], ["80","443"], and
    * ["12345-12349"].
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#ports ComputeFirewallPolicyWithRules#ports}
    */
    readonly ports?: string[];
}
export declare function computeFirewallPolicyWithRulesRuleMatchLayer4ConfigToTerraform(struct?: ComputeFirewallPolicyWithRulesRuleMatchLayer4Config | cdktf.IResolvable): any;
export declare function computeFirewallPolicyWithRulesRuleMatchLayer4ConfigToHclTerraform(struct?: ComputeFirewallPolicyWithRulesRuleMatchLayer4Config | cdktf.IResolvable): any;
export declare class ComputeFirewallPolicyWithRulesRuleMatchLayer4ConfigOutputReference 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(): ComputeFirewallPolicyWithRulesRuleMatchLayer4Config | cdktf.IResolvable | undefined;
    set internalValue(value: ComputeFirewallPolicyWithRulesRuleMatchLayer4Config | cdktf.IResolvable | undefined);
    private _ipProtocol?;
    get ipProtocol(): string;
    set ipProtocol(value: string);
    get ipProtocolInput(): string | undefined;
    private _ports?;
    get ports(): string[];
    set ports(value: string[]);
    resetPorts(): void;
    get portsInput(): string[] | undefined;
}
export declare class ComputeFirewallPolicyWithRulesRuleMatchLayer4ConfigList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ComputeFirewallPolicyWithRulesRuleMatchLayer4Config[] | 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): ComputeFirewallPolicyWithRulesRuleMatchLayer4ConfigOutputReference;
}
export interface ComputeFirewallPolicyWithRulesRuleMatch {
    /**
    * Address groups which should be matched against the traffic destination.
    * Maximum number of destination address groups is 10.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#dest_address_groups ComputeFirewallPolicyWithRules#dest_address_groups}
    */
    readonly destAddressGroups?: string[];
    /**
    * Fully Qualified Domain Name (FQDN) which should be matched against
    * traffic destination. Maximum number of destination fqdn allowed is 100.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#dest_fqdns ComputeFirewallPolicyWithRules#dest_fqdns}
    */
    readonly destFqdns?: string[];
    /**
    * Destination IP address range in CIDR format. Required for
    * EGRESS rules.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#dest_ip_ranges ComputeFirewallPolicyWithRules#dest_ip_ranges}
    */
    readonly destIpRanges?: string[];
    /**
    * Region codes whose IP addresses will be used to match for destination
    * of traffic. Should be specified as 2 letter country code defined as per
    * ISO 3166 alpha-2 country codes. ex."US"
    * Maximum number of destination region codes allowed is 5000.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#dest_region_codes ComputeFirewallPolicyWithRules#dest_region_codes}
    */
    readonly destRegionCodes?: string[];
    /**
    * Names of Network Threat Intelligence lists.
    * The IPs in these lists will be matched against traffic destination.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#dest_threat_intelligences ComputeFirewallPolicyWithRules#dest_threat_intelligences}
    */
    readonly destThreatIntelligences?: string[];
    /**
    * Address groups which should be matched against the traffic source.
    * Maximum number of source address groups is 10.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#src_address_groups ComputeFirewallPolicyWithRules#src_address_groups}
    */
    readonly srcAddressGroups?: string[];
    /**
    * Fully Qualified Domain Name (FQDN) which should be matched against
    * traffic source. Maximum number of source fqdn allowed is 100.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#src_fqdns ComputeFirewallPolicyWithRules#src_fqdns}
    */
    readonly srcFqdns?: string[];
    /**
    * Source IP address range in CIDR format. Required for
    * INGRESS rules.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#src_ip_ranges ComputeFirewallPolicyWithRules#src_ip_ranges}
    */
    readonly srcIpRanges?: string[];
    /**
    * Region codes whose IP addresses will be used to match for source
    * of traffic. Should be specified as 2 letter country code defined as per
    * ISO 3166 alpha-2 country codes. ex."US"
    * Maximum number of source region codes allowed is 5000.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#src_region_codes ComputeFirewallPolicyWithRules#src_region_codes}
    */
    readonly srcRegionCodes?: string[];
    /**
    * Names of Network Threat Intelligence lists.
    * The IPs in these lists will be matched against traffic source.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#src_threat_intelligences ComputeFirewallPolicyWithRules#src_threat_intelligences}
    */
    readonly srcThreatIntelligences?: string[];
    /**
    * layer4_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#layer4_config ComputeFirewallPolicyWithRules#layer4_config}
    */
    readonly layer4Config: ComputeFirewallPolicyWithRulesRuleMatchLayer4Config[] | cdktf.IResolvable;
}
export declare function computeFirewallPolicyWithRulesRuleMatchToTerraform(struct?: ComputeFirewallPolicyWithRulesRuleMatchOutputReference | ComputeFirewallPolicyWithRulesRuleMatch): any;
export declare function computeFirewallPolicyWithRulesRuleMatchToHclTerraform(struct?: ComputeFirewallPolicyWithRulesRuleMatchOutputReference | ComputeFirewallPolicyWithRulesRuleMatch): any;
export declare class ComputeFirewallPolicyWithRulesRuleMatchOutputReference 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(): ComputeFirewallPolicyWithRulesRuleMatch | undefined;
    set internalValue(value: ComputeFirewallPolicyWithRulesRuleMatch | undefined);
    private _destAddressGroups?;
    get destAddressGroups(): string[];
    set destAddressGroups(value: string[]);
    resetDestAddressGroups(): void;
    get destAddressGroupsInput(): string[] | undefined;
    private _destFqdns?;
    get destFqdns(): string[];
    set destFqdns(value: string[]);
    resetDestFqdns(): void;
    get destFqdnsInput(): string[] | undefined;
    private _destIpRanges?;
    get destIpRanges(): string[];
    set destIpRanges(value: string[]);
    resetDestIpRanges(): void;
    get destIpRangesInput(): string[] | undefined;
    private _destRegionCodes?;
    get destRegionCodes(): string[];
    set destRegionCodes(value: string[]);
    resetDestRegionCodes(): void;
    get destRegionCodesInput(): string[] | undefined;
    private _destThreatIntelligences?;
    get destThreatIntelligences(): string[];
    set destThreatIntelligences(value: string[]);
    resetDestThreatIntelligences(): void;
    get destThreatIntelligencesInput(): string[] | undefined;
    private _srcAddressGroups?;
    get srcAddressGroups(): string[];
    set srcAddressGroups(value: string[]);
    resetSrcAddressGroups(): void;
    get srcAddressGroupsInput(): string[] | undefined;
    private _srcFqdns?;
    get srcFqdns(): string[];
    set srcFqdns(value: string[]);
    resetSrcFqdns(): void;
    get srcFqdnsInput(): string[] | undefined;
    private _srcIpRanges?;
    get srcIpRanges(): string[];
    set srcIpRanges(value: string[]);
    resetSrcIpRanges(): void;
    get srcIpRangesInput(): string[] | undefined;
    private _srcRegionCodes?;
    get srcRegionCodes(): string[];
    set srcRegionCodes(value: string[]);
    resetSrcRegionCodes(): void;
    get srcRegionCodesInput(): string[] | undefined;
    private _srcThreatIntelligences?;
    get srcThreatIntelligences(): string[];
    set srcThreatIntelligences(value: string[]);
    resetSrcThreatIntelligences(): void;
    get srcThreatIntelligencesInput(): string[] | undefined;
    private _layer4Config;
    get layer4Config(): ComputeFirewallPolicyWithRulesRuleMatchLayer4ConfigList;
    putLayer4Config(value: ComputeFirewallPolicyWithRulesRuleMatchLayer4Config[] | cdktf.IResolvable): void;
    get layer4ConfigInput(): cdktf.IResolvable | ComputeFirewallPolicyWithRulesRuleMatchLayer4Config[] | undefined;
}
export interface ComputeFirewallPolicyWithRulesRule {
    /**
    * The Action to perform when the client connection triggers the rule. Can currently be either
    * "allow", "deny", "apply_security_profile_group" or "goto_next".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#action ComputeFirewallPolicyWithRules#action}
    */
    readonly action: string;
    /**
    * A description of the rule.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#description ComputeFirewallPolicyWithRules#description}
    */
    readonly description?: string;
    /**
    * The direction in which this rule applies. If unspecified an INGRESS rule is created. Possible values: ["INGRESS", "EGRESS"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#direction ComputeFirewallPolicyWithRules#direction}
    */
    readonly direction?: string;
    /**
    * Denotes whether the firewall policy rule is disabled. When set to true,
    * the firewall policy rule is not enforced and traffic behaves as if it did
    * not exist. If this is unspecified, the firewall policy rule will be
    * enabled.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#disabled ComputeFirewallPolicyWithRules#disabled}
    */
    readonly disabled?: boolean | cdktf.IResolvable;
    /**
    * Denotes whether to enable logging for a particular rule.
    * If logging is enabled, logs will be exported to the
    * configured export destination in Stackdriver.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#enable_logging ComputeFirewallPolicyWithRules#enable_logging}
    */
    readonly enableLogging?: boolean | cdktf.IResolvable;
    /**
    * An integer indicating the priority of a rule in the list. The priority must be a value
    * between 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the
    * highest priority and 2147483647 is the lowest priority.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#priority ComputeFirewallPolicyWithRules#priority}
    */
    readonly priority: number;
    /**
    * An optional name for the rule. This field is not a unique identifier
    * and can be updated.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#rule_name ComputeFirewallPolicyWithRules#rule_name}
    */
    readonly ruleName?: string;
    /**
    * A fully-qualified URL of a SecurityProfile resource instance.
    * Example:
    * https://networksecurity.googleapis.com/v1/projects/{project}/locations/{location}/securityProfileGroups/my-security-profile-group
    * Must be specified if action is 'apply_security_profile_group'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#security_profile_group ComputeFirewallPolicyWithRules#security_profile_group}
    */
    readonly securityProfileGroup?: string;
    /**
    * A list of network resource URLs to which this rule applies.
    * This field allows you to control which network's VMs get
    * this rule. If this field is left blank, all VMs
    * within the organization will receive the rule.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#target_resources ComputeFirewallPolicyWithRules#target_resources}
    */
    readonly targetResources?: string[];
    /**
    * A list of service accounts indicating the sets of
    * instances that are applied with this rule.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#target_service_accounts ComputeFirewallPolicyWithRules#target_service_accounts}
    */
    readonly targetServiceAccounts?: string[];
    /**
    * Boolean flag indicating if the traffic should be TLS decrypted.
    * It can be set only if action = 'apply_security_profile_group' and cannot be set for other actions.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#tls_inspect ComputeFirewallPolicyWithRules#tls_inspect}
    */
    readonly tlsInspect?: boolean | cdktf.IResolvable;
    /**
    * match block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#match ComputeFirewallPolicyWithRules#match}
    */
    readonly match: ComputeFirewallPolicyWithRulesRuleMatch;
}
export declare function computeFirewallPolicyWithRulesRuleToTerraform(struct?: ComputeFirewallPolicyWithRulesRule | cdktf.IResolvable): any;
export declare function computeFirewallPolicyWithRulesRuleToHclTerraform(struct?: ComputeFirewallPolicyWithRulesRule | cdktf.IResolvable): any;
export declare class ComputeFirewallPolicyWithRulesRuleOutputReference 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(): ComputeFirewallPolicyWithRulesRule | cdktf.IResolvable | undefined;
    set internalValue(value: ComputeFirewallPolicyWithRulesRule | cdktf.IResolvable | undefined);
    private _action?;
    get action(): string;
    set action(value: string);
    get actionInput(): string | undefined;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _direction?;
    get direction(): string;
    set direction(value: string);
    resetDirection(): void;
    get directionInput(): string | undefined;
    private _disabled?;
    get disabled(): boolean | cdktf.IResolvable;
    set disabled(value: boolean | cdktf.IResolvable);
    resetDisabled(): void;
    get disabledInput(): boolean | cdktf.IResolvable | undefined;
    private _enableLogging?;
    get enableLogging(): boolean | cdktf.IResolvable;
    set enableLogging(value: boolean | cdktf.IResolvable);
    resetEnableLogging(): void;
    get enableLoggingInput(): boolean | cdktf.IResolvable | undefined;
    private _priority?;
    get priority(): number;
    set priority(value: number);
    get priorityInput(): number | undefined;
    private _ruleName?;
    get ruleName(): string;
    set ruleName(value: string);
    resetRuleName(): void;
    get ruleNameInput(): string | undefined;
    private _securityProfileGroup?;
    get securityProfileGroup(): string;
    set securityProfileGroup(value: string);
    resetSecurityProfileGroup(): void;
    get securityProfileGroupInput(): string | undefined;
    private _targetResources?;
    get targetResources(): string[];
    set targetResources(value: string[]);
    resetTargetResources(): void;
    get targetResourcesInput(): string[] | undefined;
    private _targetServiceAccounts?;
    get targetServiceAccounts(): string[];
    set targetServiceAccounts(value: string[]);
    resetTargetServiceAccounts(): void;
    get targetServiceAccountsInput(): string[] | undefined;
    private _tlsInspect?;
    get tlsInspect(): boolean | cdktf.IResolvable;
    set tlsInspect(value: boolean | cdktf.IResolvable);
    resetTlsInspect(): void;
    get tlsInspectInput(): boolean | cdktf.IResolvable | undefined;
    private _match;
    get match(): ComputeFirewallPolicyWithRulesRuleMatchOutputReference;
    putMatch(value: ComputeFirewallPolicyWithRulesRuleMatch): void;
    get matchInput(): ComputeFirewallPolicyWithRulesRuleMatch | undefined;
}
export declare class ComputeFirewallPolicyWithRulesRuleList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ComputeFirewallPolicyWithRulesRule[] | 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): ComputeFirewallPolicyWithRulesRuleOutputReference;
}
export interface ComputeFirewallPolicyWithRulesTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#create ComputeFirewallPolicyWithRules#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#delete ComputeFirewallPolicyWithRules#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#update ComputeFirewallPolicyWithRules#update}
    */
    readonly update?: string;
}
export declare function computeFirewallPolicyWithRulesTimeoutsToTerraform(struct?: ComputeFirewallPolicyWithRulesTimeouts | cdktf.IResolvable): any;
export declare function computeFirewallPolicyWithRulesTimeoutsToHclTerraform(struct?: ComputeFirewallPolicyWithRulesTimeouts | cdktf.IResolvable): any;
export declare class ComputeFirewallPolicyWithRulesTimeoutsOutputReference 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(): ComputeFirewallPolicyWithRulesTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: ComputeFirewallPolicyWithRulesTimeouts | 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.41.0/docs/resources/compute_firewall_policy_with_rules google_compute_firewall_policy_with_rules}
*/
export declare class ComputeFirewallPolicyWithRules extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_compute_firewall_policy_with_rules";
    /**
    * Generates CDKTF code for importing a ComputeFirewallPolicyWithRules 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 ComputeFirewallPolicyWithRules to import
    * @param importFromId The id of the existing ComputeFirewallPolicyWithRules that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/compute_firewall_policy_with_rules#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the ComputeFirewallPolicyWithRules 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.41.0/docs/resources/compute_firewall_policy_with_rules google_compute_firewall_policy_with_rules} 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 ComputeFirewallPolicyWithRulesConfig
    */
    constructor(scope: Construct, id: string, config: ComputeFirewallPolicyWithRulesConfig);
    get creationTimestamp(): string;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    get fingerprint(): string;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _parent?;
    get parent(): string;
    set parent(value: string);
    get parentInput(): string | undefined;
    get policyId(): string;
    private _predefinedRules;
    get predefinedRules(): ComputeFirewallPolicyWithRulesPredefinedRulesList;
    get ruleTupleCount(): number;
    get selfLink(): string;
    get selfLinkWithId(): string;
    private _shortName?;
    get shortName(): string;
    set shortName(value: string);
    get shortNameInput(): string | undefined;
    private _rule;
    get rule(): ComputeFirewallPolicyWithRulesRuleList;
    putRule(value: ComputeFirewallPolicyWithRulesRule[] | cdktf.IResolvable): void;
    get ruleInput(): cdktf.IResolvable | ComputeFirewallPolicyWithRulesRule[] | undefined;
    private _timeouts;
    get timeouts(): ComputeFirewallPolicyWithRulesTimeoutsOutputReference;
    putTimeouts(value: ComputeFirewallPolicyWithRulesTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | ComputeFirewallPolicyWithRulesTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
