using System.Text.Json;
using System.Text.Json.Serialization;

namespace CopilotCoordinator.Models;

/// <summary>
/// WebSocket message envelope for all coordinator events.
/// </summary>
public class WsMessage
{
    [JsonPropertyName("type")]
    public string Type { get; set; } = "";

    [JsonPropertyName("data")]
    public JsonElement? Data { get; set; }

    public static string Serialize(string type, object? data = null)
    {
        var msg = new { type, data };
        return JsonSerializer.Serialize(msg);
    }
}

public record KeyboardInfo(string Id, string? Name, DateTime ConnectedAt);
