{-# 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.FSx.Types.TieringPolicyName
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.FSx.Types.TieringPolicyName
  ( TieringPolicyName
      ( ..,
        TieringPolicyName_ALL,
        TieringPolicyName_AUTO,
        TieringPolicyName_NONE,
        TieringPolicyName_SNAPSHOT_ONLY
      ),
  )
where

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

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

pattern TieringPolicyName_ALL :: TieringPolicyName
pattern $bTieringPolicyName_ALL :: TieringPolicyName
$mTieringPolicyName_ALL :: forall {r}. TieringPolicyName -> ((# #) -> r) -> ((# #) -> r) -> r
TieringPolicyName_ALL = TieringPolicyName' "ALL"

pattern TieringPolicyName_AUTO :: TieringPolicyName
pattern $bTieringPolicyName_AUTO :: TieringPolicyName
$mTieringPolicyName_AUTO :: forall {r}. TieringPolicyName -> ((# #) -> r) -> ((# #) -> r) -> r
TieringPolicyName_AUTO = TieringPolicyName' "AUTO"

pattern TieringPolicyName_NONE :: TieringPolicyName
pattern $bTieringPolicyName_NONE :: TieringPolicyName
$mTieringPolicyName_NONE :: forall {r}. TieringPolicyName -> ((# #) -> r) -> ((# #) -> r) -> r
TieringPolicyName_NONE = TieringPolicyName' "NONE"

pattern TieringPolicyName_SNAPSHOT_ONLY :: TieringPolicyName
pattern $bTieringPolicyName_SNAPSHOT_ONLY :: TieringPolicyName
$mTieringPolicyName_SNAPSHOT_ONLY :: forall {r}. TieringPolicyName -> ((# #) -> r) -> ((# #) -> r) -> r
TieringPolicyName_SNAPSHOT_ONLY = TieringPolicyName' "SNAPSHOT_ONLY"

{-# COMPLETE
  TieringPolicyName_ALL,
  TieringPolicyName_AUTO,
  TieringPolicyName_NONE,
  TieringPolicyName_SNAPSHOT_ONLY,
  TieringPolicyName'
  #-}