> ## 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: PolicyBuilder<DataModel>

> Generates an ordinary internal policy query with the package's exact validators.

[server](/api/modules/server).PolicyBuilder

Generates an ordinary internal policy query with the package's exact validators.
Omitted resource decisions refuse; exceptions propagate. Policies remain current.

## Type parameters

| Name | Type |
| :- | :- |
| `DataModel` | extends [`GenericDataModel`](/api/modules/server#genericdatamodel) |

## Callable

### PolicyBuilder

▸ **PolicyBuilder**(`contract`, `definition`): [`RegisteredQuery`](/api/modules/server#registeredquery)\<`"internal"`, [`ComponentAccessArgs`](/api/modules/server#componentaccessargs-2), `Promise`\<[`ReadAccessResult`](/api/modules/server#readaccessresult)\[]>>

#### Parameters

| Name | Type |
| :- | :- |
| `contract` | typeof [`componentAccessPolicy`](/api/modules/server#componentaccesspolicy) |
| `definition` | [`ResourcePolicy`](/api/modules/server#resourcepolicy)\<`DataModel`> |

#### Returns

[`RegisteredQuery`](/api/modules/server#registeredquery)\<`"internal"`, [`ComponentAccessArgs`](/api/modules/server#componentaccessargs-2), `Promise`\<[`ReadAccessResult`](/api/modules/server#readaccessresult)\[]>>

### PolicyBuilder

▸ **PolicyBuilder**\<`Args`, `Result`>(`contract`, `definition`): [`RegisteredQuery`](/api/modules/server#registeredquery)\<`"internal"`, [`Expand`](/api/modules/server#expand)\<\{ \[Property in string | number | symbol]?: Exclude\<Infer\<Args\[Property]>, undefined> } & \{ \[Property in string | number | symbol]: Infer\<Args\[Property]> }>, `Promise`\<[`Infer`](/api/modules/values#infer)\<`Result`>>>

#### Type parameters

| Name | Type |
| :- | :- |
| `Args` | extends [`PropertyValidators`](/api/modules/values#propertyvalidators) |
| `Result` | extends [`GenericValidator`](/api/modules/values#genericvalidator) |

#### Parameters

| Name | Type |
| :- | :- |
| `contract` | [`PolicyContract`](/api/modules/server#policycontract)\<`Args`, `Result`> |
| `definition` | [`Inputs`](/api/modules/server#inputs)\<`DataModel`> & \{ `handler`: (`ctx`: [`Context`](/api/modules/server#context)\<`DataModel`>, `args`: [`Expand`](/api/modules/server#expand)\<\{ \[Property in string \| number \| symbol]?: Exclude\<Infer\<Args\[Property]>, undefined> } & \{ \[Property in string \| number \| symbol]: Infer\<Args\[Property]> }>) => [`Infer`](/api/modules/values#infer)\<`Result`> \| `Promise`\<[`Infer`](/api/modules/values#infer)\<`Result`>>  } |

#### Returns

[`RegisteredQuery`](/api/modules/server#registeredquery)\<`"internal"`, [`Expand`](/api/modules/server#expand)\<\{ \[Property in string | number | symbol]?: Exclude\<Infer\<Args\[Property]>, undefined> } & \{ \[Property in string | number | symbol]: Infer\<Args\[Property]> }>, `Promise`\<[`Infer`](/api/modules/values#infer)\<`Result`>>>


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