@bankofai/x402 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +70 -89
  2. package/dist/abi.d.ts +20 -4
  3. package/dist/abi.d.ts.map +1 -1
  4. package/dist/abi.js +13 -4
  5. package/dist/abi.js.map +1 -1
  6. package/dist/client/policies.d.ts +13 -3
  7. package/dist/client/policies.d.ts.map +1 -1
  8. package/dist/client/policies.js +28 -4
  9. package/dist/client/policies.js.map +1 -1
  10. package/dist/client/x402Client.d.ts +19 -6
  11. package/dist/client/x402Client.d.ts.map +1 -1
  12. package/dist/client/x402Client.js +22 -1
  13. package/dist/client/x402Client.js.map +1 -1
  14. package/dist/config.d.ts +35 -0
  15. package/dist/config.d.ts.map +1 -1
  16. package/dist/config.js +85 -0
  17. package/dist/config.js.map +1 -1
  18. package/dist/mechanisms/exact.d.ts.map +1 -1
  19. package/dist/mechanisms/exact.js +2 -2
  20. package/dist/mechanisms/exact.js.map +1 -1
  21. package/dist/mechanisms/exactEvm.d.ts.map +1 -1
  22. package/dist/mechanisms/exactEvm.js +2 -2
  23. package/dist/mechanisms/exactEvm.js.map +1 -1
  24. package/dist/mechanisms/exactGasfree.d.ts +11 -0
  25. package/dist/mechanisms/exactGasfree.d.ts.map +1 -0
  26. package/dist/mechanisms/exactGasfree.js +136 -0
  27. package/dist/mechanisms/exactGasfree.js.map +1 -0
  28. package/dist/mechanisms/gasfree.d.ts +8 -0
  29. package/dist/mechanisms/gasfree.d.ts.map +1 -0
  30. package/dist/mechanisms/gasfree.js +125 -0
  31. package/dist/mechanisms/gasfree.js.map +1 -0
  32. package/dist/mechanisms/index.d.ts +1 -0
  33. package/dist/mechanisms/index.d.ts.map +1 -1
  34. package/dist/mechanisms/index.js +2 -0
  35. package/dist/mechanisms/index.js.map +1 -1
  36. package/dist/mechanisms/nativeExactEvm.d.ts.map +1 -1
  37. package/dist/mechanisms/nativeExactEvm.js +2 -2
  38. package/dist/mechanisms/nativeExactEvm.js.map +1 -1
  39. package/dist/mechanisms/nativeExactTron.d.ts.map +1 -1
  40. package/dist/mechanisms/nativeExactTron.js +2 -2
  41. package/dist/mechanisms/nativeExactTron.js.map +1 -1
  42. package/dist/signers/evmSigner.d.ts +3 -4
  43. package/dist/signers/evmSigner.d.ts.map +1 -1
  44. package/dist/signers/evmSigner.js +15 -21
  45. package/dist/signers/evmSigner.js.map +1 -1
  46. package/dist/signers/signer.d.ts +8 -12
  47. package/dist/signers/signer.d.ts.map +1 -1
  48. package/dist/signers/signer.js +56 -54
  49. package/dist/signers/signer.js.map +1 -1
  50. package/dist/utils/gasfree.d.ts +123 -0
  51. package/dist/utils/gasfree.d.ts.map +1 -0
  52. package/dist/utils/gasfree.js +228 -0
  53. package/dist/utils/gasfree.js.map +1 -0
  54. package/dist/utils/index.d.ts +1 -0
  55. package/dist/utils/index.d.ts.map +1 -1
  56. package/dist/utils/index.js +1 -0
  57. package/dist/utils/index.js.map +1 -1
  58. package/package.json +15 -14
package/README.md CHANGED
@@ -1,15 +1,15 @@
1
1
  # @bankofai/x402
2
2
 
3
- TypeScript client SDK for the x402 payment protocol on TRON blockchain. Enable pay-per-request APIs with automatic HTTP 402 payment handling.
3
+ TypeScript SDK for the x402 payment protocol. Supports TRON and EVM (BSC) networks with automatic HTTP 402 payment handling.
4
4
 
5
5
  ## Features
6
6
 
7
7
  - 🔐 **Automatic Payment Handling** - Transparently handles HTTP 402 Payment Required responses
8
- - ⛓️ **TRON Native** - Built for TRON Mainnet, Shasta, and Nile testnets
9
- - 🔑 **TIP-712 Signing** - Secure cryptographic signatures using TRON's EIP-712 implementation
10
- - 💰 **Token Approval Management** - Automatic ERC20 token allowance handling
8
+ - ⛓️ **Multi-Chain** - TRON (Mainnet, Nile, Shasta) and EVM/BSC (Mainnet, Testnet)
9
+ - 🔑 **TIP-712 / EIP-712 Signing** - Secure cryptographic signatures
10
+ - 💰 **GasFree Support** - Pay with USDT/USDD on TRON without holding TRX for gas
11
11
  - 🚀 **Simple Integration** - Just 3 lines of code to get started
12
- - 📦 **Zero Dependencies** - Only requires `tronweb` as peer dependency
12
+ - 📦 **Lightweight** - Minimal dependencies (`tronweb` for TRON, `viem` for EVM)
13
13
 
14
14
  ## Installation
15
15
 
@@ -20,28 +20,21 @@ npm i @bankofai/x402 tronweb
20
20
  ## Quick Start
21
21
 
22
22
  ```typescript
23
- import TronWeb from 'tronweb';
24
23
  import {
25
24
  X402Client,
26
25
  X402FetchClient,
27
- ExactTronClientMechanism,
26
+ ExactPermitTronClientMechanism,
28
27
  TronClientSigner,
29
28
  } from '@bankofai/x402';
30
29
 
31
- // 1. Initialize TronWeb
32
- const tronWeb = new TronWeb({
33
- fullHost: 'https://nile.trongrid.io',
34
- privateKey: 'your_private_key_here',
35
- });
36
-
37
- // 2. Create signer and register payment mechanism
38
- const signer = TronClientSigner.withPrivateKey(tronWeb, 'your_private_key_here', 'nile');
39
- const x402Client = new X402Client().register('tron:*', new ExactTronClientMechanism(signer));
30
+ // 1. Create signer and register payment mechanism
31
+ const signer = new TronClientSigner(process.env.TRON_PRIVATE_KEY);
32
+ const x402Client = new X402Client().register('tron:*', new ExactPermitTronClientMechanism(signer));
40
33
 
41
- // 3. Create HTTP client with automatic 402 handling
34
+ // 2. Create HTTP client with automatic 402 handling
42
35
  const client = new X402FetchClient(x402Client);
43
36
 
44
- // 4. Make requests - payments are handled automatically!
37
+ // 3. Make requests - payments are handled automatically!
45
38
  const response = await client.get('https://api.example.com/premium-data');
46
39
  const data = await response.json();
47
40
  console.log(data);
@@ -63,8 +56,9 @@ When you make a request to a protected resource:
63
56
 
64
57
  - **`X402Client`** - Core payment client that manages payment mechanisms
65
58
  - **`X402FetchClient`** - HTTP client wrapper with automatic 402 handling
66
- - **`TronClientSigner`** - Signs payment permits using TIP-712
67
- - **`ExactTronClientMechanism`** - Implements the "exact" payment scheme for TRON
59
+ - **`TronClientSigner`** / **`EvmClientSigner`** - Sign payment permits using TIP-712 / EIP-712
60
+ - **`ExactPermitTronClientMechanism`** - Implements the "exact_permit" payment scheme for TRON
61
+ - **`ExactGasFreeClientMechanism`** - Implements the "exact_gasfree" scheme (no TRX gas needed)
68
62
 
69
63
  ## API Reference
70
64
 
@@ -83,8 +77,8 @@ const x402Client = new X402Client();
83
77
  Register a payment mechanism for a network pattern.
84
78
 
85
79
  ```typescript
86
- x402Client.register('tron:*', new ExactTronClientMechanism(signer));
87
- x402Client.register('tron:nile', new ExactTronClientMechanism(nileSigner));
80
+ x402Client.register('tron:*', new ExactPermitTronClientMechanism(signer));
81
+ x402Client.register('tron:nile', new ExactPermitTronClientMechanism(nileSigner));
88
82
  ```
89
83
 
90
84
  ##### `selectPaymentRequirements(accepts: PaymentRequirements[], filters?: PaymentRequirementsFilter): PaymentRequirements`
@@ -147,22 +141,8 @@ const response = await client.request('https://api.example.com/data', {
147
141
 
148
142
  Signer for creating payment permits using TIP-712.
149
143
 
150
- #### Static Methods
151
-
152
- ##### `withPrivateKey(tronWeb: TronWeb, privateKey: string, network?: TronNetwork): TronClientSigner`
153
-
154
- Create a signer with an explicit private key.
155
-
156
- ```typescript
157
- const signer = TronClientSigner.withPrivateKey(tronWeb, '0x...', 'nile');
158
- ```
159
-
160
- ##### `fromTronWeb(tronWeb: TronWeb, network?: TronNetwork): TronClientSigner`
161
-
162
- Create a signer from a TronWeb instance (uses default private key).
163
-
164
144
  ```typescript
165
- const signer = TronClientSigner.fromTronWeb(tronWeb, 'mainnet');
145
+ const signer = new TronClientSigner(privateKey);
166
146
  ```
167
147
 
168
148
  #### Instance Methods
@@ -191,12 +171,28 @@ Ensure sufficient token allowance, approving if necessary.
191
171
  await signer.ensureAllowance(tokenAddress, BigInt(1000000), 'tron:nile', 'auto');
192
172
  ```
193
173
 
194
- ### ExactTronClientMechanism
174
+ ### EvmClientSigner
175
+
176
+ Signer for creating payment permits using EIP-712 (BSC and other EVM networks).
177
+
178
+ ```typescript
179
+ const signer = new EvmClientSigner(privateKey);
180
+ ```
181
+
182
+ ### ExactPermitTronClientMechanism
183
+
184
+ Payment mechanism implementing the "exact_permit" scheme for TRON.
185
+
186
+ ```typescript
187
+ const mechanism = new ExactPermitTronClientMechanism(signer);
188
+ ```
189
+
190
+ ### ExactGasFreeClientMechanism
195
191
 
196
- Payment mechanism implementing the "exact" scheme for TRON.
192
+ Payment mechanism implementing the "exact_gasfree" scheme for TRON (no TRX gas needed).
197
193
 
198
194
  ```typescript
199
- const mechanism = new ExactTronClientMechanism(signer);
195
+ const mechanism = new ExactGasFreeClientMechanism(signer);
200
196
  ```
201
197
 
202
198
  ## Usage Examples
@@ -204,16 +200,10 @@ const mechanism = new ExactTronClientMechanism(signer);
204
200
  ### Basic Usage with Automatic Payment
205
201
 
206
202
  ```typescript
207
- import TronWeb from 'tronweb';
208
- import { X402Client, X402FetchClient, ExactTronClientMechanism, TronClientSigner } from '@bankofai/x402';
203
+ import { X402Client, X402FetchClient, ExactPermitTronClientMechanism, TronClientSigner } from '@bankofai/x402';
209
204
 
210
- const tronWeb = new TronWeb({
211
- fullHost: 'https://nile.trongrid.io',
212
- privateKey: process.env.TRON_PRIVATE_KEY,
213
- });
214
-
215
- const signer = TronClientSigner.withPrivateKey(tronWeb, process.env.TRON_PRIVATE_KEY, 'nile');
216
- const x402Client = new X402Client().register('tron:*', new ExactTronClientMechanism(signer));
205
+ const signer = new TronClientSigner(process.env.TRON_PRIVATE_KEY);
206
+ const x402Client = new X402Client().register('tron:*', new ExactPermitTronClientMechanism(signer));
217
207
  const client = new X402FetchClient(x402Client);
218
208
 
219
209
  // Automatic payment handling
@@ -225,12 +215,10 @@ console.log(weather);
225
215
  ### Manual Payment Handling
226
216
 
227
217
  ```typescript
228
- import TronWeb from 'tronweb';
229
- import { X402Client, ExactTronClientMechanism, TronClientSigner, encodePaymentPayload } from '@bankofai/x402';
218
+ import { X402Client, ExactPermitTronClientMechanism, TronClientSigner, encodePaymentPayload } from '@bankofai/x402';
230
219
 
231
- const tronWeb = new TronWeb({ fullHost: 'https://nile.trongrid.io', privateKey: process.env.TRON_PRIVATE_KEY });
232
- const signer = TronClientSigner.withPrivateKey(tronWeb, process.env.TRON_PRIVATE_KEY, 'nile');
233
- const x402Client = new X402Client().register('tron:*', new ExactTronClientMechanism(signer));
220
+ const signer = new TronClientSigner(process.env.TRON_PRIVATE_KEY);
221
+ const x402Client = new X402Client().register('tron:*', new ExactPermitTronClientMechanism(signer));
234
222
 
235
223
  // First request
236
224
  const response = await fetch('https://api.example.com/data');
@@ -261,7 +249,7 @@ if (response.status === 402) {
261
249
  ### Custom Payment Selection
262
250
 
263
251
  ```typescript
264
- import { X402Client, X402FetchClient, ExactTronClientMechanism, TronClientSigner } from '@bankofai/x402';
252
+ import { X402Client, X402FetchClient, ExactPermitTronClientMechanism, TronClientSigner } from '@bankofai/x402';
265
253
 
266
254
  // Custom selector function
267
255
  const selector = (requirements) => {
@@ -273,23 +261,16 @@ const client = new X402FetchClient(x402Client, selector);
273
261
  const response = await client.get('https://api.example.com/data');
274
262
  ```
275
263
 
276
- ### Browser Integration
264
+ ### GasFree Usage (No TRX Gas Needed)
277
265
 
278
266
  ```typescript
279
- // In browser with TronLink wallet
280
- import { X402Client, X402FetchClient, ExactTronClientMechanism, TronClientSigner } from '@bankofai/x402';
281
-
282
- // Wait for TronLink
283
- const tronWeb = window.tronWeb;
284
- if (!tronWeb) {
285
- throw new Error('TronLink not found');
286
- }
267
+ import { X402Client, X402FetchClient, ExactGasFreeClientMechanism, TronClientSigner } from '@bankofai/x402';
287
268
 
288
- const signer = TronClientSigner.fromTronWeb(tronWeb, 'mainnet');
289
- const x402Client = new X402Client().register('tron:*', new ExactTronClientMechanism(signer));
269
+ const signer = new TronClientSigner(process.env.TRON_PRIVATE_KEY);
270
+ const x402Client = new X402Client().register('tron:*', new ExactGasFreeClientMechanism(signer));
290
271
  const client = new X402FetchClient(x402Client);
291
272
 
292
- // Make paid requests
273
+ // Pay with USDT/USDD without holding TRX
293
274
  const response = await client.get('https://api.example.com/premium-content');
294
275
  ```
295
276
 
@@ -298,9 +279,9 @@ const response = await client.get('https://api.example.com/premium-content');
298
279
  ```typescript
299
280
  // Support multiple TRON networks
300
281
  const nileClient = new X402Client()
301
- .register('tron:nile', new ExactTronClientMechanism(nileSigner))
302
- .register('tron:shasta', new ExactTronClientMechanism(shastaSigner))
303
- .register('tron:mainnet', new ExactTronClientMechanism(mainnetSigner));
282
+ .register('tron:nile', new ExactPermitTronClientMechanism(nileSigner))
283
+ .register('tron:shasta', new ExactPermitTronClientMechanism(shastaSigner))
284
+ .register('tron:mainnet', new ExactPermitTronClientMechanism(mainnetSigner));
304
285
  ```
305
286
 
306
287
  ## Supported Networks
@@ -308,18 +289,26 @@ const nileClient = new X402Client()
308
289
  - **TRON Mainnet** - `tron:mainnet`
309
290
  - **TRON Shasta Testnet** - `tron:shasta`
310
291
  - **TRON Nile Testnet** - `tron:nile`
292
+ - **BSC Mainnet** - `eip155:56`
293
+ - **BSC Testnet** - `eip155:97`
311
294
 
312
295
  ## Payment Schemes
313
296
 
314
- ### Exact Scheme
297
+ ### Exact Permit Scheme (`exact_permit`)
315
298
 
316
- The `exact` scheme allows payments for a specified exact amount. Useful for:
299
+ The standard x402 payment scheme using TIP-712/EIP-712 permits. Requires a pre-deployed `PaymentPermit` contract on the network.
317
300
 
318
- - Pay-per-use APIs (e.g., LLM token generation)
319
- - Fixed-price resources
320
- - Predictable pricing for API calls
301
+ ### GasFree Scheme (`exact_gasfree`)
321
302
 
322
- The server charges the exact amount specified in the payment permit.
303
+ Allows users to pay using TRC-20 tokens (USDT/USDD) without holding any TRX for gas.
304
+
305
+ - **Accountless**: Uses the official GasFree HTTP Proxy for settlement.
306
+ - **Dynamic**: Automatically discovers available service providers.
307
+ - **Status Tracking**: Built-in polling for transaction confirmation.
308
+
309
+ ### Exact Scheme (`exact`)
310
+
311
+ Direct payment scheme using ERC-3009 (`TransferWithAuthorization`) where supported by the token contract (primarily for EVM networks like BSC).
323
312
 
324
313
  ## Security
325
314
 
@@ -343,23 +332,15 @@ npm i tronweb@latest
343
332
  Ensure you've registered a mechanism for the network:
344
333
 
345
334
  ```typescript
346
- x402Client.register('tron:nile', new ExactTronClientMechanism(signer));
347
- ```
348
-
349
- ### "Insufficient allowance"
350
-
351
- The SDK automatically handles token approvals in `auto` mode. If you're using `skip` mode, manually approve tokens:
352
-
353
- ```typescript
354
- await signer.ensureAllowance(tokenAddress, amount, network, 'auto');
335
+ x402Client.register('tron:nile', new ExactPermitTronClientMechanism(signer));
355
336
  ```
356
337
 
357
338
  ## Links
358
339
 
359
- - **Repository**: https://github.com/bankofai/x402
360
- - **Issues**: https://github.com/bankofai/x402/issues
361
- - **Contributing**: https://github.com/bankofai/CONTRIBUTING.md
362
- - **Documentation**: https://github.com/bankofai/x402#readme
340
+ - **Repository**: https://github.com/BofAI/x402
341
+ - **Issues**: https://github.com/BofAI/x402/issues
342
+ - **Contributing**: https://github.com/BofAI/CONTRIBUTING.md
343
+ - **Documentation**: https://docs.bankofai.io/
363
344
  - **TRON Documentation**: https://developers.tron.network/
364
345
  - **TIP-712 Specification**: https://github.com/tronprotocol/tips/blob/master/tip-712.md
365
346
 
package/dist/abi.d.ts CHANGED
@@ -5,12 +5,12 @@
5
5
  import type { DeliveryKind } from './types/payment.js';
6
6
  /** EIP-712 Primary Type for PaymentPermit */
7
7
  export declare const PAYMENT_PERMIT_PRIMARY_TYPE = "PaymentPermitDetails";
8
+ /** EIP-712 Primary Type for GasFree */
9
+ export declare const GASFREE_PRIMARY_TYPE = "PermitTransfer";
8
10
  /**
9
- * EIP-712 Domain Type
10
- * Based on contract: keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)")
11
- * Note: NO version field!
11
+ * EIP-712 Domain Type for PaymentPermit
12
12
  */
13
- export declare const EIP712_DOMAIN_TYPE: readonly [{
13
+ export declare const PAYMENT_PERMIT_EIP712_DOMAIN_TYPE: readonly [{
14
14
  readonly name: "name";
15
15
  readonly type: "string";
16
16
  }, {
@@ -20,6 +20,22 @@ export declare const EIP712_DOMAIN_TYPE: readonly [{
20
20
  readonly name: "verifyingContract";
21
21
  readonly type: "address";
22
22
  }];
23
+ /**
24
+ * EIP-712 Domain Type for GasFree
25
+ */
26
+ export declare const GASFREE_DOMAIN_TYPE: readonly [{
27
+ readonly name: "name";
28
+ readonly type: "string";
29
+ }, {
30
+ readonly name: "version";
31
+ readonly type: "string";
32
+ }, {
33
+ readonly name: "chainId";
34
+ readonly type: "uint256";
35
+ }, {
36
+ readonly name: "verifyingContract";
37
+ readonly type: "address";
38
+ }];
23
39
  /**
24
40
  * EIP-712 type definitions for PaymentPermit
25
41
  * Based on PermitHash.sol from the contract
package/dist/abi.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"abi.d.ts","sourceRoot":"","sources":["../src/abi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,6CAA6C;AAC7C,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;EAIrB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwBvB,CAAC;AAEX,mDAAmD;AACnD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAEjD,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBZ,CAAC"}
1
+ {"version":3,"file":"abi.d.ts","sourceRoot":"","sources":["../src/abi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,6CAA6C;AAC7C,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAElE,uCAAuC;AACvC,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;EAIpC,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAKtB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwBvB,CAAC;AAEX,mDAAmD;AACnD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAEjD,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBZ,CAAC"}
package/dist/abi.js CHANGED
@@ -4,16 +4,25 @@
4
4
  */
5
5
  /** EIP-712 Primary Type for PaymentPermit */
6
6
  export const PAYMENT_PERMIT_PRIMARY_TYPE = 'PaymentPermitDetails';
7
+ /** EIP-712 Primary Type for GasFree */
8
+ export const GASFREE_PRIMARY_TYPE = 'PermitTransfer';
7
9
  /**
8
- * EIP-712 Domain Type
9
- * Based on contract: keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)")
10
- * Note: NO version field!
10
+ * EIP-712 Domain Type for PaymentPermit
11
11
  */
12
- export const EIP712_DOMAIN_TYPE = [
12
+ export const PAYMENT_PERMIT_EIP712_DOMAIN_TYPE = [
13
13
  { name: 'name', type: 'string' },
14
14
  { name: 'chainId', type: 'uint256' },
15
15
  { name: 'verifyingContract', type: 'address' },
16
16
  ];
17
+ /**
18
+ * EIP-712 Domain Type for GasFree
19
+ */
20
+ export const GASFREE_DOMAIN_TYPE = [
21
+ { name: 'name', type: 'string' },
22
+ { name: 'version', type: 'string' },
23
+ { name: 'chainId', type: 'uint256' },
24
+ { name: 'verifyingContract', type: 'address' },
25
+ ];
17
26
  /**
18
27
  * EIP-712 type definitions for PaymentPermit
19
28
  * Based on PermitHash.sol from the contract
package/dist/abi.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"abi.js","sourceRoot":"","sources":["../src/abi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,6CAA6C;AAC7C,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAAsB,CAAC;AAElE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;IACpC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;CACtC,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,UAAU,EAAE;QACV,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;QAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;QACtC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;QAClC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;QACvC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;KACzC;IACD,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;QACrC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;QACtC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;KACnC;IACD,GAAG,EAAE;QACH,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;QAClC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;KACvC;IACD,oBAAoB,EAAE;QACpB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE;QACpC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;QAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;QACnC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;QACpC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;KAC7B;CACO,CAAC;AAEX,mDAAmD;AACnD,MAAM,CAAC,MAAM,QAAQ,GAAiC;IACpD,YAAY,EAAE,CAAC;CAChB,CAAC;AAEF,4CAA4C;AAC5C,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAClC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;SACrC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KACzC;IACD;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,YAAY;QAC7B,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YACpC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;SACpC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KACtC;CACO,CAAC"}
1
+ {"version":3,"file":"abi.js","sourceRoot":"","sources":["../src/abi.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@
4
4
  * Policies are applied in order after mechanism filtering and before token selection.
5
5
  */
6
6
  import type { PaymentRequirements } from '../types/index.js';
7
- import type { ClientSigner, PaymentPolicy } from './x402Client.js';
7
+ import type { PaymentPolicy } from './x402Client.js';
8
+ import type { X402Client } from './x402Client.js';
8
9
  /**
9
10
  * Policy that filters out requirements with insufficient balance.
10
11
  *
@@ -12,12 +13,21 @@ import type { ClientSigner, PaymentPolicy } from './x402Client.js';
12
13
  * this policy checks the user's on-chain balance for each option
13
14
  * and removes requirements the user cannot afford.
14
15
  *
16
+ * Signers are auto-resolved from registered mechanisms via the
17
+ * X402Client instance passed at construction time.
18
+ *
19
+ * Usage:
20
+ * x402.registerPolicy(SufficientBalancePolicy);
21
+ *
22
+ * Requirements whose network has no matching signer are kept as-is
23
+ * (not filtered out), so downstream mechanism matching can still work.
24
+ *
15
25
  * If all requirements are unaffordable, returns an empty array so the
16
26
  * caller can raise an appropriate error.
17
27
  */
18
28
  export declare class SufficientBalancePolicy implements PaymentPolicy {
19
- private signer;
20
- constructor(signer: ClientSigner);
29
+ private client;
30
+ constructor(client: X402Client);
21
31
  apply(requirements: PaymentRequirements[]): Promise<PaymentRequirements[]>;
22
32
  }
23
33
  //# sourceMappingURL=policies.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../src/client/policies.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOnE;;;;;;;;;GASG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IAC3D,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,YAAY;IAI1B,KAAK,CAAC,YAAY,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;CA8BjF"}
1
+ {"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../src/client/policies.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAOlD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IAC3D,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,UAAU;IAIxB,KAAK,CAAC,YAAY,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;CA8CjF"}
@@ -15,18 +15,42 @@ function getDecimals(req) {
15
15
  * this policy checks the user's on-chain balance for each option
16
16
  * and removes requirements the user cannot afford.
17
17
  *
18
+ * Signers are auto-resolved from registered mechanisms via the
19
+ * X402Client instance passed at construction time.
20
+ *
21
+ * Usage:
22
+ * x402.registerPolicy(SufficientBalancePolicy);
23
+ *
24
+ * Requirements whose network has no matching signer are kept as-is
25
+ * (not filtered out), so downstream mechanism matching can still work.
26
+ *
18
27
  * If all requirements are unaffordable, returns an empty array so the
19
28
  * caller can raise an appropriate error.
20
29
  */
21
30
  export class SufficientBalancePolicy {
22
- signer;
23
- constructor(signer) {
24
- this.signer = signer;
31
+ client;
32
+ constructor(client) {
33
+ this.client = client;
25
34
  }
26
35
  async apply(requirements) {
27
36
  const affordable = [];
28
37
  for (const req of requirements) {
29
- const balance = await this.signer.checkBalance(req.asset, req.network);
38
+ const signer = this.client.resolveSigner(req.scheme, req.network);
39
+ if (!signer) {
40
+ // No signer for this network — keep the requirement so mechanism
41
+ // matching can still select it (balance check is best-effort).
42
+ affordable.push(req);
43
+ continue;
44
+ }
45
+ let balance;
46
+ try {
47
+ balance = await signer.checkBalance(req.asset, req.network);
48
+ }
49
+ catch {
50
+ // Signer cannot query this network; keep the requirement.
51
+ affordable.push(req);
52
+ continue;
53
+ }
30
54
  let needed = BigInt(req.amount);
31
55
  if (req.extra?.fee?.feeAmount) {
32
56
  needed += BigInt(req.extra.fee.feeAmount);
@@ -1 +1 @@
1
- {"version":3,"file":"policies.js","sourceRoot":"","sources":["../../src/client/policies.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,SAAS,WAAW,CAAC,GAAwB;IAC3C,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,uBAAuB;IAC1B,MAAM,CAAe;IAE7B,YAAY,MAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,YAAmC;QAC7C,MAAM,UAAU,GAA0B,EAAE,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACvE,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;gBAC9B,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,EAAE,IAAI,QAAQ,CAAC;YAC/B,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC7D,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CACT,UAAU,MAAM,OAAO,GAAG,CAAC,OAAO,aAAa,QAAQ,cAAc,OAAO,OAAO,CACpF,CAAC;gBACF,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CACT,UAAU,MAAM,OAAO,GAAG,CAAC,OAAO,aAAa,QAAQ,aAAa,OAAO,YAAY,CACxF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"policies.js","sourceRoot":"","sources":["../../src/client/policies.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAK7C,SAAS,WAAW,CAAC,GAAwB;IAC3C,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,uBAAuB;IAC1B,MAAM,CAAa;IAE3B,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,YAAmC;QAC7C,MAAM,UAAU,GAA0B,EAAE,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,iEAAiE;gBACjE,+DAA+D;gBAC/D,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9D,CAAC;YAAC,MAAM,CAAC;gBACP,0DAA0D;gBAC1D,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;gBAC9B,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,EAAE,IAAI,QAAQ,CAAC;YAC/B,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC7D,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CACT,UAAU,MAAM,OAAO,GAAG,CAAC,OAAO,aAAa,QAAQ,cAAc,OAAO,OAAO,CACpF,CAAC;gBACF,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CACT,UAAU,MAAM,OAAO,GAAG,CAAC,OAAO,aAAa,QAAQ,aAAa,OAAO,YAAY,CACxF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Manages payment mechanism registry and coordinates payment flows.
5
5
  */
6
+ import { GasFreeAPIClient } from '../utils/gasfree.js';
6
7
  import type { PaymentRequirements, PaymentPayload, PaymentPermitContext } from '../types/index.js';
7
8
  import type { TokenSelectionStrategy } from './tokenSelection.js';
8
9
  /** Client mechanism interface */
@@ -26,9 +27,9 @@ export interface ClientSigner {
26
27
  /** Sign raw message */
27
28
  signMessage(message: Uint8Array): Promise<string>;
28
29
  /** Sign typed data (EIP-712) */
29
- signTypedData(domain: Record<string, unknown>, types: Record<string, unknown>, message: Record<string, unknown>): Promise<string>;
30
+ signTypedData(domain: Record<string, unknown>, types: Record<string, unknown>, message: Record<string, unknown>, primaryType: string): Promise<string>;
30
31
  /** Check token balance */
31
- checkBalance(token: string, network: string): Promise<bigint>;
32
+ checkBalance(token: string, network: string, address?: string): Promise<bigint>;
32
33
  /** Check token allowance */
33
34
  checkAllowance(token: string, amount: bigint, network: string): Promise<bigint>;
34
35
  /** Ensure sufficient allowance */
@@ -72,7 +73,13 @@ export declare class X402Client {
72
73
  * @param policy - Function that filters/reorders payment requirements
73
74
  * @returns this for method chaining
74
75
  */
75
- registerPolicy(policy: PaymentPolicy): X402Client;
76
+ registerPolicy(policy: PaymentPolicy | {
77
+ new (client: X402Client): PaymentPolicy;
78
+ }): X402Client;
79
+ /**
80
+ * Resolve a signer from registered mechanisms for the given scheme+network.
81
+ */
82
+ resolveSigner(scheme: string, network: string): ClientSigner | null;
76
83
  /**
77
84
  * Register payment mechanism for network pattern
78
85
  *
@@ -81,6 +88,14 @@ export declare class X402Client {
81
88
  * @returns this for method chaining
82
89
  */
83
90
  register(networkPattern: string, mechanism: ClientMechanism): X402Client;
91
+ /**
92
+ * Register built-in GasFree mechanism for TRON
93
+ *
94
+ * @param signer - Client signer instance
95
+ * @param clients - Optional GasFree API clients per network
96
+ * @returns this for method chaining
97
+ */
98
+ registerGasFree(signer: ClientSigner, clients?: Record<string, GasFreeAPIClient>): X402Client;
84
99
  /**
85
100
  * Select payment requirements from available options
86
101
  *
@@ -109,9 +124,7 @@ export declare class X402Client {
109
124
  * @param selector - Optional custom selector
110
125
  * @returns Payment payload
111
126
  */
112
- handlePayment(accepts: PaymentRequirements[], resource: string, extensions?: {
113
- paymentPermitContext?: PaymentPermitContext;
114
- }, selector?: PaymentRequirementsSelector): Promise<PaymentPayload>;
127
+ handlePayment(accepts: PaymentRequirements[], resource: string, extensions?: Record<string, unknown>, selector?: PaymentRequirementsSelector): Promise<PaymentPayload>;
115
128
  /**
116
129
  * Find mechanism for scheme and network
117
130
  */
@@ -1 +1 @@
1
- {"version":3,"file":"x402Client.d.ts","sourceRoot":"","sources":["../../src/client/x402Client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"x402Client.d.ts","sourceRoot":"","sources":["../../src/client/x402Client.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Manages payment mechanism registry and coordinates payment flows.
5
5
  */
6
+ import { ExactGasFreeClientMechanism } from '../mechanisms/exactGasfree.js';
6
7
  import { DefaultTokenSelectionStrategy } from './tokenSelection.js';
7
8
  import { UnsupportedNetworkError } from '../errors.js';
8
9
  /**
@@ -27,9 +28,19 @@ export class X402Client {
27
28
  * @returns this for method chaining
28
29
  */
29
30
  registerPolicy(policy) {
30
- this.policies.push(policy);
31
+ const instance = typeof policy === 'function'
32
+ ? new policy(this)
33
+ : policy;
34
+ this.policies.push(instance);
31
35
  return this;
32
36
  }
37
+ /**
38
+ * Resolve a signer from registered mechanisms for the given scheme+network.
39
+ */
40
+ resolveSigner(scheme, network) {
41
+ const mechanism = this.findMechanism(scheme, network);
42
+ return mechanism?.getSigner?.() ?? null;
43
+ }
33
44
  /**
34
45
  * Register payment mechanism for network pattern
35
46
  *
@@ -47,6 +58,16 @@ export class X402Client {
47
58
  this.mechanisms.sort((a, b) => b.priority - a.priority);
48
59
  return this;
49
60
  }
61
+ /**
62
+ * Register built-in GasFree mechanism for TRON
63
+ *
64
+ * @param signer - Client signer instance
65
+ * @param clients - Optional GasFree API clients per network
66
+ * @returns this for method chaining
67
+ */
68
+ registerGasFree(signer, clients = {}) {
69
+ return this.register('tron:*', new ExactGasFreeClientMechanism(signer, clients));
70
+ }
50
71
  /**
51
72
  * Select payment requirements from available options
52
73
  *
@@ -1 +1 @@
1
- {"version":3,"file":"x402Client.js","sourceRoot":"","sources":["../../src/client/x402Client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAgFvD;;;;GAIG;AACH,MAAM,OAAO,UAAU;IACb,UAAU,GAAqB,EAAE,CAAC;IAClC,QAAQ,GAAoB,EAAE,CAAC;IAC/B,aAAa,CAA0B;IAE/C,YAAY,OAAoD;QAC9D,IAAI,CAAC,aAAa,GAAG,OAAO,EAAE,aAAa,CAAC;IAC9C,CAAC;IAED;;;;;;;;OAQG;IACH,cAAc,CAAC,MAAqB;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,cAAsB,EAAE,SAA0B;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,cAAc;YACvB,SAAS;YACT,QAAQ;SACT,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,yBAAyB,CAC7B,OAA8B,EAC9B,OAAmC;QAEnC,IAAI,UAAU,GAAG,OAAO,CAAC;QAEzB,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;YACrB,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACtC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAC/D,CAAC;QAED,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;QAEtF,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,UAAU,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,uBAAuB,CAAC,yCAAyC,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,6BAA6B,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,oBAAoB,CACxB,YAAiC,EACjC,QAAgB,EAChB,UAA4D;QAE5D,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,uBAAuB,CAC/B,sCAAsC,YAAY,CAAC,MAAM,aAAa,YAAY,CAAC,OAAO,EAAE,CAC7F,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC,oBAAoB,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CACjB,OAA8B,EAC9B,QAAgB,EAChB,UAA4D,EAC5D,QAAsC;QAEtC,MAAM,YAAY,GAAG,QAAQ;YAC3B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YACnB,CAAC,CAAC,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,MAAc,EAAE,OAAe;QACnD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;gBACrF,OAAO,KAAK,CAAC,SAAS,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,OAAe,EAAE,OAAe;QACnD,IAAI,OAAO,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpC,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,OAAe;QACvC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QACrC,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
1
+ {"version":3,"file":"x402Client.js","sourceRoot":"","sources":["../../src/client/x402Client.ts"],"names":[],"mappings":"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"}