{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.CostExplorer.Types.Dimension
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CostExplorer.Types.Dimension
  ( Dimension
      ( ..,
        Dimension_AGREEMENT_END_DATE_TIME_AFTER,
        Dimension_AGREEMENT_END_DATE_TIME_BEFORE,
        Dimension_AZ,
        Dimension_BILLING_ENTITY,
        Dimension_CACHE_ENGINE,
        Dimension_DATABASE_ENGINE,
        Dimension_DEPLOYMENT_OPTION,
        Dimension_INSTANCE_TYPE,
        Dimension_INSTANCE_TYPE_FAMILY,
        Dimension_LEGAL_ENTITY_NAME,
        Dimension_LINKED_ACCOUNT,
        Dimension_LINKED_ACCOUNT_NAME,
        Dimension_OPERATING_SYSTEM,
        Dimension_OPERATION,
        Dimension_PAYMENT_OPTION,
        Dimension_PLATFORM,
        Dimension_PURCHASE_TYPE,
        Dimension_RECORD_TYPE,
        Dimension_REGION,
        Dimension_RESERVATION_ID,
        Dimension_RESOURCE_ID,
        Dimension_RIGHTSIZING_TYPE,
        Dimension_SAVINGS_PLANS_TYPE,
        Dimension_SAVINGS_PLAN_ARN,
        Dimension_SCOPE,
        Dimension_SERVICE,
        Dimension_SERVICE_CODE,
        Dimension_SUBSCRIPTION_ID,
        Dimension_TENANCY,
        Dimension_USAGE_TYPE,
        Dimension_USAGE_TYPE_GROUP
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Prelude as Prelude

newtype Dimension = Dimension'
  { Dimension -> Text
fromDimension ::
      Core.Text
  }
  deriving stock
    ( Int -> Dimension -> ShowS
[Dimension] -> ShowS
Dimension -> String
(Int -> Dimension -> ShowS)
-> (Dimension -> String)
-> ([Dimension] -> ShowS)
-> Show Dimension
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Dimension] -> ShowS
$cshowList :: [Dimension] -> ShowS
show :: Dimension -> String
$cshow :: Dimension -> String
showsPrec :: Int -> Dimension -> ShowS
$cshowsPrec :: Int -> Dimension -> ShowS
Prelude.Show,
      ReadPrec [Dimension]
ReadPrec Dimension
Int -> ReadS Dimension
ReadS [Dimension]
(Int -> ReadS Dimension)
-> ReadS [Dimension]
-> ReadPrec Dimension
-> ReadPrec [Dimension]
-> Read Dimension
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Dimension]
$creadListPrec :: ReadPrec [Dimension]
readPrec :: ReadPrec Dimension
$creadPrec :: ReadPrec Dimension
readList :: ReadS [Dimension]
$creadList :: ReadS [Dimension]
readsPrec :: Int -> ReadS Dimension
$creadsPrec :: Int -> ReadS Dimension
Prelude.Read,
      Dimension -> Dimension -> Bool
(Dimension -> Dimension -> Bool)
-> (Dimension -> Dimension -> Bool) -> Eq Dimension
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Dimension -> Dimension -> Bool
$c/= :: Dimension -> Dimension -> Bool
== :: Dimension -> Dimension -> Bool
$c== :: Dimension -> Dimension -> Bool
Prelude.Eq,
      Eq Dimension
Eq Dimension
-> (Dimension -> Dimension -> Ordering)
-> (Dimension -> Dimension -> Bool)
-> (Dimension -> Dimension -> Bool)
-> (Dimension -> Dimension -> Bool)
-> (Dimension -> Dimension -> Bool)
-> (Dimension -> Dimension -> Dimension)
-> (Dimension -> Dimension -> Dimension)
-> Ord Dimension
Dimension -> Dimension -> Bool
Dimension -> Dimension -> Ordering
Dimension -> Dimension -> Dimension
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Dimension -> Dimension -> Dimension
$cmin :: Dimension -> Dimension -> Dimension
max :: Dimension -> Dimension -> Dimension
$cmax :: Dimension -> Dimension -> Dimension
>= :: Dimension -> Dimension -> Bool
$c>= :: Dimension -> Dimension -> Bool
> :: Dimension -> Dimension -> Bool
$c> :: Dimension -> Dimension -> Bool
<= :: Dimension -> Dimension -> Bool
$c<= :: Dimension -> Dimension -> Bool
< :: Dimension -> Dimension -> Bool
$c< :: Dimension -> Dimension -> Bool
compare :: Dimension -> Dimension -> Ordering
$ccompare :: Dimension -> Dimension -> Ordering
$cp1Ord :: Eq Dimension
Prelude.Ord,
      (forall x. Dimension -> Rep Dimension x)
-> (forall x. Rep Dimension x -> Dimension) -> Generic Dimension
forall x. Rep Dimension x -> Dimension
forall x. Dimension -> Rep Dimension x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Dimension x -> Dimension
$cfrom :: forall x. Dimension -> Rep Dimension x
Prelude.Generic
    )
  deriving newtype
    ( Int -> Dimension -> Int
Dimension -> Int
(Int -> Dimension -> Int)
-> (Dimension -> Int) -> Hashable Dimension
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: Dimension -> Int
$chash :: Dimension -> Int
hashWithSalt :: Int -> Dimension -> Int
$chashWithSalt :: Int -> Dimension -> Int
Prelude.Hashable,
      Dimension -> ()
(Dimension -> ()) -> NFData Dimension
forall a. (a -> ()) -> NFData a
rnf :: Dimension -> ()
$crnf :: Dimension -> ()
Prelude.NFData,
      Text -> Either String Dimension
(Text -> Either String Dimension) -> FromText Dimension
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String Dimension
$cfromText :: Text -> Either String Dimension
Core.FromText,
      Dimension -> Text
(Dimension -> Text) -> ToText Dimension
forall a. (a -> Text) -> ToText a
toText :: Dimension -> Text
$ctoText :: Dimension -> Text
Core.ToText,
      Dimension -> ByteString
(Dimension -> ByteString) -> ToByteString Dimension
forall a. (a -> ByteString) -> ToByteString a
toBS :: Dimension -> ByteString
$ctoBS :: Dimension -> ByteString
Core.ToByteString,
      Dimension -> ByteStringBuilder
(Dimension -> ByteStringBuilder) -> ToLog Dimension
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: Dimension -> ByteStringBuilder
$cbuild :: Dimension -> ByteStringBuilder
Core.ToLog,
      HeaderName -> Dimension -> [Header]
(HeaderName -> Dimension -> [Header]) -> ToHeader Dimension
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> Dimension -> [Header]
$ctoHeader :: HeaderName -> Dimension -> [Header]
Core.ToHeader,
      Dimension -> QueryString
(Dimension -> QueryString) -> ToQuery Dimension
forall a. (a -> QueryString) -> ToQuery a
toQuery :: Dimension -> QueryString
$ctoQuery :: Dimension -> QueryString
Core.ToQuery,
      Value -> Parser [Dimension]
Value -> Parser Dimension
(Value -> Parser Dimension)
-> (Value -> Parser [Dimension]) -> FromJSON Dimension
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [Dimension]
$cparseJSONList :: Value -> Parser [Dimension]
parseJSON :: Value -> Parser Dimension
$cparseJSON :: Value -> Parser Dimension
Core.FromJSON,
      FromJSONKeyFunction [Dimension]
FromJSONKeyFunction Dimension
FromJSONKeyFunction Dimension
-> FromJSONKeyFunction [Dimension] -> FromJSONKey Dimension
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [Dimension]
$cfromJSONKeyList :: FromJSONKeyFunction [Dimension]
fromJSONKey :: FromJSONKeyFunction Dimension
$cfromJSONKey :: FromJSONKeyFunction Dimension
Core.FromJSONKey,
      [Dimension] -> Encoding
[Dimension] -> Value
Dimension -> Encoding
Dimension -> Value
(Dimension -> Value)
-> (Dimension -> Encoding)
-> ([Dimension] -> Value)
-> ([Dimension] -> Encoding)
-> ToJSON Dimension
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [Dimension] -> Encoding
$ctoEncodingList :: [Dimension] -> Encoding
toJSONList :: [Dimension] -> Value
$ctoJSONList :: [Dimension] -> Value
toEncoding :: Dimension -> Encoding
$ctoEncoding :: Dimension -> Encoding
toJSON :: Dimension -> Value
$ctoJSON :: Dimension -> Value
Core.ToJSON,
      ToJSONKeyFunction [Dimension]
ToJSONKeyFunction Dimension
ToJSONKeyFunction Dimension
-> ToJSONKeyFunction [Dimension] -> ToJSONKey Dimension
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [Dimension]
$ctoJSONKeyList :: ToJSONKeyFunction [Dimension]
toJSONKey :: ToJSONKeyFunction Dimension
$ctoJSONKey :: ToJSONKeyFunction Dimension
Core.ToJSONKey,
      [Node] -> Either String Dimension
([Node] -> Either String Dimension) -> FromXML Dimension
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String Dimension
$cparseXML :: [Node] -> Either String Dimension
Core.FromXML,
      Dimension -> XML
(Dimension -> XML) -> ToXML Dimension
forall a. (a -> XML) -> ToXML a
toXML :: Dimension -> XML
$ctoXML :: Dimension -> XML
Core.ToXML
    )

pattern Dimension_AGREEMENT_END_DATE_TIME_AFTER :: Dimension
pattern $bDimension_AGREEMENT_END_DATE_TIME_AFTER :: Dimension
$mDimension_AGREEMENT_END_DATE_TIME_AFTER :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_AGREEMENT_END_DATE_TIME_AFTER = Dimension' "AGREEMENT_END_DATE_TIME_AFTER"

pattern Dimension_AGREEMENT_END_DATE_TIME_BEFORE :: Dimension
pattern $bDimension_AGREEMENT_END_DATE_TIME_BEFORE :: Dimension
$mDimension_AGREEMENT_END_DATE_TIME_BEFORE :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_AGREEMENT_END_DATE_TIME_BEFORE = Dimension' "AGREEMENT_END_DATE_TIME_BEFORE"

pattern Dimension_AZ :: Dimension
pattern $bDimension_AZ :: Dimension
$mDimension_AZ :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_AZ = Dimension' "AZ"

pattern Dimension_BILLING_ENTITY :: Dimension
pattern $bDimension_BILLING_ENTITY :: Dimension
$mDimension_BILLING_ENTITY :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_BILLING_ENTITY = Dimension' "BILLING_ENTITY"

pattern Dimension_CACHE_ENGINE :: Dimension
pattern $bDimension_CACHE_ENGINE :: Dimension
$mDimension_CACHE_ENGINE :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_CACHE_ENGINE = Dimension' "CACHE_ENGINE"

pattern Dimension_DATABASE_ENGINE :: Dimension
pattern $bDimension_DATABASE_ENGINE :: Dimension
$mDimension_DATABASE_ENGINE :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_DATABASE_ENGINE = Dimension' "DATABASE_ENGINE"

pattern Dimension_DEPLOYMENT_OPTION :: Dimension
pattern $bDimension_DEPLOYMENT_OPTION :: Dimension
$mDimension_DEPLOYMENT_OPTION :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_DEPLOYMENT_OPTION = Dimension' "DEPLOYMENT_OPTION"

pattern Dimension_INSTANCE_TYPE :: Dimension
pattern $bDimension_INSTANCE_TYPE :: Dimension
$mDimension_INSTANCE_TYPE :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_INSTANCE_TYPE = Dimension' "INSTANCE_TYPE"

pattern Dimension_INSTANCE_TYPE_FAMILY :: Dimension
pattern $bDimension_INSTANCE_TYPE_FAMILY :: Dimension
$mDimension_INSTANCE_TYPE_FAMILY :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_INSTANCE_TYPE_FAMILY = Dimension' "INSTANCE_TYPE_FAMILY"

pattern Dimension_LEGAL_ENTITY_NAME :: Dimension
pattern $bDimension_LEGAL_ENTITY_NAME :: Dimension
$mDimension_LEGAL_ENTITY_NAME :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_LEGAL_ENTITY_NAME = Dimension' "LEGAL_ENTITY_NAME"

pattern Dimension_LINKED_ACCOUNT :: Dimension
pattern $bDimension_LINKED_ACCOUNT :: Dimension
$mDimension_LINKED_ACCOUNT :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_LINKED_ACCOUNT = Dimension' "LINKED_ACCOUNT"

pattern Dimension_LINKED_ACCOUNT_NAME :: Dimension
pattern $bDimension_LINKED_ACCOUNT_NAME :: Dimension
$mDimension_LINKED_ACCOUNT_NAME :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_LINKED_ACCOUNT_NAME = Dimension' "LINKED_ACCOUNT_NAME"

pattern Dimension_OPERATING_SYSTEM :: Dimension
pattern $bDimension_OPERATING_SYSTEM :: Dimension
$mDimension_OPERATING_SYSTEM :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_OPERATING_SYSTEM = Dimension' "OPERATING_SYSTEM"

pattern Dimension_OPERATION :: Dimension
pattern $bDimension_OPERATION :: Dimension
$mDimension_OPERATION :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_OPERATION = Dimension' "OPERATION"

pattern Dimension_PAYMENT_OPTION :: Dimension
pattern $bDimension_PAYMENT_OPTION :: Dimension
$mDimension_PAYMENT_OPTION :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_PAYMENT_OPTION = Dimension' "PAYMENT_OPTION"

pattern Dimension_PLATFORM :: Dimension
pattern $bDimension_PLATFORM :: Dimension
$mDimension_PLATFORM :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_PLATFORM = Dimension' "PLATFORM"

pattern Dimension_PURCHASE_TYPE :: Dimension
pattern $bDimension_PURCHASE_TYPE :: Dimension
$mDimension_PURCHASE_TYPE :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_PURCHASE_TYPE = Dimension' "PURCHASE_TYPE"

pattern Dimension_RECORD_TYPE :: Dimension
pattern $bDimension_RECORD_TYPE :: Dimension
$mDimension_RECORD_TYPE :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_RECORD_TYPE = Dimension' "RECORD_TYPE"

pattern Dimension_REGION :: Dimension
pattern $bDimension_REGION :: Dimension
$mDimension_REGION :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_REGION = Dimension' "REGION"

pattern Dimension_RESERVATION_ID :: Dimension
pattern $bDimension_RESERVATION_ID :: Dimension
$mDimension_RESERVATION_ID :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_RESERVATION_ID = Dimension' "RESERVATION_ID"

pattern Dimension_RESOURCE_ID :: Dimension
pattern $bDimension_RESOURCE_ID :: Dimension
$mDimension_RESOURCE_ID :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_RESOURCE_ID = Dimension' "RESOURCE_ID"

pattern Dimension_RIGHTSIZING_TYPE :: Dimension
pattern $bDimension_RIGHTSIZING_TYPE :: Dimension
$mDimension_RIGHTSIZING_TYPE :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_RIGHTSIZING_TYPE = Dimension' "RIGHTSIZING_TYPE"

pattern Dimension_SAVINGS_PLANS_TYPE :: Dimension
pattern $bDimension_SAVINGS_PLANS_TYPE :: Dimension
$mDimension_SAVINGS_PLANS_TYPE :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_SAVINGS_PLANS_TYPE = Dimension' "SAVINGS_PLANS_TYPE"

pattern Dimension_SAVINGS_PLAN_ARN :: Dimension
pattern $bDimension_SAVINGS_PLAN_ARN :: Dimension
$mDimension_SAVINGS_PLAN_ARN :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_SAVINGS_PLAN_ARN = Dimension' "SAVINGS_PLAN_ARN"

pattern Dimension_SCOPE :: Dimension
pattern $bDimension_SCOPE :: Dimension
$mDimension_SCOPE :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_SCOPE = Dimension' "SCOPE"

pattern Dimension_SERVICE :: Dimension
pattern $bDimension_SERVICE :: Dimension
$mDimension_SERVICE :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_SERVICE = Dimension' "SERVICE"

pattern Dimension_SERVICE_CODE :: Dimension
pattern $bDimension_SERVICE_CODE :: Dimension
$mDimension_SERVICE_CODE :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_SERVICE_CODE = Dimension' "SERVICE_CODE"

pattern Dimension_SUBSCRIPTION_ID :: Dimension
pattern $bDimension_SUBSCRIPTION_ID :: Dimension
$mDimension_SUBSCRIPTION_ID :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_SUBSCRIPTION_ID = Dimension' "SUBSCRIPTION_ID"

pattern Dimension_TENANCY :: Dimension
pattern $bDimension_TENANCY :: Dimension
$mDimension_TENANCY :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_TENANCY = Dimension' "TENANCY"

pattern Dimension_USAGE_TYPE :: Dimension
pattern $bDimension_USAGE_TYPE :: Dimension
$mDimension_USAGE_TYPE :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_USAGE_TYPE = Dimension' "USAGE_TYPE"

pattern Dimension_USAGE_TYPE_GROUP :: Dimension
pattern $bDimension_USAGE_TYPE_GROUP :: Dimension
$mDimension_USAGE_TYPE_GROUP :: forall r. Dimension -> (Void# -> r) -> (Void# -> r) -> r
Dimension_USAGE_TYPE_GROUP = Dimension' "USAGE_TYPE_GROUP"

{-# COMPLETE
  Dimension_AGREEMENT_END_DATE_TIME_AFTER,
  Dimension_AGREEMENT_END_DATE_TIME_BEFORE,
  Dimension_AZ,
  Dimension_BILLING_ENTITY,
  Dimension_CACHE_ENGINE,
  Dimension_DATABASE_ENGINE,
  Dimension_DEPLOYMENT_OPTION,
  Dimension_INSTANCE_TYPE,
  Dimension_INSTANCE_TYPE_FAMILY,
  Dimension_LEGAL_ENTITY_NAME,
  Dimension_LINKED_ACCOUNT,
  Dimension_LINKED_ACCOUNT_NAME,
  Dimension_OPERATING_SYSTEM,
  Dimension_OPERATION,
  Dimension_PAYMENT_OPTION,
  Dimension_PLATFORM,
  Dimension_PURCHASE_TYPE,
  Dimension_RECORD_TYPE,
  Dimension_REGION,
  Dimension_RESERVATION_ID,
  Dimension_RESOURCE_ID,
  Dimension_RIGHTSIZING_TYPE,
  Dimension_SAVINGS_PLANS_TYPE,
  Dimension_SAVINGS_PLAN_ARN,
  Dimension_SCOPE,
  Dimension_SERVICE,
  Dimension_SERVICE_CODE,
  Dimension_SUBSCRIPTION_ID,
  Dimension_TENANCY,
  Dimension_USAGE_TYPE,
  Dimension_USAGE_TYPE_GROUP,
  Dimension'
  #-}