namespace MeetingAssistant.Recording; public interface IOfflineTranscriptionBacklog { Task EnqueueAsync(OfflineTranscriptionBacklogItem item, CancellationToken cancellationToken); Task> ListAsync(CancellationToken cancellationToken); Task CompleteAsync(OfflineTranscriptionBacklogItem item, CancellationToken cancellationToken); } public sealed record OfflineTranscriptionBacklogItem( string Id, string AudioPath, string TranscriptPath, string MeetingNotePath, string AssistantContextPath, string SummaryPath, DateTimeOffset StartedAt, DateTimeOffset? InferredEndTime, string LaunchProfileName); public sealed class NoopOfflineTranscriptionBacklog : IOfflineTranscriptionBacklog { public static readonly NoopOfflineTranscriptionBacklog Instance = new(); private NoopOfflineTranscriptionBacklog() { } public Task EnqueueAsync(OfflineTranscriptionBacklogItem item, CancellationToken cancellationToken) { return Task.CompletedTask; } public Task> ListAsync(CancellationToken cancellationToken) { return Task.FromResult>([]); } public Task CompleteAsync(OfflineTranscriptionBacklogItem item, CancellationToken cancellationToken) { return Task.CompletedTask; } }