{-# 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.OfferingClass
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CostExplorer.Types.OfferingClass
  ( OfferingClass
      ( ..,
        OfferingClass_CONVERTIBLE,
        OfferingClass_STANDARD
      ),
  )
where

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

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

pattern OfferingClass_CONVERTIBLE :: OfferingClass
pattern $bOfferingClass_CONVERTIBLE :: OfferingClass
$mOfferingClass_CONVERTIBLE :: forall {r}. OfferingClass -> ((# #) -> r) -> ((# #) -> r) -> r
OfferingClass_CONVERTIBLE = OfferingClass' "CONVERTIBLE"

pattern OfferingClass_STANDARD :: OfferingClass
pattern $bOfferingClass_STANDARD :: OfferingClass
$mOfferingClass_STANDARD :: forall {r}. OfferingClass -> ((# #) -> r) -> ((# #) -> r) -> r
OfferingClass_STANDARD = OfferingClass' "STANDARD"

{-# COMPLETE
  OfferingClass_CONVERTIBLE,
  OfferingClass_STANDARD,
  OfferingClass'
  #-}