> ## 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.

# Interface: DefineComputation<DataModel, Schema>

> A private computation definition.

[computations](https://docs.bijection.com/api/modules/computations).DefineComputation

A private computation definition. Public exposure uses ordinary functions.

## Type parameters

| Name | Type |
| :- | :- |
| `DataModel` | extends [`GenericDataModel`](https://docs.bijection.com/api/modules/server#genericdatamodel) = [`GenericDataModel`](https://docs.bijection.com/api/modules/server#genericdatamodel) |
| `Schema` | extends [`GenericSchema`](https://docs.bijection.com/api/modules/server#genericschema) = [`GenericSchema`](https://docs.bijection.com/api/modules/server#genericschema) |

## Callable

### DefineComputation

▸ **DefineComputation**\<`I`, `O`>(`definition`): [`Defined`](https://docs.bijection.com/api/modules/computations#defined)\<`I`, `O`, `true`, `DataModel`>

#### Type parameters

| Name | Type |
| :- | :- |
| `I` | extends [`ComputationArgumentsContract`](https://docs.bijection.com/api/modules/computations#computationargumentscontract) |
| `O` | extends [`OutputDeclarations`](https://docs.bijection.com/api/modules/computations#outputdeclarations) |

#### Parameters

| Name | Type |
| :- | :- |
| `definition` | [`DefinitionBase`](https://docs.bijection.com/api/modules/computations#definitionbase)\<`I`, `O`> & \{ `plan`: (`args`: [`InputRelations`](https://docs.bijection.com/api/modules/computations#inputrelations)\<[`InferComputationArguments`](https://docs.bijection.com/api/modules/computations#infercomputationarguments)\<`NoInfer<I>`>> & [`InputArguments`](https://docs.bijection.com/api/modules/computations#inputarguments)\<[`InferComputationArguments`](https://docs.bijection.com/api/modules/computations#infercomputationarguments)\<`NoInfer<I>`>>) => [`OutputRelations`](https://docs.bijection.com/api/modules/computations#outputrelations)\<[`OutputValues`](https://docs.bijection.com/api/modules/computations#outputvalues)\<`NoInfer<O>`>>  } |

#### Returns

[`Defined`](https://docs.bijection.com/api/modules/computations#defined)\<`I`, `O`, `true`, `DataModel`>

### DefineComputation

▸ **DefineComputation**\<`I`, `O`>(`definition`): [`Defined`](https://docs.bijection.com/api/modules/computations#defined)\<`I`, `O`, `false`, `DataModel`>

#### Type parameters

| Name | Type |
| :- | :- |
| `I` | extends [`ComputationArgumentsContract`](https://docs.bijection.com/api/modules/computations#computationargumentscontract) |
| `O` | extends [`OutputDeclarations`](https://docs.bijection.com/api/modules/computations#outputdeclarations) |

#### Parameters

| Name | Type |
| :- | :- |
| `definition` | [`DefinitionBase`](https://docs.bijection.com/api/modules/computations#definitionbase)\<`I`, `O`> & \{ `runtime`: `"query"` ; `implementation`: (`ctx`: [`BijectionQueryCtx`](https://docs.bijection.com/api/interfaces/server.BijectionQueryCtx)\<`DataModel`, `Schema`>, `args`: [`InferComputationArguments`](https://docs.bijection.com/api/modules/computations#infercomputationarguments)\<`I`>) => [`OutputValues`](https://docs.bijection.com/api/modules/computations#outputvalues)\<`O`> \| `Promise`\<[`OutputValues`](https://docs.bijection.com/api/modules/computations#outputvalues)\<`O`>>  } |

#### Returns

[`Defined`](https://docs.bijection.com/api/modules/computations#defined)\<`I`, `O`, `false`, `DataModel`>

### DefineComputation

▸ **DefineComputation**\<`I`, `O`>(`definition`): [`Defined`](https://docs.bijection.com/api/modules/computations#defined)\<`I`, `O`, `false`, `DataModel`>

#### Type parameters

| Name | Type |
| :- | :- |
| `I` | extends [`ComputationArgumentsContract`](https://docs.bijection.com/api/modules/computations#computationargumentscontract) |
| `O` | extends [`OutputDeclarations`](https://docs.bijection.com/api/modules/computations#outputdeclarations) |

#### Parameters

| Name | Type |
| :- | :- |
| `definition` | [`DefinitionBase`](https://docs.bijection.com/api/modules/computations#definitionbase)\<`I`, `O`> & \{ `runtime`: `"action"` ; `implementation`: (`ctx`: [`ComputationActionCtx`](https://docs.bijection.com/api/modules/computations#computationactionctx)\<`DataModel`>, `args`: [`InferComputationArguments`](https://docs.bijection.com/api/modules/computations#infercomputationarguments)\<`I`>) => [`OutputValues`](https://docs.bijection.com/api/modules/computations#outputvalues)\<`O`> \| `Promise`\<[`OutputValues`](https://docs.bijection.com/api/modules/computations#outputvalues)\<`O`>>  } |

#### Returns

[`Defined`](https://docs.bijection.com/api/modules/computations#defined)\<`I`, `O`, `false`, `DataModel`>

### DefineComputation

▸ **DefineComputation**\<`I`, `O`>(`definition`): [`Defined`](https://docs.bijection.com/api/modules/computations#defined)\<`I`, `O`, `false`, `DataModel`>

#### Type parameters

| Name | Type |
| :- | :- |
| `I` | extends [`ComputationArgumentsContract`](https://docs.bijection.com/api/modules/computations#computationargumentscontract) |
| `O` | extends [`OutputDeclarations`](https://docs.bijection.com/api/modules/computations#outputdeclarations) |

#### Parameters

| Name | Type |
| :- | :- |
| `definition` | [`DefinitionBase`](https://docs.bijection.com/api/modules/computations#definitionbase)\<`I`, `O`> & \{ `implementation`: `Readonly`\<\{ `revision`: `string` ; `manifest`: `string` ; `development?`: \{ `root`: `string` ; `contracts`: `string` ; `declaration?`: `string`  }  }> \| `Readonly`\<\{ `kind`: `"external"` ; `digest`: `string` ; `sampling`: [`ComputationSampling`](https://docs.bijection.com/api/modules/server#computationsampling)  }> \| `Readonly`\<\{ `kind`: `"adapter"` ; `inline?`: `true` ; `build?`: (`args`: [`InputRelations`](https://docs.bijection.com/api/modules/computations#inputrelations)\<[`InferComputationArguments`](https://docs.bijection.com/api/modules/computations#infercomputationarguments)\<`NoInfer<I>`>> & [`InputArguments`](https://docs.bijection.com/api/modules/computations#inputarguments)\<[`InferComputationArguments`](https://docs.bijection.com/api/modules/computations#infercomputationarguments)\<`NoInfer<I>`>>) => [`OutputRelations`](https://docs.bijection.com/api/modules/computations#outputrelations)\<[`OutputValues`](https://docs.bijection.com/api/modules/computations#outputvalues)\<`NoInfer<O>`>> ; `prepare`: (`context`: \{ `reference`: `string` ; `query?`: `string` ; `args`: [`ValidatorJSON`](https://docs.bijection.com/api/modules/values#validatorjson) ; `outputs`: [`OutputContracts`](https://docs.bijection.com/api/modules/computations#outputcontracts) ; `root_output`: `string` \| `null` ; `guarantees?`: [`GuaranteeBuilders`](https://docs.bijection.com/api/modules/computations#guaranteebuilders) ; `input_guarantees?`: [`GuaranteeBuilders`](https://docs.bijection.com/api/modules/computations#guaranteebuilders) ; `row_keys?`: \{ `inputs`: `Readonly`\<`Record`\<`string`, readonly `string`\[]>> ; `outputs`: `Readonly`\<`Record`\<`string`, readonly `string`\[]>>  }  }, `build?`: `unknown`) => \{ `implementation`: [`ComputationRepresentation`](https://docs.bijection.com/api/modules/computations#computationrepresentation) ; `binding`: `unknown` ; `dispatch?`: `"installed"` ; `query?`: [`RegisteredQuery`](https://docs.bijection.com/api/modules/server#registeredquery)\<`"internal"`, `any`, `any`> ; `required_features?`: readonly `string`\[] ; `row_keys?`: `true` ; `guarantees?`: `true` ; `input_guarantees?`: `true` ; `output_predicates?`: [`ComputationObligations`](https://docs.bijection.com/api/modules/computations#computationobligations)\[`"outputPredicates"`] ; `evaluate?`: (`args`: `unknown`, `clocks?`: readonly `ClockObservation`\[]) => `unknown` ; `inline?`: (`args`: `Readonly`\<`Record`\<`string`, `unknown`>>) => `Record`\<`string`, [`Relation`](https://docs.bijection.com/api/classes/server.Relation)\<`any`>>  }  }> ; `runtime?`: `undefined`  } |

#### Returns

[`Defined`](https://docs.bijection.com/api/modules/computations#defined)\<`I`, `O`, `false`, `DataModel`>

### DefineComputation

▸ **DefineComputation**\<`I`, `O`, `D`, `P`>(`definition`): [`DeclaredComputation`](https://docs.bijection.com/api/modules/computations#declaredcomputation)\<[`InferComputationArguments`](https://docs.bijection.com/api/modules/computations#infercomputationarguments)\<`I`>, [`OutputValues`](https://docs.bijection.com/api/modules/computations#outputvalues)\<`O`>, [`DependencyValues`](https://docs.bijection.com/api/modules/computations#dependencyvalues)\<`D`>, [`ParameterValues`](https://docs.bijection.com/api/modules/computations#parametervalues)\<`P`>, [`OutputTypeInfo`](https://docs.bijection.com/api/modules/computations#outputtypeinfo)\<`O`>, `false`, `DataModel`, \{}>

#### Type parameters

| Name | Type |
| :- | :- |
| `I` | extends [`ComputationArgumentsContract`](https://docs.bijection.com/api/modules/computations#computationargumentscontract) |
| `O` | extends [`OutputDeclarations`](https://docs.bijection.com/api/modules/computations#outputdeclarations) |
| `D` | extends [`Dependencies`](https://docs.bijection.com/api/modules/computations#dependencies) \| `undefined` = `undefined` |
| `P` | extends [`PropertyValidators`](https://docs.bijection.com/api/modules/values#propertyvalidators) \| `undefined` = `undefined` |

#### Parameters

| Name | Type |
| :- | :- |
| `definition` | `Object` |

#### Returns

[`DeclaredComputation`](https://docs.bijection.com/api/modules/computations#declaredcomputation)\<[`InferComputationArguments`](https://docs.bijection.com/api/modules/computations#infercomputationarguments)\<`I`>, [`OutputValues`](https://docs.bijection.com/api/modules/computations#outputvalues)\<`O`>, [`DependencyValues`](https://docs.bijection.com/api/modules/computations#dependencyvalues)\<`D`>, [`ParameterValues`](https://docs.bijection.com/api/modules/computations#parametervalues)\<`P`>, [`OutputTypeInfo`](https://docs.bijection.com/api/modules/computations#outputtypeinfo)\<`O`>, `false`, `DataModel`, \{}>

### DefineComputation

▸ **DefineComputation**\<`A`, `S`, `O`, `Input`, `State`, `CheckState`, `Partition`>(`definition`): [`DeclaredComputation`](https://docs.bijection.com/api/modules/computations#declaredcomputation)\<[`InferComputationArguments`](https://docs.bijection.com/api/modules/computations#infercomputationarguments)\<`A`>, [`OutputValues`](https://docs.bijection.com/api/modules/computations#outputvalues)\<`O`>, \{}, \{}, [`OutputTypeInfo`](https://docs.bijection.com/api/modules/computations#outputtypeinfo)\<`O`>, `false`, `DataModel`, \{ `_inputs?`: `S` ; `_partition?`: [`PartitionKey`](https://docs.bijection.com/api/modules/computations#partitionkey)\<`S`, `Partition`, `DataModel`>  }>

#### Type parameters

| Name | Type |
| :- | :- |
| `A` | extends [`PropertyValidators`](https://docs.bijection.com/api/modules/values#propertyvalidators) |
| `S` | extends `Readonly`\<`Record`\<`string`, [`TableNamesInDataModel`](https://docs.bijection.com/api/modules/server#tablenamesindatamodel)\<`DataModel`>>> |
| `O` | extends [`TableOutputs`](https://docs.bijection.com/api/modules/computations#tableoutputs) |
| `Input` | extends keyof `S` & `string` = `never` |
| `State` | extends [`GenericValidator`](https://docs.bijection.com/api/modules/values#genericvalidator) = `never` |
| `CheckState` | extends [`GenericValidator`](https://docs.bijection.com/api/modules/values#genericvalidator) = `never` |
| `Partition` | extends readonly `string`\[] = `never` |

#### Parameters

| Name | Type |
| :- | :- |
| `definition` | [`TableComputationDeclaration`](https://docs.bijection.com/api/modules/computations#tablecomputationdeclaration)\<`A`, `S`, `O`, `Input`, `State`, `CheckState`, `DataModel`, `Partition`> |

#### Returns

[`DeclaredComputation`](https://docs.bijection.com/api/modules/computations#declaredcomputation)\<[`InferComputationArguments`](https://docs.bijection.com/api/modules/computations#infercomputationarguments)\<`A`>, [`OutputValues`](https://docs.bijection.com/api/modules/computations#outputvalues)\<`O`>, \{}, \{}, [`OutputTypeInfo`](https://docs.bijection.com/api/modules/computations#outputtypeinfo)\<`O`>, `false`, `DataModel`, \{ `_inputs?`: `S` ; `_partition?`: [`PartitionKey`](https://docs.bijection.com/api/modules/computations#partitionkey)\<`S`, `Partition`, `DataModel`>  }>


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