{-# 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.ElastiCache.Types.OutpostMode
-- 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.ElastiCache.Types.OutpostMode
  ( OutpostMode
      ( ..,
        OutpostMode_Cross_outpost,
        OutpostMode_Single_outpost
      ),
  )
where

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

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

pattern OutpostMode_Cross_outpost :: OutpostMode
pattern $bOutpostMode_Cross_outpost :: OutpostMode
$mOutpostMode_Cross_outpost :: forall r. OutpostMode -> (Void# -> r) -> (Void# -> r) -> r
OutpostMode_Cross_outpost = OutpostMode' "cross-outpost"

pattern OutpostMode_Single_outpost :: OutpostMode
pattern $bOutpostMode_Single_outpost :: OutpostMode
$mOutpostMode_Single_outpost :: forall r. OutpostMode -> (Void# -> r) -> (Void# -> r) -> r
OutpostMode_Single_outpost = OutpostMode' "single-outpost"

{-# COMPLETE
  OutpostMode_Cross_outpost,
  OutpostMode_Single_outpost,
  OutpostMode'
  #-}