# `Bourse.Unified.ContractUnit`
[🔗](https://github.com/ZenHive/bourse/blob/main/lib/bourse/unified/contract_unit.ex#L1)

Applies an authored venue-level contract unit to parsed linear markets.

A provider-published `contract_size` always wins. A missing unit becomes the
authored constant or field only when the venue declared that recipe; unknown
or missing multiplier semantics fail loudly instead of defaulting to one.

# `normalize_market`

```elixir
@spec normalize_market(Bourse.Market.t(), map(), Bourse.Exchange.t()) ::
  Bourse.Market.t()
```

Applies the authored linear contract unit to a parsed market.

---

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