"""Configuration for call simulation."""

from dataclasses import dataclass

from pipecat.services.llm_service import LLMService
from pipecat.services.stt_service import STTService
from pipecat.services.tts_service import TTSService


@dataclass
class VoicegroundSimulatorConfig:
    """Configuration for the simulator pipeline.

    The simulator acts as a "fake user" that has a conversation with your bot.

    Attributes:
        llm: LLM service for generating user responses.
        tts: TTS service for generating user voice.
        stt: STT service for transcribing bot speech.
        system_prompt: Instructions for the LLM on how to act as a user.
        initiate_conversation: If True, simulator speaks first when bot connects.
        max_turns: Maximum conversation turns before terminating.
        timeout_seconds: Maximum simulation duration in seconds.
    """

    llm: LLMService
    tts: TTSService
    stt: STTService
    system_prompt: str
    initiate_conversation: bool = False
    max_turns: int = 10
    timeout_seconds: float = 120.0
