using MessagePack;
using System.Text.Json.Serialization;
namespace SVSim.EmulatedEntrypoint.Models.Dtos.Internal;
///
/// Wraps responses in the format the official game client expects, with a header section for additional data. Not for manual endpoint use, this wrapping is done automatically in a middleware.
///
[MessagePackObject]
public class DataWrapper
{
///
/// Wire-shape projection of the response envelope headers. The middleware builds a
/// strongly-typed POCO and runs it through the same STJ +
/// ConvertJsonTreeToPlainObject pipeline that the controller's response goes
/// through, yielding this dict with absent keys for null-valued optional fields.
/// Typed as (not ) because
/// the projected shape is fully known — only the per-key value type varies. Direct
/// assignment of the typed POCO would let MessagePack's contractless resolver emit
/// "key":null for nullables, which the client treats as "key present" via
/// Keys.Contains (see NetworkTask.isResourceVersionUp for the
/// load-bearing case).
///
[JsonPropertyName("data_headers")]
[Key("data_headers")]
public Dictionary DataHeaders { get; set; } = new();
///
/// The response data from the endpoint.
///
[JsonPropertyName("data")]
[Key("data")]
public object Data { get; set; } = new();
}