{-# 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.Connect.Types.ReferenceType
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Connect.Types.ReferenceType
  ( ReferenceType
      ( ..,
        ReferenceType_ATTACHMENT,
        ReferenceType_DATE,
        ReferenceType_EMAIL,
        ReferenceType_NUMBER,
        ReferenceType_STRING,
        ReferenceType_URL
      ),
  )
where

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

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

pattern ReferenceType_ATTACHMENT :: ReferenceType
pattern $bReferenceType_ATTACHMENT :: ReferenceType
$mReferenceType_ATTACHMENT :: forall {r}. ReferenceType -> ((# #) -> r) -> ((# #) -> r) -> r
ReferenceType_ATTACHMENT = ReferenceType' "ATTACHMENT"

pattern ReferenceType_DATE :: ReferenceType
pattern $bReferenceType_DATE :: ReferenceType
$mReferenceType_DATE :: forall {r}. ReferenceType -> ((# #) -> r) -> ((# #) -> r) -> r
ReferenceType_DATE = ReferenceType' "DATE"

pattern ReferenceType_EMAIL :: ReferenceType
pattern $bReferenceType_EMAIL :: ReferenceType
$mReferenceType_EMAIL :: forall {r}. ReferenceType -> ((# #) -> r) -> ((# #) -> r) -> r
ReferenceType_EMAIL = ReferenceType' "EMAIL"

pattern ReferenceType_NUMBER :: ReferenceType
pattern $bReferenceType_NUMBER :: ReferenceType
$mReferenceType_NUMBER :: forall {r}. ReferenceType -> ((# #) -> r) -> ((# #) -> r) -> r
ReferenceType_NUMBER = ReferenceType' "NUMBER"

pattern ReferenceType_STRING :: ReferenceType
pattern $bReferenceType_STRING :: ReferenceType
$mReferenceType_STRING :: forall {r}. ReferenceType -> ((# #) -> r) -> ((# #) -> r) -> r
ReferenceType_STRING = ReferenceType' "STRING"

pattern ReferenceType_URL :: ReferenceType
pattern $bReferenceType_URL :: ReferenceType
$mReferenceType_URL :: forall {r}. ReferenceType -> ((# #) -> r) -> ((# #) -> r) -> r
ReferenceType_URL = ReferenceType' "URL"

{-# COMPLETE
  ReferenceType_ATTACHMENT,
  ReferenceType_DATE,
  ReferenceType_EMAIL,
  ReferenceType_NUMBER,
  ReferenceType_STRING,
  ReferenceType_URL,
  ReferenceType'
  #-}