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

```ts
type InferDone<R> =
  InferErr<R> extends infer Errors
    ? Errors extends Done<infer D>
      ? D
      : never
    : never;
```

Defined in: [packages/common/src/Result.ts:887](https://github.com/evoluhq/evolu/blob/dd96d79f1dbe9a49fa12ce8e0aa7d3d0177795ca/packages/common/src/Result.ts#L887)

Infers the done value type from a [NextResult](https://evolu.dev/docs/api-reference/common/Result/type-aliases/NextResult).

### Example

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

type ReadResult = NextResult<string, ReadFailedError, number>;

interface ReadFailedError extends Typed<"ReadFailed"> {}

assertType<InferDone<ReadResult>, number>();
```