content: module Stratosphere.SES.MailManagerTrafficPolicy.PolicyStatementProperty (
          module Exports, PolicyStatementProperty(..),
          mkPolicyStatementProperty
      ) where
  import qualified Data.Aeson as JSON
  import qualified Stratosphere.Prelude as Prelude
  import Stratosphere.Property
  import {-# SOURCE #-} Stratosphere.SES.MailManagerTrafficPolicy.PolicyConditionProperty as Exports
  import Stratosphere.ResourceProperties
  import Stratosphere.Value
  data PolicyStatementProperty
    = PolicyStatementProperty {action :: (Value Prelude.Text),
                               conditions :: [PolicyConditionProperty]}
    deriving stock (Prelude.Eq, Prelude.Show)
  mkPolicyStatementProperty ::
    Value Prelude.Text
    -> [PolicyConditionProperty] -> PolicyStatementProperty
  mkPolicyStatementProperty action conditions
    = PolicyStatementProperty
        {action = action, conditions = conditions}
  instance ToResourceProperties PolicyStatementProperty where
    toResourceProperties PolicyStatementProperty {..}
      = ResourceProperties
          {awsType = "AWS::SES::MailManagerTrafficPolicy.PolicyStatement",
           supportsTags = Prelude.False,
           properties = ["Action" JSON..= action,
                         "Conditions" JSON..= conditions]}
  instance JSON.ToJSON PolicyStatementProperty where
    toJSON PolicyStatementProperty {..}
      = JSON.object
          ["Action" JSON..= action, "Conditions" JSON..= conditions]
  instance Property "Action" PolicyStatementProperty where
    type PropertyType "Action" PolicyStatementProperty = Value Prelude.Text
    set newValue PolicyStatementProperty {..}
      = PolicyStatementProperty {action = newValue, ..}
  instance Property "Conditions" PolicyStatementProperty where
    type PropertyType "Conditions" PolicyStatementProperty = [PolicyConditionProperty]
    set newValue PolicyStatementProperty {..}
      = PolicyStatementProperty {conditions = newValue, ..}