"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""

from __future__ import annotations
import dataclasses
from dataclasses_json import Undefined, dataclass_json
from retellclient import utils
from typing import Dict, List, Optional, Literal, Union

@dataclass_json(undefined=Undefined.EXCLUDE)
@dataclasses.dataclass
class Agent:
    agent_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('agent_id') }})
    r"""Unique id of agent."""
    llm_websocket_url: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('llm_websocket_url') }})
    r"""The URL we will establish LLM websocket for getting response, usually your server."""
    voice_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('voice_id') }})
    r"""Unique voice id used for the agent. """
    last_modification_timestamp: int = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('last_modification_timestamp') }})
    r"""Last modified timestamp of the agent. """
    enable_backchannel: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('enable_backchannel'), 'exclude': lambda f: f is None }})
    r"""Controls whether the agent would backchannel (agent interjects the speaker with phrases like "yeah", "uh-huh" to signify interest and engagement)."""
    voice_temperature: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('voice_temperature'), 'exclude': lambda f: f is None }})
    r"""Controls how stable the voice is."""
    agent_name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('agent_name'), 'exclude': lambda f: f is None }})
    r"""Name of agent."""
    voice_temperature: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': {'letter_case': utils.get_field_name('voice_temperature'), 'exclude': lambda f: f is None}})
    r"""Controls how stable the voice is. Value ranging from [0,2]. Lower value means more stable, and higher value means more variant speech generation. Currently this setting only applies to 11labs voices. If unset, default value 1 will apply."""
    voice_speed: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': {'letter_case': utils.get_field_name('voice_speed'), 'exclude': lambda f: f is None}})
    r"""Controls speed of voice. Value ranging from [0.5,2]. Lower value means slower speech, while higher value means faster speech rate. If unset, default value 1 will apply."""
    responsiveness: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': {'letter_case': utils.get_field_name('responsiveness'), 'exclude': lambda f: f is None}})
    r"""Controls how responsive is the agent. Value ranging from [0,1]. Lower value means less responsive agent (wait more, respond slower), while higher value means faster exchanges (respond when it can). If unset, default value 1 will apply."""
    webhook_url: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': {'letter_case': utils.get_field_name('webhook_url'), 'exclude': lambda f: f is None}})
    r"""The webhook for agent to listen to call events. If set, will binds webhook events for this agent to the specified url, and will ignore the account level webhook for this agent. Set to string null to remove webhook url from this agent."""
    boosted_keywords: Optional[List[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': {'letter_case': utils.get_field_name('boosted_keywords'), 'exclude': lambda f: f is None}})
    r"""Provide a customized list of keywords to expand our models' vocabulary, aimed at improving performance and understanding within your specific context."""
