# NativeQuicTransportOptions

URL: https://www.caprid.com/docs/reference/typescript/caprid/relay-quic/interfaces/nativequictransportoptions/

Defined in: [relay-quic/src/index.ts:27](https://github.com/caprids/relay-sdks/blob/main/ts/packages/relay-quic/src/index.ts#L27)

What [nativeQuicTransport](https://www.caprid.com/docs/reference/typescript/caprid/relay-quic/functions/nativequictransport/)'s dials trust, how many streams they let the relay open, and where they write qlog.
With neither trust option, a dial trusts the platform's roots.

## Properties

### anticipatedConcurrentIncomingUnidirectionalStreams?

```ts
anticipatedConcurrentIncomingUnidirectionalStreams?: number;
```

Defined in: [relay-quic/src/index.ts:49](https://github.com/caprids/relay-sdks/blob/main/ts/packages/relay-quic/src/index.ts#L49)

How many unidirectional streams the relay may have open to this connection at once: the MAX_STREAMS credit the
connection grants (RFC 9000 §4.6), an integer from 1 to 65535; 1000 when absent.

The relay delivers each group of a track on a stream of its own, so a voice track at 50 frames a second takes 50
streams a second, and the credit for each closed stream returns over this end's uplink. 1000 is a 20 s stall of
that uplink on one such track; quinn's own default, 100, starved a subscriber whose upload queued its uplink for
2 s. quinn sets aside an entry per allowed stream up front, which is the cost of a higher value. Unlike
WebTransport's option of the same name, which is a hint the browser may round up, this is the exact limit.

***

### ca?

```ts
ca?: 
  | string
  | Uint8Array<ArrayBufferLike>
  | readonly (string | Uint8Array<ArrayBufferLike>)[];
```

Defined in: [relay-quic/src/index.ts:32](https://github.com/caprids/relay-sdks/blob/main/ts/packages/relay-quic/src/index.ts#L32)

Extra trust anchors, PEM encoded, added to the platform's roots: one string or buffer may hold several
certificates.

***

### qlogDir?

```ts
qlogDir?: string;
```

Defined in: [relay-quic/src/index.ts:58](https://github.com/caprids/relay-sdks/blob/main/ts/packages/relay-quic/src/index.ts#L58)

A directory to write a qlog trace of every connection into, one `relay-quic-<ms>-<pid>-<n>.sqlog` file (JSON text
sequences, qlog 0.3) per connection attempt, created if it does not exist. Absent, the `RELAY_QUIC_QLOG_DIR`
environment variable is read when the factory is made; an empty string turns qlog off. Off by default. A trace
holds each packet's number and type, the size of each packet sent, the packets lost, and the RTT and congestion
window as they change; quinn 0.11 logs no frames, so it holds no stream data and no token. A file that cannot be
created is skipped, and the dial goes on.

***

### serverCertificateHashes?

```ts
serverCertificateHashes?: readonly CertificateHash[];
```

Defined in: [relay-quic/src/index.ts:38](https://github.com/caprids/relay-sdks/blob/main/ts/packages/relay-quic/src/index.ts#L38)

Accept exactly the end-entity certificates with these hashes instead of validating a chain, as W3C WebTransport's
`serverCertificateHashes` does. The TLS handshake signature is still verified; the 14-day validity limit browsers
apply is not.
