from typing import TypedDict from pydantic import BaseModel, Field class InputModerationSettings(TypedDict): prompt_content_moderation: bool visual_input_moderation: bool visual_output_moderation: bool class BriaEditImageRequest(BaseModel): instruction: str | None = Field(...) structured_instruction: str | None = Field( ..., description="Use this instead of instruction for precise, programmatic control.", ) images: list[str] = Field( ..., description="Required. Publicly available URL or Base64-encoded. Must contain exactly one item.", ) mask: str | None = Field( None, description="Mask image (black and white). Black areas will be preserved, white areas will be edited. " "If omitted, the edit applies to the entire image. " "The input image and the the input mask must be of the same size.", ) negative_prompt: str | None = Field(None) guidance_scale: float = Field(...) model_version: str = Field(...) steps_num: int = Field(...) seed: int = Field(...) ip_signal: bool = Field( False, description="If true, returns a warning for potential IP content in the instruction.", ) prompt_content_moderation: bool = Field( False, description="If true, returns 422 on instruction moderation failure." ) visual_input_content_moderation: bool = Field( False, description="If true, returns 422 on images or mask moderation failure." ) visual_output_content_moderation: bool = Field( False, description="If true, returns 422 on visual output moderation failure." ) class BriaRemoveBackgroundRequest(BaseModel): image: str = Field(...) sync: bool = Field(False) visual_input_content_moderation: bool = Field( False, description="If true, returns 422 on input image moderation failure." ) visual_output_content_moderation: bool = Field( False, description="If true, returns 422 on visual output moderation failure." ) seed: int = Field(...) class BriaStatusResponse(BaseModel): request_id: str = Field(...) status_url: str = Field(...) warning: str | None = Field(None) class BriaRemoveBackgroundResult(BaseModel): image_url: str = Field(...) class BriaRemoveBackgroundResponse(BaseModel): status: str = Field(...) result: BriaRemoveBackgroundResult | None = Field(None) class BriaImageEditResult(BaseModel): structured_prompt: str = Field(...) image_url: str = Field(...) class BriaImageEditResponse(BaseModel): status: str = Field(...) result: BriaImageEditResult | None = Field(None) class BriaRemoveVideoBackgroundRequest(BaseModel): video: str = Field(...) background_color: str = Field(default="transparent", description="Background color for the output video.") output_container_and_codec: str = Field(...) preserve_audio: bool = Field(True) seed: int = Field(...) class BriaRemoveVideoBackgroundResult(BaseModel): video_url: str = Field(...) class BriaRemoveVideoBackgroundResponse(BaseModel): status: str = Field(...) result: BriaRemoveVideoBackgroundResult | None = Field(None)