namespace SeaHaven.Services.Interfaces
{
///
/// Maps work order status between DB strings, API canonical values, and FE display labels.
/// See docs/spikes/status-mapping.md (Gate G2).
///
public interface IWorkOrderStatusMapper
{
/// Normalizes a raw DB/Sync value to API canonical status (enum name).
string NormalizeToCanonical(string? dbStatus);
/// Maps canonical status to Schedule Board display label (StatusDisplay).
string ToDisplay(string canonical, bool isUnassigned = false);
/// True when work order should not be treated as past due.
bool IsTerminal(string canonical);
/// All DB string variants that match a canonical filter value.
IReadOnlyList ExpandCanonicalForFilter(string canonical);
/// Expands multiple canonical filters to distinct DB values for SQL IN clauses.
IReadOnlyList ExpandCanonicalFilters(IEnumerable? canonicalStatuses);
/// Fase 2 write path — persists legacy-compatible string (Blazor/Sync).
string ToStorage(string canonical);
/// Fase 2 write path — FE display label to storage string.
string? FromDisplay(string? statusDisplay);
}
}