grid-billing 0.10.0

Role-neutral grid invoice calculation: NNE/KA/MMM/MSB (PIDs 31001/31002/31005/31006/31009/31011) — used by netzbilanzd (NB) and invoicd (LF selbstausstellen). §14a ToU HT/NT. Zero I/O, no float money.
Documentation
//! Error types for `mako-nne`.

/// Errors returned by the billing calculation functions.
#[derive(Debug, Clone, thiserror::Error)]
pub enum BillingError {
    /// The billing input contains an invalid or inconsistent value.
    #[error("invalid billing input: {reason}")]
    InvalidInput {
        /// Human-readable explanation. Dynamic `String` so callers can include runtime context.
        reason: String,
    },

    /// Monetary precision overflow — the calculated amount exceeds `i64` range.
    ///
    /// This can only happen for unrealistically large billing amounts (> ~92 million EUR).
    /// `input_value` carries the `Decimal` that caused the overflow so callers can log it.
    #[error("monetary overflow: amount {input_value:?} too large for EuroAmount representation")]
    MonetaryOverflow {
        /// The value that caused the overflow, if available.
        input_value: Option<rust_decimal::Decimal>,
    },
}