using AIStudio.Tools.Rust;
namespace AIStudio.Tools.Media;
///
/// Typed terminal result returned by media import and voice operations.
///
/// Terminal operation status.
/// Transcript text for a successful operation.
/// Localized message suitable for display after a warning or failure.
/// Optional stable runtime failure category.
public sealed record MediaTranscriptionResult(MediaTranscriptionResultStatus Status, string Text, string UserMessage, MediaJobErrorCode? ErrorCode = null)
{
/// Creates a successful result.
/// Provider transcript.
public static MediaTranscriptionResult Succeeded(string text) => new(MediaTranscriptionResultStatus.SUCCEEDED, text, string.Empty);
/// Creates a failed result.
/// Localized visible message.
/// Optional runtime error category.
public static MediaTranscriptionResult Failed(string userMessage, MediaJobErrorCode? errorCode = null) => new(MediaTranscriptionResultStatus.FAILED, string.Empty, userMessage, errorCode);
/// Creates a warning result for media without an audible signal.
/// Localized visible warning.
public static MediaTranscriptionResult NoAudibleSignal(string userMessage) => new(
MediaTranscriptionResultStatus.NO_AUDIBLE_SIGNAL,
string.Empty,
userMessage);
/// Creates a cancelled result without relying on visible text.
public static MediaTranscriptionResult Cancelled() => new(MediaTranscriptionResultStatus.CANCELLED, string.Empty, string.Empty, MediaJobErrorCode.CANCELLED);
}