packages feed

stratosphere-billingconductor-1.0.0: gen/Stratosphere/BillingConductor/CustomLineItem/CustomLineItemChargeDetailsProperty.hs

module Stratosphere.BillingConductor.CustomLineItem.CustomLineItemChargeDetailsProperty (
        module Exports, CustomLineItemChargeDetailsProperty(..),
        mkCustomLineItemChargeDetailsProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.BillingConductor.CustomLineItem.CustomLineItemFlatChargeDetailsProperty as Exports
import {-# SOURCE #-} Stratosphere.BillingConductor.CustomLineItem.CustomLineItemPercentageChargeDetailsProperty as Exports
import {-# SOURCE #-} Stratosphere.BillingConductor.CustomLineItem.LineItemFilterProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Value
data CustomLineItemChargeDetailsProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-billingconductor-customlineitem-customlineitemchargedetails.html>
    CustomLineItemChargeDetailsProperty {haddock_workaround_ :: (),
                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-billingconductor-customlineitem-customlineitemchargedetails.html#cfn-billingconductor-customlineitem-customlineitemchargedetails-flat>
                                         flat :: (Prelude.Maybe CustomLineItemFlatChargeDetailsProperty),
                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-billingconductor-customlineitem-customlineitemchargedetails.html#cfn-billingconductor-customlineitem-customlineitemchargedetails-lineitemfilters>
                                         lineItemFilters :: (Prelude.Maybe [LineItemFilterProperty]),
                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-billingconductor-customlineitem-customlineitemchargedetails.html#cfn-billingconductor-customlineitem-customlineitemchargedetails-percentage>
                                         percentage :: (Prelude.Maybe CustomLineItemPercentageChargeDetailsProperty),
                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-billingconductor-customlineitem-customlineitemchargedetails.html#cfn-billingconductor-customlineitem-customlineitemchargedetails-type>
                                         type' :: (Value Prelude.Text)}
  deriving stock (Prelude.Eq, Prelude.Show)
mkCustomLineItemChargeDetailsProperty ::
  Value Prelude.Text -> CustomLineItemChargeDetailsProperty
mkCustomLineItemChargeDetailsProperty type'
  = CustomLineItemChargeDetailsProperty
      {haddock_workaround_ = (), type' = type', flat = Prelude.Nothing,
       lineItemFilters = Prelude.Nothing, percentage = Prelude.Nothing}
instance ToResourceProperties CustomLineItemChargeDetailsProperty where
  toResourceProperties CustomLineItemChargeDetailsProperty {..}
    = ResourceProperties
        {awsType = "AWS::BillingConductor::CustomLineItem.CustomLineItemChargeDetails",
         supportsTags = Prelude.False,
         properties = Prelude.fromList
                        ((Prelude.<>)
                           ["Type" JSON..= type']
                           (Prelude.catMaybes
                              [(JSON..=) "Flat" Prelude.<$> flat,
                               (JSON..=) "LineItemFilters" Prelude.<$> lineItemFilters,
                               (JSON..=) "Percentage" Prelude.<$> percentage]))}
instance JSON.ToJSON CustomLineItemChargeDetailsProperty where
  toJSON CustomLineItemChargeDetailsProperty {..}
    = JSON.object
        (Prelude.fromList
           ((Prelude.<>)
              ["Type" JSON..= type']
              (Prelude.catMaybes
                 [(JSON..=) "Flat" Prelude.<$> flat,
                  (JSON..=) "LineItemFilters" Prelude.<$> lineItemFilters,
                  (JSON..=) "Percentage" Prelude.<$> percentage])))
instance Property "Flat" CustomLineItemChargeDetailsProperty where
  type PropertyType "Flat" CustomLineItemChargeDetailsProperty = CustomLineItemFlatChargeDetailsProperty
  set newValue CustomLineItemChargeDetailsProperty {..}
    = CustomLineItemChargeDetailsProperty
        {flat = Prelude.pure newValue, ..}
instance Property "LineItemFilters" CustomLineItemChargeDetailsProperty where
  type PropertyType "LineItemFilters" CustomLineItemChargeDetailsProperty = [LineItemFilterProperty]
  set newValue CustomLineItemChargeDetailsProperty {..}
    = CustomLineItemChargeDetailsProperty
        {lineItemFilters = Prelude.pure newValue, ..}
instance Property "Percentage" CustomLineItemChargeDetailsProperty where
  type PropertyType "Percentage" CustomLineItemChargeDetailsProperty = CustomLineItemPercentageChargeDetailsProperty
  set newValue CustomLineItemChargeDetailsProperty {..}
    = CustomLineItemChargeDetailsProperty
        {percentage = Prelude.pure newValue, ..}
instance Property "Type" CustomLineItemChargeDetailsProperty where
  type PropertyType "Type" CustomLineItemChargeDetailsProperty = Value Prelude.Text
  set newValue CustomLineItemChargeDetailsProperty {..}
    = CustomLineItemChargeDetailsProperty {type' = newValue, ..}