{-# 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.NumberSelectionBehavior
-- 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.NumberSelectionBehavior
  ( NumberSelectionBehavior
      ( ..,
        NumberSelectionBehavior_AvoidSticky,
        NumberSelectionBehavior_PreferSticky
      ),
  )
where

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

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

pattern NumberSelectionBehavior_AvoidSticky :: NumberSelectionBehavior
pattern $bNumberSelectionBehavior_AvoidSticky :: NumberSelectionBehavior
$mNumberSelectionBehavior_AvoidSticky :: forall r.
NumberSelectionBehavior -> (Void# -> r) -> (Void# -> r) -> r
NumberSelectionBehavior_AvoidSticky = NumberSelectionBehavior' "AvoidSticky"

pattern NumberSelectionBehavior_PreferSticky :: NumberSelectionBehavior
pattern $bNumberSelectionBehavior_PreferSticky :: NumberSelectionBehavior
$mNumberSelectionBehavior_PreferSticky :: forall r.
NumberSelectionBehavior -> (Void# -> r) -> (Void# -> r) -> r
NumberSelectionBehavior_PreferSticky = NumberSelectionBehavior' "PreferSticky"

{-# COMPLETE
  NumberSelectionBehavior_AvoidSticky,
  NumberSelectionBehavior_PreferSticky,
  NumberSelectionBehavior'
  #-}