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

# Class: ProgramController

> Not exported: an exported type refers to it.

[computations/adapters](https://docs.bijection.com/api/modules/computations_adapters).ProgramController

Not exported: an exported type refers to it.

## Constructors

### constructor

• **new ProgramController**(`nowMs`, `references`, `environments`, `responses`, `scenarioInput`, `adapter?`, `rootScope?`, `work?`)

#### Parameters

| Name | Type | Default value |
| :- | :- | :- |
| `nowMs` | `number` | `undefined` |
| `references` | `Record`\<`string`, [`Value`](https://docs.bijection.com/api/modules/values#value)> | `undefined` |
| `environments` | `ReadonlySet`\<`string`> | `undefined` |
| `responses` | readonly [`EnvironmentResponse`](https://docs.bijection.com/api/modules/scenarios#environmentresponse)\[] | `undefined` |
| `scenarioInput` | [`Value`](https://docs.bijection.com/api/modules/values#value) | `undefined` |
| `adapter?` | [`ProgramContextAdapter`](https://docs.bijection.com/api/modules/computations_adapters#programcontextadapter) | `undefined` |
| `rootScope` | `string` | `""` |
| `work` | `Object` | `undefined` |
| `work.branches` | `number` | `0` |

## Properties

### issued

• `Private` **issued**: `undefined` | [`Issued`](https://docs.bijection.com/api/modules/computations_adapters#issued)

***

### sequence

• `Private` **sequence**: `number` = `0`

***

### requests

• `Private` `Readonly` **requests**: `WeakMap`\<`object`, \{ `kind`: `"operation"` ; `id`: `string` ; `path`: `string` ; `invoke`: [`ComputationFunction`](https://docs.bijection.com/api/modules/browser#computationfunction) ; `recover`: [`ComputationFunction`](https://docs.bijection.com/api/modules/browser#computationfunction) ; `contractDigest`: `string` ; `args`: [`ScenarioExpression`](https://docs.bijection.com/api/modules/scenarios#scenarioexpression)  }>

***

### violation

• `Private` **violation**: `undefined` | `Error`

***

### bodyFailed

• `Private` **bodyFailed**: `boolean` = `false`

***

### contexts

• `Private` `Readonly` **contexts**: `WeakMap`\<`object`, `string`>

***

### results

• `Private` `Readonly` **results**: `Map`\<`object`, \{ `step`: `string` ; `path`: `string`\[] ; `root`: [`Value`](https://docs.bijection.com/api/modules/values#value) ; `json`: `string`  }>

***

### referenced

• `Private` `Readonly` **referenced**: `Map`\<`string`, `object`>

***

### environmentHandles

• `Private` `Readonly` **environmentHandles**: `EnvironmentHandles`

***

### machinePaths

• `Private` `Readonly` **machinePaths**: `Map`\<[`DurableMachine`](https://docs.bijection.com/api/modules/computations_adapters#durablemachine), `string`\[]>

***

### capturedMachines

• `Private` `Readonly` **capturedMachines**: `Map`\<`string`, [`DurableMachine`](https://docs.bijection.com/api/modules/computations_adapters#durablemachine)>

***

### templates

• `Private` `Readonly` **templates**: `Map`\<[`DurableTemplate`](https://docs.bijection.com/api/modules/computations_adapters#durabletemplate), `string`\[]>

***

### capturedTemplates

• `Private` `Readonly` **capturedTemplates**: `Map`\<`string`, [`DurableTemplate`](https://docs.bijection.com/api/modules/computations_adapters#durabletemplate)>

***

### nowMs

• `Private` `Readonly` **nowMs**: `number`

***

### references

• `Private` `Readonly` **references**: `Record`\<`string`, [`Value`](https://docs.bijection.com/api/modules/values#value)>

***

### environments

• `Private` `Readonly` **environments**: `ReadonlySet`\<`string`>

***

### responses

• `Private` `Readonly` **responses**: readonly [`EnvironmentResponse`](https://docs.bijection.com/api/modules/scenarios#environmentresponse)\[]

***

### scenarioInput

• `Private` `Readonly` **scenarioInput**: [`Value`](https://docs.bijection.com/api/modules/values#value)

***

### adapter

• `Private` `Optional` `Readonly` **adapter**: [`ProgramContextAdapter`](https://docs.bijection.com/api/modules/computations_adapters#programcontextadapter)

***

### rootScope

• `Private` `Readonly` **rootScope**: `string` = `""`

***

### work

• `Private` `Readonly` **work**: `Object`

#### Type declaration

| Name | Type |
| :- | :- |
| `branches` | `number` |

## Methods

### run

▸ **run**(`program`, `input`, `frame`, `resumed`): [`ProgramReply`](https://docs.bijection.com/api/modules/computations_adapters#programreply)

#### Parameters

| Name | Type |
| :- | :- |
| `program` | [`DurableMachine`](https://docs.bijection.com/api/modules/computations_adapters#durablemachine) |
| `input` | [`Value`](https://docs.bijection.com/api/modules/values#value) |
| `frame` | `string` \| `null` |
| `resumed` | [`Answer`](https://docs.bijection.com/api/modules/computations_adapters#answer) \| [`Answer`](https://docs.bijection.com/api/modules/computations_adapters#answer)\[] \| `null` |

#### Returns

[`ProgramReply`](https://docs.bijection.com/api/modules/computations_adapters#programreply)

***

### advance

▸ `Private` **advance**(`stack`, `mode`, `value`): [`ProgramReply`](https://docs.bijection.com/api/modules/computations_adapters#programreply)

#### Parameters

| Name | Type |
| :- | :- |
| `stack` | [`Activation`](https://docs.bijection.com/api/modules/computations_adapters#activation)\[] |
| `mode` | `0` \| `1` \| `2` |
| `value` | `unknown` |

#### Returns

[`ProgramReply`](https://docs.bijection.com/api/modules/computations_adapters#programreply)

***

### captureMachines

▸ `Private` **captureMachines**(`program`): `void`

#### Parameters

| Name | Type |
| :- | :- |
| `program` | [`DurableMachine`](https://docs.bijection.com/api/modules/computations_adapters#durablemachine) |

#### Returns

`void`

***

### map

▸ `Private` **map**\<`T`, `U`>(`prefix`, `group`, `items`, `options`, `each`): `Promise`\<`U`\[]>

#### Type parameters

| Name |
| :- |
| `T` |
| `U` |

#### Parameters

| Name | Type |
| :- | :- |
| `prefix` | `string` |
| `group` | `string` |
| `items` | readonly `T`\[] |
| `options` | `Object` |
| `options.key` | (`item`: `T`) => `string` |
| `each` | (`item`: `T`, `scope`: [`ProcedureContext`](https://docs.bijection.com/api/modules/scenarios#procedurecontext)) => `Promise`\<`U`> |

#### Returns

`Promise`\<`U`\[]>

***

### advanceMap

▸ `Private` **advanceMap**(`parallel`, `answers`, `stack`): \{ `state`: `"complete"` ; `value`: [`Value`](https://docs.bijection.com/api/modules/values#value)\[]  } | \{ `state`: `"failed"` ; `failures`: \{ `key`: `string` ; `name`: `string` ; `message`: `string`  }\[]  } | `Extract`\<[`ProgramReply`](https://docs.bijection.com/api/modules/computations_adapters#programreply), \{ `state`: `"calls"`  }>

#### Parameters

| Name | Type |
| :- | :- |
| `parallel` | [`ParallelState`](https://docs.bijection.com/api/modules/computations_adapters#parallelstate) |
| `answers` | [`Answer`](https://docs.bijection.com/api/modules/computations_adapters#answer)\[] |
| `stack` | [`Activation`](https://docs.bijection.com/api/modules/computations_adapters#activation)\[] |

#### Returns

\{ `state`: `"complete"` ; `value`: [`Value`](https://docs.bijection.com/api/modules/values#value)\[]  } | \{ `state`: `"failed"` ; `failures`: \{ `key`: `string` ; `name`: `string` ; `message`: `string`  }\[]  } | `Extract`\<[`ProgramReply`](https://docs.bijection.com/api/modules/computations_adapters#programreply), \{ `state`: `"calls"`  }>

***

### conform

▸ `Private` **conform**(`machine`, `side`, `value`): `void`

#### Parameters

| Name | Type |
| :- | :- |
| `machine` | [`DurableMachine`](https://docs.bijection.com/api/modules/computations_adapters#durablemachine) |
| `side` | `"input"` \| `"output"` |
| `value` | `unknown` |

#### Returns

`void`

***

### fatal

▸ `Private` **fatal**(`message`): `never`

#### Parameters

| Name | Type |
| :- | :- |
| `message` | `string` |

#### Returns

`never`

***

### issue

▸ `Private` **issue**(`issued`): `object`

#### Parameters

| Name | Type |
| :- | :- |
| `issued` | [`Issued`](https://docs.bijection.com/api/modules/computations_adapters#issued) |

#### Returns

`object`

***

### instruction

▸ `Private` **instruction**(`step`): `any`

#### Parameters

| Name | Type |
| :- | :- |
| `step` | [`ExecutionInstruction`](https://docs.bijection.com/api/modules/scenarios#executioninstruction) |

#### Returns

`any`

***

### buildStep

▸ `Private` **buildStep**(`append`): [`ExecutionInstruction`](https://docs.bijection.com/api/modules/scenarios#executioninstruction)

#### Parameters

| Name | Type |
| :- | :- |
| `append` | (`s`: `ScenarioInstructions`) => `void` |

#### Returns

[`ExecutionInstruction`](https://docs.bijection.com/api/modules/scenarios#executioninstruction)

***

### build

▸ `Private` **build**(`append`): `any`

#### Parameters

| Name | Type |
| :- | :- |
| `append` | (`s`: `ScenarioInstructions`) => `void` |

#### Returns

`any`

***

### nextId

▸ `Private` **nextId**(): `string`

#### Returns

`string`

***

### operationRequest

▸ `Private` **operationRequest**\<`T`>(`step`): [`ProcedureRequest`](https://docs.bijection.com/api/modules/scenarios#procedurerequest)\<`T`>

#### Type parameters

| Name |
| :- |
| `T` |

#### Parameters

| Name | Type |
| :- | :- |
| `step` | `Extract`\<[`ExecutionInstruction`](https://docs.bijection.com/api/modules/scenarios#executioninstruction), \{ `kind`: `"operation"`  }> |

#### Returns

[`ProcedureRequest`](https://docs.bijection.com/api/modules/scenarios#procedurerequest)\<`T`>

***

### context

▸ **context**(`prefix`): [`ProcedureContext`](https://docs.bijection.com/api/modules/scenarios#procedurecontext)

#### Parameters

| Name | Type |
| :- | :- |
| `prefix` | `string` |

#### Returns

[`ProcedureContext`](https://docs.bijection.com/api/modules/scenarios#procedurecontext)

***

### deliver

▸ `Private` **deliver**(`step`, `value`): `unknown`

#### Parameters

| Name | Type |
| :- | :- |
| `step` | `string` |
| `value` | [`Value`](https://docs.bijection.com/api/modules/values#value) |

#### Returns

`unknown`

***

### encode

▸ `Private` **encode**(`stack`, `reaction?`, `parallel?`): `Object`

#### Parameters

| Name | Type |
| :- | :- |
| `stack` | [`Activation`](https://docs.bijection.com/api/modules/computations_adapters#activation)\[] |
| `reaction?` | [`Reaction`](https://docs.bijection.com/api/modules/computations_adapters#reaction) |
| `parallel?` | [`ParallelState`](https://docs.bijection.com/api/modules/computations_adapters#parallelstate) |

#### Returns

`Object`

| Name | Type |
| :- | :- |
| `frame` | `string` |
| `references` | `string`\[] |

***

### procedurePath

▸ `Private` **procedurePath**(`value`): \{ `path`: `string`\[] ; `id`: `string`  } | `undefined`

#### Parameters

| Name | Type |
| :- | :- |
| `value` | `object` |

#### Returns

\{ `path`: `string`\[] ; `id`: `string`  } | `undefined`

***

### binding

▸ `Private` **binding**(`value`): `string` | `undefined`

#### Parameters

| Name | Type |
| :- | :- |
| `value` | `object` |

#### Returns

`string` | `undefined`

***

### reference

▸ `Private` **reference**(`value`, `checked?`): \{ `step`: `string` ; `path`: `string`\[]  } | `undefined`

#### Parameters

| Name | Type |
| :- | :- |
| `value` | `object` |
| `checked?` | `Map`\<[`Value`](https://docs.bijection.com/api/modules/values#value), `boolean`> |

#### Returns

\{ `step`: `string` ; `path`: `string`\[]  } | `undefined`

***

### decode

▸ `Private` **decode**(`text`, `program`): `Object`

#### Parameters

| Name | Type |
| :- | :- |
| `text` | `string` |
| `program` | [`DurableMachine`](https://docs.bijection.com/api/modules/computations_adapters#durablemachine) |

#### Returns

`Object`

| Name | Type |
| :- | :- |
| `stack` | [`Activation`](https://docs.bijection.com/api/modules/computations_adapters#activation)\[] |
| `reaction` | [`Reaction`](https://docs.bijection.com/api/modules/computations_adapters#reaction) \| `undefined` |
| `parallel` | [`ParallelState`](https://docs.bijection.com/api/modules/computations_adapters#parallelstate) \| `undefined` |

***

### reactionStep

▸ `Private` **reactionStep**(`reaction`): `string`

#### Parameters

| Name | Type |
| :- | :- |
| `reaction` | [`Reaction`](https://docs.bijection.com/api/modules/computations_adapters#reaction) |

#### Returns

`string`

***

### heldCalls

▸ `Private` **heldCalls**(`value`): [`ScenarioHeldCall`](https://docs.bijection.com/api/modules/computations_adapters#scenarioheldcall)\[]

#### Parameters

| Name | Type |
| :- | :- |
| `value` | [`Value`](https://docs.bijection.com/api/modules/values#value) |

#### Returns

[`ScenarioHeldCall`](https://docs.bijection.com/api/modules/computations_adapters#scenarioheldcall)\[]

***

### nextReaction

▸ `Private` **nextReaction**(`reaction`, `calls`): [`Reaction`](https://docs.bijection.com/api/modules/computations_adapters#reaction) | `undefined`

#### Parameters

| Name | Type |
| :- | :- |
| `reaction` | [`Reaction`](https://docs.bijection.com/api/modules/computations_adapters#reaction) |
| `calls` | [`ScenarioHeldCall`](https://docs.bijection.com/api/modules/computations_adapters#scenarioheldcall)\[] \| `undefined` |

#### Returns

[`Reaction`](https://docs.bijection.com/api/modules/computations_adapters#reaction) | `undefined`

***

### callStages

▸ `Private` **callStages**(`held`): [`ResponseStage`](https://docs.bijection.com/api/modules/computations_adapters#responsestage)\[]

#### Parameters

| Name | Type |
| :- | :- |
| `held` | [`ScenarioHeldCall`](https://docs.bijection.com/api/modules/computations_adapters#scenarioheldcall) |

#### Returns

[`ResponseStage`](https://docs.bijection.com/api/modules/computations_adapters#responsestage)\[]

***

### referencedValue

▸ `Private` **referencedValue**(`step`): [`Value`](https://docs.bijection.com/api/modules/values#value)

#### Parameters

| Name | Type |
| :- | :- |
| `step` | `string` |

#### Returns

[`Value`](https://docs.bijection.com/api/modules/values#value)

***

### responseStep

▸ `Private` **responseStep**(`reaction`): [`ExecutionInstruction`](https://docs.bijection.com/api/modules/scenarios#executioninstruction)

#### Parameters

| Name | Type |
| :- | :- |
| `reaction` | [`Reaction`](https://docs.bijection.com/api/modules/computations_adapters#reaction) |

#### Returns

[`ExecutionInstruction`](https://docs.bijection.com/api/modules/scenarios#executioninstruction)


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