{-# 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.Grouping
-- 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.Grouping
  ( Grouping
      ( ..,
        Grouping_CHANNEL,
        Grouping_QUEUE
      ),
  )
where

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

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

pattern Grouping_CHANNEL :: Grouping
pattern $bGrouping_CHANNEL :: Grouping
$mGrouping_CHANNEL :: forall r. Grouping -> (Void# -> r) -> (Void# -> r) -> r
Grouping_CHANNEL = Grouping' "CHANNEL"

pattern Grouping_QUEUE :: Grouping
pattern $bGrouping_QUEUE :: Grouping
$mGrouping_QUEUE :: forall r. Grouping -> (Void# -> r) -> (Void# -> r) -> r
Grouping_QUEUE = Grouping' "QUEUE"

{-# COMPLETE
  Grouping_CHANNEL,
  Grouping_QUEUE,
  Grouping'
  #-}