[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [local‑first/Protocol](https://evolu.dev/docs/api-reference/common/local-first/Protocol) › ProtocolMessageBuffer

Defined in: [packages/common/src/local-first/Protocol.ts:586](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/local-first/Protocol.ts#L586)

Mutable builder for constructing [ProtocolMessage](https://evolu.dev/docs/api-reference/common/local-first/Protocol/type-aliases/ProtocolMessage) respecting size
limits.

## Properties

<a id="addmessage"></a>

### addMessage

```ts
readonly addMessage: (message: EncryptedCrdtMessage) => void;
```

Defined in: [packages/common/src/local-first/Protocol.ts:589](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/local-first/Protocol.ts#L589)

### addRange

```ts
readonly addRange: (range:
  | FingerprintRange
  | SkipRange
  | TimestampsRangeWithTimestampsBuffer) => void;
```

Defined in: [packages/common/src/local-first/Protocol.ts:598](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/local-first/Protocol.ts#L598)

### canAddMessage

```ts
readonly canAddMessage: (message: EncryptedCrdtMessage) => boolean;
```

Defined in: [packages/common/src/local-first/Protocol.ts:587](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/local-first/Protocol.ts#L587)

### canAddTimestampsRangeAndMessage

```ts
readonly canAddTimestampsRangeAndMessage: (timestamps: TimestampsBuffer, message:
  | EncryptedCrdtMessage
  | null) => boolean;
```

Defined in: [packages/common/src/local-first/Protocol.ts:593](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/local-first/Protocol.ts#L593)

### canSplitRange

```ts
readonly canSplitRange: () => boolean;
```

Defined in: [packages/common/src/local-first/Protocol.ts:591](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/local-first/Protocol.ts#L591)

### getSize

```ts
readonly getSize: () => number & Brand<"Int"> & Brand<"NonNegative"> & Brand<"Positive">;
```

Defined in: [packages/common/src/local-first/Protocol.ts:603](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/local-first/Protocol.ts#L603)

### unwrap

```ts
readonly unwrap: () => ProtocolMessage;
```

Defined in: [packages/common/src/local-first/Protocol.ts:602](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/local-first/Protocol.ts#L602)