# Interface: ComputedContext\<B, N\>

Defined in: [packages/core/src/records/contract-builder.ts:641](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L641)

What a computed field reads of its record, and the functions it calls. It
can't read `prev`, `versions` or `member`: those are a contract's, since
what a contract reads must be the same on every node.

## Type Parameters

| Type Parameter | Default type |
| ------ | ------ |
| <a id="type-parameter-b"></a> `B` | - |
| <a id="type-parameter-n"></a> `N` *extends* `string` | `string` |

## Properties

| Property | Modifier | Type | Description | Defined in |
| ------ | ------ | ------ | ------ | ------ |
| <a id="property-author"></a> `author` | `readonly` | [`StrExpr`](https://minca.dev/api/core/interfaces/StrExpr.md) | The account that wrote this version | [packages/core/src/records/contract-builder.ts:648](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L648) |
| <a id="property-body"></a> `body` | `readonly` | [`Expr`](https://minca.dev/api/core/type-aliases/Expr.md)\<`B`\> | - | [packages/core/src/records/contract-builder.ts:642](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L642) |
| <a id="property-collection"></a> `collection` | `readonly` | [`StrExpr`](https://minca.dev/api/core/interfaces/StrExpr.md) | - | [packages/core/src/records/contract-builder.ts:646](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L646) |
| <a id="property-createdat"></a> `createdAt` | `readonly` | [`StrExpr`](https://minca.dev/api/core/interfaces/StrExpr.md) | When the record was made, by its creator's clock | [packages/core/src/records/contract-builder.ts:652](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L652) |
| <a id="property-creator"></a> `creator` | `readonly` | [`StrExpr`](https://minca.dev/api/core/interfaces/StrExpr.md) | The account that wrote the record's first version | [packages/core/src/records/contract-builder.ts:650](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L650) |
| <a id="property-has"></a> `has` | `readonly` | (`field`) => [`BoolExpr`](https://minca.dev/api/core/interfaces/BoolExpr.md) | `has(body.note)`: whether a field is there | [packages/core/src/records/contract-builder.ts:669](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L669) |
| <a id="property-hash"></a> `hash` | `readonly` | (`value`) => [`StrExpr`](https://minca.dev/api/core/interfaces/StrExpr.md) | The content id of a value's canonical JSON; of a body, its `bodyHash` | [packages/core/src/records/contract-builder.ts:667](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L667) |
| <a id="property-key"></a> `key` | `readonly` | [`StrExpr`](https://minca.dev/api/core/interfaces/StrExpr.md) | - | [packages/core/src/records/contract-builder.ts:644](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L644) |
| <a id="property-link"></a> `link` | `readonly` | (`rel`) => [`StrExpr`](https://minca.dev/api/core/interfaces/StrExpr.md) | What this record's first link with that role points at, or null | [packages/core/src/records/contract-builder.ts:665](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L665) |
| <a id="property-linked"></a> `linked` | `readonly` | \<`L`\>(`collection`, `rel`) => [`ListExpr`](https://minca.dev/api/core/interfaces/ListExpr.md)\<[`Cited`](https://minca.dev/api/core/interfaces/Cited.md)\<`BodyIn`\<`L`\>\>\> | The records of `collection` that link to this one with role `rel`, current and readable on this node: `linked(reaction, 'on')`. Each has `key`, `author` (the account, else the signing key), `createdAt`, `body` and `links`. Pass the definition, and `rel` is one of its link roles that may point here, and each record's body is typed from its schema. Each lookup runs once per record, however many fields use it. | [packages/core/src/records/contract-builder.ts:663](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L663) |
| <a id="property-links"></a> `links` | `readonly` | [`ListExpr`](https://minca.dev/api/core/interfaces/ListExpr.md)\<`LinkValue`\> | - | [packages/core/src/records/contract-builder.ts:643](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L643) |
| <a id="property-raw"></a> `raw` | `readonly` | \<`T`\>(`cel`) => [`Expr`](https://minca.dev/api/core/type-aliases/Expr.md)\<`T`\> | CEL written by hand, for what the builder doesn't cover. Its type is yours to say | [packages/core/src/records/contract-builder.ts:673](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L673) |
| <a id="property-seq"></a> `seq` | `readonly` | [`IntExpr`](https://minca.dev/api/core/interfaces/IntExpr.md) | - | [packages/core/src/records/contract-builder.ts:645](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L645) |
| <a id="property-updatedat"></a> `updatedAt` | `readonly` | [`StrExpr`](https://minca.dev/api/core/interfaces/StrExpr.md) | When this version was written, by its writer's clock | [packages/core/src/records/contract-builder.ts:654](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L654) |
| <a id="property-when"></a> `when` | `readonly` | \<`R`\>(`test`, `then`, `otherwise`) => `R` | `test ? then : otherwise` | [packages/core/src/records/contract-builder.ts:671](https://github.com/leifriksheim/minca/blob/main/core/src/records/contract-builder.ts#L671) |
