@bankofai/x402 0.5.8 → 0.6.0-beta.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 (214) hide show
  1. package/README.md +14 -0
  2. package/dist/client/x402Client.js +1 -1
  3. package/dist/client/x402Client.js.map +1 -1
  4. package/dist/errors.d.ts +8 -0
  5. package/dist/errors.d.ts.map +1 -1
  6. package/dist/errors.js +13 -0
  7. package/dist/errors.js.map +1 -1
  8. package/dist/facilitator/client.d.ts +77 -0
  9. package/dist/facilitator/client.d.ts.map +1 -0
  10. package/dist/facilitator/client.js +130 -0
  11. package/dist/facilitator/client.js.map +1 -0
  12. package/dist/facilitator/index.d.ts +14 -0
  13. package/dist/facilitator/index.d.ts.map +1 -0
  14. package/dist/facilitator/index.js +12 -0
  15. package/dist/facilitator/index.js.map +1 -0
  16. package/dist/facilitator/x402Facilitator.d.ts +97 -0
  17. package/dist/facilitator/x402Facilitator.d.ts.map +1 -0
  18. package/dist/facilitator/x402Facilitator.js +212 -0
  19. package/dist/facilitator/x402Facilitator.js.map +1 -0
  20. package/dist/http/client.d.ts +66 -17
  21. package/dist/http/client.d.ts.map +1 -1
  22. package/dist/http/client.js +90 -31
  23. package/dist/http/client.js.map +1 -1
  24. package/dist/index.d.ts +4 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +7 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/mechanisms/_base/index.d.ts +19 -0
  29. package/dist/mechanisms/_base/index.d.ts.map +1 -0
  30. package/dist/mechanisms/_base/index.js +17 -0
  31. package/dist/mechanisms/_base/index.js.map +1 -0
  32. package/dist/mechanisms/_exact_base/adapter.d.ts +23 -0
  33. package/dist/mechanisms/_exact_base/adapter.d.ts.map +1 -0
  34. package/dist/mechanisms/_exact_base/adapter.js +9 -0
  35. package/dist/mechanisms/_exact_base/adapter.js.map +1 -0
  36. package/dist/mechanisms/_exact_base/evmAdapter.d.ts +10 -0
  37. package/dist/mechanisms/_exact_base/evmAdapter.d.ts.map +1 -0
  38. package/dist/mechanisms/_exact_base/evmAdapter.js +28 -0
  39. package/dist/mechanisms/_exact_base/evmAdapter.js.map +1 -0
  40. package/dist/mechanisms/_exact_base/facilitator.d.ts +46 -0
  41. package/dist/mechanisms/_exact_base/facilitator.d.ts.map +1 -0
  42. package/dist/mechanisms/_exact_base/facilitator.js +87 -0
  43. package/dist/mechanisms/_exact_base/facilitator.js.map +1 -0
  44. package/dist/mechanisms/_exact_base/index.d.ts +12 -0
  45. package/dist/mechanisms/_exact_base/index.d.ts.map +1 -0
  46. package/dist/mechanisms/_exact_base/index.js +10 -0
  47. package/dist/mechanisms/_exact_base/index.js.map +1 -0
  48. package/dist/mechanisms/_exact_base/server.d.ts +40 -0
  49. package/dist/mechanisms/_exact_base/server.d.ts.map +1 -0
  50. package/dist/mechanisms/_exact_base/server.js +62 -0
  51. package/dist/mechanisms/_exact_base/server.js.map +1 -0
  52. package/dist/mechanisms/_exact_base/tronAdapter.d.ts +11 -0
  53. package/dist/mechanisms/_exact_base/tronAdapter.d.ts.map +1 -0
  54. package/dist/mechanisms/_exact_base/tronAdapter.js +48 -0
  55. package/dist/mechanisms/_exact_base/tronAdapter.js.map +1 -0
  56. package/dist/mechanisms/{nativeExact.d.ts → _exact_base/types.d.ts} +4 -11
  57. package/dist/mechanisms/_exact_base/types.d.ts.map +1 -0
  58. package/dist/mechanisms/{nativeExact.js → _exact_base/types.js} +1 -1
  59. package/dist/mechanisms/_exact_base/types.js.map +1 -0
  60. package/dist/mechanisms/_exact_permit_base/facilitator.d.ts +44 -0
  61. package/dist/mechanisms/_exact_permit_base/facilitator.d.ts.map +1 -0
  62. package/dist/mechanisms/_exact_permit_base/facilitator.js +65 -0
  63. package/dist/mechanisms/_exact_permit_base/facilitator.js.map +1 -0
  64. package/dist/mechanisms/_exact_permit_base/index.d.ts +8 -0
  65. package/dist/mechanisms/_exact_permit_base/index.d.ts.map +1 -0
  66. package/dist/mechanisms/_exact_permit_base/index.js +7 -0
  67. package/dist/mechanisms/_exact_permit_base/index.js.map +1 -0
  68. package/dist/mechanisms/_exact_permit_base/server.d.ts +31 -0
  69. package/dist/mechanisms/_exact_permit_base/server.d.ts.map +1 -0
  70. package/dist/mechanisms/_exact_permit_base/server.js +53 -0
  71. package/dist/mechanisms/_exact_permit_base/server.js.map +1 -0
  72. package/dist/mechanisms/{nativeExactEvm.d.ts → evm/exact/client.d.ts} +2 -2
  73. package/dist/mechanisms/evm/exact/client.d.ts.map +1 -0
  74. package/dist/mechanisms/{nativeExactEvm.js → evm/exact/client.js} +6 -6
  75. package/dist/mechanisms/evm/exact/client.js.map +1 -0
  76. package/dist/mechanisms/evm/exact/facilitator.d.ts +20 -0
  77. package/dist/mechanisms/evm/exact/facilitator.d.ts.map +1 -0
  78. package/dist/mechanisms/evm/exact/facilitator.js +28 -0
  79. package/dist/mechanisms/evm/exact/facilitator.js.map +1 -0
  80. package/dist/mechanisms/evm/exact/index.d.ts +4 -0
  81. package/dist/mechanisms/evm/exact/index.d.ts.map +1 -0
  82. package/dist/mechanisms/evm/exact/index.js +4 -0
  83. package/dist/mechanisms/evm/exact/index.js.map +1 -0
  84. package/dist/mechanisms/evm/exact/server.d.ts +19 -0
  85. package/dist/mechanisms/evm/exact/server.d.ts.map +1 -0
  86. package/dist/mechanisms/evm/exact/server.js +23 -0
  87. package/dist/mechanisms/evm/exact/server.js.map +1 -0
  88. package/dist/mechanisms/{exactEvm.d.ts → evm/exact_permit/client.d.ts} +2 -2
  89. package/dist/mechanisms/evm/exact_permit/client.d.ts.map +1 -0
  90. package/dist/mechanisms/{exactEvm.js → evm/exact_permit/client.js} +2 -2
  91. package/dist/mechanisms/evm/exact_permit/client.js.map +1 -0
  92. package/dist/mechanisms/evm/exact_permit/facilitator.d.ts +18 -0
  93. package/dist/mechanisms/evm/exact_permit/facilitator.d.ts.map +1 -0
  94. package/dist/mechanisms/evm/exact_permit/facilitator.js +25 -0
  95. package/dist/mechanisms/evm/exact_permit/facilitator.js.map +1 -0
  96. package/dist/mechanisms/evm/exact_permit/index.d.ts +4 -0
  97. package/dist/mechanisms/evm/exact_permit/index.d.ts.map +1 -0
  98. package/dist/mechanisms/evm/exact_permit/index.js +4 -0
  99. package/dist/mechanisms/evm/exact_permit/index.js.map +1 -0
  100. package/dist/mechanisms/evm/exact_permit/server.d.ts +11 -0
  101. package/dist/mechanisms/evm/exact_permit/server.d.ts.map +1 -0
  102. package/dist/mechanisms/evm/exact_permit/server.js +16 -0
  103. package/dist/mechanisms/evm/exact_permit/server.js.map +1 -0
  104. package/dist/mechanisms/index.d.ts +27 -8
  105. package/dist/mechanisms/index.d.ts.map +1 -1
  106. package/dist/mechanisms/index.js +27 -11
  107. package/dist/mechanisms/index.js.map +1 -1
  108. package/dist/mechanisms/{nativeExactTron.d.ts → tron/exact/client.d.ts} +2 -2
  109. package/dist/mechanisms/tron/exact/client.d.ts.map +1 -0
  110. package/dist/mechanisms/{nativeExactTron.js → tron/exact/client.js} +6 -6
  111. package/dist/mechanisms/tron/exact/client.js.map +1 -0
  112. package/dist/mechanisms/tron/exact/facilitator.d.ts +17 -0
  113. package/dist/mechanisms/tron/exact/facilitator.d.ts.map +1 -0
  114. package/dist/mechanisms/tron/exact/facilitator.js +25 -0
  115. package/dist/mechanisms/tron/exact/facilitator.js.map +1 -0
  116. package/dist/mechanisms/tron/exact/index.d.ts +4 -0
  117. package/dist/mechanisms/tron/exact/index.d.ts.map +1 -0
  118. package/dist/mechanisms/tron/exact/index.js +4 -0
  119. package/dist/mechanisms/tron/exact/index.js.map +1 -0
  120. package/dist/mechanisms/tron/exact/server.d.ts +18 -0
  121. package/dist/mechanisms/tron/exact/server.d.ts.map +1 -0
  122. package/dist/mechanisms/tron/exact/server.js +22 -0
  123. package/dist/mechanisms/tron/exact/server.js.map +1 -0
  124. package/dist/mechanisms/{exactGasfree.d.ts → tron/exact_gasfree/client.d.ts} +3 -3
  125. package/dist/mechanisms/tron/exact_gasfree/client.d.ts.map +1 -0
  126. package/dist/mechanisms/{exactGasfree.js → tron/exact_gasfree/client.js} +4 -4
  127. package/dist/mechanisms/tron/exact_gasfree/client.js.map +1 -0
  128. package/dist/mechanisms/tron/exact_gasfree/facilitator.d.ts +38 -0
  129. package/dist/mechanisms/tron/exact_gasfree/facilitator.d.ts.map +1 -0
  130. package/dist/mechanisms/tron/exact_gasfree/facilitator.js +71 -0
  131. package/dist/mechanisms/tron/exact_gasfree/facilitator.js.map +1 -0
  132. package/dist/mechanisms/tron/exact_gasfree/index.d.ts +5 -0
  133. package/dist/mechanisms/tron/exact_gasfree/index.d.ts.map +1 -0
  134. package/dist/mechanisms/tron/exact_gasfree/index.js +4 -0
  135. package/dist/mechanisms/tron/exact_gasfree/index.js.map +1 -0
  136. package/dist/mechanisms/tron/exact_gasfree/server.d.ts +23 -0
  137. package/dist/mechanisms/tron/exact_gasfree/server.d.ts.map +1 -0
  138. package/dist/mechanisms/tron/exact_gasfree/server.js +43 -0
  139. package/dist/mechanisms/tron/exact_gasfree/server.js.map +1 -0
  140. package/dist/mechanisms/{exact.d.ts → tron/exact_permit/client.d.ts} +2 -2
  141. package/dist/mechanisms/tron/exact_permit/client.d.ts.map +1 -0
  142. package/dist/mechanisms/{exact.js → tron/exact_permit/client.js} +2 -2
  143. package/dist/mechanisms/tron/exact_permit/client.js.map +1 -0
  144. package/dist/mechanisms/tron/exact_permit/facilitator.d.ts +17 -0
  145. package/dist/mechanisms/tron/exact_permit/facilitator.d.ts.map +1 -0
  146. package/dist/mechanisms/tron/exact_permit/facilitator.js +24 -0
  147. package/dist/mechanisms/tron/exact_permit/facilitator.js.map +1 -0
  148. package/dist/mechanisms/tron/exact_permit/index.d.ts +4 -0
  149. package/dist/mechanisms/tron/exact_permit/index.d.ts.map +1 -0
  150. package/dist/mechanisms/tron/exact_permit/index.js +4 -0
  151. package/dist/mechanisms/tron/exact_permit/index.js.map +1 -0
  152. package/dist/mechanisms/tron/exact_permit/server.d.ts +11 -0
  153. package/dist/mechanisms/tron/exact_permit/server.d.ts.map +1 -0
  154. package/dist/mechanisms/tron/exact_permit/server.js +22 -0
  155. package/dist/mechanisms/tron/exact_permit/server.js.map +1 -0
  156. package/dist/middleware/core.d.ts +75 -0
  157. package/dist/middleware/core.d.ts.map +1 -0
  158. package/dist/middleware/core.js +132 -0
  159. package/dist/middleware/core.js.map +1 -0
  160. package/dist/middleware/express.d.ts +40 -0
  161. package/dist/middleware/express.d.ts.map +1 -0
  162. package/dist/middleware/express.js +83 -0
  163. package/dist/middleware/express.js.map +1 -0
  164. package/dist/middleware/hono.d.ts +43 -0
  165. package/dist/middleware/hono.d.ts.map +1 -0
  166. package/dist/middleware/hono.js +72 -0
  167. package/dist/middleware/hono.js.map +1 -0
  168. package/dist/middleware/index.d.ts +12 -0
  169. package/dist/middleware/index.d.ts.map +1 -0
  170. package/dist/middleware/index.js +11 -0
  171. package/dist/middleware/index.js.map +1 -0
  172. package/dist/server/index.d.ts +12 -0
  173. package/dist/server/index.d.ts.map +1 -0
  174. package/dist/server/index.js +10 -0
  175. package/dist/server/index.js.map +1 -0
  176. package/dist/server/types.d.ts +78 -0
  177. package/dist/server/types.d.ts.map +1 -0
  178. package/dist/server/types.js +12 -0
  179. package/dist/server/types.js.map +1 -0
  180. package/dist/server/x402Server.d.ts +115 -0
  181. package/dist/server/x402Server.d.ts.map +1 -0
  182. package/dist/server/x402Server.js +318 -0
  183. package/dist/server/x402Server.js.map +1 -0
  184. package/dist/tokens.d.ts +30 -0
  185. package/dist/tokens.d.ts.map +1 -1
  186. package/dist/tokens.js +45 -0
  187. package/dist/tokens.js.map +1 -1
  188. package/dist/types/payment.d.ts +12 -1
  189. package/dist/types/payment.d.ts.map +1 -1
  190. package/dist/utils/encoding.d.ts +7 -0
  191. package/dist/utils/encoding.d.ts.map +1 -1
  192. package/dist/utils/encoding.js +15 -0
  193. package/dist/utils/encoding.js.map +1 -1
  194. package/dist/utils/index.d.ts +1 -1
  195. package/dist/utils/index.d.ts.map +1 -1
  196. package/dist/utils/index.js +1 -1
  197. package/dist/utils/index.js.map +1 -1
  198. package/dist/utils/tx_verification.d.ts +113 -0
  199. package/dist/utils/tx_verification.d.ts.map +1 -0
  200. package/dist/utils/tx_verification.js +98 -0
  201. package/dist/utils/tx_verification.js.map +1 -0
  202. package/package.json +23 -10
  203. package/dist/mechanisms/exact.d.ts.map +0 -1
  204. package/dist/mechanisms/exact.js.map +0 -1
  205. package/dist/mechanisms/exactEvm.d.ts.map +0 -1
  206. package/dist/mechanisms/exactEvm.js.map +0 -1
  207. package/dist/mechanisms/exactGasfree.d.ts.map +0 -1
  208. package/dist/mechanisms/exactGasfree.js.map +0 -1
  209. package/dist/mechanisms/nativeExact.d.ts.map +0 -1
  210. package/dist/mechanisms/nativeExact.js.map +0 -1
  211. package/dist/mechanisms/nativeExactEvm.d.ts.map +0 -1
  212. package/dist/mechanisms/nativeExactEvm.js.map +0 -1
  213. package/dist/mechanisms/nativeExactTron.d.ts.map +0 -1
  214. package/dist/mechanisms/nativeExactTron.js.map +0 -1
package/README.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  TypeScript SDK for the x402 payment protocol. Supports TRON and EVM (BSC) networks with automatic HTTP 402 payment handling.
4
4
 
5
+ ## Compatibility Notes
6
+
7
+ - The EVM `exact` flow is being aligned to the Coinbase x402 v2 payload shape.
8
+ - Exact transfer authorizations are emitted in `payload.authorization`.
9
+ - Migration fallback support for the legacy `extensions.transferAuthorization` field remains on the server side while compatibility is rolled out.
10
+
5
11
  ## Features
6
12
 
7
13
  - 🔐 **Automatic Payment Handling** - Transparently handles HTTP 402 Payment Required responses
@@ -40,6 +46,12 @@ const data = await response.json();
40
46
  console.log(data);
41
47
  ```
42
48
 
49
+ ## BSC Testnet Example
50
+
51
+ For a smoke-tested BSC testnet `exact` example that uses a local private key and targets the Coinbase-compatible `exact` route, see [`examples/bsc-testnet-smoke/README.md`](../../../examples/bsc-testnet-smoke/README.md).
52
+
53
+ The BSC `exact` path in this repository is aligned around ERC-3009. On testnet, the validated asset is `DHLU`, not generic USDT/USDC permit-only flows.
54
+
43
55
  ## Core Concepts
44
56
 
45
57
  ### Payment Flow
@@ -310,6 +322,8 @@ Allows users to pay using TRC-20 tokens (USDT/USDD) without holding any TRX for
310
322
 
311
323
  Direct payment scheme using ERC-3009 (`TransferWithAuthorization`) where supported by the token contract (primarily for EVM networks like BSC).
312
324
 
325
+ For BSC testnet interoperability, treat token choice as part of the protocol contract. If the endpoint advertises `exact`, the asset must actually implement ERC-3009. The smoke-tested example in this repository uses `DHLU` on `eip155:97`.
326
+
313
327
  ## Security
314
328
 
315
329
  - **Never commit private keys** - Use environment variables
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Manages payment mechanism registry and coordinates payment flows.
5
5
  */
6
- import { ExactGasFreeClientMechanism } from '../mechanisms/exactGasfree.js';
6
+ import { ExactGasFreeClientMechanism } from '../mechanisms/tron/exact_gasfree/index.js';
7
7
  import { DefaultTokenSelectionStrategy } from './tokenSelection.js';
8
8
  import { UnsupportedNetworkError } from '../errors.js';
9
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"x402Client.js","sourceRoot":"","sources":["../../src/client/x402Client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAO5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAoFvD;;;;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,MAAkE;QAC/E,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,UAAU;YAC3C,CAAC,CAAC,IAAK,MAAqD,CAAC,IAAI,CAAC;YAClE,CAAC,CAAC,MAAM,CAAC;QACX,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,MAAc,EAAE,OAAe;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,SAAS,EAAE,SAAS,EAAE,EAAE,IAAI,IAAI,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,MAAc,EAAE,OAAe;QAC9C,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,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,eAAe,CAAC,MAAoB,EAAE,UAA4C,EAAE;QAClF,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,2BAA2B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnF,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,UAAoC,EACpC,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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAOxF,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAoFvD;;;;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,MAAkE;QAC/E,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,UAAU;YAC3C,CAAC,CAAC,IAAK,MAAqD,CAAC,IAAI,CAAC;YAClE,CAAC,CAAC,MAAM,CAAC;QACX,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,MAAc,EAAE,OAAe;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,SAAS,EAAE,SAAS,EAAE,EAAE,IAAI,IAAI,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,MAAc,EAAE,OAAe;QAC9C,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,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,eAAe,CAAC,MAAoB,EAAE,UAA4C,EAAE;QAClF,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,2BAA2B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnF,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,UAAoC,EACpC,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"}
package/dist/errors.d.ts CHANGED
@@ -38,4 +38,12 @@ export declare class PermitValidationError extends ValidationError {
38
38
  reason: string;
39
39
  constructor(reason: string, message?: string);
40
40
  }
41
+ /** Facilitator HTTP / protocol error */
42
+ export declare class FacilitatorError extends X402Error {
43
+ /** HTTP status code returned by facilitator (0 if request itself failed) */
44
+ status: number;
45
+ /** Response body, decoded as text or null if unavailable */
46
+ body: string | null;
47
+ constructor(message: string, status: number, body?: string | null);
48
+ }
41
49
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qCAAqC;AACrC,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAI5B;AAED,8BAA8B;AAC9B,qBAAa,cAAe,SAAQ,SAAS;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,gCAAgC;AAChC,qBAAa,sBAAuB,SAAQ,cAAc;gBAC5C,OAAO,EAAE,MAAM;CAI5B;AAED,8BAA8B;AAC9B,qBAAa,cAAe,SAAQ,SAAS;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,6BAA6B;AAC7B,qBAAa,0BAA2B,SAAQ,cAAc;gBAChD,OAAO,EAAE,MAAM;CAI5B;AAED,kCAAkC;AAClC,qBAAa,kBAAmB,SAAQ,SAAS;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,0BAA0B;AAC1B,qBAAa,uBAAwB,SAAQ,kBAAkB;gBACjD,OAAO,EAAE,MAAM;CAI5B;AAED,+BAA+B;AAC/B,qBAAa,eAAgB,SAAQ,SAAS;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,+BAA+B;AAC/B,qBAAa,qBAAsB,SAAQ,eAAe;IACxD,MAAM,EAAE,MAAM,CAAC;gBAEH,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAK7C"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qCAAqC;AACrC,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAI5B;AAED,8BAA8B;AAC9B,qBAAa,cAAe,SAAQ,SAAS;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,gCAAgC;AAChC,qBAAa,sBAAuB,SAAQ,cAAc;gBAC5C,OAAO,EAAE,MAAM;CAI5B;AAED,8BAA8B;AAC9B,qBAAa,cAAe,SAAQ,SAAS;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,6BAA6B;AAC7B,qBAAa,0BAA2B,SAAQ,cAAc;gBAChD,OAAO,EAAE,MAAM;CAI5B;AAED,kCAAkC;AAClC,qBAAa,kBAAmB,SAAQ,SAAS;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,0BAA0B;AAC1B,qBAAa,uBAAwB,SAAQ,kBAAkB;gBACjD,OAAO,EAAE,MAAM;CAI5B;AAED,+BAA+B;AAC/B,qBAAa,eAAgB,SAAQ,SAAS;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,+BAA+B;AAC/B,qBAAa,qBAAsB,SAAQ,eAAe;IACxD,MAAM,EAAE,MAAM,CAAC;gBAEH,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAK7C;AAED,wCAAwC;AACxC,qBAAa,gBAAiB,SAAQ,SAAS;IAC7C,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;gBAER,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,IAAW;CAMxE"}
package/dist/errors.js CHANGED
@@ -66,4 +66,17 @@ export class PermitValidationError extends ValidationError {
66
66
  this.reason = reason;
67
67
  }
68
68
  }
69
+ /** Facilitator HTTP / protocol error */
70
+ export class FacilitatorError extends X402Error {
71
+ /** HTTP status code returned by facilitator (0 if request itself failed) */
72
+ status;
73
+ /** Response body, decoded as text or null if unavailable */
74
+ body;
75
+ constructor(message, status, body = null) {
76
+ super(message);
77
+ this.name = 'FacilitatorError';
78
+ this.status = status;
79
+ this.body = body;
80
+ }
81
+ }
69
82
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qCAAqC;AACrC,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,8BAA8B;AAC9B,MAAM,OAAO,cAAe,SAAQ,SAAS;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,gCAAgC;AAChC,MAAM,OAAO,sBAAuB,SAAQ,cAAc;IACxD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,8BAA8B;AAC9B,MAAM,OAAO,cAAe,SAAQ,SAAS;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,6BAA6B;AAC7B,MAAM,OAAO,0BAA2B,SAAQ,cAAc;IAC5D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED,kCAAkC;AAClC,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,0BAA0B;AAC1B,MAAM,OAAO,uBAAwB,SAAQ,kBAAkB;IAC7D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,+BAA+B;AAC/B,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,+BAA+B;AAC/B,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IACxD,MAAM,CAAS;IAEf,YAAY,MAAc,EAAE,OAAgB;QAC1C,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qCAAqC;AACrC,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,8BAA8B;AAC9B,MAAM,OAAO,cAAe,SAAQ,SAAS;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,gCAAgC;AAChC,MAAM,OAAO,sBAAuB,SAAQ,cAAc;IACxD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,8BAA8B;AAC9B,MAAM,OAAO,cAAe,SAAQ,SAAS;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,6BAA6B;AAC7B,MAAM,OAAO,0BAA2B,SAAQ,cAAc;IAC5D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED,kCAAkC;AAClC,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,0BAA0B;AAC1B,MAAM,OAAO,uBAAwB,SAAQ,kBAAkB;IAC7D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,+BAA+B;AAC/B,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,+BAA+B;AAC/B,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IACxD,MAAM,CAAS;IAEf,YAAY,MAAc,EAAE,OAAgB;QAC1C,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,wCAAwC;AACxC,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IAC7C,4EAA4E;IAC5E,MAAM,CAAS;IACf,4DAA4D;IAC5D,IAAI,CAAgB;IAEpB,YAAY,OAAe,EAAE,MAAc,EAAE,OAAsB,IAAI;QACrE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * FacilitatorClient — TypeScript port of `bankofai.x402.facilitator.FacilitatorClient`.
3
+ *
4
+ * Talks to a remote x402 facilitator via HTTP. Handles `/supported`, `/fee/quote`,
5
+ * `/verify`, `/settle`. Used by server middleware (Hono / Express / etc.) to verify
6
+ * payments off-chain and trigger on-chain settlement.
7
+ */
8
+ import type { FeeQuoteResponse, PaymentPayload, PaymentRequirements, SettleResponse, SupportedResponse, VerifyResponse } from '../types/index.js';
9
+ /** Configuration for {@link FacilitatorClient}. */
10
+ export interface FacilitatorClientConfig {
11
+ /** Facilitator service base URL (trailing slash optional, will be normalized). */
12
+ baseUrl: string;
13
+ /** Optional custom HTTP headers (e.g. `Authorization`). */
14
+ headers?: Record<string, string>;
15
+ /** Stable identifier for this facilitator. Defaults to `baseUrl`. */
16
+ facilitatorId?: string;
17
+ /** Per-request timeout in milliseconds. Defaults to 120 000 (120 s). */
18
+ timeoutMs?: number;
19
+ /** Custom fetch implementation (defaults to global `fetch`). Useful for tests. */
20
+ fetchImpl?: typeof fetch;
21
+ }
22
+ /**
23
+ * Optional payment context forwarded to `/fee/quote`.
24
+ *
25
+ * Wire field is `paymentPermitContext` to match the facilitator API; the client
26
+ * accepts a plain JSON-shaped object and forwards it as-is.
27
+ */
28
+ export type FeeQuoteContext = Record<string, unknown>;
29
+ /**
30
+ * HTTP client for an x402 facilitator service.
31
+ *
32
+ * Mirrors the Python `FacilitatorClient` interface 1:1 so server middleware on
33
+ * either runtime sees the same shape.
34
+ */
35
+ export declare class FacilitatorClient {
36
+ private readonly baseUrl;
37
+ private readonly headers;
38
+ private readonly timeoutMs;
39
+ private readonly fetchImpl;
40
+ /** Stable identifier for this facilitator (defaults to `baseUrl`). */
41
+ readonly facilitatorId: string;
42
+ constructor(config: FacilitatorClientConfig);
43
+ /**
44
+ * Query facilitator's supported (`x402Version`, `scheme`, `network`) tuples.
45
+ */
46
+ supported(): Promise<SupportedResponse>;
47
+ /**
48
+ * Request fee quotes for a list of payment requirements.
49
+ *
50
+ * @param accepts - The same `accepts[]` you would put in `PaymentRequired`.
51
+ * @param context - Optional `paymentPermitContext`.
52
+ */
53
+ feeQuote(accepts: PaymentRequirements[], context?: FeeQuoteContext): Promise<FeeQuoteResponse[]>;
54
+ /**
55
+ * Verify a payment payload off-chain (no on-chain transaction).
56
+ *
57
+ * Server middleware should call this **before** routing the actual request
58
+ * handler — only proceed to settlement if {@link VerifyResponse.isValid} is true.
59
+ */
60
+ verify(payload: PaymentPayload, requirements: PaymentRequirements): Promise<VerifyResponse>;
61
+ /**
62
+ * Execute on-chain settlement for a verified payment.
63
+ *
64
+ * Returns a {@link SettleResponse} carrying the transaction hash on success
65
+ * or an `errorReason` on failure.
66
+ */
67
+ settle(payload: PaymentPayload, requirements: PaymentRequirements): Promise<SettleResponse>;
68
+ /**
69
+ * Symmetry with the Python client. The TS implementation uses the global
70
+ * `fetch` (no persistent connection pool to close); this is a no-op kept for
71
+ * API parity so callers can write the same teardown logic on both runtimes.
72
+ */
73
+ close(): Promise<void>;
74
+ private requestJson;
75
+ private safeReadText;
76
+ }
77
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/facilitator/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE3B,mDAAmD;AACnD,MAAM,WAAW,uBAAuB;IACtC,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAID;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IAEzC,sEAAsE;IACtE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAEnB,MAAM,EAAE,uBAAuB;IAQ3C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI7C;;;;;OAKG;IACG,QAAQ,CACZ,OAAO,EAAE,mBAAmB,EAAE,EAC9B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAQ9B;;;;;OAKG;IACG,MAAM,CACV,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,cAAc,CAAC;IAO1B;;;;;OAKG;IACG,MAAM,CACV,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,cAAc,CAAC;IAO1B;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAId,WAAW;YA2DX,YAAY;CAO3B"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * FacilitatorClient — TypeScript port of `bankofai.x402.facilitator.FacilitatorClient`.
3
+ *
4
+ * Talks to a remote x402 facilitator via HTTP. Handles `/supported`, `/fee/quote`,
5
+ * `/verify`, `/settle`. Used by server middleware (Hono / Express / etc.) to verify
6
+ * payments off-chain and trigger on-chain settlement.
7
+ */
8
+ import { FacilitatorError } from '../errors.js';
9
+ const DEFAULT_TIMEOUT_MS = 120_000;
10
+ /**
11
+ * HTTP client for an x402 facilitator service.
12
+ *
13
+ * Mirrors the Python `FacilitatorClient` interface 1:1 so server middleware on
14
+ * either runtime sees the same shape.
15
+ */
16
+ export class FacilitatorClient {
17
+ baseUrl;
18
+ headers;
19
+ timeoutMs;
20
+ fetchImpl;
21
+ /** Stable identifier for this facilitator (defaults to `baseUrl`). */
22
+ facilitatorId;
23
+ constructor(config) {
24
+ this.baseUrl = config.baseUrl.replace(/\/+$/, '');
25
+ this.headers = { ...(config.headers ?? {}) };
26
+ this.facilitatorId = config.facilitatorId ?? this.baseUrl;
27
+ this.timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS;
28
+ this.fetchImpl = config.fetchImpl ?? fetch;
29
+ }
30
+ /**
31
+ * Query facilitator's supported (`x402Version`, `scheme`, `network`) tuples.
32
+ */
33
+ async supported() {
34
+ return this.requestJson('GET', '/supported');
35
+ }
36
+ /**
37
+ * Request fee quotes for a list of payment requirements.
38
+ *
39
+ * @param accepts - The same `accepts[]` you would put in `PaymentRequired`.
40
+ * @param context - Optional `paymentPermitContext`.
41
+ */
42
+ async feeQuote(accepts, context) {
43
+ const body = { accepts };
44
+ if (context !== undefined) {
45
+ body.paymentPermitContext = context;
46
+ }
47
+ return this.requestJson('POST', '/fee/quote', body);
48
+ }
49
+ /**
50
+ * Verify a payment payload off-chain (no on-chain transaction).
51
+ *
52
+ * Server middleware should call this **before** routing the actual request
53
+ * handler — only proceed to settlement if {@link VerifyResponse.isValid} is true.
54
+ */
55
+ async verify(payload, requirements) {
56
+ return this.requestJson('POST', '/verify', {
57
+ paymentPayload: payload,
58
+ paymentRequirements: requirements,
59
+ });
60
+ }
61
+ /**
62
+ * Execute on-chain settlement for a verified payment.
63
+ *
64
+ * Returns a {@link SettleResponse} carrying the transaction hash on success
65
+ * or an `errorReason` on failure.
66
+ */
67
+ async settle(payload, requirements) {
68
+ return this.requestJson('POST', '/settle', {
69
+ paymentPayload: payload,
70
+ paymentRequirements: requirements,
71
+ });
72
+ }
73
+ /**
74
+ * Symmetry with the Python client. The TS implementation uses the global
75
+ * `fetch` (no persistent connection pool to close); this is a no-op kept for
76
+ * API parity so callers can write the same teardown logic on both runtimes.
77
+ */
78
+ async close() {
79
+ // no-op — `fetch` does not require explicit cleanup
80
+ }
81
+ async requestJson(method, path, body) {
82
+ const url = `${this.baseUrl}${path.startsWith('/') ? path : `/${path}`}`;
83
+ const controller = new AbortController();
84
+ const timer = setTimeout(() => controller.abort(), this.timeoutMs);
85
+ const init = {
86
+ method,
87
+ headers: {
88
+ Accept: 'application/json',
89
+ ...(body !== undefined ? { 'Content-Type': 'application/json' } : {}),
90
+ ...this.headers,
91
+ },
92
+ signal: controller.signal,
93
+ };
94
+ if (body !== undefined) {
95
+ init.body = JSON.stringify(body);
96
+ }
97
+ let response;
98
+ try {
99
+ response = await this.fetchImpl(url, init);
100
+ }
101
+ catch (err) {
102
+ if (err instanceof Error && err.name === 'AbortError') {
103
+ throw new FacilitatorError(`Facilitator request to ${path} timed out after ${this.timeoutMs}ms`, 0);
104
+ }
105
+ throw new FacilitatorError(`Facilitator request to ${path} failed: ${err.message}`, 0);
106
+ }
107
+ finally {
108
+ clearTimeout(timer);
109
+ }
110
+ if (!response.ok) {
111
+ const text = await this.safeReadText(response);
112
+ throw new FacilitatorError(`Facilitator returned HTTP ${response.status} for ${path}`, response.status, text);
113
+ }
114
+ try {
115
+ return (await response.json());
116
+ }
117
+ catch (err) {
118
+ throw new FacilitatorError(`Facilitator response from ${path} was not valid JSON: ${err.message}`, response.status);
119
+ }
120
+ }
121
+ async safeReadText(response) {
122
+ try {
123
+ return await response.text();
124
+ }
125
+ catch {
126
+ return null;
127
+ }
128
+ }
129
+ }
130
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/facilitator/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Facilitator surface for the x402 payment protocol.
3
+ *
4
+ * - {@link FacilitatorClient} — talks to a remote facilitator (used by server middleware)
5
+ * - {@link X402Facilitator} — in-process payment processor (the engine of a facilitator service)
6
+ *
7
+ * Re-exported via the package root so consumers can `import { FacilitatorClient,
8
+ * X402Facilitator } from '@bankofai/x402'`.
9
+ */
10
+ export { FacilitatorClient } from './client.js';
11
+ export type { FacilitatorClientConfig, FeeQuoteContext } from './client.js';
12
+ export { X402Facilitator } from './x402Facilitator.js';
13
+ export type { FacilitatorMechanism, FacilitatorLogger } from './x402Facilitator.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/facilitator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Facilitator surface for the x402 payment protocol.
3
+ *
4
+ * - {@link FacilitatorClient} — talks to a remote facilitator (used by server middleware)
5
+ * - {@link X402Facilitator} — in-process payment processor (the engine of a facilitator service)
6
+ *
7
+ * Re-exported via the package root so consumers can `import { FacilitatorClient,
8
+ * X402Facilitator } from '@bankofai/x402'`.
9
+ */
10
+ export { FacilitatorClient } from './client.js';
11
+ export { X402Facilitator } from './x402Facilitator.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/facilitator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * X402Facilitator — TypeScript port of `bankofai.x402.facilitator.X402Facilitator`.
3
+ *
4
+ * The core in-process payment processor for an x402 facilitator service.
5
+ * Manages a registry of {@link FacilitatorMechanism}s keyed by `(network, scheme)`
6
+ * and routes verify / settle / feeQuote calls to the right implementation.
7
+ *
8
+ * This is the *engine* — wrap it with an HTTP server (Hono / Express / Fastify)
9
+ * to expose `/verify`, `/settle`, `/supported`, `/fee/quote` endpoints.
10
+ */
11
+ import type { FeeQuoteResponse, PaymentPayload, PaymentRequirements, SettleResponse, SupportedResponse, VerifyResponse } from '../types/index.js';
12
+ /**
13
+ * Server-side mechanism interface for the facilitator.
14
+ *
15
+ * One per `(network, scheme)` pair. Implementations live in the chain-specific
16
+ * mechanism packages (TRON / EVM / etc.) — this interface keeps the facilitator
17
+ * core agnostic of any particular chain.
18
+ */
19
+ export interface FacilitatorMechanism {
20
+ /** Scheme name this mechanism handles (e.g. `"exact"`, `"exact_permit"`). */
21
+ scheme(): string;
22
+ /**
23
+ * Optional fee quote for a single requirement. Return `null` when this
24
+ * mechanism cannot quote the requirement (e.g. token not in registry).
25
+ */
26
+ feeQuote(accept: PaymentRequirements, context?: Record<string, unknown>): Promise<FeeQuoteResponse | null>;
27
+ /** Off-chain signature / replay / timing verification. */
28
+ verify(payload: PaymentPayload, requirements: PaymentRequirements): Promise<VerifyResponse>;
29
+ /** On-chain settlement. */
30
+ settle(payload: PaymentPayload, requirements: PaymentRequirements): Promise<SettleResponse>;
31
+ }
32
+ /** Optional logger interface for observability hooks. */
33
+ export interface FacilitatorLogger {
34
+ warn(msg: string, meta?: Record<string, unknown>): void;
35
+ error(msg: string, meta?: Record<string, unknown>): void;
36
+ }
37
+ /**
38
+ * In-process payment processor. Mirrors the Python `X402Facilitator` 1:1.
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * const facilitator = new X402Facilitator()
43
+ * .register(['tron:nile'], tronExactMechanism)
44
+ * .register(['eip155:97'], bscExactPermitMechanism);
45
+ *
46
+ * const verifyResult = await facilitator.verify(payload, requirements);
47
+ * if (verifyResult.isValid) {
48
+ * const settleResult = await facilitator.settle(payload, requirements);
49
+ * }
50
+ * ```
51
+ */
52
+ export declare class X402Facilitator {
53
+ /** network → scheme → mechanism */
54
+ private readonly mechanisms;
55
+ private readonly logger;
56
+ constructor(opts?: {
57
+ logger?: FacilitatorLogger;
58
+ });
59
+ /**
60
+ * Register a mechanism for a list of networks. Returns `this` for chaining.
61
+ */
62
+ register(networks: string[], mechanism: FacilitatorMechanism): this;
63
+ /** Snapshot of registered `(x402Version, scheme, network)` triples. */
64
+ supported(): SupportedResponse;
65
+ /**
66
+ * Fee quotes for a list of requirements. Unsupported `(network, scheme)` /
67
+ * mechanisms returning `null` are silently skipped — the result list may be
68
+ * shorter than the input. Per-mechanism exceptions surface as a thrown
69
+ * `Error` (caller decides whether to 4xx or 5xx the HTTP request).
70
+ */
71
+ feeQuote(accepts: PaymentRequirements[], context?: Record<string, unknown>): Promise<FeeQuoteResponse[]>;
72
+ /**
73
+ * Verify a payment payload off-chain. Always returns a {@link VerifyResponse};
74
+ * mechanism exceptions become `isValid: false` with the message as
75
+ * `invalidReason` and a logger.error entry.
76
+ */
77
+ verify(payload: PaymentPayload, requirements: PaymentRequirements): Promise<VerifyResponse>;
78
+ /**
79
+ * Execute on-chain settlement. Always returns a {@link SettleResponse};
80
+ * exceptions become `success: false` with `errorReason` set.
81
+ */
82
+ settle(payload: PaymentPayload, requirements: PaymentRequirements): Promise<SettleResponse>;
83
+ private findMechanism;
84
+ /**
85
+ * Strict variant — throws if any EVM address fails checksum. Used in verify /
86
+ * settle so the failure message ends up in the response.
87
+ */
88
+ private normalizeEvmRequirements;
89
+ /**
90
+ * Lenient variant for `feeQuote` — invalid-EVM-input requirements are simply
91
+ * skipped (returning the original so they can be filtered out by mechanism
92
+ * lookup miss).
93
+ */
94
+ private tryNormalizeEvmRequirements;
95
+ private checksumAddressStrict;
96
+ }
97
+ //# sourceMappingURL=x402Facilitator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402Facilitator.d.ts","sourceRoot":"","sources":["../../src/facilitator/x402Facilitator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE3B;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,MAAM,IAAI,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CACN,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACpC,0DAA0D;IAC1D,MAAM,CACJ,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3B,2BAA2B;IAC3B,MAAM,CACJ,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACxD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC1D;AAOD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,eAAe;IAC1B,mCAAmC;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwD;IAEnF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;gBAE/B,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,iBAAiB,CAAA;KAAE;IAIjD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAanE,uEAAuE;IACvE,SAAS,IAAI,iBAAiB;IAU9B;;;;;OAKG;IACG,QAAQ,CACZ,OAAO,EAAE,mBAAmB,EAAE,EAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAuB9B;;;;OAIG;IACG,MAAM,CACV,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,cAAc,CAAC;IA0B1B;;;OAGG;IACG,MAAM,CACV,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,cAAc,CAAC;IAmC1B,OAAO,CAAC,aAAa;IAIrB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAyBhC;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAQnC,OAAO,CAAC,qBAAqB;CAM9B"}