[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:892](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Result.ts#L892)

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<number, InferDone<ReadResult>>();
```