using System.Text.Json.Serialization; namespace RblxTool.Models; public sealed class AccountSummary { [JsonPropertyName("id")] public string Id { get; set; } = string.Empty; [JsonPropertyName("label")] public string Label { get; set; } = string.Empty; [JsonPropertyName("user_id")] public ulong UserId { get; set; } [JsonPropertyName("username")] public string Username { get; set; } = string.Empty; [JsonPropertyName("display_name")] public string DisplayName { get; set; } = string.Empty; [JsonPropertyName("method")] public string Method { get; set; } = "Cookie"; [JsonPropertyName("added_at")] public ulong AddedAt { get; set; } [JsonPropertyName("last_used")] public ulong LastUsed { get; set; } [JsonPropertyName("authenticated")] public bool Authenticated { get; set; } } public sealed class AccountOverview { [JsonPropertyName("user_id")] public ulong UserId { get; set; } [JsonPropertyName("username")] public string Username { get; set; } = string.Empty; [JsonPropertyName("robux")] public long Robux { get; set; } [JsonPropertyName("friends")] public ulong Friends { get; set; } [JsonPropertyName("followers")] public ulong Followers { get; set; } [JsonPropertyName("collectibles")] public ulong Collectibles { get; set; } [JsonPropertyName("total_rap")] public ulong TotalRap { get; set; } } public sealed class EngineMetrics { [JsonPropertyName("requests")] public ulong Requests { get; set; } [JsonPropertyName("retries")] public ulong Retries { get; set; } [JsonPropertyName("rate_limited")] public ulong RateLimited { get; set; } [JsonPropertyName("failures")] public ulong Failures { get; set; } [JsonPropertyName("bytes_in")] public ulong BytesIn { get; set; } [JsonPropertyName("avg_latency_ms")] public double AverageLatencyMs { get; set; } } public sealed class JobEvent { [JsonPropertyName("type")] public string Type { get; set; } = string.Empty; [JsonPropertyName("level")] public string? Level { get; set; } [JsonPropertyName("message")] public string? Message { get; set; } [JsonPropertyName("job")] public string? Job { get; set; } [JsonPropertyName("scanned")] public ulong Scanned { get; set; } [JsonPropertyName("matched")] public ulong Matched { get; set; } [JsonPropertyName("purchased")] public ulong Purchased { get; set; } [JsonPropertyName("elapsed_ms")] public ulong ElapsedMs { get; set; } [JsonPropertyName("done")] public bool Done { get; set; } [JsonPropertyName("id")] public ulong Id { get; set; } [JsonPropertyName("name")] public string? Name { get; set; } [JsonPropertyName("price")] public ulong Price { get; set; } [JsonPropertyName("creator")] public string? Creator { get; set; } [JsonPropertyName("collectible")] public bool Collectible { get; set; } [JsonPropertyName("success")] public bool Success { get; set; } [JsonPropertyName("detail")] public string? Detail { get; set; } [JsonPropertyName("members")] public ulong Members { get; set; } [JsonPropertyName("public_entry")] public bool PublicEntry { get; set; } } public sealed class JobPoll { [JsonPropertyName("ok")] public bool Ok { get; set; } [JsonPropertyName("events")] public List Events { get; set; } = new(); [JsonPropertyName("done")] public bool Done { get; set; } } public sealed class LoginResult { [JsonPropertyName("ok")] public bool Ok { get; set; } [JsonPropertyName("state")] public string? State { get; set; } [JsonPropertyName("error")] public string? Error { get; set; } [JsonPropertyName("pendingId")] public string? PendingId { get; set; } [JsonPropertyName("mediaType")] public string? MediaType { get; set; } [JsonPropertyName("challengeId")] public string? ChallengeId { get; set; } [JsonPropertyName("challengeType")] public string? ChallengeType { get; set; } [JsonPropertyName("arkoseKey")] public string? ArkoseKey { get; set; } [JsonPropertyName("blob")] public string? Blob { get; set; } [JsonPropertyName("account")] public AccountSummary? Account { get; set; } } public sealed class OauthUrlResult { [JsonPropertyName("ok")] public bool Ok { get; set; } [JsonPropertyName("url")] public string? Url { get; set; } [JsonPropertyName("verifier")] public string? Verifier { get; set; } [JsonPropertyName("state")] public string? State { get; set; } [JsonPropertyName("error")] public string? Error { get; set; } } public sealed class Envelope { [JsonPropertyName("ok")] public bool Ok { get; set; } [JsonPropertyName("data")] public T? Data { get; set; } [JsonPropertyName("error")] public string? Error { get; set; } } public sealed class SweepReport { [JsonPropertyName("scanned")] public ulong Scanned { get; set; } [JsonPropertyName("matched")] public ulong Matched { get; set; } [JsonPropertyName("purchased")] public ulong Purchased { get; set; } [JsonPropertyName("failed")] public ulong Failed { get; set; } [JsonPropertyName("elapsed_ms")] public ulong ElapsedMs { get; set; } } public sealed class HuntReport { [JsonPropertyName("scanned")] public ulong Scanned { get; set; } [JsonPropertyName("ownerless")] public ulong Ownerless { get; set; } [JsonPropertyName("claimable")] public ulong Claimable { get; set; } [JsonPropertyName("claimed")] public ulong Claimed { get; set; } [JsonPropertyName("elapsed_ms")] public ulong ElapsedMs { get; set; } }