// *** 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.aws.wafv2.inputs;

import com.pulumi.aws.wafv2.inputs.WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseAllowArgs;
import com.pulumi.aws.wafv2.inputs.WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseBlockArgs;
import com.pulumi.aws.wafv2.inputs.WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseCaptchaArgs;
import com.pulumi.aws.wafv2.inputs.WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseCountArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseArgs extends com.pulumi.resources.ResourceArgs {

    public static final WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseArgs Empty = new WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseArgs();

    /**
     * Specifies that AWS WAF should allow requests by default. See `allow` below for details.
     * 
     */
    @Import(name="allow")
    private @Nullable Output<WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseAllowArgs> allow;

    /**
     * @return Specifies that AWS WAF should allow requests by default. See `allow` below for details.
     * 
     */
    public Optional<Output<WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseAllowArgs>> allow() {
        return Optional.ofNullable(this.allow);
    }

    /**
     * Specifies that AWS WAF should block requests by default. See `block` below for details.
     * 
     */
    @Import(name="block")
    private @Nullable Output<WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseBlockArgs> block;

    /**
     * @return Specifies that AWS WAF should block requests by default. See `block` below for details.
     * 
     */
    public Optional<Output<WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseBlockArgs>> block() {
        return Optional.ofNullable(this.block);
    }

    /**
     * Instructs AWS WAF to run a Captcha check against the web request. See `captcha` below for details.
     * 
     */
    @Import(name="captcha")
    private @Nullable Output<WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseCaptchaArgs> captcha;

    /**
     * @return Instructs AWS WAF to run a Captcha check against the web request. See `captcha` below for details.
     * 
     */
    public Optional<Output<WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseCaptchaArgs>> captcha() {
        return Optional.ofNullable(this.captcha);
    }

    /**
     * Instructs AWS WAF to count the web request and allow it. See `count` below for details.
     * 
     */
    @Import(name="count")
    private @Nullable Output<WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseCountArgs> count;

    /**
     * @return Instructs AWS WAF to count the web request and allow it. See `count` below for details.
     * 
     */
    public Optional<Output<WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseCountArgs>> count() {
        return Optional.ofNullable(this.count);
    }

    private WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseArgs() {}

    private WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseArgs(WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseArgs $) {
        this.allow = $.allow;
        this.block = $.block;
        this.captcha = $.captcha;
        this.count = $.count;
    }

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

    public static final class Builder {
        private WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseArgs $;

        public Builder() {
            $ = new WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseArgs();
        }

        public Builder(WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseArgs defaults) {
            $ = new WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param allow Specifies that AWS WAF should allow requests by default. See `allow` below for details.
         * 
         * @return builder
         * 
         */
        public Builder allow(@Nullable Output<WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseAllowArgs> allow) {
            $.allow = allow;
            return this;
        }

        /**
         * @param allow Specifies that AWS WAF should allow requests by default. See `allow` below for details.
         * 
         * @return builder
         * 
         */
        public Builder allow(WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseAllowArgs allow) {
            return allow(Output.of(allow));
        }

        /**
         * @param block Specifies that AWS WAF should block requests by default. See `block` below for details.
         * 
         * @return builder
         * 
         */
        public Builder block(@Nullable Output<WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseBlockArgs> block) {
            $.block = block;
            return this;
        }

        /**
         * @param block Specifies that AWS WAF should block requests by default. See `block` below for details.
         * 
         * @return builder
         * 
         */
        public Builder block(WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseBlockArgs block) {
            return block(Output.of(block));
        }

        /**
         * @param captcha Instructs AWS WAF to run a Captcha check against the web request. See `captcha` below for details.
         * 
         * @return builder
         * 
         */
        public Builder captcha(@Nullable Output<WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseCaptchaArgs> captcha) {
            $.captcha = captcha;
            return this;
        }

        /**
         * @param captcha Instructs AWS WAF to run a Captcha check against the web request. See `captcha` below for details.
         * 
         * @return builder
         * 
         */
        public Builder captcha(WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseCaptchaArgs captcha) {
            return captcha(Output.of(captcha));
        }

        /**
         * @param count Instructs AWS WAF to count the web request and allow it. See `count` below for details.
         * 
         * @return builder
         * 
         */
        public Builder count(@Nullable Output<WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseCountArgs> count) {
            $.count = count;
            return this;
        }

        /**
         * @param count Instructs AWS WAF to count the web request and allow it. See `count` below for details.
         * 
         * @return builder
         * 
         */
        public Builder count(WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseCountArgs count) {
            return count(Output.of(count));
        }

        public WebAclRuleStatementManagedRuleGroupStatementRuleActionOverrideActionToUseArgs build() {
            return $;
        }
    }

}
