o
    i
                     @   sD   d dl Z d dlmZmZ d dlmZ e  G dd dZe  dS )    N)ListOptional)load_dotenvc                   @   s~  e Zd ZU dZeddZeed< e	eddZ
e	ed< eddZeed< edd	Zeed< d
Zeed< e	eddZe	ed< eddZeed< eddZeed< eddZeed< eddZeed< eddZeed< dZeed< eddZeed< eddZeed< eddZeed< ed d!Zeed < ed"d#Zeed"< ed$efd%d&Zed*d(d)Zd'S )+Configz
    Configuration class that handles all application settings.
    Follows SRP by being responsible only for configuration management.
    COMPANY_NAMEzMcube Telecom pvt LimitedPORTi  MCUBE_WEBSOCKET_URLz1ws://10.0.0.109:7900/ws/testsession_1754994722754MCUBE_WEBSOCKET_BASE_URLzws://10.0.0.109:7900/ws/zaudio/x-mulawMCUBE_AUDIO_FORMATMCUBE_SAMPLE_RATE8000AGENT_PHONE_NUMBER
7780787875ELEVENLABS_API_KEY@9949533918874a9b32624810f7357ffc6abf6127f96adbd2648db174e79162faELEVENLABS_VOICE_IDtyOTyLYwi6G1V4rsb6uyELEVENLABS_MODEL_IDeleven_turbo_v2ELEVENLABS_AGENT_ID"agent_7201ker9r8q2f5z8m6b4bbp58b8fFSHOW_TIMING_MATHDATABASE_HOSTz10.40.180.74DATABASE_NAMEmainvoicebot_clusterDATABASE_USERadminDATABASE_PASSWORDzSyntheon@1982DATABASE_CHARSETutf8mb4returnc                 C   s
   t | jS )z0Return True if Mcube configuration is available.)boolr   )cls r#   +/var/www/html/live_calls/homebook/config.pyhas_mcube_config"   s   
zConfig.has_mcube_configNc                 C   sH   g d}g }|D ]}t | |ds|| q|r"tdd| dS )z0Validate that required configuration is present.)r   r   r   Nz#Missing required config variables: z, )getattrappend
ValueErrorjoin)r"   required_varsmissingvarr#   r#   r$   validate_required_config'   s   
zConfig.validate_required_config)r    N)__name__
__module____qualname____doc__osgetenvr   str__annotations__intr   r   r	   r
   r   r   r   r   r   r   r   r!   r   r   r   r   r   classmethodr%   r-   r#   r#   r#   r$   r      s.   
 r   )r2   typingr   r   dotenvr   r   r-   r#   r#   r#   r$   <module>   s    2