{-# 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.Kendra.Types.SlackEntity
-- 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.Kendra.Types.SlackEntity
  ( SlackEntity
      ( ..,
        SlackEntity_DIRECT_MESSAGE,
        SlackEntity_GROUP_MESSAGE,
        SlackEntity_PRIVATE_CHANNEL,
        SlackEntity_PUBLIC_CHANNEL
      ),
  )
where

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

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

pattern SlackEntity_DIRECT_MESSAGE :: SlackEntity
pattern $bSlackEntity_DIRECT_MESSAGE :: SlackEntity
$mSlackEntity_DIRECT_MESSAGE :: forall {r}. SlackEntity -> ((# #) -> r) -> ((# #) -> r) -> r
SlackEntity_DIRECT_MESSAGE = SlackEntity' "DIRECT_MESSAGE"

pattern SlackEntity_GROUP_MESSAGE :: SlackEntity
pattern $bSlackEntity_GROUP_MESSAGE :: SlackEntity
$mSlackEntity_GROUP_MESSAGE :: forall {r}. SlackEntity -> ((# #) -> r) -> ((# #) -> r) -> r
SlackEntity_GROUP_MESSAGE = SlackEntity' "GROUP_MESSAGE"

pattern SlackEntity_PRIVATE_CHANNEL :: SlackEntity
pattern $bSlackEntity_PRIVATE_CHANNEL :: SlackEntity
$mSlackEntity_PRIVATE_CHANNEL :: forall {r}. SlackEntity -> ((# #) -> r) -> ((# #) -> r) -> r
SlackEntity_PRIVATE_CHANNEL = SlackEntity' "PRIVATE_CHANNEL"

pattern SlackEntity_PUBLIC_CHANNEL :: SlackEntity
pattern $bSlackEntity_PUBLIC_CHANNEL :: SlackEntity
$mSlackEntity_PUBLIC_CHANNEL :: forall {r}. SlackEntity -> ((# #) -> r) -> ((# #) -> r) -> r
SlackEntity_PUBLIC_CHANNEL = SlackEntity' "PUBLIC_CHANNEL"

{-# COMPLETE
  SlackEntity_DIRECT_MESSAGE,
  SlackEntity_GROUP_MESSAGE,
  SlackEntity_PRIVATE_CHANNEL,
  SlackEntity_PUBLIC_CHANNEL,
  SlackEntity'
  #-}