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

import com.pulumi.aws.glue.inputs.MLTransformInputRecordTableArgs;
import com.pulumi.aws.glue.inputs.MLTransformParametersArgs;
import com.pulumi.aws.glue.inputs.MLTransformSchemaArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Double;
import java.lang.Integer;
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 MLTransformState extends com.pulumi.resources.ResourceArgs {

    public static final MLTransformState Empty = new MLTransformState();

    /**
     * Amazon Resource Name (ARN) of Glue ML Transform.
     * 
     */
    @Import(name="arn")
    private @Nullable Output<String> arn;

    /**
     * @return Amazon Resource Name (ARN) of Glue ML Transform.
     * 
     */
    public Optional<Output<String>> arn() {
        return Optional.ofNullable(this.arn);
    }

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

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

    /**
     * The version of glue to use, for example &#34;1.0&#34;. For information about available versions, see the [AWS Glue Release Notes](https://docs.aws.amazon.com/glue/latest/dg/release-notes.html).
     * 
     */
    @Import(name="glueVersion")
    private @Nullable Output<String> glueVersion;

    /**
     * @return The version of glue to use, for example &#34;1.0&#34;. For information about available versions, see the [AWS Glue Release Notes](https://docs.aws.amazon.com/glue/latest/dg/release-notes.html).
     * 
     */
    public Optional<Output<String>> glueVersion() {
        return Optional.ofNullable(this.glueVersion);
    }

    /**
     * A list of AWS Glue table definitions used by the transform. see Input Record Tables.
     * 
     */
    @Import(name="inputRecordTables")
    private @Nullable Output<List<MLTransformInputRecordTableArgs>> inputRecordTables;

    /**
     * @return A list of AWS Glue table definitions used by the transform. see Input Record Tables.
     * 
     */
    public Optional<Output<List<MLTransformInputRecordTableArgs>>> inputRecordTables() {
        return Optional.ofNullable(this.inputRecordTables);
    }

    /**
     * The number of labels available for this transform.
     * 
     */
    @Import(name="labelCount")
    private @Nullable Output<Integer> labelCount;

    /**
     * @return The number of labels available for this transform.
     * 
     */
    public Optional<Output<Integer>> labelCount() {
        return Optional.ofNullable(this.labelCount);
    }

    /**
     * The number of AWS Glue data processing units (DPUs) that are allocated to task runs for this transform. You can allocate from `2` to `100` DPUs; the default is `10`. `max_capacity` is a mutually exclusive option with `number_of_workers` and `worker_type`.
     * 
     */
    @Import(name="maxCapacity")
    private @Nullable Output<Double> maxCapacity;

    /**
     * @return The number of AWS Glue data processing units (DPUs) that are allocated to task runs for this transform. You can allocate from `2` to `100` DPUs; the default is `10`. `max_capacity` is a mutually exclusive option with `number_of_workers` and `worker_type`.
     * 
     */
    public Optional<Output<Double>> maxCapacity() {
        return Optional.ofNullable(this.maxCapacity);
    }

    /**
     * The maximum number of times to retry this ML Transform if it fails.
     * 
     */
    @Import(name="maxRetries")
    private @Nullable Output<Integer> maxRetries;

    /**
     * @return The maximum number of times to retry this ML Transform if it fails.
     * 
     */
    public Optional<Output<Integer>> maxRetries() {
        return Optional.ofNullable(this.maxRetries);
    }

    /**
     * The name you assign to this ML Transform. It must be unique in your account.
     * 
     */
    @Import(name="name")
    private @Nullable Output<String> name;

    /**
     * @return The name you assign to this ML Transform. It must be unique in your account.
     * 
     */
    public Optional<Output<String>> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * The number of workers of a defined `worker_type` that are allocated when an ML Transform runs. Required with `worker_type`.
     * 
     */
    @Import(name="numberOfWorkers")
    private @Nullable Output<Integer> numberOfWorkers;

    /**
     * @return The number of workers of a defined `worker_type` that are allocated when an ML Transform runs. Required with `worker_type`.
     * 
     */
    public Optional<Output<Integer>> numberOfWorkers() {
        return Optional.ofNullable(this.numberOfWorkers);
    }

    /**
     * The algorithmic parameters that are specific to the transform type used. Conditionally dependent on the transform type. see Parameters.
     * 
     */
    @Import(name="parameters")
    private @Nullable Output<MLTransformParametersArgs> parameters;

    /**
     * @return The algorithmic parameters that are specific to the transform type used. Conditionally dependent on the transform type. see Parameters.
     * 
     */
    public Optional<Output<MLTransformParametersArgs>> parameters() {
        return Optional.ofNullable(this.parameters);
    }

    /**
     * The ARN of the IAM role associated with this ML Transform.
     * 
     */
    @Import(name="roleArn")
    private @Nullable Output<String> roleArn;

    /**
     * @return The ARN of the IAM role associated with this ML Transform.
     * 
     */
    public Optional<Output<String>> roleArn() {
        return Optional.ofNullable(this.roleArn);
    }

    /**
     * The object that represents the schema that this transform accepts. see Schema.
     * 
     */
    @Import(name="schemas")
    private @Nullable Output<List<MLTransformSchemaArgs>> schemas;

    /**
     * @return The object that represents the schema that this transform accepts. see Schema.
     * 
     */
    public Optional<Output<List<MLTransformSchemaArgs>>> schemas() {
        return Optional.ofNullable(this.schemas);
    }

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

    /**
     * The ML Transform timeout in minutes. The default is 2880 minutes (48 hours).
     * 
     */
    @Import(name="timeout")
    private @Nullable Output<Integer> timeout;

    /**
     * @return The ML Transform timeout in minutes. The default is 2880 minutes (48 hours).
     * 
     */
    public Optional<Output<Integer>> timeout() {
        return Optional.ofNullable(this.timeout);
    }

    /**
     * The type of predefined worker that is allocated when an ML Transform runs. Accepts a value of `Standard`, `G.1X`, or `G.2X`. Required with `number_of_workers`.
     * 
     */
    @Import(name="workerType")
    private @Nullable Output<String> workerType;

    /**
     * @return The type of predefined worker that is allocated when an ML Transform runs. Accepts a value of `Standard`, `G.1X`, or `G.2X`. Required with `number_of_workers`.
     * 
     */
    public Optional<Output<String>> workerType() {
        return Optional.ofNullable(this.workerType);
    }

    private MLTransformState() {}

    private MLTransformState(MLTransformState $) {
        this.arn = $.arn;
        this.description = $.description;
        this.glueVersion = $.glueVersion;
        this.inputRecordTables = $.inputRecordTables;
        this.labelCount = $.labelCount;
        this.maxCapacity = $.maxCapacity;
        this.maxRetries = $.maxRetries;
        this.name = $.name;
        this.numberOfWorkers = $.numberOfWorkers;
        this.parameters = $.parameters;
        this.roleArn = $.roleArn;
        this.schemas = $.schemas;
        this.tags = $.tags;
        this.tagsAll = $.tagsAll;
        this.timeout = $.timeout;
        this.workerType = $.workerType;
    }

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

    public static final class Builder {
        private MLTransformState $;

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

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

        /**
         * @param arn Amazon Resource Name (ARN) of Glue ML Transform.
         * 
         * @return builder
         * 
         */
        public Builder arn(@Nullable Output<String> arn) {
            $.arn = arn;
            return this;
        }

        /**
         * @param arn Amazon Resource Name (ARN) of Glue ML Transform.
         * 
         * @return builder
         * 
         */
        public Builder arn(String arn) {
            return arn(Output.of(arn));
        }

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

        /**
         * @param description Description of the ML Transform.
         * 
         * @return builder
         * 
         */
        public Builder description(String description) {
            return description(Output.of(description));
        }

        /**
         * @param glueVersion The version of glue to use, for example &#34;1.0&#34;. For information about available versions, see the [AWS Glue Release Notes](https://docs.aws.amazon.com/glue/latest/dg/release-notes.html).
         * 
         * @return builder
         * 
         */
        public Builder glueVersion(@Nullable Output<String> glueVersion) {
            $.glueVersion = glueVersion;
            return this;
        }

        /**
         * @param glueVersion The version of glue to use, for example &#34;1.0&#34;. For information about available versions, see the [AWS Glue Release Notes](https://docs.aws.amazon.com/glue/latest/dg/release-notes.html).
         * 
         * @return builder
         * 
         */
        public Builder glueVersion(String glueVersion) {
            return glueVersion(Output.of(glueVersion));
        }

        /**
         * @param inputRecordTables A list of AWS Glue table definitions used by the transform. see Input Record Tables.
         * 
         * @return builder
         * 
         */
        public Builder inputRecordTables(@Nullable Output<List<MLTransformInputRecordTableArgs>> inputRecordTables) {
            $.inputRecordTables = inputRecordTables;
            return this;
        }

        /**
         * @param inputRecordTables A list of AWS Glue table definitions used by the transform. see Input Record Tables.
         * 
         * @return builder
         * 
         */
        public Builder inputRecordTables(List<MLTransformInputRecordTableArgs> inputRecordTables) {
            return inputRecordTables(Output.of(inputRecordTables));
        }

        /**
         * @param inputRecordTables A list of AWS Glue table definitions used by the transform. see Input Record Tables.
         * 
         * @return builder
         * 
         */
        public Builder inputRecordTables(MLTransformInputRecordTableArgs... inputRecordTables) {
            return inputRecordTables(List.of(inputRecordTables));
        }

        /**
         * @param labelCount The number of labels available for this transform.
         * 
         * @return builder
         * 
         */
        public Builder labelCount(@Nullable Output<Integer> labelCount) {
            $.labelCount = labelCount;
            return this;
        }

        /**
         * @param labelCount The number of labels available for this transform.
         * 
         * @return builder
         * 
         */
        public Builder labelCount(Integer labelCount) {
            return labelCount(Output.of(labelCount));
        }

        /**
         * @param maxCapacity The number of AWS Glue data processing units (DPUs) that are allocated to task runs for this transform. You can allocate from `2` to `100` DPUs; the default is `10`. `max_capacity` is a mutually exclusive option with `number_of_workers` and `worker_type`.
         * 
         * @return builder
         * 
         */
        public Builder maxCapacity(@Nullable Output<Double> maxCapacity) {
            $.maxCapacity = maxCapacity;
            return this;
        }

        /**
         * @param maxCapacity The number of AWS Glue data processing units (DPUs) that are allocated to task runs for this transform. You can allocate from `2` to `100` DPUs; the default is `10`. `max_capacity` is a mutually exclusive option with `number_of_workers` and `worker_type`.
         * 
         * @return builder
         * 
         */
        public Builder maxCapacity(Double maxCapacity) {
            return maxCapacity(Output.of(maxCapacity));
        }

        /**
         * @param maxRetries The maximum number of times to retry this ML Transform if it fails.
         * 
         * @return builder
         * 
         */
        public Builder maxRetries(@Nullable Output<Integer> maxRetries) {
            $.maxRetries = maxRetries;
            return this;
        }

        /**
         * @param maxRetries The maximum number of times to retry this ML Transform if it fails.
         * 
         * @return builder
         * 
         */
        public Builder maxRetries(Integer maxRetries) {
            return maxRetries(Output.of(maxRetries));
        }

        /**
         * @param name The name you assign to this ML Transform. It must be unique in your account.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output<String> name) {
            $.name = name;
            return this;
        }

        /**
         * @param name The name you assign to this ML Transform. It must be unique in your account.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param numberOfWorkers The number of workers of a defined `worker_type` that are allocated when an ML Transform runs. Required with `worker_type`.
         * 
         * @return builder
         * 
         */
        public Builder numberOfWorkers(@Nullable Output<Integer> numberOfWorkers) {
            $.numberOfWorkers = numberOfWorkers;
            return this;
        }

        /**
         * @param numberOfWorkers The number of workers of a defined `worker_type` that are allocated when an ML Transform runs. Required with `worker_type`.
         * 
         * @return builder
         * 
         */
        public Builder numberOfWorkers(Integer numberOfWorkers) {
            return numberOfWorkers(Output.of(numberOfWorkers));
        }

        /**
         * @param parameters The algorithmic parameters that are specific to the transform type used. Conditionally dependent on the transform type. see Parameters.
         * 
         * @return builder
         * 
         */
        public Builder parameters(@Nullable Output<MLTransformParametersArgs> parameters) {
            $.parameters = parameters;
            return this;
        }

        /**
         * @param parameters The algorithmic parameters that are specific to the transform type used. Conditionally dependent on the transform type. see Parameters.
         * 
         * @return builder
         * 
         */
        public Builder parameters(MLTransformParametersArgs parameters) {
            return parameters(Output.of(parameters));
        }

        /**
         * @param roleArn The ARN of the IAM role associated with this ML Transform.
         * 
         * @return builder
         * 
         */
        public Builder roleArn(@Nullable Output<String> roleArn) {
            $.roleArn = roleArn;
            return this;
        }

        /**
         * @param roleArn The ARN of the IAM role associated with this ML Transform.
         * 
         * @return builder
         * 
         */
        public Builder roleArn(String roleArn) {
            return roleArn(Output.of(roleArn));
        }

        /**
         * @param schemas The object that represents the schema that this transform accepts. see Schema.
         * 
         * @return builder
         * 
         */
        public Builder schemas(@Nullable Output<List<MLTransformSchemaArgs>> schemas) {
            $.schemas = schemas;
            return this;
        }

        /**
         * @param schemas The object that represents the schema that this transform accepts. see Schema.
         * 
         * @return builder
         * 
         */
        public Builder schemas(List<MLTransformSchemaArgs> schemas) {
            return schemas(Output.of(schemas));
        }

        /**
         * @param schemas The object that represents the schema that this transform accepts. see Schema.
         * 
         * @return builder
         * 
         */
        public Builder schemas(MLTransformSchemaArgs... schemas) {
            return schemas(List.of(schemas));
        }

        /**
         * @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));
        }

        /**
         * @param timeout The ML Transform timeout in minutes. The default is 2880 minutes (48 hours).
         * 
         * @return builder
         * 
         */
        public Builder timeout(@Nullable Output<Integer> timeout) {
            $.timeout = timeout;
            return this;
        }

        /**
         * @param timeout The ML Transform timeout in minutes. The default is 2880 minutes (48 hours).
         * 
         * @return builder
         * 
         */
        public Builder timeout(Integer timeout) {
            return timeout(Output.of(timeout));
        }

        /**
         * @param workerType The type of predefined worker that is allocated when an ML Transform runs. Accepts a value of `Standard`, `G.1X`, or `G.2X`. Required with `number_of_workers`.
         * 
         * @return builder
         * 
         */
        public Builder workerType(@Nullable Output<String> workerType) {
            $.workerType = workerType;
            return this;
        }

        /**
         * @param workerType The type of predefined worker that is allocated when an ML Transform runs. Accepts a value of `Standard`, `G.1X`, or `G.2X`. Required with `number_of_workers`.
         * 
         * @return builder
         * 
         */
        public Builder workerType(String workerType) {
            return workerType(Output.of(workerType));
        }

        public MLTransformState build() {
            return $;
        }
    }

}
