// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using System.Threading.Tasks;
using UnityEngine;
namespace Microsoft.MixedReality.Toolkit.Input
{
///
/// Mixed Reality Toolkit controller definition, used to manage a specific controller type
///
public interface IMixedRealityDictationSystem : IMixedRealityInputDeviceManager
{
///
/// Is the system currently listing for dictation input?
///
bool IsListening { get; }
///
/// Turns on the dictation recognizer and begins recording audio from the default microphone.
///
/// GameObject listening for the dictation input.
/// The time length in seconds before dictation recognizer session ends due to lack of audio input in case there was no audio heard in the current session.
/// The time length in seconds before dictation recognizer session ends due to lack of audio input.
/// Length in seconds for the manager to listen.
/// Optional: The microphone device to listen to.
void StartRecording(GameObject listener, float initialSilenceTimeout = 5f, float autoSilenceTimeout = 20f, int recordingTime = 10, string micDeviceName = "");
///
/// Turns on the dictation recognizer and begins recording audio from the default microphone.
///
/// GameObject listening for the dictation input.
/// The time length in seconds before dictation recognizer session ends due to lack of audio input in case there was no audio heard in the current session.
/// The time length in seconds before dictation recognizer session ends due to lack of audio input.
/// Length in seconds for the manager to listen.
/// Optional: The microphone device to listen to.
Task StartRecordingAsync(GameObject listener, float initialSilenceTimeout = 5f, float autoSilenceTimeout = 20f, int recordingTime = 10, string micDeviceName = "");
///
/// Ends the recording session.
///
void StopRecording();
///
/// Ends the recording session.
///
/// AudioClip of the last recording session.
Task StopRecordingAsync();
///
/// Get the audio clip associated with the current session.
///
AudioClip AudioClip { get; }
}
}