@bankofai/x402 0.3.1 → 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 (54) 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/x402Client.d.ts +12 -5
  7. package/dist/client/x402Client.d.ts.map +1 -1
  8. package/dist/client/x402Client.js +11 -0
  9. package/dist/client/x402Client.js.map +1 -1
  10. package/dist/config.d.ts +26 -0
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +66 -0
  13. package/dist/config.js.map +1 -1
  14. package/dist/mechanisms/exact.d.ts.map +1 -1
  15. package/dist/mechanisms/exact.js +2 -2
  16. package/dist/mechanisms/exact.js.map +1 -1
  17. package/dist/mechanisms/exactEvm.d.ts.map +1 -1
  18. package/dist/mechanisms/exactEvm.js +2 -2
  19. package/dist/mechanisms/exactEvm.js.map +1 -1
  20. package/dist/mechanisms/exactGasfree.d.ts +11 -0
  21. package/dist/mechanisms/exactGasfree.d.ts.map +1 -0
  22. package/dist/mechanisms/exactGasfree.js +136 -0
  23. package/dist/mechanisms/exactGasfree.js.map +1 -0
  24. package/dist/mechanisms/gasfree.d.ts +8 -0
  25. package/dist/mechanisms/gasfree.d.ts.map +1 -0
  26. package/dist/mechanisms/gasfree.js +125 -0
  27. package/dist/mechanisms/gasfree.js.map +1 -0
  28. package/dist/mechanisms/index.d.ts +1 -0
  29. package/dist/mechanisms/index.d.ts.map +1 -1
  30. package/dist/mechanisms/index.js +2 -0
  31. package/dist/mechanisms/index.js.map +1 -1
  32. package/dist/mechanisms/nativeExactEvm.d.ts.map +1 -1
  33. package/dist/mechanisms/nativeExactEvm.js +2 -2
  34. package/dist/mechanisms/nativeExactEvm.js.map +1 -1
  35. package/dist/mechanisms/nativeExactTron.d.ts.map +1 -1
  36. package/dist/mechanisms/nativeExactTron.js +2 -2
  37. package/dist/mechanisms/nativeExactTron.js.map +1 -1
  38. package/dist/signers/evmSigner.d.ts +2 -2
  39. package/dist/signers/evmSigner.d.ts.map +1 -1
  40. package/dist/signers/evmSigner.js +4 -10
  41. package/dist/signers/evmSigner.js.map +1 -1
  42. package/dist/signers/signer.d.ts +2 -2
  43. package/dist/signers/signer.d.ts.map +1 -1
  44. package/dist/signers/signer.js +6 -10
  45. package/dist/signers/signer.js.map +1 -1
  46. package/dist/utils/gasfree.d.ts +123 -0
  47. package/dist/utils/gasfree.d.ts.map +1 -0
  48. package/dist/utils/gasfree.js +228 -0
  49. package/dist/utils/gasfree.js.map +1 -0
  50. package/dist/utils/index.d.ts +1 -0
  51. package/dist/utils/index.d.ts.map +1 -1
  52. package/dist/utils/index.js +1 -0
  53. package/dist/utils/index.js.map +1 -1
  54. 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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"}
@@ -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 */
@@ -87,6 +88,14 @@ export declare class X402Client {
87
88
  * @returns this for method chaining
88
89
  */
89
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;
90
99
  /**
91
100
  * Select payment requirements from available options
92
101
  *
@@ -115,9 +124,7 @@ export declare class X402Client {
115
124
  * @param selector - Optional custom selector
116
125
  * @returns Payment payload
117
126
  */
118
- handlePayment(accepts: PaymentRequirements[], resource: string, extensions?: {
119
- paymentPermitContext?: PaymentPermitContext;
120
- }, selector?: PaymentRequirementsSelector): Promise<PaymentPayload>;
127
+ handlePayment(accepts: PaymentRequirements[], resource: string, extensions?: Record<string, unknown>, selector?: PaymentRequirementsSelector): Promise<PaymentPayload>;
121
128
  /**
122
129
  * Find mechanism for scheme and network
123
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
  /**
@@ -57,6 +58,16 @@ export class X402Client {
57
58
  this.mechanisms.sort((a, b) => b.priority - a.priority);
58
59
  return this;
59
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
+ }
60
71
  /**
61
72
  * Select payment requirements from available options
62
73
  *
@@ -1 +1 @@
1
- {"version":3,"file":"x402Client.js","sourceRoot":"","sources":["../../src/client/x402Client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"x402Client.js","sourceRoot":"","sources":["../../src/client/x402Client.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -16,6 +16,12 @@ export declare const NETWORKS: {
16
16
  };
17
17
  /** PaymentPermit contract addresses */
18
18
  export declare const PAYMENT_PERMIT_ADDRESSES: Record<string, string>;
19
+ /** GasFreeController contract addresses */
20
+ export declare const GASFREE_CONTROLLER_ADDRESSES: Record<string, string>;
21
+ /** GasFree beacon addresses */
22
+ export declare const GASFREE_BEACON_ADDRESSES: Record<string, string>;
23
+ /** GasFree API Base URLs */
24
+ export declare const GASFREE_API_BASE_URLS: Record<string, string>;
19
25
  /** Default RPC URLs for EVM networks */
20
26
  export declare const EVM_RPC_URLS: Record<string, string>;
21
27
  /** Default TronGrid hosts for TRON networks */
@@ -37,6 +43,26 @@ export declare function getChainId(network: string): number;
37
43
  * Get PaymentPermit contract address for network
38
44
  */
39
45
  export declare function getPaymentPermitAddress(network: string): string;
46
+ /**
47
+ * Get GasFreeController contract address for network
48
+ */
49
+ export declare function getGasFreeControllerAddress(network: string): string;
50
+ /**
51
+ * Get GasFree beacon address for network
52
+ */
53
+ export declare function getGasFreeBeaconAddress(network: string): string;
54
+ /**
55
+ * Get GasFree API Base URL for network
56
+ */
57
+ export declare function getGasFreeApiBaseUrl(network: string): string;
58
+ /**
59
+ * Get GasFree API Key
60
+ */
61
+ export declare function getGasFreeApiKey(network?: string): string | undefined;
62
+ /**
63
+ * Get GasFree API Secret
64
+ */
65
+ export declare function getGasFreeApiSecret(network?: string): string | undefined;
40
66
  /**
41
67
  * Check if network is TRON
42
68
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,uCAAuC;AACvC,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAW5C,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,QAAQ;;;;;;;;CAQX,CAAC;AAEX,uCAAuC;AACvC,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM3D,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI/C,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIhD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjE;AAED,4BAA4B;AAC5B,eAAO,MAAM,iBAAiB,uCAAuC,CAAC;AAEtE,2BAA2B;AAC3B,eAAO,MAAM,gBAAgB,+CAA+C,CAAC;AAE7E;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAelD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,uCAAuC;AACvC,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAW5C,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,QAAQ;;;;;;;;CAQX,CAAC;AAEX,uCAAuC;AACvC,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM3D,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI/D,CAAC;AAEF,+BAA+B;AAC/B,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI3D,CAAC;AAEF,4BAA4B;AAC5B,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIxD,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI/C,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIhD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjE;AAED,4BAA4B;AAC5B,eAAO,MAAM,iBAAiB,uCAAuC,CAAC;AAEtE,2BAA2B;AAC3B,eAAO,MAAM,gBAAgB,+CAA+C,CAAC;AAE7E;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAelD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUrE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUxE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD"}
package/dist/config.js CHANGED
@@ -33,6 +33,24 @@ export const PAYMENT_PERMIT_ADDRESSES = {
33
33
  'eip155:97': '0x1825bB32db3443dEc2cc7508b2D818fc13EaD878',
34
34
  'eip155:56': '0x1825bB32db3443dEc2cc7508b2D818fc13EaD878',
35
35
  };
36
+ /** GasFreeController contract addresses */
37
+ export const GASFREE_CONTROLLER_ADDRESSES = {
38
+ 'tron:mainnet': 'TFFAMLQZybALab4uxHA9RBE7pxhUAjfF3U',
39
+ 'tron:shasta': 'TQghdCeVDA6CnuNVTUhfaAyPfTetqZWNpm',
40
+ 'tron:nile': 'THQGuFzL87ZqhxkgqYEryRAd7gqFqL5rdc',
41
+ };
42
+ /** GasFree beacon addresses */
43
+ export const GASFREE_BEACON_ADDRESSES = {
44
+ 'tron:mainnet': 'TSP9UW6FQhT76XD2jWA6ipGMx3yGbjDffP',
45
+ 'tron:shasta': 'TQ1jvA3nLDMDNbJoMPLzTPoqAg8NvZ5CCW',
46
+ 'tron:nile': 'TLtCGmaxH3PbuaF6kbybwteZcHptEdgQGC',
47
+ };
48
+ /** GasFree API Base URLs */
49
+ export const GASFREE_API_BASE_URLS = {
50
+ 'tron:mainnet': 'https://open.gasfree.io/tron',
51
+ 'tron:shasta': 'https://open-test.gasfree.io/shasta',
52
+ 'tron:nile': 'https://open-test.gasfree.io/nile',
53
+ };
36
54
  /** Default RPC URLs for EVM networks */
37
55
  export const EVM_RPC_URLS = {
38
56
  'eip155:97': 'https://data-seed-prebsc-1-s1.binance.org:8545/',
@@ -86,6 +104,54 @@ export function getPaymentPermitAddress(network) {
86
104
  return EVM_ZERO_ADDRESS;
87
105
  return TRON_ZERO_ADDRESS;
88
106
  }
107
+ /**
108
+ * Get GasFreeController contract address for network
109
+ */
110
+ export function getGasFreeControllerAddress(network) {
111
+ return GASFREE_CONTROLLER_ADDRESSES[network] ?? TRON_ZERO_ADDRESS;
112
+ }
113
+ /**
114
+ * Get GasFree beacon address for network
115
+ */
116
+ export function getGasFreeBeaconAddress(network) {
117
+ return GASFREE_BEACON_ADDRESSES[network] ?? TRON_ZERO_ADDRESS;
118
+ }
119
+ /**
120
+ * Get GasFree API Base URL for network
121
+ */
122
+ export function getGasFreeApiBaseUrl(network) {
123
+ return GASFREE_API_BASE_URLS[network] ?? 'https://api.gasfree.io/v1';
124
+ }
125
+ /**
126
+ * Get GasFree API Key
127
+ */
128
+ export function getGasFreeApiKey(network) {
129
+ if (typeof process !== 'undefined') {
130
+ if (network) {
131
+ const suffix = network.split(':').pop()?.toUpperCase();
132
+ const networkKey = process.env[`GASFREE_API_KEY_${suffix}`];
133
+ if (networkKey)
134
+ return networkKey;
135
+ }
136
+ return process.env.GASFREE_API_KEY;
137
+ }
138
+ return undefined;
139
+ }
140
+ /**
141
+ * Get GasFree API Secret
142
+ */
143
+ export function getGasFreeApiSecret(network) {
144
+ if (typeof process !== 'undefined') {
145
+ if (network) {
146
+ const suffix = network.split(':').pop()?.toUpperCase();
147
+ const networkSecret = process.env[`GASFREE_API_SECRET_${suffix}`];
148
+ if (networkSecret)
149
+ return networkSecret;
150
+ }
151
+ return process.env.GASFREE_API_SECRET;
152
+ }
153
+ return undefined;
154
+ }
89
155
  /**
90
156
  * Check if network is TRON
91
157
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"exact.d.ts","sourceRoot":"","sources":["../../src/mechanisms/exact.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EAEd,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAYrB;;GAEG;AACH,qBAAa,8BAA+B,YAAW,eAAe;IACpE,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,gBAAgB,CAA8B;gBAE1C,MAAM,EAAE,YAAY;IAIhC,SAAS,IAAI,YAAY;IAIzB,MAAM,IAAI,MAAM;IAIV,oBAAoB,CACxB,YAAY,EAAE,mBAAmB,EACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE;QAAE,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;KAAE,GAC3D,OAAO,CAAC,cAAc,CAAC;CAwG3B"}
1
+ {"version":3,"file":"exact.d.ts","sourceRoot":"","sources":["../../src/mechanisms/exact.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EAEd,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAarB;;GAEG;AACH,qBAAa,8BAA+B,YAAW,eAAe;IACpE,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,gBAAgB,CAA8B;gBAE1C,MAAM,EAAE,YAAY;IAIhC,SAAS,IAAI,YAAY;IAIzB,MAAM,IAAI,MAAM;IAIV,oBAAoB,CACxB,YAAY,EAAE,mBAAmB,EACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE;QAAE,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;KAAE,GAC3D,OAAO,CAAC,cAAc,CAAC;CAyG3B"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Uses TIP-712 (TRON's EIP-712 implementation) for signing PaymentPermit.
5
5
  */
6
- import { KIND_MAP, PAYMENT_PERMIT_TYPES, getChainId, getPaymentPermitAddress, TronAddressConverter, TRON_ZERO_ADDRESS, PermitValidationError, } from '../index.js';
6
+ import { KIND_MAP, PAYMENT_PERMIT_TYPES, PAYMENT_PERMIT_PRIMARY_TYPE, getChainId, getPaymentPermitAddress, TronAddressConverter, TRON_ZERO_ADDRESS, PermitValidationError, } from '../index.js';
7
7
  /**
8
8
  * TRON client mechanism for "exact_permit" payment scheme
9
9
  */
@@ -93,7 +93,7 @@ export class ExactPermitTronClientMechanism {
93
93
  }
94
94
  return value;
95
95
  }));
96
- const signature = await this.signer.signTypedData(domain, PAYMENT_PERMIT_TYPES, permitForSigning);
96
+ const signature = await this.signer.signTypedData(domain, PAYMENT_PERMIT_TYPES, permitForSigning, PAYMENT_PERMIT_PRIMARY_TYPE);
97
97
  console.log('[SIGN] Signature:', signature);
98
98
  return {
99
99
  x402Version: 2,