{-# 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-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.OfferingClass
  ( OfferingClass
      ( ..,
        OfferingClass_CONVERTIBLE,
        OfferingClass_STANDARD
      ),
  )
where

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

newtype OfferingClass = OfferingClass'
  { OfferingClass -> Text
fromOfferingClass ::
      Core.Text
  }
  deriving stock
    ( Int -> OfferingClass -> ShowS
[OfferingClass] -> ShowS
OfferingClass -> String
(Int -> OfferingClass -> ShowS)
-> (OfferingClass -> String)
-> ([OfferingClass] -> ShowS)
-> Show OfferingClass
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]
(Int -> ReadS OfferingClass)
-> ReadS [OfferingClass]
-> ReadPrec OfferingClass
-> ReadPrec [OfferingClass]
-> Read 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
(OfferingClass -> OfferingClass -> Bool)
-> (OfferingClass -> OfferingClass -> Bool) -> Eq OfferingClass
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
Eq OfferingClass
-> (OfferingClass -> OfferingClass -> Ordering)
-> (OfferingClass -> OfferingClass -> Bool)
-> (OfferingClass -> OfferingClass -> Bool)
-> (OfferingClass -> OfferingClass -> Bool)
-> (OfferingClass -> OfferingClass -> Bool)
-> (OfferingClass -> OfferingClass -> OfferingClass)
-> (OfferingClass -> OfferingClass -> OfferingClass)
-> Ord 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
$cp1Ord :: Eq OfferingClass
Prelude.Ord,
      (forall x. OfferingClass -> Rep OfferingClass x)
-> (forall x. Rep OfferingClass x -> OfferingClass)
-> Generic OfferingClass
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
    ( Int -> OfferingClass -> Int
OfferingClass -> Int
(Int -> OfferingClass -> Int)
-> (OfferingClass -> Int) -> Hashable OfferingClass
forall 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 -> ()
(OfferingClass -> ()) -> NFData OfferingClass
forall a. (a -> ()) -> NFData a
rnf :: OfferingClass -> ()
$crnf :: OfferingClass -> ()
Prelude.NFData,
      Text -> Either String OfferingClass
(Text -> Either String OfferingClass) -> FromText OfferingClass
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String OfferingClass
$cfromText :: Text -> Either String OfferingClass
Core.FromText,
      OfferingClass -> Text
(OfferingClass -> Text) -> ToText OfferingClass
forall a. (a -> Text) -> ToText a
toText :: OfferingClass -> Text
$ctoText :: OfferingClass -> Text
Core.ToText,
      OfferingClass -> ByteString
(OfferingClass -> ByteString) -> ToByteString OfferingClass
forall a. (a -> ByteString) -> ToByteString a
toBS :: OfferingClass -> ByteString
$ctoBS :: OfferingClass -> ByteString
Core.ToByteString,
      OfferingClass -> ByteStringBuilder
(OfferingClass -> ByteStringBuilder) -> ToLog OfferingClass
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: OfferingClass -> ByteStringBuilder
$cbuild :: OfferingClass -> ByteStringBuilder
Core.ToLog,
      HeaderName -> OfferingClass -> [Header]
(HeaderName -> OfferingClass -> [Header]) -> ToHeader OfferingClass
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> OfferingClass -> [Header]
$ctoHeader :: HeaderName -> OfferingClass -> [Header]
Core.ToHeader,
      OfferingClass -> QueryString
(OfferingClass -> QueryString) -> ToQuery OfferingClass
forall a. (a -> QueryString) -> ToQuery a
toQuery :: OfferingClass -> QueryString
$ctoQuery :: OfferingClass -> QueryString
Core.ToQuery,
      Value -> Parser [OfferingClass]
Value -> Parser OfferingClass
(Value -> Parser OfferingClass)
-> (Value -> Parser [OfferingClass]) -> FromJSON 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
Core.FromJSON,
      FromJSONKeyFunction [OfferingClass]
FromJSONKeyFunction OfferingClass
FromJSONKeyFunction OfferingClass
-> FromJSONKeyFunction [OfferingClass] -> FromJSONKey OfferingClass
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [OfferingClass]
$cfromJSONKeyList :: FromJSONKeyFunction [OfferingClass]
fromJSONKey :: FromJSONKeyFunction OfferingClass
$cfromJSONKey :: FromJSONKeyFunction OfferingClass
Core.FromJSONKey,
      [OfferingClass] -> Encoding
[OfferingClass] -> Value
OfferingClass -> Encoding
OfferingClass -> Value
(OfferingClass -> Value)
-> (OfferingClass -> Encoding)
-> ([OfferingClass] -> Value)
-> ([OfferingClass] -> Encoding)
-> ToJSON OfferingClass
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
Core.ToJSON,
      ToJSONKeyFunction [OfferingClass]
ToJSONKeyFunction OfferingClass
ToJSONKeyFunction OfferingClass
-> ToJSONKeyFunction [OfferingClass] -> ToJSONKey OfferingClass
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [OfferingClass]
$ctoJSONKeyList :: ToJSONKeyFunction [OfferingClass]
toJSONKey :: ToJSONKeyFunction OfferingClass
$ctoJSONKey :: ToJSONKeyFunction OfferingClass
Core.ToJSONKey,
      [Node] -> Either String OfferingClass
([Node] -> Either String OfferingClass) -> FromXML OfferingClass
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String OfferingClass
$cparseXML :: [Node] -> Either String OfferingClass
Core.FromXML,
      OfferingClass -> XML
(OfferingClass -> XML) -> ToXML OfferingClass
forall a. (a -> XML) -> ToXML a
toXML :: OfferingClass -> XML
$ctoXML :: OfferingClass -> XML
Core.ToXML
    )

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

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

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