namespace ytLive.Services.Encoder;
///
/// Resolves an absolute path to a usable ffmpeg.exe, downloading it on
/// first use if neither the user's PATH nor the local cache provides one — the
/// encoder's one external dependency is never shipped in the repo (TASK 4 ship
/// step 2; see TASKS.md). Seam so the encoder step and the tests can fake it.
///
public interface IFfmpegLocator
{
///
/// Returns the path to ffmpeg.exe: the first PATH candidate that
/// exists, else the cached copy, else a freshly downloaded one (ffmpeg.exe +
/// its libav DLLs extracted from the pinned BtbN LGPL-shared zip into the
/// tools directory).
///
/// The download/extract produced no usable
/// binary (offline, expired pin, corrupt archive) — recoverable, logged.
Task LocateAsync(CancellationToken cancellationToken = default);
}