{-# 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.ContactFlowType
-- 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.Connect.Types.ContactFlowType
  ( ContactFlowType
      ( ..,
        ContactFlowType_AGENT_HOLD,
        ContactFlowType_AGENT_TRANSFER,
        ContactFlowType_AGENT_WHISPER,
        ContactFlowType_CONTACT_FLOW,
        ContactFlowType_CUSTOMER_HOLD,
        ContactFlowType_CUSTOMER_QUEUE,
        ContactFlowType_CUSTOMER_WHISPER,
        ContactFlowType_OUTBOUND_WHISPER,
        ContactFlowType_QUEUE_TRANSFER
      ),
  )
where

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

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

pattern ContactFlowType_AGENT_HOLD :: ContactFlowType
pattern $bContactFlowType_AGENT_HOLD :: ContactFlowType
$mContactFlowType_AGENT_HOLD :: forall r. ContactFlowType -> (Void# -> r) -> (Void# -> r) -> r
ContactFlowType_AGENT_HOLD = ContactFlowType' "AGENT_HOLD"

pattern ContactFlowType_AGENT_TRANSFER :: ContactFlowType
pattern $bContactFlowType_AGENT_TRANSFER :: ContactFlowType
$mContactFlowType_AGENT_TRANSFER :: forall r. ContactFlowType -> (Void# -> r) -> (Void# -> r) -> r
ContactFlowType_AGENT_TRANSFER = ContactFlowType' "AGENT_TRANSFER"

pattern ContactFlowType_AGENT_WHISPER :: ContactFlowType
pattern $bContactFlowType_AGENT_WHISPER :: ContactFlowType
$mContactFlowType_AGENT_WHISPER :: forall r. ContactFlowType -> (Void# -> r) -> (Void# -> r) -> r
ContactFlowType_AGENT_WHISPER = ContactFlowType' "AGENT_WHISPER"

pattern ContactFlowType_CONTACT_FLOW :: ContactFlowType
pattern $bContactFlowType_CONTACT_FLOW :: ContactFlowType
$mContactFlowType_CONTACT_FLOW :: forall r. ContactFlowType -> (Void# -> r) -> (Void# -> r) -> r
ContactFlowType_CONTACT_FLOW = ContactFlowType' "CONTACT_FLOW"

pattern ContactFlowType_CUSTOMER_HOLD :: ContactFlowType
pattern $bContactFlowType_CUSTOMER_HOLD :: ContactFlowType
$mContactFlowType_CUSTOMER_HOLD :: forall r. ContactFlowType -> (Void# -> r) -> (Void# -> r) -> r
ContactFlowType_CUSTOMER_HOLD = ContactFlowType' "CUSTOMER_HOLD"

pattern ContactFlowType_CUSTOMER_QUEUE :: ContactFlowType
pattern $bContactFlowType_CUSTOMER_QUEUE :: ContactFlowType
$mContactFlowType_CUSTOMER_QUEUE :: forall r. ContactFlowType -> (Void# -> r) -> (Void# -> r) -> r
ContactFlowType_CUSTOMER_QUEUE = ContactFlowType' "CUSTOMER_QUEUE"

pattern ContactFlowType_CUSTOMER_WHISPER :: ContactFlowType
pattern $bContactFlowType_CUSTOMER_WHISPER :: ContactFlowType
$mContactFlowType_CUSTOMER_WHISPER :: forall r. ContactFlowType -> (Void# -> r) -> (Void# -> r) -> r
ContactFlowType_CUSTOMER_WHISPER = ContactFlowType' "CUSTOMER_WHISPER"

pattern ContactFlowType_OUTBOUND_WHISPER :: ContactFlowType
pattern $bContactFlowType_OUTBOUND_WHISPER :: ContactFlowType
$mContactFlowType_OUTBOUND_WHISPER :: forall r. ContactFlowType -> (Void# -> r) -> (Void# -> r) -> r
ContactFlowType_OUTBOUND_WHISPER = ContactFlowType' "OUTBOUND_WHISPER"

pattern ContactFlowType_QUEUE_TRANSFER :: ContactFlowType
pattern $bContactFlowType_QUEUE_TRANSFER :: ContactFlowType
$mContactFlowType_QUEUE_TRANSFER :: forall r. ContactFlowType -> (Void# -> r) -> (Void# -> r) -> r
ContactFlowType_QUEUE_TRANSFER = ContactFlowType' "QUEUE_TRANSFER"

{-# COMPLETE
  ContactFlowType_AGENT_HOLD,
  ContactFlowType_AGENT_TRANSFER,
  ContactFlowType_AGENT_WHISPER,
  ContactFlowType_CONTACT_FLOW,
  ContactFlowType_CUSTOMER_HOLD,
  ContactFlowType_CUSTOMER_QUEUE,
  ContactFlowType_CUSTOMER_WHISPER,
  ContactFlowType_OUTBOUND_WHISPER,
  ContactFlowType_QUEUE_TRANSFER,
  ContactFlowType'
  #-}