using MessagePack;
using System.Text.Json.Serialization;
using SVSim.EmulatedEntrypoint.Models.Dtos.Common;
using SVSim.EmulatedEntrypoint.Models.Dtos.Common.Guild;
namespace SVSim.EmulatedEntrypoint.Models.Dtos.Guild;
///
/// Response for POST /guild/invited_guild_list.
/// Each entry is GuildDetail fields + invite_id as flat siblings on the wire.
/// Per spec: client constructs GuildDetailInfo + reads invite_id from the SAME object.
///
[MessagePackObject]
public class GuildInvitedGuildListResponse
{
[JsonPropertyName("list"), Key("list")]
public List List { get; set; } = new();
}
///
/// ReceivedInvite — GuildDetail fields flat-spread + invite_id.
/// invite_id and detail fields are siblings, not nested (per guild-invited_guild_list.md).
///
[MessagePackObject]
public class GuildReceivedInviteDto
{
[JsonPropertyName("guild_id"), Key("guild_id"), JsonConverter(typeof(StringifiedIntConverter))]
public int GuildId { get; set; }
[JsonPropertyName("guild_name"), Key("guild_name")]
public string GuildName { get; set; } = "";
[JsonPropertyName("description"), Key("description")]
public string Description { get; set; } = "";
[JsonPropertyName("guild_emblem_id"), Key("guild_emblem_id"), JsonConverter(typeof(StringifiedLongConverter))]
public long GuildEmblemId { get; set; }
[JsonPropertyName("join_condition"), Key("join_condition"), JsonConverter(typeof(StringifiedIntConverter))]
public int JoinCondition { get; set; }
[JsonPropertyName("activity"), Key("activity"), JsonConverter(typeof(StringifiedIntConverter))]
public int Activity { get; set; }
[JsonPropertyName("member_num"), Key("member_num"), JsonConverter(typeof(StringifiedIntConverter))]
public int MemberNum { get; set; }
[JsonPropertyName("leader_name"), Key("leader_name")]
public string LeaderName { get; set; } = "";
[JsonPropertyName("leader_viewer_id"), Key("leader_viewer_id"), JsonConverter(typeof(StringifiedLongConverter))]
public long LeaderViewerId { get; set; }
/// Invite id — pass to /guild/join (from_invite=true) or /guild/reject_invite.
[JsonPropertyName("invite_id"), Key("invite_id")]
public long InviteId { get; set; }
}