namespace Baya.Domain.Entities.Payouts;

/// <summary>
/// The closed <c>nurse_payout_batches.status</c> code set. A batch opens in <see cref="Draft"/> (materialized
/// but not yet submitted to the bank), moves to <see cref="Processing"/> when the transfers are submitted, and
/// ends <see cref="Completed"/> (all paid), <see cref="PartiallyFailed"/> (some rejected — retryable), or
/// <see cref="Failed"/> (the whole submit failed). Persisted as these stable snake_case codes; the allowed edges
/// live in <see cref="PayoutBatchTransitions"/>.
/// </summary>
public static class PayoutBatchStatus
{
    /// <summary>Materialized (payouts + links built) but not yet submitted — the admin preview state.</summary>
    public const string Draft = "draft";

    /// <summary>The bank submit is in flight / partially applied.</summary>
    public const string Processing = "processing";

    /// <summary>At least one payout was rejected by the rail; the rest paid. Retry the failed rows.</summary>
    public const string PartiallyFailed = "partially_failed";

    /// <summary>Every payout in the batch was paid. Terminal.</summary>
    public const string Completed = "completed";

    /// <summary>The whole submit failed (e.g. the rail was unreachable / a closed day). Terminal for the run.</summary>
    public const string Failed = "failed";
}
