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

```ts
type NextResult<A, E, D> = Result<A, E | Done<D>>;
```

Defined in: [packages/common/src/Result.ts:461](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Result.ts#L461)

A result for a pull-based protocol with three outcomes.

The consumer requests the next value (e.g. via `next()`), and the producer
responds with one of:

- `Ok<A>` — produced a value
- `Err<Done<D>>` — completed normally with a done value
- `Err<E>` — failed with an error

Inspired by JavaScript's `Iterator.next()`, which returns `{ value, done }`.