# `Kinda.CodeGen.TypeDecl`
[🔗](https://github.com/beaver-lodge/kinda/blob/main/lib/codegen/type_decl.ex#L1)

A generated type declaration.

Type declarations are projected from the `"records"` entries of a signature
manifest into typed record projections (`Kinda.CodeGen.TypeSpecRef`), and
can be round-tripped to and from manifest maps.

# `t`

```elixir
@type t() :: %Kinda.CodeGen.TypeDecl{
  doc: String.t() | nil,
  name: atom(),
  source_record_name: String.t() | nil,
  typespec: Kinda.CodeGen.TypeSpecRef.t()
}
```

# `from_manifest`

```elixir
@spec from_manifest(map()) :: t()
```

# `from_record_manifest`

```elixir
@spec from_record_manifest(map()) :: [t()]
```

# `from_signature_manifest`

```elixir
@spec from_signature_manifest(map() | nil) :: [t()]
```

# `to_manifest`

```elixir
@spec to_manifest(t()) :: map()
```

---

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