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

# Solana Charge Payment Scheme

> MPP charge-based payment handlers for Solana

# charge

## Interfaces

### ReplayStore

Defined in: [packages/payment-solana/src/charge/replay.ts:7](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/replay.ts#L7)

Replay protection store for MPP challenge IDs.

`consume` atomically checks whether an ID is valid and marks it as
used, preventing TOCTOU races in concurrent settlement attempts.

#### Methods

##### add()

> **add**(`id`, `expiresAt?`): `Promise`\<`void`>

Defined in: [packages/payment-solana/src/charge/replay.ts:9](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/replay.ts#L9)

###### Parameters

###### id

`string`

###### expiresAt?

`number`

###### Returns

`Promise`\<`void`>

##### consume()

> **consume**(`id`): `Promise`\<`boolean`>

Defined in: [packages/payment-solana/src/charge/replay.ts:8](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/replay.ts#L8)

###### Parameters

###### id

`string`

###### Returns

`Promise`\<`boolean`>

## Type Aliases

### CreateMPPSolanaChargeClientArgs

> **CreateMPPSolanaChargeClientArgs** = `object`

Defined in: [packages/payment-solana/src/charge/client.ts:119](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/client.ts#L119)

#### Properties

##### broadcast?

> `optional` **broadcast**: `boolean`

Defined in: [packages/payment-solana/src/charge/client.ts:124](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/client.ts#L124)

##### mint

> **mint**: `Address` | \{ `toBase58`: `string`; }

Defined in: [packages/payment-solana/src/charge/client.ts:121](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/client.ts#L121)

##### rpc?

> `optional` **rpc**: `Rpc`\<`SolanaRpcApi`> | `string`

Defined in: [packages/payment-solana/src/charge/client.ts:122](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/client.ts#L122)

##### tokenProgramId?

> `optional` **tokenProgramId**: `Address` | \{ `toBase58`: `string`; }

Defined in: [packages/payment-solana/src/charge/client.ts:123](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/client.ts#L123)

##### wallet

> **wallet**: [`Wallet`](/api/payment-solana.src.Namespace.exact#wallet)

Defined in: [packages/payment-solana/src/charge/client.ts:120](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/client.ts#L120)

***

### CreateMPPSolanaChargeHandlerArgs

> **CreateMPPSolanaChargeHandlerArgs** = `object`

Defined in: [packages/payment-solana/src/charge/server.ts:92](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L92)

#### Properties

##### feePayerSigner?

> `optional` **feePayerSigner**: `KeyPairSigner` | \{ `publicKey`: \{ `toBase58`: `string`; }; `secretKey`: `Uint8Array`; }

Defined in: [packages/payment-solana/src/charge/server.ts:95](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L95)

##### maxPriorityFee?

> `optional` **maxPriorityFee**: `number`

Defined in: [packages/payment-solana/src/charge/server.ts:104](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L104)

##### maxRetries?

> `optional` **maxRetries**: `number`

Defined in: [packages/payment-solana/src/charge/server.ts:102](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L102)

##### mint

> **mint**: `Address` | \{ `toBase58`: `string`; }

Defined in: [packages/payment-solana/src/charge/server.ts:98](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L98)

##### network

> **network**: `string` | [`SolanaCAIP2Network`](/api/info.src.Namespace.solana#solanacaip2network)

Defined in: [packages/payment-solana/src/charge/server.ts:93](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L93)

##### realm

> **realm**: `string`

Defined in: [packages/payment-solana/src/charge/server.ts:100](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L100)

##### replayStore

> **replayStore**: [`ReplayStore`](#replaystore)

Defined in: [packages/payment-solana/src/charge/server.ts:99](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L99)

##### retryDelayMs?

> `optional` **retryDelayMs**: `number`

Defined in: [packages/payment-solana/src/charge/server.ts:103](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L103)

##### rpc

> **rpc**: `Rpc`\<`SolanaRpcApi`> | `string`

Defined in: [packages/payment-solana/src/charge/server.ts:94](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L94)

##### secretKey

> **secretKey**: `Uint8Array`

Defined in: [packages/payment-solana/src/charge/server.ts:101](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L101)

***

### CreateMPPSolanaNativeChargeClientArgs

> **CreateMPPSolanaNativeChargeClientArgs** = `object`

Defined in: [packages/payment-solana/src/charge/client.ts:251](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/client.ts#L251)

#### Properties

##### broadcast?

> `optional` **broadcast**: `boolean`

Defined in: [packages/payment-solana/src/charge/client.ts:254](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/client.ts#L254)

##### rpc?

> `optional` **rpc**: `Rpc`\<`SolanaRpcApi`> | `string`

Defined in: [packages/payment-solana/src/charge/client.ts:253](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/client.ts#L253)

##### wallet

> **wallet**: [`Wallet`](/api/payment-solana.src.Namespace.exact#wallet)

Defined in: [packages/payment-solana/src/charge/client.ts:252](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/client.ts#L252)

***

### CreateMPPSolanaNativeChargeHandlerArgs

> **CreateMPPSolanaNativeChargeHandlerArgs** = `object`

Defined in: [packages/payment-solana/src/charge/server.ts:420](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L420)

#### Properties

##### feePayerSigner?

> `optional` **feePayerSigner**: `KeyPairSigner` | \{ `publicKey`: \{ `toBase58`: `string`; }; `secretKey`: `Uint8Array`; }

Defined in: [packages/payment-solana/src/charge/server.ts:423](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L423)

##### maxPriorityFee?

> `optional` **maxPriorityFee**: `number`

Defined in: [packages/payment-solana/src/charge/server.ts:431](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L431)

##### maxRetries?

> `optional` **maxRetries**: `number`

Defined in: [packages/payment-solana/src/charge/server.ts:429](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L429)

##### network

> **network**: `string` | [`SolanaCAIP2Network`](/api/info.src.Namespace.solana#solanacaip2network)

Defined in: [packages/payment-solana/src/charge/server.ts:421](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L421)

##### realm

> **realm**: `string`

Defined in: [packages/payment-solana/src/charge/server.ts:427](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L427)

##### replayStore

> **replayStore**: [`ReplayStore`](#replaystore)

Defined in: [packages/payment-solana/src/charge/server.ts:426](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L426)

##### retryDelayMs?

> `optional` **retryDelayMs**: `number`

Defined in: [packages/payment-solana/src/charge/server.ts:430](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L430)

##### rpc

> **rpc**: `Rpc`\<`SolanaRpcApi`> | `string`

Defined in: [packages/payment-solana/src/charge/server.ts:422](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L422)

##### secretKey

> **secretKey**: `Uint8Array`

Defined in: [packages/payment-solana/src/charge/server.ts:428](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L428)

## Functions

### createInMemoryReplayStore()

> **createInMemoryReplayStore**(): [`ReplayStore`](#replaystore)

Defined in: [packages/payment-solana/src/charge/replay.ts:12](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/replay.ts#L12)

#### Returns

[`ReplayStore`](#replaystore)

***

### createMPPSolanaChargeClient()

> **createMPPSolanaChargeClient**(`args`): `MPPPaymentHandler`

Defined in: [packages/payment-solana/src/charge/client.ts:127](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/client.ts#L127)

#### Parameters

##### args

[`CreateMPPSolanaChargeClientArgs`](#createmppsolanachargeclientargs)

#### Returns

`MPPPaymentHandler`

***

### createMPPSolanaChargeHandler()

> **createMPPSolanaChargeHandler**(`args`): `Promise`\<`MPPMethodHandler`>

Defined in: [packages/payment-solana/src/charge/server.ts:207](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L207)

#### Parameters

##### args

[`CreateMPPSolanaChargeHandlerArgs`](#createmppsolanachargehandlerargs)

#### Returns

`Promise`\<`MPPMethodHandler`>

***

### createMPPSolanaNativeChargeClient()

> **createMPPSolanaNativeChargeClient**(`args`): `MPPPaymentHandler`

Defined in: [packages/payment-solana/src/charge/client.ts:257](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/client.ts#L257)

#### Parameters

##### args

[`CreateMPPSolanaNativeChargeClientArgs`](#createmppsolananativechargeclientargs)

#### Returns

`MPPPaymentHandler`

***

### createMPPSolanaNativeChargeHandler()

> **createMPPSolanaNativeChargeHandler**(`args`): `Promise`\<`MPPMethodHandler`>

Defined in: [packages/payment-solana/src/charge/server.ts:434](https://github.com/faremeter/faremeter/blob/main/packages/payment-solana/src/charge/server.ts#L434)

#### Parameters

##### args

[`CreateMPPSolanaNativeChargeHandlerArgs`](#createmppsolananativechargehandlerargs)

#### Returns

`Promise`\<`MPPMethodHandler`>


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