@3rd-eye-labs/openmm 0.1.0 → 0.1.3

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 (276) hide show
  1. package/README.md +6 -1
  2. package/dist/cli/cli.js +4 -0
  3. package/dist/cli/cli.js.map +1 -1
  4. package/dist/cli/commands/ohlcv.d.ts +3 -0
  5. package/dist/cli/commands/ohlcv.d.ts.map +1 -0
  6. package/dist/cli/commands/ohlcv.js +115 -0
  7. package/dist/cli/commands/ohlcv.js.map +1 -0
  8. package/dist/cli/commands/pool-discovery.d.ts.map +1 -1
  9. package/dist/cli/commands/pool-discovery.js +13 -4
  10. package/dist/cli/commands/pool-discovery.js.map +1 -1
  11. package/dist/cli/commands/wallet.d.ts +7 -0
  12. package/dist/cli/commands/wallet.d.ts.map +1 -0
  13. package/dist/cli/commands/wallet.js +271 -0
  14. package/dist/cli/commands/wallet.js.map +1 -0
  15. package/dist/cli/pool-discovery-core.d.ts +2 -1
  16. package/dist/cli/pool-discovery-core.d.ts.map +1 -1
  17. package/dist/cli/pool-discovery-core.js +66 -30
  18. package/dist/cli/pool-discovery-core.js.map +1 -1
  19. package/dist/core/exchange/base-exchange-connector.d.ts +2 -1
  20. package/dist/core/exchange/base-exchange-connector.d.ts.map +1 -1
  21. package/dist/core/exchange/base-exchange-connector.js.map +1 -1
  22. package/dist/exchanges/bitget/bitget-connector.d.ts +11 -1
  23. package/dist/exchanges/bitget/bitget-connector.d.ts.map +1 -1
  24. package/dist/exchanges/bitget/bitget-connector.js +52 -0
  25. package/dist/exchanges/bitget/bitget-connector.js.map +1 -1
  26. package/dist/exchanges/gateio/gateio-connector.d.ts +11 -1
  27. package/dist/exchanges/gateio/gateio-connector.d.ts.map +1 -1
  28. package/dist/exchanges/gateio/gateio-connector.js +54 -0
  29. package/dist/exchanges/gateio/gateio-connector.js.map +1 -1
  30. package/dist/exchanges/kraken/kraken-connector.d.ts +6 -1
  31. package/dist/exchanges/kraken/kraken-connector.d.ts.map +1 -1
  32. package/dist/exchanges/kraken/kraken-connector.js +44 -0
  33. package/dist/exchanges/kraken/kraken-connector.js.map +1 -1
  34. package/dist/exchanges/mexc/mexc-auth.d.ts +1 -0
  35. package/dist/exchanges/mexc/mexc-auth.d.ts.map +1 -1
  36. package/dist/exchanges/mexc/mexc-auth.js +4 -1
  37. package/dist/exchanges/mexc/mexc-auth.js.map +1 -1
  38. package/dist/exchanges/mexc/mexc-connector.d.ts +6 -1
  39. package/dist/exchanges/mexc/mexc-connector.d.ts.map +1 -1
  40. package/dist/exchanges/mexc/mexc-connector.js +37 -0
  41. package/dist/exchanges/mexc/mexc-connector.js.map +1 -1
  42. package/dist/index.d.ts +1 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +25 -1
  45. package/dist/index.js.map +1 -1
  46. package/dist/types/market.d.ts +15 -0
  47. package/dist/types/market.d.ts.map +1 -1
  48. package/dist/x402/crypto.d.ts +79 -0
  49. package/dist/x402/crypto.d.ts.map +1 -0
  50. package/dist/x402/crypto.js +300 -0
  51. package/dist/x402/crypto.js.map +1 -0
  52. package/dist/x402/evm.d.ts +41 -0
  53. package/dist/x402/evm.d.ts.map +1 -0
  54. package/dist/x402/evm.js +229 -0
  55. package/dist/x402/evm.js.map +1 -0
  56. package/dist/x402/handler.d.ts +53 -0
  57. package/dist/x402/handler.d.ts.map +1 -0
  58. package/dist/x402/handler.js +233 -0
  59. package/dist/x402/handler.js.map +1 -0
  60. package/dist/x402/index.d.ts +29 -0
  61. package/dist/x402/index.d.ts.map +1 -0
  62. package/dist/x402/index.js +67 -0
  63. package/dist/x402/index.js.map +1 -0
  64. package/dist/x402/types.d.ts +185 -0
  65. package/dist/x402/types.d.ts.map +1 -0
  66. package/dist/x402/types.js +7 -0
  67. package/dist/x402/types.js.map +1 -0
  68. package/dist/x402/wallet.d.ts +65 -0
  69. package/dist/x402/wallet.d.ts.map +1 -0
  70. package/dist/x402/wallet.js +282 -0
  71. package/dist/x402/wallet.js.map +1 -0
  72. package/package.json +1 -1
  73. package/dist/cli/commands/grid.d.ts +0 -3
  74. package/dist/cli/commands/grid.d.ts.map +0 -1
  75. package/dist/cli/commands/grid.js +0 -103
  76. package/dist/cli/commands/grid.js.map +0 -1
  77. package/dist/cli/commands/multi-trade.d.ts +0 -3
  78. package/dist/cli/commands/multi-trade.d.ts.map +0 -1
  79. package/dist/cli/commands/multi-trade.js +0 -175
  80. package/dist/cli/commands/multi-trade.js.map +0 -1
  81. package/dist/cli/pool-discovery.d.ts +0 -56
  82. package/dist/cli/pool-discovery.d.ts.map +0 -1
  83. package/dist/cli/pool-discovery.js +0 -283
  84. package/dist/cli/pool-discovery.js.map +0 -1
  85. package/dist/core/price-aggregation/price-cache.d.ts +0 -55
  86. package/dist/core/price-aggregation/price-cache.d.ts.map +0 -1
  87. package/dist/core/price-aggregation/price-cache.js +0 -152
  88. package/dist/core/price-aggregation/price-cache.js.map +0 -1
  89. package/dist/examples/mexc-connector-comprehensive-test.d.ts +0 -15
  90. package/dist/examples/mexc-connector-comprehensive-test.d.ts.map +0 -1
  91. package/dist/examples/mexc-connector-comprehensive-test.js +0 -514
  92. package/dist/examples/mexc-connector-comprehensive-test.js.map +0 -1
  93. package/dist/examples/mexc-order-update-test.d.ts +0 -4
  94. package/dist/examples/mexc-order-update-test.d.ts.map +0 -1
  95. package/dist/examples/mexc-order-update-test.js +0 -186
  96. package/dist/examples/mexc-order-update-test.js.map +0 -1
  97. package/dist/examples/mexc-test.d.ts +0 -9
  98. package/dist/examples/mexc-test.d.ts.map +0 -1
  99. package/dist/examples/mexc-test.js +0 -218
  100. package/dist/examples/mexc-test.js.map +0 -1
  101. package/dist/examples/mexc-trades-debug.d.ts +0 -2
  102. package/dist/examples/mexc-trades-debug.d.ts.map +0 -1
  103. package/dist/examples/mexc-trades-debug.js +0 -101
  104. package/dist/examples/mexc-trades-debug.js.map +0 -1
  105. package/dist/examples/mexc-trades-subscription-debug.d.ts +0 -2
  106. package/dist/examples/mexc-trades-subscription-debug.d.ts.map +0 -1
  107. package/dist/examples/mexc-trades-subscription-debug.js +0 -150
  108. package/dist/examples/mexc-trades-subscription-debug.js.map +0 -1
  109. package/dist/examples/mexc-websocket-test.d.ts +0 -8
  110. package/dist/examples/mexc-websocket-test.d.ts.map +0 -1
  111. package/dist/examples/mexc-websocket-test.js +0 -115
  112. package/dist/examples/mexc-websocket-test.js.map +0 -1
  113. package/dist/examples/test-protobuf-status-detection.d.ts +0 -9
  114. package/dist/examples/test-protobuf-status-detection.d.ts.map +0 -1
  115. package/dist/examples/test-protobuf-status-detection.js +0 -83
  116. package/dist/examples/test-protobuf-status-detection.js.map +0 -1
  117. package/dist/exchanges/base-exchange-connector.d.ts +0 -33
  118. package/dist/exchanges/base-exchange-connector.d.ts.map +0 -1
  119. package/dist/exchanges/base-exchange-connector.js +0 -55
  120. package/dist/exchanges/base-exchange-connector.js.map +0 -1
  121. package/dist/exchanges/kraken/test-kraken-websocket.d.ts +0 -19
  122. package/dist/exchanges/kraken/test-kraken-websocket.d.ts.map +0 -1
  123. package/dist/exchanges/kraken/test-kraken-websocket.js +0 -413
  124. package/dist/exchanges/kraken/test-kraken-websocket.js.map +0 -1
  125. package/dist/mcp/resources/index.d.ts +0 -3
  126. package/dist/mcp/resources/index.d.ts.map +0 -1
  127. package/dist/mcp/resources/index.js +0 -11
  128. package/dist/mcp/resources/index.js.map +0 -1
  129. package/dist/mcp/server.d.ts +0 -4
  130. package/dist/mcp/server.d.ts.map +0 -1
  131. package/dist/mcp/server.js +0 -29
  132. package/dist/mcp/server.js.map +0 -1
  133. package/dist/mcp/tools/index.d.ts +0 -3
  134. package/dist/mcp/tools/index.d.ts.map +0 -1
  135. package/dist/mcp/tools/index.js +0 -12
  136. package/dist/mcp/tools/index.js.map +0 -1
  137. package/dist/tests/fixtures/test-helpers.d.ts +0 -5
  138. package/dist/tests/fixtures/test-helpers.d.ts.map +0 -1
  139. package/dist/tests/fixtures/test-helpers.js +0 -8
  140. package/dist/tests/fixtures/test-helpers.js.map +0 -1
  141. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts +0 -2
  142. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts.map +0 -1
  143. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js +0 -237
  144. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js.map +0 -1
  145. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts +0 -2
  146. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts.map +0 -1
  147. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js +0 -57
  148. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js.map +0 -1
  149. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts +0 -2
  150. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts.map +0 -1
  151. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js +0 -141
  152. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js.map +0 -1
  153. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts +0 -2
  154. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts.map +0 -1
  155. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js +0 -375
  156. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js.map +0 -1
  157. package/dist/tests/unit/cli/exchange-factory.test.d.ts +0 -2
  158. package/dist/tests/unit/cli/exchange-factory.test.d.ts.map +0 -1
  159. package/dist/tests/unit/cli/exchange-factory.test.js +0 -148
  160. package/dist/tests/unit/cli/exchange-factory.test.js.map +0 -1
  161. package/dist/tests/unit/config/environment.test.d.ts +0 -2
  162. package/dist/tests/unit/config/environment.test.d.ts.map +0 -1
  163. package/dist/tests/unit/config/environment.test.js +0 -158
  164. package/dist/tests/unit/config/environment.test.js.map +0 -1
  165. package/dist/tests/unit/config/launcher-config.test.d.ts +0 -2
  166. package/dist/tests/unit/config/launcher-config.test.d.ts.map +0 -1
  167. package/dist/tests/unit/config/launcher-config.test.js +0 -117
  168. package/dist/tests/unit/config/launcher-config.test.js.map +0 -1
  169. package/dist/tests/unit/config/price-aggregation.test.d.ts +0 -2
  170. package/dist/tests/unit/config/price-aggregation.test.d.ts.map +0 -1
  171. package/dist/tests/unit/config/price-aggregation.test.js +0 -144
  172. package/dist/tests/unit/config/price-aggregation.test.js.map +0 -1
  173. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts +0 -2
  174. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts.map +0 -1
  175. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js +0 -191
  176. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js.map +0 -1
  177. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts +0 -2
  178. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts.map +0 -1
  179. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js +0 -324
  180. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js.map +0 -1
  181. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts +0 -2
  182. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts.map +0 -1
  183. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js +0 -177
  184. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js.map +0 -1
  185. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts +0 -2
  186. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts.map +0 -1
  187. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js +0 -168
  188. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js.map +0 -1
  189. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts +0 -2
  190. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts.map +0 -1
  191. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js +0 -217
  192. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js.map +0 -1
  193. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts +0 -2
  194. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts.map +0 -1
  195. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js +0 -229
  196. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js.map +0 -1
  197. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts +0 -2
  198. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts.map +0 -1
  199. package/dist/tests/unit/core/risk-management/risk-manager.test.js +0 -194
  200. package/dist/tests/unit/core/risk-management/risk-manager.test.js.map +0 -1
  201. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts +0 -2
  202. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts.map +0 -1
  203. package/dist/tests/unit/core/strategy/base-strategy.test.js +0 -254
  204. package/dist/tests/unit/core/strategy/base-strategy.test.js.map +0 -1
  205. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts +0 -2
  206. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts.map +0 -1
  207. package/dist/tests/unit/core/strategy/strategy-factory.test.js +0 -213
  208. package/dist/tests/unit/core/strategy/strategy-factory.test.js.map +0 -1
  209. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts +0 -2
  210. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts.map +0 -1
  211. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js +0 -452
  212. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js.map +0 -1
  213. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts +0 -2
  214. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts.map +0 -1
  215. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js +0 -1419
  216. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js.map +0 -1
  217. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts +0 -2
  218. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts.map +0 -1
  219. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js +0 -435
  220. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js.map +0 -1
  221. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts +0 -2
  222. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts.map +0 -1
  223. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js +0 -314
  224. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js.map +0 -1
  225. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts +0 -2
  226. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts.map +0 -1
  227. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js +0 -178
  228. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js.map +0 -1
  229. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts +0 -2
  230. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts.map +0 -1
  231. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js +0 -502
  232. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js.map +0 -1
  233. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts +0 -2
  234. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts.map +0 -1
  235. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js +0 -317
  236. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js.map +0 -1
  237. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts +0 -2
  238. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts.map +0 -1
  239. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js +0 -843
  240. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js.map +0 -1
  241. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts +0 -2
  242. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts.map +0 -1
  243. package/dist/tests/unit/strategies/grid/grid-calculator.test.js +0 -67
  244. package/dist/tests/unit/strategies/grid/grid-calculator.test.js.map +0 -1
  245. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts +0 -2
  246. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts.map +0 -1
  247. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js +0 -211
  248. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js.map +0 -1
  249. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts +0 -2
  250. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts.map +0 -1
  251. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js +0 -197
  252. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js.map +0 -1
  253. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts +0 -2
  254. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts.map +0 -1
  255. package/dist/tests/unit/strategies/grid/grid-strategy.test.js +0 -429
  256. package/dist/tests/unit/strategies/grid/grid-strategy.test.js.map +0 -1
  257. package/dist/tests/unit/utils/logger.test.d.ts +0 -2
  258. package/dist/tests/unit/utils/logger.test.d.ts.map +0 -1
  259. package/dist/tests/unit/utils/logger.test.js +0 -260
  260. package/dist/tests/unit/utils/logger.test.js.map +0 -1
  261. package/dist/tests/unit/utils/symbol-utils.test.d.ts +0 -2
  262. package/dist/tests/unit/utils/symbol-utils.test.d.ts.map +0 -1
  263. package/dist/tests/unit/utils/symbol-utils.test.js +0 -178
  264. package/dist/tests/unit/utils/symbol-utils.test.js.map +0 -1
  265. package/dist/types/price-aggregation.d.ts +0 -31
  266. package/dist/types/price-aggregation.d.ts.map +0 -1
  267. package/dist/types/price-aggregation.js +0 -6
  268. package/dist/types/price-aggregation.js.map +0 -1
  269. package/dist/utils/crypto.d.ts +0 -15
  270. package/dist/utils/crypto.d.ts.map +0 -1
  271. package/dist/utils/crypto.js +0 -50
  272. package/dist/utils/crypto.js.map +0 -1
  273. package/dist/utils/validation.d.ts +0 -36
  274. package/dist/utils/validation.d.ts.map +0 -1
  275. package/dist/utils/validation.js +0 -174
  276. package/dist/utils/validation.js.map +0 -1
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ /**
3
+ * OpenMM x402 Auto-Payment Handler
4
+ * Detects 402 responses and auto-signs payment using local wallet.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.parsePaymentRequirements = parsePaymentRequirements;
8
+ exports.createPaymentSignatures = createPaymentSignatures;
9
+ exports.createPaymentSignature = createPaymentSignature;
10
+ exports.checkX402Balance = checkX402Balance;
11
+ exports.x402Fetch = x402Fetch;
12
+ exports.formatPaymentRequirements = formatPaymentRequirements;
13
+ exports.isPaymentRequired = isPaymentRequired;
14
+ exports.getSupportedNetworks = getSupportedNetworks;
15
+ const evm_1 = require("./evm");
16
+ const wallet_1 = require("./wallet");
17
+ /**
18
+ * Parse PaymentRequirements from a 402 response.
19
+ */
20
+ function parsePaymentRequirements(response) {
21
+ const header = response.headers.get('payment-required');
22
+ if (!header)
23
+ return null;
24
+ try {
25
+ const decoded = JSON.parse(atob(header));
26
+ // V2 format: { accepts: [...], ... }
27
+ if (decoded.accepts && Array.isArray(decoded.accepts)) {
28
+ return decoded.accepts;
29
+ }
30
+ // Can be a single object or array of requirements
31
+ return Array.isArray(decoded) ? decoded : [decoded];
32
+ }
33
+ catch {
34
+ return null;
35
+ }
36
+ }
37
+ /**
38
+ * Rank payment requirements. Prefers EVM (gasless) over Solana.
39
+ * Returns all supported requirements in priority order.
40
+ */
41
+ function rankRequirements(requirements) {
42
+ const ranked = [];
43
+ // EVM first (gasless for client)
44
+ for (const r of requirements) {
45
+ if ((0, evm_1.isEvmNetwork)(r.network))
46
+ ranked.push(r);
47
+ }
48
+ // Solana support could be added here in the future
49
+ // for (const r of requirements) {
50
+ // if (isSvmNetwork(r.network)) ranked.push(r);
51
+ // }
52
+ return ranked;
53
+ }
54
+ /**
55
+ * Build a payment signature for a single requirement.
56
+ */
57
+ async function buildPaymentForRequirement(requirement, exported, url) {
58
+ if ((0, evm_1.isEvmNetwork)(requirement.network)) {
59
+ return (0, evm_1.createEvmPaymentPayload)(requirement, exported.evm.privateKey, exported.evm.address, url);
60
+ }
61
+ // Solana support could be added here
62
+ return null;
63
+ }
64
+ /**
65
+ * Generate payment signatures for all viable payment options, in priority order.
66
+ * Yields { signature, network } objects. Caller should try each until one succeeds.
67
+ */
68
+ async function* createPaymentSignatures(response, url, options = {}) {
69
+ const requirements = parsePaymentRequirements(response);
70
+ if (!requirements || requirements.length === 0)
71
+ return;
72
+ const ranked = rankRequirements(requirements);
73
+ if (ranked.length === 0)
74
+ return;
75
+ const walletConfig = (0, wallet_1.getWalletConfig)();
76
+ const password = walletConfig.passwordHash
77
+ ? options.password || (0, wallet_1.resolvePassword)() || null
78
+ : null;
79
+ if (walletConfig.passwordHash && password === null) {
80
+ console.error('Wallet is encrypted but no password provided.');
81
+ return;
82
+ }
83
+ const wallets = (0, wallet_1.listWallets)();
84
+ if (wallets.wallets.length === 0) {
85
+ console.error('No wallets found. Create one with: openmm wallet create');
86
+ return;
87
+ }
88
+ const walletName = options.walletName || wallets.defaultWallet;
89
+ if (!walletName) {
90
+ console.error('No default wallet set.');
91
+ return;
92
+ }
93
+ let exported;
94
+ try {
95
+ exported = (0, wallet_1.exportWallet)(walletName, password);
96
+ }
97
+ catch (err) {
98
+ console.error(`Failed to export wallet: ${err.message}`);
99
+ return;
100
+ }
101
+ for (const req of ranked) {
102
+ try {
103
+ const sig = await buildPaymentForRequirement(req, exported, url);
104
+ if (sig)
105
+ yield { signature: sig, network: req.network };
106
+ }
107
+ catch {
108
+ // This payment option failed to build, try next
109
+ continue;
110
+ }
111
+ }
112
+ }
113
+ /**
114
+ * Attempt to auto-pay a 402 response (single-shot, returns first viable signature).
115
+ */
116
+ async function createPaymentSignature(response, url, options = {}) {
117
+ for await (const { signature } of createPaymentSignatures(response, url, options)) {
118
+ return signature;
119
+ }
120
+ return null;
121
+ }
122
+ /**
123
+ * Check x402 payment wallet balance.
124
+ */
125
+ async function checkX402Balance(network) {
126
+ const addresses = (0, wallet_1.getDefaultWalletAddresses)();
127
+ if (!addresses)
128
+ return null;
129
+ if (network.startsWith('eip155:') && addresses.evm) {
130
+ const balance = await (0, evm_1.checkEvmBalance)(addresses.evm);
131
+ if (balance === null)
132
+ return null;
133
+ return {
134
+ network,
135
+ address: addresses.evm,
136
+ balance,
137
+ symbol: 'USDC',
138
+ };
139
+ }
140
+ // Solana support could be added here
141
+ return null;
142
+ }
143
+ /**
144
+ * Wrapper for fetch that handles x402 auto-payment.
145
+ *
146
+ * When a request returns HTTP 402:
147
+ * 1. Parses payment requirements from Payment-Required header
148
+ * 2. Signs payment using local wallet
149
+ * 3. Retries request with Payment-Signature header
150
+ */
151
+ async function x402Fetch(url, options = {}) {
152
+ const { walletName, password, skipPayment, maxRetries = 1, ...fetchOptions } = options;
153
+ // Make initial request
154
+ let response = await fetch(url, fetchOptions);
155
+ // If not a 402 or payment is skipped, return as-is
156
+ if (response.status !== 402 || skipPayment) {
157
+ return response;
158
+ }
159
+ // Parse payment requirements
160
+ const requirements = parsePaymentRequirements(response);
161
+ if (!requirements || requirements.length === 0) {
162
+ console.error('402 response but no valid payment requirements found');
163
+ return response;
164
+ }
165
+ // Check wallet balance before attempting payment
166
+ const ranked = rankRequirements(requirements);
167
+ if (ranked.length === 0) {
168
+ console.error('No supported payment networks in requirements');
169
+ return response;
170
+ }
171
+ const firstReq = ranked[0];
172
+ const balanceResult = await checkX402Balance(firstReq.network);
173
+ if (balanceResult) {
174
+ const requiredAmount = parseFloat(firstReq.amount) / 1e6; // Assuming 6 decimals
175
+ if (balanceResult.balance < requiredAmount) {
176
+ console.error(`Insufficient balance: ${balanceResult.balance} ${balanceResult.symbol}, ` +
177
+ `required: ${requiredAmount} ${balanceResult.symbol}`);
178
+ console.error(`Fund your wallet: ${balanceResult.address}`);
179
+ return response;
180
+ }
181
+ }
182
+ // Try to create payment signature
183
+ const signature = await createPaymentSignature(response, url, { password, walletName });
184
+ if (!signature) {
185
+ console.error('Failed to create payment signature');
186
+ return response;
187
+ }
188
+ // Retry with payment signature
189
+ let retries = 0;
190
+ while (retries < maxRetries) {
191
+ const retryHeaders = new Headers(fetchOptions.headers);
192
+ retryHeaders.set('Payment-Signature', signature);
193
+ response = await fetch(url, {
194
+ ...fetchOptions,
195
+ headers: retryHeaders,
196
+ });
197
+ // If no longer 402, we're done
198
+ if (response.status !== 402) {
199
+ return response;
200
+ }
201
+ retries++;
202
+ }
203
+ return response;
204
+ }
205
+ /**
206
+ * Format payment requirements for display.
207
+ */
208
+ function formatPaymentRequirements(requirements) {
209
+ const lines = ['Payment required:'];
210
+ for (const req of requirements) {
211
+ const network = req.network;
212
+ const amount = parseFloat(req.amount) / 1e6; // Assuming 6 decimals
213
+ const payTo = req.payTo || req.pay_to || 'unknown';
214
+ lines.push(` Network: ${network}`);
215
+ lines.push(` Amount: ${amount.toFixed(6)} USDC`);
216
+ lines.push(` Pay to: ${payTo}`);
217
+ lines.push('');
218
+ }
219
+ return lines.join('\n');
220
+ }
221
+ /**
222
+ * Check if a response is a 402 payment required.
223
+ */
224
+ function isPaymentRequired(response) {
225
+ return response.status === 402;
226
+ }
227
+ /**
228
+ * Get supported payment networks from requirements.
229
+ */
230
+ function getSupportedNetworks(requirements) {
231
+ return rankRequirements(requirements).map(r => r.network);
232
+ }
233
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/x402/handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * OpenMM x402 Payment Module
3
+ *
4
+ * Provides x402 payment protocol support for auto-paying API requests
5
+ * that return HTTP 402 Payment Required.
6
+ *
7
+ * Features:
8
+ * - Local wallet management (EVM + Solana)
9
+ * - EIP-3009 TransferWithAuthorization for gasless USDC payments on Base
10
+ * - Auto-detection and handling of 402 responses
11
+ * - Secure key storage with AES-256-GCM encryption
12
+ *
13
+ * Usage:
14
+ * ```typescript
15
+ * import { x402Fetch, createWallet, checkX402Balance } from './x402';
16
+ *
17
+ * // Create a wallet
18
+ * const wallet = createWallet('my-wallet', 'my-secure-password');
19
+ *
20
+ * // Use x402Fetch instead of fetch for auto-payment
21
+ * const response = await x402Fetch('https://api.example.com/data');
22
+ * ```
23
+ */
24
+ export type { PaymentRequirement, PaymentRequiredResponse, EvmWallet, SolanaWallet, EncryptedKey, StoredWallet, WalletConfig, ExportedWallet, WalletListEntry, EIP712Domain, TransferAuthorization, ECDSASignature, X402PaymentPayload, X402FetchOptions, X402BalanceResult, } from './types';
25
+ export { createWallet, listWallets, showWallet, exportWallet, setDefaultWallet, deleteWallet, getWalletConfig, resolvePassword, getDefaultWalletAddresses, } from './wallet';
26
+ export { createEvmPaymentPayload, isEvmNetwork, checkEvmBalance, hashTypedData, getBaseRpcUrl, } from './evm';
27
+ export { x402Fetch, parsePaymentRequirements, createPaymentSignature, createPaymentSignatures, checkX402Balance, formatPaymentRequirements, isPaymentRequired, getSupportedNetworks, } from './handler';
28
+ export { keccak256, signSecp256k1, encryptKey, decryptKey, hashPassword, verifyPassword, generatePrivateKey, privateKeyToEvmAddress, generateSolanaKeypair, base58Encode, } from './crypto';
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/x402/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,eAAe,EACf,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,yBAAyB,GAC1B,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,aAAa,GACd,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,SAAS,EACT,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,SAAS,EACT,aAAa,EACb,UAAU,EACV,UAAU,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,YAAY,GACb,MAAM,UAAU,CAAC"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ /**
3
+ * OpenMM x402 Payment Module
4
+ *
5
+ * Provides x402 payment protocol support for auto-paying API requests
6
+ * that return HTTP 402 Payment Required.
7
+ *
8
+ * Features:
9
+ * - Local wallet management (EVM + Solana)
10
+ * - EIP-3009 TransferWithAuthorization for gasless USDC payments on Base
11
+ * - Auto-detection and handling of 402 responses
12
+ * - Secure key storage with AES-256-GCM encryption
13
+ *
14
+ * Usage:
15
+ * ```typescript
16
+ * import { x402Fetch, createWallet, checkX402Balance } from './x402';
17
+ *
18
+ * // Create a wallet
19
+ * const wallet = createWallet('my-wallet', 'my-secure-password');
20
+ *
21
+ * // Use x402Fetch instead of fetch for auto-payment
22
+ * const response = await x402Fetch('https://api.example.com/data');
23
+ * ```
24
+ */
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.base58Encode = exports.generateSolanaKeypair = exports.privateKeyToEvmAddress = exports.generatePrivateKey = exports.verifyPassword = exports.hashPassword = exports.decryptKey = exports.encryptKey = exports.signSecp256k1 = exports.keccak256 = exports.getSupportedNetworks = exports.isPaymentRequired = exports.formatPaymentRequirements = exports.checkX402Balance = exports.createPaymentSignatures = exports.createPaymentSignature = exports.parsePaymentRequirements = exports.x402Fetch = exports.getBaseRpcUrl = exports.hashTypedData = exports.checkEvmBalance = exports.isEvmNetwork = exports.createEvmPaymentPayload = exports.getDefaultWalletAddresses = exports.resolvePassword = exports.getWalletConfig = exports.deleteWallet = exports.setDefaultWallet = exports.exportWallet = exports.showWallet = exports.listWallets = exports.createWallet = void 0;
27
+ // Wallet management
28
+ var wallet_1 = require("./wallet");
29
+ Object.defineProperty(exports, "createWallet", { enumerable: true, get: function () { return wallet_1.createWallet; } });
30
+ Object.defineProperty(exports, "listWallets", { enumerable: true, get: function () { return wallet_1.listWallets; } });
31
+ Object.defineProperty(exports, "showWallet", { enumerable: true, get: function () { return wallet_1.showWallet; } });
32
+ Object.defineProperty(exports, "exportWallet", { enumerable: true, get: function () { return wallet_1.exportWallet; } });
33
+ Object.defineProperty(exports, "setDefaultWallet", { enumerable: true, get: function () { return wallet_1.setDefaultWallet; } });
34
+ Object.defineProperty(exports, "deleteWallet", { enumerable: true, get: function () { return wallet_1.deleteWallet; } });
35
+ Object.defineProperty(exports, "getWalletConfig", { enumerable: true, get: function () { return wallet_1.getWalletConfig; } });
36
+ Object.defineProperty(exports, "resolvePassword", { enumerable: true, get: function () { return wallet_1.resolvePassword; } });
37
+ Object.defineProperty(exports, "getDefaultWalletAddresses", { enumerable: true, get: function () { return wallet_1.getDefaultWalletAddresses; } });
38
+ // EVM payment
39
+ var evm_1 = require("./evm");
40
+ Object.defineProperty(exports, "createEvmPaymentPayload", { enumerable: true, get: function () { return evm_1.createEvmPaymentPayload; } });
41
+ Object.defineProperty(exports, "isEvmNetwork", { enumerable: true, get: function () { return evm_1.isEvmNetwork; } });
42
+ Object.defineProperty(exports, "checkEvmBalance", { enumerable: true, get: function () { return evm_1.checkEvmBalance; } });
43
+ Object.defineProperty(exports, "hashTypedData", { enumerable: true, get: function () { return evm_1.hashTypedData; } });
44
+ Object.defineProperty(exports, "getBaseRpcUrl", { enumerable: true, get: function () { return evm_1.getBaseRpcUrl; } });
45
+ // x402 handler
46
+ var handler_1 = require("./handler");
47
+ Object.defineProperty(exports, "x402Fetch", { enumerable: true, get: function () { return handler_1.x402Fetch; } });
48
+ Object.defineProperty(exports, "parsePaymentRequirements", { enumerable: true, get: function () { return handler_1.parsePaymentRequirements; } });
49
+ Object.defineProperty(exports, "createPaymentSignature", { enumerable: true, get: function () { return handler_1.createPaymentSignature; } });
50
+ Object.defineProperty(exports, "createPaymentSignatures", { enumerable: true, get: function () { return handler_1.createPaymentSignatures; } });
51
+ Object.defineProperty(exports, "checkX402Balance", { enumerable: true, get: function () { return handler_1.checkX402Balance; } });
52
+ Object.defineProperty(exports, "formatPaymentRequirements", { enumerable: true, get: function () { return handler_1.formatPaymentRequirements; } });
53
+ Object.defineProperty(exports, "isPaymentRequired", { enumerable: true, get: function () { return handler_1.isPaymentRequired; } });
54
+ Object.defineProperty(exports, "getSupportedNetworks", { enumerable: true, get: function () { return handler_1.getSupportedNetworks; } });
55
+ // Crypto utilities (for advanced use)
56
+ var crypto_1 = require("./crypto");
57
+ Object.defineProperty(exports, "keccak256", { enumerable: true, get: function () { return crypto_1.keccak256; } });
58
+ Object.defineProperty(exports, "signSecp256k1", { enumerable: true, get: function () { return crypto_1.signSecp256k1; } });
59
+ Object.defineProperty(exports, "encryptKey", { enumerable: true, get: function () { return crypto_1.encryptKey; } });
60
+ Object.defineProperty(exports, "decryptKey", { enumerable: true, get: function () { return crypto_1.decryptKey; } });
61
+ Object.defineProperty(exports, "hashPassword", { enumerable: true, get: function () { return crypto_1.hashPassword; } });
62
+ Object.defineProperty(exports, "verifyPassword", { enumerable: true, get: function () { return crypto_1.verifyPassword; } });
63
+ Object.defineProperty(exports, "generatePrivateKey", { enumerable: true, get: function () { return crypto_1.generatePrivateKey; } });
64
+ Object.defineProperty(exports, "privateKeyToEvmAddress", { enumerable: true, get: function () { return crypto_1.privateKeyToEvmAddress; } });
65
+ Object.defineProperty(exports, "generateSolanaKeypair", { enumerable: true, get: function () { return crypto_1.generateSolanaKeypair; } });
66
+ Object.defineProperty(exports, "base58Encode", { enumerable: true, get: function () { return crypto_1.base58Encode; } });
67
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/x402/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;;AAqBH,oBAAoB;AACpB,mCAUkB;AAThB,sGAAA,YAAY,OAAA;AACZ,qGAAA,WAAW,OAAA;AACX,oGAAA,UAAU,OAAA;AACV,sGAAA,YAAY,OAAA;AACZ,0GAAA,gBAAgB,OAAA;AAChB,sGAAA,YAAY,OAAA;AACZ,yGAAA,eAAe,OAAA;AACf,yGAAA,eAAe,OAAA;AACf,mHAAA,yBAAyB,OAAA;AAG3B,cAAc;AACd,6BAMe;AALb,8GAAA,uBAAuB,OAAA;AACvB,mGAAA,YAAY,OAAA;AACZ,sGAAA,eAAe,OAAA;AACf,oGAAA,aAAa,OAAA;AACb,oGAAA,aAAa,OAAA;AAGf,eAAe;AACf,qCASmB;AARjB,oGAAA,SAAS,OAAA;AACT,mHAAA,wBAAwB,OAAA;AACxB,iHAAA,sBAAsB,OAAA;AACtB,kHAAA,uBAAuB,OAAA;AACvB,2GAAA,gBAAgB,OAAA;AAChB,oHAAA,yBAAyB,OAAA;AACzB,4GAAA,iBAAiB,OAAA;AACjB,+GAAA,oBAAoB,OAAA;AAGtB,sCAAsC;AACtC,mCAWkB;AAVhB,mGAAA,SAAS,OAAA;AACT,uGAAA,aAAa,OAAA;AACb,oGAAA,UAAU,OAAA;AACV,oGAAA,UAAU,OAAA;AACV,sGAAA,YAAY,OAAA;AACZ,wGAAA,cAAc,OAAA;AACd,4GAAA,kBAAkB,OAAA;AAClB,gHAAA,sBAAsB,OAAA;AACtB,+GAAA,qBAAqB,OAAA;AACrB,sGAAA,YAAY,OAAA"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * OpenMM x402 Payment Types
3
+ * Type definitions for x402 payment protocol support.
4
+ */
5
+ /**
6
+ * Payment requirement from 402 response header.
7
+ */
8
+ export interface PaymentRequirement {
9
+ /** CAIP-2 network identifier (e.g., "eip155:8453" for Base) */
10
+ network: string;
11
+ /** Token contract address */
12
+ asset: string;
13
+ /** Amount in smallest unit (e.g., USDC with 6 decimals: 1000000 = $1) */
14
+ amount: string;
15
+ /** Recipient address */
16
+ payTo?: string;
17
+ pay_to?: string;
18
+ /** Additional requirements (e.g., EIP-712 domain info) */
19
+ extra?: {
20
+ name?: string;
21
+ version?: string;
22
+ [key: string]: unknown;
23
+ };
24
+ }
25
+ /**
26
+ * Parsed 402 response with payment requirements.
27
+ */
28
+ export interface PaymentRequiredResponse {
29
+ accepts: PaymentRequirement[];
30
+ }
31
+ /**
32
+ * EVM wallet keypair.
33
+ */
34
+ export interface EvmWallet {
35
+ address: string;
36
+ privateKey: string;
37
+ }
38
+ /**
39
+ * Solana wallet keypair.
40
+ */
41
+ export interface SolanaWallet {
42
+ address: string;
43
+ privateKey: string;
44
+ }
45
+ /**
46
+ * Encrypted key storage format.
47
+ */
48
+ export interface EncryptedKey {
49
+ /** Unencrypted storage */
50
+ data?: string;
51
+ encrypted?: boolean;
52
+ /** Encrypted storage */
53
+ cipher?: string;
54
+ kdf?: string;
55
+ kdfParams?: {
56
+ N: number;
57
+ r: number;
58
+ p: number;
59
+ };
60
+ salt?: string;
61
+ iv?: string;
62
+ authTag?: string;
63
+ ciphertext?: string;
64
+ }
65
+ /**
66
+ * Stored wallet format.
67
+ */
68
+ export interface StoredWallet {
69
+ name: string;
70
+ createdAt: string;
71
+ evm: {
72
+ address: string;
73
+ encrypted: EncryptedKey;
74
+ };
75
+ solana?: {
76
+ address: string;
77
+ encrypted: EncryptedKey;
78
+ };
79
+ }
80
+ /**
81
+ * Wallet configuration.
82
+ */
83
+ export interface WalletConfig {
84
+ defaultWallet: string | null;
85
+ passwordHash: {
86
+ salt: string;
87
+ hash: string;
88
+ } | null;
89
+ }
90
+ /**
91
+ * Exported wallet with decrypted keys.
92
+ */
93
+ export interface ExportedWallet {
94
+ name: string;
95
+ evm: {
96
+ address: string;
97
+ privateKey: string;
98
+ };
99
+ solana?: {
100
+ address: string;
101
+ privateKey: string;
102
+ };
103
+ }
104
+ /**
105
+ * Wallet list entry (public info only).
106
+ */
107
+ export interface WalletListEntry {
108
+ name: string;
109
+ evm: string | null;
110
+ solana: string | null;
111
+ createdAt: string;
112
+ isDefault: boolean;
113
+ }
114
+ /**
115
+ * EIP-712 domain for typed data signing.
116
+ */
117
+ export interface EIP712Domain {
118
+ name: string;
119
+ version: string;
120
+ chainId: number;
121
+ verifyingContract: string;
122
+ }
123
+ /**
124
+ * EIP-3009 TransferWithAuthorization message.
125
+ */
126
+ export interface TransferAuthorization {
127
+ from: string;
128
+ to: string;
129
+ value: bigint;
130
+ validAfter: bigint;
131
+ validBefore: bigint;
132
+ nonce: string;
133
+ }
134
+ /**
135
+ * ECDSA signature components.
136
+ */
137
+ export interface ECDSASignature {
138
+ r: Buffer;
139
+ s: Buffer;
140
+ v: number;
141
+ }
142
+ /**
143
+ * x402 payment payload for Payment-Signature header.
144
+ */
145
+ export interface X402PaymentPayload {
146
+ x402Version: number;
147
+ payload: {
148
+ authorization: {
149
+ from: string;
150
+ to: string;
151
+ value: string;
152
+ validAfter: string;
153
+ validBefore: string;
154
+ nonce: string;
155
+ };
156
+ signature: string;
157
+ };
158
+ accepted: PaymentRequirement;
159
+ resource?: {
160
+ url: string;
161
+ };
162
+ }
163
+ /**
164
+ * Options for x402 fetch wrapper.
165
+ */
166
+ export interface X402FetchOptions extends RequestInit {
167
+ /** Wallet name to use (defaults to default wallet) */
168
+ walletName?: string;
169
+ /** Wallet password (defaults to env var OPENMM_WALLET_PASSWORD) */
170
+ password?: string;
171
+ /** Skip auto-payment, just return 402 response */
172
+ skipPayment?: boolean;
173
+ /** Maximum retries after payment */
174
+ maxRetries?: number;
175
+ }
176
+ /**
177
+ * Result of checking x402 balance.
178
+ */
179
+ export interface X402BalanceResult {
180
+ network: string;
181
+ address: string;
182
+ balance: number;
183
+ symbol: string;
184
+ }
185
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/x402/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * OpenMM x402 Payment Types
4
+ * Type definitions for x402 payment protocol support.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/x402/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * OpenMM x402 Wallet Management
3
+ * Local key generation and storage for EVM and Solana chains.
4
+ */
5
+ import type { WalletConfig, ExportedWallet, WalletListEntry } from './types';
6
+ /**
7
+ * Resolve wallet password from environment variable.
8
+ */
9
+ export declare function resolvePassword(): string | null;
10
+ /**
11
+ * Get wallet configuration.
12
+ */
13
+ export declare function getWalletConfig(): WalletConfig;
14
+ /**
15
+ * List all wallets.
16
+ */
17
+ export declare function listWallets(): {
18
+ wallets: WalletListEntry[];
19
+ defaultWallet: string | null;
20
+ };
21
+ /**
22
+ * Create a new wallet pair (EVM + Solana).
23
+ */
24
+ export declare function createWallet(name: string, password: string | null): {
25
+ name: string;
26
+ evm: string;
27
+ solana: string;
28
+ isDefault: boolean;
29
+ };
30
+ /**
31
+ * Show wallet details (addresses only, no keys).
32
+ */
33
+ export declare function showWallet(name: string): {
34
+ name: string;
35
+ evm: string | null;
36
+ solana: string | null;
37
+ createdAt: string;
38
+ isDefault: boolean;
39
+ };
40
+ /**
41
+ * Export private keys for a wallet (requires password).
42
+ */
43
+ export declare function exportWallet(name: string, password: string | null): ExportedWallet;
44
+ /**
45
+ * Set the default wallet.
46
+ */
47
+ export declare function setDefaultWallet(name: string): {
48
+ defaultWallet: string;
49
+ };
50
+ /**
51
+ * Delete a wallet.
52
+ */
53
+ export declare function deleteWallet(name: string, password: string | null): {
54
+ deleted: string;
55
+ newDefault: string | null;
56
+ };
57
+ /**
58
+ * Get the default wallet's addresses without requiring password.
59
+ */
60
+ export declare function getDefaultWalletAddresses(): {
61
+ name: string;
62
+ evm: string | null;
63
+ solana: string | null;
64
+ } | null;
65
+ //# sourceMappingURL=wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/x402/wallet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,KAAK,EAEV,YAAY,EACZ,cAAc,EACd,eAAe,EAEhB,MAAM,SAAS,CAAC;AAuCjB;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAID;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAM9C;AAqCD;;GAEG;AACH,wBAAgB,WAAW,IAAI;IAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAmB1F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB,CAsEA;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,CAgBA;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CA0BlF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAWxE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CA2BhD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,GAAG,IAAI,CAcP"}