# `A2A.Types`
[🔗](https://github.com/lukaszsamson/a2a_ex/blob/main/lib/a2a/types.ex#L1)

Shared helpers for A2A type encoding/decoding.

# `version`
[🔗](https://github.com/lukaszsamson/a2a_ex/blob/main/lib/a2a/types.ex#L6)

```elixir
@type version() :: :v0_3 | :latest
```

# `wire_format`
[🔗](https://github.com/lukaszsamson/a2a_ex/blob/main/lib/a2a/types.ex#L7)

```elixir
@type wire_format() :: :spec_json | :proto_json
```

# `decode_datetime`
[🔗](https://github.com/lukaszsamson/a2a_ex/blob/main/lib/a2a/types.ex#L32)

```elixir
@spec decode_datetime(nil | String.t()) :: DateTime.t() | nil
```

# `drop_raw`
[🔗](https://github.com/lukaszsamson/a2a_ex/blob/main/lib/a2a/types.ex#L46)

```elixir
@spec drop_raw(map(), list()) :: map()
```

# `encode_datetime`
[🔗](https://github.com/lukaszsamson/a2a_ex/blob/main/lib/a2a/types.ex#L42)

```elixir
@spec encode_datetime(nil | DateTime.t()) :: String.t() | nil
```

# `merge_raw`
[🔗](https://github.com/lukaszsamson/a2a_ex/blob/main/lib/a2a/types.ex#L51)

```elixir
@spec merge_raw(map(), map() | nil) :: map()
```

# `put_if`
[🔗](https://github.com/lukaszsamson/a2a_ex/blob/main/lib/a2a/types.ex#L55)

```elixir
@spec put_if(map(), any(), any()) :: map()
```

# `to_int`
[🔗](https://github.com/lukaszsamson/a2a_ex/blob/main/lib/a2a/types.ex#L60)

```elixir
@spec to_int(nil | String.t() | integer()) :: integer() | nil
```

# `version_from_opts`
[🔗](https://github.com/lukaszsamson/a2a_ex/blob/main/lib/a2a/types.ex#L10)

```elixir
@spec version_from_opts(keyword()) :: version()
```

# `wire_format_from_opts`
[🔗](https://github.com/lukaszsamson/a2a_ex/blob/main/lib/a2a/types.ex#L15)

```elixir
@spec wire_format_from_opts(keyword()) :: wire_format()
```

---

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