// *** 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.azure.mobile.outputs;

import com.pulumi.azure.mobile.outputs.GetNetworkSimStaticIpConfiguration;
import com.pulumi.core.annotations.CustomType;
import java.lang.String;
import java.util.List;
import java.util.Objects;

@CustomType
public final class GetNetworkSimResult {
    /**
     * @return The device type this SIM is associated with.
     * 
     */
    private String deviceType;
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    private String id;
    /**
     * @return The integrated circuit card ID (ICCID) for the SIM.
     * 
     */
    private String integratedCircuitCardIdentifier;
    /**
     * @return The international mobile subscriber identity (IMSI) for the SIM.
     * 
     */
    private String internationalMobileSubscriberIdentity;
    private String mobileNetworkSimGroupId;
    private String name;
    /**
     * @return The ID of SIM policy used by this SIM.
     * 
     */
    private String simPolicyId;
    /**
     * @return The state of the SIM resource.
     * 
     */
    private String simState;
    /**
     * @return A `static_ip_configuration` block as defined below.
     * 
     */
    private List<GetNetworkSimStaticIpConfiguration> staticIpConfigurations;
    /**
     * @return The public key fingerprint of the SIM vendor who provided this SIM.
     * 
     */
    private String vendorKeyFingerprint;
    /**
     * @return The name of the SIM vendor who provided this SIM, if any.
     * 
     */
    private String vendorName;

    private GetNetworkSimResult() {}
    /**
     * @return The device type this SIM is associated with.
     * 
     */
    public String deviceType() {
        return this.deviceType;
    }
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    public String id() {
        return this.id;
    }
    /**
     * @return The integrated circuit card ID (ICCID) for the SIM.
     * 
     */
    public String integratedCircuitCardIdentifier() {
        return this.integratedCircuitCardIdentifier;
    }
    /**
     * @return The international mobile subscriber identity (IMSI) for the SIM.
     * 
     */
    public String internationalMobileSubscriberIdentity() {
        return this.internationalMobileSubscriberIdentity;
    }
    public String mobileNetworkSimGroupId() {
        return this.mobileNetworkSimGroupId;
    }
    public String name() {
        return this.name;
    }
    /**
     * @return The ID of SIM policy used by this SIM.
     * 
     */
    public String simPolicyId() {
        return this.simPolicyId;
    }
    /**
     * @return The state of the SIM resource.
     * 
     */
    public String simState() {
        return this.simState;
    }
    /**
     * @return A `static_ip_configuration` block as defined below.
     * 
     */
    public List<GetNetworkSimStaticIpConfiguration> staticIpConfigurations() {
        return this.staticIpConfigurations;
    }
    /**
     * @return The public key fingerprint of the SIM vendor who provided this SIM.
     * 
     */
    public String vendorKeyFingerprint() {
        return this.vendorKeyFingerprint;
    }
    /**
     * @return The name of the SIM vendor who provided this SIM, if any.
     * 
     */
    public String vendorName() {
        return this.vendorName;
    }

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

    public static Builder builder(GetNetworkSimResult defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String deviceType;
        private String id;
        private String integratedCircuitCardIdentifier;
        private String internationalMobileSubscriberIdentity;
        private String mobileNetworkSimGroupId;
        private String name;
        private String simPolicyId;
        private String simState;
        private List<GetNetworkSimStaticIpConfiguration> staticIpConfigurations;
        private String vendorKeyFingerprint;
        private String vendorName;
        public Builder() {}
        public Builder(GetNetworkSimResult defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.deviceType = defaults.deviceType;
    	      this.id = defaults.id;
    	      this.integratedCircuitCardIdentifier = defaults.integratedCircuitCardIdentifier;
    	      this.internationalMobileSubscriberIdentity = defaults.internationalMobileSubscriberIdentity;
    	      this.mobileNetworkSimGroupId = defaults.mobileNetworkSimGroupId;
    	      this.name = defaults.name;
    	      this.simPolicyId = defaults.simPolicyId;
    	      this.simState = defaults.simState;
    	      this.staticIpConfigurations = defaults.staticIpConfigurations;
    	      this.vendorKeyFingerprint = defaults.vendorKeyFingerprint;
    	      this.vendorName = defaults.vendorName;
        }

        @CustomType.Setter
        public Builder deviceType(String deviceType) {
            this.deviceType = Objects.requireNonNull(deviceType);
            return this;
        }
        @CustomType.Setter
        public Builder id(String id) {
            this.id = Objects.requireNonNull(id);
            return this;
        }
        @CustomType.Setter
        public Builder integratedCircuitCardIdentifier(String integratedCircuitCardIdentifier) {
            this.integratedCircuitCardIdentifier = Objects.requireNonNull(integratedCircuitCardIdentifier);
            return this;
        }
        @CustomType.Setter
        public Builder internationalMobileSubscriberIdentity(String internationalMobileSubscriberIdentity) {
            this.internationalMobileSubscriberIdentity = Objects.requireNonNull(internationalMobileSubscriberIdentity);
            return this;
        }
        @CustomType.Setter
        public Builder mobileNetworkSimGroupId(String mobileNetworkSimGroupId) {
            this.mobileNetworkSimGroupId = Objects.requireNonNull(mobileNetworkSimGroupId);
            return this;
        }
        @CustomType.Setter
        public Builder name(String name) {
            this.name = Objects.requireNonNull(name);
            return this;
        }
        @CustomType.Setter
        public Builder simPolicyId(String simPolicyId) {
            this.simPolicyId = Objects.requireNonNull(simPolicyId);
            return this;
        }
        @CustomType.Setter
        public Builder simState(String simState) {
            this.simState = Objects.requireNonNull(simState);
            return this;
        }
        @CustomType.Setter
        public Builder staticIpConfigurations(List<GetNetworkSimStaticIpConfiguration> staticIpConfigurations) {
            this.staticIpConfigurations = Objects.requireNonNull(staticIpConfigurations);
            return this;
        }
        public Builder staticIpConfigurations(GetNetworkSimStaticIpConfiguration... staticIpConfigurations) {
            return staticIpConfigurations(List.of(staticIpConfigurations));
        }
        @CustomType.Setter
        public Builder vendorKeyFingerprint(String vendorKeyFingerprint) {
            this.vendorKeyFingerprint = Objects.requireNonNull(vendorKeyFingerprint);
            return this;
        }
        @CustomType.Setter
        public Builder vendorName(String vendorName) {
            this.vendorName = Objects.requireNonNull(vendorName);
            return this;
        }
        public GetNetworkSimResult build() {
            final var o = new GetNetworkSimResult();
            o.deviceType = deviceType;
            o.id = id;
            o.integratedCircuitCardIdentifier = integratedCircuitCardIdentifier;
            o.internationalMobileSubscriberIdentity = internationalMobileSubscriberIdentity;
            o.mobileNetworkSimGroupId = mobileNetworkSimGroupId;
            o.name = name;
            o.simPolicyId = simPolicyId;
            o.simState = simState;
            o.staticIpConfigurations = staticIpConfigurations;
            o.vendorKeyFingerprint = vendorKeyFingerprint;
            o.vendorName = vendorName;
            return o;
        }
    }
}
