> ## Documentation Index
> Fetch the complete documentation index at: https://docs.faremeter.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# x402 Handler Utilities

> Bridges ResourcePricing and FacilitatorHandler to x402 types

# x402Handlers

## Functions

### narrowHandlers()

> **narrowHandlers**(`handlers`, `criteria`): [`FacilitatorHandler`](/api/types.src.Namespace.facilitator#facilitatorhandler)\[]

Defined in: [packages/types/src/x402-handlers.ts:39](https://github.com/faremeter/faremeter/blob/main/packages/types/src/x402-handlers.ts#L39)

Returns handlers whose capabilities match the given network and asset.
Handlers without capabilities are excluded.

Empty `networks` or `assets` arrays act as wildcards (match everything).
This supports the HTTP handler backward-compat path where the handler
delegates all routing to the remote facilitator.

#### Parameters

##### handlers

[`FacilitatorHandler`](/api/types.src.Namespace.facilitator#facilitatorhandler)\[]

##### criteria

###### asset

`string`

###### network

`string`

#### Returns

[`FacilitatorHandler`](/api/types.src.Namespace.facilitator#facilitatorhandler)\[]

***

### resolveX402Requirements()

> **resolveX402Requirements**(`handlers`, `pricing`, `resource`, `opts?`): `Promise`\<`object`\[]>

Defined in: [packages/types/src/x402-handlers.ts:81](https://github.com/faremeter/faremeter/blob/main/packages/types/src/x402-handlers.ts#L81)

Converts [ResourcePricing](/api/types.src.Namespace.pricing#resourcepricing) entries into enriched
[x402PaymentRequirements](/api/types.src.Namespace.x402v2#x402paymentrequirements-1) by routing through handlers.

For each handler with capabilities, matches pricing entries by network
and asset, constructs skeletal x402 requirements using the handler's
declared schemes, then calls `handler.getRequirements()` to enrich
them with protocol-specific fields (extras, timeouts, etc.).

Handlers without capabilities are skipped. If a handler throws,
the exception propagates to the caller.

#### Parameters

##### handlers

[`FacilitatorHandler`](/api/types.src.Namespace.facilitator#facilitatorhandler)\[]

##### pricing

[`ResourcePricing`](/api/types.src.Namespace.pricing#resourcepricing)\[]

##### resource

`string`

##### opts?

`ResolveOpts`

#### Returns

`Promise`\<`object`\[]>

***

### settleX402Payment()

> **settleX402Payment**(`handlers`, `requirements`, `payment`): `Promise`\<\{ `errorReason?`: `string`; `extensions?`: `object`; `network`: `string`; `payer?`: `string`; `success`: `boolean`; `transaction`: `string`; }>

Defined in: [packages/types/src/x402-handlers.ts:126](https://github.com/faremeter/faremeter/blob/main/packages/types/src/x402-handlers.ts#L126)

Routes a settlement request to the appropriate handler.

Narrows handlers by capabilities (network + asset), then iterates
`handleSettle` until one returns a non-null result. If a handler
throws, the exception propagates immediately.

#### Parameters

##### handlers

[`FacilitatorHandler`](/api/types.src.Namespace.facilitator#facilitatorhandler)\[]

##### requirements

###### amount

`string` = `"string.numeric"`

###### asset

`string` = `"string"`

###### extra?

`object` = `"object"`

###### maxTimeoutSeconds

`number` = `"number.integer"`

###### network

`string` = `"string"`

###### payTo

`string` = `"string"`

###### scheme

`string` = `"string"`

##### payment

###### accepted

\{ `amount`: `string`; `asset`: `string`; `extra?`: `object`; `maxTimeoutSeconds`: `number`; `network`: `string`; `payTo`: `string`; `scheme`: `string`; } = `x402PaymentRequirements`

###### accepted.amount

`string` = `"string.numeric"`

###### accepted.asset

`string` = `"string"`

###### accepted.extra?

`object` = `"object"`

###### accepted.maxTimeoutSeconds

`number` = `"number.integer"`

###### accepted.network

`string` = `"string"`

###### accepted.payTo

`string` = `"string"`

###### accepted.scheme

`string` = `"string"`

###### extensions?

`object` = `"object"`

###### payload

`object` = `"object"`

###### resource?

\{ `description?`: `string`; `mimeType?`: `string`; `url`: `string`; } = `x402ResourceInfo`

###### resource.description?

`string` = `"string"`

###### resource.mimeType?

`string` = `"string"`

###### resource.url

`string` = `"string"`

###### x402Version

`2` = `"2"`

#### Returns

`Promise`\<\{ `errorReason?`: `string`; `extensions?`: `object`; `network`: `string`; `payer?`: `string`; `success`: `boolean`; `transaction`: `string`; }>

***

### verifyX402Payment()

> **verifyX402Payment**(`handlers`, `requirements`, `payment`): `Promise`\<\{ `invalidReason?`: `string`; `isValid`: `boolean`; `payer?`: `string`; }>

Defined in: [packages/types/src/x402-handlers.ts:149](https://github.com/faremeter/faremeter/blob/main/packages/types/src/x402-handlers.ts#L149)

Routes a verification request to the appropriate handler.

Same pattern as [settleX402Payment](#settlex402payment) but calls `handleVerify`.
Handlers without `handleVerify` are skipped.

#### Parameters

##### handlers

[`FacilitatorHandler`](/api/types.src.Namespace.facilitator#facilitatorhandler)\[]

##### requirements

###### amount

`string` = `"string.numeric"`

###### asset

`string` = `"string"`

###### extra?

`object` = `"object"`

###### maxTimeoutSeconds

`number` = `"number.integer"`

###### network

`string` = `"string"`

###### payTo

`string` = `"string"`

###### scheme

`string` = `"string"`

##### payment

###### accepted

\{ `amount`: `string`; `asset`: `string`; `extra?`: `object`; `maxTimeoutSeconds`: `number`; `network`: `string`; `payTo`: `string`; `scheme`: `string`; } = `x402PaymentRequirements`

###### accepted.amount

`string` = `"string.numeric"`

###### accepted.asset

`string` = `"string"`

###### accepted.extra?

`object` = `"object"`

###### accepted.maxTimeoutSeconds

`number` = `"number.integer"`

###### accepted.network

`string` = `"string"`

###### accepted.payTo

`string` = `"string"`

###### accepted.scheme

`string` = `"string"`

###### extensions?

`object` = `"object"`

###### payload

`object` = `"object"`

###### resource?

\{ `description?`: `string`; `mimeType?`: `string`; `url`: `string`; } = `x402ResourceInfo`

###### resource.description?

`string` = `"string"`

###### resource.mimeType?

`string` = `"string"`

###### resource.url

`string` = `"string"`

###### x402Version

`2` = `"2"`

#### Returns

`Promise`\<\{ `invalidReason?`: `string`; `isValid`: `boolean`; `payer?`: `string`; }>
