{-# 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-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.InventoryOptionalField
  ( InventoryOptionalField
      ( ..,
        InventoryOptionalField_BucketKeyStatus,
        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.Prelude as Prelude
import Amazonka.S3.Internal

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

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

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

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

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

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

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

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

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

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

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

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

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

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