using BlueLaminate.Core.CsMoney;
namespace BlueLaminate.C2;
/// A unit of scrape work handed to a worker: one skin+wear, as a search.
/// Opaque id the worker echoes back when posting results.
/// Catalogue skin this job targets.
/// Wear band (skin_conditions row), or null for a whole skin.
/// Free-text market search, e.g. "M4A4 Cyber Security ft".
/// Safety cap on page fetches (60 items each). The worker
/// paginates by walking the float axis, so a skin+wear needs ceil(listings/60) pages.
public sealed record ScrapeJobDto(string JobId, int SkinId, int? ConditionId, string Search, int MaxPages);
/// A worker's results for a claimed job: the listings it scraped.
/// All sell-order items gathered across pages (raw cs.money shape).
/// How many pages the worker fetched.
/// Why it stopped. "completed" = full sweep (authoritative);
/// anything else (fetch-cap / challenged / stuck-float-tie) is partial.
public sealed record ScrapeResultDto(List Items, int Pages, string? StoppedReason);