# musubi v0.3.0 - API Reference

## Modules

- Store Authoring
  - [Musubi.Child](Musubi.Child.md): Render-time child placeholder sentinel resolved by `Musubi.Resolver` when it appears in store output.
  - [Musubi.Input](Musubi.Input.md): Compile-time DSL entrypoint for Musubi input-object schemas.
  - [Musubi.Socket](Musubi.Socket.md): Socket struct and assign helpers for Musubi runtimes.
  - [Musubi.State](Musubi.State.md): Compile-time DSL entrypoint for Musubi reusable state modules.
  - [Musubi.Store](Musubi.Store.md): Compile-time DSL entrypoint, behaviour contract, and runtime facade for
Musubi store modules.

- Runtime
  - [Musubi.Async](Musubi.Async.md): Async lifecycle API for Musubi stores. Exposes `assign_async/3,4`,
`start_async/3,4`, `cancel_async/2,3`, and `stream_async/3,4`.
  - [Musubi.AsyncResult](Musubi.AsyncResult.md): Three-field struct that tracks the lifecycle of an asynchronously-resolved
socket assignment.
  - [Musubi.Lifecycle](Musubi.Lifecycle.md): Lifecycle hook helpers for Musubi runtime stages.
  - [Musubi.Stream](Musubi.Stream.md): Stream API for Musubi stores.
  - [Musubi.Telemetry](Musubi.Telemetry.md): Telemetry emission helper for Musubi runtime events plus the canonical event
catalog.

- Transport
  - [Musubi.Transport.Channel](Musubi.Transport.Channel.md): Generic Phoenix Channel adapter that mounts any Musubi root store named in
the channel module's allowlist.
  - [Musubi.Transport.ConnectionChannel](Musubi.Transport.ConnectionChannel.md): Phoenix Channel adapter for Musubi sockets with multiple root stores.
  - [Musubi.Transport.Socket](Musubi.Transport.Socket.md): Phoenix socket adapter generated by `use Musubi.Socket`.

- Testing
  - [Musubi.Testing](Musubi.Testing.md): Test entry point for Musubi root stores, analogous to
`Phoenix.LiveViewTest`. Wraps `Musubi.Page.Server.start_link/1` with
test-friendly defaults and exposes the primary assertion surface
(`render/2`).

## Mix Tasks

- Codegen
  - [mix compile.musubi_ts](Mix.Tasks.Compile.MusubiTs.md): Mix compiler that walks every Musubi `state do` module exposed by the
current Mix project and writes one TypeScript bundle file with namespaces
mirroring the Elixir module tree.

