{-# 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.SavingsPlansFilterName
-- 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.SavingsPlansFilterName
  ( SavingsPlansFilterName
      ( ..,
        SavingsPlansFilterName_Commitment,
        SavingsPlansFilterName_Ec2_instance_family,
        SavingsPlansFilterName_End,
        SavingsPlansFilterName_Payment_option,
        SavingsPlansFilterName_Region,
        SavingsPlansFilterName_Savings_plan_type,
        SavingsPlansFilterName_Start,
        SavingsPlansFilterName_Term,
        SavingsPlansFilterName_Upfront
      ),
  )
where

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

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

pattern SavingsPlansFilterName_Commitment :: SavingsPlansFilterName
pattern $bSavingsPlansFilterName_Commitment :: SavingsPlansFilterName
$mSavingsPlansFilterName_Commitment :: forall r.
SavingsPlansFilterName -> (Void# -> r) -> (Void# -> r) -> r
SavingsPlansFilterName_Commitment = SavingsPlansFilterName' "commitment"

pattern SavingsPlansFilterName_Ec2_instance_family :: SavingsPlansFilterName
pattern $bSavingsPlansFilterName_Ec2_instance_family :: SavingsPlansFilterName
$mSavingsPlansFilterName_Ec2_instance_family :: forall r.
SavingsPlansFilterName -> (Void# -> r) -> (Void# -> r) -> r
SavingsPlansFilterName_Ec2_instance_family = SavingsPlansFilterName' "ec2-instance-family"

pattern SavingsPlansFilterName_End :: SavingsPlansFilterName
pattern $bSavingsPlansFilterName_End :: SavingsPlansFilterName
$mSavingsPlansFilterName_End :: forall r.
SavingsPlansFilterName -> (Void# -> r) -> (Void# -> r) -> r
SavingsPlansFilterName_End = SavingsPlansFilterName' "end"

pattern SavingsPlansFilterName_Payment_option :: SavingsPlansFilterName
pattern $bSavingsPlansFilterName_Payment_option :: SavingsPlansFilterName
$mSavingsPlansFilterName_Payment_option :: forall r.
SavingsPlansFilterName -> (Void# -> r) -> (Void# -> r) -> r
SavingsPlansFilterName_Payment_option = SavingsPlansFilterName' "payment-option"

pattern SavingsPlansFilterName_Region :: SavingsPlansFilterName
pattern $bSavingsPlansFilterName_Region :: SavingsPlansFilterName
$mSavingsPlansFilterName_Region :: forall r.
SavingsPlansFilterName -> (Void# -> r) -> (Void# -> r) -> r
SavingsPlansFilterName_Region = SavingsPlansFilterName' "region"

pattern SavingsPlansFilterName_Savings_plan_type :: SavingsPlansFilterName
pattern $bSavingsPlansFilterName_Savings_plan_type :: SavingsPlansFilterName
$mSavingsPlansFilterName_Savings_plan_type :: forall r.
SavingsPlansFilterName -> (Void# -> r) -> (Void# -> r) -> r
SavingsPlansFilterName_Savings_plan_type = SavingsPlansFilterName' "savings-plan-type"

pattern SavingsPlansFilterName_Start :: SavingsPlansFilterName
pattern $bSavingsPlansFilterName_Start :: SavingsPlansFilterName
$mSavingsPlansFilterName_Start :: forall r.
SavingsPlansFilterName -> (Void# -> r) -> (Void# -> r) -> r
SavingsPlansFilterName_Start = SavingsPlansFilterName' "start"

pattern SavingsPlansFilterName_Term :: SavingsPlansFilterName
pattern $bSavingsPlansFilterName_Term :: SavingsPlansFilterName
$mSavingsPlansFilterName_Term :: forall r.
SavingsPlansFilterName -> (Void# -> r) -> (Void# -> r) -> r
SavingsPlansFilterName_Term = SavingsPlansFilterName' "term"

pattern SavingsPlansFilterName_Upfront :: SavingsPlansFilterName
pattern $bSavingsPlansFilterName_Upfront :: SavingsPlansFilterName
$mSavingsPlansFilterName_Upfront :: forall r.
SavingsPlansFilterName -> (Void# -> r) -> (Void# -> r) -> r
SavingsPlansFilterName_Upfront = SavingsPlansFilterName' "upfront"

{-# COMPLETE
  SavingsPlansFilterName_Commitment,
  SavingsPlansFilterName_Ec2_instance_family,
  SavingsPlansFilterName_End,
  SavingsPlansFilterName_Payment_option,
  SavingsPlansFilterName_Region,
  SavingsPlansFilterName_Savings_plan_type,
  SavingsPlansFilterName_Start,
  SavingsPlansFilterName_Term,
  SavingsPlansFilterName_Upfront,
  SavingsPlansFilterName'
  #-}