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

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

newtype TransitionStorageClass = TransitionStorageClass'
  { TransitionStorageClass -> Text
fromTransitionStorageClass ::
      Core.Text
  }
  deriving stock
    ( Int -> TransitionStorageClass -> ShowS
[TransitionStorageClass] -> ShowS
TransitionStorageClass -> String
(Int -> TransitionStorageClass -> ShowS)
-> (TransitionStorageClass -> String)
-> ([TransitionStorageClass] -> ShowS)
-> Show TransitionStorageClass
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]
(Int -> ReadS TransitionStorageClass)
-> ReadS [TransitionStorageClass]
-> ReadPrec TransitionStorageClass
-> ReadPrec [TransitionStorageClass]
-> Read 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
(TransitionStorageClass -> TransitionStorageClass -> Bool)
-> (TransitionStorageClass -> TransitionStorageClass -> Bool)
-> Eq TransitionStorageClass
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
Eq TransitionStorageClass
-> (TransitionStorageClass -> TransitionStorageClass -> Ordering)
-> (TransitionStorageClass -> TransitionStorageClass -> Bool)
-> (TransitionStorageClass -> TransitionStorageClass -> Bool)
-> (TransitionStorageClass -> TransitionStorageClass -> Bool)
-> (TransitionStorageClass -> TransitionStorageClass -> Bool)
-> (TransitionStorageClass
    -> TransitionStorageClass -> TransitionStorageClass)
-> (TransitionStorageClass
    -> TransitionStorageClass -> TransitionStorageClass)
-> Ord 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
$cp1Ord :: Eq TransitionStorageClass
Prelude.Ord,
      (forall x. TransitionStorageClass -> Rep TransitionStorageClass x)
-> (forall x.
    Rep TransitionStorageClass x -> TransitionStorageClass)
-> Generic TransitionStorageClass
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
    ( Int -> TransitionStorageClass -> Int
TransitionStorageClass -> Int
(Int -> TransitionStorageClass -> Int)
-> (TransitionStorageClass -> Int)
-> Hashable TransitionStorageClass
forall 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 -> ()
(TransitionStorageClass -> ()) -> NFData TransitionStorageClass
forall a. (a -> ()) -> NFData a
rnf :: TransitionStorageClass -> ()
$crnf :: TransitionStorageClass -> ()
Prelude.NFData,
      Text -> Either String TransitionStorageClass
(Text -> Either String TransitionStorageClass)
-> FromText TransitionStorageClass
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String TransitionStorageClass
$cfromText :: Text -> Either String TransitionStorageClass
Core.FromText,
      TransitionStorageClass -> Text
(TransitionStorageClass -> Text) -> ToText TransitionStorageClass
forall a. (a -> Text) -> ToText a
toText :: TransitionStorageClass -> Text
$ctoText :: TransitionStorageClass -> Text
Core.ToText,
      TransitionStorageClass -> ByteString
(TransitionStorageClass -> ByteString)
-> ToByteString TransitionStorageClass
forall a. (a -> ByteString) -> ToByteString a
toBS :: TransitionStorageClass -> ByteString
$ctoBS :: TransitionStorageClass -> ByteString
Core.ToByteString,
      TransitionStorageClass -> ByteStringBuilder
(TransitionStorageClass -> ByteStringBuilder)
-> ToLog TransitionStorageClass
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: TransitionStorageClass -> ByteStringBuilder
$cbuild :: TransitionStorageClass -> ByteStringBuilder
Core.ToLog,
      HeaderName -> TransitionStorageClass -> [Header]
(HeaderName -> TransitionStorageClass -> [Header])
-> ToHeader TransitionStorageClass
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> TransitionStorageClass -> [Header]
$ctoHeader :: HeaderName -> TransitionStorageClass -> [Header]
Core.ToHeader,
      TransitionStorageClass -> QueryString
(TransitionStorageClass -> QueryString)
-> ToQuery TransitionStorageClass
forall a. (a -> QueryString) -> ToQuery a
toQuery :: TransitionStorageClass -> QueryString
$ctoQuery :: TransitionStorageClass -> QueryString
Core.ToQuery,
      Value -> Parser [TransitionStorageClass]
Value -> Parser TransitionStorageClass
(Value -> Parser TransitionStorageClass)
-> (Value -> Parser [TransitionStorageClass])
-> FromJSON 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
Core.FromJSON,
      FromJSONKeyFunction [TransitionStorageClass]
FromJSONKeyFunction TransitionStorageClass
FromJSONKeyFunction TransitionStorageClass
-> FromJSONKeyFunction [TransitionStorageClass]
-> FromJSONKey TransitionStorageClass
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [TransitionStorageClass]
$cfromJSONKeyList :: FromJSONKeyFunction [TransitionStorageClass]
fromJSONKey :: FromJSONKeyFunction TransitionStorageClass
$cfromJSONKey :: FromJSONKeyFunction TransitionStorageClass
Core.FromJSONKey,
      [TransitionStorageClass] -> Encoding
[TransitionStorageClass] -> Value
TransitionStorageClass -> Encoding
TransitionStorageClass -> Value
(TransitionStorageClass -> Value)
-> (TransitionStorageClass -> Encoding)
-> ([TransitionStorageClass] -> Value)
-> ([TransitionStorageClass] -> Encoding)
-> ToJSON TransitionStorageClass
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
Core.ToJSON,
      ToJSONKeyFunction [TransitionStorageClass]
ToJSONKeyFunction TransitionStorageClass
ToJSONKeyFunction TransitionStorageClass
-> ToJSONKeyFunction [TransitionStorageClass]
-> ToJSONKey TransitionStorageClass
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [TransitionStorageClass]
$ctoJSONKeyList :: ToJSONKeyFunction [TransitionStorageClass]
toJSONKey :: ToJSONKeyFunction TransitionStorageClass
$ctoJSONKey :: ToJSONKeyFunction TransitionStorageClass
Core.ToJSONKey,
      [Node] -> Either String TransitionStorageClass
([Node] -> Either String TransitionStorageClass)
-> FromXML TransitionStorageClass
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String TransitionStorageClass
$cparseXML :: [Node] -> Either String TransitionStorageClass
Core.FromXML,
      TransitionStorageClass -> XML
(TransitionStorageClass -> XML) -> ToXML TransitionStorageClass
forall a. (a -> XML) -> ToXML a
toXML :: TransitionStorageClass -> XML
$ctoXML :: TransitionStorageClass -> XML
Core.ToXML
    )

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

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

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

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

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

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