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

> Authorized relation requests use the same native admission as named questions.

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

Authorized relation requests use the same native admission as named questions.

## Type parameters

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

## Constructors

### constructor

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

#### 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) |
| `recovery?` | [`QuestionRecovery`](/api/interfaces/browser.QuestionRecovery) \| () => `Promise`\<[`QuestionRecovery`](/api/interfaces/browser.QuestionRecovery)> |
| `bindQuestion?` | \<Args, Row>(`reference`: [`QuestionReference`](/api/modules/server#questionreference-2)\<`Args`, `Row`>) => `Promise`\<\{ `transport`: `ReturnType`\<typeof [`queryTransport`](/api/modules/browser#querytransport)> ; `binding?`: [`QuestionBinding`](/api/modules/browser#questionbinding)  }> |

## Methods

### ask

▸ **ask**\<`Args`, `Row`>(`query`, `args`, `options?`): [`QuestionRequest`](/api/classes/browser.QuestionRequest)\<`Row`>

#### Type parameters

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

#### Parameters

| Name | Type |
| :- | :- |
| `query` | [`QuestionReference`](/api/modules/server#questionreference-2)\<`Args`, `Row`> |
| `args` | `Args` |
| `options?` | `Object` |
| `options.signal?` | `AbortSignal` |
| `options.from?` | `Answer` |

#### Returns

[`QuestionRequest`](/api/classes/browser.QuestionRequest)\<`Row`>

▸ **ask**\<`Outputs`>(`relation`, `bounds?`): [`QuestionRequest`](/api/classes/browser.QuestionRequest)\<[`ProgramOutputTypes`](/api/modules/browser#programoutputtypes)\<`Outputs`>>

#### Type parameters

| Name | Type |
| :- | :- |
| `Outputs` | extends [`ProgramRelations`](/api/modules/browser#programrelations) |

#### Parameters

| Name | Type |
| :- | :- |
| `relation` | [`QuestionProgram`](/api/classes/server.QuestionProgram)\<`Outputs`> |
| `bounds?` | [`AnswerBounds`](/api/modules/browser#answerbounds) |

#### Returns

[`QuestionRequest`](/api/classes/browser.QuestionRequest)\<[`ProgramOutputTypes`](/api/modules/browser#programoutputtypes)\<`Outputs`>>

***

### retry

▸ **retry**(`reference`, `options?`): `Promise`\<[`QuestionRequest`](/api/classes/browser.QuestionRequest)>

#### Parameters

| Name | Type |
| :- | :- |
| `reference` | [`QuestionLocator`](/api/modules/browser#questionlocator) \| `string` |
| `options` | `Object` |
| `options.signal?` | `AbortSignal` |

#### Returns

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

***

### resume

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

#### Type parameters

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

#### Parameters

| Name | Type |
| :- | :- |
| `reference` | [`QuestionReference`](/api/modules/server#questionreference-2)\<`Args`, `Row`> |
| `id` | `string` |

#### Returns

[`QuestionRequest`](/api/classes/browser.QuestionRequest)\<`Row`>

▸ **resume**\<`Row`>(`reference`): [`QuestionRequest`](/api/classes/browser.QuestionRequest)\<`Row`>

#### Type parameters

| Name | Type |
| :- | :- |
| `Row` | `QuestionOutputTypes` |

#### Parameters

| Name | Type |
| :- | :- |
| `reference` | [`QuestionLocator`](/api/modules/browser#questionlocator) \| `string` |

#### Returns

[`QuestionRequest`](/api/classes/browser.QuestionRequest)\<`Row`>

***

### recoverable

▸ **recoverable**(): `AsyncGenerator`\<[`QuestionLocator`](/api/modules/browser#questionlocator)>

#### Returns

`AsyncGenerator`\<[`QuestionLocator`](/api/modules/browser#questionlocator)>

***

### explain

▸ **explain**\<`Args`, `Row`>(`query`, `args`, `options?`): `Promise`\<[`AnswerPlan`](/api/interfaces/server.AnswerPlan)>

#### Type parameters

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

#### Parameters

| Name | Type |
| :- | :- |
| `query` | [`QuestionReference`](/api/modules/server#questionreference-2)\<`Args`, `Row`> |
| `args` | `Args` |
| `options?` | [`ObservationOptions`](/api/modules/browser#observationoptions) |

#### Returns

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

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

#### Type parameters

| Name | Type |
| :- | :- |
| `Outputs` | extends [`ProgramRelations`](/api/modules/browser#programrelations) |

#### Parameters

| Name | Type |
| :- | :- |
| `relation` | [`QuestionProgram`](/api/classes/server.QuestionProgram)\<`Outputs`> |
| `bounds?` | [`AnswerBounds`](/api/modules/browser#answerbounds) |
| `options?` | [`ObservationOptions`](/api/modules/browser#observationoptions) |

#### Returns

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


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