{-# 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.Pinpoint.Types.EndpointTypesElement
-- 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.Pinpoint.Types.EndpointTypesElement
  ( EndpointTypesElement
      ( ..,
        EndpointTypesElement_ADM,
        EndpointTypesElement_APNS,
        EndpointTypesElement_APNS_SANDBOX,
        EndpointTypesElement_APNS_VOIP,
        EndpointTypesElement_APNS_VOIP_SANDBOX,
        EndpointTypesElement_BAIDU,
        EndpointTypesElement_CUSTOM,
        EndpointTypesElement_EMAIL,
        EndpointTypesElement_GCM,
        EndpointTypesElement_IN_APP,
        EndpointTypesElement_PUSH,
        EndpointTypesElement_SMS,
        EndpointTypesElement_VOICE
      ),
  )
where

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

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

pattern EndpointTypesElement_ADM :: EndpointTypesElement
pattern $bEndpointTypesElement_ADM :: EndpointTypesElement
$mEndpointTypesElement_ADM :: forall r. EndpointTypesElement -> (Void# -> r) -> (Void# -> r) -> r
EndpointTypesElement_ADM = EndpointTypesElement' "ADM"

pattern EndpointTypesElement_APNS :: EndpointTypesElement
pattern $bEndpointTypesElement_APNS :: EndpointTypesElement
$mEndpointTypesElement_APNS :: forall r. EndpointTypesElement -> (Void# -> r) -> (Void# -> r) -> r
EndpointTypesElement_APNS = EndpointTypesElement' "APNS"

pattern EndpointTypesElement_APNS_SANDBOX :: EndpointTypesElement
pattern $bEndpointTypesElement_APNS_SANDBOX :: EndpointTypesElement
$mEndpointTypesElement_APNS_SANDBOX :: forall r. EndpointTypesElement -> (Void# -> r) -> (Void# -> r) -> r
EndpointTypesElement_APNS_SANDBOX = EndpointTypesElement' "APNS_SANDBOX"

pattern EndpointTypesElement_APNS_VOIP :: EndpointTypesElement
pattern $bEndpointTypesElement_APNS_VOIP :: EndpointTypesElement
$mEndpointTypesElement_APNS_VOIP :: forall r. EndpointTypesElement -> (Void# -> r) -> (Void# -> r) -> r
EndpointTypesElement_APNS_VOIP = EndpointTypesElement' "APNS_VOIP"

pattern EndpointTypesElement_APNS_VOIP_SANDBOX :: EndpointTypesElement
pattern $bEndpointTypesElement_APNS_VOIP_SANDBOX :: EndpointTypesElement
$mEndpointTypesElement_APNS_VOIP_SANDBOX :: forall r. EndpointTypesElement -> (Void# -> r) -> (Void# -> r) -> r
EndpointTypesElement_APNS_VOIP_SANDBOX = EndpointTypesElement' "APNS_VOIP_SANDBOX"

pattern EndpointTypesElement_BAIDU :: EndpointTypesElement
pattern $bEndpointTypesElement_BAIDU :: EndpointTypesElement
$mEndpointTypesElement_BAIDU :: forall r. EndpointTypesElement -> (Void# -> r) -> (Void# -> r) -> r
EndpointTypesElement_BAIDU = EndpointTypesElement' "BAIDU"

pattern EndpointTypesElement_CUSTOM :: EndpointTypesElement
pattern $bEndpointTypesElement_CUSTOM :: EndpointTypesElement
$mEndpointTypesElement_CUSTOM :: forall r. EndpointTypesElement -> (Void# -> r) -> (Void# -> r) -> r
EndpointTypesElement_CUSTOM = EndpointTypesElement' "CUSTOM"

pattern EndpointTypesElement_EMAIL :: EndpointTypesElement
pattern $bEndpointTypesElement_EMAIL :: EndpointTypesElement
$mEndpointTypesElement_EMAIL :: forall r. EndpointTypesElement -> (Void# -> r) -> (Void# -> r) -> r
EndpointTypesElement_EMAIL = EndpointTypesElement' "EMAIL"

pattern EndpointTypesElement_GCM :: EndpointTypesElement
pattern $bEndpointTypesElement_GCM :: EndpointTypesElement
$mEndpointTypesElement_GCM :: forall r. EndpointTypesElement -> (Void# -> r) -> (Void# -> r) -> r
EndpointTypesElement_GCM = EndpointTypesElement' "GCM"

pattern EndpointTypesElement_IN_APP :: EndpointTypesElement
pattern $bEndpointTypesElement_IN_APP :: EndpointTypesElement
$mEndpointTypesElement_IN_APP :: forall r. EndpointTypesElement -> (Void# -> r) -> (Void# -> r) -> r
EndpointTypesElement_IN_APP = EndpointTypesElement' "IN_APP"

pattern EndpointTypesElement_PUSH :: EndpointTypesElement
pattern $bEndpointTypesElement_PUSH :: EndpointTypesElement
$mEndpointTypesElement_PUSH :: forall r. EndpointTypesElement -> (Void# -> r) -> (Void# -> r) -> r
EndpointTypesElement_PUSH = EndpointTypesElement' "PUSH"

pattern EndpointTypesElement_SMS :: EndpointTypesElement
pattern $bEndpointTypesElement_SMS :: EndpointTypesElement
$mEndpointTypesElement_SMS :: forall r. EndpointTypesElement -> (Void# -> r) -> (Void# -> r) -> r
EndpointTypesElement_SMS = EndpointTypesElement' "SMS"

pattern EndpointTypesElement_VOICE :: EndpointTypesElement
pattern $bEndpointTypesElement_VOICE :: EndpointTypesElement
$mEndpointTypesElement_VOICE :: forall r. EndpointTypesElement -> (Void# -> r) -> (Void# -> r) -> r
EndpointTypesElement_VOICE = EndpointTypesElement' "VOICE"

{-# COMPLETE
  EndpointTypesElement_ADM,
  EndpointTypesElement_APNS,
  EndpointTypesElement_APNS_SANDBOX,
  EndpointTypesElement_APNS_VOIP,
  EndpointTypesElement_APNS_VOIP_SANDBOX,
  EndpointTypesElement_BAIDU,
  EndpointTypesElement_CUSTOM,
  EndpointTypesElement_EMAIL,
  EndpointTypesElement_GCM,
  EndpointTypesElement_IN_APP,
  EndpointTypesElement_PUSH,
  EndpointTypesElement_SMS,
  EndpointTypesElement_VOICE,
  EndpointTypesElement'
  #-}