{-# 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.QueueType
-- 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.QueueType
  ( QueueType
      ( ..,
        QueueType_AGENT,
        QueueType_STANDARD
      ),
  )
where

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

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

pattern QueueType_AGENT :: QueueType
pattern $bQueueType_AGENT :: QueueType
$mQueueType_AGENT :: forall r. QueueType -> (Void# -> r) -> (Void# -> r) -> r
QueueType_AGENT = QueueType' "AGENT"

pattern QueueType_STANDARD :: QueueType
pattern $bQueueType_STANDARD :: QueueType
$mQueueType_STANDARD :: forall r. QueueType -> (Void# -> r) -> (Void# -> r) -> r
QueueType_STANDARD = QueueType' "STANDARD"

{-# COMPLETE
  QueueType_AGENT,
  QueueType_STANDARD,
  QueueType'
  #-}