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

> Not exported: an exported type refers to it.

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

Not exported: an exported type refers to it.

## Constructors

### constructor

• **new CompositionController**(`options`)

#### Parameters

| Name | Type |
| :- | :- |
| `options` | `Object` |
| `options.references` | `Record`\<`string`, [`Value`](https://docs.bijection.com/api/modules/values#value)> |
| `options.adapter` | [`CompositionContextAdapter`](https://docs.bijection.com/api/modules/computations_adapters#compositioncontextadapter) |
| `options.scope?` | `string` |
| `options.work?` | `Object` |
| `options.work.branches` | `number` |

## Properties

### issued

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

***

### sequence

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

***

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

***

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

***

### references

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

***

### adapter

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

***

### rootScope

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

***

### work

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

#### Type declaration

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

## Methods

### services

▸ `Private` **services**(`scope`): [`CompositionServices`](https://docs.bijection.com/api/modules/computations_adapters#compositionservices)

#### Parameters

| Name | Type |
| :- | :- |
| `scope` | `string` |

#### Returns

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

***

### run

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

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

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

***

### advance

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

#### Parameters

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

#### Returns

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

***

### 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`: `any`) => `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`\<[`CompositionReply`](https://docs.bijection.com/api/modules/computations_adapters#compositionreply), \{ `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`\<[`CompositionReply`](https://docs.bijection.com/api/modules/computations_adapters#compositionreply), \{ `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` | [`CompositionInstruction`](https://docs.bijection.com/api/modules/computations_adapters#compositioninstruction) |

#### Returns

`any`

***

### nextId

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

#### Returns

`string`

***

### context

▸ **context**(`prefix`): `any`

#### Parameters

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

#### Returns

`any`

***

### 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`, `suspension?`, `parallel?`, `awaiting?`): `Object`

#### Parameters

| Name | Type |
| :- | :- |
| `stack` | [`Activation`](https://docs.bijection.com/api/modules/computations_adapters#activation)\[] |
| `suspension?` | [`JSONValue`](https://docs.bijection.com/api/modules/values#jsonvalue) |
| `parallel?` | [`ParallelState`](https://docs.bijection.com/api/modules/computations_adapters#parallelstate) |
| `awaiting?` | `string` |

#### Returns

`Object`

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

***

### declarationPath

▸ `Private` **declarationPath**(`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)\[] |
| `suspension` | [`JSONValue`](https://docs.bijection.com/api/modules/values#jsonvalue) \| `undefined` |
| `awaiting` | `string` \| `undefined` |
| `parallel` | [`ParallelState`](https://docs.bijection.com/api/modules/computations_adapters#parallelstate) \| `undefined` |


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