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

import com.pulumi.aws.iot.inputs.TopicRuleErrorActionCloudwatchAlarmArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionCloudwatchLogsArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionCloudwatchMetricArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionDynamodbArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionDynamodbv2Args;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionElasticsearchArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionFirehoseArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionHttpArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionIotAnalyticsArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionIotEventsArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionKafkaArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionKinesisArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionLambdaArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionRepublishArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionS3Args;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionSnsArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionSqsArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionStepFunctionsArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionTimestreamArgs;
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 TopicRuleErrorActionArgs extends com.pulumi.resources.ResourceArgs {

    public static final TopicRuleErrorActionArgs Empty = new TopicRuleErrorActionArgs();

    @Import(name="cloudwatchAlarm")
    private @Nullable Output<TopicRuleErrorActionCloudwatchAlarmArgs> cloudwatchAlarm;

    public Optional<Output<TopicRuleErrorActionCloudwatchAlarmArgs>> cloudwatchAlarm() {
        return Optional.ofNullable(this.cloudwatchAlarm);
    }

    @Import(name="cloudwatchLogs")
    private @Nullable Output<TopicRuleErrorActionCloudwatchLogsArgs> cloudwatchLogs;

    public Optional<Output<TopicRuleErrorActionCloudwatchLogsArgs>> cloudwatchLogs() {
        return Optional.ofNullable(this.cloudwatchLogs);
    }

    @Import(name="cloudwatchMetric")
    private @Nullable Output<TopicRuleErrorActionCloudwatchMetricArgs> cloudwatchMetric;

    public Optional<Output<TopicRuleErrorActionCloudwatchMetricArgs>> cloudwatchMetric() {
        return Optional.ofNullable(this.cloudwatchMetric);
    }

    @Import(name="dynamodb")
    private @Nullable Output<TopicRuleErrorActionDynamodbArgs> dynamodb;

    public Optional<Output<TopicRuleErrorActionDynamodbArgs>> dynamodb() {
        return Optional.ofNullable(this.dynamodb);
    }

    @Import(name="dynamodbv2")
    private @Nullable Output<TopicRuleErrorActionDynamodbv2Args> dynamodbv2;

    public Optional<Output<TopicRuleErrorActionDynamodbv2Args>> dynamodbv2() {
        return Optional.ofNullable(this.dynamodbv2);
    }

    @Import(name="elasticsearch")
    private @Nullable Output<TopicRuleErrorActionElasticsearchArgs> elasticsearch;

    public Optional<Output<TopicRuleErrorActionElasticsearchArgs>> elasticsearch() {
        return Optional.ofNullable(this.elasticsearch);
    }

    @Import(name="firehose")
    private @Nullable Output<TopicRuleErrorActionFirehoseArgs> firehose;

    public Optional<Output<TopicRuleErrorActionFirehoseArgs>> firehose() {
        return Optional.ofNullable(this.firehose);
    }

    @Import(name="http")
    private @Nullable Output<TopicRuleErrorActionHttpArgs> http;

    public Optional<Output<TopicRuleErrorActionHttpArgs>> http() {
        return Optional.ofNullable(this.http);
    }

    @Import(name="iotAnalytics")
    private @Nullable Output<TopicRuleErrorActionIotAnalyticsArgs> iotAnalytics;

    public Optional<Output<TopicRuleErrorActionIotAnalyticsArgs>> iotAnalytics() {
        return Optional.ofNullable(this.iotAnalytics);
    }

    @Import(name="iotEvents")
    private @Nullable Output<TopicRuleErrorActionIotEventsArgs> iotEvents;

    public Optional<Output<TopicRuleErrorActionIotEventsArgs>> iotEvents() {
        return Optional.ofNullable(this.iotEvents);
    }

    @Import(name="kafka")
    private @Nullable Output<TopicRuleErrorActionKafkaArgs> kafka;

    public Optional<Output<TopicRuleErrorActionKafkaArgs>> kafka() {
        return Optional.ofNullable(this.kafka);
    }

    @Import(name="kinesis")
    private @Nullable Output<TopicRuleErrorActionKinesisArgs> kinesis;

    public Optional<Output<TopicRuleErrorActionKinesisArgs>> kinesis() {
        return Optional.ofNullable(this.kinesis);
    }

    @Import(name="lambda")
    private @Nullable Output<TopicRuleErrorActionLambdaArgs> lambda;

    public Optional<Output<TopicRuleErrorActionLambdaArgs>> lambda() {
        return Optional.ofNullable(this.lambda);
    }

    @Import(name="republish")
    private @Nullable Output<TopicRuleErrorActionRepublishArgs> republish;

    public Optional<Output<TopicRuleErrorActionRepublishArgs>> republish() {
        return Optional.ofNullable(this.republish);
    }

    @Import(name="s3")
    private @Nullable Output<TopicRuleErrorActionS3Args> s3;

    public Optional<Output<TopicRuleErrorActionS3Args>> s3() {
        return Optional.ofNullable(this.s3);
    }

    @Import(name="sns")
    private @Nullable Output<TopicRuleErrorActionSnsArgs> sns;

    public Optional<Output<TopicRuleErrorActionSnsArgs>> sns() {
        return Optional.ofNullable(this.sns);
    }

    @Import(name="sqs")
    private @Nullable Output<TopicRuleErrorActionSqsArgs> sqs;

    public Optional<Output<TopicRuleErrorActionSqsArgs>> sqs() {
        return Optional.ofNullable(this.sqs);
    }

    @Import(name="stepFunctions")
    private @Nullable Output<TopicRuleErrorActionStepFunctionsArgs> stepFunctions;

    public Optional<Output<TopicRuleErrorActionStepFunctionsArgs>> stepFunctions() {
        return Optional.ofNullable(this.stepFunctions);
    }

    @Import(name="timestream")
    private @Nullable Output<TopicRuleErrorActionTimestreamArgs> timestream;

    public Optional<Output<TopicRuleErrorActionTimestreamArgs>> timestream() {
        return Optional.ofNullable(this.timestream);
    }

    private TopicRuleErrorActionArgs() {}

    private TopicRuleErrorActionArgs(TopicRuleErrorActionArgs $) {
        this.cloudwatchAlarm = $.cloudwatchAlarm;
        this.cloudwatchLogs = $.cloudwatchLogs;
        this.cloudwatchMetric = $.cloudwatchMetric;
        this.dynamodb = $.dynamodb;
        this.dynamodbv2 = $.dynamodbv2;
        this.elasticsearch = $.elasticsearch;
        this.firehose = $.firehose;
        this.http = $.http;
        this.iotAnalytics = $.iotAnalytics;
        this.iotEvents = $.iotEvents;
        this.kafka = $.kafka;
        this.kinesis = $.kinesis;
        this.lambda = $.lambda;
        this.republish = $.republish;
        this.s3 = $.s3;
        this.sns = $.sns;
        this.sqs = $.sqs;
        this.stepFunctions = $.stepFunctions;
        this.timestream = $.timestream;
    }

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

    public static final class Builder {
        private TopicRuleErrorActionArgs $;

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

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

        public Builder cloudwatchAlarm(@Nullable Output<TopicRuleErrorActionCloudwatchAlarmArgs> cloudwatchAlarm) {
            $.cloudwatchAlarm = cloudwatchAlarm;
            return this;
        }

        public Builder cloudwatchAlarm(TopicRuleErrorActionCloudwatchAlarmArgs cloudwatchAlarm) {
            return cloudwatchAlarm(Output.of(cloudwatchAlarm));
        }

        public Builder cloudwatchLogs(@Nullable Output<TopicRuleErrorActionCloudwatchLogsArgs> cloudwatchLogs) {
            $.cloudwatchLogs = cloudwatchLogs;
            return this;
        }

        public Builder cloudwatchLogs(TopicRuleErrorActionCloudwatchLogsArgs cloudwatchLogs) {
            return cloudwatchLogs(Output.of(cloudwatchLogs));
        }

        public Builder cloudwatchMetric(@Nullable Output<TopicRuleErrorActionCloudwatchMetricArgs> cloudwatchMetric) {
            $.cloudwatchMetric = cloudwatchMetric;
            return this;
        }

        public Builder cloudwatchMetric(TopicRuleErrorActionCloudwatchMetricArgs cloudwatchMetric) {
            return cloudwatchMetric(Output.of(cloudwatchMetric));
        }

        public Builder dynamodb(@Nullable Output<TopicRuleErrorActionDynamodbArgs> dynamodb) {
            $.dynamodb = dynamodb;
            return this;
        }

        public Builder dynamodb(TopicRuleErrorActionDynamodbArgs dynamodb) {
            return dynamodb(Output.of(dynamodb));
        }

        public Builder dynamodbv2(@Nullable Output<TopicRuleErrorActionDynamodbv2Args> dynamodbv2) {
            $.dynamodbv2 = dynamodbv2;
            return this;
        }

        public Builder dynamodbv2(TopicRuleErrorActionDynamodbv2Args dynamodbv2) {
            return dynamodbv2(Output.of(dynamodbv2));
        }

        public Builder elasticsearch(@Nullable Output<TopicRuleErrorActionElasticsearchArgs> elasticsearch) {
            $.elasticsearch = elasticsearch;
            return this;
        }

        public Builder elasticsearch(TopicRuleErrorActionElasticsearchArgs elasticsearch) {
            return elasticsearch(Output.of(elasticsearch));
        }

        public Builder firehose(@Nullable Output<TopicRuleErrorActionFirehoseArgs> firehose) {
            $.firehose = firehose;
            return this;
        }

        public Builder firehose(TopicRuleErrorActionFirehoseArgs firehose) {
            return firehose(Output.of(firehose));
        }

        public Builder http(@Nullable Output<TopicRuleErrorActionHttpArgs> http) {
            $.http = http;
            return this;
        }

        public Builder http(TopicRuleErrorActionHttpArgs http) {
            return http(Output.of(http));
        }

        public Builder iotAnalytics(@Nullable Output<TopicRuleErrorActionIotAnalyticsArgs> iotAnalytics) {
            $.iotAnalytics = iotAnalytics;
            return this;
        }

        public Builder iotAnalytics(TopicRuleErrorActionIotAnalyticsArgs iotAnalytics) {
            return iotAnalytics(Output.of(iotAnalytics));
        }

        public Builder iotEvents(@Nullable Output<TopicRuleErrorActionIotEventsArgs> iotEvents) {
            $.iotEvents = iotEvents;
            return this;
        }

        public Builder iotEvents(TopicRuleErrorActionIotEventsArgs iotEvents) {
            return iotEvents(Output.of(iotEvents));
        }

        public Builder kafka(@Nullable Output<TopicRuleErrorActionKafkaArgs> kafka) {
            $.kafka = kafka;
            return this;
        }

        public Builder kafka(TopicRuleErrorActionKafkaArgs kafka) {
            return kafka(Output.of(kafka));
        }

        public Builder kinesis(@Nullable Output<TopicRuleErrorActionKinesisArgs> kinesis) {
            $.kinesis = kinesis;
            return this;
        }

        public Builder kinesis(TopicRuleErrorActionKinesisArgs kinesis) {
            return kinesis(Output.of(kinesis));
        }

        public Builder lambda(@Nullable Output<TopicRuleErrorActionLambdaArgs> lambda) {
            $.lambda = lambda;
            return this;
        }

        public Builder lambda(TopicRuleErrorActionLambdaArgs lambda) {
            return lambda(Output.of(lambda));
        }

        public Builder republish(@Nullable Output<TopicRuleErrorActionRepublishArgs> republish) {
            $.republish = republish;
            return this;
        }

        public Builder republish(TopicRuleErrorActionRepublishArgs republish) {
            return republish(Output.of(republish));
        }

        public Builder s3(@Nullable Output<TopicRuleErrorActionS3Args> s3) {
            $.s3 = s3;
            return this;
        }

        public Builder s3(TopicRuleErrorActionS3Args s3) {
            return s3(Output.of(s3));
        }

        public Builder sns(@Nullable Output<TopicRuleErrorActionSnsArgs> sns) {
            $.sns = sns;
            return this;
        }

        public Builder sns(TopicRuleErrorActionSnsArgs sns) {
            return sns(Output.of(sns));
        }

        public Builder sqs(@Nullable Output<TopicRuleErrorActionSqsArgs> sqs) {
            $.sqs = sqs;
            return this;
        }

        public Builder sqs(TopicRuleErrorActionSqsArgs sqs) {
            return sqs(Output.of(sqs));
        }

        public Builder stepFunctions(@Nullable Output<TopicRuleErrorActionStepFunctionsArgs> stepFunctions) {
            $.stepFunctions = stepFunctions;
            return this;
        }

        public Builder stepFunctions(TopicRuleErrorActionStepFunctionsArgs stepFunctions) {
            return stepFunctions(Output.of(stepFunctions));
        }

        public Builder timestream(@Nullable Output<TopicRuleErrorActionTimestreamArgs> timestream) {
            $.timestream = timestream;
            return this;
        }

        public Builder timestream(TopicRuleErrorActionTimestreamArgs timestream) {
            return timestream(Output.of(timestream));
        }

        public TopicRuleErrorActionArgs build() {
            return $;
        }
    }

}
