Replay-safe settlement state transitions for one metered renewal window.
Summary
Functions
@spec ensure_attempt(Accrue.Billing.MeteredRenewal.t(), String.t()) :: {:ok, Accrue.Billing.MeteredChargeAttempt.t()} | {:error, term()}
@spec get(Ecto.UUID.t()) :: Accrue.Billing.MeteredChargeAttempt.t() | nil
@spec mark_awaiting_payment_method(Accrue.Billing.MeteredChargeAttempt.t(), term()) :: {:ok, Accrue.Billing.MeteredChargeAttempt.t()} | {:error, term()}
@spec mark_failed_exhausted( Accrue.Billing.MeteredChargeAttempt.t(), term(), Accrue.Billing.PaymentMethod.t() | nil ) :: {:ok, Accrue.Billing.MeteredChargeAttempt.t()} | {:error, term()}
@spec mark_paid( Accrue.Billing.MeteredChargeAttempt.t(), map(), Accrue.Billing.PaymentMethod.t() | nil ) :: {:ok, Accrue.Billing.MeteredChargeAttempt.t()} | {:error, term()}
@spec mark_retryable( Accrue.Billing.MeteredChargeAttempt.t(), term(), Accrue.Billing.PaymentMethod.t() | nil ) :: {:ok, Accrue.Billing.MeteredChargeAttempt.t()} | {:error, term()}