> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bijection.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Module: data

> Pure data contracts shared by schemas and producers.

Pure data contracts shared by schemas and producers.

## References

### OutputDefinition

Re-exports [OutputDefinition](https://docs.bijection.com/api/modules/server#outputdefinition)

## Type Aliases

### IdentityField

Ƭ **IdentityField**\<`Row`>: `0` extends `1` & `Row` ? `string` : \{ \[K in keyof Row & string]-?: undefined extends Row\[K] ? never : null extends Row\[K] ? never : Row\[K] extends string | number | bigint | boolean | ArrayBuffer ? K : never }\[keyof `Row` & `string`]

#### Type parameters

| Name |
| :- |
| `Row` |

## Functions

### defineOutput

▸ **defineOutput**\<`Row`, `Key`>(`definition`, `declaration?`): [`OutputDefinition`](https://docs.bijection.com/api/modules/server#outputdefinition)\<`Row`, `Key`>

Declare one logical output and its row identity, independently of storage
and executable producers. Importing a contract starts no work.

#### Type parameters

| Name | Type |
| :- | :- |
| `Row` | extends [`Validator`](https://docs.bijection.com/api/modules/values#validator)\<`Record`\<`string`, `any`>, `"required"`, `any`> |
| `Key` | extends readonly [`IdentityField`](https://docs.bijection.com/api/modules/data#identityfield)\<`Row`\[`"type"`]>\[] |

#### Parameters

| Name | Type |
| :- | :- |
| `definition` | `Object` |
| `definition.row` | `Row` |
| `definition.key` | `Key` |
| `declaration?` | `Object` |
| `declaration.reference` | `string` |

#### Returns

[`OutputDefinition`](https://docs.bijection.com/api/modules/server#outputdefinition)\<`Row`, `Key`>

▸ **defineOutput**\<`Fields`, `Key`>(`definition`, `declaration?`): [`OutputDefinition`](https://docs.bijection.com/api/modules/server#outputdefinition)\<[`VObject`](https://docs.bijection.com/api/classes/values.VObject)\<[`ObjectType`](https://docs.bijection.com/api/modules/values#objecttype)\<`Fields`>, `Fields`>, `Key`>

#### Type parameters

| Name | Type |
| :- | :- |
| `Fields` | extends `Record`\<`string`, [`GenericValidator`](https://docs.bijection.com/api/modules/values#genericvalidator)> |
| `Key` | extends readonly [`IdentityField`](https://docs.bijection.com/api/modules/data#identityfield)\<[`ObjectType`](https://docs.bijection.com/api/modules/values#objecttype)\<`Fields`>>\[] |

#### Parameters

| Name | Type |
| :- | :- |
| `definition` | `Object` |
| `definition.row` | `Fields` |
| `definition.key` | `Key` |
| `declaration?` | `Object` |
| `declaration.reference` | `string` |

#### Returns

[`OutputDefinition`](https://docs.bijection.com/api/modules/server#outputdefinition)\<[`VObject`](https://docs.bijection.com/api/classes/values.VObject)\<[`ObjectType`](https://docs.bijection.com/api/modules/values#objecttype)\<`Fields`>, `Fields`>, `Key`>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.