from decimal import Decimal
from pydantic import BaseModel, Field


class LoyaltySettingsUpdate(BaseModel):
    enabled: bool | None = None
    earn_amount: Decimal | None = Field(default=None, gt=0)
    earn_points: int | None = Field(default=None, gt=0)
    redemption_points: int | None = Field(default=None, ge=0)
    redemption_value: Decimal | None = Field(default=None, ge=0)


class LoyaltyRedeemRequest(BaseModel):
    points: int = Field(gt=0)
    reference: str | None = Field(default=None, max_length=150)
    notes: str | None = None


class LoyaltyAdjustmentRequest(BaseModel):
    points: int
    notes: str = Field(min_length=1)
    reference: str | None = Field(default=None, max_length=150)
