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

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

A signal indicating normal completion of a pull-based protocol.

This is not a failure — it is a control signal that carries an optional
"done" value (often `void`, but can be a final summary or leftover).

Inspired by JavaScript's `IteratorResult` where `{ done: true }` signals
completion.

### Example

```ts

const withoutValue = done();
const withValue = done(42);
assertType<Done<void>, typeof withoutValue>();
assertType<Done<number>, typeof withValue>();
assertEqual(withoutValue, { type: "Done", done: undefined });
assertEqual(withValue, { type: "Done", done: 42 });
```

## Extends

- [`Typed`](https://evolu.dev/docs/api-reference/common/Type/interfaces/Typed)\<`"Done"`\>

## Properties

<a id="done"></a>

### done

```ts
readonly done: D;
```

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

---

<a id="type"></a>

### type

```ts
readonly type: "Done";
```

Defined in: [packages/common/src/Type.ts:11986](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Type.ts#L11986)

#### Inherited from

[`Typed`](https://evolu.dev/docs/api-reference/common/Type/interfaces/Typed).[`type`](https://evolu.dev/docs/api-reference/common/Type/interfaces/Typed#type)