// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;

namespace Pulumi.AliCloud.Ecs.Outputs
{

    [OutputType]
    public sealed class GetInstanceTypesInstanceTypeResult
    {
        /// <summary>
        /// List of availability zones that support the instance type.
        /// </summary>
        public readonly ImmutableArray<string> AvailabilityZones;
        /// <summary>
        /// The burstable instance attribution:
        /// - initial_credit: The initial CPU credit of a burstable instance.
        /// - baseline_credit:  The compute performance benchmark CPU credit of a burstable instance.
        /// </summary>
        public readonly Outputs.GetInstanceTypesInstanceTypeBurstableInstanceResult BurstableInstance;
        /// <summary>
        /// Filter the results to a specific number of cpu cores.
        /// </summary>
        public readonly int CpuCoreCount;
        /// <summary>
        /// Filter the result whose network interface number is no more than `eni_amount`.
        /// </summary>
        public readonly int EniAmount;
        /// <summary>
        /// The instance type family.
        /// </summary>
        public readonly string Family;
        /// <summary>
        /// The GPU attribution of an instance type:
        /// - amount: The amount of GPU of an instance type.
        /// - category: The category of GPU of an instance type.
        /// </summary>
        public readonly Outputs.GetInstanceTypesInstanceTypeGpuResult Gpu;
        /// <summary>
        /// ID of the instance type.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// Local storage of an instance type:
        /// - capacity: The capacity of a local storage in GB.
        /// - amount:  The number of local storage devices that an instance has been attached to.
        /// - category: The category of local storage that an instance has been attached to.
        /// </summary>
        public readonly Outputs.GetInstanceTypesInstanceTypeLocalStorageResult LocalStorage;
        /// <summary>
        /// Filter the results to a specific memory size in GB.
        /// </summary>
        public readonly double MemorySize;
        /// <summary>
        /// Indicates whether the cloud disk can be attached by using the nonvolatile memory express (NVMe) protocol. Valid values:
        /// - required: The cloud disk can be attached by using the NVMe protocol.
        /// - unsupported: The cloud disk cannot be attached by using the NVMe protocol.
        /// </summary>
        public readonly string NvmeSupport;
        public readonly string Price;

        [OutputConstructor]
        private GetInstanceTypesInstanceTypeResult(
            ImmutableArray<string> availabilityZones,

            Outputs.GetInstanceTypesInstanceTypeBurstableInstanceResult burstableInstance,

            int cpuCoreCount,

            int eniAmount,

            string family,

            Outputs.GetInstanceTypesInstanceTypeGpuResult gpu,

            string id,

            Outputs.GetInstanceTypesInstanceTypeLocalStorageResult localStorage,

            double memorySize,

            string nvmeSupport,

            string price)
        {
            AvailabilityZones = availabilityZones;
            BurstableInstance = burstableInstance;
            CpuCoreCount = cpuCoreCount;
            EniAmount = eniAmount;
            Family = family;
            Gpu = gpu;
            Id = id;
            LocalStorage = localStorage;
            MemorySize = memorySize;
            NvmeSupport = nvmeSupport;
            Price = price;
        }
    }
}
