{-# 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.AttributeType
-- 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.AttributeType
  ( AttributeType
      ( ..,
        AttributeType_AFTER,
        AttributeType_BEFORE,
        AttributeType_BETWEEN,
        AttributeType_CONTAINS,
        AttributeType_EXCLUSIVE,
        AttributeType_INCLUSIVE,
        AttributeType_ON
      ),
  )
where

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

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

pattern AttributeType_AFTER :: AttributeType
pattern $bAttributeType_AFTER :: AttributeType
$mAttributeType_AFTER :: forall r. AttributeType -> (Void# -> r) -> (Void# -> r) -> r
AttributeType_AFTER = AttributeType' "AFTER"

pattern AttributeType_BEFORE :: AttributeType
pattern $bAttributeType_BEFORE :: AttributeType
$mAttributeType_BEFORE :: forall r. AttributeType -> (Void# -> r) -> (Void# -> r) -> r
AttributeType_BEFORE = AttributeType' "BEFORE"

pattern AttributeType_BETWEEN :: AttributeType
pattern $bAttributeType_BETWEEN :: AttributeType
$mAttributeType_BETWEEN :: forall r. AttributeType -> (Void# -> r) -> (Void# -> r) -> r
AttributeType_BETWEEN = AttributeType' "BETWEEN"

pattern AttributeType_CONTAINS :: AttributeType
pattern $bAttributeType_CONTAINS :: AttributeType
$mAttributeType_CONTAINS :: forall r. AttributeType -> (Void# -> r) -> (Void# -> r) -> r
AttributeType_CONTAINS = AttributeType' "CONTAINS"

pattern AttributeType_EXCLUSIVE :: AttributeType
pattern $bAttributeType_EXCLUSIVE :: AttributeType
$mAttributeType_EXCLUSIVE :: forall r. AttributeType -> (Void# -> r) -> (Void# -> r) -> r
AttributeType_EXCLUSIVE = AttributeType' "EXCLUSIVE"

pattern AttributeType_INCLUSIVE :: AttributeType
pattern $bAttributeType_INCLUSIVE :: AttributeType
$mAttributeType_INCLUSIVE :: forall r. AttributeType -> (Void# -> r) -> (Void# -> r) -> r
AttributeType_INCLUSIVE = AttributeType' "INCLUSIVE"

pattern AttributeType_ON :: AttributeType
pattern $bAttributeType_ON :: AttributeType
$mAttributeType_ON :: forall r. AttributeType -> (Void# -> r) -> (Void# -> r) -> r
AttributeType_ON = AttributeType' "ON"

{-# COMPLETE
  AttributeType_AFTER,
  AttributeType_BEFORE,
  AttributeType_BETWEEN,
  AttributeType_CONTAINS,
  AttributeType_EXCLUSIVE,
  AttributeType_INCLUSIVE,
  AttributeType_ON,
  AttributeType'
  #-}