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

# Facilitator Package

> Server-side facilitator for verifying and settling x402 payments on-chain

# facilitator/src

## Type Aliases

### LegacyFacilitatorHandler

> **LegacyFacilitatorHandler** = `object`

Defined in: [packages/facilitator/src/adapters.ts:38](https://github.com/faremeter/faremeter/blob/main/packages/facilitator/src/adapters.ts#L38)

Legacy facilitator handler interface using pre-spec field names.
Use this to wrap old handlers that return txHash/networkId/error.

#### Properties

##### getRequirements()

> **getRequirements**: (`req`) => `Promise`\<`x402.x402PaymentRequirements`\[]>

Defined in: [packages/facilitator/src/adapters.ts:40](https://github.com/faremeter/faremeter/blob/main/packages/facilitator/src/adapters.ts#L40)

###### Parameters

###### req

`x402PaymentRequirementsV1Strict`\[]

###### Returns

`Promise`\<`x402.x402PaymentRequirements`\[]>

##### getSupported()?

> `optional` **getSupported**: () => `Promise`\<`x402.x402SupportedKind`>\[]

Defined in: [packages/facilitator/src/adapters.ts:39](https://github.com/faremeter/faremeter/blob/main/packages/facilitator/src/adapters.ts#L39)

###### Returns

`Promise`\<`x402.x402SupportedKind`>\[]

##### handleSettle()

> **handleSettle**: (`requirements`, `payment`) => `Promise`\<`x402.x402SettleResponseLegacy` | `null`>

Defined in: [packages/facilitator/src/adapters.ts:47](https://github.com/faremeter/faremeter/blob/main/packages/facilitator/src/adapters.ts#L47)

###### Parameters

###### requirements

`x402PaymentRequirementsV1Strict`

###### payment

`x402.x402PaymentPayload`

###### Returns

`Promise`\<`x402.x402SettleResponseLegacy` | `null`>

##### handleVerify()?

> `optional` **handleVerify**: (`requirements`, `payment`) => `Promise`\<`x402.x402VerifyResponse` | `null`>

Defined in: [packages/facilitator/src/adapters.ts:43](https://github.com/faremeter/faremeter/blob/main/packages/facilitator/src/adapters.ts#L43)

###### Parameters

###### requirements

`x402PaymentRequirementsV1Strict`

###### payment

`x402.x402PaymentPayload`

###### Returns

`Promise`\<`x402.x402VerifyResponse` | `null`>

## Functions

### adaptHandlerV1ToV2()

> **adaptHandlerV1ToV2**(`handler`): `FacilitatorHandler`

Defined in: [packages/facilitator/src/adapters.ts:57](https://github.com/faremeter/faremeter/blob/main/packages/facilitator/src/adapters.ts#L57)

Adapts a v1 FacilitatorHandler to the v2 interface.
Use this to wrap handlers from external packages that haven't been updated to v2 types.

#### Parameters

##### handler

[`LegacyFacilitatorHandler`](#legacyfacilitatorhandler)

#### Returns

`FacilitatorHandler`

***

### adaptPayloadV1ToV2()

> **adaptPayloadV1ToV2**(`payload`, `requirements`, `translateNetwork`): `object`

Defined in: packages/types/dist/src/x402-adapters.d.ts:53

Converts a v1 payment payload to v2 format.

#### Parameters

##### payload

The v1 payment payload

###### asset?

`string`

###### network

`string`

###### payload

`object`

###### scheme

`string`

###### x402Version

`number`

##### requirements

The v1 requirements used for resource extraction

###### asset

`string`

###### description

`string`

###### extra?

`object`

###### maxAmountRequired

`string`

###### maxTimeoutSeconds

`number`

###### mimeType?

`string`

###### network

`string`

###### outputSchema?

`object`

###### payTo

`string`

###### resource

`string`

###### scheme

`string`

##### translateNetwork

`NetworkTranslator`

Function to translate legacy network IDs to CAIP-2

#### Returns

`object`

The v2 payment payload

##### accepted

> **accepted**: `object`

###### accepted.amount

> **amount**: `string`

###### accepted.asset

> **asset**: `string`

###### accepted.extra?

> `optional` **extra**: `object`

###### accepted.maxTimeoutSeconds

> **maxTimeoutSeconds**: `number`

###### accepted.network

> **network**: `string`

###### accepted.payTo

> **payTo**: `string`

###### accepted.scheme

> **scheme**: `string`

##### extensions?

> `optional` **extensions**: `object`

##### payload

> **payload**: `object`

##### resource?

> `optional` **resource**: `object`

###### resource.description?

> `optional` **description**: `string`

###### resource.mimeType?

> `optional` **mimeType**: `string`

###### resource.url

> **url**: `string`

##### x402Version

> **x402Version**: `2`

***

### adaptPaymentRequiredResponseV1ToV2()

> **adaptPaymentRequiredResponseV1ToV2**(`v1Response`, `resourceURL`, `translateNetwork`): `object`

Defined in: packages/types/dist/src/x402-adapters.d.ts:62

Converts a v1 payment required response to v2 format.

#### Parameters

##### v1Response

The v1 payment required response

###### accepts

`object`\[]

###### error?

`string`

###### x402Version

`number`

##### resourceURL

`string`

The URL of the protected resource

##### translateNetwork

`NetworkTranslator`

Function to translate legacy network IDs to CAIP-2

#### Returns

`object`

The v2 payment required response

##### accepts

> **accepts**: `object`\[]

##### error?

> `optional` **error**: `string`

##### extensions?

> `optional` **extensions**: `object`

##### resource

> **resource**: `object`

###### resource.description?

> `optional` **description**: `string`

###### resource.mimeType?

> `optional` **mimeType**: `string`

###### resource.url

> **url**: `string`

##### x402Version

> **x402Version**: `2`

***

### adaptPaymentRequiredResponseV2ToV1()

> **adaptPaymentRequiredResponseV2ToV1**(`v2Response`, `translateNetwork?`): `object`

Defined in: packages/types/dist/src/x402-adapters.d.ts:70

Converts a v2 payment required response to v1 format.

#### Parameters

##### v2Response

The v2 payment required response

###### accepts

`object`\[]

###### error?

`string`

###### extensions?

`object`

###### resource

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

###### resource.description?

`string`

###### resource.mimeType?

`string`

###### resource.url

`string`

###### x402Version

`2`

##### translateNetwork?

`NetworkTranslator`

Optional function to translate CAIP-2 to legacy IDs

#### Returns

`object`

The v1 payment required response

##### accepts

> **accepts**: `object`\[]

##### error

> **error**: `string`

##### x402Version

> **x402Version**: `number`

***

### adaptRequirementsV1ToV2()

> **adaptRequirementsV1ToV2**(`req`, `translateNetwork`): `object`

Defined in: packages/types/dist/src/x402-adapters.d.ts:26

Converts v1 payment requirements to v2 format.

#### Parameters

##### req

The v1 payment requirements

###### asset

`string`

###### description

`string`

###### extra?

`object`

###### maxAmountRequired

`string`

###### maxTimeoutSeconds

`number`

###### mimeType?

`string`

###### network

`string`

###### outputSchema?

`object`

###### payTo

`string`

###### resource

`string`

###### scheme

`string`

##### translateNetwork

`NetworkTranslator`

Function to translate legacy network IDs to CAIP-2

#### Returns

`object`

The v2 payment requirements

##### amount

> **amount**: `string`

##### asset

> **asset**: `string`

##### extra?

> `optional` **extra**: `object`

##### maxTimeoutSeconds

> **maxTimeoutSeconds**: `number`

##### network

> **network**: `string`

##### payTo

> **payTo**: `string`

##### scheme

> **scheme**: `string`

***

### adaptRequirementsV2ToV1()

> **adaptRequirementsV2ToV1**(`req`, `resource`, `translateNetwork?`): `object` & `object`

Defined in: packages/types/dist/src/x402-adapters.d.ts:35

Converts v2 payment requirements to v1 format.

#### Parameters

##### req

The v2 payment requirements

###### amount

`string`

###### asset

`string`

###### extra?

`object`

###### maxTimeoutSeconds

`number`

###### network

`string`

###### payTo

`string`

###### scheme

`string`

##### resource

Resource information to populate v1 fields

###### description?

`string`

###### mimeType?

`string`

###### url

`string`

##### translateNetwork?

`NetworkTranslator`

Optional function to translate CAIP-2 to legacy IDs

#### Returns

`object` & `object`

The v1 payment requirements with mimeType guaranteed

***

### adaptSettleResponseLegacyToV2()

> **adaptSettleResponseLegacyToV2**(`res`): `object`

Defined in: packages/types/dist/src/x402-adapters.d.ts:107

Adapt legacy v1 settle response (with txHash/networkId/error) to v2 format.
Use this when receiving data from older clients that use legacy field names.

#### Parameters

##### res

###### error?

`null` | `string`

###### networkId

`null` | `string`

###### payer?

`string`

###### success

`boolean`

###### txHash

`null` | `string`

#### Returns

`object`

##### errorReason?

> `optional` **errorReason**: `string`

##### extensions?

> `optional` **extensions**: `object`

##### network

> **network**: `string`

##### payer?

> `optional` **payer**: `string`

##### success

> **success**: `boolean`

##### transaction

> **transaction**: `string`

***

### adaptSettleResponseLenientToV2()

> **adaptSettleResponseLenientToV2**(`res`): `object`

Defined in: packages/types/dist/src/x402-adapters.d.ts:113

Adapt a lenient v1 settle response (accepting either legacy or spec-compliant
field names) to v2 format. This is the most flexible adapter for parsing
incoming settle responses from unknown sources.

#### Parameters

##### res

###### error?

`null` | `string`

###### errorReason?

`null` | `string`

###### network?

`null` | `string`

###### networkId?

`null` | `string`

###### payer?

`string`

###### success

`boolean`

###### transaction?

`null` | `string`

###### txHash?

`null` | `string`

#### Returns

`object`

##### errorReason?

> `optional` **errorReason**: `string`

##### extensions?

> `optional` **extensions**: `object`

##### network

> **network**: `string`

##### payer?

> `optional` **payer**: `string`

##### success

> **success**: `boolean`

##### transaction

> **transaction**: `string`

***

### adaptSettleResponseV1ToV2()

> **adaptSettleResponseV1ToV2**(`res`): `object`

Defined in: packages/types/dist/src/x402-adapters.d.ts:102

Adapt v1 settle response to v2 format.
Accepts lenient input that may have optional/nullable fields from older handlers.

#### Parameters

##### res

###### error?

`null` | `string`

###### errorReason?

`null` | `string`

###### network?

`null` | `string`

###### networkId?

`null` | `string`

###### payer?

`string`

###### success

`boolean`

###### transaction?

`null` | `string`

###### txHash?

`null` | `string`

#### Returns

`object`

##### errorReason?

> `optional` **errorReason**: `string`

##### extensions?

> `optional` **extensions**: `object`

##### network

> **network**: `string`

##### payer?

> `optional` **payer**: `string`

##### success

> **success**: `boolean`

##### transaction

> **transaction**: `string`

***

### adaptSettleResponseV2ToV1()

> **adaptSettleResponseV2ToV1**(`res`, `translateNetwork?`): `object`

Defined in: packages/types/dist/src/x402-adapters.d.ts:90

Adapt v2 settle response to spec-compliant v1 format.
Since v1 spec uses the same field names as v2 (transaction, network, errorReason),
this is primarily a network translation pass.

#### Parameters

##### res

###### errorReason?

`string`

###### extensions?

`object`

###### network

`string`

###### payer?

`string`

###### success

`boolean`

###### transaction

`string`

##### translateNetwork?

`NetworkTranslator`

#### Returns

`object`

##### errorReason?

> `optional` **errorReason**: `string`

##### network

> **network**: `string`

##### payer

> **payer**: `string`

##### success

> **success**: `boolean`

##### transaction

> **transaction**: `string`

***

### ~~adaptSettleResponseV2ToV1Legacy()~~

> **adaptSettleResponseV2ToV1Legacy**(`res`, `translateNetwork?`): `object`

Defined in: packages/types/dist/src/x402-adapters.d.ts:97

Adapt v2 settle response to legacy v1 format with old field names.
Use this only for backward compatibility with clients expecting
txHash/networkId/error field names.

#### Parameters

##### res

###### errorReason?

`string`

###### extensions?

`object`

###### network

`string`

###### payer?

`string`

###### success

`boolean`

###### transaction

`string`

##### translateNetwork?

`NetworkTranslator`

#### Returns

`object`

##### ~~error?~~

> `optional` **error**: `null` | `string`

##### ~~networkId~~

> **networkId**: `null` | `string`

##### ~~payer?~~

> `optional` **payer**: `string`

##### ~~success~~

> **success**: `boolean`

##### ~~txHash~~

> **txHash**: `null` | `string`

#### Deprecated

Prefer adaptSettleResponseV2ToV1 for spec-compliant output

***

### adaptSupportedKindV1ToV2()

> **adaptSupportedKindV1ToV2**(`kind`, `translateNetwork`): `object`

Defined in: packages/types/dist/src/x402-adapters.d.ts:129

Converts a v1 supported kind to v2 format.

#### Parameters

##### kind

The v1 supported kind

###### extra?

`object`

###### network

`string`

###### scheme

`string`

###### x402Version

`number`

##### translateNetwork

`NetworkTranslator`

Function to translate legacy network IDs to CAIP-2

#### Returns

`object`

The v2 supported kind

##### extra?

> `optional` **extra**: `object`

##### network

> **network**: `string`

##### scheme

> **scheme**: `string`

##### x402Version

> **x402Version**: `2`

***

### adaptSupportedKindV2ToV1()

> **adaptSupportedKindV2ToV1**(`kind`, `translateNetwork?`): `object`

Defined in: packages/types/dist/src/x402-adapters.d.ts:121

Converts a v2 supported kind to v1 format.

#### Parameters

##### kind

The v2 supported kind

###### extra?

`object`

###### network

`string`

###### scheme

`string`

###### x402Version

`2`

##### translateNetwork?

`NetworkTranslator`

Optional function to translate CAIP-2 to legacy IDs

#### Returns

`object`

The v1 supported kind

##### extra?

> `optional` **extra**: `object`

##### network

> **network**: `string`

##### scheme

> **scheme**: `string`

##### x402Version

> **x402Version**: `1` | `2`

***

### adaptVerifyResponseV1ToV2()

> **adaptVerifyResponseV1ToV2**(`res`): `object`

Defined in: packages/types/dist/src/x402-adapters.d.ts:84

Converts a v1 verify response to v2 format.

#### Parameters

##### res

The v1 verify response (lenient)

###### invalidReason?

`null` | `string`

###### isValid

`boolean`

###### payer?

`string`

#### Returns

`object`

The v2 verify response

##### invalidReason?

> `optional` **invalidReason**: `string`

##### isValid

> **isValid**: `boolean`

##### payer?

> `optional` **payer**: `string`

***

### adaptVerifyResponseV2ToV1()

> **adaptVerifyResponseV2ToV1**(`res`): `object`

Defined in: packages/types/dist/src/x402-adapters.d.ts:77

Converts a v2 verify response to v1 format.

#### Parameters

##### res

The v2 verify response

###### invalidReason?

`string`

###### isValid

`boolean`

###### payer?

`string`

#### Returns

`object`

The v1 verify response

##### invalidReason?

> `optional` **invalidReason**: `string`

##### isValid

> **isValid**: `boolean`

##### payer

> **payer**: `string`

***

### createFacilitatorRoutes()

> **createFacilitatorRoutes**(`args`): `Hono`\<`BlankEnv`, `BlankSchema`, `"/"`>

Defined in: [packages/facilitator/src/routes.ts:121](https://github.com/faremeter/faremeter/blob/main/packages/facilitator/src/routes.ts#L121)

Creates a Hono router with x402 facilitator endpoints.

The router provides the following endpoints:

* POST /verify - Verify a payment without settling
* POST /settle - Verify and settle a payment
* POST /accepts - Get payment requirements for a resource
* GET /supported - List supported payment schemes and networks

Both v1 and v2 protocol formats are supported on all endpoints.

#### Parameters

##### args

`CreateFacilitatorRoutesArgs`

Configuration including payment handlers and timeouts

#### Returns

`Hono`\<`BlankEnv`, `BlankSchema`, `"/"`>

A Hono router instance with facilitator endpoints

***

### extractResourceInfoV1()

> **extractResourceInfoV1**(`req`): `object`

Defined in: packages/types/dist/src/x402-adapters.d.ts:44

Extracts resource information from v1 payment requirements.

#### Parameters

##### req

The v1 payment requirements containing resource fields

###### asset

`string`

###### description

`string`

###### extra?

`object`

###### maxAmountRequired

`string`

###### maxTimeoutSeconds

`number`

###### mimeType?

`string`

###### network

`string`

###### outputSchema?

`object`

###### payTo

`string`

###### resource

`string`

###### scheme

`string`

#### Returns

`object`

The extracted resource information

##### description?

> `optional` **description**: `string`

##### mimeType?

> `optional` **mimeType**: `string`

##### url

> **url**: `string`

***

### getClientIP()

> **getClientIP**(`c`): `undefined` | `string`

Defined in: [packages/facilitator/src/routes.ts:86](https://github.com/faremeter/faremeter/blob/main/packages/facilitator/src/routes.ts#L86)

#### Parameters

##### c

`Context`

#### Returns

`undefined` | `string`
