mppx 0.8.15 → 0.8.17

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 (464) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/Challenge.d.ts.map +1 -1
  3. package/dist/Challenge.js +40 -35
  4. package/dist/Challenge.js.map +1 -1
  5. package/dist/Constants.d.ts +17 -17
  6. package/dist/Constants.d.ts.map +1 -1
  7. package/dist/Credential.d.ts.map +1 -1
  8. package/dist/Errors.d.ts +3 -3
  9. package/dist/Errors.d.ts.map +1 -1
  10. package/dist/Errors.js.map +1 -1
  11. package/dist/Method.d.ts +35 -5
  12. package/dist/Method.d.ts.map +1 -1
  13. package/dist/Method.js +7 -22
  14. package/dist/Method.js.map +1 -1
  15. package/dist/Store.d.ts +19 -0
  16. package/dist/Store.d.ts.map +1 -1
  17. package/dist/Store.js +43 -0
  18. package/dist/Store.js.map +1 -1
  19. package/dist/attestation/Client.d.ts +17 -0
  20. package/dist/attestation/Client.d.ts.map +1 -0
  21. package/dist/attestation/Client.js +28 -0
  22. package/dist/attestation/Client.js.map +1 -0
  23. package/dist/attestation/Constants.d.ts +15 -0
  24. package/dist/attestation/Constants.d.ts.map +1 -0
  25. package/dist/attestation/Constants.js +15 -0
  26. package/dist/attestation/Constants.js.map +1 -0
  27. package/dist/attestation/Server.d.ts +4 -0
  28. package/dist/attestation/Server.d.ts.map +1 -0
  29. package/dist/attestation/Server.js +8 -0
  30. package/dist/attestation/Server.js.map +1 -0
  31. package/dist/attestation/Types.d.ts +76 -0
  32. package/dist/attestation/Types.d.ts.map +1 -0
  33. package/dist/attestation/Types.js +2 -0
  34. package/dist/attestation/Types.js.map +1 -0
  35. package/dist/attestation/index.d.ts +6 -0
  36. package/dist/attestation/index.d.ts.map +1 -0
  37. package/dist/attestation/index.js +6 -0
  38. package/dist/attestation/index.js.map +1 -0
  39. package/dist/attestation/internal/HttpMessageSignature.d.ts +73 -0
  40. package/dist/attestation/internal/HttpMessageSignature.d.ts.map +1 -0
  41. package/dist/attestation/internal/HttpMessageSignature.js +320 -0
  42. package/dist/attestation/internal/HttpMessageSignature.js.map +1 -0
  43. package/dist/attestation/internal/SigningContext.d.ts +4 -0
  44. package/dist/attestation/internal/SigningContext.d.ts.map +1 -0
  45. package/dist/attestation/internal/SigningContext.js +11 -0
  46. package/dist/attestation/internal/SigningContext.js.map +1 -0
  47. package/dist/cli/account.d.ts +14 -14
  48. package/dist/cli/account.d.ts.map +1 -1
  49. package/dist/cli/cli.d.ts +6 -6
  50. package/dist/cli/cli.d.ts.map +1 -1
  51. package/dist/cli/cli.js +1 -0
  52. package/dist/cli/cli.js.map +1 -1
  53. package/dist/cli/plugins/tempo.js.map +1 -1
  54. package/dist/cli/sessions/commands.d.ts +4 -4
  55. package/dist/cli/sessions/commands.d.ts.map +1 -1
  56. package/dist/cli/sessions/commands.js.map +1 -1
  57. package/dist/cli/sessions/store.d.ts.map +1 -1
  58. package/dist/cli/sessions/store.js.map +1 -1
  59. package/dist/cli/utils.d.ts +1 -1
  60. package/dist/cli/utils.d.ts.map +1 -1
  61. package/dist/cli/utils.js.map +1 -1
  62. package/dist/cli/validate/discovery.js.map +1 -1
  63. package/dist/cli/validate/index.d.ts +3 -3
  64. package/dist/cli/validate/index.d.ts.map +1 -1
  65. package/dist/client/Mppx.d.ts +3 -0
  66. package/dist/client/Mppx.d.ts.map +1 -1
  67. package/dist/client/Mppx.js +13 -5
  68. package/dist/client/Mppx.js.map +1 -1
  69. package/dist/client/Transport.d.ts +3 -5
  70. package/dist/client/Transport.d.ts.map +1 -1
  71. package/dist/client/Transport.js +1 -17
  72. package/dist/client/Transport.js.map +1 -1
  73. package/dist/client/internal/Fetch.d.ts.map +1 -1
  74. package/dist/client/internal/Fetch.js +2 -6
  75. package/dist/client/internal/Fetch.js.map +1 -1
  76. package/dist/client/node.js.map +1 -1
  77. package/dist/discovery/OpenApi.d.ts +3 -5
  78. package/dist/discovery/OpenApi.d.ts.map +1 -1
  79. package/dist/discovery/OpenApi.js +13 -34
  80. package/dist/discovery/OpenApi.js.map +1 -1
  81. package/dist/discovery/internal/Metadata.d.ts +20 -0
  82. package/dist/discovery/internal/Metadata.d.ts.map +1 -0
  83. package/dist/discovery/internal/Metadata.js +36 -0
  84. package/dist/discovery/internal/Metadata.js.map +1 -0
  85. package/dist/evm/Methods.d.ts +11 -11
  86. package/dist/evm/Methods.d.ts.map +1 -1
  87. package/dist/evm/Types.d.ts +17 -17
  88. package/dist/evm/Types.d.ts.map +1 -1
  89. package/dist/evm/client/Charge.d.ts +11 -11
  90. package/dist/evm/client/Methods.d.ts +11 -11
  91. package/dist/evm/server/Charge.d.ts +1 -1
  92. package/dist/evm/server/Charge.d.ts.map +1 -1
  93. package/dist/evm/server/Charge.js +2 -0
  94. package/dist/evm/server/Charge.js.map +1 -1
  95. package/dist/evm/server/Methods.d.ts +11 -11
  96. package/dist/internal/HeaderCodec.d.ts +2 -2
  97. package/dist/internal/HeaderCodec.d.ts.map +1 -1
  98. package/dist/internal/types.d.ts +6 -0
  99. package/dist/internal/types.d.ts.map +1 -1
  100. package/dist/middlewares/elysia.js.map +1 -1
  101. package/dist/middlewares/express.js.map +1 -1
  102. package/dist/middlewares/hono.js.map +1 -1
  103. package/dist/middlewares/nextjs.js.map +1 -1
  104. package/dist/proxy/Proxy.d.ts +2 -0
  105. package/dist/proxy/Proxy.d.ts.map +1 -1
  106. package/dist/proxy/Proxy.js +117 -9
  107. package/dist/proxy/Proxy.js.map +1 -1
  108. package/dist/proxy/Service.d.ts +36 -1
  109. package/dist/proxy/Service.d.ts.map +1 -1
  110. package/dist/proxy/Service.js +9 -8
  111. package/dist/proxy/Service.js.map +1 -1
  112. package/dist/proxy/services/anthropic.d.ts.map +1 -1
  113. package/dist/proxy/services/anthropic.js +1 -0
  114. package/dist/proxy/services/anthropic.js.map +1 -1
  115. package/dist/proxy/services/openai.d.ts.map +1 -1
  116. package/dist/proxy/services/openai.js +1 -0
  117. package/dist/proxy/services/openai.js.map +1 -1
  118. package/dist/proxy/services/stripe.d.ts.map +1 -1
  119. package/dist/proxy/services/stripe.js +1 -0
  120. package/dist/proxy/services/stripe.js.map +1 -1
  121. package/dist/server/Mppx.d.ts +75 -13
  122. package/dist/server/Mppx.d.ts.map +1 -1
  123. package/dist/server/Mppx.js +201 -23
  124. package/dist/server/Mppx.js.map +1 -1
  125. package/dist/server/internal/html/config.d.ts +9 -9
  126. package/dist/server/internal/html/config.d.ts.map +1 -1
  127. package/dist/server/internal/html/constants.d.ts +17 -17
  128. package/dist/server/internal/html/constants.d.ts.map +1 -1
  129. package/dist/stripe/Methods.d.ts +10 -10
  130. package/dist/stripe/Methods.d.ts.map +1 -1
  131. package/dist/stripe/client/Charge.d.ts +10 -10
  132. package/dist/stripe/client/Methods.d.ts +10 -10
  133. package/dist/stripe/internal/constants.d.ts +1 -1
  134. package/dist/stripe/internal/constants.js +1 -1
  135. package/dist/stripe/internal/types.d.ts +1 -0
  136. package/dist/stripe/internal/types.d.ts.map +1 -1
  137. package/dist/stripe/server/Charge.d.ts +11 -11
  138. package/dist/stripe/server/Charge.d.ts.map +1 -1
  139. package/dist/stripe/server/Charge.js +49 -1
  140. package/dist/stripe/server/Charge.js.map +1 -1
  141. package/dist/stripe/server/Methods.d.ts +137 -48
  142. package/dist/stripe/server/Methods.d.ts.map +1 -1
  143. package/dist/stripe/server/Methods.js +259 -4
  144. package/dist/stripe/server/Methods.js.map +1 -1
  145. package/dist/stripe/server/internal/deposit-address.d.ts +13 -0
  146. package/dist/stripe/server/internal/deposit-address.d.ts.map +1 -0
  147. package/dist/stripe/server/internal/deposit-address.js +28 -0
  148. package/dist/stripe/server/internal/deposit-address.js.map +1 -0
  149. package/dist/stripe/server/internal/html.gen.d.ts +1 -1
  150. package/dist/stripe/server/internal/html.gen.d.ts.map +1 -1
  151. package/dist/stripe/server/internal/html.gen.js +1 -1
  152. package/dist/stripe/server/internal/html.gen.js.map +1 -1
  153. package/dist/stripe/server/internal/record-payment.d.ts +15 -0
  154. package/dist/stripe/server/internal/record-payment.d.ts.map +1 -0
  155. package/dist/stripe/server/internal/record-payment.js +42 -0
  156. package/dist/stripe/server/internal/record-payment.js.map +1 -0
  157. package/dist/stripe/server/internal/request.d.ts +25 -0
  158. package/dist/stripe/server/internal/request.d.ts.map +1 -0
  159. package/dist/stripe/server/internal/request.js +29 -0
  160. package/dist/stripe/server/internal/request.js.map +1 -0
  161. package/dist/tap/Constants.d.ts +28 -0
  162. package/dist/tap/Constants.d.ts.map +1 -0
  163. package/dist/tap/Constants.js +32 -0
  164. package/dist/tap/Constants.js.map +1 -0
  165. package/dist/tap/Types.d.ts +11 -0
  166. package/dist/tap/Types.d.ts.map +1 -0
  167. package/dist/tap/Types.js +2 -0
  168. package/dist/tap/Types.js.map +1 -0
  169. package/dist/tap/client/index.d.ts +26 -0
  170. package/dist/tap/client/index.d.ts.map +1 -0
  171. package/dist/tap/client/index.js +33 -0
  172. package/dist/tap/client/index.js.map +1 -0
  173. package/dist/tap/index.d.ts +5 -0
  174. package/dist/tap/index.d.ts.map +1 -0
  175. package/dist/tap/index.js +5 -0
  176. package/dist/tap/index.js.map +1 -0
  177. package/dist/tap/server/index.d.ts +20 -0
  178. package/dist/tap/server/index.d.ts.map +1 -0
  179. package/dist/tap/server/index.js +36 -0
  180. package/dist/tap/server/index.js.map +1 -0
  181. package/dist/tempo/Attribution.d.ts +1 -1
  182. package/dist/tempo/Methods.d.ts +60 -60
  183. package/dist/tempo/Methods.d.ts.map +1 -1
  184. package/dist/tempo/Proof.d.ts +16 -16
  185. package/dist/tempo/client/Charge.d.ts +19 -19
  186. package/dist/tempo/client/Charge.d.ts.map +1 -1
  187. package/dist/tempo/client/Charge.js +1 -7
  188. package/dist/tempo/client/Charge.js.map +1 -1
  189. package/dist/tempo/client/Methods.d.ts +38 -38
  190. package/dist/tempo/client/Methods.js.map +1 -1
  191. package/dist/tempo/client/Subscription.d.ts +23 -23
  192. package/dist/tempo/client/Subscription.js.map +1 -1
  193. package/dist/tempo/internal/address.d.ts +2 -1
  194. package/dist/tempo/internal/address.d.ts.map +1 -1
  195. package/dist/tempo/internal/address.js +3 -1
  196. package/dist/tempo/internal/address.js.map +1 -1
  197. package/dist/tempo/internal/auto-swap.d.ts.map +1 -1
  198. package/dist/tempo/internal/auto-swap.js +4 -19
  199. package/dist/tempo/internal/auto-swap.js.map +1 -1
  200. package/dist/tempo/internal/defaults.d.ts +6 -6
  201. package/dist/tempo/internal/defaults.d.ts.map +1 -1
  202. package/dist/tempo/internal/fee-payer.d.ts +12 -12
  203. package/dist/tempo/internal/fee-payer.d.ts.map +1 -1
  204. package/dist/tempo/internal/fee-payer.js.map +1 -1
  205. package/dist/tempo/internal/proof.d.ts +17 -17
  206. package/dist/tempo/internal/proof.d.ts.map +1 -1
  207. package/dist/tempo/legacy/client/Session.d.ts +20 -20
  208. package/dist/tempo/legacy/client/Session.js.map +1 -1
  209. package/dist/tempo/legacy/client/SessionManager.js.map +1 -1
  210. package/dist/tempo/legacy/index.d.ts +1 -3
  211. package/dist/tempo/legacy/index.d.ts.map +1 -1
  212. package/dist/tempo/legacy/index.js +1 -3
  213. package/dist/tempo/legacy/index.js.map +1 -1
  214. package/dist/tempo/legacy/session/escrow.abi.d.ts +374 -374
  215. package/dist/tempo/legacy/session/escrow.abi.d.ts.map +1 -1
  216. package/dist/tempo/server/Charge.d.ts +25 -11
  217. package/dist/tempo/server/Charge.d.ts.map +1 -1
  218. package/dist/tempo/server/Charge.js +44 -39
  219. package/dist/tempo/server/Charge.js.map +1 -1
  220. package/dist/tempo/server/Methods.d.ts +37 -52
  221. package/dist/tempo/server/Methods.d.ts.map +1 -1
  222. package/dist/tempo/server/Methods.js +0 -14
  223. package/dist/tempo/server/Methods.js.map +1 -1
  224. package/dist/tempo/server/Relay.d.ts +1 -1
  225. package/dist/tempo/server/Relay.d.ts.map +1 -1
  226. package/dist/tempo/server/Relay.js +2 -2
  227. package/dist/tempo/server/Relay.js.map +1 -1
  228. package/dist/tempo/server/Subscription.d.ts +25 -25
  229. package/dist/tempo/server/Subscription.d.ts.map +1 -1
  230. package/dist/tempo/server/Subscription.js +2 -0
  231. package/dist/tempo/server/Subscription.js.map +1 -1
  232. package/dist/tempo/server/index.d.ts +1 -1
  233. package/dist/tempo/server/index.d.ts.map +1 -1
  234. package/dist/tempo/server/index.js +1 -1
  235. package/dist/tempo/server/index.js.map +1 -1
  236. package/dist/tempo/server/internal/html.gen.d.ts +1 -1
  237. package/dist/tempo/server/internal/html.gen.d.ts.map +1 -1
  238. package/dist/tempo/server/internal/html.gen.js +1 -1
  239. package/dist/tempo/server/internal/html.gen.js.map +1 -1
  240. package/dist/tempo/server/internal/transport.d.ts +2 -0
  241. package/dist/tempo/server/internal/transport.d.ts.map +1 -1
  242. package/dist/tempo/server/internal/transport.js +9 -2
  243. package/dist/tempo/server/internal/transport.js.map +1 -1
  244. package/dist/tempo/session/client/ChannelOps.js.map +1 -1
  245. package/dist/tempo/session/client/CredentialState.d.ts +1 -1
  246. package/dist/tempo/session/client/CredentialState.js.map +1 -1
  247. package/dist/tempo/session/client/ReceiptCoordinator.js.map +1 -1
  248. package/dist/tempo/session/client/Runtime.js.map +1 -1
  249. package/dist/tempo/session/client/Session.d.ts +19 -19
  250. package/dist/tempo/session/client/Session.js.map +1 -1
  251. package/dist/tempo/session/client/SessionManager.js.map +1 -1
  252. package/dist/tempo/session/client/Transports.d.ts.map +1 -1
  253. package/dist/tempo/session/precompile/Chain.d.ts +27 -0
  254. package/dist/tempo/session/precompile/Chain.d.ts.map +1 -1
  255. package/dist/tempo/session/precompile/Chain.js +68 -7
  256. package/dist/tempo/session/precompile/Chain.js.map +1 -1
  257. package/dist/tempo/session/precompile/Protocol.js.map +1 -1
  258. package/dist/tempo/session/precompile/Voucher.d.ts +4 -4
  259. package/dist/tempo/session/precompile/Voucher.d.ts.map +1 -1
  260. package/dist/tempo/session/precompile/escrow.abi.d.ts +306 -306
  261. package/dist/tempo/session/precompile/escrow.abi.d.ts.map +1 -1
  262. package/dist/tempo/session/server/ChannelStore.d.ts +9 -0
  263. package/dist/tempo/session/server/ChannelStore.d.ts.map +1 -1
  264. package/dist/tempo/session/server/ChannelStore.js +16 -8
  265. package/dist/tempo/session/server/ChannelStore.js.map +1 -1
  266. package/dist/tempo/session/server/CredentialVerification.d.ts +30 -13
  267. package/dist/tempo/session/server/CredentialVerification.d.ts.map +1 -1
  268. package/dist/tempo/session/server/CredentialVerification.js +207 -13
  269. package/dist/tempo/session/server/CredentialVerification.js.map +1 -1
  270. package/dist/tempo/session/server/MeteredStream.d.ts +3 -0
  271. package/dist/tempo/session/server/MeteredStream.d.ts.map +1 -1
  272. package/dist/tempo/session/server/MeteredStream.js +3 -1
  273. package/dist/tempo/session/server/MeteredStream.js.map +1 -1
  274. package/dist/tempo/session/server/Session.d.ts +32 -21
  275. package/dist/tempo/session/server/Session.d.ts.map +1 -1
  276. package/dist/tempo/session/server/Session.js +116 -53
  277. package/dist/tempo/session/server/Session.js.map +1 -1
  278. package/dist/tempo/session/server/Sse.d.ts +3 -1
  279. package/dist/tempo/session/server/Sse.d.ts.map +1 -1
  280. package/dist/tempo/session/server/Sse.js +2 -1
  281. package/dist/tempo/session/server/Sse.js.map +1 -1
  282. package/dist/tempo/session/server/Transports.d.ts +1 -1
  283. package/dist/tempo/session/server/Transports.d.ts.map +1 -1
  284. package/dist/tempo/session/server/Transports.js +1 -0
  285. package/dist/tempo/session/server/Transports.js.map +1 -1
  286. package/dist/tempo/session/server/Ws.d.ts +6 -1
  287. package/dist/tempo/session/server/Ws.d.ts.map +1 -1
  288. package/dist/tempo/session/server/Ws.js +1 -0
  289. package/dist/tempo/session/server/Ws.js.map +1 -1
  290. package/dist/tempo/subscription/KeyAuthorization.d.ts +39 -39
  291. package/dist/tempo/subscription/KeyAuthorization.d.ts.map +1 -1
  292. package/dist/viem/Account.d.ts.map +1 -1
  293. package/dist/viem/Account.js.map +1 -1
  294. package/dist/web-bot-auth/Constants.d.ts +20 -0
  295. package/dist/web-bot-auth/Constants.d.ts.map +1 -0
  296. package/dist/web-bot-auth/Constants.js +24 -0
  297. package/dist/web-bot-auth/Constants.js.map +1 -0
  298. package/dist/web-bot-auth/Types.d.ts +10 -0
  299. package/dist/web-bot-auth/Types.d.ts.map +1 -0
  300. package/dist/web-bot-auth/Types.js +2 -0
  301. package/dist/web-bot-auth/Types.js.map +1 -0
  302. package/dist/web-bot-auth/client/index.d.ts +29 -0
  303. package/dist/web-bot-auth/client/index.d.ts.map +1 -0
  304. package/dist/web-bot-auth/client/index.js +64 -0
  305. package/dist/web-bot-auth/client/index.js.map +1 -0
  306. package/dist/web-bot-auth/index.d.ts +7 -0
  307. package/dist/web-bot-auth/index.d.ts.map +1 -0
  308. package/dist/web-bot-auth/index.js +7 -0
  309. package/dist/web-bot-auth/index.js.map +1 -0
  310. package/dist/web-bot-auth/internal/JwkThumbprint.d.ts +5 -0
  311. package/dist/web-bot-auth/internal/JwkThumbprint.d.ts.map +1 -0
  312. package/dist/web-bot-auth/internal/JwkThumbprint.js +20 -0
  313. package/dist/web-bot-auth/internal/JwkThumbprint.js.map +1 -0
  314. package/dist/web-bot-auth/internal/SignatureAgent.d.ts +3 -0
  315. package/dist/web-bot-auth/internal/SignatureAgent.d.ts.map +1 -0
  316. package/dist/web-bot-auth/internal/SignatureAgent.js +18 -0
  317. package/dist/web-bot-auth/internal/SignatureAgent.js.map +1 -0
  318. package/dist/web-bot-auth/server/index.d.ts +35 -0
  319. package/dist/web-bot-auth/server/index.d.ts.map +1 -0
  320. package/dist/web-bot-auth/server/index.js +88 -0
  321. package/dist/web-bot-auth/server/index.js.map +1 -0
  322. package/dist/x402/Assets.d.ts.map +1 -1
  323. package/dist/x402/Types.d.ts +6 -6
  324. package/dist/x402/Types.d.ts.map +1 -1
  325. package/dist/x402/server/EvmCharge.d.ts.map +1 -1
  326. package/dist/x402/server/EvmCharge.js +32 -20
  327. package/dist/x402/server/EvmCharge.js.map +1 -1
  328. package/package.json +19 -3
  329. package/src/Challenge.fuzz.test.ts +80 -47
  330. package/src/Challenge.test.ts +65 -0
  331. package/src/Challenge.ts +39 -35
  332. package/src/Method.ts +82 -68
  333. package/src/Store.test-d.ts +16 -0
  334. package/src/Store.test.ts +50 -0
  335. package/src/Store.ts +68 -0
  336. package/src/attestation/Attestation.integration.test.ts +208 -0
  337. package/src/attestation/Client.test.ts +83 -0
  338. package/src/attestation/Client.ts +34 -0
  339. package/src/attestation/Constants.ts +15 -0
  340. package/src/attestation/Server.test.ts +60 -0
  341. package/src/attestation/Server.ts +12 -0
  342. package/src/attestation/Types.test-d.ts +54 -0
  343. package/src/attestation/Types.ts +77 -0
  344. package/src/attestation/index.ts +5 -0
  345. package/src/attestation/internal/HttpMessageSignature.test.ts +101 -0
  346. package/src/attestation/internal/HttpMessageSignature.ts +429 -0
  347. package/src/attestation/internal/SigningContext.ts +13 -0
  348. package/src/bin.js +2 -0
  349. package/src/cli/cli.ts +1 -0
  350. package/src/client/Mppx.test-d.ts +17 -0
  351. package/src/client/Mppx.test.ts +14 -14
  352. package/src/client/Mppx.ts +25 -4
  353. package/src/client/Transport.test.ts +12 -45
  354. package/src/client/Transport.ts +3 -24
  355. package/src/client/internal/Fetch.ts +2 -6
  356. package/src/discovery/OpenApi.test.ts +170 -0
  357. package/src/discovery/OpenApi.ts +16 -48
  358. package/src/discovery/internal/Metadata.ts +51 -0
  359. package/src/evm/server/Charge.ts +6 -1
  360. package/src/internal/AcceptPayment.test.ts +12 -8
  361. package/src/internal/types.ts +9 -0
  362. package/src/mcp/client/McpClient.integration.test.ts +19 -32
  363. package/src/middlewares/elysia.test.ts +2 -12
  364. package/src/middlewares/express.test.ts +2 -12
  365. package/src/middlewares/hono.test.ts +6 -9
  366. package/src/middlewares/nextjs.test.ts +2 -12
  367. package/src/proxy/Proxy.test.ts +26 -19
  368. package/src/proxy/Proxy.ts +147 -9
  369. package/src/proxy/Proxy.upstreamError.test.ts +364 -0
  370. package/src/proxy/Service.test.ts +73 -3
  371. package/src/proxy/Service.ts +50 -23
  372. package/src/proxy/services/anthropic.ts +1 -0
  373. package/src/proxy/services/hooks.test-d.ts +14 -0
  374. package/src/proxy/services/hooks.test.ts +44 -0
  375. package/src/proxy/services/openai.ts +1 -0
  376. package/src/proxy/services/stripe.ts +1 -0
  377. package/src/server/Methods.test-d.ts +88 -0
  378. package/src/server/Methods.test.ts +69 -0
  379. package/src/server/Mppx.test-d.ts +141 -7
  380. package/src/server/Mppx.test.ts +1017 -119
  381. package/src/server/Mppx.ts +350 -54
  382. package/src/stripe/internal/constants.ts +1 -1
  383. package/src/stripe/internal/types.ts +1 -0
  384. package/src/stripe/server/Charge.test-d.ts +16 -1
  385. package/src/stripe/server/Charge.test.ts +79 -0
  386. package/src/stripe/server/Charge.ts +54 -1
  387. package/src/stripe/server/Methods.test-d.ts +157 -0
  388. package/src/stripe/server/Methods.test.ts +403 -0
  389. package/src/stripe/server/Methods.ts +423 -6
  390. package/src/stripe/server/internal/deposit-address.ts +57 -0
  391. package/src/stripe/server/internal/html/node_modules/.bin/mppx +3 -3
  392. package/src/stripe/server/internal/html/package.json +1 -1
  393. package/src/stripe/server/internal/html.gen.ts +1 -1
  394. package/src/stripe/server/internal/record-payment.ts +66 -0
  395. package/src/stripe/server/internal/request.ts +49 -0
  396. package/src/tap/Constants.ts +32 -0
  397. package/src/tap/Tap.test.ts +125 -0
  398. package/src/tap/Types.ts +11 -0
  399. package/src/tap/client/index.ts +54 -0
  400. package/src/tap/index.ts +4 -0
  401. package/src/tap/server/index.ts +48 -0
  402. package/src/tempo/PublicExports.test-d.ts +3 -3
  403. package/src/tempo/client/Charge.ts +1 -19
  404. package/src/tempo/internal/address.test.ts +42 -0
  405. package/src/tempo/internal/address.ts +3 -3
  406. package/src/tempo/internal/auto-swap.test.ts +4 -4
  407. package/src/tempo/internal/auto-swap.ts +7 -50
  408. package/src/tempo/legacy/README.md +5 -5
  409. package/src/tempo/legacy/index.ts +1 -3
  410. package/src/tempo/server/AtomicStore.test-d.ts +13 -0
  411. package/src/tempo/server/Charge.test.ts +19 -84
  412. package/src/tempo/server/Charge.ts +83 -55
  413. package/src/tempo/server/Methods.ts +0 -20
  414. package/src/tempo/server/Relay.test.ts +5 -5
  415. package/src/tempo/server/Relay.ts +2 -2
  416. package/src/tempo/server/Subscription.ts +4 -1
  417. package/src/tempo/server/index.ts +1 -1
  418. package/src/tempo/server/internal/html/node_modules/.bin/mppx +3 -3
  419. package/src/tempo/server/internal/html/package.json +1 -1
  420. package/src/tempo/server/internal/html.gen.ts +1 -1
  421. package/src/tempo/server/internal/transport.test.ts +22 -3
  422. package/src/tempo/server/internal/transport.ts +15 -3
  423. package/src/tempo/session/README.md +112 -0
  424. package/src/tempo/session/precompile/Chain.ts +131 -11
  425. package/src/tempo/session/server/ChannelStore.ts +33 -12
  426. package/src/tempo/session/server/CredentialVerification.test.ts +4 -4
  427. package/src/tempo/session/server/CredentialVerification.ts +340 -28
  428. package/src/tempo/session/server/MeteredStream.ts +5 -1
  429. package/src/tempo/session/server/Session.test.ts +428 -43
  430. package/src/tempo/session/server/Session.ts +159 -60
  431. package/src/tempo/session/server/Sse.test.ts +77 -0
  432. package/src/tempo/session/server/Sse.ts +8 -1
  433. package/src/tempo/session/server/Transports.ts +2 -1
  434. package/src/tempo/session/server/Ws.test.ts +171 -0
  435. package/src/tempo/session/server/Ws.ts +7 -1
  436. package/src/web-bot-auth/Constants.ts +24 -0
  437. package/src/web-bot-auth/Types.ts +9 -0
  438. package/src/web-bot-auth/WebBotAuth.test.ts +182 -0
  439. package/src/web-bot-auth/client/index.ts +84 -0
  440. package/src/web-bot-auth/index.ts +6 -0
  441. package/src/web-bot-auth/internal/JwkThumbprint.ts +21 -0
  442. package/src/web-bot-auth/internal/SignatureAgent.ts +18 -0
  443. package/src/web-bot-auth/server/index.ts +113 -0
  444. package/src/x402/Exact.e2e.test.ts +121 -81
  445. package/src/x402/Exact.localnet.test.ts +1 -1
  446. package/src/x402/server/EvmCharge.ts +35 -19
  447. package/dist/tempo/legacy/server/Session.d.ts +0 -208
  448. package/dist/tempo/legacy/server/Session.d.ts.map +0 -1
  449. package/dist/tempo/legacy/server/Session.js +0 -698
  450. package/dist/tempo/legacy/server/Session.js.map +0 -1
  451. package/dist/tempo/legacy/server/index.d.ts +0 -5
  452. package/dist/tempo/legacy/server/index.d.ts.map +0 -1
  453. package/dist/tempo/legacy/server/index.js +0 -5
  454. package/dist/tempo/legacy/server/index.js.map +0 -1
  455. package/dist/tempo/legacy/session/ChannelStore.d.ts +0 -22
  456. package/dist/tempo/legacy/session/ChannelStore.d.ts.map +0 -1
  457. package/dist/tempo/legacy/session/ChannelStore.js +0 -6
  458. package/dist/tempo/legacy/session/ChannelStore.js.map +0 -1
  459. package/src/tempo/legacy/server/Defaults.test-d.ts +0 -9
  460. package/src/tempo/legacy/server/Session.test.ts +0 -6370
  461. package/src/tempo/legacy/server/Session.ts +0 -1024
  462. package/src/tempo/legacy/server/index.ts +0 -4
  463. package/src/tempo/legacy/session/ChannelStore.test.ts +0 -58
  464. package/src/tempo/legacy/session/ChannelStore.ts +0 -39
@@ -1,63 +1,152 @@
1
+ import { charge as evmCharge } from '../../evm/server/Charge.js';
2
+ import type * as Method from '../../Method.js';
3
+ import { charge as tempoCharge } from '../../tempo/server/Charge.js';
4
+ import { session as tempoSession } from '../../tempo/session/server/Session.js';
5
+ import type { StripeClient } from '../internal/types.js';
1
6
  import { charge as charge_ } from './Charge.js';
7
+ import { findOrCreateDepositAddress as _findOrCreateDepositAddress } from './internal/deposit-address.js';
8
+ import { type ConnectConfig } from './internal/request.js';
9
+ export declare namespace stripe {
10
+ type Network = 'tempo' | 'base' | 'solana';
11
+ type DepositAddress<N extends Network = Network> = string & {
12
+ readonly __brand: 'StripeDepositAddress';
13
+ readonly __network: N;
14
+ };
15
+ type Parameters = {
16
+ client: StripeClient;
17
+ networkId: string;
18
+ livemode: boolean;
19
+ connect?: ConnectConfig;
20
+ depositAddresses?: Partial<Record<Network, string>> | ((network: Network) => Promise<string>);
21
+ metadata?: Record<string, string> | undefined;
22
+ };
23
+ }
24
+ type CustomRailFactory = (address: string) => Method.AnyServer | readonly Method.AnyServer[];
25
+ type ServerOf<N extends string, I extends string> = Omit<Method.AnyServer, 'name' | 'intent'> & {
26
+ name: N;
27
+ intent: I;
28
+ };
29
+ type TempoServer = ServerOf<'tempo', 'charge'>;
30
+ type TempoSessionServer = ServerOf<'tempo', 'session'>;
31
+ type SptServer = ServerOf<'stripe', 'charge'>;
32
+ type EvmServer = ServerOf<'evm', 'charge'>;
33
+ type BaseConfig = {
34
+ x402: NonNullable<Parameters<typeof evmCharge>[0]['x402']>;
35
+ } & Partial<Omit<Parameters<typeof evmCharge>[0], 'currency' | 'recipient' | 'x402'>>;
36
+ type CustomRailNetwork = Exclude<stripe.Network, 'tempo' | 'base'>;
37
+ type AdditionalConfig = {
38
+ base?: BaseConfig;
39
+ tempo?: {
40
+ session: Omit<tempoSession.Parameters, 'currency' | 'recipient'>;
41
+ };
42
+ } & {
43
+ [K in CustomRailNetwork]?: CustomRailFactory;
44
+ };
45
+ type DefaultMethods = readonly [TempoServer, SptServer];
46
+ type DefaultMethodsWithAdditional<C extends AdditionalConfig> = readonly [
47
+ TempoServer,
48
+ SptServer,
49
+ ...(C extends {
50
+ base: object;
51
+ } ? [EvmServer] : []),
52
+ ...(C extends {
53
+ tempo: {
54
+ session: any;
55
+ };
56
+ } ? [TempoSessionServer] : [])
57
+ ];
58
+ type DefaultMethodName = 'tempo' | 'spt';
59
+ type DefaultMethodsConfig = {
60
+ exclude?: DefaultMethodName[];
61
+ };
62
+ type SyncMethodsResult = DefaultMethods & {
63
+ additional<C extends AdditionalConfig>(config: C): DefaultMethodsWithAdditional<C>;
64
+ };
65
+ interface StripeMachinePayments<P extends stripe.Parameters = stripe.Parameters> {
66
+ spt: {
67
+ charge: (params?: {
68
+ paymentMethodTypes?: string[];
69
+ }) => SptServer;
70
+ };
71
+ tempo: {
72
+ charge: (params: {
73
+ recipient: stripe.DepositAddress<'tempo'>;
74
+ metadata?: Record<string, string>;
75
+ } & Partial<Omit<Parameters<typeof tempoCharge>[0], 'currency' | 'recipient'>>) => TempoServer;
76
+ session: (params: {
77
+ recipient: stripe.DepositAddress<'tempo'>;
78
+ } & Omit<tempoSession.Parameters, 'currency' | 'recipient'>) => TempoSessionServer;
79
+ };
80
+ base: {
81
+ charge: (params: {
82
+ recipient: stripe.DepositAddress<'base'>;
83
+ metadata?: Record<string, string>;
84
+ } & BaseConfig) => EvmServer;
85
+ };
86
+ findOrCreateDepositAddress: <N extends stripe.Network>(network: N) => Promise<stripe.DepositAddress<N>>;
87
+ defaultMethods: (config?: DefaultMethodsConfig) => P['depositAddresses'] extends Partial<Record<stripe.Network, string>> ? SyncMethodsResult : DefaultMethodsBuilder;
88
+ }
89
+ declare class DefaultMethodsBuilder implements PromiseLike<DefaultMethods> {
90
+ #private;
91
+ constructor(resolve: (additional?: AdditionalConfig) => Promise<any>);
92
+ additional<C extends AdditionalConfig>(config: C): PromiseLike<DefaultMethodsWithAdditional<C>>;
93
+ then<T = DefaultMethods, U = never>(onfulfilled?: ((value: DefaultMethods) => T | PromiseLike<T>) | null, onrejected?: ((reason: unknown) => U | PromiseLike<U>) | null): Promise<T | U>;
94
+ }
2
95
  /**
3
- * Creates a Stripe `charge` method for usage on the server.
96
+ * Creates a configured Stripe machine payments instance.
4
97
  *
5
98
  * @example
6
99
  * ```ts
7
100
  * import { Mppx, stripe } from 'mppx/server'
8
101
  *
102
+ * const machinePayments = stripe.create({
103
+ * client: stripeClient,
104
+ * networkId: process.env.STRIPE_PROFILE_ID!,
105
+ * livemode: !process.env.STRIPE_SECRET_KEY!.includes('_test_'),
106
+ * })
107
+ *
108
+ * // Async: deposit addresses resolved from Stripe API
9
109
  * const mppx = Mppx.create({
10
- * methods: [stripe({ secretKey: 'sk_...' })],
110
+ * methods: await machinePayments.defaultMethods(),
111
+ * secretKey: mppSecretKey,
112
+ * })
113
+ * ```
114
+ *
115
+ * @example
116
+ * ```ts
117
+ * // Sync: deposit addresses provided statically
118
+ * const machinePayments = stripe.create({
119
+ * client: stripeClient,
120
+ * networkId: process.env.STRIPE_PROFILE_ID!,
121
+ * livemode: !process.env.STRIPE_SECRET_KEY!.includes('_test_'),
122
+ * depositAddresses: { tempo: process.env.TEMPO_DEPOSIT_ADDRESS! },
123
+ * })
124
+ *
125
+ * const mppx = Mppx.create({
126
+ * methods: machinePayments.defaultMethods(),
127
+ * secretKey: mppSecretKey,
128
+ * })
129
+ * ```
130
+ *
131
+ * @example
132
+ * ```ts
133
+ * // With additional custom rails
134
+ * const mppx = Mppx.create({
135
+ * methods: await machinePayments.defaultMethods().additional({
136
+ * base: { x402: { facilitator } },
137
+ * solana: (address) => solana.charge({ recipient: address, currency: USDC, decimals: 6 }),
138
+ * }),
139
+ * secretKey: mppSecretKey,
11
140
  * })
12
141
  * ```
13
142
  */
14
- export declare function stripe<const parameters extends stripe.Parameters>(parameters: parameters): readonly [import("../../Method.js").Server<{
15
- readonly name: "stripe";
16
- readonly intent: "charge";
17
- readonly schema: {
18
- readonly credential: {
19
- readonly payload: import("zod/mini").ZodMiniObject<{
20
- externalId: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
21
- spt: import("zod/mini").ZodMiniString<string>;
22
- }, import("zod/v4/core").$strip>;
23
- };
24
- readonly request: import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniObject<{
25
- amount: import("zod/mini").ZodMiniString<string>;
26
- currency: import("zod/mini").ZodMiniString<string>;
27
- decimals: import("zod/mini").ZodMiniNumber<number>;
28
- description: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
29
- externalId: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
30
- metadata: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniRecord<import("zod/mini").ZodMiniString<string>, import("zod/mini").ZodMiniString<string>>>;
31
- networkId: import("zod/mini").ZodMiniString<string>;
32
- paymentMethodTypes: import("zod/mini").ZodMiniArray<import("zod/mini").ZodMiniString<string>>;
33
- recipient: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
34
- }, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniTransform<{
35
- amount: string;
36
- methodDetails: {
37
- metadata?: Record<string, string> | undefined;
38
- networkId: string;
39
- paymentMethodTypes: string[];
40
- };
41
- currency: string;
42
- description?: string | undefined;
43
- externalId?: string | undefined;
44
- recipient?: string | undefined;
45
- }, {
46
- amount: string;
47
- currency: string;
48
- decimals: number;
49
- networkId: string;
50
- paymentMethodTypes: string[];
51
- description?: string | undefined;
52
- externalId?: string | undefined;
53
- metadata?: Record<string, string> | undefined;
54
- recipient?: string | undefined;
55
- }>>;
56
- };
57
- }, charge_.DeriveDefaults<parameters>, undefined, {}, undefined>];
143
+ export declare function stripe<const P extends stripe.Parameters>(parameters: P): StripeMachinePayments<P>;
58
144
  export declare namespace stripe {
59
- type Parameters = charge_.Parameters;
60
- /** Creates a Stripe `charge` method for SPT-based payments. */
145
+ const spt: typeof charge_;
146
+ /** @deprecated Use `stripe.spt()` instead. */
61
147
  const charge: typeof charge_;
148
+ const create: typeof stripe;
149
+ const findOrCreateDepositAddress: typeof _findOrCreateDepositAddress;
62
150
  }
151
+ export {};
63
152
  //# sourceMappingURL=Methods.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Methods.d.ts","sourceRoot":"","sources":["../../../src/stripe/server/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAE/C;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,KAAK,CAAC,UAAU,SAAS,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kEAExF;AAED,yBAAiB,MAAM,CAAC;IACtB,KAAY,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;IAE3C,+DAA+D;IACxD,MAAM,MAAM,gBAAU,CAAA;CAC9B"}
1
+ {"version":3,"file":"Methods.d.ts","sourceRoot":"","sources":["../../../src/stripe/server/Methods.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,276 @@
1
+ import * as EvmAssets from '../../evm/Assets.js';
2
+ import { charge as evmCharge } from '../../evm/server/Charge.js';
3
+ import * as tempoDefaults from '../../tempo/internal/defaults.js';
4
+ import { charge as tempoCharge } from '../../tempo/server/Charge.js';
5
+ import { session as tempoSession } from '../../tempo/session/server/Session.js';
1
6
  import { charge as charge_ } from './Charge.js';
7
+ import { findOrCreateDepositAddress as _findOrCreateDepositAddress } from './internal/deposit-address.js';
8
+ import { recordCryptoPayment } from './internal/record-payment.js';
9
+ const defaultMethodNames = ['tempo', 'spt'];
10
+ const additionalBuiltinKeys = ['base', 'tempo'];
11
+ class DefaultMethodsBuilder {
12
+ #resolve;
13
+ #additional;
14
+ constructor(resolve) {
15
+ this.#resolve = resolve;
16
+ }
17
+ additional(config) {
18
+ this.#additional = config;
19
+ return this;
20
+ }
21
+ then(onfulfilled, onrejected) {
22
+ return this.#resolve(this.#additional).then(onfulfilled, onrejected);
23
+ }
24
+ }
2
25
  /**
3
- * Creates a Stripe `charge` method for usage on the server.
26
+ * Creates a configured Stripe machine payments instance.
4
27
  *
5
28
  * @example
6
29
  * ```ts
7
30
  * import { Mppx, stripe } from 'mppx/server'
8
31
  *
32
+ * const machinePayments = stripe.create({
33
+ * client: stripeClient,
34
+ * networkId: process.env.STRIPE_PROFILE_ID!,
35
+ * livemode: !process.env.STRIPE_SECRET_KEY!.includes('_test_'),
36
+ * })
37
+ *
38
+ * // Async: deposit addresses resolved from Stripe API
39
+ * const mppx = Mppx.create({
40
+ * methods: await machinePayments.defaultMethods(),
41
+ * secretKey: mppSecretKey,
42
+ * })
43
+ * ```
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * // Sync: deposit addresses provided statically
48
+ * const machinePayments = stripe.create({
49
+ * client: stripeClient,
50
+ * networkId: process.env.STRIPE_PROFILE_ID!,
51
+ * livemode: !process.env.STRIPE_SECRET_KEY!.includes('_test_'),
52
+ * depositAddresses: { tempo: process.env.TEMPO_DEPOSIT_ADDRESS! },
53
+ * })
54
+ *
9
55
  * const mppx = Mppx.create({
10
- * methods: [stripe({ secretKey: 'sk_...' })],
56
+ * methods: machinePayments.defaultMethods(),
57
+ * secretKey: mppSecretKey,
58
+ * })
59
+ * ```
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * // With additional custom rails
64
+ * const mppx = Mppx.create({
65
+ * methods: await machinePayments.defaultMethods().additional({
66
+ * base: { x402: { facilitator } },
67
+ * solana: (address) => solana.charge({ recipient: address, currency: USDC, decimals: 6 }),
68
+ * }),
69
+ * secretKey: mppSecretKey,
11
70
  * })
12
71
  * ```
13
72
  */
14
73
  export function stripe(parameters) {
15
- return [stripe.charge(parameters)];
74
+ const { client, networkId, livemode, connect, depositAddresses, metadata } = parameters;
75
+ if (!client.rawRequest)
76
+ throw new Error('stripe.create() requires a Stripe SDK client with rawRequest() (v15+)');
77
+ const tempoCurrency = (livemode ? tempoDefaults.tokens.usdc : tempoDefaults.tokens.pathUsd);
78
+ const tempoPaymentHandler = createPaymentSuccessHandler(client, 'tempo', connect, metadata);
79
+ const basePaymentHandler = createPaymentSuccessHandler(client, 'base', connect, metadata);
80
+ // All stripe-managed crypto rails use 6-decimal stablecoins. Reject amounts
81
+ // below 1 cent since Stripe cannot record them.
82
+ const cryptoCanOffer = ({ request }) => Number(request.amount) >= 10_000;
83
+ function makeSptCharge(params) {
84
+ return charge_({
85
+ client,
86
+ networkId,
87
+ currency: 'usd',
88
+ decimals: 2,
89
+ paymentMethodTypes: params?.paymentMethodTypes ?? ['card', 'link'],
90
+ ...(connect && { connect }),
91
+ ...(metadata && { metadata }),
92
+ });
93
+ }
94
+ function makeTempoCharge(params) {
95
+ const { recipient, metadata: callMetadata, ...rest } = params;
96
+ const handler = callMetadata
97
+ ? createPaymentSuccessHandler(client, 'tempo', connect, { ...metadata, ...callMetadata })
98
+ : tempoPaymentHandler;
99
+ return tempoCharge({
100
+ currency: tempoCurrency,
101
+ recipient,
102
+ ...(!livemode && { testnet: true }),
103
+ canOffer: cryptoCanOffer,
104
+ onPaymentSuccess: handler,
105
+ ...rest,
106
+ });
107
+ }
108
+ function makeTempoSession(params) {
109
+ const { recipient, ...rest } = params;
110
+ return tempoSession({
111
+ currency: tempoCurrency,
112
+ recipient,
113
+ ...(!livemode && { testnet: true }),
114
+ ...rest,
115
+ });
116
+ }
117
+ function makeBaseCharge(params) {
118
+ const { recipient, x402, metadata: callMetadata, ...rest } = params;
119
+ const handler = callMetadata
120
+ ? createPaymentSuccessHandler(client, 'base', connect, { ...metadata, ...callMetadata })
121
+ : basePaymentHandler;
122
+ return evmCharge({
123
+ currency: livemode ? EvmAssets.base.USDC : EvmAssets.baseSepolia.USDC,
124
+ recipient,
125
+ x402,
126
+ canOffer: cryptoCanOffer,
127
+ onPaymentSuccess: handler,
128
+ ...rest,
129
+ });
130
+ }
131
+ const defaultMethodBuilders = {
132
+ tempo: (addresses) => {
133
+ const address = addresses.get('tempo');
134
+ if (!address)
135
+ return null;
136
+ return makeTempoCharge({ recipient: address });
137
+ },
138
+ spt: () => makeSptCharge(),
139
+ };
140
+ const additionalBuilders = {
141
+ base: (addresses, config) => {
142
+ if (!config.base)
143
+ return null;
144
+ const address = addresses.get('base');
145
+ if (!address)
146
+ return null;
147
+ return makeBaseCharge({ recipient: address, ...config.base });
148
+ },
149
+ tempo: (addresses, config) => {
150
+ if (!config.tempo?.session)
151
+ return null;
152
+ const address = addresses.get('tempo');
153
+ if (!address)
154
+ return null;
155
+ return makeTempoSession({ recipient: address, ...config.tempo.session });
156
+ },
157
+ };
158
+ function createMethodsFromAddresses(addresses, excluded, additional) {
159
+ const result = [];
160
+ for (const name of defaultMethodNames) {
161
+ if (excluded.has(name))
162
+ continue;
163
+ const method = defaultMethodBuilders[name](addresses);
164
+ if (method)
165
+ result.push(method);
166
+ }
167
+ if (additional) {
168
+ for (const key of Object.keys(additionalBuilders)) {
169
+ const method = additionalBuilders[key](addresses, additional);
170
+ if (method)
171
+ result.push(method);
172
+ }
173
+ for (const [network, factory] of customRails(additional)) {
174
+ const address = requireAddress(addresses, network);
175
+ const recorder = createPaymentSuccessHandler(client, network, connect, metadata);
176
+ for (const m of toArray(factory(address))) {
177
+ const onPaymentSuccess = m.onPaymentSuccess
178
+ ? (params) => Promise.all([m.onPaymentSuccess(params), recorder(params)]).then(() => { })
179
+ : recorder;
180
+ const canOffer = m.canOffer
181
+ ? (params) => cryptoCanOffer(params) && m.canOffer(params)
182
+ : cryptoCanOffer;
183
+ result.push({ ...m, canOffer, onPaymentSuccess });
184
+ }
185
+ }
186
+ }
187
+ return result;
188
+ }
189
+ function resolveAddress(network) {
190
+ if (typeof depositAddresses === 'function')
191
+ return depositAddresses(network);
192
+ return _findOrCreateDepositAddress(client, network, connect ? { connect } : undefined);
193
+ }
194
+ function defaultMethods(config) {
195
+ const excluded = new Set(config?.exclude);
196
+ if (depositAddresses && typeof depositAddresses !== 'function') {
197
+ // Sync: static deposit addresses provided at stripe.create() time
198
+ const addresses = new Map(Object.entries(depositAddresses));
199
+ return Object.assign(createMethodsFromAddresses(addresses, excluded), {
200
+ additional: (additional) => createMethodsFromAddresses(addresses, excluded, additional),
201
+ });
202
+ }
203
+ else {
204
+ // Async: resolve addresses dynamically
205
+ return new DefaultMethodsBuilder(async (additional) => {
206
+ const networks = neededNetworks(excluded, additional);
207
+ const results = await Promise.all(networks.map(async (network) => ({
208
+ network,
209
+ address: await resolveAddress(network),
210
+ })));
211
+ const addresses = new Map(results.map(({ network, address }) => [network, address]));
212
+ return createMethodsFromAddresses(addresses, excluded, additional);
213
+ });
214
+ }
215
+ }
216
+ return {
217
+ spt: { charge: makeSptCharge },
218
+ tempo: { charge: makeTempoCharge, session: makeTempoSession },
219
+ base: { charge: makeBaseCharge },
220
+ findOrCreateDepositAddress: async (network) => {
221
+ const address = await resolveAddress(network);
222
+ return address;
223
+ },
224
+ defaultMethods,
225
+ };
16
226
  }
17
227
  (function (stripe) {
18
- /** Creates a Stripe `charge` method for SPT-based payments. */
228
+ stripe.spt = charge_;
229
+ /** @deprecated Use `stripe.spt()` instead. */
19
230
  stripe.charge = charge_;
231
+ stripe.create = stripe;
232
+ stripe.findOrCreateDepositAddress = _findOrCreateDepositAddress;
20
233
  })(stripe || (stripe = {}));
234
+ function neededNetworks(excluded, additional) {
235
+ const networks = [];
236
+ if (!excluded.has('tempo') || additional?.tempo?.session)
237
+ networks.push('tempo');
238
+ if (additional?.base)
239
+ networks.push('base');
240
+ for (const [network] of customRails(additional)) {
241
+ networks.push(network);
242
+ }
243
+ return networks;
244
+ }
245
+ function requireAddress(addresses, network) {
246
+ const address = addresses.get(network);
247
+ if (!address)
248
+ throw new Error(`stripe: missing deposit address for ${network}`);
249
+ return address;
250
+ }
251
+ function toArray(value) {
252
+ return Array.isArray(value) ? value : [value];
253
+ }
254
+ function customRails(additional) {
255
+ if (!additional)
256
+ return [];
257
+ return Object.entries(additional).filter((entry) => {
258
+ const [k, v] = entry;
259
+ return !additionalBuiltinKeys.includes(k) && typeof v === 'function';
260
+ });
261
+ }
262
+ function createPaymentSuccessHandler(client, network, connect, metadata) {
263
+ return (params) => {
264
+ const { receipt, request } = params;
265
+ if (receipt?.reference && request?.amount) {
266
+ return recordCryptoPayment(client, {
267
+ network,
268
+ reference: receipt.reference,
269
+ amount: String(request.amount),
270
+ ...(connect && { connect }),
271
+ ...(metadata && { metadata }),
272
+ });
273
+ }
274
+ };
275
+ }
21
276
  //# sourceMappingURL=Methods.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Methods.js","sourceRoot":"","sources":["../../../src/stripe/server/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,MAAM,CAA6C,UAAsB;IACvF,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAU,CAAA;AAC7C,CAAC;AAED,WAAiB,MAAM;IAGrB,+DAA+D;IAClD,aAAM,GAAG,OAAO,CAAA;AAC/B,CAAC,EALgB,MAAM,KAAN,MAAM,QAKtB"}
1
+ {"version":3,"file":"Methods.js","sourceRoot":"","sources":["../../../src/stripe/server/Methods.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { StripeClient } from '../../internal/types.js';
2
+ import { type ConnectConfig } from './request.js';
3
+ export type DepositAddressResolver = (client: StripeClient, network: string, options?: {
4
+ connect?: ConnectConfig;
5
+ }) => Promise<string>;
6
+ /**
7
+ * Finds an existing deposit address or creates a new one for the given network.
8
+ * Cached per client+network+stripeAccount for the process lifetime.
9
+ */
10
+ export declare function findOrCreateDepositAddress(client: StripeClient, network: string, options?: {
11
+ connect?: ConnectConfig;
12
+ }): Promise<string>;
13
+ //# sourceMappingURL=deposit-address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deposit-address.d.ts","sourceRoot":"","sources":["../../../../src/stripe/server/internal/deposit-address.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAEhE,MAAM,MAAM,sBAAsB,GAAG,CACnC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,aAAa,CAAA;CAAE,KAClC,OAAO,CAAC,MAAM,CAAC,CAAA;AAIpB;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,aAAa,CAAA;CAAE,GACpC,OAAO,CAAC,MAAM,CAAC,CAqCjB"}
@@ -0,0 +1,28 @@
1
+ import { stripeRequest } from './request.js';
2
+ const cache = new WeakMap();
3
+ /**
4
+ * Finds an existing deposit address or creates a new one for the given network.
5
+ * Cached per client+network+stripeAccount for the process lifetime.
6
+ */
7
+ export async function findOrCreateDepositAddress(client, network, options) {
8
+ let clientCache = cache.get(client);
9
+ if (!clientCache) {
10
+ clientCache = new Map();
11
+ cache.set(client, clientCache);
12
+ }
13
+ const key = options?.connect?.stripeAccount
14
+ ? `${options.connect.stripeAccount}:${network}`
15
+ : network;
16
+ const cached = clientCache.get(key);
17
+ if (cached)
18
+ return cached;
19
+ const list = (await stripeRequest(client, 'GET', `/v1/crypto/deposit_addresses?network=${network}&limit=1`, undefined, options));
20
+ if (list.data && list.data.length > 0) {
21
+ clientCache.set(key, list.data[0].address);
22
+ return list.data[0].address;
23
+ }
24
+ const created = (await stripeRequest(client, 'POST', '/v1/crypto/deposit_addresses', { network }, options));
25
+ clientCache.set(key, created.address);
26
+ return created.address;
27
+ }
28
+ //# sourceMappingURL=deposit-address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deposit-address.js","sourceRoot":"","sources":["../../../../src/stripe/server/internal/deposit-address.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAA;AAQhE,MAAM,KAAK,GAAG,IAAI,OAAO,EAAqC,CAAA;AAE9D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAoB,EACpB,OAAe,EACf,OAAqC;IAErC,IAAI,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACnC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,IAAI,GAAG,EAAE,CAAA;QACvB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IAChC,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,EAAE,OAAO,EAAE,aAAa;QACzC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,EAAE;QAC/C,CAAC,CAAC,OAAO,CAAA;IACX,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,MAAM,IAAI,GAAG,CAAC,MAAM,aAAa,CAC/B,MAAM,EACN,KAAK,EACL,wCAAwC,OAAO,UAAU,EACzD,SAAS,EACT,OAAO,CACR,CAEA,CAAA;IACD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,OAAO,CAAA;IAC9B,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,MAAM,aAAa,CAClC,MAAM,EACN,MAAM,EACN,8BAA8B,EAC9B,EAAE,OAAO,EAAE,EACX,OAAO,CACR,CAEA,CAAA;IACD,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IACrC,OAAO,OAAO,CAAC,OAAO,CAAA;AACxB,CAAC"}