"""Onboarding API endpoints for ALwrity (stable module).

This file contains the concrete endpoint functions. It replaces the former
`backend/api/onboarding.py` monolith to avoid accidental overwrites by
external tooling. Other modules should import endpoints from this module.
"""

from typing import Dict, Any, List, Optional
from fastapi import HTTPException

# Re-export moved endpoints from modular files
from .onboarding_utils.endpoints_core import (
    health_check,
    initialize_onboarding,
    get_onboarding_status,
    get_onboarding_progress_full,
    get_step_data,
)
from .onboarding_utils.endpoints_management import (
    complete_step as _complete_step_impl,
    skip_step as _skip_step_impl,
    validate_step_access as _validate_step_access_impl,
    start_onboarding as _start_onboarding_impl,
    complete_onboarding as _complete_onboarding_impl,
    reset_onboarding as _reset_onboarding_impl,
    get_resume_info as _get_resume_info_impl,
)
from .onboarding_utils.endpoints_config_data import (
    get_api_keys,
    get_api_keys_for_onboarding,
    save_api_key,
    validate_api_keys,
    get_onboarding_config,
    get_provider_setup_info,
    get_all_providers_info,
    validate_provider_key,
    get_enhanced_validation_status,
    get_onboarding_summary,
    get_website_analysis_data,
    get_research_preferences_data,
    check_persona_generation_readiness,
    generate_persona_preview,
    generate_writing_persona,
    get_user_writing_personas,
    save_business_info,
    get_business_info,
    get_business_info_by_user,
    update_business_info,
    # Persona generation endpoints
    generate_writing_personas,
    generate_writing_personas_async,
    get_persona_task_status,
    assess_persona_quality,
    regenerate_persona,
    get_persona_generation_options
)
from .onboarding_utils.step4_persona_routes import (
    get_latest_persona,
    save_persona_update
)
from .onboarding_utils.endpoint_models import StepCompletionRequest, APIKeyRequest


# Compatibility wrapper signatures kept identical to original
async def complete_step(step_number: int, request, current_user: Dict[str, Any]):
    return await _complete_step_impl(step_number, getattr(request, 'data', None), current_user)


async def skip_step(step_number: int, current_user: Dict[str, Any]):
    return await _skip_step_impl(step_number, current_user)


async def validate_step_access(step_number: int, current_user: Dict[str, Any]):
    return await _validate_step_access_impl(step_number, current_user)


async def start_onboarding(current_user: Dict[str, Any]):
    return await _start_onboarding_impl(current_user)


async def complete_onboarding(current_user: Dict[str, Any]):
    return await _complete_onboarding_impl(current_user)


async def reset_onboarding():
    return await _reset_onboarding_impl()


async def get_resume_info():
    return await _get_resume_info_impl()


__all__ = [name for name in globals().keys() if not name.startswith('_')]


