import Foundation
import Recording

/// A transcribing service with a configurable delay, output, and failure.
@MainActor
final class TranscribingMock: Transcribing {
    
    // MARK: Properties

    /// The duration of the simulated transcription work.
    var delay: Duration = .seconds(0.2)

    /// The error the service throws, or `nil` when it should succeed.
    var error: Error?

    /// The transcription the service returns.
    var transcription = "This is a mocked transcription."
    
    // MARK: Methods

    func callAsFunction(
        _ audio: URL,
        locale: Locale
    ) async throws -> Transcription {
        try await Task.sleep(for: delay)

        if let error {
            throw error
        }

        return .init(text: transcription)
    }

}
