/**
 * ===
 * VoxEngine version: 7.42.0
 * ===
 */

/**
 * [ACDRequest] parameters. Can be passed as arguments to the [VoxEngine.enqueueACDRequest] method.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.ACD);
 * ```
 */
declare interface ACDEnqueueParameters {
  /**
   * Priority (1-100, 1 is the highest priority).
   * If two or more objects have the same priorities, they are handled according to the order of HTTP requests from JS scenario to the ACD queue.
   */
  priority: number;
  /**
   * Optional. Extra headers to be passed with the call to the agent.
   * Custom header names have to begin with the 'X-' prefix except the 'VI-CallTimeout': '60' which switches to another agent if current one does not answer after the timeout (in seconds, the default value is **60**, must not be less than **10** or greater than **400**).
   * The "X-" headers could be handled by a SIP phone or WEB SDK (e.g. see the [incomingCall](/docs/references/websdk/voximplant/events#incomingcall) event). Example: {'X-header':'value'}
   */
  headers?: { [header: string]: string };
  /**
   * Whether the call has video support. Please note that prices for audio only and video calls are different.
   */
  video: boolean;
  /**
   * Custom data for the current call object.
   */
  customData: string;
}

/**
 * Add the following line to your scenario code to use the events:
 * ```
 * require(Modules.ACD);
 * ```
 * @event
 */
declare enum ACDEvents {
  /**
   * Triggered when an agent is reached.
   * @typedef _ACDReachedEvent
   */
  OperatorReached = 'ACD.OperatorReached',
  /**
   * Triggered when an ACD makes a call to a user via the [callUser] method.
   * @typedef _ACDCallAttempt
   */
  OperatorCallAttempt = 'ACD.OperatorCallAttempt',
  /**
   * Triggered when an ACD request tries to reach an agent, but the agent declines the call. Note that this is just a notification, the request processing does not stop. The ACD request automatically redirects to the next free agent.
   * @typedef _ACDFailedEvent
   */
  OperatorFailed = 'ACD.OperatorFailed',
  /**
   * Triggers if the ACD service returns an internal error. The JS scenarios are not able to cause internal errors because these errors depend on internal and network issues.
   * @typedef _ACDErrorEvent
   */
  Error = 'ACD.Error',
  /**
   * Triggers as a result of the [ACDRequest.getStatus] method call.
   * @typedef _ACDWaitingEvent
   */
  Waiting = 'ACD.Waiting',
  /**
   * Triggered when an [ACDRequest] is put to the queue.
   * @typedef _ACDQueuedEvent
   */
  Queued = 'ACD.Queued',
  /**
   * Triggers if all agents that can handle a request in the specified queue are offline. In this case, the request is not queued.
   * @typedef _ACDOfflineEvent
   */
  Offline = 'ACD.Offline',
  /**
   * Triggered when we have one more request to put in the queue but the maximum number of requests (max_queue_size) is already reached. In this case, the new request is not queued. The max_queue_size and max_waiting_time default values are “unlimited”, you can change these values for every new or existing queue in the [control panel](https://manage.voximplant.com/applications).
   * @typedef _ACDQueueFullEvent
   */
  QueueFull = 'ACD.QueueFull',
}

/**
 * @private
 */
declare interface _ACDEvents {
  [ACDEvents.OperatorReached]: _ACDReachedEvent;
  [ACDEvents.OperatorCallAttempt]: _ACDCallAttempt;
  [ACDEvents.OperatorFailed]: _ACDFailedEvent;
  [ACDEvents.Error]: _ACDErrorEvent;
  [ACDEvents.Waiting]: _ACDWaitingEvent;
  [ACDEvents.Queued]: _ACDQueuedEvent;
  [ACDEvents.Offline]: _ACDOfflineEvent;
  [ACDEvents.QueueFull]: _ACDQueueFullEvent;
}

/**
 * @private
 */
declare interface _ACDBaseEvent {
  /**
   * Request that generated the event
   */
  request: ACDRequest;
}

/**
 * @private
 */
declare interface _ACDReachedEvent extends _ACDBaseEvent {
  /**
   * Established call with agent
   */
  operatorCall: Call;
}

/**
 * @private
 */
declare interface _ACDCallAttempt extends _ACDBaseEvent {
  /**
   * Agent's call
   */
  operatorCall: Call;
}

/**
 * @private
 */
declare interface _ACDFailedEvent extends _ACDBaseEvent {
  /**
   * Username of failed agent
   */
  operatorUserName: string;
  /**
   * Call status code
   */
  statusCode: number;
}

/**
 * @private
 */
declare interface _ACDErrorEvent extends _ACDBaseEvent {
  /**
   * Error message
   */
  error: string;
}

/**
 * @private
 */
declare interface _ACDWaitingEvent extends _ACDBaseEvent {
  /**
   * Estimated waiting time in minutes (value of 0 is also possible)
   */
  ewt: number;

  /**
   * Position of the request in the queue
   */
  position: number;
}

/**
 * @private
 */
declare interface _ACDQueuedEvent extends _ACDBaseEvent {}

/**
 * @private
 */
declare interface _ACDOfflineEvent extends _ACDBaseEvent {}

/**
 * @private
 */
declare interface _ACDQueueFullEvent extends _ACDBaseEvent {}

/**
 * Represents a request that is put to the ACD queue.
 * <br>
 * Add the following line to your scenario code to use the class:
 * ```
 * require(Modules.ACD);
 * ```
 */
declare class ACDRequest {
  /**
   * Returns the request's id. It can be used as the <b>acd\_request\_id</b> parameter in the [GetACDHistory](/docs/references/httpapi/managing_history#getacdhistory) method to search in ACD history.
   */
  id(): string;

  /**
   * Gets status of the current request. Not to be called before the request is successfully queued (the [ACDEvents.Queued] event). This method's call triggers the [ACDEvents.Waiting] event; it is possible to retrieve an estimated waiting time in minutes via the <b>ewt</b> property of the event.
   */
  getStatus(): void;

  /**
   * Adds a handler for the specified [ACDEvents] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
   * @param event Event class (i.e., [ACDEvents.Offline])
   * @param callback Handler function. A single parameter is passed - object with event information
   */
  addEventListener<T extends keyof _ACDEvents>(
    event: ACDEvents | T,
    callback: (event: _ACDEvents[T]) => any,
  ): void;

  /**
   * Removes a handler for the specified [ACDEvents] event.
   * @param event Event class (i.e., [ACDEvents.Offline])
   * @param callback Optional. Handler function. If not specified, all handler functions are removed
   */
  removeEventListener<T extends keyof _ACDEvents>(
    event: ACDEvents | T,
    callback?: (event: _ACDEvents[T]) => any,
  ): void;

  /**
   * Cancel pending request and remove it from the queue
   */
  cancel(): void;
}

/**
 * The AI module provides additional methods that use Artificial Intelligence. These methods allow solving business tasks in a more productive way.
 * <br>
 * Add the following line to your scenario code to use the namespace:
 * ```
 * require(Modules.AI);
 * ```
 */
declare namespace AI {}

declare namespace AI {
  /**
   * Creates a new [AI.DialogflowInstance] which provides resources for exchanging data with the Dialogflow API, handling specified events, etc. You can attach media streams later via the [AI.DialogflowInstance.sendMediaTo] or [VoxEngine.sendMediaBetween] methods.
   * <br>
   * Add the following line to your scenario code to use the function:
   * ```
   * require(Modules.AI);
   * ```
   * @param parameters Dialogflow parameters
   */
  function createDialogflow(parameters: DialogflowSettings): DialogflowInstance;
}

declare namespace AI {
  /**
   * Represents a parameters of the voicemail recognition session.
   * <br>
   * Add the following line to your scenario code to use the interface:
   * ```
   * require(Modules.AI);
   * ```
   * @deprecated Use [AMD] instead
   **/
  interface DetectVoicemailParameters {
    /**
     * Optional. Recognition model. The possible values are **ru**, **colombia**. The default value is **ru**.
     */
    model?: string;
    /**
     * Optional. Detection threshold in the **0.0 - 1.0 milliseconds** range. Durations shorter than this value are considered human speech, and durations longer than this value are considered voicemail. The default value is **0.8**. Available only with the **latam** model.
     */
    threshold?: number;
  }
}

declare namespace AI {
  /**
   * Start a voicemail recognition session. You can check how many times voicemail was detected in the call history.
   * <br>
   * Add the following line to your scenario code to use the function:
   * ```
   * require(Modules.AI);
   * ```
   * @param call
   * @param parameters
   * @deprecated Use [AMD] instead
   */
  function detectVoicemail(
      call: Call,
      parameters: DetectVoicemailParameters
  ): Promise<AI.Events>;
}

declare namespace AI {
  /**
   * Dialogflow events allow matching intents by event name instead of the natural language input.
   * <br>
   * Add the following line to your scenario code to use the interface:
   * ```
   * require(Modules.AI);
   * ```
   */
  interface DialogflowEventInput {
    /**
     * The unique identifier of the event.
     */
    name: string;
    /**
     * The collection of parameters associated with the event
     */
    parameters: { [key: string]: any };
    /**
     * The language ot this conversation query
     */
    languageCode: DialogflowLanguage;
  }
}

declare namespace AI {
  /**
   * Represents a Dialogflow instance.
   * <br>
   * Add the following line to your scenario code to use the class:
   * ```
   * require(Modules.AI);
   * ```
   */
  class DialogflowInstance {
    /**
     * @param id
     * @param parameters Dialogflow parameters
     */
    constructor(id: string, parameters: Object);

    /**
     * Returns the dialogflow instance's id.
     */
    id(): string;

    /**
     * Set parameters for the intents.
     * @param queryParameters Query parameters
     */
    setQueryParameters(queryParameters: DialogflowQueryParameters): void;

    /**
     * Set a collection of phrase hints for the intents.
     * @param phraseHints The collection of phrase hints to boost the speech recognition accuracy
     */
    setPhraseHints(phraseHints: { [id: string]: string }): void;

    /**
     * Update the audio output configuration.
     * @param outputAudioConfig Config of the audio output
     */
    setOutputAudioConfig(outputAudioConfig: DialogflowOutputAudioConfig): void;

    /**
     * Stop and destroy the current Dialogflow instance.
     */
    stop(): void;

    /**
     * Send a query to the DialogFlow instance. You can send either a text string up to **256 characters** or an event object with the event name and additional data.
     * @param dialogflowQuery Text string (up to **256 characters**) or an event object
     */
    sendQuery(dialogflowQuery: DialogflowQueryInput): void;

    /**
     * Add a Dialogflow speech synthesis playback marker. The [AI.Events.DialogflowPlaybackMarkerReached](/docs/references/voxengine/ai/events#dialogflowplaybackmarkerreached) event is triggered when the marker is reached.
     * @param offset Positive/negative offset in milliseconds from the start/end of media
     */
    addMarker(offset: number): void;

    /**
     * Starts sending media (voice) from a Dialogflow participant to the media unit.
     * @param mediaUnit Media unit that receives media
     * @param parameters Optional. WebSocket interaction only parameters
     */
    sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

    /**
     * Stops sending media (voice) from a Dialogflow participant to the media unit.
     */
    stopMediaTo(mediaUnit: VoxMediaUnit): void;

    /**
     * Adds a handler for the specified [AI.Events]. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event A member of [AI.Events] to handle, e.g. [DialogflowResponse].
     * @param callback Handler function. A single parameter is passed: object with event information
     */
    addEventListener<T extends keyof AI._Events>(
      event: AI.Events | T,
      callback: (event: AI._Events[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [AI.Events] event.
     * @param event A member of [AI.Events] to handle, e.g. [DialogflowResponse].
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof AI._Events>(
      event: AI.Events | T,
      callback?: (event: AI._Events[T]) => any,
    ): void;
  }
}

declare namespace AI {
  /**
   * Instructs the speech synthesizer on how to generate the output audio content.
   * <br>
   * Add the following line to your scenario code to use the interface:
   * ```
   * require(Modules.AI);
   * ```
   */
  interface DialogflowOutputAudioConfig {
    /**
     * Optional. Configuration of how speech should be synthesized.
     */
    synthesizeSpeechConfig?: DialogflowSynthesizeSpeechConfig;
  }
}

declare namespace AI {
  /**
   * Represents a Dialogflow query input. It can contain either:
   * 1. A conversational query in the form of text
   * 2. An event that specifies which intent to trigger
   * <br>
   * Add the following line to your scenario code to use the interface:
   * ```
   * require(Modules.AI);
   * ```
   */
  interface DialogflowQueryInput {
    /**
     * The natural language text to be processed.
     */
    text: DialogflowTextInput;
    /**
     * The event to be processed.
     */
    event: DialogflowEventInput;
  }
}

declare namespace AI {
  /**
   * Represents a parameters of the conversational query.
   * <br>
   * Add the following line to your scenario code to use the interface:
   * ```
   * require(Modules.AI);
   * ```
   **/
  interface DialogflowQueryParameters {
    /**
     * Optional. The time zone of the conversational query from the time zone database, e.g., America/New_York, Europe/Paris. If not provided, the system uses the time zone specified in agent settings.
     */
    timeZone?: string;
    /**
     * Optional. The geolocation of the conversational query.
     */
    geoLocation?: { [key: string]: any };
    /**
     * Optional. The collection of contexts to be activated before the query execution.
     */
    contexts?: any[];
    /**
     * Optional. Whether to delete all contexts in the current session before activation of a new one.
     */
    resetContexts?: boolean;
    /**
     * Optional. The collection of session entity types to replace or extend developer entities with for this query only. The entity synonyms apply to all languages.
     */
    sessionEntityTypes?: any[];
    /**
     * Optional. Use this field to pass custom data into the webhook associated with the agent. Arbitrary JSON objects are supported.
     */
    payload?: { [key: string]: any };
  }
}

declare namespace AI {
  /**
   * Represents a Dialogflow intent response.
   * <br>
   * Add the following line to your scenario code to use the interface:
   * ```
   * require(Modules.AI);
   * ```
   */
  interface DialogflowResponse {
    /**
     * The unique identifier of the response. Use it to locate a response in the training example set or for reporting issues.
     */
    responseId: string;
    /**
     * Optional. The result of the conversational query or event processing.
     */
    queryResult?: DialogflowResult;
    /**
     * Optional. The result of speech recognition.
     */
    recognitionResult?: DialogflowStreamingRecognitionResult;
    /**
     * Status of the webhook request.
     */
    webhookStatus: { [id: string]: any };
  }
}

declare namespace AI {
  /**
   * Represents a result of an intent response.
   * <br>
   * Add the following line to your scenario code to use the interface:
   * ```
   * require(Modules.AI);
   * ```
   **/
  interface DialogflowResult {
    /**
     * The original conversational query text:  - If natural language text was provided as input, query_text contains a copy of the input.  - If natural language speech audio was provided as input, query_text contains the speech recognition result. If speech recognizer produced multiple alternatives, a particular one is picked.  - If an event was provided as input, query_text is not set.
     */
    queryText: string;
    /**
     * The action name from the matched intent.
     */
    action: string;
    /**
     * The collection of extracted parameters.
     */
    parameters: { [id: string]: any };
    /**
     * Whether all the required parameters are present. This field is set to:  - false if the matched intent has required parameters and not all the required parameter values have been collected.  - true if all required parameter values have been collected, or if the matched intent does not contain any required parameters.
     */
    allRequiredParamsPresent: boolean;
    /**
     * This field is set to:  - false if the matched intent has required parameters and not all the required parameter values have been collected.  - true if all required parameter values have been collected, or if the matched intent does not contain any required parameters.
     * @deprecated
     */
    fulfillmentText: string;
    /**
     * The collection of rich messages to present to the user.
     */
    fulfillmentMessages: any[];
    /**
     * The intent that matched the conversational query. Some, not all fields are filled in this message, including but not limited to: name, display_name and webhook_state.
     */
    intent: { [id: string]: any };
    /**
     * The intent detection confidence. Values range from 0.0 (completely uncertain) to 1.0 (completely certain).
     */
    intentDetectionConfidence: number;
    /**
     * The free-form diagnostic info. For example, this field could contain webhook call latency.
     */
    diagnosticInfo: { [id: string]: any };
    /**
     * The language that was triggered during intent detection. See [Language support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes.
     */
    languageCode: string;
  }
}

declare namespace AI {
  /**
   * Settings for setting up a new Dialogflow instance
   * <br>
   * Add the following line to your scenario code to use the interface:
   * ```
   * require(Modules.AI);
   * ```
   **/
  interface DialogflowSettings {
    /**
     * Language for the Dialogflow instance.
     */
    lang: DialogflowLanguage;
    /**
     * Optional. The collection of phrase hints to boost accuracy of speech recognition.
     */
    phraseHints?: any[];
    /**
     * Initial query parameters.
     */
    queryParameters: DialogflowQueryParameters;
    /**
     * Whether to enable single utterance.
     */
    singleUtterance: boolean;
    /**
     * Instructs the speech synthesizer how to generate the output audio content.
     */
    outputAudioConfig: DialogflowOutputAudioConfig;
    /**
     * Optional. Dialogflow session id. Use it for connection to the existing Dialogflow session or to specify your own id for a new session.
     */
    sessionId?: string;
    /**
     * Optional. ID of the Dialogflow agent certificate to use. It can be any of the certificates previously added in the [control panel](https://manage.voximplant.com/applications), see the Dialogflow Connector section in your Voximplant application. You do not need to specify agentId if you have only one Dialogflow agent certificate in your Voximplant application.
     */
    agentId?: number;
    /**
     * Optional. Part of the Dialogflow [session](https://cloud.google.com/dialogflow/docs/reference/rpc/google.cloud.dialogflow.v2beta1#google.cloud.dialogflow.v2beta1.StreamingDetectIntentRequest) name. If Environment ID is not specified, we assume default ‘draft’ environment.
     */
    environmentId?: string;
    /**
     * Optional. Part of the Dialogflow [session](https://cloud.google.com/dialogflow/docs/reference/rpc/google.cloud.dialogflow.v2beta1#google.cloud.dialogflow.v2beta1.StreamingDetectIntentRequest) name. If User ID is not specified, we use “-”.
     */
    userId?: string;
    /**
     * Optional. Whether to use beta. The Voximplant Dialogflow Connector uses Dialogflow v2 Beta by default. Set false to use the non-Beta version of Dialogflow v2.
     */
    beta?: boolean;
    /**
     * Optional. The agent’s location.
     */
    region?: string;
    /**
     * Optional. Machine learning model to transcribe your audio file.
     */
    model?: DialogflowModel;
    /**
     * Optional. Variant of the specified Speech model to use.
     */
    modelVariant?: DialogflowModelVariant;
  }
}

declare namespace AI {
  /**
   * Contains a speech recognition result, corresponding to a portion of the audio that is currently being processed; or an indication that this is the end of the single requested utterance.
   * <br>
   * Add the following line to your scenario code to use the interface:
   * ```
   * require(Modules.AI);
   * ```
   */
  interface DialogflowStreamingRecognitionResult {
    /**
     * Type of the result message.
     */
    messageType: string;
    /**
     * Optional. Transcript text representing the words that the user spoke.
     */
    transcript: string;
    /**
     * The default of **0.0** is a sentinel value indicating confidence was not set. If **false**, the *StreamingRecognitionResult* represents an interim result that may change. If **true**, the recognizer does not return any further hypotheses about this piece of the audio.
     */
    isFinal: boolean;
    /**
     * The Speech confidence between **0.0** and **1.0** for the current portion of audio. The default of **0.0** is a sentinel value indicating that confidence was not set. Note that the field is typically only provided if **is_final: true**, and you should not rely on it being accurate or even set.
     */
    confidence: number;
  }
}

declare namespace AI {
  /**
   * Configuration of how speech should be synthesized.
   * <br>
   * Add the following line to your scenario code to use the interface:
   * ```
   * require(Modules.AI);
   * ```
   */
  interface DialogflowSynthesizeSpeechConfig {
    /**
     * Optional. Speaking rate/speed, in the range [0.25, 4.0]. 1.0 is the normal native speed supported by the specific voice. 2.0 is twice as fast, and 0.5 is half as fast. If not set (0.0), defaults to the native 1.0 speed. Any other values < 0.25 or > 4.0 return an error.
     */
    speakingRate?: number;
    /**
     * Optional. Speaking pitch, in the range [-20.0, 20.0]. 20 means increase 20 semitones from the original pitch. -20 means decrease 20 semitones from the original pitch.
     */
    pitch?: number;
    /**
     * Optional. Volume gain (in dB) of the normal native volume supported by the specific voice, in the range [-96.0, 16.0]. If not set, or set to a value of 0.0 (dB), plays at normal native signal amplitude. A value of -6.0 (dB) plays at approximately half the amplitude of the normal native signal amplitude. A value of +6.0 (dB) plays at approximately twice the amplitude of the normal native signal amplitude. We strongly recommend not to exceed +10 (dB) as there is usually no effective increase in loudness for any value greater than that.
     */
    volumeGainDb?: number;
    /**
     * Optional. An identifier which selects 'audio effects' profiles that are applied on (post synthesized) text to speech. Effects are applied on top of each other in the order they are given.
     */
    effectsProfileId?: string[];
    /**
     * Optional. The desired voice of the synthesized audio.
     */
    voice?: DialogflowVoiceSelectionParameters;
  }
}

declare namespace AI {
  /**
   * Represents a natural language text to be processed.
   * <br>
   * Add the following line to your scenario code to use the interface:
   * ```
   * require(Modules.AI);
   * ```
   */
  interface DialogflowTextInput {
    /**
     * The UTF-8 encoded natural language text to be processed. Text length must not exceed 256 bytes
     */
    text: string;
    /**
     * The language ot the conversation query
     */
    languageCode: DialogflowLanguage;
  }
}

declare namespace AI {
  /**
   * Description of which voice to use for speech synthesis.
   * <br>
   * Add the following line to your scenario code to use the interface:
   * ```
   * require(Modules.AI);
   * ```
   */
  interface DialogflowVoiceSelectionParameters {
    /**
     * Optional. The name of the voice. If not set, the service chooses a voice based on the other parameters such as language_code and gender.
     */
    name?: string;
    /**
     * Optional. The preferred gender of the voice. If not set, the service chooses a voice based on the other parameters such as language_code and name. Note that this is only a preference, not requirement. If a voice of the appropriate gender is not available, the synthesizer should substitute a voice with a different gender rather than failing the request.
     */
    ssmlGender?: DialogflowSsmlVoiceGender;
  }
}

declare namespace AI {
  /**
   * Add the following line to your scenario code to use the events:
   * ```
   * require(Modules.AI);
   * ```
   * @event
   */
  enum Events {
    /**
     * Triggered when a Dialogflow instance returns a query result.
     * @typedef _DialogflowQueryResultEvent
     */
    DialogflowQueryResult = 'AI.Events.DialogflowQueryResult',
    /**
     * Triggered when a Dialogflow instance returns a recognition result.
     * @typedef _DialogflowRecognitionResultEvent
     */
    DialogflowRecognitionResult = 'AI.Events.DialogflowRecognitionResult',
    /**
     * Triggered when a Dialogflow instance returns an intent response.
     * @typedef _DialogflowResponseEvent
     */
    DialogflowResponse = 'AI.Events.DialogflowResponse',
    /**
     * Triggered when a Dialogflow instance causes error.
     * @typedef _DialogflowErrorEvent
     */
    DialogflowError = 'AI.Events.DialogflowError',
    /**
     * Triggered when a Dialogflow instance is stopped.
     * @typedef _DialogflowStoppedEvent
     */
    DialogflowStopped = 'AI.Events.DialogflowStopped',
    /**
     * Triggered when a playback of a single phrase is finished successfully or in case of playback error.
     * @typedef _DialogflowPlaybackFinishedEvent
     */
    DialogflowPlaybackFinished = 'AI.Events.DialogflowPlaybackFinished',
    /**
     * Triggered when a playback of a single phrase is started.
     * @typedef _DialogflowPlaybackStartedEvent
     */
    DialogflowPlaybackStarted = 'AI.Events.DialogflowPlaybackStarted',
    /**
     * Triggered when 'DialogflowInstance.addMarker' is reached.
     * @typedef _DialogflowPlaybackMarkerReachedEvent
     */
    DialogflowPlaybackMarkerReached = 'AI.Events.DialogflowPlaybackMarkerReached',
    /**
     * Triggered when an answering machine or voicemail is detected.
     * @typedef _VoicemailDetectedEvent
     * @deprecated Use [AMD] instead
     */
    VoicemailDetected = 'AI.Events.VoicemailDetected',
    /**
     * Triggered when an answering machine or voicemail is not detected.
     * @typedef _VoicemailNotDetectedEvent
     * @deprecated Use [AMD] instead
     */
    VoicemailNotDetected = 'AI.Events.VoicemailNotDetected',
  }

  /**
   * @private
   */
  interface _Events {
    [Events.DialogflowQueryResult]: _DialogflowQueryResultEvent;
    [Events.DialogflowRecognitionResult]: _DialogflowRecognitionResultEvent;
    [Events.DialogflowResponse]: _DialogflowResponseEvent;
    [Events.DialogflowError]: _DialogflowErrorEvent;
    [Events.DialogflowStopped]: _DialogflowStoppedEvent;
    [Events.DialogflowPlaybackFinished]: _DialogflowPlaybackFinishedEvent;
    [Events.DialogflowPlaybackStarted]: _DialogflowPlaybackStartedEvent;
    [Events.DialogflowPlaybackMarkerReached]: _DialogflowPlaybackMarkerReachedEvent;
    [Events.VoicemailDetected]: _VoicemailDetectedEvent;
    [Events.VoicemailNotDetected]: _VoicemailNotDetectedEvent;
  }

  /**
   * @private
   */
  interface _DialogflowEvent {
    /**
     * Link to the Dialogflow instance.
     */
    dialogflow: DialogflowInstance;
  }

  /**
   * @private
   */
  interface _DialogflowQueryResultEvent extends _DialogflowEvent {
    /**
     * The results of the conversational query or event processing.
     */
    result: DialogflowResult;
  }

  /**
   * @private
   */
  interface _DialogflowRecognitionResultEvent extends _DialogflowEvent {
    /**
     * The default of **0.0** is a sentinel value indicating confidence was not set. If **false**, the *StreamingRecognitionResult* represents an interim result that may change. If **true**, the recognizer does not return any further hypotheses about this piece of the audio.
     */
    isFinal: boolean;
  }

  /**
   * @private
   */
  interface _DialogflowResponseEvent extends _DialogflowEvent {
    /**
     * The intent response.
     */
    response: DialogflowResponse;
  }

  /**
   * @private
   */
  interface _DialogflowErrorEvent extends _DialogflowEvent {
    /**
     * The cause of the event.
     */
    cause: string;
  }

  /**
   * @private
   */
  interface _DialogflowStoppedEvent extends _DialogflowEvent {
    /**
     * The cause of the event.
     */
    cause: string;
  }

  /**
   * @private
   */
  interface _DialogflowPlaybackFinishedEvent extends _DialogflowEvent {
    error?: string;
  }

  /**
   * @private
   */
  interface _DialogflowPlaybackStartedEvent extends _DialogflowEvent {
    /**
     * Playback duration.
     */
    duration: number;
  }

  /**
   * @private
   */
  interface _DialogflowPlaybackMarkerReachedEvent extends _DialogflowEvent {
    /**
     * Marker offset.
     */
    offset: number;
  }

  /**
   * @private
   */
  interface _VoicemailBaseEvent {
    /**
     * Call that triggers the event.
     */
    call: Call;
  }

  /**
   * @private
   */
  interface _VoicemailDetectedEvent extends _VoicemailBaseEvent {
    /**
     * Recognition confidence. Values range from **0** (completely uncertain) to **100** (completely certain). The value is not guaranteed to be accurate, consider it while handling the event.
     */
    confidence: number;
  }

  /**
   * @private
   */
  interface _VoicemailNotDetectedEvent extends _VoicemailBaseEvent {}
}

/**
 * Answering Machine Detection provides methods that allow developers to recognize voicemail prompts with the help of artificial intelligence.
 * Read more about the topic in the [Voicemail detection](/docs/guides/calls/voicemail-detection) article.
 */
declare namespace AMD {}

declare namespace AMD {
  /**
   * Answering machine or voicemail detector class.
   */
  class AnsweringMachineDetector {
    readonly call?: Call;

    readonly model: AMD.Model;
    readonly timeout?: number;

    /**
     * Returns the Answering machine detector's id.
     */
    id(): string;

    /**
     * Starts answering machine or voicemail recognition session.
     */
    detect(): Promise<AMD.Events>;

    /**
     * Adds a handler for the specified [AMD.Events]. Use only functions as handlers; anything except a function leads to an error and scenario termination when a handler is called.
     * @param event Event class (e.g., [AMD.Events.DetectionComplete])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof AMD._Events>(
      event: AMD.Events | T,
      callback: (event: AMD._Events[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [AMD.Events] event.
     * @param event Event class (i.e., [AMD.Events.DetectionComplete])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof AMD._Events>(
      event: AMD.Events | T,
      callback?: (event: AMD._Events[T]) => any,
    ): void;
  }
}

declare namespace AMD {
  /**
   * Creates a new [AMD.AnsweringMachineDetector] instance. You can attach sources later via the [VoxMediaUnit] **sendMediaTo** method.
   */
  function create(parameters: AMD.Parameters): AMD.AnsweringMachineDetector;
}

declare namespace AMD {
  /**
   * @event
   */
  enum Events {
    /**
     * Triggered when answering machine or voicemail detection is complete.
     * @typedef AMD._DetectionCompleteEvent
     */
    DetectionComplete = 'AMD.Events.DetectionComplete',
    /**
     * Triggered when answering machine detector throw an error.
     * @typedef AMD._DetectionErrorEvent
     */
    DetectionError = 'AMD.Events.DetectionError',
  }

  /**
   * @private
   */
  interface _Events {
    [AMD.Events.DetectionComplete]: AMD._DetectionCompleteEvent;
    [AMD.Events.DetectionError]: AMD._DetectionErrorEvent;
  }

  /**
   * @private
   */
  interface _AMDEvent {
    /**
     * AMD instance that generated the event
     */
    amd: AMD.AnsweringMachineDetector;
  }

  /**
   * @private
   */
  interface _DetectionCompleteEvent extends _AMDEvent{
    /**
     * Call that triggers the event.
     */
    call: Call;
    /**
     * The id of the Call.
     */
    callId: string;
    /**
     * Answering machine result class, such as human, voicemail, timeout or call termination.
     */
    resultClass: AMD.ResultClass;
    /**
     * Answering machine result subtype, such as MIMIC or NONE.
     */
    resultSubtype?: AMD.ResultSubtype;
    /**
     * Recognition confidence. Values range from 0 (completely uncertain) to 100 (completely certain). The value is not guaranteed to be accurate, consider it while handling the event.
     */
    confidence?: number;
  }

  /**
   * @private
   */
  interface _DetectionErrorEvent extends _AMDEvent{
    /**
     * The id of the Call.
     */
    callId?: string;
    /**
     * Error message.
     */
    message: string;
  }
}

declare namespace AMD {
  /**
   * Answering machine or voicemail detector model.
   */
  enum Model {
    /**
     * Brazil
     */
    BR = 'br',
    /**
     * Chile
     */
    CL = 'cl',
    /**
     * Colombia
     */
    CO = 'colombia',
    /**
     * General European multilingual model
     */
    EU_GENERAL = 'eu_general',
    /**
     * Spanish
     */
    ES = 'es',
    /**
     * Kazakhstan
     */
    KZ = 'kz',
    /**
     * Mexico
     */
    MX = 'mx',
    /**
     * Russia
     */
    RU = 'ru',
    /**
     * Philippines
     */
    PH = 'ph',
    /**
     * Peru
     */
    PE = 'pe',
    /**
     * United States
     */
    US = 'us',
  }
}

declare namespace AMD {
  /**
   * Parameters for the [AMD.create] method.
   */
  interface Parameters {
    /**
     * Recognition model - [AMD.Model].
     */
    model: AMD.Model;
    /**
     * Optional. Detection timeout in milliseconds. Note that the timeout is only triggered after the [CallEvents.Connected] event. The default value is **6500**. Must not be less than **0** or greater than **20000**.
     */
    timeout?: number;
    /**
     * Optional. Detection threshold in the range **0.0** - **1.0**.
     */
    thresholds?: AMD.Thresholds;
  }
}

declare namespace AMD {
  /**
   * Answering machine result class, such as human, voicemail, timeout or call termination.
   */
  enum ResultClass {
    /**
     * AMD detected a voicemail prompt.
     */
    VOICEMAIL = 'VOICEMAIL',
    /**
     * AMD detected a human answering.
     */
    HUMAN = 'HUMAN',
    /**
     * AMD reached the recognition timeout.
     */
    TIMEOUT = 'TIMEOUT',
    /**
     * AMD detected a call hangup.
     */
    CALL_ENDED = 'CALL_ENDED',
  }
}

declare namespace AMD {
  /**
   * Answering machine result subtype, such as mimic or none.
   */
  enum ResultSubtype {
    /**
     * AI-powered answering machine that mimics human voice and conversation style.
     */
    MIMIC = 'MIMIC',
    /**
     * Other types of answering machines.
     */
    NONE = 'NONE',
  }
}

declare namespace AMD {
  /**
   * Detection threshold in the range **0.0** - **1.0**
   */
  interface Thresholds {
    human?: number;
    voicemail?: number;
    mimic?: number;
  }
}

/**
 * @event
 */
declare enum AppEvents {
  /**
   * Triggered when an incoming call arrives.
   * @typedef _CallAlertingEvent
   */
  CallAlerting = 'Application.CallAlerting',
  /**
   * Triggered when a session is about to terminate. Triggers in two cases:<br>
   * 1) when there are no calls and/or ACD requests in a call session. See the [session limits](/docs/guides/voxengine/limits) for details;<br>
   * 2) when the [VoxEngine.terminate](/docs/references/voxengine/voxengine/terminate) method is called. Timers and any other external resources are not available after this event is triggered,
   * but you can perform one HTTP request inside the event handler (e.g. to notify an external system about the fact that the session is finished).
   * When that request is finished (or no such request is made), the [AppEvents.Terminated] event is triggered.
   * @typedef _TerminatingEvent
   */
  Terminating = 'Application.Terminating',
  /**
   * Triggered when a session is terminated and after the [AppEvents.Terminating] event is triggered.
   * The time between these events depends on handler for [AppEvents.Terminating] event.
   * Use the event just for debugging, only the [Logger.write] method could be used in a handler.
   * @typedef _TerminatedEvent
   */
  Terminated = 'Application.Terminated',
  /**
   * The very first event is triggered due to incoming call or HTTP request to Voximplant cloud over the internet.
   * Triggers only once in a session, so if you execute the same HTTP request again it creates the new, separate session.
   * Note that usage of the event in your JS scenario is optional.
   * @typedef _StartedEvent
   */
  Started = 'Application.Started',
  /**
   * Triggered when the Management API request is received by the session.
   * 
   * If you [start a call session with the HTTP request](/docs/references/httpapi/managing_scenarios#startscenarios), you get an answer: an object with media\_session\_access\_url property.
   * The property's value is the managing URL for the specified session, so it can be used in managing HTTP request that triggers [AppEvents.HttpRequest] event.
   * 
   * You can find more information in the [Remote session management](/docs/guides/voxengine/remote-sessions) article.
   * @typedef _HttpRequestEvent
   */
  HttpRequest = 'Application.HttpRequest',

  /**
   * Triggered when there is a new connection to a WebSocket.
   * @typedef _NewWebSocketEvent
   */
  WebSocket = 'AppEvents.NewWebSocketConnection',

  /**
   * Triggered when a WebSocket fails. It can happen when the number of incoming WebSocket connections exceeds the number of calls in one session + 3.
   * @typedef _NewWebSocketFailedEvent
   */
  NewWebSocketFailed = 'Application.OnNewWebSocketFailed',
}

/**
 * @private
 */
declare interface _AppEvents {
  [AppEvents.CallAlerting]: _CallAlertingEvent;
  [AppEvents.Terminating]: _TerminatingEvent;
  [AppEvents.Terminated]: _TerminatedEvent;
  [AppEvents.Started]: _StartedEvent;
  [AppEvents.HttpRequest]: _HttpRequestEvent;
  [AppEvents.WebSocket]: _NewWebSocketEvent;
  [AppEvents.NewWebSocketFailed]: _NewWebSocketFailedEvent;
}

/**
 * @private
 */
declare interface _HttpRequestEvent {
  /**
   *  HTTP request method. E.g. 'POST'.
   */
  method: string;
  /**
   *  HTTP path requested (without the domain name). E.g. '/request/1d61f27ba2faad53.1500645140.80028_185.164.148.244/eb4b0539b13e2401'.
   */
  path: string;
  /**
   *  HTTP request content. E.g. '{"param1": "value1", "param2": "value2"}'.
   */
  content: string;
  /**
   * List of dictionaries with key and value fields representing HTTP headers (the ones starting with "X-").
   */
  headers: { key: string; value: string }[];
}


/**
 * @private
 */
declare interface _NewWebSocketFailedEvent extends _HttpRequestEvent {
  reason: string;
}

/**
 * @private
 */
declare interface _NewWebSocketEvent extends _HttpRequestEvent {
  websocket: WebSocket;
}

/**
 * @private
 */
declare interface _StartedEvent {
  /**
   * HTTP URL that can be used to send commands to this scenario from the external systems.
   */
  accessURL: string;
  /**
   * HTTPS URL that can be used to send commands to this scenario from the external systems.
   */
  accessSecureURL: string;
  /**
   * Unique identification number of the Voximplant account. Can be used as one of the [authentication parameters](/docs/references/httpapi/auth_parameters) in management API methods.
   */
  accountId: number;
  /**
   * Unique identification number of Voximplant application. Can be used in [Managing Applications](/docs/references/httpapi/managing_applications) in management API methods.
   */
  applicationId: number;
  /**
   * Direct link to the call's log.
   */
  logURL: string;
  /**
   * Identification number of JS session that is unique within an account and its child accounts. Can be used in [Managing History](/docs/references/httpapi/managing_history) in management API methods.
   */
  sessionId: number;
  /**
   * Conference name that is passed to the conference session created via the management API.
   */
  conference_name: string;
}

/**
 * @private
 */
declare interface _SystemError {
  systemError?: boolean
}

/**
 * @private
 */
declare interface _TerminatedEvent extends _SystemError {}

/**
 * @private
 */
declare interface _TerminatingEvent extends _SystemError {}

/**
 * @private
 */
declare interface _CallAlertingEvent {
  /**
   * Incoming call that triggered the event.
   */
  call: Call;
  /**
   * Name of the event - "Application.CallAlerting".
   */
  name: string;
  /**
   * CallerID for current call.
   */
  callerid: string;
  /**
   * Dialed number.
   */
  destination: string;
  /**
   * Dialed SIP URI.
   */
  toURI: string;
  /**
   * Source CallerID with domain or SIP URI for incoming SIP call.
   */
  fromURI: string;
  /**
   * Displayable name of the caller.
   */
  displayName: string;
  /**
   * Custom SIP headers received with the call starting with "X-". Additionally, it supports the "User-to-User" headers from SIP protocol.
   */
  headers: { [header: string]: string };
  /**
   * Optional. Custom data for the current call object. It can be passed from Web SDK via the [Client.call](/docs/references/websdk/voximplant/client#call) method in the *customData* parameter.
   */
  customData?: string;
  /**
   * Internal information about codecs, should be passed to the [VoxEngine.callUser], [VoxEngine.callUserDirect], [VoxEngine.callSIP], [VoxEngine.callConference], [Call.answer], [Call.answerDirect], [Call.startEarlyMedia] methods call.
   */
  scheme: string;
}
/**
 * Represents an application storage object to manipulate key-value pairs.
 * <br>
 * Add the following line to your scenario code to use the class:
 * ```
 * require(Modules.ApplicationStorage);
 * ```
 */
declare namespace ApplicationStorage {
}

declare namespace ApplicationStorage {
  /**
   * Retrieves a value of the specified key.
   * @param key Key to get
   */
  function get(key: string): Promise<StorageKey | null>;
}

declare namespace ApplicationStorage {
  /**
   * Retrieves all the keys assigned to a Voximplant application.
   * @param pattern Optional. Namespace that keys should contain
   * @param count Optional. Maximum number of keys to return in a single request. The default value is **1000**.
   */
  function keys(pattern?: string, count?: number): Promise<StoragePage>;
}

declare namespace ApplicationStorage {
  /**
   * Creates a key-value pair. If an already existing **key** is passed, the method updates its **value**.
   * <br>
   * The keys should be unique within a Voximplant application.
   * @param key Key to create/update, up to 200 characters. A key can contain a namespace that is written before a colon, for example, test:1234. Thus, namespace "test" can be used as a **pattern** in the [keys](/docs/references/voxengine/applicationstorage#keys) method to find the keys with the same namespace. If no namespace is set, the key itself is considered as namespace
   * @param value Value for the specified key, up to 2000 characters
   * @param ttl Key expiry time in seconds. The value is in range of 0..7,776,000 (90 days). The TTL is converted to an `expireAt` Unix timestamp field as part of the storage object. Note that the pricing is tiered in three day-based pieces: 0-30, 31-60, 61-90. See the details [here](https://voximplant.com/pricing)
   */
  function put(key: string, value: string, ttl: number): Promise<StorageKey>;
}

declare namespace ApplicationStorage {
  /**
   * Removes the specified key. Note that the returned **StorageKey** always has zero **ttl**.
   * @param key Key to delete
   */
  function remove(key: string): Promise<StorageKey>;
}

/**
 * List of available dictionaries for ASR.
 * <br>
 * Add the following line to your scenario code to use the enum:
 * ```
 * require(Modules.ASR);
 * ```
 * @deprecated Use [ASRModelList] instead
 */
declare enum ASRDictionary {
  /**
   * ASR Russian addresses dictionary
   * @deprecated Use [ASRModelList] instead
   */
  ADDRESS_RU = 'asr-dict-address-ru',
  /**
   * ASR Turkish addresses dictionary
   * @deprecated Use [ASRModelList] instead
   */
  ADDRESS_TR = 'asr-dict-address-tr',
  /**
   * ASR addresses dictionary
   * Available languages 'ru-RU','en-US','uk-UK','tr-TR','de-DE','fr-FR','es-ES'
   * @deprecated Use [ASRModelList] instead
   */
  ADDRESS = 'asr-dict-yand-maps',
  /**
   * ASR notes dictionary
   * @deprecated Use [ASRModelList] instead
   */
  NOTES = 'asr-dict-yand-notes',
  /**
   * ASR queries dictionary
   * Available languages 'ru-RU','en-US','uk-UK','tr-TR'
   * @deprecated Use [ASRModelList] instead
   */
  SEARCH_QUERIES = 'asr-dict-yand-queries',
  /**
   * ASR music dictionary
   * @deprecated Use [ASRModelList] instead
   */
  MUSIC = 'asr-dict-yand-music',
  /**
   * ASR buying dictionary
   * @deprecated Use [ASRModelList] instead
   */
  ECOMMERCE = 'asr-dict-yand-buying',
  /**
   * ASR Russian phone numbers dictionary
   * @deprecated Use [ASRModelList] instead
   */
  NUMBERS_RU = 'asr-dict-yand-numbers',
  /**
   * ASR Russian general dictionary
   * @deprecated Use [ASRModelList] instead
   */
  GENERAL_RU = 'asr-dict-yand-general',
  /**
   * ASR Russian date dictionary
   * @deprecated Use [ASRModelList] instead
   */
  DATE_RU = 'asr-dict-yand-dates',
  /**
   * ASR Russian names dictionary
   * @deprecated Use [ASRModelList] instead
   */
  NAMES_RU = 'asr-dict-yand-names',
  /**
   * ASR Russian questionnaire dictionary
   * @deprecated Use [ASRModelList] instead
   */
  QUESTIONNAIRE_RU = 'asr-dict-yand-questionnaire',
  /**
   * ASR Russian T-Bank dictionary
   * @deprecated Use [ASRModelList] instead
   */
  TBANK = 'asr-dict-tinkoff-',
}

/**
 * Add the following line to your scenario code to use the events:
 * ```
 * require(Modules.ASR);
 * ```
 * @event
 */
declare enum ASREvents {
  /**
   * Triggers in case of errors during the recognition process.
   * @typedef _ASRErrorEvent
   */
  ASRError = 'ASR.Error',
  /**
   * Triggers after ASR instance is created.
   * @typedef _ASRStartedEvent
   */
  Started = 'ASR.Started',
  /**
   * Triggers after ASR detected voice input and started collecting audio data for ASR.
   * @typedef _ASRCaptureStartedEvent
   */
  CaptureStarted = 'ASR.CaptureStarted',
  /**
   * Triggers after ASR captured audio data, before recognition process.
   * @typedef _ASRSpeechCapturedEvent
   */
  SpeechCaptured = 'ASR.SpeechCaptured',
  /**
   * Triggered when a speech recognition result has been received from ASR. We strongly recommend to create recognition timeout manually to prevent unexpectedly long recognition time. NOTE: we recommend to take a decision about continuing speech recognition in this event's handler. Otherwise, speech recognition continues automatically.
   * @typedef _ASRResultEvent
   */
  Result = 'ASR.Result',
  /**
   * Triggered when interim recognition result received from ASR. Note that event could be triggered only if the [ASRParameters.interimResults] option is set to **true**.
   * @typedef _ASRInterimResultEvent
   */
  InterimResult = 'ASR.InterimResult',
  /**
   * Triggers as a result of the [ASR.stop] method call.
   * @typedef _ASRStoppedEvent
   */
  Stopped = 'ASR.Stopped',
}

/**
 * @private
 */
declare interface _ASREvents {
  [ASREvents.ASRError]: _ASRErrorEvent;
  [ASREvents.Started]: _ASRStartedEvent;
  [ASREvents.CaptureStarted]: _ASRCaptureStartedEvent;
  [ASREvents.SpeechCaptured]: _ASRSpeechCapturedEvent;
  [ASREvents.Result]: _ASRResultEvent;
  [ASREvents.InterimResult]: _ASRInterimResultEvent;
  [ASREvents.Stopped]: _ASRStoppedEvent;
}

/**
 * @private
 */
declare interface _ASREvent {
  /**
   * ASR instance that generated the event
   */
  asr: ASR;
}

/**
 * @private
 */
declare interface _ASRErrorEvent extends _ASREvent {
  /**
   * Error message
   */
  error: string;
}

/**
 * @private
 */
declare interface _ASRStartedEvent extends _ASREvent {}

/**
 * @private
 */
declare interface _ASRCaptureStartedEvent extends _ASREvent {}

/**
 * @private
 */
declare interface _ASRSpeechCapturedEvent extends _ASREvent {}

/**
 * @private
 */
declare interface _ASRResultEvent extends _ASREvent {
  /**
   * Recognition result. Depending on the ASR provider, this parameter is called text or transcript (in rare cases).
   */
  text: string;
  /**
   * Recognition confidence. Depending on the ASR provider, can be in 0..100 or 0..1 range (100 or 1 means full confidence, 0 - not confident at all)
   */
  confidence: number;
  /**
   * Optional. Time offset of the end of this result relative to the beginning of the audio.
   */
  resultEndTime?: string | number;
  /**
   * Optional. For multichannel audio, this is the channel number corresponding to the recognized result for the audio from that channel.
   */
  channelTag?: number;
  /**
   * Optional. Output only. The BCP-47 language tag of the language in this result. This language code is detected to have the most likelihood of being spoken in the audio.
   */
  languageCode?: string;
}

/**
 * @private
 */
declare interface _ASRInterimResultEvent extends _ASREvent {
  /**
   * Recognition result
   */
  text: string;
}

/**
 * @private
 */
declare interface _ASRStoppedEvent extends _ASREvent {
  /**
   * Record cost (in the account's currency: USD, EUR or RUB)
   */
  cost: string;
  /**
   * Record duration (sec)
   */
  duration: number;
}

/**
 * List of available languages for ASR.
 * <br>
 * Note that the T-Bank VoiceKit and Yandex Speechkit supports only 'ASRLanguage.RUSSIAN_RU' language.
 * <br>
 * Add the following line to your scenario code to use the enum:
 * ```
 * require(Modules.ASR);
 * ```
 * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
 */
declare enum ASRLanguage {
  /**
   * English (United States)
   * @const
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ENGLISH_US = 'en-US',
  /**
   * English (Canada)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ENGLISH_CA = 'en-CA',
  /**
   * English (United Kingdom)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ENGLISH_UK = 'en-GB',
  /**
   * English (Australia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ENGLISH_AU = 'en-AU',
  /**
   * Spanish (Spain)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_ES = 'es-ES',
  /**
   * Spanish (Mexico)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_MX = 'es-MX',
  /**
   * Italian (Italy)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ITALIAN_IT = 'it-IT',
  /**
   * French (France)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  FRENCH_FR = 'fr-FR',
  /**
   * French (Canada)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  FRENCH_CA = 'fr-CA',
  /**
   * Polish (Poland)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  POLISH_PL = 'pl-PL',
  /**
   * Portuguese (Portugal)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  PORTUGUES_PT = 'pt-PT',
  /**
   * Catalan (Catalan)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  CATALAN_ES = 'ca-ES',
  /**
   * Chinese (Taiwan)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  CHINESE_TW = 'cmn-Hant-TW',
  /**
   * Danish (Denmark)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  DANISH_DK = 'da-DK',
  /**
   * German (Germany)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  GERMAN_DE = 'de-DE',
  /**
   * Finnish (Finland)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  FINNISH_FI = 'fi-FI',
  /**
   * Japanese (Japan)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  JAPANESE_JP = 'ja-JP',
  /**
   * Korean (Korea)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  KOREAN_KR = 'ko-KR',
  /**
   * Dutch (Netherlands)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  DUTCH_NL = 'nl-NL',
  /**
   * Norwegian (Norway)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  NORWEGIAN_NO = 'nb-NO',
  /**
   * Portuguese (Brazil)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  PORTUGUESE_BR = 'pt-BR',
  /**
   * Russian (Russia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  RUSSIAN_RU = 'ru-RU',
  /**
   * Swedish (Sweden)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SWEDISH_SE = 'sv-SE',
  /**
   * Chinese (People's Republic of China)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  CHINESE_CN = 'cmn-Hans-CN',
  /**
   * Chinese (Hong Kong S.A.R.)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  CHINESE_HK = 'cmn-Hans-HK',
  /**
   * Afrikaans (South Africa)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  AFRIKAANS_ZA = 'af-ZA',
  /**
   * Indonesian (Indonesia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  INDONESIAN_ID = 'id-ID',
  /**
   * Malay (Malaysia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  MALAYSIA_MY = 'ms-MY',
  /**
   * Czech (Czech Republic)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  CZECH_CZ = 'cs-CZ',
  /**
   * English (India)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ENGLISH_IN = 'en-IN',
  /**
   * English (Ireland)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ENGLISH_IE = 'en-IE',
  /**
   * English (New Zealand)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ENGLISH_NZ = 'en-NZ',
  /**
   * English (Philippines)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ENGLISH_PH = 'en-PH',
  /**
   * English (South Africa)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ENGLISH_ZA = 'en-ZA',
  /**
   * Spanish (Argentina)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_AR = 'es-AR',
  /**
   * Spanish (Bolivia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_BO = 'es-BO',
  /**
   * Spanish (Chile)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_CL = 'es-CL',
  /**
   * Spanish (Colombia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_CO = 'es-CO',
  /**
   * Spanish (Costa Rica)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_CR = 'es-CR',
  /**
   * Spanish (Ecuador)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_EC = 'es-EC',
  /**
   * Spanish (El Salvador)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_SV = 'es-SV',
  /**
   * Spanish (United States)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_US = 'es-US',
  /**
   * Spanish (Guatemala)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_GT = 'es-GT',
  /**
   * Spanish (Honduras)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_HN = 'es-HN',
  /**
   * Spanish (Nicaragua)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_NI = 'es-NI',
  /**
   * Spanish (Panama)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_PA = 'es-PA',
  /**
   * Spanish (Paraguay)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_PY = 'es-PY',
  /**
   * Spanish (Peru)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_PE = 'es-PE',
  /**
   * Spanish (Puerto Rico)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_PR = 'es-PR',
  /**
   * Spanish (Republican Dominican)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_DO = 'es-DO',
  /**
   * Spanish (Uruguay)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_UY = 'es-UY',
  /**
   * Spanish (Venezuela)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SPANISH_VE = 'es-VE',
  /**
   * Basque (Spain)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  BASQUE_ES = 'eu-ES',
  /**
   * Filipino (Philippines)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  FILIPINO_PH = 'fil-PH',
  /**
   * Galician (Spain)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  GALICIAN_ES = 'gl-ES',
  /**
   * Croatian (Croatia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  CROATIAN_HR = 'hr-HR',
  /**
   * Zulu (South Africa)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ZULU_ZA = 'zu-ZA',
  /**
   * Icelandic (Iceland)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ICELANDIC_IS = 'is-IS',
  /**
   * Lithuanian (Lithuania)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  LITHUANIAN_LT = 'lt-LT',
  /**
   * Hungarian (Hungary)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  HUNGARIAN_HU = 'hu-HU',
  /**
   * Romanian (Romania)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ROMANIAN_RO = 'ro-RO',
  /**
   * Slovak (Slovakia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SLOVAK_SK = 'sk-SK',
  /**
   * Slovenian (Slovenia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SLOVENIAN_SL = 'sl-SI',
  /**
   * Vietnamese (Viet Nam)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  VIETNAMESE_VN = 'vi-VN',
  /**
   * Turkish (Turkiye)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  TURKISH_TR = 'tr-TR',
  /**
   * Greek (Greece)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  GREEK_GR = 'el-GR',
  /**
   * Bulgarian (Bulgaria)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  BULGARIAN_BG = 'bg-BG',
  /**
   * Serbian
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SERBIAN_RS = 'sr-RS',
  /**
   * Ukrainian (Ukraine)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  UKRAINIAN_UA = 'uk-UA',
  /**
   * Hebrew (Israel)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  HEBREW_IL = 'he-IL',
  /**
   * Arabic (Israel)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARABIC_IL = 'ar-IL',
  /**
   * Arabic (Jordan)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARABIC_JO = 'ar-JO',
  /**
   * Arabic (U.A.E.)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARABIC_AE = 'ar-AE',
  /**
   * Arabic (Bahrain)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARABIC_BH = 'ar-BH',
  /**
   * Arabic (Algeria)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARABIC_DZ = 'ar-DZ',
  /**
   * Arabic (Saudi Arabia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARABIC_SA = 'ar-SA',
  /**
   * Arabic (Iraq)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARABIC_IQ = 'ar-IQ',
  /**
   * Arabic (Kuwait)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARABIC_KW = 'ar-KW',
  /**
   * Arabic (Morocco)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARABIC_MA = 'ar-MA',
  /**
   * Arabic (Tunisia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARABIC_TN = 'ar-TN',
  /**
   * Arabic (Oman)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARABIC_OM = 'ar-OM',
  /**
   * Arabic (Palestinian)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARABIC_PS = 'ar-PS',
  /**
   * Arabic (Qatar)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARABIC_QA = 'ar-QA',
  /**
   * Arabic (Lebanon)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARABIC_LB = 'ar-LB',
  /**
   * Arabic (Egypt)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARABIC_EG = 'ar-EG',
  /**
   * Farsi (Iran)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  FARSI_IR = 'fa-IR',
  /**
   * Hindi (India)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  HINDI_IN = 'hi-IN',
  /**
   * Thai (Thailand)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  THAI_TH = 'th-TH',
  /**
   * Cantonese, Traditional script, Hong Kong SAR
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  CANTONESE_HK = 'yue-Hant-HK',
  /**
   * Amharic (Ethiopia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  AMHARIC_ET = 'am-ET',
  /**
   * Armenian (Armenia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ARMENIAN_AM = 'hy-AM',
  /**
   * Azerbaijani (Azerbaijan)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  AZERBAIJANI_AZ = 'az-AZ',
  /**
   * Bengali (Bangladesh)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  BENGALI_BD = 'bn-BD',
  /**
   * Bengali (India)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  BENGALI_IN = 'bn-IN',
  /**
   * English (Ghana)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ENGLISH_GH = 'en-GH',
  /**
   * English (Kenya)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ENGLISH_KE = 'en-KE',
  /**
   * English (Nigeria)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ENGLISH_NG = 'en-NG',
  /**
   * English (Tanzania)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  ENGLISH_TZ = 'en-TZ',
  /**
   * Georgian (Georgia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  GEORGIAN_GE = 'ka-GE',
  /**
   * Gujarati (India)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  GUJARATI_IN = 'gu-IN',
  /**
   * Javanese (Indonesia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  JAVANESE_ID = 'jv-ID',
  /**
   * Kannada (India)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  KANNADA_IN = 'kn-IN',
  /**
   * Khmer (Cambodia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  KHMER_KH = 'km-KH',
  /**
   * Lao (Laos)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  LAO_LA = 'lo-LA',
  /**
   * Latvian (Latvia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  LATVIAN_LV = 'lv-LV',
  /**
   * Malayalam (India)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  MALAYALAM_IN = 'ml-IN',
  /**
   * Marathi (India)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  MARATHI_IN = 'mr-IN',
  /**
   * Nepali (Nepal)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  NEPALI_NP = 'ne-NP',
  /**
   * Sinhala (Srilanka)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SINHALA_LK = 'si-LK',
  /**
   * Sundanese (Indonesia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SUNDANESE_ID = 'su-ID',
  /**
   * Swahili (Tanzania)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SWAHILI_TZ = 'sw-TZ',
  /**
   * Swahili (Kenya)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  SWAHILI_KE = 'sw-KE',
  /**
   * Tamil (India)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  TAMIL_IN = 'ta-IN',
  /**
   * Tamil (Singapore)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  TAMIL_SG = 'ta-SG',
  /**
   * Tamil (Sri Lanka)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  TAMIL_LK = 'ta-LK',
  /**
   * Tamil (Malaysia)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  TAMIL_MY = 'ta-MY',
  /**
   * Telugu (India)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  TELUGU_IN = 'te-IN',
  /**
   * Urdu (Pakistan)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  URDU_PK = 'ur-PK',
  /**
   * Urdu (India)
   * @warning Use [ASRLanguage] for [RecorderParameters] 'language' parameter. For [ASRParameters] 'profile' parameter use [ASRProfileList] instead.
   */
  URDU_IN = 'ur-IN',
}

/**
 * Represents an ASR object provides speech recognition capabilities. Audio stream can be sent to an ASR instance from [Call], [Player] or [Conference] instances. Parameters **language** or **dictionary** should be passed to the [VoxEngine.createASR] function.
 * <br>
 * Add the following line to your scenario code to use the class:
 * ```
 * require(Modules.ASR);
 * ```
 */
declare class ASR {
  /**
   * @param id
   * @param language
   * @param dictionary
   */
  constructor(id: string, language: string, dictionary: string);

  /**
   * Returns the asr's id.
   */
  id(): string;

  /**
   * Returns the asr's language.
   */
  language(): string;

  /**
   * Returns the asr's dictionary.
   */
  dictionary(): string[];

  /**
   * Adds a handler for the specified [ASREvents] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
   * @param event Event class (i.e., [ASREvents.Stopped])
   * @param callback Handler function. A single parameter is passed - object with event information
   */
  addEventListener<T extends keyof _ASREvents>(
    event: ASREvents | T,
    callback: (event: _ASREvents[T]) => any
  ): void;

  /**
   * Removes a handler for the specified [ASREvents] event.
   * @param event Event class (i.e., [ASREvents.Stopped])
   * @param callback Optional. Handler function. If not specified, all handler functions are removed
   */
  removeEventListener<T extends keyof _ASREvents>(
    event: ASREvents | T,
    callback?: (event: _ASREvents[T]) => any
  ): void;

  /**
   * Stops recognition. Triggers the [ASREvents.Stopped] event. Do not call any other ASR functions/handlers after the **ASR.stop** call.
   */
  stop(): void;
}

/**
 * @private
 */
declare interface BaseCallParameters {
  /**
   * Optional. Name of the caller that is displayed to the user. Normally it is a human-readable version of CallerID, e.g. a person's name.
   */
  displayName?: string;
  /**
   * Optional. Internal information about codecs.
   */
  scheme?: { [id: string]: { audio: any, video: any } };
  /**
   * Optional. Sets the maximum possible video bitrate for the customer device in kbps.
   */
  maxVideoBitrate?: number;
  /**
   * Optional. Whether to disable the RTP header extension for transmission offset if provided.
   */
  disableExtVideoOffset?: boolean;
  /**
   * Optional. Whether to disable the RTP header extension for video orientation, **3gpp:video-orientation**, if provided. Browsers that do not support that extension display the video correctly, however, the battery consumption is higher.
   */
  disableExtVideoOrientation?: boolean;
  /**
   * Optional. Whether to disable the RTP header extension to control playout delay if provided.
   */
  disableExtPlayoutDelay?: boolean;
  /**
   * Optional. Whether to disable the RTP header extension for video timing if provided.
   */
  disableExtVideoTiming?: boolean;
  /**
   * Optional. Whether the call is coming from a conference. The default value is **false**.
   */
  conferenceCall?: boolean;
  /**
   * Optional. Disables DTX for audio. The default value is **false**.
   */
  disableDtxForAudio?: boolean;
}

/**
 * @private
 */
declare class BasePlayer {
  /**
   * Adds a handler for the specified [PlayerEvents] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
   * @param event Event class (i.e., [PlayerEvents.PlaybackFinished])
   * @param callback Handler function. A single parameter is passed - object with event information
   */
  addEventListener<T extends keyof _PlayerEvents>(
    event: PlayerEvents | T,
    callback: (event: _PlayerEvents[T]) => any
  ): void;

  /**
   * Removes a handler for the specified [PlayerEvents] event.
   * @param event Event class (i.e., [PlayerEvents.PlaybackFinished])
   * @param callback Optional. Handler function. If not specified, all handler functions are removed
   */
  removeEventListener<T extends keyof _PlayerEvents>(
    event: PlayerEvents | T,
    callback?: (event: _PlayerEvents[T]) => any
  ): void;

  /**
   * Returns the player's id.
   */
  id(): string;

  /**
   * Pauses playback. To continue the playback use the [Player.resume] method.
   */
  pause(): void;

  /**
   * Resumes playback after the [Player.pause] method is called.
   */
  resume(): void;

  /**
   * Stops playback. The current player's instance is destroyed.
   */
  stop(): void;

  /**
   * Starts sending media from the player to the media unit.
   * @param mediaUnit Media unit that receives media
   * @param parameters Optional. WebSocket interaction only parameters
   */
  sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

  /**
   * Stops sending media from the player to the media unit.
   * @param mediaUnit Media unit that does not need to receive media from this conference anymore
   */
  stopMediaTo(mediaUnit: VoxMediaUnit): void;
}

/**
 * @private
 */
declare interface BaseRecorderParameters {
  /**
   * Optional. Whether to restrict access to the record without management API authorization (available only in the [VoxEngine.createRecorder] method).
   */
  secure?: boolean;
  /**
   * Optional. Whether to create the call record transcription. Note that transcription is not available for the [Recorder module](/docs/references/voxengine/modules#recorder). See the details [in the article](/docs/guides/speech/asr).
   */
  transcribe?: boolean;
  /**
   * Optional. Transcription language. The parameter uses [ASRLanguage] from the [ASR module](/docs/references/voxengine/modules#asr) as possible values. Note that it is necessary to include the [ASR module](/docs/references/voxengine/modules#asr) in the scenario to use the language constants. The parameter is not available for the [Recorder module](/docs/references/voxengine/modules#recorder).
   */
  language?: ASRLanguage;
  /**
   * Optional. Whether to use the HD audio. The default value is **false**. If set to **false**, 8 KHz / 32 kbps mp3 file is generated. If set to **true**, "wideband audio" 48 KHz / 192 kbps mp3 file is generated. Note that transcription's quality does not depend on this parameter. The parameter is not compatible with **lossless: true** parameter.
   */
  hd_audio?: boolean;
  /**
   * Optional. Storage time for recorded files. The default value is [RecordExpireTime.THREEMONTHS](/docs/references/voxengine/recordexpiretime#threemonths).
   */
  expire?: RecordExpireTime;
  /**
   * Optional. Whether to save the record in flac format. The default value is **false**. The parameter is not compatible with **hd_audio: true** parameter.
   */
  lossless?: boolean;
  /**
   * Optional. Whether to record video. The default value is **false**.
   */
  video?: boolean;
  /**
   * Optional. Recorder video parameters.
   */
  videoParameters?: RecorderVideoParameters;
  /**
   * Optional. The prefix to add to the record names when storing to your S3 storage. Works only for custom S3-compatible storages.
   */
  recordNamePrefix?: string;
}

/**
 * The parameters can be passed as arguments to the [Call.answer] method.
 */
declare interface CallAnswerParameters extends BaseCallParameters {}

/**
 * List of available call audio quality options.
 */
declare enum CallAudioQuality {
  /**
   * High definition of audio.
   * @const
   */
  HD = 'HD',

  /**
   * Standard audio quality.
   * @const
   */
  STANDARD = 'Standard'
}
/**
 * Parameters for the [Call.enableBeepDetection] method.
 */
declare interface CallEnableBeepDetectionParameters {
  /**
   * Optional. Array of frequencies to detect in Hz.
   */
  frequencies?: number[];
  /**
   * Optional. Timeout in milliseconds to wait for the beep detection.
   */
  timeout?: number;
}

/**
 * @event
 */
declare enum CallEvents {
  /**
   * Triggers after remote peer answered the call or set the call into the [Call.startEarlyMedia] state. Note that event is not triggered in P2P mode.
   * 
   * This event occurs after receiving the 183 Session Progress SIP message regardless of receiving actual media packets.
   * @typedef _AudioStartedEvent
   * */
  AudioStarted = 'Call.AudioStarted',
  /**
   * Triggers when [voicemail detection](/docs/guides/calls/voicemail-detection) system connects to the VMD/AMD server and starts detecting voicemail.
   * @typedef _AudioIdentificationStartedEvent
   * */
  AudioIdentificationStarted = 'Call.AudioIdentificationStarted',
  /**
   * Triggers when [voicemail detection](/docs/guides/calls/voicemail-detection) ends detecting voicemail and the audio identification result is received.
   * @typedef _AudioIdentificationResultEvent
   * @hidden
   */
  AudioIdentificationResult = 'Call.AudioIdentificationResult',
  /**
   * Triggers when [voicemail detection](/docs/guides/calls/voicemail-detection) stops detecting voicemail.
   * @typedef _AudioIdentificationStoppedEvent
   * */
  AudioIdentificationStopped = 'Call.AudioIdentificationStopped',
  /**
   * Triggers when [voicemail detection](/docs/guides/calls/voicemail-detection) occurs an error.
   * @typedef _AudioIdentificationErrorEvent
   */
  AudioIdentificationError = 'Call.AudioIdentificationError',
  /**
   * Triggered when blind transfers are enabled by [Call.handleBlindTransfer].
   * @typedef _BlindTransferRequestedEvent
   */
  BlindTransferRequested = 'Call.BlindTransferRequested',
  /**
   * Triggers after an incoming/outgoing call is connected. For incoming call, it happens after the [Call.answer] is called. For outgoing call, it happens when a remote peer answers the call.
   * @typedef _ConnectedEvent
   */
  Connected = 'Call.Connected',
  /**
   * Triggers on an incoming/outgoing call forwarding.
   * @typedef _ForwardingEvent
   */
  Forwarding = 'Call.Forwarding',
  /**
   * Triggered when a call is terminated.
   * 
   * Most frequent status codes (returned when a call is terminated before being answered):
   * 
   * <table class="b-list" style="margin-top:10px">
   * <thead><tr><th>Code</th><th>Description</th></tr></thead>
   * <tbody>
   * <tr><td>408</td><td>Call is not answered within 60 seconds</td></tr>
   * <tr><td>603</td><td>Call is rejected</td></tr>
   * <tr><td>486</td><td>Destination number is busy</td></tr>
   * <tr><td>487</td><td>Request terminated</td></tr>
   * </tbody>
   * </table>
   * 
   * You can find the complete list of rfc3261 response codes [on Wikipedia](https://en.wikipedia.org/wiki/List_of_SIP_response_codes).
   * 
   * Note that this event does not mean the end of the JavaScript session.
   * The session without calls and/or ACD requests are automatically terminated after some time (see the [session limits](/docs/guides/voxengine/limits) for details).
   * It is a good idea to explicitly terminate the session with [VoxEngine.terminate](/docs/references/voxengine/voxengine/terminate) after it is no longer needed.
   * @typedef _DisconnectedEvent
   */
  Disconnected = 'Call.Disconnected',
  /**
   * Triggered when an outgoing call is terminated before connection.
   * Most frequent status codes:<br>
   * <table class="b-list" style="margin-top:10px">
   * <thead><tr><th>Code</th><th>Description</th></tr></thead>
   * <tbody>
   * <tr><td>486</td><td>Destination number is busy</td></tr>
   * <tr><td>487</td><td>Request terminated</td></tr>
   * <tr><td>404</td><td>Invalid number</td></tr>
   * <tr><td>480</td><td>Destination number is unavailable</td></tr>
   * <tr><td>402</td><td>Insufficient funds</td></tr>
   * <tr><td>603</td><td>Call was rejected</td></tr>
   * <tr><td>408</td><td>Call was not answered within 60 seconds</td></tr>
   * </tbody>
   * </table>
   * @typedef _FailedEvent
   */
  Failed = 'Call.Failed',
  /**
   * Triggered when an INFO message is received.
   * @typedef _InfoReceivedEvent
   */
  InfoReceived = 'Call.InfoReceived',
  /**
   * Triggered when a text message is received.
   * @typedef _MessageReceivedEvent
   */
  MessageReceived = 'Call.MessageReceived',
  /**
   * Triggers each time when microphone status changes. There is the method for enabling status analyzing - [Call.handleMicStatus].
   * @typedef _MicStatusChangeEvent
   * */
  MicStatusChange = 'Call.MicStatusChange',
  /**
   * Triggered when a call is taken off hold.
   * @typedef _OffHoldEvent
   */
  OffHold = 'Call.OffHold',
  /**
   * Triggered when a call is put on hold.
   * @typedef _OnHoldEvent
   */
  OnHold = 'Call.OnHold',
  /**
   * Triggered when the audio/voice playback is completed.
   * Note that the [Call.stopPlayback] method finishes any media**, so the [CallEvents.PlaybackFinished] event is not triggered. The playback may be started by the [Call.say] or [Call.startPlayback] methods.
   * @typedef _PlaybackFinishedEvent
   */
  PlaybackFinished = 'Call.PlaybackFinished',
  /**
   * Triggers by the [Call.startPlayback] and [Call.say] methods when:<br>
   * 1) the audio file download to the Voximplant cache is finished;<br>
   * 2) the audio file is found in the cache (i.e., it is in the cache before).
   * @typedef _PlaybackReadyEvent
   */
  PlaybackReady = 'Call.PlaybackReady',
  /**
   * Triggers by the [Call.startPlayback] and [Call.say] methods when audio/voice playback is started.
   * @typedef _PlaybackStartedEvent
   */
  PlaybackStarted = 'Call.PlaybackStarted',
  /**
   * Triggered when a push notification is sent.
   * @typedef _PushSentEvent
   */
  PushSent = 'Call.PushSent',
  /**
   * Triggered when the Voximplant cloud receives the **ReInviteAccepted** message. This message means that a call received video from the other participant.
   * @typedef _ReInviteAcceptedEvent
   */
  ReInviteAccepted = 'Call.ReInviteAccepted',
  /**
   * Triggered when the Voximplant cloud receives the **ReInviteReceived** message. This message means that a caller:<br>
   * 1) started sending video;<br>
   * 2) started/stopped screensharing;<br>
   * 3) put a call on hold / took a call off hold.
   * @typedef _ReInviteReceivedEvent
   */
  ReInviteReceived = 'Call.ReInviteReceived',
  /**
   * Triggered when the Voximplant cloud receives the **ReInviteRejected** message. This message means that a call does not receive video from the other participant.
   * @typedef _ReInviteRejectedEvent
   */
  ReInviteRejected = 'Call.ReInviteRejected',
  /**
   * Triggered when call recording is started. The recording may be started by the [Call.record] method.
   * @typedef _RecordStartedEvent
   */
  RecordStarted = 'Call.RecordStarted',
  /**
   * Triggered when call recording is stopped. This happens after the [CallEvents.Disconnected] event is triggered.
   * @typedef _RecordStoppedEvent
   */
  RecordStopped = 'Call.RecordStopped',
  /**
   * Triggers in case of errors during the recording process.
   * @typedef _RecordErrorEvent
   */
  RecordError = 'Call.RecordError',
  /**
   * Triggers after outgoing call receives progress signal from a remote peer.
   * @typedef _RingingEvent
   */
  Ringing = 'Call.Ringing',
  /**
   * Triggered when a call status is changed.
   * @typedef _StateChangedEvent
   */
  StateChanged = 'Call.StateChanged',
  /**
   * Triggered when call statistics change.
   * @deprecated
   * @typedef _StatisticsEvent
   */
  Statistics = 'Call.Statistics',
  /**
   * Triggered when a call dial tone is detected (either dial tone or busy tone).
   * There is the deprecated method for enabling the tone detection - 'Call.detectProgressTone'. Note that:<br>
   * 1) triggers only if the [CallEvents.Connected] event is triggered;<br>
   * 2) the event is only triggered once in a call session.
   * @typedef _ToneDetectedEvent
   */
  ToneDetected = 'Call.ToneDetected',
  /**
   * Triggered when a DTMF signal is received. Note that by default DTMF signals do not trigger this event, this behavior needs to be set explicitly via the [Call.handleTones] method.
   * @typedef _ToneReceivedEvent
   */
  ToneReceived = 'Call.ToneReceived',
  /**
   * Triggered when a call transfer is complete.
   * @typedef _TransferCompleteEvent
   */
  TransferComplete = 'Call.TransferComplete',
  /**
   * Triggered when a call transfer is failed.
   * @typedef _TransferFailedEvent
   */
  TransferFailed = 'Call.TransferFailed',
  /**
   * Triggers after the video track is created. This could happen only if the [Call.record] method with **{video: true}** parameters is called.
   * @typedef _VideoTrackCreatedEvent
   */
  VideoTrackCreated = 'Call.Video.TrackCreated',
  /**
   * Triggers after the first audio packet is received.
   * @typedef _FirstAudioPacketReceivedEvent
   */
  FirstAudioPacketReceived = 'Call.FirstAudioPacketReceived',
  /**
   * Triggers after the first video packet is received.
   * @typedef _FirstVideoPacketReceivedEvent
   */
  FirstVideoPacketReceived = 'Call.FirstVideoPacketReceived',
  /**
   * Triggers within **7 seconds** after the RTP/RTCP has stopped. Applies to all types of calls (users, SIP, and PSTN).
   * @typedef _RtpStoppedEvent
   */
  RtpStopped = 'Call.RtpStopped',
  /**
   * Triggers after the RTP resumed.
   * @typedef _RtpResumedEvent
   */
  RtpResumed = 'Call.RtpResumed',
  /**
   * Triggers after the beep detection is complete. The beep detection may be started by the [Call.enableBeepDetection] method.
   * @typedef _BeepDetectionComplete
   */
  BeepDetectionComplete = 'Call.BeepDetectionComplete',
  /**
   * Error during beep detection.
   * @typedef _BeepDetectionError
   */
  BeepDetectionError = 'Call.BeepDetectionError',
  /**
   * Triggers after the audio quality detected.
   * @typedef _AudioQualityDetectedEvent
   */
  AudioQualityDetected = 'Call.AudioQualityDetected',
  /**
   * Triggers after media statistics has been recieved. To enable, call the [Call.monitorMediaStatistics] method.
   * @typedef _MediaStatisticsReceived
   */
  MediaStatisticsReceived = 'Call.MediaStatisticsReceived'
}

/**
 * @private
 */
declare interface _CallEvents {
  [CallEvents.AudioStarted]: _AudioStartedEvent;
  [CallEvents.AudioIdentificationStarted]: _AudioIdentificationStartedEvent;
  [CallEvents.AudioIdentificationResult]: _AudioIdentificationResultEvent;
  [CallEvents.AudioIdentificationStopped]: _AudioIdentificationStoppedEvent;
  [CallEvents.AudioIdentificationError]: _AudioIdentificationErrorEvent;
  [CallEvents.BlindTransferRequested]: _BlindTransferRequestedEvent;
  [CallEvents.Connected]: _ConnectedEvent;
  [CallEvents.Forwarding]: _ForwardingEvent;
  [CallEvents.Disconnected]: _DisconnectedEvent;
  [CallEvents.Failed]: _FailedEvent;
  [CallEvents.InfoReceived]: _InfoReceivedEvent;
  [CallEvents.MessageReceived]: _MessageReceivedEvent;
  [CallEvents.MicStatusChange]: _MicStatusChangeEvent;
  [CallEvents.OffHold]: _OffHoldEvent;
  [CallEvents.OnHold]: _OnHoldEvent;
  [CallEvents.PlaybackFinished]: _PlaybackFinishedEvent;
  [CallEvents.PlaybackReady]: _PlaybackReadyEvent;
  [CallEvents.PlaybackStarted]: _PlaybackStartedEvent;
  [CallEvents.PushSent]: _PushSentEvent;
  [CallEvents.ReInviteAccepted]: _ReInviteAcceptedEvent;
  [CallEvents.ReInviteReceived]: _ReInviteReceivedEvent;
  [CallEvents.ReInviteRejected]: _ReInviteRejectedEvent;
  [CallEvents.RecordError]: _RecordErrorEvent;
  [CallEvents.RecordStarted]: _RecordStartedEvent;
  [CallEvents.RecordStopped]: _RecordStoppedEvent;
  [CallEvents.Ringing]: _RingingEvent;
  [CallEvents.StateChanged]: _StateChangedEvent;
  [CallEvents.Statistics]: _StatisticsEvent;
  [CallEvents.ToneDetected]: _ToneDetectedEvent;
  [CallEvents.ToneReceived]: _ToneReceivedEvent;
  [CallEvents.TransferComplete]: _TransferCompleteEvent;
  [CallEvents.TransferFailed]: _TransferFailedEvent;
  [CallEvents.VideoTrackCreated]: _VideoTrackCreatedEvent;
  [CallEvents.FirstAudioPacketReceived]: _FirstAudioPacketReceivedEvent;
  [CallEvents.FirstVideoPacketReceived]: _FirstVideoPacketReceivedEvent;
  [CallEvents.RtpStopped]: _RtpStoppedEvent;
  [CallEvents.RtpResumed]: _RtpResumedEvent;
  [CallEvents.BeepDetectionComplete]: _BeepDetectionComplete;
  [CallEvents.BeepDetectionError]: _BeepDetectionError;
  [CallEvents.AudioQualityDetected]: _AudioQualityDetectedEvent;
  [CallEvents.MediaStatisticsReceived]: _MediaStatisticsReceived;
}

/**
 * @private
 */
declare interface _CallEvent {
  /**
   * Call that triggered the event
   */
  call: Call;
  /**
   * The name of the event
   */
  name: string;
  /**
   * The call's ID
   */
  id: string;
}

/**
 * @private
 */
declare interface _CallHeaderEvent extends _CallEvent {
  /**
   * Optional. SIP headers received with the message (the ones starting with "X-")
   */
  headers?: { [header: string]: string };
}

/**
 * @private
 */
declare interface _AudioStartedEvent extends _CallHeaderEvent {
}

/**
 * @private
 */
declare interface _AudioIdentificationStartedEvent extends _CallEvent {
}

/**
 * @private
 */
declare interface _AudioIdentificationResultEvent extends _CallEvent {
  audioType: AMD.ResultClass;
  audioSubType: AMD.ResultSubtype;
  confidence: number;
}

/**
 * @private
 */
declare interface _AudioIdentificationStoppedEvent extends _CallEvent {
}

/**
 * @private
 */
declare interface _AudioIdentificationErrorEvent extends _CallEvent {
}

/**
 * @private
 */
declare interface _BlindTransferRequestedEvent extends _CallHeaderEvent {
  /**
   * Username
   */
  transferTo: string;
}

/**
 * @private
 */
declare interface _ConnectedEvent extends _CallEvent {
  /**
   * Optional. Custom data that was passed from the client with call accept command
   */
  customData?: string;
  /**
   * Optional. SIP headers received with the message (the ones starting with "X-")
   */
  headers?: { [header: string]: string };
  /**
   * Optional. Internal information about codecs.
   */
  scheme?: { [id: string]: { audio: any, video: any } };
}

/**
 * @private
 */
declare interface _ForwardingEvent extends _CallEvent {
}

/**
 * @private
 */
declare interface _DisconnectedEvent extends _CallHeaderEvent {
  /**
   * Status code of the call (i.e., 486)
   */
  internalCode: number;
  /**
   * Reason of the call failure
   */
  reason: string;
  /**
   *  Total call duration in seconds
   */
  duration: number;
  /**
   *  Call cost in account currency
   */
  cost: number;
  /**
   *  Call direction type according to billing
   */
  direction: string;
}

/**
 * @private
 */
declare interface _FailedEvent extends _CallHeaderEvent {
  /**
   * Status code of the call (i.e., 486)
   */
  code: number;
  /**
   * Status message of call failure
   */
  reason: string;
}

/**
 * @private
 */
declare interface _CallRecordEvent extends _CallEvent {
  /**
   * Record URL
   */
  url: string;
}

/**
 * @private
 */
declare interface _InfoReceivedEvent extends _CallHeaderEvent {
  /**
   * MIME type of INFO message
   */
  mimeType: string;
  /**
   * Content of the message
   */
  body: string;
}

/**
 * @private
 */
declare interface _MessageReceivedEvent extends _CallHeaderEvent {
  /**
   * Content of the message
   */
  text: string;
}

/**
 * @private
 */
declare interface _MicStatusChangeEvent extends _CallEvent {
  /**
   * Whether the microphone is active
   */
  active: boolean;
}

/**
 * @private
 */
declare interface _OffHoldEvent extends _CallEvent {
}

/**
 * @private
 */
declare interface _OnHoldEvent extends _CallEvent {
}

/**
 * @private
 */
declare interface _PlaybackFinishedEvent extends _CallEvent {
  /**
   * Optional. Error that occurred during the playback
   */
  error?: string;
}

/**
 * @private
 */
declare interface _PlaybackReadyEvent extends _CallEvent {
}

/**
 * @private
 */
declare interface _PlaybackStartedEvent extends _CallEvent {
  /**
   * Playback duration
   */
  duration: number;
}

/**
 * @private
 */
declare interface _PushSentEvent extends _CallEvent {
  /**
   *
   */
  result: string;
}

/**
 * @private
 */
declare interface _CallReInviteEvent extends _CallHeaderEvent {
  /**
   * MIME type of INFO message
   */
  mimeType: string;
  /**
   * Content of the message
   */
  body: string;
}

/**
 * @private
 */
declare interface _ReInviteAcceptedEvent extends _CallReInviteEvent {
}

/**
 * @private
 */
declare interface _ReInviteReceivedEvent extends _CallReInviteEvent {
}

/**
 * @private
 */
declare interface _ReInviteRejectedEvent extends _CallHeaderEvent {
}

/**
 * @private
 */
declare interface _RecordErrorEvent extends _CallEvent {
  /**
   * Triggers in case of errors during the recording process
   */
  error: string;
}

/**
 * @private
 */
declare interface _RecordStartedEvent extends _CallEvent {
  /**
   * Link to the record file.
   */
  url: string;
}

/**
 * @private
 */
declare interface _RecordStoppedEvent extends _CallEvent {
  /**
   * Link to the record file.
   */
  url: string;
  /**
   * Record cost (in the account's currency: USD, EUR or RUB)
   */
  cost: string;
  /**
   * Record duration (sec)
   */
  duration: number;
}

/**
 * @private
 */
declare interface _RingingEvent extends _CallHeaderEvent {
}

/**
 * @private
 */
declare interface _StateChangedEvent extends _CallEvent {
  oldState: string;
  newState: string;
}

/**
 * @private
 */
declare interface _StatisticsEvent extends _CallEvent {
}

/**
 * @private
 */
declare interface _ToneDetectedEvent extends _CallEvent {
  /**
   * Whether the detected tone is a dial tone.
   */
  ProgressTone: boolean;
  /**
   * Whether the detected tone is a voicemail tone.
   */
  VoicemailTone: boolean;
}

/**
 * @private
 */
declare interface _ToneReceivedEvent extends _CallEvent {
  /**
   * Tone received in this event. The possible values are: 0-9,*,#
   */
  tone: string;
  /**
   * Type of the received tone. The possible values are: 1 (rfc 2833), 2 (Inband), 3 (SipInfo)
   */
  type: string;
}

/**
 * @private
 */
declare interface _TransferCompleteEvent extends _CallHeaderEvent {
  /**
   * Optional. The transfer roles.
   */
  role?: 'transferor' | 'target' | 'transferee';
}

/**
 * @private
 */
declare interface _TransferFailedEvent extends _TransferCompleteEvent {
  /**
   * Failed transfer's status (e.g., 486)
   */
  code: number;
  /**
   * Failed transfer's status message
   */
  reason: string;
}

/**
 * @private
 */
declare interface _VideoTrackCreatedEvent extends _CallRecordEvent {
}

/**
 * @private
 */
declare interface _FirstAudioPacketReceivedEvent extends _CallEvent {
}

/**
 * @private
 */
declare interface _FirstVideoPacketReceivedEvent extends _CallEvent {
}

/**
 * @private
 */
declare interface _RtpStoppedEvent extends _CallEvent {
}

/**
 * @private
 */
declare interface _RtpResumedEvent extends _CallEvent {
}

/**
 * @private
 */
declare interface _BeepDetectionComplete extends _CallEvent {
  /**
   * Array of frequencies detected during the beep detection in Hz.
   */
  frequencies?: number[];
  /**
   * Whether the timeout occurred during beep detection.
   */
  timeout?: boolean;
}

/**
 * @private
 */
declare interface _BeepDetectionError extends _CallEvent {
  /**
   * Beep detection failure reason.
   */
  reason: string;
}

/**
 * @private
 */
declare interface _AudioQualityDetectedEvent extends _CallEvent {
  /**
   * The audio quality.
   */
  quality: CallAudioQuality;
}

/**
 * @private
 */
declare interface _MediaStatisticsReceived extends _CallEvent {
  /**
   * Statistical information about the audio channels.
   * Contains metrics for both incoming and outgoing streams.
   */
  audio: CallMediaStatistics;
}
/**
 * Single media statistics sample for a call leg (incoming or outgoing).
 */
declare interface CallMediaStatisticsSample {
  /**
   * Unique call identifier.
   */
  id: number;
  /**
   * Network jitter
   */
  jitter: number;
  /**
   * Number of lost RTP packets.
   */
  packetLoss: number;
  /**
   * Total number of received/sent RTP packets.
   */
  numPackets: number;
  /**
   * Call audio level in dB.
   */
  audioLevel: number;
}

/**
 * Statistical information received from the media server.
 * Contains metrics for both incoming and outgoing media streams.
 */
declare interface CallMediaStatistics {
  /**
   * Statistics for incoming media stream.
   */
  in: CallMediaStatisticsSample[];
  /**
   * Statistics for outgoing media stream.
   */
  out: CallMediaStatisticsSample[];
}

/**
 * [Call] parameters. Can be passed as arguments to the [VoxEngine.callPSTN] method.
 */
declare interface CallPSTNParameters {
  /**
   * Optional. Answering machine or voicemail detector.
   */
  amd?: AMD.AnsweringMachineDetector;
  /**
   * Optional. Whether to use the inbound caller ID for the outbound call from the scenario. The default value is **false**.
   */
  followDiversion?: boolean;
}

/**
 * The parameters can be passed as arguments to the [Call.record] method.
 */
declare interface CallRecordParameters extends BaseRecorderParameters {
  /**
   * Optional. Whether the sound is stereo. The default value is **false**.
   * 
   * The parameter does not change anything for the [Recorder module](/docs/references/voxengine/modules#recorder): it records stereo with mixed streams in both channels.
   * 
   * For the [Call.record] method it works in another way:
   * 
   * 1. if it is False, it records stereo with mixed streams in both channels  
   * 2. if it is True, the Audio stream from a call endpoint to voximplant cloud is recorded into left channel. Audio stream from voximplant cloud to a call endpoint is recorded into right channel.
   */
  stereo?: boolean;
  /**
   * Optional. Transcription dictionary. Array of words that are possible values. Note that dict does not limit the transcription to the specific list. Instead, words in the specified list have a higher chance to be selected. Note that the parameter does not affect the [Recorder module](/docs/references/voxengine/modules#recorder) because the transcription is not available for it.
   */
  dict?: ASRDictionary | string[];
  /**
   * Optional. An array of two strings. Each string names the label in resulting transcription: the first string names a call/stream that initiated recording, the second string names the other call. If there is only one string in the array or the parameter is not specified at all, the recording's initiate call has the "Left" name and the second stream has the "Right" name. The parameter requires the **transcribe: true** parameter. The parameter is not available for the [Recorder module](/docs/references/voxengine/modules#recorder).
   */
  labels?: string[];
  /**
   * Optional. Transcription provider.
   */
  provider?: TranscriptionProvider;
  /**
   * Optional. Transcription format. Could be specified as "json". In that case the transcription result is saved in JSON format. The parameter is not available for the [Recorder module](/docs/references/voxengine/modules#recorder).
   */
  format?: string;
}

/**
 * The parameters can be passed as arguments to the [Call.say] method.
 */
declare interface CallSayParameters {
  /**
   * Optional. Voice for TTS. List of all supported voices: [VoiceList]. The default value is **VoiceList.Amazon.en_US_Joanna**.<br><br>*Available for providers: Amazon, Google, IBM, Microsoft, SaluteSpeech, T-Bank, Yandex, ElevenLabs.*
   */
  voice?: Voice;
  /**
   * Optional. Whether to use progressive playback. If true, the generated speech is delivered in chunks which reduces delay before a method call and playback. The default value is **false**.<br><br>*Available for providers: Amazon, Google, IBM, Microsoft, SaluteSpeech, T-Bank, Yandex.*
   */
  progressivePlayback?: boolean;
  /**
   * Optional. Parameters for TTS. Note that support of the [TTSOptions.pitch] parameter depends on the language and dictionary used. For unsupported combinations the [CallEvents.PlaybackFinished] event is triggered with error 400.<br><br>*Available for providers: Amazon, Google, IBM, Microsoft, SaluteSpeech, T-Bank, Yandex.*
   */
  ttsOptions?: TTSOptions;
  /**
   * Optional. Provide the TTS parameters directly to the provider in this parameter. Find more information in the <a href="/docs/guides/speech/tts#passing-parameters-directly-to-the-provider">documentation</a>.<br><br>*Available for providers: Google, SaluteSpeech, T-Bank, YandexV3.*
   */
  request?: Object;
}

/**
 * [Call] parameters. Can be passed as arguments to the [VoxEngine.callSIP] method.
 */
declare interface CallSIPParameters {
  /**
   * Optional. Identifier of Voximplant SIP registration that is used for outgoing call.
   */
  regId?: number;
  /**
   * Optional. CallerID of the caller that is displayed to the callee. Usage of whitespaces is not allowed. Normally it is a phone number that can be used for callback.
   */
  callerid?: string;
  /**
   * Optional. Name of the caller that is displayed to the callee. Normally it is a human-readable version of CallerID, e.g. a person's name.
   */
  displayName?: string;
  /**
   * Optional. Password for SIP authentication.
   */
  password?: string;
  /**
   * Optional. Username for SIP authentication. If not specified, callerid is used as the username for authentication.
   */
  authUser?: string;
  /**
   * Optional. Custom parameters (SIP headers) that should be passed with a call (INVITE) message.
   * Custom header names have to begin with the 'X-' prefix. The "X-" headers can be handled by a SIP phone or WEB SDK
   * (e.g. see the [incomingCall](/docs/references/websdk/voximplant/events#incomingcall) event). Example: {'X-header':'value'}
   */
  headers?: Object;
  /**
   * Optional. Whether the call has video support. Please note that the price for audio-only and video calls is different!
   */
  video?: boolean;
  /**
   * Optional. Outgoing proxy, e.g. "69.167.178.6"
   */
  outProxy?: string;
  /**
   * Optional. Answering machine or voicemail detector.
   */
  amd?: AMD.AnsweringMachineDetector;
  /**
   * Optional. Internal information about codecs.
   */
  scheme?: Object;
  /**
   * Optional. Internal flag enables strict audio codec in scheme. The default value is **false**.
   */
  strictCodecList?: boolean | undefined;
  /**
   * Optional. Enables [CallEvents.Ringing] event during SIP Call. The default value is **false**.
   */
  allow180After183?: boolean
}

/**
 * [Call] parameters. Can be passed as arguments to the [VoxEngine.callUserDirect] method.
 */
declare interface CallUserDirectParameters {
  /**
   * CallerID to display to the callee. Usage of whitespaces is not allowed. Normally it is a phone number that can be used for callback. IMPORTANT: test numbers rented from Voximplant cannot be used as CallerIDs, use only real numbers.
   */
  callerid: string;
  /**
   * Name of the caller that is displayed to the callee. Normally it is a human-readable version of CallerID, e.g. a person's name.
   */
  displayName: string;
  /**
   * Optional. Send custom tags along with the push notification of an incoming call.
   */
  analyticsLabel?: string;
  /**
   * Optional. Custom parameters (SIP headers) to be passed with a call (INVITE) message. Custom header names have to begin with the 'X-' prefix. The "X-" headers can be handled by a SIP phone or WEB SDK (e.g. see the [incomingCall](/docs/references/websdk/voximplant/events#incomingcall) event). Example: {'X-header':'value'}
   */
  extraHeaders?: { [header: string]: string };
  /**
   * Optional. Push notification timeout in milliseconds. Note that the timeout is only triggered after the [CallEvents.Failed] event with *480 User Offline*. The default value is **20000**. Must not be less than **10000** or greater than **60000**.
   */
  pushNotificationTimeout?: number;
}

/**
 * [Call] parameters. Can be passed as arguments to the [VoxEngine.callUser] method.
 */
declare interface CallUserParameters extends BaseCallParameters {
  /**
   * Name of the Voximplant user to call.
   */
  username: string;
  /**
   * CallerID to display to the callee. Usage of whitespaces is not allowed. Normally it is a phone number that can be used for callback. IMPORTANT: test numbers rented from Voximplant cannot be used as CallerID, use only real numbers.
   */
  callerid: string;
  /**
   * Optional. Custom parameters (SIP headers) that should be passed with a call (INVITE) message. Custom header names have to begin with the 'X-' prefix except the 'VI-CallTimeout': '60' which hangs up if there is no answer after the timeout (in seconds, the default value is **60**, must not be less than **10** or greater than **400**). The "X-" headers can be handled by a SIP phone or WEB SDK (e.g. see the [incomingCall](/docs/references/websdk/voximplant/events#incomingcall) event). Example: {'X-header':'value'}.
   */
  extraHeaders?: { [header: string]: string };
  /**
   * Optional. Whether the call has video support. Please note that prices for audio-only and video calls are different!
   */
  video?: boolean;
  /**
   * Optional. Whether to send an RTP extension header to communicate video orientation information (`a=extmap:12 urn:3gpp:video-orientation`). If **false**, browsers that do not support that extension are correctly displaying video; however, the battery consumption is higher. The default value is **true**.
   */
  videoOrientationExtension?: boolean;
  /**
   * Optional. Sends custom tags along with the push notification of an incoming call.
   */
  analyticsLabel?: string;
  /**
   * Optional. Answering machine or voicemail detector.
   */
  amd?: AMD.AnsweringMachineDetector;
  /**
   * Optional. Push notification timeout in milliseconds. Note that the timeout is only triggered after the [CallEvents.Failed] event with *480 User Offline*. The default value is **20000**. Must not be less than **10000** or greater than **60000**.
   */
  pushNotificationTimeout?: number;
  /**
   * Optional. Internal flag enables strict audio codec in scheme. The default value is **false**.
   */
  strictCodecList?: boolean | undefined;
}

/**
 * [Call] parameters. Can be passed as an argument to the [VoxEngine.callWhatsappUser] method.
 */
declare interface CallWhatsappUserParameters {
  /**
   * WhatsApp phone number to call.
   */
  number: string;
  /**
   * WhatsApp Business account's phone number that is displayed as the CallerID to the callee. Usage of whitespaces is not allowed.
   */
  callerid: string;
  /**
   * Optional. Extra headers to be sent with the request. Example: `{'X-header':'value'}`.
   */
  headers?: Object;
  /**
   * Optional. Wheter to disable DTX (Discontinuous Transmission) for the audio codec.
   */
  disableDtxForAudio?: boolean;
}

/**
 * Represents an audio or video call.
 */
declare class Call {
  /**
   * Returns the current state of the call. Possible values are: **TERMINATED** | **CONNECTED** | **PROGRESSING** | **ALERTING**.
   */
  state(): string;

  /**
   * Returns the human-readable description of the call's status.
   */
  toString(): string;

  /**
   * Sets or gets a custom string associated with the particular call (the Call object). The **customData** value could be sent from WEB/iOS/Android SDKs, and then it becomes the **customData** value in the [Call] instance. Note that if you receive a value from an SDK, you can always replace it manually.
   * SDKs can pass customData in two ways:<br>
   * 1) when SDK calls the Voximplant cloud</br>
   * 2) when SDK answers the call from the Voximplant cloud. See the syntax and details in the corresponding references: [WEB SDK call()](/docs/references/websdk/voximplant/client#call) / [WEB SDK answer()](/docs/references/websdk/voximplant/call#answer) / [iOS call:settings:](/docs/references/iossdk/client/viclient#callsettings) / [iOS answerWithSettings](/docs/references/iossdk/call/vicall#answerwithsettings:) / [Android call()](/docs/references/androidsdk/client/iclient#call) / [Android answer()](/docs/references/androidsdk/call/icall#answer)
   * @param customData Optional. Custom call data to set. Maximum size is **200 bytes**
   */
  customData(customData?: string): string;

  /**
   * Returns the call's id. Each call in a JavaScript session has its own unique id.
   */
  id(): string;

  /**
   * Whether the call is incoming.
   */
  incoming(): boolean;

  /**
   * Returns the callerID of the caller, which is displayed to the callee. Normally it is some phone number that can be used for callback. IMPORTANT: test numbers rented from Voximplant cannot be used as CallerIDs, the values can be only real numbers.
   */
  callerid(): string;

  /**
   * Returns the name of the caller, which is displayed to the callee. Normally it is a human-readable version of [Call.callerid], e.g. a person's name.
   */
  displayName(): string;

  /**
   * Returns a dialed number of the incoming or outgoing call.
   */
  number(): string;

  /**
   * Returns VAD (Voice Activity Detection) status. The including of the ASR also activates VAD so in that case vad() returns true.
   */
  vad(): boolean;

  /**
   * Adds a handler for the specified [CallEvents] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
   * @param event Event class (i.e., [CallEvents.Connected])
   * @param callback Handler function. A single parameter is passed - object with event information
   */
  addEventListener<T extends keyof _CallEvents>(
    event: CallEvents | T,
    callback: (event: _CallEvents[T]) => any,
  ): void;

  /**
   * Removes a handler for the specified [CallEvents] event.
   * @param event Event class (i.e., [CallEvents.Connected])
   * @param callback Optional. Handler function. If not specified, all handler functions are removed
   */
  removeEventListener<T extends keyof _CallEvents>(
    event: CallEvents | T,
    callback?: (event: _CallEvents[T]) => any,
  ): void;

  /**
   * Returns a type of the client. The possible values are: 'pstn', 'sip', 'user', 'wab'.
   */
  clientType(): string;

  /**
   * Attempts finishing the current call. Triggers one of the following events:
   * 1. [CallEvents.Disconnected] if the call is active before hangup.
   * 2. [CallEvents.Failed] if it is an outgoing call that is not connected previously.
   * <br>
   * If there are no other active calls and/or SmartQueue requests in the call session, the [AppEvents.Terminating] and [AppEvents.Terminated] events are triggered in 60 seconds (see the [session limits](/docs/guides/voxengine/limits) for details).
   * @param extraHeaders Optional. Custom parameters (SIP headers) that should be passed with the hangup request. Custom header names have to begin with the 'X-' prefix. The "X-" headers could be handled by a SIP phone or WEB SDK (e.g. see the [incomingCall](/docs/references/websdk/voximplant/events#incomingcall) event). Example: {'X-header':'value'}
   */
  hangup(extraHeaders?: { [header: string]: string }): void;

  /**
   * Answers the incoming call. Use it only for non-P2P call legs connection. Remember that you can use the [Call.startEarlyMedia] method before answering a call.
   * @param extraHeaders Optional. Custom parameters (SIP headers) that should be passed with the answer request. Custom header names have to begin with the 'X-' prefix. The "X-" headers could be handled by a SIP phone or WEB SDK (e.g. see the [Connected](/docs/references/websdk/voximplant/callevents#connected) event). Example: {'X-header':'value'}
   * @param parameters Optional. Answering call parameters
   */
  answer(extraHeaders?: { [header: string]: string }, parameters?: CallAnswerParameters): void;

  /**
   * Answer the incoming call in the peer-to-peer mode. Use it only for P2P call legs connection.
   * @param peerCall The other P2P call leg
   * @param extraHeaders Optional. Custom parameters (SIP headers) that should be passed with the answer request. Custom header names have to begin with the 'X-' prefix. The "X-" headers could be handled by a SIP phone or WEB SDK (e.g. see the  Connected (/docs/references/websdk/enums/callevents.html#connected) event). Example: {'X-header':'value'}
   * @param parameters Optional. Answering call parameters
   */
  answerDirect(
    peerCall: Call,
    extraHeaders?: { [header: string]: string },
    parameters?: CallAnswerParameters,
  ): void;

  /**
   * Rejects the incoming call.
   * @param code SIP status code
   * @param extraHeaders Optional. Custom parameters (SIP headers) that should be passed with the reject request. Custom header names have to begin with the 'X-' prefix. The "X-" headers could be handled by a SIP phone or WEB SDK (e.g., see the [incomingCall](/docs/references/websdk/voximplant/events#incomingcall) event). Example: {'X-header':'value'}
   * @deprecated Use [Call.reject] instead
   */
  decline(code: number, extraHeaders?: { [header: string]: string }): void;

  /**
   * Rejects the incoming call. First it triggers the [CallEvents.Disconnected] event immediately. The [AppEvents.Terminating] and [AppEvents.Terminated] events are triggered in 60 seconds.
   * @param code SIP status code with the rejection reason. You can pass any [standard SIP code](https://en.wikipedia.org/wiki/List_of_SIP_response_codes) starting with 3xx, 4xx, 5xx and 6xx as a reject reason
   * @param extraHeaders Optional. Custom parameters (SIP headers) that should be passed with the reject request. Custom header names have to begin with the 'X-' prefix. The "X-" headers could be handled by a SIP phone or WEB SDK (e.g. see the [incomingCall](/docs/references/websdk/voximplant/events#incomingcall) event). Example: {'X-header':'value'}
   */
  reject(code: number, extraHeaders?: { [header: string]: string }): void;

  /**
   * Plays dial tones for the incoming call. The method sends a low-level command to the endpoint device to start playing dial tones for the call. So the dial tones depend on endpoint device's behavior rather than on the Voximplant cloud. IMPORTANT: each call object can send media to any number of other calls (media units), but can receive only one audio stream. A new incoming stream always replaces the previous one.
   * @param extraHeaders Optional. Custom parameters (SIP headers) that should be passed with the request. Custom header names have to begin with the 'X-' prefix. The "X-" headers could be handled by a SIP phone or WEB SDK (e.g. see the [incomingCall](/docs/references/websdk/voximplant/events#incomingcall) event). Example: {'X-header':'value'}
   */
  ring(extraHeaders?: { [header: string]: string }): void;

  /**
   * Informs the call endpoint that early media is sent before accepting the call. It allows playing voicemail prompt or music before establishing the connection. It does not allow to listen to call endpoint. Note that unanswered call can be in "early media" state only for 60 seconds, see the [session limits](/docs/guides/voxengine/limits) for details.
   * @param extraHeaders Optional. Custom parameters (SIP headers) that should be passed with the request. Custom header names have to begin with the 'X-' prefix. The "X-" headers could be handled by a SIP phone or WEB SDK (e.g. see the [incomingCall](/docs/references/websdk/voximplant/events#incomingcall) event). Example: {'X-header':'value'}
   * @param scheme Optional. Internal information about codecs from the [AppEvents.CallAlerting] event
   * @param maxVideoBitrate Optional. Set the maximum possible video bitrate for the customer device in kbps
   * @param audioLevelExtension Optional. Audio level extension
   * @param conferenceCall Optional. Whether the call is coming from a conference. The default value is **false**
   * @param disableDtxForAudio Optional. Whether the call is coming from a conference. The default value is **false**
   */
  startEarlyMedia(
    extraHeaders?: { [header: string]: string },
    scheme?: string,
    maxVideoBitrate?: number,
    audioLevelExtension?: boolean,
    conferenceCall?: boolean,
    disableDtxForAudio?: boolean,
  ): void;

  /**
   * Starts to play an audio file to the answered call. You can stop playback manually via the [Call.stopPlayback] method. You can attach media streams later via the [Call.sendMediaTo] method etc. IMPORTANT: each call object can send media to any number of other calls (media units), but can receive only one audio stream. A new incoming stream always replaces the previous one.
   * @param url HTTP/HTTPS url to the audio file. The file is cached after the first playing. Supported formats are: mp3, ogg, flac, and wav (mp3, speex, vorbis, flac, and wav codecs respectively). Maximum file size is 10 Mb
   * @param parameters Optional. Playback parameters
   */
  startPlayback(url: string, parameters?: StartPlaybackParameters): void;

  /**
   * Say some text to the [CallEvents.Connected] call. If text length exceeds 1500 characters the [PlayerEvents.PlaybackFinished] event is triggered with error description.
   * IMPORTANT: each call object can send media to any number of other calls (media units), but can receive only one audio stream. A new incoming stream always replaces the previous one.
   * @param text Message that is played to the call. To put an accent to the specified syllable, use the <say-as stress='1'></say-as> tag
   * @param parameters Optional. TTS parameters
   * @warning This method internally operates with the [Player] class and its events. Use the [VoxEngine.createTTSPlayer] to get more flexibility
   */
  say(text: string, parameters?: CallSayParameters): void;

  /**
   * Starts recording the incoming and outgoing audio for this call.
   * This method triggers the [CallEvents.RecordStarted] event.
   * The default quality is **8kHz / 32kbps**; the format is **mp3**.
   * @param parameters Recorder parameters
   */
  record(parameters: CallRecordParameters): void;

  /**
   * Stops audio playback started before via the [Call.startPlayback] method.
   */
  stopPlayback(): void;

  /**
   * Provides country-specific dial tones. The method sends a command to the Voximplant cloud to start playing dial tones in the call. The dial tones fully depend on the Voximplant cloud. Note that in order to work properly in a call that is not connected yet, you need to call the [Call.startEarlyMedia] method before using this function. IMPORTANT: each call object can send media to any number of other calls (media units), but can receive only one audio stream. A new incoming stream always replaces the previous one.
   * @param country 2-letter country code. Currently supported values are **US**, **RU**
   */
  playProgressTone(country: string): void;

  /**
   * Sends a text message to the call.
   * @param text Message text. Maximum size is **8192 bytes** according to the limits
   */
  sendMessage(text: string): void;

  /**
   * Starts sending media (voice and video) from the call to the media unit. The target call has to be [CallEvents.Connected] earlier. IMPORTANT: each call object can send media to any number of the media units, but can receive only one audio stream. A new incoming stream always replaces the previous one.
   * @param mediaUnit Media unit that receives media
   * @param parameters Optional. WebSocket interaction only parameters
   */
  sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

  /**
   * Stops sending media (voice and video) from the call to media unit.
   * @param mediaUnit Media unit that does not need to receive media from this call anymore
   */
  stopMediaTo(mediaUnit: VoxMediaUnit): void;

  /**
   * Changes DTMF processing mode (in-band DTMF, RFC 2833 DTMF and DTMF over SIP INFO) telephony signals. If true, each received DTMF signal triggers the [CallEvents.ToneReceived] and removes from audio stream.
   * @param doHandle Whether to enable DTMF analysis. The default values is **true**
   * @param supportedDtmfTypes The DTMF type to process. The default value is **ALL**
   */
  handleTones(doHandle: boolean, supportedDtmfTypes?: DTMFType): void;

  /**
   * Sends info (SIP INFO) message to the call.
   * @param mimeType MIME type of the message
   * @param body Message content. Maximum size is 8192 bytes according to the limits
   * @param headers Optional. Headers to be passed with the message. Custom header names have to begin with the 'X-' prefix. The "X-" headers could be handled by a SIP phone or WEB SDK (e.g. see the [incomingCall](/docs/references/websdk/voximplant/events#incomingcall) event). Example: **{'X-header':'value'}**
   */
  sendInfo(mimeType: string, body: string, headers?: { [header: string]: string }): void;

  /**
   * Sends DTMF digits to the remote peer.
   * @param digits Any combination of 0-9, *, #, p (pause) symbols
   */
  sendDigits(digits: string): void;

  /**
   * Whether to enable detection of microphone status in the call. If detection is enabled, the [CallEvents.MicStatusChange] event is triggered at each status' change.
   * @param handle Enable/disable microphone status analysis. The default value is **false**
   */
  handleMicStatus(handle: boolean): void;

  /**
   * Whether to enable blind transfers. When enabled, the [CallEvents.BlindTransferRequested] event is triggered to request for the third call leg within an existing session and notify the transfer initiator of the result.
   * @param handle Enable/disable blind transfers
   */
  handleBlindTransfer(handle: boolean): void;

  /**
   * Sends a notification of a successful call transfer with the **200 OK** message.
   */
  notifyBlindTransferSuccess(): void;

  /**
   * Sends a notification about a failed call transfer with an error code and reason.
   * @param code Error code
   * @param reason Reason why the blind transfer is failed
   */
  notifyBlindTransferFailed(code: number, reason: string): void;

  /**
   * Enables beep detection in a call. The beep detection is used to detect beeps in the call audio stream.
   * @param parameters Beep detection parameters
   */
  enableBeepDetection(parameters: CallEnableBeepDetectionParameters): void;

  /**
   * Disables beep detection in a call.
   */
  disableBeepDetection(): void;

  /**
   * Transfers a SIP call to a 3rd party provider which supports the REFER command. If the transfer is successful, Voximplant disconnects from handling this call and the [CallEvents.TransferComplete] event is triggered. Otherwise, the [CallEvents.TransferFailed] event is triggered.
   */
  transferTo(parameters: TransferToParameters): void;

  /**
   * Enables the retrieval of multimedia statistics during a call. When enabled, the [CallEvents.MediaStatisticsReceived] event is triggered and retrieves multimedia statistics during a call.
   * @param parameters Multimedia statistics parameters 
   */
  monitorMediaStatistics(parameters: MonitorMediaStatisticsParameters): void
}

/**
 * Represents a call list to interact with Voximplant's call list processing functionality.
 */
declare namespace CallList {}

declare namespace CallList {
  /**
   * Reports error to the CallList module asynchronously and continues the call list.
   * 
   * Call this method if the call attempt is not successful. If you do not call this method or 
   * [reportErrorAsync](/docs/references/voxengine/calllist/reporterrorasync), the call list considers this task 
   * successful and does not make any more attempts to call this task.
   * 
   * @param error Error string or JSON
   */
  function reportErrorAsync(error: string | Object): Promise<Net.HttpRequestResult>;
}

declare namespace CallList {
  /**
   * Reports error to the CallList module and continues the call list.
   * 
   * Call this method if the call attempt is not successful. If you do not call this method or 
   * [reportError](/docs/references/voxengine/calllist/reporterror), the call list considers this task 
   * successful and does not make any more attempts to call this task.
   * 
   * @param error Error string or JSON
   * @param callback Optional. Callback to execute when a result is processed
   */
  function reportError(
    error: string | Object,
    callback?: (result: Net.HttpRequestResult) => void
  ): void;
}

declare namespace CallList {
  /**
   * Report progress to the CallList module
   * @param progress Progress description string or JSON
   */
  function reportProgressAsync(progress: string | Object): Promise<Net.HttpRequestResult>;
}

declare namespace CallList {
  /**
   * Report progress to the CallList module
   * @param progress Progress description string or JSON
   * @param callback Optional. Callback to execute when a result is processed
   */
  function reportProgress(
    progress: string | Object,
    callback?: (result: Net.HttpRequestResult) => void
  ): void;
}

declare namespace CallList {
  /**
   * Reports successful result to the CallList module asynchronously, saves the report to result_data field in the sheet, 
   * stops the calling attempts for this task and proceeds to the next task.
   * @param result Result description string or JSON
   */
  function reportResultAsync(result: string | Object): Promise<Net.HttpRequestResult>;
}

declare namespace CallList {
  /**
   * Reports successful result to the CallList module, saves the report to result_data field in the sheet, 
   * stops the calling attempts for this task and proceeds to the next task.
   * @param result Result description string or JSON
   * @param callback Optional. Callback to execute when a result is processed
   */
  function reportResult(
    result: string | Object,
    callback?: (result: Net.HttpRequestResult) => void
  ): void;
}

declare namespace CallList {
  /**
   * Changes parameters for the current task and request another calling attempt with updated data asynchronously.
   * <br>
   * This method can change the following fields for the current task: `start_at`, `attempts_left`, `custom_data`, 
   * `start_execution_time`, `end_execution_time` and `next_attempt_time`. The new values work for all remaining attempts.
   * This method does not change the global call list settings.
   * <br>
   * NOTE: if you do not change the `attempts_left` manually, the call list decreases its value by 1 automatically.
   * <br>
   * After an unsuccessful calling attempt, this method executes the 
   * [reportError](/docs/references/voxengine/calllist/reporterror) method automatically.
   * <br>
   * Refer to the [Editable call lists](/docs/guides/solutions/editable-call-lists) guide to learn more.
   * @param data Data to update
   */
  function requestNextAttemptAsync(data: Object): Promise<Net.HttpRequestResult>;
}

declare namespace CallList {
  /**
   * Changes parameters for the current task and request another calling attempt with updated data.
   * <br>
   * This method can change the following fields for the current task: `start_at`, `attempts_left`, `custom_data`, 
   * `start_execution_time`, `end_execution_time` and `next_attempt_time`. The new values work for all remaining attempts.
   * This method does not change the global call list settings.
   * <br>
   * NOTE: if you do not change the `attempts_left` manually, the call list decreases its value by 1 automatically.
   * <br>
   * After an unsuccessful calling attempt, this method executes the 
   * [reportError](/docs/references/voxengine/calllist/reporterror) method automatically.
   * <br>
   * Refer to the [Editable call lists](/docs/guides/solutions/editable-call-lists) guide to learn more.
   * @param data Data to update
   * @param callback Optional. Callback function to execute after the request is done
   */
  function requestNextAttempt(
    data: Object,
    callback?: (result: Net.HttpRequestResult) => void
  ): void;
}

declare namespace Cartesia {
  /**
   * @private
   */
  interface _AgentsClientEvents extends _Events, _AgentsEvents {
  }
}
declare namespace Cartesia {
  /**
   * [Cartesia.AgentsClient] parameters. Can be passed as arguments to the [Cartesia.createAgentsClient] method.
   */
  interface AgentsClientParameters extends _VoiceAIClientParameters {
    /**
     * The API key for the Cartesia. Used to generate access token.
     */
    apiKey: string;
    /**
     * Cartesia API version.
     */
    cartesiaVersion: string;
    /**
     * The unique identifier for the Cartesia Voice Agent.
     */
    agentId: string;
  }
}
  
declare namespace Cartesia {
  class AgentsClient {
    /**
     * Returns the AgentsClient id.
     */
    id(): string;

    /**
     * Returns the Cartesia WebSocket id.
     */
    webSocketId(): string;

    /**
     * Closes the Cartesia connection (over WebSocket) or connection attempt.
     */
    close(): void;

    /**
     * Starts sending media from the Cartesia (via WebSocket) to the media unit. Cartesia works in real time.
     * @param mediaUnit Media unit that receives media
     * @param parameters Optional interaction parameters
     */
    sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

    /**
     * Stops sending media from the Cartesia (via WebSocket) to the media unit.
     * @param mediaUnit Media unit that stops receiving media
     */
    stopMediaTo(mediaUnit: VoxMediaUnit): void;

    /**
     * Clears the Cartesia WebSocket media buffer.
     * @param parameters Optional. Media buffer clearing parameters
     */
    clearMediaBuffer(parameters?: ClearMediaBufferParameters): void;

    /**
     * Adds a handler for the specified [Cartesia.AgentsEvents] or [Cartesia.Events] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event Event class (i.e., [Cartesia.AgentsEvents.ACK])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof Cartesia._AgentsClientEvents>(
      event: Cartesia.Events | Cartesia.AgentsEvents | T,
      callback: (event: Cartesia._AgentsClientEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [Cartesia.AgentsEvents] or [Cartesia.Events] event.
     * @param event Event class (i.e., [Cartesia.AgentsEvents.ACK])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof Cartesia._AgentsClientEvents>(
      event: Cartesia.Events | Cartesia.AgentsEvents | T,
      callback?: (event: Cartesia._AgentsClientEvents[T]) => any,
    ): void;

    /**
     * Initializes the audio stream configuration. [https://docs.cartesia.ai/line/integrations/web-calls#start-event](https://docs.cartesia.ai/line/integrations/web-calls#start-event)
     * @param parameters
     */
    start(parameters: Object): void
    /**
     * Sends DTMF (dual-tone multi-frequency) tones. [https://docs.cartesia.ai/line/integrations/web-calls#dtmf-event](https://docs.cartesia.ai/line/integrations/web-calls#dtmf-event)
     * @param parameters
     */
    dtmf(parameters: Object): void
    /**
     * Sends custom metadata to the agent. [https://docs.cartesia.ai/line/integrations/web-calls#custom-event](https://docs.cartesia.ai/line/integrations/web-calls#custom-event)
     * @param parameters
     */
    custom(parameters: Object): void
  }
}
  
declare namespace Cartesia {
  /**
   * @event
   */
  enum AgentsEvents {
    /**
     * The unknown event.
     * @typedef _CartesiaAgentsEvent
     */
    Unknown = 'Cartesia.Agents.Unknown',

    /**
     * The HTTP response event.
     * @typedef _CartesiaAgentsEvent
     */
    HTTPResponse = 'Cartesia.Agents.HTTPResponse',

    /**
     * Server acknowledgment of the start event, confirming stream configuration. [https://docs.cartesia.ai/line/integrations/web-calls#ack-event](https://docs.cartesia.ai/line/integrations/web-calls#ack-event)
     * @typedef _CartesiaAgentsEvent
     */
    ACK = 'Cartesia.Agents.ACK',

    /**
     * Indicates the agent wants to clear/interrupt the current audio stream. [https://docs.cartesia.ai/line/integrations/web-calls#clear-event](https://docs.cartesia.ai/line/integrations/web-calls#clear-event)
     * @typedef _CartesiaAgentsEvent
     */
    Clear = 'Cartesia.Agents.Clear',

    /**
     * Server sends DTMF tones from the agent. [https://docs.cartesia.ai/line/integrations/web-calls#dtmf-event-2](https://docs.cartesia.ai/line/integrations/web-calls#dtmf-event-2)
     * @typedef _CartesiaAgentsEvent
     */
    DTMF = 'Cartesia.Agents.DTMF',

    /**
     * Server sends custom metadata from the agent. [https://docs.cartesia.ai/line/integrations/web-calls#custom-event-2](https://docs.cartesia.ai/line/integrations/web-calls#custom-event-2)
     * @typedef _CartesiaAgentsEvent
     */
    Custom = 'Cartesia.Agents.Custom',

    /**
     * The WebSocket error response event.
     * @typedef _CartesiaAgentsEvent
     */
    WebSocketError = 'Cartesia.Agents.WebSocketError',

     /**
     * Contains information about connector.
     * @typedef _CartesiaAgentsEvent
     */
    ConnectorInformation = 'Cartesia.Agents.ConnectorInformation',
  }

  /**
   * @private
   */
  interface _AgentsEvents {
    [AgentsEvents.Unknown]: _CartesiaAgentsEvent;
    [AgentsEvents.HTTPResponse]: _CartesiaAgentsEvent;
    [AgentsEvents.ACK]: _CartesiaAgentsEvent;
    [AgentsEvents.Clear]: _CartesiaAgentsEvent;
    [AgentsEvents.DTMF]: _CartesiaAgentsEvent;
    [AgentsEvents.Custom]: _CartesiaAgentsEvent;
    [AgentsEvents.WebSocketError]: _CartesiaAgentsEvent;
    [AgentsEvents.ConnectorInformation]: _CartesiaAgentsEvent;
  }

  /**
   * @private
   */
  interface _CartesiaAgentsEvent {
    /**
     * The [Cartesia.AgentsClient] instance.
     */
    client: AgentsClient;
    /**
     * The event's data.
     */
    data?: Object;
  }
}
  
  
declare namespace Cartesia {
}
declare namespace Cartesia {
    /**
     * Creates a [Cartesia.AgentsClient] instance.
     * @param parameters The [Cartesia.AgentsClient] parameters
     */
    function createAgentsClient(parameters: AgentsClientParameters): Promise<Cartesia.AgentsClient>
}
declare namespace Cartesia {
    /**
     * Creates a new [Cartesia.RealtimeTTSPlayer] instance with the specified text (TTS is used to play the text). You can attach media streams later via the [Cartesia.RealtimeTTSPlayer.sendMediaTo] or [VoxEngine.sendMediaBetween] methods.
     * @param text Text to synthesize
     * @param parameters Optional. Realtime TTS player parameters
     **/
    function createRealtimeTTSPlayer(text: string, parameters?: RealtimeTTSPlayerParameters): RealtimeTTSPlayer;
}

declare namespace Cartesia {
  /**
   * @event
   */
  enum Events {
    /**
     * Triggered when the audio stream sent by a third party through a Cartesia WebSocket is started playing.
     * @typedef _WebSocketMediaStartedCartesiaEvent
     */
    WebSocketMediaStarted = 'Cartesia.Events.WebSocketMediaStarted',
    /**
     * Triggers after the end of the audio stream sent by a third party through a Cartesia WebSocket (**1 second of silence**).
     * @typedef _WebSocketMediaEndedCartesiaEvent
     */
    WebSocketMediaEnded = 'Cartesia.Events.WebSocketMediaEnded',
  }

  /**
   * @private
   */
  interface _Events {
    [Cartesia.Events.WebSocketMediaStarted]: _WebSocketMediaStartedCartesiaEvent;
    [Cartesia.Events.WebSocketMediaEnded]: _WebSocketMediaEndedCartesiaEvent;
  }

  /**
   * @private
   */
  interface _Event {
    /**
     * The [Cartesia.AgentsClient] instance.
     */
    client: AgentsClient;
  }

  /**
   * @private
   */
  interface _WebSocketMediaStartedCartesiaEvent extends _Event, _WebSocketMediaStartedWithoutWebSocketEvent {
  }

  /**
   * @private
   */
  interface _WebSocketMediaEndedCartesiaEvent extends _Event, _WebSocketMediaEndedWithoutWebSocketEvent {
  }
}
declare namespace Cartesia {
  class RealtimeTTSPlayer extends BasePlayer {
    /**
     * Appends text to a [Cartesia.RealtimeTTSPlayer].
     * 
     * Use this to generate speech for a transcript.
     * @param parameters Object provides the parameters directly to the Cartesia provider Generation Request message. Find more information in the [documentation](https://docs.cartesia.ai/2024-11-13/api-reference/tts/tts#send.Generation-Request)
     */
    generationRequest(parameters: Object): void;

    /**
     * Cancels a context request. No more messages are generated for that context.
     * @param parameters Object provides the parameters directly to the Cartesia provider Cancel Context Request message. Find more information in the [documentation](https://docs.cartesia.ai/2024-11-13/api-reference/tts/tts#send.Cancel-Context-Request)
     */
    cancelContextRequest(parameters: Object): void;

    /**
     * Clears a [Cartesia.RealtimeTTSPlayer] buffer.
     */
    clearBuffer(): void;
  }
}

declare namespace Cartesia {
  /**
   * [Cartesia.RealtimeTTSPlayer] parameters. Can be passed as arguments to the [Cartesia.createRealtimeTTSPlayer] method.
   */
  interface RealtimeTTSPlayerParameters extends _WebSocketBasedClientParameters {
    /**
     * Object to provide parameters directly to the Cartesia provider Generation Request message. Find more information in the [documentation](https://docs.cartesia.ai/2024-11-13/api-reference/tts/tts#send.Generation-Request).
     */
    generationRequestParameters?: Object;
    /**
     * Optional. Cartesia API key. Use your Cartesia API key if you have your own Cartesia account.
     */
    apiKey?: string;
  }
}

declare namespace CCAI {
  /**
   * Represents a CCAI Agent instance.
   */
  class Agent {
    constructor(agentId: string, region?: string);

    /**
     * Returns the CCAI Agent id.
     */
    id(): string;

    /**
     * Destroys a CCAI Agent instance.
     */
    destroy(): void;

    /**
     * Gets the list of a Dialogflow conversation profiles.
     */
    getProfilesList(): Promise<GetProfilesListResult>;

    /**
     * Gets the Dialogflow conversation profile.
     * @param request Dialogflow get conversation profile [request data](https://cloud.google.com/dialogflow/es/docs/reference/rpc/google.cloud.dialogflow.v2beta1#getconversationprofilerequest)
     */
    getConversationProfile(request: Object): Promise<GetConversationProfileResult>;

    /**
     * Updates the Dialogflow conversation profile.
     * @param request Dialogflow update conversation profile [request data](https://cloud.google.com/dialogflow/es/docs/reference/rpc/google.cloud.dialogflow.v2beta1#updateconversationprofilerequest)
     */
    updateConversationProfile(request: Object): Promise<UpdateConversationProfileResult>;

    /**
     * Adds a handler for the specified [CCAI.Events.Agent] event. Use only functions as handlers; anything except a function leads to an error and scenario termination when a handler is called.
     * @param event Event class (i.e., [CCAI.Events.Agent.Started])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof CCAI.Events._AgentEvents>(
      event: CCAI.Events.Agent | T,
      callback: (event: CCAI.Events._AgentEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [CCAI.Events.Agent] event.
     * @param event Event class (i.e., [CCAI.Events.Agent.Started])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof CCAI.Events._AgentEvents>(
      event: CCAI.Events.Agent | T,
      callback?: (event: CCAI.Events._AgentEvents[T]) => any,
    ): void;
  }
}

declare namespace CCAI {}

declare namespace CCAI {
  /**
   * [Conversation] settings.
   */
  interface ConversationSettings {
    /**
     * CCAI agent to use in the Dialogflow conversation.
     */
    agent: CCAI.Agent;
    /**
     * Service to connect to the incoming Dialogflow conversation.
     */
    profile: CCAI.Vendor.ConversationProfile;
    /**
     * Name of the Dialogflow conversation.
     */
    project: string;
  }
}

declare namespace CCAI {
  /**
   * Represents a CCAI conversation instance.
   */
  class Conversation {
    constructor(settings: CCAI.ConversationSettings);

    /**
     * Adds a participant to the conversation.
     */
    addParticipant(settings: CCAI.ParticipantSettings): CCAI.Participant;

    /**
     * Removes a participant from the conversation.
     */
    removeParticipant(participant: CCAI.Participant): void;

    /**
     * Adds a handler for the specified [CCAI.Events.Conversation] event. Use only functions as handlers; anything except a function leads to an error and scenario termination when a handler is called.
     * @param event Event class (i.e., [CCAI.Events.Conversation.Created])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof CCAI.Events._ConversationEvents>(
      event: CCAI.Events.Conversation | T,
      callback: (event: CCAI.Events._ConversationEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [CCAI.Events.Conversation] event.
     * @param event Event class (i.e., [CCAI.Events.Conversation.Created])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof CCAI.Events._ConversationEvents>(
      event: CCAI.Events.Conversation | T,
      callback?: (event: CCAI.Events._ConversationEvents[T]) => any,
    ): void;
  }
}

declare namespace CCAI {
  namespace Events {
    /**
     * Events related to CCAI agents.
     * @event
     */
    enum Agent {
      /**
       * Triggers after the [CCAI.Agent] instance is created.
       * @typedef _AgentStartedEvent
       */
      Started = 'AI.Events.CcaiAgentStarted',
      /**
       * Triggers after the [CCAI.Agent] instance is destroyed.
       * @typedef _AgentStoppedEvent
       */
      Stopped = 'AI.Events.CcaiAgentStopped',
    }

    /**
     * @private
     */
    interface _AgentEvents {
      [Agent.Started]: _AgentStartedEvent;
      [Agent.Stopped]: _AgentStoppedEvent;
    }

    /**
     * @private
     */
    interface _AgentEvent {
      /**
       * CCAI Agent istance that generated the event
       */
      ccaiAgent: CCAI.Agent;
    }

    /**
     * @private
     */
    interface _AgentStartedEvent extends _AgentEvent {
    }

    /**
     * @private
     */
    interface _AgentStoppedEvent extends _AgentEvent {
    }
  }
}

declare namespace CCAI {
  namespace Events {
    /**
     * Events related to CCAI conversations.
     * @event
     */
    enum Conversation {
      /**
       * Triggers after the [CCAI.Conversation] instance is created.
       * @typedef _ConversationCreatedEvent
       */
      Created = 'AI.Events.CcaiConversationCreated',
      /**
       * Triggered when a conversation profile is created in the specified project.
       * @typedef _ConversationProfileCreatedEvent
       */
      ProfileCreated = 'AI.Events.CcaiConversationProfileCreated',
      /**
       * Triggered when the conversation is completed.
       * @typedef _ConversationCompletedEvent
       */
      Completed = 'AI.Events.CcaiConversationCompleted',
      /**
       * Triggered when a [CCAI.Conversation] instance causes an error.
       * @typedef _ConversationErrorEvent
       */
      Error = 'AI.Events.CcaiConversationError',
    }

    /**
     * @private
     */
    interface _ConversationEvents {
      [Conversation.Created]: _ConversationCreatedEvent;
      [Conversation.ProfileCreated]: _ConversationProfileCreatedEvent;
      [Conversation.Completed]: _ConversationCompletedEvent;
      [Conversation.Error]: _ConversationErrorEvent;
    }

    /**
     * @private
     */
    interface _ConversationEvent {
      /**
       * CCAI Conversation istance that generated the event
       */
      ccaiConversation: CCAI.Conversation;
    }

    /**
     * @private
     */
    interface _ConversationCreatedEvent extends _ConversationEvent {
    }

    /**
     * @private
     */
    interface _ConversationProfileCreatedEvent extends _ConversationEvent {
    }

    /**
     * @private
     */
    interface _ConversationCompletedEvent extends _ConversationEvent {
    }

    /**
     * @private
     */
    interface _ConversationErrorEvent extends _ConversationEvent {
    }

    /**
     * @private
     */
    interface _ConversationErrorEvent extends _ConversationEvent {
    }
  }
}

declare namespace CCAI {
  namespace Events {}
}

declare namespace CCAI {
  namespace Events {
    /**
     * Events related to CCAI participants.
     * @event
     */
    enum Participant {
      /**
       * Triggers after the [CCAI.Participant] instance is created.
       * @typedef _ParticipantCreatedEvent
       */
      Created = 'AI.Events.CcaiParticipantCreated',
      /**
       * Triggered when a [CCAI.Participant] instance returns an intent response.
       * @typedef _ParticipantResponseEvent
       */
      Response = 'AI.Events.CcaiParticipantResponse',
      /**
       * Triggered when playback of a single phrase has finished successfully or in case of a playback error.
       * @typedef _ParticipantPlaybackFinishedEvent
       */
      PlaybackFinished = 'AI.Events.CcaiParticipantPlaybackFinished',
      /**
       * Triggered when playback of a single phrase has started.
       * @typedef _ParticipantPlaybackStartedEvent
       */
      PlaybackStarted = 'AI.Events.CcaiParticipantPlaybackStarted',
      /**
       * Triggered when playback of a single phrase has stoped.
       * @typedef _ParticipantPlaybackStoppedEvent
       */
      PlaybackStopped = 'AI.Events.CcaiParticipantPlaybackStopped',
      /**
       * Triggered when **audio_segments** from Google are ready to be played.
       * @typedef _ParticipantPlaybackReadyEvent
       */
      PlaybackReady = 'AI.Events.CcaiParticipantPlaybackReady',
      /**
       * Triggered when [CCAI.Participant.addPlaybackMarker] is reached.
       * @typedef _ParticipantMarkerReachedEvent
       */
      MarkerReached = 'AI.Events.CcaiParticipantMarkerReached',
    }

    /**
     * @private
     */
    interface _ParticipantEvents {
      [Participant.Created]: _ParticipantCreatedEvent;
      [Participant.Response]: _ParticipantResponseEvent;
      [Participant.PlaybackFinished]: _ParticipantPlaybackFinishedEvent;
      [Participant.MarkerReached]: _ParticipantMarkerReachedEvent;
      [Participant.PlaybackReady]: _ParticipantPlaybackReadyEvent;
      [Participant.PlaybackStarted]: _ParticipantPlaybackStartedEvent;
      [Participant.PlaybackStopped]: _ParticipantPlaybackStoppedEvent;
    }

    /**
     * @private
     */
    interface _ParticipantEvent {
      /**
       * CCAI Participant istance that generated the event
       */
      ccaiParticipant: CCAI.Participant;
    }

    /**
     * @private
     */
    interface _ParticipantCreatedEvent extends _ParticipantEvent {
    }

    /**
     * @private
     */
    interface _ParticipantResponseEvent extends _ParticipantEvent {
    }

    /**
     * @private
     */
    interface _ParticipantPlaybackFinishedEvent extends _ParticipantEvent {
    }

    /**
     * @private
     */
    interface _ParticipantPlaybackStartedEvent extends _ParticipantEvent {
    }

    /**
     * @private
     */
    interface _ParticipantPlaybackStoppedEvent extends _ParticipantEvent {
    }

    /**
     * @private
     */
    interface _ParticipantPlaybackReadyEvent extends _ParticipantEvent {
    }

    /**
     * @private
     */
    interface _ParticipantMarkerReachedEvent extends _ParticipantEvent {
    }
  }
}

declare namespace CCAI {
  /**
   * [CCAI.Agent.getConversationProfile] method result.
   */
  interface GetConversationProfileResult {
    /**
     * Event ID.
     */
    id: string;
    /**
     * Event name — 'AI.Events.CcaiGetConversationProfileResponse'.
     */
    name: string;
    /**
     * Dialogflow [response data](https://cloud.google.com/dialogflow/es/docs/reference/rpc/google.cloud.dialogflow.v2beta1#conversationprofile).
     */
    response: Object;
  }
}

declare namespace CCAI {
  /**
   * [CCAI.Agent.getProfilesList] method result.
   */
  interface GetProfilesListResult {
    /**
     * Event ID.
     */
    id: string;
    /**
     * Event name — 'AI.Events.CcaiListConversationProfilesResponse'.
     */
    name: string;
    /**
     * Dialogflow [response data](https://cloud.google.com/dialogflow/es/docs/reference/rpc/google.cloud.dialogflow.v2beta1#listconversationsresponse).
     */
    response: Object;
  }
}

declare namespace CCAI {
  /**
   * [Participant] settings.
   */
  interface ParticipantSettings {
    /**
     * Current call object.
     */
    call: Call;
    /**
     * Settings for a new CCAI Dialogflow participant instance setup.
     */
    dialogflowSettings: any;
    /**
     * Options of a single side of the conversation.
     */
    options: CCAI.Vendor.Participant;
  }
}

declare namespace CCAI {
  /**
   * Represents a CCAI participant instance.
   */
  class Participant {
    /**
     * Returns the participant's id.
     */
    id(): string;

    /**
     * Returns the call associated with the participant.
     */
    call(): Call;

    /**
     * Adds a message from a participant into the Dialogflow CCAI.
     * @param query Message
     */
    analyzeContent(query: CCAI.Vendor.EventInput | CCAI.Vendor.TextInput): void;

    /**
     * Adds a Dialogflow speech synthesis playback marker. The [CCAI.Events.Participant.MarkerReached] event is triggered when the marker is reached.
     * @param offset Marker
     * @param playbackId Playback id
     */
    addPlaybackMarker(offset: number, playbackId?: string): void;

    /**
     * Adds a handler for the specified [CCAI.Events.Participant] event. Use only functions as handlers; anything except a function leads to an error and scenario termination when a handler is called.
     * @param event Event class (i.e., [CCAI.Events.Participant.Created])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof CCAI.Events._ParticipantEvents>(
      event: CCAI.Events.Participant | T,
      callback: (event: CCAI.Events._ParticipantEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [CCAI.Events.Participant] event.
     * @param event Event class (i.e., [CCAI.Events.Participant.Created])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof CCAI.Events._ParticipantEvents>(
      event: CCAI.Events.Participant | T,
      callback?: (event: CCAI.Events._ParticipantEvents[T]) => any,
    ): void;

    /**
     * Starts sending media (voice) from the Dialogflow participant to the media unit.
     * @param mediaUnit Media unit that receives media
     * @param parameters Optional. WebSocket interaction only parameters
     */
    sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

    /**
     * Stops sending voice from the Dialogflow participant to the media unit.
     * @param mediaUnit Media unit that stops receiving media
     */
    stopMediaTo(mediaUnit: VoxMediaUnit): void;
  }
}

declare namespace CCAI {
  /**
   * [CCAI.Agent.updateConversationProfile] method result.
   */
  interface UpdateConversationProfileResult {
    /**
     * Event ID.
     */
    id: string;
    /**
     * Event name — 'AI.Events.CcaiUpdateConversationProfileResponse'.
     */
    name: string;
    /**
     * Dialogflow [response data](https://cloud.google.com/dialogflow/es/docs/reference/rpc/google.cloud.dialogflow.v2beta1#conversationprofile).
     */
    response: Object;
  }
}

declare namespace CCAI {
  namespace Vendor {
    /**
     * Defines the services to connect to the incoming Dialogflow conversations.
     */
    interface ConversationProfile {
      /**
       * The unique identifier of this conversation profile. Format: projects/<Project ID>/conversationProfiles/<Conversation Profile ID>.
       */
      name: string;
      /**
       * Optional. A human-readable name for this profile. Max length is **1024 bytes**.
       */
      display_name?: string;
    }
  }
}

declare namespace CCAI {
  namespace Vendor {
    /**
     * Events allow matching intents by event name instead of the natural language input. For instance, the <event: { name: "welcome_event", parameters: { name: "Sam" } }> input can trigger a personalized welcome response. The parameter `name` may be used by the agent in the response: `"Hello #welcome_event.name! What can I do for you today?"`.
     */
    interface EventInput {
      /**
       * The unique identifier of the event.
       */
      name: string;
      /**
       * The collection of parameters associated with the event.
       * Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs:
       * * MapKey type: string
       * * MapKey value: parameter name
       * * MapValue type:
       * * If parameter's entity type is a composite entity: map
       * * Else: string or number, depending on the parameter value type
       * * MapValue value:
       * * If parameter's entity type is a composite entity: map from composite entity property names to property values
       * * Else: parameter value
       */
      parameters?: { [key: string]: any };
      /**
       * The language of this query. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes. Note that queries in the same session do not necessarily need to have the same language.
       */
      language_code: string;
    }
  }
}

declare namespace CCAI {
  namespace Vendor {
    /**
     * Represents a single side of the conversation.
     */
    interface Participant {
      /**
       * Optional. The unique identifier of this participant. Format: `projects/<Project ID>/conversations/<Conversation ID>/participants/<Participant ID>`.
       */
      name?: string;
      /**
       * Immutable. The role this participant plays in the conversation. This field can only be set during creation.
       */
      role: Role;
      /**
       * Optional. Label applied to streams representing this participant in SIPREC XML metadata and SDP. Use it to assign transcriptions from that media stream to this participant. This field can be updated.
       */
      sip_recording_media_label?: string;
      /**
       * Optional. Obfuscated user id that should be associated with the created participant.
       * <br>
       * You can specify a user id as follows:
       * * If you set this field in `CreateParticipantRequest` or `UpdateParticipantRequest`, Dialogflow adds the obfuscated user id with the participant.
       * * If you set this field in `AnalyzeContent` or `StreamingAnalyzeContent`, Dialogflow updates `Participant.obfuscated_external_user_id`.
       * Dialogflow returns an error if you try to add a user id for a non-`END_USER` participant.
       * Dialogflow uses this user id for billing and measurement purposes. For example, Dialogflow determines whether a user in one conversation returned in a later conversation.
       * <br>
       * NOTE:
       * * Never pass raw user ids to Dialogflow. Always obfuscate your user id first.
       * * Dialogflow only accepts a UTF-8 encoded string, e.g., a hex digest of a hash function like SHA-512.
       * * The length of the user id must be <= 256 characters.
       */
      obfuscated_external_user_id?: string;
      /**
       * Optional. Key-value filters on the metadata of documents returned by article suggestion. If specified, article suggestion only returns suggested documents that match all filters in their **Document.metadata**. Multiple values for a metadata key should be concatenated by a comma. For example, filters to match all documents that have 'US' or 'CA' in their market metadata values and 'agent' in their user metadata values are documents_metadata_filters { key: "market" value: "US,CA" } documents_metadata_filters { key: "user" value: "agent" }.
       */
      documents_metadata_filters?: { [key: string]: string };
    }
  }
}

declare namespace CCAI {
  namespace Vendor {
    /**
     * Enumeration of the roles a participant can play in a conversation.
     */
    enum Role {
      /**
       * Participant role not set.
       */
      ROLE_UNSPECIFIED,
      /**
       * Participant is an automated agent, such as a Dialogflow agent.
       */
      AUTOMATED_AGENT,
      /**
       * Participant is a customer that has called or chatted with Dialogflow services.
       */
      END_USER,
    }
  }
}

declare namespace CCAI {
  namespace Vendor {
    /**
     * Represents a natural language text to be processed.
     */
    interface TextInput {
      /**
       * The UTF-8 encoded natural language text to be processed. Text length must not exceed **256 characters**.
       */
      text: string;
      /**
       * The language of this conversational query. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes. Note that queries in the same session do not necessarily need to have the same language.
       */
      language_codes: string;
      /**
       * Whether to split the text into single sentence text entries at serving time. This provides a way for a user to input email content as text input.
       */
      enable_splitting_text: boolean;
    }
  }
}

declare namespace CCAI {
  namespace Vendor {}
}

/**
 * Custom parameters for [WebSocket] media buffer clearing. Can be passed as arguments to the [WebSocket.clearMediaBuffer] method.
 */
declare interface ClearMediaBufferParameters {
  tag?: string;
}

/**
 * Add the following line to your scenario code to use the enum:
 * ```
 * require(Modules.Conference);
 * ```
 */
declare enum ConferenceDirection {
  /**
   * Provides only outgoing stream from endpoint to conference.
   */
  SEND,
  /**
   * Provides only incoming stream from conference to endpoint.
   */
  RECEIVE,
  /**
   * Provides only outgoing stream from endpoint to conference.
   */
  BOTH,
}

/**
 * Add the following line to your scenario code to use the events:
 * ```
 * require(Modules.Conference);
 * ```
 * @event
 */
declare enum ConferenceEvents {
  /**
   * Triggers in case of errors in the conference.
   * @typedef _ConferenceErrorEvent
   */
  ConferenceError = 'Conference.Error',
  /**
   * Triggered when the conference has started. I.e., the call of [VoxEngine.createConference] triggers the event.
   * @typedef _ConferenceEvent
   */
  Started = 'Conference.Started',
  /**
   * Triggered when the conference is stopped. I.e., the call of [Conference.stop] triggers the event.
   * @typedef _ConferenceStoppedEvent
   */
  Stopped = 'Conference.Stopped',
  /**
   * Triggered when the endpoint is added.
   * @typedef _ConferenceEndpointEvent
   */
  EndpointAdded = 'Conference.EndpointAdded',
  /**
   * Triggered when the endpoint is updated.
   * @typedef _ConferenceEndpointEvent
   */
  EndpointUpdated = 'Conference.EndpointUpdated',
  /**
   * Triggered when the endpoint is removed.
   * @typedef _ConferenceEndpointEvent
   */
  EndpointRemoved = 'Conference.EndpointRemoved',
  /**
   * Triggered when the endpoint is manged.
   * @typedef _ConferenceEndpointEvent
   */
  EndpointManaged = 'Conference.EndpointManaged',
}

/**
 * @private
 */
declare interface _ConferenceEvents {
  [ConferenceEvents.ConferenceError]: _ConferenceErrorEvent;
  [ConferenceEvents.Started]: _ConferenceEvent;
  [ConferenceEvents.Stopped]: _ConferenceStoppedEvent;
  [ConferenceEvents.EndpointAdded]: _ConferenceEndpointAddedEvent;
  [ConferenceEvents.EndpointUpdated]: _ConferenceEndpointUpdatedEvent;
  [ConferenceEvents.EndpointRemoved]: _ConferenceEndpointRemovedEvent;
  [ConferenceEvents.EndpointManaged]: _ConferenceEndpointManagedEvent;
}

/**
 * @private
 */
declare interface _ConferenceEvent {
  /**
   * Conference that triggered the event.
   */
  conference: Conference;
}

/**
 * @private
 */
declare interface _ConferenceEndpointEvent extends _ConferenceEvent {
  /**
   * **MIX** mode combines all streams in one, **FORWARD** mode sends only one stream.
   */
  mode: 'MIX' | 'FORWARD';
  /**
   * **SEND** provides only outgoing stream from endpoint to conference; **RECEIVE** provides only incoming stream from conference to endpoint; **BOTH** allows both incoming and outgoing streams.
   */
  direction: 'SEND' | 'RECEIVE' | 'BOTH';
  /**
   * The unique ID of the endpoint.
   */
  endpointId: string;
  /**
   * The endpoint object.
   */
  endpoint: Endpoint;
}

/**
 * @private
 */
declare interface _ConferenceEndpointAddedEvent extends _ConferenceEndpointEvent {
}

/**
 * @private
 */
declare interface _ConferenceEndpointUpdatedEvent extends _ConferenceEndpointEvent {
}

/**
 * @private
 */
declare interface _ConferenceEndpointRemovedEvent extends _ConferenceEndpointEvent {
}

/**
 * @private
 */
declare interface _ConferenceEndpointManagedEvent extends _ConferenceEndpointEvent {
}

/**
 * @private
 */
declare interface _ConferenceStoppedEvent extends _ConferenceEvent {
}

/**
 * @private
 */
declare interface _ConferenceErrorEvent extends _ConferenceEvent {
  /**
   * Error description.
   */
  error: string;
  /**
   * Error code.
   */
  code: number;
  /**
   * Optional. The id of the endpoint that caused the error.
   */
  endpointId?: string;
}

/**
 * Add the following line to your scenario code to use the enum:
 * ```
 * require(Modules.Conference);
 * ```
 */
declare enum ConferenceMode {
  /**
   * Combine all streams simultaneously.
   */
  MIX,
  /**
   * Send only one stream.
   */
  FORWARD,
}

/**
 * [Conference] parameters. Can be passed as arguments to the [VoxEngine.createConference] method.
 */
declare interface ConferenceParameters {
  /**
   * Whether the audio is high definition. If set to **false** (default), audio stream has the frequency of 8kHz/32kbps. Otherwise, audio stream has the frequency of 48kHz/192kbps. Please note that default audio mode costs nothing while the high definition audio is billed additionally - for more details see the pricing page.
   */
  hd_audio: boolean;
}

/**
 * Represents a conference recorder.
 * <br>
 * Add the following line to your scenario code to use the class:
 * ```
 * require(Modules.Recorder);
 * ```
 */
declare class ConferenceRecorder extends Recorder {
  /**
   * Conference object to record.
   */
  setConference(conference: Conference): void;

  /**
   * Sets an endpoint's priority.
   */
  setPriority(priority: Endpoint[]): Promise<void>;

  /**
   * Gets an endpoint's priority.
   */
  getPriority(): Endpoint[];

  /**
   * Updates the current video recorder parameters.
   */
  update(parameters: UpdateRecorderVideoParameters): void;
}

/**
 * Represents audio or video conference.
 * <br>
 * Add the following line to your scenario code to use the class:
 * ```
 * require(Modules.Conference);
 * ```
 */
declare class Conference {
  /**
   * Adds a handler for the specified [ConferenceEvents] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
   * @param event Event class (i.e., [ConferenceEvents.Started])
   * @param callback Handler function. A single parameter is passed - object with event information
   */
  addEventListener<T extends keyof _ConferenceEvents>(
    event: ConferenceEvents | T,
    callback: (event: _ConferenceEvents[T]) => any
  ): void;

  /**
   * Removes a handler for the specified [ConferenceEvents] event.
   * @param event Event class (i.e., [ConferenceEvents.Started])
   * @param callback Optional. Handler function. If not specified, all handler functions are removed
   */
  removeEventListener<T extends keyof _ConferenceEvents>(
    event: ConferenceEvents | T,
    callback?: (event: _ConferenceEvents[T]) => any
  ): void;

  /**
   * Returns the conference's id.
   */
  id(): string;

  /**
   * Stops the conference. Triggers the [ConferenceEvents.Stopped] event.
   */
  stop(): void;

  /**
   * Gets the endpoint list for current conference.
   */
  getList(): Endpoint[];

  /**
   * Gets the endpoint by the id.
   * @param id Endpoint's id
   */
  get(id: string): Endpoint;

  /**
   * Creates a new [Endpoint] instance and adds it to the specified conference. ***IMPORTANT!*** You can only use this function for a conference with the “video conference” option checked in the routing rule.
   * Otherwise, you receive the [ConferenceEvents.ConferenceError] event with code **102**. The maximum number of endpoints is **100**.
   * @param parameters Endpoint parameters
   */
  add(parameters: EndpointParameters): Endpoint;

  /**
   * Starts sending media (voice and video) from the conference to the media unit.
   * @param mediaUnit Media unit that receives media
   * @param parameters Optional. WebSocket interaction only parameters
   */
  sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

  /**
   * Stops sending media (voice and video) from the conference to the media unit.
   * @param mediaUnit Media unit that does not need to receive media from this conference anymore
   */
  stopMediaTo(mediaUnit: VoxMediaUnit): void;
}

declare namespace Crypto {}

declare namespace Crypto {
  /**
   * Calculates HMAC-SHA256 hash of the specified data.
   * @param key Key for calculation purposes
   * @param data String to calculate hash of
   */
  function hmac_sha256(key: string, data: string): string;
}

declare namespace Crypto {
  /**
   * Calculates MD5 hash. Can be used with HTTP requests that require hash.
   * @param data String to calculate hash of
   */
  function md5(data: string | string[]): string;
}

declare namespace Crypto {
  /**
   * Calculates SHA1 hash. Can be used with HTTP requests that require hash.
   * @param data String to calculate hash of
   */
  function sha1(data: string): string;
}

declare namespace Crypto {
  /**
   * Calculates SHA256 hash of the specified data.
   * @param data String to calculate hash of
   */
  function sha256(data: string): string;
}

declare namespace Deepgram {
  /**
   * Creates a [Deepgram.VoiceAgentClient] instance.
   * @param parameters The [Deepgram.VoiceAgentClient] parameters
   */
  function createVoiceAgentClient(parameters: VoiceAgentClientParameters): Promise<VoiceAgentClient>
}

declare namespace Deepgram {
}
declare namespace Deepgram {
  /**
   * @event
   */
  enum Events {
    /**
     * Triggered when the audio stream sent by a third party through a Deepgram WebSocket is started playing.
     * @typedef _WebSocketMediaStartedDeepgramEvent
     */
    WebSocketMediaStarted = 'Deepgram.Events.WebSocketMediaStarted',
    /**
     * Triggers after the end of the audio stream sent by a third party through a Deepgram WebSocket (**1 second of silence**).
     * @typedef _WebSocketMediaEndedDeepgramEvent
     */
    WebSocketMediaEnded = 'Deepgram.Events.WebSocketMediaEnded',
  }

  /**
   * @private
   */
  interface _Events {
    [Deepgram.Events.WebSocketMediaStarted]: _WebSocketMediaStartedDeepgramEvent;
    [Deepgram.Events.WebSocketMediaEnded]: _WebSocketMediaEndedDeepgramEvent;
  }

  /**
   * @private
   */
  interface _Event {
    /**
     * The [Deepgram.VoiceAgentClient] instance.
     */
    client: VoiceAgentClient;
  }

  /**
   * @private
   */
  interface _WebSocketMediaStartedDeepgramEvent extends _Event, _WebSocketMediaStartedWithoutWebSocketEvent {
  }

  /**
   * @private
   */
  interface _WebSocketMediaEndedDeepgramEvent extends _Event, _WebSocketMediaEndedWithoutWebSocketEvent {
  }
}


declare namespace Deepgram {
  /**
   * @private
   */
  interface _VoiceAgentClientEvents extends _Events, _VoiceAgentEvents {
  }
}
declare namespace Deepgram {
  /**
   * [Deepgram.VoiceAgentClient] parameters. Can be passed as arguments to the [Deepgram.createVoiceAgentClient] method.
   */
  interface VoiceAgentClientParameters extends _VoiceAIClientParameters {
    /**
     * Optional. Deepgram API key.
     */
    apiKey?: string;
    /**
     * Optional. Deepgram access token for authentication. Use it instead of `apiKey` for more secure authentication.
     */
    accessToken?: string;
    /**
     * Optional. [Settings configuration](https://developers.deepgram.com/reference/voice-agent/voice-agent#send.AgentV1Settings) for Deepgram's Voice Agent API.
     */
    settingsOptions?: Object;
  }
}

declare namespace Deepgram {
  class VoiceAgentClient {
    /**
     * Returns the VoiceAgentClient id.
     */
    id(): string;

    /**
     * Returns the VoiceAgent WebSocket id.
     */
    webSocketId(): string;

    /**
     * Closes the VoiceAgent connection (over WebSocket) or connection attempt.
     */
    close(): void;

    /**
     * Starts sending media from the VoiceAgent (via WebSocket) to the media unit. VoiceAgent works in real time.
     * @param mediaUnit Media unit that receives media
     * @param parameters Optional interaction parameters
     */
    sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

    /**
     * Stops sending media from the VoiceAgent (via WebSocket) to the media unit.
     * @param mediaUnit Media unit that stops receiving media
     */
    stopMediaTo(mediaUnit: VoxMediaUnit): void;

    /**
     * Clears the VoiceAgent WebSocket media buffer.
     * @param parameters Optional. Media buffer clearing parameters
     */
    clearMediaBuffer(parameters?: ClearMediaBufferParameters): void;

    /**
     * Adds a handler for the specified [Deepgram.VoiceAgentEvents] or [Deepgram.Events] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event Event class (i.e., [Deepgram.VoiceAgentEvents.SettingsApplied])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof _VoiceAgentClientEvents>(
      event: Events | VoiceAgentEvents | T,
      callback: (event: _VoiceAgentClientEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [Deepgram.VoiceAgentEvents] or [Deepgram.Events] event.
     * @param event Event class (i.e., [Deepgram.VoiceAgentEvents.SettingsApplied])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof _VoiceAgentClientEvents>(
      event: Events | VoiceAgentEvents | T,
      callback?: (event: _VoiceAgentClientEvents[T]) => any,
    ): void;

    /**
     * Send a message to change the Speak model in the middle of a conversation.
     * [https://developers.deepgram.com/reference/voice-agent/voice-agent#send.AgentV1UpdateSpeak](https://developers.deepgram.com/reference/voice-agent/voice-agent#send.AgentV1UpdateSpeak)
     * @param input
     */
    sendUpdateSpeak(input: Object): void

    /**
     * Send a message to update the system prompt of the agent.
     * [https://developers.deepgram.com/reference/voice-agent/voice-agent#send.AgentV1UpdatePrompt](https://developers.deepgram.com/reference/voice-agent/voice-agent#send.AgentV1UpdatePrompt)
     * @param input
     */
    sendUpdatePrompt(input: Object): void

    /**
     * Send a message to immediately trigger an Agent statement.
     * [https://developers.deepgram.com/reference/voice-agent/voice-agent#send.AgentV1InjectAgentMessage](https://developers.deepgram.com/reference/voice-agent/voice-agent#send.AgentV1InjectAgentMessage)
     * @param input
     */
    sendInjectAgentMessage(input: Object): void

    /**
     * Send a text based message to the agent.
     * [https://developers.deepgram.com/reference/voice-agent/voice-agent#send.AgentV1InjectUserMessage](https://developers.deepgram.com/reference/voice-agent/voice-agent#send.AgentV1InjectUserMessage)
     * @param input
     */
    sendInjectUserMessage(input: Object): void

    /**
     * Send a message to provide a function call response in the middle of a conversation.
     * [https://developers.deepgram.com/reference/voice-agent/voice-agent#send.AgentV1SendFunctionCallResponse](https://developers.deepgram.com/reference/voice-agent/voice-agent#send.AgentV1SendFunctionCallResponse)
     * @param input
     */
    sendFunctionCallResponse(input: Object): void
  }
}

declare namespace Deepgram {
  /**
   * @event
   */
  enum VoiceAgentEvents {
    /**
     * The unknown event.
     * @typedef _VoiceAgentEvent
     */
    Unknown = 'Deepgram.VoiceAgent.Unknown',

    /**
     * The HTTP response event.
     * @typedef _AgentsEvent
     */
    HTTPResponse = 'ElevenLabs.Agents.HTTPResponse',

    /**
     * Receive a welcome message from the server to confirm the websocket has opened. [https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1Welcome](https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1Welcome)
     * @typedef _VoiceAgentEvent
     */
    Welcome = 'Deepgram.VoiceAgent.Welcome',

    /**
     * Confirms the server has successfully received and applied the Settings message. [https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1SettingsApplied](https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1SettingsApplied)
     * @typedef _VoiceAgentEvent
     */
    SettingsApplied = 'Deepgram.VoiceAgent.SettingsApplied',

    /**
     * Facilitates real-time communication by relaying spoken statements from both the user and the agent. [https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1ConversationText](https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1ConversationText)
     * @typedef _VoiceAgentEvent
     */
    ConversationText = 'Deepgram.VoiceAgent.ConversationText',

    /**
     * Notifies the client that the user has begun speaking. [https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1UserStartedSpeaking](https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1UserStartedSpeaking)
     * @typedef _VoiceAgentEvent
     */
    UserStartedSpeaking = 'Deepgram.VoiceAgent.UserStartedSpeaking',

    /**
     * Informs the client when the agent is processing information. [https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1AgentThinking](https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1AgentThinking)
     * @typedef _VoiceAgentEvent
     */
    AgentThinking = 'Deepgram.VoiceAgent.AgentThinking',

    /**
     * Server-initiated message requesting a function call, to be handled by either client or server. [https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1FunctionCallRequest](https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1FunctionCallRequest)
     * @typedef _VoiceAgentEvent
     */
    FunctionCallRequest = 'Deepgram.VoiceAgent.FunctionCallRequest',

    /**
     * Message containing the result of a function call, sent by client or server. [https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1ReceiveFunctionCallResponse](https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1ReceiveFunctionCallResponse)
     * @typedef _VoiceAgentEvent
     */
    FunctionCallResponse = 'Deepgram.VoiceAgent.FunctionCallResponse',

    /**
     * Confirms that a Prompt Configuration change has been applied. [https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1PromptUpdated](https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1PromptUpdated)
     * @typedef _VoiceAgentEvent
     */
    PromptUpdated = 'Deepgram.VoiceAgent.PromptUpdated',

    /**
     * Confirms that a Speak Configuration change has been applied. [https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1SpeakUpdated](https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1SpeakUpdated)
     * @typedef _VoiceAgentEvent
     */
    SpeakUpdated = 'Deepgram.VoiceAgent.SpeakUpdated',

    /**
     * Get signals that the server has finished sending the final audio segment to the client. [https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1AgentAudioDone](https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1AgentAudioDone)
     * @typedef _VoiceAgentEvent
     */
    AgentAudioDone = 'Deepgram.VoiceAgent.AgentAudioDone',

    /**
     * Receive errors from the server if an issue has occurred. [https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1Error](https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1Error)
     * @typedef _VoiceAgentEvent
     */
    Error = 'Deepgram.VoiceAgent.Error',

    /**
     * Receive warnings from the server if an issue has occurred. [https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1Warning](https://developers.deepgram.com/reference/voice-agent/voice-agent#receive.AgentV1Warning)
     * @typedef _VoiceAgentEvent
     */
    Warning = 'Deepgram.VoiceAgent.Warning',

    /**
     * Provide conversation and function call history when starting a new Voice Agent session. [https://developers.deepgram.com/docs/voice-agent-history](https://developers.deepgram.com/docs/voice-agent-history)
     * @typedef _VoiceAgentEvent
     */
    History = 'Deepgram.VoiceAgent.History',

    /**
     * The WebSocket error response event.
     * @typedef _AgentsEvent
     */
    WebSocketError = 'Deepgram.VoiceAgent.WebSocketError',

    /**
     * Contains information about connector.
     * @typedef _VoiceAgentEvent
     */
    ConnectorInformation = 'Deepgram.VoiceAgent.ConnectorInformation',
  }

  /**
   * @private
   */
  interface _VoiceAgentEvents {
    [VoiceAgentEvents.Unknown]: _VoiceAgentEvent;
    [VoiceAgentEvents.HTTPResponse]: _VoiceAgentEvent;
    [VoiceAgentEvents.Welcome]: _VoiceAgentEvent;
    [VoiceAgentEvents.SettingsApplied]: _VoiceAgentEvent;
    [VoiceAgentEvents.ConversationText]: _VoiceAgentEvent;
    [VoiceAgentEvents.UserStartedSpeaking]: _VoiceAgentEvent;
    [VoiceAgentEvents.AgentThinking]: _VoiceAgentEvent;
    [VoiceAgentEvents.FunctionCallRequest]: _VoiceAgentEvent;
    [VoiceAgentEvents.FunctionCallResponse]: _VoiceAgentEvent;
    [VoiceAgentEvents.PromptUpdated]: _VoiceAgentEvent;
    [VoiceAgentEvents.SpeakUpdated]: _VoiceAgentEvent;
    [VoiceAgentEvents.AgentAudioDone]: _VoiceAgentEvent;
    [VoiceAgentEvents.Error]: _VoiceAgentEvent;
    [VoiceAgentEvents.Warning]: _VoiceAgentEvent;
    [VoiceAgentEvents.History]: _VoiceAgentEvent;
    [VoiceAgentEvents.WebSocketError]: _VoiceAgentEvent;
    [VoiceAgentEvents.ConnectorInformation]: _VoiceAgentEvent;
  }

  /**
   * @private
   */
  interface _VoiceAgentEvent {
    /**
     * The [Deepgram.VoiceAgentClient] instance.
     */
    client: VoiceAgentClient;
    /**
     * The event's data.
     */
    data?: Object;
  }
}


/**
 * See the [Dialogflow ES language table](https://cloud.google.com/dialogflow/es/docs/reference/language#table) for reference.  
 * 
 * Add the following line to your scenario code to use the enum:
 * ```
 * require(Modules.AI);
 * ```
 */
declare enum DialogflowLanguage {
  /**
   * Afrikaans.
   */
  AF = 'af',
  /**
   * Albanian.
   */
  SQ = 'sq',
  /**
   * Amharic.
   */
  AM = 'am',
  /**
   * Armenian.
   */
  HY = 'hy',
  /**
   * Azerbaijani.
   */
  AZ = 'az',
  /**
   * Basque.
   */
  EU = 'eu',
  /**
   * Belarusian.
   */
  BE = 'be',
  /**
   * Bangla.
   */
  BN = 'bn',
  /**
   * Bangla (Bangladesh).
   */
  BN_BD = 'bn-bd',
  /**
   * Bangla (India).
   */
  BN_IN = 'bn-in',
  /**
   * Bosnian.
   */
  BS = 'bs',
  /**
   * Bulgarian.
   */
  BG = 'bg',
  /**
   * Catalan.
   */
  CA = 'ca',
  /**
   * Cebuano.
   */
  CEB = 'ceb',
  /**
   * Nyanja.
   */
  NY = 'ny',
  /**
   * Chinese (Hong Kong SAR China).
   */
  ZH_HK = 'zh-hk',
  /**
   * Chinese (China).
   */
  ZH_CN = 'zh-cn',
  /**
   * Chinese (Taiwan).
   */
  ZH_TW = 'zh-tw',
  /**
   * Corsican.
   */
  CO = 'co',
  /**
   * Croatian.
   */
  HR = 'hr',
  /**
   * Czech.
   */
  CS = 'cs',
  /**
   * Danish.
   */
  DA = 'da',
  /**
   * Dutch.
   */
  NL = 'nl',
  /**
   * English.
   */
  EN = 'en',
  /**
   * Australian English.
   */
  EN_AU = 'en-au',
  /**
   * Canadian English.
   */
  EN_CA = 'en-ca',
  /**
   * British English.
   */
  EN_GB = 'en-gb',
  /**
   * English (India).
   */
  EN_IN = 'en-in',
  /**
   * American English.
   */
  EN_US = 'en-us',
  /**
   * Esperanto.
   */
  EO = 'eo',
  /**
   * Estonian.
   */
  ET = 'et',
  /**
   * Filipino.
   */
  FIL = 'fil',
  /**
   * Filipino (Philippines).
   */
  FIL_PH = 'fil-ph',
  /**
   * Finnish.
   */
  FI = 'fi',
  /**
   * French.
   */
  FR = 'fr',
  /**
   * Canadian French.
   */
  FR_CA = 'fr-ca',
  /**
   * French (France).
   */
  FR_FR = 'fr-fr',
  /**
   * Western Frisian.
   */
  FY = 'fy',
  /**
   * Galician.
   */
  GL = 'gl',
  /**
   * Georgian.
   */
  KA = 'ka',
  /**
   * German.
   */
  DE = 'de',
  /**
   * Greek.
   */
  EL = 'el',
  /**
   * Gujarati.
   */
  GU = 'gu',
  /**
   * Haitian Creole.
   */
  HT = 'ht',
  /**
   * Hausa.
   */
  HA = 'ha',
  /**
   * Hindi.
   */
  HI = 'hi',
  /**
   * Hmong.
   */
  HMN = 'hmn',
  /**
   * Hungarian.
   */
  HU = 'hu',
  /**
   * Icelandic.
   */
  IS = 'is',
  /**
   * Igbo.
   */
  IG = 'ig',
  /**
   * Indonesian.
   */
  ID = 'id',
  /**
   * Irish.
   */
  GA = 'ga',
  /**
   * Italian.
   */
  IT = 'it',
  /**
   * Japanese.
   */
  JA = 'ja',
  /**
   * Javanese.
   */
  JV = 'jv',
  /**
   * Kannada.
   */
  KN = 'kn',
  /**
   * Kazakh.
   */
  KK = 'kk',
  /**
   * Khmer.
   */
  KM = 'km',
  /**
   * Kinyarwanda.
   */
  RW = 'rw',
  /**
   * Korean.
   */
  KO = 'ko',
  /**
   * Kurdish.
   */
  KU = 'ku',
  /**
   * Kyrgyz.
   */
  KY = 'ky',
  /**
   * Latin.
   */
  LA = 'la',
  /**
   * Latvian.
   */
  LV = 'lv',
  /**
   * Lithuanian.
   */
  LT = 'lt',
  /**
   * Luxembourgish.
   */
  LB = 'lb',
  /**
   * Macedonian.
   */
  MK = 'mk',
  /**
   * Malagasy.
   */
  MG = 'mg',
  /**
   * Malay.
   */
  MS = 'ms',
  /**
   * Malay (Malaysia).
   */
  MS_MY = 'ms-my',
  /**
   * Malayalam.
   */
  ML = 'ml',
  /**
   * Maltese.
   */
  MT = 'mt',
  /**
   * Māori.
   */
  MI = 'mi',
  /**
   * Marathi.
   */
  MR = 'mr',
  /**
   * Marathi (India).
   */
  MR_IN = 'mr-in',
  /**
   * Mongolian.
   */
  MN = 'mn',
  /**
   * Nepali.
   */
  NE = 'ne',
  /**
   * Norwegian.
   */
  NO = 'no',
  /**
   * Odia.
   */
  OR = 'or',
  /**
   * Polish.
   */
  PL = 'pl',
  /**
   * Brazilian Portuguese.
   */
  PT_BR = 'pt-br',
  /**
   * Portuguese.
   */
  PT = 'pt',
  /**
   * Punjabi.
   */
  PA = 'pa',
  /**
   * Romanian.
   */
  RO = 'ro',
  /**
   * Romanian (Romania).
   */
  RO_RO = 'ro-ro',
  /**
   * Russian.
   */
  RU = 'ru',
  /**
   * Samoan.
   */
  SM = 'sm',
  /**
   * Scottish Gaelic.
   */
  GD = 'gd',
  /**
   * Serbian.
   */
  SR = 'sr',
  /**
   * Southern Sotho.
   */
  ST = 'st',
  /**
   * Shona.
   */
  SN = 'sn',
  /**
   * Sinhala.
   */
  SI = 'si',
  /**
   * Sinhala (Sri Lanka).
   */
  SI_LK = 'si-lk',
  /**
   * Slovak.
   */
  SK = 'sk',
  /**
   * Slovenian.
   */
  SL = 'sl',
  /**
   * Somali.
   */
  SO = 'so',
  /**
   * Spanish.
   */
  ES = 'es',
  /**
   * Latin American Spanish.
   */
  ES_419 = 'es-419',
  /**
   * European Spanish.
   */
  ES_ES = 'es-es',
  /**
   * Sundanese.
   */
  SU = 'su',
  /**
   * Swahili.
   */
  SW = 'sw',
  /**
   * Swedish.
   */
  SV = 'sv',
  /**
   * Tajik.
   */
  TG = 'tg',
  /**
   * Tamil.
   */
  TA = 'ta',
  /**
   * Tamil (India).
   */
  TA_IN = 'ta-in',
  /**
   * Tamil (Sri Lanka).
   */
  TA_LK = 'ta-lk',
  /**
   * Tamil (Malaysia).
   */
  TA_MY = 'ta-my',
  /**
   * Tamil (Singapore).
   */
  TA_SG = 'ta-sg',
  /**
   * Tatar.
   */
  TT = 'tt',
  /**
   * Telugu.
   */
  TE = 'te',
  /**
   * Telugu (India).
   */
  TE_IN = 'te-in',
  /**
   * Thai.
   */
  TH = 'th',
  /**
   * Turkish.
   */
  TR = 'tr',
  /**
   * Turkmen.
   */
  TK = 'tk',
  /**
   * Ukrainian.
   */
  UK = 'uk',
  /**
   * Uzbek.
   */
  UZ = 'uz',
  /**
   * Vietnamese.
   */
  VI = 'vi',
  /**
   * Vietnamese (Vietnam).
   */
  VI_VN = 'vi-vn',
  /**
   * Welsh.
   */
  CY = 'cy',
  /**
   * Xhosa.
   */
  XH = 'xh',
  /**
   * Yoruba.
   */
  YO = 'yo',
  /**
   * Zulu.
   */
  ZU = 'zu',
}

/**
 * Add the following line to your scenario code to use the enum:
 * ```
 * require(Modules.AI);
 * ```
 */
declare enum DialogflowModelVariant {
  /**
   * No model variant specified. In this case Dialogflow defaults to USE_BEST_AVAILABLE.
   * @const
   */
  SPEECH_MODEL_VARIANT_UNSPECIFIED = 'SPEECH_MODEL_VARIANT_UNSPECIFIED',
  /**
   * Use the best available variant of the Speech model that the caller is eligible for.
   * Please see the Dialogflow docs for how to make your project eligible for enhanced models.
   * @const
   */
  USE_BEST_AVAILABLE = 'USE_BEST_AVAILABLE',
  /**
   * Use standard model variant even if an enhanced model is available. See the Cloud Speech documentation for details about enhanced models.
   * @const
   */
  USE_STANDARD = 'USE_STANDARD',
  /**
   * Use an enhanced model variant:
   *  - If an enhanced variant does not exist for the given model and request language, Dialogflow falls back to the standard variant.
   *  The Cloud Speech documentation describes which models have enhanced variants.
   *  - If the API caller is not eligible for enhanced models, Dialogflow returns an error. Please see the Dialogflow docs for how to make your project eligible.
   * @const
   */
  USE_ENHANCED = 'USE_ENHANCED',
}

/**
 * Add the following line to your scenario code to use the enum:
 * ```
 * require(Modules.AI);
 * ```
 */
declare enum DialogflowModel {
  /**
   * Use this model for transcribing audio in video clips or ones that includes multiple speakers. For best results, provide audio recorded at 16,000Hz or greater sampling rate.<br>NOTE: this is a premium model that costs more than the standard rate.
   */
  VIDEO = 'video',
  /**
   * Use this model for transcribing audio from a phone call. Typically, phone audio is recorded at 8,000Hz sampling rate.<br>NOTE: the enhanced phone model is a premium model that costs more than the standard rate.
   */
  PHONE_CALL = 'phone_call',
  /**
   * Use this model for transcribing shorter audio clips. Some examples include voice commands or voice search.
   */
  COMMAND_AND_SEARCH = 'command_and_search',
  /**
   * Use this model if your audio does not fit one of the previously described models. For example, you can use this for long-form audio recordings that feature a single speaker only. Ideally, the audio is high-fidelity, recorded at 16,000Hz or greater sampling rate.
   */
  DEFAULT = 'default',
}

/**
 * Add the following line to your scenario code to use the enum:
 * ```
 * require(Modules.AI);
 * ```
 */
declare enum DialogflowSsmlVoiceGender {
  /**
   * An unspecified gender, which means that the customer does not care which gender the selected voice has.
   */
  UNSPECIFIED = 'SSML_VOICE_GENDER_UNSPECIFIED',
  /**
   * A male voice.
   */
  MALE = 'SSML_VOICE_GENDER_MALE',
  /**
   * A female voice.
   */
  FEMALE = 'SSML_VOICE_GENDER_FEMALE',
  /**
   * A gender-neutral voice.
   */
  NEUTRAL = 'SSML_VOICE_GENDER_NEUTRAL',
}

/**
 * The DTMF type.
 */
declare enum DTMFType {
  /**
   * All types of DTMF tones trigger the [CallEvents.ToneReceived] event: in-band , RFC 2833 and SIP INFO. Receiving an RFC 2833 tone disables processing of in-band tones to avoid duplicating
   */
  ALL = 0,
  /**
   * Only RFC 2833 DTMF tones trigger the [CallEvents.ToneReceived] event
   */
  TELEPHONE_EVENT = 1,
  /**
   * Only in-band DTMF tones trigger the [CallEvents.ToneReceived] event
   */
  IN_BAND = 2,
  /**
   * Only SIP INFO DTMF tones trigger the [CallEvents.ToneReceived] event
   */
  SIP_INFO = 3,
}

declare namespace ElevenLabs {
  /**
   * @private
   */
  interface _AgentsClientEvents extends _Events, _AgentsEvents {
  }
}
declare namespace ElevenLabs {
  /**
   * [ElevenLabs.AgentsClient] parameters. Can be passed as arguments to the [ElevenLabs.createAgentsClient] method.
   */
  interface AgentsClientParameters extends _VoiceAIClientParameters {
    /**
     * The API key for the ElevenLabs Agents.
     */
    xiApiKey: string;
    /**
     * The unique identifier for the voice to use in the TTS process.
     */
    agentId: string;
    /**
     * Optional. Whether to include a [conversation_id](https://elevenlabs.io/docs/api-reference/conversations/get-signed-url#request.query.include_conversation_id.include_conversation_id) with the response. If included, the conversation_signature cannot be used again. The default value is **false**.
     */
    includeConversationId?: boolean;
  }
}
  
declare namespace ElevenLabs {
  class AgentsClient {
    /**
     * Returns the AgentsClient id.
     */
    id(): string;

    /**
     * Returns the ElevenLabs WebSocket id.
     */
    webSocketId(): string;

    /**
     * Closes the ElevenLabs connection (over WebSocket) or connection attempt.
     */
    close(): void;

    /**
     * Starts sending media from the ElevenLabs (via WebSocket) to the media unit. ElevenLabs works in real time.
     * @param mediaUnit Media unit that receives media
     * @param parameters Optional interaction parameters
     */
    sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

    /**
     * Stops sending media from the ElevenLabs (via WebSocket) to the media unit.
     * @param mediaUnit Media unit that stops receiving media
     */
    stopMediaTo(mediaUnit: VoxMediaUnit): void;

    /**
     * Clears the ElevenLabs WebSocket media buffer.
     * @param parameters Optional. Media buffer clearing parameters
     */
    clearMediaBuffer(parameters?: ClearMediaBufferParameters): void;

    /**
     * Adds a handler for the specified [ElevenLabs.AgentsEvents] or [ElevenLabs.Events] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event Event class (i.e., [ElevenLabs.AgentsEvents.UserTranscript])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof ElevenLabs._AgentsClientEvents>(
      event: ElevenLabs.Events | ElevenLabs.AgentsEvents | T,
      callback: (event: ElevenLabs._AgentsClientEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [ElevenLabs.AgentsEvents] or [ElevenLabs.Events] event.
     * @param event Event class (i.e., [ElevenLabs.AgentsEvents.UserTranscript])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof ElevenLabs._AgentsClientEvents>(
      event: ElevenLabs.Events | ElevenLabs.AgentsEvents | T,
      callback?: (event: ElevenLabs._AgentsClientEvents[T]) => any,
    ): void;

    /**
     * Defines what can be customized when starting a conversation. [https://elevenlabs.io/docs/agents-platform/api-reference/agents-platform/websocket#send.Conversation-Initiation-Client-Data](https://elevenlabs.io/docs/agents-platform/api-reference/agents-platform/websocket#send.Conversation-Initiation-Client-Data)
     * @param parameters
     */
    conversationInitiationClientData(parameters: Object): void
    /**
     * Result of the client tool call. [https://elevenlabs.io/docs/agents-platform/api-reference/agents-platform/websocket#send.Client-Tool-Result](https://elevenlabs.io/docs/agents-platform/api-reference/agents-platform/websocket#send.Client-Tool-Result)
     * @param parameters
     */
    clientToolResult(parameters: Object): void
    /**
     * Allows to send non-interrupting background information to the conversation. [https://elevenlabs.io/docs/agents-platform/api-reference/agents-platform/websocket#send.Contextual-Update](https://elevenlabs.io/docs/agents-platform/api-reference/agents-platform/websocket#send.Contextual-Update)
     * @param parameters
     */
    contextualUpdate(parameters: Object): void

    /**
     * Allows to send user text messages to the conversation. [https://elevenlabs.io/docs/agents-platform/customization/events/client-to-server-events#user-messages](https://elevenlabs.io/docs/agents-platform/customization/events/client-to-server-events#user-messages)
     * @param parameters
     */
    userMessage(parameters: Object): void
  }
}
  
declare namespace ElevenLabs {
  /**
   * @event
   */
  enum AgentsEvents {
    /**
     * The unknown event.
     * @typedef _AgentsEvent
     */
    Unknown = 'ElevenLabs.Agents.Unknown',

    /**
     * The HTTP response event.
     * @typedef _AgentsEvent
     */
    HTTPResponse = 'ElevenLabs.Agents.HTTPResponse',

    /**
     * Automatically sent when starting a conversation. Initializes conversation settings and parameters. [https://elevenlabs.io/docs/agents-platform/customization/events/client-events#conversation_initiation_metadata](https://elevenlabs.io/docs/agents-platform/customization/events/client-events#conversation_initiation_metadata)
     * @typedef _AgentsEvent
     */
    ConversationInitiationMetadata = 'ElevenLabs.Agents.ConversationInitiationMetadata',

    /**
     * Health check event requiring immediate response. Used to maintain WebSocket connection. [https://elevenlabs.io/docs/agents-platform/customization/events/client-events#ping](https://elevenlabs.io/docs/agents-platform/customization/events/client-events#ping)
     * @typedef _AgentsEvent
     */
    Ping = 'ElevenLabs.Agents.Ping',


    /**
     * Contains finalized speech-to-text results. Represents complete user utterances. Used for conversation history. [https://elevenlabs.io/docs/agents-platform/customization/events/client-events#user_transcript](https://elevenlabs.io/docs/agents-platform/customization/events/client-events#user_transcript)
     * @typedef _AgentsEvent
     */
    UserTranscript = 'ElevenLabs.Agents.UserTranscript',

    /**
     * Contains complete agent message. Sent with first audio chunk. Used for display and history. [https://elevenlabs.io/docs/agents-platform/customization/events/client-events#agent_response](https://elevenlabs.io/docs/agents-platform/customization/events/client-events#agent_response)
     * @typedef _AgentsEvent
     */
    AgentResponse = 'ElevenLabs.Agents.AgentResponse',

    /**
     * Contains truncated response after interruption. Updates displayed message. Maintains conversation accuracy. [https://elevenlabs.io/docs/agents-platform/customization/events/client-events#agent_response_correction](https://elevenlabs.io/docs/agents-platform/customization/events/client-events#agent_response_correction)
     * @typedef _AgentsEvent
     */
    AgentResponseCorrection = 'ElevenLabs.Agents.AgentResponseCorrection',

    /**
     * Contains event id of interrupted event. [https://elevenlabs.io/docs/agents-platform/api-reference/agents-platform/websocket#receive.Interruption](https://elevenlabs.io/docs/agents-platform/api-reference/agents-platform/websocket#receive.Interruption)
     * @typedef _AgentsEvent
     */
    Interruption = 'ElevenLabs.Agents.Interruption',

    /**
     * Contains contextual information to be added to the conversation state. [https://elevenlabs.io/docs/agents-platform/api-reference/agents-platform/websocket#receive.Contextual-Update](https://elevenlabs.io/docs/agents-platform/api-reference/agents-platform/websocket#receive.Contextual-Update)
     * @typedef _AgentsEvent
     */
    ContextualUpdate = 'ElevenLabs.Agents.ContextualUpdate',

    /**
     * Represents a function call the agent wants the client to execute. Contains tool name, tool call ID, and parameters. Requires client-side execution of the function and sending the result back to the server. [https://elevenlabs.io/docs/agents-platform/customization/events/client-events#client_tool_call](https://elevenlabs.io/docs/agents-platform/customization/events/client-events#client_tool_call)
     * @typedef _AgentsEvent
     */
    ClientToolCall = 'ElevenLabs.Agents.ClientToolCall',

    /**
     * Voice Activity Detection score event. Indicates the probability that the user is speaking. Values range from 0 to 1, where higher values indicate higher confidence of speech. [https://elevenlabs.io/docs/agents-platform/customization/events/client-events#vad_score](https://elevenlabs.io/docs/agents-platform/customization/events/client-events#vad_score)
     * @typedef _AgentsEvent
     */
    VadScore = 'ElevenLabs.Agents.VadScore',

    /**
     * Contains preliminary text from the agent. [https://elevenlabs.io/docs/agents-platform/api-reference/agents-platform/websocket#receive.Internal-Tentative-Agent-Response](https://elevenlabs.io/docs/agents-platform/api-reference/agents-platform/websocket#receive.Internal-Tentative-Agent-Response)
     * @typedef _AgentsEvent
     */
    InternalTentativeAgentResponse = 'ElevenLabs.Agents.InternalTentativeAgentResponse',

    /**
     * The WebSocket error response event.
     * @typedef _AgentsEvent
     */
    WebSocketError = 'ElevenLabs.Agents.WebSocketError',

     /**
     * Contains information about connector.
     * @typedef _AgentsEvent
     */
    ConnectorInformation = 'ElevenLabs.Agents.ConnectorInformation',

    /**
     * Indicates when the agent has executed a tool function. Contains tool metadata and execution status. Provides visibility into agent tool usage during conversations. [https://elevenlabs.io/docs/agents-platform/customization/events/client-events#agent_tool_response](https://elevenlabs.io/docs/agents-platform/customization/events/client-events#agent_tool_response)
     * @typedef _AgentsEvent
     */
    AgentToolResponse = 'ElevenLabs.Agents.AgentToolResponse',
  }

  /**
   * @private
   */
  interface _AgentsEvents {
    [AgentsEvents.Unknown]: _AgentsEvent;
    [AgentsEvents.HTTPResponse]: _AgentsEvent;
    [AgentsEvents.ConversationInitiationMetadata]: _AgentsEvent;
    [AgentsEvents.Ping]: _AgentsEvent;
    [AgentsEvents.UserTranscript]: _AgentsEvent;
    [AgentsEvents.AgentResponse]: _AgentsEvent;
    [AgentsEvents.AgentResponseCorrection]: _AgentsEvent;
    [AgentsEvents.Interruption]: _AgentsEvent;
    [AgentsEvents.ClientToolCall]: _AgentsEvent;
    [AgentsEvents.ContextualUpdate]: _AgentsEvent;
    [AgentsEvents.VadScore]: _AgentsEvent;
    [AgentsEvents.InternalTentativeAgentResponse]: _AgentsEvent;
    [AgentsEvents.WebSocketError]: _AgentsEvent;
    [AgentsEvents.ConnectorInformation]: _AgentsEvent;
    [AgentsEvents.AgentToolResponse]: _AgentsEvent;
  }

  /**
   * @private
   */
  interface _AgentsEvent {
    /**
     * The [ElevenLabs.AgentsClient] instance.
     */
    client: AgentsClient;
    /**
     * The event's data.
     */
    data?: Object;
  }
}
  
  
declare namespace ElevenLabs {
    /**
     * Creates a new [ElevenLabs.AgentsClient] instance.
     * @param parameters The [ElevenLabs.AgentsClient] parameters
     */
    function createAgentsClient(parameters: AgentsClientParameters): Promise<ElevenLabs.AgentsClient>
}
declare namespace ElevenLabs {
    /**
     * Creates a new [ElevenLabs.RealtimeTTSPlayer] instance with the specified text (TTS is used to play the text). You can attach media streams later via the [ElevenLabs.RealtimeTTSPlayer.sendMediaTo] or [VoxEngine.sendMediaBetween] methods.
     * <br>
     * NOTE: this method uses 11labs [initializeConnection](https://elevenlabs.io/docs/api-reference/text-to-speech/v-1-text-to-speech-voice-id-stream-input#send.initializeConnection) method internally.
     * @param text Text to synthesize
     * @param parameters Optional. Realtime TTS player parameters
     **/
    function createRealtimeTTSPlayer(text: string, parameters?: RealtimeTTSPlayerParameters): RealtimeTTSPlayer;
}

declare namespace ElevenLabs {
}
declare namespace ElevenLabs {
  /**
   * @event
   */
  enum Events {
    /**
     * Triggered when the audio stream sent by a third party through an ElevenLabs WebSocket is started playing.
     * @typedef _WebSocketMediaStartedElevenLabsEvent
     */
    WebSocketMediaStarted = 'ElevenLabs.Events.WebSocketMediaStarted',
    /**
     * Triggers after the end of the audio stream sent by a third party through an ElevenLabs WebSocket (**1 second of silence**).
     * @typedef _WebSocketMediaEndedElevenLabsEvent
     */
    WebSocketMediaEnded = 'ElevenLabs.Events.WebSocketMediaEnded',
  }

  /**
   * @private
   */
  interface _Events {
    [ElevenLabs.Events.WebSocketMediaStarted]: _WebSocketMediaStartedElevenLabsEvent;
    [ElevenLabs.Events.WebSocketMediaEnded]: _WebSocketMediaEndedElevenLabsEvent;
  }

  /**
   * @private
   */
  interface _Event {
    /**
     * The [ElevenLabs.AgentsClient] instance.
     */
    client: AgentsClient;
  }

  /**
   * @private
   */
  interface _WebSocketMediaStartedElevenLabsEvent extends _Event, _WebSocketMediaStartedWithoutWebSocketEvent {
  }

  /**
   * @private
   */
  interface _WebSocketMediaEndedElevenLabsEvent extends _Event, _WebSocketMediaEndedWithoutWebSocketEvent {
  }
}
declare namespace ElevenLabs {
  class RealtimeTTSPlayer extends BasePlayer {
    /**
     * Append text to a [ElevenLabs.RealtimeTTSPlayer].
     * 
     * The [PlayerEvents.PlaybackFinished] event is triggered only if this method is called.
     * @param text A text string to append
     * @param endOfTurn Whether to force audio generation. Set this value to true when you have finished sending text, but want to keep the websocket connection open<br><br>This is useful when you want to ensure that the last chunk of audio is generated even when the length of text sent is smaller than the value set in chunk_length_schedule (e.g. 120 or 50)
     * @deprecated Use [RealtimeTTSPlayer.sendText] instead
     */
    append(text: string, endOfTurn?: boolean): void;

    /**
     * Append text to a [ElevenLabs.RealtimeTTSPlayer].
     * @param parameters Object provides the parameters directly to the ElevenLabs provider sendText method. Find more information in the [documentation](https://elevenlabs.io/docs/api-reference/text-to-speech/v-1-text-to-speech-voice-id-stream-input#send.sendText).
     */
    sendText(parameters: Object): void;

    /**
     * Clear a [ElevenLabs.RealtimeTTSPlayer] buffer.
     */
    clearBuffer(): void;
  }
}

declare namespace ElevenLabs {
  /**
   * The [ElevenLabs.RealtimeTTSPlayerParameters] header. Can be passed via the [ElevenLabs.RealtimeTTSPlayerParameters.headers] parameter.
   */
  interface RealtimeTTSPlayerHeader {
    /**
     * HTTP request header to use your own ElevenLabs API key. See the [ElevenLabs documentation](https://elevenlabs.io/docs/api-reference/text-to-speech/v-1-text-to-speech-voice-id-stream-input#send.Initialize%20Connection.xi-api-key) for more details.
     */
    name: 'xi-api-key';
    /**
     * HTTP request header value.
     */
    value: string;
  }
}

declare namespace ElevenLabs {
  /**
   * [ElevenLabs.RealtimeTTSPlayer] parameters. Can be passed as arguments to the [ElevenLabs.createRealtimeTTSPlayer] method.
   */
  interface RealtimeTTSPlayerParameters extends _WebSocketBasedClientParameters {
    /**
     * Optional. Provide the parameters directly to the ElevenLabs provider. Find more information in the <a href="https://elevenlabs.io/docs/api-reference/text-to-speech/v-1-text-to-speech-voice-id-stream-input#request.path"> documentation</a>.
     */
    pathParameters?: Object;
    /**
     * Provide the parameters directly to the ElevenLabs provider. Find more information in the <a href="https://elevenlabs.io/docs/api-reference/text-to-speech/v-1-text-to-speech-voice-id-stream-input#request.query"> documentation</a>.
     */
    queryParameters: Object;
    /**
     * Optional. HTTP request headers.
     */
    headers?: RealtimeTTSPlayerHeader[];
    /**
     * Optional. Whether to keep the connection alive after the timeout. The default value is **true**.
     */
    keepAlive?: boolean;
    /**
     * Optional. Provide the parameters directly to the 'initializeConnection' method of ElevenLabs provider. Find more information in the <a href="https://elevenlabs.io/docs/api-reference/text-to-speech/v-1-text-to-speech-voice-id-stream-input#send.initializeConnection"> documentation</a>.
     * <br>
     * NOTE: you should not pass the **text**, **xi-api-key** and **authorization** fields.
     */
    initializeConnectionParameters?: Object;
  }
}

/**
 * [Endpoint] parameters. Can be passed as arguments to the [Conference.add] method.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.Conference);
 * ```
 */
declare interface EndpointParameters {
  /**
   * [Call] to be connected to the conference.
   */
  call: Call;
  /**
   * **MIX** mode combines all streams into one, **FORWARD** mode sends only one stream.
   */
  mode: 'MIX' | 'FORWARD';
  /**
   * **SEND** provides only outgoing stream from endpoint to conference, **RECEIVE** provides only incoming stream from conference to endpoint, **BOTH** allows both incoming and outgoing streams.
   */
  direction: 'SEND' | 'RECEIVE' | 'BOTH';
  /**
   * Internal information about codecs.
   */
  scheme: any;
  /**
   * Human-readable endpoint's name.
   */
  displayName: string;
  /**
   * Optional. Endpoints and their streams (audio and/or video) to receive. These settings apply to the target endpoint right after adding it to a conference.
   * @beta
   */
  receiveParameters?: ReceiveParameters;
  /**
   * Maximum endpoint's video bitrate in kbps.
   */
  maxVideoBitrate: number;
}

/**
 * Represents any remote media unit in a session. An endpoint can be represented as [ASR], [Recorder], [Player] or another [Call].
 * <br>
 * Add the following line to your scenario code to use the class:
 * ```
 * require(Modules.Conference);
 * ```
 */
declare class Endpoint {
  /**
   * Returns the endpoint's id.
   */
  id(): string;

  /**
   * Returns the endpoint's direction. **SEND** provides only outgoing stream from endpoint to conference, **RECEIVE** provides only incoming stream from conference to endpoint, **BOTH** allows both incoming and outgoing streams.
   */
  getDirection(): 'SEND' | 'RECEIVE' | 'BOTH';

  /**
   * Returns the endpoint's mode. **MIX** mode combines all streams in one, **FORWARD** mode sends only one stream.
   */
  getMode(): 'MIX' | 'FORWARD';

  /**
   * Sets the display name for the specified endpoint. When the display name is set, all SDK clients receive 'EndpointEvents.InfoUpdated' event.
   * @param displayName
   */
  setDisplayName(displayName: string): void;

  /**
   * Enables/disables receiving media streams from other conference participants.
   * @param parameters Media stream receive parameters
   * @beta
   */
  manageEndpoint(parameters: ReceiveParameters): Promise<void>;

  /**
   * Returns the endpoint's [Call] instance if the endpoint is not a player or recorder instance.
   */
  getCall(): Call;
}

declare namespace Gemini {
  /**
   * [GenAI backend](https://pkg.go.dev/google.golang.org/genai@v1.57.0#Backend) to use for the [Gemini.LiveAPIClient]. Can be passed via the [Gemini.LiveAPIClientParameters.backend] parameter.
   */
  enum Backend {
    /**
     * The Gemini API backend.
     */
    GEMINI_API = 'GeminiAPI',
    /**
     * The VertexAI backend.
     */
    VERTEX_AI = 'VertexAI'
  }
}

declare namespace Gemini {
  /**
   * Creates a [Gemini.LiveAPIClient] instance.
   * @param parameters The [Gemini.LiveAPIClient] parameters
   */
  function createLiveAPIClient(parameters: LiveAPIClientParameters): Promise<LiveAPIClient>
}

declare namespace Gemini {
  /**
   * @event
   */
  enum Events {
    /**
     * Triggered when the audio stream sent by a third party through a Gemini WebSocket is started playing.
     * @typedef _WebSocketMediaStartedGeminiEvent
     */
    WebSocketMediaStarted = 'Gemini.Events.WebSocketMediaStarted',
    /**
     * Triggers after the end of the audio stream sent by a third party through a Gemini WebSocket (**1 second of silence**).
     * @typedef _WebSocketMediaEndedGeminiEvent
     */
    WebSocketMediaEnded = 'Gemini.Events.WebSocketMediaEnded',
  }

  /**
   * @private
   */
  interface _Events {
    [Gemini.Events.WebSocketMediaStarted]: _WebSocketMediaStartedGeminiEvent;
    [Gemini.Events.WebSocketMediaEnded]: _WebSocketMediaEndedGeminiEvent;
  }

  /**
   * @private
   */
  interface _Event {
    /**
     * The [Gemini.LiveAPIClient] instance.
     */
    client: LiveAPIClient;
  }

  /**
   * @private
   */
  interface _WebSocketMediaStartedGeminiEvent extends _Event, _WebSocketMediaStartedWithoutWebSocketEvent {
  }

  /**
   * @private
   */
  interface _WebSocketMediaEndedGeminiEvent extends _Event, _WebSocketMediaEndedWithoutWebSocketEvent {
  }
}


declare namespace Gemini {
}
declare namespace Gemini {
  /**
   * @private
   */
  interface _LiveAPIClientEvents extends _Events, _LiveAPIEvents {
  }
}
declare namespace Gemini {
  /**
   * [Gemini.LiveAPIClient] parameters. Can be passed as arguments to the [Gemini.createLiveAPIClient] method.
   */
  interface LiveAPIClientParameters extends _VoiceAIClientParameters {
    /**
     * Optional. The model to use for Gemini Live API processing. The default value is **gemini-2.0-flash-exp**.
     */
    model?: string;
    /**
     * Optional. Backend is the GenAI backend to use for the client. The default value is **[Backend.GEMINI_API]**.
     */
    backend?: Backend;
    /**
     * Optional. Gemini API key. Required for [Backend.GEMINI_API]. Get a Gemini API key [here](https://ai.google.dev/gemini-api/docs/api-key).
     */
    apiKey?: string;
    /**
     * Optional. GCP Project ID for Vertex AI. Required for [Backend.VERTEX_AI]. Find your Project ID [here](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects).
     */
    project?: string;
    /**
     * Optional. GCP Location/Region for Vertex AI. Required for [Backend.VERTEX_AI]. [Generative AI locations](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations).
     */
    location?: string;
    /**
     * Optional. Google [credential file](https://cloud.google.com/docs/authentication/application-default-credentials#personal) content.
     */
    credentials?: string;
    /**
     * Optional. [HTTP options](https://pkg.go.dev/google.golang.org/genai@v1.57.0#HTTPOptions) to override.<br>NOTE: the 'baseUrl' parameter will be ignored.
     */
    httpOptions?: Object;
    /**
     * Optional. [Session config](https://pkg.go.dev/google.golang.org/genai@v1.57.0#LiveConnectConfig) for the API connection.
     */
    connectConfig?: Object;
  }
}

declare namespace Gemini {
  /**
   * Note that the [Gemini.LiveAPIClient] using the [Google Gen AI Go SDK v1.57.0](https://pkg.go.dev/google.golang.org/genai@v1.57.0).
   */
  class LiveAPIClient {
    /**
     * Returns the LiveAPIClient id.
     */
    id(): string;

    /**
     * Returns the LiveAPI WebSocket id.
     */
    webSocketId(): string;

    /**
     * Closes the LiveAPI connection (over WebSocket) or connection attempt.
     */
    close(): void;

    /**
     * Starts sending media from the LiveAPI (via WebSocket) to the media unit. LiveAPI works in real time.
     * @param mediaUnit Media unit that receives media
     * @param parameters Optional interaction parameters
     */
    sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

    /**
     * Stops sending media from the LiveAPI (via WebSocket) to the media unit.
     * @param mediaUnit Media unit that stops receiving media
     */
    stopMediaTo(mediaUnit: VoxMediaUnit): void;

    /**
     * Clears the LiveAPI WebSocket media buffer.
     * @param parameters Optional. Media buffer clearing parameters
     */
    clearMediaBuffer(parameters?: ClearMediaBufferParameters): void;

    /**
     * Adds a handler for the specified [Gemini.LiveAPIEvents] or [Gemini.Events] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event Event class (i.e., [Gemini.LiveAPIEvents.ServerContent])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof _LiveAPIClientEvents>(
      event: Events | LiveAPIEvents | T,
      callback: (event: _LiveAPIClientEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [Gemini.LiveAPIEvents] or [Gemini.Events] event.
     * @param event Event class (i.e., [Gemini.LiveAPIEvents.ServerContent])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof _LiveAPIClientEvents>(
      event: Events | LiveAPIEvents | T,
      callback?: (event: _LiveAPIClientEvents[T]) => any,
    ): void;

    /**
     * Transmits a LiveClientContent over the established connection. 
     * [https://pkg.go.dev/google.golang.org/genai@v1.57.0#Session.SendClientContent](https://pkg.go.dev/google.golang.org/genai@v1.57.0#Session.SendClientContent)
     * @param input
     */
    sendClientContent(input: Object): void

    /**
     * Transmits a LiveClientRealtimeInput over the established connection. 
     * [https://pkg.go.dev/google.golang.org/genai@v1.57.0#Session.SendRealtimeInput](https://pkg.go.dev/google.golang.org/genai@v1.57.0#Session.SendRealtimeInput)
     * @param input
     */
    sendRealtimeInput(input: Object): void

    /**
     * Transmits a LiveClientToolResponse over the established connection. 
     * [https://pkg.go.dev/google.golang.org/genai@v1.57.0#Session.SendToolResponse](https://pkg.go.dev/google.golang.org/genai@v1.57.0#Session.SendToolResponse)
     * @param input
     */
    sendToolResponse(input: Object): void
  }
}

declare namespace Gemini {
  /**
   * @event
   */
  enum LiveAPIEvents {
    /**
     * The unknown event.
     * @typedef _LiveAPIEvent
     */
    Unknown = 'Gemini.LiveAPI.Unknown',

    /**
     * Content generated by the model in response to client messages. [https://pkg.go.dev/google.golang.org/genai@v1.57.0#LiveServerContent](https://pkg.go.dev/google.golang.org/genai@v1.57.0#LiveServerContent)
     * @typedef _LiveAPIEvent
     */
    ServerContent = 'Gemini.LiveAPI.ServerContent',

    /**
     * Request for the client to execute the `function_calls` and return the responses with the matching `id`s. [https://pkg.go.dev/google.golang.org/genai@v1.57.0#LiveServerToolCall](https://pkg.go.dev/google.golang.org/genai@v1.57.0#LiveServerToolCall)
     * @typedef _LiveAPIEvent
     */
    ToolCall = 'Gemini.LiveAPI.ToolCall',

    /**
     * Notification for the client that a previously issued `ToolCallMessage` with the specified `id`s should have been not executed and should be cancelled. [https://pkg.go.dev/google.golang.org/genai@v1.57.0#LiveServerToolCallCancellation](https://pkg.go.dev/google.golang.org/genai@v1.57.0#LiveServerToolCallCancellation)
     * @typedef _LiveAPIEvent
     */
    ToolCallCancellation = 'Gemini.LiveAPI.ToolCallCancellation',

    /**
     * Contains information about connector.
     * @typedef _LiveAPIEvent
     */
    ConnectorInformation = 'Gemini.LiveAPI.ConnectorInformation',
  }

  /**
   * @private
   */
  interface _LiveAPIEvents {
    [LiveAPIEvents.Unknown]: _LiveAPIEvent;
    [LiveAPIEvents.ServerContent]: _LiveAPIEvent;
    [LiveAPIEvents.ToolCall]: _LiveAPIEvent;
    [LiveAPIEvents.ToolCallCancellation]: _LiveAPIEvent;
    [LiveAPIEvents.ConnectorInformation]: _LiveAPIEvent;
  }

  /**
   * @private
   */
  interface _LiveAPIEvent {
    /**
     * The [Gemini.LiveAPIClient] instance.
     */
    client: LiveAPIClient;
    /**
     * The event's data.
     */
    data?: Object;
  }
}


declare namespace Google {
  /**
   * Creates a new [Google.RealtimeTTSPlayer] instance. You can attach media streams later via the [Google.RealtimeTTSPlayer.sendMediaTo] or [VoxEngine.sendMediaBetween] methods.
   * @param parameters Optional. Realtime TTS player parameters
   **/
  function createRealtimeTTSPlayer(parameters?: RealtimeTTSPlayerParameters): RealtimeTTSPlayer;
}

declare namespace Google {}

declare namespace Google {
  /**
   * [Google.RealtimeTTSPlayer] parameters. Can be passed as arguments to the [Google.createRealtimeTTSPlayer] method.
   */
  interface RealtimeTTSPlayerParameters {
    /**
     * BCP-47 language tag representing the voice language.
     *
     * Specifies the locale used for speech synthesis, including language and optionally region.
     *
     * Must be a valid BCP-47 tag (e.g., "en-US","en-GB", "en-IN", "de-DE", "fr-FR", "pl-PL", "ru-RU").
     */
    language_code: string;
    /**
     * The name of the voice used for speech synthesis. Each voice has a unique identifier and represents a specific synthetic speaker with its own characteristics (e.g., gender, tone).
     *
     * Find more information in the [documentation](https://docs.cloud.google.com/text-to-speech/docs/list-voices-and-types).
     *
     * Example voices include: "Aoede", "Puck", "Charon", "Kore", "Fenrir", "Leda", "Orus", "Zephyr".
     */
    voice: string;
    /**
     * Optional. Whether to keep the connection alive after the timeout. The default value is **true**.
     */
    keepAlive?: boolean;
    /**
     * Optional. Whether to enable the tracing functionality.
     *
     * If tracing is enabled, a URL to the trace file appears in the 'websocket.created' message. The file contains all sent and received WebSocket messages in the plain text format. The file is uploaded to the S3 storage.
     *
     * NOTE: enable this only for diagnostic purposes.
     */
    trace?: boolean;
  }
}

declare namespace Google {
  class RealtimeTTSPlayer extends BasePlayer {
    /**
     * Send message object to the Google provider context.
     * @param parameters Object provides the parameters directly to the Google provider context. Find more information in the [documentation](https://docs.cloud.google.com/text-to-speech/docs/reference/rpc/google.cloud.texttospeech.v1#google.cloud.texttospeech.v1.SynthesisInput)
     */
    send(parameters: Object): void;
    /**
     * Clears a [Google.RealtimeTTSPlayer] buffer.
     */
    clearBuffer(): void;
  }
}

declare namespace Grok {
    /**
     * Creates a new [Grok.VoiceAgentAPIClient] instance.
     * @param parameters The [Grok.VoiceAgentAPIClient] parameters
     */
    function createVoiceAgentAPIClient(parameters: VoiceAgentAPIClientParameters): Promise<Grok.VoiceAgentAPIClient>
}
declare namespace Grok {
  /**
   * @event
   */
  enum Events {
    /**
     * Triggered when the audio stream sent by a third party through an Grok WebSocket is started playing.
     * @typedef _WebSocketMediaStartedGrokEvent
     */
    WebSocketMediaStarted = 'Grok.Events.WebSocketMediaStarted',
    /**
     * Triggers after the end of the audio stream sent by a third party through an Grok WebSocket (**1 second of silence**).
     * @typedef _WebSocketMediaEndedGrokEvent
     */
    WebSocketMediaEnded = 'Grok.Events.WebSocketMediaEnded',
  }

  /**
   * @private
   */
  interface _Events {
    [Grok.Events.WebSocketMediaStarted]: _WebSocketMediaStartedGrokEvent;
    [Grok.Events.WebSocketMediaEnded]: _WebSocketMediaEndedGrokEvent;
  }

  /**
   * @private
   */
  interface _Event {
    /**
     * The [Grok.VoiceAgentAPIClient] instance.
     */
    client: VoiceAgentAPIClient;
  }

  /**
   * @private
   */
  interface _WebSocketMediaStartedGrokEvent extends _Event, _WebSocketMediaStartedWithoutWebSocketEvent {
  }

  /**
   * @private
   */
  interface _WebSocketMediaEndedGrokEvent extends _Event, _WebSocketMediaEndedWithoutWebSocketEvent {
  }
}
declare namespace Grok {
}
declare namespace Grok {
  /**
   * @private
   */
  interface _VoiceAgentAPIClientEvents extends _Events, _VoiceAgentAPIEvents {
  }
}
declare namespace Grok {
  /**
   * [Grok.VoiceAgentAPIClient] parameters. Can be passed as arguments to the [Grok.createVoiceAgentAPIClient] method.
   */
  interface VoiceAgentAPIClientParameters extends _VoiceAIClientParameters {
    /**
     * The xAI API key for the Grok VoiceAgent API.
     */
    xAIApiKey: string;
    /**
      * The model to use for the Grok VoiceAgent API.[https://docs.x.ai/developers/model-capabilities/audio/voice-agent#model-selection](https://docs.x.ai/developers/model-capabilities/audio/voice-agent#model-selection)
     * Note: The default value is **grok-voice-fast-1.0**.
     */
    model?: string;
  }
}
declare namespace Grok {
  class VoiceAgentAPIClient {
    /**
     * Returns the VoiceAgentAPIClient id.
     */
    id(): string;

    /**
     * Returns the Grok WebSocket id.
     */
    webSocketId(): string;

    /**
     * Closes the Grok connection (over WebSocket) or connection attempt.
     */
    close(): void;

    /**
     * Starts sending media from the Grok (via WebSocket) to the media unit. Grok works in real time.
     * @param mediaUnit Media unit that receives media
     * @param parameters Optional interaction parameters
     */
    sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

    /**
     * Stops sending media from the Grok (via WebSocket) to the media unit.
     * @param mediaUnit Media unit that stops receiving media
     */
    stopMediaTo(mediaUnit: VoxMediaUnit): void;

    /**
     * Clears the Grok WebSocket media buffer.
     * @param parameters Optional. Media buffer clearing parameters
     */
    clearMediaBuffer(parameters?: ClearMediaBufferParameters): void;

    /**
     * Adds a handler for the specified [Grok.VoiceAgentAPIEvents] or [Grok.Events] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event Event class (i.e., [Grok.VoiceAgentAPIEvents.ConversationCreated])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof Grok._VoiceAgentAPIClientEvents>(
      event: Grok.Events | Grok.VoiceAgentAPIEvents | T,
      callback: (event: Grok._VoiceAgentAPIClientEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [Grok.VoiceAgentAPIEvents] or [Grok.Events] event.
     * @param event Event class (i.e., [Grok.VoiceAgentAPIEvents.ConversationCreated])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof Grok._VoiceAgentAPIClientEvents>(
      event: Grok.Events | Grok.VoiceAgentAPIEvents | T,
      callback?: (event: Grok._VoiceAgentAPIClientEvents[T]) => any,
    ): void;

    /**
     * Send this event to update the session’s configuration. [https://docs.x.ai/docs/guides/voice/agent#client-events-1](https://docs.x.ai/docs/guides/voice/agent#client-events-1)
     * @param parameters
     */
    sessionUpdate(parameters: Object): void

    /**
     * Clear input audio buffer. [https://docs.x.ai/docs/guides/voice/agent#client-1](https://docs.x.ai/docs/guides/voice/agent#client-1)
     * @param parameters
     */
    inputAudioBufferClear(parameters: Object): void

    /**
     * Create a new user message. [https://docs.x.ai/docs/guides/voice/agent#client](https://docs.x.ai/docs/guides/voice/agent#client)
     * @param parameters
     */
    conversationItemCreate(parameters: Object): void

    /**
     * Request the server to create a new assistant response when using client side vad. (This is handled automatically when using server side vad.) [https://docs.x.ai/docs/guides/voice/agent#client-2](https://docs.x.ai/docs/guides/voice/agent#client-2)
     * @param parameters
     */
    responseCreate(parameters: Object): void
  }
}
  
declare namespace Grok {
  /**
   * @event
   */
  enum VoiceAgentAPIEvents {
    /**
     * The unknown event.
     * @typedef _VoiceAgentAPIEvent
     */
    Unknown = 'Grok.VoiceAgentAPI.Unknown',

    /**
     * The first message at connection. Notifies the client that a conversation session has been created. [https://docs.x.ai/docs/guides/voice/agent#server-events-2](https://docs.x.ai/docs/guides/voice/agent#server-events-2)
     * @typedef _VoiceAgentAPIEvent
     */
    ConversationCreated = 'Grok.VoiceAgentAPI.ConversationCreated',

    /**
     * Acknowledge the client's "session.update" message that the session has been updated. [https://docs.x.ai/docs/guides/voice/agent#server-events-1](https://docs.x.ai/docs/guides/voice/agent#server-events-1)
     * @typedef _VoiceAgentAPIEvent
     */
    SessionUpdated = 'Grok.VoiceAgentAPI.SessionUpdated',

    /**
     * Responding to the client that a new user message has been added to conversation history, or if an assistance response has been added to conversation history. [https://docs.x.ai/docs/guides/voice/agent#server](https://docs.x.ai/docs/guides/voice/agent#server)
     * @typedef _VoiceAgentAPIEvent
     */
    ConversationItemAdded = 'Grok.VoiceAgentAPI.ConversationItemAdded',

    /**
     * Notify the client the audio transcription for input has been completed. [https://docs.x.ai/docs/guides/voice/agent#server](https://docs.x.ai/docs/guides/voice/agent#server)
     * @typedef _VoiceAgentAPIEvent
     */
    ConversationItemInputAudioTranscriptionCompleted = 'Grok.VoiceAgentAPI.ConversationItemInputAudioTranscriptionCompleted',

    /**
     * Input audio buffer has been committed. [https://docs.x.ai/docs/guides/voice/agent#server-1](https://docs.x.ai/docs/guides/voice/agent#server-1)
     * @typedef _VoiceAgentAPIEvent
     */
    InputAudioBufferCommitted = 'Grok.VoiceAgentAPI.InputAudioBufferCommitted',

    /**
     * Input audio buffer has been cleared. [https://docs.x.ai/docs/guides/voice/agent#server-1](https://docs.x.ai/docs/guides/voice/agent#server-1)
     * @typedef _VoiceAgentAPIEvent
     */
    InputAudioBufferCleared = 'Grok.VoiceAgentAPI.InputAudioBufferCleared',

    /**
     * Notify the client the server's VAD has detected the start of a speech. [https://docs.x.ai/docs/guides/voice/agent#server-1](https://docs.x.ai/docs/guides/voice/agent#server-1)
     * @typedef _VoiceAgentAPIEvent
     */
    InputAudioBufferSpeechStarted = 'Grok.VoiceAgentAPI.InputAudioBufferSpeechStarted',

    /**
     * Notify the client the server's VAD has detected the end of a speech. [https://docs.x.ai/docs/guides/voice/agent#server-1](https://docs.x.ai/docs/guides/voice/agent#server-1)
     * @typedef _VoiceAgentAPIEvent
     */
    InputAudioBufferSpeechStopped = 'Grok.VoiceAgentAPI.InputAudioBufferSpeechStopped',

    /**
     * A new assistant response turn is in progress. Audio delta created from this assistant turn will have the same response id. [https://docs.x.ai/docs/guides/voice/agent#server-2](https://docs.x.ai/docs/guides/voice/agent#server-2)
     * @typedef _VoiceAgentAPIEvent
     */
    ResponseCreated = 'Grok.VoiceAgentAPI.ResponseCreated',

    /**
     * The assistant's response is completed. [https://docs.x.ai/docs/guides/voice/agent#server-2](https://docs.x.ai/docs/guides/voice/agent#server-2)
     * @typedef _VoiceAgentAPIEvent
     */
    ResponseDone = 'Grok.VoiceAgentAPI.ResponseDone',

    /**
     * A new assistant response is added to message history. [https://docs.x.ai/docs/guides/voice/agent#server-2](https://docs.x.ai/docs/guides/voice/agent#server-2)
     * @typedef _VoiceAgentAPIEvent
     */
    ResponseOutputItemAdded = 'Grok.VoiceAgentAPI.ResponseOutputItemAdded',

    /**
     * A new assistant response is done. 
     * @typedef _VoiceAgentAPIEvent
     */
    ResponseOutputItemDone = 'Grok.VoiceAgentAPI.ResponseOutputItemDone',

    /**
     * Audio transcript delta of the assistant response. [https://docs.x.ai/docs/guides/voice/agent#server-3](https://docs.x.ai/docs/guides/voice/agent#server-3)
     * @typedef _VoiceAgentAPIEvent
     */
    ResponseOutputAudioTranscriptDelta = 'Grok.VoiceAgentAPI.ResponseOutputAudioTranscriptDelta',

    /**
     * The audio transcript delta of the assistant response has finished generating. [https://docs.x.ai/docs/guides/voice/agent#server-3](https://docs.x.ai/docs/guides/voice/agent#server-3)
     * @typedef _VoiceAgentAPIEvent
     */
    ResponseOutputAudioTranscriptDone = 'Grok.VoiceAgentAPI.ResponseOutputAudioTranscriptDone',

    /**
     * Notifies client that the audio for this turn has finished generating. [https://docs.x.ai/docs/guides/voice/agent#server-3](https://docs.x.ai/docs/guides/voice/agent#server-3)
     * @typedef _VoiceAgentAPIEvent
     */
    ResponseOutputAudioDone = 'Grok.VoiceAgentAPI.ResponseOutputAudioDone',

    /**
     * Notifies client that the content part added. 
     * @typedef _VoiceAgentAPIEvent
     */
    ResponseContentPartAdded = 'Grok.VoiceAgentAPI.ResponseContentPartAdded',

    /**
     * Notifies client that the content part done. 
     * @typedef _VoiceAgentAPIEvent
     */
    ResponseContentPartDone = 'Grok.VoiceAgentAPI.ResponseContentPartDone',

    /**
     * Function call triggered with complete arguments. [https://docs.x.ai/docs/guides/voice/agent#handling-function-call-responses](https://docs.x.ai/docs/guides/voice/agent#handling-function-call-responses)
     * @typedef _VoiceAgentAPIEvent
     */
    ResponseFunctionCallArgumentsDone = 'Grok.VoiceAgentAPI.ResponseFunctionCallArgumentsDone',

    /**
     * The WebSocket error response event.
     * @typedef _VoiceAgentAPIEvent
     */
    WebSocketError = 'Grok.VoiceAgentAPI.WebSocketError',

    /**
    * Contains information about connector.
    * @typedef _VoiceAgentAPIEvent
    */
    ConnectorInformation = 'Grok.VoiceAgentAPI.ConnectorInformation',
  }

  /**
   * @private
   */
  interface _VoiceAgentAPIEvents {
    [VoiceAgentAPIEvents.Unknown]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.ConversationCreated]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.SessionUpdated]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.ConversationItemAdded]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.ConversationItemInputAudioTranscriptionCompleted]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.InputAudioBufferCommitted]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.InputAudioBufferCleared]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.InputAudioBufferSpeechStarted]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.InputAudioBufferSpeechStopped]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.ResponseCreated]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.ResponseDone]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.ResponseOutputItemAdded]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.ResponseOutputItemDone]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.ResponseOutputAudioTranscriptDelta]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.ResponseOutputAudioTranscriptDone]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.ResponseOutputAudioDone]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.ResponseContentPartAdded]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.ResponseContentPartDone]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.ResponseFunctionCallArgumentsDone]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.WebSocketError]: _VoiceAgentAPIEvent;
    [VoiceAgentAPIEvents.ConnectorInformation]: _VoiceAgentAPIEvent;
  }

  /**
   * @private
   */
  interface _VoiceAgentAPIEvent {
    /**
     * The [Grok.VoiceAgentAPIClient] instance.
     */
    client: VoiceAgentAPIClient;
    /**
     * The event's data.
     */
    data?: Object;
  }
}


declare namespace Inworld {
    /**
     * Creates a new [Inworld.RealtimeTTSPlayer] instance. You can attach media streams later via the [Inworld.RealtimeTTSPlayer.sendMediaTo] or [VoxEngine.sendMediaBetween] methods.
     * @param parameters Optional. Realtime TTS player parameters
     **/
    function createRealtimeTTSPlayer(parameters?: RealtimeTTSPlayerParameters): RealtimeTTSPlayer;
}

declare namespace Inworld {
}
declare namespace Inworld {
  class RealtimeTTSPlayer extends BasePlayer {
    /**
     * Send message object to the Inworld provider context.
     * @param parameters Object provides the parameters directly to the Inworld provider context. Find more information in the [documentation](https://docs.inworld.ai/api-reference/ttsAPI/texttospeech/synthesize-speech-websocket)
     */
    send(parameters: Object): void;
    /**
     * Clears an [Inworld.RealtimeTTSPlayer] buffer.
     */
    clearBuffer(): void;
  }
}

declare namespace Inworld {
  /**
   * [Inworld.RealtimeTTSPlayer] parameters. Can be passed as arguments to the [Inworld.createRealtimeTTSPlayer] method.
   */
  interface RealtimeTTSPlayerParameters extends _WebSocketBasedClientParameters {
    /**
     * Optional. Object to provide parameters directly to the Inworld provider Create Context message. Find more information in the [documentation](https://docs.inworld.ai/api-reference/ttsAPI/texttospeech/synthesize-speech-websocket).
     */
    createContextParameters?: Object;
    /**
     * Optional. Inworld API key. Use your Inworld API key if you have your own Inworld account.
     */
    apiKey?: string;
  }
}

/**
 * Global IVR control module.
 * <br>
 * Add the following line to your scenario code to use the namespace:
 * ```
 * require(Modules.IVR);
 * ```
 */
declare namespace IVR {}

declare namespace IVR {
  /**
   * Resets the IVR; i.e., the method clears the list of existed [IVRState] instances. Use it to stop the entire IVR logic (e.g. near the call's ending).
   * <br>
   * Add the following line to your scenario code to use the function:
   * ```
   * require(Modules.IVR);
   * ```
   */
  function reset(): void;
}

/**
 * IVR menu prompt settings. Can be passed via the [IVRSettings.prompt] parameter. Note that it is possible to specify playing parameter or a pair of the say and lang parameters.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.IVR);
 * ```
 */
declare interface IVRPrompt {
  /**
   * Voice message to say. Use it together with the lang parameter. SSML is supported; to use it, specify [TTSOptions] before creating an IVRState instance:<br><code>IVR.ttsOptions = { "pitch": "low", "rate": "slow", "volume": "loud" }</code>
   */
  say: string;
  /**
   * TTS language for pronouncing a value of the <b>say</b> parameter. List of all supported voices: [VoiceList].
   */
  lang: string;
  /**
   * Voice message url to play. Supported formats are <b>mp3</b> and <b>ogg</b>.
   */
  play: string;
}

/**
 * IVR menu state settings. Can be passed via the [IVRState.settings] parameter.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.IVR);
 * ```
 */
declare interface IVRSettings {
  /**
   * Prompt settings object.
   */
  prompt: IVRPrompt;
  /**
   * Menu type. Possible values: **select**, **inputfixed**, **inputunknown**, **noinput**.
   */
  type: string;
  /**
   * For **inputunknown** states - whether input is complete (input is passed as string).
   */
  inputValidator: (input: string) => boolean;
  /**
   * For **inputfixed** - length of desired input.
   */
  inputLength: number;
  /**
   * Timeout in milliseconds for user input. The default value is **5000**.
   */
  timeout: number;
  /**
   * For **select** type, map of IVR states to go to according to user input. If there is no next state for specific input, **onInputComplete** is invoked.
   */
  nextStates: { [name: string]: IVRState };
  /**
   * When this digit is entered in **inputunknown** mode, input is considered to be complete.
   */
  terminateOn: string;
  /**
   * Next state to go - for **noinput** state type.
   */
  nextState: IVRState | null;
}

/**
 * Represents an IVR menu state.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.IVR);
 * ```
 */
declare class IVRState {
  /**
   * This property is set when IVR leaves the specific state and holds user input
   */
  input: string;
  /**
   * IVR state settings object
   */
  settings: IVRSettings;

  /**
   * @param name State name
   * @param settings IVR menu state settings
   * @param onInputComplete Function to call after a user correctly provides input. User input should be passed as an argument
   * @param onInputTimeout Function to call in case of input timeout. User input should be passed as an argument
   */
  constructor(
    name: string,
    settings: IVRSettings,
    onInputComplete: (input: string) => void,
    onInputTimeout: (input: string) => void
  );

  /**
   * Starts the IVR from the current state for the specified call
   * @param call Call that IVR works with
   */
  enter(call: Call): void;
}

declare namespace Logger {
  /**
   * Whether to disable DTMF logging.
   * @param flag The default value is **false**
   */
  function hideTones(flag: boolean): void;
}

declare namespace MCP {
  /**
   * @private
   */
  interface _ClientEvents extends _Events, _ServerEvents {
  }
}
declare namespace MCP {
  /**
   * [MCP.Client] parameters. Can be passed as arguments to the [MCP.createClient] method.
   */
  interface ClientParameters extends _VoiceAIClientParameters {
    /**
     * The MCP server connection configuration.
     */
    mcpServerConnectionConfig: MCPServerConnectionConfig;
  }

  /**
   * MCP server connection configuration.
   */
  interface MCPServerConnectionConfig {
    /**
     * Headers to send to the MCP server on HTTP/SSE requests (e.g. Authorization, API keys).
     * You can use it to pass authentication headers to the MCP server.
     */
    headers: Object;
    /**
     * Endpoint is the server URL for "http" or "sse" transport.
     */
    endpoint: string;
    /**
     * Transport is "http", or "sse".
     */
    transport: string;
    /**
     * ClientName and ClientVersion identify this MCP client in the protocol handshake.
     */
    clientName: string;
    /**
     * ClientVersion identify this MCP client in the protocol handshake.
     */
    clientVersion: string;
  }
}
declare namespace MCP {
  /**
   * Note that the [MCP.Client] using the [Model Context Protocol Go SDK v1.5.0](https://pkg.go.dev/github.com/modelcontextprotocol/go-sdk@v1.5.0).
   */
  class Client {
    /**
     * Returns the Client id.
     */
    id(): string;

    /**
     * Returns the WebSocket id.
     */
    webSocketId(): string;

    /**
     * Closes the connection (over WebSocket) or connection attempt.
     */
    close(): void;

    /**
     * Adds a handler for the specified [MCP.ServerEvents] or [MCP.Events] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event Event class (i.e., [MCP.ServerEvents.ToolsList])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof MCP._ClientEvents>(
      event: MCP.Events | MCP.ServerEvents | T,
      callback: (event: MCP._ClientEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [MCP.ServerEvents] or [MCP.Events] event.
     * @param event Event class (i.e., [MCP.ServerEvents.ToolsList])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof MCP._ClientEvents>(
      event: MCP.Events | MCP.ServerEvents | T,
      callback?: (event: MCP._ClientEvents[T]) => any,
    ): void;

    /**
     * List the tools available from the MCP server. [https://pkg.go.dev/github.com/modelcontextprotocol/go-sdk@v1.5.0/mcp#ListToolsParams](https://pkg.go.dev/github.com/modelcontextprotocol/go-sdk@v1.5.0/mcp#ListToolsParams)
     * @param parameters
     */
    listTools(parameters: Object): void

    /**
     * Call a tool from the MCP server. [https://pkg.go.dev/github.com/modelcontextprotocol/go-sdk@v1.5.0/mcp#CallToolParams](https://pkg.go.dev/github.com/modelcontextprotocol/go-sdk@v1.5.0/mcp#CallToolParams)
     * @param parameters
     */
    callTool(parameters: Object): void
  }
}
  
declare namespace MCP {
    /**
     * Creates a new [MCP.Client] instance.
     * @param parameters The [MCP.Client] parameters
     */
    function createClient(parameters: ClientParameters): Promise<Client>
}
declare namespace MCP {
  /**
   * @event
   */
  enum Events {
    /**
     * Triggered when the audio stream sent by a third party through an WebSocket is started playing.
     * @typedef _WebSocketMediaStartedMCPEvent
     */
    WebSocketMediaStarted = 'MCP.Events.WebSocketMediaStarted',
    /**
     * Triggers after the end of the audio stream sent by a third party through an WebSocket (**1 second of silence**).
     * @typedef _WebSocketMediaEndedMCPEvent
     */
    WebSocketMediaEnded = 'MCP.Events.WebSocketMediaEnded',
  }

  /**
   * @private
   */
  interface _Events {
    [MCP.Events.WebSocketMediaStarted]: _WebSocketMediaStartedMCPEvent;
    [MCP.Events.WebSocketMediaEnded]: _WebSocketMediaEndedMCPEvent;
  }

  /**
   * @private
   */
  interface _Event {
    /**
     * The [MCP.Client] instance.
     */
    client: Client;
  }

  /**
   * @private
   */
  interface _WebSocketMediaStartedMCPEvent extends _Event, _WebSocketMediaStartedWithoutWebSocketEvent {
  }

  /**
   * @private
   */
  interface _WebSocketMediaEndedMCPEvent extends _Event, _WebSocketMediaEndedWithoutWebSocketEvent {
  }
}
declare namespace MCP {
}
declare namespace MCP {
  /**
   * @event
   */
  enum ServerEvents {
    /**
     * The unknown event.
     * @typedef _ServerEvent
     */
    Unknown = 'MCP.Server.Unknown',

    /**
     * The tools list returned from the MCP server. [https://pkg.go.dev/github.com/modelcontextprotocol/go-sdk@v1.5.0/mcp#ListToolsResult](https://pkg.go.dev/github.com/modelcontextprotocol/go-sdk@v1.5.0/mcp#ListToolsResult)
     * @typedef _ServerEvent
     */
    ToolsList = 'MCP.Server.ToolsList',

    /**
     * The tool result returned from the MCP server. [https://pkg.go.dev/github.com/modelcontextprotocol/go-sdk@v1.5.0/mcp#CallToolResult](https://pkg.go.dev/github.com/modelcontextprotocol/go-sdk@v1.5.0/mcp#CallToolResult)
     * @typedef _ServerEvent
     */
    ToolResult = 'MCP.Server.ToolResult',

    /**
     * The MCP error event.
     * @typedef _ServerEvent
     */
    MCPError = 'MCP.Server.MCPError',

    /**
    * Contains information about connector.
    * @typedef _ServerEvent
    */
    ConnectorInformation = 'MCP.Server.ConnectorInformation',
  }

  /**
   * @private
   */
  interface _ServerEvents {
    [ServerEvents.Unknown]: _ServerEvent;
    [ServerEvents.ToolsList]: _ServerEvent;
    [ServerEvents.ToolResult]: _ServerEvent;
    [ServerEvents.MCPError]: _ServerEvent;
    [ServerEvents.ConnectorInformation]: _ServerEvent;
  }

  /**
   * @private
   */
  interface _ServerEvent {
    /**
     * The [MCP.Client] instance.
     */
    client: Client;
    /**
     * The event's data.
     */
    data?: Object;
  }
}


declare namespace MeasurementProtocol {
  /**
   * Forces the current session to end with this hit. All other values are ignored.
   * @returns {MeasurementProtocol}
   */
  function endSession(): typeof MeasurementProtocol;
}

/**
 * Implementation of the Measurement Protocol v1.
 */
declare namespace MeasurementProtocol {}

declare namespace MeasurementProtocol {
  interface SendEventOptions {
    nonInteractionHit?: string;
    category: string;
    action: string;
    label?: string;
    value?: string;
  }
}

declare namespace MeasurementProtocol {
  /**
   * Send an event to the Universal Analytics
   * @param {SendEventOptions} options
   * @returns {MeasurementProtocol}
   */
  function sendEvent(options: SendEventOptions): typeof MeasurementProtocol;
}

declare namespace MeasurementProtocol {
  interface SendExceptionOptions {
    nonInteractionHit?: string;
    description?: string;
    isFatal?: boolean;
  }
}

declare namespace MeasurementProtocol {
  /**
   * Sends a record about exception
   * @param {SendExceptionOptions} options
   * @returns {MeasurementProtocol}
   */
  function sendException(options: SendExceptionOptions): typeof MeasurementProtocol;
}

declare namespace MeasurementProtocol {
  interface SendItemOptions {
    nonInteractionHit?: string;
    transactionId: number;
    name: string;
    price: number;
    quantity: number;
    code?: string;
    category?: string;
  }
}

declare namespace MeasurementProtocol {
  /**
   * Sends an item to E-commerce
   * @param {SendItemOptions} options
   * @returns {MeasurementProtocol}
   */
  function sendItem(options: SendItemOptions): typeof MeasurementProtocol;
}

declare namespace MeasurementProtocol {
  interface SendSocialOptions {
    nonInteractionHit?: string;
    network?: string;
    action?: string;
    trigger?: string;
  }
}

declare namespace MeasurementProtocol {
  /**
   * Sends a social interaction
   * @param {SendSocialOptions} options
   * @returns {MeasurementProtocol}
   */
  function sendSocial(options: SendSocialOptions): typeof MeasurementProtocol;
}

declare namespace MeasurementProtocol {
  interface SendTimingOptions {
    nonInteractionHit?: string;
    category?: string;
    name?: string;
    time?: number;
    label?: string;
  }
}

declare namespace MeasurementProtocol {
  /**
   * Measures the user's timings
   * @param {SendTimingOptions} options
   * @returns {MeasurementProtocol}
   */
  function sendTiming(options: SendTimingOptions): typeof MeasurementProtocol;
}

declare namespace MeasurementProtocol {
  interface SendTransactionOptions {
    nonInteractionHit?: string;
    id: number;
    affiliation?: string;
    revenue: number;
    shipping?: number;
    tax?: number;
  }
}

declare namespace MeasurementProtocol {
  /**
   * Sends a transaction to E-commerce
   * @param {SendTransactionOptions} options
   * @returns {MeasurementProtocol}
   */
  function sendTransaction(options: SendTransactionOptions): typeof MeasurementProtocol;
}

declare namespace MeasurementProtocol {
  interface SetApplicationInfoOptions {
    name: string;
    id?: string;
    version?: string;
    installerID?: string;
  }
}

declare namespace MeasurementProtocol {
  /**
   * Sets application name and version
   * @param {SetApplicationInfoOptions} options
   * @returns {MeasurementProtocol}
   */
  function setApplicationInfo(options: SetApplicationInfoOptions): typeof MeasurementProtocol;
}

declare namespace MeasurementProtocol {
  interface SetSessionByCallerIdOptions {
    callerId?: string;
    userID?: string;
    anonymizeIP?: string;
    IPOverride?: string;
  }
}

declare namespace MeasurementProtocol {
  function setSessionByCallerId(
    options: SetSessionByCallerIdOptions
  ): Promise<typeof MeasurementProtocol>;
}

declare namespace MeasurementProtocol {
  interface SetTrafficSourceOptions {
    documentReferrer?: string;
    campaignName?: string;
    campaignSource?: string;
    campaignMedium?: string;
    campaignKeyword?: string;
    campaignContent?: string;
    campaignID?: string;
    googleAdsID?: string;
    googleDisplayAdsID?: string;
  }
}

declare namespace MeasurementProtocol {
  /**
   * Sets traffic source values.
   * @param {SetTrafficSourceOptions} options
   * @returns {MeasurementProtocol}
   */
  function setTrafficSource(options: SetTrafficSourceOptions): typeof MeasurementProtocol;
}

declare namespace MeasurementProtocol {
  /**
   * Setups the most required tracking parameters
   */
  function setup(
    trackingId: string,
    debug: boolean,
    dataSource: string
  ): typeof MeasurementProtocol;
}

declare namespace MeasurementProtocol {
  interface StartSessionOptions {
    clientID: string;
    userID?: string;
    anonymizeIP?: boolean;
    IPOverride?: string;
    geographicalOverride?: string;
  }
}

declare namespace MeasurementProtocol {
  /**
   * Forces a new session to start with this hit. All other values are ignored.
   * @param {StartSessionOptions} options
   * @returns {MeasurementProtocol}
   */
  function startSession(options: StartSessionOptions): typeof MeasurementProtocol;
}

declare enum Modules {
  /**
   * Provides the [ACD v1](/docs/guides/smartqueue/acdv1) functionality.
   * <br>
   * We recommend using [SmartQueue] instead of ACD v1.
   * <br>
   * Add the following line to your scenario code to use the module:
   * ```
   * require(Modules.ACD);
   * ```
   */
  ACD = 'acd',
  /**
   * Provides additional methods that use Artificial Intelligence. These methods allow solving business tasks in more productive way.
   * <br>
   * Add the following line to your scenario code to use the module:
   * ```
   * require(Modules.AI);
   * ```
   */
  AI = 'ai',
  /**
   * Provides the [key-value storage](/docs/guides/voxengine/kvs) functionality.
   * <br>
   * Add the following line to your scenario code to use the module:
   * ```
   * require(Modules.ApplicationStorage);
   * ```
   */
  ApplicationStorage = 'applicationstorage',
  /**
   * Provides the [speech recognition](/docs/guides/speech/stt) functionality.
   * <br>
   * Add the following line to your scenario code to use the module:
   * ```
   * require(Modules.ASR);
   * ```
   */
  ASR = 'asr',
  /**
   * Provides the [Voximplant Avatar](/docs/guides/ai/avatar) (virtual assistant based on AI and NLP) functionality.
   * <br>
   * Add the following line to your scenario code to use the module:
   * ```
   * require(Modules.Avatar);
   * ```
   */
  Avatar = 'avatar',
  /**
   * Provides the [Cartesia](https://docs.cartesia.ai/get-started/overview) functionality.
   */
  Cartesia = 'cartesia',
  /**
   * Provides the [audio and video conferencing](/docs/guides/conferences) functionality.
   * <br>
   * Add the following line to your scenario code to use the module:
   * ```
   * require(Modules.Conference);
   * ```
   */
  Conference = 'conference',
  /**
   * Provides the [Deepgram](https://developers.deepgram.com/home) functionality.
   */
  Deepgram = 'deepgram',
  /**
   * Provides the [ElevenLabs](https://elevenlabs.io) functionality.
   */
  ElevenLabs = 'elevenlabs',
  /**
   * Provides the [Gemini](https://gemini.google.com) functionality.
   */
  Gemini = 'gemini',
  /**
   * Provides the [Google](https://docs.cloud.google.com/text-to-speech/docs) functionality.
   */
  Google = 'google',
  /**
   * Provides the [Grok](https://docs.x.ai/docs/guides/voice/agent#grok-voice-agent-api) functionality.
   */
  Grok = 'grok',
  /**
   * Provides the [Inworld](https://docs.inworld.ai/docs/introduction) functionality.
   */
  Inworld = 'inworld',
  /**
   * Provides the [interactive voice menus](/docs/guides/speech/ivr) functionality.
   * <br>
   * Instead, you can implement this functionality via the [Call.say], [Call.startPlayback] and [Call.handleTones] methods, but this module gives more straightforward approach.
   * <br>
   * Add the following line to your scenario code to use the module:
   * ```
   * require(Modules.IVR);
   * ```
   */
  IVR = 'ivr',
  /**
   * Provides the [MCP](https://modelcontextprotocol.io/docs/getting-started/intro) functionality.
   */
  MCP = 'mcp',
  /**
   * Provides the OpenAI functionality.
   */
  OpenAI = 'openai',
  /**
   * Provides the Pipecat functionality.
   * <br>
   * Add the following line to your scenario code to use the module:
   * ```
   * require(Modules.Pipecat);
   * ```
   */
  Pipecat = 'pipecat',
  /**
   * Provides the push notification functionality for [iOS](/docs/guides/sdk/iospush) and [Android](/docs/guides/sdk/androidpush) devices.
   * <br>
   * Add the following line to your scenario code to use the module:
   * ```
   * require(Modules.PushService);
   * ```
   */
  PushService = 'pushservice',
  /**
   * Provides the [call recording](/docs/guides/calls/record) and [conference recording](/docs/guides/conferences/record) functionality.
   * <br>
   * Add the following line to your scenario code to use the module:
   * ```
   * require(Modules.Recorder);
   * ```
   */
  Recorder = 'recorder',
  /**
   * Provides the Silero functionality.
   * <br>
   * Add the following line to your scenario code to use the module:
   * ```
   * require(Modules.Silero);
   * ```
   */
  Silero = 'silero',
  /**
   * Provides the SmartQueue (ACD v2) functionality for implementing a [contact center](/docs/guides/smartqueue).
   * <br>
   * Add the following line to your scenario code to use the module:
   * ```
   * require(Modules.SmartQueue);
   * ```
   */
  SmartQueue = 'smartqueue',
  /**
   * Provides the [streaming](/docs/guides/calls/stream) functionality.
   * <br>
   * Add the following line to your scenario code to use the module:
   * ```
   * require(Modules.StreamingAgent);
   * ```
   */
  StreamingAgent = 'streamingagent',
  /**
   * Provides the [Ultravox](https://docs.ultravox.ai/introduction) functionality.
   */
  Ultravox = 'ultravox',
  /**
   * Provides the [Voximplant HTTP API](https://voximplant.com/docs/references/httpapi) functionality.
   * <br>
   * Add the following line to your scenario code to use the module:
   * ```
   * require(Modules.VoximplantAPI);
   * ```
   */
  VoximplantAPI = 'voximplantapi',
  /**
   * Provides the [Yandex](https://yandex.cloud/ru/docs/ai-studio/concepts/agents/realtime) functionality.
   */
  Yandex = 'yandex',
}

/**
 * The parameters can be passed as arguments to the [Call.monitorMediaStatistics] method.
 */
declare interface MonitorMediaStatisticsParameters {
  /**
   * Enables or disables media statistics monitoring.
   */
  monitor: boolean;
  /**
   * Interval between messages (in seconds). The value must not be less than 3 or greater than 10.
   */
  interval: number;
}
declare namespace Net {
  /**
   * Performs an asynchronous HTTP request. TCP connect timeout is 6 seconds and total request timeout is 90 seconds. Learn more about the [limits](/docs/guides/voxengine/limits).
   * @param url HTTP url to query
   * @param options Advanced settings
   */
  function httpRequestAsync(url: string, options?: HttpRequestOptions): Promise<HttpRequestResult>;
}

declare namespace Net {
  /**
   * Performs a regular HTTP or HTTPS request. To perform an HTTPS request, insert "https://" at the URL's beginning. The default request method is **GET**, TCP connect timeout is **6** seconds and total request timeout is **90** seconds. Learn more about the [limits](/docs/guides/voxengine/limits).
   * @param url HTTP url to query
   * @param callback Function to be called on completion. The function receives a response object of type [HttpRequestResult] as a first argument
   * @param options Advanced settings
   */
  function httpRequest(
    url: string,
    callback: (result: HttpRequestResult) => void,
    options?: HttpRequestOptions
  ): void;
}

declare namespace Net {
  /**
   * Send an email via a specified email server
   * @param mailServerAddress SMTP server address
   * @param from From address of the email
   * @param to To address or list of addresses
   * @param title Message title
   * @param body Message body
   * @param options Advanced settings
   */
  function sendMailAsync(
    mailServerAddress: string,
    from: string,
    to: string | string[],
    title: string,
    body: string,
    options?: SendMailOptions
  ): Promise<SendMailResult>;
}

declare namespace Net {
  /**
   * Advanced options for sendMail method
   */
  interface SendMailOptions {
    /**
     * Alternative HTML body
     */
    html?: string;
    /**
     * CC addresses
     */
    cc?: string[];
    /**
     * BCC addresses
     */
    bcc?: string[];
    /**
     * Mail server port
     */
    port: number;
    /**
     * Login for mail server
     */
    login: string;
    /**
     * Password for mail server
     */
    password: string;
  }
}

declare namespace Net {
  /**
   * Result of sending an email
   */
  interface SendMailResult {
    /**
     * SMTP server response code
     */
    code: number;
    /**
     * Optional. SMTP server error message
     */
    error?: string;
  }
}

declare namespace Net {
  /**
   * Send email via the specified email server
   * @param mailServerAddress SMTP server to send email
   * @param from From address of email
   * @param to To address or list of addresses
   * @param title Message title
   * @param body Message body
   * @param callback Function to be called on completion. The function receives a response object of type [SendMailResult] as a first argument
   * @param options Advanced settings
   */
  function sendMail(
    mailServerAddress: string,
    from: string,
    to: string | string[],
    title: string,
    body: string,
    callback: (result: SendMailResult) => void,
    options?: SendMailOptions
  ): void;
}

declare namespace OpenAI {
  /**
   * The Realtime API (Beta) enables you to build low-latency, multi-modal conversational experiences.
   */
  namespace Beta {
  }
}
declare namespace OpenAI {
  namespace Beta {
    /**
     * Creates a new [OpenAI.Beta.RealtimeAPIClient] instance.
     * @param parameters The [OpenAI.Beta.RealtimeAPIClient] parameters
     */
    function createRealtimeAPIClient(parameters: RealtimeAPIClientParameters): Promise<RealtimeAPIClient>
  }
}
declare namespace OpenAI {
  namespace Beta {
    /**
     * @event
     */
    enum Events {
      /**
       * Triggered when the audio stream sent by a third party through an OpenAI WebSocket is started playing.
       * @typedef _WebSocketMediaStartedOpenAIBetaEvent
       */
      WebSocketMediaStarted = 'OpenAI.Beta.Events.WebSocketMediaStarted',
      /**
       * Triggers after the end of the audio stream sent by a third party through an OpenAI WebSocket (**1 second of silence**).
       * @typedef _WebSocketMediaEndedOpenAIBetaEvent
       */
      WebSocketMediaEnded = 'OpenAI.Beta.Events.WebSocketMediaEnded',
    }

    /**
     * @private
     */
    interface _Events {
      [OpenAI.Beta.Events.WebSocketMediaStarted]: _WebSocketMediaStartedOpenAIBetaEvent;
      [OpenAI.Beta.Events.WebSocketMediaEnded]: _WebSocketMediaEndedOpenAIBetaEvent;
    }

    /**
     * @private
     */
    interface _Event {
      /**
       * The [OpenAI.Beta.RealtimeAPIClient] instance.
       */
      client: RealtimeAPIClient;
    }

    /**
     * @private
     */
    interface _WebSocketMediaStartedOpenAIBetaEvent extends _Event, _WebSocketMediaStartedWithoutWebSocketEvent {
    }

    /**
     * @private
     */
    interface _WebSocketMediaEndedOpenAIBetaEvent extends _Event, _WebSocketMediaEndedWithoutWebSocketEvent {
    }
  }
}


declare namespace OpenAI {
  namespace Beta {
    /**
     * @private
     */
    interface _RealtimeAPIClientEvents extends _Events, _RealtimeAPIEvents {
    }
  }
}
declare namespace OpenAI {
  namespace Beta {
    /**
     * [OpenAI.Beta.RealtimeAPIClient] parameters. Can be passed as arguments to the [OpenAI.Beta.createRealtimeAPIClient] method.
     */
    interface RealtimeAPIClientParameters extends _VoiceAIClientParameters {
      /**
       * The API key for the OpenAI Realtime API.
       */
      apiKey: string;
      /**
       * Optional. The model to use for OpenAI Realtime API processing. The default value is **gpt-4o-realtime-preview-2024-10-01**.
       */
      model?: string;
    }
  }
}

declare namespace OpenAI {
  namespace Beta {
    class RealtimeAPIClient {
      /**
       * Returns the RealtimeAPIClient id.
       */
      id(): string;

      /**
       * Returns the RealtimeAPI WebSocket id.
       */
      webSocketId(): string;

      /**
       * Closes the RealtimeAPI connection (over WebSocket) or connection attempt.
       */
      close(): void;

      /**
       * Starts sending media from the RealtimeAPI (via WebSocket) to the media unit. RealtimeAPI works in real time.
       * @param mediaUnit Media unit that receives media
       * @param parameters Optional interaction parameters
       */
      sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

      /**
       * Stops sending media from the RealtimeAPI (via WebSocket) to the media unit.
       * @param mediaUnit Media unit that stops receiving media
       */
      stopMediaTo(mediaUnit: VoxMediaUnit): void;

      /**
       * Clears the RealtimeAPI WebSocket media buffer.
       * @param parameters Optional. Media buffer clearing parameters
       */
      clearMediaBuffer(parameters?: ClearMediaBufferParameters): void;

      /**
       * Adds a handler for the specified [OpenAI.Beta.RealtimeAPIEvents] or [OpenAI.Beta.Events] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
       * @param event Event class (i.e., [OpenAI.Beta.RealtimeAPIEvents.Error])
       * @param callback Handler function. A single parameter is passed - object with event information
       */
      addEventListener<T extends keyof OpenAI.Beta._RealtimeAPIClientEvents>(
        event: OpenAI.Beta.Events | OpenAI.Beta.RealtimeAPIEvents | T,
        callback: (event: OpenAI.Beta._RealtimeAPIClientEvents[T]) => any,
      ): void;

      /**
       * Removes a handler for the specified [OpenAI.Beta.RealtimeAPIEvents] or [OpenAI.Beta.Events] event.
       * @param event Event class (i.e., [OpenAI.Beta.RealtimeAPIEvents.Error])
       * @param callback Optional. Handler function. If not specified, all handler functions are removed
       */
      removeEventListener<T extends keyof OpenAI.Beta._RealtimeAPIClientEvents>(
        event: OpenAI.Beta.Events | OpenAI.Beta.RealtimeAPIEvents | T,
        callback?: (event: OpenAI.Beta._RealtimeAPIClientEvents[T]) => any,
      ): void;

      /**
       * Add a new Item to the Conversation's context, including messages, function calls, and function call responses. [https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/create](https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/create).
       * @param previousItemId The ID of the preceding item after which the new item will be inserted. If set to null, the new item will be appended to the end of the conversation. [https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/create#realtime_client_events/conversation/item/create-previous_item_id](https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/create#realtime_client_events/conversation/item/create-previous_item_id)
       * @param item The item to add to the conversation. [https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/create#realtime_client_events/conversation/item/create-item](https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/create#realtime_client_events/conversation/item/create-item)
       * @param eventId Optional. Client-generated ID used to identify this event. [https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/create#realtime_client_events/conversation/item/create-event_id](https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/create#realtime_client_events/conversation/item/create-event_id)
       */
      conversationItemCreate(previousItemId: string | null, item: Object, eventId?: string): void

      /**
       * Send this event when you want to retrieve the server's representation of a specific item in the conversation history. [https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/retrieve](https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/retrieve).
       * @param itemId The ID of the item to retrieve. [https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/retrieve#realtime_client_events/conversation/item/retrieve-item_id](https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/retrieve#realtime_client_events/conversation/item/retrieve-item_id)
       * @param eventId Optional. Client-generated ID used to identify this event. [https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/retrieve#realtime_client_events/conversation/item/retrieve-event_id](https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/retrieve#realtime_client_events/conversation/item/retrieve-event_id)
       */
      conversationItemRetrieve(itemId: string, eventId?: string): void

      /**
       * Send this event to truncate a previous assistant message’s audio. [https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/truncate](https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/truncate).
       * @param itemId The ID of the assistant message item to truncate. [https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/truncate#realtime_client_events/conversation/item/truncate-item_id](https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/truncate#realtime_client_events/conversation/item/truncate-item_id)
       * @param contentIndex The index of the content part to truncate. [https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/truncate#realtime_client_events/conversation/item/truncate-content_index](https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/truncate#realtime_client_events/conversation/item/truncate-content_index)
       * @param audioEndMs Inclusive duration up to which audio is truncated, in milliseconds. [https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/truncate#realtime_client_events/conversation/item/truncate-audio_end_ms](https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/truncate#realtime_client_events/conversation/item/truncate-audio_end_ms)
       * @param eventId Optional. Client-generated ID used to identify this event. [https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/truncate#realtime_client_events/conversation/item/truncate-event_id](https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/truncate#realtime_client_events/conversation/item/truncate-event_id)
       */
      conversationItemTruncate(itemId: string, contentIndex: number, audioEndMs: number, eventId?: string): void


      /**
       * Send this event when you want to remove any item from the conversation history. [https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/delete](https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/delete).
       * @param itemId The ID of the item to delete. (https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/delete#realtime_client_events/conversation/item/delete-item_id)
       * @param eventId Optional. Client-generated ID used to identify this event. [https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/delete#realtime_client_events/conversation/item/delete-event_id](https://platform.openai.com/docs/api-reference/realtime_client_events/conversation/item/delete#realtime_client_events/conversation/item/delete-event_id)
       */
      conversationItemDelete(itemId: string, eventId?: string): void

      /**
       * Updates the session’s default configuration. [https://platform.openai.com/docs/api-reference/realtime_client_events/session/update](https://platform.openai.com/docs/api-reference/realtime_client_events/session/update).
       * @param session Realtime session object configuration.[https://platform.openai.com/docs/api-reference/realtime_client_events/session/update#realtime_client_events/session/update-session](https://platform.openai.com/docs/api-reference/realtime_client_events/session/update#realtime_client_events/session/update-session).<br>NOTE: the 'input_audio_format' parameter will be ignored
       * @param eventId Optional. Client-generated ID used to identify this event. [https://platform.openai.com/docs/api-reference/realtime_client_events/session/update#realtime_client_events/session/update-event_id](https://platform.openai.com/docs/api-reference/realtime_client_events/session/update#realtime_client_events/session/update-event_id)
       */
      sessionUpdate(session: Object, eventId?: string): void

      /**
       * Instructs the server to create a Response, which means triggering model inference. [https://platform.openai.com/docs/api-reference/realtime_client_events/response/create](https://platform.openai.com/docs/api-reference/realtime_client_events/response/create).
       * @param response The response resource. [https://platform.openai.com/docs/api-reference/realtime_client_events/response/create#realtime_client_events/response/create-response](https://platform.openai.com/docs/api-reference/realtime_client_events/response/create#realtime_client_events/response/create-response).<br>NOTE: the 'input_audio_format' parameter will be ignored
       * @param eventId Optional. Client-generated ID used to identify this event. [https://platform.openai.com/docs/api-reference/realtime_client_events/response/create#realtime_client_events/response/create-event_id](https://platform.openai.com/docs/api-reference/realtime_client_events/response/create#realtime_client_events/response/create-event_id)
       */
      responseCreate(response: Object, eventId?: string): void

      /**
       * Cancels an in-progress response. [https://platform.openai.com/docs/api-reference/realtime_client_events/response/cancel](https://platform.openai.com/docs/api-reference/realtime_client_events/response/cancel).
       * @param eventId Optional. Client-generated ID used to identify this event. [https://platform.openai.com/docs/api-reference/realtime_client_events/response/cancel#realtime_client_events/response/cancel-event_id](https://platform.openai.com/docs/api-reference/realtime_client_events/response/cancel#realtime_client_events/response/cancel-event_id)
       */
      responseCancel(eventId?: string): void
    }
  }
}
declare namespace OpenAI {
  namespace Beta {
    /**
     * @event
     */
    enum RealtimeAPIEvents {
      /**
       * The unknown event.
       * @typedef _RealtimeAPIEvent
       */
      Unknown = 'OpenAI.Beta.RealtimeAPI.Unknown',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/error](https://platform.openai.com/docs/api-reference/realtime_server_events/error)
       * @typedef _RealtimeAPIEvent
       */
      Error = 'OpenAI.Beta.RealtimeAPI.Error',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/session/created](https://platform.openai.com/docs/api-reference/realtime_server_events/session/created)
       * @typedef _RealtimeAPIEvent
       */
      SessionCreated = 'OpenAI.Beta.RealtimeAPI.SessionCreated',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/session/updated](https://platform.openai.com/docs/api-reference/realtime_server_events/session/updated)
       * @typedef _RealtimeAPIEvent
       */
      SessionUpdated = 'OpenAI.Beta.RealtimeAPI.SessionUpdated',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/conversation/created](https://platform.openai.com/docs/api-reference/realtime_server_events/conversation/created)
       * @typedef _RealtimeAPIEvent
       */
      ConversationCreated = 'OpenAI.Beta.RealtimeAPI.ConversationCreated',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/conversation/item/created](https://platform.openai.com/docs/api-reference/realtime_server_events/conversation/item/created)
       * @typedef _RealtimeAPIEvent
       */
      ConversationItemCreated = 'OpenAI.Beta.RealtimeAPI.ConversationItemCreated',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/conversation/item/retrieved](https://platform.openai.com/docs/api-reference/realtim_server_events/conversation/item/retrieved)
       * @typedef _RealtimeAPIEvent
       */
      ConversationItemRetrieved = 'OpenAI.Beta.RealtimeAPI.ConversationItemRetrieved',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/conversation/item/input_audio_transcription/completed](https://platform.openai.com/docs/api-reference/realtime_server_events/conversation/item/input_audio_transcription/completed)
       * @typedef _RealtimeAPIEvent
       */
      ConversationItemInputAudioTranscriptionCompleted = 'OpenAI.Beta.RealtimeAPI.ConversationItemInputAudioTranscriptionCompleted',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/conversation/item/input_audio_transcription/delta](https://platform.openai.com/docs/api-reference/realtime_server_events/conversation/item/input_audio_transcription/delta)
       * @typedef _RealtimeAPIEvent
       */
      ConversationItemInputAudioTranscriptionDelta = 'OpenAI.Beta.RealtimeAPI.ConversationItemInputAudioTranscriptionDelta',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/conversation/item/input_audio_transcription/failed](https://platform.openai.com/docs/api-reference/realtime_server_events/conversation/item/input_audio_transcription/failed)
       * @typedef _RealtimeAPIEvent
       */
      ConversationItemInputAudioTranscriptionFailed = 'OpenAI.Beta.RealtimeAPI.ConversationItemInputAudioTranscriptionFailed',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/conversation/item/truncated](https://platform.openai.com/docs/api-reference/realtime_server_events/conversation/item/truncated)
       * @typedef _RealtimeAPIEvent
       */
      ConversationItemTruncated = 'OpenAI.Beta.RealtimeAPI.ConversationItemTruncated',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/conversation/item/deleted](https://platform.openai.com/docs/api-reference/realtime_server_events/conversation/item/deleted)
       * @typedef _RealtimeAPIEvent
       */
      ConversationItemDeleted = 'OpenAI.Beta.RealtimeAPI.ConversationItemDeleted',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/input_audio_buffer/committed](https://platform.openai.com/docs/api-reference/realtime_server_events/input_audio_buffer/committed)
       * @typedef _RealtimeAPIEvent
       */
      InputAudioBufferCommitted = 'OpenAI.Beta.RealtimeAPI.InputAudioBufferCommitted',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/input_audio_buffer/cleared](https://platform.openai.com/docs/api-reference/realtime_server_events/input_audio_buffer/cleared)
       * @typedef _RealtimeAPIEvent
       */
      InputAudioBufferCleared = 'OpenAI.Beta.RealtimeAPI.InputAudioBufferCleared',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/input_audio_buffer/speech_started](https://platform.openai.com/docs/api-reference/realtime_server_events/input_audio_buffer/speech_started)
       * @typedef _RealtimeAPIEvent
       */
      InputAudioBufferSpeechStarted = 'OpenAI.Beta.RealtimeAPI.InputAudioBufferSpeechStarted',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/input_audio_buffer/speech_stopped](https://platform.openai.com/docs/api-reference/realtime_server_events/input_audio_buffer/speech_stopped)
       * @typedef _RealtimeAPIEvent
       */
      InputAudioBufferSpeechStopped = 'OpenAI.Beta.RealtimeAPI.InputAudioBufferSpeechStopped',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/response/created](https://platform.openai.com/docs/api-reference/realtime_server_events/response/created)
       * @typedef _RealtimeAPIEvent
       */
      ResponseCreated = 'OpenAI.Beta.RealtimeAPI.ResponseCreated',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/response/done](https://platform.openai.com/docs/api-reference/realtime_server_events/response/done)
       * @typedef _RealtimeAPIEvent
       */
      ResponseDone = 'OpenAI.Beta.RealtimeAPI.ResponseDone',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/response/output_item/added](https://platform.openai.com/docs/api-reference/realtime_server_events/response/output_item/added)
       * @typedef _RealtimeAPIEvent
       */
      ResponseOutputItemAdded = 'OpenAI.Beta.RealtimeAPI.ResponseOutputItemAdded',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/response/output_item/done](https://platform.openai.com/docs/api-reference/realtime_server_events/response/output_item/done)
       * @typedef _RealtimeAPIEvent
       */
      ResponseOutputItemDone = 'OpenAI.Beta.RealtimeAPI.ResponseOutputItemDone',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/response/content_part/added](https://platform.openai.com/docs/api-reference/realtime_server_events/response/content_part/added)
       * @typedef _RealtimeAPIEvent
       */
      ResponseContentPartAdded = 'OpenAI.Beta.RealtimeAPI.ResponseContentPartAdded',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/response/content_part/done](https://platform.openai.com/docs/api-reference/realtime_server_events/response/content_part/done)
       * @typedef _RealtimeAPIEvent
       */
      ResponseContentPartDone = 'OpenAI.Beta.RealtimeAPI.ResponseContentPartDone',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/response/text/delta](https://platform.openai.com/docs/api-reference/realtime_server_events/response/text/delta)
       * @typedef _RealtimeAPIEvent
       */
      ResponseTextDelta = 'OpenAI.Beta.RealtimeAPI.ResponseTextDelta',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/response/text/done](https://platform.openai.com/docs/api-reference/realtime_server_events/response/text/done)
       * @typedef _RealtimeAPIEvent
       */
      ResponseTextDone = 'OpenAI.Beta.RealtimeAPI.ResponseTextDone',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/response/audio_transcript/delta](https://platform.openai.com/docs/api-reference/realtime_server_events/response/audio_transcript/delta)
       * @typedef _RealtimeAPIEvent
       */
      ResponseAudioTranscriptDelta = 'OpenAI.Beta.RealtimeAPI.ResponseAudioTranscriptDelta',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/response/audio_transcript/done](https://platform.openai.com/docs/api-reference/realtime_server_events/response/audio_transcript/done)
       * @typedef _RealtimeAPIEvent
       */
      ResponseAudioTranscriptDone = 'OpenAI.Beta.RealtimeAPI.ResponseAudioTranscriptDone',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/response/audio/done](https://platform.openai.com/docs/api-reference/realtime_server_events/response/audio/done)
       * @typedef _RealtimeAPIEvent
       */
      ResponseAudioDone = 'OpenAI.Beta.RealtimeAPI.ResponseAudioDone',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/response/function_call_arguments/delta](https://platform.openai.com/docs/api-reference/realtime_server_events/response/function_call_arguments/delta)
       * @typedef _RealtimeAPIEvent
       */
      ResponseFunctionCallArgumentsDelta = 'OpenAI.Beta.RealtimeAPI.ResponseFunctionCallArgumentsDelta',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/response/function_call_arguments/done](https://platform.openai.com/docs/api-reference/realtime_server_events/response/function_call_arguments/done)
       * @typedef _RealtimeAPIEvent
       */
      ResponseFunctionCallArgumentsDone = 'OpenAI.Beta.RealtimeAPI.ResponseFunctionCallArgumentsDone',
      /**
       * [https://platform.openai.com/docs/api-reference/realtime_server_events/rate_limits/updated](https://platform.openai.com/docs/api-reference/realtime_server_events/rate_limits/updated)
       * @typedef _RealtimeAPIEvent
       */
      RateLimitsUpdated = 'OpenAI.Beta.RealtimeAPI.RateLimitsUpdated',
    }

    /**
     * @private
     */
    interface _RealtimeAPIEvents {
      [RealtimeAPIEvents.Unknown]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.Error]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.SessionCreated]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.SessionUpdated]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ConversationCreated]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ConversationItemRetrieved]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ConversationItemCreated]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ConversationItemInputAudioTranscriptionCompleted]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ConversationItemInputAudioTranscriptionDelta]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ConversationItemInputAudioTranscriptionFailed]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ConversationItemTruncated]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ConversationItemDeleted]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.InputAudioBufferCommitted]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.InputAudioBufferCleared]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.InputAudioBufferSpeechStarted]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.InputAudioBufferSpeechStopped]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ResponseCreated]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ResponseDone]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ResponseOutputItemAdded]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ResponseOutputItemDone]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ResponseContentPartAdded]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ResponseContentPartDone]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ResponseTextDelta]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ResponseTextDone]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ResponseAudioTranscriptDelta]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ResponseAudioTranscriptDone]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ResponseAudioDone]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ResponseFunctionCallArgumentsDelta]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.ResponseFunctionCallArgumentsDone]: _RealtimeAPIEvent;
      [RealtimeAPIEvents.RateLimitsUpdated]: _RealtimeAPIEvent;
    }

    /**
     * @private
     */
    interface _RealtimeAPIEvent {
      /**
       * The [OpenAI.Beta.RealtimeAPIClient] instance.
       */
      client: RealtimeAPIClient;
      /**
       * The event's data.
       */
      data?: Object;
    }
  }
}


declare namespace OpenAI {
  /**
   * @private
   */
  interface _ChatCompletionsAPIClientEvents extends _Events, _ChatCompletionsAPIEvents {
  }
}
declare namespace OpenAI {
  /**
   * [OpenAI.ChatCompletionsAPIClient] parameters. Can be passed as arguments to the [OpenAI.createChatCompletionsAPIClient] method.
   */
  interface ChatCompletionsAPIClientParameters extends _WebSocketBasedClientParameters {
    /**
     * API key for the OpenAI API.
     */
    apiKey: string;
    /**
     * Optional. Whether to store the context in the client. The default value is **false**.
     */
    storeContext?: boolean;
    /**
     * Optional. Base URL for the OpenAI API.
     */
    baseUrl?: string;
    /**
     * Optional. Project for the OpenAI API.
     */
    project?: string;
    /**
     * Optional. Model for the summary generation. The default value is **gpt-4o**.
     */
    summaryModel?: string;
    /**
     * Optional. Prompt for the summary generation. If not specified, the default prompt is used.
     * The API Client automatically inserts the previous summary here.
     * The default prompt is:
     ```
     You are maintaining a running summary of an ongoing conversation.

      Below is:
      1. The previous summary
      2. The messages between user and assistant you need to summarize

      Provide a summary to reflect the information.

      ### Instructions:
      - Preserve important existing context from the previous summary
      - Integrate new key information, decisions, and developments
      - Remove outdated or redundant details
      - Avoid repeating unchanged information
      - Keep the summary concise and context-efficient
      - Maintain a neutral and factual tone

    ```
     */
    summaryPrompt?: string;
  }
}
declare namespace OpenAI {
  class ChatCompletionsAPIClient {
    /**
     * Returns the ChatCompletionsAPIClient id.
     */
    id(): string;

    /**
     * Returns the OpenAI WebSocket id.
     */
    webSocketId(): string;

    /**
     * Closes the OpenAI connection (over WebSocket) or connection attempt.
     */
    close(): void;

    /**
     * Adds a handler for the specified [OpenAI.ChatCompletionsAPIEvents] or [OpenAI.Events] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event Event class (i.e., [OpenAI.ChatCompletionsAPIEvents.ContentDelta])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof OpenAI._ChatCompletionsAPIClientEvents>(
      event: OpenAI.Events | OpenAI.ChatCompletionsAPIEvents | T,
      callback: (event: OpenAI._ChatCompletionsAPIClientEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [OpenAI.ChatCompletionsAPIEvents] or [OpenAI.Events] event.
     * @param event Event class (i.e., [OpenAI.ChatCompletionsAPIEvents.ContentDelta])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof OpenAI._ChatCompletionsAPIClientEvents>(
      event: OpenAI.Events | OpenAI.ChatCompletionsAPIEvents | T,
      callback?: (event: OpenAI._ChatCompletionsAPIClientEvents[T]) => any,
    ): void;

    /**
     * Creates a model response for the given chat conversation. [https://developers.openai.com/api/reference/resources/chat/subresources/completions/methods/create](https://developers.openai.com/api/reference/resources/chat/subresources/completions/methods/create)
     * @param parameters
     */
    createChatCompletions(parameters: Object): void
  }
}
  
declare namespace OpenAI {
  /**
   * @event
   */
  enum ChatCompletionsAPIEvents {
    /**
     * The unknown event.
     * @typedef _ChatCompletionsAPIEvent
     */
    Unknown = 'OpenAI.ChatCompletionsAPI.Unknown',

    /**
     * Represents a streamed chunk of a chat completion response returned by the model, based on the provided input. [https://developers.openai.com/api/reference/resources/chat/subresources/completions#(resource)%20chat.completions%20%3E%20(model)%20chat_completion_chunk%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/chat/subresources/completions#(resource)%20chat.completions%20%3E%20(model)%20chat_completion_chunk%20%3E%20(schema))
     * @typedef _ChatCompletionsAPIEvent
     */
    Chunk = 'OpenAI.ChatCompletionsAPI.Chunk',

    /**
     * The chat completion content event.
     * @typedef _ChatCompletionsAPIEvent
     */
    Content = 'OpenAI.ChatCompletionsAPI.Content',

    /**
     * The chat completion content delta event.
     * @typedef _ChatCompletionsAPIEvent
     */
    ContentDelta = 'OpenAI.ChatCompletionsAPI.ContentDelta',

    /**
     * The chat completion content done event.
     * @typedef _ChatCompletionsAPIEvent
     */
    ContentDone = 'OpenAI.ChatCompletionsAPI.ContentDone',

    /**
     * The chat completion refusal delta event.
     * @typedef _ChatCompletionsAPIEvent
     */
    RefusalDelta = 'OpenAI.ChatCompletionsAPI.RefusalDelta',

    /**
     * The chat completion refusal done event.
     * @typedef _ChatCompletionsAPIEvent
     */
    RefusalDone = 'OpenAI.ChatCompletionsAPI.RefusalDone',

    /**
     * The chat completion function tool call arguments delta event.
     * @typedef _ChatCompletionsAPIEvent
     */
    FunctionToolCallArgumentsDelta = 'OpenAI.ChatCompletionsAPI.FunctionToolCallArgumentsDelta',

    /**
     * The chat completion function tool call arguments done event.
     * @typedef _ChatCompletionsAPIEvent
     */
    FunctionToolCallArgumentsDone = 'OpenAI.ChatCompletionsAPI.FunctionToolCallArgumentsDone',

    /**
     * The chat completion log probs content delta event.
     * @typedef _ChatCompletionsAPIEvent
     */
    LogProbsContentDelta = 'OpenAI.ChatCompletionsAPI.LogProbsContentDelta',

    /**
     * The chat completion log probs content done event.
     * @typedef _ChatCompletionsAPIEvent
     */
    LogProbsContentDone = 'OpenAI.ChatCompletionsAPI.LogProbsContentDone',

    /**
     * The chat completion log probs refusal delta event.
     * @typedef _ChatCompletionsAPIEvent
     */
    LogProbsRefusalDelta = 'OpenAI.ChatCompletionsAPI.LogProbsRefusalDelta',

    /**
     * The chat completion log probs refusal done event.
     * @typedef _ChatCompletionsAPIEvent
     */
    LogProbsRefusalDone = 'OpenAI.ChatCompletionsAPI.LogProbsRefusalDone',

    /**
     * Contains Chat Completions API error.
     * @typedef _ChatCompletionsAPIEvent
     */
    ChatCompletionsAPIError = 'OpenAI.ChatCompletionsAPI.ChatCompletionsAPIError',

    /**
    * Contains information about connector.
    * @typedef _ChatCompletionsAPIEvent
    */
    ConnectorInformation = 'OpenAI.ChatCompletionsAPI.ConnectorInformation',
  }

  /**
   * @private
   */
  interface _ChatCompletionsAPIEvents {
    [ChatCompletionsAPIEvents.Unknown]: _ChatCompletionsAPIEvent;

    [ChatCompletionsAPIEvents.Chunk]: _ChatCompletionsAPIEvent;
    [ChatCompletionsAPIEvents.Content]: _ChatCompletionsAPIEvent;
    [ChatCompletionsAPIEvents.ContentDelta]: _ChatCompletionsAPIEvent;
    [ChatCompletionsAPIEvents.ContentDone]: _ChatCompletionsAPIEvent;
    [ChatCompletionsAPIEvents.RefusalDelta]: _ChatCompletionsAPIEvent;
    [ChatCompletionsAPIEvents.RefusalDone]: _ChatCompletionsAPIEvent;
    [ChatCompletionsAPIEvents.FunctionToolCallArgumentsDelta]: _ChatCompletionsAPIEvent;
    [ChatCompletionsAPIEvents.FunctionToolCallArgumentsDone]: _ChatCompletionsAPIEvent;
    [ChatCompletionsAPIEvents.LogProbsContentDelta]: _ChatCompletionsAPIEvent;
    [ChatCompletionsAPIEvents.LogProbsContentDone]: _ChatCompletionsAPIEvent;
    [ChatCompletionsAPIEvents.LogProbsRefusalDelta]: _ChatCompletionsAPIEvent;
    [ChatCompletionsAPIEvents.LogProbsRefusalDone]: _ChatCompletionsAPIEvent;

    [ChatCompletionsAPIEvents.ChatCompletionsAPIError]: _ChatCompletionsAPIEvent;

    [ChatCompletionsAPIEvents.ConnectorInformation]: _ChatCompletionsAPIEvent;
  }

  /**
   * @private
   */
  interface _ChatCompletionsAPIEvent {
    /**
     * The [OpenAI.ChatCompletionsAPIClient] instance.
     */
    client: ChatCompletionsAPIClient;
    /**
     * The event's data.
     */
    data?: Object;
  }
}


declare namespace OpenAI {
    /**
     * Creates a new [OpenAI.ChatCompletionsAPIClient] instance.
     * @param parameters The [OpenAI.ChatCompletionsAPIClient] parameters
     */
    function createChatCompletionsAPIClient(parameters: ChatCompletionsAPIClientParameters): Promise<OpenAI.ChatCompletionsAPIClient>
}
declare namespace OpenAI {
    /**
     * Creates a new [OpenAI.RealtimeAPIClient] instance.
     * @param parameters The [OpenAI.RealtimeAPIClient] parameters
     */
    function createRealtimeAPIClient(parameters: RealtimeAPIClientParameters): Promise<OpenAI.RealtimeAPIClient>
}
declare namespace OpenAI {
    /**
     * Creates a new [OpenAI.ResponsesAPIClient] instance.
     * @param parameters The [OpenAI.ResponsesAPIClient] parameters
     */
    function createResponsesAPIClient(parameters: ResponsesAPIClientParameters): Promise<OpenAI.ResponsesAPIClient>
}
declare namespace OpenAI {
  /**
   * @event
   */
  enum Events {
    /**
     * Triggered when the audio stream sent by a third party through an OpenAI WebSocket is started playing.
     * @typedef _WebSocketMediaStartedOpenAIEvent
     */
    WebSocketMediaStarted = 'OpenAI.Events.WebSocketMediaStarted',
    /**
     * Triggers after the end of the audio stream sent by a third party through an OpenAI WebSocket (**1 second of silence**).
     * @typedef _WebSocketMediaEndedOpenAIEvent
     */
    WebSocketMediaEnded = 'OpenAI.Events.WebSocketMediaEnded',
  }

  /**
   * @private
   */
  interface _Events {
    [OpenAI.Events.WebSocketMediaStarted]: _WebSocketMediaStartedOpenAIEvent;
    [OpenAI.Events.WebSocketMediaEnded]: _WebSocketMediaEndedOpenAIEvent;
  }

  /**
   * @private
   */
  interface _Event {
    /**
     * The [OpenAI.RealtimeAPIClient] or [OpenAI.ResponsesAPIClient] | [OpenAI.ChatCompletionsAPIClient] instance.
     */
    client: RealtimeAPIClient | ResponsesAPIClient | ChatCompletionsAPIClient;
  }

  /**
   * @private
   */
  interface _WebSocketMediaStartedOpenAIEvent extends _Event, _WebSocketMediaStartedWithoutWebSocketEvent {
  }

  /**
   * @private
   */
  interface _WebSocketMediaEndedOpenAIEvent extends _Event, _WebSocketMediaEndedWithoutWebSocketEvent {
  }
}
declare namespace OpenAI {
}
declare namespace OpenAI {
  /**
   * @private
   */
  interface _RealtimeAPIClientEvents extends _Events, _RealtimeAPIEvents {
  }
}
declare namespace OpenAI {
  /**
   * [OpenAI.RealtimeAPIClient] parameters. Can be passed as arguments to the [OpenAI.createRealtimeAPIClient] method.
   */
  interface RealtimeAPIClientParameters extends _VoiceAIClientParameters {
    /**
     * The API key for the OpenAI Realtime API.
     */
    apiKey: string;
    /**
     * Optional. The model to use for OpenAI Realtime API processing. The default value is **gpt-realtime**.
     */
    model?: string;
    /**
     * Optional. The type of the client. The default value is **OpenAI.RealtimeAPIClientType.REALTIME**.
     */
    type?: OpenAI.RealtimeAPIClientType;
    /**
     * Optional. The base URL for the OpenAI Realtime API. The default value is **https://api.openai.com/**.
     */
    baseUrl?: string;
  }
}
declare namespace OpenAI {
  /**
   * [OpenAI.RealtimeAPIClient] parameters. Can be passed as arguments to the [OpenAI.createRealtimeAPIClient] method.
   */
  enum RealtimeAPIClientType {
    /**
     * The client type for real-time interactions.
     */
    REALTIME =  "realtime",
    /**
     * The client type for transcription tasks.
     */
    TRANSCRIPTION =  "transcription",
  }
}

declare namespace OpenAI {
  class RealtimeAPIClient {
    /**
     * Returns the RealtimeAPIClient id.
     */
    id(): string;

    /**
     * Returns the OpenAI WebSocket id.
     */
    webSocketId(): string;

    /**
     * Closes the OpenAI connection (over WebSocket) or connection attempt.
     */
    close(): void;

    /**
     * Starts sending media from the OpenAI (via WebSocket) to the media unit. OpenAI works in real time.
     * @param mediaUnit Media unit that receives media
     * @param parameters Optional interaction parameters
     */
    sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

    /**
     * Stops sending media from the OpenAI (via WebSocket) to the media unit.
     * @param mediaUnit Media unit that stops receiving media
     */
    stopMediaTo(mediaUnit: VoxMediaUnit): void;

    /**
     * Clears the OpenAI WebSocket media buffer.
     * @param parameters Optional. Media buffer clearing parameters
     */
    clearMediaBuffer(parameters?: ClearMediaBufferParameters): void;

    /**
     * Adds a handler for the specified [OpenAI.RealtimeAPIEvents] or [OpenAI.Events] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event Event class (i.e., [OpenAI.RealtimeAPIEvents.SessionCreated])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof OpenAI._RealtimeAPIClientEvents>(
      event: OpenAI.Events | OpenAI.RealtimeAPIEvents | T,
      callback: (event: OpenAI._RealtimeAPIClientEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [OpenAI.RealtimeAPIEvents] or [OpenAI.Events] event.
     * @param event Event class (i.e., [OpenAI.RealtimeAPIEvents.SessionCreated])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof OpenAI._RealtimeAPIClientEvents>(
      event: OpenAI.Events | OpenAI.RealtimeAPIEvents | T,
      callback?: (event: OpenAI._RealtimeAPIClientEvents[T]) => any,
    ): void;

    /**
     * Send this event to update the session’s configuration. [https://platform.openai.com/docs/api-reference/realtime-client-events/session/update](https://platform.openai.com/docs/api-reference/realtime-client-events/session/update)
     * @param parameters
     */
    sessionUpdate(parameters: Object): void

    /**
     * Send this event to clear the audio bytes in the buffer. [https://platform.openai.com/docs/api-reference/realtime-client-events/input_audio_buffer/clear](https://platform.openai.com/docs/api-reference/realtime-client-events/input_audio_buffer/clear)
     * @param parameters
     */
    inputAudioBufferClear(parameters: Object): void

    /**
     * Add a new Item to the Conversation's context. [https://platform.openai.com/docs/api-reference/realtime-client-events/conversation/item/create](https://platform.openai.com/docs/api-reference/realtime-client-events/conversation/item/create)
     * @param parameters
     */
    conversationItemCreate(parameters: Object): void

    /**
     * Send this event when you want to retrieve the server's representation of a specific item in the conversation history. [https://platform.openai.com/docs/api-reference/realtime-client-events/conversation/item/retrieve](https://platform.openai.com/docs/api-reference/realtime-client-events/conversation/item/retrieve)
     * @param parameters
     */
    conversationItemRetrieve(parameters: Object): void

    /**
     * Send this event to truncate a previous assistant message’s audio. [https://platform.openai.com/docs/api-reference/realtime-client-events/conversation/item/truncate](https://platform.openai.com/docs/api-reference/realtime-client-events/conversation/item/truncate)
     * @param parameters
     */
    conversationItemTruncate(parameters: Object): void

    /**
     * Send this event when you want to remove any item from the conversation history. [https://platform.openai.com/docs/api-reference/realtime-client-events/conversation/item/delete](https://platform.openai.com/docs/api-reference/realtime-client-events/conversation/item/delete)
     * @param parameters
     */
    conversationItemDelete(parameters: Object): void

    /**
     * This event instructs the server to create a Response, which means triggering model inference. [https://platform.openai.com/docs/api-reference/realtime-client-events/response/create](https://platform.openai.com/docs/api-reference/realtime-client-events/response/create)
     * @param parameters
     */
    responseCreate(parameters: Object): void

    /**
     * Send this event to cancel an in-progress response. [https://platform.openai.com/docs/api-reference/realtime-client-events/response/cancel](https://platform.openai.com/docs/api-reference/realtime-client-events/response/cancel)
     * @param parameters
     */
    responseCancel(parameters: Object): void
  }
}
  
declare namespace OpenAI {
  /**
   * @event
   */
  enum RealtimeAPIEvents {
    /**
     * The unknown event.
     * @typedef _RealtimeAPIEvent
     */
    Unknown = 'OpenAI.RealtimeAPI.Unknown',

    /**
     * The HTTP response event.
     * @typedef _RealtimeAPIEvent
     */
    HTTPResponse = 'OpenAI.RealtimeAPI.HTTPResponse',

    /**
     * Returned when an error occurs, which could be a client problem or a server problem. [https://platform.openai.com/docs/api-reference/realtime-server-events/error](https://platform.openai.com/docs/api-reference/realtime-server-events/error)
     * @typedef _RealtimeAPIEvent
     */
    Error = 'OpenAI.RealtimeAPI.Error',

    /**
     * Returned when a Session is created. [https://platform.openai.com/docs/api-reference/realtime-server-events/session/created](https://platform.openai.com/docs/api-reference/realtime-server-events/session/created)
     * @typedef _RealtimeAPIEvent
     */
    SessionCreated = 'OpenAI.RealtimeAPI.SessionCreated',

    /**
     * Returned when a session is updated with a session.update event, unless there is an error. [https://platform.openai.com/docs/api-reference/realtime-server-events/session/updated](https://platform.openai.com/docs/api-reference/realtime-server-events/session/updated)
     * @typedef _RealtimeAPIEvent
     */
    SessionUpdated = 'OpenAI.RealtimeAPI.SessionUpdated',

    /**
     * Sent by the server when an Item is added to the default Conversation. [https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/added](https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/added)
     * @typedef _RealtimeAPIEvent
     */
    ConversationItemAdded = 'OpenAI.RealtimeAPI.ConversationItemAdded',

    /**
     * Returned when a conversation item is finalized. [https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/done](https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/done)
     * @typedef _RealtimeAPIEvent
     */
    ConversationItemDone = 'OpenAI.RealtimeAPI.ConversationItemDone',

    /**
     * Returned when a conversation item is retrieved with conversation.item.retrieve. [https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/retrieved](https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/retrieved)
     * @typedef _RealtimeAPIEvent
     */
    ConversationItemRetrieved = 'OpenAI.RealtimeAPI.ConversationItemRetrieved',

    /**
     * This event is the output of audio transcription for user audio written to the user audio buffer. [https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/input_audio_transcription/completed](https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/input_audio_transcription/completed)
     * @typedef _RealtimeAPIEvent
     */
    ConversationItemInputAudioTranscriptionCompleted = 'OpenAI.RealtimeAPI.ConversationItemInputAudioTranscriptionCompleted',

    /**
     * Returned when the text value of an input audio transcription content part is updated with incremental transcription results. [https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/input_audio_transcription/delta](https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/input_audio_transcription/delta)
     * @typedef _RealtimeAPIEvent
     */
    ConversationItemInputAudioTranscriptionDelta = 'OpenAI.RealtimeAPI.ConversationItemInputAudioTranscriptionDelta',

    /**
     * Returned when an input audio transcription segment is identified for an item. [https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/input_audio_transcription/segment](https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/input_audio_transcription/segment)
     * @typedef _RealtimeAPIEvent
     */
    ConversationItemInputAudioTranscriptionSegment = 'OpenAI.RealtimeAPI.ConversationItemInputAudioTranscriptionSegment',

    /**
     * Returned when input audio transcription is configured, and a transcription request for a user message failed.  [https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/input_audio_transcription/failed](https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/input_audio_transcription/failed)
     * @typedef _RealtimeAPIEvent
     */
    ConversationItemInputAudioTranscriptionFailed = 'OpenAI.RealtimeAPI.ConversationItemInputAudioTranscriptionFailed',

    /**
     * Returned when an earlier assistant audio message item is truncated by the client with a conversation.item.truncate event. [https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/truncated](https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/truncated)
     * @typedef _RealtimeAPIEvent
     */
    ConversationItemTruncated = 'OpenAI.RealtimeAPI.ConversationItemTruncated',

    /**
     * Returned when an item in the conversation is deleted by the client with a conversation.item.delete event. [https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/deleted](https://platform.openai.com/docs/api-reference/realtime-server-events/conversation/item/deleted)
     * @typedef _RealtimeAPIEvent
     */
    ConversationItemDeleted = 'OpenAI.RealtimeAPI.ConversationItemDeleted',

    /**
     * Returned when an input audio buffer is committed. [https://platform.openai.com/docs/api-reference/realtime-server-events/input_audio_buffer/committed](https://platform.openai.com/docs/api-reference/realtime-server-events/input_audio_buffer/committed)
     * @typedef _RealtimeAPIEvent
     */
    InputAudioBufferCommitted = 'OpenAI.RealtimeAPI.InputAudioBufferCommitted',

    /**
     * Returned when the input audio buffer is cleared by the client with an input_audio_buffer.clear event. [https://platform.openai.com/docs/api-reference/realtime-server-events/input_audio_buffer/cleared](https://platform.openai.com/docs/api-reference/realtime-server-events/input_audio_buffer/cleared)
     * @typedef _RealtimeAPIEvent
     */
    InputAudioBufferCleared = 'OpenAI.RealtimeAPI.InputAudioBufferCleared',

    /**
     * Sent by the server when in server_vad mode to indicate that speech has been detected in the audio buffer. [https://platform.openai.com/docs/api-reference/realtime-server-events/input_audio_buffer/speech_started](https://platform.openai.com/docs/api-reference/realtime-server-events/input_audio_buffer/speech_started)
     * @typedef _RealtimeAPIEvent
     */
    InputAudioBufferSpeechStarted = 'OpenAI.RealtimeAPI.InputAudioBufferSpeechStarted',

    /**
     * Returned in server_vad mode when the server detects the end of speech in the audio buffer. [https://platform.openai.com/docs/api-reference/realtime-server-events/input_audio_buffer/speech_stopped](https://platform.openai.com/docs/api-reference/realtime-server-events/input_audio_buffer/speech_stopped)
     * @typedef _RealtimeAPIEvent
     */
    InputAudioBufferSpeechStopped = 'OpenAI.RealtimeAPI.InputAudioBufferSpeechStopped',

    /**
     * Returned when the Server VAD timeout is triggered for the input audio buffer. [https://platform.openai.com/docs/api-reference/realtime-server-events/input_audio_buffer/timeout_triggered](https://platform.openai.com/docs/api-reference/realtime-server-events/input_audio_buffer/timeout_triggered)
     * @typedef _RealtimeAPIEvent
     */
    InputAudioBufferTimeoutTriggered = 'OpenAI.RealtimeAPI.InputAudioBufferTimeoutTriggered',

    /**
     * Returned when a new Response is created. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/created](https://platform.openai.com/docs/api-reference/realtime-server-events/response/created)
     * @typedef _RealtimeAPIEvent
     */
    ResponseCreated = 'OpenAI.RealtimeAPI.ResponseCreated',

    /**
     * Returned when a Response is done streaming. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/done](https://platform.openai.com/docs/api-reference/realtime-server-events/response/done)
     * @typedef _RealtimeAPIEvent
     */
    ResponseDone = 'OpenAI.RealtimeAPI.ResponseDone',

    /**
     * Returned when a new Item is created during Response generation. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_item/added](https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_item/added)
     * @typedef _RealtimeAPIEvent
     */
    ResponseOutputItemAdded = 'OpenAI.RealtimeAPI.ResponseOutputItemAdded',

    /**
     * Returned when an Item is done streaming. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_item/done](https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_item/done)
     * @typedef _RealtimeAPIEvent
     */
    ResponseOutputItemDone = 'OpenAI.RealtimeAPI.ResponseOutputItemDone',

    /**
     * Returned when a new content part is added to an assistant message item during response generation. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/content_part/added](https://platform.openai.com/docs/api-reference/realtime-server-events/response/content_part/added)
     * @typedef _RealtimeAPIEvent
     */
    ResponseContentPartAdded = 'OpenAI.RealtimeAPI.ResponseContentPartAdded',

    /**
     * Returned when a content part is done streaming in an assistant message item. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/content_part/done](https://platform.openai.com/docs/api-reference/realtime-server-events/response/content_part/done)
     * @typedef _RealtimeAPIEvent
     */
    ResponseContentPartDone = 'OpenAI.RealtimeAPI.ResponseContentPartDone',

    /**
     * Returned when the text value of an "output_text" content part is updated. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_text/delta](https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_text/delta)
     * @typedef _RealtimeAPIEvent
     */
    ResponseOutputTextDelta = 'OpenAI.RealtimeAPI.ResponseOutputTextDelta',

    /**
     * Returned when the text value of an "output_text" content part is done streaming. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_text/done](https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_text/done)
     * @typedef _RealtimeAPIEvent
     */
    ResponseOutputTextDone = 'OpenAI.RealtimeAPI.ResponseOutputTextDone',

    /**
     * Returned when the model-generated transcription of audio output is updated. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_audio_transcript/delta](https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_audio_transcript/delta)
     * @typedef _RealtimeAPIEvent
     */
    ResponseOutputAudioTranscriptDelta = 'OpenAI.RealtimeAPI.ResponseOutputAudioTranscriptDelta',

    /**
     * Returned when the model-generated transcription of audio output is done streaming. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_audio_transcript/done](https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_audio_transcript/done)
     * @typedef _RealtimeAPIEvent
     */
    ResponseOutputAudioTranscriptDone = 'OpenAI.RealtimeAPI.ResponseOutputAudioTranscriptDone',

    /**
     * Returned when the model-generated audio is done. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_audio/done](https://platform.openai.com/docs/api-reference/realtime-server-events/response/output_audio/done)
     * @typedef _RealtimeAPIEvent
     */
    ResponseOutputAudioDone = 'OpenAI.RealtimeAPI.ResponseOutputAudioDone',

    /**
     * Returned when the model-generated function call arguments are updated. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/function_call_arguments/delta](https://platform.openai.com/docs/api-reference/realtime-server-events/response/function_call_arguments/delta)
     * @typedef _RealtimeAPIEvent
     */
    ResponseFunctionCallArgumentsDelta = 'OpenAI.RealtimeAPI.ResponseFunctionCallArgumentsDelta',

    /**
     * Returned when the model-generated function call arguments are done streaming. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/function_call_arguments/done](https://platform.openai.com/docs/api-reference/realtime-server-events/response/function_call_arguments/done)
     * @typedef _RealtimeAPIEvent
     */
    ResponseFunctionCallArgumentsDone = 'OpenAI.RealtimeAPI.ResponseFunctionCallArgumentsDone',

    /**
     * Returned when MCP tool call arguments are updated during response generation. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/mcp_call_arguments/delta](https://platform.openai.com/docs/api-reference/realtime-server-events/response/mcp_call_arguments/delta)
     * @typedef _RealtimeAPIEvent
     */
    ResponseMCPCallArgumentsDelta = 'OpenAI.RealtimeAPI.ResponseMCPCallArgumentsDelta',

    /**
     * Returned when MCP tool call arguments are finalized during response generation. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/mcp_call_arguments/done](https://platform.openai.com/docs/api-reference/realtime-server-events/response/mcp_call_arguments/done)
     * @typedef _RealtimeAPIEvent
     */
    ResponseMCPCallArgumentsDone = 'OpenAI.RealtimeAPI.ResponseMCPCallArgumentsDone',

    /**
     * Returned when an MCP tool call has started and is in progress. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/mcp_call/in_progress](https://platform.openai.com/docs/api-reference/realtime-server-events/response/mcp_call/in_progress)
     * @typedef _RealtimeAPIEvent
     */
    ResponseMCPCallInProgress = 'OpenAI.RealtimeAPI.ResponseMCPCallInProgress',

    /**
     * Returned when an MCP tool call has completed successfully. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/mcp_call/completed](https://platform.openai.com/docs/api-reference/realtime-server-events/response/mcp_call/completed)
     * @typedef _RealtimeAPIEvent
     */
    ResponseMCPCallCompleted = 'OpenAI.RealtimeAPI.ResponseMCPCallCompleted',

    /**
     * Returned when an MCP tool call has failed. [https://platform.openai.com/docs/api-reference/realtime-server-events/response/mcp_call/failed](https://platform.openai.com/docs/api-reference/realtime-server-events/response/mcp_call/failed)
     * @typedef _RealtimeAPIEvent
     */
    ResponseMCPCallFailed = 'OpenAI.RealtimeAPI.ResponseMCPCallFailed',

    /**
     * Returned when listing MCP tools is in progress for an item. [https://platform.openai.com/docs/api-reference/realtime-server-events/mcp_list_tools/in_progress](https://platform.openai.com/docs/api-reference/realtime-server-events/mcp_list_tools/in_progress)
     * @typedef _RealtimeAPIEvent
     */
    MCPListToolsInProgress = 'OpenAI.RealtimeAPI.MCPListToolsInProgress',

    /**
     * Returned when listing MCP tools has completed for an item. [https://platform.openai.com/docs/api-reference/realtime-server-events/mcp_list_tools/completed](https://platform.openai.com/docs/api-reference/realtime-server-events/mcp_list_tools/completed)
     * @typedef _RealtimeAPIEvent
     */
    MCPListToolsCompleted = 'OpenAI.RealtimeAPI.MCPListToolsCompleted',

    /**
     * Returned when listing MCP tools has failed for an item. [https://platform.openai.com/docs/api-reference/realtime-server-events/mcp_list_tools/failed](https://platform.openai.com/docs/api-reference/realtime-server-events/mcp_list_tools/failed)
     * @typedef _RealtimeAPIEvent
     */
    MCPListToolsFailed = 'OpenAI.RealtimeAPI.MCPListToolsFailed',

    /**
     * Emitted at the beginning of a Response to indicate the updated rate limits. [https://platform.openai.com/docs/api-reference/realtime-server-events/rate_limits/updated](https://platform.openai.com/docs/api-reference/realtime-server-events/rate_limits/updated)
     * @typedef _RealtimeAPIEvent
     */
    RateLimitsUpdated = 'OpenAI.RealtimeAPI.ResponseMCPCallFailed',

    /**
     * The WebSocket error response event.
     * @typedef _RealtimeAPIEvent
     */
    WebSocketError = 'OpenAI.RealtimeAPI.WebSocketError',

    /**
    * Contains information about connector.
    * @typedef _RealtimeAPIEvent
    */
    ConnectorInformation = 'OpenAI.RealtimeAPI.ConnectorInformation',
  }

  /**
   * @private
   */
  interface _RealtimeAPIEvents {
    [RealtimeAPIEvents.Unknown]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.HTTPResponse]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.Error]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.SessionCreated]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.SessionUpdated]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemAdded]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemDone]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemRetrieved]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemInputAudioTranscriptionCompleted]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemInputAudioTranscriptionDelta]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemInputAudioTranscriptionSegment]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemInputAudioTranscriptionFailed]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemTruncated]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemDeleted]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.InputAudioBufferCommitted]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.InputAudioBufferCleared]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.InputAudioBufferSpeechStarted]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.InputAudioBufferSpeechStopped]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.InputAudioBufferTimeoutTriggered]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseCreated]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseDone]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseOutputItemAdded]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseOutputItemDone]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseContentPartAdded]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseContentPartDone]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseOutputTextDelta]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseOutputTextDone]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseOutputAudioTranscriptDelta]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseOutputAudioTranscriptDone]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseOutputAudioDone]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseFunctionCallArgumentsDelta]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseFunctionCallArgumentsDone]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseMCPCallArgumentsDelta]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseMCPCallArgumentsDone]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseMCPCallInProgress]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseMCPCallCompleted]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseMCPCallFailed]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.MCPListToolsInProgress]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.MCPListToolsCompleted]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.MCPListToolsFailed]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.RateLimitsUpdated]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.WebSocketError]: _RealtimeAPIEvent;
    [RealtimeAPIEvents.ConnectorInformation]: _RealtimeAPIEvent;
  }

  /**
   * @private
   */
  interface _RealtimeAPIEvent {
    /**
     * The [OpenAI.RealtimeAPIClient] instance.
     */
    client: RealtimeAPIClient;
    /**
     * The event's data.
     */
    data?: Object;
  }
}


declare namespace OpenAI {
  /**
   * @private
   */
  interface _ResponsesAPIClientEvents extends _Events, _ResponsesAPIEvents {
  }
}
declare namespace OpenAI {
  /**
   * [OpenAI.ResponsesAPIClient] parameters. Can be passed as arguments to the [OpenAI.createResponsesAPIClient] method.
   */
  interface ResponsesAPIClientParameters extends _WebSocketBasedClientParameters {
    /**
     * The API key for the OpenAI API.
     */
    apiKey: string;
    /**
     * Optional. Whether to store the context in the client. The default value is **false**.
     */
    storeContext?: boolean;
    /**
     * Optional. The base URL for the OpenAI API.
     */
    baseUrl?: string;
    /**
     * Optional. The project for the OpenAI API.
     */
    project?: string;
  }
}
declare namespace OpenAI {
  class ResponsesAPIClient {
    /**
     * Returns the ResponsesAPIClient id.
     */
    id(): string;

    /**
     * Returns the OpenAI WebSocket id.
     */
    webSocketId(): string;

    /**
     * Closes the OpenAI connection (over WebSocket) or connection attempt.
     */
    close(): void;

    /**
     * Adds a handler for the specified [OpenAI.ResponsesAPIEvents] or [OpenAI.Events] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event Event class (i.e., [OpenAI.ResponsesAPIEvents.ResponseCompleted])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof OpenAI._ResponsesAPIClientEvents>(
      event: OpenAI.Events | OpenAI.ResponsesAPIEvents | T,
      callback: (event: OpenAI._ResponsesAPIClientEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [OpenAI.ResponsesAPIEvents] or [OpenAI.Events] event.
     * @param event Event class (i.e., [OpenAI.ResponsesAPIEvents.ResponseCompleted])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof OpenAI._ResponsesAPIClientEvents>(
      event: OpenAI.Events | OpenAI.ResponsesAPIEvents | T,
      callback?: (event: OpenAI._ResponsesAPIClientEvents[T]) => any,
    ): void;

    /**
     * Creates a model response. [https://developers.openai.com/api/reference/resources/responses/methods/create](https://developers.openai.com/api/reference/resources/responses/methods/create)
     * @param parameters
     */
    createResponses(parameters: Object): void
  }
}
  
declare namespace OpenAI {
  /**
   * @event
   */
  enum ResponsesAPIEvents {
    /**
     * The unknown event.
     * @typedef _ResponsesAPIEvent
     */
    Unknown = 'OpenAI.ResponsesAPI.Unknown',

    /**
     * Emitted when a partial code snippet is streamed by the code interpreter. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseCodeInterpreterCallCodeDelta = 'OpenAI.ResponsesAPI.ResponseCodeInterpreterCallCodeDelta',

    /**
     * Emitted when the code snippet is finalized by the code interpreter. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseCodeInterpreterCallCodeDone = 'OpenAI.ResponsesAPI.ResponseCodeInterpreterCallCodeDone',

    /**
     * Emitted when the code interpreter call is completed. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseCodeInterpreterCallCompleted = 'OpenAI.ResponsesAPI.ResponseCodeInterpreterCallCompleted',

    /**
     * Emitted when a code interpreter call is in progress. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseCodeInterpreterCallInProgress = 'OpenAI.ResponsesAPI.ResponseCodeInterpreterCallInProgress',

    /**
     * Emitted when the code interpreter is actively interpreting the code snippet. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseCodeInterpreterCallInterpreting = 'OpenAI.ResponsesAPI.ResponseCodeInterpreterCallInterpreting',

    /**
     * Emitted when the model response is complete. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseCompleted = 'OpenAI.ResponsesAPI.ResponseCompleted',

    /**
     * Emitted when a new content part is added. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseContentPartAdded = 'OpenAI.ResponsesAPI.ResponseContentPartAdded',

    /**
     * Emitted when a content part is done. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseContentPartDone = 'OpenAI.ResponsesAPI.ResponseContentPartDone',

    /**
     * An event that is emitted when a response is created. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseCreated = 'OpenAI.ResponsesAPI.ResponseCreated',

    /**
     * Emitted when an error occurs. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseError = 'OpenAI.ResponsesAPI.ResponseError',

    /**
     * Emitted when a file search call is completed (results found). [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseFileSearchCallCompleted = 'OpenAI.ResponsesAPI.ResponseFileSearchCallCompleted',

    /**
     * Emitted when a file search call is initiated. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseFileSearchCallInProgress = 'OpenAI.ResponsesAPI.ResponseFileSearchCallInProgress',

    /**
     * Emitted when a file search is currently searching. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseFileSearchCallSearching = 'OpenAI.ResponsesAPI.ResponseFileSearchCallSearching',

    /**
     * Emitted when there is a partial function-call arguments delta. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseFunctionCallArgumentsDelta = 'OpenAI.ResponsesAPI.ResponseFunctionCallArgumentsDelta',

    /**
     * Emitted when function-call arguments are finalized. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseFunctionCallArgumentsDone = 'OpenAI.ResponsesAPI.ResponseFunctionCallArgumentsDone',

    /**
     * Emitted when the response is in progress. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseInProgress = 'OpenAI.ResponsesAPI.ResponseInProgress',

    /**
     * An event that is emitted when a response fails. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseFailed = 'OpenAI.ResponsesAPI.ResponseFailed',

    /**
     * An event that is emitted when a response finishes as incomplete. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseIncomplete = 'OpenAI.ResponsesAPI.ResponseIncomplete',

    /**
     * Emitted when a new output item is added. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseOutputItemAdded = 'OpenAI.ResponsesAPI.ResponseOutputItemAdded',

    /**
     * Emitted when an output item is marked done. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseOutputItemDone = 'OpenAI.ResponsesAPI.ResponseOutputItemDone',

    /**
     * Emitted when a new reasoning summary part is added. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseReasoningSummaryPartAdded = 'OpenAI.ResponsesAPI.ResponseReasoningSummaryPartAdded',

    /**
     * Emitted when a reasoning summary part is completed. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseReasoningSummaryPartDone = 'OpenAI.ResponsesAPI.ResponseReasoningSummaryPartDone',

    /**
     * Emitted when a delta is added to a reasoning summary text. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseReasoningSummaryTextDelta = 'OpenAI.ResponsesAPI.ResponseReasoningSummaryTextDelta',

    /**
     * Emitted when a reasoning summary text is completed. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseReasoningSummaryTextDone = 'OpenAI.ResponsesAPI.ResponseReasoningSummaryTextDone',

    /**
     * Emitted when a delta is added to a reasoning text. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseReasoningTextDelta = 'OpenAI.ResponsesAPI.ResponseReasoningTextDelta',

    /**
     * Emitted when a reasoning text is completed. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseReasoningTextDone = 'OpenAI.ResponsesAPI.ResponseReasoningTextDone',

    /**
     * Emitted when there is a partial refusal text. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseRefusalDelta = 'OpenAI.ResponsesAPI.ResponseRefusalDelta',

    /**
     * Emitted when refusal text is finalized. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseRefusalDone = 'OpenAI.ResponsesAPI.ResponseRefusalDone',

    /**
     * Emitted when there is an additional text delta. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseTextDelta = 'OpenAI.ResponsesAPI.ResponseTextDelta',

    /**
     * Emitted when text content is finalized. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseTextDone = 'OpenAI.ResponsesAPI.ResponseTextDone',

    /**
     * Emitted when a web search call is completed. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseWebSearchCallCompleted = 'OpenAI.ResponsesAPI.ResponseWebSearchCallCompleted',

    /**
     * Emitted when a web search call is initiated. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseWebSearchCallInProgress = 'OpenAI.ResponsesAPI.ResponseWebSearchCallInProgress',

    /**
     * Emitted when a web search call is executing. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseWebSearchCallSearching = 'OpenAI.ResponsesAPI.ResponseWebSearchCallSearching',

    /**
     * Emitted when an image generation tool call has completed and the final image is available. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseImageGenCallCompleted = 'OpenAI.ResponsesAPI.ResponseImageGenCallCompleted',

    /**
     * Emitted when an image generation tool call is actively generating an image (intermediate state). [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseImageGenCallGenerating = 'OpenAI.ResponsesAPI.ResponseImageGenCallGenerating',

    /**
     * Emitted when an image generation tool call is in progress. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseImageGenCallInProgress = 'OpenAI.ResponsesAPI.ResponseImageGenCallInProgress',

    /**
     * Emitted when a partial image is available during image generation streaming. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseImageGenCallPartialImage = 'OpenAI.ResponsesAPI.ResponseImageGenCallPartialImage',

    /**
     * Emitted when there is a delta (partial update) to the arguments of an MCP tool call. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseMCPCallArgumentsDelta = 'OpenAI.ResponsesAPI.ResponseMCPCallArgumentsDelta',

    /**
     * Emitted when the arguments for an MCP tool call are finalized. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseMCPCallArgumentsDone = 'OpenAI.ResponsesAPI.ResponseMCPCallArgumentsDone',

    /**
     * Emitted when an MCP tool call has completed successfully. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseMCPCallCompleted = 'OpenAI.ResponsesAPI.ResponseMCPCallCompleted',

    /**
     * Emitted when an MCP tool call has failed. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseMCPCallFailed = 'OpenAI.ResponsesAPI.ResponseMCPCallFailed',

    /**
     * Emitted when an MCP tool call is in progress. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseMCPCallInProgress = 'OpenAI.ResponsesAPI.ResponseMCPCallInProgress',

    /**
     * Emitted when the list of available MCP tools has been successfully retrieved. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseMCPListToolsCompleted = 'OpenAI.ResponsesAPI.ResponseMCPListToolsCompleted',

    /**
     * Emitted when the attempt to list available MCP tools has failed. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseMCPListToolsFailed = 'OpenAI.ResponsesAPI.ResponseMCPListToolsFailed',

    /**
     * Emitted when the system is in the process of retrieving the list of available MCP tools. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseMCPListToolsInProgress = 'OpenAI.ResponsesAPI.ResponseMCPListToolsInProgress',

    /**
     * Emitted when an annotation is added to output text content. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseOutputTextAnnotationAdded = 'OpenAI.ResponsesAPI.ResponseOutputTextAnnotationAdded',

    /**
     * Emitted when a response is queued and waiting to be processed. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseQueued = 'OpenAI.ResponsesAPI.ResponseQueued',

    /**
     * Event representing a delta (partial update) to the input of a custom tool call. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseCustomToolCallInputDelta = 'OpenAI.ResponsesAPI.ResponseCustomToolCallInputDelta',

    /**
     * Event indicating that input for a custom tool call is complete. [https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema)](https://developers.openai.com/api/reference/resources/responses#(resource)%20responses%20%3E%20(model)%20response_stream_event%20%3E%20(schema))
     * @typedef _ResponsesAPIEvent
     */
    ResponseCustomToolCallInputDone = 'OpenAI.ResponsesAPI.ResponseCustomToolCallInputDone',

    /**
     * Contains Responses API error.
     * @typedef _ResponsesAPIEvent
     */
    ResponsesAPIError = 'OpenAI.ResponsesAPI.ResponsesAPIError',

    /**
    * Contains information about connector.
    * @typedef _ResponsesAPIEvent
    */
    ConnectorInformation = 'OpenAI.ResponsesAPI.ConnectorInformation',
  }

  /**
   * @private
   */
  interface _ResponsesAPIEvents {
    [ResponsesAPIEvents.Unknown]: _ResponsesAPIEvent;

    [ResponsesAPIEvents.ResponseCodeInterpreterCallCodeDelta]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseCodeInterpreterCallCodeDone]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseCodeInterpreterCallCompleted]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseCodeInterpreterCallInProgress]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseCodeInterpreterCallInterpreting]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseCompleted]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseContentPartAdded]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseContentPartDone]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseCreated]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseError]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseFileSearchCallCompleted]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseFileSearchCallInProgress]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseFileSearchCallSearching]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseFunctionCallArgumentsDelta]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseFunctionCallArgumentsDone]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseInProgress]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseFailed]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseIncomplete]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseOutputItemAdded]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseOutputItemDone]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseReasoningSummaryPartAdded]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseReasoningSummaryPartDone]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseReasoningSummaryTextDelta]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseReasoningSummaryTextDone]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseReasoningTextDelta]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseReasoningTextDone]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseRefusalDelta]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseRefusalDone]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseTextDelta]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseTextDone]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseWebSearchCallCompleted]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseWebSearchCallInProgress]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseWebSearchCallSearching]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseImageGenCallCompleted]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseImageGenCallGenerating]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseImageGenCallInProgress]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseImageGenCallPartialImage]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseMCPCallArgumentsDelta]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseMCPCallArgumentsDone]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseMCPCallCompleted]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseMCPCallFailed]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseMCPCallInProgress]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseMCPListToolsCompleted]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseMCPListToolsFailed]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseMCPListToolsInProgress]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseOutputTextAnnotationAdded]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseQueued]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseCustomToolCallInputDelta]: _ResponsesAPIEvent;
    [ResponsesAPIEvents.ResponseCustomToolCallInputDone]: _ResponsesAPIEvent;

    [ResponsesAPIEvents.ResponsesAPIError]: _ResponsesAPIEvent;

    [ResponsesAPIEvents.ConnectorInformation]: _ResponsesAPIEvent;
  }

  /**
   * @private
   */
  interface _ResponsesAPIEvent {
    /**
     * The [OpenAI.ResponsesAPIClient] instance.
     */
    client: ResponsesAPIClient;
    /**
     * The event's data.
     */
    data?: Object;
  }
}


/**
 * Which media streams to receive from the endpoint. Can be passed as a [ReceiveParameters] parameter. Consists of optional video and audio keys.
 * <br>
 * For each key, specify the <b>["default"]</b> value to receive all media streams, specify the empty array <b>[]</b> value to receive no media streams, or specify the media stream IDs (for example, <b>["v1", "v10"]</b>) to receive specific media streams.
 */
interface ParticipantReceiveParameters {
  /**
   * Video streams to receive.
   */
  video?: Array<'default' | string>;
  /**
   * Audio streams to receive.
   */
  audio?: Array<'default' | string>;
}

declare namespace PhoneNumber {
  /**
   * Get the phone number info.
   * @param number Phone number in country specific format, or E.164 if starts with +
   * @param country 2-digit country code to get number format, if not specified, number is treated as E.164, e.g. "RU", "US"
   */
  function getInfo(number: string, country?: string): Info;
}

declare namespace PhoneNumber {
  interface Info {
    /**
     * Number type, one of: FIXED\_LINE, MOBILE, FIXED\_LINE\_OR\_MOBILE, TOLL\_FREE, PREMIUM\_RATE, SHARED\_COST, VOIP, PERSONAL\_NUMBER, PAGER, UAN, VOICEMAIL, UNKNOWN
     */
    numberType: string;
    /**
     * 2-letter country code of specified phone number (ISO 3166-1)
     */
    region: string;
    /**
     * The phone number's city, state and country. If the city (or state) is unavailable, only state and country (or just country) is shown
     */
    location: string;
    /**
     * Whether the number is possible in specified country (just by analyzing length information)
     */
    isPossibleNumber: boolean;
    /**
     * Whether the number is valid in specified country
     */
    isValidNumber: boolean;
    /**
     * Whether the number is valid in detected region
     */
    isValidNumberForRegion: boolean;
    /**
     * Number in international E.164 format, starting with +
     */
    number: string;
    /**
     * Optional. Error string. Possible values are: INVALID\_COUNTRY\_CODE, NOT\_A\_NUMBER, TOO\_SHORT\_AFTER\_IDD, TOO\_SHORT\_NSN, TOO\_LONG\_NSN
     */
    error?: string;
  }
}

declare namespace PhoneNumber {}

declare namespace Pipecat {
    /**
     * Creates a [Pipecat.TurnDetector] instance.
     * @param parameters The [Pipecat.TurnDetector] parameters
     */
    function createTurnDetector(parameters: TurnDetectorParameters): Promise<Pipecat.TurnDetector>
}
declare namespace Pipecat {
}
declare namespace Pipecat {
  class TurnDetector {
    /**
     * Returns the TurnDetector id.
     */
    id(): string;

    /**
     * Returns the TurnDetector WebSocket id.
     */
    webSocketId(): string;

    /**
     * Closes the TurnDetector connection (over WebSocket) or connection attempt.
     */
    close(): void;

    /**
     * Reset the TurnDetector context.
     */
    reset(): void;

    /**
     * Triggers the TurnDetector to analyze the current audio and make a prediction. The result is returned in the [Pipecat.TurnEvents.Result] event.
     */
    predict(): void;

    /**
     * Adds a handler for the specified [Pipecat.TurnEvents] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event Event class (i.e., [Pipecat.TurnEvents.Result])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof Pipecat._TurnEvents>(
      event:  Pipecat.TurnEvents | T,
      callback: (event: Pipecat._TurnEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [Pipecat.TurnEvents] event.
     * @param event Event class (i.e., [Pipecat.TurnEvents.Result])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof Pipecat._TurnEvents>(
      event: Pipecat.TurnEvents | T,
      callback?: (event: Pipecat._TurnEvents[T]) => any,
    ): void;
  }
}

declare namespace Pipecat {
  /**
   * @event
   */
  enum TurnEvents {
    /**
     * The [Pipecat.TurnDetector] result.
     * @typedef _PipecatTurnResultEvent
     */
    Result = 'Pipecat.Turn.Result',

    /**
     * The [Pipecat.TurnDetector] is reset.
     * @typedef _PipecatTurnResetEvent
     */
    Reset = 'Pipecat.Turn.Reset',

    /**
     * The error response event.
     * @typedef _PipecatTurnErrorEvent
     */
    Error = 'Pipecat.Turn.Error',

    /**
     * Contains information about connector.
     * @typedef _PipecatTurnConnectorInformationEvent
     */
    ConnectorInformation = 'Pipecat.Turn.ConnectorInformation',
  }

  /**
   * @private
   */
  interface _TurnEvents {
    [TurnEvents.Result]: _PipecatTurnResultEvent;
    [TurnEvents.Reset]: _PipecatTurnResetEvent;
    [TurnEvents.Error]: _PipecatTurnErrorEvent;
    [TurnEvents.ConnectorInformation]: _PipecatTurnConnectorInformationEvent;
  }

  /**
   * @private
   */
  interface _PipecatTurnEvent {
    /**
     * The [Pipecat.TurnDetector] instance.
     */
    turnDetector: TurnDetector;
  }

  /**
   * @private
   */
  interface _PipecatTurnResultEvent extends _PipecatTurnEvent {
    /**
     * Indicates whether the event is emitted at the end of the turn. Is **true** when the model predicts the end of the turn.
     */
    endOfTurn: boolean;
    /**
     * The probability of the result, in the range [0.0, 1.0].
     */
    probability: number;
  }

  /**
   * @private
   */
  interface _PipecatTurnResetEvent extends _PipecatTurnEvent {
  }

  /**
   * @private
   */
  interface _PipecatTurnErrorEvent extends _PipecatTurnEvent {
    /**
     * The error reason.
     */
    reason: string;
  }

  /**
   * @private
   */
  interface _PipecatTurnConnectorInformationEvent extends _PipecatTurnEvent {
    /**
     * The event's data.
     */
    data?: Object
  }
}

declare namespace Pipecat {
  /**
   * [Pipecat.TurnDetector] parameters. Can be passed as arguments to the [Pipecat.createTurnDetector] method.
   */
  interface TurnDetectorParameters extends _WebSocketBasedClientParameters {
    /**
     * Optional. The probability threshold above which we detect the end of the turn (in the range [0.0, 1.0]). The default value is **0.5**.
     */
    threshold?: number;
  }
}
  
/**
 * @event
 */
declare enum PlayerEvents {
  /**
   * Triggered when [Player] created.
   * @typedef _PlayerCreatedEvent
   */
  Created = 'Player.Created',

  /**
   * Triggers by the [createURLPlayer] and [createTTSPlayer] methods when<br>
   * 1) the audio file download to the Voximplant cache is finished;<br>
   * 2) the audio file is found in the cache (i.e., it is in the cache before).
   * @typedef _PlayerPlaybackReadyEvent
   */
  PlaybackReady = 'Player.PlaybackReady',

  /**
   * Triggered when playback is started. Note that if the [createURLPlayer] method is called with the **onPause** parameter set to true, the event is not triggered; it is triggered after the [Player.resume] method call.
   * @typedef _PlayerStartedEvent
   */
  Started = 'Player.Started',

  /**
   * Triggers as a result of the [Player.stop] method call.
   * @typedef _PlayerStoppedEvent
   */
  Stopped = 'Player.Stopped',

  /**
   * Triggered when playback has finished successfully or with an error.
   * @typedef _PlayerPlaybackFinishedEvent
   */
  PlaybackFinished = 'Player.PlaybackFinished',

  /**
   * Triggered when playback has finished with an error.
   * @typedef _PlayerErrorEvent
   */
  Error = 'Player.Error',

  /**
   * Triggered when [Player.addMarker] is reached.
   * @typedef _PlayerPlaybackMarkerReachedEvent
   */
  PlaybackMarkerReached = 'Player.PlaybackMarkerReached',

  /**
   * Triggered when an audio file is playing faster than it is being loaded.
   * @typedef _PlayerPlaybackBufferingEvent
   */
  PlaybackBuffering = 'Player.Buffering',

  /**
   * Triggered when an audio chunk playback is finished. Note that this event is triggered only for RealtimeTTSPlayer instances.
   * @typedef _PlayerAudioChunksPlaybackFinishedEvent
   */
  AudioChunksPlaybackFinished = 'Player.AudioChunksPlaybackFinished'
}

/**
 * @private
 */
declare interface _PlayerEvents {
  [PlayerEvents.Created]: _PlayerCreatedEvent;
  [PlayerEvents.PlaybackReady]: _PlayerPlaybackReadyEvent;
  [PlayerEvents.Started]: _PlayerStartedEvent;
  [PlayerEvents.Stopped]: _PlayerStoppedEvent;
  [PlayerEvents.PlaybackFinished]: _PlayerPlaybackFinishedEvent;
  [PlayerEvents.Error]: _PlayerErrorEvent;
  [PlayerEvents.PlaybackMarkerReached]: _PlayerPlaybackMarkerReachedEvent;
  [PlayerEvents.PlaybackBuffering]: _PlayerPlaybackBufferingEvent;
  [PlayerEvents.AudioChunksPlaybackFinished]: _PlayerAudioChunksPlaybackFinishedEvent;
}

/**
 * @private
 */
declare interface _PlayerEvent {
  /**
   * Player that generated the event
   */
  player: Player;
}

/**
 * @private
 */
declare interface _PlayerCreatedEvent extends _PlayerEvent {}

/**
 * @private
 */
declare interface _PlayerPlaybackReadyEvent extends _PlayerEvent {}

/**
 * @private
 */
declare interface _PlayerStartedEvent extends _PlayerEvent {
  /**
   * Playback duration
   */
  duration: number;
}

/**
 * @private
 */
declare interface _PlayerStoppedEvent extends _PlayerEvent {}

/**
 * @private
 */
declare interface _PlayerPlaybackFinishedEvent extends _PlayerEvent {
  /**
   * Optional. Error message
   */
  error?: string;
}

/**
 * @private
 */
declare interface _PlayerErrorEvent extends _PlayerEvent {
  /**
   * Error message
   */
  error: string;
}

/**
 * @private
 */
declare interface _PlayerPlaybackMarkerReachedEvent extends _PlayerEvent {
  /**
   * The marker offset
   */
  offset: number;
}

/**
 * @private
 */
declare interface _PlayerPlaybackBufferingEvent extends _PlayerEvent {}

/**
 * @private
 */
declare interface _PlayerAudioChunksPlaybackFinishedEvent extends _PlayerEvent {
  /**
   * Time to first byte (TTFB) in milliseconds.
   * Represents the delay between sending the request and receiving the first byte of audio data.
   */
  timeToFirstByte: number;
}
/**
 * Represents an instance of an audio player.
 * <br>
 * Can be created by calling the [VoxEngine.createTTSPlayer], [VoxEngine.createToneScriptPlayer] or [VoxEngine.createURLPlayer] methods.
 */
declare class Player extends BasePlayer {
  /**
   * Adds a playback marker. The [PlayerEvents.PlaybackMarkerReached] event is triggered when the marker is reached.
   * 
   * This method is currently not supported by the ElevenLabs provider.
   * @param offset Positive/negative offset in milliseconds from the start/end of media
   */
  addMarker(offset: number): void;
}

/**
 * An object that specifies what media streams to receive from each [Endpoint]. Can be passed via the [EndpointParameters.receiveParameters] parameter or an argument to the [Endpoint.manageEndpoint] method.
 * <br>
 * The object can accept the following keys:
 * <ul>
 *     <li>A string value with the endpoint ID. Applies the setting only for the specified endpoint.</li>
 *     <li>The <b>all</b> keyword. Applies the setting for all the endpoints.</li>
 *     <li>The <b>new</b> keyword. Applies the setting for the new endpoints only.</li>
 * </ul>
 */
interface ReceiveParameters {
  /**
   * Substitute one of the available keys from the description.
   */
  [remoteParticipantId: string]: ParticipantReceiveParameters;
}

/**
 * List of available values for the [RecorderParameters.expire] parameter.
 */
declare enum RecordExpireTime {
  THREEMONTHS = '',
  SIXMONTHS = '-6m',
  ONEYEAR = '-1y',
  TWOYEARS = '-2y',
  THREEYEARS = '-3y',
  FIVEYEARS = '-5y',
}

/**
 * An object that specifies video frame's direction. Can be passed via the [RecorderVideoParameters.layoutSettings] and [UpdateRecorderVideoParameters.layoutSettings] parameter.
 * <br>
 * Add the following line to your scenario code to use the type:
 * ```
 * require(Modules.Recorder);
 * ```
 */
declare enum RecorderDirection {
  ltr = 'ltr',
  rtl = 'rtl',
}

/**
 * An object that specifies video frame parameters. Can be passed via the [RecorderVideoParameters.layoutSettings] and [UpdateRecorderVideoParameters.layoutSettings] parameter.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.Recorder);
 * ```
 *  */
declare interface RecorderDrawArea {
  /**
   * Video frame's priority.
   */
  priority: number;
  /**
   * Video frame's width.
   */
  width: number;
  /**
   * Video frame's height.
   */
  height: number;
  /**
   * Video frame's top margin.
   */
  top: number;
  /**
   * Video frame's left margin.
   */
  left: number;
  /**
   * The corresponding grid parameters object.
   */
  grid: RecorderGridDefinition[];
}

/**
 * Add the following line to your scenario code to use the events:
 * ```
 * require(Modules.Recorder);
 * ```
 * @event
 */
declare enum RecorderEvents {
  /**
   * Triggers in case of errors during the recording process.
   * @typedef _RecorderErrorEvent
   */
  RecorderError = 'Recorder.Error',
  /**
   * Triggers after the recording's start.
   * @typedef _RecorderURLEvent
   */
  Started = 'Recorder.Started',
  /**
   * Triggers after the recording's stop.
   * @typedef _RecorderStoppedEvent
   */
  Stopped = 'Recorder.Stopped',
}

/**
 * @private
 */
declare interface _RecorderEvent {
  /**
   * Recorder that generated the event.
   */
  recorder: Recorder;
}

/**
 * @private
 */
declare interface _RecorderURLEvent extends _RecorderEvent {
  /**
   * The link to the record.
   */
  url: string;
}

/**
 * @private
 */
declare interface _RecorderErrorEvent extends _RecorderEvent {
  /**
   * Error message.
   */
  error: string;
}

/**
 * @private
 */
declare interface _RecorderStartedEvent extends _RecorderURLEvent {
}

/**
 * @private
 */
declare interface _RecorderStoppedEvent extends _RecorderEvent {
  /**
   * Record cost (in the account's currency: USD, EUR or RUB).
   */
  cost: string;
  /**
   * Record duration in seconds.
   */
  duration: number;
}

/**
 * @private
 */
declare interface _RecorderEvents {
  [RecorderEvents.RecorderError]: _RecorderErrorEvent;
  [RecorderEvents.Started]: _RecorderStartedEvent;
  [RecorderEvents.Stopped]: _RecorderStoppedEvent;
}

/**
 * An object that specifies grid parameters. Can be passed via the [RecorderDrawArea.grid] parameter.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.Recorder);
 * ```
 */
declare interface RecorderGridDefinition {
  /**
   * Minimum video frames for the grid.
   */
  fromCount: number;
  /**
   * Optional. Maximum video frames for the grid.
   */
  toCount?: number;
  /**
   * Number of columns in the grid.
   */
  colCount: number;
  /**
   * Number of rows in the grid.
   */
  rowCount: number;
}

/**
 * Enumeration of the recorder video fonts. Can be passed via the [RecorderLabels.font] parameter.
 * <br>
 * Add the following line to your scenario code to use the enum:
 * ```
 * require(Modules.Recorder);
 * ```
 */
declare enum RecorderLabelFont {
  ROBOTO_SLAB_SEMI_BOLD = 'RobotoSlab-SemiBold',
  ROBOTO_SLAB_THIN = 'RobotoSlab-Thin',
  ROBOTO_CONDENSED_BOLD = 'RobotoCondensed-Bold',
  ROBOTO_CONDENSED_BOLD_ITALIC = 'RobotoCondensed-BoldItalic',
  ROBOTO_CONDENSED_ITALIC = 'RobotoCondensed-Italic',
  ROBOTO_CONDENSED_LIGHT = 'RobotoCondensed-Light',
  ROBOTO_CONDENSED_LIGHT_ITALIC = 'RobotoCondensed-LightItalic',
  ROBOTO_CONDENSED_REGULAR = 'RobotoCondensed-Regular',
  ROBOTO_FLEX_REGULAR = 'RobotoFlex-Regular',
  ROBOTO_MONO_BOLD = 'RobotoMono-Bold',
  ROBOTO_MONO_BOLD_ITALIC = 'RobotoMono-BoldItalic',
  ROBOTO_MONO_EXTRA_LIGHT = 'RobotoMono-ExtraLight',
  ROBOTO_MONO_EXTRA_LIGHT_ITALIC = 'RobotoMono-ExtraLightItalic',
  ROBOTO_MONO_ITALIC = 'RobotoMono-Italic',
  ROBOTO_MONO_LIGHT = 'RobotoMono-Light',
  ROBOTO_MONO_LIGHT_ITALIC = 'RobotoMono-LightItalic',
  ROBOTO_MONO_MEDIUM = 'RobotoMono-Medium',
  ROBOTO_MONO_MEDIUM_ITALIC = 'RobotoMono-MediumItalic',
  ROBOTO_MONO_REGULAR = 'RobotoMono-Regular',
  ROBOTO_MONO_SEMI_BOLD = 'RobotoMono-SemiBold',
  ROBOTO_MONO_SEMI_BOLD_ITALIC = 'RobotoMono-SemiBoldItalic',
  ROBOTO_MONO_THIN = 'RobotoMono-Thin',
  ROBOTO_MONO_THIN_ITALIC = 'RobotoMono-ThinItalic',
  ROBOTO_SERIF_CONDENSED_BLACK = 'RobotoSerif_Condensed-Black',
  ROBOTO_SERIF_CONDENSED_BLACK_ITALIC = 'RobotoSerif_Condensed-BlackItalic',
  ROBOTO_SERIF_CONDENSED_BOLD = 'RobotoSerif_Condensed-Bold',
  ROBOTO_SERIF_CONDENSED_BOLD_ITALIC = 'RobotoSerif_Condensed-BoldItalic',
  ROBOTO_SERIF_CONDENSED_EXTRA_BOLD = 'RobotoSerif_Condensed-ExtraBold',
  ROBOTO_SERIF_CONDENSED_EXTRA_BOLD_ITALIC = 'RobotoSerif_Condensed-ExtraBoldItalic',
  ROBOTO_SERIF_CONDENSED_EXTRA_LIGHT = 'RobotoSerif_Condensed-ExtraLight',
  ROBOTO_SERIF_CONDENSED_EXTRA_LIGHT_ITALIC = 'RobotoSerif_Condensed-ExtraLightItalic',
  ROBOTO_SERIF_CONDENSED_ITALIC = 'RobotoSerif_Condensed-Italic',
  ROBOTO_SERIF_CONDENSED_LIGHT = 'RobotoSerif_Condensed-Light',
  ROBOTO_SERIF_CONDENSED_LIGHT_ITALIC = 'RobotoSerif_Condensed-LightItalic',
  ROBOTO_SERIF_CONDENSED_MEDIUM = 'RobotoSerif_Condensed-Medium',
  ROBOTO_SERIF_CONDENSED_MEDIUM_ITALIC = 'RobotoSerif_Condensed-MediumItalic',
  ROBOTO_SERIF_CONDENSED_REGULAR = 'RobotoSerif_Condensed-Regular',
  ROBOTO_SERIF_CONDENSED_SEMI_BOLD = 'RobotoSerif_Condensed-SemiBold',
  ROBOTO_SERIF_CONDENSED_SEMI_BOLD_ITALIC = 'RobotoSerif_Condensed-SemiBoldItalic',
  ROBOTO_SERIF_CONDENSED_THIN = 'RobotoSerif_Condensed-Thin',
  ROBOTO_SERIF_CONDENSED_THIN_ITALIC = 'RobotoSerif_Condensed-ThinItalic',
  ROBOTO_SERIF_EXPANDED_BLACK = 'RobotoSerif_Expanded-Black',
  ROBOTO_SERIF_EXPANDED_BLACK_ITALIC = 'RobotoSerif_Expanded-BlackItalic',
  ROBOTO_SERIF_EXPANDED_BOLD = 'RobotoSerif_Expanded-Bold',
  ROBOTO_SERIF_EXPANDED_BOLD_ITALIC = 'RobotoSerif_Expanded-BoldItalic',
  ROBOTO_SERIF_EXPANDED_EXTRA_BOLD = 'RobotoSerif_Expanded-ExtraBold',
  ROBOTO_SERIF_EXPANDED_EXTRA_BOLD_ITALIC = 'RobotoSerif_Expanded-ExtraBoldItalic',
  ROBOTO_SERIF_EXPANDED_EXTRA_LIGHT = 'RobotoSerif_Expanded-ExtraLight',
  ROBOTO_SERIF_EXPANDED_EXTRA_LIGHT_ITALIC = 'RobotoSerif_Expanded-ExtraLightItalic',
  ROBOTO_SERIF_EXPANDED_ITALIC = 'RobotoSerif_Expanded-Italic',
  ROBOTO_SERIF_EXPANDED_LIGHT = 'RobotoSerif_Expanded-Light',
  ROBOTO_SERIF_EXPANDED_LIGHT_ITALIC = 'RobotoSerif_Expanded-LightItalic',
  ROBOTO_SERIF_EXPANDED_MEDIUM = 'RobotoSerif_Expanded-Medium',
  ROBOTO_SERIF_EXPANDED_MEDIUM_ITALIC = 'RobotoSerif_Expanded-MediumItalic',
  ROBOTO_SERIF_EXPANDED_REGULAR = 'RobotoSerif_Expanded-Regular',
  ROBOTO_SERIF_EXPANDED_SEMI_BOLD = 'RobotoSerif_Expanded-SemiBold',
  ROBOTO_SERIF_EXPANDED_SEMI_BOLD_ITALIC = 'RobotoSerif_Expanded-SemiBoldItalic',
  ROBOTO_SERIF_EXPANDED_THIN = 'RobotoSerif_Expanded-Thin',
  ROBOTO_SERIF_EXPANDED_THIN_ITALIC = 'RobotoSerif_Expanded-ThinItalic',
  ROBOTO_SERIF_EXTRA_CONDENSED_BLACK = 'RobotoSerif_ExtraCondensed-Black',
  ROBOTO_SERIF_EXTRA_CONDENSED_BLACK_ITALIC = 'RobotoSerif_ExtraCondensed-BlackItalic',
  ROBOTO_SERIF_EXTRA_CONDENSED_BOLD = 'RobotoSerif_ExtraCondensed-Bold',
  ROBOTO_SERIF_EXTRA_CONDENSED_BOLD_ITALIC = 'RobotoSerif_ExtraCondensed-BoldItalic',
  ROBOTO_SERIF_EXTRA_CONDENSED_EXTRA_BOLD = 'RobotoSerif_ExtraCondensed-ExtraBold',
  ROBOTO_SERIF_EXTRA_CONDENSED_EXTRA_BOLD_ITALIC = 'RobotoSerif_ExtraCondensed-ExtraBoldItalic',
  ROBOTO_SERIF_EXTRA_CONDENSED_EXTRA_LIGHT = 'RobotoSerif_ExtraCondensed-ExtraLight',
  ROBOTO_SERIF_EXTRA_CONDENSED_EXTRA_LIGHT_ITALIC = 'RobotoSerif_ExtraCondensed-ExtraLightItalic',
  ROBOTO_SERIF_EXTRA_CONDENSED_ITALIC = 'RobotoSerif_ExtraCondensed-Italic',
  ROBOTO_SERIF_EXTRA_CONDENSED_LIGHT = 'RobotoSerif_ExtraCondensed-Light',
  ROBOTO_SERIF_EXTRA_CONDENSED_LIGHT_ITALIC = 'RobotoSerif_ExtraCondensed-LightItalic',
  ROBOTO_SERIF_EXTRA_CONDENSED_MEDIUM = 'RobotoSerif_ExtraCondensed-Medium',
  ROBOTO_SERIF_EXTRA_CONDENSED_MEDIUM_ITALIC = 'RobotoSerif_ExtraCondensed-MediumItalic',
  ROBOTO_SERIF_EXTRA_CONDENSED_REGULAR = 'RobotoSerif_ExtraCondensed-Regular',
  ROBOTO_SERIF_EXTRA_CONDENSED_SEMI_BOLD = 'RobotoSerif_ExtraCondensed-SemiBold',
  ROBOTO_SERIF_EXTRA_CONDENSED_SEMI_BOLD_ITALIC = 'RobotoSerif_ExtraCondensed-SemiBoldItalic',
  ROBOTO_SERIF_EXTRA_CONDENSED_THIN = 'RobotoSerif_ExtraCondensed-Thin',
  ROBOTO_SERIF_EXTRA_CONDENSED_THIN_ITALIC = 'RobotoSerif_ExtraCondensed-ThinItalic',
  ROBOTO_SERIF_EXTRA_EXPANDED_BLACK = 'RobotoSerif_ExtraExpanded-Black',
  ROBOTO_SERIF_EXTRA_EXPANDED_BLACK_ITALIC = 'RobotoSerif_ExtraExpanded-BlackItalic',
  ROBOTO_SERIF_EXTRA_EXPANDED_BOLD = 'RobotoSerif_ExtraExpanded-Bold',
  ROBOTO_SERIF_EXTRA_EXPANDED_BOLD_ITALIC = 'RobotoSerif_ExtraExpanded-BoldItalic',
  ROBOTO_SERIF_EXTRA_EXPANDED_EXTRA_BOLD = 'RobotoSerif_ExtraExpanded-ExtraBold',
  ROBOTO_SERIF_EXTRA_EXPANDED_EXTRA_BOLD_ITALIC = 'RobotoSerif_ExtraExpanded-ExtraBoldItalic',
  ROBOTO_SERIF_EXTRA_EXPANDED_EXTRA_LIGHT = 'RobotoSerif_ExtraExpanded-ExtraLight',
  ROBOTO_SERIF_EXTRA_EXPANDED_EXTRA_LIGHT_ITALIC = 'RobotoSerif_ExtraExpanded-ExtraLightItalic',
  ROBOTO_SERIF_EXTRA_EXPANDED_ITALIC = 'RobotoSerif_ExtraExpanded-Italic',
  ROBOTO_SERIF_EXTRA_EXPANDED_LIGHT = 'RobotoSerif_ExtraExpanded-Light',
  ROBOTO_SERIF_EXTRA_EXPANDED_LIGHT_ITALIC = 'RobotoSerif_ExtraExpanded-LightItalic',
  ROBOTO_SERIF_EXTRA_EXPANDED_MEDIUM = 'RobotoSerif_ExtraExpanded-Medium',
  ROBOTO_SERIF_EXTRA_EXPANDED_MEDIUM_ITALIC = 'RobotoSerif_ExtraExpanded-MediumItalic',
  ROBOTO_SERIF_EXTRA_EXPANDED_REGULAR = 'RobotoSerif_ExtraExpanded-Regular',
  ROBOTO_SERIF_EXTRA_EXPANDED_SEMI_BOLD = 'RobotoSerif_ExtraExpanded-SemiBold',
  ROBOTO_SERIF_EXTRA_EXPANDED_SEMI_BOLD_ITALIC = 'RobotoSerif_ExtraExpanded-SemiBoldItalic',
  ROBOTO_SERIF_EXTRA_EXPANDED_THIN = 'RobotoSerif_ExtraExpanded-Thin',
  ROBOTO_SERIF_EXTRA_EXPANDED_THIN_ITALIC = 'RobotoSerif_ExtraExpanded-ThinItalic',
  ROBOTO_SERIF_SEMI_CONDENSED_BLACK = 'RobotoSerif_SemiCondensed-Black',
  ROBOTO_SERIF_SEMI_CONDENSED_BLACK_ITALIC = 'RobotoSerif_SemiCondensed-BlackItalic',
  ROBOTO_SERIF_SEMI_CONDENSED_BOLD = 'RobotoSerif_SemiCondensed-Bold',
  ROBOTO_SERIF_SEMI_CONDENSED_BOLD_ITALIC = 'RobotoSerif_SemiCondensed-BoldItalic',
  ROBOTO_SERIF_SEMI_CONDENSED_EXTRA_BOLD = 'RobotoSerif_SemiCondensed-ExtraBold',
  ROBOTO_SERIF_SEMI_CONDENSED_EXTRA_BOLD_ITALIC = 'RobotoSerif_SemiCondensed-ExtraBoldItalic',
  ROBOTO_SERIF_SEMI_CONDENSED_EXTRA_LIGHT = 'RobotoSerif_SemiCondensed-ExtraLight',
  ROBOTO_SERIF_SEMI_CONDENSED_EXTRA_LIGHT_ITALIC = 'RobotoSerif_SemiCondensed-ExtraLightItalic',
  ROBOTO_SERIF_SEMI_CONDENSED_ITALIC = 'RobotoSerif_SemiCondensed-Italic',
  ROBOTO_SERIF_SEMI_CONDENSED_LIGHT = 'RobotoSerif_SemiCondensed-Light',
  ROBOTO_SERIF_SEMI_CONDENSED_LIGHT_ITALIC = 'RobotoSerif_SemiCondensed-LightItalic',
  ROBOTO_SERIF_SEMI_CONDENSED_MEDIUM = 'RobotoSerif_SemiCondensed-Medium',
  ROBOTO_SERIF_SEMI_CONDENSED_MEDIUM_ITALIC = 'RobotoSerif_SemiCondensed-MediumItalic',
  ROBOTO_SERIF_SEMI_CONDENSED_REGULAR = 'RobotoSerif_SemiCondensed-Regular',
  ROBOTO_SERIF_SEMI_CONDENSED_SEMI_BOLD = 'RobotoSerif_SemiCondensed-SemiBold',
  ROBOTO_SERIF_SEMI_CONDENSED_SEMI_BOLD_ITALIC = 'RobotoSerif_SemiCondensed-SemiBoldItalic',
  ROBOTO_SERIF_SEMI_CONDENSED_THIN = 'RobotoSerif_SemiCondensed-Thin',
  ROBOTO_SERIF_SEMI_CONDENSED_THIN_ITALIC = 'RobotoSerif_SemiCondensed-ThinItalic',
  ROBOTO_SERIF_SEMI_EXPANDED_BLACK = 'RobotoSerif_SemiExpanded-Black',
  ROBOTO_SERIF_SEMI_EXPANDED_BLACK_ITALIC = 'RobotoSerif_SemiExpanded-BlackItalic',
  ROBOTO_SERIF_SEMI_EXPANDED_BOLD = 'RobotoSerif_SemiExpanded-Bold',
  ROBOTO_SERIF_SEMI_EXPANDED_BOLD_ITALIC = 'RobotoSerif_SemiExpanded-BoldItalic',
  ROBOTO_SERIF_SEMI_EXPANDED_EXTRA_BOLD = 'RobotoSerif_SemiExpanded-ExtraBold',
  ROBOTO_SERIF_SEMI_EXPANDED_EXTRA_BOLD_ITALIC = 'RobotoSerif_SemiExpanded-ExtraBoldItalic',
  ROBOTO_SERIF_SEMI_EXPANDED_EXTRA_LIGHT = 'RobotoSerif_SemiExpanded-ExtraLight',
  ROBOTO_SERIF_SEMI_EXPANDED_EXTRA_LIGHT_ITALIC = 'RobotoSerif_SemiExpanded-ExtraLightItalic',
  ROBOTO_SERIF_SEMI_EXPANDED_ITALIC = 'RobotoSerif_SemiExpanded-Italic',
  ROBOTO_SERIF_SEMI_EXPANDED_LIGHT = 'RobotoSerif_SemiExpanded-Light',
  ROBOTO_SERIF_SEMI_EXPANDED_LIGHT_ITALIC = 'RobotoSerif_SemiExpanded-LightItalic',
  ROBOTO_SERIF_SEMI_EXPANDED_MEDIUM = 'RobotoSerif_SemiExpanded-Medium',
  ROBOTO_SERIF_SEMI_EXPANDED_MEDIUM_ITALIC = 'RobotoSerif_SemiExpanded-MediumItalic',
  ROBOTO_SERIF_SEMI_EXPANDED_REGULAR = 'RobotoSerif_SemiExpanded-Regular',
  ROBOTO_SERIF_SEMI_EXPANDED_SEMI_BOLD = 'RobotoSerif_SemiExpanded-SemiBold',
  ROBOTO_SERIF_SEMI_EXPANDED_SEMI_BOLD_ITALIC = 'RobotoSerif_SemiExpanded-SemiBoldItalic',
  ROBOTO_SERIF_SEMI_EXPANDED_THIN = 'RobotoSerif_SemiExpanded-Thin',
  ROBOTO_SERIF_SEMI_EXPANDED_THIN_ITALIC = 'RobotoSerif_SemiExpanded-ThinItalic',
  ROBOTO_SERIF_ULTRA_CONDENSED_BLACK = 'RobotoSerif_UltraCondensed-Black',
  ROBOTO_SERIF_ULTRA_CONDENSED_BLACK_ITALIC = 'RobotoSerif_UltraCondensed-BlackItalic',
  ROBOTO_SERIF_ULTRA_CONDENSED_BOLD = 'RobotoSerif_UltraCondensed-Bold',
  ROBOTO_SERIF_ULTRA_CONDENSED_BOLD_ITALIC = 'RobotoSerif_UltraCondensed-BoldItalic',
  ROBOTO_SERIF_ULTRA_CONDENSED_EXTRA_BOLD = 'RobotoSerif_UltraCondensed-ExtraBold',
  ROBOTO_SERIF_ULTRA_CONDENSED_EXTRA_BOLD_ITALIC = 'RobotoSerif_UltraCondensed-ExtraBoldItalic',
  ROBOTO_SERIF_ULTRA_CONDENSED_EXTRA_LIGHT = 'RobotoSerif_UltraCondensed-ExtraLight',
  ROBOTO_SERIF_ULTRA_CONDENSED_EXTRA_LIGHT_ITALIC = 'RobotoSerif_UltraCondensed-ExtraLightItalic',
  ROBOTO_SERIF_ULTRA_CONDENSED_ITALIC = 'RobotoSerif_UltraCondensed-Italic',
  ROBOTO_SERIF_ULTRA_CONDENSED_LIGHT = 'RobotoSerif_UltraCondensed-Light',
  ROBOTO_SERIF_ULTRA_CONDENSED_LIGHT_ITALIC = 'RobotoSerif_UltraCondensed-LightItalic',
  ROBOTO_SERIF_ULTRA_CONDENSED_MEDIUM = 'RobotoSerif_UltraCondensed-Medium',
  ROBOTO_SERIF_ULTRA_CONDENSED_MEDIUM_ITALIC = 'RobotoSerif_UltraCondensed-MediumItalic',
  ROBOTO_SERIF_ULTRA_CONDENSED_REGULAR = 'RobotoSerif_UltraCondensed-Regular',
  ROBOTO_SERIF_ULTRA_CONDENSED_SEMI_BOLD = 'RobotoSerif_UltraCondensed-SemiBold',
  ROBOTO_SERIF_ULTRA_CONDENSED_SEMI_BOLD_ITALIC = 'RobotoSerif_UltraCondensed-SemiBoldItalic',
  ROBOTO_SERIF_ULTRA_CONDENSED_THIN = 'RobotoSerif_UltraCondensed-Thin',
  ROBOTO_SERIF_ULTRA_CONDENSED_THIN_ITALIC = 'RobotoSerif_UltraCondensed-ThinItalic',
  ROBOTO_SLAB_BLACK = 'RobotoSlab-Black',
  ROBOTO_SLAB_BOLD = 'RobotoSlab-Bold',
  ROBOTO_SLAB_EXTRA_BOLD = 'RobotoSlab-ExtraBold',
  ROBOTO_SLAB_EXTRA_LIGHT = 'RobotoSlab-ExtraLight',
  ROBOTO_SLAB_LIGHT = 'RobotoSlab-Light',
  ROBOTO_SLAB_MEDIUM = 'RobotoSlab-Medium',
  ROBOTO_SLAB_REGULAR = 'RobotoSlab-Regular',
  ROBOTO_BLACK = 'Roboto-Black',
  ROBOTO_BLACK_ITALIC = 'Roboto-BlackItalic',
  ROBOTO_BOLD = 'Roboto-Bold',
  ROBOTO_BOLD_ITALIC = 'Roboto-BoldItalic',
  ROBOTO_LIGHT = 'Roboto-Light',
  ROBOTO_LIGHT_ITALIC = 'Roboto-LightItalic',
  ROBOTO_MEDIUM = 'Roboto-Medium',
  ROBOTO_MEDIUM_ITALIC = 'Roboto-MediumItalic',
  ROBOTO_REGULAR = 'Roboto-Regular',
  ROBOTO_REGULAR_ITALIC = 'Roboto-RegularItalic',
  ROBOTO_THIN = 'Roboto-Thin',
  ROBOTO_THIN_ITALIC = 'Roboto-ThinItalic',
}

/**
 * Enumeration of the recorder label position. Can be passed via the [RecorderLabels.position] parameter.
 * <br>
 * Add the following line to your scenario code to use the enum:
 * ```
 * require(Modules.Recorder);
 * ```
 */
declare enum RecorderLabelPosition {
  TOP_LEFT = 'top left',
  TOP_CENTER = 'top center',
  TOP_RIGHT = 'top right',
  MIDDLE_LEFT = 'middle left',
  MIDDLE_CENTER = 'middle center',
  MIDDLE_RIGHT = 'middle right',
  BOTTOM_LEFT = 'bottom left',
  BOTTOM_CENTER = 'bottom center',
  BOTTOM_RIGHT = 'bottom right',
}

/**
 * Enumeration of the recorder label text alignment. Can be passed via the [RecorderLabels.textAlign] parameter.
 * <br>
 * Add the following line to your scenario code to use the enum:
 * ```
 * require(Modules.Recorder);
 * ```
 */
declare enum RecorderLabelTextAlign {
  TOP_LEFT = 'T+L',
  TOP_CENTER = 'T+C',
  TOP_RIGHT = 'T+R',
  MIDDLE_LEFT = 'M+L',
  MIDDLE_CENTER = 'M+C',
  MIDDLE_RIGHT = 'M+R',
  BOTTOM_LEFT = 'B+L',
  BOTTOM_CENTER = 'B+C',
  BOTTOM_RIGHT = 'B+R',
}

/**
 * An object that specifies video frame with the participants' name settings. Can be passed via the [RecorderVideoParameters.labels] or [UpdateRecorderVideoParameters.labels] parameter.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.Recorder);
 * ```
 */
declare interface RecorderLabels {
  /**
   * Optional. Participant's label font.
   * The default value is **[RecorderLabelFont.ROBOTO_REGULAR]**.
   */
  font?: RecorderLabelFont;
  /**
   * Optional. Participant's label text horizontal and vertical alignment.
   * The default value is **[RecorderLabelTextAlign.MIDDLE_LEFT]**.
   */
  textAlign?: RecorderLabelTextAlign;
  /**
   * Optional. Margin space outside the label in pixels.
   * The default value is **8**.
   */
  margin?: number;
  /**
   * Optional. Participant's label position.
   * The default value is **[RecorderLabelPosition.BOTTOM_RIGHT]**.
   */
  position?: RecorderLabelPosition;
  /**
   * Optional. Participant's label background color in HEX format.
   * The default value is **#c7c7cc**.
   */
  background?: string;
  /**
   * Optional. Participant's label color in HEX format.
   * The default value is **#000000**.
   */
  color?: string;
  /**
   * Optional. Participant's label width in pixels.
   * The default value is **104**.
   */
  width?: number;
  /**
   * Optional. Participant's label height in pixels.
   * The default value is **24**.
   */
  height?: number;
}

/**
 * An object that specifies video frame layout priority. Can be passed via the [CallRecordParameters.videoParameters] and [RecorderParameters.videoParameters] parameter.
 * <br>
 * Add the following line to your scenario code to use the type:
 * ```
 * require(Modules.Recorder);
 * ```
 */
declare type RecorderLayoutPriority = 'vad' | string[];

/**
 * An object that specifies video layout settings. Can be passed via the [RecorderVideoParameters.layoutSettings] and [UpdateRecorderVideoParameters.layoutSettings] parameter.
 * <br>
 * Add the following line to your scenario code to use the type:
 * ```
 * require(Modules.Recorder);
 * ```
 */
declare enum RecorderLayout {
  grid = 'grid',
  tribune = 'tribune',
  custom = 'custom',
}
/**
 * An object that specifies how to fill a participant's video source to the conference frame. Can be passed via the [RecorderVideoParameters.layoutSettings] and [UpdateRecorderVideoParameters.layoutSettings] parameter.
 * <br>
 * Add the following line to your scenario code to use the type:
 * ```
 * require(Modules.Recorder);
 * ```
 */
declare enum RecorderObjectFit {
  fill = 'fill',
  contain = 'contain',
  cover = 'cover',
  none = 'none',
}

/**
 * [Recorder] and [ConferenceRecorder] parameters. Can be passed as arguments to the [VoxEngine.createRecorder] method.
 */
declare interface RecorderParameters extends BaseRecorderParameters{
  /**
   * Optional. Name of the recorder for the call history.
   */
  name?: string;
  /**
   * Optional. Speech recognition provider profile. List of all supported provider profiles: [ASRProfileList].
   */
  provider?: ASRProfile;
}

/**
 * Enumeration of the video quality profiles. Can be passed via the [RecorderVideoParameters.profile] parameter.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.Recorder);
 * ```
 */
declare enum RecorderProfile {
  NHD = 'NHD',
  VGA = 'VGA',
  HD = 'HD',
  FHD = 'FHD',
  QHD = 'QHD',
  '4K' = '4K',
}

/**
 * An object that specifies speaking participant highlight video frame parameters. Can be passed via the [RecorderVideoParameters.vad] or [UpdateRecorderVideoParameters.vad] parameter.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.Recorder);
 * ```
 */
declare interface RecorderVad {
  /**
   * Optional. Highlighting frame thickness in pixels. For **width > 1280** the default value is **3**, for **width < 1280** the default value is **1**.
   */
  thickness?: number;
  /**
   * Optional. Highlighting frame color in HEX format. The default value is **#009933**.
   */
  color?: string;
}

/**
 * An object that specifies recorder video parameters. Can be passed via the [CallRecordParameters.videoParameters] and [RecorderParameters.videoParameters] parameter.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.Recorder);
 * ```
 */
declare interface RecorderVideoParameters extends UpdateRecorderVideoParameters {
  /**
   * Whether to create single video file of multiple participants.
   */
  mixing: boolean;
  /**
   * Optional. Video quality profile.
   */
  profile?: RecorderProfile;
  /**
   * Optional. Video width in pixels.
   */
  width?: number;
  /**
   * Optional. Video height in pixels.
   */
  height?: number;
  /**
   * Optional. Video bitrate in kbps.
   */
  bitrate?: number;
  /**
   * Optional. Video frames per second.
   */
  fps?: number;
}

/**
 * Represents an audio and video recorder.
 * <br>
 * Add the following line to your scenario code to use the class:
 * ```
 * require(Modules.Recorder);
 * ```
 */
declare class Recorder {
  /**
   * Adds a handler for the specified [RecorderEvents] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
   * @param event Event class (i.e., [RecorderEvents.Stopped])
   * @param callback Handler function. A single parameter is passed - object with event information
   */
  addEventListener<T extends keyof _RecorderEvents>(
    event: RecorderEvents | T,
    callback: (event: _RecorderEvents[T]) => any,
  ): void;

  /**
   * Removes a handler for the specified [RecorderEvents] event.
   * @param event Event class (i.e., [RecorderEvents.Stopped])
   * @param callback Optional. Handler function. If not specified, all handler functions are removed
   */
  removeEventListener<T extends keyof _RecorderEvents>(
    event: RecorderEvents | T,
    callback?: (event: _RecorderEvents[T]) => any,
  ): void;

  /**
   * Returns the recorder's id.
   */
  id(): string;

  /**
   * Whether to mute whole record without detaching media sources from it.
   * @param doMute Mute/unmute switch
   */
  mute(doMute: boolean): void;

  /**
   * Stops recording and triggers the [RecorderEvents.Stopped] event.
   */
  stop(): void;
}

declare function require(module: Modules): void;

/**
 * Custom parameters for [WebSocket] interaction. Can be passed as arguments to the [VoxMediaUnit] **sendMediaTo** method.
 */
declare interface SendMediaParameters {
  tag: string;
  customParameters?: any;
  encoding?: WebSocketAudioEncoding;
}

/**
 * @event
 */
declare enum SequencePlayerEvents {
  /**
   * Triggered when [SequencePlayer] created.
   * @typedef _SequencePlayerCreatedEvent
   */
  Created = 'SequencePlayer.Created',

  /**
   * Triggered by the [VoxEngine.createSequencePlayer] methods when<br>
   * 1) all the segments audio files download to the Voximplant cache is finished;<br>
   * 2) all the audio files is found in the cache (i.e., it is in the cache before).
   * @typedef _SequencePlayerPlaybackReadyEvent
   */
  PlaybackReady = 'SequencePlayer.PlaybackReady',

  /**
   * Triggered when playback of the first SequencePlayer segment starts.
   * @typedef _SequencePlayerStartedEvent
   */
  Started = 'SequencePlayer.Started',

  /**
   * Triggers as a result of the [SequencePlayer.stop] method call.
   * @typedef _SequencePlayerStoppedEvent
   */
  Stopped = 'SequencePlayer.Stopped',

  /**
   * Triggered when playback has finished successfully or with an error.
   * @typedef _SequencePlayerPlaybackFinishedEvent
   */
  PlaybackFinished = 'SequencePlayer.PlaybackFinished',

  /**
   * Triggered when playback has finished with an error
   * @typedef _SequencePlayerErrorEvent
   */
  Error = 'SequencePlayer.Error',

  /**
   * Triggered when [SequencePlayer.addMarker] is reached.
   * @typedef _SequencePlayerPlaybackMarkerReachedEvent
   */
  PlaybackMarkerReached = 'SequencePlayer.PlaybackMarkerReached',
}

/**
 * @private
 */
declare interface _SequencePlayerEvents {
  [SequencePlayerEvents.Created]: _SequencePlayerCreatedEvent;
  [SequencePlayerEvents.PlaybackReady]: _SequencePlayerPlaybackReadyEvent;
  [SequencePlayerEvents.Started]: _SequencePlayerStartedEvent;
  [SequencePlayerEvents.Stopped]: _SequencePlayerStoppedEvent;
  [SequencePlayerEvents.Error]: _SequencePlayerErrorEvent;
  [SequencePlayerEvents.PlaybackFinished]: _SequencePlayerPlaybackFinishedEvent;
  [SequencePlayerEvents.PlaybackMarkerReached]: _SequencePlayerPlaybackMarkerReachedEvent;
}

/**
 * @private
 */
declare interface _SequencePlayerEvent {
  /**
   * Sequence player that generated the event
   */
  sequencePlayer: SequencePlayer;
}

/**
 * @private
 */
declare interface _SequencePlayerCreatedEvent extends _SequencePlayerEvent {}

/**
 * @private
 */
declare interface _SequencePlayerPlaybackReadyEvent extends _SequencePlayerEvent {}

/**
 * @private
 */
declare interface _SequencePlayerStartedEvent extends _SequencePlayerEvent {}

/**
 * @private
 */
declare interface _SequencePlayerStoppedEvent extends _SequencePlayerEvent {}

/**
 * @private
 */
declare interface _SequencePlayerPlaybackFinishedEvent extends _SequencePlayerEvent {
  /**
   * Error message
   */
  error?: string;
}

/**
 * @private
 */
declare interface _SequencePlayerErrorEvent extends _SequencePlayerEvent {
  /**
   * Error message
   */
  error: string;
}

/**
 * @private
 */
declare interface _SequencePlayerPlaybackMarkerReachedEvent extends _SequencePlayerEvent {
  /**
   * The marker offset
   */
  offset: number;
}

/**
 * Sequence player segment, represented by TTS or URL [Player]. Can be passed via the [SequencePlayerParameters.segments] parameter.
 */
declare type SequencePlayerSegment = TTSPlayerSegment | URLPlayerSegment;

/**
 * Represents an instance with segments represented by audio and URL players.
 * <br>
 * Can be created by calling the [VoxEngine.createSequencePlayer] method.
 */
declare class SequencePlayer {
  /**
   * Adds a handler for the specified [SequencePlayerEvents] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
   * @param event Event class (i.e., [SequencePlayerEvents.PlaybackFinished])
   * @param callback Handler function. A single parameter is passed - object with event information
   */
  addEventListener<T extends keyof _SequencePlayerEvents>(
    event: SequencePlayerEvents | T,
    callback: (event: _SequencePlayerEvents[T]) => any,
  ): void;

  /**
   * Removes a handler for the specified [SequencePlayerEvents] event.
   * @param event Event class (i.e., [SequencePlayerEvents.PlaybackFinished])
   * @param callback Optional. Handler function. If not specified, all handler functions are removed
   */
  removeEventListener<T extends keyof _SequencePlayerEvents>(
    event: SequencePlayerEvents | T,
    callback?: (event: _SequencePlayerEvents[T]) => any,
  ): void;

  /**
   * Returns the sequence player's id.
   */
  id(): string;

  /**
   * Pauses playback. To continue the playback use the [SequencePlayer.resume] method.
   */
  pause(): void;

  /**
   * Resumes playback after the [SequencePlayer.pause] method is called.
   */
  resume(): void;

  /**
   * Stops playback. The current sequence player's instance with all its segments is destroyed.
   */
  stop(): void;

  /**
   * Adds a playback marker to the specified segment. The [SequencePlayerEvents.PlaybackMarkerReached] event is triggered when the marker is reached.
   * @param offset Positive/negative offset in milliseconds from the start/end of media
   * @param segment The segment to add the marker
   */
  addMarker(offset: number, segment: PlaybackParameters): void;

  /**
   * Starts sending media from the sequence player to the media unit.
   * @param mediaUnit Media unit that receives media
   * @param parameters Optional. WebSocket interaction only parameters
   */
  sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

  /**
   * Stops sending media from the sequence player to the media unit.
   * @param mediaUnit Media unit that does not need to receive media from this conference anymore
   */
  stopMediaTo(mediaUnit: VoxMediaUnit): void;
}

declare namespace Silero{
    /**
     * Creates a [Silero.VAD] instance.
     * @param parameters The [Silero.VAD] parameters
     */
    function createVAD(parameters: VADParameters): Promise<Silero.VAD>
}
declare namespace Silero {
}
declare namespace Silero {
  /**
   * @event
   */
  enum VADEvents {
    /**
     * The [Silero.VAD] result.
     * @typedef _SileroVADResultEvent
     */
    Result = 'Silero.VAD.Result',

    /**
     * The [Silero.VAD] is reset.
     * @typedef _SileroVADResetEvent
     */
    Reset = 'Silero.VAD.Reset',

    /**
     * The error response event.
     * @typedef _SileroVADErrorEvent
     */
    Error = 'Silero.VAD.Error',

     /**
     * Contains information about connector.
     * @typedef _SileroVADConnectorInformationEvent
     */
    ConnectorInformation = 'Silero.VAD.ConnectorInformation',
  }

  /**
   * @private
   */
  interface _VADEvents {
    [VADEvents.Result]: _SileroVADResultEvent;
    [VADEvents.Reset]: _SileroVADResetEvent;
    [VADEvents.Error]: _SileroVADErrorEvent;
    [VADEvents.ConnectorInformation]: _SileroVADConnectorInformationEvent;
  }

  /**
   * @private
   */
  interface _SileroVADEvent {
    /**
     * The [Silero.VAD] instance.
     */
    vad: VAD;
  }

  /**
   * @private
   */
  interface _SileroVADResultEvent extends _SileroVADEvent {
    /**
     * Optional. The speech start time (in seconds).
     */
    speechStartAt?: number;
    /**
     * Optional. The speech end time (in seconds).
     */
    speechEndAt?: number;
  }

  /**
   * @private
   */
  interface _SileroVADResetEvent extends _SileroVADEvent {
  }

  /**
   * @private
   */
  interface _SileroVADErrorEvent extends _SileroVADEvent {
    /**
     * The error reason.
     */
    reason: string;
  }

  /**
   * @private
   */
  interface _SileroVADConnectorInformationEvent extends _SileroVADEvent {
    /**
     * The event's data.
     */
    data?: Object
  }
}
  
  
declare namespace Silero {
  /**
   * [Silero.VAD] parameters. Can be passed as arguments to the [Silero.createVAD] method.
   */
  interface VADParameters extends _WebSocketBasedClientParameters {
    /**
     * Optional. The probability threshold above which we detect speech. The default value is **0.5**.
     */
    threshold?: number;
    /**
     * Optional. The duration of silence (in milliseconds) to wait for each speech segment before separating it. The default value is **300**.
     */
    minSilenceDurationMs?: number;
    /**
     * Optional. The padding to add to speech segments to avoid aggressive cutting. The default value is **0**.
     */
    speechPadMs?: number;
  }
}
  
declare namespace Silero {
  class VAD {
    /**
     * Returns the VAD id.
     */
    id(): string;

    /**
     * Returns the VAD WebSocket id.
     */
    webSocketId(): string;

    /**
     * Closes the VAD connection (over WebSocket) or connection attempt.
     */
    close(): void;

    /**
     * Reset the VAD context.
     */
    reset(): void;

    /**
     * Adds a handler for the specified [Silero.VADEvents] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event Event class (i.e., [Silero.VADEvents.Result])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof Silero._VADEvents>(
      event:  Silero.VADEvents | T,
      callback: (event: Silero._VADEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [Silero.VADEvents] event.
     * @param event Event class (i.e., [Silero.VADEvents.Result])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof Silero._VADEvents>(
      event: Silero.VADEvents | T,
      callback?: (event: Silero._VADEvents[T]) => any,
    ): void;
  }
}
  
/**
 * Add the following line to your scenario code to use the events:
 * ```
 * require(Modules.SmartQueue);
 * ```
 * @event
 */
declare enum SmartQueueEvents {
  /**
   * The task is waiting for distribution to an agent. This event occurs every 10 or 15 seconds and contains information about task's position in a queue and approximate response time.
   * @typedef _SmartQueueWaitingEvent
   */
  Waiting = 'SmartQueue.Waiting',
  /**
   * An agent responded to the task, e.g. answered the call. This event indicates that SmartQueue processed the task successfully.
   * @typedef _SmartQueueOperatorReachedEvent
   */
  OperatorReached = 'SmartQueue.OperatorReached',
  /**
   * The task has been enqueued successfully.
   * @typedef _SmartQueueEnqueueSuccessEvent
   */
  EnqueueSuccess = 'SmartQueue.EnqueueSuccess',
  /**
   * SmartQueue distributed the task to an agent. This event can occur multiple times if an agent does not respond during the timeout.
   * @typedef _SmartQueueTaskDistributedEvent
   */
  TaskDistributed = 'SmartQueue.DistributeTask',
  /**
   * The client disconnected.<br><br>When you process the <b>ClientDisconnected</b> event, call the <code>e.cancel()</code> method inside the event manually to cancel the task.
   * @typedef _SmartQueueClientDisconnectedEvent
   */
  ClientDisconnected = 'SmartQueue.ClientDisconnected',
  /**
   * The task is cancelled.
   * @typedef _SmartQueueTaskCanceledEvent
   */
  TaskCanceled = 'SmartQueue.TaskCanceled',
  /**
   * An error occurred.
   * @typedef _SmartQueueErrorEvent
   */
  Error = 'SmartQueue.Error',
}

/**
 * @private
 */
declare interface _SmartQueueEvents {
  /**
   * The task is waiting for distribution to an agent. This event occurs every 10 or 15 seconds and contains information about task's position in a queue and approximate response time.
   */
  [SmartQueueEvents.Waiting]: _SmartQueueWaitingEvent;
  /**
   * An agent responded to the task, e.g. answered the call. This event indicates that SmartQueue processed the task successfully.
   */
  [SmartQueueEvents.OperatorReached]: _SmartQueueOperatorReachedEvent;
  /**
   * The task has been enqueued successfully.
   */
  [SmartQueueEvents.EnqueueSuccess]: _SmartQueueEnqueueSuccessEvent;
  /**
   * SmartQueue distributed the task to an agent. This event can occur multiple times if an agent does not respond during the timeout.
   */
  [SmartQueueEvents.TaskDistributed]: _SmartQueueTaskDistributedEvent;
  /**
   * The task has ended because the client disconnected.
   */
  [SmartQueueEvents.ClientDisconnected]: _SmartQueueClientDisconnectedEvent;
  /**
   * The task is cancelled.
   */
  [SmartQueueEvents.TaskCanceled]: _SmartQueueTaskCanceledEvent;
  /**
   * An error occurred.
   */
  [SmartQueueEvents.Error]: _SmartQueueErrorEvent;
}

/**
 * @private
 */
declare interface _SmartQueueEvent {
  /**
   * A [SmartQueue] task
   */
  task: SmartQueueTask;
}

/**
 * @private
 */
declare interface _SmartQueueWaitingEvent extends _SmartQueueEvent {
  /**
   * Estimated time of agent's response in milliseconds
   */
  ewt: number;
  /**
   * The task's position in the queue
   */
  position: number;
  /**
   * The task's waiting code
   */
  code: TaskWaitingCode;
  /**
   * The task's waiting status
   */
  message: string;
}

/**
 * @private
 */
declare interface _SmartQueueOperatorReachedEvent extends _SmartQueueEvent {
  /**
   * The agent's Call object
   */
  agentCall: Call;
}

/**
 * @private
 */
declare interface _SmartQueueEnqueueSuccessEvent extends _SmartQueueEvent {
}

/**
 * @private
 */
declare interface _SmartQueueTaskDistributedEvent extends _SmartQueueEvent {
  /**
   * The id of the task's responsible agent
   */
  operatorId: number;
  /**
   * The name of the task's responsible agent
   */
  operatorName: string;
}

/**
 * @private
 */
declare interface _SmartQueueClientDisconnectedEvent extends _SmartQueueEvent {
  /**
   * Cancels the pending request and removes it from the queue
   */
  cancel: Function;
}

/**
 * @private
 */
declare interface _SmartQueueTaskCanceledEvent extends _SmartQueueEvent {
  /**
   * The [SmartQueue] termination status
   */
  status: TerminationStatus;
  /**
   * The [SmartQueue] task's error description
   */
  description: string;
}

/**
 * @private
 */
declare interface _SmartQueueErrorEvent extends _SmartQueueEvent {
  /**
   * The [SmartQueue] error code
   */
  type: TerminationStatus;
  /**
   * The [SmartQueue] task's error description
   */
  description: string;
}

/**
 * The [SmartQueue] task distribution mode. Can be passed via the [SmartQueueOperatorSettings.mode] parameter.
 */
declare enum SmartQueueOperatorSettingsMode {
  /**
   * Cancels the task if it is impossible to select the specific operator
   */
  STRICT = 'STRICT',
  /**
   * Distributes the task to another operator if it is impossible to select the specific operator
   */
  SMART = 'SMART',
}

/**
 * The [SmartQueueTask] operator settings. Can be passed via the [SmartQueueTaskParameters.operatorSettings] parameter.
 */
declare interface SmartQueueOperatorSettings {
  /**
   * Operator's id.
   */
  operatorId: number;
  /**
   * Task distribution mode.
   */
  mode: SmartQueueOperatorSettingsMode;
  /**
   * Timeout in seconds to search for a specific operator. The default value is **0**.
   */
  timeout: number;
}

/**
 * The [SmartQueue] skill level is used to characterize an agent or a requirement for a task. Can be passed via the [SmartQueueTaskParameters.skills] parameter.
 */
declare interface SmartQueueSkill {
  /**
   * A readable skill name.
   */
  name: string;
  /**
   * The skill level from 1 to 5.
   */
  level: (1 | 2 | 3 | 4 | 5)[];
}

/**
 * Settings of a certain [SmartQueueTask]. Can be passed as arguments to the [VoxEngine.enqueueTask] method.
 */
declare interface SmartQueueTaskParameters {
  /**
   * Current task's Call object.
   */
  call?: Call;
  /**
   * Task's operator settings.
   */
  operatorSettings?: SmartQueueOperatorSettings;
  /**
   * A timeout in seconds for the task to be accepted by an agent.
   */
  timeout: number;
  /**
   * The task's priority. Accept values from 1 to 100. The default value is **50**.
   */
  priority: number;
  /**
   * Required [skills](/docs/references/voxengine/smartqueueskill) for the task.
   */
  skills: SmartQueueSkill[];
  /**
   * Queue for the current task.
   */
  queue: SmartQueue;
  /**
   * Custom data text string for the current task. After you specify the data in this field, you can find it in the [SmartQueueState_Task](/docs/references/httpapi/structure/smartqueuestate_task) object for this task. To get this object, call the [GetSQState](/docs/references/httpapi/smartqueue#getsqstate) method.
   */
  customData: string;
  /**
   * Optional. Custom parameters (SIP headers) to be passed with the task. Custom header names have to begin with the 'X-' prefix. The "X-" headers can be handled by a SIP phone or WEB SDK (e.g. see the [incomingCall](/docs/references/websdk/voximplant/events#incomingcall) event). Example: {'X-header':'value'}
   */
  extraHeaders?: { [header: string]: string };
  /**
   * Whether the call has video support. Please note that prices for audio only and video calls are different.
   */
  video: boolean;
  /**
   * Internal information about codecs.
   */
  scheme: { [id: string]: { audio: any, video: any } };
  /**
   * Maximum possible video bitrate for the customer device in kbps
   */
  maxVideoBitrate: number;
}

/**
 * A [SmartQueueTask] status enumeration value.
 */
declare interface SmartQueueTaskStatus {
  /**
   * Smartqueue is distributing the task to a suitable agent.
   */
  DISTRIBUTING: 'DISTRIBUTING',
  /**
   * Smartqueue is connecting the task to an agent.
   */
  CONNECTING: 'CONNECTING',
  /**
   * The agent connected to the task.
   */
  CONNECTED: 'CONNECTED',
  /**
   * The agent has ended the task.
   */
  ENDED: 'ENDED',
  /**
   * An error occurred.
   */
  FAILED: 'FAILED',
}

/**
 * A [SmartQueue] task is for a certain agent, which can be a call or a chat.
 * <br>
 * Add the following line to your scenario code to use the class:
 * ```
 * require(Modules.SmartQueue);
 * ```
 */
declare class SmartQueueTask {

  /**
   * The client's Call object.
   */
  clientCall: Call | null;

  /**
   * The agent's Call object.
   */
  agentCall: Call | null;

  /**
   * SmartQueue task's parameters, such as required skills, priority, queue, etc.
   */
  parameters: SmartQueueTaskParameters;

  /**
   * A [SmartQueue] task's ID.
   */
  id: string;

  /**
   * Ends the current task.
   * @param description Description of the task's end reason.
   * @param terminationStatus Optional. [TerminationStatus] value that describes the task's end reason. If not specified, the task is ended with the [TerminationStatus.CLIENT_TERMINATE] status.
   */
  end(description: string, terminationStatus?: TerminationStatus): void;

  /**
   * Adds a handler for the specified [SmartQueueEvents] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
   * @param event Event class (i.e., [SmartQueueEvents.OperatorReached])
   * @param callback Handler function. A single parameter is passed - object with event information
   */
  addEventListener<T extends keyof _SmartQueueEvents>(
    event: SmartQueueEvents | T,
    callback: (event: _SmartQueueEvents[T]) => any,
  ): void;

  /**
   * Removes a handler for the specified [SmartQueueEvents] event.
   * @param event Event class (i.e., [SmartQueueEvents.OperatorReached])
   * @param callback Optional. Handler function. If not specified, all handler functions are removed
   */
  removeEventListener<T extends keyof _SmartQueueEvents>(
    event: SmartQueueEvents | T,
    callback?: (event: _SmartQueueEvents[T]) => any,
  ): void;
}

/**
 * Represents an instance of a Smart Queue.
 */
declare interface SmartQueue {
  /**
   * Queue's identification number.
   */
  id: number;
  /**
   * Queue's name.
   */
  name: string;
}

/**
 * The parameters can be passed as arguments to the [Call.startPlayback] method.
 */
declare interface StartPlaybackParameters {
  /**
   * Whether to loop playback.
   */
  loop?: boolean;
  /**
   * Whether to use progressive playback. If **true**, the file is delivered in chunks which reduces delay before a method call and playback. The default value is **false**.
   */
  progressivePlayback?: boolean;
}

/**
 * Result of the [get](/docs/references/voxengine/applicationstorage#get), [put](/docs/references/voxengine/applicationstorage#put), and [delete](/docs/references/voxengine/applicationstorage#delete) methods.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.ApplicationStorage);
 * ```
 */
declare interface StorageKey {
  /**
   * Key name
   */
  key: string;
  /**
   * Key value
   */
  value: string;
  /**
   * Expiration date based on **ttl** specified via the [put](/docs/references/voxengine/applicationstorage#put) method
   */
  expireAt: number;
}

/**
 * Result of the [keys](/docs/references/voxengine/applicationstorage#keys) method.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.ApplicationStorage);
 * ```
 */
declare interface StoragePage {
  /**
   * Array of keys
   */
  keys: string[];
}

/**
 * Add the following line to your scenario code to use the events:
 * ```
 * require(Modules.StreamingAgent);
 * ```
 * @event
 */
declare enum StreamingAgentEvents {
  /**
   * Triggered when a streaming object is connected to a streaming platform.
   * @typedef _StreamingAgentConnectedEvent
   */
  Connected = 'StreamingAgent.Connected',
  /**
   * Triggered when connection to a streaming platform is failed.
   * @typedef _StreamingAgentConnectionFailedEvent
   */
  ConnectionFailed = 'StreamingAgent.ConnectionFailed',
  /**
   * Triggers if a streaming object cannot be created, *e.g., due to incorrect server url*.
   * @typedef _StreamingAgentErrorEvent
   */
  Error = 'StreamingAgent.Error',
  /**
   * Triggered when a streaming object is disconnected from a streaming platform.
   * @typedef _StreamingAgentDisconnectedEvent
   */
  Disconnected = 'StreamingAgent.Disconnected',
  /**
   * Triggered when a stream is successfully started.
   * @typedef _StreamingAgentStreamStartedEvent
   */
  StreamStarted = 'StreamingAgent.Stream.Started',
  /**
   * Triggered when a stream is stopped.
   * @typedef _StreamingAgentStreamStoppedEvent
   */
  StreamStopped = 'StreamingAgent.Stream.Stopped',
  /**
   * Triggered when a streaming object caused an error, *e.g., due to a codec mismatch*.
   * @typedef _StreamingAgentStreamErrorEvent
   */
  StreamError = 'StreamingAgent.Stream.Error',
  /**
   * Triggered when there is audio data in the stream.
   * @typedef _StreamingAgentAudioStreamCreatedEvent
   */
  AudioStreamCreated = 'StreamingAgent.Stream.AudioStarted',
  /**
   * Triggered when there is video data in the stream.
   * @typedef _StreamingAgentVideoStreamCreatedEvent
   */
  VideoStreamCreated = 'StreamingAgent.Stream.VideoStarted',
  /**
   * Triggered when the audio stream is switched.
   * @typedef _StreamingAgentAudioSwitchedEvent
   */
  AudioSwitched = 'StreamingAgent.Stream.AudioSwitched',
  /**
   * Triggered when the video stream is switched.
   * @typedef _StreamingAgentVideoSwitchedEvent
   */
  VideoSwitched = 'StreamingAgent.Stream.VideoSwitched',
}


/**
 * @private
 */
declare interface _StreamingAgentEvents {
  [StreamingAgentEvents.Connected]: _StreamingAgentConnectedEvent;
  [StreamingAgentEvents.ConnectionFailed]: _StreamingAgentConnectionFailedEvent;
  [StreamingAgentEvents.Error]: _StreamingAgentErrorEvent;
  [StreamingAgentEvents.Disconnected]: _StreamingAgentDisconnectedEvent;
  [StreamingAgentEvents.StreamStarted]: _StreamingAgentStreamStartedEvent;
  [StreamingAgentEvents.StreamStopped]: _StreamingAgentStreamStoppedEvent;
  [StreamingAgentEvents.StreamError]: _StreamingAgentStreamErrorEvent;
  [StreamingAgentEvents.AudioStreamCreated]: _StreamingAgentAudioStreamCreatedEvent;
  [StreamingAgentEvents.VideoStreamCreated]: _StreamingAgentVideoStreamCreatedEvent;
  [StreamingAgentEvents.AudioSwitched]: _StreamingAgentAudioSwitchedEvent;
  [StreamingAgentEvents.VideoSwitched]: _StreamingAgentSwitchedEvent;
}

/**
 * @private
 */
declare interface _StreamingAgentEvent {
  /**
   * Streaming object that triggered the event.
   */
  streamingAgent: StreamingAgent;
}

/**
 * @private
 */
declare interface _StreamingAgentReasonedEvent extends _StreamingAgentEvent {
  /**
   * Reason why the stream is switched. Possible values are: **New stream**, **Set stream**.
   */
  reason: string;
}

/**
 * @private
 */
declare interface _StreamingAgentConnectedEvent extends _StreamingAgentReasonedEvent {
}

/**
 * @private
 */
declare interface _StreamingAgentConnectionFailedEvent extends _StreamingAgentReasonedEvent {
}

/**
 * @private
 */
declare interface _StreamingAgentErrorEvent extends _StreamingAgentReasonedEvent {
}

/**
 * @private
 */
declare interface _StreamingAgentDisconnectedEvent extends _StreamingAgentReasonedEvent {
}

/**
 * @private
 */
declare interface _StreamingAgentStreamEvent extends _StreamingAgentReasonedEvent {
  /**
   * Name of a streaming object that triggered the event.
   */
  streamName: string;
}

/**
 * @private
 */
declare interface _StreamingAgentStreamStartedEvent extends _StreamingAgentStreamEvent {
}

/**
 * @private
 */
declare interface _StreamingAgentStreamStoppedEvent extends _StreamingAgentStreamEvent {
}

/**
 * @private
 */
declare interface _StreamingAgentStreamErrorEvent extends _StreamingAgentStreamEvent {
}

/**
 * @private
 */
declare interface _StreamingAgentStreamCreatedEvent extends _StreamingAgentEvent {
  /**
   * Id of an audio or video track. Equals to -1 if there is no track.
   */
  trackId: number;
}

/**
 * @private
 */
declare interface _StreamingAgentAudioStreamCreatedEvent extends _StreamingAgentStreamCreatedEvent {
}

/**
 * @private
 */
declare interface _StreamingAgentVideoStreamCreatedEvent extends _StreamingAgentStreamCreatedEvent {
}

/**
 * @private
 */
declare interface _StreamingAgentSwitchedEvent extends _StreamingAgentReasonedEvent {
  /**
   * Id of an audio or video track. Equals to -1 if there is no track.
   */
  trackId: number;
}

/**
 * @private
 */
declare interface _StreamingAgentAudioSwitchedEvent extends _StreamingAgentSwitchedEvent {
}

/**
 * @private
 */
declare interface _StreamingAgentVideoSwitchedEvent extends _StreamingAgentSwitchedEvent {
}

/**
 * [StreamingAgent] parameters. Can be passed as arguments to the [VoxEngine.createStreamingAgent] method.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.StreamingAgent);
 * ```
 */
declare interface StreamingAgentParameters {
  /**
   * Protocol for streaming purposes. Currently only RTMP is supported.
   */
  protocol: 'RTMP';
  /**
   * URL of a server which processes video streaming. Can be retrieved from a live-streaming CDN provider.
   */
  url: string;
  /**
   * URL of another streaming server to use if the server specified in **url** does not respond.
   */
  backupUrl?: string;
  /**
   * Unique stream name, use along with the **url**. Can be retrieved from a live-streaming CDN provider.
   */
  streamName?: string;
  /**
   * How often a keyframe in a stream is created (seconds). The default value is **2**. Any value less than "2" yields "2".
   */
  keyframeInterval?: number;
  /**
   * Part of **streamName**, e.g, *live2*. The parameter is platform dependent, use it if it is required by the streaming platform.
   */
  applicationName?: string;
}

/**
 * The [StreamingAgent] termination status
 */
declare interface StreamingAgentTrack {
  /**
   * The kind of the track
   */
  kind: string,
  /**
   * The id of the track
   */
  trackId: string,
}

/**
 * Represents a streaming object to interact with streaming platforms.
 * <br>
 * Add the following line to your scenario code to use the class:
 * ```
 * require(Modules.StreamingAgent);
 * ```
 */
declare class StreamingAgent {
  /**
   * Adds a handler for the specified [StreamingAgentEvents] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
   * @param event Event class (i.e., [StreamingAgentEvents.Connected])
   * @param callback Handler function. A single parameter is passed - object with event information
   */
  addEventListener<T extends keyof _StreamingAgentEvents>(
    event: StreamingAgentEvents | T,
    callback: (event: _StreamingAgentEvents[T]) => any,
  ): void;

  /**
   * Removes a handler for the specified [StreamingAgentEvents] event.
   * @param event Event class (i.e., [StreamingAgentEvents.Connected])
   * @param callback Optional. Handler function. If not specified, all handler functions are removed
   */
  removeEventListener<T extends keyof _StreamingAgentEvents>(
    event: StreamingAgentEvents | T,
    callback?: (event: _StreamingAgentEvents[T]) => any,
  ): void;

  /**
   * Returns the StreamingAgent's id.
   */
  id(): string;

  /**
   * Stops streaming. Triggers the StreamStopped event. Do not call any other streaming methods after a [StreamingAgent.stop] call.
   */
  stop(): void;

  /**
   * Gets the track ID of an active audio track or -1 if there is none.
   */
  activeAudioTrack(): number;

  /**
   * Gets the track ID of an active video track or -1 if there is none.
   */
  activeVideoTrack(): number;

  /**
   * Gets the list of all current audio tracks.
   */
  audioTracks(): StreamingAgentTrack[];

  /**
   * Gets the list of all current video tracks.
   */
  videoTracks(): StreamingAgentTrack[];

  /**
   * Sets a certain audio and/or video track as active.
   * If an active video track is set, it is not replaced by the new one unlike in the default mode.
   * Default mode: The active video track is the one that started sending data last. The active audio track is always the first one.
   * To return to the default mode, set the track IDs equal to -1.
   * @param tracks Audio and video track to set as active
   */
  setActiveTrack(tracks: { audioTrack?: number; videoTrack?: number }): void;
}

/**
 * The [SmartQueue] task's waiting code
 */
declare enum TaskWaitingCode {
  /**
   * The task is not in a queue.
   */
  NONE = 500,
  /**
   * The task is queued successfully, the estimated response time is calculated.
   */
  SUCCESS = 200,
  /**
   * ETA for the task is not estimated.
   */
  CANNOT_BE_ESTIMATED = 501,
  /**
   * The task is not queued because of the queue overflow.
   */
  OVERFLOWED = 503,
}

/**
 * The [SmartQueue] termination status.
 */
declare enum TerminationStatus {
  /**
   * No termination status has been provided
   */
  NONE = 0,
  /**
   * Internal error has occurred (ErrorCode, EndTaskCode, EndOperatorActivityCode)
   */
  INTERNAL_ERROR = 500,
  /**
   * Task has been completed successfully in the scenario (TaskCanceledCode)
   */
  NORMAL = 1000,
  /**
   * Timeout for the task has expired (TaskCanceledCode)
   */
  TIMEOUT_REACHED = 1001,
  /**
   * Media server does not answer (TaskCanceledCode)
   */
  MS_NOT_ANSWERED = 1002,
  /**
   * Queue is empty
   */
  QUEUE_EMPTY = 1003,
  /**
   * Maximum waiting time has been reached
   */
  MAX_WAITING_TIME_REACHED = 1004,
  /**
   * Maximum queue size has been reached
   */
  MAX_QUEUE_SIZE_REACHED = 1005,
  /**
   * No agents available
   */
  OPERATOR_NOT_AVAILABLE = 1006,
  /**
   * Customer has cancelled the task (EndTaskCode)
   */
  CLIENT_TERMINATE = 1100,
  /**
   * Customer has finished the task (EndOperatorActivityCode)
   */
  FINISHED_BY_CLIENT = 1201,
  /**
   * Agent has finished the task (EndOperatorActivityCode)
   */
  FINISHED_BY_OPERATOR = 1202,
  /**
   * Agent has missed or declined the task (EndOperatorActivityCode)
   */
  FAILED = 1203,
  /**
   * Task is cancelled in the scenario (EndOperatorActivityCode)
   */
  CANCELED = 1204,
  /**
   * Task is transferred (EndOperatorActivityCode)
   */
  TRANSFERRED = 1205,
}

/**
 * Tone Script [Player] parameters. Can be passed as arguments to the [VoxEngine.createToneScriptPlayer] method.
 */
declare interface ToneScriptPlayerParameters {
  /**
   * Optional. Whether to loop playback.
   */
  loop?: boolean;
  /**
   * Optional. Whether to use progressive playback. If **true**, the generated tone is delivered in chunks, which reduces delay before a method call and playback. The default value is **false**.
   */
  progressivePlayback?: boolean;
}

declare function trace(data: string): void;

/**
 * List of available values for the [CallRecordParameters.provider] parameter.
 * <br>
 * Note that the T-Bank VoiceKit and Yandex Speechkit supports only 'ASRLanguage.RUSSIAN_RU' language.
 * <br>
 * Add the following line to your scenario code to use the enum:
 * ```
 * require(Modules.ASR);
 * ```
 */
declare enum TranscriptionProvider {
    /**
     * Google
     * @const
     */
    GOOGLE = 'google',
    /**
     * Yandex
     * @const
     */
    YANDEX = 'yandex',
    /**
     * T-Bank
     * @const
     */
    TBANK = 'tcs',
}
/**
 * The parameters can be passed as arguments to the [Call.transferTo] method.
 */
declare interface TransferToParameters {
  /**
   * SIP(S) URI to make a call to. Example of an external call: **sip:alice@example.org**. Examples with the usage of TLS: **sips:alice@example.org:5061** ; **alice@example.org:5061;transport=tls**. The format for calls to another user of the same Voximplant application: user-of-the-application@application-name.account-name.voximplant.com
   */
  to: string;
  /**
   * Call (for 'attendant transfer' only)
   */
  call: Call;
  /**
   * Optional. Custom parameters (SIP headers) that should be passed with a call (INVITE) message. Custom header names have to begin with the 'X-' prefix except the 'VI-CallTimeout': '60' which hangs up if there is no answer after the timeout (in seconds, the default value is **60**, must not be less than **10** or greater than **400**). The "X-" headers can be handled by a SIP phone or WEB SDK (e.g. see the [incomingCall](/docs/references/websdk/voximplant/events#incomingcall) event). Example: {'X-header':'value'}.
   */
  headers?: { [header: string]: string };
}

/**
 * TTS [Player] parameters. Can be passed via the [SequencePlayerParameters.segments] parameter.
 * <br>
 * Same as the [VoxEngine.createTTSPlayer] method arguments. Has a similar interface to [TTSPlaybackParameters](/docs/references/avatarengine/ttsplaybackparameters).
 */
declare interface TTSPlayerSegment {
  /**
   * Text to synthesize.
   */
  text: string;
  /**
   * Optional. [Player](/docs/references/voxengine/player) parameters: language, progressivePlayback, volume, rate, etc.
   */
  parameters?: TTSPlayerParameters;
}

declare namespace Ultravox {
    /**
     * Creates a new [Ultravox.WebSocketAPIClient] instance.
     * @param parameters The [Ultravox.WebSocketAPIClient] parameters
     */
    function createWebSocketAPIClient(parameters: WebSocketAPIClientParameters): Promise<Ultravox.WebSocketAPIClient>
}
declare namespace Ultravox {
  /**
   * @event
   */
  enum Events {
    /**
     * Triggered when the audio stream sent by a third party through an Ultravox WebSocket is started playing.
     * @typedef _WebSocketMediaStartedUltravoxEvent
     */
    WebSocketMediaStarted = 'Ultravox.Events.WebSocketMediaStarted',
    /**
     * Triggers after the end of the audio stream sent by a third party through an Ultravox WebSocket (**1 second of silence**).
     * @typedef _WebSocketMediaEndedUltravoxEvent
     */
    WebSocketMediaEnded = 'Ultravox.Events.WebSocketMediaEnded',
  }

  /**
   * @private
   */
  interface _Events {
    [Ultravox.Events.WebSocketMediaStarted]: _WebSocketMediaStartedUltravoxEvent;
    [Ultravox.Events.WebSocketMediaEnded]: _WebSocketMediaEndedUltravoxEvent;
  }

  /**
   * @private
   */
  interface _Event {
    /**
     * The [Ultravox.WebSocketAPIClient] instance.
     */
    client: WebSocketAPIClient;
  }

  /**
   * @private
   */
  interface _WebSocketMediaStartedUltravoxEvent extends _Event, _WebSocketMediaStartedWithoutWebSocketEvent {
  }

  /**
   * @private
   */
  interface _WebSocketMediaEndedUltravoxEvent extends _Event, _WebSocketMediaEndedWithoutWebSocketEvent {
  }
}
declare namespace Ultravox {
  /**
   * [Ultravox.createWebSocketAPIClient] HTTP endpoint. Can be passed via the [Ultravox.createWebSocketAPIClientParameters.endpoint] parameter.
   */
  enum HTTPEndpoint {
    CREATE_CALL = 'CreateCall',
    CREATE_AGENT_CALL = 'CreateAgentCall',
    JOIN_CALL= 'JoinCall',
  }
}

declare namespace Ultravox {
}
declare namespace Ultravox {
  /**
   * [Ultravox.WebSocketAPIClient] parameters. Can be passed as arguments to the [Ultravox.createWebSocketAPIClient] method.
   */
  interface WebSocketAPIClientParameters extends _VoiceAIClientParameters {
    /**
     * Ultravox [HTTP endpoint](HTTPEndpoint). Note that [Ultravox Call](https://docs.ultravox.ai/api-reference/calls/overview) is created by the specified endpoint HTTP invocation, the response data for which can be handled in the [WebSocketAPIEvents.HTTPResponse] event.
     */
    endpoint: Ultravox.HTTPEndpoint;
    /**
     * Optional. Ultravox request authorizations. See the documentation of the specified endpoint for details.
     */
    authorizations?: Object;
    /**
     * Optional. Ultravox request path parameters. See the documentation of the specified endpoint for details.
     */
    pathParameters?: Object;
    /**
     * Optional. Ultravox request query parameters. See the documentation of the specified endpoint for details.
     */
    queryParameters?: Object;
    /**
     * Optional. Ultravox request body. See the documentation of the specified endpoint for details.
     */
    body?: Object;
    /**
     * Optional. Ultravox URL returned from the [https://docs.ultravox.ai/api-reference/calls/calls-post](https://docs.ultravox.ai/api-reference/calls/calls-post) or [https://docs.ultravox.ai/api-reference/agents/agents-calls-post](https://docs.ultravox.ai/api-reference/agents/agents-calls-post) requests.<br>NOTE: you must specify the [https://docs.ultravox.ai/api-reference/calls/calls-post#body-medium](https://docs.ultravox.ai/api-reference/calls/calls-post#body-medium) with 'serverWebSocket' parameters on the call creating. See the documentation for details.
     */
    joinUrl?: string;
  }
}
  
declare namespace Ultravox {
  class WebSocketAPIClient {
    /**
     * Returns the WebSocketAPIClient id.
     */
    id(): string;

    /**
     * Returns the Ultravox WebSocket id.
     */
    webSocketId(): string;

    /**
     * Closes the Ultravox connection (over WebSocket) or connection attempt.
     */
    close(): void;

    /**
     * Starts sending media from the Ultravox (via WebSocket) to the media unit. Ultravox works in real time.
     * @param mediaUnit Media unit that receives media
     * @param parameters Optional interaction parameters
     */
    sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

    /**
     * Stops sending media from the Ultravox (via WebSocket) to the media unit.
     * @param mediaUnit Media unit that stops receiving media
     */
    stopMediaTo(mediaUnit: VoxMediaUnit): void;

    /**
     * Clears the Ultravox WebSocket media buffer.
     * @param parameters Optional. Media buffer clearing parameters
     */
    clearMediaBuffer(parameters?: ClearMediaBufferParameters): void;

    /**
     * Adds a handler for the specified [Ultravox.WebSocketAPIEvents] or [Ultravox.Events] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event Event class (i.e., [Ultravox.WebSocketAPIEvents.Transcript])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof Ultravox._WebSocketAPIClientEvents>(
      event: Ultravox.Events | Ultravox.WebSocketAPIEvents | T,
      callback: (event: Ultravox._WebSocketAPIClientEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [Ultravox.WebSocketAPIEvents] or [Ultravox.Events] event.
     * @param event Event class (i.e., [Ultravox.WebSocketAPIEvents.Transcript])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof Ultravox._WebSocketAPIClientEvents>(
      event: Ultravox.Events | Ultravox.WebSocketAPIEvents | T,
      callback?: (event: Ultravox._WebSocketAPIClientEvents[T]) => any,
    ): void;

    /**
     * @deprecated
     * Used to send a user message to the agent via text.<br>NOTE: this method is deprecated, use **userTextMessage** instead.
     * @param parameters
     */
    inputTextMessage(parameters: Object): void

    /**
     * A user message sent via text. The message appears to the agent as if it came from the user. [https://docs.ultravox.ai/apps/datamessages#usertextmessage](https://docs.ultravox.ai/apps/datamessages#usertextmessage)
     * @param parameters
     */
    userTextMessage(parameters: Object): void

    /**
     * Sets server’s output medium to text or voice. [https://docs.ultravox.ai/datamessages#setoutputmedium](https://docs.ultravox.ai/datamessages#setoutputmedium)
     * @param parameters
     */
    setOutputMedium(parameters: Object): void

    /**
     * Contains the result of a client tool invocation. [https://docs.ultravox.ai/apps/datamessages#clienttoolresult-and-dataconnectiontoolresult](https://docs.ultravox.ai/apps/datamessages#clienttoolresult-and-dataconnectiontoolresult)
     * @param parameters
     */
    clientToolResult(parameters: Object): void

    /**
     * Contains the result of a client tool invocation. [https://docs.ultravox.ai/apps/datamessages#clienttoolresult-and-dataconnectiontoolresult](https://docs.ultravox.ai/apps/datamessages#clienttoolresult-and-dataconnectiontoolresult)
     * @param parameters
     */
    dataConnectionToolResult(parameters: Object): void

    /**
     * Forces the agent to say a specific message or invoke tools. [https://docs.ultravox.ai/apps/datamessages#forcedagentmessage](https://docs.ultravox.ai/apps/datamessages#forcedagentmessage)
     * @param parameters
     */
    forcedAgentMessage(parameters: Object): void

    /**
     * Instructs the agent to end the call with an optional farewell message. [https://docs.ultravox.ai/apps/datamessages#hangup](https://docs.ultravox.ai/apps/datamessages#hangup)
     * @param parameters
     */
    hangUp(parameters: Object): void
  }
}
  
declare namespace Ultravox {
  /**
   * @event
   */
  enum WebSocketAPIEvents {
    /**
     * The unknown event.
     * @typedef _WebSocketAPIEvent
     */
    Unknown = 'Ultravox.WebSocketAPI.Unknown',

    /**
     * The HTTP response event.
     * @typedef _WebSocketAPIEvent
     */
    HTTPResponse = 'Ultravox.WebSocketAPI.HTTPResponse',

    /**
     * Indicates the server’s current state. [https://docs.ultravox.ai/apps/datamessages#state](https://docs.ultravox.ai/apps/datamessages#state)
     * @typedef _WebSocketAPIEvent
     */
    State = 'Ultravox.WebSocketAPI.State',

    /**
     * Contains text for an utterance made during the call. [https://docs.ultravox.ai/apps/datamessages#transcript](https://docs.ultravox.ai/apps/datamessages#transcript)
     * @typedef _WebSocketAPIEvent
     */
    Transcript = 'Ultravox.WebSocketAPI.Transcript',

    /**
     * Sent by the server to ask the client or data connection to invoke a tool with the given parameters. [https://docs.ultravox.ai/apps/datamessages#clienttoolinvocation-and-dataconnectiontoolinvocation](https://docs.ultravox.ai/apps/datamessages#clienttoolinvocation-and-dataconnectiontoolinvocation)
     * @typedef _WebSocketAPIEvent
     */
    ClientToolInvocation = 'Ultravox.WebSocketAPI.ClientToolInvocation',

    /**
     * Sent by the server to ask the client or data connection to invoke a tool with the given parameters. [https://docs.ultravox.ai/apps/datamessages#clienttoolinvocation-and-dataconnectiontoolinvocation](https://docs.ultravox.ai/apps/datamessages#clienttoolinvocation-and-dataconnectiontoolinvocation)
     * @typedef _WebSocketAPIEvent
     */
    DataConnectionToolInvocation = 'Ultravox.WebSocketAPI.DataConnectionToolInvocation',

    /**
     * Useful for application debugging. [https://docs.ultravox.ai/apps/datamessages#debug](https://docs.ultravox.ai/apps/datamessages#debug)
     * @typedef _WebSocketAPIEvent
     */
    Debug = 'Ultravox.WebSocketAPI.Debug',

    /**
     * Used to clear buffered output audio. WebSocket only. [https://docs.ultravox.ai/apps/datamessages#playbackclearbuffer](https://docs.ultravox.ai/apps/datamessages#playbackclearbuffer)
     * @typedef _WebSocketAPIEvent
     */
    PlaybackClearBuffer = 'Ultravox.WebSocketAPI.PlaybackClearBuffer',

    /**
     * The WebSocket error response event.
     * @typedef _WebSocketAPIEvent
     */
    WebSocketError = 'Ultravox.WebSocketAPI.WebSocketError',

     /**
     * Contains information about connector.
     * @typedef _WebSocketAPIEvent
     */
    ConnectorInformation = 'Ultravox.WebSocketAPI.ConnectorInformation',
  }

  /**
   * @private
   */
  interface _WebSocketAPIEvents {
    [WebSocketAPIEvents.Unknown]: _WebSocketAPIEvent;
    [WebSocketAPIEvents.HTTPResponse]: _WebSocketAPIEvent;
    [WebSocketAPIEvents.State]: _WebSocketAPIEvent;
    [WebSocketAPIEvents.Transcript]: _WebSocketAPIEvent;
    [WebSocketAPIEvents.ClientToolInvocation]: _WebSocketAPIEvent;
    [WebSocketAPIEvents.DataConnectionToolInvocation]: _WebSocketAPIEvent;
    [WebSocketAPIEvents.Debug]: _WebSocketAPIEvent;
    [WebSocketAPIEvents.PlaybackClearBuffer]: _WebSocketAPIEvent;
    [WebSocketAPIEvents.WebSocketError]: _WebSocketAPIEvent;
    [WebSocketAPIEvents.ConnectorInformation]: _WebSocketAPIEvent;
  }

  /**
   * @private
   */
  interface _WebSocketAPIEvent {
    /**
     * The [Ultravox.WebSocketAPIClient] instance.
     */
    client: WebSocketAPIClient;
    /**
     * The event's data.
     */
    data?: Object;
  }
}
  
  
declare namespace Ultravox {
  /**
   * @private
   */
  interface _WebSocketAPIClientEvents extends _Events, _WebSocketAPIEvents {
  }
}
/**
 * Updates the current video recorder options. Can be passed as arguments to the [ConferenceRecorder.update] method.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.Recorder);
 * ```
 */
declare interface UpdateRecorderVideoParameters {
  /**
   * Optional. Video layout settings. If set to **grid**, all the video frames are the same size. If set to **tribune**, one active video frame is bigger than the others. If set to **custom**, you need to provide a 'layout' option with an object that specifies custom layout settings.
   */
  layout?: RecorderLayout;
  /**
   * Optional. If 'layout' option is set to **custom**, specifies custom video layout settings.
   */
  layoutSettings?: RecorderDrawArea[];
  /**
   * Optional. If 'layout' option is set to **tribune**, specifies which frame is bigger than the others. Set to **vad** if you want the bigger frame to change to the speaking participant, or specify the participant's ID to show one person constantly.
   */
  layoutPriority?: RecorderLayoutPriority;
  /**
   * Optional. Whether to show the participants' names on their video frames.
   */
  labels?: RecorderLabels;
  /**
   * Optional. Whether to highlight video frame of the speaking participant.
   */
  vad?: RecorderVad;
  /**
   * Optional. HTML color code for the video file background.
   */
  background?: string;
  /**
   * Optional. Video frame's direction, left to right or right to left.
   */
  direction?: RecorderDirection;
  /**
   * Optional. How to fill a participant's video source to the conference frame.
   */
  objectFit?: RecorderObjectFit;
  /**
   * Optional. A container to store custom data for the current recorder.
   */
  customData?: Object;
}

/**
 * URL [Player] parameters. Can be passed via the [SequencePlayerParameters.segments] parameter.
 * <br>
 * Same as the [VoxEngine.createURLPlayer] method arguments. Has a similar interface to [URLPlaybackParameters](/docs/references/avatarengine/urlplaybackparameters).
 */
declare interface URLPlayerSegment {
  /**
   * Url of an audio file. Supported formats are: mp3, ogg, flac, and wav (mp3, speex, vorbis, flac, and wav codecs respectively). Maximum file size is 10 Mb.
   */
  url: string;
  /**
   * Optional. URL [Player](/docs/references/voxengine/player) parameters.
   */
  parameters?: URLPlayerParameters;
}

/**
 * @private
 */
interface _VoiceAIClientParameters extends _WebSocketBasedClientParameters {
  /**
   * Optional. A callback function that is called when the [WebSocket] connection is closed.
   */
  onWebSocketClose?: (event: _WebSocketCloseEvent) => void;
}

declare type VoxMediaUnit =
  | Call
  | Player
  | SequencePlayer
  | ASR
  | Conference
  | Recorder
  | WebSocket
  | StreamingAgent
  | Gemini.LiveAPIClient
  | OpenAI.Beta.RealtimeAPIClient
  | OpenAI.RealtimeAPIClient
  | ElevenLabs.AgentsClient
  | Ultravox.WebSocketAPIClient
  | Yandex.RealtimeAPIClient
  | Cartesia.AgentsClient
  | Deepgram.VoiceAgentClient
  | Grok.VoiceAgentAPIClient
  | Silero.VAD
  | Pipecat.Turn;

declare namespace VoxEngine {
  /**
   * Adds a handler for the specified [AppEvents] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
   * @param event Event class (i.e., [AppEvents.Started])
   * @param callback Handler function. A single parameter is passed - object with event information
   */
  function addEventListener<T extends keyof _AppEvents>(
    event: AppEvents | T,
    callback: (event: _AppEvents[T]) => any
  ): void;
}

declare namespace VoxEngine {
  /**
   * Allows accepting incoming connections to ensure WebSocket bidirectional exchange.
   */
  function allowWebSocketConnections(): void;
}

declare namespace VoxEngine {
  /**
   * Makes a call to a conference via Conference module. If there is no such conference, it is created in the first method's call. The method is designed to be called in a simple incoming scenario, then it can trigger another special scenario which contains logic of the conference.
   * The method can trigger the Failed event in 60 sec, see the [session limits](/docs/guides/voxengine/limits) for details.
   * @param conferenceId ID of the conference. The parameter has to be the same as the pattern in the rule so the method triggers appropriate rule with conference logic
   * @param callerid CallerID of the caller that is displayed to the user. Spaces usage is not allowed. Normally it is some phone number that can be used for callback. IMPORTANT: you cannot use test numbers rented from Voximplant as CallerID, use only real numbers
   * @param displayName Name of the caller that is displayed to the user. Normally it is a human-readable version of CallerID, e.g. a person's name
   * @param headers Optional. SIP headers to be passed with a call to conference. Custom header names have to begin with the 'X-' prefix. The "X-" headers can be handled by a SIP phone or WEB SDK (e.g. see the [incomingCall](/docs/references/websdk/voximplant/events#incomingcall) event). Example: {'X-header':'value'}
   * @param scheme Optional. Internal information about codecs from the [AppEvents.CallAlerting] event
   */
  function callConference(
    conferenceId: string,
    callerid: string,
    displayName: string,
    headers?: { [header: string]: string },
    scheme?: string
  ): Call;
}

declare namespace VoxEngine {
  /**
   * Starts an outgoing call to the specified phone number. Calls that are more expensive than 20 cents per minute and calls to Africa are blocked by default for security reasons.
   * The method can trigger the [CallEvents.Failed] event in 60 sec, see the [session limits](/docs/guides/voxengine/limits) for details.
   * @param number phone number to start a call to in the international format (E.164)
   * @param callerid CallerID of the caller that is displayed to the user. Spaces usage is not allowed. A valid phone number that can be used to call back is required. Following phone numbers can be used:
   * * A real phone number that is [rented](https://manage.voximplant.com/numbers/my_numbers) from Voximplant. **IMPORTANT**: test numbers cannot be used.
   * * Any phone number that is [verified](https://manage.voximplant.com/settings/caller_ids) via an automated call from Voximplant and confirmation code.
   * * A phone number from an incoming call to the rented number. It can be retrieved as [Caller ID](/docs/references/voxengine/call#callerid).
   * @param parameters Optional. Call parameters
   */
  function callPSTN(number: string, callerid: string, parameters?: CallPSTNParameters): Call;
}

declare namespace VoxEngine {
  /**
   * Starts an outgoing call to the external SIP system or to another user of the same application. Supported codecs are: [G.722](https://www.itu.int/rec/T-REC-G.722), [G.711 (u-law and a-law)](https://www.itu.int/rec/T-REC-G.711), [Opus](https://opus-codec.org/), [ILBC](https://webrtc.org/license/ilbc-freeware/), [H.264](https://www.itu.int/rec/T-REC-H.264), [VP8](https://tools.ietf.org/html/rfc6386). The method can trigger the [CallEvents.Failed] event in 60 sec, see the [session limits](/docs/guides/voxengine/limits) for details.
   * @param to SIP URI to make a call to. Example of an external call: **sip:alice@example.org**. Examples with TLS usage: **sips:alice@example.org:5061** ; **alice@example.org:5061;transport=tls**. The format for calls to another user of the same Voximplant application: user-of-the-application@application.account.voximplant.com
   * @param parameters Call parameters. Note that if this parameter is not an object, it is treated as "callerid". Further parameters are treated as "displayName", "password", "authUser", "extraHeaders", "video", "outProxy" respectively
   * @param scheme Internal information about codecs from the [AppEvents.CallAlerting] event
   */
  function callSIP(to: string, parameters?: CallSIPParameters): Call;
}

declare namespace VoxEngine {
  /**
   * Start an outgoing call to the specified Voximplant user in peer-to-peer mode.
   * The JavaScript scenario with this method and the destination user should be both within the same Voximplant application.
   * Audio playback and recording does not work. P2P mode is available only for calls between SDKs.
   * The method can trigger the [CallEvents.Failed] event in 60 sec, see the [session limits](/docs/guides/voxengine/limits) for details. **IMPORTANT**: calling this method makes impossible to use the non-P2P mode for a new call and specified incomingCall.
   * So the following methods cannot be used: [Call.say], [Call.sendDigits], [Call.sendMediaTo], [Call.stopMediaTo].
   * @param incomingCall incoming call that needs to be forwarded
   * @param username Name of the Voximplant user to call
   * @param parameters Call parameters
   */
  function callUserDirect(
    incomingCall: Call,
    username: string,
    parameters: CallUserDirectParameters
  ): Call;
}

declare namespace VoxEngine {
  /**
   * Starts an outgoing call to the specified Voximplant user. The JavaScript scenario that uses this method and user being called should be both associated with the same Voximplant application.
   * The method can trigger the [CallEvents.Failed] event in 60 sec, see the [session limits](/docs/guides/voxengine/limits) for details.
   * @param parameters Call parameters
   */
  function callUser(parameters: CallUserParameters): Call;
}

declare namespace VoxEngine {
  /**
   * Starts an outgoing call to the specified WhatsApp user.
   * This method requires a WhatsApp Business account. Read more in the [WhatsApp Business-initiated calls](/docs/guides/integrations/whatsapp-calls) article.
   * @param parameters Call parameters.
   */
  function callWhatsappUser(parameters: CallWhatsappUserParameters): Call;
}

declare namespace VoxEngine {
  /**
   * Creates a new [ASR] instance and starts recognition. You can attach sources later via the [VoxMediaUnit] **sendMediaTo** method.
   * <br>
   * Add the following line to your scenario code to use the function:
   * ```
   * require(Modules.ASR);
   * ```
   * @param parameters ASR parameters. IMPORTANT: the **profile** parameter is required, the other parameters are optional
   */
  function createASR(parameters: ASRParameters): ASR;
}

declare namespace VoxEngine {
  /**
   * Creates a new [Conference] instance. You can attach media streams later via the [Conference.sendMediaTo] or [VoxEngine.sendMediaBetween] methods.
   * <br>
   * Add the following line to your scenario code to use the function:
   * ```
   * require(Modules.Conference);
   * ```
   * @param parameters Conference parameters
   */
  function createConference(parameters: ConferenceParameters): Conference;
}

declare namespace VoxEngine {
  /**
   * Creates a new [Recorder] or [ConferenceRecorder] instance. You can attach sources later via the [VoxMediaUnit] **sendMediaTo** method.
   * <br>
   * Add the following line to your scenario code to use the function:
   * ```
   * require(Modules.Recorder);
   * ```
   * @param parameters Recorder parameters. Note that if the first parameter is not an object, it is treated as 'name', with second optional parameter as 'secure' boolean flag, default to **false**
   */
  function createRecorder(parameters?: RecorderParameters): Recorder | ConferenceRecorder;
}

declare namespace VoxEngine {
  /**
   * Creates a new [SequencePlayer] instance. You can attach media streams later via the [SequencePlayer.sendMediaTo] or [VoxEngine.sendMediaBetween] methods.
   * @param parameters Sequence player parameters
   **/
  function createSequencePlayer(parameters: SequencePlayerParameters): SequencePlayer;
}

declare namespace VoxEngine {
  /**
   * Creates a new [StreamingAgent] instance. You can attach sources later via the [VoxMediaUnit] **sendMediaTo** method.
   * <br>
   * Add the following line to your scenario code to use the function:
   * ```
   * require(Modules.StreamingAgent);
   * ```
   * @param parameters Streaming agent parameters
   */
  function createStreamingAgent(parameters: StreamingAgentParameters): StreamingAgent;
}

declare namespace VoxEngine {
  /**
   * Creates a new [Player] instance with the specified [ToneScript](https://en.wikipedia.org/wiki/ToneScript) sequence. You can attach media streams later via the [Player.sendMediaTo] or [VoxEngine.sendMediaBetween] methods.
   * @param script ToneScript string
   * @param parameters Optional. Tone script player parameters
   **/
  function createToneScriptPlayer(script: string, parameters?: ToneScriptPlayerParameters): Player;
}

declare namespace VoxEngine {
  /**
   * Creates a new [Player] instance with the specified text (TTS is used to play the text). You can attach media streams later via the [Player.sendMediaTo] or [VoxEngine.sendMediaBetween] methods.
   * If the text length exceeds 1500 characters, the [PlayerEvents.PlaybackFinished] event is triggered with error description. After the very first playing, a phrase is cached; each createTTSPlayer instance stores the cache data up to 2 weeks. Note that cache addresses only the URL, without additional headers. The cached phrase is available for all applications and further sessions.
   * @param text Text to synthesize
   * @param parameters Optional. TTS player parameters
   **/
  function createTTSPlayer(text: string, parameters?: TTSPlayerParameters): Player;
}

declare namespace VoxEngine {
  /**
   * Creates a new [Player] instance with specified audio file URL. You can attach media streams later via the [Player.sendMediaTo] or [VoxEngine.sendMediaBetween] methods.  
   * 
   * After the very first playback, a file is cached; each
   * 'createURLPlayer' instance stores the cache data up to 2 weeks.
   * Note that cache addresses only the URL, without additional headers.
   * The cached file is available for all applications and further sessions.  
   * 
   * File download has a timeout of 12 seconds. Reaching this timeout causes the "Timeout is reached" error.  
   * The supported file formats are: mp3, ogg, flac, and wav (mp3, speex, vorbis, flac, and wav codecs respectively). Maximum file size is 10 Mb.  
   * 
   * You can attach media streams later via the [Player.sendMediaTo] or [VoxEngine.sendMediaBetween] methods.  
   * method etc. IMPORTANT: each call object can send media to any number of other calls (media units), but can receive only one audio stream. A new incoming stream always replaces the previous one.
   * @param request URL player request
   * @param parameters Optional. URL player parameters
   **/
  function createURLPlayer(request: URLPlayerRequest, parameters?: URLPlayerParameters): Player;
}

declare namespace VoxEngine {
  /**
   * Creates a new [WebSocket] instance. You can attach media streams later via the [WebSocket.sendMediaTo] or [VoxEngine.sendMediaBetween] methods.
   * @param url URL to connect. For the `wss://` protocol it accepts only domain addresses. For the `ws://` protocol, it can accept both domain and IP addresses
   * @param parameters Optional. [WebSocket] parameters
   */
  function createWebSocket(url: string, parameters?: WebSocketParameters): WebSocket;
}

declare namespace VoxEngine {
  /**
   * Set or get custom string associated with current JavaScript session.
   * There are two kinds of the customData values: one is for JavaScript session (i.e., VoxEngine object), another is for the particular call (i.e., Call.customData and web SDK parameter of the method).
   * It is possible to use them at the same time because they are independent entities. Remember that if you receive some value from web SDK, it does not overwrite the VoxEngine's value. Any of customData's type values can be later obtained from call history via management API or control panel.
   * @param customData Optional. Custom session data to set. Maximum size is 200 bytes
   */
  function customData(customData?: string): string;
}

declare namespace VoxEngine {
  /**
   * Destroys an existing conference.
   * <br>
   * Add the following line to your scenario code to use the function:
   * ```
   * require(Modules.Conference);
   * ```
   * @param conference
   */
  function destroyConference(conference: Conference): void;
}

declare namespace VoxEngine {
  /**
   * Disables statistics for incoming WebSockets
   */
  function disableStatisticsForIncomingWebsockets(): void;
}

declare namespace VoxEngine {
  /**
   * Disables trace for incoming WebSockets
   */
  function disableTraceForIncomingWebsockets(): void;
}

declare namespace VoxEngine {
  /**
   * Adds all default event listeners to pass signaling information between two calls. The source code of the method is available on [GitHub](https://github.com/voximplant/easyprocess).
   * @param call1 incoming alerting call
   * @param call2 Newly created outgoing call
   * @param onEstablishedCallback Function to be called once the call is established. Both call1 and call2 are passed to this function as parameters
   * @param direct Whether the call is in the P2P mode. It is The default value is **false**
   */
  function easyProcess(
    call1: Call,
    call2: Call,
    onEstablishedCallback?: (call1: Call, call2: Call) => void,
    direct?: boolean
  ): void;
}

declare namespace VoxEngine {
  /**
   * Enables statistics for incoming WebSockets
   */
  function enableStatisticsForIncomingWebsockets(): void;
}

declare namespace VoxEngine {
  /**
   * Enables trace for incoming WebSockets
   */
  function enableTraceForIncomingWebsockets(): void;
}

declare namespace VoxEngine {
  /**
   * Adds a new request to the specified queue. The request is dispatched to the free agent according to the agent's status (must be "Ready") and skills.
   * <br>
   * Add the following line to your scenario code to use the function:
   * ```
   * require(Modules.ACD);
   * ```
   * @param queueName The name of the queue, to where the call is directed. Queue name must be specified exactly as in the control panel
   * @param callerid ID of the caller which is put to the queue. After request is dispatched to the agent, it is possible to get this ID by assigning a handler to the [ACDEvents.OperatorReached] event. The call is stored in the operatorCall property, so you can use the Call.callerid() method. IMPORTANT: virtual numbers rented from Voximplant cannot be used as CallerID, use only real numbers
   * @param parameters Optional. ACD request parameters
   */
  function enqueueACDRequest(
    queueName: string,
    callerid: string,
    parameters?: ACDEnqueueParameters
  ): ACDRequest;
}

declare namespace VoxEngine {
  /**
   * Appends the task to the [SmartQueue].
   */
  function enqueueTask(parameters: SmartQueueTaskParameters): SmartQueueTask;
}

declare namespace VoxEngine {
  /**
   * Helper function to forward an incoming call to PSTN. The method handles numbers only in the E.164 format by default. If you need to handle a number in another format, pass an additional function (as a parameter) to the method. For more details see the [GitHub repo](https://github.com/voximplant/easyprocess).
   * @param numberTransform Optional. Function used to transform dialed number to international format. This function accepts dialed number and returns phone number in E.164 format
   * @param onEstablishedCallback Optional. Function that is invoked after a call is established. Both calls (incoming and outgoing) are passed to this function
   * @param options An object with a number used as the callerid that is displayed to the callee. Whitespaces are not allowed. A valid phone number that can be used to call back if required
   */
  function forwardCallToPSTN(
    numberTransform?: (number: string) => string,
    onEstablishedCallback?: (call1: Call, call2: Call) => void,
    options?: { callerid: string }
  ): void;
}

declare namespace VoxEngine {
  /**
   * Helper function to forward an incoming call to a dialed SIP URI. For more details see the [GitHub repo](https://github.com/voximplant/easyprocess).
   * @param onEstablishedCallback Optional. Function that is invoked after call is established. Both calls (incoming and outgoing) are passed to this function
   * @param video Whether the call has video support. Please note that the price for audio-only and video calls is different!
   */
  function forwardCallToSIP(
    onEstablishedCallback?: (call1: Call, call2: Call) => void,
    video?: boolean
  ): void;
}

declare namespace VoxEngine {
  /**
   * Helper function to forward an incoming call to a user of the current application in the P2P mode. Dialed number is considered as username. Due to the P2P mode, media player and recording do not work. For more details see the [GitHub repo](https://github.com/voximplant/easyprocess).
   * @param onEstablishedCallback Optional. Function that is invoked after call is established. Both calls (incoming and outgoing) are passed to this function
   */
  function forwardCallToUserDirect(
    onEstablishedCallback?: (call1: Call, call2: Call) => void
  ): void;
}

declare namespace VoxEngine {
  /**
   * Helper function to forward an incoming call to a user of the current application. Dialed number is considered as username. For more details see the [GitHub repo](https://github.com/voximplant/easyprocess).
   * @param onEstablishedCallback Optional. Function that is invoked after call is established. Both calls (incoming and outgoing) are passed to this function
   * @param video Whether the call has video support. Please note that the price for audio-only and video calls is different!
   */
  function forwardCallToUser(
    onEstablishedCallback?: (call1: Call, call2: Call) => void,
    video?: boolean
  ): void;
}

declare namespace VoxEngine {
  /**
   * Gets a value of the secret stored in the Voximplant panel.
   * @param name Name of the secret. If name is empty or not found, returns **undefined**.
   * @returns
   */
    function getSecretValue(name: string): string | undefined;
}

declare namespace VoxEngine {
  /**
   * Helper function to play sound to incoming call. It terminates a call in three cases:
   * 1) playback is finished
   * 2) call failed
   * 3) call disconnected
   * @param fileURL URL of audio (mp3) file to play
   */
  function playSoundAndHangup(fileURL: string): void;
}

declare namespace VoxEngine {
  /**
   * Removes a handler for the specified [AppEvents] event.
   * @param event Event class (i.e., [AppEvents.Started])
   * @param callback Optional. Handler function. If not specified, all handler functions are removed
   */
  function removeEventListener<T extends keyof _AppEvents>(
    event: AppEvents | T,
    callback?: (event: _AppEvents[T]) => any
  ): void;
}

declare namespace VoxEngine {
  /**
   * Start sending media between mediaUnit1 and mediaUnit2. This method binds two audio/video streams.
   * @param mediaUnit1 First media unit
   * @param mediaUnit2 Second media unit
   */
  function sendMediaBetween(mediaUnit1: VoxMediaUnit, mediaUnit2: VoxMediaUnit): void;
}

/**
 * [SequencePlayer] parameters. Can be passed as arguments to the [VoxEngine.createSequencePlayer] method.
 */
declare interface SequencePlayerParameters {
  /**
   * Array of the segments.
   */
  segments: SequencePlayerSegment[];
}

declare namespace VoxEngine {
  /**
   * Stops sending media between mediaUnit1 and mediaUnit2.
   * @param mediaUnit1 First media unit
   * @param mediaUnit2 Second media unit
   */
  function stopMediaBetween(mediaUnit1: VoxMediaUnit, mediaUnit2: VoxMediaUnit): void;
}

declare namespace VoxEngine {
  /**
   * Terminates the current JavaScript session. All audio/video streams are disconnected and scenario execution stops. Note that after this function, only the [AppEvents.Terminating] and [AppEvents.Terminated] events are triggered.
   * 
   * NOTE: if you are using this method inside a code block (e.g., an "if" block), it does not stop the execution of the current block. Use `return;` after using this method to exit the current code block.
   */
  function terminate(): void;
}

declare namespace VoxEngine {}


declare namespace VoximplantAPI {
  interface APIError {
    /**
     * The error code
     */
    code: number;
    /**
     * The error description
     */
    msg: string;
  }
  interface AccountInfo {
    /**
     * The account's ID
     */
    accountId: number;
    /**
     * The account's name
     */
    accountName: string;
    /**
     * The account's email
     */
    accountEmail: string;
    /**
     * The account API key. Use password or api_key authentication to show the api_key
     */
    apiKey?: string;
    /**
     * The first name
     */
    accountFirstName?: string;
    /**
     * The last name
     */
    accountLastName?: string;
    /**
     * The UTC account created time in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    created: Date;
    /**
     * The notification language code (2 symbols, ISO639-1). Examples: en, ru
     */
    languageCode?: string;
    /**
     * The account location (timezone). Examples: America/Los_Angeles, Etc/GMT-8, Etc/GMT+10
     */
    location?: string;
    /**
     * The min balance value to notify by email or SMS
     */
    minBalanceToNotify?: number;
    /**
     * Whether Voximplant notifications are required
     */
    accountNotifications?: boolean;
    /**
     * Whether Voximplant plan changing notifications are required
     */
    tariffChangingNotifications?: boolean;
    /**
     * Whether Voximplant news notifications are required
     */
    newsNotifications?: boolean;
    /**
     * The company or businessman name
     */
    billingAddressName?: string;
    /**
     * The billing address country code (2 symbols, ISO 3166-1 alpha-2). Examples: US, RU, GB
     */
    billingAddressCountryCode?: string;
    /**
     * The office address
     */
    billingAddressAddress?: string;
    /**
     * The office ZIP
     */
    billingAddressZip?: string;
    /**
     * The office phone number
     */
    billingAddressPhone?: string;
    /**
     * The office state (US) or province (Canada), up to 100 characters. Examples: California, Illinois, British Columbia
     */
    billingAddressState?: string;
    /**
     * Whether the account is active
     */
    active: boolean;
    /**
     * Whether account is blocked by Voximplant admins
     */
    frozen?: boolean;
    /**
     * The account's money
     */
    balance?: number;
    /**
     * The account's credit limit
     */
    creditLimit?: number;
    /**
     * The currency code (USD, RUR, EUR, ...)
     */
    currency?: string;
    /**
     * Whether Robokassa payments are allowed
     */
    supportRobokassa?: boolean;
    /**
     * Whether Bank card payments are allowed
     */
    supportBankCard?: boolean;
    /**
     * Whether Bank invoices are allowed
     */
    supportInvoice?: boolean;
    /**
     * The custom data
     */
    accountCustomData?: string;
    /**
     * The allowed access entries (the API function names)
     */
    accessEntries?: string[];
    /**
     * Whether the admin user permissions are granted
     */
    withAccessEntries?: boolean;
    /**
     * If URL is specified, Voximplant cloud makes HTTP POST requests to it when something happens. For a full list of reasons see the <b>type</b> field of the [AccountCallback] structure. The HTTP request has a JSON-encoded body that conforms to the [AccountCallbacks] structure
     */
    callbackUrl?: string;
    /**
     * If salt string is specified, each HTTP request made by the Voximplant cloud toward the <b>callback_url</b> has a <b>salt</b> field set to MD5 hash of account information and salt. That hash can be used be a developer to ensure that HTTP request is made by the Voximplant cloud
     */
    callbackSalt?: string;
    /**
     * Whether to send an email when a JS error occurs
     */
    sendJsError?: boolean;
    /**
     * The payments limits applicable to each payment method
     */
    billingLimits?: BillingLimits;
    /**
     * Whether to activate one-way SMS
     */
    a2pSmsEnabled?: boolean;
  }
  interface BillingLimits {
    /**
     * The Robokassa limits
     */
    robokassa?: BillingLimitInfo;
    /**
     * The bank card limits
     */
    bankCard?: BankCardBillingLimitInfo;
    /**
     * The invoice limits
     */
    invoice?: BillingLimitInfo;
  }
  interface BillingLimitInfo {
    /**
     * The minimum amount
     */
    minAmount: number;
    /**
     * The currency
     */
    currency: string;
  }
  interface BankCardBillingLimitInfo {
    /**
     * The minimum amount
     */
    minAmount: number;
    /**
     * The currency
     */
    currency: string;
  }
  interface ApplicationInfo {
    /**
     * The application ID
     */
    applicationId: number;
    /**
     * The full application name
     */
    applicationName: string;
    /**
     * The application editing UTC date in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    modified: Date;
    /**
     * Whether a secure storage for logs and records is enabled
     */
    secureRecordStorage: boolean;
  }
  interface UserInfo {
    /**
     * The user ID
     */
    userId: number;
    /**
     * The user name
     */
    userName: string;
    /**
     * The display user name
     */
    userDisplayName: string;
    /**
     * Whether the user is active. Inactive users cannot log in to applications
     */
    userActive: boolean;
    /**
     * Whether the user uses the parent account's money, 'false' if the user has a separate balance
     */
    parentAccounting: boolean;
    /**
     * The current user's money in the currency specified for the account. The value is the number rounded to 4 decimal places, and it changes during the calls, transcribing, purchases etc
     */
    liveBalance: number;
    /**
     * The current user's money in the currency specified for the account. The value is the number rounded to 4 decimal places. The parameter is the alias to live_balance by default. But there is a possibility to make the alias to fixed_balance: just to pass return_live_balance=false into the [GetAccountInfo] method
     */
    balance: number;
    /**
     * The last committed balance which has been approved by billing's transaction
     */
    fixedBalance: number;
    /**
     * The custom data
     */
    userCustomData?: string;
    /**
     * The bound applications
     */
    applications?: ApplicationInfo[];
    /**
     * The bound skills
     */
    skills?: SkillInfo[];
    /**
     * The bound ACD queues
     */
    acdQueues?: ACDQueueOperatorInfo[];
    /**
     * The ACD operator status. The following values are possible: OFFLINE, ONLINE, READY, BANNED, IN_SERVICE, AFTER_SERVICE, TIMEOUT, DND
     */
    acdStatus?: string;
    /**
     * The ACD status changing UTC date in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    acdStatusChangeTime: Date;
    /**
     * The user editing UTC date in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    created: Date;
    /**
     * The user editing UTC date in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    modified: Date;
  }
  interface SipWhiteListInfo {
    /**
     * The SIP white list item ID
     */
    sipWhitelistId: number;
    /**
     * The network address in format A.B.C.D/L
     */
    sipWhitelistNetwork: string;
    /**
     * The network address description
     */
    description?: string;
  }
  interface CallSessionInfo {
    /**
     * Call's audio quality. The possible values are: Standard | HD | Ultra HD.
     */
    audioQuality: string;
    /**
     * Routing rule name
     */
    ruleName: string;
    /**
     * Application name
     */
    applicationName: string;
    /**
     * Unique JS session identifier
     */
    callSessionHistoryId: number;
    /**
     * Account ID that initiates the JS session
     */
    accountId: number;
    /**
     * Application ID that initiates the JS session
     */
    applicationId: number;
    /**
     * User ID that initiates the JS session
     */
    userId: number;
    /**
     * Start date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    startDate: Date;
    /**
     * Entire JS session duration in seconds. The session can contain multiple calls
     */
    duration?: number;
    /**
     * Initiator's IP address
     */
    initiatorAddress: string;
    /**
     * Media server IP address
     */
    mediaServerAddress: string;
    /**
     * Link to the session log. The log retention policy is 1 month, after that time this field clears. If you have issues accessing the log file, check if the application has "Secure storage of applications and logs" feature enabled. In this case, you need to <a href='/docs/guides/managementapi/secureobjects'>authorize</a>.
     */
    logFileUrl: string;
    /**
     * Finish reason. Possible values are __Normal termination__, __Insufficient funds__, __Internal error (billing timeout)__, __Terminated administratively__, __JS session error__, __Timeout__
     */
    finishReason?: string;
    /**
     * Calls within the JS session, including durations, cost, phone numbers and other information
     */
    calls?: CallInfo[];
    /**
     * Used resources
     */
    otherResourceUsage?: ResourceUsage[];
    /**
     * Bound records
     */
    records?: Record[];
    /**
     * Custom data
     */
    customData?: string;
  }
  interface CallInfo {
    /**
     * Call's history ID
     */
    callId: number;
    /**
     * Call start time in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    startTime: Date;
    /**
     * Call forwarding number
     */
    diversionNumber?: string;
    /**
     * Call duration in seconds
     */
    duration?: number;
    /**
     * Local number on the platform side
     */
    localNumber: string;
    /**
     * Remote number on the client side
     */
    remoteNumber: string;
    /**
     * Type of the remote number, e.g., a PSTN, mobile, user or sip address
     */
    remoteNumberType: string;
    /**
     * Whether the call is incoming
     */
    incoming: boolean;
    /**
     * Whether the call is successful
     */
    successful: boolean;
    /**
     * Transaction ID
     */
    transactionId: number;
    /**
     * Record URL
     */
    recordUrl?: string;
    /**
     * Media server's IP address
     */
    mediaServerAddress: string;
    /**
     * Call's cost
     */
    cost?: number;
    /**
     * Custom data passed to the JS session
     */
    customData?: string;
    /**
     * End reason code and description
     */
    endReason?: any;
  }
  interface TransactionInfo {
    /**
     * The transaction ID
     */
    transactionId: number;
    /**
     * The account ID
     */
    accountId: string;
    /**
     * The transaction date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    performedAt: Date;
    /**
     * The transaction amount, $
     */
    amount: number;
    /**
     * The amount currency (USD, RUR, EUR, ...).
     */
    currency: string;
    /**
     * The transaction type. The following values are possible: gift_revoke, resource_charge, money_distribution, subscription_charge, subscription_installation_charge, card_periodic_payment, card_overrun_payment, card_payment, rub_card_periodic_payment, rub_card_overrun_payment, rub_card_payment, robokassa_payment, gift, promo, adjustment, wire_transfer, us_wire_transfer, refund, discount, mgp_charge, mgp_startup, mgp_business, mgp_big_business, mgp_enterprise, mgp_large_enterprise, techsupport_charge, tax_charge, monthly_fee_charge, grace_credit_payment, grace_credit_provision, mau_charge, mau_overrun, im_charge, im_overrun, fmc_charge, sip_registration_charge, development_fee, money_transfer_to_child, money_transfer_to_parent, money_acceptance_from_child, money_acceptance_from_parent, phone_number_installation, phone_number_charge, toll_free_phone_number_installation, toll_free_phone_number_charge, services, user_money_transfer, paypal_payment, paypal_overrun_payment, paypal_periodic_payment
     */
    transactionType: string;
    /**
     * The transaction description
     */
    transactionDescription?: string;
  }
  interface ResourceUsage {
    /**
     * The resource usage ID
     */
    resourceUsageId: number;
    /**
     * The resource type. The possible values are CALLSESSION, VIDEOCALL, VIDEORECORD, VOICEMAILDETECTION, YANDEXASR, ASR, TRANSCRIPTION, TTS_TEXT_GOOGLE, TTS_YANDEX, AUDIOHDCONFERENCE
     */
    resourceType: string;
    /**
     * The resource cost
     */
    cost?: number;
    /**
     * The description
     */
    description?: string;
    /**
     * The start resource using time in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    usedAt: Date;
    /**
     * The transaction ID
     */
    transactionId: number;
    /**
     * The resource quantity
     */
    resourceQuantity?: number;
    /**
     * The resource unit
     */
    unit?: string;
    /**
     * The reference to call
     */
    refCallId?: number;
  }
  interface Record {
    /**
     * The record ID
     */
    recordId: number;
    /**
     * The record name
     */
    recordName?: string;
    /**
     * The record cost
     */
    cost?: number;
    /**
     * The start recording time in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    startTime: Date;
    /**
     * The call duration in seconds
     */
    duration?: number;
    /**
     * The record URL.  If you have issues accessing the record file, check if the application has "Secure storage of applications and logs" feature enabled. In this case, you need to <a href='/docs/guides/managementapi/secureobjects'>authorize</a>.
     */
    recordUrl?: string;
    /**
     * The transaction ID
     */
    transactionId: number;
    /**
     * The file size
     */
    fileSize?: number;
    /**
     * Transcription URL. To open the URL, please add authorization parameters and <b>record_id</b> to it
     */
    transcriptionUrl?: string;
    /**
     * The status of transcription. The possible values are Not required, In progress, Complete
     */
    transcriptionStatus?: string;
  }
  interface QueueInfo {
    /**
     * The ACD queue ID
     */
    acdQueueId: number;
    /**
     * The queue name
     */
    acdQueueName: string;
    /**
     * The application ID
     */
    applicationId?: number;
    /**
     * The integer queue priority. The highest priority is 0
     */
    acdQueuePriority: number;
    /**
     * The value in the range of [0.5 ... 1.0]. The value 1.0 means the service probability 100% in challenge with a lower priority queue
     */
    serviceProbability: number;
    /**
     * Whether to enable the auto binding of operators to a queue by skills comparing
     */
    autoBinding: boolean;
    /**
     * The maximum predicted waiting time in minutes. When a call is going to be enqueued to the queue, its predicted waiting time should be less or equal to the maximum predicted waiting time; otherwise, a call would be rejected
     */
    maxWaitingTime?: number;
    /**
     * The maximum number of calls that can be enqueued into this queue
     */
    maxQueueSize?: number;
    /**
     * The average service time in seconds. Specify the parameter to correct or initialize the waiting time prediction
     */
    averageServiceTime?: number;
    /**
     * The ACD queue creating UTC date in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    created: Date;
    /**
     * The ACD queue editing UTC date in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    modified: Date;
    /**
     * The ACD queue deleting UTC date in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    deleted?: Date;
    /**
     * The queue users info
     */
    users?: QueueUsers[];
    /**
     * The queue skills info
     */
    skills?: QueueSkills[];
    /**
     * The service level thresholds in seconds
     */
    slThresholds?: number[];
    /**
     * Number of agents bound to the queue
     */
    operatorcount?: number;
  }
  interface QueueSkills {
    /**
     * The skill ID
     */
    skillId: number;
    /**
     * The skill name
     */
    skillName: string;
  }
  interface QueueUsers {
    /**
     * The user ID
     */
    userId: number;
  }
  interface ACDState {
    /**
     * The queues' states
     */
    acdQueues: ACDQueueState[];
  }
  interface ACDQueueState {
    /**
     * The ACD queue ID
     */
    acdQueueId: number;
    /**
     * List of operators with the 'READY' state that can accept a call from this queue
     */
    readyOperators: ACDReadyOperatorState[];
    /**
     * Number of ready operators
     */
    readyOperatorsCount: number;
    /**
     * List of operators with the 'READY' state that cannot accept a call from this queue. Operator cannot accept a call if they are temporarily banned, or they are servicing a call right now
     */
    lockedOperators: ACDLockedOperatorState[];
    /**
     * Number of locked operators
     */
    lockedOperatorsCount: number;
    /**
     * List of operators with the 'AFTER_SERVICE' state. This state is set right after a call is ended to indicate a call postprocessing
     */
    afterServiceOperators: ACDAfterServiceOperatorState[];
    /**
     * Number of operators with the 'AFTER SERVICE' state
     */
    afterServiceOperatorCount: number;
    /**
     * List of calls enqueued into this queue that are being serviced right now by operators
     */
    servicingCalls: ACDServicingCallState[];
    /**
     * List of calls enqueued into this queue that are not yet serviced by operators
     */
    waitingCalls: ACDWaitingCallState[];
  }
  interface ACDReadyOperatorState {
    /**
     * The user ID of the operator
     */
    userId: number;
    /**
     * The user name of the operator
     */
    userName: string;
    /**
     * The display user name of the operator
     */
    userDisplayName: string;
    /**
     * The idle duration in seconds. The minimum of the duration after the last hangup and the duration after the operator status changing to READY
     */
    idleDuration: number;
  }
  interface ACDLockedOperatorState {
    /**
     * The user ID of the operator
     */
    userId: number;
    /**
     * The user name of the operator
     */
    userName: string;
    /**
     * The display user name of the operator
     */
    userDisplayName: string;
    /**
     * The UTC time when the operator becomes unavailable in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    unreached?: Date;
    /**
     * The operator locks
     */
    locks?: ACDLock[];
    /**
     * The ACD operator calls
     */
    acdCalls?: ACDOperatorCall[];
    /**
     * The operator <a href='/docs/references/websdk/voximplant/operatoracdstatuses'>status string</a>. 'BANNED' string indicates temporarily <a href='/docs/guides/smartqueue/acdv1'>banned operators</a>. The following values are possible: READY, BANNED
     */
    status?: string;
  }
  interface ACDAfterServiceOperatorState {
    /**
     * The user ID of the operator
     */
    userId: number;
    /**
     * The user name of the operator
     */
    userName: string;
    /**
     * The display user name of the operator
     */
    userDisplayName: string;
    /**
     * The operator <a href='/docs/references/websdk/voximplant/operatoracdstatuses'>status string</a>
     */
    status?: string;
  }
  interface ACDLock {
    /**
     * The ACD lock ID
     */
    id: string;
    /**
     * The UTC lock created time in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    created: Date;
  }
  interface ACDOperatorCall {
    /**
     * The ACD session history ID of the request
     */
    acdSessionHistoryId: number;
    /**
     * The internal ACD session history ID
     */
    acdRequestId: string;
    /**
     * The ACD queue ID
     */
    acdQueueId: number;
    /**
     * The ACD queue name
     */
    acdQueueName: string;
    /**
     * The client callerid
     */
    callerid?: string;
    /**
     * The begin time of the request in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    beginTime: Date;
    /**
     * The submission time of the request in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    submitted?: Date;
  }
  interface ACDServicingCallState {
    /**
     * The user ID of the operator
     */
    userId: number;
    /**
     * The user name of the operator
     */
    userName: string;
    /**
     * The display user name of the operator
     */
    userDisplayName: string;
    /**
     * The request priority
     */
    priority: number;
    /**
     * The client callerid
     */
    callerid?: string;
    /**
     * The begin time of the request in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    beginTime: Date;
    /**
     * The waiting time before servicing in seconds
     */
    waitingTime: number;
    /**
     * The ACD session history ID of the request
     */
    acdSessionHistoryId: number;
  }
  interface ACDWaitingCallState {
    /**
     * The user ID of the operator to try to service the request
     */
    userId?: number;
    /**
     * The user name of the operator
     */
    userName: string;
    /**
     * The display user name of the operator
     */
    userDisplayName: string;
    /**
     * The request priority
     */
    priority: number;
    /**
     * The client callerid
     */
    callerid?: string;
    /**
     * The begin time of the request in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    beginTime: Date;
    /**
     * The waiting time in seconds
     */
    waitingTime: number;
    /**
     * The predicted minutes left to start servicing
     */
    minutesToSubmit: number;
    /**
     * The ACD session history ID of the request
     */
    acdSessionHistoryId: number;
  }
  interface WABPhoneInfo {
    /**
     * WhatsApp Business phone number
     */
    wabPhoneNumber: string;
    /**
     * The WhatsApp Business country code (2 symbols)
     */
    countryCode: string;
    /**
     * ID of the bound application
     */
    applicationId?: number;
    /**
     * Name of the bound application
     */
    applicationName?: string;
    /**
     * ID of the bound rule
     */
    ruleId?: number;
    /**
     * Name of the bound rule
     */
    ruleName?: string;
    /**
     * Full application name, e.g. myapp.myaccount.n1.voximplant.com
     */
    extendedApplicationName?: string;
    /**
     * WhatsApp Business phone number description
     */
    description?: string;
    /**
     * UTC date in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    created: Date;
    /**
     * UTC date of an event associated with the number in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    modified: Date;
  }
  interface AttachedPhoneInfo {
    /**
     * The phone ID
     */
    phoneId: number;
    /**
     * The phone number
     */
    phoneNumber: string;
    /**
     * The phone monthly charge in the account's currency
     */
    phonePrice: number;
    /**
     * The phone country code (2 symbols)
     */
    phoneCountryCode: string;
    /**
     * Phone number activation status
     */
    activationStatus?: string;
    /**
     * The next renewal date in the following format: YYYY-MM-DD
     */
    phoneNextRenewal: Date;
    /**
     * The purchase date in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    phonePurchaseDate: Date;
    /**
     * Whether the subscription is frozen
     */
    deactivated: boolean;
    /**
     * Whether the subscription is cancelled
     */
    canceled: boolean;
    /**
     * Whether to charge automatically
     */
    autoCharge: boolean;
    /**
     * ID of the bound application
     */
    applicationId?: number;
    /**
     * Name of the bound application
     */
    applicationName?: string;
    /**
     * ID of the bound rule
     */
    ruleId?: number;
    /**
     * Name of the bound rule
     */
    ruleName?: string;
    /**
     * The phone category name (MOBILE, GEOGRAPHIC, TOLLFREE, MOSCOW495)
     */
    categoryName: string;
    /**
     * Whether the verification is required for the account
     */
    requiredVerification?: string;
    /**
     * The account verification status. The following values are possible: REQUIRED, IN_PROGRESS, VERIFIED
     */
    verificationStatus?: string;
    /**
     * Unverified phone hold until the date in the following format: YYYY-MM-DD (if the account verification is required). The number is detached on that day automatically!
     */
    unverifiedHoldUntil?: Date;
    /**
     * Whether a not verified account can use the phone
     */
    canBeUsed: boolean;
    /**
     * Whether SMS is supported for this phone number. SMS needs to be explicitly enabled via the [ControlSms] Management API before sending or receiving SMS. If SMS is supported and enabled, SMS can be sent from this phone number via the [SendSmsMessage] Management API and received via the [InboundSmsCallback] property of the HTTP callback. See <a href='/docs/guides/managementapi/callbacks'>this article</a> for HTTP callback details
     */
    isSmsSupported: boolean;
    /**
     * Whether SMS sending and receiving is enabled for this phone number via the [ControlSms] Management API
     */
    isSmsEnabled: boolean;
    /**
     * If set, the callback of an incoming SMS is sent to this url, otherwise, it is sent to the general account URL
     */
    incomingSmsCallbackUrl?: string;
    /**
     * Whether you need to make a request to enable calls to emergency numbers
     */
    emergencyCallsToBeEnabled: boolean;
    /**
     * Whether calls to emergency numbers are enabled
     */
    emergencyCallsEnabled: boolean;
    /**
     * Phone number subscription ID
     */
    subscriptionId: number;
    /**
     * Full application name, e.g. myapp.myaccount.n1.voximplant.com
     */
    extendedApplicationName?: string;
    /**
     * Phone region name
     */
    phoneRegionName?: string;
    /**
     * UTC date of an event associated with the number in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    modified: Date;
  }
  interface CallerIDInfo {
    /**
     * The callerID id
     */
    calleridId: number;
    /**
     * The callerID number
     */
    calleridNumber: string;
    /**
     * Whether active
     */
    active: boolean;
    /**
     * The code entering attempts left for the unverified callerID
     */
    codeEnteringAttemptsLeft?: number;
    /**
     * The verification call attempts left for the unverified callerID
     */
    verificationCallAttemptsLeft?: number;
    /**
     * The verification ending date in the following format: YYYY-MM-DD (for the verified callerID)
     */
    verifiedUntil?: Date;
  }
  interface OutboundTestPhonenumberInfo {
    /**
     * The personal phone number
     */
    phoneNumber: string;
    /**
     * Whether the phone number is verified
     */
    isVerified: boolean;
    /**
     * The country code
     */
    countryCode: string;
  }
  interface ACDQueueOperatorInfo {
    /**
     * The ACD queue ID
     */
    acdQueueId: number;
    /**
     * The ACD queue name
     */
    acdQueueName: string;
    /**
     * Whether the user is bound to the ACD queue in manual mode if false
     */
    autoLink: boolean;
  }
  interface SkillInfo {
    /**
     * The skill ID
     */
    skillId: number;
    /**
     * The skill name
     */
    skillName: string;
  }
  interface ExchangeRates {
    /**
     * The RUR exchange rate
     */
    RUR?: number;
    /**
     * The KZT exchange rate
     */
    KZT?: number;
    /**
     * The EUR exchange rate
     */
    EUR?: number;
    /**
     * The USD exchange rate. It is always equal to 1
     */
    USD?: number;
  }
  interface CallList {
    /**
     * The list ID
     */
    listId: number;
    /**
     * The list name
     */
    listName: string;
    /**
     * The priority of the call list
     */
    priority: number;
    /**
     * The rule id
     */
    ruleId: number;
    /**
     * The maximum number of simultaneous tasks
     */
    maxSimultaneous: number;
    /**
     * The number of task attempts run, which failed to call
     */
    numAttempts: number;
    /**
     * The date of submitted the list in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    dtSubmit: Date;
    /**
     * The completion date in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    dtComplete?: Date;
    /**
     * The interval between attempts in seconds
     */
    intervalSeconds: number;
    /**
     * The status name. The possible values are __In progress__, __Completed__, __Canceled__
     */
    status: string;
    /**
     * Whether the first or repeated calls have priority.
     */
    taskPriorityStrategy: string;
  }
  interface SIPRegistration {
    /**
     * The SIP registration ID
     */
    sipRegistrationId: number;
    /**
     * The user name from sip proxy
     */
    sipUsername: string;
    /**
     * The sip proxy
     */
    proxy: string;
    /**
     * The last time updated
     */
    lastUpdated: number;
    /**
     * The SIP authentications user
     */
    authUser?: string;
    /**
     * The outgoing proxy
     */
    outboundProxy?: string;
    /**
     * Whether the SIP registration is successful
     */
    successful?: boolean;
    /**
     * The status code from a SIP registration
     */
    statusCode?: number;
    /**
     * The error message from a SIP registration
     */
    errorMessage?: string;
    /**
     * Whether the subscription is deactivation. The SIP registration is frozen if true
     */
    deactivated: boolean;
    /**
     * The next subscription renewal date in the following format: YYYY-MM-DD
     */
    nextSubscriptionRenewal: Date;
    /**
     * The purchase date in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    purchaseDate: Date;
    /**
     * The subscription monthly charge
     */
    subscriptionPrice: string;
    /**
     * Whether the SIP registration is persistent. Set false to activate it only on the user login
     */
    isPersistent: boolean;
    /**
     * ID of the bound user
     */
    userId?: number;
    /**
     * Name of the bound user
     */
    userName?: string;
    /**
     * ID of the bound application
     */
    applicationId?: number;
    /**
     * Name of the bound application
     */
    applicationName?: string;
    /**
     * ID of the bound rule
     */
    ruleId?: number;
    /**
     * Name of the bound rule
     */
    ruleName?: string;
  }
  interface AdminRole {
    /**
     * The admin role ID
     */
    adminRoleId: number;
    /**
     * The admin role name
     */
    adminRoleName: string;
    /**
     * Whether to ignore the allowed and denied entries
     */
    adminRoleActive: boolean;
    /**
     * Whether it is a system role
     */
    systemRole: boolean;
    /**
     * The admin role editing UTC date in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    modified: Date;
    /**
     * The allowed access entries (the API function names)
     */
    allowedEntries?: string[];
    /**
     * The denied access entries (the API function names)
     */
    deniedEntries?: string[];
  }
  interface AdminUser {
    /**
     * The admin user ID
     */
    adminUserId: number;
    /**
     * The admin user name
     */
    adminUserName: string;
    /**
     * The admin user display name
     */
    adminUserDisplayName: string;
    /**
     * Whether login is allowed
     */
    adminUserActive: boolean;
    /**
     * The admin user editing UTC date in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    modified: Date;
    /**
     * The allowed access entries (the API function names)
     */
    accessEntries?: string[];
    /**
     * The attached admin roles
     */
    adminRoles?: AdminRole[];
  }
  interface AuthorizedAccountIP {
    /**
     * The authorized IP4 or network
     */
    authorizedIp: string;
    /**
     * Whether the IP is allowed (true - whitelist, false - blacklist)
     */
    allowed: boolean;
    /**
     * The item creating UTC date in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    created: Date;
  }
  interface PstnBlackListInfo {
    /**
     * The black list item ID
     */
    pstnBlacklistId: number;
    /**
     * The phone number
     */
    pstnBlacklistPhone: string;
  }
  interface RecordStorageInfo {
    /**
     * The record storage ID
     */
    recordStorageId?: number;
    /**
     * The record storage name
     */
    recordStorageName?: string;
  }
  interface SmsTransaction {
    /**
     * Message ID
     */
    messageId: number;
    /**
     * The SMS destination number
     */
    destinationNumber: string;
  }
  interface FailedSms {
    /**
     * The SMS destination number
     */
    destinationNumber: string;
    /**
     * The error description
     */
    errorDescription: string;
    /**
     * The error code
     */
    errorCode: number;
  }
  interface RoleGroupView {
    /**
     * The role group ID
     */
    id: number;
    /**
     * The role group name
     */
    name: string;
  }
  interface SmsHistory {
    /**
     * Message ID
     */
    messageId: number;
    /**
     * Number being called from
     */
    sourceNumber: number;
    /**
     * Number being called to
     */
    destinationNumber: number;
    /**
     * Incoming or outgoing message
     */
    direction: string;
    /**
     * Number of fragments the initial message is divided into
     */
    fragments: number;
    /**
     * Cost of the message
     */
    cost: number;
    /**
     * Status of the message. The possible values are: 1 — Success, 2 — Error, 3 — Waiting
     */
    statusId: string;
    /**
     * Error message (if any)
     */
    errorMessage?: string;
    /**
     * Date of message processing. The format is yyyy-MM-dd HH:mm:ss
     */
    processedDate: Date;
    /**
     * Id of the transaction for this message
     */
    transactionId?: number;
    /**
     * Stored message text
     */
    text?: string;
  }
  interface A2PSmsHistory {
    /**
     * Message ID
     */
    messageId: number;
    /**
     * SMS source number
     */
    sourceNumber: number;
    /**
     * SMS destination number
     */
    destinationNumber: number;
    /**
     * Number of fragments the initial message is divided into
     */
    fragments: number;
    /**
     * The message cost
     */
    cost: number;
    /**
     * The message status. The possible values are: 1 — Success, 2 — Error, 3 — Waiting
     */
    statusId: string;
    /**
     * Error message (if any)
     */
    errorMessage?: string;
    /**
     * Date of message processing. The format is yyyy-MM-dd HH:mm:ss
     */
    processingDate: Date;
    /**
     * The transaction ID for this message
     */
    transactionId: number;
    /**
     * Delivery status: QUEUED, DISPATCHED, ABORTED, REJECTED, DELIVERED, FAILED, EXPIRED, UNKNOWN
     */
    deliveryStatus: string;
    /**
     * Stored message text
     */
    text?: string;
  }
  interface GetSQQueuesResult {
    /**
     * ID of the SmartQueue
     */
    sqQueueId: number;
    /**
     * Name of the SmartQueue
     */
    sqQueueName: string;
    /**
     * Whether the tasks are queued when there are no active agents
     */
    holdImIfInactiveAgents?: boolean;
    /**
     * Agent selection strategy
     */
    agentSelection: string;
    /**
     * Strategy of prioritizing requests for service
     */
    taskSelection: string;
    /**
     * Whether the call task is kept in the queue if all agents are unavailable
     */
    holdCallsIfInactiveAgents?: boolean;
    /**
     * Comment
     */
    description?: string;
    /**
     * UTC date of the queue creation in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    created?: Date;
    /**
     * UTC date of the queue modification in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    modified?: Date;
    /**
     * Maximum time in minutes that a CALL-type request can remain in the queue without being assigned to an agent in minutes. If the value has been passed in seconds, this field is also present in the answer, rounded to the bigger number
     */
    callMaxWaitingTime?: number;
    /**
     * Maximum time in minutes that a CALL-type request can remain in the queue without being assigned to an agent in seconds. If the value has been passed in minutes, this field is also present in the answer
     */
    callMaxWaitingTimeInSeconds?: number;
    /**
     * Maximum time in minutes that an IM-type request can remain in the queue without being assigned to an agent in minutes. If the value has been passed in seconds, this field is also present in the answer, rounded to the bigger number
     */
    imMaxWaitingTime?: number;
    /**
     * Maximum time in minutes that an IM-type request can remain in the queue without being assigned to an agent in seconds. If the value has been passed in minutes, this field is also present in the answer
     */
    imMaxWaitingTimeInSeconds?: number;
    /**
     * Maximum size of the queue with CALL-type requests
     */
    callMaxQueueSize?: number;
    /**
     * Maximum size of the queue with IM-type requests
     */
    imMaxQueueSize?: number;
    /**
     * Number of agents bound to the queue
     */
    agentcount?: number;
  }
  interface GetSQSkillsResult {
    /**
     * ID of the skill
     */
    sqSkillId: number;
    /**
     * Name of the skill
     */
    sqSkillName: string;
    /**
     * Comment
     */
    description?: string;
    /**
     * UTC date of the queue creation in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    created?: Date;
    /**
     * UTC date of the queue modification in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    modified?: Date;
  }
  interface GetSQAgentsResult {
    /**
     * ID of the user
     */
    userId?: number;
    /**
     * Name of the user
     */
    userName?: string;
    /**
     * Display name of the user
     */
    userDisplayName?: string;
    /**
     * Maximum number of chats that the user processes simultaneously
     */
    maxSimultaneousConversations?: number;
    /**
     * Agent statuses info
     */
    sqStatuses?: SmartQueueStateAgentStatus[];
    /**
     * JSON array of the agent's queues
     */
    sqQueues?: any;
    /**
     * JSON array of the agent's skills
     */
    sqSkills?: any;
  }
  interface SmartQueueMetricsResult {
    /**
     * The report type(s). Possible values are calls_blocked_percentage, count_blocked_calls, average_abandonment_rate, count_abandonment_calls, service_level, occupancy_rate, sum_agents_online_time, sum_agents_ready_time, sum_agents_dialing_time, sum_agents_in_service_time, sum_agents_afterservice_time, sum_agents_dnd_time, sum_agents_banned_time, min_time_in_queue,max_time_in_queue, average_time_in_queue, min_answer_speed, max_answer_speed, average_answer_speed, min_handle_time, max_handle_time, average_handle_time, count_handled_calls, min_after_call_worktime, max_after_call_worktime, average_after_call_worktime, sum_agents_custom_1_time ... sum_agents_custom_10_time, call_count_assigned_to_queue, im_count_assigned_to_queue
     */
    reportType: string;
    /**
     * Grouping by agent or queue
     */
    groups: SmartQueueMetricsGroups[];
  }
  interface SmartQueueMetricsGroups {
    /**
     * The SmartQueue ID
     */
    sqQueueId?: number;
    /**
     * The SmartQueue name
     */
    sqQueueName?: string;
    /**
     * The user ID
     */
    userId?: number;
    /**
     * The user name
     */
    userName?: string;
    /**
     * The user display name
     */
    userDisplayName?: string;
    /**
     * The group values
     */
    values: SmartQueueMetricsGroupsValues[];
  }
  interface SmartQueueMetricsGroupsValues {
    /**
     * The start of the period
     */
    fromDate: Date;
    /**
     * The end of the period
     */
    toDate: Date;
    /**
     * The report value
     */
    value: number;
  }
  interface SmartQueueState {
    /**
     * The SmartQueue ID
     */
    sqQueueId: number;
    /**
     * The SmartQueue name
     */
    sqQueueName: string;
    /**
     * The list of logged-in agents with their skills and statuses
     */
    sqAgents: SmartQueueStateAgent[];
    /**
     * The list of tasks
     */
    tasks: SmartQueueStateTask[];
  }
  interface SmartQueueStateTask {
    /**
     * The task type. Possible values are CALL, IM
     */
    taskType: string;
    /**
     * The task status. Possible values are IN_QUEUE, DISTRIBUTED, IN_PROCESSING
     */
    status: string;
    /**
     * Selected agent
     */
    userId?: number;
    /**
     * Task skills
     */
    sqSkills: SmartQueueTaskSkill[];
    /**
     * Waiting time in ms
     */
    waitingTime: number;
    /**
     * Processing time in ms
     */
    processingTime: number;
    /**
     * Custom data text string for the current task. You can set the custom data in the [enqueueTask](/docs/references/voxengine/voxengine/enqueuetask#enqueuetask) method
     */
    customData?: any;
  }
  interface SmartQueueStateAgent {
    /**
     * The user ID
     */
    userId: number;
    /**
     * The user name
     */
    userName: string;
    /**
     * The display user name
     */
    userDisplayName: string;
    /**
     * Agent skills
     */
    sqSkills: SmartQueueAgentSkill[];
    /**
     * Agent statuses info
     */
    sqStatuses: SmartQueueStateAgentStatus[];
  }
  interface SmartQueueAgentSkill {
    /**
     * The agent skill ID
     */
    sqSkillId: number;
    /**
     * The agent skill name
     */
    sqSkillName: string;
    /**
     * The agent skill level
     */
    sqSkillLevel: number;
  }
  interface SmartQueueTaskSkill {
    /**
     * The skill name
     */
    sqSkillName: string;
    /**
     * The skill level
     */
    sqSkillLevel: number;
  }
  interface SmartQueueStateAgentStatus {
    /**
     * The IM status info
     */
    IM: SmartQueueStateAgentStatus_;
    /**
     * The CALL status info
     */
    CALL: SmartQueueStateAgentStatus_;
  }
  interface SmartQueueStateAgentStatus_ {
    /**
     * The status name
     */
    sqStatusName: string;
    /**
     * Time in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    fromDate: Date;
  }
  interface KeyValueItems {
    /**
     * Key that matches the specified key or key pattern
     */
    key: string;
    /**
     * Value for the specified key
     */
    value: string;
    /**
     * Expiration date based on **ttl** (timestamp without milliseconds)
     */
    expiresAt: number;
  }
  interface KeyValueKeys {
    /**
     * Key that matches the pattern
     */
    key: string;
    /**
     * Expiration date based on **ttl** (timestamp without milliseconds)
     */
    expiresAt: number;
  }
  interface AccountInvoice {
    /**
     * Invoice period
     */
    period: InvoicePeriod;
    /**
     * Info on all money spent in the invoice
     */
    amount: InvoiceTotalDetails;
    /**
     * Invoice id
     */
    invoiceId: number;
    /**
     * Detailed info on each spending
     */
    rows: InvoiceSpendingDetails;
    /**
     * Unique invoice number
     */
    invoiceNumber: string;
    /**
     * Date when the invoice is created in the following format: YYYY-MM-DD
     */
    invoiceDate: Date;
    /**
     * Invoice status
     */
    status: string;
  }
  interface InvoicePeriod {
    /**
     * From date in the following format: YYYY-MM-DD
     */
    from: Date;
    /**
     * To date in the following format: YYYY-MM-DD
     */
    to: Date;
  }
  interface InvoiceTotalDetails {
    /**
     * Total amount of taxes
     */
    taxAmount: number;
    /**
     * Invoice total amount including taxes
     */
    totalAmount: number;
    /**
     * Discounted amount to pay
     */
    amountToPay: number;
    /**
     * Discount
     */
    discountAmount: number;
    /**
     * Invoice currency
     */
    currency: string;
  }
  interface InvoiceSpendingDetails {
    /**
     * Paid amount
     */
    amount: InvoiceTotalDetails;
    /**
     * Service name
     */
    serviceName: string;
    /**
     * Array of taxes
     */
    taxes: InvoiceTaxesDetails;
  }
  interface InvoiceTaxesDetails {
    /**
     * Taxable sum
     */
    taxableMeasure: number;
    /**
     * Paid amount
     */
    amount: number;
    /**
     * Tax type. Possible values: Federal, State, County, City, Unincorporated
     */
    level: string;
    /**
     * Tax rate
     */
    rate: number;
    /**
     * Tax name
     */
    name: string;
    /**
     * Tax currency
     */
    currency: string;
    /**
     * Tax category
     */
    category: string;
  }
  interface SQAddQueueResult {
    /**
     * ID of the added queue
     */
    sqQueueId: number;
  }
  interface SQAddSkillResult {
    /**
     * ID of the added skill
     */
    sqSkillId: number;
  }
  interface AddSecretResult {
    /**
     * Added secret ID
     */
    secretId: number;
  }
  interface GetSecretValueResult {
    /**
     * Secret ID
     */
    secretId: number;
    /**
     * Secret name
     */
    secretName: string;
    /**
     * Secret value
     */
    secretValue: string;
    /**
     * Secret description
     */
    description?: string;
    /**
     * Secret creation timestamp
     */
    created: Date;
    /**
     * Secret modification timestamp
     */
    modified: Date;
  }
  interface SecretListItem {
    /**
     * Secret ID
     */
    secretId: number;
    /**
     * Secret name
     */
    secretName: string;
    /**
     * Secret description
     */
    description?: string;
    /**
     * Secret creation timestamp
     */
    created: Date;
    /**
     * Secret modification timestamp
     */
    modified: Date;
  }
  interface GetAccountInfoRequest {
    /**
     * Whether to get the account's live balance
     */
    returnLiveBalance?: boolean;
  }
  interface GetAccountInfoResponse {
    /**
     * Account's info as the [AccountInfoType] object instance
     */
    result: AccountInfo;
    /**
     * The preferred address for the Management API requests
     */
    apiAddress: string;
    error?: APIError;
  }
  interface GetCurrencyRateRequest {
    /**
     * The currency code list separated by semicolons (;). Examples: RUR, KZT, EUR, USD
     */
    currency: string | string[];
    /**
     * The date, format: YYYY-MM-DD
     */
    date?: Date;
  }
  interface GetCurrencyRateResponse {
    /**
     * The exchange rates
     */
    result: ExchangeRates;
    error?: APIError;
  }
  interface AccountsInterface {
    /**
     * Gets the account's info such as account_id, account_name, account_email etc.
     */
    getAccountInfo: (request: GetAccountInfoRequest) => Promise<GetAccountInfoResponse>;
    /**
     * Gets the exchange rate on selected date (per USD).
     */
    getCurrencyRate: (request: GetCurrencyRateRequest) => Promise<GetCurrencyRateResponse>;
  }
  interface AddApplicationRequest {
    /**
     * Short application name in the \[a-z\]\[a-z0-9-\]{1,64} format
     */
    applicationName: string;
    /**
     * Whether to enable secure storage for all logs and records of the application
     */
    secureRecordStorage?: boolean;
  }
  interface AddApplicationResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    /**
     * The application ID
     */
    applicationId: number;
    /**
     * The full application name
     */
    applicationName: string;
    /**
     * Whether a secure storage for logs and records is enabled or not
     */
    secureRecordStorage: boolean;
    error?: APIError;
  }
  interface DelApplicationRequest {
    /**
     * The application ID list separated by semicolons (;). Use the 'all' value to select all applications
     */
    applicationId: 'any' | number | number[];
    /**
     * The application name list separated by semicolons (;). Can be used instead of <b>application_id</b>
     */
    applicationName: string | string[];
  }
  interface DelApplicationResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SetApplicationInfoRequest {
    /**
     * The application ID
     */
    applicationId: number;
    /**
     * The application name that can be used instead of <b>application_id</b>
     */
    requiredApplicationName: string;
    /**
     * The new short application name in format [a-z][a-z0-9-]{1,79}
     */
    applicationName?: string;
    /**
     * Whether to enable secure storage for all logs and records of the application
     */
    secureRecordStorage?: boolean;
  }
  interface SetApplicationInfoResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    /**
     * The new full application name
     */
    applicationName: string;
    /**
     * Whether a secure storage for logs and records is enabled or not
     */
    secureRecordStorage: boolean;
    error?: APIError;
  }
  interface GetApplicationsRequest {
    /**
     * The application ID to filter
     */
    applicationId?: number;
    /**
     * The application name part to filter
     */
    applicationName?: string;
    /**
     * Whether to get bound rules info
     */
    withRules?: boolean;
    /**
     * Whether to get bound rules and scenarios info
     */
    withScenarios?: boolean;
    /**
     * The max returning record count
     */
    count?: number;
    /**
     * The first <b>N</b> records are skipped in the output
     */
    offset?: number;
  }
  interface GetApplicationsResponse {
    result: ApplicationInfo[];
    /**
     * The total found application count
     */
    totalCount: number;
    /**
     * The returned application count
     */
    count: number;
    error?: APIError;
  }
  interface ApplicationsInterface {
    /**
     * Adds a new account's application.
     */
    addApplication: (request: AddApplicationRequest) => Promise<AddApplicationResponse>;
    /**
     * Deletes the account's application.
     */
    delApplication: (request: DelApplicationRequest) => Promise<DelApplicationResponse>;
    /**
     * Edits the account's application.
     */
    setApplicationInfo: (request: SetApplicationInfoRequest) => Promise<SetApplicationInfoResponse>;
    /**
     * Gets the account's applications.
     */
    getApplications: (request: GetApplicationsRequest) => Promise<GetApplicationsResponse>;
  }
  interface AddUserRequest {
    /**
     * The user name in format [a-z0-9][a-z0-9_-]{2,49}
     */
    userName: string;
    /**
     * The user display name. The length must be less than 256
     */
    userDisplayName: string;
    /**
     * The user password. Must be at least 8 characters long and contain at least one uppercase and lowercase letter, one number, and one special character
     */
    userPassword: string;
    /**
     * The application ID which a new user is to be bound to. Can be used instead of the <b>application_name</b> parameter
     */
    applicationId: number;
    /**
     * The application name which a new user is to be bound to. Can be used instead of the <b>application_id</b> parameter
     */
    applicationName: string;
    /**
     * Whether the user uses the parent account's money, 'false' if the user has a separate balance
     */
    parentAccounting?: boolean;
    mobilePhone?: string;
    /**
     * Whether the user is active. Inactive users cannot log in to applications
     */
    userActive?: boolean;
    /**
     * Any string
     */
    userCustomData?: string;
  }
  interface AddUserResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    /**
     * The new user ID
     */
    userId: number;
    error?: APIError;
  }
  interface DelUserRequest {
    /**
     * The user ID list separated by semicolons (;). Use the 'all' value to select all users
     */
    userId: 'any' | number | number[];
    /**
     * The user name list separated by semicolons (;) that can be used instead of <b>user_id</b>
     */
    userName: string | string[];
    /**
     * Delete the specified users bound to the application ID. It is required if the <b>user_name</b> is specified
     */
    applicationId?: number;
    /**
     * Delete the specified users bound to the application name. Can be used instead of the <b>application_id</b> parameter
     */
    applicationName?: string;
  }
  interface DelUserResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SetUserInfoRequest {
    /**
     * The user to edit
     */
    userId: number;
    /**
     * The user name that can be used instead of <b>user_id</b>
     */
    userName: string;
    /**
     * The application ID. It is required if the <b>user_name</b> is specified
     */
    applicationId?: number;
    /**
     * The application name that can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * The new user name in format [a-z0-9][a-z0-9_-]{2,49}
     */
    newUserName?: string;
    /**
     * The new user display name. The length must be less than 256
     */
    userDisplayName?: string;
    /**
     * The new user password. Must be at least 8 characters long and contain at least one uppercase and lowercase letter, one number, and one special character
     */
    userPassword?: string;
    /**
     * Whether to use the parent account's money, 'false' to use a separate user balance
     */
    parentAccounting?: boolean;
    /**
     * Whether the user is active. Inactive users cannot log in to applications
     */
    userActive?: boolean;
    /**
     * Any string
     */
    userCustomData?: string;
    mobilePhone?: string;
  }
  interface SetUserInfoResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface GetUsersRequest {
    /**
     * The application ID to filter
     */
    applicationId: number;
    /**
     * The application name part to filter
     */
    applicationName: string;
    /**
     * The skill ID to filter
     */
    skillId?: number;
    /**
     * The excluded skill ID to filter
     */
    excludedSkillId?: number;
    /**
     * The ACD queue ID to filter
     */
    acdQueueId?: number;
    /**
     * The excluded ACD queue ID to filter
     */
    excludedAcdQueueId?: number;
    /**
     * The user ID to filter
     */
    userId?: number;
    /**
     * The user name part to filter
     */
    userName?: string;
    /**
     * Whether the user is active to filter. Inactive users cannot log in to applications
     */
    userActive?: boolean;
    /**
     * The user display name part to filter
     */
    userDisplayName?: string;
    /**
     * Whether to get the bound skills
     */
    withSkills?: boolean;
    /**
     * Whether to get the bound queues
     */
    withQueues?: boolean;
    /**
     * The ACD status list separated by semicolons (;) to filter. The following values are possible: OFFLINE, ONLINE, READY, BANNED, IN_SERVICE, AFTER_SERVICE, TIMEOUT, DND
     */
    acdStatus?: string | string[];
    /**
     * The skill to show in the 'skills' field output
     */
    showingSkillId?: number;
    /**
     * The max returning record count
     */
    count?: number;
    /**
     * The first <b>N</b> records are skipped in the output
     */
    offset?: number;
    /**
     * The following values are available: 'user_id', 'user_name' and 'user_display_name'
     */
    orderBy?: string;
    /**
     * Whether to get the user live balance
     */
    returnLiveBalance?: boolean;
  }
  interface GetUsersResponse {
    /**
     * The UserInfoType records
     */
    result: UserInfo[];
    /**
     * The total found user count
     */
    totalCount: number;
    /**
     * The returned user count
     */
    count: number;
    error?: APIError;
  }
  interface UsersInterface {
    /**
     * Adds a new user.
     */
    addUser: (request: AddUserRequest) => Promise<AddUserResponse>;
    /**
     * Deletes the specified user(s).
     */
    delUser: (request: DelUserRequest) => Promise<DelUserResponse>;
    /**
     * Edits the user.
     */
    setUserInfo: (request: SetUserInfoRequest) => Promise<SetUserInfoResponse>;
    /**
     * Shows the users of the specified account.
     */
    getUsers: (request: GetUsersRequest) => Promise<GetUsersResponse>;
  }
  interface CreateCallListRequest {
    /**
     * Rule ID. It is specified in the <a href='//manage.voximplant.com/applications'>Applications</a> section of the Control Panel
     */
    ruleId: number;
    /**
     * Call list priority. The value is in the range of [0 ... 2^31] where zero is the highest priority
     */
    priority: number;
    /**
     * Number of simultaneously processed tasks
     */
    maxSimultaneous: number;
    /**
     * Number of attempts. Minimum is <b>1</b>, maximum is <b>5</b>
     */
    numAttempts: number;
    /**
     * File name, up to 255 characters and cannot contain the '/' and '\' symbols
     */
    name: string;
    /**
     * Send as the "body" part of the HTTP request or as multiform. The sending "file_content" via URL is at its own risk because the network devices tend to drop HTTP requests with large headers
     */
    fileContent: Buffer;
    /**
     * Interval between call attempts in seconds. The default value is 0
     */
    intervalSeconds?: number;
    /**
     * Encoding file. The default value is UTF-8
     */
    encoding?: string;
    /**
     * Separator values. The default value is ';'
     */
    delimiter?: string;
    /**
     * Escape character for parsing csv
     */
    escape?: string;
    /**
     * IP from the geolocation of the call list subscribers. It allows selecting the nearest server for serving subscribers
     */
    referenceIp?: string;
    /**
     * Location of the server where the scenario needs to be executed. Has higher priority than `reference_ip`. Request [getServerLocations](https://api.voximplant.com/getServerLocations) for possible values
     */
    serverLocation?: string;
    /**
     * Optional. Whether to prioritize first calling attempts or repeated ones. The possible values are: first_attempts, repeated_attempts. The default values is first_attempts.
     */
    taskPriorityStrategy?: string;
  }
  interface CreateCallListResponse {
    /**
     * Whether the request completed successfully
     */
    result: boolean;
    /**
     * Number of stored records
     */
    count: number;
    /**
     * List ID
     */
    listId: number;
    /**
     * Batch UUID
     */
    batchId: string;
    error?: APIError;
  }
  interface AppendToCallListRequest {
    /**
     * Call list ID
     */
    listId: number;
    listName: string;
    /**
     * Send as the request body or multiform
     */
    fileContent: Buffer;
    /**
     * Encoding file. The default value is UTF-8
     */
    encoding?: string;
    /**
     * Escape character for parsing csv
     */
    escape?: string;
    /**
     * Separator values. The default value is ';'
     */
    delimiter?: string;
  }
  interface AppendToCallListResponse {
    /**
     * Whether the request completed successfully
     */
    result: boolean;
    /**
     * Number of stored records
     */
    count: number;
    /**
     * List ID
     */
    listId: number;
    /**
     * Batch UUID
     */
    batchId: number;
    error?: APIError;
  }
  interface CancelCallListBatchRequest {
    /**
     * Call list ID
     */
    listId: number;
    listName: string;
    /**
     * Batch UUIDs of the tasks to cancel, separated by semicolon (;)
     */
    batchIds: string;
  }
  interface CancelCallListBatchResponse {
    /**
     * Whether the request completed successfully
     */
    result: boolean;
    error?: APIError;
  }
  interface EditCallListRequest {
    /**
     * Call list ID. If the ID is non existing, the 251 error returns
     */
    listId: number;
    /**
     * Minimum interval between call attempts. Cannot be a negative value
     */
    intervalSeconds?: number;
    /**
     * Maximum call attempt number. Cannot be less than 1
     */
    numAttempts?: number;
    /**
     * Maximum simultaneous call attempts for this call list. Cannot be less than 1
     */
    maxSimultaneous?: number;
    /**
     * IP address in the `Inet4Address` format
     */
    ipAddress?: string;
    /**
     * Call list name. Cannot be bigger than 255 characters, cannot contain slash symbol
     */
    name?: string;
    /**
     * Call list's priority among other call list. The lower the value, the higher is the call list's priority
     */
    priority?: number;
    /**
     * Time when the call list should start in the `yyyy-MM-dd HH:mm:ss` format
     */
    startAt?: string;
    /**
     * Optional. Whether to prioritize first calling attempts or repeated ones. The possible values are: first_attempts, repeated_attempts. The default values is first_attempts
     */
    taskPriorityStrategy?: string;
    /**
     * Location of the server processing the call list. If the ID is non existing, the 496 error returns: The 'server_location' parameter is invalid.
     */
    serverLocation?: string;
  }
  interface EditCallListResponse {
    /**
     * Whether the request completed successfully
     */
    result: boolean;
    error?: APIError;
  }
  interface EditCallListTasksPriorityRequest {
    /**
     * Call list ID. If the ID does not exist, the 251 error returns.
     */
    listId: number;
    /**
     * JSON-encoded array of task objects. Each object should contain either 'task_id' (number) or 'task_uuid' (string), and 'task_priority' (number).
     */
    tasks: string;
  }
  interface EditCallListTasksPriorityResponse {
    /**
     * JSON-encoded array of each task update.
     */
    results: string;
    error?: APIError;
  }
  interface DeleteCallListRequest {
    /**
     * Account's ID
     */
    accountId: number;
    listId: number;
  }
  interface DeleteCallListResponse {
    /**
     * Result
     */
    result: boolean;
    /**
     * Text description
     */
    msg: string;
    error?: APIError;
  }
  interface GetCallListsRequest {
    /**
     * The list ID to filter. Can be a list separated by semicolons (;). Use the 'all' value to select all lists
     */
    listId?: 'any' | number | number[];
    /**
     * Find call lists by name
     */
    name?: string;
    /**
     * Whether to find only active call lists
     */
    isActive?: boolean;
    /**
     * The UTC 'from' date filter in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    fromDate?: Date;
    /**
     * The UTC 'to' date filter in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    toDate?: Date;
    /**
     * The type of the call list. The possible values are AUTOMATIC and MANUAL
     */
    typeList?: string;
    /**
     * The max returning record count
     */
    count?: number;
    /**
     * The first <b>N</b> records are skipped in the output
     */
    offset?: number;
    /**
     * The application ID to filter. Can be a list separated by semicolons (;). Use the 'all' value to select all applications
     */
    applicationId?: 'any' | number | number[];
  }
  interface GetCallListsResponse {
    /**
     * Array of lists
     */
    result: CallList[];
    /**
     * Returned call list count
     */
    count: number;
    /**
     * Total found call list count
     */
    totalCount: number;
    error?: APIError;
  }
  interface CancelCallListTaskRequest {
    /**
     * Account's ID
     */
    accountId: string;
    /**
     * Call list's ID
     */
    listId: string;
    /**
     * Task IDs separated by a semicolon. Specify either `tasks_ids` or `tasks_uuids`. The method returns an error if none of the parameters is specified
     */
    tasksIds?: string;
    /**
     * Task UUIDs separated by a semicolon. Specify either `tasks_ids` or `tasks_uuids`. The method returns an error if none of the parameters is specified
     */
    tasksUuids?: string;
  }
  interface CancelCallListTaskResponse {
    /**
     * Task's ID
     */
    taskId: number;
    /**
     * Task's UUID
     */
    taskUuid: string;
    /**
     * Result of the operation
     */
    result: boolean;
    /**
     * Reason for the error
     */
    errorMsg: string;
    error?: APIError;
  }
  interface CallListsInterface {
    /**
     * Adds a new CSV file for call list processing and starts the specified rule immediately. To send a file, use the request body. To set the call time constraints, use the following options in a CSV file: <ul><li>**__start_execution_time** – when the call list processing starts every day, UTC+0 24-h format: HH:mm:ss</li><li>**__end_execution_time** – when the call list processing stops every day,  UTC+0 24-h format: HH:mm:ss</li><li>**__start_at** – when the call list processing starts, UNIX timestamp. If not specified, the processing starts immediately after a method call</li><li>**__task_uuid** – call list UUID. A string up to 40 characters, can contain latin letters, digits, hyphens (-) and colons (:). Unique within the call list</li></ul><br>This method accepts CSV files with custom delimiters, such a commas (,), semicolons (;) and other. To specify a delimiter, pass it to the <b>delimiter</b> parameter.<br/><b>IMPORTANT:</b> the account's balance should be equal or greater than 1 USD. If the balance is lower than 1 USD, the call list processing does not start, or it stops immediately if it is active.
     */
    createCallList: (request: CreateCallListRequest) => Promise<CreateCallListResponse>;
    /**
     * Appends a new task to the existing call list.<br>This method accepts CSV files with custom delimiters, such a commas (,), semicolons (;) and other. To specify a delimiter, pass it to the <b>delimiter</b> parameter.
     */
    appendToCallList: (request: AppendToCallListRequest) => Promise<AppendToCallListResponse>;
    /**
     * Cancels all tasks in the call list with the specified batch UUID.
     */
    cancelCallListBatch: (
      request: CancelCallListBatchRequest
    ) => Promise<CancelCallListBatchResponse>;
    /**
     * Edits the specified call list by its ID.
     */
    editCallList: (request: EditCallListRequest) => Promise<EditCallListResponse>;
    /**
     * Edits priorities of existing tasks in the specified call list.
     */
    editCallListTasksPriority: (
      request: EditCallListTasksPriorityRequest
    ) => Promise<EditCallListTasksPriorityResponse>;
    /**
     * Deletes an existing call list by its ID.
     */
    deleteCallList: (request: DeleteCallListRequest) => Promise<DeleteCallListResponse>;
    /**
     * Get all call lists for the specified user.
     */
    getCallLists: (request: GetCallListsRequest) => Promise<GetCallListsResponse>;
    /**
     * Cancels the specified tasks in the call list by their IDs or UUIDs. The maximum number of tasks to cancel is 1000.
     */
    cancelCallListTask: (request: CancelCallListTaskRequest) => Promise<CancelCallListTaskResponse>;
  }
  interface StartConferenceRequest {
    /**
     * The conference name. The name length must be less than 50 symbols
     */
    conferenceName: string;
    /**
     * The rule ID that needs to be launched. Please note, the necessary scenario needs to be attached to the rule
     */
    ruleId: number;
    /**
     * The user ID. Run the scripts from the user if set
     */
    userId?: number;
    /**
     * The user name that can be used instead of <b>user_id</b>. Run the scripts from the user if set
     */
    userName?: string;
    /**
     * The application ID
     */
    applicationId?: number;
    /**
     * The application name that can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * The script custom data, that can be accessed in the scenario via the <a href='/docs/references/voxengine/voxengine/customdata'>VoxEngine.customData()</a> method. Use the application/x-www-form-urlencoded content type with UTF-8 encoding.
     */
    scriptCustomData?: string;
    /**
     * Specifies the IP from the geolocation of predicted subscribers. It allows selecting the nearest server for serving subscribers
     */
    referenceIp?: string;
    /**
     * Specifies the location of the server where the scenario needs to be executed. Has higher priority than `reference_ip`. Request [getServerLocations](https://api.voximplant.com/getServerLocations) for possible values
     */
    serverLocation?: string;
  }
  interface StartConferenceResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    /**
     * The URL to control a created media session. It can be used for arbitrary tasks such as stopping scenario or passing additional data to it. Making HTTP request on this URL results in the [AppEvents.HttpRequest](/docs/references/voxengine/appevents#httprequest) VoxEngine event being triggered for a scenario, with an HTTP request data passed to it
     */
    mediaSessionAccessUrl: string;
    /**
     * The URL to control a created media session. It can be used for arbitrary tasks such as stopping scenario or passing additional data to it. Making HTTPS request on this URL results in the [AppEvents.HttpRequest](/docs/references/voxengine/appevents#httprequest) VoxEngine event being triggered for a scenario, with an HTTP request data passed to it
     */
    mediaSessionAccessSecureUrl: string;
    /**
     * The call session history ID. To search a call session result, paste the ID to the <a href='/docs/references/httpapi/history#getcallhistory'>GetCallHistory</a> method's <b>call_session_history_id</b> parameter
     */
    callSessionHistoryId: number;
    error?: APIError;
  }
  interface ScenariosInterface {
    /**
     * Runs a session for video conferencing or joins the existing video conference session.<br/><br/>When you create a session by calling this method, a scenario runs on one of the servers dedicated to video conferencing. All further method calls with the same **conference_name** do not create a new video conference session but join the existing one.<br/><br/>Use the [StartScenarios] method for creating audio conferences.
     */
    startConference: (request: StartConferenceRequest) => Promise<StartConferenceResponse>;
  }
  interface GetCallHistoryRequest {
    /**
     * The from date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    fromDate: Date;
    /**
     * The to date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    toDate: Date;
    timezone?: string;
    /**
     * To get the call history for the specific sessions, pass the session IDs to this parameter separated by a semicolon (;). The maximum number of records is 1000. You can find the session ID in the <a href='/docs/references/voxengine/appevents#started'>AppEvents.Started</a> event's <b>sessionID</b> property in a scenario, or retrieve it from the <b>call_session_history_id</b> value returned from the <a href='https://voximplant.com/docs/references/httpapi/scenarios#reorderscenarios'>StartScenarios</a> or <a href='https://voximplant.com/docs/references/httpapi/scenarios#startconference'>StartConference</a> methods
     */
    callSessionHistoryId?: 'any' | number | number[];
    /**
     * To receive the call history for a specific application, pass the application ID to this parameter
     */
    applicationId?: number;
    /**
     * The application name, can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * To receive the call history for a specific users, pass the user ID list separated by semicolons (;). If it is specified, the output contains the calls from the listed users only
     */
    userId?: 'any' | number | number[];
    /**
     * To receive the call history for a specific routing rule, pass the rule name to this parameter. Applies only if you set application_id or application_name
     */
    ruleName?: string;
    /**
     * To receive a call history for a specific remote numbers, pass the number list separated by semicolons (;). A remote number is a number on the client side. Ignored if the `remote_number_list` parameter is not empty
     */
    remoteNumber?: string | string[];
    /**
     * A JS array of strings of specific remote phone numbers to sort the call history. Has higher priority than the `remote_number` parameter. If the array is empty, the `remote_number` parameter is used instead
     */
    remoteNumberList?: any;
    /**
     * To receive a call history for a specific local numbers, pass the number list separated by semicolons (;). A local number is a number on the platform side
     */
    localNumber?: string | string[];
    /**
     * To filter the call history by the custom_data passed to the call sessions, pass the custom data to this parameter
     */
    callSessionHistoryCustomData?: string;
    /**
     * Whether to receive a list of sessions with all calls within the sessions, including phone numbers, call cost and other information
     */
    withCalls?: boolean;
    /**
     * Whether to get the calls' records
     */
    withRecords?: boolean;
    /**
     * Whether to get other resources usage (see [ResourceUsageType])
     */
    withOtherResources?: boolean;
    /**
     * The child account ID list separated by semicolons (;)
     */
    childAccountId?: 'any' | number | number[];
    /**
     * Whether to get the children account calls only
     */
    childrenCallsOnly?: boolean;
    /**
     * Whether to get records in the descent order
     */
    descOrder?: boolean;
    /**
     * Whether to include the 'total_count' and increase performance
     */
    withTotalCount?: boolean;
    /**
     * The number of returning records. The maximum value is 1000
     */
    count?: number;
    /**
     * The number of records to skip in the output. The maximum value of 10000
     */
    offset?: number;
  }
  interface GetCallHistoryResponse {
    /**
     * The CallSessionInfoType records
     */
    result: CallSessionInfo[];
    /**
     * The total found call session count
     */
    totalCount: number;
    /**
     * The returned call session count
     */
    count: number;
    /**
     * The used timezone
     */
    timezone: string;
    error?: APIError;
  }
  interface GetCallHistoryAsyncRequest {
    /**
     * The from date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    fromDate: Date;
    /**
     * The to date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    toDate: Date;
    timezone?: string;
    /**
     * To get the call history for the specific sessions, pass the session IDs to this parameter separated by a semicolon (;). You can find the session ID in the <a href='/docs/references/voxengine/appevents#started'>AppEvents.Started</a> event's <b>sessionID</b> property in a scenario, or retrieve it from the <b>call_session_history_id</b> value returned from the <a href='https://voximplant.com/docs/references/httpapi/scenarios#reorderscenarios'>StartScenarios</a> or <a href='https://voximplant.com/docs/references/httpapi/scenarios#startconference'>StartConference</a> methods
     */
    callSessionHistoryId?: 'any' | number | number[];
    /**
     * To receive the call history for a specific application, pass the application ID to this parameter
     */
    applicationId?: number;
    /**
     * The application name, can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * To receive the call history for a specific users, pass the user ID list separated by semicolons (;). If it is specified, the output contains the calls from the listed users only
     */
    userId?: 'any' | number | number[];
    /**
     * To receive the call history for a specific routing rule, pass the rule name to this parameter. Applies only if you set application_id or application_name
     */
    ruleName?: string;
    /**
     * To receive a call history for a specific remote numbers, pass the number list separated by semicolons (;). A remote number is a number on the client side
     */
    remoteNumber?: string | string[];
    /**
     * To receive a call history for a specific local numbers, pass the number list separated by semicolons (;). A local number is a number on the platform side
     */
    localNumber?: string | string[];
    /**
     * To filter the call history by the custom_data passed to the call sessions, pass the custom data to this parameter
     */
    callSessionHistoryCustomData?: string;
    /**
     * Whether to receive a list of sessions with all calls within the sessions, including phone numbers, call cost and other information
     */
    withCalls?: boolean;
    /**
     * Whether to get the calls' records
     */
    withRecords?: boolean;
    /**
     * Whether to get other resources usage (see [ResourceUsageType])
     */
    withOtherResources?: boolean;
    /**
     * The child account ID list separated by semicolons (;)
     */
    childAccountId?: 'any' | number | number[];
    /**
     * Whether to get the children account calls only
     */
    childrenCallsOnly?: boolean;
    /**
     * Whether to get records in the descent order
     */
    descOrder?: boolean;
    /**
     * Whether to get a CSV file with the column names if the output=csv
     */
    withHeader?: boolean;
    /**
     * The output format. The following values available: **csv**. The default value is **csv**
     */
    output?: string;
  }
  interface GetCallHistoryAsyncResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    /**
     * The history report ID
     */
    historyReportId: number;
    error?: APIError;
  }
  interface GetBriefCallHistoryRequest {
    /**
     * The from date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    fromDate: Date;
    /**
     * The to date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    toDate: Date;
    /**
     * The output format. The following values available: **csv**.
     */
    output: string;
    timezone?: string;
    /**
     * To get the call history for the specific sessions, pass the session IDs to this parameter separated by a semicolon (;). You can find the session ID in the <a href='/docs/references/voxengine/appevents#started'>AppEvents.Started</a> event's <b>sessionID</b> property in a scenario, or retrieve it from the <b>call_session_history_id</b> value returned from the <a href='https://voximplant.com/docs/references/httpapi/scenarios#reorderscenarios'>StartScenarios</a> or <a href='https://voximplant.com/docs/references/httpapi/scenarios#startconference'>StartConference</a> methods
     */
    callSessionHistoryId?: 'any' | number | number[];
    /**
     * To receive the call history for a specific application, pass the application ID to this parameter
     */
    applicationId?: number;
    /**
     * The application name, can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * To receive the call history for a specific routing rule, pass the rule name to this parameter. Applies only if you set application_id or application_name
     */
    ruleName?: string;
    /**
     * To receive a call history for a specific remote numbers, pass the number list separated by semicolons (;). A remote number is a number on the client side
     */
    remoteNumber?: string | string[];
    /**
     * To receive a call history for a specific local numbers, pass the number list separated by semicolons (;). A local number is a number on the platform side
     */
    localNumber?: string | string[];
    /**
     * To filter the call history by the custom_data passed to the call sessions, pass the custom data to this parameter
     */
    callSessionHistoryCustomData?: string;
    /**
     * Whether to get records in the descent order
     */
    descOrder?: boolean;
    /**
     * Whether to get a CSV file with the column names if the output=csv
     */
    withHeader?: boolean;
  }
  interface GetBriefCallHistoryResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    /**
     * The history report ID
     */
    historyReportId: number;
    error?: APIError;
  }
  interface GetTransactionHistoryRequest {
    /**
     * The from date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    fromDate: Date;
    /**
     * The to date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    toDate: Date;
    timezone?: string;
    /**
     * The transaction ID list separated by semicolons (;)
     */
    transactionId?: 'any' | number | number[];
    paymentReference?: string;
    /**
     * The transaction type list separated by semicolons (;). The following values are possible: gift_revoke, resource_charge, money_distribution, subscription_charge, subscription_installation_charge, card_periodic_payment, card_overrun_payment, card_payment, rub_card_periodic_payment, rub_card_overrun_payment, rub_card_payment, robokassa_payment, gift, promo, adjustment, wire_transfer, us_wire_transfer, refund, discount, mgp_charge, mgp_startup, mgp_business, mgp_big_business, mgp_enterprise, mgp_large_enterprise, techsupport_charge, tax_charge, monthly_fee_charge, grace_credit_payment, grace_credit_provision, mau_charge, mau_overrun, im_charge, im_overrun, fmc_charge, sip_registration_charge, development_fee, money_transfer_to_child, money_transfer_to_parent, money_acceptance_from_child, money_acceptance_from_parent, phone_number_installation, phone_number_charge, toll_free_phone_number_installation, toll_free_phone_number_charge, services, user_money_transfer, paypal_payment, paypal_overrun_payment, paypal_periodic_payment
     */
    transactionType?: string | string[];
    /**
     * The user ID list separated by semicolons (;)
     */
    userId?: 'any' | number | number[];
    /**
     * The child account ID list separated by semicolons (;). Use the 'all' value to select all child accounts
     */
    childAccountId?: 'any' | number | number[];
    /**
     * Whether to get the children account transactions only
     */
    childrenTransactionsOnly?: boolean;
    /**
     * Whether to get the users' transactions only
     */
    usersTransactionsOnly?: boolean;
    /**
     * Whether to get records in the descent order
     */
    descOrder?: boolean;
    /**
     * Whether to include the 'total_count' and increase performance
     */
    withTotalCount?: boolean;
    /**
     * The number of returning records. The maximum value is 1000
     */
    count?: number;
    /**
     * The number of records to skip in the output with a maximum value of 10000
     */
    offset?: number;
    /**
     * Whether to get transactions on hold (transactions for which money is reserved but not yet withdrawn from the account)
     */
    isUncommitted?: boolean;
  }
  interface GetTransactionHistoryResponse {
    result: TransactionInfo[];
    /**
     * The total found transaction count
     */
    totalCount: number;
    /**
     * The used timezone. 'Etc/GMT' for example
     */
    timezone: string;
    /**
     * The returned transaction count
     */
    count: number;
    error?: APIError;
  }
  interface GetTransactionHistoryAsyncRequest {
    /**
     * The from date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    fromDate: Date;
    /**
     * The to date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    toDate: Date;
    timezone?: string;
    /**
     * The transaction ID list separated by semicolons (;)
     */
    transactionId?: 'any' | number | number[];
    paymentReference?: string;
    /**
     * The transaction type list separated by semicolons (;). The following values are possible: gift_revoke, resource_charge, money_distribution, subscription_charge, subscription_installation_charge, card_periodic_payment, card_overrun_payment, card_payment, rub_card_periodic_payment, rub_card_overrun_payment, rub_card_payment, robokassa_payment, gift, promo, adjustment, wire_transfer, us_wire_transfer, refund, discount, mgp_charge, mgp_startup, mgp_business, mgp_big_business, mgp_enterprise, mgp_large_enterprise, techsupport_charge, tax_charge, monthly_fee_charge, grace_credit_payment, grace_credit_provision, mau_charge, mau_overrun, im_charge, im_overrun, fmc_charge, sip_registration_charge, development_fee, money_transfer_to_child, money_transfer_to_parent, money_acceptance_from_child, money_acceptance_from_parent, phone_number_installation, phone_number_charge, toll_free_phone_number_installation, toll_free_phone_number_charge, services, user_money_transfer, paypal_payment, paypal_overrun_payment, paypal_periodic_payment
     */
    transactionType?: string | string[];
    /**
     * The user ID list separated by semicolons (;)
     */
    userId?: 'any' | number | number[];
    /**
     * The child account ID list separated by semicolons (;). Use the 'all' value to select all child accounts
     */
    childAccountId?: 'any' | number | number[];
    /**
     * Whether to get the children account transactions only
     */
    childrenTransactionsOnly?: boolean;
    /**
     * Whether to get the users' transactions only
     */
    usersTransactionsOnly?: boolean;
    /**
     * Whether to get records in the descent order
     */
    descOrder?: boolean;
    /**
     * Whether to get transactions on hold (transactions for which money is reserved but not yet withdrawn from the account)
     */
    isUncommitted?: boolean;
    /**
     * Whether to get a CSV file with the column names if the output=csv
     */
    withHeader?: boolean;
    /**
     * The output format. The following values available: **csv**. The default value is **csv**
     */
    output?: string;
  }
  interface GetTransactionHistoryAsyncResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    /**
     * The history report ID
     */
    historyReportId: number;
    error?: APIError;
  }
  interface HistoryInterface {
    /**
     * Gets the account's call history (including call duration, cost, logs and other call information). You can filter the call history by a certain date.
     */
    getCallHistory: (request: GetCallHistoryRequest) => Promise<GetCallHistoryResponse>;
    /**
     * The [GetCallHistory] asynchronous implementation. Use this function to download a large amounts of data. Take a look at the [GetHistoryReports] and [DownloadHistoryReport] functions for downloading details.
     */
    getCallHistoryAsync: (
      request: GetCallHistoryAsyncRequest
    ) => Promise<GetCallHistoryAsyncResponse>;
    /**
     * Gets the account's brief call history in the asynchronous mode. Take a look at the [GetHistoryReports] and [DownloadHistoryReport] functions for downloading details.
     */
    getBriefCallHistory: (
      request: GetBriefCallHistoryRequest
    ) => Promise<GetBriefCallHistoryResponse>;
    /**
     * Gets the transaction history.
     */
    getTransactionHistory: (
      request: GetTransactionHistoryRequest
    ) => Promise<GetTransactionHistoryResponse>;
    /**
     * The [GetTransactionHistory] asynchronous implementation. Use this function to download a large amounts of data. Take a look at the [GetHistoryReports] and [DownloadHistoryReport] functions for downloading details.
     */
    getTransactionHistoryAsync: (
      request: GetTransactionHistoryAsyncRequest
    ) => Promise<GetTransactionHistoryAsyncResponse>;
  }
  interface GetPhoneNumbersRequest {
    /**
     * Particular phone ID to filter
     */
    phoneId?: 'any' | number | number[];
    /**
     * Phone number list separated by semicolons (;) that can be used instead of <b>phone_id</b>
     */
    phoneNumber?: string | string[];
    /**
     * Phone number activation statuses to filter, separated by semicolons (;).<br><br>The possible values are: ACTIVE, ACTIVATING, DEACTIVATED, PROVISIONING, AWAITING_BUSINESS_PHONE_NUMBER_CONFIGURATION, LEGAL_OWNERSHIP_LIMIT_REACHED, GOSUSLUGI_DECLINED, SELF_BAN_ENABLED
     */
    activationStatus?: string | string[];
    /**
     * Application ID
     */
    applicationId?: number;
    /**
     * Application name that can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * Whether the phone number bound to an application
     */
    isBoundToApplication?: boolean;
    /**
     * Phone number start to filter
     */
    phoneTemplate?: string;
    /**
     * Country code list separated by semicolons (;)
     */
    countryCode?: string | string[];
    /**
     * Phone category name. See the [GetPhoneNumberCategories] method
     */
    phoneCategoryName?: string;
    /**
     * Whether the subscription is cancelled to filter
     */
    canceled?: boolean;
    /**
     * Whether the subscription is frozen to filter
     */
    deactivated?: boolean;
    /**
     * Whether the auto_charge flag is enabled
     */
    autoCharge?: boolean;
    /**
     * UTC 'from' date filter in the following format: YYYY-MM-DD
     */
    fromPhoneNextRenewal?: Date;
    /**
     * UTC 'to' date filter in the following format: YYYY-MM-DD
     */
    toPhoneNextRenewal?: Date;
    /**
     * UTC 'from' date filter in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    fromPhonePurchaseDate?: Date;
    /**
     * UTC 'to' date filter in 24-h format: YYYY-MM-DD HH:mm:ss
     */
    toPhonePurchaseDate?: Date;
    /**
     * Child account ID list separated by semicolons (;). Use the 'all' value to select all child accounts
     */
    childAccountId?: 'any' | number | number[];
    /**
     * Whether to get the children phones only
     */
    childrenPhonesOnly?: boolean;
    /**
     * Required account verification name to filter
     */
    verificationName?: string;
    /**
     * Account verification status list separated by semicolons (;). The following values are possible: REQUIRED, IN_PROGRESS, VERIFIED
     */
    verificationStatus?: string | string[];
    /**
     * Unverified phone hold until the date (from ...) in the following format: YYYY-MM-DD
     */
    fromUnverifiedHoldUntil?: Date;
    /**
     * Unverified phone hold until the date (... to) in the following format: YYYY-MM-DD
     */
    toUnverifiedHoldUntil?: Date;
    /**
     * Whether a not verified account can use the phone
     */
    canBeUsed?: boolean;
    /**
     * Following values are available: 'phone_number' (ascent order), 'phone_price' (ascent order), 'phone_country_code' (ascent order), 'deactivated' (deactivated first, active last), 'purchase_date' (descent order), 'phone_next_renewal' (ascent order), 'verification_status', 'unverified_hold_until' (ascent order), 'verification_name'
     */
    orderBy?: string;
    /**
     * Flag allows you to display only the numbers of the sandbox, real numbers, or all numbers. The following values are possible: 'all', 'true', 'false'
     */
    sandbox?: string;
    /**
     * Maximum returning record count
     */
    count?: number;
    /**
     * First <b>N</b> records are skipped in the output
     */
    offset?: number;
    smsSupported?: boolean;
    /**
     * Region names list separated by semicolons (;)
     */
    phoneRegionName?: string | string[];
    /**
     * Rule ID list separated by semicolons (;)
     */
    ruleId?: 'any' | number | number[];
    /**
     * Rule names list separated by semicolons (;). Can be used only if __application_id__ or __application_name__ is specified
     */
    ruleName?: string | string[];
    /**
     * Whether the phone number is bound to some rule
     */
    isBoundToRule?: boolean;
  }
  interface GetPhoneNumbersResponse {
    /**
     * Phone numbers info
     */
    result: AttachedPhoneInfo[];
    /**
     * Total found phone count
     */
    totalCount: number;
    /**
     * Returned phone count
     */
    count: number;
    error?: APIError;
  }
  interface IsAccountPhoneNumberRequest {
    /**
     * Phone number to check in the international format without `+`
     */
    phoneNumber: string;
  }
  interface IsAccountPhoneNumberResponse {
    /**
     * Whether the number belongs to the account
     */
    result: boolean;
    error?: APIError;
  }
  interface GetPhoneNumbersAsyncRequest {
    /**
     * Whether to get a CSV file with the column names
     */
    withHeader?: boolean;
  }
  interface GetPhoneNumbersAsyncResponse {
    /**
     * The report ID (async mode)
     */
    result: number;
    error?: APIError;
  }
  interface PhoneNumbersInterface {
    /**
     * Gets the account phone numbers.
     */
    getPhoneNumbers: (request: GetPhoneNumbersRequest) => Promise<GetPhoneNumbersResponse>;
    /**
     * Checks if the phone number belongs to the authorized account.
     */
    isAccountPhoneNumber: (
      request: IsAccountPhoneNumberRequest
    ) => Promise<IsAccountPhoneNumberResponse>;
    /**
     * Gets the asynchronous report regarding purchased phone numbers.
     */
    getPhoneNumbersAsync: (
      request: GetPhoneNumbersAsyncRequest
    ) => Promise<GetPhoneNumbersAsyncResponse>;
  }
  interface AddPstnBlackListItemRequest {
    /**
     * The phone number in format e164 or regex pattern
     */
    pstnBlacklistPhone: string;
  }
  interface AddPstnBlackListItemResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    /**
     * The PSTN black list item ID
     */
    pstnBlacklistId: number;
    error?: APIError;
  }
  interface SetPstnBlackListItemRequest {
    /**
     * The PSTN black list item ID
     */
    pstnBlacklistId: number;
    /**
     * The new phone number in format e164
     */
    pstnBlacklistPhone: string;
  }
  interface SetPstnBlackListItemResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface DelPstnBlackListItemRequest {
    /**
     * The PSTN black list item ID
     */
    pstnBlacklistId: number;
  }
  interface DelPstnBlackListItemResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface GetPstnBlackListRequest {
    /**
     * The PSTN black list item ID for filter
     */
    pstnBlacklistId?: number;
    /**
     * The phone number in format e164 for filter
     */
    pstnBlacklistPhone?: string;
    /**
     * The max returning record count
     */
    count?: number;
    /**
     * The first <b>N</b> records are skipped in the output
     */
    offset?: number;
  }
  interface GetPstnBlackListResponse {
    result: PstnBlackListInfo[];
    /**
     * The total found phone numbers count
     */
    totalCount: number;
    /**
     * The returned phone numbers count
     */
    count: number;
    error?: APIError;
  }
  interface PSTNBlacklistInterface {
    /**
     * Add a new phone number to the PSTN blacklist. Use blacklist to block incoming calls from specified phone numbers to numbers purchased from Voximplant. Since we have no control over exact phone number format for calls from SIP integrations, blacklisting such numbers should be done via JavaScript scenarios.
     */
    addPstnBlackListItem: (
      request: AddPstnBlackListItemRequest
    ) => Promise<AddPstnBlackListItemResponse>;
    /**
     * Update the PSTN blacklist item. BlackList works for numbers that are purchased from Voximplant only. Since we have no control over exact phone number format for calls from SIP integrations, blacklisting such numbers should be done via JavaScript scenarios.
     */
    setPstnBlackListItem: (
      request: SetPstnBlackListItemRequest
    ) => Promise<SetPstnBlackListItemResponse>;
    /**
     * Remove phone number from the PSTN blacklist.
     */
    delPstnBlackListItem: (
      request: DelPstnBlackListItemRequest
    ) => Promise<DelPstnBlackListItemResponse>;
    /**
     * Get the whole PSTN blacklist.
     */
    getPstnBlackList: (request: GetPstnBlackListRequest) => Promise<GetPstnBlackListResponse>;
  }
  interface AddSipWhiteListItemRequest {
    /**
     * The network address in format A.B.C.D/L or A.B.C.D/a.b.c.d (example 192.168.1.5/16)
     */
    sipWhitelistNetwork: string;
    /**
     * The network address description
     */
    description?: string;
  }
  interface AddSipWhiteListItemResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    /**
     * The SIP white list item ID
     */
    sipWhitelistId: number;
    error?: APIError;
  }
  interface DelSipWhiteListItemRequest {
    /**
     * The SIP white list item ID to delete
     */
    sipWhitelistId: number;
  }
  interface DelSipWhiteListItemResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SetSipWhiteListItemRequest {
    /**
     * The SIP white list item ID
     */
    sipWhitelistId: number;
    /**
     * The new network address in format A.B.C.D/L or A.B.C.D/a.b.c.d (example 192.168.1.5/16)
     */
    sipWhitelistNetwork: string;
    /**
     * The network address description
     */
    description?: string;
  }
  interface SetSipWhiteListItemResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface GetSipWhiteListRequest {
    /**
     * The SIP white list item ID to filter
     */
    sipWhitelistId?: number;
    /**
     * The max returning record count
     */
    count?: number;
    /**
     * The first <b>N</b> records are skipped in the output
     */
    offset?: number;
  }
  interface GetSipWhiteListResponse {
    result: SipWhiteListInfo[];
    /**
     * The total found networks count
     */
    totalCount: number;
    /**
     * The returned networks count
     */
    count: number;
    error?: APIError;
  }
  interface SIPWhiteListInterface {
    /**
     * Adds a new network address to the SIP white list.
     */
    addSipWhiteListItem: (
      request: AddSipWhiteListItemRequest
    ) => Promise<AddSipWhiteListItemResponse>;
    /**
     * Deletes the network address from the SIP white list.
     */
    delSipWhiteListItem: (
      request: DelSipWhiteListItemRequest
    ) => Promise<DelSipWhiteListItemResponse>;
    /**
     * Edits the SIP white list.
     */
    setSipWhiteListItem: (
      request: SetSipWhiteListItemRequest
    ) => Promise<SetSipWhiteListItemResponse>;
    /**
     * Gets the SIP white list.
     */
    getSipWhiteList: (request: GetSipWhiteListRequest) => Promise<GetSipWhiteListResponse>;
  }
  interface BindSipRegistrationRequest {
    /**
     * The registration ID
     */
    sipRegistrationId?: number;
    /**
     * The application ID which the SIP registration is to be bound to. Can be used instead of the <b>application_name</b> parameter
     */
    applicationId?: number;
    /**
     * The application name which the SIP registration is to be bound to. Can be used instead of the <b>application_id</b> parameter
     */
    applicationName?: string;
    /**
     * The rule ID which the SIP registration is to be bound to. Can be used instead of the <b>rule_name</b> parameter
     */
    ruleId?: number;
    /**
     * The rule name which the SIP registration is to be bound to. Can be used instead of the <b>rule_id</b> parameter
     */
    ruleName?: string;
    /**
     * The user ID which the SIP registration is to be bound to. Can be used instead of the <b>user_name</b> parameter
     */
    userId?: number;
    /**
     * The user name which the SIP registration is to be bound to. Can be used instead of the <b>user_id</b> parameter
     */
    userName?: string;
    /**
     * Whether to bind or unbind (set true or false respectively)
     */
    bind?: boolean;
  }
  interface BindSipRegistrationResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface GetSipRegistrationsRequest {
    /**
     * The rule ID list separated by semicolons (;) to filter. Can be used instead of <b>rule_name</b>
     */
    ruleId: 'any' | number | number[];
    /**
     * The rule name list separated by semicolons (;) to filter. Can be used instead of <b>rule_id</b>
     */
    ruleName: string | string[];
    /**
     * The user ID list separated by semicolons (;) to filter. Can be used instead of <b>user_name</b>
     */
    userId: 'any' | number | number[];
    userName: string | string[];
    /**
     * The SIP registration ID
     */
    sipRegistrationId?: number;
    /**
     * The SIP user name to filter
     */
    sipUsername?: string;
    /**
     * Whether to show the frozen SIP registrations only
     */
    deactivated?: boolean;
    /**
     * Whether to show the successful SIP registrations only
     */
    successful?: boolean;
    /**
     * Whether the SIP registration is persistent to filter
     */
    isPersistent?: boolean;
    /**
     * The application ID list separated by semicolons (;) to filter. Can be used instead of <b>application_name</b>
     */
    applicationId?: 'any' | number | number[];
    /**
     * The application name list separated by semicolons (;) to filter. Can be used instead of <b>application_id</b>
     */
    applicationName?: string | string[];
    /**
     * Whether SIP registration bound to an application
     */
    isBoundToApplication?: boolean;
    /**
     * The list of proxy servers to use, divided by semicolon (;)
     */
    proxy?: string | string[];
    /**
     * Whether SIP registration is still in progress
     */
    inProgress?: boolean;
    /**
     * The list of SIP response codes. The __code1:code2__ means a range from __code1__ to __code2__ including; the __code1;code2__ meanse either __code1__ or __code2__. You can combine ranges, e.g., __code1;code2:code3__
     */
    statusCode?: string;
    /**
     * The max returning record count
     */
    count?: number;
    /**
     * The first <b>N</b> records are skipped in the output
     */
    offset?: number;
  }
  interface GetSipRegistrationsResponse {
    /**
     * Active SIP registrations
     */
    result: SIPRegistration[];
    /**
     * Count rows
     */
    count: number;
    error?: APIError;
  }
  interface SIPRegistrationInterface {
    /**
     * Bind the SIP registration to the application/user or unbind the SIP registration from the application/user. You should specify the application_id or application_name if you specify the rule_name or user_id, or user_name. You should specify the sip_registration_id if you set bind=true. You can bind only one SIP registration to the user (the previous SIP registration is automatically unbound).
     */
    bindSipRegistration: (
      request: BindSipRegistrationRequest
    ) => Promise<BindSipRegistrationResponse>;
    /**
     * Get active SIP registrations.
     */
    getSipRegistrations: (
      request: GetSipRegistrationsRequest
    ) => Promise<GetSipRegistrationsResponse>;
  }
  interface GetWABPhoneNumbersRequest {
    /**
     * WhatsApp Business phone number
     */
    wabPhoneNumber?: string;
    /**
     * Application ID that is bound to the WhatsApp Business phone number
     */
    applicationId?: number;
    /**
     * Bound application name that can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * Country code filter (2 symbols) for the WhatsApp Business phone number
     */
    countryCode?: string;
    /**
     * Maximum returning records count
     */
    count?: number;
    /**
     * Number of records to be skipped in the result
     */
    offset?: number;
  }
  interface GetWABPhoneNumbersResponse {
    /**
     * WhatsApp Business phone numbers info
     */
    result: WABPhoneInfo[];
    /**
     * Number of total records found
     */
    totalCount: number;
    /**
     * Number of returned records
     */
    count: number;
    error?: APIError;
  }
  interface WABPhoneNumbersInterface {
    /**
     * Gets the account's WhatsApp Business phone numbers.
     */
    getWABPhoneNumbers: (request: GetWABPhoneNumbersRequest) => Promise<GetWABPhoneNumbersResponse>;
  }
  interface DelCallerIDRequest {
    /**
     * ID of the callerID object
     */
    calleridId: number;
    /**
     * The callerID number that can be used instead of <b>callerid_id</b>
     */
    calleridNumber: string;
  }
  interface DelCallerIDResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface GetCallerIDsRequest {
    /**
     * ID of the callerID object to filter
     */
    calleridId?: number;
    /**
     * The phone number to filter
     */
    calleridNumber?: string;
    /**
     * Whether the account is active to filter
     */
    active?: boolean;
    /**
     * The following values are available: 'caller_number' (ascent order), 'verified_until' (ascent order)
     */
    orderBy?: string;
    /**
     * The max returning record count
     */
    count?: number;
    /**
     * The first <b>N</b> records are skipped in the output
     */
    offset?: number;
  }
  interface GetCallerIDsResponse {
    result: CallerIDInfo[];
    /**
     * The total found record count
     */
    totalCount: number;
    /**
     * The returned record count
     */
    count: number;
    error?: APIError;
  }
  interface CallerIDsInterface {
    /**
     * Deletes the CallerID. Note: you cannot delete a CID permanently (the antispam defence).
     */
    delCallerID: (request: DelCallerIDRequest) => Promise<DelCallerIDResponse>;
    /**
     * Gets the account callerIDs.
     */
    getCallerIDs: (request: GetCallerIDsRequest) => Promise<GetCallerIDsResponse>;
  }
  interface AddOutboundTestPhoneNumberRequest {
    /**
     * The personal phone number in the E.164 format
     */
    phoneNumber: string;
  }
  interface AddOutboundTestPhoneNumberResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface VerifyOutboundTestPhoneNumberRequest {}
  interface VerifyOutboundTestPhoneNumberResponse {
    /**
     * The number of attempts left for the day. The number is reset every day at 00:00 UTC
     */
    dailyAttemptsLeft: number;
    error?: APIError;
  }
  interface ActivateOutboundTestPhoneNumberRequest {
    /**
     * The verification code, see the [VerifyOutboundTestPhoneNumber] function
     */
    verificationCode: string;
  }
  interface ActivateOutboundTestPhoneNumberResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface DelOutboundTestPhoneNumberRequest {}
  interface DelOutboundTestPhoneNumberResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface GetOutboundTestPhoneNumbersRequest {}
  interface GetOutboundTestPhoneNumbersResponse {
    result: OutboundTestPhonenumberInfo[];
    error?: APIError;
  }
  interface OutboundTestNumbersInterface {
    /**
     * Adds a personal phone number to test outgoing calls. Only one personal phone number can be used. To replace it with another, delete the existing one first.
     */
    addOutboundTestPhoneNumber: (
      request: AddOutboundTestPhoneNumberRequest
    ) => Promise<AddOutboundTestPhoneNumberResponse>;
    /**
     * Starts a call to the added phone number and pronounces a verification code. You have only 5 verification attempts per day and 100 in total. 1 minute should pass between 2 attempts.
     */
    verifyOutboundTestPhoneNumber: (
      request: VerifyOutboundTestPhoneNumberRequest
    ) => Promise<VerifyOutboundTestPhoneNumberResponse>;
    /**
     * Activates the phone number by the verification code.
     */
    activateOutboundTestPhoneNumber: (
      request: ActivateOutboundTestPhoneNumberRequest
    ) => Promise<ActivateOutboundTestPhoneNumberResponse>;
    /**
     * Deletes the existing phone number.
     */
    delOutboundTestPhoneNumber: (
      request: DelOutboundTestPhoneNumberRequest
    ) => Promise<DelOutboundTestPhoneNumberResponse>;
    /**
     * Shows the phone number info.
     */
    getOutboundTestPhoneNumbers: (
      request: GetOutboundTestPhoneNumbersRequest
    ) => Promise<GetOutboundTestPhoneNumbersResponse>;
  }
  interface AddQueueRequest {
    /**
     * The application ID
     */
    applicationId: number;
    /**
     * The application name that can be used instead of <b>application_id</b>
     */
    applicationName: string;
    /**
     * The queue name. The length must be less than 100
     */
    acdQueueName: string;
    /**
     * The integer queue priority. The highest priority is 0
     */
    acdQueuePriority?: number;
    /**
     * Whether to enable the auto binding of operators to a queue by skills comparing
     */
    autoBinding?: boolean;
    /**
     * The value in the range of [0.5 ... 1.0]. The value 1.0 means the service probability 100% in challenge with a lower priority queue
     */
    serviceProbability?: number;
    /**
     * The max queue size
     */
    maxQueueSize?: number;
    /**
     * The max predicted waiting time in minutes. The client is rejected if the predicted waiting time is greater than the max predicted waiting time
     */
    maxWaitingTime?: number;
    /**
     * The average service time in seconds. Specify the parameter to correct or initialize the waiting time prediction
     */
    averageServiceTime?: number;
  }
  interface AddQueueResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    /**
     * The ACD queue ID
     */
    acdQueueId: number;
    error?: APIError;
  }
  interface BindUserToQueueRequest {
    /**
     * Whether to bind or unbind users
     */
    bind: boolean;
    /**
     * The application ID
     */
    applicationId: number;
    /**
     * The application name that can be used instead of <b>application_id</b>
     */
    applicationName: string;
    /**
     * The user ID list separated by semicolons (;). Use the 'all' value to specify all users bound to the application
     */
    userId: 'any' | number | number[];
    /**
     * The user name list separated by semicolons (;). <b>user_name</b> can be used instead of <b>user_id</b>
     */
    userName: string | string[];
    /**
     * The ACD queue ID list separated by semicolons (;). Use the 'all' value to specify all queues bound to the application
     */
    acdQueueId: 'any' | number | number[];
    /**
     * The queue name that can be used instead of <b>acd_queue_id</b>. The queue name list separated by semicolons (;)
     */
    acdQueueName: string | string[];
  }
  interface BindUserToQueueResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface DelQueueRequest {
    /**
     * The ACD queue ID list separated by semicolons (;)
     */
    acdQueueId: 'any' | number | number[];
    /**
     * The ACD queue name that can be used instead of <b>acd_queue_id</b>. The ACD queue name list separated by semicolons (;)
     */
    acdQueueName: string | string[];
  }
  interface DelQueueResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SetQueueInfoRequest {
    /**
     * The ACD queue ID
     */
    acdQueueId: number;
    /**
     * The ACD queue name that can be used instead of <b>acd_queue_id</b>
     */
    acdQueueName: string;
    /**
     * The new queue name. The length must be less than 100
     */
    newAcdQueueName?: string;
    /**
     * The integer queue priority. The highest priority is 0
     */
    acdQueuePriority?: number;
    /**
     * Whether to enable the auto binding of operators to a queue by skills comparing
     */
    autoBinding?: boolean;
    /**
     * The value in the range of [0.5 ... 1.0]. The value 1.0 means the service probability 100% in challenge with a lower priority queue
     */
    serviceProbability?: number;
    /**
     * The max queue size
     */
    maxQueueSize?: number;
    /**
     * The max predicted waiting time in minutes. The client is rejected if the predicted waiting time is greater than the max predicted waiting time
     */
    maxWaitingTime?: number;
    /**
     * The average service time in seconds. Specify the parameter to correct or initialize the waiting time prediction
     */
    averageServiceTime?: number;
    /**
     * The new application ID
     */
    applicationId?: number;
  }
  interface SetQueueInfoResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface GetQueuesRequest {
    /**
     * The ACD queue ID to filter
     */
    acdQueueId?: number;
    /**
     * The ACD queue name part to filter
     */
    acdQueueName?: string;
    /**
     * The application ID to filter
     */
    applicationId?: number;
    /**
     * The skill ID to filter
     */
    skillId?: number;
    /**
     * The excluded skill ID to filter
     */
    excludedSkillId?: number;
    /**
     * Whether to get the bound skills
     */
    withSkills?: boolean;
    /**
     * The skill to show in the 'skills' field output
     */
    showingSkillId?: number;
    /**
     * The max returning record count
     */
    count?: number;
    /**
     * The first <b>N</b> records are skipped in the output
     */
    offset?: number;
    /**
     * Whether to include the number of agents bound to the queue
     */
    withOperatorcount?: boolean;
  }
  interface GetQueuesResponse {
    result: QueueInfo[];
    /**
     * The total found queue count
     */
    totalCount: number;
    /**
     * The returned queue count
     */
    count: number;
    error?: APIError;
  }
  interface GetACDStateRequest {
    /**
     * The ACD queue ID list separated by semicolons (;). Use the 'all' value to select all ACD queues
     */
    acdQueueId?: 'any' | number | number[];
  }
  interface GetACDStateResponse {
    result: ACDState;
    error?: APIError;
  }
  interface QueuesInterface {
    /**
     * Adds a new ACD queue.
     */
    addQueue: (request: AddQueueRequest) => Promise<AddQueueResponse>;
    /**
     * Bind/unbind users to/from the specified ACD queues. Note that users and queues should be already bound to the same application.
     */
    bindUserToQueue: (request: BindUserToQueueRequest) => Promise<BindUserToQueueResponse>;
    /**
     * Deletes the ACD queue.
     */
    delQueue: (request: DelQueueRequest) => Promise<DelQueueResponse>;
    /**
     * Edits the ACD queue.
     */
    setQueueInfo: (request: SetQueueInfoRequest) => Promise<SetQueueInfoResponse>;
    /**
     * Gets the ACD queues.
     */
    getQueues: (request: GetQueuesRequest) => Promise<GetQueuesResponse>;
    /**
     * Gets the current ACD queue state.
     */
    getACDState: (request: GetACDStateRequest) => Promise<GetACDStateResponse>;
  }
  interface GetSmartQueueRealtimeMetricsRequest {
    /**
     * The application ID to search by
     */
    applicationId: number;
    /**
     * The application name to search by. Can be used instead of the <b>application_id</b> parameter
     */
    applicationName: string;
    /**
     * The report type. Possible values are: calls_blocked_percentage, count_blocked_calls, im_blocked_chats_percentage, im_count_blocked_chats, im_answered_chats_rate, average_abandonment_rate, count_abandonment_calls, service_level, im_service_level, occupancy_rate, im_agent_occupancy_rate, agent_utilization_rate, im_agent_utilization_rate, sum_agents_online_time, sum_agents_ready_time, sum_agents_dialing_time, sum_agents_in_service_time, sum_agents_in_service_incoming_time, sum_agents_in_service_outcoming_time, sum_agents_afterservice_time, sum_agents_dnd_time, sum_agents_custom_1_time, sum_agents_custom_2_time, sum_agents_custom_3_time, sum_agents_custom_4_time, sum_agents_custom_5_time, sum_agents_custom_6_time, sum_agents_custom_7_time, sum_agents_custom_8_time, sum_agents_custom_9_time, sum_agents_custom_10_time, sum_agents_banned_time, im_sum_agents_online_time, im_sum_agents_ready_time, im_sum_agents_in_service_time, im_sum_agents_dnd_time, im_sum_agents_custom_1_time, im_sum_agents_custom_2_time, im_sum_agents_custom_3_time, im_sum_agents_custom_4_time, im_sum_agents_custom_5_time, im_sum_agents_custom_6_time, im_sum_agents_custom_7_time, im_sum_agents_custom_8_time, im_sum_agents_custom_9_time, im_sum_agents_custom_10_time, im_sum_agents_banned_time, average_agents_idle_time, max_agents_idle_time, min_agents_idle_time, percentile_0_25_agents_idle_time, percentile_0_50_agents_idle_time, percentile_0_75_agents_idle_time, min_time_in_queue, max_time_in_queue, average_time_in_queue, min_answer_speed, max_answer_speed, average_answer_speed, im_min_answer_speed, im_max_answer_speed, im_average_answer_speed, min_handle_time, max_handle_time, average_handle_time, count_handled_calls, min_after_call_worktime, max_after_call_worktime, average_after_call_worktime, count_agent_unanswered_calls, im_count_agent_unanswered_chats, min_reaction_time, max_reaction_time, average_reaction_time, im_min_reaction_time, im_max_reaction_time, im_average_reaction_time, im_count_abandonment_chats, im_count_lost_chats, im_lost_chats_rate, call_count_assigned_to_queue, im_count_assigned_to_queue
     */
    reportType: string | string[];
    /**
     * The user ID list with a maximum of 5 values separated by semicolons (;). Use the 'all' value to select all users. Can operate as a filter for the **occupancy_rate**, **sum_agents_online_time**, **sum_agents_ready_time**, **sum_agents_dialing_time**, **sum_agents_in_service_time**, **sum_agents_afterservice_time**, **sum_agents_dnd_time**, **sum_agents_banned_time**, **min_handle_time**, **max_handle_time**, **average_handle_time**, **count_handled_calls**, **min_after_call_worktime**, **max_after_call_worktime**, **average_after_call_worktime** report types
     */
    userId?: 'any' | number | number[];
    /**
     * The user name list separated by semicolons (;). <b>user_name</b> can be used instead of <b>user_id</b>
     */
    userName?: string | string[];
    /**
     * The SmartQueue name list separated by semicolons (;). Can be used instead of <b>sq_queue_id</b>
     */
    sqQueueName?: string | string[];
    /**
     * The from date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss. Default is the current time minus 30 minutes
     */
    fromDate?: Date;
    /**
     * The to date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss. Default is the current time
     */
    toDate?: Date;
    /**
     * The selected timezone or the 'auto' value (the account location)
     */
    timezone?: string;
    /**
     * Interval format: YYYY-MM-DD HH:mm:ss. Default is 30 minutes
     */
    interval?: string;
    /**
     * Group the result by **agent** or *queue*. The **agent** grouping is allowed for 1 queue and for the occupancy_rate, sum_agents_online_time, sum_agents_ready_time, sum_agents_dialing_time, sum_agents_in_service_time, sum_agents_afterservice_time, sum_agents_dnd_time, sum_agents_banned_time, min_handle_time, max_handle_time, average_handle_time, count_handled_calls, min_after_call_worktime, max_after_call_worktime, average_after_call_worktime report types. The **queue** grouping allowed for the calls_blocked_percentage, count_blocked_calls, average_abandonment_rate, count_abandonment_calls, service_level, occupancy_rate, min_time_in_queue, max_time_in_queue, average_time_in_queue, min_answer_speed, max_answer_speed, average_answer_speed, min_handle_time, max_handle_time, average_handle_time, count_handled_calls, min_after_call_worktime, max_after_call_worktime, average_after_call_worktime report types
     */
    groupBy?: string;
    /**
     * Maximum waiting time. Required for the **service_level** report type
     */
    maxWaitingSec?: number;
  }
  interface GetSmartQueueRealtimeMetricsResponse {
    result: SmartQueueMetricsResult[];
    /**
     * The used timezone, e.g., 'Etc/GMT'
     */
    timezone: string;
    error?: APIError;
  }
  interface GetSmartQueueDayHistoryRequest {
    /**
     * The application ID to search by
     */
    applicationId: number;
    /**
     * The application name to search by. Can be used instead of the <b>application_id</b> parameter
     */
    applicationName: string;
    /**
     * The SmartQueue ID list with a maximum of 5 values separated by semicolons (;). Can operate as filter for the **calls_blocked_percentage**, **count_blocked_calls**, **average_abandonment_rate**, **count_abandonment_calls**, **service_level**, **occupancy_rate**, **min_time_in_queue**, **max_time_in_queue**, **average_time_in_queue**, **min_answer_speed**, **max_answer_speed**, **average_answer_speed**, **min_handle_time**, **max_handle_time**, **average_handle_time**, **count_handled_calls**, **min_after_call_worktime**, **max_after_call_worktime**, **average_after_call_worktime** report types
     */
    sqQueueId: 'any' | number | number[];
    /**
     * The report type. Possible values are: calls_blocked_percentage, count_blocked_calls, im_blocked_chats_percentage, im_count_blocked_chats, im_answered_chats_rate, average_abandonment_rate, count_abandonment_calls, service_level, im_service_level, occupancy_rate, im_agent_occupancy_rate, agent_utilization_rate, im_agent_utilization_rate, sum_agents_online_time, sum_agents_ready_time, sum_agents_dialing_time, sum_agents_in_service_time, sum_agents_in_service_incoming_time, sum_agents_in_service_outcoming_time, sum_agents_afterservice_time, sum_agents_dnd_time, sum_agents_custom_1_time, sum_agents_custom_2_time, sum_agents_custom_3_time, sum_agents_custom_4_time, sum_agents_custom_5_time, sum_agents_custom_6_time, sum_agents_custom_7_time, sum_agents_custom_8_time, sum_agents_custom_9_time, sum_agents_custom_10_time, sum_agents_banned_time, im_sum_agents_online_time, im_sum_agents_ready_time, im_sum_agents_in_service_time, im_sum_agents_dnd_time, im_sum_agents_custom_1_time, im_sum_agents_custom_2_time, im_sum_agents_custom_3_time, im_sum_agents_custom_4_time, im_sum_agents_custom_5_time, im_sum_agents_custom_6_time, im_sum_agents_custom_7_time, im_sum_agents_custom_8_time, im_sum_agents_custom_9_time, im_sum_agents_custom_10_time, im_sum_agents_banned_time, average_agents_idle_time, max_agents_idle_time, min_agents_idle_time, percentile_0_25_agents_idle_time, percentile_0_50_agents_idle_time, percentile_0_75_agents_idle_time, min_time_in_queue, max_time_in_queue, average_time_in_queue, min_answer_speed, max_answer_speed, average_answer_speed, im_min_answer_speed, im_max_answer_speed, im_average_answer_speed, min_handle_time, max_handle_time, average_handle_time, count_handled_calls, min_after_call_worktime, max_after_call_worktime, average_after_call_worktime, count_agent_unanswered_calls, im_count_agent_unanswered_chats, min_reaction_time, max_reaction_time, average_reaction_time, im_min_reaction_time, im_max_reaction_time, im_average_reaction_time, im_count_abandonment_chats, im_count_lost_chats, im_lost_chats_rate, call_count_assigned_to_queue, im_count_assigned_to_queue
     */
    reportType: string | string[];
    /**
     * The user ID list with a maximum of 5 values separated by semicolons (;). Use the 'all' value to select all users. Can operate as a filter for the **occupancy_rate**, **sum_agents_online_time**, **sum_agents_ready_time**, **sum_agents_dialing_time**, **sum_agents_in_service_time**, **sum_agents_afterservice_time**, **sum_agents_dnd_time**, **sum_agents_banned_time**, **min_handle_time**, **max_handle_time**, **average_handle_time**, **count_handled_calls**, **min_after_call_worktime**, **max_after_call_worktime**, **average_after_call_worktime** report types
     */
    userId?: 'any' | number | number[];
    /**
     * The user name list separated by semicolons (;). <b>user_name</b> can be used instead of <b>user_id</b>
     */
    userName?: string | string[];
    /**
     * The SmartQueue name list separated by semicolons (;). Can be used instead of <b>sq_queue_id</b>
     */
    sqQueueName?: string | string[];
    /**
     * The from date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss. Default is the current time minus 1 day
     */
    fromDate?: Date;
    /**
     * The to date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss. Default is the current time
     */
    toDate?: Date;
    /**
     * The selected timezone or the 'auto' value (the account location)
     */
    timezone?: string;
    /**
     * Interval format: YYYY-MM-DD HH:mm:ss. Default is 1 day
     */
    interval?: string;
    /**
     * Group the result by **agent** or *queue*. The **agent** grouping is allowed only for 1 queue and for the occupancy_rate, sum_agents_online_time, sum_agents_ready_time, sum_agents_dialing_time, sum_agents_in_service_time, sum_agents_afterservice_time, sum_agents_dnd_time, sum_agents_banned_time, min_handle_time, max_handle_time, average_handle_time, count_handled_calls, min_after_call_worktime, max_after_call_worktime, average_after_call_worktime report types. The **queue** grouping allowed for the calls_blocked_percentage, count_blocked_calls, average_abandonment_rate, count_abandonment_calls, service_level, occupancy_rate, min_time_in_queue, max_time_in_queue, average_time_in_queue, min_answer_speed, max_answer_speed, average_answer_speed, min_handle_time, max_handle_time, average_handle_time, count_handled_calls, min_after_call_worktime, max_after_call_worktime, average_after_call_worktime report types
     */
    groupBy?: string;
    /**
     * Maximum waiting time. Required for the **service_level** report type
     */
    maxWaitingSec?: number;
  }
  interface GetSmartQueueDayHistoryResponse {
    result: SmartQueueMetricsResult[];
    /**
     * The used timezone, e.g., 'Etc/GMT'
     */
    timezone: string;
    error?: APIError;
  }
  interface RequestSmartQueueHistoryRequest {
    /**
     * The application ID to search by
     */
    applicationId: number;
    /**
     * The application name to search by. Can be used instead of the <b>application_id</b> parameter
     */
    applicationName: string;
    /**
     * The SmartQueue ID list with a maximum of 5 values separated by semicolons (;). Can operate as filter for the **calls_blocked_percentage**, **count_blocked_calls**, **average_abandonment_rate**, **count_abandonment_calls**, **service_level**, **occupancy_rate**, **min_time_in_queue**, **max_time_in_queue**, **average_time_in_queue**, **min_answer_speed**, **max_answer_speed**, **average_answer_speed**, **min_handle_time**, **max_handle_time**, **average_handle_time**, **count_handled_calls**, **min_after_call_worktime**, **max_after_call_worktime**, **average_after_call_worktime** report types
     */
    sqQueueId: 'any' | number | number[];
    /**
     * The from date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss. Default is the current time minus 1 day
     */
    fromDate: Date;
    /**
     * The to date in the selected timezone in 24-h format: YYYY-MM-DD HH:mm:ss. Default is the current time
     */
    toDate: Date;
    /**
     * The report type. Possible values are: calls_blocked_percentage, count_blocked_calls, im_blocked_chats_percentage, im_count_blocked_chats, im_answered_chats_rate, average_abandonment_rate, count_abandonment_calls, service_level, im_service_level, occupancy_rate, im_agent_occupancy_rate, agent_utilization_rate, im_agent_utilization_rate, sum_agents_online_time, sum_agents_ready_time, sum_agents_dialing_time, sum_agents_in_service_time, sum_agents_in_service_incoming_time, sum_agents_in_service_outcoming_time, sum_agents_afterservice_time, sum_agents_dnd_time, sum_agents_custom_1_time, sum_agents_custom_2_time, sum_agents_custom_3_time, sum_agents_custom_4_time, sum_agents_custom_5_time, sum_agents_custom_6_time, sum_agents_custom_7_time, sum_agents_custom_8_time, sum_agents_custom_9_time, sum_agents_custom_10_time, sum_agents_banned_time, im_sum_agents_online_time, im_sum_agents_ready_time, im_sum_agents_in_service_time, im_sum_agents_dnd_time, im_sum_agents_custom_1_time, im_sum_agents_custom_2_time, im_sum_agents_custom_3_time, im_sum_agents_custom_4_time, im_sum_agents_custom_5_time, im_sum_agents_custom_6_time, im_sum_agents_custom_7_time, im_sum_agents_custom_8_time, im_sum_agents_custom_9_time, im_sum_agents_custom_10_time, im_sum_agents_banned_time, average_agents_idle_time, max_agents_idle_time, min_agents_idle_time, percentile_0_25_agents_idle_time, percentile_0_50_agents_idle_time, percentile_0_75_agents_idle_time, min_time_in_queue, max_time_in_queue, average_time_in_queue, min_answer_speed, max_answer_speed, average_answer_speed, im_min_answer_speed, im_max_answer_speed, im_average_answer_speed, min_handle_time, max_handle_time, average_handle_time, count_handled_calls, min_after_call_worktime, max_after_call_worktime, average_after_call_worktime, count_agent_unanswered_calls, im_count_agent_unanswered_chats, min_reaction_time, max_reaction_time, average_reaction_time, im_min_reaction_time, im_max_reaction_time, im_average_reaction_time, im_count_abandonment_chats, im_count_lost_chats, im_lost_chats_rate, call_count_assigned_to_queue, im_count_assigned_to_queue
     */
    reportType: string | string[];
    /**
     * The user ID list with a maximum of 5 values separated by semicolons (;). Use the 'all' value to select all users. Can operate as a filter for the **occupancy_rate**, **sum_agents_online_time**, **sum_agents_ready_time**, **sum_agents_dialing_time**, **sum_agents_in_service_time**, **sum_agents_afterservice_time**, **sum_agents_dnd_time**, **sum_agents_banned_time**, **min_handle_time**, **max_handle_time**, **average_handle_time**, **count_handled_calls**, **min_after_call_worktime**, **max_after_call_worktime**, **average_after_call_worktime** report types
     */
    userId?: 'any' | number | number[];
    /**
     * The user name list separated by semicolons (;). Can be used instead of <b>user_id</b>
     */
    userName?: string | string[];
    /**
     * The SmartQueue name list separated by semicolons (;). Can be used instead of <b>sq_queue_id</b>
     */
    sqQueueName?: string | string[];
    /**
     * The selected timezone or the 'auto' value (the account location)
     */
    timezone?: string;
    /**
     * Interval format: YYYY-MM-DD HH:mm:ss. Default is 1 day
     */
    interval?: string;
    /**
     * Group the result by **agent** or *queue*. The **agent** grouping is allowed only for 1 queue and for the occupancy_rate, sum_agents_online_time, sum_agents_ready_time, sum_agents_dialing_time, sum_agents_in_service_time, sum_agents_afterservice_time, sum_agents_dnd_time, sum_agents_banned_time, min_handle_time, max_handle_time, average_handle_time, count_handled_calls, min_after_call_worktime, max_after_call_worktime, average_after_call_worktime report types. The **queue** grouping allowed for the calls_blocked_percentage, count_blocked_calls, average_abandonment_rate, count_abandonment_calls, service_level, occupancy_rate, min_time_in_queue, max_time_in_queue, average_time_in_queue, min_answer_speed, max_answer_speed, average_answer_speed, min_handle_time, max_handle_time, average_handle_time, count_handled_calls, min_after_call_worktime, max_after_call_worktime, average_after_call_worktime report types
     */
    groupBy?: string;
    /**
     * Maximum waiting time. Required for the **service_level** report type
     */
    maxWaitingSec?: number;
  }
  interface RequestSmartQueueHistoryResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    /**
     * History report ID
     */
    historyReportId: number;
    error?: APIError;
  }
  interface GetSQStateRequest {
    /**
     * The application ID to search by
     */
    applicationId: number;
    /**
     * The SmartQueue ID list separated by semicolons (;). Use the 'all' value to select all SmartQueues
     */
    sqQueueId: 'any' | number | number[];
    /**
     * The application name to search by. Can be used instead of the <b>application_id</b> parameter
     */
    applicationName?: string;
    /**
     * The SmartQueue name list separated by semicolons (;). Can be used instead of <b>sq_queue_id</b>
     */
    sqQueueName?: string | string[];
    /**
     * The selected timezone or the 'auto' value (the account location)
     */
    timezone?: string;
  }
  interface GetSQStateResponse {
    result: SmartQueueState[];
    error?: APIError;
  }
  interface SQ_SetAgentCustomStatusMappingRequest {
    /**
     * Status name
     */
    sqStatusName: string;
    /**
     * Custom status name
     */
    customStatusName: string;
    /**
     * Application ID
     */
    applicationId: number;
  }
  interface SQ_SetAgentCustomStatusMappingResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SQ_GetAgentCustomStatusMappingRequest {
    /**
     * Application ID
     */
    applicationId?: number;
  }
  interface SQ_GetAgentCustomStatusMappingResponse {
    /**
     * Status name
     */
    sqStatusName: string;
    /**
     * Custom status name
     */
    customStatusName: string;
    error?: APIError;
  }
  interface SQ_DeleteAgentCustomStatusMappingRequest {
    /**
     * Application ID
     */
    applicationId: number;
    /**
     * Status name
     */
    sqStatusName?: string;
  }
  interface SQ_DeleteAgentCustomStatusMappingResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SQ_AddQueueRequest {
    /**
     * Application ID to bind to
     */
    applicationId: number;
    /**
     * Unique SmartQueue name within the application, up to 100 characters
     */
    sqQueueName: string;
    /**
     * Agent selection strategy for calls. Accepts one of the following values: "MOST_QUALIFIED", "LEAST_QUALIFIED", "MAX_WAITING_TIME"
     */
    callAgentSelection: string;
    /**
     * Call type requests prioritizing strategy. Accepts one of the [SQTaskSelectionStrategies] enum values
     */
    callTaskSelection: string;
    /**
     * Application name to bind to. Can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * Whether to add the task to the queue if there are no available agents
     */
    holdImIfInactiveAgents?: boolean;
    /**
     * Agent selection strategy for messages. Accepts one of the following values: "MOST_QUALIFIED", "LEAST_QUALIFIED", "MAX_WAITING_TIME". The default value is **call_agent_selection**
     */
    imAgentSelection?: string;
    /**
     * IM type requests prioritizing strategy. Accepts one of the [SQTaskSelectionStrategies] enum values. The default value is **call_task_selection**
     */
    imTaskSelection?: string;
    /**
     * Whether to keep the call task in the queue if all agents are in the DND/BANNED/OFFLINE statuses.
     */
    holdCallsIfInactiveAgents?: boolean;
    fallbackAgentSelection?: string;
    /**
     * Comment, up to 200 characters
     */
    description?: string;
    /**
     * Maximum time in minutes that a CALL-type request can remain in the queue without being assigned to an agent. Specify either this parameter or `call_max_waiting_time_in_seconds`. Specifying both parameters simultaniously leads to an error
     */
    callMaxWaitingTime?: number;
    /**
     * Maximum time in minutes that an IM-type request can remain in the queue without being assigned to an agent. Specify either this parameter or `im_max_waiting_time_in_seconds`. Specifying both parameters simultaniously leads to an error
     */
    imMaxWaitingTime?: number;
    /**
     * Maximum size of the queue with CALL-type requests
     */
    callMaxQueueSize?: number;
    /**
     * Maximum size of the queue with IM-type requests
     */
    imMaxQueueSize?: number;
    /**
     * The queue's priority from 1 to 100
     */
    priority?: number;
    /**
     * Maximum call waiting time in seconds. Specify either this parameter or `call_max_waiting_time`. Specifying both parameters simultaniously leads to an error
     */
    callMaxWaitingTimeInSeconds?: number;
    /**
     * Maximum chat message waiting time in seconds. Specify either this parameter or `im_max_waiting_time`. Specifying both parameters simultaniously leads to an error
     */
    imMaxWaitingTimeInSeconds?: number;
  }
  interface SQ_AddQueueResponse {
    /**
     * Result with ID of the added queue
     */
    result: SQAddQueueResult;
    error?: APIError;
  }
  interface SQ_SetQueueInfoRequest {
    /**
     * Application ID to search by
     */
    applicationId: number;
    /**
     * ID of the SmartQueue to search for
     */
    sqQueueId: number;
    /**
     * Application name to search by. Can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * Whether to add the task to the queue if there are no available agents
     */
    holdImIfInactiveAgents?: boolean;
    /**
     * Name of the SmartQueue to search for. Can be used instead of <b>sq_queue_id</b>
     */
    sqQueueName?: string;
    /**
     * Whether to keep the call task in the queue if all agents are in the DND/BANNED/OFFLINE statuses.
     */
    holdCallsIfInactiveAgents?: boolean;
    /**
     * New SmartQueue name within the application, up to 100 characters
     */
    newSqQueueName?: string;
    /**
     * Agent selection strategy for calls. Accepts one of the following values: "MOST_QUALIFIED", "LEAST_QUALIFIED", "MAX_WAITING_TIME"
     */
    callAgentSelection?: string;
    /**
     * Agent selection strategy for messages. Accepts one of the following values: "MOST_QUALIFIED", "LEAST_QUALIFIED", "MAX_WAITING_TIME". The default value is **call_agent_selection**
     */
    imAgentSelection?: string;
    /**
     * Strategy of prioritizing CALL-type requests for service. Accepts one of the following values: "MAX_PRIORITY", "MAX_WAITING_TIME"
     */
    callTaskSelection?: string;
    /**
     * Strategy of prioritizing IM-type requests for service. Accepts one of the following values: "MAX_PRIORITY", "MAX_WAITING_TIME". The default value is **call_task_selection**
     */
    imTaskSelection?: string;
    fallbackAgentSelection?: string;
    /**
     * Comment, up to 200 characters
     */
    description?: string;
    /**
     * Maximum time in minutes that a CALL-type request can remain in the queue without being assigned to an agent. Specify either this parameter or `call_max_waiting_time_in_seconds`. Specifying both parameters simultaniously leads to an error
     */
    callMaxWaitingTime?: number;
    /**
     * Maximum time in minutes that an IM-type request can remain in the queue without being assigned to an agent. Specify either this parameter or `im_max_waiting_time_in_seconds`. Specifying both parameters simultaniously leads to an error
     */
    imMaxWaitingTime?: number;
    /**
     * Maximum size of the queue with CALL-type requests
     */
    callMaxQueueSize?: number;
    /**
     * Maximum size of the queue with IM-type requests
     */
    imMaxQueueSize?: number;
    /**
     * The queue's priority from 1 to 100
     */
    priority?: number;
    /**
     * Maximum call waiting time in seconds. Specify either this parameter or `call_max_waiting_time`. Specifying both parameters simultaniously leads to an error
     */
    callMaxWaitingTimeInSeconds?: number;
    /**
     * Maximum chat message waiting time in seconds. Specify either this parameter or `im_max_waiting_time`. Specifying both parameters simultaniously leads to an error
     */
    imMaxWaitingTimeInSeconds?: number;
  }
  interface SQ_SetQueueInfoResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SQ_DelQueueRequest {
    /**
     * Application ID to search by
     */
    applicationId: number;
    /**
     * List of SmartQueue IDs separated by semicolons (;). Use 'all' to delete all the queues
     */
    sqQueueId: 'any' | number | number[];
    /**
     * Application name to search by. Can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * List of SmartQueue names separated by semicolons (;). Can be used instead of <b>sq_queue_id</b>
     */
    sqQueueName?: string | string[];
  }
  interface SQ_DelQueueResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SQ_GetQueuesRequest {
    /**
     * Application ID to search by
     */
    applicationId: number;
    /**
     * Application name to search by. Can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * List of SmartQueue IDs separated by semicolons (;)
     */
    sqQueueId?: 'any' | number | number[];
    /**
     * List of SmartQueue names separated by semicolons (;). Can be used instead of <b>sq_queue_id</b>
     */
    sqQueueName?: string | string[];
    /**
     * Substring of the SmartQueue name to filter
     */
    sqQueueNameTemplate?: string;
    /**
     * ID of the user that is bound to the queue
     */
    userId?: number;
    /**
     * Name of the user that is bound to the queue. Can be used instead of <b>user_id</b>
     */
    userName?: string;
    /**
     * ID of the user that is not bound to the queue
     */
    excludedUserId?: number;
    /**
     * Name of the user that is not bound to the queue. Can be used instead of <b>excluded_user_id</b>
     */
    excludedUserName?: string;
    /**
     * Number of items to show in the output
     */
    count?: number;
    /**
     * Number of items to skip in the output
     */
    offset?: number;
    /**
     * Whether to include the number of agents bound to the queue
     */
    withAgentcount?: boolean;
  }
  interface SQ_GetQueuesResponse {
    /**
     * The found queue(s)
     */
    result: GetSQQueuesResult;
    error?: APIError;
  }
  interface SQ_AddSkillRequest {
    /**
     * Application ID to bind to
     */
    applicationId: number;
    /**
     * Unique skill name within the application
     */
    sqSkillName: string;
    /**
     * Application name to bind to. Can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * Comment, up to 200 characters
     */
    description?: string;
  }
  interface SQ_AddSkillResponse {
    /**
     * Result with ID of the added skill
     */
    result: SQAddSkillResult;
    error?: APIError;
  }
  interface SQ_DelSkillRequest {
    /**
     * Application ID to search by
     */
    applicationId: number;
    /**
     * List of skill IDs separated by semicolons (;). Use 'all' to delete all the skills
     */
    sqSkillId: 'any' | number | number[];
    /**
     * Application name to search by. Can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * List of skill names separated by semicolons (;). Can be used instead of <b>sq_skill_id</b>
     */
    sqSkillName?: string | string[];
  }
  interface SQ_DelSkillResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SQ_SetSkillInfoRequest {
    /**
     * Application ID to search by
     */
    applicationId: number;
    /**
     * ID of the skill
     */
    sqSkillId: number;
    /**
     * Application name to search by. Can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * Name of the skill. Can be used instead of <b>sq_skill_id</b>
     */
    sqSkillName?: string;
    /**
     * New unique skill name within the application
     */
    newSqSkillName?: string;
    /**
     * Comment, up to 200 characters
     */
    description?: string;
  }
  interface SQ_SetSkillInfoResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SQ_BindSkillRequest {
    /**
     * Application ID to search by
     */
    applicationId: number;
    /**
     * List of user IDs separated by semicolons (;). Use 'all' to select all the users
     */
    userId: 'any' | number | number[];
    /**
     * Skills to be bound to agents in the json array format. The array should contain objects with the <b>sq_skill_id</b>/<b>sq_skill_name</b> and <b>sq_skill_level</b> keys where skill levels range from 1 to 5
     */
    sqSkills: any;
    /**
     * Application name to search by. Can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * List of user names separated by semicolons (;). Can be used instead of <b>user_id</b>
     */
    userName?: string | string[];
    /**
     * Binding mode. Accepts one of the [SQSkillBindingModes] enum values
     */
    bindMode?: string;
  }
  interface SQ_BindSkillResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SQ_UnbindSkillRequest {
    /**
     * Application ID to search by
     */
    applicationId: number;
    /**
     * List of user IDs separated by semicolons (;). Use 'all' to select all the users
     */
    userId: 'any' | number | number[];
    /**
     * List of skill IDs separated by semicolons (;). Use 'all' to unbind all the skills
     */
    sqSkillId: 'any' | number | number[];
    /**
     * Application name to search by. Can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * List of user names separated by semicolons (;). Can be used instead of <b>user_id</b>
     */
    userName?: string | string[];
    /**
     * List of skill names separated by semicolons (;). Can be used instead of <b>sq_skill_id</b>
     */
    sqSkillName?: string | string[];
  }
  interface SQ_UnbindSkillResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SQ_GetSkillsRequest {
    /**
     * Application ID to search by
     */
    applicationId: number;
    /**
     * Application name to search by. Can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * List of user IDs separated by semicolons (;)
     */
    userId?: 'any' | number | number[];
    /**
     * List of user names separated by semicolons (;). Can be used instead of <b>user_id</b>
     */
    userName?: string | string[];
    /**
     * List of skill IDs separated by semicolons (;)
     */
    sqSkillId?: 'any' | number | number[];
    /**
     * List of skill names separated by semicolons (;). Can be used instead of <b>sq_skill_id</b>
     */
    sqSkillName?: string | string[];
    /**
     * Substring of the skill name to filter, case-insensitive
     */
    sqSkillNameTemplate?: string;
    /**
     * ID of the user that is not bound to the skill
     */
    excludedUserId?: number;
    /**
     * Name of the user that is not bound to the skill. Can be used instead of <b>excluded_user_id</b>
     */
    excludedUserName?: string;
    /**
     * Number of items to show in the output
     */
    count?: number;
    /**
     * Number of items to skip in the output
     */
    offset?: number;
  }
  interface SQ_GetSkillsResponse {
    /**
     * The found skill(s).
     */
    result: GetSQSkillsResult;
    error?: APIError;
  }
  interface SQ_BindAgentRequest {
    /**
     * Application ID to search by
     */
    applicationId: number;
    /**
     * ID of the SmartQueue. Pass a list of values divided by ; or the "all" keyword
     */
    sqQueueId: string;
    /**
     * List of user IDs separated by semicolons (;). Use 'all' to select all the users
     */
    userId: 'any' | number | number[];
    /**
     * Application name to search by. Can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * Name of the SmartQueue. Pass a list of names divided by ; or the "all" keyword
     */
    sqQueueName?: string;
    /**
     * List of user names separated by semicolons (;). Can be used instead of <b>user_id</b>
     */
    userName?: string | string[];
    /**
     * Binding mode. Accepts one of the [SQAgentBindingModes] enum values
     */
    bindMode?: string;
  }
  interface SQ_BindAgentResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SQ_UnbindAgentRequest {
    /**
     * Application ID to search by
     */
    applicationId: number;
    /**
     * List of SmartQueue IDs separated by semicolons (;). Use 'all' to select all the queues
     */
    sqQueueId: 'any' | number | number[];
    /**
     * List of user IDs separated by semicolons (;). Use 'all' to select all the users
     */
    userId: 'any' | number | number[];
    /**
     * Application name to search by. Can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * List of SmartQueue names separated by semicolons (;). Can be used instead of <b>sq_queue_id</b>
     */
    sqQueueName?: string | string[];
    /**
     * List of user names separated by semicolons (;). Can be used instead of <b>user_id</b>
     */
    userName?: string | string[];
  }
  interface SQ_UnbindAgentResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SQ_GetAgentsRequest {
    /**
     * Application ID to search by
     */
    applicationId: number;
    /**
     * Whether the agent can handle calls. When set to false, the agent is excluded from the CALL-request distribution
     */
    handleCalls: boolean;
    /**
     * Application name to search by. Can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * List of SmartQueue IDs separated by semicolons (;). Use 'all' to select all the queues
     */
    sqQueueId?: 'any' | number | number[];
    /**
     * List of SmartQueue names separated by semicolons (;). Can be used instead of <b>sq_queue_id</b>
     */
    sqQueueName?: string | string[];
    /**
     * ID of the SmartQueue to exclude
     */
    excludedSqQueueId?: number;
    /**
     * Name of the SmartQueue to exclude. Can be used instead of <b>excluded_sq_queue_id</b>
     */
    excludedSqQueueName?: string;
    /**
     * Skills to filter in the json array format. The array should contain objects with the <b>sq_skill_id</b>/<b>sq_skill_name</b>, <b>min_sq_skill_level</b>, and <b>max_sq_skill_level</b> keys where skill levels range from 1 to 5
     */
    sqSkills?: any;
    /**
     * List of user IDs separated by semicolons (;)
     */
    userId?: 'any' | number | number[];
    /**
     * List of user names separated by semicolons (;). Can be used instead of <b>user_id</b>
     */
    userName?: string | string[];
    /**
     * Substring of the user name to filter
     */
    userNameTemplate?: string;
    /**
     * Filter statuses in the json array format. The array should contain objects with the <b>sq_status_type</b> and <b>sq_status_name</b> keys. Possible values for <b>sq_status_type</b> are 'CALL' and 'IM'. Possible values for <b>sq_status_name</b> are 'OFFLINE', 'ONLINE', 'READY', 'IN_SERVICE', 'AFTER_SERVICE', 'DND'
     */
    sqStatuses?: any;
    /**
     * Whether to display agent skills
     */
    withSqSkills?: boolean;
    /**
     * Whether to display agent queues
     */
    withSqQueues?: boolean;
    /**
     * Whether to display agent current statuses
     */
    withSqStatuses?: boolean;
    /**
     * Number of items to show in the output
     */
    count?: number;
    /**
     * Number of items to skip in the output
     */
    offset?: number;
  }
  interface SQ_GetAgentsResponse {
    /**
     * The found agent(s)
     */
    result: GetSQAgentsResult;
    error?: APIError;
  }
  interface SQ_SetAgentInfoRequest {
    /**
     * Application ID to search by
     */
    applicationId: number;
    /**
     * List of user IDs separated by semicolons (;). Use 'all' to select all the users
     */
    userId: 'any' | number | number[];
    /**
     * Whether the agent can handle calls. When set to false, the agent is excluded from the CALL-request distribution
     */
    handleCalls: boolean;
    /**
     * Application name to search by. Can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * List of user names separated by semicolons (;). Can be used instead of <b>user_id</b>
     */
    userName?: string | string[];
    /**
     * Maximum number of chats that the user processes simultaneously
     */
    maxSimultaneousConversations?: number;
  }
  interface SQ_SetAgentInfoResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SmartQueueInterface {
    /**
     * Gets the metrics for the specified SmartQueue for the last 30 minutes. Refer to the <a href="/docs/guides/contact-center/reporting">SmartQueue reporting guide</a> to learn more.
     */
    getSmartQueueRealtimeMetrics: (
      request: GetSmartQueueRealtimeMetricsRequest
    ) => Promise<GetSmartQueueRealtimeMetricsResponse>;
    /**
     * Gets the metrics for the specified SmartQueue for the last 2 days. Refer to the <a href="/docs/guides/contact-center/reporting">SmartQueue reporting guide</a> to learn more.
     */
    getSmartQueueDayHistory: (
      request: GetSmartQueueDayHistoryRequest
    ) => Promise<GetSmartQueueDayHistoryResponse>;
    /**
     * Gets history for the specified SmartQueue. Refer to the <a href="/docs/guides/contact-center/reporting">SmartQueue reporting guide</a> to learn more.
     */
    requestSmartQueueHistory: (
      request: RequestSmartQueueHistoryRequest
    ) => Promise<RequestSmartQueueHistoryResponse>;
    /**
     * Gets the current state of the specified SmartQueue.
     */
    getSQState: (request: GetSQStateRequest) => Promise<GetSQStateResponse>;
    /**
     * Adds a status if there is no match for the given internal status and renames it if there is a match. It means that if the passed **sq_status_name** parameter is not in the mapping table, a new entry is created in there; if it is, the **name** field in its mapping is replaced with **custom_status_name**.
     */
    sQ_SetAgentCustomStatusMapping: (
      request: SQ_SetAgentCustomStatusMappingRequest
    ) => Promise<SQ_SetAgentCustomStatusMappingResponse>;
    /**
     * Returns the mapping list of SQ statuses and custom statuses. SQ statuses are returned whether they have mappings to custom statuses.
     */
    sQ_GetAgentCustomStatusMapping: (
      request: SQ_GetAgentCustomStatusMappingRequest
    ) => Promise<SQ_GetAgentCustomStatusMappingResponse>;
    /**
     * Removes a mapping from the mapping table. If there is no such mapping, does nothing.
     */
    sQ_DeleteAgentCustomStatusMapping: (
      request: SQ_DeleteAgentCustomStatusMappingRequest
    ) => Promise<SQ_DeleteAgentCustomStatusMappingResponse>;
    /**
     * Adds a new queue.
     */
    sQ_AddQueue: (request: SQ_AddQueueRequest) => Promise<SQ_AddQueueResponse>;
    /**
     * Edits an existing queue.
     */
    sQ_SetQueueInfo: (request: SQ_SetQueueInfoRequest) => Promise<SQ_SetQueueInfoResponse>;
    /**
     * Deletes a queue.
     */
    sQ_DelQueue: (request: SQ_DelQueueRequest) => Promise<SQ_DelQueueResponse>;
    /**
     * Gets the queue(s).
     */
    sQ_GetQueues: (request: SQ_GetQueuesRequest) => Promise<SQ_GetQueuesResponse>;
    /**
     * Adds a new skill to the app.
     */
    sQ_AddSkill: (request: SQ_AddSkillRequest) => Promise<SQ_AddSkillResponse>;
    /**
     * Deletes a skill and detaches it from agents.
     */
    sQ_DelSkill: (request: SQ_DelSkillRequest) => Promise<SQ_DelSkillResponse>;
    /**
     * Edits an existing skill.
     */
    sQ_SetSkillInfo: (request: SQ_SetSkillInfoRequest) => Promise<SQ_SetSkillInfoResponse>;
    /**
     * Binds skills to agents.
     */
    sQ_BindSkill: (request: SQ_BindSkillRequest) => Promise<SQ_BindSkillResponse>;
    /**
     * Unbinds skills from agents.
     */
    sQ_UnbindSkill: (request: SQ_UnbindSkillRequest) => Promise<SQ_UnbindSkillResponse>;
    /**
     * Gets the skill(s).
     */
    sQ_GetSkills: (request: SQ_GetSkillsRequest) => Promise<SQ_GetSkillsResponse>;
    /**
     * Binds agents to a queue.
     */
    sQ_BindAgent: (request: SQ_BindAgentRequest) => Promise<SQ_BindAgentResponse>;
    /**
     * Unbinds agents from queues.
     */
    sQ_UnbindAgent: (request: SQ_UnbindAgentRequest) => Promise<SQ_UnbindAgentResponse>;
    /**
     * Gets agents.
     */
    sQ_GetAgents: (request: SQ_GetAgentsRequest) => Promise<SQ_GetAgentsResponse>;
    /**
     * Edits the agent settings.
     */
    sQ_SetAgentInfo: (request: SQ_SetAgentInfoRequest) => Promise<SQ_SetAgentInfoResponse>;
  }
  interface AddSkillRequest {
    /**
     * The ACD operator skill name. The length must be less than 512
     */
    skillName: string;
  }
  interface AddSkillResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    /**
     * The skill ID
     */
    skillId: number;
    error?: APIError;
  }
  interface DelSkillRequest {
    /**
     * The skill ID
     */
    skillId: number;
    /**
     * The skill name that can be used instead of <b>skill_id</b>
     */
    skillName: string;
  }
  interface DelSkillResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SetSkillInfoRequest {
    /**
     * The skill ID
     */
    skillId: number;
    /**
     * The skill name that can be used instead of <b>skill_id</b>
     */
    skillName: string;
    /**
     * The new skill name. The length must be less than 512
     */
    newSkillName: string;
  }
  interface SetSkillInfoResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface GetSkillsRequest {
    /**
     * The skill ID to filter
     */
    skillId?: number;
    /**
     * The skill name part to filter
     */
    skillName?: string;
    /**
     * The max returning record count
     */
    count?: number;
    /**
     * The first <b>N</b> records are skipped in the output
     */
    offset?: number;
  }
  interface GetSkillsResponse {
    result: SkillInfo[];
    /**
     * The total found skill count
     */
    totalCount: number;
    /**
     * The returned skill count
     */
    count: number;
    error?: APIError;
  }
  interface BindSkillRequest {
    /**
     * The skill ID list separated by semicolons (;). Use the 'all' value to select all skills
     */
    skillId: 'any' | number | number[];
    /**
     * The skill name list separated by semicolons (;). Can be used instead of <b>skill_id</b>
     */
    skillName: string | string[];
    /**
     * The user ID list separated by semicolons (;). Use the 'all' value to select all users
     */
    userId: 'any' | number | number[];
    /**
     * The user name list separated by semicolons (;). <b>user_name</b> can be used instead of <b>user_id</b>
     */
    userName: string | string[];
    /**
     * The ACD queue ID list separated by semicolons (;). Use the 'all' value to select all ACD queues
     */
    acdQueueId: 'any' | number | number[];
    /**
     * The ACD queue name that can be used instead of <b>acd_queue_id</b>. The ACD queue name list separated by semicolons (;)
     */
    acdQueueName: string | string[];
    /**
     * The application ID. It is required if the <b>user_name</b> is specified
     */
    applicationId?: number;
    /**
     * The application name that can be used instead of <b>application_id</b>
     */
    applicationName?: string;
    /**
     * Whether to bind or unbind (set true or false respectively)
     */
    bind?: boolean;
  }
  interface BindSkillResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SkillsInterface {
    /**
     * Adds a new operator's skill. Works only for ACDv1. For SmartQueue/ACDv2, use <a href="#how-auth-works">this reference</a>.
     */
    addSkill: (request: AddSkillRequest) => Promise<AddSkillResponse>;
    /**
     * Deletes an operator's skill. Works only for ACDv1. For SmartQueue/ACDv2, use <a href="#how-auth-works">this reference</a>.
     */
    delSkill: (request: DelSkillRequest) => Promise<DelSkillResponse>;
    /**
     * Edits an operator's skill. Works only for ACDv1. For SmartQueue/ACDv2, use <a href="#how-auth-works">this reference</a>.
     */
    setSkillInfo: (request: SetSkillInfoRequest) => Promise<SetSkillInfoResponse>;
    /**
     * Gets the skills of an operator. Works only for ACDv1. For SmartQueue/ACDv2, use <a href="#how-auth-works">this reference</a>.
     */
    getSkills: (request: GetSkillsRequest) => Promise<GetSkillsResponse>;
    /**
     * Binds the specified skills to the users (ACD operators) and/or the ACD queues. Works only for ACDv1. For SmartQueue/ACDv2, use <a href="#how-auth-works">this reference</a>.
     */
    bindSkill: (request: BindSkillRequest) => Promise<BindSkillResponse>;
  }
  interface AddAdminUserRequest {
    /**
     * The admin user name. The length must be less than 50
     */
    newAdminUserName: string;
    /**
     * The admin user display name. The length must be less than 256
     */
    adminUserDisplayName: string;
    /**
     * The admin user password. The length must be at least 6 symbols
     */
    newAdminUserPassword: string;
    /**
     * Whether the admin user is active
     */
    adminUserActive?: boolean;
    /**
     * The role(s) ID created via <a href='/docs/references/httpapi/adminroles'>Managing Admin Roles</a> methods. The attaching admin role ID list separated by semicolons (;). Use the 'all' value to select all admin roles
     */
    adminRoleId?: string;
    /**
     * The role(s) name(s) created via <a href='/docs/references/httpapi/adminroles'>Managing Admin Roles</a> methods. The attaching admin role name that can be used instead of <b>admin_role_id</b>
     */
    adminRoleName?: string | string[];
  }
  interface AddAdminUserResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    /**
     * The new admin user ID
     */
    adminUserId: number;
    /**
     * The admin user API key
     */
    adminUserApiKey: string;
    error?: APIError;
  }
  interface DelAdminUserRequest {
    /**
     * The admin user ID list separated by semicolons (;). Use the 'all' value to select all admin users
     */
    requiredAdminUserId: 'any' | number | number[];
    /**
     * The admin user name to delete, can be used instead of <b>required_admin_user_id</b>
     */
    requiredAdminUserName: string | string[];
  }
  interface DelAdminUserResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SetAdminUserInfoRequest {
    /**
     * The admin user to edit
     */
    requiredAdminUserId: number;
    /**
     * The admin user to edit, can be used instead of <b>required_admin_user_id</b>
     */
    requiredAdminUserName: string;
    /**
     * The new admin user name. The length must be less than 50
     */
    newAdminUserName?: string;
    /**
     * The new admin user display name. The length must be less than 256
     */
    adminUserDisplayName?: string;
    /**
     * The new admin user password. The length must be at least 6 symbols
     */
    newAdminUserPassword?: string;
    /**
     * Whether the admin user is active
     */
    adminUserActive?: boolean;
  }
  interface SetAdminUserInfoResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface GetAdminUsersRequest {
    /**
     * The admin user ID to filter
     */
    requiredAdminUserId?: number;
    /**
     * The admin user name part to filter
     */
    requiredAdminUserName?: string;
    /**
     * The admin user display name part to filter
     */
    adminUserDisplayName?: string;
    /**
     * Whether the admin user is active to filter
     */
    adminUserActive?: boolean;
    /**
     * Whether to get the attached admin roles
     */
    withRoles?: boolean;
    /**
     * Whether to get the admin user permissions
     */
    withAccessEntries?: boolean;
    /**
     * The max returning record count
     */
    count?: number;
    /**
     * The first <b>N</b> records are skipped in the output
     */
    offset?: number;
  }
  interface GetAdminUsersResponse {
    result: AdminUser[];
    /**
     * The total found admin user count
     */
    totalCount: number;
    /**
     * The returned admin user count
     */
    count: number;
    error?: APIError;
  }
  interface AttachAdminRoleRequest {
    /**
     * The admin user ID list separated by semicolons (;). Use the 'all' value to select all admin users
     */
    requiredAdminUserId: 'any' | number | number[];
    /**
     * The admin user name to bind, can be used instead of <b>required_admin_user_id</b>
     */
    requiredAdminUserName: string | string[];
    /**
     * The role(s) ID created via <a href='/docs/references/httpapi/adminroles'>Managing Admin Roles</a> methods. The attached admin role ID list separated by semicolons (;). Use the 'all' value to select alladmin roles
     */
    adminRoleId: 'any' | number | number[];
    /**
     * The role(s) name(s) created via <a href='/docs/references/httpapi/adminroles'>Managing Admin Roles</a> methods. The admin role name to attach, can be used instead of <b>admin_role_id</b>
     */
    adminRoleName: string | string[];
    /**
     * The merge mode. The following values are possible: add, del, set
     */
    mode?: string;
  }
  interface AttachAdminRoleResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface AdminUsersInterface {
    /**
     * Adds a new admin user into the specified parent or child account.
     */
    addAdminUser: (request: AddAdminUserRequest) => Promise<AddAdminUserResponse>;
    /**
     * Deletes the specified admin user.
     */
    delAdminUser: (request: DelAdminUserRequest) => Promise<DelAdminUserResponse>;
    /**
     * Edits the specified admin user.
     */
    setAdminUserInfo: (request: SetAdminUserInfoRequest) => Promise<SetAdminUserInfoResponse>;
    /**
     * Gets the admin users of the specified account. Note that both account types - parent and child - can have its own admins.
     */
    getAdminUsers: (request: GetAdminUsersRequest) => Promise<GetAdminUsersResponse>;
    /**
     * Attaches the admin role(s) to the already existing admin(s).
     */
    attachAdminRole: (request: AttachAdminRoleRequest) => Promise<AttachAdminRoleResponse>;
  }
  interface AddAdminRoleRequest {
    /**
     * The admin role name. The length must be less than 50
     */
    adminRoleName: string;
    /**
     * Whether the admin role is enabled. If false the allowed and denied entries have no affect
     */
    adminRoleActive?: boolean;
    /**
     * The admin role ID list separated by semicolons (;). Use the 'all' value to select all admin roles. The list specifies the roles from which the new role automatically copies all permissions (allowed_entries and denied_entries)
     */
    likeAdminRoleId?: 'any' | number | number[];
    /**
     * The admin role name that can be used instead of <b>like_admin_role_id</b>. The name specifies a role from which the new role automatically copies all permissions (allowed_entries and denied_entries)
     */
    likeAdminRoleName?: string | string[];
    /**
     * The list of allowed access entries separated by semicolons (;) (the API function names)
     */
    allowedEntries?: string | string[];
    /**
     * The list of denied access entries separated by semicolons (;) (the API function names)
     */
    deniedEntries?: string | string[];
  }
  interface AddAdminRoleResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    /**
     * The new admin role ID
     */
    adminRoleId: number;
    error?: APIError;
  }
  interface DelAdminRoleRequest {
    /**
     * The admin role ID list separated by semicolons (;). Use the 'all' value to select all admin roles
     */
    adminRoleId: 'any' | number | number[];
    /**
     * The admin role name to delete, can be used instead of <b>admin_role_id</b>
     */
    adminRoleName: string | string[];
  }
  interface DelAdminRoleResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface SetAdminRoleInfoRequest {
    /**
     * The admin role to edit
     */
    adminRoleId: number;
    /**
     * The admin role to edit, can be used instead of <b>admin_role_id</b>
     */
    adminRoleName: string;
    /**
     * The new admin role name. The length must be less than 50
     */
    newAdminRoleName?: string;
    /**
     * Whether the admin role is enabled. If false the allowed and denied entries have no affect
     */
    adminRoleActive?: boolean;
    /**
     * The modification mode of the permission lists (allowed_entries and denied_entries). The following values are possible: add, del, set
     */
    entryModificationMode?: string;
    /**
     * The list of allowed access entry changes separated by semicolons (;) (the API function names)
     */
    allowedEntries?: string | string[];
    /**
     * The list of denied access entry changes separated by semicolons (;) (the API function names)
     */
    deniedEntries?: string | string[];
    /**
     * The admin role ID list separated by semicolons (;). Use the 'all' value to select all admin roles. The list specifies the roles from which the allowed_entries and denied_entries are merged
     */
    likeAdminRoleId?: 'any' | number | number[];
    /**
     * The admin role name, can be used instead of <b>like_admin_role_id</b>. The name specifies a role from which the allowed_entries and denied_entries are merged
     */
    likeAdminRoleName?: string | string[];
  }
  interface SetAdminRoleInfoResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface GetAdminRolesRequest {
    /**
     * The admin role ID to filter
     */
    adminRoleId?: number;
    /**
     * The admin role name part to filter
     */
    adminRoleName?: string;
    /**
     * Whether the admin role is enabled to filter
     */
    adminRoleActive?: boolean;
    /**
     * Whether to get the permissions
     */
    withEntries?: boolean;
    /**
     * Whether to include the account roles
     */
    withAccountRoles?: boolean;
    /**
     * Whether to include the parent roles
     */
    withParentRoles?: boolean;
    withSystemRoles?: boolean;
    /**
     * The attached admin user ID list separated by semicolons (;). Use the 'all' value to select all admin users
     */
    includedAdminUserId?: 'any' | number | number[];
    /**
     * Not attached admin user ID list separated by semicolons (;). Use the 'all' value to select all admin users
     */
    excludedAdminUserId?: 'any' | number | number[];
    /**
     * Set false to get roles with partial admin user list matching
     */
    fullAdminUsersMatching?: string;
    /**
     * The admin user to show in the 'admin_users' field output
     */
    showingAdminUserId?: number;
    /**
     * The max returning record count
     */
    count?: number;
    /**
     * The first <b>N</b> records are skipped in the output
     */
    offset?: number;
  }
  interface GetAdminRolesResponse {
    result: AdminRole[];
    /**
     * The total found admin role count
     */
    totalCount: number;
    /**
     * The returned admin role count
     */
    count: number;
    error?: APIError;
  }
  interface GetAvailableAdminRoleEntriesRequest {}
  interface GetAvailableAdminRoleEntriesResponse {
    /**
     * Array of the admin role entries
     */
    result: string[];
    error?: APIError;
  }
  interface AdminRolesInterface {
    /**
     * Adds a new admin role.
     */
    addAdminRole: (request: AddAdminRoleRequest) => Promise<AddAdminRoleResponse>;
    /**
     * Deletes the specified admin role.
     */
    delAdminRole: (request: DelAdminRoleRequest) => Promise<DelAdminRoleResponse>;
    /**
     * Edits the specified admin role.
     */
    setAdminRoleInfo: (request: SetAdminRoleInfoRequest) => Promise<SetAdminRoleInfoResponse>;
    /**
     * Gets the admin roles.
     */
    getAdminRoles: (request: GetAdminRolesRequest) => Promise<GetAdminRolesResponse>;
    /**
     * Gets the all available admin role entries.
     */
    getAvailableAdminRoleEntries: (
      request: GetAvailableAdminRoleEntriesRequest
    ) => Promise<GetAvailableAdminRoleEntriesResponse>;
  }
  interface AddAuthorizedAccountIPRequest {
    /**
     * The authorized IP4 or network
     */
    authorizedIp: string;
    /**
     * Whether to remove the IP from the blacklist
     */
    allowed?: boolean;
    /**
     * The IP address description
     */
    description?: string;
  }
  interface AddAuthorizedAccountIPResponse {
    /**
     * Returns 1 if the request has been completed successfully
     */
    result: number;
    error?: APIError;
  }
  interface DelAuthorizedAccountIPRequest {
    /**
     * The authorized IP4 or network to remove. Set to 'all' to remove all items
     */
    authorizedIp: string;
    /**
     * Specify the parameter to remove the networks that contains the particular IP4. Can be used instead of <b>authorized_ip</b>
     */
    containsIp: string;
    /**
     * Whether to remove the network from the white list. Set false to remove the network from the black list. Omit the parameter to remove the network from all lists
     */
    allowed?: boolean;
  }
  interface DelAuthorizedAccountIPResponse {
    /**
     * The removed network count
     */
    result: number;
    error?: APIError;
  }
  interface GetAuthorizedAccountIPsRequest {
    /**
     * The authorized IP4 or network to filter
     */
    authorizedIp?: string;
    /**
     * Whether the IP is allowed
     */
    allowed?: boolean;
    /**
     * Specify the parameter to filter the networks that contains the particular IP4
     */
    containsIp?: string;
    /**
     * The max returning record count
     */
    count?: number;
    /**
     * The first <b>N</b> records are skipped in the output
     */
    offset?: number;
    /**
     * The IP address description
     */
    description?: string;
  }
  interface GetAuthorizedAccountIPsResponse {
    result: AuthorizedAccountIP[];
    /**
     * The total found network count
     */
    totalCount: number;
    /**
     * The returned network count
     */
    count: number;
    error?: APIError;
  }
  interface CheckAuthorizedAccountIPRequest {
    /**
     * The IP4 to test
     */
    authorizedIp: string;
  }
  interface CheckAuthorizedAccountIPResponse {
    /**
     * Whether the IP is allowed
     */
    result: boolean;
    /**
     * The matched authorized IP or network (if found)
     */
    authorizedIp?: string;
    error?: APIError;
  }
  interface AuthorizedIPsInterface {
    /**
     * Adds a new authorized IP4 or network to the white/black list.
     */
    addAuthorizedAccountIP: (
      request: AddAuthorizedAccountIPRequest
    ) => Promise<AddAuthorizedAccountIPResponse>;
    /**
     * Removes the authorized IP4 or network from the white/black list.
     */
    delAuthorizedAccountIP: (
      request: DelAuthorizedAccountIPRequest
    ) => Promise<DelAuthorizedAccountIPResponse>;
    /**
     * Gets the authorized IP4 or network.
     */
    getAuthorizedAccountIPs: (
      request: GetAuthorizedAccountIPsRequest
    ) => Promise<GetAuthorizedAccountIPsResponse>;
    /**
     * Tests whether the IP4 is banned or allowed.
     */
    checkAuthorizedAccountIP: (
      request: CheckAuthorizedAccountIPRequest
    ) => Promise<CheckAuthorizedAccountIPResponse>;
  }
  interface SetDialogflowKeyRequest {
    /**
     * The Dialogflow key's ID
     */
    dialogflowKeyId: number;
    /**
     * The Dialogflow key's description. To clear previously set description leave the parameter blank or put whitespaces only
     */
    description: string;
  }
  interface SetDialogflowKeyResponse {
    result: number;
    error?: APIError;
  }
  interface DialogflowCredentialsInterface {
    /**
     * Edits a Dialogflow key.
     */
    setDialogflowKey: (request: SetDialogflowKeyRequest) => Promise<SetDialogflowKeyResponse>;
  }
  interface SendSmsMessageRequest {
    /**
     * The source phone number
     */
    source: string;
    /**
     * The destination phone number
     */
    destination: string;
    /**
     * The message text, up to 765 characters. We split long messages greater than 160 GSM-7 characters or 70 UTF-16 characters into multiple segments. Each segment is charged as one message
     */
    smsBody: string;
    /**
     * Whether to store outgoing message texts. Default value is false
     */
    storeBody?: boolean;
  }
  interface SendSmsMessageResponse {
    result: number;
    /**
     * Message ID
     */
    messageId: number;
    /**
     * The number of fragments the message is divided into
     */
    fragmentsCount: number;
    error?: APIError;
  }
  interface A2PSendSmsRequest {
    /**
     * The SenderID for outgoing SMS. Please contact support for installing a SenderID
     */
    srcNumber: string;
    /**
     * The destination phone numbers separated by semicolons (;). The maximum number of these phone numbers is 100
     */
    dstNumbers: string | string[];
    /**
     * The message text, up to 1600 characters. We split long messages greater than 160 GSM-7 characters or 70 UTF-16 characters into multiple segments. Each segment is charged as one message
     */
    text: string;
    /**
     * Whether to store outgoing message texts. Default value is false
     */
    storeBody?: boolean;
  }
  interface A2PSendSmsResponse {
    result: SmsTransaction[];
    failed: FailedSms[];
    /**
     * The number of fragments the message is divided into
     */
    fragmentsCount: number;
    error?: APIError;
  }
  interface ControlSmsRequest {
    /**
     * The phone number
     */
    phoneNumber: string;
    /**
     * The SMS control command. The following values are possible: enable, disable
     */
    command: string;
  }
  interface ControlSmsResponse {
    result: number;
    error?: APIError;
  }
  interface GetSmsHistoryRequest {
    /**
     * The source phone number
     */
    sourceNumber?: string;
    /**
     * The destination phone number
     */
    destinationNumber?: string;
    /**
     * Sent or received SMS. Possible values: 'IN', 'OUT', 'in, 'out'. Leave blank to get both incoming and outgoing messages
     */
    direction?: string;
    timezone?: string;
    /**
     * Maximum number of resulting rows fetched. Must be not bigger than 1000. If left blank, then the default value of 1000 is used
     */
    count?: number;
    /**
     * The first <b>N</b> records are skipped in the output
     */
    offset?: number;
    /**
     * Date from which to perform search. Format is 'yyyy-MM-dd HH:mm:ss', time zone is UTC
     */
    fromDate?: Date;
    /**
     * Date until which to perform search. Format is 'yyyy-MM-dd HH:mm:ss', time zone is UTC
     */
    toDate?: Date;
    /**
     * The output format. The following values available: **json**, **csv**, **xls**. The default value is **json**
     */
    output?: string;
  }
  interface GetSmsHistoryResponse {
    result: SmsHistory[];
    /**
     * Total number of messages matching the query parameters
     */
    totalCount: number;
    error?: APIError;
  }
  interface A2PGetSmsHistoryRequest {
    /**
     * The source phone number
     */
    sourceNumber?: string;
    /**
     * The destination phone number
     */
    destinationNumber?: string;
    /**
     * Maximum number of resulting rows fetched. Must be not bigger than 1000. If left blank, then the default value of 1000 is used
     */
    count?: number;
    /**
     * The first <b>N</b> records are skipped in the output
     */
    offset?: number;
    /**
     * Date from which the search is to start. Format is 'yyyy-MM-dd HH:mm:ss', time zone is UTC
     */
    fromDate?: Date;
    /**
     * Date from which the search is to end. Format is 'yyyy-MM-dd HH:mm:ss', time zone is UTC
     */
    toDate?: Date;
    /**
     * The output format. The following values available: **json**, **csv**, **xls**. The default value is **json**
     */
    output?: string;
    /**
     * The delivery status ID: QUEUED - 1, DISPATCHED - 2, ABORTED - 3, REJECTED - 4, DELIVERED - 5, FAILED - 6, EXPIRED - 7, UNKNOWN - 8
     */
    deliveryStatus?: number;
  }
  interface A2PGetSmsHistoryResponse {
    result: A2PSmsHistory[];
    /**
     * Total number of messages matching the query parameters
     */
    totalCount: number;
    error?: APIError;
  }
  interface SMSInterface {
    /**
     * Sends an SMS message between two phone numbers. The source phone number should be purchased from Voximplant and support SMS (which is indicated by the <b>is_sms_supported</b> property in the objects returned by the [GetPhoneNumbers] Management API) and SMS should be enabled for it via the [ControlSms] Management API. SMS messages can be received via HTTP callbacks, see <a href='/docs/guides/managementapi/callbacks'>this article</a> for details.
     */
    sendSmsMessage: (request: SendSmsMessageRequest) => Promise<SendSmsMessageResponse>;
    /**
     * Sends an A2P SMS message from the application to customers. A SenderID is required for A2P messages. Please contact support for installing a SenderID.
     */
    a2PSendSms: (request: A2PSendSmsRequest) => Promise<A2PSendSmsResponse>;
    /**
     * Enables or disables sending and receiving SMS for the phone number. Can be used only for phone numbers with SMS support, which is indicated by the <b>is_sms_supported</b> property in the objects returned by the [GetPhoneNumbers] Management API. Each incoming SMS message is charged according to the <a href='//voximplant.com/pricing'>pricing</a>. If enabled, SMS can be sent from this phone number via the [SendSmsMessage] Management API and received via the [InboundSmsCallback] property of the HTTP callback. See <a href='/docs/guides/managementapi/callbacks'>this article</a> for HTTP callback details.
     */
    controlSms: (request: ControlSmsRequest) => Promise<ControlSmsResponse>;
    /**
     * Gets the history of sent and/or received SMS.
     */
    getSmsHistory: (request: GetSmsHistoryRequest) => Promise<GetSmsHistoryResponse>;
    /**
     * Gets the history of sent/or received A2P SMS.
     */
    a2PGetSmsHistory: (request: A2PGetSmsHistoryRequest) => Promise<A2PGetSmsHistoryResponse>;
  }
  interface GetRecordStoragesRequest {
    /**
     * The record storage ID list separated by semicolons (;)
     */
    recordStorageId?: 'any' | number | number[];
    /**
     * The record storage name list separated by semicolons (;)
     */
    recordStorageName?: string | string[];
    withPrivate?: boolean;
  }
  interface GetRecordStoragesResponse {
    result: RecordStorageInfo;
    error?: APIError;
  }
  interface RecordStoragesInterface {
    /**
     * Gets the record storages.
     */
    getRecordStorages: (request: GetRecordStoragesRequest) => Promise<GetRecordStoragesResponse>;
  }
  interface GetRoleGroupsRequest {}
  interface GetRoleGroupsResponse {
    result: RoleGroupView[];
    error?: APIError;
  }
  interface RoleSystemInterface {
    /**
     * Gets role groups.
     */
    getRoleGroups: (request: GetRoleGroupsRequest) => Promise<GetRoleGroupsResponse>;
  }
  interface SetKeyValueItemRequest {
    /**
     * Key, up to 200 characters. A key can contain a namespace that is written before the ':' symbol, for example, test:1234. Thus, namespace 'test' can be used as a pattern in the [GetKeyValueItems](/docs/references/httpapi/keyvaluestorage#getkeyvalueitems) and [GetKeyValueKeys](/docs/references/httpapi/keyvaluestorage#getkeyvaluekeys) methods to find the keys with the same namespace.<br><br>The key should match the following regular expression: `^[a-zA-Z0-9а-яА-ЯёЁ_\-:;.#+]*$`
     */
    key: string;
    /**
     * Value for the specified key, up to 2000 characters
     */
    value: string;
    /**
     * Application ID
     */
    applicationId: number;
    /**
     * Application name
     */
    applicationName?: string;
    /**
     * Key expiry time in seconds. The value is in range of 0..7,776,000 (90 days), the default value is 30 days (2,592,000 seconds). The TTL is converted to an **expires_at** Unix timestamp field as part of the storage object. Note that one of the two parameters (ttl or expires_at) must be set
     */
    ttl?: number;
    /**
     * Expiration date based on **ttl** (timestamp without milliseconds). Note that one of the two parameters (ttl or expires_at) must be set
     */
    expiresAt?: number;
  }
  interface SetKeyValueItemResponse {
    /**
     * The key-value item
     */
    result: KeyValueItems;
    error?: APIError;
  }
  interface DelKeyValueItemRequest {
    /**
     * Key, up to 200 characters
     */
    key: string;
    /**
     * The application ID
     */
    applicationId: number;
    /**
     * The application name
     */
    applicationName?: string;
  }
  interface DelKeyValueItemResponse {
    result: number;
    error?: APIError;
  }
  interface GetKeyValueItemRequest {
    /**
     * Key, up to 200 characters
     */
    key: string;
    /**
     * The application ID
     */
    applicationId: number;
    /**
     * The application name
     */
    applicationName?: string;
  }
  interface GetKeyValueItemResponse {
    /**
     * The key-value item
     */
    result: KeyValueItems;
    error?: APIError;
  }
  interface GetKeyValueItemsRequest {
    /**
     * Namespace that keys should contain, up to 200 characters
     */
    key: string;
    /**
     * The application ID
     */
    applicationId: number;
    /**
     * Number of items to show per page with a maximum value of 50. Default value is 10
     */
    count?: number;
    /**
     * Number of items to skip (e.g. if you set count = 20 and offset = 0 the first time, the next time, offset has to be equal to 20 to skip the items shown earlier). Default value is 0
     */
    offset?: number;
    /**
     * The application name
     */
    applicationName?: string;
  }
  interface GetKeyValueItemsResponse {
    /**
     * The key-value pairs
     */
    result: KeyValueItems;
    error?: APIError;
  }
  interface GetKeyValueKeysRequest {
    /**
     * The application ID
     */
    applicationId: number;
    /**
     * Namespace that keys should contain, up to 200 characters
     */
    key?: string;
    /**
     * Number of items to show per page with a maximum value of 50. Default value is 10
     */
    count?: number;
    /**
     * Number of items to skip (e.g. if you set count = 20 and offset = 0 the first time, the next time, offset has to be equal to 20 to skip the items shown earlier). Default value is 0
     */
    offset?: number;
    /**
     * The application name
     */
    applicationName?: string;
  }
  interface GetKeyValueKeysResponse {
    /**
     * The key-value keys
     */
    result: KeyValueKeys;
    error?: APIError;
  }
  interface KeyValueStorageInterface {
    /**
     * Creates or updates a key-value pair. If an existing key is passed, the method returns the existing item and changes the value if needed. The keys should be unique within a Voximplant application.
     */
    setKeyValueItem: (request: SetKeyValueItemRequest) => Promise<SetKeyValueItemResponse>;
    /**
     * Deletes the specified key-value pair from the storage.
     */
    delKeyValueItem: (request: DelKeyValueItemRequest) => Promise<DelKeyValueItemResponse>;
    /**
     * Gets the specified key-value pair from the storage.
     */
    getKeyValueItem: (request: GetKeyValueItemRequest) => Promise<GetKeyValueItemResponse>;
    /**
     * Gets all the key-value pairs in which the keys begin with a pattern.
     */
    getKeyValueItems: (request: GetKeyValueItemsRequest) => Promise<GetKeyValueItemsResponse>;
    /**
     * Gets all the keys of key-value pairs.
     */
    getKeyValueKeys: (request: GetKeyValueKeysRequest) => Promise<GetKeyValueKeysResponse>;
  }
  interface GetAccountInvoicesRequest {
    status?: string;
    /**
     * Number of invoices to show per page. Default value is 20
     */
    count?: number;
    /**
     * Number of invoices to skip (e.g. if you set count = 20 and offset = 0 the first time, the next time, offset has to be equal to 20 to skip the items shown earlier). Default value is 0
     */
    offset?: number;
  }
  interface GetAccountInvoicesResponse {
    /**
     * Array of the account invoices
     */
    result: AccountInvoice;
    /**
     * Total number of invoices matching the query parameters
     */
    totalCount: number;
    /**
     * Number of returned invoices matching the query parameters
     */
    count: number;
    error?: APIError;
  }
  interface DownloadInvoiceRequest {
    /**
     * Invoice ID
     */
    invoiceId: number;
  }
  interface DownloadInvoiceResponse {
    /**
     * The method returns a raw data, there is no 'file_content' parameter in fact
     */
    fileContent: Buffer;
    error?: APIError;
  }
  interface InvoicesInterface {
    /**
     * Gets all invoices for the specified USD or EUR account.
     */
    getAccountInvoices: (request: GetAccountInvoicesRequest) => Promise<GetAccountInvoicesResponse>;
    /**
     * Downloads the specified invoice.
     */
    downloadInvoice: (request: DownloadInvoiceRequest) => Promise<DownloadInvoiceResponse>;
  }
  interface AddSecretRequest {
    /**
     * Application ID to add the secret to
     */
    applicationId: number;
    /**
     * Application name. Can be used instead of <b>application_id</b>
     */
    applicationName: string;
    /**
     * Secret name. The name must start with a Latin letter and can contain up to 64 characters, including Latin letters, digits and underscores
     */
    secretName: string;
    /**
     * Secret value. Maximum length is 8192 characters
     */
    secretValue: string;
    /**
     * Optional. Secret description. When processing, the length is truncated to the first 200 characters
     */
    description?: string;
  }
  interface AddSecretResponse {
    /**
     * Result with the added secret ID
     */
    result: AddSecretResult[];
    error?: APIError;
  }
  interface DelSecretRequest {
    /**
     * Application ID
     */
    applicationId: number;
    /**
     * Application name. Can be used instead of <b>application_id</b>
     */
    applicationName: string;
    /**
     * IDs to delete. A list separated by semicolons (;). Use the 'all' value to delete all secrets
     */
    secretId: 'any' | number | number[];
    /**
     * Secret names to delete. List separated by semicolons (;)
     */
    secretName: string | string[];
  }
  interface DelSecretResponse {
    /**
     * Returns 1 if the secret has been deleted successfully
     */
    result: number;
    error?: APIError;
  }
  interface GetSecretValueRequest {
    /**
     * Application ID
     */
    applicationId: number;
    /**
     * Application name. Can be used instead of <b>application_id</b>
     */
    applicationName: string;
    /**
     * Secret ID
     */
    secretId: number;
    /**
     * Secret name. Can be used instead of <b>secret_id</b>
     */
    secretName: string;
  }
  interface GetSecretValueResponse {
    /**
     * The full secret info (with value)
     */
    result: GetSecretValueResult[];
    error?: APIError;
  }
  interface GetSecretsRequest {
    /**
     * Application ID
     */
    applicationId: number;
    /**
     * Application name. Can be used instead of <b>application_id</b>
     */
    applicationName: string;
    /**
     * Filter by the secret name part
     */
    secretNamePart?: string;
    /**
     * Maximum returning record number
     */
    count?: number;
    /**
     * First <b>N</b> records to be skipped in the output
     */
    offset?: number;
  }
  interface GetSecretsResponse {
    /**
     * Secrets list
     */
    result: SecretListItem[];
    /**
     * Returned secrets number
     */
    count: number;
    /**
     * Total found secrets number
     */
    totalCount: number;
    error?: APIError;
  }
  interface SetSecretInfoRequest {
    /**
     * Application ID
     */
    applicationId: number;
    /**
     * Application name. Can be used instead of <b>application_id</b>
     */
    applicationName: string;
    /**
     * Secret ID to edit
     */
    secretId: number;
    /**
     * Secret name. Can be used instead of <b>secret_id</b>
     */
    secretName: string;
    /**
     * New secret name. The name must start with a Latin letter and can contain up to 64 characters, including Latin letters, digits and underscores
     */
    newSecretName?: string;
    /**
     * Secret value. Maximum length is 8192 characters
     */
    secretValue?: string;
    /**
     * Secret description. When processing, the length is truncated to the first 200 characters
     */
    description?: string;
  }
  interface SetSecretInfoResponse {
    /**
     * Returns 1 if the secret has been updated successfully
     */
    result: number;
    error?: APIError;
  }
  interface SecretsInterface {
    /**
     * Adds a new secret.
     */
    addSecret: (request: AddSecretRequest) => Promise<AddSecretResponse>;
    /**
     * Deletes an existing secret.
     */
    delSecret: (request: DelSecretRequest) => Promise<DelSecretResponse>;
    /**
     * Gets the value of a specific secret.
     */
    getSecretValue: (request: GetSecretValueRequest) => Promise<GetSecretValueResponse>;
    /**
     * Gets the list of an application's secrets.
     */
    getSecrets: (request: GetSecretsRequest) => Promise<GetSecretsResponse>;
    /**
     * Edits a secret's parameters.
     */
    setSecretInfo: (request: SetSecretInfoRequest) => Promise<SetSecretInfoResponse>;
  }
  class Client {
    
    Accounts: AccountsInterface;
    Applications: ApplicationsInterface;
    Users: UsersInterface;
    CallLists: CallListsInterface;
    Scenarios: ScenariosInterface;
    History: HistoryInterface;
    PhoneNumbers: PhoneNumbersInterface;
    PSTNBlacklist: PSTNBlacklistInterface;
    SIPWhiteList: SIPWhiteListInterface;
    SIPRegistration: SIPRegistrationInterface;
    WABPhoneNumbers: WABPhoneNumbersInterface;
    CallerIDs: CallerIDsInterface;
    OutboundTestNumbers: OutboundTestNumbersInterface;
    Queues: QueuesInterface;
    SmartQueue: SmartQueueInterface;
    Skills: SkillsInterface;
    AdminUsers: AdminUsersInterface;
    AdminRoles: AdminRolesInterface;
    AuthorizedIPs: AuthorizedIPsInterface;
    DialogflowCredentials: DialogflowCredentialsInterface;
    SMS: SMSInterface;
    RecordStorages: RecordStoragesInterface;
    RoleSystem: RoleSystemInterface;
    KeyValueStorage: KeyValueStorageInterface;
    Invoices: InvoicesInterface;
    Secrets: SecretsInterface;
  }
  
}

/* === DIFF MESSAGE - REMOVE BEFORE THE PRODUCTION === */

declare namespace VoximplantAvatar {
  /**
   * [Avatar](/docs/references/voxengine/voximplantavatar/avatar) configuration object. Can be passed as arguments to the [VoximplantAvatar.createAvatar] method.
   */
  interface AvatarConfig {
    /**
     * Unique avatar id.
     */
    avatarId: string;
    /**
     * Optional. Set of key-value pairs to be passed to an avatar for personalization (e.g., a customer's name). Can be obtained in the avatar script via [getCustomData](/docs/references/avatarengine/getcustomdata#getcustomdata) function.
     */
    customData?: Object;
    /**
     * Optional. Whether an avatar should return detailed information on recognizing the user input (i.e. whether the **intents** are passed to [VoximplantAvatar.Events.UtteranceParsed](/docs/references/voxengine/voximplantavatar/events#utteranceparsed) in the avatar script).<br>NOTE: starting from the text implementation the avatar always returns detailed information.
     */
    extended?: boolean;
  }
}

declare namespace VoximplantAvatar {
  /**
   * Voximplant Avatar class (machine learning powered bot engine which allows your system to handle natural conversations with customers).
   */
  class Avatar {
    constructor(config: VoximplantAvatar.AvatarConfig);

    /**
     * Adds a handler for the specified [VoximplantAvatar.Events] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event Event class (i.e., [VoximplantAvatar.Events.Loaded](/docs/references/voxengine/voximplantavatar/events#loaded))
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof VoximplantAvatar._Events>(
      event: VoximplantAvatar.Events | T,
      callback: (event: VoximplantAvatar._Events[T]) => any
    ): void;

    /**
     * Removes a handler for the specified [VoximplantAvatar.Events] event.
     * @param event Event class (i.e., [VoximplantAvatar.Events.Loaded](/docs/references/voxengine/voximplantavatar/events#loaded))
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof VoximplantAvatar._Events>(
      event: VoximplantAvatar.Events | T,
      callback?: (event: VoximplantAvatar._Events[T]) => any
    ): void;

    /**
     * Changes the avatar state to the specified one. This method is designed to react to the [VoximplantAvatar.Events.Reply](/docs/references/voxengine/voximplantavatar/events#reply) event: often, after the avatar replies to a user, the dialogue is moved to the next state.
     * @param stateName Name of the next state
     */
    goToState(stateName: string): Promise<void>;

    /**
     * Sends a user phase to the avatar. In response, the avatar triggers the [VoximplantAvatar.Events.Reply](/docs/references/voxengine/voximplantavatar/events#reply) event.
     * @param text Utterance text
     */
    handleUtterance(text: string): Promise<void>;

    /**
     * Triggers the [AvatarState.onTimeout](/docs/references/avatarengine/avatarstate#ontimeout) callback function in the avatar scenario.
     */
    handleTimeout(): Promise<void>;

    /**
     * Transfers control to the avatar, so it starts a conversation. Should be called only after the [VoximplantAvatar.Events.Loaded](/docs/references/voxengine/voximplantavatar/events#loaded) event is triggered.
     */
    start(): void;
  }
}

declare namespace VoximplantAvatar {
  /**
   * Creates a new [Avatar] instance to implement a custom bundle with ASR and TTS.
   * @param config Avatar configuration
   */
  function createAvatar(config: VoximplantAvatar.AvatarConfig): VoximplantAvatar.Avatar;
}

declare namespace VoximplantAvatar {
  /**
   * Creates a new [VoiceAvatar] instance with a pre-added bundle of ASR and TTS to handle calls.
   * @param config VoiceAvatar configuration
   */
  function createVoiceAvatar(
    config: VoximplantAvatar.VoiceAvatarConfig
  ): VoximplantAvatar.VoiceAvatar;
}

declare namespace VoximplantAvatar {
  /**
   * Avatar events.
   * <br>
   * Add the following line to your scenario code to use the events:
   * ```
   * require(Modules.Avatar);
   * ```
   * @event
   */
  enum Events {
    /**
     * Triggered when an avatar script is loaded and ready to use.
     * @typedef _AvatarLoadedEvent
     */
    Loaded = 'AvatarEvents.Loaded',
    /**
     * Triggered when an avatar ends a conversation with a customer.
     * @typedef _AvatarFinishEvent
     */
    Finish = 'AvatarEvents.Finish',
    /**
     * Triggered when an avatar parses a customer's phrase. The recognized phrase can be used for debugging and logging recognition results if needed.
     * @typedef _AvatarUtteranceParsedEvent
     */
    UtteranceParsed = 'AvatarEvents.UtteranceParsed',
    /**
     * Triggered when an avatar is ready to reply to a customer.
     * @typedef _AvatarReplyEvent
     */
    Reply = 'AvatarEvents.Reply',
    /**
     * Triggered when an error occurs.
     * @typedef _AvatarErrorEvent
     */
    Error = 'AvatarEvents.Error',
  }

  /**
   * @private
   */
  interface _Events {
    [Events.Loaded]: _AvatarLoadedEvent;
    [Events.Finish]: _AvatarFinishEvent;
    [Events.UtteranceParsed]: _AvatarUtteranceParsedEvent;
    [Events.Reply]: _AvatarReplyEvent;
    [Events.Error]: _AvatarErrorEvent;
  }

  /**
   * @private
   */
  interface _AvatarEvent {
    avatar: Avatar;
  }

  /**
   * @private
   */
  interface _AvatarLoadedEvent extends _AvatarEvent {
  }

  /**
   * @private
   */
  interface _AvatarFinishEvent extends _AvatarEvent {
    /**
     * Optional. Utterance to reply to the customer with.
     */
    utterance?: string;
    /**
     * Optional. Additional data returned from the avatar. Can be passed via the [AvatarResponseParameters.customData](/docs/references/avatarengine/avatarresponseparameters#customdata) parameter.
     */
    customData?: Object;
    /**
     * Current avatar state.
     */
    currentState: string;
    /**
     * Optional. Avatar text and voice [ChannelParameters](/docs/references/avatarengine/channelparameters).
     */
    channelParameters?: ChannelParameters;
  }

  /**
   * @private
   */
  interface _AvatarUtteranceParsedEvent extends _AvatarEvent {
    /**
     * Recognized phrase text.
     */
    text: string;
    /**
     * Most suitable intent recognized for the phrase (or 'unknown' if unclear).
     */
    intent: string;
    /**
     * Optional. Recognized phrase confidence.
     */
    confidence?: number;
    /**
     * Current avatar state.
     */
    currentState: string;
    /**
     * Number of the state visits.
     */
    readonly visitsCounter: number;
    /**
     * Number of user phrases processed in this state.
     */
    readonly utteranceCounter: number;
    /**
     * Default response to the intent from the UI.
     */
    response: string;
    /**
     * Optional. Extended information of the intent recognition results [AvatarUtteranceIntent](/docs/references/avatarengine/avatarutteranceintent).
     */
    intents?: Object[];
    /**
     * Optional.Extracted entities (both system and custom) [AvatarEntities](/docs/references/avatarengine/avatarentities).
     */
    entities?: Object;
  }

  /**
   * @private
   */
  interface _AvatarReplyEvent extends _AvatarEvent {
    /**
     * Optional. Utterance to reply to the customer with.
     */
    utterance?: string;
    /**
     * Optional. Next avatar state.
     */
    nextState?: string;
    /**
     * Current avatar state.
     */
    currentState: string;
    /**
     * Optional. Whether an avatar listens to the user after saying its utterance (or during it, if interruptions are enabled).
     */
    listen?: true;
    /**
     * Optional. Additional data returned from an avatar. Can be passed via the [AvatarResponseParameters.customData](/docs/references/avatarengine/avatarresponseparameters#customdata) parameter.
     */
    customData?: Object;
    /**
     * Optional. Time after which an avatar is ready to handle customer's interruptions (in case the avatar voices its response).
     */
    interruptableAfter?: number;
    /**
     * Optional. Whether an avatar's reply is final. If true, all other parameters except **customData** are ignored and the avatar does not process any more inputs in the current conversation.
     */
    isFinal?: boolean;
    /**
     * Optional. Number value that specifies how long an avatar listens to the user after saying its utterance (or during it, if interruptions are enabled).
     */
    listenTimeout?: number;
    /**
     * Optional. Avatar text and voice [ChannelParameters](/docs/references/avatarengine/channelparameters).
     */
    channelParameters?: ChannelParameters;
  }

  /**
   * @private
   */
  interface _AvatarErrorEvent extends _AvatarEvent {
    /**
     * Error description.
     */
    reason: string;
  }
}

declare namespace VoximplantAvatar {
  /**
   * [VoiceAvatar](/docs/references/voxengine/voximplantavatar/voiceavatar) configuration. Can be passed as arguments to the [VoximplantAvatar.createVoiceAvatar] method.
   */
  interface VoiceAvatarConfig {
    /**
     * Current call object.
     */
    call: Call;
    /**
     * Avatar configuration.
     */
    avatarConfig: VoximplantAvatar.AvatarConfig;
    /**
     * ASR parameters.
     */
    asrParameters: ASRParameters;
    /**
     * Optional. [Player](/docs/references/voxengine/player) parameters: language, progressivePlayback, volume, rate, etc.
     */
    ttsPlayerParameters: TTSPlayerParameters;
    /**
     * Optional. End of phrase timeout in milliseconds. If the ASR is running in the interim mode, we may not wait for the final response from the ASR, but instead, take the last interim, after which there are no new ones during this timeout. It allows us to reduce the time of voice recognition. This parameter should be set individually for each ASR vendor. **1000ms** is a good default value not to interrupt the user aggressively.
     */
    asrEndOfPhraseDetectorTimeout?: number;
    /**
     * Optional. ASR listen timeout in milliseconds. If there is no response from the customer, the [AvatarState.onTimeout](/docs/references/avatarengine/avatarstate#ontimeout) required callback function executes. You can override the global timeout via the [AvatarResponseParameters.listenTimeout](/docs/references/avatarengine/avatarresponseparameters#listentimeout) parameter for the current response. The default value is **10000** milliseconds (10 seconds).
     */
    defaultListenTimeout?: number;
    /**
     * Optional. Triggered when the avatar finishes talking. Returns a dictionary with the data collected during the avatar working process.
     */
    onFinishCallback?: (
      avatarFinishEvent: VoximplantAvatar._AvatarFinishEvent
    ) => void | Promise<void>;
    /**
     * Optional. Event handler that defines what happens to the call in case of internal errors of the avatar (for example, playing an error phrase or transferring the call to an agent).
     * <br>
     * NOTE: the handler ends current javascript session using the [VoxEngine.terminate] method by default.
     */
    onErrorCallback?: (
      avatarErrorEvent: VoximplantAvatar._AvatarErrorEvent
    ) => void | Promise<void>;
  }
}

declare namespace VoximplantAvatar {
  /**
   * @private
   */
  interface _VoiceAvatarEvents extends VoximplantAvatar._Events, _ASREvents, _PlayerEvents {}
}

declare namespace VoximplantAvatar {
  /**
   * Voximplant voice avatar class is a superstructure over avatar with a pre-added bundle of ASR and TTS to handle calls.
   * As arguments, it accepts: a set of configuration parameters, callback functions and the [Call]. It independently implements automation for the interaction of [VoximplantAvatar.Avatar] and [Call] via the [Player] and [ASR] entities (handles the events, causes business logic and execute the callback functions).
   * For more details see the [VoximplantAvatar.VoiceAvatarConfig].
   */
  class VoiceAvatar {
    constructor(config: VoximplantAvatar.VoiceAvatarConfig);

    /**
     * Adds a handler for the specified [VoximplantAvatar.Events], [ASREvents] or [PlayerEvents] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event Event class (i.e., [VoximplantAvatar.Events.Loaded](/docs/references/voxengine/voximplantavatar/events#loaded), [ASREvents.Stopped], [PlayerEvents.PlaybackFinished])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof VoximplantAvatar._VoiceAvatarEvents>(
      event: VoximplantAvatar.Events | ASREvents | PlayerEvents | SequencePlayerEvents | T,
      callback: (event: VoximplantAvatar._VoiceAvatarEvents[T]) => any
    ): void;

    /**
     * Removes a handler for the specified [VoximplantAvatar.Events], [ASREvents] or [PlayerEvents] event.
     * @param event Event class (i.e., [VoximplantAvatar.Events.Loaded](/docs/references/voxengine/voximplantavatar/events#loaded), [ASREvents.Stopped], [PlayerEvents.PlaybackFinished])
     * @param callback
     */
    removeEventListener<T extends keyof VoximplantAvatar._VoiceAvatarEvents>(
      event: VoximplantAvatar.Events | ASREvents | PlayerEvents | SequencePlayerEvents | T,
      callback: (event: VoximplantAvatar._VoiceAvatarEvents[T]) => any
    ): void;
  }
}

/**
 * Represents an ML-powered bot engine that allows your system to handle natural conversations with users.
 * <br>
 * Add the following line to your scenario code to use the namespace:
 * ```
 * require(Modules.Avatar);
 * ```
 */
declare namespace VoximplantAvatar {}

/**
 * Available audio encoding formats. Can be passed via the [SendMediaParameters.encoding] parameter. The default value is **PCM8**.
 */
declare enum WebSocketAudioEncoding {
  /**
   * Pulse-code modulation, 8kHz.
   */
  PCM8 = 'PCM8',
  /**
   * Pulse-code modulation, 8kHz.
   */
  PCM16_8KHZ = 'PCM8',
  /**
   * Pulse-code modulation, 16kHz.
   */
  PCM16 = 'PCM16',
  /**
   * Pulse-code modulation, 16kHz.
   */
  PCM16_16KHZ = 'PCM16',
  /**
   * A-law algorithm, 8kHz.
   */
  ALAW = 'ALAW',
  /**
   * μ-law algorithm, 8kHz.
   */
  ULAW = 'ULAW',
  /**
   * Codec for **audio/ogg** and **audio/opus** MIME types, 48kHz.
   */
  OPUS = 'OPUS',
}

/**
 * @private
 */
interface _WebSocketBasedClientParameters {
  /**
   * Optional. Enables statistics functionality.
   */
  statistics?: boolean;
  /**
   * Optional. Whether to enable the tracing functionality.  
   * 
   * If tracing is enabled, a URL to the trace file appears in the 'websocket.created' message. The file contains all sent and received WebSocket messages in the plain text format. The file is uploaded to the S3 storage.
   * 
   * NOTE: enable this only for diagnostic purposes. You can provide the trace file to our support team to help investigating issues.
   */
  trace?: boolean;
  /**
   * Optional. Whether to enable the privacy functionality.
   * 
   * If privacy is enabled, the logging for the WebSocket connection is disabled.
   * 
   * NOTE: the default value is **false**.
   */
   privacy?: boolean;
}

declare enum WebSocketCloseCode {
  /**
   * Normal connection closure.
   */
  CLOSE_NORMAL = 1000,
  /**
   * Endpoint left (browser tab closing).
   */
  CLOSE_GOING_AWAY = 1001,
  /**
   * Endpoint received a malformed frame.
   */
  CLOSE_PROTOCOL_ERROR = 1002,
  /**
   * Endpoint received an unsupported frame.
   */
  CLOSE_UNSUPPORTED = 1003,
  /**
   * Expected close status, received none.
   */
  CLOSED_NO_STATUS = 1005,
  /**
   * No close code frame has been received.
   */
  CLOSE_ABNORMAL = 1006,
  /**
   * Endpoint received inconsistent message.
   */
  CLOSE_UNSUPPORTED_PAYLOAD = 1007,
  /**
   * Received message violates endpoint policy.
   */
  CLOSE_POLICY_VIOLATION = 1008,
  /**
   * Too big frame.
   */
  CLOSE_TOO_LARGE = 1009,
  /**
   * Client wanted an extension which server does not negotiate.
   */
  CLOSE_MANDATORY_EXTENSION = 1010,
  /**
   * Internal server error while operating.
   */
  CLOSE_SERVER_ERROR = 1011,
  /**
   * Server/service is restarting.
   */
  CLOSE_SERVICE_RESTART = 1012,
  /**
   * Temporary server condition forced blocking the client's request.
   */
  CLOSE_TRY_AGAIN_LATER = 1013,
  /**
   * Server acting as gateway received an invalid response.
   */
  CLOSE_BAD_GATEWAY = 1014,
  /**
   * Failed to perform a TLS handshake.
   */
  CLOSE_TLS_FAIL = 1015,
}

/**
 * @event
 */
declare enum WebSocketEvents {
  /**
   * Triggered when the WebSocket connection is opened. [WebSocket.onopen] is called right before any other handlers.
   * @typedef _WebSocketOpenEvent
   */
  OPEN = 'WebSocket.Open',
  /**
   * Triggered when the WebSocket connection is closed. [WebSocket.onclose] is called right before any other handlers.
   * @typedef _WebSocketCloseEvent
   */
  CLOSE = 'WebSocket.Close',
  /**
   * Triggered when a message is received by a target object. [WebSocket.onmessage] is called right before any other handlers.
   * @typedef _WebSocketMessageEvent
   */
  MESSAGE = 'WebSocket.Message',
  /**
   * Triggers when an error occurs during the WebSocket connection. [WebSocket.onerror] is called right before any other handlers.
   * @typedef _WebSocketErrorEvent
   */
  ERROR = 'WebSocket.Error',
  /**
   * Triggered when the WebSocket connection is created. [WebSocket.oncreated] is called right before any other handlers.
   * @typedef _WebSocketCreatedEvent
   */
  CREATED = 'WebSocket.Created',
  /**
   * Triggered when the audio stream sent by a third party through a WebSocket is started playing.
   * @typedef _WebSocketMediaStartedEvent
   */
  MEDIA_STARTED = 'WebSocket.MediaEventStarted',
  /**
   * Triggers after the end of the audio stream sent by a third party through a WebSocket (**1 second of silence**).
   * @typedef _WebSocketMediaEndedEvent
   */
  MEDIA_ENDED = 'WebSocket.MediaEventEnded',
}

/**
 * @private
 */
declare interface _WebSocketEvents {
  [WebSocketEvents.OPEN]: _WebSocketOpenEvent;
  [WebSocketEvents.CLOSE]: _WebSocketCloseEvent;
  [WebSocketEvents.MESSAGE]: _WebSocketMessageEvent;
  [WebSocketEvents.ERROR]: _WebSocketErrorEvent;
  [WebSocketEvents.CREATED]: _WebSocketCreatedEvent;
  [WebSocketEvents.MEDIA_STARTED]: _WebSocketMediaStartedEvent;
  [WebSocketEvents.MEDIA_ENDED]: _WebSocketMediaEndedEvent;
}

/**
 * @private
 */
declare interface _WebSocketEvent {
  /**
   * WebSocket object that triggered the event.
   */
  readonly websocket: WebSocket;
}

/**
 * @private
 */
declare interface _WebSocketOpenEvent extends _WebSocketEvent {
}

/**
 * @private
 */
declare interface _WebSocketCloseEvent extends _WebSocketEvent {
  /**
   * WebSocket close code.
   */
  readonly code: WebSocketCloseCode;
  /**
   * Reason why the connection is closed.
   */
  readonly reason: string;
  /**
   * Whether the connection is cleanly closed.
   */
  readonly wasClean: boolean;
}

/**
 * @private
 */
declare interface _WebSocketMessageEvent extends _WebSocketEvent {
  /**
   * The data sent by the message emitter.
   */
  readonly text: string;
}

/**
 * @private
 */
declare interface _WebSocketErrorEvent extends _WebSocketEvent {
}

/**
 * @private
 */
declare interface _WebSocketCreatedEvent extends _WebSocketEvent {
  /**
   * Exists when statistics is enabled.
   */
  readonly statisticsUrl?: string;
}

/**
 * @private
 */
declare interface _WebSocketMediaEvent {
  /**
   * Special tag to name audio streams sent over one WebSocket connection. With it, one can send 2 audios to 2 different media units at the same time.
   */
  tag?: string;
}

/**
 * @private
 */
declare interface _WebSocketMediaStartedWithoutWebSocketEvent extends _WebSocketMediaEvent {
  /**
   * Audio encoding formats.
   */
  encoding?: string;
  /**
   * Custom parameters.
   */
  customParameters?: { [key: string]: string };
}

/**
 * @private
 */
declare interface _WebSocketMediaStartedEvent extends _WebSocketMediaStartedWithoutWebSocketEvent, _WebSocketEvent {
}

/**
 * @private
 */
declare interface _WebSocketMediaEndedWithoutWebSocketEvent extends _WebSocketMediaEvent {
  /**
   * Information about the audio stream that can be obtained after the stream stops or pauses (**1 second of silence**).
   */
  mediaInfo?: WebSocketMediaInfo;
}

/**
 * @private
 */
declare interface _WebSocketMediaEndedEvent extends _WebSocketMediaEndedWithoutWebSocketEvent, _WebSocketEvent {
}

/**
 * Information about the audio stream that can be obtained after the stream stops or pauses (1-sec silence).
 */
declare interface WebSocketMediaInfo {
  /**
   * Audio stream duration.
   */
  duration: number;
}

/**
 * [WebSocket] parameters. Can be passed as arguments to the [VoxEngine.createWebSocket] method.
 */
declare interface WebSocketParameters extends _WebSocketBasedClientParameters {
  /**
   * Optional. Either a single protocol string or an array of protocol strings. The default value is **chat**.
   */
  protocols?: string | string[];
  /**
   * Optional. List of dictionaries with key and value fields representing headers.
   */
  headers?: { name: string; value: string }[];
}

declare enum WebSocketReadyState {
  /**
   * Connection is closed or cannot be opened.
   */
  CLOSED = 'closed',
  /**
   * Connection is closing.
   */
  CLOSING = 'closing',
  /**
   * Connection is in the process.
   */
  CONNECTING = 'connecting',
  /**
   * Connection is open and ready to communicate.
   */
  OPEN = 'open',
}

/**
 * Represents a [WebSocket] instance that provides the API for creating and managing an outgoing or incoming WebSocket connection, as well as for sending and receiving data to/from it.
 * @param url URL to connect. For the `wss://` protocol it accepts only domain addresses. For the `ws://` protocol, it can accept both domain and IP addresses
 * @param parameters Optional. [WebSocket] parameters
 */
declare class WebSocket {
  constructor(url: string, parameters?: WebSocketParameters);

  /**
   * Event handler to call when the connection is closed.
   */
  onclose: ((event: _WebSocketCloseEvent) => any) | null;

  /**
   * Event handler to call when an error occurs.
   */
  onerror: ((event: _WebSocketErrorEvent) => any) | null;

  /**
   * Event handler to call when a message is received.
   */
  onmessage: ((event: _WebSocketMessageEvent) => any) | null;

  /**
   * Event handler to call when the connection is open (ready to send and receive data).
   */
  onopen: ((event: _WebSocketOpenEvent) => any) | null;

  /**
   * Event handler to call when the connection is created.
   */
  oncreated: ((event: _WebSocketCreatedEvent) => any) | null;

  /**
   * Event handler to call when the audio stream is started playing.
   */
  onmediastarted: ((event: _WebSocketMediaStartedEvent) => any) | null;

  /**
   * Event handler to call after the end of the audio stream.
   */
  onmediaended: ((event: _WebSocketMediaEndedEvent) => any) | null;

  /**
   * Returns the current state of the WebSocket connection.
   */
  readonly readyState: WebSocketReadyState;

  /**
   * Returns the absolute URL of the WebSocket. For outgoing connection, it is the URL to which to connect; for incoming, it is the WebSocket session URL.
   */
  readonly url: string;

  /**
   * Returns the WebSocket's id.
   */
  id(): string;

  /**
   * Closes the WebSocket connection or connection attempt.
   */
  close(): void;

  /**
   * Enqueues the specified data to be transmitted over the WebSocket connection.
   * @param data Data to send through a [WebSocket]
   */
  send(data: string): void;

  /**
   * Adds a handler for the specified [WebSocketEvents] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
   * @param event Event class (i.e., [WebSocketEvents.OPEN])
   * @param callback Handler function. A single parameter is passed - object with event information
   */
  addEventListener<T extends keyof _WebSocketEvents>(
    event: WebSocketEvents | T,
    callback: (event: _WebSocketEvents[T]) => any,
  ): void;

  /**
   * Removes a handler for the specified [WebSocketEvents] event.
   * @param event Event class (i.e., [WebSocketEvents.OPEN])
   * @param callback Optional. Handler function. If not specified, all handler functions are removed
   */
  removeEventListener<T extends keyof _WebSocketEvents>(
    event: WebSocketEvents | T,
    callback?: (event: _WebSocketEvents[T]) => any,
  ): void;

  /**
   * Starts sending media from the websocket to the media unit. WebSocket works in real time and the recommended duration of one audio chunk is **20** milliseconds.
   * @param mediaUnit Media unit that receives media
   * @param parameters Optional. WebSocket interaction only parameters
   */
  sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

  /**
   * Stops sending media from the websocket to the media unit.
   * @param mediaUnit Media unit that stops receiving media
   * @param parameters Optional. WebSocket interaction only parameters
   */
  stopMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

  /**
   * Clears the media buffer.
   * @param parameters Optional. Media buffer clearing parameters
   */
  clearMediaBuffer(parameters?: ClearMediaBufferParameters): void;
}

declare namespace Yandex {
    /**
     * Creates a [Yandex.RealtimeAPIClient] instance.
     * @param parameters The [Yandex.RealtimeAPIClient] parameters
     */
    function createRealtimeAPIClient(parameters: RealtimeAPIClientParameters): Promise<Yandex.RealtimeAPIClient>
}
declare namespace Yandex {
  /**
   * @event
   */
  enum Events {
    /**
     * Triggered when the audio stream sent by a third party through an Yandex WebSocket is started playing.
     * @typedef _WebSocketMediaStartedYandexEvent
     */
    WebSocketMediaStarted = 'Yandex.Events.WebSocketMediaStarted',
    /**
     * Triggers after the end of the audio stream sent by a third party through an Yandex WebSocket (**1 second of silence**).
     * @typedef _WebSocketMediaEndedYandexEvent
     */
    WebSocketMediaEnded = 'Yandex.Events.WebSocketMediaEnded',
  }

  /**
   * @private
   */
  interface _Events {
    [Yandex.Events.WebSocketMediaStarted]: _WebSocketMediaStartedYandexEvent;
    [Yandex.Events.WebSocketMediaEnded]: _WebSocketMediaEndedYandexEvent;
  }

  /**
   * @private
   */
  interface _Event {
    /**
     * The [Yandex.RealtimeAPIClient] instance.
     */
    client: RealtimeAPIClient;
  }

  /**
   * @private
   */
  interface _WebSocketMediaStartedYandexEvent extends _Event, _WebSocketMediaStartedWithoutWebSocketEvent {
  }

  /**
   * @private
   */
  interface _WebSocketMediaEndedYandexEvent extends _Event, _WebSocketMediaEndedWithoutWebSocketEvent {
  }
}
declare namespace Yandex {
  /**
   * @private
   */
  interface _RealtimeAPIClientEvents extends _Events, _RealtimeAPIEvents {
  }
}
declare namespace Yandex {
  /**
   * [Yandex.RealtimeAPIClient] parameters. Can be passed as arguments to the [Yandex.createRealtimeAPIClient] method.
   */
  interface RealtimeAPIClientParameters extends _VoiceAIClientParameters {
    /**
     * The API key for the Yandex Realtime API.
     */
    apiKey: string;
    /**
     * The folder ID for the Yandex Realtime API.
     */
    folderId: string;
    /**
     * Optional. The model to use for Yandex Realtime API processing. The default value is **speech-realtime-250923**.
     */
    model?: string;
  }
}
  
declare namespace Yandex {
  class RealtimeAPIClient {
    /**
     * Returns the RealtimeAPIClient id.
     */
    id(): string;

    /**
     * Returns the Yandex WebSocket id.
     */
    webSocketId(): string;

    /**
     * Closes the Yandex connection (over WebSocket) or connection attempt.
     */
    close(): void;

    /**
     * Starts sending media from the Yandex (via WebSocket) to the media unit. Yandex works in real time.
     * @param mediaUnit Media unit that receives media
     * @param parameters Optional interaction parameters
     */
    sendMediaTo(mediaUnit: VoxMediaUnit, parameters?: SendMediaParameters): void;

    /**
     * Stops sending media from the Yandex (via WebSocket) to the media unit.
     * @param mediaUnit Media unit that stops receiving media
     */
    stopMediaTo(mediaUnit: VoxMediaUnit): void;

    /**
     * Clears the Yandex WebSocket media buffer.
     * @param parameters Optional. Media buffer clearing parameters
     */
    clearMediaBuffer(parameters?: ClearMediaBufferParameters): void;

    /**
     * Adds a handler for the specified [Yandex.RealtimeAPIEvents] or [Yandex.Events] event. Use only functions as handlers; anything except a function leads to the error and scenario termination when a handler is called.
     * @param event Event class (i.e., [Yandex.RealtimeAPIEvents.InputAudioBufferCommitted])
     * @param callback Handler function. A single parameter is passed - object with event information
     */
    addEventListener<T extends keyof Yandex._RealtimeAPIClientEvents>(
      event: Yandex.Events | Yandex.RealtimeAPIEvents | T,
      callback: (event: Yandex._RealtimeAPIClientEvents[T]) => any,
    ): void;

    /**
     * Removes a handler for the specified [Yandex.RealtimeAPIEvents] or [Yandex.Events] event.
     * @param event Event class (i.e., [Yandex.RealtimeAPIEvents.InputAudioBufferCommitted])
     * @param callback Optional. Handler function. If not specified, all handler functions are removed
     */
    removeEventListener<T extends keyof Yandex._RealtimeAPIClientEvents>(
      event: Yandex.Events | Yandex.RealtimeAPIEvents | T,
      callback?: (event: Yandex._RealtimeAPIClientEvents[T]) => any,
    ): void;

    /**
     * Send this event to update the session’s configuration. 
     * @param parameters
     */
    sessionUpdate(parameters: Object): void

    /**
     * Add a new Item to the Conversation's context.
     * @param parameters
     */
    conversationItemCreate(parameters: Object): void

    /**
     * Send this event when you want to retrieve the server's representation of a specific item in the conversation history.
     * @param parameters
     */
    conversationItemRetrieve(parameters: Object): void

    /**
     * Send this event to truncate a previous assistant message’s audio.
     * @param parameters
     */
    conversationItemTruncate(parameters: Object): void

    /**
     * Send this event when you want to remove any item from the conversation history.
     * @param parameters
     */
    conversationItemDelete(parameters: Object): void

    /**
     * This event instructs the server to create a Response, which means triggering model inference.
     * @param parameters
     */
    responseCreate(parameters: Object): void

    /**
     * Send this event to cancel an in-progress response. 
     * @param parameters
     */
    responseCancel(parameters: Object): void
  }
}
  
declare namespace Yandex {
  /**
   * @event
   */
  enum RealtimeAPIEvents {
    /**
     * The unknown event.
     * @typedef _YandexRealtimeAPIEvent
     */
    Unknown = 'Yandex.RealtimeAPI.Unknown',

    /**
     * The HTTP response event.
     * @typedef _YandexRealtimeAPIEvent
     */
    HTTPResponse = 'Yandex.RealtimeAPI.HTTPResponse',

    /**
     * The WebSocket error response event.
     * @typedef _YandexRealtimeAPIEvent
     */
    WebSocketError = 'Yandex.RealtimeAPI.WebSocketError',

     /**
     * Contains information about connector.
     * @typedef _YandexRealtimeAPIEvent
     */
    ConnectorInformation = 'Yandex.RealtimeAPI.ConnectorInformation',

    /**
     * Returned when an error occurs, which could be a client problem or a server problem.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerError](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerError)
     * @typedef _YandexRealtimeAPIEvent
     */
    Error = 'Yandex.RealtimeAPI.Error',

    /**
     * Returned when a Session is created.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerSessionCreated](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerSessionCreated)
     * @typedef _YandexRealtimeAPIEvent
     */
    SessionCreated = 'Yandex.RealtimeAPI.SessionCreated',

    /**
     * Returned when a session is updated with a session.update event, unless there is an error.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerSessionUpdated](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerSessionUpdated)
     * @typedef _YandexRealtimeAPIEvent
     */
    SessionUpdated = 'Yandex.RealtimeAPI.SessionUpdated',

    /**
     * Returned when a new Item is created in the Conversation.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemCreated](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemCreated)
     * @typedef _YandexRealtimeAPIEvent
     */
    ConversationItemCreated = 'Yandex.RealtimeAPI.ConversationItemCreated',
     
    /**
     * Returned when a conversation item is retrieved with conversation.item.retrieve.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemRetrieved](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemRetrieved)
     * @typedef _YandexRealtimeAPIEvent
     */
    ConversationItemRetrieved = 'Yandex.RealtimeAPI.ConversationItemRetrieved',

    /**
     * This event is the output of audio transcription for user audio written to the user audio buffer.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemInputAudioTranscriptionCompleted](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemInputAudioTranscriptionCompleted)
     * @typedef _YandexRealtimeAPIEvent
     */
    ConversationItemInputAudioTranscriptionCompleted = 'Yandex.RealtimeAPI.ConversationItemInputAudioTranscriptionCompleted',

    /**
     * Returned when the text value of an input audio transcription content part is updated with incremental transcription results.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemInputAudioTranscriptionDelta](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemInputAudioTranscriptionDelta)
     * @typedef _YandexRealtimeAPIEvent
     */
    ConversationItemInputAudioTranscriptionDelta = 'Yandex.RealtimeAPI.ConversationItemInputAudioTranscriptionDelta',

    /**
     * Returned when an input audio transcription segment is identified for an item.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemInputAudioTranscriptionSegment](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemInputAudioTranscriptionSegment)
     * @typedef _YandexRealtimeAPIEvent
     */
    ConversationItemInputAudioTranscriptionSegment = 'Yandex.RealtimeAPI.ConversationItemInputAudioTranscriptionSegment',

    /**
     * Returned when input audio transcription is configured, and a transcription request for a user message failed.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemInputAudioTranscriptionFailed](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemInputAudioTranscriptionFailed)
     * @typedef _YandexRealtimeAPIEvent
     */
    ConversationItemInputAudioTranscriptionFailed = 'Yandex.RealtimeAPI.ConversationItemInputAudioTranscriptionFailed',

    /**
     * Returned when an earlier assistant audio message item is truncated by the client with a conversation.item.truncate event.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemTruncated](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemTruncated)
     * @typedef _YandexRealtimeAPIEvent
     */
    ConversationItemTruncated = 'Yandex.RealtimeAPI.ConversationItemTruncated',

    /**
     * Returned when an item in the conversation is deleted by the client with a conversation.item.delete event.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemDeleted](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerConversationItemDeleted)
     * @typedef _YandexRealtimeAPIEvent
     */
    ConversationItemDeleted = 'Yandex.RealtimeAPI.ConversationItemDeleted',

    /**
     * Returned when an input audio buffer is committed.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerInputAudioBufferCommitted](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerInputAudioBufferCommitted)
     * @typedef _YandexRealtimeAPIEvent
     */
    InputAudioBufferCommitted = 'Yandex.RealtimeAPI.InputAudioBufferCommitted',

    /**
     * Returned when the input audio buffer is cleared by the client with an input_audio_buffer.clear event.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerInputAudioBufferCleared](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerInputAudioBufferCleared)
     * @typedef _YandexRealtimeAPIEvent
     */
    InputAudioBufferCleared = 'Yandex.RealtimeAPI.InputAudioBufferCleared',

     /**
     * Returned when a DTMF event is received (telephony integrations). [https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerInputAudioBufferDtmfEventReceived](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerInputAudioBufferDtmfEventReceived) 
     * @typedef _YandexRealtimeAPIEvent
     */
    InputAudioBufferDTMFEventReceived = 'Yandex.RealtimeAPI.InputAudioBufferDTMFEventReceived',

    /**
     * Sent by the server when in server_vad mode to indicate that speech has been detected in the audio buffer.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerInputAudioBufferSpeechStarted](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerInputAudioBufferSpeechStarted)
     * @typedef _YandexRealtimeAPIEvent
     */
    InputAudioBufferSpeechStarted = 'Yandex.RealtimeAPI.InputAudioBufferSpeechStarted',

    /**
     * Returned in server_vad mode when the server detects the end of speech in the audio buffer.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerInputAudioBufferSpeechStopped](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerInputAudioBufferSpeechStopped)
     * @typedef _YandexRealtimeAPIEvent
     */
    InputAudioBufferSpeechStopped = 'Yandex.RealtimeAPI.InputAudioBufferSpeechStopped',

    /**
     * Returned when the Server VAD timeout is triggered for the input audio buffer.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerInputAudioBufferTimeoutTriggered](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerInputAudioBufferTimeoutTriggered)
     * @typedef _YandexRealtimeAPIEvent
     */
    InputAudioBufferTimeoutTriggered = 'Yandex.RealtimeAPI.InputAudioBufferTimeoutTriggered',

    /**
     * Returned when the output audio buffer is cleared.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerOutputAudioBufferCleared](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerOutputAudioBufferCleared)
     * @typedef _YandexRealtimeAPIEvent
     */
    OutputAudioBufferCleared = 'Yandex.RealtimeAPI.OutputAudioBufferCleared',

    /**
     * Returned when the output audio buffer starts playing/streaming.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerOutputAudioBufferStarted](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerOutputAudioBufferStarted)
     * @typedef _YandexRealtimeAPIEvent
     */
    OutputAudioBufferStarted = 'Yandex.RealtimeAPI.OutputAudioBufferStarted',

    /**
     * Returned when the output audio buffer stops.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerOutputAudioBufferStopped](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerOutputAudioBufferStopped)
     * @typedef _YandexRealtimeAPIEvent
     */
    OutputAudioBufferStopped = 'Yandex.RealtimeAPI.OutputAudioBufferStopped',

    /**
     * Returned when a new Response is created.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseCreated](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseCreated)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseCreated = 'Yandex.RealtimeAPI.ResponseCreated',

    /**
     * Returned when a Response is done streaming.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseDone](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseDone)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseDone = 'Yandex.RealtimeAPI.ResponseDone',

    /**
     * Returned when a new Item is created during Response generation.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseOutputItemAdded](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseOutputItemAdded)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseOutputItemAdded = 'Yandex.RealtimeAPI.ResponseOutputItemAdded',

    /**
     * Returned when an Item is done streaming.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseOutputItemDone](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseOutputItemDone)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseOutputItemDone = 'Yandex.RealtimeAPI.ResponseOutputItemDone',

    /**
     * Returned when a new content part is added to an assistant message item during response generation.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseContentPartAdded](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseContentPartAdded)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseContentPartAdded = 'Yandex.RealtimeAPI.ResponseContentPartAdded',

    /**
     * Returned when a content part is done streaming in an assistant message item.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseContentPartDone](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseContentPartDone)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseContentPartDone = 'Yandex.RealtimeAPI.ResponseContentPartDone',

    /**
     * Returned when the text value of an "output_text" content part is updated.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseOutputTextDelta](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseOutputTextDelta)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseOutputTextDelta = 'Yandex.RealtimeAPI.ResponseOutputTextDelta',

    /**
     * Returned when the text value of an "output_text" content part is done streaming.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseOutputTextDone](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseOutputTextDone)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseOutputTextDone = 'Yandex.RealtimeAPI.ResponseOutputTextDone',

    /**
     * Returned when the model-generated transcription of audio output is updated.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseOutputAudioTranscriptDelta](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseOutputAudioTranscriptDelta)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseOutputAudioTranscriptDelta = 'Yandex.RealtimeAPI.ResponseOutputAudioTranscriptDelta',

    /**
     * Returned when the model-generated transcription of audio output is done streaming.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseOutputAudioTranscriptDone](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseOutputAudioTranscriptDone)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseOutputAudioTranscriptDone = 'Yandex.RealtimeAPI.ResponseOutputAudioTranscriptDone',
    

    /**
     * Returned when the model-generated audio is done.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseMcpCallArgumentsDone](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseMcpCallArgumentsDone)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseOutputAudioDone = 'Yandex.RealtimeAPI.ResponseOutputAudioDone',

    /**
     * Returned when the model-generated function call arguments are updated.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseFunctionCallArgumentsDelta](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseFunctionCallArgumentsDelta)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseFunctionCallArgumentsDelta = 'Yandex.RealtimeAPI.ResponseFunctionCallArgumentsDelta',

    /**
     * Returned when the model-generated function call arguments are done streaming.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseFunctionCallArgumentsDone](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseFunctionCallArgumentsDone)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseFunctionCallArgumentsDone = 'Yandex.RealtimeAPI.ResponseFunctionCallArgumentsDone',

    /**
     * Returned when MCP tool call arguments are updated during response generation.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseMcpCallArgumentsDelta](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseMcpCallArgumentsDelta)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseMCPCallArgumentsDelta = 'Yandex.RealtimeAPI.ResponseMCPCallArgumentsDelta',

    /**
     * Returned when MCP tool call arguments are finalized during response generation.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseMcpCallArgumentsDone](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseMcpCallArgumentsDone)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseMCPCallArgumentsDone = 'Yandex.RealtimeAPI.ResponseMCPCallArgumentsDone',

    /**
     * Returned when an MCP tool call has started and is in progress.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseMcpCallInProgress](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseMcpCallInProgress)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseMCPCallInProgress = 'Yandex.RealtimeAPI.ResponseMCPCallInProgress',

    /**
     * Returned when an MCP tool call has completed successfully.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseMcpCallCompleted](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseMcpCallCompleted)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseMCPCallCompleted = 'Yandex.RealtimeAPI.ResponseMCPCallCompleted',

    /**
     * Returned when an MCP tool call has failed.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseMcpCallFailed](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerResponseMcpCallFailed)
     * @typedef _YandexRealtimeAPIEvent
     */
    ResponseMCPCallFailed = 'Yandex.RealtimeAPI.ResponseMCPCallFailed',

    /**
     * Returned when listing MCP tools is in progress for an item.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerMcpListToolsInProgress](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerMcpListToolsInProgress)
     * @typedef _YandexRealtimeAPIEvent
     */
    MCPListToolsInProgress = 'Yandex.RealtimeAPI.MCPListToolsInProgress',

    /**
     * Returned when listing MCP tools has completed for an item.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerMcpListToolsCompleted](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerMcpListToolsCompleted)
     * @typedef _YandexRealtimeAPIEvent
     */
    MCPListToolsCompleted = 'Yandex.RealtimeAPI.MCPListToolsCompleted',

    /**
     * Returned when listing MCP tools has failed for an item.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerMcpListToolsFailed](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerMcpListToolsFailed)
     * @typedef _YandexRealtimeAPIEvent
     */
    MCPListToolsFailed = 'Yandex.RealtimeAPI.MCPListToolsFailed',

    /**
     * Emitted at the beginning of a Response to indicate the updated rate limits.[https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerRateLimitsUpdated](https://yandex.cloud/ru/docs/ai-studio/serverEvents/realtimeServerRateLimitsUpdated)
     * @typedef _YandexRealtimeAPIEvent
     */
    RateLimitsUpdated = 'Yandex.RealtimeAPI.ResponseMCPCallFailed',
  }

  /**
   * @private
   */
  interface _YandexRealtimeAPIEvents {
    [RealtimeAPIEvents.Unknown]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.HTTPResponse]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.WebSocketError]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ConnectorInformation]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.Error]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.SessionCreated]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.SessionUpdated]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemCreated]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemRetrieved]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemInputAudioTranscriptionCompleted]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemInputAudioTranscriptionDelta]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemInputAudioTranscriptionSegment]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemInputAudioTranscriptionFailed]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemTruncated]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ConversationItemDeleted]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.InputAudioBufferCommitted]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.InputAudioBufferCleared]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.InputAudioBufferDTMFEventReceived]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.InputAudioBufferSpeechStarted]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.InputAudioBufferSpeechStopped]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.InputAudioBufferTimeoutTriggered]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.OutputAudioBufferCleared]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.OutputAudioBufferStarted]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.OutputAudioBufferStopped]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseCreated]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseDone]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseOutputItemAdded]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseOutputItemDone]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseContentPartAdded]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseContentPartDone]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseOutputTextDelta]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseOutputTextDone]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseOutputAudioTranscriptDelta]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseOutputAudioTranscriptDone]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseOutputAudioDone]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseFunctionCallArgumentsDelta]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseFunctionCallArgumentsDone]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseMCPCallArgumentsDelta]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseMCPCallArgumentsDone]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseMCPCallInProgress]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseMCPCallCompleted]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ResponseMCPCallFailed]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.MCPListToolsInProgress]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.MCPListToolsCompleted]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.MCPListToolsFailed]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.RateLimitsUpdated]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.WebSocketError]: _YandexRealtimeAPIEvent;
    [RealtimeAPIEvents.ConnectorInformation]: _YandexRealtimeAPIEvent;
  }

  /**
   * @private
   */
  interface _YandexRealtimeAPIEvent {
    /**
     * The [Yandex.RealtimeAPIClient] instance.
     */
    client: RealtimeAPIClient;
    /**
     * The event's data.
     */
    data?: Object;
  }
}
  
  
declare namespace Yandex {
}
declare namespace ASRModelList {
  /**
   * List of Amazon ASR models. Can be passed via the [ASRParameters.model] parameter.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace Amazon {
    /**
     * Best for audio that originated from a phone call (typically recorded at a 8khz sampling rate).
     * @const
     */
    const DEFAULT: ASRModel;
  }
}

/**
 * List of available ASR models. Can be passed via the [ASRParameters.model] parameter.
 * <br>
 * Add the following line to your scenario code to use the namespace:
 * ```
 * require(Modules.ASR);
 * ```
 * @namespace
 */
declare namespace ASRModelList {}

declare namespace ASRModelList {
  /**
   * List of Deepgram ASR models. Can be passed via the [ASRParameters.model] parameter.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace Deepgram {
    /**
     * The default **General** model.
     * @const
     */
    const DEFAULT: ASRModel;
    /**
     * Optimized for everyday audio processing.
     * @const
     */
    const general: ASRModel;
    /**
     * Optimized for everyday audio processing. Applies the newest ASR module with higher accuracy.
     */
    const general_enhanced: ASRModel;
    /**
     * Optimized for conference room settings, which include multiple speakers with a single microphone.
     * @const
     */
    const meeting: ASRModel;
    /**
     * Optimized for conference room settings, which include multiple speakers with a single microphone. Applies the newest ASR module with higher accuracy.
     * @const
     */
    const meeting_enhanced: ASRModel;
    /**
     * Optimized for low-bandwidth audio phone calls.
     * @const
     */
    const phonecall: ASRModel;
    /**
     * Optimized for low-bandwidth audio phone calls. Applies the newest ASR module with higher accuracy.
     * @const
     */
    const phonecall_enhanced: ASRModel;
    /**
     * Optimized for low-bandwidth audio clips with a single speaker. Derived from the phonecall model.
     * @const
     */
    const voicemail: ASRModel;
    /**
     * Optimized for multiple speakers with varying audio quality, such as might be found on a typical earnings call. Vocabulary is heavily finance oriented.
     * @const
     */
    const finance: ASRModel;
    /**
     * Optimized for multiple speakers with varying audio quality, such as might be found on a typical earnings call. Vocabulary is heavily finance oriented. Applies the newest ASR module with higher accuracy.
     * @const
     */
    const finance_enhanced: ASRModel;
    /**
     * Optimized to allow artificial intelligence technologies, such as chatbots, to interact with people in a human-like way.
     * @const
     */
    const conversational: ASRModel;
    /**
     * Optimized for audio sourced from videos.
     * @const
     */
    const video: ASRModel;
    /**
     * Optimized for everyday audio processing.
     * @const 
     */
    const nova_general: ASRModel;
    /**
     * Optimized for low-bandwidth audio phone calls.
     * @const
     */
    const nova_phonecall: ASRModel;
    /**
     * Optimized for everyday audio processing.
     * @const
     */
    const nova2_general: ASRModel;
    /**
     * Optimized for conference room settings, which include multiple speakers with a single microphone.
     * @const
     */
    const nova2_meeting: ASRModel;
    /**
     * Optimized for low-bandwidth audio phone calls.
     * @const
     */
    const nova2_phonecall: ASRModel;
    /**
     * Optimized for low-bandwidth audio clips with a single speaker. Derived from the phonecall model.
     * @const
     */
    const nova2_voicemail: ASRModel;
    /**
     * Optimized for multiple speakers with varying audio quality, such as might be found on a typical earnings call. Vocabulary is heavily finance oriented.
     * @const
     */
    const nova2_finance: ASRModel;
    /**
     * Optimized for use cases in which a human is talking to an automated bot, such as IVR, a voice assistant, or an automated kiosk.
     * @const
     */
    const nova2_conversationalai: ASRModel;
    /**
     * Optimized for audio sourced from videos.
     * @const
     */
    const nova2_video: ASRModel;
    /**
     * Optimized for audio with medical oriented vocabulary.
     * @const
     */
    const nova2_medical: ASRModel;
    /**
     * Optimized for audio sources from drivethrus.
     * @const
     */
    const nova2_drivethru: ASRModel;
    /**
     * Optimized for audio with automative oriented vocabulary.
     * @const
     */
    const nova2_automotive: ASRModel;
    /**
     * Optimized for audio from air traffic control.
     * @const
     */
    const nova2_atc: ASRModel;
    /**
     * Optimized for everyday audio processing.
     * @const
     */
    const nova3_general: ASRModel;
    /**
     *  Optimized for audio with medical oriented vocabulary.
     * @const
     */
    const nova3_medical: ASRModel;
  }
}

declare namespace ASRModelList {
  /**
   * List of Google ASR models. Can be passed via the [ASRParameters.model] parameter.
   * <br>
   * NOTE: the **enhanced** models cost more than the standard rate.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace Google {
    /**
     * Best for audio that is not one of the specific audio models. For example, long-form audio. Ideally the audio is high-fidelity, recorded at a 16khz or greater sampling rate.
     * @const
     */
    const DEFAULT: ASRModel;
    /**
     * **Default** model with more accurate recognition.
     * @const
     */
    const default_enhanced: ASRModel;
    /**
     * Best for short queries such as voice commands or voice search.
     * @const
     */
    const command_and_search: ASRModel;
    /**
     * **Command_and_search** model with more accurate recognition.
     * @const
     */
    const command_and_search_enhanced: ASRModel;
    /**
     * Best for audio that originated from a phone call (typically recorded at a 8khz sampling rate).
     * @const
     */
    const phone_call: ASRModel;
    /**
     * **Phone_call** model with more accurate recognition.
     * @const
     */
    const phone_call_enhanced: ASRModel;
    /**
     * Best for audio that originated from video or includes multiple speakers. Ideally the audio is recorded at a 16khz or greater sampling rate.
     * @const
     */
    const video: ASRModel;
    /**
     * **Video** model with more accurate recognition.
     * @const
     */
    const video_enhanced: ASRModel;
  }
}

declare namespace ASRModelList {
  /**
   * List of Microsoft ASR models. Can be passed via the [ASRParameters.model] parameter.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace Microsoft {
    /**
     * Best for generic, day-to-day language and if there is little or no background noise.
     * @const
     */
    const DEFAULT: ASRModel;
  }
}

declare namespace ASRModelList {
  /**
   * List of SaluteSpeech ASR models. Can be passed via the [ASRParameters.model] parameter.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace SaluteSpeech {
    /**
     * The default **General** model.
     * @const
     */
    const DEFAULT: ASRModel;
    /**
     * Short arbitrary phrases, e.g., search queries.
     * @const
     */
    const general: ASRModel;
    /**
     * The model for media usage.
     * @const
     */
    const media: ASRModel;
    /**
     * The model to use in a call center.
     * @const
     */
    const callcenter: ASRModel;
  }
}

declare namespace ASRModelList {
  /**
   * List of T-Bank ASR models. Can be passed via the [ASRParameters.model] parameter.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace TBank {
    /**
     * Best for audio that originated from a phone call (typically recorded at a 8khz sampling rate).
     * @const
     */
    const DEFAULT: ASRModel;
  }
}

declare namespace ASRModelList {
  /**
   * List of Yandex ASR models. Can be passed via the [ASRParameters.model] parameter.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace Yandex {
    /**
     * The default **General** model.
     * @const
     */
    const DEFAULT: ASRModel;
    /**
     * Short arbitrary phrases, e.g., search queries.
     * @const
     */
    const general: ASRModel;
    /**
     * Short arbitrary phrases, e.g., search queries. Release candidate version.
     * @const
     */
    const generalrc: ASRModel;
    /**
     * Month names, cardinal and ordinal numbers.
     * <br>
     * Supported by [ASRProfileList.Yandex.ru_RU] only.
     * @const
     * @deprecated
     */
    const dates: ASRModel;
    /**
     * People's first and last names, as well as requests to put someone on the phone.
     * <br>
     * Supported by [ASRProfileList.Yandex.ru_RU] only.
     * @const
     * @deprecated
     */
    const names: ASRModel;
    /**
     * Addresses, organizations, and geographical features.
     * @const
     * @deprecated
     */
    const maps: ASRModel;
    /**
     * Cardinal numbers and delimiters (comma, period).
     * <br>
     * Supported by [ASRProfileList.Yandex.ru_RU] only.
     * @const
     * @deprecated
     */
    const numbers: ASRModel;
  }
}

declare namespace ASRModelList {
  /**
   * List of YandexV3 ASR models. Can be passed via the [ASRParameters.model] parameter.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace YandexV3 {
    /**
     * The default **General** model.
     * @const
     */
    const DEFAULT: ASRModel;
    /**
     * Short arbitrary phrases, e.g., search queries.
     * @const
     */
    const general: ASRModel;
    /**
     * Short arbitrary phrases, e.g., search queries. Release candidate version.
     * @const
     */
    const generalrc: ASRModel;
    /**
     * Month names, cardinal and ordinal numbers.
     * <br>
     * Supported by [ASRProfileList.Yandex.ru_RU] only.
     * @const
     * @deprecated
     */
    const dates: ASRModel;
    /**
     * People's first and last names, as well as requests to put someone on the phone.
     * <br>
     * Supported by [ASRProfileList.Yandex.ru_RU] only.
     * @const
     * @deprecated
     */
    const names: ASRModel;
    /**
     * Addresses, organizations, and geographical features.
     * @const
     * @deprecated
     */
    const maps: ASRModel;
    /**
     * Cardinal numbers and delimiters (comma, period).
     * <br>
     * Supported by [ASRProfileList.Yandex.ru_RU] only.
     * @const
     * @deprecated
     */
    const numbers: ASRModel;
  }
}

/**
 * Represents an ASR recognition model. List of all supported models: [ASRModelList].
 */
declare class ASRModel {}
/**
 * [ASR](/docs/references/voxengine/asr) parameters. Can be passed as arguments to the [VoxEngine.createASR](/docs/references/voxengine/voxengine/createasr) method.
 * <br>
 * Add the following line to your scenario code to use the interface:
 * ```
 * require(Modules.ASR);
 * ```
 */
declare interface ASRParameters {
  /**
   * Profile that specifies an ASR provider and a language to use.
   * <br>
   * <br>
   * List of all supported profiles: [ASRProfileList].
   * <br>
   * <br>
   * *Available for providers: Amazon, Deepgram, Google, Microsoft, SaluteSpeech, T-Bank, Yandex, YandexV3.*
   */
  profile: ASRProfile;

  /**
   * Optional. ASR recognition model. Select the model best suited to your domain to get the best results. If it is not specified, the **default** model is used.
   * <br>
   * <br>
   * List of all supported models: [ASRModelList].
   * <br>
   * <br>
   * *Available for providers: Amazon, Deepgram, Google, Microsoft, SaluteSpeech, T-Bank, Yandex, YandexV3.*
   */
  model?: ASRModel;

  /**
   * Optional. Whether to enable interim ASR results. If set to **true**, the [ASREvents.InterimResult](/docs/references/voxengine/asrevents#interimresult) triggers many times according to the speech.
   * <br>
   * <br>
   * *Available for providers: Amazon, Deepgram, Google, SaluteSpeech, T-Bank, Yandex.*
   */
  interimResults?: boolean;

  /**
   * Optional. Whether to enable single utterance. The default value is **false**, so:
   * <br>
   * 1) if the speech is shorter than 60 sec, [ASREvents.Result](/docs/references/voxengine/asrevents#result) is triggered in unpredictable time. You could mute the mic when the speech is over - this increases the probability of [ASREvents.Result](/docs/references/voxengine/asrevents#result) catching;
   * <br>
   * 2) if the speech is longer than 60 sec, [ASREvents.Result](/docs/references/voxengine/asrevents#result) is triggered each 60 seconds.
   * <br>
   * If it is **true**, the [ASREvents.Result](/docs/references/voxengine/asrevents#result) is triggered after every utterance.
   * <br>
   * <br>
   * *Available for providers: Amazon, Google, Microsoft, SaluteSpeech, T-Bank, Yandex.*
   * <br>
   * *NOTE: for the SaluteSpeech provider the default value is **true**.*
   */
  singleUtterance?: boolean;

  /**
   * Optional. Preferable words to recognize. Note that **phraseHints** do not limit the recognition to the specific list. Instead, words in the specified list has a higher chance to be selected.
   * <br>
   * <br>
   * *Available for providers: Google.*
   */
  phraseHints?: string[];

  /**
   * Optional. Whether to enable profanity filter. The default value is **false**.
   * <br>
   * If set to **true**, the server attempts to filter out profanities, replacing all but the initial character in each filtered word with asterisks, e.g. "f***". If set to **false** or omitted, profanities are not filtered out.
   * <br>
   * <br>
   * *Available for providers: Amazon, Deepgram, Google, Microsoft, SaluteSpeech, T-Bank, Yandex, YandexV3.*
   */
  profanityFilter?: boolean;

  /**
   * Optional. Request headers: {'x-data-logging-enabled': true}.
   * <br>
   * <br>
   * *Available for providers: Amazon, Deepgram, Google, Microsoft, SaluteSpeech, T-Bank, Yandex, YandexV3.*
   */
  headers?: { [key: string]: any };

  /**
   * Optional. Whether to use the Google [v1p1beta1 Speech API](https://cloud.google.com/speech-to-text/docs/reference/rest/v1p1beta1/speech), e.g., **enableSeparateRecognitionPerChannel**, **alternativeLanguageCodes**, **enableWordTimeOffsets**, etc.
   * <br>
   * <br>
   * *Available for providers: Google.*
   * @beta
   */
  beta?: boolean;

  /**
   * v1p1beta1 Speech API feature.
   * <br>
   * Optional. The recognition result contains a [_ASRResultEvent.channelTag] field to state which channel that result belongs to. If set to **false** or omitted, only the first channel is recognized.
   * <br>
   * Requires the **beta** parameter set to **true**.
   * <br>
   * <br>
   * *Available for providers: Google.*
   * @beta
   */
  enableSeparateRecognitionPerChannel?: boolean;

  /**
   * v1p1beta1 Speech API feature.
   * <br>
   * Optional. A list of up to 3 additional BCP-47 language tags, listing possible alternative languages of the supplied audio. See [Language Support](https://cloud.google.com/speech-to-text/docs/languages) for a list of the currently supported language codes.
   * <br>
   * Requires the **beta** parameter set to **true**.
   * <br>
   * <br>
   * *Available for providers: Google.*
   * @beta
   */
  alternativeLanguageCodes?: string[];

  /**
   * v1p1beta1 Speech API feature.
   * <br>
   * Optional. If set to **true**, the top result includes a list of words and the start and end time offsets (timestamps) for those words. If set to **false** or omitted, no word-level time offset information is returned. The default value is **false**.
   * <br>
   * Requires the **beta** parameter set to **true**.
   * <br>
   * <br>
   * *Available for providers: Google.*
   * @beta
   */
  enableWordTimeOffsets?: boolean;

  /**
   * v1p1beta1 Speech API feature.
   * <br>
   * Optional. If set to **true**, the top result includes a list of words and the confidence for those words. If set to **false** or omitted, no word-level confidence information is returned. The default value is **false**.
   * <br>
   * Requires the **beta** parameter set to **true**.
   * <br>
   * <br>
   * *Available for providers: Google.*
   * @beta
   */
  enableWordConfidence?: boolean;

  /**
   * v1p1beta1 Speech API feature.
   * <br>
   * Optional. If set to **true**, adds punctuation to recognition result hypotheses. This feature is only available in select languages. Setting this for requests in other languages has no effect at all. The **false** value does not add punctuation to result hypotheses. The default value is **false**.
   * Requires the **beta** parameter set to **true**.
   * <br>
   * <br>
   * *Available for providers: Google.*
   * @beta
   */
  enableAutomaticPunctuation?: boolean;

  /**
   * v1p1beta1 Speech API feature.
   * <br>
   * Optional. Config to enable speaker diarization and set additional parameters to make diarization better suited for your application.
   * <br>
   * See the full list of available fields [here](https://cloud.google.com/speech-to-text/docs/reference/rest/v1p1beta1/RecognitionConfig#SpeakerDiarizationConfig).
   * <br>
   * Requires the **beta** parameter set to **true**.
   * <br>
   * <br>
   * *Available for providers: Google.*
   * @beta
   */
  diarizationConfig?: {
    /**
     * If set to **true**, enables speaker detection for each recognized word in the top alternative of the recognition result.
     */
    enableSpeakerDiarization: boolean;
  };

  /**
   * v1p1beta1 Speech API feature.
   * <br>
   * Optional. Metadata regarding this request.
   * <br>
   * See the full list of available fields [here](https://cloud.google.com/speech-to-text/docs/reference/rest/v1p1beta1/RecognitionConfig#RecognitionMetadata).
   * <br>
   * Requires the **beta** parameter set to **true**.
   * <br>
   * <br>
   * *Available for providers: Google.*
   * @beta
   */
  metadata?: {
    /**
     * The audio type that most closely describes the audio being recognized. Possible values are: **MICROPHONE_DISTANCE_UNSPECIFIED**, **NEARFIELD**, **MIDFIELD**, **FARFIELD**.
     */
    microphoneDistance: string;
  };

  /**
   * Optional. Increase the recognition model bias by assigning more weight to some phrases than others. **Phrases** is the word array, **boost** is the weight in the range of 1..20.
   * <br>
   * <br>
   * *Available for providers: Google.*
   * @beta
   */
  speechContexts?: [
    {
      phrases: string[];
      boost: number;
    }
  ];

  /**
   * Optional. Maximum number of recognition hypotheses to be returned.
   * <br>
   * <br>
   * *Available for providers: Google.*
   * @beta
   */
  maxAlternatives?: number;

  /**
   * Optional. Speech adaptation configuration.
   * <br>
   * <br>
   * *Available for providers: Google.*
   * @beta
   */
  adaptation?: Object;

  /**
   * Optional. Whether to enable the spoken punctuation behavior for the call.
   * <br>
   * <br>
   * *Available for providers: Google.*
   * @beta
   */
  enableSpokenPunctuation?: boolean;

  /**
   * Optional. Whether to enable the spoken emoji behavior for the call.
   * <br>
   * <br>
   * *Available for providers: Google.*
   * @beta
   */
  enableSpokenEmojis?: boolean;

  /**
   * Optional. Whether to use the enhanced models for speech recognition.
   * <br>
   * <br>
   * *Available for providers: Google.*
   * @beta
   */
  useEnhanced?: boolean;

  /**
   * Optional. Transcription normalization configuration. Use transcription normalization to automatically replace parts of the transcript with phrases of your choosing.
   * <br>
   * <br>
   * *Available for providers: Google.*
   * @beta
   */
  transcriptNormalization?: {
    entries: [
      {
        search: string;
        replace: string;
        caseSensitive: boolean;
      }
    ];
  };

  /**
   * Optional. Provide the ASR parameters directly to the provider in this parameter. Find more information in the <a href="/docs/guides/speech/stt#passing-parameters-directly-to-the-provider"> documentation</a>.
   * <br>
   * <br>
   * *Available for providers: Deepgram, Google, SaluteSpeech, T-Bank, Yandex, YandexV3.*
   */
  request?: Object;
}

declare namespace ASRProfileList {
  /**
   * List of Amazon ASR profiles. Can be passed via the [ASRParameters.profile] parameter.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace Amazon {
    /**
     * English (United Kingdom)
     * @const
     */
    const en_GB: ASRProfile;
    /**
     * English (United States)
     * @const
     */
    const en_US: ASRProfile;
    /**
     * Spanish (United States)
     * @const
     */
    const es_US: ASRProfile;
    /**
     * French (Canada)
     * @const
     */
    const fr_CA: ASRProfile;
    /**
     * French (France)
     * @const
     */
    const fr_FR: ASRProfile;
  }
}

/**
 * List of available ASR profiles. Can be passed via the [ASRParameters.profile] parameter.
 * <br>
 * Add the following line to your scenario code to use the namespace:
 * ```
 * require(Modules.ASR);
 * ```
 * @namespace
 */
declare namespace ASRProfileList {}

declare namespace ASRProfileList {
  /**
   * List of Deepgram ASR profiles. Can be passed via the [ASRParameters.profile] parameter.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace Deepgram {
    /**
     * Chinese (China)
     * @const
     */
    const zh: ASRProfile;
    /**
     * Chinese (Simplified)
     * @const
     */
    const zh_CN: ASRProfile;
    /**
     * Chinese (Traditional)
     * @const
     */
    const zh_TW: ASRProfile;
    /**
     * Danish (Denmark)
     * @const
     */
    const da: ASRProfile;
    /**
     * Dutch (Netherlands)
     * @const
     */
    const nl: ASRProfile;
    /**
     * English (Common)
     * @const
     */
    const en: ASRProfile;
    /**
     * English (Australia)
     * @const
     */
    const en_AU: ASRProfile;
    /**
     * English (Great Britain)
     * @const
     */
    const en_GB: ASRProfile;
    /**
     * English (Indonesia)
     * @const
     */
    const en_IN: ASRProfile;
    /**
     * English (New Zealand)
     * @const
     */
    const en_NZ: ASRProfile;
    /**
     * English (United States)
     * @const
     */
    const en_US: ASRProfile;
    /**
     * French (France)
     * @const
     */
    const fr: ASRProfile;
    /**
     * French (Canada)
     * @const
     */
    const fr_CA: ASRProfile;
    /**
     * German (Germany)
     * @const
     */
    const de: ASRProfile;
    /**
     * Hindi (India)
     * @const
     */
    const hi: ASRProfile;
    /**
     * Hindi (Latin)
     * @const
     */
    const hi_Latn: ASRProfile;
    /**
     * Indonesian (Indonesia)
     * @const
     */
    const id: ASRProfile;
    /**
     * Italian (Italy)
     * @const
     */
    const it: ASRProfile;
    /**
     * Japanese (Japan)
     * @const
     */
    const ja: ASRProfile;
    /**
     * Korean (Korea)
     * @const
     */
    const ko: ASRProfile;
    /**
     * Norwegian (Norway)
     * @const
     */
    const no: ASRProfile;
    /**
     * Polish (Poland)
     * @const
     */
    const pl: ASRProfile;
    /**
     * Portuguese (Common)
     * @const
     */
    const pt: ASRProfile;
    /**
     * Portuguese (Brazil)
     * @const
     */
    const pt_BR: ASRProfile;
    /**
     * Portuguese (Portugal)
     * @const
     */
    const pt_PT: ASRProfile;
    /**
     * Russian (Russia)
     * @const
     */
    const ru: ASRProfile;
    /**
     * Spanish (Spain)
     * @const
     */
    const es: ASRProfile;
    /**
     * Spanish (Latin America)
     * @const
     */
    const es_419: ASRProfile;
    /**
     * Swedish (Sweden)
     * @const
     */
    const sv: ASRProfile;
    /**
     * Tamil (India)
     * @const
     */
    const ta: ASRProfile;
    /**
     * Turkish (Turkey)
     * @const
     */
    const tr: ASRProfile;
    /**
     * Ukrainian (Ukraine)
     * @const
     */
    const uk: ASRProfile;
  }
}

declare namespace ASRProfileList {
  /**
   * List of Google ASR profiles. Can be passed via the [ASRParameters.profile] parameter.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace Google {
    /**
     * Afrikaans (South Africa)
     * @const
     */
    const af_ZA: ASRProfile;

    /**
     * Albanian (Albania)
     * @const
     */
    const sq_AL: ASRProfile;

    /**
     * Amharic (Ethiopia)
     * @const
     */
    const am_ET: ASRProfile;

    /**
     * Arabic (Algeria)
     * @const
     */
    const ar_DZ: ASRProfile;

    /**
     * Arabic (Bahrain)
     * @const
     */
    const ar_BH: ASRProfile;

    /**
     * Arabic (Egypt)
     * @const
     */
    const ar_EG: ASRProfile;

    /**
     * Arabic (Iraq)
     * @const
     */
    const ar_IQ: ASRProfile;

    /**
     * Arabic (Israel)
     * @const
     */
    const ar_IL: ASRProfile;

    /**
     * Arabic (Jordan)
     * @const
     */
    const ar_JO: ASRProfile;

    /**
     * Arabic (Kuwait)
     * @const
     */
    const ar_KW: ASRProfile;

    /**
     * Arabic (Lebanon)
     * @const
     */
    const ar_LB: ASRProfile;

    /**
     * Arabic (Mauritania)
     * @const
     */
    const ar_MR: ASRProfile;

    /**
     * Arabic (Morocco)
     * @const
     */
    const ar_MA: ASRProfile;

    /**
     * Arabic (Oman)
     * @const
     */
    const ar_OM: ASRProfile;

    /**
     * Arabic (Pseudo-Accents)
     * @const
     */
    const ar_XA: ASRProfile;

    /**
     * Arabic (Qatar)
     * @const
     */
    const ar_QA: ASRProfile;

    /**
     * Arabic (Saudi Arabia)
     * @const
     */
    const ar_SA: ASRProfile;

    /**
     * Arabic (State of Palestine)
     * @const
     */
    const ar_PS: ASRProfile;

    /**
     * Arabic (Syria)
     * @const
     */
    const ar_SY: ASRProfile;

    /**
     * Arabic (Tunisia)
     * @const
     */
    const ar_TN: ASRProfile;

    /**
     * Arabic (United Arab Emirates)
     * @const
     */
    const ar_AE: ASRProfile;

    /**
     * Arabic (Yemen)
     * @const
     */
    const ar_YE: ASRProfile;

    /**
     * Armenian (Armenia)
     * @const
     */
    const hy_AM: ASRProfile;

    /**
     * Aromanian (Bulgaria)
     * @const
     */
    const rup_BG: ASRProfile;

    /**
     * Assamese (India)
     * @const
     */
    const as_IN: ASRProfile;

    /**
     * Asturian (Spain)
     * @const
     */
    const ast_ES: ASRProfile;

    /**
     * Azerbaijani (Azerbaijan)
     * @const
     */
    const az_AZ: ASRProfile;

    /**
     * Basque (Spain)
     * @const
     */
    const eu_ES: ASRProfile;

    /**
     * Belarusian (Belarus)
     * @const
     */
    const be_BY: ASRProfile;

    /**
     * Bengali (Bangladesh)
     * @const
     */
    const bn_BD: ASRProfile;

    /**
     * Bengali (India)
     * @const
     */
    const bn_IN: ASRProfile;

    /**
     * Bosnian (Bosnia and Herzegovina)
     * @const
     */
    const bs_BA: ASRProfile;

    /**
     * Bulgarian (Bulgaria)
     * @const
     */
    const bg_BG: ASRProfile;

    /**
     * Burmese (Myanmar)
     * @const
     */
    const my_MM: ASRProfile;

    /**
     * Catalan (Spain)
     * @const
     */
    const ca_ES: ASRProfile;

    /**
     * Cebuano (Philippines)
     * @const
     */
    const ceb_PH: ASRProfile;

    /**
     * Central Kurdish (Iraq)
     * @const
     */
    const ckb_IQ: ASRProfile;

    /**
     * Chinese (Simplified, China)
     * @const
     */
    const cmn_Hans_CN: ASRProfile;

    /**
     * Chinese, Cantonese (Traditional Hong Kong)
     * @const
     */
    const yue_Hant_HK: ASRProfile;

    /**
     * Chinese, Mandarin (Traditional, Taiwan)
     * @const
     */
    const cmn_Hant_TW: ASRProfile;

    /**
     * Croatian (Croatia)
     * @const
     */
    const hr_HR: ASRProfile;

    /**
     * Czech (Czech Republic)
     * @const
     */
    const cs_CZ: ASRProfile;

    /**
     * Danish (Denmark)
     * @const
     */
    const da_DK: ASRProfile;

    /**
     * Dutch (Netherlands)
     * @const
     */
    const nl_NL: ASRProfile;

    /**
     * English (Australia)
     * @const
     */
    const en_AU: ASRProfile;

    /**
     * English (India)
     * @const
     */
    const en_IN: ASRProfile;

    /**
     * English (Philippines)
     * @const
     */
    const en_PH: ASRProfile;

    /**
     * English (United Kingdom)
     * @const
     */
    const en_GB: ASRProfile;

    /**
     * English (United States)
     * @const
     */
    const en_US: ASRProfile;

    /**
     * Estonian (Estonia)
     * @const
     */
    const et_EE: ASRProfile;

    /**
     * Filipino (Philippines)
     * @const
     */
    const fil_PH: ASRProfile;

    /**
     * Finnish (Finland)
     * @const
     */
    const fi_FI: ASRProfile;

    /**
     * French (Canada)
     * @const
     */
    const fr_CA: ASRProfile;

    /**
     * French (France)
     * @const
     */
    const fr_FR: ASRProfile;

    /**
     * Fulah (Senegal)
     * @const
     */
    const ff_SN: ASRProfile;

    /**
     * Galician (Spain)
     * @const
     */
    const gl_ES: ASRProfile;

    /**
     * Ganda (Uganda)
     * @const
     */
    const lg_UG: ASRProfile;

    /**
     * Georgian (Georgia)
     * @const
     */
    const ka_GE: ASRProfile;

    /**
     * German (Germany)
     * @const
     */
    const de_DE: ASRProfile;

    /**
     * Greek (Greece)
     * @const
     */
    const el_GR: ASRProfile;

    /**
     * Gujarati (India)
     * @const
     */
    const gu_IN: ASRProfile;

    /**
     * Hausa (Nigeria)
     * @const
     */
    const ha_NG: ASRProfile;

    /**
     * Hebrew (Israel)
     * @const
     */
    const iw_IL: ASRProfile;

    /**
     * Hindi (India)
     * @const
     */
    const hi_IN: ASRProfile;

    /**
     * Hungarian (Hungary)
     * @const
     */
    const hu_HU: ASRProfile;

    /**
     * Icelandic (Iceland)
     * @const
     */
    const is_IS: ASRProfile;

    /**
     * Igbo (Nigeria)
     * @const
     */
    const ig_NG: ASRProfile;

    /**
     * Indonesian (Indonesia)
     * @const
     */
    const id_ID: ASRProfile;

    /**
     * Irish (Ireland)
     * @const
     */
    const ga_IE: ASRProfile;

    /**
     * Italian (Italy)
     * @const
     */
    const it_IT: ASRProfile;

    /**
     * Japanese (Japan)
     * @const
     */
    const ja_JP: ASRProfile;

    /**
     * Javanese (Indonesia)
     * @const
     */
    const jv_ID: ASRProfile;

    /**
     * Kabuverdianu (Cape Verde)
     * @const
     */
    const kea_CV: ASRProfile;

    /**
     * Kamba (Kenya)
     * @const
     */
    const kam_KE: ASRProfile;

    /**
     * Kannada (India)
     * @const
     */
    const kn_IN: ASRProfile;

    /**
     * Kazakh (Kazakhstan)
     * @const
     */
    const kk_KZ: ASRProfile;

    /**
     * Khmer (Cambodia)
     * @const
     */
    const km_KH: ASRProfile;

    /**
     * Korean (South Korea)
     * @const
     */
    const ko_KR: ASRProfile;

    /**
     * Kyrgyz (Cyrillic)
     * @const
     */
    const ky_KG: ASRProfile;

    /**
     * Lao (Laos)
     * @const
     */
    const lo_LA: ASRProfile;

    /**
     * Latvian (Latvia)
     * @const
     */
    const lv_LV: ASRProfile;

    /**
     * Lingala (Congo-Kinshasa)
     * @const
     */
    const ln_CD: ASRProfile;

    /**
     * Lithuanian (Lithuania)
     * @const
     */
    const lt_LT: ASRProfile;

    /**
     * Luo (Kenya)
     * @const
     */
    const luo_KE: ASRProfile;

    /**
     * Luxembourgish (Luxembourg)
     * @const
     */
    const lb_LU: ASRProfile;

    /**
     * Macedonian (North Macedonia)
     * @const
     */
    const mk_MK: ASRProfile;

    /**
     * Malay (Malaysia)
     * @const
     */
    const ms_MY: ASRProfile;

    /**
     * Malayalam (India)
     * @const
     */
    const ml_IN: ASRProfile;

    /**
     * Maltese (Malta)
     * @const
     */
    const mt_MT: ASRProfile;

    /**
     * Maori (New Zealand)
     * @const
     */
    const mi_NZ: ASRProfile;

    /**
     * Marathi (India)
     * @const
     */
    const mr_IN: ASRProfile;

    /**
     * Mongolian (Mongolia)
     * @const
     */
    const mn_MN: ASRProfile;

    /**
     * Nepali (Nepal)
     * @const
     */
    const ne_NP: ASRProfile;

    /**
     * Norwegian Bokmål (Norway)
     * @const
     */
    const no_NO: ASRProfile;

    /**
     * Nyanja (Malawi)
     * @const
     */
    const ny_MW: ASRProfile;

    /**
     * Occitan (France)
     * @const
     */
    const oc_FR: ASRProfile;

    /**
     * Oriya (India)
     * @const
     */
    const or_IN: ASRProfile;

    /**
     * Oromo (Ethiopia)
     * @const
     */
    const om_ET: ASRProfile;

    /**
     * Pashto
     * @const
     */
    const ps_AF: ASRProfile;

    /**
     * Persian (Iran)
     * @const
     */
    const fa_IR: ASRProfile;

    /**
     * Polish (Poland)
     * @const
     */
    const pl_PL: ASRProfile;

    /**
     * Portuguese (Brazil)
     * @const
     */
    const pt_BR: ASRProfile;

    /**
     * Portuguese (Portugal)
     * @const
     */
    const pt_PT: ASRProfile;

    /**
     * Punjabi (Gurmukhi India)
     * @const
     */
    const pa_Guru_IN: ASRProfile;

    /**
     * Romanian (Romania)
     * @const
     */
    const ro_RO: ASRProfile;

    /**
     * Russian (Russia)
     * @const
     */
    const ru_RU: ASRProfile;

    /**
     * Sepedi (South Africa)
     * @const
     */
    const nso_ZA: ASRProfile;

    /**
     * Serbian (Serbia)
     * @const
     */
    const sr_RS: ASRProfile;

    /**
     * Shona (Zimbabwe)
     * @const
     */
    const sn_ZW: ASRProfile;

    /**
     * Sindhi (India)
     * @const
     */
    const sd_IN: ASRProfile;

    /**
     * Sinhala (Sri Lanka)
     * @const
     */
    const si_LK: ASRProfile;

    /**
     * Slovak (Slovakia)
     * @const
     */
    const sk_SK: ASRProfile;

    /**
     * Slovenian (Slovenia)
     * @const
     */
    const sl_SI: ASRProfile;

    /**
     * Somali
     * @const
     */
    const so_SO: ASRProfile;

    /**
     * Spanish (Mexico)
     * @const
     */
    const es_MX: ASRProfile;

    /**
     * Spanish (Spain)
     * @const
     */
    const es_ES: ASRProfile;

    /**
     * Spanish (United States)
     * @const
     */
    const es_US: ASRProfile;

    /**
     * Sundanese (Indonesia)
     * @const
     */
    const su_ID: ASRProfile;

    /**
     * Swahili (Kenya)
     * @const
     */
    const sw_KE: ASRProfile;

    /**
     * Swedish (Sweden)
     * @const
     */
    const sv_SE: ASRProfile;

    /**
     * Tajik (Tajikistan)
     * @const
     */
    const tg_TJ: ASRProfile;

    /**
     * Tamil (India)
     * @const
     */
    const ta_IN: ASRProfile;

    /**
     * Telugu (India)
     * @const
     */
    const te_IN: ASRProfile;

    /**
     * Thai (Thailand)
     * @const
     */
    const th_TH: ASRProfile;

    /**
     * Turkish (Turkey)
     * @const
     */
    const tr_TR: ASRProfile;

    /**
     * Ukrainian (Ukraine)
     * @const
     */
    const uk_UA: ASRProfile;

    /**
     * Umbundu (Angola)
     * @const
     */
    const umb_AO: ASRProfile;

    /**
     * Urdu (Pakistan)
     * @const
     */
    const ur_PK: ASRProfile;

    /**
     * Uzbek (Uzbekistan)
     * @const
     */
    const uz_UZ: ASRProfile;

    /**
     * Vietnamese (Vietnam)
     * @const
     */
    const vi_VN: ASRProfile;

    /**
     * Welsh (United Kingdom)
     * @const
     */
    const cy_GB: ASRProfile;

    /**
     * Wolof (Senegal)
     * @const
     */
    const wo_SN: ASRProfile;

    /**
     * Xhosa (South Africa)
     * @const
     */
    const xh_ZA: ASRProfile;

    /**
     * Yoruba (Nigeria)
     * @const
     */
    const yo_NG: ASRProfile;

    /**
     * Zulu (South Africa)
     * @const
     */
    const zu_ZA: ASRProfile;

    /**
     * Dutch (Belgium)
     * @const
     */
    const nl_BE: ASRProfile;

    /**
     * English (Hong Kong)
     * @const
     */
    const en_HK: ASRProfile;

    /**
     * English (Ireland)
     * @const
     */
    const en_IE: ASRProfile;

    /**
     * English (New Zealand)
     * @const
     */
    const en_NZ: ASRProfile;

    /**
     * English (Pakistan)
     * @const
     */
    const en_PK: ASRProfile;

    /**
     * English (Singapore)
     * @const
     */
    const en_SG: ASRProfile;

    /**
     * French (Belgium)
     * @const
     */
    const fr_BE: ASRProfile;

    /**
     * French (Switzerland)
     * @const
     */
    const fr_CH: ASRProfile;

    /**
     * German (Austria)
     * @const
     */
    const de_AT: ASRProfile;

    /**
     * German (Switzerland)
     * @const
     */
    const de_CH: ASRProfile;

    /**
     * Italian (Switzerland)
     * @const
     */
    const it_CH: ASRProfile;

    /**
     * Kinyarwanda (Rwanda)
     * @const
     */
    const rw_RW: ASRProfile;

    /**
     * Southern Sotho (South Africa)
     * @const
     */
    const st_ZA: ASRProfile;

    /**
     * Spanish (Argentina)
     * @const
     */
    const es_AR: ASRProfile;

    /**
     * Spanish (Bolivia)
     * @const
     */
    const es_BO: ASRProfile;

    /**
     * Spanish (Chile)
     * @const
     */
    const es_CL: ASRProfile;

    /**
     * Spanish (Colombia)
     * @const
     */
    const es_CO: ASRProfile;

    /**
     * Spanish (Costa Rica)
     * @const
     */
    const es_CR: ASRProfile;

    /**
     * Spanish (Dominican Republic)
     * @const
     */
    const es_DO: ASRProfile;

    /**
     * Spanish (Ecuador)
     * @const
     */
    const es_EC: ASRProfile;

    /**
     * Spanish (El Salvador)
     * @const
     */
    const es_SV: ASRProfile;

    /**
     * Spanish (Guatemala)
     * @const
     */
    const es_GT: ASRProfile;

    /**
     * Spanish (Honduras)
     * @const
     */
    const es_HN: ASRProfile;

    /**
     * Spanish (Nicaragua)
     * @const
     */
    const es_NI: ASRProfile;

    /**
     * Spanish (Panama)
     * @const
     */
    const es_PA: ASRProfile;

    /**
     * Spanish (Peru)
     * @const
     */
    const es_PE: ASRProfile;

    /**
     * Spanish (Puerto Rico)
     * @const
     */
    const es_PR: ASRProfile;

    /**
     * Spanish (Uruguay)
     * @const
     */
    const es_UY: ASRProfile;

    /**
     * Spanish (Venezuela)
     * @const
     */
    const es_VE: ASRProfile;

    /**
     * Swati (Latin, South Africa)
     * @const
     */
    const ss_Latn_ZA: ASRProfile;

    /**
     * Tsonga (South Africa)
     * @const
     */
    const ts_ZA: ASRProfile;

    /**
     * Tswana (Latin, South Africa)
     * @const
     */
    const tn_Latn_ZA: ASRProfile;

    /**
     * Venda (South Africa)
     * @const
     */
    const ve_ZA: ASRProfile;

    /**
     * English (Canada)
     * @const
     */
    const en_CA: ASRProfile;
  }
}

declare namespace ASRProfileList {
  /**
   * List of Microsoft ASR profiles. Can be passed via the [ASRParameters.profile] parameter.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace Microsoft {
    /**
     * Afrikaans (South Africa)
     * @const
     */
    const af_ZA: ASRProfile;

    /**
     * Amharic (Ethiopia)
     * @const
     */
    const am_ET: ASRProfile;

    /**
     * Arabic (United Arab Emirates)
     * @const
     */
    const ar_AE: ASRProfile;

    /**
     * Arabic (Bahrain)
     * @const
     */
    const ar_BH: ASRProfile;

    /**
     * Arabic (Algeria)
     * @const
     */
    const ar_DZ: ASRProfile;

    /**
     * Arabic (Egypt)
     * @const
     */
    const ar_EG: ASRProfile;

    /**
     * Arabic (Israel)
     * @const
     */
    const ar_IL: ASRProfile;

    /**
     * Arabic (Iraq)
     * @const
     */
    const ar_IQ: ASRProfile;

    /**
     * Arabic (Jordan)
     * @const
     */
    const ar_JO: ASRProfile;

    /**
     * Arabic (Kuwait)
     * @const
     */
    const ar_KW: ASRProfile;

    /**
     * Arabic (Lebanon)
     * @const
     */
    const ar_LB: ASRProfile;

    /**
     * Arabic (Libya)
     * @const
     */
    const ar_LY: ASRProfile;

    /**
     * Arabic (Morocco)
     * @const
     */
    const ar_MA: ASRProfile;

    /**
     * Arabic (Oman)
     * @const
     */
    const ar_OM: ASRProfile;

    /**
     * Arabic (Palestinian Authority)
     * @const
     */
    const ar_PS: ASRProfile;

    /**
     * Arabic (Qatar)
     * @const
     */
    const ar_QA: ASRProfile;

    /**
     * Arabic (Saudi Arabia)
     * @const
     */
    const ar_SA: ASRProfile;

    /**
     * Arabic (Syria)
     * @const
     */
    const ar_SY: ASRProfile;

    /**
     * Arabic (Tunisia)
     * @const
     */
    const ar_TN: ASRProfile;

    /**
     * Arabic (Yemen)
     * @const
     */
    const ar_YE: ASRProfile;

    /**
     * Assamese (India)
     * @const
     */
    const as_IN: ASRProfile;

    /**
     * Azerbaijani (Latin, Azerbaijan)
     * @const
     */
    const az_AZ: ASRProfile;

    /**
     * Bulgarian (Bulgaria)
     * @const
     */
    const bg_BG: ASRProfile;

    /**
     * Bengali (India)
     * @const
     */
    const bn_IN: ASRProfile;

    /**
     * Bosnian (Bosnia and Herzegovina)
     * @const
     */
    const bs_BA: ASRProfile;

    /**
     * Catalan
     * @const
     */
    const ca_ES: ASRProfile;

    /**
     * Czech (Czechia)
     * @const
     */
    const cs_CZ: ASRProfile;

    /**
     * Welsh (United Kingdom)
     * @const
     */
    const cy_GB: ASRProfile;

    /**
     * Danish (Denmark)
     * @const
     */
    const da_DK: ASRProfile;

    /**
     * German (Austria)
     * @const
     */
    const de_AT: ASRProfile;

    /**
     * German (Switzerland)
     * @const
     */
    const de_CH: ASRProfile;

    /**
     * German (Germany)
     * @const
     */
    const de_DE: ASRProfile;

    /**
     * Greek (Greece)
     * @const
     */
    const el_GR: ASRProfile;

    /**
     * English (Australia)
     * @const
     */
    const en_AU: ASRProfile;

    /**
     * English (Canada)
     * @const
     */
    const en_CA: ASRProfile;

    /**
     * English (United Kingdom)
     * @const
     */
    const en_GB: ASRProfile;

    /**
     * English (Ghana)
     * @const
     */
    const en_GH: ASRProfile;

    /**
     * English (Hong Kong SAR)
     * @const
     */
    const en_HK: ASRProfile;

    /**
     * English (Ireland)
     * @const
     */
    const en_IE: ASRProfile;

    /**
     * English (India)
     * @const
     */
    const en_IN: ASRProfile;

    /**
     * English (Kenya)
     * @const
     */
    const en_KE: ASRProfile;

    /**
     * English (Nigeria)
     * @const
     */
    const en_NG: ASRProfile;

    /**
     * English (New Zealand)
     * @const
     */
    const en_NZ: ASRProfile;

    /**
     * English (Philippines)
     * @const
     */
    const en_PH: ASRProfile;

    /**
     * English (Singapore)
     * @const
     */
    const en_SG: ASRProfile;

    /**
     * English (Tanzania)
     * @const
     */
    const en_TZ: ASRProfile;

    /**
     * English (United States)
     * @const
     */
    const en_US: ASRProfile;

    /**
     * English (South Africa)
     * @const
     */
    const en_ZA: ASRProfile;

    /**
     * Spanish (Argentina)
     * @const
     */
    const es_AR: ASRProfile;

    /**
     * Spanish (Bolivia)
     * @const
     */
    const es_BO: ASRProfile;

    /**
     * Spanish (Chile)
     * @const
     */
    const es_CL: ASRProfile;

    /**
     * Spanish (Colombia)
     * @const
     */
    const es_CO: ASRProfile;

    /**
     * Spanish (Costa Rica)
     * @const
     */
    const es_CR: ASRProfile;

    /**
     * Spanish (Cuba)
     * @const
     */
    const es_CU: ASRProfile;

    /**
     * Spanish (Dominican Republic)
     * @const
     */
    const es_DO: ASRProfile;

    /**
     * Spanish (Ecuador)
     * @const
     */
    const es_EC: ASRProfile;

    /**
     * Spanish (Spain)
     * @const
     */
    const es_ES: ASRProfile;

    /**
     * Spanish (Equatorial Guinea)
     * @const
     */
    const es_GQ: ASRProfile;

    /**
     * Spanish (Guatemala)
     * @const
     */
    const es_GT: ASRProfile;

    /**
     * Spanish (Honduras)
     * @const
     */
    const es_HN: ASRProfile;

    /**
     * Spanish (Mexico)
     * @const
     */
    const es_MX: ASRProfile;

    /**
     * Spanish (Nicaragua)
     * @const
     */
    const es_NI: ASRProfile;

    /**
     * Spanish (Panama)
     * @const
     */
    const es_PA: ASRProfile;

    /**
     * Spanish (Peru)
     * @const
     */
    const es_PE: ASRProfile;

    /**
     * Spanish (Puerto Rico)
     * @const
     */
    const es_PR: ASRProfile;

    /**
     * Spanish (Paraguay)
     * @const
     */
    const es_PY: ASRProfile;

    /**
     * Spanish (El Salvador)
     * @const
     */
    const es_SV: ASRProfile;

    /**
     * Spanish (United States)
     * @const
     */
    const es_US: ASRProfile;

    /**
     * Spanish (Uruguay)
     * @const
     */
    const es_UY: ASRProfile;

    /**
     * Spanish (Venezuela)
     * @const
     */
    const es_VE: ASRProfile;

    /**
     * Estonian (Estonia)
     * @const
     */
    const et_EE: ASRProfile;

    /**
     * Basque
     * @const
     */
    const eu_ES: ASRProfile;

    /**
     * Persian (Iran)
     * @const
     */
    const fa_IR: ASRProfile;

    /**
     * Finnish (Finland)
     * @const
     */
    const fi_FI: ASRProfile;

    /**
     * Filipino (Philippines)
     * @const
     */
    const fil_PH: ASRProfile;

    /**
     * French (Belgium)
     * @const
     */
    const fr_BE: ASRProfile;

    /**
     * French (Canada)
     * @const
     */
    const fr_CA: ASRProfile;

    /**
     * French (Switzerland)
     * @const
     */
    const fr_CH: ASRProfile;

    /**
     * French (France)
     * @const
     */
    const fr_FR: ASRProfile;

    /**
     * Irish (Ireland)
     * @const
     */
    const ga_IE: ASRProfile;

    /**
     * Galician
     * @const
     */
    const gl_ES: ASRProfile;

    /**
     * Gujarati (India)
     * @const
     */
    const gu_IN: ASRProfile;

    /**
     * Hebrew (Israel)
     * @const
     */
    const he_IL: ASRProfile;

    /**
     * Hindi (India)
     * @const
     */
    const hi_IN: ASRProfile;

    /**
     * Croatian (Croatia)
     * @const
     */
    const hr_HR: ASRProfile;

    /**
     * Hungarian (Hungary)
     * @const
     */
    const hu_HU: ASRProfile;

    /**
     * Armenian (Armenia)
     * @const
     */
    const hy_AM: ASRProfile;

    /**
     * Indonesian (Indonesia)
     * @const
     */
    const id_ID: ASRProfile;

    /**
     * Icelandic (Iceland)
     * @const
     */
    const is_IS: ASRProfile;

    /**
     * Italian (Switzerland)
     * @const
     */
    const it_CH: ASRProfile;

    /**
     * Italian (Italy)
     * @const
     */
    const it_IT: ASRProfile;

    /**
     * Japanese (Japan)
     * @const
     */
    const ja_JP: ASRProfile;

    /**
     * Javanese (Latin, Indonesia)
     * @const
     */
    const jv_ID: ASRProfile;

    /**
     * Georgian (Georgia)
     * @const
     */
    const ka_GE: ASRProfile;

    /**
     * Kazakh (Kazakhstan)
     * @const
     */
    const kk_KZ: ASRProfile;

    /**
     * Khmer (Cambodia)
     * @const
     */
    const km_KH: ASRProfile;

    /**
     * Kannada (India)
     * @const
     */
    const kn_IN: ASRProfile;

    /**
     * Korean (Korea)
     * @const
     */
    const ko_KR: ASRProfile;

    /**
     * Lao (Laos)
     * @const
     */
    const lo_LA: ASRProfile;

    /**
     * Lithuanian (Lithuania)
     * @const
     */
    const lt_LT: ASRProfile;

    /**
     * Latvian (Latvia)
     * @const
     */
    const lv_LV: ASRProfile;

    /**
     * Macedonian (North Macedonia)
     * @const
     */
    const mk_MK: ASRProfile;

    /**
     * Malayalam (India)
     * @const
     */
    const ml_IN: ASRProfile;

    /**
     * Mongolian (Mongolia)
     * @const
     */
    const mn_MN: ASRProfile;

    /**
     * Marathi (India)
     * @const
     */
    const mr_IN: ASRProfile;

    /**
     * Malay (Malaysia)
     * @const
     */
    const ms_MY: ASRProfile;

    /**
     * Maltese (Malta)
     * @const
     */
    const mt_MT: ASRProfile;

    /**
     * Burmese (Myanmar)
     * @const
     */
    const my_MM: ASRProfile;

    /**
     * Norwegian Bokmål (Norway)
     * @const
     */
    const nb_NO: ASRProfile;

    /**
     * Nepali (Nepal)
     * @const
     */
    const ne_NP: ASRProfile;

    /**
     * Dutch (Belgium)
     * @const
     */
    const nl_BE: ASRProfile;

    /**
     * Dutch (Netherlands)
     * @const
     */
    const nl_NL: ASRProfile;

    /**
     * Odia (India)
     * @const
     */
    const or_IN: ASRProfile;

    /**
     * Punjabi (India)
     * @const
     */
    const pa_IN: ASRProfile;

    /**
     * Polish (Poland)
     * @const
     */
    const pl_PL: ASRProfile;

    /**
     * Pashto (Afghanistan)
     * @const
     */
    const ps_AF: ASRProfile;

    /**
     * Portuguese (Brazil)
     * @const
     */
    const pt_BR: ASRProfile;

    /**
     * Portuguese (Portugal)
     * @const
     */
    const pt_PT: ASRProfile;

    /**
     * Romanian (Romania)
     * @const
     */
    const ro_RO: ASRProfile;

    /**
     * Russian (Russia)
     * @const
     */
    const ru_RU: ASRProfile;

    /**
     * Sinhala (Sri Lanka)
     * @const
     */
    const si_LK: ASRProfile;

    /**
     * Slovak (Slovakia)
     * @const
     */
    const sk_SK: ASRProfile;

    /**
     * Slovenian (Slovenia)
     * @const
     */
    const sl_SI: ASRProfile;

    /**
     * Somali (Somalia)
     * @const
     */
    const so_SO: ASRProfile;

    /**
     * Albanian (Albania)
     * @const
     */
    const sq_AL: ASRProfile;

    /**
     * Serbian (Cyrillic, Serbia)
     * @const
     */
    const sr_RS: ASRProfile;

    /**
     * Swedish (Sweden)
     * @const
     */
    const sv_SE: ASRProfile;

    /**
     * Kiswahili (Kenya)
     * @const
     */
    const sw_KE: ASRProfile;

    /**
     * Kiswahili (Tanzania)
     * @const
     */
    const sw_TZ: ASRProfile;

    /**
     * Tamil (India)
     * @const
     */
    const ta_IN: ASRProfile;

    /**
     * Telugu (India)
     * @const
     */
    const te_IN: ASRProfile;

    /**
     * Thai (Thailand)
     * @const
     */
    const th_TH: ASRProfile;

    /**
     * Turkish (Türkiye)
     * @const
     */
    const tr_TR: ASRProfile;

    /**
     * Ukrainian (Ukraine)
     * @const
     */
    const uk_UA: ASRProfile;

    /**
     * Urdu (India)
     * @const
     */
    const ur_IN: ASRProfile;

    /**
     * Uzbek (Uzbekistan)
     * @const
     */
    const uz_UZ: ASRProfile;

    /**
     * Vietnamese (Vietnam)
     * @const
     */
    const vi_VN: ASRProfile;

    /**
     * Chinese (Wu, Simplified)
     * @const
     */
    const wuu_CN: ASRProfile;

    /**
     * Chinese (Cantonese, Simplified)
     * @const
     */
    const yue_CN: ASRProfile;

    /**
     * Chinese (Mandarin, Simplified)
     * @const
     */
    const zh_CN: ASRProfile;

    /**
     * Chinese (Jilu Mandarin, Simplified)
     * @const
     */
    const zh_CN_shandong: ASRProfile;

    /**
     * Chinese (Southwestern Mandarin, Simplified)
     * @const
     */
    const zh_CN_sichuan: ASRProfile;

    /**
     * Chinese (Cantonese, Traditional)
     * @const
     */
    const zh_HK: ASRProfile;

    /**
     * Chinese (Taiwanese Mandarin, Traditional)
     * @const
     */
    const zh_TW: ASRProfile;

    /**
     * isiZulu (South Africa)
     * @const
     */
    const zu_ZA: ASRProfile;
  }
}

declare namespace ASRProfileList {
  /**
   * List of SaluteSpeech ASR profiles. Can be passed via the [ASRParameters.profile] parameter.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace SaluteSpeech {
    /**
     * Russian (Russia)
     * @const
     */
    const ru_RU: ASRProfile;
  }
}

declare namespace ASRProfileList {
  /**
   * List of T-Bank ASR profiles. Can be passed via the [ASRParameters.profile] parameter.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace TBank {
    /**
     * Russian (Russia)
     * @const
     */
    const ru_RU: ASRProfile;
  }
}

declare namespace ASRProfileList {
  /**
   * List of Yandex ASR profiles. Can be passed via the [ASRParameters.profile] parameter.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace Yandex {
    /**
     * Automatic language recognition
     * @const
     */
    const auto: ASRProfile;
    /**
     * German (Germany)
     * @const
     */
    const de_DE: ASRProfile;
    /**
     * English (United States)
     * @const
     */
    const en_US: ASRProfile;
    /**
     * Spanish (Spain)
     * @const
     */
    const es_ES: ASRProfile;
    /**
     * Finnish (Finland)
     * @const
     */
    const fi_FI: ASRProfile;
    /**
     * French (France)
     * @const
     */
    const fr_FR: ASRProfile;
    /**
     * Hebrew (Israel)
     * @const
     */
    const he_HE: ASRProfile;
    /**
     * Italian (Italy)
     * @const
     */
    const it_IT: ASRProfile;
    /**
     * Kazakh (Kazakhstan)
     * @const
     */
    const kk_KK: ASRProfile;
    /**
     * Dutch (Holland)
     * @const
     */
    const nl_NL: ASRProfile;
    /**
     * Polish (Poland)
     * @const
     */
    const pl_PL: ASRProfile;
    /**
     * Portuguese (Portugal)
     * @const
     */
    const pt_PT: ASRProfile;
    /**
     * Portuguese (Brazilian)
     * @const
     */
    const pt_BR: ASRProfile;
    /**
     * Russian (Russia)
     * @const
     */
    const ru_RU: ASRProfile;
    /**
     * Swedish (Sweden)
     * @const
     */
    const sv_SE: ASRProfile;
    /**
     * Turkish (Turkey)
     * @const
     */
    const tr_TR: ASRProfile;
    /**
     * Uzbek (Uzbekistan)
     * @const
     */
    const uz_UZ: ASRProfile;
  }
}

declare namespace ASRProfileList {
  /**
   * List of YandexV3 ASR profiles. Can be passed via the [ASRParameters.profile] parameter.
   * <br>
   * Add the following line to your scenario code to use the enum:
   * ```
   * require(Modules.ASR);
   * ```
   */
  namespace YandexV3 {
    /**
     * Automatic language recognition
     * @const
     */
    const auto: ASRProfile;
    /**
     * German (Germany)
     * @const
     */
    const de_DE: ASRProfile;
    /**
     * English (United States)
     * @const
     */
    const en_US: ASRProfile;
    /**
     * Spanish (Spain)
     * @const
     */
    const es_ES: ASRProfile;
    /**
     * Finnish (Finland)
     * @const
     */
    const fi_FI: ASRProfile;
    /**
     * French (France)
     * @const
     */
    const fr_FR: ASRProfile;
    /**
     * Hebrew (Israel)
     * @const
     */
    const he_HE: ASRProfile;
    /**
     * Italian (Italy)
     * @const
     */
    const it_IT: ASRProfile;
    /**
     * Kazakh (Kazakhstan)
     * @const
     */
    const kk_KK: ASRProfile;
    /**
     * Dutch (Holland)
     * @const
     */
    const nl_NL: ASRProfile;
    /**
     * Polish (Poland)
     * @const
     */
    const pl_PL: ASRProfile;
    /**
     * Portuguese (Portugal)
     * @const
     */
    const pt_PT: ASRProfile;
    /**
     * Portuguese (Brazilian)
     * @const
     */
    const pt_BR: ASRProfile;
    /**
     * Russian (Russia)
     * @const
     */
    const ru_RU: ASRProfile;
    /**
     * Swedish (Sweden)
     * @const
     */
    const sv_SE: ASRProfile;
    /**
     * Turkish (Turkey)
     * @const
     */
    const tr_TR: ASRProfile;
    /**
     * Uzbek (Uzbekistan)
     * @const
     */
    const uz_UZ: ASRProfile;
  }
}

/**
 * Represents a profile that specifies an ASR provider and a language to use. List of all supported profiles: [ASRProfileList].
 */
declare class ASRProfile {}
/**
 * Decodes the data in the Base64 encoding
 * @param data Data to decode
 */
declare function base64_decode(data: string): number[];

/**
 * Encodes a string or array of integers from 0 to 255 to the Base64 encoding
 * @param data String or array of integers from 0 to 255 to encode
 */
declare function base64_encode(data: string | number[]): string;

/**
 * Creates a hex string from given bytes array.
 * @param data Array of numbers to convert into a string
 * @param toUpperCase Whether the resulting string has uppercase 'A-F' chars. Default is **false**
 */
declare function bytes2hex(data: number[], toUpperCase: boolean): string;

/**
 * Creates a string from an array of numbers with specified encoding
 * @param data Array of integers from 0 to 255 to create a string from
 * @param encoding Encoding to use for string creation, the default value is **utf-8**
 */
declare function bytes2str(data: number[], encoding: string): string;

/**
 * Avatar text and voice channel parameters. Can be passed via the [AvatarResponseParameters.channelParameters](/docs/references/avatarengine/avatarresponseparameters#channelparameters) parameter.
 */
declare interface ChannelParameters {
  /**
   * Optional. Avatar voice channel parameters
   */
  voice?: VoiceChannelParameters;
  /**
   * Optional. Avatar text channel parameters
   */
  text?: TextChannelParameters;
}

/**
 * Cancels a timed, repeating action which is previously established by a call to setInterval().
 * @param intervalID The identifier of the repeated action you want to cancel. This ID is returned by the corresponding call
 */
declare function clearInterval(intervalID: number): void;

/**
 * Cancels a timeout previously established by calling setTimeout().
 * @param timeoutID The identifier of the timeout you want to cancel. This ID is returned by the corresponding call
 */
declare function clearTimeout(timeoutID: number): void;

/**
 * Converts the date to the specified local timezone. Note that `new Date()` always returns time in the UTC+0 timezone.
 * @param timezone Local timezone in the AREA/LOCATION format of the [tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
 * @param date Instance of the `Date` object
 */
declare function getLocalTime(timezone: string, date: Date): Date;

/**
 * Creates an array of numbers from parsing a hex string
 * @param data Hex string like "cafec0de"
 */
declare function hex2bytes(data: string): number[];

/**
 * Count the number of deletions, insertions, or substitutions required to transform str1 into str2. The number shows a measure of the similarity between two strings. It is also known as edit distance.
 * @param str1 First string
 * @param str2 Second string
 */
declare function levenshtein_distance(str1: string, str2: string): number;

declare namespace Logger {
}

declare namespace Logger {
  /**
   * Writes a specified message to the session logger. Logs are stored in the [call history](https://manage.voximplant.com/calls).
   * @param message Message to write. Maximum length is 15000 characters
   */
  function write(message: string): void;
}

declare namespace Net {
  /**
   * Advanced HTTP request options.
   */
  interface HttpRequestOptions {
    /**
     * HTTP request type as a string: **GET**, **POST** etc. The default value is **GET**.
     */
    method?: string;
    /**
     * Optional. Raw UTF-8 encoded data string or an array of bytes in any encoding generated by [str2bytes](/docs/references/voxengine/str2bytes) to send as the HTTP request body when 'method' is set to **POST**, **PUT**, or **PATCH**.
     */
    postData?: string | number[];
    /**
     * Optional. Request headers: {'Content-Type': 'text/html; charset=utf-8', 'User-Agent': 'YourCustomUserAgent/1.0'}. Note that the default value for the 'User-Agent' header is **VoxEngine/1.0**.
     */
    headers?: { [key: string]: string };
    /**
     * Optional. Request parameters. They can be specified in the URL itself as well.
     */
    params?: {
      [key: string]: string;
    };
    /**
     * Optional. Whether [HttpRequestResult.data](/docs/references/voxengine/net/httprequestresult#data) should contain a list of 1-byte numbers corresponding to the HTTP response data. If set to **false**, [HttpRequestResult.data](/docs/references/voxengine/net/httprequestresult#data) is undefined.
     */
    rawOutput?: boolean;
    /**
     * Optional. Timeout for getting a response to the request in seconds. The default value is **90**. The value can be only decreased.
     */
    timeout?: number;
    /**
     * Optional. Timeout for the TCP connection to the address in seconds. The default value is **6**. The value can be only decreased.
     */
    connectionTimeout?: number;
    /**
     * Optional. Whether to enable logging the POST request body. The default value is **false**.
     */
    enableSystemLog?: boolean;
  }
}

declare namespace Net {
  /**
   * HTTP response.
   */
  interface HttpRequestResult {
    /**
     * Response code. HTTP code (2xx-5xx) or one of our internal status codes
     * <table><tr><td>0</td><td><a href="//voximplant.com/docs/references/voxengine/">Voxengine limits</a> are violated (e.g. HTTP request count exceeded)</td></tr><tr><td>-1</td><td>Unknown error</td></tr><tr><td>-2</td><td>Malformed URL</td></tr><tr><td>-3</td><td>Host not found</td></tr><tr><td>-4</td><td>Connection error</td></tr><tr><td>-5</td><td>Too many redirects</td></tr><tr><td>-6</td><td>Network error</td></tr><tr><td>-7</td><td>Timeout</td></tr><tr><td>-8</td><td>Internal error</td></tr><tr><td>-9</td><td>Server response is larger than 2 MB</td></tr></table>
     */
    code: number;
    /**
     * HTTP header string returned by the remote server, without processing
     */
    raw_headers?: string;
    /**
     * List of dictionaries with key and value fields representing HTTP headers returned by the remote server
     */
    headers?: { key: string; value: string }[];
    /**
     * HTTP response body if Content-Type is not binary
     */
    text?: string;
    /**
     * If [HttpRequestOptions.rawOutput](/docs/references/voxengine/net/httprequestoptions#rawoutput) is true, data contains a list of 1-byte numbers corresponding to HTTP response data. If [HttpRequestOptions.rawOutput](/docs/references/voxengine/net/httprequestoptions#rawoutput) is false, data is undefined.
     */
    data?: number[];
    /**
     * In case of an error contains the error description
     */
    error?: string;
  }
}

declare namespace Net {}

/**
 * Avatar voice channel playback parameters. Can be passed via the [VoiceChannelParameters.playback] parameter.
 */
declare type PlaybackParameters = TTSPlaybackParameters | URLPlaybackParameters | SequencePlaybackParameters;

/**
 * Can be passed via the [RichContentButtonItem.action] parameter.
 */
declare interface RichContentButtonAction {
  /**
   * Rich content type.
   */
  type: 'text' | 'location' | 'camera' | 'camera_roll' | 'phone_call' | 'contact' | 'uri';
  /**
   * Optional. Used for the "uri" type only.
   */
  uri?: string;
}

/**
 * Can be passed via the [RichContentButtons.items] parameter.
 */
declare interface RichContentButtonItem {
  /**
   * Rich content button text.
   */
  text: string;
  /**
   * Rich content button action.
   */
  action: RichContentButtonAction;
  /**
   * Message to the avatar when the button is clicked.
   */
  payload?: any;
}

/**
 * Can be passed via the [RichContent.buttons] parameter.
 */
declare interface RichContentButtons {
  /**
   * Rich content button text.
   */
  text: string;
  /**
   * Rich content button items.
   */
  items: RichContentButtonItem[];
}

/**
 * Can be passed via the [RichContent.contact] parameter.
 */
declare interface RichContentContact {
  name: string;
  number: string;
  avatar?: string;
}

/**
 * Can be passed via the [RichContent.externalLink] parameter.
 */
declare interface RichContentExternalLink {
  /**
   * Link's text.
   */
  caption: string;
  /**
   * Link's URL address.
   */
  url: string;
}

/**
 * Can be passed via the [RichContent.image] or [RichContent.file] parameter.
 */
declare interface RichContentFile {
  /**
   * URL to the image/file location.
   */
  url: string;
  /**
   * Caption for the image/file.
   */
  caption: string;
  /**
   * File name.
   */
  fileName: string;
  /**
   * File size.
   */
  fileSize: number;
  /**
   * Content type.
   */
  contentType: string;
}

/**
 * Can be passed via the [RichContent.location] parameter.
 */
declare interface RichContentLocation {
  latitude: number;
  longitude: number;
  address?: string;
}

/**
 * Can be passed via the [RichContent.video] or [RichContent.audio] parameter.
 */
declare interface RichContentMedia extends RichContentFile {
  duration: number;
}

/**
 * Can be passed via the [TextChannelParameters.richContent] parameter.
 */
declare interface RichContent {
  /**
   * Button for the rich content response.
   */
  buttons?: RichContentButtons;
  /**
   * Location for the rich content response.
   */
  location?: RichContentLocation;
  /**
   * Image for the rich content response.
   */
  image?: RichContentFile;
  /**
   * File for the rich content response.
   */
  file?: RichContentFile;
  /**
   * Video for the rich content response.
   */
  video?: RichContentMedia;
  /**
   * Audio for the rich content response.
   */
  audio?: RichContentMedia;
  /**
   * Link for the rich content response.
   */
  externalLink?: RichContentExternalLink;
  /**
   * Contact data for the rich content response.
   */
  contact?: RichContentContact;
  /**
   * Text string for the rich content response.
   */
  text?: string;
}

/**
 * Avatar voice channel sequence playback parameters. Can be passed via the [VoiceChannelParameters.playback] parameter.
 */
declare interface SequencePlaybackParameters {
  /**
   * Array of the segments.
   */
  segments: SequencePlaybackSegment[];
}

/**
 * Sequence of the voice channel TTS and URL playback segments. Can be passed via the [SequencePlaybackParameters.segments] parameter.
 */
declare type SequencePlaybackSegment = TTSPlaybackParameters | URLPlaybackParameters;

/**
 * Repeatedly calls a function or executes a code snippet, with a fixed time delay between each call.
 * @param callback A function to be executed every specified milliseconds. The function should not have any parameters, and no return value is expected
 * @param timeout The time, in milliseconds (thousandths of a second), the timer specifies the delay between executions of the specified function or code. If this parameter is less than 100, a value of 100 is used. Note that the actual delay might be longer
 */
declare function setInterval(callback: () => any, timeout?: number): number;

/**
 * Sets a timer which executes a function or specified piece of code once after the timer expires.
 * @param callback A function to be executed after the timer expires
 * @param timeout The time, in milliseconds (thousandths of a second), the timer should wait before the specified function or code is executed. If this parameter is omitted, a value of 0 is used, meaning execute "immediately", or more accurately, as soon as possible. Note that in either case, the actual delay may be longer than intended
 */
declare function setTimeout(callback: () => any, timeout?: number): number;

/**
 * Creates an array of numbers from parsing string in specified codepage
 * @param data String to parse
 * @param encoding String encoding, the default value is **utf-8**
 */
declare function str2bytes(data: string, encoding: string): number[];

/**
 * Avatar text channel parameters. Can be passed via the [ChannelParameters.text] parameter.
 */
declare interface TextChannelParameters {
  /**
   * Response of the rich content type.
   */
  richContent: RichContent;
}

/**
 * List of available audio effect (profiles that are applied on post synthesized text to speech) for the [TTSOptions.effectsProfileId](/docs/references/voxengine/ttsoptions#effectsprofileid) parameter.
 */
declare enum TTSEffectsProfile {
  /**
   * Smartwatches and other wearables, like Apple Watch, Wear OS watch
   */
  WearableClassDevice = 'wearable-class-device',
  /**
   * Smartphones, like Google Pixel, Samsung Galaxy, Apple iPhone
   */
  HandsetClassDevice = 'handset-class-device',
  /**
   * Earbuds or headphones for audio playback, like Sennheiser headphones
   */
  HeadphoneClassDevice = 'headphone-class-device',
  /**
   * Small home speakers, like Google Home Mini
   */
  SmallBluetoothSpeakerClassDevice = 'small-bluetooth-speaker-class-device',
  /**
   * Smart home speakers, like Google Home
   */
  MediumBluetoothSpeakerClassDevice = 'medium-bluetooth-speaker-class-device',
  /**
   * Home entertainment systems or smart TVs, like Google Home Max, LG TV
   */
  LargeHomeEntertainmentClassDevice = 'large-home-entertainment-class-device',
  /**
   * Car speakers, home theaters
   */
  LargeAutomotiveClassDevice = 'large-automotive-class-device',
  /**
   * Interactive Voice Response (IVR) systems
   */
  TelephonyClassApplication = 'telephony-class-application',
}

/**
 * Text-to-speech options. Can be passed via the [CallSayParameters.ttsOptions](/docs/references/voxengine/callsayparameters#ttsoptions) and [TTSPlayerParameters.ttsOptions](/docs/references/voxengine/ttsplayerparameters#ttsoptions) parameter. See the details in the <a href="//www.w3.org/TR/speech-synthesis/#S3.2.4">official specs</a>.
 * <br>
 * Alternatively, you can pass the speech synthesis parameters to your TTS provider directly in the [request](https://voximplant.com/docs/references/voxengine/ttsplayerparameters#request) parameter in the JSON format.
 * Read more about passing the parameters directly in the [Speech synthesis](https://voximplant.com/docs/guides/speech/tts#passing-parameters-directly-to-the-provider) guide.
 */
declare interface TTSOptions {
  /**
   * Optional. Voice sentiment. For Yandex voices, works only for <a href="/docs/references/voxengine/voicelist/yandex/neural">ru_RU voices</a>.
   * <br>
   * <br>
   * *Available for providers: Yandex.*
   */
  emotion?: string;
  /**
   * Optional. Voice pitch. Acceptable ranges: 1) the numbers followed by "Hz" from 0.5Hz to 2Hz  2) x-low, low, medium, high, x-high, default.
   * <br>
   * <br>
   * *Available for providers: Google.*
   */
  pitch?: string;
  /**
   * Optional. Speech speed. Possible values are x-slow, slow, medium, fast, x-fast, default.
   * <br>
   * <br>
   * *Available for providers: Google, Yandex.*
   */
  rate?: string;
  /**
   * Optional. Speech volume. Possible values are silent, x-soft, soft, medium, loud, x-loud, default.
   * <br>
   * <br>
   * *Available for providers: Google.*
   */
  volume?: string;
  /**
   * Optional. Speech speed. Possible values are from "0.1" to "3.0".
   * <br>
   * <br>
   * *Available for providers: Yandex.*
   */
  speed?: string;
  /**
   * Optional. An identifier which selects 'audio effects' profiles that are applied on (post synthesized) text to speech. Effects are applied additionally to each other in the order they are provided.
   * <br>
   * <br>
   * *Available for providers: Google.*
   */
  effectsProfileId?: TTSEffectsProfile[];
  /**
   * Optional. If you have a custom Yandex engine voice, specify it in this field. Please contact support to activate this feature for your account.
   * <br>
   * <br>
   * *Available for providers: Yandex.*
   */
  yandexCustomModelName?: string;
}

/**
 * Avatar voice channel TTS playback parameters. Can be passed via the [VoiceChannelParameters.playback] parameter.
 * <br>
 * Has a similar interface to [URLPlayerSegment]((/docs/references/voxengine/urlplayersegment).
 */
declare interface TTSPlaybackParameters {
  /**
   * Text to synthesize.
   * <br>
   * NOTE: this parameter is required for the [AvatarState](/docs/references/avatarengine/avatarstate) (not for the [AvatarFormState](/docs/references/avatarengine/avatarformstate)), so if you want to use the value from the [VoximplantAvatar.Events.Reply](/docs/references/voxengine/voximplantavatar/events#reply) event's **utterance** parameter, specify it into the **text** parameter.
   */
  text: string;
  /**
   * Whether to enable the playback interruption.
   * <br>
   * NOTE: the segment with **allowPlaybackInterruption** parameter should be always followed by another segment eligible for playback interruption or should be the last segment.
   */
  allowPlaybackInterruption: true;
  /**
   * Optional. TTS [Player](/docs/references/voxengine/player) parameters.
   * <br>
   * NOTE: the default value is inherited from the [VoiceAvatarConfig.ttsPlayerOptions](/docs/references/voxengine/voximplantavatar/voiceavatarconfig) parameter.
   */
  parameters?: TTSPlayerParameters;
}

/**
 * TTS [Player](/docs/references/voxengine/player) parameters. Can be passed as arguments to the [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) method.
 */
declare interface TTSPlayerParameters {
  /**
   * Optional. API key for the TTS provider.
   * <br>
   * <br>
   * *Available for providers: ElevenLabs.*
   */
  apiKey?: string;
  /**
   * Optional. Voice for TTS. List of all supported voices: [VoiceList]. The default value is **VoiceList.Amazon.en_US_Joanna**.
   * <br>
   * <br>
   * *Available for providers: Amazon, Google, IBM, Microsoft, SaluteSpeech, T-Bank, Yandex, ElevenLabs.*
   */
  voice?: Voice;
  /**
   * Optional. Whether to use progressive playback. If **true**, the generated speech is delivered in chunks which reduces delay before a method call and playback. The default value is **false**.
   * <br>
   * <br>
   * *Available for providers: Amazon, Google, IBM, Microsoft, SaluteSpeech, T-Bank,Yandex.*
   */
  progressivePlayback?: boolean;
  /**
   * Optional. Parameters for TTS. Note that support of the [TTSOptions.pitch] parameter depends on the language and dictionary used. For unsupported combinations the [CallEvents.PlaybackFinished](/docs/references/voxengine/callevents#playbackfinished) event is triggered with error 400.
   * <br>
   * <br>
   * *Available for providers: Amazon, Google, IBM, Microsoft, SaluteSpeech, T-Bank,Yandex.*
   */
  ttsOptions?: TTSOptions;
  /**
   * Optional. Whether the player is on pause after creation. To continue the playback, use the [Player.resume](/docs/references/voxengine/player#resume) method. The default value is **false**.
   * <br>
   * <br>
   * *Available for providers: Amazon, Google, IBM, Microsoft, SaluteSpeech, T-Bank,Yandex, YandexV3.*
   */
  onPause?: boolean;
  /**
   * Optional. Provide the TTS parameters directly to the provider in this parameter. Find more information in the <a href="/docs/guides/speech/tts#passing-parameters-directly-to-the-provider"> documentation</a>.
   * <br>
   * <br>
   * *Available for providers: Google, SaluteSpeech, T-Bank,YandexV3.*
   */
  request?: Object;
}

/**
 * Avatar voice channel URL playback parameters. Can be passed via the [VoiceChannelParameters.playback] parameter.
 * <br>
 * Has a similar interface to [URLPlayerSegment](/docs/references/voxengine/urlplayersegment).
 */
declare interface URLPlaybackParameters {
  /**
   * Url of an audio file. Supported formats are: **mp3**, **ogg**, **flac**, and **wav** (**mp3**, **speex**, **vorbis**, **flac**, and **wav** codecs respectively). Maximum file size is **10 Mb**.
   */
  url: string;
  /**
   * Optional. Whether to enable the playback interruption. The default value is **false**.
   * <br>
   * NOTE: the segment with 'allowPlaybackInterruption' parameter should be always followed by another segment eligible for playback interruption or should be the last segment.
   */
  allowPlaybackInterruption: boolean;
  /**
   * Optional. URL [Player](/docs/references/voxengine/player) parameters.
   * <br>
   * Same as [URLPlayerParameters](/docs/references/voxengine/urlplayerparameters).
   */
  parameters?: URLPlayerParameters;
}

/**
 * URL [Player]((/docs/references/voxengine/player) parameters. Can be passed as arguments to the [VoxEngine.createURLPlayer](docs/references/voxengine/voxengine/createurlplayer) method.
 */
declare interface URLPlayerParameters {
  /**
   * Optional. Whether to loop playback.
   */
  loop?: boolean;
  /**
   * Optional. Whether the player is on pause after creation. To continue the playback, use the [Player.resume](/docs/references/voxengine/player#resume) method. The default value is **false**.
   */
  onPause?: boolean;
  /**
   * Optional. Whether to use progressive playback. If true, the file is delivered in chunks, which reduces delay before a method call and playback. The default value is **false**.
   */
  progressivePlayback?: boolean;
  /**
   * Optional. Whether to hide the HTTP request headers from the session logs. The default value is **false**.
   */
  hideHeaders?: boolean;
  /**
   * Optional. Whether to hide the HTTP request body from the session logs. The default value is **false**.
   */
  hideBody?: boolean;
}

/**
 * The [URLPlayerRequest] body. Should contain either ‘text’ or ‘binary’ keys.
 */
declare interface URLPlayerRequestBody {
  /**
   * Stringify object of the **'{"key":"value"}'** type.
   */
  text?: string;
  /**
   * Base64 string.
   */
  binary?: string;
}


/**
 * The [URLPlayerRequest] header.
 */
declare interface URLPlayerRequestHeader {
  /**
   * HTTP request header name.
   */
  name: string;
  /**
     * HTTP request header value.
   */
  value: string;
}

/**
 * The [URLPlayerRequest] method.
 */
declare enum URLPlayerRequestMethod {
  /**
   * The **GET** HTTP method.
   */
  GET = 'GET',
  /**
   * The **POST** HTTP method.
   */
  POST = 'POST',
}

/**
 * The URL [Player](/docs/references/voxengine/player) request.
 */
declare interface URLPlayerRequest {
  /**
   * HTTP request url of an audio file. Supported formats are: **mp3**, **ogg**, **flac**, and **wav** (**mp3**, **speex**, **vorbis**, **flac**, and **wav** codecs respectively). Maximum file size is **10 Mb**.
   */
  url: string;
  /**
   * Optional. HTTP request method. The default value is **GET**.
   */
  method?: URLPlayerRequestMethod;
  /**
   * Optional. HTTP request headers.
   */
  headers?: URLPlayerRequestHeader[];
  /**
   * Optional. HTTP request body.
   */
  body?: URLPlayerRequestBody;
}

/**
 * Generates unique identifier and returns it is string representation.
 */
declare function uuidgen(): string;

/**
 * Avatar voice channel parameters. Can be passed via the [ChannelParameters.voice](/docs/references/avatarengine/channelparameters#voice) parameter.
 */
declare interface VoiceChannelParameters {
  /**
   * Optional. [ASR](/docs/references/voxengine/asr) parameters.
   * <br>
   * NOTE: the default value is inherited from the [VoiceAvatarConfig.asrParameters](/docs/references/voxengine/voximplantavatar/voiceavatarconfig#asrparameters) parameter.
   */
  asr?: ASRParameters;
  /**
   * Avatar voice channel playback parameters.
   * <br>
   * NOTE: the default value is inherited from the [VoiceAvatarConfig.ttsPlayerOptions](/docs/references/voxengine/voximplantavatar/voiceavatarconfig#ttsplayeroptions) parameter.
   */
  playback?: PlaybackParameters;
}

declare namespace VoiceList {
  /**
   * List of available Amazon TTS voices for the [Call.say](/docs/references/voxengine/call#say) and [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) methods. Depending on the voice, different technologies are used to make synthesized voices sound as close as possible to live human voices. Please note that using these text-to-speech capabilities are charged according to the <a href="https://voximplant.com/pricing" target="_blank">pricing</a>.
   */
  namespace Amazon {
    /**
     * Amazon voice, US English Female, Joanna.
     * @const
     */
    const en_US_Joanna: Voice;
    /**
     * Amazon voice, US Spanish Female, Lupe.
     * @const
     */
    const es_US_Lupe: Voice;
    /**
     * Amazon voice, Turkish Female, Filiz.
     * @const
     */
    const tr_TR_Filiz: Voice;
    /**
     * Amazon voice, Swedish Female, Astrid.
     * @const
     */
    const sv_SE_Astrid: Voice;
    /**
     * Amazon voice, Russian Female, Tatyana.
     * @const
     */
    const ru_RU_Tatyana: Voice;
    /**
     * Amazon voice, Russian Male, Maxim.
     * @const
     */
    const ru_RU_Maxim: Voice;
    /**
     * Amazon voice, Romanian Female, Carmen.
     * @const
     */
    const ro_RO_Carmen: Voice;
    /**
     * Amazon voice, Portuguese Female, Inês.
     * @const
     */
    const pt_PT_Ines: Voice;
    /**
     * Amazon voice, Portuguese Male, Cristiano.
     * @const
     */
    const pt_PT_Cristiano: Voice;
    /**
     * Amazon voice, Brazilian Portuguese Female, Vitória.
     * @const
     */
    const pt_BR_Vitoria: Voice;
    /**
     * Amazon voice, Brazilian Portuguese Male, Ricardo.
     * @const
     */
    const pt_BR_Ricardo: Voice;
    /**
     * Amazon voice, Brazilian Portuguese Female (second voice), Camila.
     * @const
     */
    const pt_BR_Camila: Voice;
    /**
     * Amazon voice, Polish Female, Maja.
     * @const
     */
    const pl_PL_Maja: Voice;
    /**
     * Amazon voice, Polish Male, Jan.
     * @const
     */
    const pl_PL_Jan: Voice;
    /**
     * Amazon voice, Polish Male (second voice), Jacek.
     * @const
     */
    const pl_PL_Jacek: Voice;
    /**
     * Amazon voice, Polish Female (second voice), Ewa.
     * @const
     */
    const pl_PL_Ewa: Voice;
    /**
     * Amazon voice, Dutch Male, Ruben.
     * @const
     */
    const nl_NL_Ruben: Voice;
    /**
     * Amazon voice, Dutch Female, Lotte.
     * @const
     */
    const nl_NL_Lotte: Voice;
    /**
     * Amazon voice, Norwegian Female, Liv.
     * @const
     */
    const nb_NO_Liv: Voice;
    /**
     * Amazon voice, Korean Female, Seoyeon.
     * @const
     */
    const ko_KR_Seoyeon: Voice;
    /**
     * Amazon voice, Japanese Male, Takumi.
     * @const
     */
    const ja_JP_Takumi: Voice;
    /**
     * Amazon voice, Japanese Female, Mizuki.
     * @const
     */
    const ja_JP_Mizuki: Voice;
    /**
     * Amazon voice, Italian Female, Bianca.
     * @const
     */
    const it_IT_Bianca: Voice;
    /**
     * Amazon voice, Italian Male, Giorgio.
     * @const
     */
    const it_IT_Giorgio: Voice;
    /**
     * Amazon voice, Italian Female (second voice), Carla.
     * @const
     */
    const it_IT_Carla: Voice;
    /**
     * Amazon voice, Icelandic Male, Karl.
     * @const
     */
    const is_IS_Karl: Voice;
    /**
     * Amazon voice, Icelandic Female, Dóra.
     * @const
     */
    const is_IS_Dora: Voice;
    /**
     * Amazon voice, French Male, Mathieu.
     * @const
     */
    const fr_FR_Mathieu: Voice;
    /**
     * Amazon voice, French Female, Léa.
     * @const
     */
    const fr_FR_Lea: Voice;
    /**
     * Amazon voice, French Female (second voice), Céline.
     * @const
     */
    const fr_FR_Celine: Voice;
    /**
     * Amazon voice, Canadian French Female, Chantal.
     * @const
     */
    const fr_CA_Chantal: Voice;
    /**
     * Amazon voice, US Spanish Female, Penélope.
     * @const
     */
    const es_US_Penelope: Voice;
    /**
     * Amazon voice, US Spanish Male, Miguel.
     * @const
     */
    const es_US_Miguel: Voice;
    /**
     * Amazon voice, Mexican Spanish Female, Mia.
     * @const
     */
    const es_MX_Mia: Voice;
    /**
     * Amazon voice, Castilian Spanish Female, Lucia.
     * @const
     */
    const es_ES_Lucia: Voice;
    /**
     * Amazon voice, Castilian Spanish Male, Enrique.
     * @const
     */
    const es_ES_Enrique: Voice;
    /**
     * Amazon voice, Castilian Spanish Female (second voice), Conchita.
     * @const
     */
    const es_ES_Conchita: Voice;
    /**
     * Amazon voice, Welsh English Male, Geraint.
     * @const
     */
    const en_GB_WLS_Geraint: Voice;
    /**
     * Amazon voice, US English Female, Salli.
     * @const
     */
    const en_US_Salli: Voice;
    /**
     * Amazon voice, US English Male, Matthew.
     * @const
     */
    const en_US_Matthew: Voice;
    /**
     * Amazon voice, US English Female (second voice), Kimberly.
     * @const
     */
    const en_US_Kimberly: Voice;
    /**
     * Amazon voice, US English Female (third voice), Kendra.
     * @const
     */
    const en_US_Kendra: Voice;
    /**
     * Amazon voice, US English Male (second voice), Justin.
     * @const
     */
    const en_US_Justin: Voice;
    /**
     * Amazon voice, US English Male (third voice), Joey.
     * @const
     */
    const en_US_Joey: Voice;
    /**
     * Amazon voice, US English Female (fourth voice), Ivy.
     * @const
     */
    const en_US_Ivy: Voice;
    /**
     * Amazon voice, Indian English Female, Raveena.
     * @const
     */
    const en_IN_Raveena: Voice;
    /**
     * Amazon voice, Indian English Female (second voice), Aditi.
     * @const
     */
    const en_IN_Aditi: Voice;
    /**
     * Amazon voice, British English Female, Emma.
     * @const
     */
    const en_GB_Emma: Voice;
    /**
     * Amazon voice, British English Male, Brian.
     * @const
     */
    const en_GB_Brian: Voice;
    /**
     * Amazon voice, British English Female (second voice), Amy.
     * @const
     */
    const en_GB_Amy: Voice;
    /**
     * Amazon voice, Australian English Male, Russell.
     * @const
     */
    const en_AU_Russell: Voice;
    /**
     * Amazon voice, Australian English Female, Nicole.
     * @const
     */
    const en_AU_Nicole: Voice;
    /**
     * Amazon voice, German Female, Vicki.
     * @const
     */
    const de_DE_Vicki: Voice;
    /**
     * Amazon voice, German Female (second voice), Marlene.
     * @const
     */
    const de_DE_Marlene: Voice;
    /**
     * Amazon voice, German Male, Hans.
     * @const
     */
    const de_DE_Hans: Voice;
    /**
     * Amazon voice, Danish Female, Naja.
     * @const
     */
    const da_DK_Naja: Voice;
    /**
     * Amazon voice, Danish Male, Mads.
     * @const
     */
    const da_DK_Mads: Voice;
    /**
     * Amazon voice, Welsh Female, Gwyneth.
     * @const
     */
    const cy_GB_Gwyneth: Voice;
    /**
     * Amazon voice, Chinese Mandarin Female, Zhiyu.
     * @const
     */
    const cmn_CN_Zhiyu: Voice;
    /**
     * Amazon voice, Arabic Female, Zeina.
     * @const
     */
    const arb_Zeina: Voice;
  }
}
declare namespace VoiceList {
  namespace Amazon {
    /**
     * List of available premium Amazon TTS voices for the [Call.say](/docs/references/voxengine/call#say) and [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) methods that sound more natural due to advanced synthesis technology.
     * @namespace
     */
    namespace Neural {
      /**
       * Neural Amazon voice, Belgian French Female, Isabelle.
       * @const
       */
      const fr_BE_Isabelle: Voice;
      /**
       * Neural Amazon voice, US English Female, Danielle.
       * @const
       */
      const en_US_Danielle: Voice;
      /**
       * Neural Amazon voice, US English Male, Gregory.
       * @const
       */
      const en_US_Gregory: Voice;
      /**
       * Neural Amazon voice, Turkish Female, Burcu.
       * @const
       */
      const tr_TR_Burcu: Voice;
      /**
       * Neural Amazon voice, Czech Female, Jitka.
       * @const
       */
      const cs_CZ_Jitka: Voice;
      /**
       * Neural Amazon voice, Swiss Standard German Female, Sabrina.
       * @const
       */
      const de_CH_Sabrina: Voice;
      /**
       * Neural Amazon voice, US English Female, Joanna.
       * @const
       */
      const en_US_Joanna: Voice;
      /**
       * Neural Amazon voice, US English Female (second voice), Ruth.
       * @const
       */
      const en_US_Ruth: Voice;
      /**
       * Neural Amazon voice, US Spanish Female, Lupe.
       * @const
       */
      const es_US_Lupe: Voice;
      /**
       * Neural Amazon voice, Singaporean English Female, Jasmine.
       * @const
       */
      const en_SG_Jasmine: Voice;
      /**
       * Neural Amazon voice, Korean Female, Jihye.
       * @const
       */
      const ko_KR_Jihye: Voice;
      /**
       * Neural Amazon voice, US English Male, Kevin.
       * @const
       */
      const en_US_Kevin: Voice;
      /**
       * Neural Amazon voice, Swedish Female, Elin.
       * @const
       */
      const sv_SE_Elin: Voice;
      /**
       * Neural Amazon voice, Portuguese Female, Inês.
       * @const
       */
      const pt_PT_Ines: Voice;
      /**
       * Neural Amazon voice, Brazilian Portuguese Female, Vitória.
       * @const
       */
      const pt_BR_Vitoria: Voice;
      /**
       * Neural Amazon voice, Brazilian Portuguese Female (second voice), Camila.
       * @const
       */
      const pt_BR_Camila: Voice;
      /**
       * Neural Amazon voice, Polish Female, Ola.
       * @const
       */
      const pl_PL_Ola: Voice;
      /**
       * Neural Amazon voice, Belgian Dutch Female, Lisa.
       * @const
       */
      const nl_BE_Lisa: Voice;
      /**
       * Neural Amazon voice, Dutch Female, Laura.
       * @const
       */
      const nl_NL_Laura: Voice;
      /**
       * Neural Amazon voice, Norwegian Female, Ida.
       * @const
       */
      const nb_NO_Ida: Voice;
      /**
       * Neural Amazon voice, Korean Female, Seoyeon.
       * @const
       */
      const ko_KR_Seoyeon: Voice;
      /**
       * Neural Amazon voice, Japanese Female, Kazuha.
       * @const
       */
      const ja_JP_Kazuha: Voice;
      /**
       * Neural Amazon voice, Japanese Female (second voice), Tomoko.
       * @const
       */
      const ja_JP_Tomoko: Voice;
      /**
       * Neural Amazon voice, Japanese Male, Takumi.
       * @const
       */
      const ja_JP_Takumi: Voice;
      /**
       * Neural Amazon voice, Italian Female, Bianca.
       * @const
       */
      const it_IT_Bianca: Voice;
      /**
       * Neural Amazon voice, French Female, Léa.
       * @const
       */
      const fr_FR_Lea: Voice;
      /**
       * Neural Amazon voice, Canadian French Female, Gabrielle.
       * @const
       */
      const fr_CA_Gabrielle: Voice;
      /**
       * Neural Amazon voice, Mexican Spanish Female, Mia.
       * @const
       */
      const es_MX_Mia: Voice;
      /**
       * Neural Amazon voice, Castilian Spanish Female, Lucia.
       * @const
       */
      const es_ES_Lucia: Voice;
      /**
       * Neural Amazon voice, US English Female, Salli.
       * @const
       */
      const en_US_Salli: Voice;
      /**
       * Neural Amazon voice, US English Male, Matthew.
       * @const
       */
      const en_US_Matthew: Voice;
      /**
       * Neural Amazon voice, US English Female (second voice), Kimberly.
       * @const
       */
      const en_US_Kimberly: Voice;
      /**
       * Neural Amazon voice, US English Female (third voice), Kendra.
       * @const
       */
      const en_US_Kendra: Voice;
      /**
       * Neural Amazon voice, US English Male (second voice), Justin.
       * @const
       */
      const en_US_Justin: Voice;
      /**
       * Neural Amazon voice, US English Male (third voice), Joey.
       * @const
       */
      const en_US_Joey: Voice;
      /**
       * Neural Amazon voice, US English Female (fourth voice), Ivy.
       * @const
       */
      const en_US_Ivy: Voice;
      /**
       * Neural Amazon voice, New Zealand English Female, Aria.
       * @const
       */
      const en_NZ_Aria: Voice;
      /**
       * Neural Amazon voice, South African English Female, Ayanda.
       * @const
       */
      const en_ZA_Ayanda: Voice;
      /**
       * Neural Amazon voice, British English Female, Emma.
       * @const
       */
      const en_GB_Emma: Voice;
      /**
       * Neural Amazon voice, British English Male, Brian.
       * @const
       */
      const en_GB_Brian: Voice;
      /**
       * Neural Amazon voice, British English Female (second voice), Amy.
       * @const
       */
      const en_GB_Amy: Voice;
      /**
       * Neural Amazon voice, Australian English Female, Olivia.
       * @const
       */
      const en_AU_Olivia: Voice;
      /**
       * Neural Amazon voice, German Female, Vicki.
       * @const
       */
      const de_DE_Vicki: Voice;
      /**
       * Neural Amazon voice, Danish Female, Sofie.
       * @const
       */
      const da_DK_Sofie: Voice;
      /**
       * Neural Amazon voice, Chinese Mandarin Female, Zhiyu.
       * @const
       */
      const cmn_CN_Zhiyu: Voice;
      /**
       * Neural Amazon voice, Gulf Arabic Female, Hala.
       * @const
       */
      const ar_AE_Hala: Voice;
      /**
       * Neural Amazon voice, Catalan Female, Arlet.
       * @const
       */
      const ca_ES_Arlet: Voice;
      /**
       * Neural Amazon voice, Austrian German Female, Hannah.
       * @const
       */
      const de_AT_Hannah: Voice;
      /**
       * Neural Amazon voice, US English Male, Stephen.
       * @const
       */
      const en_US_Stephen: Voice;
      /**
       * Neural Amazon voice, Indian English Female, Kajal.
       * @const
       */
      const en_IN_Kajal: Voice;
      /**
       * Neural Amazon voice, Cantonese Female, Hiujin.
       * @const
       */
      const yue_CN_Hiujin: Voice;
      /**
       * Neural Amazon voice, Finnish Female, Suvi.
       * @const
       */
      const fi_FI_Suvi: Voice;
      /**
       * Neural Amazon voice, Irish English Female, Niamh.
       * @const
       */
      const en_IE_Niamh: Voice;
      /**
       * Neural Amazon voice, British English Male, Arthur.
       * @const
       */
      const en_GB_Arthur: Voice;
      /**
       * Neural Amazon voice, German Male, Daniel.
       * @const
       */
      const de_DE_Daniel: Voice;
      /**
       * Neural Amazon voice, Canadian French Male, Liam.
       * @const
       */
      const fr_CA_Liam: Voice;
      /**
       * Neural Amazon voice, US Spanish Male, Pedro.
       * @const
       */
      const es_US_Pedro: Voice;
      /**
       * Neural Amazon voice, Castilian Spanish Male, Sergio.
       * @const
       */
      const es_ES_Sergio: Voice;
      /**
       * Neural Amazon voice, Mexican Spanish Male, Andrés.
       * @const
       */
      const es_MX_Andres: Voice;
      /**
       * Neural Amazon voice, French Male, Rémi.
       * @const
       */
      const fr_FR_Remi: Voice;
      /**
       * Neural Amazon voice, Italian Male, Adriano.
       * @const
       */
      const it_IT_Adriano: Voice;
      /**
       * Neural Amazon voice, Brazilian Portuguese Male, Thiago.
       * @const
       */
      const pt_BR_Thiago: Voice;
      /**
       * Neural Amazon voice, Gulf Arabic Male, Zayd.
       * @const
       */
      const ar_AE_Zayd: Voice;
    }
  }
}
declare namespace VoiceList {
  /**
   * List of available freemium TTS voices for the [Call.say](/docs/references/voxengine/call#say) and [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) methods. Depending on the voice, different technologies are used to make synthesized voices sound as close as possible to live human voices. Please note that using these text-to-speech capabilities are charged according to the <a href="https://voximplant.com/pricing" target="_blank">pricing</a>.
   */
  namespace Default {
    /**
     * Freemium voice, Russian (Russia) female.
     * @const
     */
    const ru_RU_Female: Voice;
    /**
     * Freemium voice, Russian (Russia) male.
     * @const
     */
    const ru_RU_Male: Voice;
    /**
     * Freemium voice, English (US) female.
     * @const
     */
    const en_US_Female: Voice;
    /**
     * Freemium voice, English (US) male.
     * @const
     */
    const en_US_Male: Voice;
    /**
     * Freemium voice, Mandarin Chinese female.
     * @const
     */
    const cmn_CN_Female: Voice;
    /**
     * Freemium voice, Dutch (Netherlands) female.
     * @const
     */
    const nl_NL_Female: Voice;
    /**
     * Freemium voice, Dutch (Netherlands) male.
     * @const
     */
    const nl_NL_Male: Voice;
    /**
     * Freemium voice, Danish (Denmark) female.
     * @const
     */
    const da_DK_Female: Voice;
    /**
     * Freemium voice, Danish (Denmark) male.
     * @const
     */
    const da_DK_Male: Voice;
    /**
     * Freemium voice, Hindi (India) female.
     * @const
     */
    const hi_IN_Female: Voice;
    /**
     * Freemium voice, German (Germany) female.
     * @const
     */
    const de_DE_Female: Voice;
    /**
     * Freemium voice, German (Germany) male.
     * @const
     */
    const de_DE_Male: Voice;
    /**
     * Freemium voice, Italian (Italy) female.
     * @const
     */
    const it_IT_Female: Voice;
    /**
     * Freemium voice, Italian (Italy) male.
     * @const
     */
    const it_IT_Male: Voice;
    /**
     * Freemium voice, Japanese (Japan) female.
     * @const
     */
    const ja_JP_Female: Voice;
    /**
     * Freemium voice, Japanese (Japan) male.
     * @const
     */
    const ja_JP_Male: Voice;
    /**
     * Freemium voice, Korean (South Korea) female.
     * @const
     */
    const ko_KR_Female: Voice;
    /**
     * Freemium voice, Norwegian (Norway) female.
     * @const
     */
    const nb_NO_Female: Voice;
    /**
     * Freemium voice, Polish (Poland) female.
     * @const
     */
    const pl_PL_Female: Voice;
    /**
     * Freemium voice, Polish (Poland) male.
     * @const
     */
    const pl_PL_Male: Voice;
    /**
     * Freemium voice, Portuguese (Portugal) female.
     * @const
     */
    const pt_PT_Female: Voice;
    /**
     * Freemium voice, Portuguese (Portugal) male.
     * @const
     */
    const pt_PT_Male: Voice;
    /**
     * Freemium voice, Romanian (Romania) female.
     * @const
     */
    const ro_RO_Female: Voice;
    /**
     * Freemium voice, Spanish (Spain) female.
     * @const
     */
    const es_ES_Female: Voice;
    /**
     * Freemium voice, Spanish (Spain) male.
     * @const
     */
    const es_ES_Male: Voice;
    /**
     * Freemium voice, Swedish (Sweden) female.
     * @const
     */
    const sv_SE_Female: Voice;
    /**
     * Freemium voice, Turkish (Turkiye) female.
     * @const
     */
    const tr_TR_Female: Voice;
  }
}

declare namespace VoiceList {
  /**
   * List of available ElevenLabs TTS voices for the [Call.say](/docs/references/voxengine/call#say) and [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) methods. Depending on the voice, different technologies are used to make synthesized voices sound as close as possible to live human voices. Please note that using these text-to-speech capabilities are charged according to the <a href="https://voximplant.com/pricing" target="_blank">pricing</a>.
   */
  namespace ElevenLabs {
    /**
     * ElevenLabs voice, female, middle-aged, British, confident, news.
     * @const
     */
    const Alice: Voice;

    /**
     * ElevenLabs voice, female, middle-aged, American, expressive, social media.
     * @const
     */
    const Aria: Voice;

    /**
     * ElevenLabs voice, male, old, American, trustworthy, narration.
     * @const
     */
    const Bill: Voice;

    /**
     * ElevenLabs voice, male, middle-aged, American, deep, narration.
     * @const
     */
    const Brian: Voice;

    /**
     * ElevenLabs voice, male, middle-aged, Transatlantic, intense, characters.
     * @const
     */
    const Callum: Voice;

    /**
     * ElevenLabs voice, male, middle-aged, Australian, natural, conversational.
     * @const
     */
    const Charlie: Voice;

    /**
     * ElevenLabs voice, female, young, Swedish, seductive, characters.
     * @const
     */
    const Charlotte: Voice;

    /**
     * ElevenLabs voice, male, middle-aged, American, casual, conversational.
     * @const
     */
    const Chris: Voice;

    /**
     * ElevenLabs voice, male, middle-aged, British, authoritative, news.
     * @const
     */
    const Daniel: Voice;

    /**
     * ElevenLabs voice, male, middle-aged, American, friendly, conversational.
     * @const
     */
    const Eric: Voice;

    /**
     * ElevenLabs voice, male, middle-aged, British, warm, narration.
     * @const
     */
    const George: Voice;

    /**
     * ElevenLabs voice, female, young, American, expressive, conversational.
     * @const
     */
    const Jessica: Voice;

    /**
     * ElevenLabs voice, female, young, American, upbeat, social media.
     * @const
     */
    const Laura: Voice;

    /**
     * ElevenLabs voice, male, young, American, articulate, narration.
     * @const
     */
    const Liam: Voice;

    /**
     * ElevenLabs voice, female, middle-aged, British, warm, narration.
     * @const
     */
    const Lily: Voice;

    /**
     * ElevenLabs voice, female, middle-aged, American, friendly, narration.
     * @const
     */
    const Matilda: Voice;

    /**
     * ElevenLabs voice, non-binary, middle-aged, American, confident, social media.
     * @const
     */
    const River: Voice;

    /**
     * ElevenLabs voice, male, middle-aged, American, confident, social media.
     * @const
     */
    const Roger: Voice;

    /**
     * ElevenLabs voice, female, young, American, soft, news.
     * @const
     */
    const Sarah: Voice;

    /**
     * ElevenLabs voice, male, young, American, friendly, social media.
     * @const
     */
    const Will: Voice;

    /**
     * Creates a brand voice with ElevenLabs. To use this method, please contact support.
     * @param name The name of the voice
     */
    const createBrandVoice: (name: string) => Voice;
  }
}
  
declare namespace VoiceList {
  /**
   * List of available Google TTS voices for the [Call.say](/docs/references/voxengine/call#say) and [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) methods. Depending on the voice, different technologies are used to make synthesized voices sound as close as possible to live human voices. Please note that using these text-to-speech capabilities are charged according to the <a href="https://voximplant.com/pricing" target="_blank">pricing</a>.
   */
  namespace Google {
    /**
     * Google voice, American English female.
     * @const
     */
    const Achernar: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Achird: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Algenib: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Algieba: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Alnilam: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const Aoede: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const Autonoe: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const Callirrhoe: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Charon: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const Despina: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Enceladus: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const Erinome: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Fenrir: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const Gacrux: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Iapetus: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const Kore: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const Laomedeia: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const Leda: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Orus: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Puck: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const Pulcherrima: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Rasalgethi: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Sadachbia: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Sadaltager: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Schedar: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const Sulafat: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Umbriel: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const Vindemiatrix: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const Zephyr: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const Zubenelgenubi: Voice;
    /**
     * Google voice, Afrikaans (South Africa) female.
     * @const
     */
    const af_ZA_Standard_A: Voice;
    /**
     * Google voice, Amharic (Ethiopia) female.
     * @const
     */
    const am_ET_Standard_A: Voice;
    /**
     * Google voice, Amharic (Ethiopia) male.
     * @const
     */
    const am_ET_Standard_B: Voice;
    /**
     * Google voice, Amharic (Ethiopia) female.
     * @const
     */
    const am_ET_Wavenet_A: Voice;
    /**
     * Google voice, Amharic (Ethiopia) male.
     * @const
     */
    const am_ET_Wavenet_B: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female.
     * @const
     */
    const ar_XA_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male.
     * @const
     */
    const ar_XA_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (second voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (third voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (fourth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female (second voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female (third voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female (fourth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (fifth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female (fifth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (sixth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female (sixth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (seventh voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female (seventh voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (eighth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female (eighth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female (ninth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female (tenth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (ninth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (tenth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female (eleventh voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (eleventh voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (twelfth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (thirteenth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (fourteenth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female (twelfth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (fifteenth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female (thirteenth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female (fourteenth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (sixteenth voice).
     * @const
     */
    const ar_XA_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female.
     * @const
     */
    const ar_XA_Standard_A: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male.
     * @const
     */
    const ar_XA_Standard_B: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (second voice).
     * @const
     */
    const ar_XA_Standard_C: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female (second voice).
     * @const
     */
    const ar_XA_Standard_D: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female.
     * @const
     */
    const ar_XA_Wavenet_A: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male.
     * @const
     */
    const ar_XA_Wavenet_B: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) male (second voice).
     * @const
     */
    const ar_XA_Wavenet_C: Voice;
    /**
     * Google voice, Arabic (Pseudo-Accents) female (second voice).
     * @const
     */
    const ar_XA_Wavenet_D: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) female.
     * @const
     */
    const bg_BG_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male.
     * @const
     */
    const bg_BG_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male (second voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male (third voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male (fourth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) female (second voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) female (third voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) female (fourth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male (fifth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) female (fifth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male (sixth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) female (sixth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male (seventh voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) female (seventh voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male (eighth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) female (eighth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) female (ninth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) female (tenth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male (ninth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male (tenth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) female (eleventh voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male (eleventh voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male (twelfth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male (thirteenth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male (fourteenth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) female (twelfth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male (fifteenth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) female (thirteenth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) female (fourteenth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) male (sixteenth voice).
     * @const
     */
    const bg_BG_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Bulgarian (Bulgaria) female.
     * @const
     */
    const bg_BG_Standard_B: Voice;
    /**
     * Google voice, Bangla (India) female.
     * @const
     */
    const bn_IN_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Bangla (India) male.
     * @const
     */
    const bn_IN_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Bangla (India) male (second voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Bangla (India) male (third voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Bangla (India) male (fourth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Bangla (India) female (second voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Bangla (India) female (third voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Bangla (India) female (fourth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Bangla (India) male (fifth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Bangla (India) female (fifth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Bangla (India) male (sixth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Bangla (India) female (sixth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Bangla (India) male (seventh voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Bangla (India) female (seventh voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Bangla (India) male (eighth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Bangla (India) female (eighth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Bangla (India) female (ninth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Bangla (India) female (tenth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Bangla (India) male (ninth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Bangla (India) male (tenth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Bangla (India) female (eleventh voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Bangla (India) male (eleventh voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Bangla (India) male (twelfth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Bangla (India) male (thirteenth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Bangla (India) male (fourteenth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Bangla (India) female (twelfth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Bangla (India) male (fifteenth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Bangla (India) female (thirteenth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Bangla (India) female (fourteenth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Bangla (India) male (sixteenth voice).
     * @const
     */
    const bn_IN_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Bangla (India) female.
     * @const
     */
    const bn_IN_Standard_A: Voice;
    /**
     * Google voice, Bangla (India) male.
     * @const
     */
    const bn_IN_Standard_B: Voice;
    /**
     * Google voice, Bangla (India) female (second voice).
     * @const
     */
    const bn_IN_Standard_C: Voice;
    /**
     * Google voice, Bangla (India) male (second voice).
     * @const
     */
    const bn_IN_Standard_D: Voice;
    /**
     * Google voice, Bangla (India) female.
     * @const
     */
    const bn_IN_Wavenet_A: Voice;
    /**
     * Google voice, Bangla (India) male.
     * @const
     */
    const bn_IN_Wavenet_B: Voice;
    /**
     * Google voice, Bangla (India) female (second voice).
     * @const
     */
    const bn_IN_Wavenet_C: Voice;
    /**
     * Google voice, Bangla (India) male (second voice).
     * @const
     */
    const bn_IN_Wavenet_D: Voice;
    /**
     * Google voice, Catalan (Spain) female.
     * @const
     */
    const ca_ES_Standard_B: Voice;
    /**
     * Google voice, Chinese (China) female.
     * @const
     */
    const cmn_CN_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Chinese (China) male.
     * @const
     */
    const cmn_CN_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Chinese (China) male (second voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Chinese (China) male (third voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Chinese (China) male (fourth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Chinese (China) female (second voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Chinese (China) female (third voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Chinese (China) female (fourth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Chinese (China) male (fifth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Chinese (China) female (fifth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Chinese (China) male (sixth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Chinese (China) female (sixth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Chinese (China) male (seventh voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Chinese (China) female (seventh voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Chinese (China) male (eighth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Chinese (China) female (eighth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Chinese (China) female (ninth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Chinese (China) female (tenth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Chinese (China) male (ninth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Chinese (China) male (tenth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Chinese (China) female (eleventh voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Chinese (China) male (eleventh voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Chinese (China) male (twelfth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Chinese (China) male (thirteenth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Chinese (China) male (fourteenth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Chinese (China) female (twelfth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Chinese (China) male (fifteenth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Chinese (China) female (thirteenth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Chinese (China) female (fourteenth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Chinese (China) male (sixteenth voice).
     * @const
     */
    const cmn_CN_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Chinese (China) female.
     * @const
     */
    const cmn_CN_Standard_A: Voice;
    /**
     * Google voice, Chinese (China) male.
     * @const
     */
    const cmn_CN_Standard_B: Voice;
    /**
     * Google voice, Chinese (China) male (second voice).
     * @const
     */
    const cmn_CN_Standard_C: Voice;
    /**
     * Google voice, Chinese (China) female (second voice).
     * @const
     */
    const cmn_CN_Standard_D: Voice;
    /**
     * Google voice, Chinese (China) female.
     * @const
     */
    const cmn_CN_Wavenet_A: Voice;
    /**
     * Google voice, Chinese (China) male.
     * @const
     */
    const cmn_CN_Wavenet_B: Voice;
    /**
     * Google voice, Chinese (China) male (second voice).
     * @const
     */
    const cmn_CN_Wavenet_C: Voice;
    /**
     * Google voice, Chinese (China) female (second voice).
     * @const
     */
    const cmn_CN_Wavenet_D: Voice;
    /**
     * Google voice, Chinese (Taiwan) female.
     * @const
     */
    const cmn_TW_Standard_A: Voice;
    /**
     * Google voice, Chinese (Taiwan) male.
     * @const
     */
    const cmn_TW_Standard_B: Voice;
    /**
     * Google voice, Chinese (Taiwan) male (second voice).
     * @const
     */
    const cmn_TW_Standard_C: Voice;
    /**
     * Google voice, Chinese (Taiwan) female.
     * @const
     */
    const cmn_TW_Wavenet_A: Voice;
    /**
     * Google voice, Chinese (Taiwan) male.
     * @const
     */
    const cmn_TW_Wavenet_B: Voice;
    /**
     * Google voice, Chinese (Taiwan) male (second voice).
     * @const
     */
    const cmn_TW_Wavenet_C: Voice;
    /**
     * Google voice, Czech (Czechia) female.
     * @const
     */
    const cs_CZ_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Czech (Czechia) male.
     * @const
     */
    const cs_CZ_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Czech (Czechia) male (second voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Czech (Czechia) male (third voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Czech (Czechia) male (fourth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Czech (Czechia) female (second voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Czech (Czechia) female (third voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Czech (Czechia) female (fourth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Czech (Czechia) male (fifth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Czech (Czechia) female (fifth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Czech (Czechia) male (sixth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Czech (Czechia) female (sixth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Czech (Czechia) male (seventh voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Czech (Czechia) female (seventh voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Czech (Czechia) male (eighth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Czech (Czechia) female (eighth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Czech (Czechia) female (ninth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Czech (Czechia) female (tenth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Czech (Czechia) male (ninth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Czech (Czechia) male (tenth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Czech (Czechia) female (eleventh voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Czech (Czechia) male (eleventh voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Czech (Czechia) male (twelfth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Czech (Czechia) male (thirteenth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Czech (Czechia) male (fourteenth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Czech (Czechia) female (twelfth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Czech (Czechia) male (fifteenth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Czech (Czechia) female (thirteenth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Czech (Czechia) female (fourteenth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Czech (Czechia) male (sixteenth voice).
     * @const
     */
    const cs_CZ_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Czech (Czechia) female.
     * @const
     */
    const cs_CZ_Standard_B: Voice;
    /**
     * Google voice, Czech (Czechia) female.
     * @const
     */
    const cs_CZ_Wavenet_B: Voice;
    /**
     * Google voice, Danish (Denmark) female.
     * @const
     */
    const da_DK_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Danish (Denmark) male.
     * @const
     */
    const da_DK_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Danish (Denmark) male (second voice).
     * @const
     */
    const da_DK_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Danish (Denmark) male (third voice).
     * @const
     */
    const da_DK_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Danish (Denmark) male (fourth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Danish (Denmark) female (second voice).
     * @const
     */
    const da_DK_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Danish (Denmark) female (third voice).
     * @const
     */
    const da_DK_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Danish (Denmark) female (fourth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Danish (Denmark) male (fifth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Danish (Denmark) female (fifth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Danish (Denmark) male (sixth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Danish (Denmark) female (sixth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Danish (Denmark) male (seventh voice).
     * @const
     */
    const da_DK_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Danish (Denmark) female (seventh voice).
     * @const
     */
    const da_DK_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Danish (Denmark) male (eighth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Danish (Denmark) female (eighth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Danish (Denmark) female (ninth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Danish (Denmark) female (tenth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Danish (Denmark) male (ninth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Danish (Denmark) male (tenth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Danish (Denmark) female (eleventh voice).
     * @const
     */
    const da_DK_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Danish (Denmark) male (eleventh voice).
     * @const
     */
    const da_DK_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Danish (Denmark) male (twelfth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Danish (Denmark) male (thirteenth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Danish (Denmark) male (fourteenth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Danish (Denmark) female (twelfth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Danish (Denmark) male (fifteenth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Danish (Denmark) female (thirteenth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Danish (Denmark) female (fourteenth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Danish (Denmark) male (sixteenth voice).
     * @const
     */
    const da_DK_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Danish (Denmark) female.
     * @const
     */
    const da_DK_Neural2_F: Voice;
    /**
     * Google voice, Danish (Denmark) female.
     * @const
     */
    const da_DK_Standard_F: Voice;
    /**
     * Google voice, Danish (Denmark) male.
     * @const
     */
    const da_DK_Standard_G: Voice;
    /**
     * Google voice, Danish (Denmark) female.
     * @const
     */
    const da_DK_Wavenet_F: Voice;
    /**
     * Google voice, Danish (Denmark) male.
     * @const
     */
    const da_DK_Wavenet_G: Voice;
    /**
     * Google voice, German (Germany) male.
     * @const
     */
    const de_DE_Chirp_HD_D: Voice;
    /**
     * Google voice, German (Germany) female.
     * @const
     */
    const de_DE_Chirp_HD_F: Voice;
    /**
     * Google voice, German (Germany) female (second voice).
     * @const
     */
    const de_DE_Chirp_HD_O: Voice;
    /**
     * Google voice, German (Germany) female.
     * @const
     */
    const de_DE_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, German (Germany) male.
     * @const
     */
    const de_DE_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, German (Germany) male (second voice).
     * @const
     */
    const de_DE_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, German (Germany) male (third voice).
     * @const
     */
    const de_DE_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, German (Germany) male (fourth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, German (Germany) female (second voice).
     * @const
     */
    const de_DE_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, German (Germany) female (third voice).
     * @const
     */
    const de_DE_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, German (Germany) female (fourth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, German (Germany) male (fifth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, German (Germany) female (fifth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, German (Germany) male (sixth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, German (Germany) female (sixth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, German (Germany) male (seventh voice).
     * @const
     */
    const de_DE_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, German (Germany) female (seventh voice).
     * @const
     */
    const de_DE_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, German (Germany) male (eighth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, German (Germany) female (eighth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, German (Germany) female (ninth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, German (Germany) female (tenth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, German (Germany) male (ninth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, German (Germany) male (tenth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, German (Germany) female (eleventh voice).
     * @const
     */
    const de_DE_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, German (Germany) male (eleventh voice).
     * @const
     */
    const de_DE_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, German (Germany) male (twelfth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, German (Germany) male (thirteenth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, German (Germany) male (fourteenth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, German (Germany) female (twelfth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, German (Germany) male (fifteenth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, German (Germany) female (thirteenth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, German (Germany) female (fourteenth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, German (Germany) male (sixteenth voice).
     * @const
     */
    const de_DE_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, German (Germany) female.
     * @const
     */
    const de_DE_Neural2_G: Voice;
    /**
     * Google voice, German (Germany) male.
     * @const
     */
    const de_DE_Neural2_H: Voice;
    /**
     * Google voice, German (Germany) male.
     * @const
     */
    const de_DE_Polyglot_1: Voice;
    /**
     * Google voice, German (Germany) female.
     * @const
     */
    const de_DE_Standard_G: Voice;
    /**
     * Google voice, German (Germany) male.
     * @const
     */
    const de_DE_Standard_H: Voice;
    /**
     * Google voice, German (Germany) male.
     * @const
     */
    const de_DE_Studio_B: Voice;
    /**
     * Google voice, German (Germany) female.
     * @const
     */
    const de_DE_Studio_C: Voice;
    /**
     * Google voice, German (Germany) female.
     * @const
     */
    const de_DE_Wavenet_G: Voice;
    /**
     * Google voice, German (Germany) male.
     * @const
     */
    const de_DE_Wavenet_H: Voice;
    /**
     * Google voice, Greek (Greece) female.
     * @const
     */
    const el_GR_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Greek (Greece) male.
     * @const
     */
    const el_GR_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Greek (Greece) male (second voice).
     * @const
     */
    const el_GR_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Greek (Greece) male (third voice).
     * @const
     */
    const el_GR_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Greek (Greece) male (fourth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Greek (Greece) female (second voice).
     * @const
     */
    const el_GR_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Greek (Greece) female (third voice).
     * @const
     */
    const el_GR_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Greek (Greece) female (fourth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Greek (Greece) male (fifth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Greek (Greece) female (fifth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Greek (Greece) male (sixth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Greek (Greece) female (sixth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Greek (Greece) male (seventh voice).
     * @const
     */
    const el_GR_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Greek (Greece) female (seventh voice).
     * @const
     */
    const el_GR_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Greek (Greece) male (eighth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Greek (Greece) female (eighth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Greek (Greece) female (ninth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Greek (Greece) female (tenth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Greek (Greece) male (ninth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Greek (Greece) male (tenth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Greek (Greece) female (eleventh voice).
     * @const
     */
    const el_GR_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Greek (Greece) male (eleventh voice).
     * @const
     */
    const el_GR_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Greek (Greece) male (twelfth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Greek (Greece) male (thirteenth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Greek (Greece) male (fourteenth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Greek (Greece) female (twelfth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Greek (Greece) male (fifteenth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Greek (Greece) female (thirteenth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Greek (Greece) female (fourteenth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Greek (Greece) male (sixteenth voice).
     * @const
     */
    const el_GR_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Greek (Greece) female.
     * @const
     */
    const el_GR_Standard_B: Voice;
    /**
     * Google voice, Greek (Greece) female.
     * @const
     */
    const el_GR_Wavenet_B: Voice;
    /**
     * Google voice, Australian English male.
     * @const
     */
    const en_AU_Chirp_HD_D: Voice;
    /**
     * Google voice, Australian English female.
     * @const
     */
    const en_AU_Chirp_HD_F: Voice;
    /**
     * Google voice, Australian English female (second voice).
     * @const
     */
    const en_AU_Chirp_HD_O: Voice;
    /**
     * Google voice, Australian English female.
     * @const
     */
    const en_AU_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Australian English male.
     * @const
     */
    const en_AU_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Australian English male (second voice).
     * @const
     */
    const en_AU_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Australian English male (third voice).
     * @const
     */
    const en_AU_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Australian English male (fourth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Australian English female (second voice).
     * @const
     */
    const en_AU_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Australian English female (third voice).
     * @const
     */
    const en_AU_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Australian English female (fourth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Australian English male (fifth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Australian English female (fifth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Australian English male (sixth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Australian English female (sixth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Australian English male (seventh voice).
     * @const
     */
    const en_AU_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Australian English female (seventh voice).
     * @const
     */
    const en_AU_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Australian English male (eighth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Australian English female (eighth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Australian English female (ninth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Australian English female (tenth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Australian English male (ninth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Australian English male (tenth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Australian English female (eleventh voice).
     * @const
     */
    const en_AU_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Australian English male (eleventh voice).
     * @const
     */
    const en_AU_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Australian English male (twelfth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Australian English male (thirteenth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Australian English male (fourteenth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Australian English female (twelfth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Australian English male (fifteenth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Australian English female (thirteenth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Australian English female (fourteenth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Australian English male (sixteenth voice).
     * @const
     */
    const en_AU_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Australian English female.
     * @const
     */
    const en_AU_Neural2_A: Voice;
    /**
     * Google voice, Australian English male.
     * @const
     */
    const en_AU_Neural2_B: Voice;
    /**
     * Google voice, Australian English female (second voice).
     * @const
     */
    const en_AU_Neural2_C: Voice;
    /**
     * Google voice, Australian English male (second voice).
     * @const
     */
    const en_AU_Neural2_D: Voice;
    /**
     * Google voice, Australian English female.
     * @const
     */
    const en_AU_News_E: Voice;
    /**
     * Google voice, Australian English female (second voice).
     * @const
     */
    const en_AU_News_F: Voice;
    /**
     * Google voice, Australian English male.
     * @const
     */
    const en_AU_News_G: Voice;
    /**
     * Google voice, Australian English male.
     * @const
     */
    const en_AU_Polyglot_1: Voice;
    /**
     * Google voice, Australian English female.
     * @const
     */
    const en_AU_Standard_A: Voice;
    /**
     * Google voice, Australian English male.
     * @const
     */
    const en_AU_Standard_B: Voice;
    /**
     * Google voice, Australian English female (second voice).
     * @const
     */
    const en_AU_Standard_C: Voice;
    /**
     * Google voice, Australian English male (second voice).
     * @const
     */
    const en_AU_Standard_D: Voice;
    /**
     * Google voice, Australian English female.
     * @const
     */
    const en_AU_Wavenet_A: Voice;
    /**
     * Google voice, Australian English male.
     * @const
     */
    const en_AU_Wavenet_B: Voice;
    /**
     * Google voice, Australian English female (second voice).
     * @const
     */
    const en_AU_Wavenet_C: Voice;
    /**
     * Google voice, Australian English male (second voice).
     * @const
     */
    const en_AU_Wavenet_D: Voice;
    /**
     * Google voice, British English male.
     * @const
     */
    const en_GB_Chirp_HD_D: Voice;
    /**
     * Google voice, British English female.
     * @const
     */
    const en_GB_Chirp_HD_F: Voice;
    /**
     * Google voice, British English female (second voice).
     * @const
     */
    const en_GB_Chirp_HD_O: Voice;
    /**
     * Google voice, British English female.
     * @const
     */
    const en_GB_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, British English male.
     * @const
     */
    const en_GB_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, British English male (second voice).
     * @const
     */
    const en_GB_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, British English male (third voice).
     * @const
     */
    const en_GB_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, British English male (fourth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, British English female (second voice).
     * @const
     */
    const en_GB_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, British English female (third voice).
     * @const
     */
    const en_GB_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, British English female (fourth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, British English male (fifth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, British English female (fifth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, British English male (sixth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, British English female (sixth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, British English male (seventh voice).
     * @const
     */
    const en_GB_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, British English female (seventh voice).
     * @const
     */
    const en_GB_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, British English male (eighth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, British English female (eighth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, British English female (ninth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, British English female (tenth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, British English male (ninth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, British English male (tenth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, British English female (eleventh voice).
     * @const
     */
    const en_GB_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, British English male (eleventh voice).
     * @const
     */
    const en_GB_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, British English male (twelfth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, British English male (thirteenth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, British English male (fourteenth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, British English female (twelfth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, British English male (fifteenth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, British English female (thirteenth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, British English female (fourteenth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, British English male (sixteenth voice).
     * @const
     */
    const en_GB_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, British English female.
     * @const
     */
    const en_GB_Neural2_A: Voice;
    /**
     * Google voice, British English male.
     * @const
     */
    const en_GB_Neural2_B: Voice;
    /**
     * Google voice, British English female (second voice).
     * @const
     */
    const en_GB_Neural2_C: Voice;
    /**
     * Google voice, British English male (second voice).
     * @const
     */
    const en_GB_Neural2_D: Voice;
    /**
     * Google voice, British English female (third voice).
     * @const
     */
    const en_GB_Neural2_F: Voice;
    /**
     * Google voice, British English female (fourth voice).
     * @const
     */
    const en_GB_Neural2_N: Voice;
    /**
     * Google voice, British English male (third voice).
     * @const
     */
    const en_GB_Neural2_O: Voice;
    /**
     * Google voice, British English female.
     * @const
     */
    const en_GB_News_G: Voice;
    /**
     * Google voice, British English female (second voice).
     * @const
     */
    const en_GB_News_H: Voice;
    /**
     * Google voice, British English female (third voice).
     * @const
     */
    const en_GB_News_I: Voice;
    /**
     * Google voice, British English male.
     * @const
     */
    const en_GB_News_J: Voice;
    /**
     * Google voice, British English male (second voice).
     * @const
     */
    const en_GB_News_K: Voice;
    /**
     * Google voice, British English male (third voice).
     * @const
     */
    const en_GB_News_L: Voice;
    /**
     * Google voice, British English male (fourth voice).
     * @const
     */
    const en_GB_News_M: Voice;
    /**
     * Google voice, British English female.
     * @const
     */
    const en_GB_Standard_A: Voice;
    /**
     * Google voice, British English male.
     * @const
     */
    const en_GB_Standard_B: Voice;
    /**
     * Google voice, British English female (second voice).
     * @const
     */
    const en_GB_Standard_C: Voice;
    /**
     * Google voice, British English male (second voice).
     * @const
     */
    const en_GB_Standard_D: Voice;
    /**
     * Google voice, British English female (third voice).
     * @const
     */
    const en_GB_Standard_F: Voice;
    /**
     * Google voice, British English female (fourth voice).
     * @const
     */
    const en_GB_Standard_N: Voice;
    /**
     * Google voice, British English male (third voice).
     * @const
     */
    const en_GB_Standard_O: Voice;
    /**
     * Google voice, British English male.
     * @const
     */
    const en_GB_Studio_B: Voice;
    /**
     * Google voice, British English female.
     * @const
     */
    const en_GB_Studio_C: Voice;
    /**
     * Google voice, British English female.
     * @const
     */
    const en_GB_Wavenet_A: Voice;
    /**
     * Google voice, British English male.
     * @const
     */
    const en_GB_Wavenet_B: Voice;
    /**
     * Google voice, British English female (second voice).
     * @const
     */
    const en_GB_Wavenet_C: Voice;
    /**
     * Google voice, British English male (second voice).
     * @const
     */
    const en_GB_Wavenet_D: Voice;
    /**
     * Google voice, British English female (third voice).
     * @const
     */
    const en_GB_Wavenet_F: Voice;
    /**
     * Google voice, British English female (fourth voice).
     * @const
     */
    const en_GB_Wavenet_N: Voice;
    /**
     * Google voice, British English male (third voice).
     * @const
     */
    const en_GB_Wavenet_O: Voice;
    /**
     * Google voice, English (India) male.
     * @const
     */
    const en_IN_Chirp_HD_D: Voice;
    /**
     * Google voice, English (India) female.
     * @const
     */
    const en_IN_Chirp_HD_F: Voice;
    /**
     * Google voice, English (India) female (second voice).
     * @const
     */
    const en_IN_Chirp_HD_O: Voice;
    /**
     * Google voice, English (India) female.
     * @const
     */
    const en_IN_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, English (India) male.
     * @const
     */
    const en_IN_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, English (India) male (second voice).
     * @const
     */
    const en_IN_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, English (India) male (third voice).
     * @const
     */
    const en_IN_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, English (India) male (fourth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, English (India) female (second voice).
     * @const
     */
    const en_IN_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, English (India) female (third voice).
     * @const
     */
    const en_IN_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, English (India) female (fourth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, English (India) male (fifth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, English (India) female (fifth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, English (India) male (sixth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, English (India) female (sixth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, English (India) male (seventh voice).
     * @const
     */
    const en_IN_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, English (India) female (seventh voice).
     * @const
     */
    const en_IN_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, English (India) male (eighth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, English (India) female (eighth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, English (India) female (ninth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, English (India) female (tenth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, English (India) male (ninth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, English (India) male (tenth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, English (India) female (eleventh voice).
     * @const
     */
    const en_IN_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, English (India) male (eleventh voice).
     * @const
     */
    const en_IN_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, English (India) male (twelfth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, English (India) male (thirteenth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, English (India) male (fourteenth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, English (India) female (twelfth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, English (India) male (fifteenth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, English (India) female (thirteenth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, English (India) female (fourteenth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, English (India) male (sixteenth voice).
     * @const
     */
    const en_IN_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, English (India) female.
     * @const
     */
    const en_IN_Neural2_A: Voice;
    /**
     * Google voice, English (India) male.
     * @const
     */
    const en_IN_Neural2_B: Voice;
    /**
     * Google voice, English (India) male (second voice).
     * @const
     */
    const en_IN_Neural2_C: Voice;
    /**
     * Google voice, English (India) female (second voice).
     * @const
     */
    const en_IN_Neural2_D: Voice;
    /**
     * Google voice, English (India) female.
     * @const
     */
    const en_IN_Standard_A: Voice;
    /**
     * Google voice, English (India) male.
     * @const
     */
    const en_IN_Standard_B: Voice;
    /**
     * Google voice, English (India) male (second voice).
     * @const
     */
    const en_IN_Standard_C: Voice;
    /**
     * Google voice, English (India) female (second voice).
     * @const
     */
    const en_IN_Standard_D: Voice;
    /**
     * Google voice, English (India) female (third voice).
     * @const
     */
    const en_IN_Standard_E: Voice;
    /**
     * Google voice, English (India) male (third voice).
     * @const
     */
    const en_IN_Standard_F: Voice;
    /**
     * Google voice, English (India) female.
     * @const
     */
    const en_IN_Wavenet_A: Voice;
    /**
     * Google voice, English (India) male.
     * @const
     */
    const en_IN_Wavenet_B: Voice;
    /**
     * Google voice, English (India) male (second voice).
     * @const
     */
    const en_IN_Wavenet_C: Voice;
    /**
     * Google voice, English (India) female (second voice).
     * @const
     */
    const en_IN_Wavenet_D: Voice;
    /**
     * Google voice, English (India) female (third voice).
     * @const
     */
    const en_IN_Wavenet_E: Voice;
    /**
     * Google voice, English (India) male (third voice).
     * @const
     */
    const en_IN_Wavenet_F: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const en_US_Casual_K: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const en_US_Chirp_HD_D: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const en_US_Chirp_HD_F: Voice;
    /**
     * Google voice, American English female (second voice).
     * @const
     */
    const en_US_Chirp_HD_O: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const en_US_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const en_US_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, American English male (second voice).
     * @const
     */
    const en_US_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, American English male (third voice).
     * @const
     */
    const en_US_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, American English male (fourth voice).
     * @const
     */
    const en_US_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, American English female (second voice).
     * @const
     */
    const en_US_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, American English female (third voice).
     * @const
     */
    const en_US_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, American English female (fourth voice).
     * @const
     */
    const en_US_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, American English male (fifth voice).
     * @const
     */
    const en_US_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, American English female (fifth voice).
     * @const
     */
    const en_US_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, American English male (sixth voice).
     * @const
     */
    const en_US_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, American English female (sixth voice).
     * @const
     */
    const en_US_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, American English male (seventh voice).
     * @const
     */
    const en_US_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, American English female (seventh voice).
     * @const
     */
    const en_US_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, American English male (eighth voice).
     * @const
     */
    const en_US_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, American English female (eighth voice).
     * @const
     */
    const en_US_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, American English female (ninth voice).
     * @const
     */
    const en_US_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, American English female (tenth voice).
     * @const
     */
    const en_US_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, American English male (ninth voice).
     * @const
     */
    const en_US_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, American English male (tenth voice).
     * @const
     */
    const en_US_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, American English female (eleventh voice).
     * @const
     */
    const en_US_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, American English male (eleventh voice).
     * @const
     */
    const en_US_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, American English male (twelfth voice).
     * @const
     */
    const en_US_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, American English male (thirteenth voice).
     * @const
     */
    const en_US_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, American English male (fourteenth voice).
     * @const
     */
    const en_US_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, American English female (twelfth voice).
     * @const
     */
    const en_US_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, American English male (fifteenth voice).
     * @const
     */
    const en_US_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, American English female (thirteenth voice).
     * @const
     */
    const en_US_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, American English female (fourteenth voice).
     * @const
     */
    const en_US_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, American English male (sixteenth voice).
     * @const
     */
    const en_US_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const en_US_Neural2_A: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const en_US_Neural2_C: Voice;
    /**
     * Google voice, American English male (second voice).
     * @const
     */
    const en_US_Neural2_D: Voice;
    /**
     * Google voice, American English female (second voice).
     * @const
     */
    const en_US_Neural2_E: Voice;
    /**
     * Google voice, American English female (third voice).
     * @const
     */
    const en_US_Neural2_F: Voice;
    /**
     * Google voice, American English female (fourth voice).
     * @const
     */
    const en_US_Neural2_G: Voice;
    /**
     * Google voice, American English female (fifth voice).
     * @const
     */
    const en_US_Neural2_H: Voice;
    /**
     * Google voice, American English male (third voice).
     * @const
     */
    const en_US_Neural2_I: Voice;
    /**
     * Google voice, American English male (fourth voice).
     * @const
     */
    const en_US_Neural2_J: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const en_US_News_K: Voice;
    /**
     * Google voice, American English female (second voice).
     * @const
     */
    const en_US_News_L: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const en_US_News_N: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const en_US_Polyglot_1: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const en_US_Standard_A: Voice;
    /**
     * Google voice, American English male (second voice).
     * @const
     */
    const en_US_Standard_B: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const en_US_Standard_C: Voice;
    /**
     * Google voice, American English male (third voice).
     * @const
     */
    const en_US_Standard_D: Voice;
    /**
     * Google voice, American English female (second voice).
     * @const
     */
    const en_US_Standard_E: Voice;
    /**
     * Google voice, American English female (third voice).
     * @const
     */
    const en_US_Standard_F: Voice;
    /**
     * Google voice, American English female (fourth voice).
     * @const
     */
    const en_US_Standard_G: Voice;
    /**
     * Google voice, American English female (fifth voice).
     * @const
     */
    const en_US_Standard_H: Voice;
    /**
     * Google voice, American English male (fourth voice).
     * @const
     */
    const en_US_Standard_I: Voice;
    /**
     * Google voice, American English male (fifth voice).
     * @const
     */
    const en_US_Standard_J: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const en_US_Studio_O: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const en_US_Studio_Q: Voice;
    /**
     * Google voice, American English male.
     * @const
     */
    const en_US_Wavenet_A: Voice;
    /**
     * Google voice, American English male (second voice).
     * @const
     */
    const en_US_Wavenet_B: Voice;
    /**
     * Google voice, American English female.
     * @const
     */
    const en_US_Wavenet_C: Voice;
    /**
     * Google voice, American English male (third voice).
     * @const
     */
    const en_US_Wavenet_D: Voice;
    /**
     * Google voice, American English female (second voice).
     * @const
     */
    const en_US_Wavenet_E: Voice;
    /**
     * Google voice, American English female (third voice).
     * @const
     */
    const en_US_Wavenet_F: Voice;
    /**
     * Google voice, American English female (fourth voice).
     * @const
     */
    const en_US_Wavenet_G: Voice;
    /**
     * Google voice, American English female (fifth voice).
     * @const
     */
    const en_US_Wavenet_H: Voice;
    /**
     * Google voice, American English male (fourth voice).
     * @const
     */
    const en_US_Wavenet_I: Voice;
    /**
     * Google voice, American English male (fifth voice).
     * @const
     */
    const en_US_Wavenet_J: Voice;
    /**
     * Google voice, European Spanish male.
     * @const
     */
    const es_ES_Chirp_HD_D: Voice;
    /**
     * Google voice, European Spanish female.
     * @const
     */
    const es_ES_Chirp_HD_F: Voice;
    /**
     * Google voice, European Spanish female (second voice).
     * @const
     */
    const es_ES_Chirp_HD_O: Voice;
    /**
     * Google voice, European Spanish female.
     * @const
     */
    const es_ES_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, European Spanish male.
     * @const
     */
    const es_ES_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, European Spanish male (second voice).
     * @const
     */
    const es_ES_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, European Spanish male (third voice).
     * @const
     */
    const es_ES_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, European Spanish male (fourth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, European Spanish female (second voice).
     * @const
     */
    const es_ES_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, European Spanish female (third voice).
     * @const
     */
    const es_ES_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, European Spanish female (fourth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, European Spanish male (fifth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, European Spanish female (fifth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, European Spanish male (sixth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, European Spanish female (sixth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, European Spanish male (seventh voice).
     * @const
     */
    const es_ES_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, European Spanish female (seventh voice).
     * @const
     */
    const es_ES_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, European Spanish male (eighth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, European Spanish female (eighth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, European Spanish female (ninth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, European Spanish female (tenth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, European Spanish male (ninth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, European Spanish male (tenth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, European Spanish female (eleventh voice).
     * @const
     */
    const es_ES_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, European Spanish male (eleventh voice).
     * @const
     */
    const es_ES_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, European Spanish male (twelfth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, European Spanish male (thirteenth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, European Spanish male (fourteenth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, European Spanish female (twelfth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, European Spanish male (fifteenth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, European Spanish female (thirteenth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, European Spanish female (fourteenth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, European Spanish male (sixteenth voice).
     * @const
     */
    const es_ES_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, European Spanish female.
     * @const
     */
    const es_ES_Neural2_A: Voice;
    /**
     * Google voice, European Spanish female (second voice).
     * @const
     */
    const es_ES_Neural2_E: Voice;
    /**
     * Google voice, European Spanish male.
     * @const
     */
    const es_ES_Neural2_F: Voice;
    /**
     * Google voice, European Spanish male (second voice).
     * @const
     */
    const es_ES_Neural2_G: Voice;
    /**
     * Google voice, European Spanish female (third voice).
     * @const
     */
    const es_ES_Neural2_H: Voice;
    /**
     * Google voice, European Spanish male.
     * @const
     */
    const es_ES_Polyglot_1: Voice;
    /**
     * Google voice, European Spanish male.
     * @const
     */
    const es_ES_Standard_E: Voice;
    /**
     * Google voice, European Spanish female.
     * @const
     */
    const es_ES_Standard_F: Voice;
    /**
     * Google voice, European Spanish male (second voice).
     * @const
     */
    const es_ES_Standard_G: Voice;
    /**
     * Google voice, European Spanish female (second voice).
     * @const
     */
    const es_ES_Standard_H: Voice;
    /**
     * Google voice, European Spanish female.
     * @const
     */
    const es_ES_Studio_C: Voice;
    /**
     * Google voice, European Spanish male.
     * @const
     */
    const es_ES_Studio_F: Voice;
    /**
     * Google voice, European Spanish male.
     * @const
     */
    const es_ES_Wavenet_E: Voice;
    /**
     * Google voice, European Spanish female.
     * @const
     */
    const es_ES_Wavenet_F: Voice;
    /**
     * Google voice, European Spanish male (second voice).
     * @const
     */
    const es_ES_Wavenet_G: Voice;
    /**
     * Google voice, European Spanish female (second voice).
     * @const
     */
    const es_ES_Wavenet_H: Voice;
    /**
     * Google voice, Spanish (United States) male.
     * @const
     */
    const es_US_Chirp_HD_D: Voice;
    /**
     * Google voice, Spanish (United States) female.
     * @const
     */
    const es_US_Chirp_HD_F: Voice;
    /**
     * Google voice, Spanish (United States) female (second voice).
     * @const
     */
    const es_US_Chirp_HD_O: Voice;
    /**
     * Google voice, Spanish (United States) female.
     * @const
     */
    const es_US_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Spanish (United States) male.
     * @const
     */
    const es_US_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Spanish (United States) male (second voice).
     * @const
     */
    const es_US_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Spanish (United States) male (third voice).
     * @const
     */
    const es_US_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Spanish (United States) male (fourth voice).
     * @const
     */
    const es_US_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Spanish (United States) female (second voice).
     * @const
     */
    const es_US_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Spanish (United States) female (third voice).
     * @const
     */
    const es_US_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Spanish (United States) female (fourth voice).
     * @const
     */
    const es_US_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Spanish (United States) male (fifth voice).
     * @const
     */
    const es_US_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Spanish (United States) female (fifth voice).
     * @const
     */
    const es_US_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Spanish (United States) male (sixth voice).
     * @const
     */
    const es_US_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Spanish (United States) female (sixth voice).
     * @const
     */
    const es_US_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Spanish (United States) male (seventh voice).
     * @const
     */
    const es_US_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Spanish (United States) female (seventh voice).
     * @const
     */
    const es_US_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Spanish (United States) male (eighth voice).
     * @const
     */
    const es_US_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Spanish (United States) female (eighth voice).
     * @const
     */
    const es_US_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Spanish (United States) female (ninth voice).
     * @const
     */
    const es_US_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Spanish (United States) female (tenth voice).
     * @const
     */
    const es_US_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Spanish (United States) male (ninth voice).
     * @const
     */
    const es_US_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Spanish (United States) male (tenth voice).
     * @const
     */
    const es_US_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Spanish (United States) female (eleventh voice).
     * @const
     */
    const es_US_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Spanish (United States) male (eleventh voice).
     * @const
     */
    const es_US_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Spanish (United States) male (twelfth voice).
     * @const
     */
    const es_US_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Spanish (United States) male (thirteenth voice).
     * @const
     */
    const es_US_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Spanish (United States) male (fourteenth voice).
     * @const
     */
    const es_US_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Spanish (United States) female (twelfth voice).
     * @const
     */
    const es_US_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Spanish (United States) male (fifteenth voice).
     * @const
     */
    const es_US_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Spanish (United States) female (thirteenth voice).
     * @const
     */
    const es_US_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Spanish (United States) female (fourteenth voice).
     * @const
     */
    const es_US_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Spanish (United States) male (sixteenth voice).
     * @const
     */
    const es_US_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Spanish (United States) female.
     * @const
     */
    const es_US_Neural2_A: Voice;
    /**
     * Google voice, Spanish (United States) male.
     * @const
     */
    const es_US_Neural2_B: Voice;
    /**
     * Google voice, Spanish (United States) male (second voice).
     * @const
     */
    const es_US_Neural2_C: Voice;
    /**
     * Google voice, Spanish (United States) male.
     * @const
     */
    const es_US_News_D: Voice;
    /**
     * Google voice, Spanish (United States) male (second voice).
     * @const
     */
    const es_US_News_E: Voice;
    /**
     * Google voice, Spanish (United States) female.
     * @const
     */
    const es_US_News_F: Voice;
    /**
     * Google voice, Spanish (United States) female (second voice).
     * @const
     */
    const es_US_News_G: Voice;
    /**
     * Google voice, Spanish (United States) male.
     * @const
     */
    const es_US_Polyglot_1: Voice;
    /**
     * Google voice, Spanish (United States) female.
     * @const
     */
    const es_US_Standard_A: Voice;
    /**
     * Google voice, Spanish (United States) male.
     * @const
     */
    const es_US_Standard_B: Voice;
    /**
     * Google voice, Spanish (United States) male (second voice).
     * @const
     */
    const es_US_Standard_C: Voice;
    /**
     * Google voice, Spanish (United States) male.
     * @const
     */
    const es_US_Studio_B: Voice;
    /**
     * Google voice, Spanish (United States) female.
     * @const
     */
    const es_US_Wavenet_A: Voice;
    /**
     * Google voice, Spanish (United States) male.
     * @const
     */
    const es_US_Wavenet_B: Voice;
    /**
     * Google voice, Spanish (United States) male (second voice).
     * @const
     */
    const es_US_Wavenet_C: Voice;
    /**
     * Google voice, Estonian (Estonia) female.
     * @const
     */
    const et_EE_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Estonian (Estonia) male.
     * @const
     */
    const et_EE_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Estonian (Estonia) male (second voice).
     * @const
     */
    const et_EE_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Estonian (Estonia) male (third voice).
     * @const
     */
    const et_EE_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Estonian (Estonia) male (fourth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Estonian (Estonia) female (second voice).
     * @const
     */
    const et_EE_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Estonian (Estonia) female (third voice).
     * @const
     */
    const et_EE_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Estonian (Estonia) female (fourth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Estonian (Estonia) male (fifth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Estonian (Estonia) female (fifth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Estonian (Estonia) male (sixth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Estonian (Estonia) female (sixth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Estonian (Estonia) male (seventh voice).
     * @const
     */
    const et_EE_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Estonian (Estonia) female (seventh voice).
     * @const
     */
    const et_EE_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Estonian (Estonia) male (eighth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Estonian (Estonia) female (eighth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Estonian (Estonia) female (ninth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Estonian (Estonia) female (tenth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Estonian (Estonia) male (ninth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Estonian (Estonia) male (tenth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Estonian (Estonia) female (eleventh voice).
     * @const
     */
    const et_EE_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Estonian (Estonia) male (eleventh voice).
     * @const
     */
    const et_EE_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Estonian (Estonia) male (twelfth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Estonian (Estonia) male (thirteenth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Estonian (Estonia) male (fourteenth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Estonian (Estonia) female (twelfth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Estonian (Estonia) male (fifteenth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Estonian (Estonia) female (thirteenth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Estonian (Estonia) female (fourteenth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Estonian (Estonia) male (sixteenth voice).
     * @const
     */
    const et_EE_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Estonian (Estonia) male.
     * @const
     */
    const et_EE_Standard_A: Voice;
    /**
     * Google voice, Basque (Spain) female.
     * @const
     */
    const eu_ES_Standard_B: Voice;
    /**
     * Google voice, Finnish (Finland) female.
     * @const
     */
    const fi_FI_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Finnish (Finland) male.
     * @const
     */
    const fi_FI_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Finnish (Finland) male (second voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Finnish (Finland) male (third voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Finnish (Finland) male (fourth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Finnish (Finland) female (second voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Finnish (Finland) female (third voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Finnish (Finland) female (fourth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Finnish (Finland) male (fifth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Finnish (Finland) female (fifth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Finnish (Finland) male (sixth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Finnish (Finland) female (sixth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Finnish (Finland) male (seventh voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Finnish (Finland) female (seventh voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Finnish (Finland) male (eighth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Finnish (Finland) female (eighth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Finnish (Finland) female (ninth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Finnish (Finland) female (tenth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Finnish (Finland) male (ninth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Finnish (Finland) male (tenth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Finnish (Finland) female (eleventh voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Finnish (Finland) male (eleventh voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Finnish (Finland) male (twelfth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Finnish (Finland) male (thirteenth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Finnish (Finland) male (fourteenth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Finnish (Finland) female (twelfth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Finnish (Finland) male (fifteenth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Finnish (Finland) female (thirteenth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Finnish (Finland) female (fourteenth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Finnish (Finland) male (sixteenth voice).
     * @const
     */
    const fi_FI_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Finnish (Finland) female.
     * @const
     */
    const fi_FI_Standard_B: Voice;
    /**
     * Google voice, Finnish (Finland) female.
     * @const
     */
    const fi_FI_Wavenet_B: Voice;
    /**
     * Google voice, Filipino (Philippines) female.
     * @const
     */
    const fil_PH_Standard_A: Voice;
    /**
     * Google voice, Filipino (Philippines) female (second voice).
     * @const
     */
    const fil_PH_Standard_B: Voice;
    /**
     * Google voice, Filipino (Philippines) male.
     * @const
     */
    const fil_PH_Standard_C: Voice;
    /**
     * Google voice, Filipino (Philippines) male (second voice).
     * @const
     */
    const fil_PH_Standard_D: Voice;
    /**
     * Google voice, Filipino (Philippines) female.
     * @const
     */
    const fil_PH_Wavenet_A: Voice;
    /**
     * Google voice, Filipino (Philippines) female (second voice).
     * @const
     */
    const fil_PH_Wavenet_B: Voice;
    /**
     * Google voice, Filipino (Philippines) male.
     * @const
     */
    const fil_PH_Wavenet_C: Voice;
    /**
     * Google voice, Filipino (Philippines) male (second voice).
     * @const
     */
    const fil_PH_Wavenet_D: Voice;
    /**
     * Google voice, Filipino (Philippines) female.
     * @const
     */
    const fil_ph_Neural2_A: Voice;
    /**
     * Google voice, Filipino (Philippines) male.
     * @const
     */
    const fil_ph_Neural2_D: Voice;
    /**
     * Google voice, Canadian French male.
     * @const
     */
    const fr_CA_Chirp_HD_D: Voice;
    /**
     * Google voice, Canadian French female.
     * @const
     */
    const fr_CA_Chirp_HD_F: Voice;
    /**
     * Google voice, Canadian French female (second voice).
     * @const
     */
    const fr_CA_Chirp_HD_O: Voice;
    /**
     * Google voice, Canadian French female.
     * @const
     */
    const fr_CA_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Canadian French male.
     * @const
     */
    const fr_CA_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Canadian French male (second voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Canadian French male (third voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Canadian French male (fourth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Canadian French female (second voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Canadian French female (third voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Canadian French female (fourth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Canadian French male (fifth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Canadian French female (fifth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Canadian French male (sixth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Canadian French female (sixth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Canadian French male (seventh voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Canadian French female (seventh voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Canadian French male (eighth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Canadian French female (eighth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Canadian French female (ninth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Canadian French female (tenth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Canadian French male (ninth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Canadian French male (tenth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Canadian French female (eleventh voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Canadian French male (eleventh voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Canadian French male (twelfth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Canadian French male (thirteenth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Canadian French male (fourteenth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Canadian French female (twelfth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Canadian French male (fifteenth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Canadian French female (thirteenth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Canadian French female (fourteenth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Canadian French male (sixteenth voice).
     * @const
     */
    const fr_CA_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Canadian French female.
     * @const
     */
    const fr_CA_Neural2_A: Voice;
    /**
     * Google voice, Canadian French male.
     * @const
     */
    const fr_CA_Neural2_B: Voice;
    /**
     * Google voice, Canadian French female (second voice).
     * @const
     */
    const fr_CA_Neural2_C: Voice;
    /**
     * Google voice, Canadian French male (second voice).
     * @const
     */
    const fr_CA_Neural2_D: Voice;
    /**
     * Google voice, Canadian French female.
     * @const
     */
    const fr_CA_Standard_A: Voice;
    /**
     * Google voice, Canadian French male.
     * @const
     */
    const fr_CA_Standard_B: Voice;
    /**
     * Google voice, Canadian French female (second voice).
     * @const
     */
    const fr_CA_Standard_C: Voice;
    /**
     * Google voice, Canadian French male (second voice).
     * @const
     */
    const fr_CA_Standard_D: Voice;
    /**
     * Google voice, Canadian French female.
     * @const
     */
    const fr_CA_Wavenet_A: Voice;
    /**
     * Google voice, Canadian French male.
     * @const
     */
    const fr_CA_Wavenet_B: Voice;
    /**
     * Google voice, Canadian French female (second voice).
     * @const
     */
    const fr_CA_Wavenet_C: Voice;
    /**
     * Google voice, Canadian French male (second voice).
     * @const
     */
    const fr_CA_Wavenet_D: Voice;
    /**
     * Google voice, French (France) male.
     * @const
     */
    const fr_FR_Chirp_HD_D: Voice;
    /**
     * Google voice, French (France) female.
     * @const
     */
    const fr_FR_Chirp_HD_F: Voice;
    /**
     * Google voice, French (France) female (second voice).
     * @const
     */
    const fr_FR_Chirp_HD_O: Voice;
    /**
     * Google voice, French (France) female.
     * @const
     */
    const fr_FR_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, French (France) male.
     * @const
     */
    const fr_FR_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, French (France) male (second voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, French (France) male (third voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, French (France) male (fourth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, French (France) female (second voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, French (France) female (third voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, French (France) female (fourth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, French (France) male (fifth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, French (France) female (fifth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, French (France) male (sixth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, French (France) female (sixth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, French (France) male (seventh voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, French (France) female (seventh voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, French (France) male (eighth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, French (France) female (eighth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, French (France) female (ninth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, French (France) female (tenth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, French (France) male (ninth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, French (France) male (tenth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, French (France) female (eleventh voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, French (France) male (eleventh voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, French (France) male (twelfth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, French (France) male (thirteenth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, French (France) male (fourteenth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, French (France) female (twelfth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, French (France) male (fifteenth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, French (France) female (thirteenth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, French (France) female (fourteenth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, French (France) male (sixteenth voice).
     * @const
     */
    const fr_FR_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, French (France) female.
     * @const
     */
    const fr_FR_Neural2_F: Voice;
    /**
     * Google voice, French (France) male.
     * @const
     */
    const fr_FR_Neural2_G: Voice;
    /**
     * Google voice, French (France) male.
     * @const
     */
    const fr_FR_Polyglot_1: Voice;
    /**
     * Google voice, French (France) female.
     * @const
     */
    const fr_FR_Standard_F: Voice;
    /**
     * Google voice, French (France) male.
     * @const
     */
    const fr_FR_Standard_G: Voice;
    /**
     * Google voice, French (France) female.
     * @const
     */
    const fr_FR_Studio_A: Voice;
    /**
     * Google voice, French (France) male.
     * @const
     */
    const fr_FR_Studio_D: Voice;
    /**
     * Google voice, French (France) female.
     * @const
     */
    const fr_FR_Wavenet_F: Voice;
    /**
     * Google voice, French (France) male.
     * @const
     */
    const fr_FR_Wavenet_G: Voice;
    /**
     * Google voice, Galician (Spain) female.
     * @const
     */
    const gl_ES_Standard_B: Voice;
    /**
     * Google voice, Gujarati (India) female.
     * @const
     */
    const gu_IN_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Gujarati (India) male.
     * @const
     */
    const gu_IN_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Gujarati (India) male (second voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Gujarati (India) male (third voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Gujarati (India) male (fourth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Gujarati (India) female (second voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Gujarati (India) female (third voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Gujarati (India) female (fourth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Gujarati (India) male (fifth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Gujarati (India) female (fifth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Gujarati (India) male (sixth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Gujarati (India) female (sixth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Gujarati (India) male (seventh voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Gujarati (India) female (seventh voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Gujarati (India) male (eighth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Gujarati (India) female (eighth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Gujarati (India) female (ninth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Gujarati (India) female (tenth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Gujarati (India) male (ninth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Gujarati (India) male (tenth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Gujarati (India) female (eleventh voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Gujarati (India) male (eleventh voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Gujarati (India) male (twelfth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Gujarati (India) male (thirteenth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Gujarati (India) male (fourteenth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Gujarati (India) female (twelfth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Gujarati (India) male (fifteenth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Gujarati (India) female (thirteenth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Gujarati (India) female (fourteenth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Gujarati (India) male (sixteenth voice).
     * @const
     */
    const gu_IN_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Gujarati (India) female.
     * @const
     */
    const gu_IN_Standard_A: Voice;
    /**
     * Google voice, Gujarati (India) male.
     * @const
     */
    const gu_IN_Standard_B: Voice;
    /**
     * Google voice, Gujarati (India) female (second voice).
     * @const
     */
    const gu_IN_Standard_C: Voice;
    /**
     * Google voice, Gujarati (India) male (second voice).
     * @const
     */
    const gu_IN_Standard_D: Voice;
    /**
     * Google voice, Gujarati (India) female.
     * @const
     */
    const gu_IN_Wavenet_A: Voice;
    /**
     * Google voice, Gujarati (India) male.
     * @const
     */
    const gu_IN_Wavenet_B: Voice;
    /**
     * Google voice, Gujarati (India) female (second voice).
     * @const
     */
    const gu_IN_Wavenet_C: Voice;
    /**
     * Google voice, Gujarati (India) male (second voice).
     * @const
     */
    const gu_IN_Wavenet_D: Voice;
    /**
     * Google voice, Hebrew (Israel) female.
     * @const
     */
    const he_IL_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Hebrew (Israel) male.
     * @const
     */
    const he_IL_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Hebrew (Israel) male (second voice).
     * @const
     */
    const he_IL_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Hebrew (Israel) male (third voice).
     * @const
     */
    const he_IL_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Hebrew (Israel) male (fourth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Hebrew (Israel) female (second voice).
     * @const
     */
    const he_IL_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Hebrew (Israel) female (third voice).
     * @const
     */
    const he_IL_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Hebrew (Israel) female (fourth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Hebrew (Israel) male (fifth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Hebrew (Israel) female (fifth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Hebrew (Israel) male (sixth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Hebrew (Israel) female (sixth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Hebrew (Israel) male (seventh voice).
     * @const
     */
    const he_IL_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Hebrew (Israel) female (seventh voice).
     * @const
     */
    const he_IL_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Hebrew (Israel) male (eighth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Hebrew (Israel) female (eighth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Hebrew (Israel) female (ninth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Hebrew (Israel) female (tenth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Hebrew (Israel) male (ninth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Hebrew (Israel) male (tenth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Hebrew (Israel) female (eleventh voice).
     * @const
     */
    const he_IL_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Hebrew (Israel) male (eleventh voice).
     * @const
     */
    const he_IL_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Hebrew (Israel) male (twelfth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Hebrew (Israel) male (thirteenth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Hebrew (Israel) male (fourteenth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Hebrew (Israel) female (twelfth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Hebrew (Israel) male (fifteenth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Hebrew (Israel) female (thirteenth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Hebrew (Israel) female (fourteenth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Hebrew (Israel) male (sixteenth voice).
     * @const
     */
    const he_IL_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Hebrew (Israel) female.
     * @const
     */
    const he_IL_Standard_A: Voice;
    /**
     * Google voice, Hebrew (Israel) male.
     * @const
     */
    const he_IL_Standard_B: Voice;
    /**
     * Google voice, Hebrew (Israel) female (second voice).
     * @const
     */
    const he_IL_Standard_C: Voice;
    /**
     * Google voice, Hebrew (Israel) male (second voice).
     * @const
     */
    const he_IL_Standard_D: Voice;
    /**
     * Google voice, Hebrew (Israel) female.
     * @const
     */
    const he_IL_Wavenet_A: Voice;
    /**
     * Google voice, Hebrew (Israel) male.
     * @const
     */
    const he_IL_Wavenet_B: Voice;
    /**
     * Google voice, Hebrew (Israel) female (second voice).
     * @const
     */
    const he_IL_Wavenet_C: Voice;
    /**
     * Google voice, Hebrew (Israel) male (second voice).
     * @const
     */
    const he_IL_Wavenet_D: Voice;
    /**
     * Google voice, Hindi (India) female.
     * @const
     */
    const hi_IN_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Hindi (India) male.
     * @const
     */
    const hi_IN_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Hindi (India) male (second voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Hindi (India) male (third voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Hindi (India) male (fourth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Hindi (India) female (second voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Hindi (India) female (third voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Hindi (India) female (fourth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Hindi (India) male (fifth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Hindi (India) female (fifth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Hindi (India) male (sixth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Hindi (India) female (sixth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Hindi (India) male (seventh voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Hindi (India) female (seventh voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Hindi (India) male (eighth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Hindi (India) female (eighth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Hindi (India) female (ninth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Hindi (India) female (tenth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Hindi (India) male (ninth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Hindi (India) male (tenth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Hindi (India) female (eleventh voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Hindi (India) male (eleventh voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Hindi (India) male (twelfth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Hindi (India) male (thirteenth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Hindi (India) male (fourteenth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Hindi (India) female (twelfth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Hindi (India) male (fifteenth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Hindi (India) female (thirteenth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Hindi (India) female (fourteenth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Hindi (India) male (sixteenth voice).
     * @const
     */
    const hi_IN_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Hindi (India) female.
     * @const
     */
    const hi_IN_Neural2_A: Voice;
    /**
     * Google voice, Hindi (India) male.
     * @const
     */
    const hi_IN_Neural2_B: Voice;
    /**
     * Google voice, Hindi (India) male (second voice).
     * @const
     */
    const hi_IN_Neural2_C: Voice;
    /**
     * Google voice, Hindi (India) female (second voice).
     * @const
     */
    const hi_IN_Neural2_D: Voice;
    /**
     * Google voice, Hindi (India) female.
     * @const
     */
    const hi_IN_Standard_A: Voice;
    /**
     * Google voice, Hindi (India) male.
     * @const
     */
    const hi_IN_Standard_B: Voice;
    /**
     * Google voice, Hindi (India) male (second voice).
     * @const
     */
    const hi_IN_Standard_C: Voice;
    /**
     * Google voice, Hindi (India) female (second voice).
     * @const
     */
    const hi_IN_Standard_D: Voice;
    /**
     * Google voice, Hindi (India) female (third voice).
     * @const
     */
    const hi_IN_Standard_E: Voice;
    /**
     * Google voice, Hindi (India) male (third voice).
     * @const
     */
    const hi_IN_Standard_F: Voice;
    /**
     * Google voice, Hindi (India) female.
     * @const
     */
    const hi_IN_Wavenet_A: Voice;
    /**
     * Google voice, Hindi (India) male.
     * @const
     */
    const hi_IN_Wavenet_B: Voice;
    /**
     * Google voice, Hindi (India) male (second voice).
     * @const
     */
    const hi_IN_Wavenet_C: Voice;
    /**
     * Google voice, Hindi (India) female (second voice).
     * @const
     */
    const hi_IN_Wavenet_D: Voice;
    /**
     * Google voice, Hindi (India) female (third voice).
     * @const
     */
    const hi_IN_Wavenet_E: Voice;
    /**
     * Google voice, Hindi (India) male (third voice).
     * @const
     */
    const hi_IN_Wavenet_F: Voice;
    /**
     * Google voice, Croatian (Croatia) female.
     * @const
     */
    const hr_HR_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Croatian (Croatia) male.
     * @const
     */
    const hr_HR_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Croatian (Croatia) male (second voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Croatian (Croatia) male (third voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Croatian (Croatia) male (fourth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Croatian (Croatia) female (second voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Croatian (Croatia) female (third voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Croatian (Croatia) female (fourth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Croatian (Croatia) male (fifth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Croatian (Croatia) female (fifth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Croatian (Croatia) male (sixth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Croatian (Croatia) female (sixth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Croatian (Croatia) male (seventh voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Croatian (Croatia) female (seventh voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Croatian (Croatia) male (eighth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Croatian (Croatia) female (eighth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Croatian (Croatia) female (ninth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Croatian (Croatia) female (tenth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Croatian (Croatia) male (ninth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Croatian (Croatia) male (tenth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Croatian (Croatia) female (eleventh voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Croatian (Croatia) male (eleventh voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Croatian (Croatia) male (twelfth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Croatian (Croatia) male (thirteenth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Croatian (Croatia) male (fourteenth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Croatian (Croatia) female (twelfth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Croatian (Croatia) male (fifteenth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Croatian (Croatia) female (thirteenth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Croatian (Croatia) female (fourteenth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Croatian (Croatia) male (sixteenth voice).
     * @const
     */
    const hr_HR_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Hungarian (Hungary) female.
     * @const
     */
    const hu_HU_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Hungarian (Hungary) male.
     * @const
     */
    const hu_HU_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Hungarian (Hungary) male (second voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Hungarian (Hungary) male (third voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Hungarian (Hungary) male (fourth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Hungarian (Hungary) female (second voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Hungarian (Hungary) female (third voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Hungarian (Hungary) female (fourth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Hungarian (Hungary) male (fifth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Hungarian (Hungary) female (fifth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Hungarian (Hungary) male (sixth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Hungarian (Hungary) female (sixth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Hungarian (Hungary) male (seventh voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Hungarian (Hungary) female (seventh voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Hungarian (Hungary) male (eighth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Hungarian (Hungary) female (eighth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Hungarian (Hungary) female (ninth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Hungarian (Hungary) female (tenth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Hungarian (Hungary) male (ninth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Hungarian (Hungary) male (tenth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Hungarian (Hungary) female (eleventh voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Hungarian (Hungary) male (eleventh voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Hungarian (Hungary) male (twelfth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Hungarian (Hungary) male (thirteenth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Hungarian (Hungary) male (fourteenth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Hungarian (Hungary) female (twelfth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Hungarian (Hungary) male (fifteenth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Hungarian (Hungary) female (thirteenth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Hungarian (Hungary) female (fourteenth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Hungarian (Hungary) male (sixteenth voice).
     * @const
     */
    const hu_HU_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Hungarian (Hungary) female.
     * @const
     */
    const hu_HU_Standard_B: Voice;
    /**
     * Google voice, Hungarian (Hungary) female.
     * @const
     */
    const hu_HU_Wavenet_B: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female.
     * @const
     */
    const id_ID_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male.
     * @const
     */
    const id_ID_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (second voice).
     * @const
     */
    const id_ID_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (third voice).
     * @const
     */
    const id_ID_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (fourth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female (second voice).
     * @const
     */
    const id_ID_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female (third voice).
     * @const
     */
    const id_ID_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female (fourth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (fifth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female (fifth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (sixth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female (sixth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (seventh voice).
     * @const
     */
    const id_ID_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female (seventh voice).
     * @const
     */
    const id_ID_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (eighth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female (eighth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female (ninth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female (tenth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (ninth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (tenth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female (eleventh voice).
     * @const
     */
    const id_ID_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (eleventh voice).
     * @const
     */
    const id_ID_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (twelfth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (thirteenth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (fourteenth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female (twelfth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (fifteenth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female (thirteenth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female (fourteenth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (sixteenth voice).
     * @const
     */
    const id_ID_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female.
     * @const
     */
    const id_ID_Standard_A: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male.
     * @const
     */
    const id_ID_Standard_B: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (second voice).
     * @const
     */
    const id_ID_Standard_C: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female (second voice).
     * @const
     */
    const id_ID_Standard_D: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female.
     * @const
     */
    const id_ID_Wavenet_A: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male.
     * @const
     */
    const id_ID_Wavenet_B: Voice;
    /**
     * Google voice, Indonesian (Indonesia) male (second voice).
     * @const
     */
    const id_ID_Wavenet_C: Voice;
    /**
     * Google voice, Indonesian (Indonesia) female (second voice).
     * @const
     */
    const id_ID_Wavenet_D: Voice;
    /**
     * Google voice, Icelandic (Iceland) female.
     * @const
     */
    const is_IS_Standard_B: Voice;
    /**
     * Google voice, Italian (Italy) male.
     * @const
     */
    const it_IT_Chirp_HD_D: Voice;
    /**
     * Google voice, Italian (Italy) female.
     * @const
     */
    const it_IT_Chirp_HD_F: Voice;
    /**
     * Google voice, Italian (Italy) female (second voice).
     * @const
     */
    const it_IT_Chirp_HD_O: Voice;
    /**
     * Google voice, Italian (Italy) female.
     * @const
     */
    const it_IT_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Italian (Italy) male.
     * @const
     */
    const it_IT_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Italian (Italy) male (second voice).
     * @const
     */
    const it_IT_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Italian (Italy) male (third voice).
     * @const
     */
    const it_IT_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Italian (Italy) male (fourth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Italian (Italy) female (second voice).
     * @const
     */
    const it_IT_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Italian (Italy) female (third voice).
     * @const
     */
    const it_IT_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Italian (Italy) female (fourth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Italian (Italy) male (fifth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Italian (Italy) female (fifth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Italian (Italy) male (sixth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Italian (Italy) female (sixth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Italian (Italy) male (seventh voice).
     * @const
     */
    const it_IT_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Italian (Italy) female (seventh voice).
     * @const
     */
    const it_IT_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Italian (Italy) male (eighth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Italian (Italy) female (eighth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Italian (Italy) female (ninth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Italian (Italy) female (tenth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Italian (Italy) male (ninth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Italian (Italy) male (tenth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Italian (Italy) female (eleventh voice).
     * @const
     */
    const it_IT_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Italian (Italy) male (eleventh voice).
     * @const
     */
    const it_IT_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Italian (Italy) male (twelfth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Italian (Italy) male (thirteenth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Italian (Italy) male (fourteenth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Italian (Italy) female (twelfth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Italian (Italy) male (fifteenth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Italian (Italy) female (thirteenth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Italian (Italy) female (fourteenth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Italian (Italy) male (sixteenth voice).
     * @const
     */
    const it_IT_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Italian (Italy) female.
     * @const
     */
    const it_IT_Neural2_A: Voice;
    /**
     * Google voice, Italian (Italy) female (second voice).
     * @const
     */
    const it_IT_Neural2_E: Voice;
    /**
     * Google voice, Italian (Italy) male.
     * @const
     */
    const it_IT_Neural2_F: Voice;
    /**
     * Google voice, Italian (Italy) female.
     * @const
     */
    const it_IT_Standard_E: Voice;
    /**
     * Google voice, Italian (Italy) male.
     * @const
     */
    const it_IT_Standard_F: Voice;
    /**
     * Google voice, Italian (Italy) female.
     * @const
     */
    const it_IT_Wavenet_E: Voice;
    /**
     * Google voice, Italian (Italy) male.
     * @const
     */
    const it_IT_Wavenet_F: Voice;
    /**
     * Google voice, Japanese (Japan) female.
     * @const
     */
    const ja_JP_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Japanese (Japan) male.
     * @const
     */
    const ja_JP_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Japanese (Japan) male (second voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Japanese (Japan) male (third voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Japanese (Japan) male (fourth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Japanese (Japan) female (second voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Japanese (Japan) female (third voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Japanese (Japan) female (fourth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Japanese (Japan) male (fifth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Japanese (Japan) female (fifth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Japanese (Japan) male (sixth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Japanese (Japan) female (sixth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Japanese (Japan) male (seventh voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Japanese (Japan) female (seventh voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Japanese (Japan) male (eighth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Japanese (Japan) female (eighth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Japanese (Japan) female (ninth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Japanese (Japan) female (tenth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Japanese (Japan) male (ninth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Japanese (Japan) male (tenth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Japanese (Japan) female (eleventh voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Japanese (Japan) male (eleventh voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Japanese (Japan) male (twelfth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Japanese (Japan) male (thirteenth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Japanese (Japan) male (fourteenth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Japanese (Japan) female (twelfth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Japanese (Japan) male (fifteenth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Japanese (Japan) female (thirteenth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Japanese (Japan) female (fourteenth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Japanese (Japan) male (sixteenth voice).
     * @const
     */
    const ja_JP_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Japanese (Japan) female.
     * @const
     */
    const ja_JP_Neural2_B: Voice;
    /**
     * Google voice, Japanese (Japan) male.
     * @const
     */
    const ja_JP_Neural2_C: Voice;
    /**
     * Google voice, Japanese (Japan) male (second voice).
     * @const
     */
    const ja_JP_Neural2_D: Voice;
    /**
     * Google voice, Japanese (Japan) female.
     * @const
     */
    const ja_JP_Standard_A: Voice;
    /**
     * Google voice, Japanese (Japan) female (second voice).
     * @const
     */
    const ja_JP_Standard_B: Voice;
    /**
     * Google voice, Japanese (Japan) male.
     * @const
     */
    const ja_JP_Standard_C: Voice;
    /**
     * Google voice, Japanese (Japan) male (second voice).
     * @const
     */
    const ja_JP_Standard_D: Voice;
    /**
     * Google voice, Japanese (Japan) female.
     * @const
     */
    const ja_JP_Wavenet_A: Voice;
    /**
     * Google voice, Japanese (Japan) female (second voice).
     * @const
     */
    const ja_JP_Wavenet_B: Voice;
    /**
     * Google voice, Japanese (Japan) male.
     * @const
     */
    const ja_JP_Wavenet_C: Voice;
    /**
     * Google voice, Japanese (Japan) male (second voice).
     * @const
     */
    const ja_JP_Wavenet_D: Voice;
    /**
     * Google voice, Kannada (India) female.
     * @const
     */
    const kn_IN_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Kannada (India) male.
     * @const
     */
    const kn_IN_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Kannada (India) male (second voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Kannada (India) male (third voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Kannada (India) male (fourth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Kannada (India) female (second voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Kannada (India) female (third voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Kannada (India) female (fourth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Kannada (India) male (fifth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Kannada (India) female (fifth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Kannada (India) male (sixth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Kannada (India) female (sixth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Kannada (India) male (seventh voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Kannada (India) female (seventh voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Kannada (India) male (eighth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Kannada (India) female (eighth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Kannada (India) female (ninth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Kannada (India) female (tenth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Kannada (India) male (ninth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Kannada (India) male (tenth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Kannada (India) female (eleventh voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Kannada (India) male (eleventh voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Kannada (India) male (twelfth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Kannada (India) male (thirteenth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Kannada (India) male (fourteenth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Kannada (India) female (twelfth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Kannada (India) male (fifteenth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Kannada (India) female (thirteenth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Kannada (India) female (fourteenth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Kannada (India) male (sixteenth voice).
     * @const
     */
    const kn_IN_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Kannada (India) female.
     * @const
     */
    const kn_IN_Standard_A: Voice;
    /**
     * Google voice, Kannada (India) male.
     * @const
     */
    const kn_IN_Standard_B: Voice;
    /**
     * Google voice, Kannada (India) female (second voice).
     * @const
     */
    const kn_IN_Standard_C: Voice;
    /**
     * Google voice, Kannada (India) male (second voice).
     * @const
     */
    const kn_IN_Standard_D: Voice;
    /**
     * Google voice, Kannada (India) female.
     * @const
     */
    const kn_IN_Wavenet_A: Voice;
    /**
     * Google voice, Kannada (India) male.
     * @const
     */
    const kn_IN_Wavenet_B: Voice;
    /**
     * Google voice, Kannada (India) female (second voice).
     * @const
     */
    const kn_IN_Wavenet_C: Voice;
    /**
     * Google voice, Kannada (India) male (second voice).
     * @const
     */
    const kn_IN_Wavenet_D: Voice;
    /**
     * Google voice, Korean (South Korea) female.
     * @const
     */
    const ko_KR_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Korean (South Korea) male.
     * @const
     */
    const ko_KR_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Korean (South Korea) male (second voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Korean (South Korea) male (third voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Korean (South Korea) male (fourth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Korean (South Korea) female (second voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Korean (South Korea) female (third voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Korean (South Korea) female (fourth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Korean (South Korea) male (fifth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Korean (South Korea) female (fifth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Korean (South Korea) male (sixth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Korean (South Korea) female (sixth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Korean (South Korea) male (seventh voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Korean (South Korea) female (seventh voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Korean (South Korea) male (eighth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Korean (South Korea) female (eighth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Korean (South Korea) female (ninth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Korean (South Korea) female (tenth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Korean (South Korea) male (ninth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Korean (South Korea) male (tenth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Korean (South Korea) female (eleventh voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Korean (South Korea) male (eleventh voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Korean (South Korea) male (twelfth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Korean (South Korea) male (thirteenth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Korean (South Korea) male (fourteenth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Korean (South Korea) female (twelfth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Korean (South Korea) male (fifteenth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Korean (South Korea) female (thirteenth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Korean (South Korea) female (fourteenth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Korean (South Korea) male (sixteenth voice).
     * @const
     */
    const ko_KR_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Korean (South Korea) female.
     * @const
     */
    const ko_KR_Neural2_A: Voice;
    /**
     * Google voice, Korean (South Korea) female (second voice).
     * @const
     */
    const ko_KR_Neural2_B: Voice;
    /**
     * Google voice, Korean (South Korea) male.
     * @const
     */
    const ko_KR_Neural2_C: Voice;
    /**
     * Google voice, Korean (South Korea) female.
     * @const
     */
    const ko_KR_Standard_A: Voice;
    /**
     * Google voice, Korean (South Korea) female (second voice).
     * @const
     */
    const ko_KR_Standard_B: Voice;
    /**
     * Google voice, Korean (South Korea) male.
     * @const
     */
    const ko_KR_Standard_C: Voice;
    /**
     * Google voice, Korean (South Korea) male (second voice).
     * @const
     */
    const ko_KR_Standard_D: Voice;
    /**
     * Google voice, Korean (South Korea) female.
     * @const
     */
    const ko_KR_Wavenet_A: Voice;
    /**
     * Google voice, Korean (South Korea) female (second voice).
     * @const
     */
    const ko_KR_Wavenet_B: Voice;
    /**
     * Google voice, Korean (South Korea) male.
     * @const
     */
    const ko_KR_Wavenet_C: Voice;
    /**
     * Google voice, Korean (South Korea) male (second voice).
     * @const
     */
    const ko_KR_Wavenet_D: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) female.
     * @const
     */
    const lt_LT_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male.
     * @const
     */
    const lt_LT_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male (second voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male (third voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male (fourth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) female (second voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) female (third voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) female (fourth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male (fifth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) female (fifth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male (sixth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) female (sixth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male (seventh voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) female (seventh voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male (eighth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) female (eighth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) female (ninth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) female (tenth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male (ninth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male (tenth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) female (eleventh voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male (eleventh voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male (twelfth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male (thirteenth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male (fourteenth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) female (twelfth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male (fifteenth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) female (thirteenth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) female (fourteenth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male (sixteenth voice).
     * @const
     */
    const lt_LT_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Lithuanian (Lithuania) male.
     * @const
     */
    const lt_LT_Standard_B: Voice;
    /**
     * Google voice, Latvian (Latvia) female.
     * @const
     */
    const lv_LV_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Latvian (Latvia) male.
     * @const
     */
    const lv_LV_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Latvian (Latvia) male (second voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Latvian (Latvia) male (third voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Latvian (Latvia) male (fourth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Latvian (Latvia) female (second voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Latvian (Latvia) female (third voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Latvian (Latvia) female (fourth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Latvian (Latvia) male (fifth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Latvian (Latvia) female (fifth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Latvian (Latvia) male (sixth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Latvian (Latvia) female (sixth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Latvian (Latvia) male (seventh voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Latvian (Latvia) female (seventh voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Latvian (Latvia) male (eighth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Latvian (Latvia) female (eighth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Latvian (Latvia) female (ninth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Latvian (Latvia) female (tenth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Latvian (Latvia) male (ninth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Latvian (Latvia) male (tenth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Latvian (Latvia) female (eleventh voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Latvian (Latvia) male (eleventh voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Latvian (Latvia) male (twelfth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Latvian (Latvia) male (thirteenth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Latvian (Latvia) male (fourteenth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Latvian (Latvia) female (twelfth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Latvian (Latvia) male (fifteenth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Latvian (Latvia) female (thirteenth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Latvian (Latvia) female (fourteenth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Latvian (Latvia) male (sixteenth voice).
     * @const
     */
    const lv_LV_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Latvian (Latvia) male.
     * @const
     */
    const lv_LV_Standard_B: Voice;
    /**
     * Google voice, Malayalam (India) female.
     * @const
     */
    const ml_IN_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Malayalam (India) male.
     * @const
     */
    const ml_IN_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Malayalam (India) male (second voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Malayalam (India) male (third voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Malayalam (India) male (fourth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Malayalam (India) female (second voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Malayalam (India) female (third voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Malayalam (India) female (fourth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Malayalam (India) male (fifth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Malayalam (India) female (fifth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Malayalam (India) male (sixth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Malayalam (India) female (sixth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Malayalam (India) male (seventh voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Malayalam (India) female (seventh voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Malayalam (India) male (eighth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Malayalam (India) female (eighth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Malayalam (India) female (ninth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Malayalam (India) female (tenth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Malayalam (India) male (ninth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Malayalam (India) male (tenth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Malayalam (India) female (eleventh voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Malayalam (India) male (eleventh voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Malayalam (India) male (twelfth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Malayalam (India) male (thirteenth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Malayalam (India) male (fourteenth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Malayalam (India) female (twelfth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Malayalam (India) male (fifteenth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Malayalam (India) female (thirteenth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Malayalam (India) female (fourteenth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Malayalam (India) male (sixteenth voice).
     * @const
     */
    const ml_IN_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Malayalam (India) female.
     * @const
     */
    const ml_IN_Standard_A: Voice;
    /**
     * Google voice, Malayalam (India) male.
     * @const
     */
    const ml_IN_Standard_B: Voice;
    /**
     * Google voice, Malayalam (India) female (second voice).
     * @const
     */
    const ml_IN_Standard_C: Voice;
    /**
     * Google voice, Malayalam (India) male (second voice).
     * @const
     */
    const ml_IN_Standard_D: Voice;
    /**
     * Google voice, Malayalam (India) female.
     * @const
     */
    const ml_IN_Wavenet_A: Voice;
    /**
     * Google voice, Malayalam (India) male.
     * @const
     */
    const ml_IN_Wavenet_B: Voice;
    /**
     * Google voice, Malayalam (India) female (second voice).
     * @const
     */
    const ml_IN_Wavenet_C: Voice;
    /**
     * Google voice, Malayalam (India) male (second voice).
     * @const
     */
    const ml_IN_Wavenet_D: Voice;
    /**
     * Google voice, Marathi (India) female.
     * @const
     */
    const mr_IN_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Marathi (India) male.
     * @const
     */
    const mr_IN_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Marathi (India) male (second voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Marathi (India) male (third voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Marathi (India) male (fourth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Marathi (India) female (second voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Marathi (India) female (third voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Marathi (India) female (fourth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Marathi (India) male (fifth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Marathi (India) female (fifth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Marathi (India) male (sixth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Marathi (India) female (sixth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Marathi (India) male (seventh voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Marathi (India) female (seventh voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Marathi (India) male (eighth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Marathi (India) female (eighth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Marathi (India) female (ninth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Marathi (India) female (tenth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Marathi (India) male (ninth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Marathi (India) male (tenth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Marathi (India) female (eleventh voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Marathi (India) male (eleventh voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Marathi (India) male (twelfth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Marathi (India) male (thirteenth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Marathi (India) male (fourteenth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Marathi (India) female (twelfth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Marathi (India) male (fifteenth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Marathi (India) female (thirteenth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Marathi (India) female (fourteenth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Marathi (India) male (sixteenth voice).
     * @const
     */
    const mr_IN_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Marathi (India) female.
     * @const
     */
    const mr_IN_Standard_A: Voice;
    /**
     * Google voice, Marathi (India) male.
     * @const
     */
    const mr_IN_Standard_B: Voice;
    /**
     * Google voice, Marathi (India) female (second voice).
     * @const
     */
    const mr_IN_Standard_C: Voice;
    /**
     * Google voice, Marathi (India) female.
     * @const
     */
    const mr_IN_Wavenet_A: Voice;
    /**
     * Google voice, Marathi (India) male.
     * @const
     */
    const mr_IN_Wavenet_B: Voice;
    /**
     * Google voice, Marathi (India) female (second voice).
     * @const
     */
    const mr_IN_Wavenet_C: Voice;
    /**
     * Google voice, Malay (Malaysia) female.
     * @const
     */
    const ms_MY_Standard_A: Voice;
    /**
     * Google voice, Malay (Malaysia) male.
     * @const
     */
    const ms_MY_Standard_B: Voice;
    /**
     * Google voice, Malay (Malaysia) female (second voice).
     * @const
     */
    const ms_MY_Standard_C: Voice;
    /**
     * Google voice, Malay (Malaysia) male (second voice).
     * @const
     */
    const ms_MY_Standard_D: Voice;
    /**
     * Google voice, Malay (Malaysia) female.
     * @const
     */
    const ms_MY_Wavenet_A: Voice;
    /**
     * Google voice, Malay (Malaysia) male.
     * @const
     */
    const ms_MY_Wavenet_B: Voice;
    /**
     * Google voice, Malay (Malaysia) female (second voice).
     * @const
     */
    const ms_MY_Wavenet_C: Voice;
    /**
     * Google voice, Malay (Malaysia) male (second voice).
     * @const
     */
    const ms_MY_Wavenet_D: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female.
     * @const
     */
    const nb_NO_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male.
     * @const
     */
    const nb_NO_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male (second voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male (third voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male (fourth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female (second voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female (third voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female (fourth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male (fifth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female (fifth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male (sixth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female (sixth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male (seventh voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female (seventh voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male (eighth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female (eighth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female (ninth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female (tenth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male (ninth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male (tenth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female (eleventh voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male (eleventh voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male (twelfth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male (thirteenth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male (fourteenth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female (twelfth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male (fifteenth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female (thirteenth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female (fourteenth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male (sixteenth voice).
     * @const
     */
    const nb_NO_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female.
     * @const
     */
    const nb_NO_Standard_F: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male.
     * @const
     */
    const nb_NO_Standard_G: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) female.
     * @const
     */
    const nb_NO_Wavenet_F: Voice;
    /**
     * Google voice, Norwegian Bokmål (Norway) male.
     * @const
     */
    const nb_NO_Wavenet_G: Voice;
    /**
     * Google voice, Flemish female.
     * @const
     */
    const nl_BE_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Flemish male.
     * @const
     */
    const nl_BE_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Flemish male (second voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Flemish male (third voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Flemish male (fourth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Flemish female (second voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Flemish female (third voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Flemish female (fourth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Flemish male (fifth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Flemish female (fifth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Flemish male (sixth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Flemish female (sixth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Flemish male (seventh voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Flemish female (seventh voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Flemish male (eighth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Flemish female (eighth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Flemish female (ninth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Flemish female (tenth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Flemish male (ninth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Flemish male (tenth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Flemish female (eleventh voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Flemish male (eleventh voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Flemish male (twelfth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Flemish male (thirteenth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Flemish male (fourteenth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Flemish female (twelfth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Flemish male (fifteenth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Flemish female (thirteenth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Flemish female (fourteenth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Flemish male (sixteenth voice).
     * @const
     */
    const nl_BE_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Flemish female.
     * @const
     */
    const nl_BE_Standard_C: Voice;
    /**
     * Google voice, Flemish male.
     * @const
     */
    const nl_BE_Standard_D: Voice;
    /**
     * Google voice, Flemish female.
     * @const
     */
    const nl_BE_Wavenet_C: Voice;
    /**
     * Google voice, Flemish male.
     * @const
     */
    const nl_BE_Wavenet_D: Voice;
    /**
     * Google voice, Dutch (Netherlands) female.
     * @const
     */
    const nl_NL_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Dutch (Netherlands) male.
     * @const
     */
    const nl_NL_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Dutch (Netherlands) male (second voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Dutch (Netherlands) male (third voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Dutch (Netherlands) male (fourth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Dutch (Netherlands) female (second voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Dutch (Netherlands) female (third voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Dutch (Netherlands) female (fourth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Dutch (Netherlands) male (fifth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Dutch (Netherlands) female (fifth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Dutch (Netherlands) male (sixth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Dutch (Netherlands) female (sixth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Dutch (Netherlands) male (seventh voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Dutch (Netherlands) female (seventh voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Dutch (Netherlands) male (eighth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Dutch (Netherlands) female (eighth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Dutch (Netherlands) female (ninth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Dutch (Netherlands) female (tenth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Dutch (Netherlands) male (ninth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Dutch (Netherlands) male (tenth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Dutch (Netherlands) female (eleventh voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Dutch (Netherlands) male (eleventh voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Dutch (Netherlands) male (twelfth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Dutch (Netherlands) male (thirteenth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Dutch (Netherlands) male (fourteenth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Dutch (Netherlands) female (twelfth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Dutch (Netherlands) male (fifteenth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Dutch (Netherlands) female (thirteenth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Dutch (Netherlands) female (fourteenth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Dutch (Netherlands) male (sixteenth voice).
     * @const
     */
    const nl_NL_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Dutch (Netherlands) female.
     * @const
     */
    const nl_NL_Standard_F: Voice;
    /**
     * Google voice, Dutch (Netherlands) male.
     * @const
     */
    const nl_NL_Standard_G: Voice;
    /**
     * Google voice, Dutch (Netherlands) female.
     * @const
     */
    const nl_NL_Wavenet_F: Voice;
    /**
     * Google voice, Dutch (Netherlands) male.
     * @const
     */
    const nl_NL_Wavenet_G: Voice;
    /**
     * Google voice, Punjabi (India) female.
     * @const
     */
    const pa_IN_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Punjabi (India) male.
     * @const
     */
    const pa_IN_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Punjabi (India) male (second voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Punjabi (India) male (third voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Punjabi (India) male (fourth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Punjabi (India) female (second voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Punjabi (India) female (third voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Punjabi (India) female (fourth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Punjabi (India) male (fifth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Punjabi (India) female (fifth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Punjabi (India) male (sixth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Punjabi (India) female (sixth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Punjabi (India) male (seventh voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Punjabi (India) female (seventh voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Punjabi (India) male (eighth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Punjabi (India) female (eighth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Punjabi (India) female (ninth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Punjabi (India) female (tenth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Punjabi (India) male (ninth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Punjabi (India) male (tenth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Punjabi (India) female (eleventh voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Punjabi (India) male (eleventh voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Punjabi (India) male (twelfth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Punjabi (India) male (thirteenth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Punjabi (India) male (fourteenth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Punjabi (India) female (twelfth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Punjabi (India) male (fifteenth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Punjabi (India) female (thirteenth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Punjabi (India) female (fourteenth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Punjabi (India) male (sixteenth voice).
     * @const
     */
    const pa_IN_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Punjabi (India) female.
     * @const
     */
    const pa_IN_Standard_A: Voice;
    /**
     * Google voice, Punjabi (India) male.
     * @const
     */
    const pa_IN_Standard_B: Voice;
    /**
     * Google voice, Punjabi (India) female (second voice).
     * @const
     */
    const pa_IN_Standard_C: Voice;
    /**
     * Google voice, Punjabi (India) male (second voice).
     * @const
     */
    const pa_IN_Standard_D: Voice;
    /**
     * Google voice, Punjabi (India) female.
     * @const
     */
    const pa_IN_Wavenet_A: Voice;
    /**
     * Google voice, Punjabi (India) male.
     * @const
     */
    const pa_IN_Wavenet_B: Voice;
    /**
     * Google voice, Punjabi (India) female (second voice).
     * @const
     */
    const pa_IN_Wavenet_C: Voice;
    /**
     * Google voice, Punjabi (India) male (second voice).
     * @const
     */
    const pa_IN_Wavenet_D: Voice;
    /**
     * Google voice, Polish (Poland) female.
     * @const
     */
    const pl_PL_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Polish (Poland) male.
     * @const
     */
    const pl_PL_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Polish (Poland) male (second voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Polish (Poland) male (third voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Polish (Poland) male (fourth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Polish (Poland) female (second voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Polish (Poland) female (third voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Polish (Poland) female (fourth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Polish (Poland) male (fifth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Polish (Poland) female (fifth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Polish (Poland) male (sixth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Polish (Poland) female (sixth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Polish (Poland) male (seventh voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Polish (Poland) female (seventh voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Polish (Poland) male (eighth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Polish (Poland) female (eighth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Polish (Poland) female (ninth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Polish (Poland) female (tenth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Polish (Poland) male (ninth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Polish (Poland) male (tenth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Polish (Poland) female (eleventh voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Polish (Poland) male (eleventh voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Polish (Poland) male (twelfth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Polish (Poland) male (thirteenth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Polish (Poland) male (fourteenth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Polish (Poland) female (twelfth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Polish (Poland) male (fifteenth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Polish (Poland) female (thirteenth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Polish (Poland) female (fourteenth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Polish (Poland) male (sixteenth voice).
     * @const
     */
    const pl_PL_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Polish (Poland) female.
     * @const
     */
    const pl_PL_Standard_F: Voice;
    /**
     * Google voice, Polish (Poland) male.
     * @const
     */
    const pl_PL_Standard_G: Voice;
    /**
     * Google voice, Polish (Poland) female.
     * @const
     */
    const pl_PL_Wavenet_F: Voice;
    /**
     * Google voice, Polish (Poland) male.
     * @const
     */
    const pl_PL_Wavenet_G: Voice;
    /**
     * Google voice, Brazilian Portuguese female.
     * @const
     */
    const pt_BR_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Brazilian Portuguese male.
     * @const
     */
    const pt_BR_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Brazilian Portuguese male (second voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Brazilian Portuguese male (third voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Brazilian Portuguese male (fourth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Brazilian Portuguese female (second voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Brazilian Portuguese female (third voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Brazilian Portuguese female (fourth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Brazilian Portuguese male (fifth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Brazilian Portuguese female (fifth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Brazilian Portuguese male (sixth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Brazilian Portuguese female (sixth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Brazilian Portuguese male (seventh voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Brazilian Portuguese female (seventh voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Brazilian Portuguese male (eighth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Brazilian Portuguese female (eighth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Brazilian Portuguese female (ninth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Brazilian Portuguese female (tenth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Brazilian Portuguese male (ninth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Brazilian Portuguese male (tenth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Brazilian Portuguese female (eleventh voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Brazilian Portuguese male (eleventh voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Brazilian Portuguese male (twelfth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Brazilian Portuguese male (thirteenth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Brazilian Portuguese male (fourteenth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Brazilian Portuguese female (twelfth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Brazilian Portuguese male (fifteenth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Brazilian Portuguese female (thirteenth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Brazilian Portuguese female (fourteenth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Brazilian Portuguese male (sixteenth voice).
     * @const
     */
    const pt_BR_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Brazilian Portuguese female.
     * @const
     */
    const pt_BR_Neural2_A: Voice;
    /**
     * Google voice, Brazilian Portuguese male.
     * @const
     */
    const pt_BR_Neural2_B: Voice;
    /**
     * Google voice, Brazilian Portuguese female (second voice).
     * @const
     */
    const pt_BR_Neural2_C: Voice;
    /**
     * Google voice, Brazilian Portuguese female.
     * @const
     */
    const pt_BR_Standard_A: Voice;
    /**
     * Google voice, Brazilian Portuguese male.
     * @const
     */
    const pt_BR_Standard_B: Voice;
    /**
     * Google voice, Brazilian Portuguese female (second voice).
     * @const
     */
    const pt_BR_Standard_C: Voice;
    /**
     * Google voice, Brazilian Portuguese female (third voice).
     * @const
     */
    const pt_BR_Standard_D: Voice;
    /**
     * Google voice, Brazilian Portuguese male (second voice).
     * @const
     */
    const pt_BR_Standard_E: Voice;
    /**
     * Google voice, Brazilian Portuguese female.
     * @const
     */
    const pt_BR_Wavenet_A: Voice;
    /**
     * Google voice, Brazilian Portuguese male.
     * @const
     */
    const pt_BR_Wavenet_B: Voice;
    /**
     * Google voice, Brazilian Portuguese female (second voice).
     * @const
     */
    const pt_BR_Wavenet_C: Voice;
    /**
     * Google voice, Brazilian Portuguese female (third voice).
     * @const
     */
    const pt_BR_Wavenet_D: Voice;
    /**
     * Google voice, Brazilian Portuguese male (second voice).
     * @const
     */
    const pt_BR_Wavenet_E: Voice;
    /**
     * Google voice, European Portuguese female.
     * @const
     */
    const pt_PT_Standard_E: Voice;
    /**
     * Google voice, European Portuguese male.
     * @const
     */
    const pt_PT_Standard_F: Voice;
    /**
     * Google voice, European Portuguese female.
     * @const
     */
    const pt_PT_Wavenet_E: Voice;
    /**
     * Google voice, European Portuguese male.
     * @const
     */
    const pt_PT_Wavenet_F: Voice;
    /**
     * Google voice, Romanian (Romania) female.
     * @const
     */
    const ro_RO_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Romanian (Romania) male.
     * @const
     */
    const ro_RO_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Romanian (Romania) male (second voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Romanian (Romania) male (third voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Romanian (Romania) male (fourth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Romanian (Romania) female (second voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Romanian (Romania) female (third voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Romanian (Romania) female (fourth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Romanian (Romania) male (fifth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Romanian (Romania) female (fifth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Romanian (Romania) male (sixth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Romanian (Romania) female (sixth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Romanian (Romania) male (seventh voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Romanian (Romania) female (seventh voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Romanian (Romania) male (eighth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Romanian (Romania) female (eighth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Romanian (Romania) female (ninth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Romanian (Romania) female (tenth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Romanian (Romania) male (ninth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Romanian (Romania) male (tenth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Romanian (Romania) female (eleventh voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Romanian (Romania) male (eleventh voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Romanian (Romania) male (twelfth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Romanian (Romania) male (thirteenth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Romanian (Romania) male (fourteenth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Romanian (Romania) female (twelfth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Romanian (Romania) male (fifteenth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Romanian (Romania) female (thirteenth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Romanian (Romania) female (fourteenth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Romanian (Romania) male (sixteenth voice).
     * @const
     */
    const ro_RO_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Romanian (Romania) female.
     * @const
     */
    const ro_RO_Standard_B: Voice;
    /**
     * Google voice, Romanian (Romania) female.
     * @const
     */
    const ro_RO_Wavenet_B: Voice;
    /**
     * Google voice, Russian (Russia) female.
     * @const
     */
    const ru_RU_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Russian (Russia) male.
     * @const
     */
    const ru_RU_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Russian (Russia) male (second voice).
     * @const
     */
    const ru_RU_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Russian (Russia) female (second voice).
     * @const
     */
    const ru_RU_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Russian (Russia) female (third voice).
     * @const
     */
    const ru_RU_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Russian (Russia) male (third voice).
     * @const
     */
    const ru_RU_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Russian (Russia) male (fourth voice).
     * @const
     */
    const ru_RU_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Russian (Russia) female (fourth voice).
     * @const
     */
    const ru_RU_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Russian (Russia) female.
     * @const
     */
    const ru_RU_Standard_A: Voice;
    /**
     * Google voice, Russian (Russia) male.
     * @const
     */
    const ru_RU_Standard_B: Voice;
    /**
     * Google voice, Russian (Russia) female (second voice).
     * @const
     */
    const ru_RU_Standard_C: Voice;
    /**
     * Google voice, Russian (Russia) male (second voice).
     * @const
     */
    const ru_RU_Standard_D: Voice;
    /**
     * Google voice, Russian (Russia) female (third voice).
     * @const
     */
    const ru_RU_Standard_E: Voice;
    /**
     * Google voice, Russian (Russia) female.
     * @const
     */
    const ru_RU_Wavenet_A: Voice;
    /**
     * Google voice, Russian (Russia) male.
     * @const
     */
    const ru_RU_Wavenet_B: Voice;
    /**
     * Google voice, Russian (Russia) female (second voice).
     * @const
     */
    const ru_RU_Wavenet_C: Voice;
    /**
     * Google voice, Russian (Russia) male (second voice).
     * @const
     */
    const ru_RU_Wavenet_D: Voice;
    /**
     * Google voice, Russian (Russia) female (third voice).
     * @const
     */
    const ru_RU_Wavenet_E: Voice;
    /**
     * Google voice, Slovak (Slovakia) female.
     * @const
     */
    const sk_SK_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Slovak (Slovakia) male.
     * @const
     */
    const sk_SK_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Slovak (Slovakia) male (second voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Slovak (Slovakia) male (third voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Slovak (Slovakia) male (fourth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Slovak (Slovakia) female (second voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Slovak (Slovakia) female (third voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Slovak (Slovakia) female (fourth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Slovak (Slovakia) male (fifth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Slovak (Slovakia) female (fifth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Slovak (Slovakia) male (sixth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Slovak (Slovakia) female (sixth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Slovak (Slovakia) male (seventh voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Slovak (Slovakia) female (seventh voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Slovak (Slovakia) male (eighth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Slovak (Slovakia) female (eighth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Slovak (Slovakia) female (ninth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Slovak (Slovakia) female (tenth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Slovak (Slovakia) male (ninth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Slovak (Slovakia) male (tenth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Slovak (Slovakia) female (eleventh voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Slovak (Slovakia) male (eleventh voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Slovak (Slovakia) male (twelfth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Slovak (Slovakia) male (thirteenth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Slovak (Slovakia) male (fourteenth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Slovak (Slovakia) female (twelfth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Slovak (Slovakia) male (fifteenth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Slovak (Slovakia) female (thirteenth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Slovak (Slovakia) female (fourteenth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Slovak (Slovakia) male (sixteenth voice).
     * @const
     */
    const sk_SK_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Slovak (Slovakia) female.
     * @const
     */
    const sk_SK_Standard_B: Voice;
    /**
     * Google voice, Slovak (Slovakia) female.
     * @const
     */
    const sk_SK_Wavenet_B: Voice;
    /**
     * Google voice, Slovenian (Slovenia) female.
     * @const
     */
    const sl_SI_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male.
     * @const
     */
    const sl_SI_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male (second voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male (third voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male (fourth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Slovenian (Slovenia) female (second voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Slovenian (Slovenia) female (third voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Slovenian (Slovenia) female (fourth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male (fifth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Slovenian (Slovenia) female (fifth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male (sixth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Slovenian (Slovenia) female (sixth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male (seventh voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Slovenian (Slovenia) female (seventh voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male (eighth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Slovenian (Slovenia) female (eighth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Slovenian (Slovenia) female (ninth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Slovenian (Slovenia) female (tenth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male (ninth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male (tenth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Slovenian (Slovenia) female (eleventh voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male (eleventh voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male (twelfth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male (thirteenth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male (fourteenth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Slovenian (Slovenia) female (twelfth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male (fifteenth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Slovenian (Slovenia) female (thirteenth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Slovenian (Slovenia) female (fourteenth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Slovenian (Slovenia) male (sixteenth voice).
     * @const
     */
    const sl_SI_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Serbian (Serbia) female.
     * @const
     */
    const sr_RS_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Serbian (Serbia) male.
     * @const
     */
    const sr_RS_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Serbian (Serbia) male (second voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Serbian (Serbia) male (third voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Serbian (Serbia) male (fourth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Serbian (Serbia) female (second voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Serbian (Serbia) female (third voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Serbian (Serbia) female (fourth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Serbian (Serbia) male (fifth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Serbian (Serbia) female (fifth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Serbian (Serbia) male (sixth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Serbian (Serbia) female (sixth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Serbian (Serbia) male (seventh voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Serbian (Serbia) female (seventh voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Serbian (Serbia) male (eighth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Serbian (Serbia) female (eighth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Serbian (Serbia) female (ninth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Serbian (Serbia) female (tenth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Serbian (Serbia) male (ninth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Serbian (Serbia) male (tenth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Serbian (Serbia) female (eleventh voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Serbian (Serbia) male (eleventh voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Serbian (Serbia) male (twelfth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Serbian (Serbia) male (thirteenth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Serbian (Serbia) male (fourteenth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Serbian (Serbia) female (twelfth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Serbian (Serbia) male (fifteenth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Serbian (Serbia) female (thirteenth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Serbian (Serbia) female (fourteenth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Serbian (Serbia) male (sixteenth voice).
     * @const
     */
    const sr_RS_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Serbian (Serbia) female.
     * @const
     */
    const sr_RS_Standard_B: Voice;
    /**
     * Google voice, Swedish (Sweden) female.
     * @const
     */
    const sv_SE_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Swedish (Sweden) male.
     * @const
     */
    const sv_SE_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Swedish (Sweden) male (second voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Swedish (Sweden) male (third voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Swedish (Sweden) male (fourth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Swedish (Sweden) female (second voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Swedish (Sweden) female (third voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Swedish (Sweden) female (fourth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Swedish (Sweden) male (fifth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Swedish (Sweden) female (fifth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Swedish (Sweden) male (sixth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Swedish (Sweden) female (sixth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Swedish (Sweden) male (seventh voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Swedish (Sweden) female (seventh voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Swedish (Sweden) male (eighth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Swedish (Sweden) female (eighth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Swedish (Sweden) female (ninth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Swedish (Sweden) female (tenth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Swedish (Sweden) male (ninth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Swedish (Sweden) male (tenth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Swedish (Sweden) female (eleventh voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Swedish (Sweden) male (eleventh voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Swedish (Sweden) male (twelfth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Swedish (Sweden) male (thirteenth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Swedish (Sweden) male (fourteenth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Swedish (Sweden) female (twelfth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Swedish (Sweden) male (fifteenth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Swedish (Sweden) female (thirteenth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Swedish (Sweden) female (fourteenth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Swedish (Sweden) male (sixteenth voice).
     * @const
     */
    const sv_SE_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Swedish (Sweden) female.
     * @const
     */
    const sv_SE_Standard_A: Voice;
    /**
     * Google voice, Swedish (Sweden) female (second voice).
     * @const
     */
    const sv_SE_Standard_B: Voice;
    /**
     * Google voice, Swedish (Sweden) female (third voice).
     * @const
     */
    const sv_SE_Standard_C: Voice;
    /**
     * Google voice, Swedish (Sweden) male.
     * @const
     */
    const sv_SE_Standard_D: Voice;
    /**
     * Google voice, Swedish (Sweden) male (second voice).
     * @const
     */
    const sv_SE_Standard_E: Voice;
    /**
     * Google voice, Swedish (Sweden) female (fourth voice).
     * @const
     */
    const sv_SE_Standard_F: Voice;
    /**
     * Google voice, Swedish (Sweden) male (third voice).
     * @const
     */
    const sv_SE_Standard_G: Voice;
    /**
     * Google voice, Swedish (Sweden) female.
     * @const
     */
    const sv_SE_Wavenet_A: Voice;
    /**
     * Google voice, Swedish (Sweden) female (second voice).
     * @const
     */
    const sv_SE_Wavenet_B: Voice;
    /**
     * Google voice, Swedish (Sweden) male.
     * @const
     */
    const sv_SE_Wavenet_C: Voice;
    /**
     * Google voice, Swedish (Sweden) female (third voice).
     * @const
     */
    const sv_SE_Wavenet_D: Voice;
    /**
     * Google voice, Swedish (Sweden) male (second voice).
     * @const
     */
    const sv_SE_Wavenet_E: Voice;
    /**
     * Google voice, Swedish (Sweden) female (fourth voice).
     * @const
     */
    const sv_SE_Wavenet_F: Voice;
    /**
     * Google voice, Swedish (Sweden) male (third voice).
     * @const
     */
    const sv_SE_Wavenet_G: Voice;
    /**
     * Google voice, Swahili (Kenya) female.
     * @const
     */
    const sw_KE_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Swahili (Kenya) male.
     * @const
     */
    const sw_KE_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Swahili (Kenya) male (second voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Swahili (Kenya) male (third voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Swahili (Kenya) male (fourth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Swahili (Kenya) female (second voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Swahili (Kenya) female (third voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Swahili (Kenya) female (fourth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Swahili (Kenya) male (fifth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Swahili (Kenya) female (fifth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Swahili (Kenya) male (sixth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Swahili (Kenya) female (sixth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Swahili (Kenya) male (seventh voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Swahili (Kenya) female (seventh voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Swahili (Kenya) male (eighth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Swahili (Kenya) female (eighth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Swahili (Kenya) female (ninth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Swahili (Kenya) female (tenth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Swahili (Kenya) male (ninth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Swahili (Kenya) male (tenth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Swahili (Kenya) female (eleventh voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Swahili (Kenya) male (eleventh voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Swahili (Kenya) male (twelfth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Swahili (Kenya) male (thirteenth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Swahili (Kenya) male (fourteenth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Swahili (Kenya) female (twelfth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Swahili (Kenya) male (fifteenth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Swahili (Kenya) female (thirteenth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Swahili (Kenya) female (fourteenth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Swahili (Kenya) male (sixteenth voice).
     * @const
     */
    const sw_KE_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Tamil (India) female.
     * @const
     */
    const ta_IN_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Tamil (India) male.
     * @const
     */
    const ta_IN_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Tamil (India) male (second voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Tamil (India) male (third voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Tamil (India) male (fourth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Tamil (India) female (second voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Tamil (India) female (third voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Tamil (India) female (fourth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Tamil (India) male (fifth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Tamil (India) female (fifth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Tamil (India) male (sixth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Tamil (India) female (sixth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Tamil (India) male (seventh voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Tamil (India) female (seventh voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Tamil (India) male (eighth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Tamil (India) female (eighth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Tamil (India) female (ninth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Tamil (India) female (tenth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Tamil (India) male (ninth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Tamil (India) male (tenth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Tamil (India) female (eleventh voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Tamil (India) male (eleventh voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Tamil (India) male (twelfth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Tamil (India) male (thirteenth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Tamil (India) male (fourteenth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Tamil (India) female (twelfth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Tamil (India) male (fifteenth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Tamil (India) female (thirteenth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Tamil (India) female (fourteenth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Tamil (India) male (sixteenth voice).
     * @const
     */
    const ta_IN_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Tamil (India) female.
     * @const
     */
    const ta_IN_Standard_A: Voice;
    /**
     * Google voice, Tamil (India) male.
     * @const
     */
    const ta_IN_Standard_B: Voice;
    /**
     * Google voice, Tamil (India) female (second voice).
     * @const
     */
    const ta_IN_Standard_C: Voice;
    /**
     * Google voice, Tamil (India) male (second voice).
     * @const
     */
    const ta_IN_Standard_D: Voice;
    /**
     * Google voice, Tamil (India) female.
     * @const
     */
    const ta_IN_Wavenet_A: Voice;
    /**
     * Google voice, Tamil (India) male.
     * @const
     */
    const ta_IN_Wavenet_B: Voice;
    /**
     * Google voice, Tamil (India) female (second voice).
     * @const
     */
    const ta_IN_Wavenet_C: Voice;
    /**
     * Google voice, Tamil (India) male (second voice).
     * @const
     */
    const ta_IN_Wavenet_D: Voice;
    /**
     * Google voice, Telugu (India) female.
     * @const
     */
    const te_IN_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Telugu (India) male.
     * @const
     */
    const te_IN_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Telugu (India) male (second voice).
     * @const
     */
    const te_IN_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Telugu (India) male (third voice).
     * @const
     */
    const te_IN_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Telugu (India) male (fourth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Telugu (India) female (second voice).
     * @const
     */
    const te_IN_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Telugu (India) female (third voice).
     * @const
     */
    const te_IN_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Telugu (India) female (fourth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Telugu (India) male (fifth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Telugu (India) female (fifth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Telugu (India) male (sixth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Telugu (India) female (sixth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Telugu (India) male (seventh voice).
     * @const
     */
    const te_IN_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Telugu (India) female (seventh voice).
     * @const
     */
    const te_IN_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Telugu (India) male (eighth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Telugu (India) female (eighth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Telugu (India) female (ninth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Telugu (India) female (tenth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Telugu (India) male (ninth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Telugu (India) male (tenth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Telugu (India) female (eleventh voice).
     * @const
     */
    const te_IN_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Telugu (India) male (eleventh voice).
     * @const
     */
    const te_IN_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Telugu (India) male (twelfth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Telugu (India) male (thirteenth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Telugu (India) male (fourteenth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Telugu (India) female (twelfth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Telugu (India) male (fifteenth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Telugu (India) female (thirteenth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Telugu (India) female (fourteenth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Telugu (India) male (sixteenth voice).
     * @const
     */
    const te_IN_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Telugu (India) female.
     * @const
     */
    const te_IN_Standard_A: Voice;
    /**
     * Google voice, Telugu (India) male.
     * @const
     */
    const te_IN_Standard_B: Voice;
    /**
     * Google voice, Telugu (India) female (second voice).
     * @const
     */
    const te_IN_Standard_C: Voice;
    /**
     * Google voice, Telugu (India) male (second voice).
     * @const
     */
    const te_IN_Standard_D: Voice;
    /**
     * Google voice, Thai (Thailand) female.
     * @const
     */
    const th_TH_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Thai (Thailand) male.
     * @const
     */
    const th_TH_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Thai (Thailand) male (second voice).
     * @const
     */
    const th_TH_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Thai (Thailand) male (third voice).
     * @const
     */
    const th_TH_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Thai (Thailand) male (fourth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Thai (Thailand) female (second voice).
     * @const
     */
    const th_TH_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Thai (Thailand) female (third voice).
     * @const
     */
    const th_TH_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Thai (Thailand) female (fourth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Thai (Thailand) male (fifth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Thai (Thailand) female (fifth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Thai (Thailand) male (sixth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Thai (Thailand) female (sixth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Thai (Thailand) male (seventh voice).
     * @const
     */
    const th_TH_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Thai (Thailand) female (seventh voice).
     * @const
     */
    const th_TH_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Thai (Thailand) male (eighth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Thai (Thailand) female (eighth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Thai (Thailand) female (ninth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Thai (Thailand) female (tenth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Thai (Thailand) male (ninth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Thai (Thailand) male (tenth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Thai (Thailand) female (eleventh voice).
     * @const
     */
    const th_TH_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Thai (Thailand) male (eleventh voice).
     * @const
     */
    const th_TH_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Thai (Thailand) male (twelfth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Thai (Thailand) male (thirteenth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Thai (Thailand) male (fourteenth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Thai (Thailand) female (twelfth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Thai (Thailand) male (fifteenth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Thai (Thailand) female (thirteenth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Thai (Thailand) female (fourteenth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Thai (Thailand) male (sixteenth voice).
     * @const
     */
    const th_TH_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Thai (Thailand) female.
     * @const
     */
    const th_TH_Neural2_C: Voice;
    /**
     * Google voice, Thai (Thailand) female.
     * @const
     */
    const th_TH_Standard_A: Voice;
    /**
     * Google voice, Turkish (Türkiye) female.
     * @const
     */
    const tr_TR_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Turkish (Türkiye) male.
     * @const
     */
    const tr_TR_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (second voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (third voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (fourth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (second voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (third voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (fourth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (fifth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (fifth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (sixth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (sixth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (seventh voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (seventh voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (eighth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (eighth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (ninth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (tenth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (ninth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (tenth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (eleventh voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (eleventh voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (twelfth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (thirteenth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (fourteenth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (twelfth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (fifteenth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (thirteenth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (fourteenth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (sixteenth voice).
     * @const
     */
    const tr_TR_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Turkish (Türkiye) female.
     * @const
     */
    const tr_TR_Standard_A: Voice;
    /**
     * Google voice, Turkish (Türkiye) male.
     * @const
     */
    const tr_TR_Standard_B: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (second voice).
     * @const
     */
    const tr_TR_Standard_C: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (third voice).
     * @const
     */
    const tr_TR_Standard_D: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (second voice).
     * @const
     */
    const tr_TR_Standard_E: Voice;
    /**
     * Google voice, Turkish (Türkiye) female.
     * @const
     */
    const tr_TR_Wavenet_A: Voice;
    /**
     * Google voice, Turkish (Türkiye) male.
     * @const
     */
    const tr_TR_Wavenet_B: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (second voice).
     * @const
     */
    const tr_TR_Wavenet_C: Voice;
    /**
     * Google voice, Turkish (Türkiye) female (third voice).
     * @const
     */
    const tr_TR_Wavenet_D: Voice;
    /**
     * Google voice, Turkish (Türkiye) male (second voice).
     * @const
     */
    const tr_TR_Wavenet_E: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female.
     * @const
     */
    const uk_UA_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male.
     * @const
     */
    const uk_UA_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male (second voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male (third voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male (fourth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female (second voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female (third voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female (fourth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male (fifth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female (fifth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male (sixth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female (sixth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male (seventh voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female (seventh voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male (eighth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female (eighth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female (ninth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female (tenth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male (ninth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male (tenth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female (eleventh voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male (eleventh voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male (twelfth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male (thirteenth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male (fourteenth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female (twelfth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male (fifteenth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female (thirteenth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female (fourteenth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) male (sixteenth voice).
     * @const
     */
    const uk_UA_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female.
     * @const
     */
    const uk_UA_Standard_B: Voice;
    /**
     * Google voice, Ukrainian (Ukraine) female.
     * @const
     */
    const uk_UA_Wavenet_B: Voice;
    /**
     * Google voice, Urdu (India) female.
     * @const
     */
    const ur_IN_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Urdu (India) male.
     * @const
     */
    const ur_IN_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Urdu (India) male (second voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Urdu (India) male (third voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Urdu (India) male (fourth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Urdu (India) female (second voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Urdu (India) female (third voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Urdu (India) female (fourth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Urdu (India) male (fifth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Urdu (India) female (fifth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Urdu (India) male (sixth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Urdu (India) female (sixth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Urdu (India) male (seventh voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Urdu (India) female (seventh voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Urdu (India) male (eighth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Urdu (India) female (eighth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Urdu (India) female (ninth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Urdu (India) female (tenth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Urdu (India) male (ninth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Urdu (India) male (tenth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Urdu (India) female (eleventh voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Urdu (India) male (eleventh voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Urdu (India) male (twelfth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Urdu (India) male (thirteenth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Urdu (India) male (fourteenth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Urdu (India) female (twelfth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Urdu (India) male (fifteenth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Urdu (India) female (thirteenth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Urdu (India) female (fourteenth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Urdu (India) male (sixteenth voice).
     * @const
     */
    const ur_IN_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Urdu (India) female.
     * @const
     */
    const ur_IN_Standard_A: Voice;
    /**
     * Google voice, Urdu (India) male.
     * @const
     */
    const ur_IN_Standard_B: Voice;
    /**
     * Google voice, Urdu (India) female.
     * @const
     */
    const ur_IN_Wavenet_A: Voice;
    /**
     * Google voice, Urdu (India) male.
     * @const
     */
    const ur_IN_Wavenet_B: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female.
     * @const
     */
    const vi_VN_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male.
     * @const
     */
    const vi_VN_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (second voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (third voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (fourth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female (second voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female (third voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female (fourth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (fifth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female (fifth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (sixth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female (sixth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (seventh voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female (seventh voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (eighth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female (eighth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female (ninth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female (tenth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (ninth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (tenth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female (eleventh voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (eleventh voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (twelfth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (thirteenth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (fourteenth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female (twelfth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (fifteenth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female (thirteenth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female (fourteenth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (sixteenth voice).
     * @const
     */
    const vi_VN_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female.
     * @const
     */
    const vi_VN_Neural2_A: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male.
     * @const
     */
    const vi_VN_Neural2_D: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female.
     * @const
     */
    const vi_VN_Standard_A: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male.
     * @const
     */
    const vi_VN_Standard_B: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female (second voice).
     * @const
     */
    const vi_VN_Standard_C: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (second voice).
     * @const
     */
    const vi_VN_Standard_D: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female.
     * @const
     */
    const vi_VN_Wavenet_A: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male.
     * @const
     */
    const vi_VN_Wavenet_B: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) female (second voice).
     * @const
     */
    const vi_VN_Wavenet_C: Voice;
    /**
     * Google voice, Vietnamese (Vietnam) male (second voice).
     * @const
     */
    const vi_VN_Wavenet_D: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female.
     * @const
     */
    const yue_HK_Chirp3_HD_Achernar: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male.
     * @const
     */
    const yue_HK_Chirp3_HD_Achird: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (second voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Algenib: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (third voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Algieba: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (fourth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Alnilam: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female (second voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Aoede: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female (third voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Autonoe: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female (fourth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Callirrhoe: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (fifth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Charon: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female (fifth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Despina: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (sixth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Enceladus: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female (sixth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Erinome: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (seventh voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Fenrir: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female (seventh voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Gacrux: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (eighth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Iapetus: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female (eighth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Kore: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female (ninth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Laomedeia: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female (tenth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Leda: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (ninth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Orus: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (tenth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Puck: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female (eleventh voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Pulcherrima: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (eleventh voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Rasalgethi: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (twelfth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Sadachbia: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (thirteenth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Sadaltager: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (fourteenth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Schedar: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female (twelfth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Sulafat: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (fifteenth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Umbriel: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female (thirteenth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Vindemiatrix: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female (fourteenth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Zephyr: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (sixteenth voice).
     * @const
     */
    const yue_HK_Chirp3_HD_Zubenelgenubi: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female.
     * @const
     */
    const yue_HK_Standard_A: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male.
     * @const
     */
    const yue_HK_Standard_B: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) female (second voice).
     * @const
     */
    const yue_HK_Standard_C: Voice;
    /**
     * Google voice, Cantonese (Hong Kong SAR China) male (second voice).
     * @const
     */
    const yue_HK_Standard_D: Voice;
  }
}
declare namespace VoiceList {
  /**
   * List of available IBM TTS voices for the [Call.say](/docs/references/voxengine/call#say) and [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) methods. Depending on the voice, different technologies are used to make synthesized voices sound as close as possible to live human voices. Please note that using these text-to-speech capabilities are charged according to the <a href="https://voximplant.com/pricing" target="_blank">pricing</a>.
   */
  namespace IBM {
  }
}

declare namespace VoiceList {
  namespace IBM {
    /**
     * List of available premium IBM TTS voices for the [Call.say](/docs/references/voxengine/call#say) and [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) methods that sound more natural due to advanced synthesis technology.
     * @namespace
     */
    namespace Neural {
      /**
       * IBM voice, Dutch(Netherlands) female, Merel.
       * @const
       */
      const nl_NL_Merel: Voice;

      /**
       * IBM voice, English(United Kingdom) female, Charlotte.
       * @const
       */
      const en_GB_Charlotte: Voice;

      /**
       * IBM voice, English(United Kingdom) female, James.
       * @const
       */
      const en_GB_James: Voice;

      /**
       * IBM voice, English(United Kingdom) female, Kate.
       * @const
       */
      const en_GB_Kate: Voice;

      /**
       * IBM voice, English(United States) female, Allison.
       * @const
       */
      const en_US_Allison: Voice;

      /**
       * IBM voice, English(United States) female, Emily.
       * @const
       */
      const en_US_Emily: Voice;

      /**
       * IBM voice, English(United States) male, Henry.
       * @const
       */
      const en_US_Henry: Voice;

      /**
       * IBM voice, English(United States) male, Kevin.
       * @const
       */
      const en_US_Kevin: Voice;

      /**
       * IBM voice, English(United States) female, Lisa.
       * @const
       */
      const en_US_Lisa: Voice;

      /**
       * IBM voice, English(United States) male, Michael.
       * @const
       */
      const en_US_Michael: Voice;

      /**
       * IBM voice, English(United States) female, Olivia.
       * @const
       */
      const en_US_Olivia: Voice;

      /**
       * IBM voice, French(Canadian) female, Louise.
       * @const
       */
      const fr_CA_Louise: Voice;

      /**
       * IBM voice, French female, Nicolas.
       * @const
       */
      const fr_FR_Nicolas: Voice;

      /**
       * IBM voice, French female, Renee.
       * @const
       */
      const fr_FR_Renee: Voice;

      /**
       * IBM voice, German female, Birgit.
       * @const
       */
      const de_DE_Birgit: Voice;

      /**
       * IBM voice, German male, Dieter.
       * @const
       */
      const de_DE_Dieter: Voice;

      /**
       * IBM voice, German female, Erika.
       * @const
       */
      const de_DE_Erika: Voice;

      /**
       * IBM voice, Italian female, Francesca.
       * @const
       */
      const it_IT_Francesca: Voice;

      /**
       * IBM voice, Japanese female, Emi.
       * @const
       */
      const ja_JP_Emi: Voice;

      /**
       * IBM voice, Korean female, Jin.
       * @const
       */
      const ko_KR_Jin: Voice;

      /**
       * IBM voice, Brazilian Portuguese female, Isabela.
       * @const
       */
      const pt_BR_Isabela: Voice;

      /**
       * IBM voice, Spanish(Castilian) male, Enrique.
       * @const
       */
      const es_ES_Enrique: Voice;

      /**
       * IBM voice, Spanish(Castilian) female, Laura.
       * @const
       */
      const es_ES_Laura: Voice;

      /**
       * IBM voice, Spanish(Latin American) female, Sofia.
       * @const
       */
      const es_LA_Sofia: Voice;

      /**
       * IBM voice, Spanish(North American) female, Sofia.
       * @const
       */
      const es_US_Sofia: Voice;

      /**
       * IBM voice, English(Australian) female, Heidi.
       * @const
       */
      const en_AU_Heidi_Expressive: Voice;

      /**
       * IBM voice, English(Australian) female, Jack.
       * @const
       */
      const en_AU_Jack_Expressive: Voice;

      /**
       * IBM voice, English(United States) female, Allison.
       * @const
       */
      const en_US_Allison_Expressive: Voice;

      /**
       * IBM voice, English(United States) female, Emma.
       * @const
       */
      const en_US_Emma_Expressive: Voice;

      /**
       * IBM voice, English(United States) female, Lisa.
       * @const
       */
      const en_US_Lisa_Expressive: Voice;

      /**
       * IBM voice, English(United States) female, Michael.
       * @const
       */
      const en_US_Michael_Expressive: Voice;

      /**
       * IBM voice, Spanish(Latin American) female, Daniela.
       * @const
       */
      const es_LA_DanielaExpressive: Voice;
    }
  }
}

declare namespace VoiceList {
  /**
   * List of available Microsoft TTS voices for the [Call.say](/docs/references/voxengine/call#say) and [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) methods. Depending on the voice, different technologies are used to make synthesized voices sound as close as possible to live human voices. Please note that using these text-to-speech capabilities are charged according to the <a href="https://voximplant.com/pricing" target="_blank">pricing</a>.
   */
  namespace Microsoft {}
}
declare namespace VoiceList {
  namespace Microsoft {
    /**
     * List of available premium Microsoft TTS voices for the [Call.say](/docs/references/voxengine/call#say) and [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) methods that sound more natural due to advanced synthesis technology.
     * @namespace
     */
    namespace Neural {
      /**
       * Neural Microsoft voice, Afrikaans (South Africa) Female, AdriNeural.
       * @const
       */
      const af_ZA_AdriNeural: Voice;
      /**
       * Neural Microsoft voice, Afrikaans (South Africa) Male, WillemNeural.
       * @const
       */
      const af_ZA_WillemNeural: Voice;
      /**
       * Neural Microsoft voice, Amharic (Ethiopia) Female, MekdesNeural.
       * @const
       */
      const am_ET_MekdesNeural: Voice;
      /**
       * Neural Microsoft voice, Amharic (Ethiopia) Male, AmehaNeural.
       * @const
       */
      const am_ET_AmehaNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (United Arab Emirates) Female, FatimaNeural.
       * @const
       */
      const ar_AE_FatimaNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (United Arab Emirates) Male, HamdanNeural.
       * @const
       */
      const ar_AE_HamdanNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Bahrain) Female, LailaNeural.
       * @const
       */
      const ar_BH_LailaNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Bahrain) Male, AliNeural.
       * @const
       */
      const ar_BH_AliNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Algeria) Female, AminaNeural.
       * @const
       */
      const ar_DZ_AminaNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Algeria) Male, IsmaelNeural.
       * @const
       */
      const ar_DZ_IsmaelNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Egypt) Female, SalmaNeural.
       * @const
       */
      const ar_EG_SalmaNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Egypt) Male, ShakirNeural.
       * @const
       */
      const ar_EG_ShakirNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Iraq) Female, RanaNeural.
       * @const
       */
      const ar_IQ_RanaNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Iraq) Male, BasselNeural.
       * @const
       */
      const ar_IQ_BasselNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Jordan) Female, SanaNeural.
       * @const
       */
      const ar_JO_SanaNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Jordan) Male, TaimNeural.
       * @const
       */
      const ar_JO_TaimNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Kuwait) Female, NouraNeural.
       * @const
       */
      const ar_KW_NouraNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Kuwait) Male, FahedNeural.
       * @const
       */
      const ar_KW_FahedNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Lebanon) Female, LaylaNeural.
       * @const
       */
      const ar_LB_LaylaNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Lebanon) Male, RamiNeural.
       * @const
       */
      const ar_LB_RamiNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Libya) Female, ImanNeural.
       * @const
       */
      const ar_LY_ImanNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Libya) Male, OmarNeural.
       * @const
       */
      const ar_LY_OmarNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Morocco) Female, MounaNeural.
       * @const
       */
      const ar_MA_MounaNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Morocco) Male, JamalNeural.
       * @const
       */
      const ar_MA_JamalNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Oman) Female, AyshaNeural.
       * @const
       */
      const ar_OM_AyshaNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Oman) Male, AbdullahNeural.
       * @const
       */
      const ar_OM_AbdullahNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Qatar) Female, AmalNeural.
       * @const
       */
      const ar_QA_AmalNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Qatar) Male, MoazNeural.
       * @const
       */
      const ar_QA_MoazNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Saudi Arabia) Female, ZariyahNeural.
       * @const
       */
      const ar_SA_ZariyahNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Saudi Arabia) Male, HamedNeural.
       * @const
       */
      const ar_SA_HamedNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Syria) Female, AmanyNeural.
       * @const
       */
      const ar_SY_AmanyNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Syria) Male, LaithNeural.
       * @const
       */
      const ar_SY_LaithNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Tunisia) Female, ReemNeural.
       * @const
       */
      const ar_TN_ReemNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Tunisia) Male, HediNeural.
       * @const
       */
      const ar_TN_HediNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Yemen) Female, MaryamNeural.
       * @const
       */
      const ar_YE_MaryamNeural: Voice;
      /**
       * Neural Microsoft voice, Arabic (Yemen) Male, SalehNeural.
       * @const
       */
      const ar_YE_SalehNeural: Voice;
      /**
       * Neural Microsoft voice, Assamese (India) Female, YashicaNeural.
       * @const
       */
      const as_IN_YashicaNeural: Voice;
      /**
       * Neural Microsoft voice, Assamese (India) Male, PriyomNeural.
       * @const
       */
      const as_IN_PriyomNeural: Voice;
      /**
       * Neural Microsoft voice, Azerbaijani (Latin, Azerbaijan) Female, BanuNeural.
       * @const
       */
      const az_AZ_BanuNeural: Voice;
      /**
       * Neural Microsoft voice, Azerbaijani (Latin, Azerbaijan) Male, BabekNeural.
       * @const
       */
      const az_AZ_BabekNeural: Voice;
      /**
       * Neural Microsoft voice, Bulgarian (Bulgaria) Female, KalinaNeural.
       * @const
       */
      const bg_BG_KalinaNeural: Voice;
      /**
       * Neural Microsoft voice, Bulgarian (Bulgaria) Male, BorislavNeural.
       * @const
       */
      const bg_BG_BorislavNeural: Voice;
      /**
       * Neural Microsoft voice, Bangla (Bangladesh) Female, NabanitaNeural.
       * @const
       */
      const bn_BD_NabanitaNeural: Voice;
      /**
       * Neural Microsoft voice, Bangla (Bangladesh) Male, PradeepNeural.
       * @const
       */
      const bn_BD_PradeepNeural: Voice;
      /**
       * Neural Microsoft voice, Bengali (India) Female, TanishaaNeural.
       * @const
       */
      const bn_IN_TanishaaNeural: Voice;
      /**
       * Neural Microsoft voice, Bengali (India) Male, BashkarNeural.
       * @const
       */
      const bn_IN_BashkarNeural: Voice;
      /**
       * Neural Microsoft voice, Bosnian (Bosnia and Herzegovina) Female, VesnaNeural.
       * @const
       */
      const bs_BA_VesnaNeural: Voice;
      /**
       * Neural Microsoft voice, Bosnian (Bosnia and Herzegovina) Male, GoranNeural.
       * @const
       */
      const bs_BA_GoranNeural: Voice;
      /**
       * Neural Microsoft voice, Catalan Female, JoanaNeural.
       * @const
       */
      const ca_ES_JoanaNeural: Voice;
      /**
       * Neural Microsoft voice, Catalan Male, EnricNeural.
       * @const
       */
      const ca_ES_EnricNeural: Voice;
      /**
       * Neural Microsoft voice, Catalan Female, AlbaNeural.
       * @const
       */
      const ca_ES_AlbaNeural: Voice;
      /**
       * Neural Microsoft voice, Czech (Czechia) Female, VlastaNeural.
       * @const
       */
      const cs_CZ_VlastaNeural: Voice;
      /**
       * Neural Microsoft voice, Czech (Czechia) Male, AntoninNeural.
       * @const
       */
      const cs_CZ_AntoninNeural: Voice;
      /**
       * Neural Microsoft voice, Welsh (United Kingdom) Female, NiaNeural.
       * @const
       */
      const cy_GB_NiaNeural: Voice;
      /**
       * Neural Microsoft voice, Welsh (United Kingdom) Male, AledNeural.
       * @const
       */
      const cy_GB_AledNeural: Voice;
      /**
       * Neural Microsoft voice, Danish (Denmark) Female, ChristelNeural.
       * @const
       */
      const da_DK_ChristelNeural: Voice;
      /**
       * Neural Microsoft voice, Danish (Denmark) Male, JeppeNeural.
       * @const
       */
      const da_DK_JeppeNeural: Voice;
      /**
       * Neural Microsoft voice, German (Austria) Female, IngridNeural.
       * @const
       */
      const de_AT_IngridNeural: Voice;
      /**
       * Neural Microsoft voice, German (Austria) Male, JonasNeural.
       * @const
       */
      const de_AT_JonasNeural: Voice;
      /**
       * Neural Microsoft voice, German (Switzerland) Female, LeniNeural.
       * @const
       */
      const de_CH_LeniNeural: Voice;
      /**
       * Neural Microsoft voice, German (Switzerland) Male, JanNeural.
       * @const
       */
      const de_CH_JanNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Female, SeraphinaMultilingualNeural.
       * @const
       */
      const de_DE_SeraphinaMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Male, FlorianMultilingualNeural.
       * @const
       */
      const de_DE_FlorianMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Female, KatjaNeural.
       * @const
       */
      const de_DE_KatjaNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Male, ConradNeural.
       * @const
       */
      const de_DE_ConradNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Female, AmalaNeural.
       * @const
       */
      const de_DE_AmalaNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Male, BerndNeural.
       * @const
       */
      const de_DE_BerndNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Male, ChristophNeural.
       * @const
       */
      const de_DE_ChristophNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Female, ElkeNeural.
       * @const
       */
      const de_DE_ElkeNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Female, GiselaNeural.
       * @const
       */
      const de_DE_GiselaNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Male, KasperNeural.
       * @const
       */
      const de_DE_KasperNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Male, KillianNeural.
       * @const
       */
      const de_DE_KillianNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Female, KlarissaNeural.
       * @const
       */
      const de_DE_KlarissaNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Male, KlausNeural.
       * @const
       */
      const de_DE_KlausNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Female, LouisaNeural.
       * @const
       */
      const de_DE_LouisaNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Female, MajaNeural.
       * @const
       */
      const de_DE_MajaNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Male, RalfNeural.
       * @const
       */
      const de_DE_RalfNeural: Voice;
      /**
       * Neural Microsoft voice, German (Germany) Female, TanjaNeural.
       * @const
       */
      const de_DE_TanjaNeural: Voice;
      /**
       * Neural Microsoft voice, Greek (Greece) Female, AthinaNeural.
       * @const
       */
      const el_GR_AthinaNeural: Voice;
      /**
       * Neural Microsoft voice, Greek (Greece) Male, NestorasNeural.
       * @const
       */
      const el_GR_NestorasNeural: Voice;
      /**
       * Neural Microsoft voice, English (Australia) Male, WilliamMultilingualNeural.
       * @const
       */
      const en_AU_WilliamMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (Australia) Female, NatashaNeural.
       * @const
       */
      const en_AU_NatashaNeural: Voice;
      /**
       * Neural Microsoft voice, English (Australia) Male, WilliamNeural.
       * @const
       */
      const en_AU_WilliamNeural: Voice;
      /**
       * Neural Microsoft voice, English (Australia) Female, AnnetteNeural.
       * @const
       */
      const en_AU_AnnetteNeural: Voice;
      /**
       * Neural Microsoft voice, English (Australia) Female, CarlyNeural.
       * @const
       */
      const en_AU_CarlyNeural: Voice;
      /**
       * Neural Microsoft voice, English (Australia) Male, DarrenNeural.
       * @const
       */
      const en_AU_DarrenNeural: Voice;
      /**
       * Neural Microsoft voice, English (Australia) Male, DuncanNeural.
       * @const
       */
      const en_AU_DuncanNeural: Voice;
      /**
       * Neural Microsoft voice, English (Australia) Female, ElsieNeural.
       * @const
       */
      const en_AU_ElsieNeural: Voice;
      /**
       * Neural Microsoft voice, English (Australia) Female, FreyaNeural.
       * @const
       */
      const en_AU_FreyaNeural: Voice;
      /**
       * Neural Microsoft voice, English (Australia) Female, JoanneNeural.
       * @const
       */
      const en_AU_JoanneNeural: Voice;
      /**
       * Neural Microsoft voice, English (Australia) Male, KenNeural.
       * @const
       */
      const en_AU_KenNeural: Voice;
      /**
       * Neural Microsoft voice, English (Australia) Female, KimNeural.
       * @const
       */
      const en_AU_KimNeural: Voice;
      /**
       * Neural Microsoft voice, English (Australia) Male, NeilNeural.
       * @const
       */
      const en_AU_NeilNeural: Voice;
      /**
       * Neural Microsoft voice, English (Australia) Male, TimNeural.
       * @const
       */
      const en_AU_TimNeural: Voice;
      /**
       * Neural Microsoft voice, English (Australia) Female, TinaNeural.
       * @const
       */
      const en_AU_TinaNeural: Voice;
      /**
       * Neural Microsoft voice, English (Canada) Female, ClaraNeural.
       * @const
       */
      const en_CA_ClaraNeural: Voice;
      /**
       * Neural Microsoft voice, English (Canada) Male, LiamNeural.
       * @const
       */
      const en_CA_LiamNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Female, AdaMultilingualNeural.
       * @const
       */
      const en_GB_AdaMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Male, OllieMultilingualNeural.
       * @const
       */
      const en_GB_OllieMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Female, SoniaNeural.
       * @const
       */
      const en_GB_SoniaNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Male, RyanNeural.
       * @const
       */
      const en_GB_RyanNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Female, LibbyNeural.
       * @const
       */
      const en_GB_LibbyNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Female, AbbiNeural.
       * @const
       */
      const en_GB_AbbiNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Male, AlfieNeural.
       * @const
       */
      const en_GB_AlfieNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Female, BellaNeural.
       * @const
       */
      const en_GB_BellaNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Male, ElliotNeural.
       * @const
       */
      const en_GB_ElliotNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Male, EthanNeural.
       * @const
       */
      const en_GB_EthanNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Female, HollieNeural.
       * @const
       */
      const en_GB_HollieNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Female, MaisieNeural.
       * @const
       */
      const en_GB_MaisieNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Male, NoahNeural.
       * @const
       */
      const en_GB_NoahNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Male, OliverNeural.
       * @const
       */
      const en_GB_OliverNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Female, OliviaNeural.
       * @const
       */
      const en_GB_OliviaNeural: Voice;
      /**
       * Neural Microsoft voice, English (United Kingdom) Male, ThomasNeural.
       * @const
       */
      const en_GB_ThomasNeural: Voice;
      /**
       * Neural Microsoft voice, English (Hong Kong SAR) Female, YanNeural.
       * @const
       */
      const en_HK_YanNeural: Voice;
      /**
       * Neural Microsoft voice, English (Hong Kong SAR) Male, SamNeural.
       * @const
       */
      const en_HK_SamNeural: Voice;
      /**
       * Neural Microsoft voice, English (Ireland) Female, EmilyNeural.
       * @const
       */
      const en_IE_EmilyNeural: Voice;
      /**
       * Neural Microsoft voice, English (Ireland) Male, ConnorNeural.
       * @const
       */
      const en_IE_ConnorNeural: Voice;
      /**
       * Neural Microsoft voice, English (India) Female, AartiIndicNeural.
       * @const
       */
      const en_IN_AartiIndicNeural: Voice;
      /**
       * Neural Microsoft voice, English (India) Male, ArjunIndicNeural.
       * @const
       */
      const en_IN_ArjunIndicNeural: Voice;
      /**
       * Neural Microsoft voice, English (India) Female, NeerjaIndicNeural.
       * @const
       */
      const en_IN_NeerjaIndicNeural: Voice;
      /**
       * Neural Microsoft voice, English (India) Male, PrabhatIndicNeural.
       * @const
       */
      const en_IN_PrabhatIndicNeural: Voice;
      /**
       * Neural Microsoft voice, English (India) Male, AaravNeural.
       * @const
       */
      const en_IN_AaravNeural: Voice;
      /**
       * Neural Microsoft voice, English (India) Female, AashiNeural.
       * @const
       */
      const en_IN_AashiNeural: Voice;
      /**
       * Neural Microsoft voice, English (India) Female, AartiNeural.
       * @const
       */
      const en_IN_AartiNeural: Voice;
      /**
       * Neural Microsoft voice, English (India) Male, ArjunNeural.
       * @const
       */
      const en_IN_ArjunNeural: Voice;
      /**
       * Neural Microsoft voice, English (India) Female, AnanyaNeural.
       * @const
       */
      const en_IN_AnanyaNeural: Voice;
      /**
       * Neural Microsoft voice, English (India) Female, KavyaNeural.
       * @const
       */
      const en_IN_KavyaNeural: Voice;
      /**
       * Neural Microsoft voice, English (India) Male, KunalNeural.
       * @const
       */
      const en_IN_KunalNeural: Voice;
      /**
       * Neural Microsoft voice, English (India) Female, NeerjaNeural.
       * @const
       */
      const en_IN_NeerjaNeural: Voice;
      /**
       * Neural Microsoft voice, English (India) Male, PrabhatNeural.
       * @const
       */
      const en_IN_PrabhatNeural: Voice;
      /**
       * Neural Microsoft voice, English (India) Male, RehaanNeural.
       * @const
       */
      const en_IN_RehaanNeural: Voice;
      /**
       * Neural Microsoft voice, English (Kenya) Female, AsiliaNeural.
       * @const
       */
      const en_KE_AsiliaNeural: Voice;
      /**
       * Neural Microsoft voice, English (Kenya) Male, ChilembaNeural.
       * @const
       */
      const en_KE_ChilembaNeural: Voice;
      /**
       * Neural Microsoft voice, English (Nigeria) Female, EzinneNeural.
       * @const
       */
      const en_NG_EzinneNeural: Voice;
      /**
       * Neural Microsoft voice, English (Nigeria) Male, AbeoNeural.
       * @const
       */
      const en_NG_AbeoNeural: Voice;
      /**
       * Neural Microsoft voice, English (New Zealand) Female, MollyNeural.
       * @const
       */
      const en_NZ_MollyNeural: Voice;
      /**
       * Neural Microsoft voice, English (New Zealand) Male, MitchellNeural.
       * @const
       */
      const en_NZ_MitchellNeural: Voice;
      /**
       * Neural Microsoft voice, English (Philippines) Female, RosaNeural.
       * @const
       */
      const en_PH_RosaNeural: Voice;
      /**
       * Neural Microsoft voice, English (Philippines) Male, JamesNeural.
       * @const
       */
      const en_PH_JamesNeural: Voice;
      /**
       * Neural Microsoft voice, English (Singapore) Female, LunaNeural.
       * @const
       */
      const en_SG_LunaNeural: Voice;
      /**
       * Neural Microsoft voice, English (Singapore) Male, WayneNeural.
       * @const
       */
      const en_SG_WayneNeural: Voice;
      /**
       * Neural Microsoft voice, English (Tanzania) Female, ImaniNeural.
       * @const
       */
      const en_TZ_ImaniNeural: Voice;
      /**
       * Neural Microsoft voice, English (Tanzania) Male, ElimuNeural.
       * @const
       */
      const en_TZ_ElimuNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, AvaMultilingualNeural.
       * @const
       */
      const en_US_AvaMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, AndrewMultilingualNeural.
       * @const
       */
      const en_US_AndrewMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, AmandaMultilingualNeural.
       * @const
       */
      const en_US_AmandaMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, AdamMultilingualNeural.
       * @const
       */
      const en_US_AdamMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, EmmaMultilingualNeural.
       * @const
       */
      const en_US_EmmaMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, PhoebeMultilingualNeural.
       * @const
       */
      const en_US_PhoebeMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, AlloyTurboMultilingualNeural.
       * @const
       */
      const en_US_AlloyTurboMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, EchoTurboMultilingualNeural.
       * @const
       */
      const en_US_EchoTurboMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Neutral, FableTurboMultilingualNeural.
       * @const
       */
      const en_US_FableTurboMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, OnyxTurboMultilingualNeural.
       * @const
       */
      const en_US_OnyxTurboMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, NovaTurboMultilingualNeural.
       * @const
       */
      const en_US_NovaTurboMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, ShimmerTurboMultilingualNeural.
       * @const
       */
      const en_US_ShimmerTurboMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, BrianMultilingualNeural.
       * @const
       */
      const en_US_BrianMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, AvaNeural.
       * @const
       */
      const en_US_AvaNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, AndrewNeural.
       * @const
       */
      const en_US_AndrewNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, EmmaNeural.
       * @const
       */
      const en_US_EmmaNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, BrianNeural.
       * @const
       */
      const en_US_BrianNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, JennyNeural.
       * @const
       */
      const en_US_JennyNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, GuyNeural.
       * @const
       */
      const en_US_GuyNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, AriaNeural.
       * @const
       */
      const en_US_AriaNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, DavisNeural.
       * @const
       */
      const en_US_DavisNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, JaneNeural.
       * @const
       */
      const en_US_JaneNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, JasonNeural.
       * @const
       */
      const en_US_JasonNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, KaiNeural.
       * @const
       */
      const en_US_KaiNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, LunaNeural.
       * @const
       */
      const en_US_LunaNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, SaraNeural.
       * @const
       */
      const en_US_SaraNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, TonyNeural.
       * @const
       */
      const en_US_TonyNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, NancyNeural.
       * @const
       */
      const en_US_NancyNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, CoraMultilingualNeural.
       * @const
       */
      const en_US_CoraMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, ChristopherMultilingualNeural.
       * @const
       */
      const en_US_ChristopherMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, BrandonMultilingualNeural.
       * @const
       */
      const en_US_BrandonMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, AmberNeural.
       * @const
       */
      const en_US_AmberNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, AnaNeural.
       * @const
       */
      const en_US_AnaNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, AshleyNeural.
       * @const
       */
      const en_US_AshleyNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, BrandonNeural.
       * @const
       */
      const en_US_BrandonNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, ChristopherNeural.
       * @const
       */
      const en_US_ChristopherNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, CoraNeural.
       * @const
       */
      const en_US_CoraNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, DavisMultilingualNeural.
       * @const
       */
      const en_US_DavisMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, DerekMultilingualNeural.
       * @const
       */
      const en_US_DerekMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, DustinMultilingualNeural.
       * @const
       */
      const en_US_DustinMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, ElizabethNeural.
       * @const
       */
      const en_US_ElizabethNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, EricNeural.
       * @const
       */
      const en_US_EricNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, JacobNeural.
       * @const
       */
      const en_US_JacobNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, JennyMultilingualNeural.
       * @const
       */
      const en_US_JennyMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, LewisMultilingualNeural.
       * @const
       */
      const en_US_LewisMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, LolaMultilingualNeural.
       * @const
       */
      const en_US_LolaMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, MichelleNeural.
       * @const
       */
      const en_US_MichelleNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, MonicaNeural.
       * @const
       */
      const en_US_MonicaNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, NancyMultilingualNeural.
       * @const
       */
      const en_US_NancyMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, RogerNeural.
       * @const
       */
      const en_US_RogerNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, RyanMultilingualNeural.
       * @const
       */
      const en_US_RyanMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, SamuelMultilingualNeural.
       * @const
       */
      const en_US_SamuelMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Female, SerenaMultilingualNeural.
       * @const
       */
      const en_US_SerenaMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, SteffanMultilingualNeural.
       * @const
       */
      const en_US_SteffanMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, English (United States) Male, SteffanNeural.
       * @const
       */
      const en_US_SteffanNeural: Voice;
      /**
       * Neural Microsoft voice, English (South Africa) Female, LeahNeural.
       * @const
       */
      const en_ZA_LeahNeural: Voice;
      /**
       * Neural Microsoft voice, English (South Africa) Male, LukeNeural.
       * @const
       */
      const en_ZA_LukeNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Argentina) Female, ElenaNeural.
       * @const
       */
      const es_AR_ElenaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Argentina) Male, TomasNeural.
       * @const
       */
      const es_AR_TomasNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Bolivia) Female, SofiaNeural.
       * @const
       */
      const es_BO_SofiaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Bolivia) Male, MarceloNeural.
       * @const
       */
      const es_BO_MarceloNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Chile) Female, CatalinaNeural.
       * @const
       */
      const es_CL_CatalinaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Chile) Male, LorenzoNeural.
       * @const
       */
      const es_CL_LorenzoNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Colombia) Female, SalomeNeural.
       * @const
       */
      const es_CO_SalomeNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Colombia) Male, GonzaloNeural.
       * @const
       */
      const es_CO_GonzaloNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Costa Rica) Female, MariaNeural.
       * @const
       */
      const es_CR_MariaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Costa Rica) Male, JuanNeural.
       * @const
       */
      const es_CR_JuanNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Cuba) Female, BelkysNeural.
       * @const
       */
      const es_CU_BelkysNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Cuba) Male, ManuelNeural.
       * @const
       */
      const es_CU_ManuelNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Dominican Republic) Female, RamonaNeural.
       * @const
       */
      const es_DO_RamonaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Dominican Republic) Male, EmilioNeural.
       * @const
       */
      const es_DO_EmilioNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Ecuador) Female, AndreaNeural.
       * @const
       */
      const es_EC_AndreaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Ecuador) Male, LuisNeural.
       * @const
       */
      const es_EC_LuisNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Female, ElviraNeural.
       * @const
       */
      const es_ES_ElviraNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Male, AlvaroNeural.
       * @const
       */
      const es_ES_AlvaroNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Female, ArabellaMultilingualNeural.
       * @const
       */
      const es_ES_ArabellaMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Female, IsidoraMultilingualNeural.
       * @const
       */
      const es_ES_IsidoraMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Male, TristanMultilingualNeural.
       * @const
       */
      const es_ES_TristanMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Female, XimenaMultilingualNeural.
       * @const
       */
      const es_ES_XimenaMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Female, AbrilNeural.
       * @const
       */
      const es_ES_AbrilNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Male, ArnauNeural.
       * @const
       */
      const es_ES_ArnauNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Male, DarioNeural.
       * @const
       */
      const es_ES_DarioNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Male, EliasNeural.
       * @const
       */
      const es_ES_EliasNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Female, EstrellaNeural.
       * @const
       */
      const es_ES_EstrellaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Female, IreneNeural.
       * @const
       */
      const es_ES_IreneNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Female, LaiaNeural.
       * @const
       */
      const es_ES_LaiaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Female, LiaNeural.
       * @const
       */
      const es_ES_LiaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Male, NilNeural.
       * @const
       */
      const es_ES_NilNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Male, SaulNeural.
       * @const
       */
      const es_ES_SaulNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Male, TeoNeural.
       * @const
       */
      const es_ES_TeoNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Female, TrianaNeural.
       * @const
       */
      const es_ES_TrianaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Female, VeraNeural.
       * @const
       */
      const es_ES_VeraNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Spain) Female, XimenaNeural.
       * @const
       */
      const es_ES_XimenaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Equatorial Guinea) Female, TeresaNeural.
       * @const
       */
      const es_GQ_TeresaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Equatorial Guinea) Male, JavierNeural.
       * @const
       */
      const es_GQ_JavierNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Guatemala) Female, MartaNeural.
       * @const
       */
      const es_GT_MartaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Guatemala) Male, AndresNeural.
       * @const
       */
      const es_GT_AndresNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Honduras) Female, KarlaNeural.
       * @const
       */
      const es_HN_KarlaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Honduras) Male, CarlosNeural.
       * @const
       */
      const es_HN_CarlosNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Female, DaliaNeural.
       * @const
       */
      const es_MX_DaliaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Male, JorgeNeural.
       * @const
       */
      const es_MX_JorgeNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Female, DaliaMultilingualNeural.
       * @const
       */
      const es_MX_DaliaMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Male, JorgeMultilingualNeural.
       * @const
       */
      const es_MX_JorgeMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Female, BeatrizNeural.
       * @const
       */
      const es_MX_BeatrizNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Female, CandelaNeural.
       * @const
       */
      const es_MX_CandelaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Female, CarlotaNeural.
       * @const
       */
      const es_MX_CarlotaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Male, CecilioNeural.
       * @const
       */
      const es_MX_CecilioNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Male, GerardoNeural.
       * @const
       */
      const es_MX_GerardoNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Female, LarissaNeural.
       * @const
       */
      const es_MX_LarissaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Male, LibertoNeural.
       * @const
       */
      const es_MX_LibertoNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Male, LucianoNeural.
       * @const
       */
      const es_MX_LucianoNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Female, MarinaNeural.
       * @const
       */
      const es_MX_MarinaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Female, NuriaNeural.
       * @const
       */
      const es_MX_NuriaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Male, PelayoNeural.
       * @const
       */
      const es_MX_PelayoNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Female, RenataNeural.
       * @const
       */
      const es_MX_RenataNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Mexico) Male, YagoNeural.
       * @const
       */
      const es_MX_YagoNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Nicaragua) Female, YolandaNeural.
       * @const
       */
      const es_NI_YolandaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Nicaragua) Male, FedericoNeural.
       * @const
       */
      const es_NI_FedericoNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Panama) Female, MargaritaNeural.
       * @const
       */
      const es_PA_MargaritaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Panama) Male, RobertoNeural.
       * @const
       */
      const es_PA_RobertoNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Peru) Female, CamilaNeural.
       * @const
       */
      const es_PE_CamilaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Peru) Male, AlexNeural.
       * @const
       */
      const es_PE_AlexNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Puerto Rico) Female, KarinaNeural.
       * @const
       */
      const es_PR_KarinaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Puerto Rico) Male, VictorNeural.
       * @const
       */
      const es_PR_VictorNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Paraguay) Female, TaniaNeural.
       * @const
       */
      const es_PY_TaniaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Paraguay) Male, MarioNeural.
       * @const
       */
      const es_PY_MarioNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (El Salvador) Female, LorenaNeural.
       * @const
       */
      const es_SV_LorenaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (El Salvador) Male, RodrigoNeural.
       * @const
       */
      const es_SV_RodrigoNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (United States) Female, PalomaNeural.
       * @const
       */
      const es_US_PalomaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (United States) Male, AlonsoNeural.
       * @const
       */
      const es_US_AlonsoNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Uruguay) Female, ValentinaNeural.
       * @const
       */
      const es_UY_ValentinaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Uruguay) Male, MateoNeural.
       * @const
       */
      const es_UY_MateoNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Venezuela) Female, PaolaNeural.
       * @const
       */
      const es_VE_PaolaNeural: Voice;
      /**
       * Neural Microsoft voice, Spanish (Venezuela) Male, SebastianNeural.
       * @const
       */
      const es_VE_SebastianNeural: Voice;
      /**
       * Neural Microsoft voice, Estonian (Estonia) Female, AnuNeural.
       * @const
       */
      const et_EE_AnuNeural: Voice;
      /**
       * Neural Microsoft voice, Estonian (Estonia) Male, KertNeural.
       * @const
       */
      const et_EE_KertNeural: Voice;
      /**
       * Neural Microsoft voice, Basque Female, AinhoaNeural.
       * @const
       */
      const eu_ES_AinhoaNeural: Voice;
      /**
       * Neural Microsoft voice, Basque Male, AnderNeural.
       * @const
       */
      const eu_ES_AnderNeural: Voice;
      /**
       * Neural Microsoft voice, Persian (Iran) Female, DilaraNeural.
       * @const
       */
      const fa_IR_DilaraNeural: Voice;
      /**
       * Neural Microsoft voice, Persian (Iran) Male, FaridNeural.
       * @const
       */
      const fa_IR_FaridNeural: Voice;
      /**
       * Neural Microsoft voice, Finnish (Finland) Female, SelmaNeural.
       * @const
       */
      const fi_FI_SelmaNeural: Voice;
      /**
       * Neural Microsoft voice, Finnish (Finland) Male, HarriNeural.
       * @const
       */
      const fi_FI_HarriNeural: Voice;
      /**
       * Neural Microsoft voice, Finnish (Finland) Female, NooraNeural.
       * @const
       */
      const fi_FI_NooraNeural: Voice;
      /**
       * Neural Microsoft voice, Filipino (Philippines) Female, BlessicaNeural.
       * @const
       */
      const fil_PH_BlessicaNeural: Voice;
      /**
       * Neural Microsoft voice, Filipino (Philippines) Male, AngeloNeural.
       * @const
       */
      const fil_PH_AngeloNeural: Voice;
      /**
       * Neural Microsoft voice, French (Belgium) Female, CharlineNeural.
       * @const
       */
      const fr_BE_CharlineNeural: Voice;
      /**
       * Neural Microsoft voice, French (Belgium) Male, GerardNeural.
       * @const
       */
      const fr_BE_GerardNeural: Voice;
      /**
       * Neural Microsoft voice, French (Canada) Female, SylvieNeural.
       * @const
       */
      const fr_CA_SylvieNeural: Voice;
      /**
       * Neural Microsoft voice, French (Canada) Male, JeanNeural.
       * @const
       */
      const fr_CA_JeanNeural: Voice;
      /**
       * Neural Microsoft voice, French (Canada) Male, AntoineNeural.
       * @const
       */
      const fr_CA_AntoineNeural: Voice;
      /**
       * Neural Microsoft voice, French (Canada) Male, ThierryNeural.
       * @const
       */
      const fr_CA_ThierryNeural: Voice;
      /**
       * Neural Microsoft voice, French (Switzerland) Female, ArianeNeural.
       * @const
       */
      const fr_CH_ArianeNeural: Voice;
      /**
       * Neural Microsoft voice, French (Switzerland) Male, FabriceNeural.
       * @const
       */
      const fr_CH_FabriceNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Female, DeniseNeural.
       * @const
       */
      const fr_FR_DeniseNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Male, HenriNeural.
       * @const
       */
      const fr_FR_HenriNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Female, VivienneMultilingualNeural.
       * @const
       */
      const fr_FR_VivienneMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Male, RemyMultilingualNeural.
       * @const
       */
      const fr_FR_RemyMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Male, LucienMultilingualNeural.
       * @const
       */
      const fr_FR_LucienMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Male, AlainNeural.
       * @const
       */
      const fr_FR_AlainNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Female, BrigitteNeural.
       * @const
       */
      const fr_FR_BrigitteNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Female, CelesteNeural.
       * @const
       */
      const fr_FR_CelesteNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Male, ClaudeNeural.
       * @const
       */
      const fr_FR_ClaudeNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Female, CoralieNeural.
       * @const
       */
      const fr_FR_CoralieNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Female, EloiseNeural.
       * @const
       */
      const fr_FR_EloiseNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Female, JacquelineNeural.
       * @const
       */
      const fr_FR_JacquelineNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Male, JeromeNeural.
       * @const
       */
      const fr_FR_JeromeNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Female, JosephineNeural.
       * @const
       */
      const fr_FR_JosephineNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Male, MauriceNeural.
       * @const
       */
      const fr_FR_MauriceNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Male, YvesNeural.
       * @const
       */
      const fr_FR_YvesNeural: Voice;
      /**
       * Neural Microsoft voice, French (France) Female, YvetteNeural.
       * @const
       */
      const fr_FR_YvetteNeural: Voice;
      /**
       * Neural Microsoft voice, Irish (Ireland) Female, OrlaNeural.
       * @const
       */
      const ga_IE_OrlaNeural: Voice;
      /**
       * Neural Microsoft voice, Irish (Ireland) Male, ColmNeural.
       * @const
       */
      const ga_IE_ColmNeural: Voice;
      /**
       * Neural Microsoft voice, Galician Female, SabelaNeural.
       * @const
       */
      const gl_ES_SabelaNeural: Voice;
      /**
       * Neural Microsoft voice, Galician Male, RoiNeural.
       * @const
       */
      const gl_ES_RoiNeural: Voice;
      /**
       * Neural Microsoft voice, Gujarati (India) Female, DhwaniNeural.
       * @const
       */
      const gu_IN_DhwaniNeural: Voice;
      /**
       * Neural Microsoft voice, Gujarati (India) Male, NiranjanNeural.
       * @const
       */
      const gu_IN_NiranjanNeural: Voice;
      /**
       * Neural Microsoft voice, Hebrew (Israel) Female, HilaNeural.
       * @const
       */
      const he_IL_HilaNeural: Voice;
      /**
       * Neural Microsoft voice, Hebrew (Israel) Male, AvriNeural.
       * @const
       */
      const he_IL_AvriNeural: Voice;
      /**
       * Neural Microsoft voice, Hindi (India) Male, AaravNeural.
       * @const
       */
      const hi_IN_AaravNeural: Voice;
      /**
       * Neural Microsoft voice, Hindi (India) Female, AnanyaNeural.
       * @const
       */
      const hi_IN_AnanyaNeural: Voice;
      /**
       * Neural Microsoft voice, Hindi (India) Female, AartiNeural.
       * @const
       */
      const hi_IN_AartiNeural: Voice;
      /**
       * Neural Microsoft voice, Hindi (India) Male, ArjunNeural.
       * @const
       */
      const hi_IN_ArjunNeural: Voice;
      /**
       * Neural Microsoft voice, Hindi (India) Female, KavyaNeural.
       * @const
       */
      const hi_IN_KavyaNeural: Voice;
      /**
       * Neural Microsoft voice, Hindi (India) Male, KunalNeural.
       * @const
       */
      const hi_IN_KunalNeural: Voice;
      /**
       * Neural Microsoft voice, Hindi (India) Male, RehaanNeural.
       * @const
       */
      const hi_IN_RehaanNeural: Voice;
      /**
       * Neural Microsoft voice, Hindi (India) Female, SwaraNeural.
       * @const
       */
      const hi_IN_SwaraNeural: Voice;
      /**
       * Neural Microsoft voice, Hindi (India) Male, MadhurNeural.
       * @const
       */
      const hi_IN_MadhurNeural: Voice;
      /**
       * Neural Microsoft voice, Croatian (Croatia) Female, GabrijelaNeural.
       * @const
       */
      const hr_HR_GabrijelaNeural: Voice;
      /**
       * Neural Microsoft voice, Croatian (Croatia) Male, SreckoNeural.
       * @const
       */
      const hr_HR_SreckoNeural: Voice;
      /**
       * Neural Microsoft voice, Hungarian (Hungary) Female, NoemiNeural.
       * @const
       */
      const hu_HU_NoemiNeural: Voice;
      /**
       * Neural Microsoft voice, Hungarian (Hungary) Male, TamasNeural.
       * @const
       */
      const hu_HU_TamasNeural: Voice;
      /**
       * Neural Microsoft voice, Armenian (Armenia) Female, AnahitNeural.
       * @const
       */
      const hy_AM_AnahitNeural: Voice;
      /**
       * Neural Microsoft voice, Armenian (Armenia) Male, HaykNeural.
       * @const
       */
      const hy_AM_HaykNeural: Voice;
      /**
       * Neural Microsoft voice, Indonesian (Indonesia) Female, GadisNeural.
       * @const
       */
      const id_ID_GadisNeural: Voice;
      /**
       * Neural Microsoft voice, Indonesian (Indonesia) Male, ArdiNeural.
       * @const
       */
      const id_ID_ArdiNeural: Voice;
      /**
       * Neural Microsoft voice, Icelandic (Iceland) Female, GudrunNeural.
       * @const
       */
      const is_IS_GudrunNeural: Voice;
      /**
       * Neural Microsoft voice, Icelandic (Iceland) Male, GunnarNeural.
       * @const
       */
      const is_IS_GunnarNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Female, ElsaNeural.
       * @const
       */
      const it_IT_ElsaNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Female, IsabellaNeural.
       * @const
       */
      const it_IT_IsabellaNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Male, DiegoNeural.
       * @const
       */
      const it_IT_DiegoNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Male, AlessioMultilingualNeural.
       * @const
       */
      const it_IT_AlessioMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Female, IsabellaMultilingualNeural.
       * @const
       */
      const it_IT_IsabellaMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Male, GiuseppeMultilingualNeural.
       * @const
       */
      const it_IT_GiuseppeMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Male, MarcelloMultilingualNeural.
       * @const
       */
      const it_IT_MarcelloMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Male, BenignoNeural.
       * @const
       */
      const it_IT_BenignoNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Male, CalimeroNeural.
       * @const
       */
      const it_IT_CalimeroNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Male, CataldoNeural.
       * @const
       */
      const it_IT_CataldoNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Female, FabiolaNeural.
       * @const
       */
      const it_IT_FabiolaNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Female, FiammaNeural.
       * @const
       */
      const it_IT_FiammaNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Male, GianniNeural.
       * @const
       */
      const it_IT_GianniNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Male, GiuseppeNeural.
       * @const
       */
      const it_IT_GiuseppeNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Female, ImeldaNeural.
       * @const
       */
      const it_IT_ImeldaNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Female, IrmaNeural.
       * @const
       */
      const it_IT_IrmaNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Male, LisandroNeural.
       * @const
       */
      const it_IT_LisandroNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Female, PalmiraNeural.
       * @const
       */
      const it_IT_PalmiraNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Female, PierinaNeural.
       * @const
       */
      const it_IT_PierinaNeural: Voice;
      /**
       * Neural Microsoft voice, Italian (Italy) Male, RinaldoNeural.
       * @const
       */
      const it_IT_RinaldoNeural: Voice;
      /**
       * Neural Microsoft voice, Inuktitut (Syllabics, Canada) Female, CA.
       * @const
       */
      const iu_Cans_CA_SiqiniqNeural: Voice;
      /**
       * Neural Microsoft voice, Inuktitut (Syllabics, Canada) Male, CA.
       * @const
       */
      const iu_Cans_CA_TaqqiqNeural: Voice;
      /**
       * Neural Microsoft voice, Inuktitut (Latin, Canada) Female, CA.
       * @const
       */
      const iu_Latn_CA_SiqiniqNeural: Voice;
      /**
       * Neural Microsoft voice, Inuktitut (Latin, Canada) Male, CA.
       * @const
       */
      const iu_Latn_CA_TaqqiqNeural: Voice;
      /**
       * Neural Microsoft voice, Japanese (Japan) Female, NanamiNeural.
       * @const
       */
      const ja_JP_NanamiNeural: Voice;
      /**
       * Neural Microsoft voice, Japanese (Japan) Male, KeitaNeural.
       * @const
       */
      const ja_JP_KeitaNeural: Voice;
      /**
       * Neural Microsoft voice, Japanese (Japan) Female, AoiNeural.
       * @const
       */
      const ja_JP_AoiNeural: Voice;
      /**
       * Neural Microsoft voice, Japanese (Japan) Male, DaichiNeural.
       * @const
       */
      const ja_JP_DaichiNeural: Voice;
      /**
       * Neural Microsoft voice, Japanese (Japan) Female, MayuNeural.
       * @const
       */
      const ja_JP_MayuNeural: Voice;
      /**
       * Neural Microsoft voice, Japanese (Japan) Male, NaokiNeural.
       * @const
       */
      const ja_JP_NaokiNeural: Voice;
      /**
       * Neural Microsoft voice, Japanese (Japan) Female, ShioriNeural.
       * @const
       */
      const ja_JP_ShioriNeural: Voice;
      /**
       * Neural Microsoft voice, Javanese (Latin, Indonesia) Female, SitiNeural.
       * @const
       */
      const jv_ID_SitiNeural: Voice;
      /**
       * Neural Microsoft voice, Javanese (Latin, Indonesia) Male, DimasNeural.
       * @const
       */
      const jv_ID_DimasNeural: Voice;
      /**
       * Neural Microsoft voice, Georgian (Georgia) Female, EkaNeural.
       * @const
       */
      const ka_GE_EkaNeural: Voice;
      /**
       * Neural Microsoft voice, Georgian (Georgia) Male, GiorgiNeural.
       * @const
       */
      const ka_GE_GiorgiNeural: Voice;
      /**
       * Neural Microsoft voice, Kazakh (Kazakhstan) Female, AigulNeural.
       * @const
       */
      const kk_KZ_AigulNeural: Voice;
      /**
       * Neural Microsoft voice, Kazakh (Kazakhstan) Male, DauletNeural.
       * @const
       */
      const kk_KZ_DauletNeural: Voice;
      /**
       * Neural Microsoft voice, Khmer (Cambodia) Female, SreymomNeural.
       * @const
       */
      const km_KH_SreymomNeural: Voice;
      /**
       * Neural Microsoft voice, Khmer (Cambodia) Male, PisethNeural.
       * @const
       */
      const km_KH_PisethNeural: Voice;
      /**
       * Neural Microsoft voice, Kannada (India) Female, SapnaNeural.
       * @const
       */
      const kn_IN_SapnaNeural: Voice;
      /**
       * Neural Microsoft voice, Kannada (India) Male, GaganNeural.
       * @const
       */
      const kn_IN_GaganNeural: Voice;
      /**
       * Neural Microsoft voice, Korean (Korea) Female, SunHiNeural.
       * @const
       */
      const ko_KR_SunHiNeural: Voice;
      /**
       * Neural Microsoft voice, Korean (Korea) Male, InJoonNeural.
       * @const
       */
      const ko_KR_InJoonNeural: Voice;
      /**
       * Neural Microsoft voice, Korean (Korea) Male, HyunsuMultilingualNeural.
       * @const
       */
      const ko_KR_HyunsuMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Korean (Korea) Male, BongJinNeural.
       * @const
       */
      const ko_KR_BongJinNeural: Voice;
      /**
       * Neural Microsoft voice, Korean (Korea) Male, GookMinNeural.
       * @const
       */
      const ko_KR_GookMinNeural: Voice;
      /**
       * Neural Microsoft voice, Korean (Korea) Male, HyunsuNeural.
       * @const
       */
      const ko_KR_HyunsuNeural: Voice;
      /**
       * Neural Microsoft voice, Korean (Korea) Female, JiMinNeural.
       * @const
       */
      const ko_KR_JiMinNeural: Voice;
      /**
       * Neural Microsoft voice, Korean (Korea) Female, SeoHyeonNeural.
       * @const
       */
      const ko_KR_SeoHyeonNeural: Voice;
      /**
       * Neural Microsoft voice, Korean (Korea) Female, SoonBokNeural.
       * @const
       */
      const ko_KR_SoonBokNeural: Voice;
      /**
       * Neural Microsoft voice, Korean (Korea) Female, YuJinNeural.
       * @const
       */
      const ko_KR_YuJinNeural: Voice;
      /**
       * Neural Microsoft voice, Lao (Laos) Female, KeomanyNeural.
       * @const
       */
      const lo_LA_KeomanyNeural: Voice;
      /**
       * Neural Microsoft voice, Lao (Laos) Male, ChanthavongNeural.
       * @const
       */
      const lo_LA_ChanthavongNeural: Voice;
      /**
       * Neural Microsoft voice, Lithuanian (Lithuania) Female, OnaNeural.
       * @const
       */
      const lt_LT_OnaNeural: Voice;
      /**
       * Neural Microsoft voice, Lithuanian (Lithuania) Male, LeonasNeural.
       * @const
       */
      const lt_LT_LeonasNeural: Voice;
      /**
       * Neural Microsoft voice, Latvian (Latvia) Female, EveritaNeural.
       * @const
       */
      const lv_LV_EveritaNeural: Voice;
      /**
       * Neural Microsoft voice, Latvian (Latvia) Male, NilsNeural.
       * @const
       */
      const lv_LV_NilsNeural: Voice;
      /**
       * Neural Microsoft voice, Macedonian (North Macedonia) Female, MarijaNeural.
       * @const
       */
      const mk_MK_MarijaNeural: Voice;
      /**
       * Neural Microsoft voice, Macedonian (North Macedonia) Male, AleksandarNeural.
       * @const
       */
      const mk_MK_AleksandarNeural: Voice;
      /**
       * Neural Microsoft voice, Malayalam (India) Female, SobhanaNeural.
       * @const
       */
      const ml_IN_SobhanaNeural: Voice;
      /**
       * Neural Microsoft voice, Malayalam (India) Male, MidhunNeural.
       * @const
       */
      const ml_IN_MidhunNeural: Voice;
      /**
       * Neural Microsoft voice, Mongolian (Mongolia) Female, YesuiNeural.
       * @const
       */
      const mn_MN_YesuiNeural: Voice;
      /**
       * Neural Microsoft voice, Mongolian (Mongolia) Male, BataaNeural.
       * @const
       */
      const mn_MN_BataaNeural: Voice;
      /**
       * Neural Microsoft voice, Marathi (India) Female, AarohiNeural.
       * @const
       */
      const mr_IN_AarohiNeural: Voice;
      /**
       * Neural Microsoft voice, Marathi (India) Male, ManoharNeural.
       * @const
       */
      const mr_IN_ManoharNeural: Voice;
      /**
       * Neural Microsoft voice, Malay (Malaysia) Female, YasminNeural.
       * @const
       */
      const ms_MY_YasminNeural: Voice;
      /**
       * Neural Microsoft voice, Malay (Malaysia) Male, OsmanNeural.
       * @const
       */
      const ms_MY_OsmanNeural: Voice;
      /**
       * Neural Microsoft voice, Maltese (Malta) Female, GraceNeural.
       * @const
       */
      const mt_MT_GraceNeural: Voice;
      /**
       * Neural Microsoft voice, Maltese (Malta) Male, JosephNeural.
       * @const
       */
      const mt_MT_JosephNeural: Voice;
      /**
       * Neural Microsoft voice, Burmese (Myanmar) Female, NilarNeural.
       * @const
       */
      const my_MM_NilarNeural: Voice;
      /**
       * Neural Microsoft voice, Burmese (Myanmar) Male, ThihaNeural.
       * @const
       */
      const my_MM_ThihaNeural: Voice;
      /**
       * Neural Microsoft voice, Norwegian Bokmål (Norway) Female, PernilleNeural.
       * @const
       */
      const nb_NO_PernilleNeural: Voice;
      /**
       * Neural Microsoft voice, Norwegian Bokmål (Norway) Male, FinnNeural.
       * @const
       */
      const nb_NO_FinnNeural: Voice;
      /**
       * Neural Microsoft voice, Norwegian Bokmål (Norway) Female, IselinNeural.
       * @const
       */
      const nb_NO_IselinNeural: Voice;
      /**
       * Neural Microsoft voice, Nepali (Nepal) Female, HemkalaNeural.
       * @const
       */
      const ne_NP_HemkalaNeural: Voice;
      /**
       * Neural Microsoft voice, Nepali (Nepal) Male, SagarNeural.
       * @const
       */
      const ne_NP_SagarNeural: Voice;
      /**
       * Neural Microsoft voice, Dutch (Belgium) Female, DenaNeural.
       * @const
       */
      const nl_BE_DenaNeural: Voice;
      /**
       * Neural Microsoft voice, Dutch (Belgium) Male, ArnaudNeural.
       * @const
       */
      const nl_BE_ArnaudNeural: Voice;
      /**
       * Neural Microsoft voice, Dutch (Netherlands) Female, FennaNeural.
       * @const
       */
      const nl_NL_FennaNeural: Voice;
      /**
       * Neural Microsoft voice, Dutch (Netherlands) Male, MaartenNeural.
       * @const
       */
      const nl_NL_MaartenNeural: Voice;
      /**
       * Neural Microsoft voice, Dutch (Netherlands) Female, ColetteNeural.
       * @const
       */
      const nl_NL_ColetteNeural: Voice;
      /**
       * Neural Microsoft voice, Odia (India) Female, SubhasiniNeural.
       * @const
       */
      const or_IN_SubhasiniNeural: Voice;
      /**
       * Neural Microsoft voice, Odia (India) Male, SukantNeural.
       * @const
       */
      const or_IN_SukantNeural: Voice;
      /**
       * Neural Microsoft voice, Punjabi (India) Male, OjasNeural.
       * @const
       */
      const pa_IN_OjasNeural: Voice;
      /**
       * Neural Microsoft voice, Punjabi (India) Female, VaaniNeural.
       * @const
       */
      const pa_IN_VaaniNeural: Voice;
      /**
       * Neural Microsoft voice, Polish (Poland) Female, AgnieszkaNeural.
       * @const
       */
      const pl_PL_AgnieszkaNeural: Voice;
      /**
       * Neural Microsoft voice, Polish (Poland) Male, MarekNeural.
       * @const
       */
      const pl_PL_MarekNeural: Voice;
      /**
       * Neural Microsoft voice, Polish (Poland) Female, ZofiaNeural.
       * @const
       */
      const pl_PL_ZofiaNeural: Voice;
      /**
       * Neural Microsoft voice, Pashto (Afghanistan) Female, LatifaNeural.
       * @const
       */
      const ps_AF_LatifaNeural: Voice;
      /**
       * Neural Microsoft voice, Pashto (Afghanistan) Male, GulNawazNeural.
       * @const
       */
      const ps_AF_GulNawazNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Female, FranciscaNeural.
       * @const
       */
      const pt_BR_FranciscaNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Male, AntonioNeural.
       * @const
       */
      const pt_BR_AntonioNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Male, MacerioMultilingualNeural.
       * @const
       */
      const pt_BR_MacerioMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Female, ThalitaMultilingualNeural.
       * @const
       */
      const pt_BR_ThalitaMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Female, BrendaNeural.
       * @const
       */
      const pt_BR_BrendaNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Male, DonatoNeural.
       * @const
       */
      const pt_BR_DonatoNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Female, ElzaNeural.
       * @const
       */
      const pt_BR_ElzaNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Male, FabioNeural.
       * @const
       */
      const pt_BR_FabioNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Female, GiovannaNeural.
       * @const
       */
      const pt_BR_GiovannaNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Male, HumbertoNeural.
       * @const
       */
      const pt_BR_HumbertoNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Male, JulioNeural.
       * @const
       */
      const pt_BR_JulioNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Female, LeilaNeural.
       * @const
       */
      const pt_BR_LeilaNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Female, LeticiaNeural.
       * @const
       */
      const pt_BR_LeticiaNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Female, ManuelaNeural.
       * @const
       */
      const pt_BR_ManuelaNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Male, NicolauNeural.
       * @const
       */
      const pt_BR_NicolauNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Female, ThalitaNeural.
       * @const
       */
      const pt_BR_ThalitaNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Male, ValerioNeural.
       * @const
       */
      const pt_BR_ValerioNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Brazil) Female, YaraNeural.
       * @const
       */
      const pt_BR_YaraNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Portugal) Female, RaquelNeural.
       * @const
       */
      const pt_PT_RaquelNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Portugal) Male, DuarteNeural.
       * @const
       */
      const pt_PT_DuarteNeural: Voice;
      /**
       * Neural Microsoft voice, Portuguese (Portugal) Female, FernandaNeural.
       * @const
       */
      const pt_PT_FernandaNeural: Voice;
      /**
       * Neural Microsoft voice, Romanian (Romania) Female, AlinaNeural.
       * @const
       */
      const ro_RO_AlinaNeural: Voice;
      /**
       * Neural Microsoft voice, Romanian (Romania) Male, EmilNeural.
       * @const
       */
      const ro_RO_EmilNeural: Voice;
      /**
       * Neural Microsoft voice, Russian (Russia) Female, SvetlanaNeural.
       * @const
       */
      const ru_RU_SvetlanaNeural: Voice;
      /**
       * Neural Microsoft voice, Russian (Russia) Male, DmitryNeural.
       * @const
       */
      const ru_RU_DmitryNeural: Voice;
      /**
       * Neural Microsoft voice, Russian (Russia) Female, DariyaNeural.
       * @const
       */
      const ru_RU_DariyaNeural: Voice;
      /**
       * Neural Microsoft voice, Sinhala (Sri Lanka) Female, ThiliniNeural.
       * @const
       */
      const si_LK_ThiliniNeural: Voice;
      /**
       * Neural Microsoft voice, Sinhala (Sri Lanka) Male, SameeraNeural.
       * @const
       */
      const si_LK_SameeraNeural: Voice;
      /**
       * Neural Microsoft voice, Slovak (Slovakia) Female, ViktoriaNeural.
       * @const
       */
      const sk_SK_ViktoriaNeural: Voice;
      /**
       * Neural Microsoft voice, Slovak (Slovakia) Male, LukasNeural.
       * @const
       */
      const sk_SK_LukasNeural: Voice;
      /**
       * Neural Microsoft voice, Slovenian (Slovenia) Female, PetraNeural.
       * @const
       */
      const sl_SI_PetraNeural: Voice;
      /**
       * Neural Microsoft voice, Slovenian (Slovenia) Male, RokNeural.
       * @const
       */
      const sl_SI_RokNeural: Voice;
      /**
       * Neural Microsoft voice, Somali (Somalia) Female, UbaxNeural.
       * @const
       */
      const so_SO_UbaxNeural: Voice;
      /**
       * Neural Microsoft voice, Somali (Somalia) Male, MuuseNeural.
       * @const
       */
      const so_SO_MuuseNeural: Voice;
      /**
       * Neural Microsoft voice, Albanian (Albania) Female, AnilaNeural.
       * @const
       */
      const sq_AL_AnilaNeural: Voice;
      /**
       * Neural Microsoft voice, Albanian (Albania) Male, IlirNeural.
       * @const
       */
      const sq_AL_IlirNeural: Voice;
      /**
       * Neural Microsoft voice, Serbian (Latin, Serbia) Male, RS.
       * @const
       */
      const sr_Latn_RS_NicholasNeural: Voice;
      /**
       * Neural Microsoft voice, Serbian (Latin, Serbia) Female, RS.
       * @const
       */
      const sr_Latn_RS_SophieNeural: Voice;
      /**
       * Neural Microsoft voice, Serbian (Cyrillic, Serbia) Female, SophieNeural.
       * @const
       */
      const sr_RS_SophieNeural: Voice;
      /**
       * Neural Microsoft voice, Serbian (Cyrillic, Serbia) Male, NicholasNeural.
       * @const
       */
      const sr_RS_NicholasNeural: Voice;
      /**
       * Neural Microsoft voice, Sundanese (Indonesia) Female, TutiNeural.
       * @const
       */
      const su_ID_TutiNeural: Voice;
      /**
       * Neural Microsoft voice, Sundanese (Indonesia) Male, JajangNeural.
       * @const
       */
      const su_ID_JajangNeural: Voice;
      /**
       * Neural Microsoft voice, Swedish (Sweden) Female, SofieNeural.
       * @const
       */
      const sv_SE_SofieNeural: Voice;
      /**
       * Neural Microsoft voice, Swedish (Sweden) Male, MattiasNeural.
       * @const
       */
      const sv_SE_MattiasNeural: Voice;
      /**
       * Neural Microsoft voice, Swedish (Sweden) Female, HilleviNeural.
       * @const
       */
      const sv_SE_HilleviNeural: Voice;
      /**
       * Neural Microsoft voice, Swahili (Kenya) Female, ZuriNeural.
       * @const
       */
      const sw_KE_ZuriNeural: Voice;
      /**
       * Neural Microsoft voice, Swahili (Kenya) Male, RafikiNeural.
       * @const
       */
      const sw_KE_RafikiNeural: Voice;
      /**
       * Neural Microsoft voice, Swahili (Tanzania) Female, RehemaNeural.
       * @const
       */
      const sw_TZ_RehemaNeural: Voice;
      /**
       * Neural Microsoft voice, Swahili (Tanzania) Male, DaudiNeural.
       * @const
       */
      const sw_TZ_DaudiNeural: Voice;
      /**
       * Neural Microsoft voice, Tamil (India) Female, PallaviNeural.
       * @const
       */
      const ta_IN_PallaviNeural: Voice;
      /**
       * Neural Microsoft voice, Tamil (India) Male, ValluvarNeural.
       * @const
       */
      const ta_IN_ValluvarNeural: Voice;
      /**
       * Neural Microsoft voice, Tamil (Sri Lanka) Female, SaranyaNeural.
       * @const
       */
      const ta_LK_SaranyaNeural: Voice;
      /**
       * Neural Microsoft voice, Tamil (Sri Lanka) Male, KumarNeural.
       * @const
       */
      const ta_LK_KumarNeural: Voice;
      /**
       * Neural Microsoft voice, Tamil (Malaysia) Female, KaniNeural.
       * @const
       */
      const ta_MY_KaniNeural: Voice;
      /**
       * Neural Microsoft voice, Tamil (Malaysia) Male, SuryaNeural.
       * @const
       */
      const ta_MY_SuryaNeural: Voice;
      /**
       * Neural Microsoft voice, Tamil (Singapore) Female, VenbaNeural.
       * @const
       */
      const ta_SG_VenbaNeural: Voice;
      /**
       * Neural Microsoft voice, Tamil (Singapore) Male, AnbuNeural.
       * @const
       */
      const ta_SG_AnbuNeural: Voice;
      /**
       * Neural Microsoft voice, Telugu (India) Female, ShrutiNeural.
       * @const
       */
      const te_IN_ShrutiNeural: Voice;
      /**
       * Neural Microsoft voice, Telugu (India) Male, MohanNeural.
       * @const
       */
      const te_IN_MohanNeural: Voice;
      /**
       * Neural Microsoft voice, Thai (Thailand) Female, PremwadeeNeural.
       * @const
       */
      const th_TH_PremwadeeNeural: Voice;
      /**
       * Neural Microsoft voice, Thai (Thailand) Male, NiwatNeural.
       * @const
       */
      const th_TH_NiwatNeural: Voice;
      /**
       * Neural Microsoft voice, Thai (Thailand) Female, AcharaNeural.
       * @const
       */
      const th_TH_AcharaNeural: Voice;
      /**
       * Neural Microsoft voice, Turkish (Türkiye) Female, EmelNeural.
       * @const
       */
      const tr_TR_EmelNeural: Voice;
      /**
       * Neural Microsoft voice, Turkish (Türkiye) Male, AhmetNeural.
       * @const
       */
      const tr_TR_AhmetNeural: Voice;
      /**
       * Neural Microsoft voice, Ukrainian (Ukraine) Female, PolinaNeural.
       * @const
       */
      const uk_UA_PolinaNeural: Voice;
      /**
       * Neural Microsoft voice, Ukrainian (Ukraine) Male, OstapNeural.
       * @const
       */
      const uk_UA_OstapNeural: Voice;
      /**
       * Neural Microsoft voice, Urdu (India) Female, GulNeural.
       * @const
       */
      const ur_IN_GulNeural: Voice;
      /**
       * Neural Microsoft voice, Urdu (India) Male, SalmanNeural.
       * @const
       */
      const ur_IN_SalmanNeural: Voice;
      /**
       * Neural Microsoft voice, Urdu (Pakistan) Female, UzmaNeural.
       * @const
       */
      const ur_PK_UzmaNeural: Voice;
      /**
       * Neural Microsoft voice, Urdu (Pakistan) Male, AsadNeural.
       * @const
       */
      const ur_PK_AsadNeural: Voice;
      /**
       * Neural Microsoft voice, Uzbek (Latin, Uzbekistan) Female, MadinaNeural.
       * @const
       */
      const uz_UZ_MadinaNeural: Voice;
      /**
       * Neural Microsoft voice, Uzbek (Latin, Uzbekistan) Male, SardorNeural.
       * @const
       */
      const uz_UZ_SardorNeural: Voice;
      /**
       * Neural Microsoft voice, Vietnamese (Vietnam) Female, HoaiMyNeural.
       * @const
       */
      const vi_VN_HoaiMyNeural: Voice;
      /**
       * Neural Microsoft voice, Vietnamese (Vietnam) Male, NamMinhNeural.
       * @const
       */
      const vi_VN_NamMinhNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Wu, Simplified) Female, XiaotongNeural.
       * @const
       */
      const wuu_CN_XiaotongNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Wu, Simplified) Male, YunzheNeural.
       * @const
       */
      const wuu_CN_YunzheNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Cantonese, Simplified) Female, XiaoMinNeural.
       * @const
       */
      const yue_CN_XiaoMinNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Cantonese, Simplified) Male, YunSongNeural.
       * @const
       */
      const yue_CN_YunSongNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaoxiaoNeural.
       * @const
       */
      const zh_CN_XiaoxiaoNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Male, YunxiNeural.
       * @const
       */
      const zh_CN_YunxiNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Male, YunjianNeural.
       * @const
       */
      const zh_CN_YunjianNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaoyiNeural.
       * @const
       */
      const zh_CN_XiaoyiNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Male, YunyangNeural.
       * @const
       */
      const zh_CN_YunyangNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaochenNeural.
       * @const
       */
      const zh_CN_XiaochenNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaochenMultilingualNeural.
       * @const
       */
      const zh_CN_XiaochenMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaohanNeural.
       * @const
       */
      const zh_CN_XiaohanNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaomengNeural.
       * @const
       */
      const zh_CN_XiaomengNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaomoNeural.
       * @const
       */
      const zh_CN_XiaomoNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaoqiuNeural.
       * @const
       */
      const zh_CN_XiaoqiuNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaorouNeural.
       * @const
       */
      const zh_CN_XiaorouNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaoruiNeural.
       * @const
       */
      const zh_CN_XiaoruiNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaoshuangNeural.
       * @const
       */
      const zh_CN_XiaoshuangNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaoxiaoDialectsNeural.
       * @const
       */
      const zh_CN_XiaoxiaoDialectsNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaoxiaoMultilingualNeural.
       * @const
       */
      const zh_CN_XiaoxiaoMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaoyanNeural.
       * @const
       */
      const zh_CN_XiaoyanNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaoyouNeural.
       * @const
       */
      const zh_CN_XiaoyouNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaoyuMultilingualNeural.
       * @const
       */
      const zh_CN_XiaoyuMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Female, XiaozhenNeural.
       * @const
       */
      const zh_CN_XiaozhenNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Male, YunfengNeural.
       * @const
       */
      const zh_CN_YunfengNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Male, YunhaoNeural.
       * @const
       */
      const zh_CN_YunhaoNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Male, YunjieNeural.
       * @const
       */
      const zh_CN_YunjieNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Male, YunxiaNeural.
       * @const
       */
      const zh_CN_YunxiaNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Male, YunxiaoMultilingualNeural.
       * @const
       */
      const zh_CN_YunxiaoMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Male, YunyeNeural.
       * @const
       */
      const zh_CN_YunyeNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Male, YunyiMultilingualNeural.
       * @const
       */
      const zh_CN_YunyiMultilingualNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Mandarin, Simplified) Male, YunzeNeural.
       * @const
       */
      const zh_CN_YunzeNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Zhongyuan Mandarin Henan, Simplified) Male, henan.
       * @const
       */
      const zh_CN_henan_YundengNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Northeastern Mandarin, Simplified) Female, liaoning.
       * @const
       */
      const zh_CN_liaoning_XiaobeiNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Zhongyuan Mandarin Shaanxi, Simplified) Female, shaanxi.
       * @const
       */
      const zh_CN_shaanxi_XiaoniNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Jilu Mandarin, Simplified) Male, shandong.
       * @const
       */
      const zh_CN_shandong_YunxiangNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Southwestern Mandarin, Simplified) Male, sichuan.
       * @const
       */
      const zh_CN_sichuan_YunxiNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Cantonese, Traditional) Female, HiuMaanNeural.
       * @const
       */
      const zh_HK_HiuMaanNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Cantonese, Traditional) Male, WanLungNeural.
       * @const
       */
      const zh_HK_WanLungNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Cantonese, Traditional) Female, HiuGaaiNeural.
       * @const
       */
      const zh_HK_HiuGaaiNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Taiwanese Mandarin, Traditional) Female, HsiaoChenNeural.
       * @const
       */
      const zh_TW_HsiaoChenNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Taiwanese Mandarin, Traditional) Male, YunJheNeural.
       * @const
       */
      const zh_TW_YunJheNeural: Voice;
      /**
       * Neural Microsoft voice, Chinese (Taiwanese Mandarin, Traditional) Female, HsiaoYuNeural.
       * @const
       */
      const zh_TW_HsiaoYuNeural: Voice;
      /**
       * Neural Microsoft voice, Zulu (South Africa) Female, ThandoNeural.
       * @const
       */
      const zu_ZA_ThandoNeural: Voice;
      /**
       * Neural Microsoft voice, Zulu (South Africa) Male, ThembaNeural.
       * @const
       */
      const zu_ZA_ThembaNeural: Voice;
    }
  }
}
declare namespace VoiceList {
  /**
   * List of availabl SaluteSpeech TTS voices for the [Call.say](/docs/references/voxengine/call#say) and [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) methods. Depending on the voice, different technologies are used to make synthesized voices sound as close as possible to live human voices. Please note that using these text-to-speech capabilities are charged according to the <a href="https://voximplant.com/pricing" target="_blank">pricing</a>.
   */
  namespace SaluteSpeech {
    /**
     * SaluteSpeech voice, Russian female.
     * @const
     */
    const ru_RU_natalia: Voice;
    /**
     * SaluteSpeech voice, Russian male.
     * @const
     */
    const ru_RU_boris: Voice;
    /**
     * SaluteSpeech voice, Russian male.
     * @const
     */
    const ru_RU_marfa: Voice;
    /**
     * SaluteSpeech voice, Russian male.
     * @const
     */
    const ru_RU_taras: Voice;
    /**
     * SaluteSpeech voice, Russian female.
     * @const
     */
    const ru_RU_alexandra: Voice;
    /**
     * SaluteSpeech voice, Russian male.
     * @const
     */
    const ru_RU_sergey: Voice;
    /**
     * Creates a brand voice with SaluteSpeech. To use this method, please contact support.
     * @param name The name of the voice
     */
    const createBrandVoice: (name: string) => Voice;
  }
}

declare namespace VoiceList {
  /**
   * List of available T-Bank TTS voices for the [Call.say](/docs/references/voxengine/call#say) and [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) methods. Depending on the voice, different technologies are used to make synthesized voices sound as close as possible to live human voices. Please note that using these text-to-speech capabilities are charged according to the <a href="https://voximplant.com/pricing" target="_blank">pricing</a>.
   */
  namespace TBank {
    /**
     * T-Bank voice, Russian female.
     * @const
     */
    const ru_RU_Anna: Voice;
    /**
     * T-Bank voice, Russian male.
     * @const
     */
    const ru_RU_Dima: Voice;
  }
}

/**
 * List of available TTS voices for the [Call.say](/docs/references/voxengine/call#say) and [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) methods.
 */
declare namespace VoiceList {
}

declare namespace VoiceList {
  namespace Yandex {
    /**
     * List of available premium Yandex TTS voices for the [Call.say](/docs/references/voxengine/call#say) and [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) methods that sound more natural due to advanced synthesis technology.
     * @namespace
     */
    namespace Neural {
      /**
       * Neural Yandex voice, German female, Lea.
       * @const
       */
      const de_DE_lea: Voice;
      /**
       * Neural Yandex voice, English (US) male, John.
       * @const
       */
      const en_US_john: Voice;
      /**
       * Neural Yandex voice, Kazakh (Kazakhstan) male, Amira.
       * @const
       */
      const kk_KK_amira: Voice;
      /**
       * Neural Yandex voice, Kazakh (Kazakhstan) male, Madi.
       * @const
       */
      const kk_KK_madi: Voice;
      /**
       * Neural Yandex voice, Russian female, Alena.
       * @const
       */
      const ru_RU_alena: Voice;
      /**
       * Neural Yandex voice, Russian male, Filipp.
       * @const
       */
      const ru_RU_filipp: Voice;
      /**
       * Neural Yandex voice, Russian male, Ermil.
       * @const
       */
      const ru_RU_ermil: Voice;
      /**
       * Neural Yandex voice, Russian female, Jane.
       * @const
       */
      const ru_RU_jane: Voice;
      /**
       * Neural Yandex voice, Russian female, Omazh.
       * @const
       */
      const ru_RU_omazh: Voice;
      /**
       * Neural Yandex voice, Russian male, Zahar.
       * @const
       */
      const ru_RU_zahar: Voice;
      /**
       * Neural Yandex voice, Russian female, Marina.
       * @const
       */
       const ru_RU_marina: Voice;
       /**
       * Neural Yandex voice, Russian male, Madi.
       * @const
       */
       const ru_RU_madi_ru: Voice;
      /**
       * Neural Yandex voice, Uzbek (Uzbekistan) female, Nigora.
       * @const
       */
      const uz_UZ_nigora: Voice;
    }
  }
}

declare namespace VoiceList {
  /**
   * List of available Yandex TTS voices for the [Call.say](/docs/references/voxengine/call#say) and [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) methods. Depending on the voice, different technologies are used to make synthesized voices sound as close as possible to live human voices. Please note that using these text-to-speech capabilities are charged according to the <a href="https://voximplant.com/pricing" target="_blank">pricing</a>.
   */
  namespace Yandex {
  }
}

declare namespace VoiceList {
  /**
   * List of available YandexV3 TTS voices for the [Call.say](/docs/references/voxengine/call#say) and [VoxEngine.createTTSPlayer](/docs/references/voxengine/voxengine/createttsplayer) methods. Depending on the voice, different technologies are used to make synthesized voices sound as close as possible to live human voices. Please note that using these text-to-speech capabilities are charged according to the <a href="https://voximplant.com/pricing" target="_blank">pricing</a>.
   */
  namespace YandexV3 {
    /**
     * Neural Yandex voice, German female, Lea.
     * @const
     */
    const de_DE_lea: Voice;
    /**
     * Neural Yandex voice, English (US) male, John.
     * @const
     */
    const en_US_john: Voice;
    /**
     * Neural Yandex voice, Hebrew female, Naomi.
     * @const
     */
    const he_IL_naomi: Voice;
    /**
     * Yandex voice, Kazakh (Kazakhstan) male, Amira.
     * @const
     */
    const kk_KK_amira: Voice;
    /**
     * Yandex voice, Kazakh (Kazakhstan) male, Madi.
     * @const
     */
    const kk_KK_madi: Voice;
    /**
     * Yandex voice, Kazakh (Kazakhstan) female, Saule.
     * @const
     */
    const kk_KK_saule: Voice;
    /**
     * Yandex voice, Kazakh (Kazakhstan) female, Zhanar.
     * @const
     */
    const kk_KK_zhanar: Voice;
    /**
     * Neural Yandex voice, Russian female, Alena.
     * @const
     */
    const ru_RU_alena: Voice;
    /**
     * Neural Yandex voice, Russian male, Filipp.
     * @const
     */
    const ru_RU_filipp: Voice;
    /**
     * Yandex voice, Russian male, Ermil.
     * @const
     */
    const ru_RU_ermil: Voice;
    /**
     * Yandex voice, Russian female, Jane.
     * @const
     */
    const ru_RU_jane: Voice;
    /**
     * Yandex voice, Russian female, Omazh.
     * @const
     */
    const ru_RU_omazh: Voice;
    /**
     * Yandex voice, Russian male, Zahar.
     * @const
     */
    const ru_RU_zahar: Voice;
    /**
     * Yandex voice, Russian female, Dasha.
     * @const
     */
    const ru_RU_dasha: Voice;
    /**
     * Yandex voice, Russian female, Julia.
     * @const
     */
    const ru_RU_julia: Voice;
    /**
     * Yandex voice, Russian female, Lera.
     * @const
     */
    const ru_RU_lera: Voice;
    /**
     * Yandex voice, Russian female, Masha.
     * @const
     */
    const ru_RU_masha: Voice;
    /**
     * Yandex voice, Russian female, Marina.
     * @const
     */
    const ru_RU_marina: Voice;
    /**
     * Yandex voice, Russian male, Alexander.
     * @const
     */
    const ru_RU_alexander: Voice;
    /**
     * Yandex voice, Russian male, Kirill.
     * @const
     */
    const ru_RU_kirill: Voice;
    /**
     * Yandex voice, Russian male, Anton.
     * @const
     */
    const ru_RU_anton: Voice;
    /**
     * Yandex voice, Russian male, Madi.
     * @const
     */
    const ru_RU_madi_ru: Voice;
    /**
     * Yandex voice, Russian female, Saule.
     * @const
     */
    const ru_RU_saule_ru: Voice;
    /**
     * Yandex voice, Russian female, Lola.
     * @const
     */
    const ru_RU_lola_ru: Voice;
    /**
     * Yandex voice, Russian female, Zhanar.
     * @const
     */
    const ru_RU_zhanar_ru: Voice;
    /**
     * Yandex voice, Russian female, Yulduz.
     * @const
     */
    const ru_RU_yulduz_ru: Voice;
    /**
     * Yandex voice, Uzbek (Uzbekistan) female, Nigora.
     * @const
     */
    const uz_UZ_nigora: Voice;
    /**
     * Yandex voice, Uzbek (Uzbekistan) female, Lola.
     * @const
     */
    const uz_UZ_lola: Voice;
    /**
     * Yandex voice, Uzbek (Uzbekistan) female, Yulduz.
     * @const
     */
    const uz_UZ_yulduz: Voice;
  }
}

/**
 * Represents a language and a voice for TTS. List of all supported voices: [VoiceList].
 */
declare class Voice {
}
