// *** 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.TopicRuleCloudwatchAlarmArgs;
import com.pulumi.aws.iot.inputs.TopicRuleCloudwatchLogArgs;
import com.pulumi.aws.iot.inputs.TopicRuleCloudwatchMetricArgs;
import com.pulumi.aws.iot.inputs.TopicRuleDynamodbArgs;
import com.pulumi.aws.iot.inputs.TopicRuleDynamodbv2Args;
import com.pulumi.aws.iot.inputs.TopicRuleElasticsearchArgs;
import com.pulumi.aws.iot.inputs.TopicRuleErrorActionArgs;
import com.pulumi.aws.iot.inputs.TopicRuleFirehoseArgs;
import com.pulumi.aws.iot.inputs.TopicRuleHttpArgs;
import com.pulumi.aws.iot.inputs.TopicRuleIotAnalyticArgs;
import com.pulumi.aws.iot.inputs.TopicRuleIotEventArgs;
import com.pulumi.aws.iot.inputs.TopicRuleKafkaArgs;
import com.pulumi.aws.iot.inputs.TopicRuleKinesisArgs;
import com.pulumi.aws.iot.inputs.TopicRuleLambdaArgs;
import com.pulumi.aws.iot.inputs.TopicRuleRepublishArgs;
import com.pulumi.aws.iot.inputs.TopicRuleS3Args;
import com.pulumi.aws.iot.inputs.TopicRuleSnsArgs;
import com.pulumi.aws.iot.inputs.TopicRuleSqsArgs;
import com.pulumi.aws.iot.inputs.TopicRuleStepFunctionArgs;
import com.pulumi.aws.iot.inputs.TopicRuleTimestreamArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Boolean;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final TopicRuleState Empty = new TopicRuleState();

    /**
     * The ARN of the topic rule
     * 
     */
    @Import(name="arn")
    private @Nullable Output<String> arn;

    /**
     * @return The ARN of the topic rule
     * 
     */
    public Optional<Output<String>> arn() {
        return Optional.ofNullable(this.arn);
    }

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

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

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

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

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

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

    /**
     * The description of the rule.
     * 
     */
    @Import(name="description")
    private @Nullable Output<String> description;

    /**
     * @return The description of the rule.
     * 
     */
    public Optional<Output<String>> description() {
        return Optional.ofNullable(this.description);
    }

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

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

    @Import(name="dynamodbv2s")
    private @Nullable Output<List<TopicRuleDynamodbv2Args>> dynamodbv2s;

    public Optional<Output<List<TopicRuleDynamodbv2Args>>> dynamodbv2s() {
        return Optional.ofNullable(this.dynamodbv2s);
    }

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

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

    /**
     * Specifies whether the rule is enabled.
     * 
     */
    @Import(name="enabled")
    private @Nullable Output<Boolean> enabled;

    /**
     * @return Specifies whether the rule is enabled.
     * 
     */
    public Optional<Output<Boolean>> enabled() {
        return Optional.ofNullable(this.enabled);
    }

    /**
     * Configuration block with error action to be associated with the rule. See the documentation for `cloudwatch_alarm`, `cloudwatch_logs`, `cloudwatch_metric`, `dynamodb`, `dynamodbv2`, `elasticsearch`, `firehose`, `http`, `iot_analytics`, `iot_events`, `kafka`, `kinesis`, `lambda`, `republish`, `s3`, `sns`, `sqs`, `step_functions`, `timestream` configuration blocks for further configuration details.
     * 
     */
    @Import(name="errorAction")
    private @Nullable Output<TopicRuleErrorActionArgs> errorAction;

    /**
     * @return Configuration block with error action to be associated with the rule. See the documentation for `cloudwatch_alarm`, `cloudwatch_logs`, `cloudwatch_metric`, `dynamodb`, `dynamodbv2`, `elasticsearch`, `firehose`, `http`, `iot_analytics`, `iot_events`, `kafka`, `kinesis`, `lambda`, `republish`, `s3`, `sns`, `sqs`, `step_functions`, `timestream` configuration blocks for further configuration details.
     * 
     */
    public Optional<Output<TopicRuleErrorActionArgs>> errorAction() {
        return Optional.ofNullable(this.errorAction);
    }

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

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

    @Import(name="https")
    private @Nullable Output<List<TopicRuleHttpArgs>> https;

    public Optional<Output<List<TopicRuleHttpArgs>>> https() {
        return Optional.ofNullable(this.https);
    }

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

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

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

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

    @Import(name="kafkas")
    private @Nullable Output<List<TopicRuleKafkaArgs>> kafkas;

    public Optional<Output<List<TopicRuleKafkaArgs>>> kafkas() {
        return Optional.ofNullable(this.kafkas);
    }

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

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

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

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

    /**
     * The name of the rule.
     * 
     */
    @Import(name="name")
    private @Nullable Output<String> name;

    /**
     * @return The name of the rule.
     * 
     */
    public Optional<Output<String>> name() {
        return Optional.ofNullable(this.name);
    }

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

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

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

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

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

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

    /**
     * The SQL statement used to query the topic. For more information, see AWS IoT SQL Reference (http://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html#aws-iot-sql-reference) in the AWS IoT Developer Guide.
     * 
     */
    @Import(name="sql")
    private @Nullable Output<String> sql;

    /**
     * @return The SQL statement used to query the topic. For more information, see AWS IoT SQL Reference (http://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html#aws-iot-sql-reference) in the AWS IoT Developer Guide.
     * 
     */
    public Optional<Output<String>> sql() {
        return Optional.ofNullable(this.sql);
    }

    /**
     * The version of the SQL rules engine to use when evaluating the rule.
     * 
     */
    @Import(name="sqlVersion")
    private @Nullable Output<String> sqlVersion;

    /**
     * @return The version of the SQL rules engine to use when evaluating the rule.
     * 
     */
    public Optional<Output<String>> sqlVersion() {
        return Optional.ofNullable(this.sqlVersion);
    }

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

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

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

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

    /**
     * Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     * 
     */
    @Import(name="tags")
    private @Nullable Output<Map<String,String>> tags;

    /**
     * @return Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     * 
     */
    public Optional<Output<Map<String,String>>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
     * 
     */
    @Import(name="tagsAll")
    private @Nullable Output<Map<String,String>> tagsAll;

    /**
     * @return A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
     * 
     */
    public Optional<Output<Map<String,String>>> tagsAll() {
        return Optional.ofNullable(this.tagsAll);
    }

    @Import(name="timestreams")
    private @Nullable Output<List<TopicRuleTimestreamArgs>> timestreams;

    public Optional<Output<List<TopicRuleTimestreamArgs>>> timestreams() {
        return Optional.ofNullable(this.timestreams);
    }

    private TopicRuleState() {}

    private TopicRuleState(TopicRuleState $) {
        this.arn = $.arn;
        this.cloudwatchAlarm = $.cloudwatchAlarm;
        this.cloudwatchLogs = $.cloudwatchLogs;
        this.cloudwatchMetric = $.cloudwatchMetric;
        this.description = $.description;
        this.dynamodb = $.dynamodb;
        this.dynamodbv2s = $.dynamodbv2s;
        this.elasticsearch = $.elasticsearch;
        this.enabled = $.enabled;
        this.errorAction = $.errorAction;
        this.firehose = $.firehose;
        this.https = $.https;
        this.iotAnalytics = $.iotAnalytics;
        this.iotEvents = $.iotEvents;
        this.kafkas = $.kafkas;
        this.kinesis = $.kinesis;
        this.lambda = $.lambda;
        this.name = $.name;
        this.republish = $.republish;
        this.s3 = $.s3;
        this.sns = $.sns;
        this.sql = $.sql;
        this.sqlVersion = $.sqlVersion;
        this.sqs = $.sqs;
        this.stepFunctions = $.stepFunctions;
        this.tags = $.tags;
        this.tagsAll = $.tagsAll;
        this.timestreams = $.timestreams;
    }

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

    public static final class Builder {
        private TopicRuleState $;

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

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

        /**
         * @param arn The ARN of the topic rule
         * 
         * @return builder
         * 
         */
        public Builder arn(@Nullable Output<String> arn) {
            $.arn = arn;
            return this;
        }

        /**
         * @param arn The ARN of the topic rule
         * 
         * @return builder
         * 
         */
        public Builder arn(String arn) {
            return arn(Output.of(arn));
        }

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

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

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

        public Builder cloudwatchLogs(List<TopicRuleCloudwatchLogArgs> cloudwatchLogs) {
            return cloudwatchLogs(Output.of(cloudwatchLogs));
        }

        public Builder cloudwatchLogs(TopicRuleCloudwatchLogArgs... cloudwatchLogs) {
            return cloudwatchLogs(List.of(cloudwatchLogs));
        }

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

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

        /**
         * @param description The description of the rule.
         * 
         * @return builder
         * 
         */
        public Builder description(@Nullable Output<String> description) {
            $.description = description;
            return this;
        }

        /**
         * @param description The description of the rule.
         * 
         * @return builder
         * 
         */
        public Builder description(String description) {
            return description(Output.of(description));
        }

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

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

        public Builder dynamodbv2s(@Nullable Output<List<TopicRuleDynamodbv2Args>> dynamodbv2s) {
            $.dynamodbv2s = dynamodbv2s;
            return this;
        }

        public Builder dynamodbv2s(List<TopicRuleDynamodbv2Args> dynamodbv2s) {
            return dynamodbv2s(Output.of(dynamodbv2s));
        }

        public Builder dynamodbv2s(TopicRuleDynamodbv2Args... dynamodbv2s) {
            return dynamodbv2s(List.of(dynamodbv2s));
        }

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

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

        /**
         * @param enabled Specifies whether the rule is enabled.
         * 
         * @return builder
         * 
         */
        public Builder enabled(@Nullable Output<Boolean> enabled) {
            $.enabled = enabled;
            return this;
        }

        /**
         * @param enabled Specifies whether the rule is enabled.
         * 
         * @return builder
         * 
         */
        public Builder enabled(Boolean enabled) {
            return enabled(Output.of(enabled));
        }

        /**
         * @param errorAction Configuration block with error action to be associated with the rule. See the documentation for `cloudwatch_alarm`, `cloudwatch_logs`, `cloudwatch_metric`, `dynamodb`, `dynamodbv2`, `elasticsearch`, `firehose`, `http`, `iot_analytics`, `iot_events`, `kafka`, `kinesis`, `lambda`, `republish`, `s3`, `sns`, `sqs`, `step_functions`, `timestream` configuration blocks for further configuration details.
         * 
         * @return builder
         * 
         */
        public Builder errorAction(@Nullable Output<TopicRuleErrorActionArgs> errorAction) {
            $.errorAction = errorAction;
            return this;
        }

        /**
         * @param errorAction Configuration block with error action to be associated with the rule. See the documentation for `cloudwatch_alarm`, `cloudwatch_logs`, `cloudwatch_metric`, `dynamodb`, `dynamodbv2`, `elasticsearch`, `firehose`, `http`, `iot_analytics`, `iot_events`, `kafka`, `kinesis`, `lambda`, `republish`, `s3`, `sns`, `sqs`, `step_functions`, `timestream` configuration blocks for further configuration details.
         * 
         * @return builder
         * 
         */
        public Builder errorAction(TopicRuleErrorActionArgs errorAction) {
            return errorAction(Output.of(errorAction));
        }

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

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

        public Builder https(@Nullable Output<List<TopicRuleHttpArgs>> https) {
            $.https = https;
            return this;
        }

        public Builder https(List<TopicRuleHttpArgs> https) {
            return https(Output.of(https));
        }

        public Builder https(TopicRuleHttpArgs... https) {
            return https(List.of(https));
        }

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

        public Builder iotAnalytics(List<TopicRuleIotAnalyticArgs> iotAnalytics) {
            return iotAnalytics(Output.of(iotAnalytics));
        }

        public Builder iotAnalytics(TopicRuleIotAnalyticArgs... iotAnalytics) {
            return iotAnalytics(List.of(iotAnalytics));
        }

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

        public Builder iotEvents(List<TopicRuleIotEventArgs> iotEvents) {
            return iotEvents(Output.of(iotEvents));
        }

        public Builder iotEvents(TopicRuleIotEventArgs... iotEvents) {
            return iotEvents(List.of(iotEvents));
        }

        public Builder kafkas(@Nullable Output<List<TopicRuleKafkaArgs>> kafkas) {
            $.kafkas = kafkas;
            return this;
        }

        public Builder kafkas(List<TopicRuleKafkaArgs> kafkas) {
            return kafkas(Output.of(kafkas));
        }

        public Builder kafkas(TopicRuleKafkaArgs... kafkas) {
            return kafkas(List.of(kafkas));
        }

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

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

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

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

        /**
         * @param name The name of the rule.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output<String> name) {
            $.name = name;
            return this;
        }

        /**
         * @param name The name of the rule.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

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

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

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

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

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

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

        /**
         * @param sql The SQL statement used to query the topic. For more information, see AWS IoT SQL Reference (http://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html#aws-iot-sql-reference) in the AWS IoT Developer Guide.
         * 
         * @return builder
         * 
         */
        public Builder sql(@Nullable Output<String> sql) {
            $.sql = sql;
            return this;
        }

        /**
         * @param sql The SQL statement used to query the topic. For more information, see AWS IoT SQL Reference (http://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html#aws-iot-sql-reference) in the AWS IoT Developer Guide.
         * 
         * @return builder
         * 
         */
        public Builder sql(String sql) {
            return sql(Output.of(sql));
        }

        /**
         * @param sqlVersion The version of the SQL rules engine to use when evaluating the rule.
         * 
         * @return builder
         * 
         */
        public Builder sqlVersion(@Nullable Output<String> sqlVersion) {
            $.sqlVersion = sqlVersion;
            return this;
        }

        /**
         * @param sqlVersion The version of the SQL rules engine to use when evaluating the rule.
         * 
         * @return builder
         * 
         */
        public Builder sqlVersion(String sqlVersion) {
            return sqlVersion(Output.of(sqlVersion));
        }

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

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

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

        public Builder stepFunctions(List<TopicRuleStepFunctionArgs> stepFunctions) {
            return stepFunctions(Output.of(stepFunctions));
        }

        public Builder stepFunctions(TopicRuleStepFunctionArgs... stepFunctions) {
            return stepFunctions(List.of(stepFunctions));
        }

        /**
         * @param tags Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output<Map<String,String>> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map<String,String> tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param tagsAll A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
         * 
         * @return builder
         * 
         */
        public Builder tagsAll(@Nullable Output<Map<String,String>> tagsAll) {
            $.tagsAll = tagsAll;
            return this;
        }

        /**
         * @param tagsAll A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
         * 
         * @return builder
         * 
         */
        public Builder tagsAll(Map<String,String> tagsAll) {
            return tagsAll(Output.of(tagsAll));
        }

        public Builder timestreams(@Nullable Output<List<TopicRuleTimestreamArgs>> timestreams) {
            $.timestreams = timestreams;
            return this;
        }

        public Builder timestreams(List<TopicRuleTimestreamArgs> timestreams) {
            return timestreams(Output.of(timestreams));
        }

        public Builder timestreams(TopicRuleTimestreamArgs... timestreams) {
            return timestreams(List.of(timestreams));
        }

        public TopicRuleState build() {
            return $;
        }
    }

}
