from decimal import Decimal from rest_framework import serializers from apps.billing.models import RechargeOrder class GenerateTitleRequestSerializer(serializers.Serializer): prompt = serializers.CharField(trim_whitespace=True, allow_blank=False) model = serializers.CharField( required=False, allow_blank=True, trim_whitespace=True, max_length=64, ) image_url = serializers.URLField(required=False, allow_blank=True) image_base64 = serializers.CharField(required=False, allow_blank=True) resolution = serializers.CharField( required=False, allow_blank=True, trim_whitespace=True, default="1K", ) parameters = serializers.DictField(required=False, default=dict) class GenerateImageRequestSerializer(serializers.Serializer): prompt = serializers.CharField(trim_whitespace=True, allow_blank=False) model = serializers.CharField( required=False, allow_blank=True, trim_whitespace=True, max_length=64, ) image_url = serializers.URLField(required=False, allow_blank=True) image_base64 = serializers.CharField(required=False, allow_blank=True) resolution = serializers.CharField( required=False, allow_blank=True, trim_whitespace=True, default="1K", ) aspect_ratio = serializers.CharField( required=False, allow_blank=True, trim_whitespace=True, default="1:1", ) parameters = serializers.DictField(required=False, default=dict) class RechargeCreateRequestSerializer(serializers.Serializer): amount = serializers.DecimalField( max_digits=12, decimal_places=2, min_value=Decimal("0.01"), ) pay_method = serializers.ChoiceField(choices=RechargeOrder.PayMethod.values) class RechargeStatusRequestSerializer(serializers.Serializer): order_no = serializers.CharField( trim_whitespace=True, allow_blank=False, max_length=64, )