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

import typing_extensions
from ..types.loyalty_promotion_incentive_type import LoyaltyPromotionIncentiveType
import typing_extensions
from .loyalty_promotion_incentive_points_multiplier_data import LoyaltyPromotionIncentivePointsMultiplierDataParams
from .loyalty_promotion_incentive_points_addition_data import LoyaltyPromotionIncentivePointsAdditionDataParams


class LoyaltyPromotionIncentiveParams(typing_extensions.TypedDict):
    """
    Represents how points for a [loyalty promotion](entity:LoyaltyPromotion) are calculated,
    either by multiplying the points earned from the base program or by adding a specified number
    of points to the points earned from the base program.
    """

    type: LoyaltyPromotionIncentiveType
    """
    The type of points incentive.
    See [LoyaltyPromotionIncentiveType](#type-loyaltypromotionincentivetype) for possible values
    """

    points_multiplier_data: typing_extensions.NotRequired[LoyaltyPromotionIncentivePointsMultiplierDataParams]
    """
    Additional data for a `POINTS_MULTIPLIER` incentive type.
    """

    points_addition_data: typing_extensions.NotRequired[LoyaltyPromotionIncentivePointsAdditionDataParams]
    """
    Additional data for a `POINTS_ADDITION` incentive type.
    """
