from __future__ import annotations

from datetime import datetime
from typing import Any

from pydantic import BaseModel, Field


class ExpenseApplicationPreviewDecisionCreate(BaseModel):
    message: str = Field(min_length=1, max_length=4000)
    conversation_id: str | None = Field(default=None, max_length=120)
    request_id: str = Field(min_length=1, max_length=120)


class ExpenseApplicationPreviewDecisionRead(BaseModel):
    decision_id: str
    decision_source: str
    expires_at: datetime
    application_preview: dict[str, Any] = Field(default_factory=dict)
