module Stratosphere.S3.StorageLens.PrefixLevelProperty (
        module Exports, PrefixLevelProperty(..), mkPrefixLevelProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.S3.StorageLens.PrefixLevelStorageMetricsProperty as Exports
import Stratosphere.ResourceProperties
data PrefixLevelProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-prefixlevel.html>
    PrefixLevelProperty {PrefixLevelProperty -> ()
haddock_workaround_ :: (),
                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-prefixlevel.html#cfn-s3-storagelens-prefixlevel-storagemetrics>
                         PrefixLevelProperty -> PrefixLevelStorageMetricsProperty
storageMetrics :: PrefixLevelStorageMetricsProperty}
  deriving stock (PrefixLevelProperty -> PrefixLevelProperty -> Bool
(PrefixLevelProperty -> PrefixLevelProperty -> Bool)
-> (PrefixLevelProperty -> PrefixLevelProperty -> Bool)
-> Eq PrefixLevelProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PrefixLevelProperty -> PrefixLevelProperty -> Bool
== :: PrefixLevelProperty -> PrefixLevelProperty -> Bool
$c/= :: PrefixLevelProperty -> PrefixLevelProperty -> Bool
/= :: PrefixLevelProperty -> PrefixLevelProperty -> Bool
Prelude.Eq, Int -> PrefixLevelProperty -> ShowS
[PrefixLevelProperty] -> ShowS
PrefixLevelProperty -> String
(Int -> PrefixLevelProperty -> ShowS)
-> (PrefixLevelProperty -> String)
-> ([PrefixLevelProperty] -> ShowS)
-> Show PrefixLevelProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PrefixLevelProperty -> ShowS
showsPrec :: Int -> PrefixLevelProperty -> ShowS
$cshow :: PrefixLevelProperty -> String
show :: PrefixLevelProperty -> String
$cshowList :: [PrefixLevelProperty] -> ShowS
showList :: [PrefixLevelProperty] -> ShowS
Prelude.Show)
mkPrefixLevelProperty ::
  PrefixLevelStorageMetricsProperty -> PrefixLevelProperty
mkPrefixLevelProperty :: PrefixLevelStorageMetricsProperty -> PrefixLevelProperty
mkPrefixLevelProperty PrefixLevelStorageMetricsProperty
storageMetrics
  = PrefixLevelProperty
      {haddock_workaround_ :: ()
haddock_workaround_ = (), storageMetrics :: PrefixLevelStorageMetricsProperty
storageMetrics = PrefixLevelStorageMetricsProperty
storageMetrics}
instance ToResourceProperties PrefixLevelProperty where
  toResourceProperties :: PrefixLevelProperty -> ResourceProperties
toResourceProperties PrefixLevelProperty {()
PrefixLevelStorageMetricsProperty
haddock_workaround_ :: PrefixLevelProperty -> ()
storageMetrics :: PrefixLevelProperty -> PrefixLevelStorageMetricsProperty
haddock_workaround_ :: ()
storageMetrics :: PrefixLevelStorageMetricsProperty
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::S3::StorageLens.PrefixLevel",
         supportsTags :: Bool
supportsTags = Bool
Prelude.False,
         properties :: Object
properties = [Key
"StorageMetrics" Key -> PrefixLevelStorageMetricsProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= PrefixLevelStorageMetricsProperty
storageMetrics]}
instance JSON.ToJSON PrefixLevelProperty where
  toJSON :: PrefixLevelProperty -> Value
toJSON PrefixLevelProperty {()
PrefixLevelStorageMetricsProperty
haddock_workaround_ :: PrefixLevelProperty -> ()
storageMetrics :: PrefixLevelProperty -> PrefixLevelStorageMetricsProperty
haddock_workaround_ :: ()
storageMetrics :: PrefixLevelStorageMetricsProperty
..}
    = [(Key, Value)] -> Value
JSON.object [Key
"StorageMetrics" Key -> PrefixLevelStorageMetricsProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= PrefixLevelStorageMetricsProperty
storageMetrics]
instance Property "StorageMetrics" PrefixLevelProperty where
  type PropertyType "StorageMetrics" PrefixLevelProperty = PrefixLevelStorageMetricsProperty
  set :: PropertyType "StorageMetrics" PrefixLevelProperty
-> PrefixLevelProperty -> PrefixLevelProperty
set PropertyType "StorageMetrics" PrefixLevelProperty
newValue PrefixLevelProperty {()
PrefixLevelStorageMetricsProperty
haddock_workaround_ :: PrefixLevelProperty -> ()
storageMetrics :: PrefixLevelProperty -> PrefixLevelStorageMetricsProperty
haddock_workaround_ :: ()
storageMetrics :: PrefixLevelStorageMetricsProperty
..}
    = PrefixLevelProperty {storageMetrics :: PrefixLevelStorageMetricsProperty
storageMetrics = PropertyType "StorageMetrics" PrefixLevelProperty
PrefixLevelStorageMetricsProperty
newValue, ()
haddock_workaround_ :: ()
haddock_workaround_ :: ()
..}