namespace SVSim.EmulatedEntrypoint.Services;
///
/// Single primitive for "something happened that mission/achievement progress should react to."
/// Emitters at battle/story finish call this with the FULL list of event keys their event matches
/// at all granularity levels (broad → narrow). Service does dumb exact-match against catalog.
///
public interface IMissionProgressService
{
/// Viewer the event applies to.
/// Broad-to-narrow keys. Example: a swordcraft ranked win
/// passes ["ranked_win", "ranked_win:swordcraft"]. The order doesn't matter for counter
/// increments (each key gets its own counter) but the order is the conventional one used
/// by emitters for readability.
/// Count delta per key (default 1).
Task RecordEventAsync(long viewerId, IReadOnlyList eventKeys, int delta = 1, CancellationToken ct = default);
}