Model-related type definitions for bidirectional streaming.

Defines types and configurations that are central to model providers, including audio configuration that models use to specify their audio processing requirements.

## AudioConfig

```python
class AudioConfig(TypedDict)
```

Defined in: [src/strands/experimental/bidi/types/model.py:13](https://github.com/strands-agents/harness-sdk/blob/main/strands-py/src/strands/experimental/bidi/types/model.py#L13)

Audio configuration for bidirectional streaming models.

Defines common audio parameters supported by bidirectional model providers. All fields are optional to support models that only need specific parameters.

Model providers build this configuration by merging user-provided values with their own defaults. Audio I/O implementations use the stream settings to configure hardware, while model providers apply settings such as voice.

**Attributes**:

-   `input_rate` - Input sample rate in Hz (e.g., 8000, 16000, 24000, 48000)
-   `output_rate` - Output sample rate in Hz (e.g., 8000, 16000, 24000, 48000)
-   `channels` - Number of audio channels (1=mono, 2=stereo)
-   `format` - Audio encoding format
-   `voice` - Voice used for model audio output.

## BidiConnectionConfig

```python
class BidiConnectionConfig(TypedDict)
```

Defined in: [src/strands/experimental/bidi/types/model.py:38](https://github.com/strands-agents/harness-sdk/blob/main/strands-py/src/strands/experimental/bidi/types/model.py#L38)

Declared reconnect timing for a bidirectional model.

Providers declare this so the agent loop can reconnect proactively, before the provider terminates the connection on its own limit. A provider that declares nothing (empty config) keeps reactive-only behavior: no proactive timer, reconnect only after the provider reports a timeout.

All fields are optional. The proactive timer arms only when `restart_after_s` is declared.

**Attributes**:

-   `restart_after_s` - Seconds after a connection is established at which to proactively reconnect. Set it at least ~10s below the provider’s own connection limit: the reconnect may wait briefly for the current turn to finish (aligning the swap to a turn boundary), and that wait plus the swap must complete before the provider’s limit.
-   `auto_reconnect` - Whether the loop reconnects automatically (default True).