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); }