"""Schemas — Manager clone, market research, voice cloning."""

from typing import Any
from uuid import UUID

from pydantic import BaseModel, Field

from app.schemas.common import StubMeta


class ManagerCloneRequest(BaseModel):
    """POST /api/v1/manager-clone"""

    correlation_id: UUID | None = None
    company_id: str
    manager_profile: dict[str, Any] = Field(default_factory=dict)
    sample_questions: list[str] = Field(default_factory=list)
    options: dict[str, Any] = Field(default_factory=dict)


class ManagerCloneResponse(StubMeta):
    correlation_id: UUID | None = None
    company_id: str
    clone_id: str | None = None
    style_summary: str | None = None


class MarketResearchRequest(BaseModel):
    """POST /api/v1/market-research/questions"""

    correlation_id: UUID | None = None
    role_title: str
    industry: str | None = None
    region: str | None = None
    count: int = Field(default=5, ge=1, le=20)
    options: dict[str, Any] = Field(default_factory=dict)


class MarketResearchResponse(StubMeta):
    correlation_id: UUID | None = None
    role_title: str
    questions: list[str] = Field(default_factory=list)
    sources: list[str] = Field(default_factory=list)


class VoiceCloneRequest(BaseModel):
    """POST /api/v1/voice-cloning"""

    correlation_id: UUID | None = None
    company_id: str
    voice_name: str
    sample_audio_base64: str | None = None
    sample_url: str | None = None
    options: dict[str, Any] = Field(default_factory=dict)


class VoiceCloneResponse(StubMeta):
    correlation_id: UUID | None = None
    company_id: str
    voice_id: str | None = None
    status_detail: str | None = None
