# API Reference
Per-type documentation for `ready-active-safe`.
## Core (always available, `no_std`)
| [`Machine`](machine.md) | Pure function from (mode, event) to `Decision` |
| [`Decision`](decision.md) | Outcome of processing an event: mode change + commands |
| [`ModeChange`](mode_change.md) | A requested transition to a new mode |
| [`Policy`](policy.md) | Determines whether a transition is allowed (`AllowAll`, `DenyAll`) |
| [`LifecycleError`](lifecycle_error.md) | Transition failure errors |
| [Free functions](functions.md) | `stay()`, `transition()`, `ignore()`, `apply_decision()`, `apply_decision_checked()` |
| [Macros](macros.md) | `assert_transitions_to!`, `assert_stays!`, `assert_emits!` |
## Time (feature `time`)
| [`Clock`](clock.md) | Trait: a source of monotonic time |
| [`Instant`](instant.md) | Nanosecond-resolution monotonic instant |
| [`Deadline`](deadline.md) | An expiration point expressed as an `Instant` |
| [`ManualClock`](manual_clock.md) | Deterministic clock for tests and simulation |
| [`SystemClock`](system_clock.md) | Monotonic wall clock (requires `std`) |
## Runtime (feature `runtime`)
| [`Runner`](runner.md) | Owns the current mode and feeds events into a `Machine` |
## Journal (feature `journal`)
| [`TransitionRecord`](transition_record.md) | A record of one processed event |
| [`InMemoryJournal`](in_memory_journal.md) | In-memory journal with recording and replay |
| [`ReplayError`](replay_error.md) | Errors from deterministic replay (`ReplayMismatch`) |