# maat-sdk-types

Core type vocabulary for the MAAT game engine.

This crate is a Layer-2 leaf in the engine's dependency graph — it
holds the newtypes (`EntityId`, `SeatId`, `PlayerId`, `PoolId`),
trait-data structs (`MovableData`, `TangibleData`, `OwnableData`,
`QuantifiedData`, etc.), event variants (`GameEvent::*`), entity
blueprints, and the typed-IR predicate vocabulary that the engine
and every plugin share.

Plugin authors normally consume this crate via the umbrella
[`maat`](https://crates.io/crates/maat) facade rather than depending
on it directly.

## Features

- `serde` — enables `serde::Serialize` / `Deserialize` on the
  type surface. Required for snapshot persistence and wire
  encoding.
- `wire` — pulls `postcard` for the binary wire format.
- `schema` — pulls `utoipa` for OpenAPI generation.

## Status

Pre-1.0. The type surface evolves with the engine; check the
engine repo's `docs/architecture/KEY_TYPES.md` and
`docs/architecture/TRAITS.md` for current shape.

## Links

- Engine: [github.com/williamweatherholtz/MAAT](https://github.com/williamweatherholtz/MAAT)

## License

Dual MIT or Apache-2.0.
