[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) › createProtocolMessageBuffer

```ts
function createProtocolMessageBuffer(ownerId: string & Brand<"Id"> & Brand<"OwnerId">, options: {
  rangesMaxSize?: number & Brand<"Int"> & Brand<"Between3000-100000">;
  totalMaxSize?: number & Brand<"Int"> & Brand<"Between1000000-100000000">;
  version?: number & Brand<"Int"> & Brand<"NonNegative">;
} &
  | {
  messageType: 0;
  subscriptionFlag?: SubscriptionFlag | undefined;
  writeKey?: Uint8Array<ArrayBufferLike> & Brand<"Entropy"> & Brand<"Length16"> & Brand<"OwnerWriteKey">;
}
  | {
  errorCode: ProtocolErrorCode;
  messageType: 1;
}
  | {
  messageType: 2;
}): ProtocolMessageBuffer;
```

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