// Code generated by sidekick. DO NOT EDIT.
//
// Copyright 2026 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#if Participants || Sessions
  import Foundation
  import GoogleCloudWkt

  /// Instructs the speech recognizer how to process the audio content.
  public struct InputAudioConfig: Codable, Equatable, GoogleCloudWkt._AnyPackable,
    Sendable
  {
    /// Required. Audio encoding of the audio content to process.
    public var audioEncoding: AudioEncoding = AudioEncoding()

    /// Required. Sample rate (in Hertz) of the audio content sent in the query.
    /// Refer to [Cloud Speech API
    /// documentation](https://cloud.google.com/speech-to-text/docs/basics) for
    /// more details.
    public var sampleRateHertz: Swift.Int32 = Swift.Int32()

    /// Required. The language of the supplied audio. Dialogflow does not do
    /// translations. 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 specify the same language.
    /// If not set, the language is inferred from the
    /// [ConversationProfile.stt_config][google.cloud.dialogflow.v2.ConversationProfile.stt_config].
    ///
    /// [google.cloud.dialogflow.v2.ConversationProfile.stt_config]: <doc:ConversationProfile/sttConfig>
    public var languageCode: Swift.String = Swift.String()

    /// If `true`, Dialogflow returns
    /// [SpeechWordInfo][google.cloud.dialogflow.v2.SpeechWordInfo] in
    /// [StreamingRecognitionResult][google.cloud.dialogflow.v2.StreamingRecognitionResult]
    /// with information about the recognized speech words, e.g. start and end time
    /// offsets. If false or unspecified, Speech doesn't return any word-level
    /// information.
    ///
    /// [google.cloud.dialogflow.v2.SpeechWordInfo]: <doc:SpeechWordInfo>
    /// [google.cloud.dialogflow.v2.StreamingRecognitionResult]: <doc:StreamingRecognitionResult>
    public var enableWordInfo: Swift.Bool = Swift.Bool()

    /// A list of strings containing words and phrases that the speech
    /// recognizer should recognize with higher likelihood.
    ///
    /// See [the Cloud Speech
    /// documentation](https://cloud.google.com/speech-to-text/docs/basics#phrase-hints)
    /// for more details.
    ///
    /// This field is deprecated. Please use [`speech_contexts`]() instead. If you
    /// specify both [`phrase_hints`]() and [`speech_contexts`](), Dialogflow will
    /// treat the [`phrase_hints`]() as a single additional [`SpeechContext`]().
    @available(*, deprecated)
    public var phraseHints: [Swift.String] = []

    /// Context information to assist speech recognition.
    ///
    /// See [the Cloud Speech
    /// documentation](https://cloud.google.com/speech-to-text/docs/basics#phrase-hints)
    /// for more details.
    public var speechContexts: [SpeechContext] = []

    /// Optional. Which Speech model to select for the given request.
    /// For more information, see
    /// [Speech models](https://cloud.google.com/dialogflow/es/docs/speech-models).
    public var model: Swift.String = Swift.String()

    /// Which variant of the [Speech
    /// model][google.cloud.dialogflow.v2.InputAudioConfig.model] to use.
    ///
    /// [google.cloud.dialogflow.v2.InputAudioConfig.model]: <doc:InputAudioConfig/model>
    public var modelVariant: SpeechModelVariant = SpeechModelVariant()

    /// If `false` (default), recognition does not cease until the
    /// client closes the stream.
    /// If `true`, the recognizer will detect a single spoken utterance in input
    /// audio. Recognition ceases when it detects the audio's voice has
    /// stopped or paused. In this case, once a detected intent is received, the
    /// client should close the stream and start a new request with a new stream as
    /// needed.
    /// Note: This setting is relevant only for streaming methods.
    /// Note: When specified, InputAudioConfig.single_utterance takes precedence
    /// over StreamingDetectIntentRequest.single_utterance.
    public var singleUtterance: Swift.Bool = Swift.Bool()

    /// Optional. If `true`, responses with voice activity speech events will be
    /// returned as they are detected.
    /// Note: This setting is relevant only for streaming methods.
    public var enableVoiceActivityEvents: Swift.Bool = Swift.Bool()

    /// Only used in
    /// [Participants.AnalyzeContent][google.cloud.dialogflow.v2.Participants.AnalyzeContent]
    /// and
    /// [Participants.StreamingAnalyzeContent][google.cloud.dialogflow.v2.Participants.StreamingAnalyzeContent].
    /// If `false` and recognition doesn't return any result, trigger
    /// `NO_SPEECH_RECOGNIZED` event to Dialogflow agent.
    ///
    /// [google.cloud.dialogflow.v2.Participants.AnalyzeContent]: <doc:Participants/analyzeContent(request:)>
    /// [google.cloud.dialogflow.v2.Participants.StreamingAnalyzeContent]: <doc:Participants/streamingAnalyzeContent(request:)>
    public var disableNoSpeechRecognizedEvent: Swift.Bool = Swift.Bool()

    /// Enable automatic punctuation option at the speech backend.
    public var enableAutomaticPunctuation: Swift.Bool = Swift.Bool()

    /// A collection of phrase set resources to use for speech adaptation.
    public var phraseSets: [Swift.String] = []

    /// If `true`, the request will opt out for STT conformer model migration.
    /// This field will be deprecated once force migration takes place in June
    /// 2024. Please refer to [Dialogflow ES Speech model
    /// migration](https://cloud.google.com/dialogflow/es/docs/speech-model-migration).
    public var optOutConformerModelMigration: Swift.Bool = Swift.Bool()

    /// Initialize a new instance of `InputAudioConfig`.
    public init() {}

    /// Use `config` to return a new instance of this object, with some fields updated.
    ///
    /// Commonly used to initialize the value, for example:
    ///
    /// ```
    /// let value = InputAudioConfig().with { $0.audioEncoding = ... }
    /// ```
    public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
      var copy = self
      try config(&copy)
      return copy
    }

    public static var _anyTypeUrl: Swift.String {
      return "type.googleapis.com/google.cloud.dialogflow.v2.InputAudioConfig"
    }
    public init(fromAny any: GoogleCloudWkt.`Any`) throws {
      self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
    }
    public func _pack() throws -> GoogleCloudWkt.Struct {
      return try GoogleCloudWkt._slowAnySerialize(message: self)
    }
  }
#endif
