[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Set](https://evolu.dev/docs/api-reference/common/Set) › NonEmptyReadonlySet

```ts
type NonEmptyReadonlySet<T> = ReadonlySet<T> & Brand<"NonEmpty">;
```

Defined in: [packages/common/src/Set.ts:83](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Set.ts#L83)

A readonly set with at least one element (branded for type safety).

Use [isNonEmptySet](https://evolu.dev/docs/api-reference/common/Set/functions/isNonEmptySet) to narrow from `ReadonlySet`, or use functions like
[addToSet](https://evolu.dev/docs/api-reference/common/Set/functions/addToSet) that return branded non-empty sets.

There is no mutable `NonEmptySet` type because mutable sets can be emptied
after narrowing (via `clear()` or `delete()`), making compile-time guarantees
impossible.