/**
 * Ambient Client Configuration
 */
interface AmbientConfig {
  /**
   * Server configuration: India, UK, US
   * @description Mandatory field
   */
  server: string;

  /**
   * Account's Subscription Code
   * @description Mandatory field
   */
  subscriptionCode: string;

  /**
   * Account's Access Key
   * @description Mandatory field
   */
  accessKey: string;

  /**
   * Unique identifier of the current user (from client application)
   * @description Mandatory field
   */
  userTag: string;

  /**
   * Optional Field: Enables or Disables Logging system
   * @description True if logs are enabled; Otherwise false
   */
  enableLogs?: boolean;

  /**
   * Optional Field: Enables or Disables reading audio intensity
   * @description True if intensity value will be passed in onIntensity callback; Otherwise false
   */
  shouldReadAudioIntensity?: boolean;

  /**
   * Optional Field: Enables or Disables echo cancellation on the microphone input
   * @description Pass true/false to toggle, or { exact: true/false } to enforce the constraint strictly
   */
  echoCancellation?: boolean | { exact: boolean };

  /**
   * Optional Field: Enables or Disables noise suppression on the microphone input
   * @description Pass true/false to toggle, or { exact: true/false } to enforce the constraint strictly
   */
  noiseSuppression?: boolean | { exact: boolean };

  /**
   * Optional Field: Enables or Disables automatic gain control on the microphone input
   * @description Pass true/false to toggle, or { exact: true/false } to enforce the constraint strictly
   */
  autoGainControl?: boolean | { exact: boolean };
}

export default AmbientConfig;
