using MessagePack;
using System.Text.Json.Serialization;
namespace SVSim.EmulatedEntrypoint.Models.Dtos;
///
/// Per-link entry in transition_account_data. Production sends three string fields per
/// entry even though GameStartCheckTask.Parse only reads social_account_type.
/// The extra two are read by adjacent tasks (GetGameDataByTransitionCode,
/// GetGameDataBySocialAccountTask) 窶・kept here so the wire matches prod regardless of
/// which task ends up consuming the payload.
///
[MessagePackObject]
public class TransitionAccountData
{
///
/// The social provider's account id (e.g. SteamID as a string). Sent as string on the wire.
///
[JsonPropertyName("social_account_id")]
[Key("social_account_id")]
public string? SocialAccountId { get; set; }
///
/// Cute/CuteNetworkDefine.ACCOUNT_TYPE enum, **sent as string** on the wire even
/// though it's numeric. GameStartCheckTask.Parse calls .ToInt() on it so
/// LitJson coerces transparently 窶・but matching prod's string form makes us safer against
/// future client paths that might compare it as a literal.
/// 1=GooglePlay, 2=GameCenter, 3=Facebook, 4=DMM, 5=Steam, 6=AppleID.
///
[JsonPropertyName("social_account_type")]
[Key("social_account_type")]
public string? SocialAccountType { get; set; }
///
/// The viewer id this social connection is linked to. Sent as string.
///
[JsonPropertyName("connected_viewer_id")]
[Key("connected_viewer_id")]
public string? ConnectedViewerId { get; set; }
}