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

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final ReadinessCheckArgs Empty = new ReadinessCheckArgs();

    /**
     * Unique name describing the readiness check.
     * 
     */
    @Import(name="readinessCheckName", required=true)
    private Output<String> readinessCheckName;

    /**
     * @return Unique name describing the readiness check.
     * 
     */
    public Output<String> readinessCheckName() {
        return this.readinessCheckName;
    }

    /**
     * Name describing the resource set that will be monitored for readiness.
     * 
     * The following arguments are optional:
     * 
     */
    @Import(name="resourceSetName", required=true)
    private Output<String> resourceSetName;

    /**
     * @return Name describing the resource set that will be monitored for readiness.
     * 
     * The following arguments are optional:
     * 
     */
    public Output<String> resourceSetName() {
        return this.resourceSetName;
    }

    /**
     * Key-value mapping 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 mapping 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);
    }

    private ReadinessCheckArgs() {}

    private ReadinessCheckArgs(ReadinessCheckArgs $) {
        this.readinessCheckName = $.readinessCheckName;
        this.resourceSetName = $.resourceSetName;
        this.tags = $.tags;
    }

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

    public static final class Builder {
        private ReadinessCheckArgs $;

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

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

        /**
         * @param readinessCheckName Unique name describing the readiness check.
         * 
         * @return builder
         * 
         */
        public Builder readinessCheckName(Output<String> readinessCheckName) {
            $.readinessCheckName = readinessCheckName;
            return this;
        }

        /**
         * @param readinessCheckName Unique name describing the readiness check.
         * 
         * @return builder
         * 
         */
        public Builder readinessCheckName(String readinessCheckName) {
            return readinessCheckName(Output.of(readinessCheckName));
        }

        /**
         * @param resourceSetName Name describing the resource set that will be monitored for readiness.
         * 
         * The following arguments are optional:
         * 
         * @return builder
         * 
         */
        public Builder resourceSetName(Output<String> resourceSetName) {
            $.resourceSetName = resourceSetName;
            return this;
        }

        /**
         * @param resourceSetName Name describing the resource set that will be monitored for readiness.
         * 
         * The following arguments are optional:
         * 
         * @return builder
         * 
         */
        public Builder resourceSetName(String resourceSetName) {
            return resourceSetName(Output.of(resourceSetName));
        }

        /**
         * @param tags Key-value mapping 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 mapping 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));
        }

        public ReadinessCheckArgs build() {
            $.readinessCheckName = Objects.requireNonNull($.readinessCheckName, "expected parameter 'readinessCheckName' to be non-null");
            $.resourceSetName = Objects.requireNonNull($.resourceSetName, "expected parameter 'resourceSetName' to be non-null");
            return $;
        }
    }

}
