> ## 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: AnswerClient<Schema>

> One answer lifecycle, with recovery storage configured once.

[browser](/api/modules/browser).AnswerClient

One answer lifecycle, with recovery storage configured once.

## Type parameters

| Name | Type |
| :- | :- |
| `Schema` | extends [`GenericSchema`](/api/modules/server#genericschema) = [`GenericSchema`](/api/modules/server#genericschema) |

## Constructors

### constructor

• **new AnswerClient**\<`Schema`>(`transport`, `recovery?`)

#### Type parameters

| Name | Type |
| :- | :- |
| `Schema` | extends [`GenericSchema`](/api/modules/server#genericschema) = [`GenericSchema`](/api/modules/server#genericschema) |

#### Parameters

| Name | Type |
| :- | :- |
| `transport` | [`AnswerTransport`](/api/interfaces/browser.AnswerTransport) \| `Pick`\<[`BijectionHttpClient`](/api/classes/browser.BijectionHttpClient), `"action"`> |
| `recovery?` | [`AnswerRecovery`](/api/interfaces/browser.AnswerRecovery) \| () => `Promise`\<[`AnswerRecovery`](/api/interfaces/browser.AnswerRecovery)> |

## Methods

### reserve

▸ **reserve**(): `Promise`\<[`ReservedAnswer`](/api/classes/browser.ReservedAnswer)\<`Schema`>>

#### Returns

`Promise`\<[`ReservedAnswer`](/api/classes/browser.ReservedAnswer)\<`Schema`>>

***

### ask

▸ **ask**\<`Expr`, `Kind`>(`relation`, `bounds?`): `Promise`\<[`AnswerExecution`](/api/classes/browser.AnswerExecution)\<[`AnswerRow`](/api/modules/server#answerrow)\<`Schema`, `Expr`>, `Kind`>>

#### Type parameters

| Name | Type |
| :- | :- |
| `Expr` | `Expr` |
| `Kind` | extends [`AnswerKind`](/api/modules/server#answerkind) = `"complete"` |

#### Parameters

| Name | Type |
| :- | :- |
| `relation` | [`ValidRelation`](/api/modules/browser#validrelation)\<`Schema`, `Expr`> |
| `bounds?` | [`AnswerBounds`](/api/modules/browser#answerbounds)\<`Kind`> |

#### Returns

`Promise`\<[`AnswerExecution`](/api/classes/browser.AnswerExecution)\<[`AnswerRow`](/api/modules/server#answerrow)\<`Schema`, `Expr`>, `Kind`>>

▸ **ask**\<`Args`, `Row`, `Kind`>(`question`, `args`): `Promise`\<[`AnswerExecution`](/api/classes/browser.AnswerExecution)\<`Row`, `Kind`>>

#### Type parameters

| Name | Type |
| :- | :- |
| `Args` | extends `Record`\<`string`, [`Value`](/api/modules/browser#value)> |
| `Row` | `Row` |
| `Kind` | extends [`AnswerKind`](/api/modules/server#answerkind) |

#### Parameters

| Name | Type |
| :- | :- |
| `question` | [`QuestionReference`](/api/modules/server#questionreference)\<`Args`, `Row`, `Kind`> |
| `args` | `Args` |

#### Returns

`Promise`\<[`AnswerExecution`](/api/classes/browser.AnswerExecution)\<`Row`, `Kind`>>

***

### resume

▸ **resume**\<`Row`>(`reference`): [`AnswerExecution`](/api/classes/browser.AnswerExecution)\<`Row`, [`AnswerKind`](/api/modules/server#answerkind)>

#### Type parameters

| Name | Type |
| :- | :- |
| `Row` | `Record`\<`string`, [`Value`](/api/modules/browser#value)> |

#### Parameters

| Name | Type |
| :- | :- |
| `reference` | [`AnswerLocator`](/api/modules/browser#answerlocator) \| [`AnswerId`](/api/modules/server#answerid)\<`Row`> |

#### Returns

[`AnswerExecution`](/api/classes/browser.AnswerExecution)\<`Row`, [`AnswerKind`](/api/modules/server#answerkind)>

▸ **resume**\<`Args`, `Row`, `Kind`>(`read`, `reference`): [`AnswerExecution`](/api/classes/browser.AnswerExecution)\<`Row`, `Kind`>

#### Type parameters

| Name | Type |
| :- | :- |
| `Args` | extends `Record`\<`string`, [`Value`](/api/modules/browser#value)> |
| `Row` | `Row` |
| `Kind` | extends [`AnswerKind`](/api/modules/server#answerkind) |

#### Parameters

| Name | Type |
| :- | :- |
| `read` | [`QuestionReference`](/api/modules/server#questionreference)\<`Args`, `Row`, `Kind`> |
| `reference` | [`AnswerLocator`](/api/modules/browser#answerlocator) \| [`AnswerId`](/api/modules/server#answerid)\<`Row`> |

#### Returns

[`AnswerExecution`](/api/classes/browser.AnswerExecution)\<`Row`, `Kind`>

***

### recoverable

▸ **recoverable**(): `AsyncGenerator`\<[`AnswerLocator`](/api/modules/browser#answerlocator), `any`, `unknown`>

#### Returns

`AsyncGenerator`\<[`AnswerLocator`](/api/modules/browser#answerlocator), `any`, `unknown`>

***

### explain

▸ **explain**\<`Expr`>(`relation`, `bounds?`): `Promise`\<[`AnswerPlan`](/api/interfaces/server.AnswerPlan)>

#### Type parameters

| Name |
| :- |
| `Expr` |

#### Parameters

| Name | Type |
| :- | :- |
| `relation` | [`ValidRelation`](/api/modules/browser#validrelation)\<`Schema`, `Expr`> |
| `bounds` | [`AnswerBounds`](/api/modules/browser#answerbounds)\<[`AnswerKind`](/api/modules/server#answerkind)> |

#### Returns

`Promise`\<[`AnswerPlan`](/api/interfaces/server.AnswerPlan)>


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