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

import com.pulumi.aws.sagemaker.inputs.DeviceDeviceArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final DeviceState Empty = new DeviceState();

    @Import(name="agentVersion")
    private @Nullable Output<String> agentVersion;

    public Optional<Output<String>> agentVersion() {
        return Optional.ofNullable(this.agentVersion);
    }

    /**
     * The Amazon Resource Name (ARN) assigned by AWS to this Device.
     * 
     */
    @Import(name="arn")
    private @Nullable Output<String> arn;

    /**
     * @return The Amazon Resource Name (ARN) assigned by AWS to this Device.
     * 
     */
    public Optional<Output<String>> arn() {
        return Optional.ofNullable(this.arn);
    }

    /**
     * The device to register with SageMaker Edge Manager. See Device details below.
     * 
     */
    @Import(name="device")
    private @Nullable Output<DeviceDeviceArgs> device;

    /**
     * @return The device to register with SageMaker Edge Manager. See Device details below.
     * 
     */
    public Optional<Output<DeviceDeviceArgs>> device() {
        return Optional.ofNullable(this.device);
    }

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

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

    private DeviceState() {}

    private DeviceState(DeviceState $) {
        this.agentVersion = $.agentVersion;
        this.arn = $.arn;
        this.device = $.device;
        this.deviceFleetName = $.deviceFleetName;
    }

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

    public static final class Builder {
        private DeviceState $;

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

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

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

        public Builder agentVersion(String agentVersion) {
            return agentVersion(Output.of(agentVersion));
        }

        /**
         * @param arn The Amazon Resource Name (ARN) assigned by AWS to this Device.
         * 
         * @return builder
         * 
         */
        public Builder arn(@Nullable Output<String> arn) {
            $.arn = arn;
            return this;
        }

        /**
         * @param arn The Amazon Resource Name (ARN) assigned by AWS to this Device.
         * 
         * @return builder
         * 
         */
        public Builder arn(String arn) {
            return arn(Output.of(arn));
        }

        /**
         * @param device The device to register with SageMaker Edge Manager. See Device details below.
         * 
         * @return builder
         * 
         */
        public Builder device(@Nullable Output<DeviceDeviceArgs> device) {
            $.device = device;
            return this;
        }

        /**
         * @param device The device to register with SageMaker Edge Manager. See Device details below.
         * 
         * @return builder
         * 
         */
        public Builder device(DeviceDeviceArgs device) {
            return device(Output.of(device));
        }

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

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

        public DeviceState build() {
            return $;
        }
    }

}
