{-# 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.S3.Types.TransitionStorageClass
-- 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.S3.Types.TransitionStorageClass
  ( TransitionStorageClass
      ( ..,
        TransitionStorageClass_DEEP_ARCHIVE,
        TransitionStorageClass_GLACIER,
        TransitionStorageClass_GLACIER_IR,
        TransitionStorageClass_INTELLIGENT_TIERING,
        TransitionStorageClass_ONEZONE_IA,
        TransitionStorageClass_STANDARD_IA
      ),
  )
where

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

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

pattern TransitionStorageClass_DEEP_ARCHIVE :: TransitionStorageClass
pattern $bTransitionStorageClass_DEEP_ARCHIVE :: TransitionStorageClass
$mTransitionStorageClass_DEEP_ARCHIVE :: forall {r}.
TransitionStorageClass -> ((# #) -> r) -> ((# #) -> r) -> r
TransitionStorageClass_DEEP_ARCHIVE = TransitionStorageClass' "DEEP_ARCHIVE"

pattern TransitionStorageClass_GLACIER :: TransitionStorageClass
pattern $bTransitionStorageClass_GLACIER :: TransitionStorageClass
$mTransitionStorageClass_GLACIER :: forall {r}.
TransitionStorageClass -> ((# #) -> r) -> ((# #) -> r) -> r
TransitionStorageClass_GLACIER = TransitionStorageClass' "GLACIER"

pattern TransitionStorageClass_GLACIER_IR :: TransitionStorageClass
pattern $bTransitionStorageClass_GLACIER_IR :: TransitionStorageClass
$mTransitionStorageClass_GLACIER_IR :: forall {r}.
TransitionStorageClass -> ((# #) -> r) -> ((# #) -> r) -> r
TransitionStorageClass_GLACIER_IR = TransitionStorageClass' "GLACIER_IR"

pattern TransitionStorageClass_INTELLIGENT_TIERING :: TransitionStorageClass
pattern $bTransitionStorageClass_INTELLIGENT_TIERING :: TransitionStorageClass
$mTransitionStorageClass_INTELLIGENT_TIERING :: forall {r}.
TransitionStorageClass -> ((# #) -> r) -> ((# #) -> r) -> r
TransitionStorageClass_INTELLIGENT_TIERING = TransitionStorageClass' "INTELLIGENT_TIERING"

pattern TransitionStorageClass_ONEZONE_IA :: TransitionStorageClass
pattern $bTransitionStorageClass_ONEZONE_IA :: TransitionStorageClass
$mTransitionStorageClass_ONEZONE_IA :: forall {r}.
TransitionStorageClass -> ((# #) -> r) -> ((# #) -> r) -> r
TransitionStorageClass_ONEZONE_IA = TransitionStorageClass' "ONEZONE_IA"

pattern TransitionStorageClass_STANDARD_IA :: TransitionStorageClass
pattern $bTransitionStorageClass_STANDARD_IA :: TransitionStorageClass
$mTransitionStorageClass_STANDARD_IA :: forall {r}.
TransitionStorageClass -> ((# #) -> r) -> ((# #) -> r) -> r
TransitionStorageClass_STANDARD_IA = TransitionStorageClass' "STANDARD_IA"

{-# COMPLETE
  TransitionStorageClass_DEEP_ARCHIVE,
  TransitionStorageClass_GLACIER,
  TransitionStorageClass_GLACIER_IR,
  TransitionStorageClass_INTELLIGENT_TIERING,
  TransitionStorageClass_ONEZONE_IA,
  TransitionStorageClass_STANDARD_IA,
  TransitionStorageClass'
  #-}