namespace NeonSprawl.Server.Game.PositionState;
///
/// HTTP JSON body for GET /game/players/{{id}}/position. Consumers should read
/// before interpreting other fields.
///
///
/// Example v1 payload:
///
/// {"schemaVersion":1,"playerId":"dev-local-1","position":{"x":0,"y":0,"z":0},"sequence":0}
///
///
public sealed class PositionStateResponse
{
/// Schema version the server currently emits for this contract; increment when the shape or semantics change.
public const int CurrentSchemaVersion = 1;
/// Contract version; should match when produced by this API.
public int SchemaVersion { get; init; } = CurrentSchemaVersion;
/// Player id (echo of the route for sanity).
public required string PlayerId { get; init; }
/// Authoritative world position.
public required PositionVector Position { get; init; }
/// Monotonic-ish ordering hint for future sync; v1 is always 0.
public ulong Sequence { get; init; }
}