{-# 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.DirectoryStage
-- 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.DirectoryStage
  ( DirectoryStage
      ( ..,
        DirectoryStage_Active,
        DirectoryStage_Created,
        DirectoryStage_Creating,
        DirectoryStage_Deleted,
        DirectoryStage_Deleting,
        DirectoryStage_Failed,
        DirectoryStage_Impaired,
        DirectoryStage_Inoperable,
        DirectoryStage_Requested,
        DirectoryStage_RestoreFailed,
        DirectoryStage_Restoring
      ),
  )
where

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

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

pattern DirectoryStage_Active :: DirectoryStage
pattern $bDirectoryStage_Active :: DirectoryStage
$mDirectoryStage_Active :: forall r. DirectoryStage -> (Void# -> r) -> (Void# -> r) -> r
DirectoryStage_Active = DirectoryStage' "Active"

pattern DirectoryStage_Created :: DirectoryStage
pattern $bDirectoryStage_Created :: DirectoryStage
$mDirectoryStage_Created :: forall r. DirectoryStage -> (Void# -> r) -> (Void# -> r) -> r
DirectoryStage_Created = DirectoryStage' "Created"

pattern DirectoryStage_Creating :: DirectoryStage
pattern $bDirectoryStage_Creating :: DirectoryStage
$mDirectoryStage_Creating :: forall r. DirectoryStage -> (Void# -> r) -> (Void# -> r) -> r
DirectoryStage_Creating = DirectoryStage' "Creating"

pattern DirectoryStage_Deleted :: DirectoryStage
pattern $bDirectoryStage_Deleted :: DirectoryStage
$mDirectoryStage_Deleted :: forall r. DirectoryStage -> (Void# -> r) -> (Void# -> r) -> r
DirectoryStage_Deleted = DirectoryStage' "Deleted"

pattern DirectoryStage_Deleting :: DirectoryStage
pattern $bDirectoryStage_Deleting :: DirectoryStage
$mDirectoryStage_Deleting :: forall r. DirectoryStage -> (Void# -> r) -> (Void# -> r) -> r
DirectoryStage_Deleting = DirectoryStage' "Deleting"

pattern DirectoryStage_Failed :: DirectoryStage
pattern $bDirectoryStage_Failed :: DirectoryStage
$mDirectoryStage_Failed :: forall r. DirectoryStage -> (Void# -> r) -> (Void# -> r) -> r
DirectoryStage_Failed = DirectoryStage' "Failed"

pattern DirectoryStage_Impaired :: DirectoryStage
pattern $bDirectoryStage_Impaired :: DirectoryStage
$mDirectoryStage_Impaired :: forall r. DirectoryStage -> (Void# -> r) -> (Void# -> r) -> r
DirectoryStage_Impaired = DirectoryStage' "Impaired"

pattern DirectoryStage_Inoperable :: DirectoryStage
pattern $bDirectoryStage_Inoperable :: DirectoryStage
$mDirectoryStage_Inoperable :: forall r. DirectoryStage -> (Void# -> r) -> (Void# -> r) -> r
DirectoryStage_Inoperable = DirectoryStage' "Inoperable"

pattern DirectoryStage_Requested :: DirectoryStage
pattern $bDirectoryStage_Requested :: DirectoryStage
$mDirectoryStage_Requested :: forall r. DirectoryStage -> (Void# -> r) -> (Void# -> r) -> r
DirectoryStage_Requested = DirectoryStage' "Requested"

pattern DirectoryStage_RestoreFailed :: DirectoryStage
pattern $bDirectoryStage_RestoreFailed :: DirectoryStage
$mDirectoryStage_RestoreFailed :: forall r. DirectoryStage -> (Void# -> r) -> (Void# -> r) -> r
DirectoryStage_RestoreFailed = DirectoryStage' "RestoreFailed"

pattern DirectoryStage_Restoring :: DirectoryStage
pattern $bDirectoryStage_Restoring :: DirectoryStage
$mDirectoryStage_Restoring :: forall r. DirectoryStage -> (Void# -> r) -> (Void# -> r) -> r
DirectoryStage_Restoring = DirectoryStage' "Restoring"

{-# COMPLETE
  DirectoryStage_Active,
  DirectoryStage_Created,
  DirectoryStage_Creating,
  DirectoryStage_Deleted,
  DirectoryStage_Deleting,
  DirectoryStage_Failed,
  DirectoryStage_Impaired,
  DirectoryStage_Inoperable,
  DirectoryStage_Requested,
  DirectoryStage_RestoreFailed,
  DirectoryStage_Restoring,
  DirectoryStage'
  #-}