> ## 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: models

> Reference for the bijection/models entry point.

## Classes

* [VFile](/api/classes/models.VFile)

## References

### defineContract

Re-exports [defineContract](/api/modules/server#definecontract)

***

### ModelContract

Re-exports [ModelContract](/api/modules/server#modelcontract)

***

### ModelImplementation

Re-exports [ModelImplementation](/api/modules/server#modelimplementation)

***

### ModelBindings

Re-exports [ModelBindings](/api/modules/server#modelbindings)

***

### BoundModel

Re-exports [BoundModel](/api/modules/server#boundmodel)

***

### defineModelProvider

Re-exports [defineModelProvider](/api/modules/server#definemodelprovider)

***

### ModelDefinition

Re-exports [ModelDefinition](/api/modules/server#modeldefinition)

***

### ModelSpecification

Re-exports [ModelSpecification](/api/modules/server#modelspecification)

***

### ModelEvaluation

Re-exports [ModelEvaluation](/api/modules/server#modelevaluation)

***

### ModelCall

Re-exports [ModelCall](/api/modules/server#modelcall)

***

### ModelProvider

Re-exports [ModelProvider](/api/modules/server#modelprovider)

***

### ModelProviderRequest

Re-exports [ModelProviderRequest](/api/modules/server#modelproviderrequest)

***

### ModelSampling

Re-exports [ModelSampling](/api/modules/server#modelsampling)

***

### ModelInvocation

Re-exports [ModelInvocation](/api/modules/server#modelinvocation)

***

### modelValues

Re-exports [modelValues](/api/modules/server#modelvalues)

***

### ModelSemantics

Re-exports [ModelSemantics](/api/modules/server#modelsemantics)

***

### ModelSemanticRule

Re-exports [ModelSemanticRule](/api/modules/server#modelsemanticrule)

## Type Aliases

### ProgramReference

Ƭ **ProgramReference**: `Object`

Not exported: an exported type refers to it.

#### Type declaration

| Name | Type |
| :- | :- |
| `artifactId` | `string` |
| `source` | [`SourceRevision`](/api/modules/browser#sourcerevision) \| `null` |

***

### ModelArtifactSource

Ƭ **ModelArtifactSource**: `Object`

#### Type declaration

| Name | Type |
| :- | :- |
| `kind` | `"model_run"` |
| `runId` | `string` |
| `digest` | `string` |
| `program` | [`ProgramReference`](/api/modules/models#programreference) |
| `revision` | `string` |

***

### ModelArtifactSpecification

Ƭ **ModelArtifactSpecification**: `Object`

#### Type declaration

| Name | Type | Description |
| :- | :- | :- |
| `format` | `"bijection.model-artifact.v1"` | - |
| `name` | `string` | - |
| `kind` | `"parameters"` \| `"calibration"` \| `"evaluation"` | - |
| `payload` | `string` | Exact canonical payload bytes; native validation checks their SHA-256. |
| `digest` | `string` | - |

***

### ModelArtifact

Ƭ **ModelArtifact**\<`T`>: `Object`

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends [`Value`](/api/modules/values#value) = [`Value`](/api/modules/values#value) |

#### Type declaration

| Name | Type | Description |
| :- | :- | :- |
| `specification` | `Readonly`\<[`ModelArtifactSpecification`](/api/modules/models#modelartifactspecification)> | - |
| `value` | `T` | Fresh exact values; mutating an accessed value cannot change the artifact. |

***

### ModelRunSummary

Ƭ **ModelRunSummary**: `Object`

#### Type declaration

| Name | Type |
| :- | :- |
| `runId` | `string` |
| `model` | `string` |
| `version` | `string` |
| `execution` | [`ScenarioReport`](/api/modules/scenarios#scenarioreport)\[`"execution"`] |
| `deadline` | `string` |

***

### ModelInspection

Ƭ **ModelInspection**: `Object`

#### Type declaration

| Name | Type |
| :- | :- |
| `runId` | `string` |
| `specification` | [`ModelSpecification`](/api/modules/server#modelspecification) |
| `input` | [`Value`](/api/modules/values#value) \| `null` |
| `output` | [`Value`](/api/modules/values#value) \| `null` |
| `available` | `boolean` |
| `report` | [`ScenarioReport`](/api/modules/scenarios#scenarioreport) |
| `reuse` | `string` \| `null` |
| `reusedCalls` | readonly \{ `path`: `string` ; `runId`: `string`  }\[] |

***

### Requirements

Ƭ **Requirements**: `Record`\<`string`, [`ModelContract`](/api/modules/server#modelcontract)\<`any`, `any`>>

Not exported: an exported type refers to it.

***

### Calls

Ƭ **Calls**\<`R`>: \{ \[K in keyof R]: R\[K] extends ModelContract\<infer I, infer O> ? Function : never }

Not exported: an exported type refers to it.

#### Type parameters

| Name | Type |
| :- | :- |
| `R` | extends [`Requirements`](/api/modules/models#requirements) |

***

### ModelProgramItem

Ƭ **ModelProgramItem**\<`R`>: `Object`

Calls one `ctx.map` item makes; their keys are scoped to that item.

#### Type parameters

| Name | Type |
| :- | :- |
| `R` | extends [`Requirements`](/api/modules/models#requirements) |

#### Type declaration

| Name | Type |
| :- | :- |
| `models` | [`Calls`](/api/modules/models#calls)\<`R`> |

***

### ModelProgramContext

Ƭ **ModelProgramContext**\<`R`, `P`>: [`GenericQueryCtx`](/api/interfaces/server.GenericQueryCtx)\<[`GenericDataModel`](/api/modules/server#genericdatamodel)> & \{ `models`: [`Calls`](/api/modules/models#calls)\<`R`> ; `parameters`: `Readonly`\<[`Infer`](/api/modules/values#infer)\<[`AsObjectValidator`](/api/modules/values#asobjectvalidator-2)\<`P`>>> ; `map`: \<T, U>(`group`: `string`, `items`: readonly `T`\[], `options`: \{ `key`: (`item`: `T`) => `string`  }, `evaluate`: (`item`: `T`, `scope`: [`ModelProgramItem`](/api/modules/models#modelprogramitem)\<`R`>) => `Promise`\<`U`>) => `Promise`\<`U`\[]>  }

#### Type parameters

| Name | Type |
| :- | :- |
| `R` | extends [`Requirements`](/api/modules/models#requirements) |
| `P` | extends [`PropertyValidators`](/api/modules/values#propertyvalidators) = \{} |

***

### Call

Ƭ **Call**: `Object`

Not exported: an exported type refers to it.

#### Type declaration

| Name | Type |
| :- | :- |
| `key` | `string` |
| `model` | `string` |
| `input` | [`Value`](/api/modules/values#value) |

***

### ModelReference

Ƭ **ModelReference**\<`Input`, `Output`>: `Object`

A generated capability handle. The selected release owns its implementation.

#### Type parameters

| Name |
| :- |
| `Input` |
| `Output` |

#### Type declaration

| Name | Type | Description |
| :- | :- | :- |
| `format` | `"bijection.model.v1"` | - |
| `name` | `string` | - |
| `input` | [`ValidatorJSON`](/api/modules/values#validatorjson) | - |
| `output` | [`ValidatorJSON`](/api/modules/values#validatorjson) | - |
| `_input?` | (`value`: `Input`) => `Input` | Type information only; absent at runtime. |
| `_output?` | `Output` | Type information only; absent at runtime. |

***

### SimulationFactor

Ƭ **SimulationFactor**: `Object`

#### Type declaration

| Name | Type |
| :- | :- |
| `factor` | `string` |
| `entity` | `string` |
| `atMs` | `number` |
| `draw?` | `number` |

## Variables

### t

• `Const` **t**: `Readonly`\<\{ `ref`: \<TableName>(`tableName`: `TableName`) => [`VId`](/api/classes/values.VId)\<[`GenericId`](/api/modules/values#genericid)\<`TableName`>, `"required"`> = v.id; `quantity`: \<Unit, Scale>(`unit`: `Unit`, `scale`: `Scale`) => [`VObject`](/api/classes/values.VObject)\<\{ `unit`: `Unit` ; `amount`: `bigint` ; `scale`: `Scale`  }, \{ `amount`: [`VInt64`](/api/classes/values.VInt64)\<`bigint`, `"required"`> ; `unit`: [`VLiteral`](/api/classes/values.VLiteral)\<`Unit`, `"required"`> ; `scale`: [`VLiteral`](/api/classes/values.VLiteral)\<`Scale`, `"required"`>  }, `"required"`, `"unit"` | `"amount"` | `"scale"`> ; `interval`: () => [`VObject`](/api/classes/values.VObject)\<\{ `kind`: `"interval"` ; `startMs`: `bigint` ; `endMs`: `bigint`  }, \{ `kind`: [`VLiteral`](/api/classes/values.VLiteral)\<`"interval"`, `"required"`> ; `startMs`: [`VInt64`](/api/classes/values.VInt64)\<`bigint`, `"required"`> ; `endMs`: [`VInt64`](/api/classes/values.VInt64)\<`bigint`, `"required"`>  }, `"required"`, `"kind"` | `"startMs"` | `"endMs"`> ; `forecast`: \<V>(`value`: `V`) => [`VObject`](/api/classes/values.VObject)\<[`Expand`](/api/modules/server#expand)\<\{ \[Property in "value"]?: Exclude\<Infer\<Object\[Property]>, undefined> } & \{ \[Property in "kind" | "value" | "horizon"]: Infer\<Object\[Property]> }>, \{ `kind`: [`VLiteral`](/api/classes/values.VLiteral)\<`"predicted"`, `"required"`> ; `horizon`: [`VObject`](/api/classes/values.VObject)\<\{ `kind`: `"interval"` ; `startMs`: `bigint` ; `endMs`: `bigint`  }, \{ `kind`: [`VLiteral`](/api/classes/values.VLiteral)\<`"interval"`, `"required"`> ; `startMs`: [`VInt64`](/api/classes/values.VInt64)\<`bigint`, `"required"`> ; `endMs`: [`VInt64`](/api/classes/values.VInt64)\<`bigint`, `"required"`>  }, `"required"`, `"kind"` | `"startMs"` | `"endMs"`> ; `value`: `V`  }, `"required"`, `"kind"` | `"value"` | `"horizon"` | \`value.$\{V["fieldPaths"]}\` \| ``"horizon.kind"`` \| ``"horizon.startMs"`` \| ``"horizon.endMs"``\> ; `proposal`: \<V\>(`value`: `V`) => [`VObject`](/api/classes/values.VObject)\<[`Expand`](/api/modules/server#expand)\<\{ [Property in "value"]?: Exclude\<Infer\<Object[Property]\>, undefined\> \} & \{ [Property in "kind" \| "value"]: Infer\<Object[Property]\> \}\>, \{ `kind`: [`VLiteral`](/api/classes/values.VLiteral)\<``"proposed"``, ``"required"``\> ; `value`: `V`  \}, ``"required"``, ``"kind"`` \| ``"value"`` \| \`value.$\{V\["fieldPaths"]}\`> ; `history`: \<V>(`record`: `V`) => [`VObject`](/api/classes/values.VObject)\<\{ `observations`: \{ key: string; record: (VNull\<null, "required"> | V)\["type"]; id: string; knownAt: number; validFrom: number; }\[]  }, \{ `observations`: [`VArray`](/api/classes/values.VArray)\<\{ `key`: `string` ; `record`: [`VNull`](/api/classes/values.VNull)\<`null`, `"required"`> | `V`\[`"type"`] ; `id`: `string` ; `knownAt`: `number` ; `validFrom`: `number`  }\[], [`VObject`](/api/classes/values.VObject)\<\{ `key`: `string` ; `record`: [`VNull`](/api/classes/values.VNull)\<`null`, `"required"`> | `V`\[`"type"`] ; `id`: `string` ; `knownAt`: `number` ; `validFrom`: `number`  }, \{ `id`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `key`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `knownAt`: [`VFloat64`](/api/classes/values.VFloat64)\<`number`, `"required"`> ; `validFrom`: [`VFloat64`](/api/classes/values.VFloat64)\<`number`, `"required"`> ; `record`: [`VUnion`](/api/classes/values.VUnion)\<[`VNull`](/api/classes/values.VNull)\<`null`, `"required"`> | `V`\[`"type"`], \[`V`, [`VNull`](/api/classes/values.VNull)\<`null`, `"required"`>], `"required"`, [`VNull`](/api/classes/values.VNull)\<`null`, `"required"`> | `V`\[`"fieldPaths"`]>  }, `"required"`, `"key"` | `"record"` | `"id"` | `"knownAt"` | `"validFrom"` | \`record.$\{(VNull\<null, "required"\> \| V)["fieldPaths"]}\`\>, ``"required"``\>  \}, ``"required"``, ``"observations"``\> ; `series`: \<E, V, Grain\>(`definition`: \{ `entity`: `E` ; `value`: `V` ; `grain`: `Grain`  \}) => [`VObject`](/api/classes/values.VObject)\<\{ `kind`: ``"series"`` ; `points`: [`Expand`](/api/modules/server#expand)\<\{ [Property in "value" \| "entity"]?: Exclude\<Infer\<Object[Property]\>, undefined\> \} & \{ [Property in "value" \| "entity" \| "atMs"]: Infer\<Object[Property]\> \}\>[] ; `grain`: `Grain`  \}, \{ `kind`: [`VLiteral`](/api/classes/values.VLiteral)\<``"series"``, ``"required"``\> ; `grain`: [`VLiteral`](/api/classes/values.VLiteral)\<`Grain`, ``"required"``\> ; `points`: [`VArray`](/api/classes/values.VArray)\<[`Expand`](/api/modules/server#expand)\<\{ [Property in "value" \| "entity"]?: Exclude\<Infer\<Object[Property]\>, undefined\> \} & \{ [Property in "value" \| "entity" \| "atMs"]: Infer\<Object[Property]\> \}\>[], [`VObject`](/api/classes/values.VObject)\<[`Expand`](/api/modules/server#expand)\<\{ [Property in "value" \| "entity"]?: Exclude\<Infer\<Object[Property]\>, undefined\> \} & \{ [Property in "value" \| "entity" \| "atMs"]: Infer\<Object[Property]\> \}\>, \{ `entity`: `E` = definition.entity; `atMs`: [`VInt64`](/api/classes/values.VInt64)\<`bigint`, ``"required"``\> ; `value`: `V` = definition.value \}, ``"required"``, ``"value"`` \| ``"entity"`` \| ``"atMs"`` \| \`value.$\{V\["fieldPaths"]}\` | \`entity.$\{E["fieldPaths"]}\`\>, ``"required"``\>  \}, ``"required"``, ``"kind"`` \| ``"points"`` \| ``"grain"``\> ; `samples`: \<V\>(`value`: `V`) => [`VObject`](/api/classes/values.VObject)\<\{ `kind`: ``"samples"`` ; `draws`: [`Expand`](/api/modules/server#expand)\<\{ [Property in "value"]?: Exclude\<Infer\<Object[Property]\>, undefined\> \} & \{ [Property in "value" \| "sample"]: Infer\<Object[Property]\> \}\>[]  \}, \{ `kind`: [`VLiteral`](/api/classes/values.VLiteral)\<``"samples"``, ``"required"``\> ; `draws`: [`VArray`](/api/classes/values.VArray)\<[`Expand`](/api/modules/server#expand)\<\{ [Property in "value"]?: Exclude\<Infer\<Object[Property]\>, undefined\> \} & \{ [Property in "value" \| "sample"]: Infer\<Object[Property]\> \}\>[], [`VObject`](/api/classes/values.VObject)\<[`Expand`](/api/modules/server#expand)\<\{ [Property in "value"]?: Exclude\<Infer\<Object[Property]\>, undefined\> \} & \{ [Property in "value" \| "sample"]: Infer\<Object[Property]\> \}\>, \{ `sample`: [`VString`](/api/classes/values.VString)\<`string`, ``"required"``\> ; `value`: `V`  \}, ``"required"``, ``"value"`` \| ``"sample"`` \| \`value.$\{V\["fieldPaths"]}\`>, `"required"`>  }, `"required"`, `"kind"` | `"draws"`> ; `point`: (`options`: `Partial`\<`AppGeometryDeclaration`> & \{ `profile?`: `"wgs84-2d-linear-sphere-v1"`  }) => [`Validator`](/api/modules/values#validator)\<[`Point`](/api/modules/values#point), `"required"`, `"type"` | `"coordinates"`> ; `polygon`: (`options`: `Partial`\<`AppGeometryDeclaration`> & \{ `profile?`: `"wgs84-2d-linear-sphere-v1"`  }) => [`Validator`](/api/modules/values#validator)\<[`Polygon`](/api/modules/values#polygon), `"required"`, `"type"` | `"coordinates"`> ; `geometry`: (`options`: `Partial`\<`AppGeometryDeclaration`> & \{ `profile?`: `"wgs84-2d-linear-sphere-v1"`  } & \{ `types?`: readonly `AppGeometryType`\[]  }) => [`Validator`](/api/modules/values#validator)\<[`Geometry`](/api/modules/values#geometry), `"required"`, `"type"` | `"coordinates"`> ; `position`: (`options`: `Partial`\<`AppGeometryDeclaration`> & \{ `profile?`: `"wgs84-2d-linear-sphere-v1"`  }) => [`Validator`](/api/modules/values#validator)\<[`Position`](/api/modules/values#position), `"required"`, `"point"` | `"accuracy_m"` | `"point.type"` | `"point.coordinates"`> ; `file`: () => [`VFile`](/api/classes/models.VFile)\<[`FileRef`](/api/modules/values#fileref), `"required"`> ; `fileInput`: (`options`: [`FileInputOptions`](/api/modules/values#fileinputoptions)) => [`VFileInput`](/api/classes/values.VFileInput)\<[`StagedFileRef`](/api/modules/values#stagedfileref), `"required"`> ; `id`: \<TableName>(`tableName`: `TableName`) => [`VId`](/api/classes/values.VId)\<[`GenericId`](/api/modules/values#genericid)\<`TableName`>, `"required"`> ; `null`: () => [`VNull`](/api/classes/values.VNull)\<`null`, `"required"`> ; `number`: () => [`VFloat64`](/api/classes/values.VFloat64)\<`number`, `"required"`> ; `float64`: () => [`VFloat64`](/api/classes/values.VFloat64)\<`number`, `"required"`> ; `bigint`: () => [`VInt64`](/api/classes/values.VInt64)\<`bigint`, `"required"`> ; `int64`: () => [`VInt64`](/api/classes/values.VInt64)\<`bigint`, `"required"`> ; `commitTs`: () => [`VCommitTs`](/api/classes/values.VCommitTs)\<`bigint` | [`CommitTsPlaceholder`](/api/classes/values.CommitTsPlaceholder), `"required"`> ; `boolean`: () => [`VBoolean`](/api/classes/values.VBoolean)\<`boolean`, `"required"`> ; `string`: () => [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `bytes`: () => [`VBytes`](/api/classes/values.VBytes)\<`ArrayBuffer`, `"required"`> ; `literal`: \<T>(`literal`: `T`) => [`VLiteral`](/api/classes/values.VLiteral)\<`T`, `"required"`> ; `array`: \<T>(`element`: `T`) => [`VArray`](/api/classes/values.VArray)\<`T`\[`"type"`]\[], `T`, `"required"`> ; `object`: \<T>(`fields`: `T`) => [`VObject`](/api/classes/values.VObject)\<[`Expand`](/api/modules/server#expand)\<\{ \[Property in string | number | symbol]?: Exclude\<Infer\<T\[Property]>, undefined> } & \{ \[Property in string | number | symbol]: Infer\<T\[Property]> }>, `T`, `"required"`, \{ \[Property in string | number | symbol]: Property | \`$\{Property & string}.$\{T\[Property]\["fieldPaths"]}\` }\[keyof `T`] & `string`> ; `record`: \<Key, Value>(`keys`: `Key`, `values`: `Value`) => [`VRecord`](/api/classes/values.VRecord)\<`Record`\<[`Infer`](/api/modules/values#infer)\<`Key`>, `Value`\[`"type"`]>, `Key`, `Value`, `"required"`, `string`> ; `union`: \<T>(...`members`: `T`) => [`VUnion`](/api/classes/values.VUnion)\<`T`\[`number`]\[`"type"`], `T`, `"required"`, `T`\[`number`]\[`"fieldPaths"`]> ; `any`: () => [`VAny`](/api/classes/values.VAny)\<`any`, `"required"`, `string`> ; `optional`: \<T>(`value`: `T`) => [`VOptional`](/api/modules/values#voptional)\<`T`> ; `nullable`: \<T>(`value`: `T`) => [`VUnion`](/api/classes/values.VUnion)\<`T` | [`VNull`](/api/classes/values.VNull)\<`null`, `"required"`>\[`"type"`], \[`T`, [`VNull`](/api/classes/values.VNull)\<`null`, `"required"`>], `"required"`, `T` | [`VNull`](/api/classes/values.VNull)\<`null`, `"required"`>\[`"fieldPaths"`]>  }>

Native validators with explicit quantities, business time and result provenance.

***

### simulation

• `Const` **simulation**: `Readonly`\<\{ `now`: () => `number` ; `uniform`: (`input`: [`SimulationFactor`](/api/modules/models#simulationfactor)) => `number`  }>

Addressed business randomness in the native simulation invocation stream.
Equal keys share a draw, regardless of call order. Unavailable in live code.

## Functions

### defineModelArtifact

▸ **defineModelArtifact**\<`T`>(`definition`): [`ModelArtifact`](/api/modules/models#modelartifact)\<`T`>

Small model parameters and evidence travel with the immutable program.
References describe lineage; they do not confer data access or certify calibration quality.

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends [`Value`](/api/modules/values#value) |

#### Parameters

| Name | Type |
| :- | :- |
| `definition` | `Object` |
| `definition.name` | `string` |
| `definition.kind` | [`ModelArtifactSpecification`](/api/modules/models#modelartifactspecification)\[`"kind"`] |
| `definition.value` | `T` |
| `definition.derivedFrom?` | readonly [`ModelArtifactSource`](/api/modules/models#modelartifactsource)\[] |

#### Returns

[`ModelArtifact`](/api/modules/models#modelartifact)\<`T`>

***

### restoreModelArtifact

▸ **restoreModelArtifact**\<`T`>(`saved`, `validator`): [`ModelArtifact`](/api/modules/models#modelartifact)\<`T`>

Load a saved artifact into model code, checking both content identity and parameter shape.

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends [`Value`](/api/modules/values#value) |

#### Parameters

| Name | Type |
| :- | :- |
| `saved` | `unknown` |
| `validator` | [`Validator`](/api/modules/values#validator)\<`T`, `"required"`, `any`> |

#### Returns

[`ModelArtifact`](/api/modules/models#modelartifact)\<`T`>

***

### defineModelProgram

▸ **defineModelProgram**\<`I`, `O`, `R`, `P`>(`definition`): [`RegisteredQuery`](/api/modules/server#registeredquery)\<`"public"`, \{ `parameters`: `any` ; `input`: `any` ; `answers`: `any`\[]  }, `Promise`\<\{ `state`: `"calls"` ; `calls`: [`Call`](/api/modules/models#call)\[] = batch; `output?`: `undefined`  } | \{ `calls?`: `undefined` = batch; `state`: `"complete"` ; `output`: `NonNullable`\<`O`>  }>>

Export this ordinary query, then bind its generated reference with contract.implement.
Only the native executor dispatches child calls. Replaying this query performs reads only.

#### Type parameters

| Name | Type |
| :- | :- |
| `I` | extends [`Value`](/api/modules/values#value) |
| `O` | extends [`Value`](/api/modules/values#value) |
| `R` | extends [`Requirements`](/api/modules/models#requirements) |
| `P` | extends [`PropertyValidators`](/api/modules/values#propertyvalidators) = \{} |

#### Parameters

| Name | Type |
| :- | :- |
| `definition` | `Object` |
| `definition.contract` | [`ModelContract`](/api/modules/server#modelcontract)\<`I`, `O`> |
| `definition.uses` | `R` |
| `definition.parameters?` | `P` |
| `definition.evaluate` | (`ctx`: [`ModelProgramContext`](/api/modules/models#modelprogramcontext)\<`R`, `P`>, `input`: `I`) => `Promise`\<`O`> |

#### Returns

[`RegisteredQuery`](/api/modules/server#registeredquery)\<`"public"`, \{ `parameters`: `any` ; `input`: `any` ; `answers`: `any`\[]  }, `Promise`\<\{ `state`: `"calls"` ; `calls`: [`Call`](/api/modules/models#call)\[] = batch; `output?`: `undefined`  } | \{ `calls?`: `undefined` = batch; `state`: `"complete"` ; `output`: `NonNullable`\<`O`>  }>>

***

### makeModelReference

▸ **makeModelReference**\<`Input`, `Output`>(`name`, `input`, `output`): [`ModelReference`](/api/modules/models#modelreference)\<`Input`, `Output`>

Construct a data-only handle from admitted application signatures. Used by generated bindings.

#### Type parameters

| Name |
| :- |
| `Input` |
| `Output` |

#### Parameters

| Name | Type |
| :- | :- |
| `name` | `string` |
| `input` | [`ValidatorJSON`](/api/modules/values#validatorjson) |
| `output` | [`ValidatorJSON`](/api/modules/values#validatorjson) |

#### Returns

[`ModelReference`](/api/modules/models#modelreference)\<`Input`, `Output`>


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