/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the savingsplans-2019-06-28.normal.json service model.
 */
using System;
using Amazon.Runtime;
namespace Amazon.SavingsPlans
{
    /// 
    /// Constants used for properties of type CurrencyCode.
    /// 
    public class CurrencyCode : ConstantClass
    {
        /// 
        /// Constant CNY for CurrencyCode
        /// 
        public static readonly CurrencyCode CNY = new CurrencyCode("CNY");
        /// 
        /// Constant USD for CurrencyCode
        /// 
        public static readonly CurrencyCode USD = new CurrencyCode("USD");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public CurrencyCode(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static CurrencyCode FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator CurrencyCode(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type SavingsPlanOfferingFilterAttribute.
    /// 
    public class SavingsPlanOfferingFilterAttribute : ConstantClass
    {
        /// 
        /// Constant InstanceFamily for SavingsPlanOfferingFilterAttribute
        /// 
        public static readonly SavingsPlanOfferingFilterAttribute InstanceFamily = new SavingsPlanOfferingFilterAttribute("instanceFamily");
        /// 
        /// Constant Region for SavingsPlanOfferingFilterAttribute
        /// 
        public static readonly SavingsPlanOfferingFilterAttribute Region = new SavingsPlanOfferingFilterAttribute("region");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public SavingsPlanOfferingFilterAttribute(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static SavingsPlanOfferingFilterAttribute FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator SavingsPlanOfferingFilterAttribute(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type SavingsPlanOfferingPropertyKey.
    /// 
    public class SavingsPlanOfferingPropertyKey : ConstantClass
    {
        /// 
        /// Constant InstanceFamily for SavingsPlanOfferingPropertyKey
        /// 
        public static readonly SavingsPlanOfferingPropertyKey InstanceFamily = new SavingsPlanOfferingPropertyKey("instanceFamily");
        /// 
        /// Constant Region for SavingsPlanOfferingPropertyKey
        /// 
        public static readonly SavingsPlanOfferingPropertyKey Region = new SavingsPlanOfferingPropertyKey("region");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public SavingsPlanOfferingPropertyKey(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static SavingsPlanOfferingPropertyKey FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator SavingsPlanOfferingPropertyKey(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type SavingsPlanPaymentOption.
    /// 
    public class SavingsPlanPaymentOption : ConstantClass
    {
        /// 
        /// Constant AllUpfront for SavingsPlanPaymentOption
        /// 
        public static readonly SavingsPlanPaymentOption AllUpfront = new SavingsPlanPaymentOption("All Upfront");
        /// 
        /// Constant NoUpfront for SavingsPlanPaymentOption
        /// 
        public static readonly SavingsPlanPaymentOption NoUpfront = new SavingsPlanPaymentOption("No Upfront");
        /// 
        /// Constant PartialUpfront for SavingsPlanPaymentOption
        /// 
        public static readonly SavingsPlanPaymentOption PartialUpfront = new SavingsPlanPaymentOption("Partial Upfront");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public SavingsPlanPaymentOption(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static SavingsPlanPaymentOption FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator SavingsPlanPaymentOption(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type SavingsPlanProductType.
    /// 
    public class SavingsPlanProductType : ConstantClass
    {
        /// 
        /// Constant EC2 for SavingsPlanProductType
        /// 
        public static readonly SavingsPlanProductType EC2 = new SavingsPlanProductType("EC2");
        /// 
        /// Constant Fargate for SavingsPlanProductType
        /// 
        public static readonly SavingsPlanProductType Fargate = new SavingsPlanProductType("Fargate");
        /// 
        /// Constant Lambda for SavingsPlanProductType
        /// 
        public static readonly SavingsPlanProductType Lambda = new SavingsPlanProductType("Lambda");
        /// 
        /// Constant SageMaker for SavingsPlanProductType
        /// 
        public static readonly SavingsPlanProductType SageMaker = new SavingsPlanProductType("SageMaker");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public SavingsPlanProductType(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static SavingsPlanProductType FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator SavingsPlanProductType(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type SavingsPlanRateFilterAttribute.
    /// 
    public class SavingsPlanRateFilterAttribute : ConstantClass
    {
        /// 
        /// Constant InstanceFamily for SavingsPlanRateFilterAttribute
        /// 
        public static readonly SavingsPlanRateFilterAttribute InstanceFamily = new SavingsPlanRateFilterAttribute("instanceFamily");
        /// 
        /// Constant InstanceType for SavingsPlanRateFilterAttribute
        /// 
        public static readonly SavingsPlanRateFilterAttribute InstanceType = new SavingsPlanRateFilterAttribute("instanceType");
        /// 
        /// Constant ProductDescription for SavingsPlanRateFilterAttribute
        /// 
        public static readonly SavingsPlanRateFilterAttribute ProductDescription = new SavingsPlanRateFilterAttribute("productDescription");
        /// 
        /// Constant ProductId for SavingsPlanRateFilterAttribute
        /// 
        public static readonly SavingsPlanRateFilterAttribute ProductId = new SavingsPlanRateFilterAttribute("productId");
        /// 
        /// Constant Region for SavingsPlanRateFilterAttribute
        /// 
        public static readonly SavingsPlanRateFilterAttribute Region = new SavingsPlanRateFilterAttribute("region");
        /// 
        /// Constant Tenancy for SavingsPlanRateFilterAttribute
        /// 
        public static readonly SavingsPlanRateFilterAttribute Tenancy = new SavingsPlanRateFilterAttribute("tenancy");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public SavingsPlanRateFilterAttribute(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static SavingsPlanRateFilterAttribute FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator SavingsPlanRateFilterAttribute(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type SavingsPlanRateFilterName.
    /// 
    public class SavingsPlanRateFilterName : ConstantClass
    {
        /// 
        /// Constant InstanceType for SavingsPlanRateFilterName
        /// 
        public static readonly SavingsPlanRateFilterName InstanceType = new SavingsPlanRateFilterName("instanceType");
        /// 
        /// Constant Operation for SavingsPlanRateFilterName
        /// 
        public static readonly SavingsPlanRateFilterName Operation = new SavingsPlanRateFilterName("operation");
        /// 
        /// Constant ProductDescription for SavingsPlanRateFilterName
        /// 
        public static readonly SavingsPlanRateFilterName ProductDescription = new SavingsPlanRateFilterName("productDescription");
        /// 
        /// Constant ProductType for SavingsPlanRateFilterName
        /// 
        public static readonly SavingsPlanRateFilterName ProductType = new SavingsPlanRateFilterName("productType");
        /// 
        /// Constant Region for SavingsPlanRateFilterName
        /// 
        public static readonly SavingsPlanRateFilterName Region = new SavingsPlanRateFilterName("region");
        /// 
        /// Constant ServiceCode for SavingsPlanRateFilterName
        /// 
        public static readonly SavingsPlanRateFilterName ServiceCode = new SavingsPlanRateFilterName("serviceCode");
        /// 
        /// Constant Tenancy for SavingsPlanRateFilterName
        /// 
        public static readonly SavingsPlanRateFilterName Tenancy = new SavingsPlanRateFilterName("tenancy");
        /// 
        /// Constant UsageType for SavingsPlanRateFilterName
        /// 
        public static readonly SavingsPlanRateFilterName UsageType = new SavingsPlanRateFilterName("usageType");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public SavingsPlanRateFilterName(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static SavingsPlanRateFilterName FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator SavingsPlanRateFilterName(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type SavingsPlanRatePropertyKey.
    /// 
    public class SavingsPlanRatePropertyKey : ConstantClass
    {
        /// 
        /// Constant InstanceFamily for SavingsPlanRatePropertyKey
        /// 
        public static readonly SavingsPlanRatePropertyKey InstanceFamily = new SavingsPlanRatePropertyKey("instanceFamily");
        /// 
        /// Constant InstanceType for SavingsPlanRatePropertyKey
        /// 
        public static readonly SavingsPlanRatePropertyKey InstanceType = new SavingsPlanRatePropertyKey("instanceType");
        /// 
        /// Constant ProductDescription for SavingsPlanRatePropertyKey
        /// 
        public static readonly SavingsPlanRatePropertyKey ProductDescription = new SavingsPlanRatePropertyKey("productDescription");
        /// 
        /// Constant Region for SavingsPlanRatePropertyKey
        /// 
        public static readonly SavingsPlanRatePropertyKey Region = new SavingsPlanRatePropertyKey("region");
        /// 
        /// Constant Tenancy for SavingsPlanRatePropertyKey
        /// 
        public static readonly SavingsPlanRatePropertyKey Tenancy = new SavingsPlanRatePropertyKey("tenancy");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public SavingsPlanRatePropertyKey(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static SavingsPlanRatePropertyKey FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator SavingsPlanRatePropertyKey(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type SavingsPlanRateServiceCode.
    /// 
    public class SavingsPlanRateServiceCode : ConstantClass
    {
        /// 
        /// Constant AmazonEC2 for SavingsPlanRateServiceCode
        /// 
        public static readonly SavingsPlanRateServiceCode AmazonEC2 = new SavingsPlanRateServiceCode("AmazonEC2");
        /// 
        /// Constant AmazonECS for SavingsPlanRateServiceCode
        /// 
        public static readonly SavingsPlanRateServiceCode AmazonECS = new SavingsPlanRateServiceCode("AmazonECS");
        /// 
        /// Constant AmazonEKS for SavingsPlanRateServiceCode
        /// 
        public static readonly SavingsPlanRateServiceCode AmazonEKS = new SavingsPlanRateServiceCode("AmazonEKS");
        /// 
        /// Constant AmazonSageMaker for SavingsPlanRateServiceCode
        /// 
        public static readonly SavingsPlanRateServiceCode AmazonSageMaker = new SavingsPlanRateServiceCode("AmazonSageMaker");
        /// 
        /// Constant AWSLambda for SavingsPlanRateServiceCode
        /// 
        public static readonly SavingsPlanRateServiceCode AWSLambda = new SavingsPlanRateServiceCode("AWSLambda");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public SavingsPlanRateServiceCode(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static SavingsPlanRateServiceCode FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator SavingsPlanRateServiceCode(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type SavingsPlanRateUnit.
    /// 
    public class SavingsPlanRateUnit : ConstantClass
    {
        /// 
        /// Constant Hrs for SavingsPlanRateUnit
        /// 
        public static readonly SavingsPlanRateUnit Hrs = new SavingsPlanRateUnit("Hrs");
        /// 
        /// Constant LambdaGBSecond for SavingsPlanRateUnit
        /// 
        public static readonly SavingsPlanRateUnit LambdaGBSecond = new SavingsPlanRateUnit("Lambda-GB-Second");
        /// 
        /// Constant Request for SavingsPlanRateUnit
        /// 
        public static readonly SavingsPlanRateUnit Request = new SavingsPlanRateUnit("Request");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public SavingsPlanRateUnit(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static SavingsPlanRateUnit FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator SavingsPlanRateUnit(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type SavingsPlansFilterName.
    /// 
    public class SavingsPlansFilterName : ConstantClass
    {
        /// 
        /// Constant Commitment for SavingsPlansFilterName
        /// 
        public static readonly SavingsPlansFilterName Commitment = new SavingsPlansFilterName("commitment");
        /// 
        /// Constant Ec2InstanceFamily for SavingsPlansFilterName
        /// 
        public static readonly SavingsPlansFilterName Ec2InstanceFamily = new SavingsPlansFilterName("ec2-instance-family");
        /// 
        /// Constant End for SavingsPlansFilterName
        /// 
        public static readonly SavingsPlansFilterName End = new SavingsPlansFilterName("end");
        /// 
        /// Constant PaymentOption for SavingsPlansFilterName
        /// 
        public static readonly SavingsPlansFilterName PaymentOption = new SavingsPlansFilterName("payment-option");
        /// 
        /// Constant Region for SavingsPlansFilterName
        /// 
        public static readonly SavingsPlansFilterName Region = new SavingsPlansFilterName("region");
        /// 
        /// Constant SavingsPlanType for SavingsPlansFilterName
        /// 
        public static readonly SavingsPlansFilterName SavingsPlanType = new SavingsPlansFilterName("savings-plan-type");
        /// 
        /// Constant Start for SavingsPlansFilterName
        /// 
        public static readonly SavingsPlansFilterName Start = new SavingsPlansFilterName("start");
        /// 
        /// Constant Term for SavingsPlansFilterName
        /// 
        public static readonly SavingsPlansFilterName Term = new SavingsPlansFilterName("term");
        /// 
        /// Constant Upfront for SavingsPlansFilterName
        /// 
        public static readonly SavingsPlansFilterName Upfront = new SavingsPlansFilterName("upfront");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public SavingsPlansFilterName(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static SavingsPlansFilterName FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator SavingsPlansFilterName(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type SavingsPlanState.
    /// 
    public class SavingsPlanState : ConstantClass
    {
        /// 
        /// Constant Active for SavingsPlanState
        /// 
        public static readonly SavingsPlanState Active = new SavingsPlanState("active");
        /// 
        /// Constant PaymentFailed for SavingsPlanState
        /// 
        public static readonly SavingsPlanState PaymentFailed = new SavingsPlanState("payment-failed");
        /// 
        /// Constant PaymentPending for SavingsPlanState
        /// 
        public static readonly SavingsPlanState PaymentPending = new SavingsPlanState("payment-pending");
        /// 
        /// Constant Queued for SavingsPlanState
        /// 
        public static readonly SavingsPlanState Queued = new SavingsPlanState("queued");
        /// 
        /// Constant QueuedDeleted for SavingsPlanState
        /// 
        public static readonly SavingsPlanState QueuedDeleted = new SavingsPlanState("queued-deleted");
        /// 
        /// Constant Retired for SavingsPlanState
        /// 
        public static readonly SavingsPlanState Retired = new SavingsPlanState("retired");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public SavingsPlanState(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static SavingsPlanState FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator SavingsPlanState(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type SavingsPlanType.
    /// 
    public class SavingsPlanType : ConstantClass
    {
        /// 
        /// Constant Compute for SavingsPlanType
        /// 
        public static readonly SavingsPlanType Compute = new SavingsPlanType("Compute");
        /// 
        /// Constant EC2Instance for SavingsPlanType
        /// 
        public static readonly SavingsPlanType EC2Instance = new SavingsPlanType("EC2Instance");
        /// 
        /// Constant SageMaker for SavingsPlanType
        /// 
        public static readonly SavingsPlanType SageMaker = new SavingsPlanType("SageMaker");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public SavingsPlanType(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static SavingsPlanType FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator SavingsPlanType(string value)
        {
            return FindValue(value);
        }
    }
}