{-# 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.IAM.Types.ContextKeyTypeEnum
-- 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.IAM.Types.ContextKeyTypeEnum
  ( ContextKeyTypeEnum
      ( ..,
        ContextKeyTypeEnum_Binary,
        ContextKeyTypeEnum_BinaryList,
        ContextKeyTypeEnum_Boolean,
        ContextKeyTypeEnum_BooleanList,
        ContextKeyTypeEnum_Date,
        ContextKeyTypeEnum_DateList,
        ContextKeyTypeEnum_Ip,
        ContextKeyTypeEnum_IpList,
        ContextKeyTypeEnum_Numeric,
        ContextKeyTypeEnum_NumericList,
        ContextKeyTypeEnum_String,
        ContextKeyTypeEnum_StringList
      ),
  )
where

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

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

pattern ContextKeyTypeEnum_Binary :: ContextKeyTypeEnum
pattern $bContextKeyTypeEnum_Binary :: ContextKeyTypeEnum
$mContextKeyTypeEnum_Binary :: forall r. ContextKeyTypeEnum -> (Void# -> r) -> (Void# -> r) -> r
ContextKeyTypeEnum_Binary = ContextKeyTypeEnum' "binary"

pattern ContextKeyTypeEnum_BinaryList :: ContextKeyTypeEnum
pattern $bContextKeyTypeEnum_BinaryList :: ContextKeyTypeEnum
$mContextKeyTypeEnum_BinaryList :: forall r. ContextKeyTypeEnum -> (Void# -> r) -> (Void# -> r) -> r
ContextKeyTypeEnum_BinaryList = ContextKeyTypeEnum' "binaryList"

pattern ContextKeyTypeEnum_Boolean :: ContextKeyTypeEnum
pattern $bContextKeyTypeEnum_Boolean :: ContextKeyTypeEnum
$mContextKeyTypeEnum_Boolean :: forall r. ContextKeyTypeEnum -> (Void# -> r) -> (Void# -> r) -> r
ContextKeyTypeEnum_Boolean = ContextKeyTypeEnum' "boolean"

pattern ContextKeyTypeEnum_BooleanList :: ContextKeyTypeEnum
pattern $bContextKeyTypeEnum_BooleanList :: ContextKeyTypeEnum
$mContextKeyTypeEnum_BooleanList :: forall r. ContextKeyTypeEnum -> (Void# -> r) -> (Void# -> r) -> r
ContextKeyTypeEnum_BooleanList = ContextKeyTypeEnum' "booleanList"

pattern ContextKeyTypeEnum_Date :: ContextKeyTypeEnum
pattern $bContextKeyTypeEnum_Date :: ContextKeyTypeEnum
$mContextKeyTypeEnum_Date :: forall r. ContextKeyTypeEnum -> (Void# -> r) -> (Void# -> r) -> r
ContextKeyTypeEnum_Date = ContextKeyTypeEnum' "date"

pattern ContextKeyTypeEnum_DateList :: ContextKeyTypeEnum
pattern $bContextKeyTypeEnum_DateList :: ContextKeyTypeEnum
$mContextKeyTypeEnum_DateList :: forall r. ContextKeyTypeEnum -> (Void# -> r) -> (Void# -> r) -> r
ContextKeyTypeEnum_DateList = ContextKeyTypeEnum' "dateList"

pattern ContextKeyTypeEnum_Ip :: ContextKeyTypeEnum
pattern $bContextKeyTypeEnum_Ip :: ContextKeyTypeEnum
$mContextKeyTypeEnum_Ip :: forall r. ContextKeyTypeEnum -> (Void# -> r) -> (Void# -> r) -> r
ContextKeyTypeEnum_Ip = ContextKeyTypeEnum' "ip"

pattern ContextKeyTypeEnum_IpList :: ContextKeyTypeEnum
pattern $bContextKeyTypeEnum_IpList :: ContextKeyTypeEnum
$mContextKeyTypeEnum_IpList :: forall r. ContextKeyTypeEnum -> (Void# -> r) -> (Void# -> r) -> r
ContextKeyTypeEnum_IpList = ContextKeyTypeEnum' "ipList"

pattern ContextKeyTypeEnum_Numeric :: ContextKeyTypeEnum
pattern $bContextKeyTypeEnum_Numeric :: ContextKeyTypeEnum
$mContextKeyTypeEnum_Numeric :: forall r. ContextKeyTypeEnum -> (Void# -> r) -> (Void# -> r) -> r
ContextKeyTypeEnum_Numeric = ContextKeyTypeEnum' "numeric"

pattern ContextKeyTypeEnum_NumericList :: ContextKeyTypeEnum
pattern $bContextKeyTypeEnum_NumericList :: ContextKeyTypeEnum
$mContextKeyTypeEnum_NumericList :: forall r. ContextKeyTypeEnum -> (Void# -> r) -> (Void# -> r) -> r
ContextKeyTypeEnum_NumericList = ContextKeyTypeEnum' "numericList"

pattern ContextKeyTypeEnum_String :: ContextKeyTypeEnum
pattern $bContextKeyTypeEnum_String :: ContextKeyTypeEnum
$mContextKeyTypeEnum_String :: forall r. ContextKeyTypeEnum -> (Void# -> r) -> (Void# -> r) -> r
ContextKeyTypeEnum_String = ContextKeyTypeEnum' "string"

pattern ContextKeyTypeEnum_StringList :: ContextKeyTypeEnum
pattern $bContextKeyTypeEnum_StringList :: ContextKeyTypeEnum
$mContextKeyTypeEnum_StringList :: forall r. ContextKeyTypeEnum -> (Void# -> r) -> (Void# -> r) -> r
ContextKeyTypeEnum_StringList = ContextKeyTypeEnum' "stringList"

{-# COMPLETE
  ContextKeyTypeEnum_Binary,
  ContextKeyTypeEnum_BinaryList,
  ContextKeyTypeEnum_Boolean,
  ContextKeyTypeEnum_BooleanList,
  ContextKeyTypeEnum_Date,
  ContextKeyTypeEnum_DateList,
  ContextKeyTypeEnum_Ip,
  ContextKeyTypeEnum_IpList,
  ContextKeyTypeEnum_Numeric,
  ContextKeyTypeEnum_NumericList,
  ContextKeyTypeEnum_String,
  ContextKeyTypeEnum_StringList,
  ContextKeyTypeEnum'
  #-}