namespace NATS.Server.JetStream.Publish;

public sealed class PublishOptions
{
    public string? MsgId { get; init; }
    public ulong ExpectedLastSeq { get; init; }
    public ulong ExpectedLastSubjectSeq { get; init; }
    public string? ExpectedLastSubjectSeqSubject { get; init; }

    // Go: Nats-Batch-Id header — identifies which atomic batch this message belongs to.
    public string? BatchId { get; init; }

    // Go: Nats-Batch-Sequence header — 1-based position within the batch.
    public ulong BatchSeq { get; init; }

    // Go: Nats-Batch-Commit header — "1" or "eob" to commit, null/empty to stage only.
    public string? BatchCommit { get; init; }

    // Go: Nats-Expected-Last-Msg-Id header — unsupported inside a batch.
    public string? ExpectedLastMsgId { get; init; }
}
