using System.Text.Json.Serialization; namespace BlueLaminate.Core.SkinLand; /// /// The subset of a skin.land obtained-skins offer we persist, parsed from the /// JSON the Python worker scrapes (the paginated data[] array). Decimals are /// parsed directly (not via double) so the full-precision float round-trips exactly into /// numeric(20,18). skin.land exposes no paint seed / def index, so there's nothing /// to fingerprint a SkinInstance with — the shape is intentionally thin. /// public sealed class SkinLandOffer { [JsonPropertyName("id")] public long Id { get; set; } [JsonPropertyName("item_float")] public decimal? ItemFloat { get; set; } [JsonPropertyName("final_withdrawal_price")] public decimal? FinalWithdrawalPrice { get; set; } [JsonPropertyName("name_tag")] public string? NameTag { get; set; } [JsonPropertyName("item_link")] public string? ItemLink { get; set; } [JsonPropertyName("stickers")] public List? Stickers { get; set; } [JsonPropertyName("skin")] public SkinLandSkin? Skin { get; set; } } public sealed class SkinLandSkin { [JsonPropertyName("id")] public long? Id { get; set; } [JsonPropertyName("name")] public string? Name { get; set; } [JsonPropertyName("url")] public string? Url { get; set; } // the market slug [JsonPropertyName("is_stattrak")] public bool IsStatTrak { get; set; } [JsonPropertyName("is_souvenir")] public bool IsSouvenir { get; set; } } public sealed class SkinLandSticker { [JsonPropertyName("name")] public string? Name { get; set; } }