[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:580](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/local-first/Protocol.ts#L580)

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:583](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/local-first/Protocol.ts#L583)

### addRange

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

Defined in: [packages/common/src/local-first/Protocol.ts:592](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/local-first/Protocol.ts#L592)

### canAddMessage

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

Defined in: [packages/common/src/local-first/Protocol.ts:581](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/local-first/Protocol.ts#L581)

### canAddTimestampsRangeAndMessage

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

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

### canSplitRange

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

Defined in: [packages/common/src/local-first/Protocol.ts:585](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/local-first/Protocol.ts#L585)

### getSize

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

Defined in: [packages/common/src/local-first/Protocol.ts:597](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/local-first/Protocol.ts#L597)

### unwrap

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

Defined in: [packages/common/src/local-first/Protocol.ts:596](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/local-first/Protocol.ts#L596)