{-# 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.InventoryOptionalField
-- 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.InventoryOptionalField
  ( InventoryOptionalField
      ( ..,
        InventoryOptionalField_BucketKeyStatus,
        InventoryOptionalField_ChecksumAlgorithm,
        InventoryOptionalField_ETag,
        InventoryOptionalField_EncryptionStatus,
        InventoryOptionalField_IntelligentTieringAccessTier,
        InventoryOptionalField_IsMultipartUploaded,
        InventoryOptionalField_LastModifiedDate,
        InventoryOptionalField_ObjectLockLegalHoldStatus,
        InventoryOptionalField_ObjectLockMode,
        InventoryOptionalField_ObjectLockRetainUntilDate,
        InventoryOptionalField_ReplicationStatus,
        InventoryOptionalField_Size,
        InventoryOptionalField_StorageClass
      ),
  )
where

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

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

pattern InventoryOptionalField_BucketKeyStatus :: InventoryOptionalField
pattern $bInventoryOptionalField_BucketKeyStatus :: InventoryOptionalField
$mInventoryOptionalField_BucketKeyStatus :: forall {r}.
InventoryOptionalField -> ((# #) -> r) -> ((# #) -> r) -> r
InventoryOptionalField_BucketKeyStatus = InventoryOptionalField' "BucketKeyStatus"

pattern InventoryOptionalField_ChecksumAlgorithm :: InventoryOptionalField
pattern $bInventoryOptionalField_ChecksumAlgorithm :: InventoryOptionalField
$mInventoryOptionalField_ChecksumAlgorithm :: forall {r}.
InventoryOptionalField -> ((# #) -> r) -> ((# #) -> r) -> r
InventoryOptionalField_ChecksumAlgorithm = InventoryOptionalField' "ChecksumAlgorithm"

pattern InventoryOptionalField_ETag :: InventoryOptionalField
pattern $bInventoryOptionalField_ETag :: InventoryOptionalField
$mInventoryOptionalField_ETag :: forall {r}.
InventoryOptionalField -> ((# #) -> r) -> ((# #) -> r) -> r
InventoryOptionalField_ETag = InventoryOptionalField' "ETag"

pattern InventoryOptionalField_EncryptionStatus :: InventoryOptionalField
pattern $bInventoryOptionalField_EncryptionStatus :: InventoryOptionalField
$mInventoryOptionalField_EncryptionStatus :: forall {r}.
InventoryOptionalField -> ((# #) -> r) -> ((# #) -> r) -> r
InventoryOptionalField_EncryptionStatus = InventoryOptionalField' "EncryptionStatus"

pattern InventoryOptionalField_IntelligentTieringAccessTier :: InventoryOptionalField
pattern $bInventoryOptionalField_IntelligentTieringAccessTier :: InventoryOptionalField
$mInventoryOptionalField_IntelligentTieringAccessTier :: forall {r}.
InventoryOptionalField -> ((# #) -> r) -> ((# #) -> r) -> r
InventoryOptionalField_IntelligentTieringAccessTier = InventoryOptionalField' "IntelligentTieringAccessTier"

pattern InventoryOptionalField_IsMultipartUploaded :: InventoryOptionalField
pattern $bInventoryOptionalField_IsMultipartUploaded :: InventoryOptionalField
$mInventoryOptionalField_IsMultipartUploaded :: forall {r}.
InventoryOptionalField -> ((# #) -> r) -> ((# #) -> r) -> r
InventoryOptionalField_IsMultipartUploaded = InventoryOptionalField' "IsMultipartUploaded"

pattern InventoryOptionalField_LastModifiedDate :: InventoryOptionalField
pattern $bInventoryOptionalField_LastModifiedDate :: InventoryOptionalField
$mInventoryOptionalField_LastModifiedDate :: forall {r}.
InventoryOptionalField -> ((# #) -> r) -> ((# #) -> r) -> r
InventoryOptionalField_LastModifiedDate = InventoryOptionalField' "LastModifiedDate"

pattern InventoryOptionalField_ObjectLockLegalHoldStatus :: InventoryOptionalField
pattern $bInventoryOptionalField_ObjectLockLegalHoldStatus :: InventoryOptionalField
$mInventoryOptionalField_ObjectLockLegalHoldStatus :: forall {r}.
InventoryOptionalField -> ((# #) -> r) -> ((# #) -> r) -> r
InventoryOptionalField_ObjectLockLegalHoldStatus = InventoryOptionalField' "ObjectLockLegalHoldStatus"

pattern InventoryOptionalField_ObjectLockMode :: InventoryOptionalField
pattern $bInventoryOptionalField_ObjectLockMode :: InventoryOptionalField
$mInventoryOptionalField_ObjectLockMode :: forall {r}.
InventoryOptionalField -> ((# #) -> r) -> ((# #) -> r) -> r
InventoryOptionalField_ObjectLockMode = InventoryOptionalField' "ObjectLockMode"

pattern InventoryOptionalField_ObjectLockRetainUntilDate :: InventoryOptionalField
pattern $bInventoryOptionalField_ObjectLockRetainUntilDate :: InventoryOptionalField
$mInventoryOptionalField_ObjectLockRetainUntilDate :: forall {r}.
InventoryOptionalField -> ((# #) -> r) -> ((# #) -> r) -> r
InventoryOptionalField_ObjectLockRetainUntilDate = InventoryOptionalField' "ObjectLockRetainUntilDate"

pattern InventoryOptionalField_ReplicationStatus :: InventoryOptionalField
pattern $bInventoryOptionalField_ReplicationStatus :: InventoryOptionalField
$mInventoryOptionalField_ReplicationStatus :: forall {r}.
InventoryOptionalField -> ((# #) -> r) -> ((# #) -> r) -> r
InventoryOptionalField_ReplicationStatus = InventoryOptionalField' "ReplicationStatus"

pattern InventoryOptionalField_Size :: InventoryOptionalField
pattern $bInventoryOptionalField_Size :: InventoryOptionalField
$mInventoryOptionalField_Size :: forall {r}.
InventoryOptionalField -> ((# #) -> r) -> ((# #) -> r) -> r
InventoryOptionalField_Size = InventoryOptionalField' "Size"

pattern InventoryOptionalField_StorageClass :: InventoryOptionalField
pattern $bInventoryOptionalField_StorageClass :: InventoryOptionalField
$mInventoryOptionalField_StorageClass :: forall {r}.
InventoryOptionalField -> ((# #) -> r) -> ((# #) -> r) -> r
InventoryOptionalField_StorageClass = InventoryOptionalField' "StorageClass"

{-# COMPLETE
  InventoryOptionalField_BucketKeyStatus,
  InventoryOptionalField_ChecksumAlgorithm,
  InventoryOptionalField_ETag,
  InventoryOptionalField_EncryptionStatus,
  InventoryOptionalField_IntelligentTieringAccessTier,
  InventoryOptionalField_IsMultipartUploaded,
  InventoryOptionalField_LastModifiedDate,
  InventoryOptionalField_ObjectLockLegalHoldStatus,
  InventoryOptionalField_ObjectLockMode,
  InventoryOptionalField_ObjectLockRetainUntilDate,
  InventoryOptionalField_ReplicationStatus,
  InventoryOptionalField_Size,
  InventoryOptionalField_StorageClass,
  InventoryOptionalField'
  #-}