{-# 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.ContactState
-- 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.ContactState
  ( ContactState
      ( ..,
        ContactState_CONNECTED,
        ContactState_CONNECTED_ONHOLD,
        ContactState_CONNECTING,
        ContactState_ENDED,
        ContactState_ERROR,
        ContactState_INCOMING,
        ContactState_MISSED,
        ContactState_PENDING,
        ContactState_REJECTED
      ),
  )
where

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

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

pattern ContactState_CONNECTED :: ContactState
pattern $bContactState_CONNECTED :: ContactState
$mContactState_CONNECTED :: forall {r}. ContactState -> ((# #) -> r) -> ((# #) -> r) -> r
ContactState_CONNECTED = ContactState' "CONNECTED"

pattern ContactState_CONNECTED_ONHOLD :: ContactState
pattern $bContactState_CONNECTED_ONHOLD :: ContactState
$mContactState_CONNECTED_ONHOLD :: forall {r}. ContactState -> ((# #) -> r) -> ((# #) -> r) -> r
ContactState_CONNECTED_ONHOLD = ContactState' "CONNECTED_ONHOLD"

pattern ContactState_CONNECTING :: ContactState
pattern $bContactState_CONNECTING :: ContactState
$mContactState_CONNECTING :: forall {r}. ContactState -> ((# #) -> r) -> ((# #) -> r) -> r
ContactState_CONNECTING = ContactState' "CONNECTING"

pattern ContactState_ENDED :: ContactState
pattern $bContactState_ENDED :: ContactState
$mContactState_ENDED :: forall {r}. ContactState -> ((# #) -> r) -> ((# #) -> r) -> r
ContactState_ENDED = ContactState' "ENDED"

pattern ContactState_ERROR :: ContactState
pattern $bContactState_ERROR :: ContactState
$mContactState_ERROR :: forall {r}. ContactState -> ((# #) -> r) -> ((# #) -> r) -> r
ContactState_ERROR = ContactState' "ERROR"

pattern ContactState_INCOMING :: ContactState
pattern $bContactState_INCOMING :: ContactState
$mContactState_INCOMING :: forall {r}. ContactState -> ((# #) -> r) -> ((# #) -> r) -> r
ContactState_INCOMING = ContactState' "INCOMING"

pattern ContactState_MISSED :: ContactState
pattern $bContactState_MISSED :: ContactState
$mContactState_MISSED :: forall {r}. ContactState -> ((# #) -> r) -> ((# #) -> r) -> r
ContactState_MISSED = ContactState' "MISSED"

pattern ContactState_PENDING :: ContactState
pattern $bContactState_PENDING :: ContactState
$mContactState_PENDING :: forall {r}. ContactState -> ((# #) -> r) -> ((# #) -> r) -> r
ContactState_PENDING = ContactState' "PENDING"

pattern ContactState_REJECTED :: ContactState
pattern $bContactState_REJECTED :: ContactState
$mContactState_REJECTED :: forall {r}. ContactState -> ((# #) -> r) -> ((# #) -> r) -> r
ContactState_REJECTED = ContactState' "REJECTED"

{-# COMPLETE
  ContactState_CONNECTED,
  ContactState_CONNECTED_ONHOLD,
  ContactState_CONNECTING,
  ContactState_ENDED,
  ContactState_ERROR,
  ContactState_INCOMING,
  ContactState_MISSED,
  ContactState_PENDING,
  ContactState_REJECTED,
  ContactState'
  #-}