from typing import Optional from pydantic import BaseModel, Field class UpscaleCreativeRequest(BaseModel): image: str = Field(..., description='Base64-encoded image') prompt: Optional[str] = None scale_factor: Optional[str] = Field(None, description='2x, 4x, 8x, or 16x') creativity: Optional[int] = Field(None, ge=-10, le=10) resemblance: Optional[int] = Field(None, ge=-10, le=10) optimized_for: Optional[str] = Field( None, description='standard, soft_portraits, hard_portraits, art_n_illustration, etc.', ) class UpscalePrecisionRequest(BaseModel): image: str = Field(..., description='Base64-encoded image') scale_factor: Optional[str] = Field(None, description='2x or 4x') class RelightRequest(BaseModel): image: str = Field(..., description='Base64 or URL of image') prompt: Optional[str] = None transfer_light_from_reference_image: Optional[str] = Field( None, description='Base64 or URL of reference image for light transfer', ) light_transfer_strength: Optional[int] = Field(None, ge=0, le=100) class StyleTransferRequest(BaseModel): image: str = Field(..., description='Base64 or URL of image') reference_image: str = Field(..., description='Base64 or URL of style reference image') prompt: Optional[str] = None style_strength: Optional[int] = Field(None, ge=0, le=100) structure_strength: Optional[int] = Field(None, ge=0, le=100) class ExpandRequest(BaseModel): image: str = Field(..., description='Base64 or URL of image') prompt: Optional[str] = None class InpaintRequest(BaseModel): image: str = Field(..., description='Base64 or URL of image') mask: str = Field(..., description='Base64 or URL of mask image') prompt: str = Field(..., min_length=1)