from __future__ import annotations

from pydantic import BaseModel, ConfigDict, Field


class TrueWealthImportPreviewRequest(BaseModel):
    model_config = ConfigDict(extra="forbid")
    account_id: str | None = Field(default=None, min_length=1, max_length=120)
    file_name: str = Field(min_length=1, max_length=200)
    content_base64: str = Field(min_length=8, max_length=8_000_000)


class TrueWealthImportConfirmRequest(TrueWealthImportPreviewRequest):
    preview_id: str = Field(min_length=10, max_length=80)
    confirmation_id: str = Field(min_length=10, max_length=80)
    confirm: bool


class TrueWealthManualPreviewRequest(BaseModel):
    model_config = ConfigDict(extra="forbid")
    total_value_chf: str = Field(min_length=1, max_length=40)
    valuation_at: str = Field(min_length=10, max_length=40)
    note: str = Field(default="", max_length=240)


class TrueWealthManualConfirmRequest(TrueWealthManualPreviewRequest):
    preview_id: str = Field(min_length=10, max_length=80)
    confirmation_id: str = Field(min_length=10, max_length=80)
    confirm: bool


class TrueWealthManualStatusRequest(BaseModel):
    model_config = ConfigDict(extra="forbid")
    active: bool
    note: str = Field(default="", max_length=240)
    confirm: bool
