// worker/handler.go — the worker-side seam. A module process implements
// either Transcriber or Synthesizer (rarely both — stt and tts are
// independent units with independent model weights and restart lifecycles).
// Server dispatches a Method to the matching handler.
package worker

import "context"

// Transcriber — the stt module's contract. Implementations:
//   - the daemon's in-process Stub (built-in stt stub handler, for tests +
//     for the "no models on disk yet" floor; the daemon decides which to wire
//     from config),
//   - a real faster-whisper / vosk process's main (cmd/mavsttd/main.go today
//     ships the Stub handler; production swaps in onnxruntime-backed code in
//     that same main, no worker-package change).
type Transcriber interface {
	Transcribe(ctx context.Context, req TranscribeReq) (TranscribeResp, error)
}

// Synthesizer — the tts module's contract. Mirrors Transcriber (separate
// interface so the two modules can be in separate packages / binaries, and
// so a server asked for the wrong verb refuses cleanly).
type Synthesizer interface {
	Synthesize(ctx context.Context, req SynthesizeReq) (SynthesizeResp, error)
}
