{-# 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.SavingsPlans.Types.SavingsPlanState
-- 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.SavingsPlans.Types.SavingsPlanState
  ( SavingsPlanState
      ( ..,
        SavingsPlanState_Active,
        SavingsPlanState_Payment_failed,
        SavingsPlanState_Payment_pending,
        SavingsPlanState_Queued,
        SavingsPlanState_Queued_deleted,
        SavingsPlanState_Retired
      ),
  )
where

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

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

pattern SavingsPlanState_Active :: SavingsPlanState
pattern $bSavingsPlanState_Active :: SavingsPlanState
$mSavingsPlanState_Active :: forall r. SavingsPlanState -> (Void# -> r) -> (Void# -> r) -> r
SavingsPlanState_Active = SavingsPlanState' "active"

pattern SavingsPlanState_Payment_failed :: SavingsPlanState
pattern $bSavingsPlanState_Payment_failed :: SavingsPlanState
$mSavingsPlanState_Payment_failed :: forall r. SavingsPlanState -> (Void# -> r) -> (Void# -> r) -> r
SavingsPlanState_Payment_failed = SavingsPlanState' "payment-failed"

pattern SavingsPlanState_Payment_pending :: SavingsPlanState
pattern $bSavingsPlanState_Payment_pending :: SavingsPlanState
$mSavingsPlanState_Payment_pending :: forall r. SavingsPlanState -> (Void# -> r) -> (Void# -> r) -> r
SavingsPlanState_Payment_pending = SavingsPlanState' "payment-pending"

pattern SavingsPlanState_Queued :: SavingsPlanState
pattern $bSavingsPlanState_Queued :: SavingsPlanState
$mSavingsPlanState_Queued :: forall r. SavingsPlanState -> (Void# -> r) -> (Void# -> r) -> r
SavingsPlanState_Queued = SavingsPlanState' "queued"

pattern SavingsPlanState_Queued_deleted :: SavingsPlanState
pattern $bSavingsPlanState_Queued_deleted :: SavingsPlanState
$mSavingsPlanState_Queued_deleted :: forall r. SavingsPlanState -> (Void# -> r) -> (Void# -> r) -> r
SavingsPlanState_Queued_deleted = SavingsPlanState' "queued-deleted"

pattern SavingsPlanState_Retired :: SavingsPlanState
pattern $bSavingsPlanState_Retired :: SavingsPlanState
$mSavingsPlanState_Retired :: forall r. SavingsPlanState -> (Void# -> r) -> (Void# -> r) -> r
SavingsPlanState_Retired = SavingsPlanState' "retired"

{-# COMPLETE
  SavingsPlanState_Active,
  SavingsPlanState_Payment_failed,
  SavingsPlanState_Payment_pending,
  SavingsPlanState_Queued,
  SavingsPlanState_Queued_deleted,
  SavingsPlanState_Retired,
  SavingsPlanState'
  #-}