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

```ts
type OnlyDone<E> = Extract<E, Done<any>>;
```

Defined in: [packages/common/src/Result.ts:868](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Result.ts#L868)

Extracts only [Done](https://evolu.dev/docs/api-reference/common/Result/interfaces/Done) from an error union.

Useful for pull-based protocols where completion is encoded in the error
channel (for example [NextResult](https://evolu.dev/docs/api-reference/common/Result/type-aliases/NextResult)).

### Example

```ts
import {
  assertType,
  type Done,
  type OnlyDone,
  type Typed,
} from "@evolu/common";

type Errors = ReadFailedError | Done<number>;

interface ReadFailedError extends Typed<"ReadFailed"> {}

assertType<Done<number>, OnlyDone<Errors>>();
```