// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.gcp.compute.outputs;

import com.pulumi.core.annotations.CustomType;
import com.pulumi.gcp.compute.outputs.SecurityPolicyAdaptiveProtectionConfigAutoDeployConfig;
import com.pulumi.gcp.compute.outputs.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;

@CustomType
public final class SecurityPolicyAdaptiveProtectionConfig {
    /**
     * @return ) Configuration for [Automatically deploy Adaptive Protection suggested rules](https://cloud.google.com/armor/docs/adaptive-protection-auto-deploy?hl=en). Structure is documented below.
     * 
     * &lt;a name=&#34;nested_layer_7_ddos_defense_config&#34;&gt;&lt;/a&gt;The `layer_7_ddos_defense_config` block supports:
     * 
     */
    private @Nullable SecurityPolicyAdaptiveProtectionConfigAutoDeployConfig autoDeployConfig;
    /**
     * @return Configuration for [Google Cloud Armor Adaptive Protection Layer 7 DDoS Defense](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below.
     * 
     */
    private @Nullable SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig layer7DdosDefenseConfig;

    private SecurityPolicyAdaptiveProtectionConfig() {}
    /**
     * @return ) Configuration for [Automatically deploy Adaptive Protection suggested rules](https://cloud.google.com/armor/docs/adaptive-protection-auto-deploy?hl=en). Structure is documented below.
     * 
     * &lt;a name=&#34;nested_layer_7_ddos_defense_config&#34;&gt;&lt;/a&gt;The `layer_7_ddos_defense_config` block supports:
     * 
     */
    public Optional<SecurityPolicyAdaptiveProtectionConfigAutoDeployConfig> autoDeployConfig() {
        return Optional.ofNullable(this.autoDeployConfig);
    }
    /**
     * @return Configuration for [Google Cloud Armor Adaptive Protection Layer 7 DDoS Defense](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below.
     * 
     */
    public Optional<SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig> layer7DdosDefenseConfig() {
        return Optional.ofNullable(this.layer7DdosDefenseConfig);
    }

    public static Builder builder() {
        return new Builder();
    }

    public static Builder builder(SecurityPolicyAdaptiveProtectionConfig defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private @Nullable SecurityPolicyAdaptiveProtectionConfigAutoDeployConfig autoDeployConfig;
        private @Nullable SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig layer7DdosDefenseConfig;
        public Builder() {}
        public Builder(SecurityPolicyAdaptiveProtectionConfig defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.autoDeployConfig = defaults.autoDeployConfig;
    	      this.layer7DdosDefenseConfig = defaults.layer7DdosDefenseConfig;
        }

        @CustomType.Setter
        public Builder autoDeployConfig(@Nullable SecurityPolicyAdaptiveProtectionConfigAutoDeployConfig autoDeployConfig) {
            this.autoDeployConfig = autoDeployConfig;
            return this;
        }
        @CustomType.Setter
        public Builder layer7DdosDefenseConfig(@Nullable SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig layer7DdosDefenseConfig) {
            this.layer7DdosDefenseConfig = layer7DdosDefenseConfig;
            return this;
        }
        public SecurityPolicyAdaptiveProtectionConfig build() {
            final var o = new SecurityPolicyAdaptiveProtectionConfig();
            o.autoDeployConfig = autoDeployConfig;
            o.layer7DdosDefenseConfig = layer7DdosDefenseConfig;
            return o;
        }
    }
}
