using System.Text.Json.Serialization; namespace BlueLaminate.Core.CsMoney; /// /// The subset of a cs.money sell-orders item we persist, parsed from the /// JSON the Python worker scrapes. Decimals are parsed directly (not via double) so /// the full-precision float round-trips exactly into numeric(20,18). /// public sealed class CsMoneyItem { [JsonPropertyName("id")] public long Id { get; set; } [JsonPropertyName("asset")] public CsMoneyAsset? Asset { get; set; } [JsonPropertyName("pricing")] public CsMoneyPricing? Pricing { get; set; } [JsonPropertyName("stickers")] public List? Stickers { get; set; } [JsonPropertyName("links")] public CsMoneyLinks? Links { get; set; } } public sealed class CsMoneyAsset { [JsonPropertyName("id")] public long? Id { get; set; } [JsonPropertyName("names")] public CsMoneyNames? Names { get; set; } [JsonPropertyName("isStatTrak")] public bool IsStatTrak { get; set; } [JsonPropertyName("isSouvenir")] public bool IsSouvenir { get; set; } [JsonPropertyName("quality")] public string? Quality { get; set; } [JsonPropertyName("pattern")] public int? Pattern { get; set; } [JsonPropertyName("phase")] public string? Phase { get; set; } [JsonPropertyName("float")] public decimal? Float { get; set; } } public sealed class CsMoneyNames { [JsonPropertyName("short")] public string? Short { get; set; } [JsonPropertyName("full")] public string? Full { get; set; } } public sealed class CsMoneyPricing { [JsonPropertyName("default")] public decimal Default { get; set; } [JsonPropertyName("priceBeforeDiscount")] public decimal? PriceBeforeDiscount { get; set; } [JsonPropertyName("computed")] public decimal? Computed { get; set; } } public sealed class CsMoneyLinks { [JsonPropertyName("inspectLink")] public string? InspectLink { get; set; } } public sealed class CsMoneySticker { [JsonPropertyName("name")] public string? Name { get; set; } }