# `PropertyUnitLedger`
[🔗](https://github.com/novasia-estate/property-unit-ledger/blob/main/lib/property_unit_ledger.ex#L1)

Pure event replay for available/reserved/sold/withdrawn property inventory.

Replays input order; never guesses the ordering of conflicting source updates.
Exact duplicate event IDs are idempotent; different payloads with the same ID
are rejected. Expiration requires an explicit event, not the machine clock.
This is an integration component, not a legal sales registry or database lock.

# `apply_event`

Apply a validated event without mutating the prior ledger.

# `due`

Expired reservations at a caller-supplied UTC instant, without changing state.

# `history`

Accepted events in their original processing order.

# `replay`

Replay in input order; return all rejections with zero-based input indices.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
