from fastapi import APIRouter, Depends, status

from app.deps import verify_internal_token
from app.schemas.enterprise import (
    ManagerCloneRequest,
    ManagerCloneResponse,
    MarketResearchRequest,
    MarketResearchResponse,
    VoiceCloneRequest,
    VoiceCloneResponse,
)
from app.services.enterprise import (ManagerCloneService,MarketResearchService,VoiceCloningService,
)

router = APIRouter()
_manager = ManagerCloneService()
_market = MarketResearchService()
_voice = VoiceCloningService()


@router.post(
    "/manager-clone",
    response_model=ManagerCloneResponse,
    status_code=status.HTTP_200_OK,
    summary="AI Manager Clone",
    dependencies=[Depends(verify_internal_token)],
)
async def manager_clone(payload: ManagerCloneRequest) -> ManagerCloneResponse:
    return await _manager.create(payload)


@router.post(
    "/market-research/questions",
    response_model=MarketResearchResponse,
    status_code=status.HTTP_200_OK,
    summary="Market Research Interview Questions",
    dependencies=[Depends(verify_internal_token)],
)
async def market_research_questions(
    payload: MarketResearchRequest,
) -> MarketResearchResponse:
    return await _market.questions(payload)


@router.post(
    "/voice-cloning",
    response_model=VoiceCloneResponse,
    status_code=status.HTTP_200_OK,
    summary="Branded Voice Cloning",
    dependencies=[Depends(verify_internal_token)],
)
async def voice_cloning(payload: VoiceCloneRequest) -> VoiceCloneResponse:
    return await _voice.clone(payload)
