{-# 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.DirectoryService.Types.SnapshotType
-- 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.DirectoryService.Types.SnapshotType
  ( SnapshotType
      ( ..,
        SnapshotType_Auto,
        SnapshotType_Manual
      ),
  )
where

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

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

pattern SnapshotType_Auto :: SnapshotType
pattern $bSnapshotType_Auto :: SnapshotType
$mSnapshotType_Auto :: forall r. SnapshotType -> (Void# -> r) -> (Void# -> r) -> r
SnapshotType_Auto = SnapshotType' "Auto"

pattern SnapshotType_Manual :: SnapshotType
pattern $bSnapshotType_Manual :: SnapshotType
$mSnapshotType_Manual :: forall r. SnapshotType -> (Void# -> r) -> (Void# -> r) -> r
SnapshotType_Manual = SnapshotType' "Manual"

{-# COMPLETE
  SnapshotType_Auto,
  SnapshotType_Manual,
  SnapshotType'
  #-}