# This file was auto-generated by Fern from our API Definition.

import typing_extensions
from .money import MoneyParams
import typing_extensions
import typing
from ..types.loyalty_program_accrual_rule_tax_mode import LoyaltyProgramAccrualRuleTaxMode


class LoyaltyProgramAccrualRuleSpendDataParams(typing_extensions.TypedDict):
    """
    Represents additional data for rules with the `SPEND` accrual type.
    """

    amount_money: MoneyParams
    """
    The amount that buyers must spend to earn points. 
    For example, given an "Earn 1 point for every $10 spent" accrual rule, a buyer who spends $105 earns 10 points.
    """

    excluded_category_ids: typing_extensions.NotRequired[typing.Optional[typing.Sequence[str]]]
    """
    The IDs of any `CATEGORY` catalog objects that are excluded from points accrual.
    
    You can use the [BatchRetrieveCatalogObjects](api-endpoint:Catalog-BatchRetrieveCatalogObjects)
    endpoint to retrieve information about the excluded categories.
    """

    excluded_item_variation_ids: typing_extensions.NotRequired[typing.Optional[typing.Sequence[str]]]
    """
    The IDs of any `ITEM_VARIATION` catalog objects that are excluded from points accrual.
    
    You can use the [BatchRetrieveCatalogObjects](api-endpoint:Catalog-BatchRetrieveCatalogObjects)
    endpoint to retrieve information about the excluded item variations.
    """

    tax_mode: LoyaltyProgramAccrualRuleTaxMode
    """
    Indicates how taxes should be treated when calculating the purchase amount used for points accrual.
    See [LoyaltyProgramAccrualRuleTaxMode](#type-loyaltyprogramaccrualruletaxmode) for possible values
    """
