{-# 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.Chime.Types.RoomMembershipRole
-- 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.Chime.Types.RoomMembershipRole
  ( RoomMembershipRole
      ( ..,
        RoomMembershipRole_Administrator,
        RoomMembershipRole_Member
      ),
  )
where

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

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

pattern RoomMembershipRole_Administrator :: RoomMembershipRole
pattern $bRoomMembershipRole_Administrator :: RoomMembershipRole
$mRoomMembershipRole_Administrator :: forall r. RoomMembershipRole -> (Void# -> r) -> (Void# -> r) -> r
RoomMembershipRole_Administrator = RoomMembershipRole' "Administrator"

pattern RoomMembershipRole_Member :: RoomMembershipRole
pattern $bRoomMembershipRole_Member :: RoomMembershipRole
$mRoomMembershipRole_Member :: forall r. RoomMembershipRole -> (Void# -> r) -> (Void# -> r) -> r
RoomMembershipRole_Member = RoomMembershipRole' "Member"

{-# COMPLETE
  RoomMembershipRole_Administrator,
  RoomMembershipRole_Member,
  RoomMembershipRole'
  #-}