namespace NATS.Server.Monitoring;

/// <summary>
/// Snapshot of a closed client connection for /connz reporting.
/// </summary>
public sealed record ClosedClient
{
    public required ulong Cid { get; init; }
    public string Ip { get; init; } = "";
    public int Port { get; init; }
    public DateTime Start { get; init; }
    public DateTime Stop { get; init; }
    public string Reason { get; init; } = "";
    public string Name { get; init; } = "";
    public string Lang { get; init; } = "";
    public string Version { get; init; } = "";
    public string AuthorizedUser { get; init; } = "";
    public string Account { get; init; } = "";
    public long InMsgs { get; init; }
    public long OutMsgs { get; init; }
    public long InBytes { get; init; }
    public long OutBytes { get; init; }
    public uint NumSubs { get; init; }
    public TimeSpan Rtt { get; init; }
    public string TlsVersion { get; init; } = "";
    public string TlsCipherSuite { get; init; } = "";
    public string TlsPeerCertSubject { get; init; } = "";
    public string MqttClient { get; init; } = "";
    public string JwtIssuerKey { get; init; } = "";
    public string JwtTags { get; init; } = "";
    public string Proxy { get; init; } = "";
}
