@antseed/node 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. package/README.md +411 -0
  2. package/contracts/AntseedEscrow.sol +310 -0
  3. package/contracts/MockUSDC.sol +64 -0
  4. package/contracts/README.md +102 -0
  5. package/dist/config/encryption.d.ts +17 -0
  6. package/dist/config/encryption.d.ts.map +1 -0
  7. package/dist/config/encryption.js +49 -0
  8. package/dist/config/encryption.js.map +1 -0
  9. package/dist/config/plugin-config-manager.d.ts +31 -0
  10. package/dist/config/plugin-config-manager.d.ts.map +1 -0
  11. package/dist/config/plugin-config-manager.js +135 -0
  12. package/dist/config/plugin-config-manager.js.map +1 -0
  13. package/dist/config/plugin-loader.d.ts +25 -0
  14. package/dist/config/plugin-loader.d.ts.map +1 -0
  15. package/dist/config/plugin-loader.js +64 -0
  16. package/dist/config/plugin-loader.js.map +1 -0
  17. package/dist/discovery/announcer.d.ts +44 -0
  18. package/dist/discovery/announcer.d.ts.map +1 -0
  19. package/dist/discovery/announcer.js +129 -0
  20. package/dist/discovery/announcer.js.map +1 -0
  21. package/dist/discovery/bootstrap.d.ts +13 -0
  22. package/dist/discovery/bootstrap.d.ts.map +1 -0
  23. package/dist/discovery/bootstrap.js +39 -0
  24. package/dist/discovery/bootstrap.js.map +1 -0
  25. package/dist/discovery/default-metadata-resolver.d.ts +16 -0
  26. package/dist/discovery/default-metadata-resolver.d.ts.map +1 -0
  27. package/dist/discovery/default-metadata-resolver.js +16 -0
  28. package/dist/discovery/default-metadata-resolver.js.map +1 -0
  29. package/dist/discovery/dht-health.d.ts +38 -0
  30. package/dist/discovery/dht-health.d.ts.map +1 -0
  31. package/dist/discovery/dht-health.js +101 -0
  32. package/dist/discovery/dht-health.js.map +1 -0
  33. package/dist/discovery/dht-node.d.ts +34 -0
  34. package/dist/discovery/dht-node.d.ts.map +1 -0
  35. package/dist/discovery/dht-node.js +168 -0
  36. package/dist/discovery/dht-node.js.map +1 -0
  37. package/dist/discovery/http-metadata-resolver.d.ts +15 -0
  38. package/dist/discovery/http-metadata-resolver.d.ts.map +1 -0
  39. package/dist/discovery/http-metadata-resolver.js +33 -0
  40. package/dist/discovery/http-metadata-resolver.js.map +1 -0
  41. package/dist/discovery/index.d.ts +16 -0
  42. package/dist/discovery/index.d.ts.map +1 -0
  43. package/dist/discovery/index.js +15 -0
  44. package/dist/discovery/index.js.map +1 -0
  45. package/dist/discovery/metadata-codec.d.ts +22 -0
  46. package/dist/discovery/metadata-codec.d.ts.map +1 -0
  47. package/dist/discovery/metadata-codec.js +390 -0
  48. package/dist/discovery/metadata-codec.js.map +1 -0
  49. package/dist/discovery/metadata-resolver.d.ts +9 -0
  50. package/dist/discovery/metadata-resolver.d.ts.map +1 -0
  51. package/dist/discovery/metadata-resolver.js +2 -0
  52. package/dist/discovery/metadata-resolver.js.map +1 -0
  53. package/dist/discovery/metadata-server.d.ts +16 -0
  54. package/dist/discovery/metadata-server.d.ts.map +1 -0
  55. package/dist/discovery/metadata-server.js +59 -0
  56. package/dist/discovery/metadata-server.js.map +1 -0
  57. package/dist/discovery/metadata-validator.d.ts +12 -0
  58. package/dist/discovery/metadata-validator.d.ts.map +1 -0
  59. package/dist/discovery/metadata-validator.js +153 -0
  60. package/dist/discovery/metadata-validator.js.map +1 -0
  61. package/dist/discovery/peer-lookup.d.ts +26 -0
  62. package/dist/discovery/peer-lookup.d.ts.map +1 -0
  63. package/dist/discovery/peer-lookup.js +86 -0
  64. package/dist/discovery/peer-lookup.js.map +1 -0
  65. package/dist/discovery/peer-metadata.d.ts +31 -0
  66. package/dist/discovery/peer-metadata.d.ts.map +1 -0
  67. package/dist/discovery/peer-metadata.js +2 -0
  68. package/dist/discovery/peer-metadata.js.map +1 -0
  69. package/dist/discovery/peer-selector.d.ts +33 -0
  70. package/dist/discovery/peer-selector.d.ts.map +1 -0
  71. package/dist/discovery/peer-selector.js +80 -0
  72. package/dist/discovery/peer-selector.js.map +1 -0
  73. package/dist/discovery/profile-manager.d.ts +50 -0
  74. package/dist/discovery/profile-manager.d.ts.map +1 -0
  75. package/dist/discovery/profile-manager.js +105 -0
  76. package/dist/discovery/profile-manager.js.map +1 -0
  77. package/dist/discovery/profile-search.d.ts +27 -0
  78. package/dist/discovery/profile-search.d.ts.map +1 -0
  79. package/dist/discovery/profile-search.js +75 -0
  80. package/dist/discovery/profile-search.js.map +1 -0
  81. package/dist/discovery/reputation-verifier.d.ts +25 -0
  82. package/dist/discovery/reputation-verifier.d.ts.map +1 -0
  83. package/dist/discovery/reputation-verifier.js +27 -0
  84. package/dist/discovery/reputation-verifier.js.map +1 -0
  85. package/dist/index.d.ts +37 -0
  86. package/dist/index.d.ts.map +1 -0
  87. package/dist/index.js +32 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/interfaces/buyer-router.d.ts +21 -0
  90. package/dist/interfaces/buyer-router.d.ts.map +1 -0
  91. package/dist/interfaces/buyer-router.js +2 -0
  92. package/dist/interfaces/buyer-router.js.map +1 -0
  93. package/dist/interfaces/plugin.d.ts +31 -0
  94. package/dist/interfaces/plugin.d.ts.map +1 -0
  95. package/dist/interfaces/plugin.js +2 -0
  96. package/dist/interfaces/plugin.js.map +1 -0
  97. package/dist/interfaces/seller-provider.d.ts +69 -0
  98. package/dist/interfaces/seller-provider.d.ts.map +1 -0
  99. package/dist/interfaces/seller-provider.js +2 -0
  100. package/dist/interfaces/seller-provider.js.map +1 -0
  101. package/dist/metering/index.d.ts +7 -0
  102. package/dist/metering/index.d.ts.map +1 -0
  103. package/dist/metering/index.js +7 -0
  104. package/dist/metering/index.js.map +1 -0
  105. package/dist/metering/receipt-generator.d.ts +49 -0
  106. package/dist/metering/receipt-generator.d.ts.map +1 -0
  107. package/dist/metering/receipt-generator.js +74 -0
  108. package/dist/metering/receipt-generator.js.map +1 -0
  109. package/dist/metering/receipt-verifier.d.ts +52 -0
  110. package/dist/metering/receipt-verifier.d.ts.map +1 -0
  111. package/dist/metering/receipt-verifier.js +63 -0
  112. package/dist/metering/receipt-verifier.js.map +1 -0
  113. package/dist/metering/session-tracker.d.ts +59 -0
  114. package/dist/metering/session-tracker.d.ts.map +1 -0
  115. package/dist/metering/session-tracker.js +119 -0
  116. package/dist/metering/session-tracker.js.map +1 -0
  117. package/dist/metering/storage.d.ts +72 -0
  118. package/dist/metering/storage.d.ts.map +1 -0
  119. package/dist/metering/storage.js +446 -0
  120. package/dist/metering/storage.js.map +1 -0
  121. package/dist/metering/token-counter.d.ts +50 -0
  122. package/dist/metering/token-counter.d.ts.map +1 -0
  123. package/dist/metering/token-counter.js +96 -0
  124. package/dist/metering/token-counter.js.map +1 -0
  125. package/dist/metering/usage-aggregator.d.ts +46 -0
  126. package/dist/metering/usage-aggregator.d.ts.map +1 -0
  127. package/dist/metering/usage-aggregator.js +170 -0
  128. package/dist/metering/usage-aggregator.js.map +1 -0
  129. package/dist/node.d.ts +179 -0
  130. package/dist/node.d.ts.map +1 -0
  131. package/dist/node.js +1328 -0
  132. package/dist/node.js.map +1 -0
  133. package/dist/p2p/connection-auth.d.ts +35 -0
  134. package/dist/p2p/connection-auth.d.ts.map +1 -0
  135. package/dist/p2p/connection-auth.js +102 -0
  136. package/dist/p2p/connection-auth.js.map +1 -0
  137. package/dist/p2p/connection-manager.d.ts +101 -0
  138. package/dist/p2p/connection-manager.d.ts.map +1 -0
  139. package/dist/p2p/connection-manager.js +726 -0
  140. package/dist/p2p/connection-manager.js.map +1 -0
  141. package/dist/p2p/handshake.d.ts +47 -0
  142. package/dist/p2p/handshake.d.ts.map +1 -0
  143. package/dist/p2p/handshake.js +107 -0
  144. package/dist/p2p/handshake.js.map +1 -0
  145. package/dist/p2p/ice-config.d.ts +27 -0
  146. package/dist/p2p/ice-config.d.ts.map +1 -0
  147. package/dist/p2p/ice-config.js +43 -0
  148. package/dist/p2p/ice-config.js.map +1 -0
  149. package/dist/p2p/identity.d.ts +27 -0
  150. package/dist/p2p/identity.d.ts.map +1 -0
  151. package/dist/p2p/identity.js +76 -0
  152. package/dist/p2p/identity.js.map +1 -0
  153. package/dist/p2p/index.d.ts +12 -0
  154. package/dist/p2p/index.d.ts.map +1 -0
  155. package/dist/p2p/index.js +11 -0
  156. package/dist/p2p/index.js.map +1 -0
  157. package/dist/p2p/keepalive.d.ts +49 -0
  158. package/dist/p2p/keepalive.d.ts.map +1 -0
  159. package/dist/p2p/keepalive.js +93 -0
  160. package/dist/p2p/keepalive.js.map +1 -0
  161. package/dist/p2p/message-protocol.d.ts +50 -0
  162. package/dist/p2p/message-protocol.d.ts.map +1 -0
  163. package/dist/p2p/message-protocol.js +134 -0
  164. package/dist/p2p/message-protocol.js.map +1 -0
  165. package/dist/p2p/nat-traversal.d.ts +51 -0
  166. package/dist/p2p/nat-traversal.d.ts.map +1 -0
  167. package/dist/p2p/nat-traversal.js +135 -0
  168. package/dist/p2p/nat-traversal.js.map +1 -0
  169. package/dist/p2p/payment-codec.d.ts +20 -0
  170. package/dist/p2p/payment-codec.d.ts.map +1 -0
  171. package/dist/p2p/payment-codec.js +130 -0
  172. package/dist/p2p/payment-codec.js.map +1 -0
  173. package/dist/p2p/payment-mux.d.ts +49 -0
  174. package/dist/p2p/payment-mux.d.ts.map +1 -0
  175. package/dist/p2p/payment-mux.js +131 -0
  176. package/dist/p2p/payment-mux.js.map +1 -0
  177. package/dist/p2p/reconnect.d.ts +48 -0
  178. package/dist/p2p/reconnect.d.ts.map +1 -0
  179. package/dist/p2p/reconnect.js +89 -0
  180. package/dist/p2p/reconnect.js.map +1 -0
  181. package/dist/payments/balance-manager.d.ts +17 -0
  182. package/dist/payments/balance-manager.d.ts.map +1 -0
  183. package/dist/payments/balance-manager.js +54 -0
  184. package/dist/payments/balance-manager.js.map +1 -0
  185. package/dist/payments/buyer-payment-manager.d.ts +122 -0
  186. package/dist/payments/buyer-payment-manager.d.ts.map +1 -0
  187. package/dist/payments/buyer-payment-manager.js +280 -0
  188. package/dist/payments/buyer-payment-manager.js.map +1 -0
  189. package/dist/payments/disputes.d.ts +18 -0
  190. package/dist/payments/disputes.d.ts.map +1 -0
  191. package/dist/payments/disputes.js +47 -0
  192. package/dist/payments/disputes.js.map +1 -0
  193. package/dist/payments/evm/escrow-client.d.ts +61 -0
  194. package/dist/payments/evm/escrow-client.d.ts.map +1 -0
  195. package/dist/payments/evm/escrow-client.js +170 -0
  196. package/dist/payments/evm/escrow-client.js.map +1 -0
  197. package/dist/payments/evm/keypair.d.ts +21 -0
  198. package/dist/payments/evm/keypair.d.ts.map +1 -0
  199. package/dist/payments/evm/keypair.js +29 -0
  200. package/dist/payments/evm/keypair.js.map +1 -0
  201. package/dist/payments/evm/signatures.d.ts +11 -0
  202. package/dist/payments/evm/signatures.d.ts.map +1 -0
  203. package/dist/payments/evm/signatures.js +56 -0
  204. package/dist/payments/evm/signatures.js.map +1 -0
  205. package/dist/payments/evm/wallet.d.ts +5 -0
  206. package/dist/payments/evm/wallet.d.ts.map +1 -0
  207. package/dist/payments/evm/wallet.js +31 -0
  208. package/dist/payments/evm/wallet.js.map +1 -0
  209. package/dist/payments/index.d.ts +13 -0
  210. package/dist/payments/index.d.ts.map +1 -0
  211. package/dist/payments/index.js +14 -0
  212. package/dist/payments/index.js.map +1 -0
  213. package/dist/payments/settlement.d.ts +6 -0
  214. package/dist/payments/settlement.d.ts.map +1 -0
  215. package/dist/payments/settlement.js +25 -0
  216. package/dist/payments/settlement.js.map +1 -0
  217. package/dist/payments/types.d.ts +66 -0
  218. package/dist/payments/types.d.ts.map +1 -0
  219. package/dist/payments/types.js +2 -0
  220. package/dist/payments/types.js.map +1 -0
  221. package/dist/proxy/index.d.ts +4 -0
  222. package/dist/proxy/index.d.ts.map +1 -0
  223. package/dist/proxy/index.js +4 -0
  224. package/dist/proxy/index.js.map +1 -0
  225. package/dist/proxy/provider-detection.d.ts +20 -0
  226. package/dist/proxy/provider-detection.d.ts.map +1 -0
  227. package/dist/proxy/provider-detection.js +61 -0
  228. package/dist/proxy/provider-detection.js.map +1 -0
  229. package/dist/proxy/proxy-mux.d.ts +35 -0
  230. package/dist/proxy/proxy-mux.d.ts.map +1 -0
  231. package/dist/proxy/proxy-mux.js +137 -0
  232. package/dist/proxy/proxy-mux.js.map +1 -0
  233. package/dist/proxy/request-codec.d.ts +33 -0
  234. package/dist/proxy/request-codec.d.ts.map +1 -0
  235. package/dist/proxy/request-codec.js +238 -0
  236. package/dist/proxy/request-codec.js.map +1 -0
  237. package/dist/reputation/index.d.ts +7 -0
  238. package/dist/reputation/index.d.ts.map +1 -0
  239. package/dist/reputation/index.js +6 -0
  240. package/dist/reputation/index.js.map +1 -0
  241. package/dist/reputation/rating-manager.d.ts +20 -0
  242. package/dist/reputation/rating-manager.d.ts.map +1 -0
  243. package/dist/reputation/rating-manager.js +91 -0
  244. package/dist/reputation/rating-manager.js.map +1 -0
  245. package/dist/reputation/report-manager.d.ts +21 -0
  246. package/dist/reputation/report-manager.d.ts.map +1 -0
  247. package/dist/reputation/report-manager.js +70 -0
  248. package/dist/reputation/report-manager.js.map +1 -0
  249. package/dist/reputation/trust-engine.d.ts +36 -0
  250. package/dist/reputation/trust-engine.d.ts.map +1 -0
  251. package/dist/reputation/trust-engine.js +95 -0
  252. package/dist/reputation/trust-engine.js.map +1 -0
  253. package/dist/reputation/trust-score.d.ts +43 -0
  254. package/dist/reputation/trust-score.d.ts.map +1 -0
  255. package/dist/reputation/trust-score.js +34 -0
  256. package/dist/reputation/trust-score.js.map +1 -0
  257. package/dist/reputation/uptime-tracker.d.ts +51 -0
  258. package/dist/reputation/uptime-tracker.d.ts.map +1 -0
  259. package/dist/reputation/uptime-tracker.js +123 -0
  260. package/dist/reputation/uptime-tracker.js.map +1 -0
  261. package/dist/routing/default-router.d.ts +21 -0
  262. package/dist/routing/default-router.d.ts.map +1 -0
  263. package/dist/routing/default-router.js +60 -0
  264. package/dist/routing/default-router.js.map +1 -0
  265. package/dist/types/buyer.d.ts +36 -0
  266. package/dist/types/buyer.d.ts.map +1 -0
  267. package/dist/types/buyer.js +2 -0
  268. package/dist/types/buyer.js.map +1 -0
  269. package/dist/types/capability.d.ts +25 -0
  270. package/dist/types/capability.d.ts.map +1 -0
  271. package/dist/types/capability.js +2 -0
  272. package/dist/types/capability.js.map +1 -0
  273. package/dist/types/connection.d.ts +27 -0
  274. package/dist/types/connection.d.ts.map +1 -0
  275. package/dist/types/connection.js +11 -0
  276. package/dist/types/connection.js.map +1 -0
  277. package/dist/types/http.d.ts +19 -0
  278. package/dist/types/http.d.ts.map +1 -0
  279. package/dist/types/http.js +2 -0
  280. package/dist/types/http.js.map +1 -0
  281. package/dist/types/index.d.ts +15 -0
  282. package/dist/types/index.d.ts.map +1 -0
  283. package/dist/types/index.js +15 -0
  284. package/dist/types/index.js.map +1 -0
  285. package/dist/types/metering.d.ts +170 -0
  286. package/dist/types/metering.d.ts.map +1 -0
  287. package/dist/types/metering.js +2 -0
  288. package/dist/types/metering.js.map +1 -0
  289. package/dist/types/peer-profile.d.ts +24 -0
  290. package/dist/types/peer-profile.d.ts.map +1 -0
  291. package/dist/types/peer-profile.js +2 -0
  292. package/dist/types/peer-profile.js.map +1 -0
  293. package/dist/types/peer.d.ts +56 -0
  294. package/dist/types/peer.d.ts.map +1 -0
  295. package/dist/types/peer.js +11 -0
  296. package/dist/types/peer.js.map +1 -0
  297. package/dist/types/plugin-config.d.ts +31 -0
  298. package/dist/types/plugin-config.d.ts.map +1 -0
  299. package/dist/types/plugin-config.js +2 -0
  300. package/dist/types/plugin-config.js.map +1 -0
  301. package/dist/types/protocol.d.ts +141 -0
  302. package/dist/types/protocol.d.ts.map +1 -0
  303. package/dist/types/protocol.js +42 -0
  304. package/dist/types/protocol.js.map +1 -0
  305. package/dist/types/provider.d.ts +38 -0
  306. package/dist/types/provider.d.ts.map +1 -0
  307. package/dist/types/provider.js +11 -0
  308. package/dist/types/provider.js.map +1 -0
  309. package/dist/types/rating.d.ts +21 -0
  310. package/dist/types/rating.d.ts.map +1 -0
  311. package/dist/types/rating.js +2 -0
  312. package/dist/types/rating.js.map +1 -0
  313. package/dist/types/report.d.ts +20 -0
  314. package/dist/types/report.d.ts.map +1 -0
  315. package/dist/types/report.js +2 -0
  316. package/dist/types/report.js.map +1 -0
  317. package/dist/types/seller.d.ts +36 -0
  318. package/dist/types/seller.d.ts.map +1 -0
  319. package/dist/types/seller.js +2 -0
  320. package/dist/types/seller.js.map +1 -0
  321. package/dist/types/staking.d.ts +16 -0
  322. package/dist/types/staking.d.ts.map +1 -0
  323. package/dist/types/staking.js +6 -0
  324. package/dist/types/staking.js.map +1 -0
  325. package/dist/utils/debug.d.ts +4 -0
  326. package/dist/utils/debug.d.ts.map +1 -0
  327. package/dist/utils/debug.js +25 -0
  328. package/dist/utils/debug.js.map +1 -0
  329. package/dist/utils/hex.d.ts +3 -0
  330. package/dist/utils/hex.d.ts.map +1 -0
  331. package/dist/utils/hex.js +15 -0
  332. package/dist/utils/hex.js.map +1 -0
  333. package/package.json +62 -0
  334. package/scripts/ensure-node-native-modules.mjs +153 -0
  335. package/scripts/patch-ethers.js +44 -0
  336. package/src/config/encryption.test.ts +49 -0
  337. package/src/config/encryption.ts +53 -0
  338. package/src/config/plugin-config-manager.test.ts +92 -0
  339. package/src/config/plugin-config-manager.ts +153 -0
  340. package/src/config/plugin-loader.ts +90 -0
  341. package/src/discovery/announcer.ts +169 -0
  342. package/src/discovery/bootstrap.ts +57 -0
  343. package/src/discovery/default-metadata-resolver.ts +18 -0
  344. package/src/discovery/dht-health.ts +136 -0
  345. package/src/discovery/dht-node.ts +191 -0
  346. package/src/discovery/http-metadata-resolver.ts +47 -0
  347. package/src/discovery/index.ts +15 -0
  348. package/src/discovery/metadata-codec.ts +453 -0
  349. package/src/discovery/metadata-resolver.ts +7 -0
  350. package/src/discovery/metadata-server.ts +73 -0
  351. package/src/discovery/metadata-validator.ts +172 -0
  352. package/src/discovery/peer-lookup.ts +122 -0
  353. package/src/discovery/peer-metadata.ts +34 -0
  354. package/src/discovery/peer-selector.ts +134 -0
  355. package/src/discovery/profile-manager.ts +131 -0
  356. package/src/discovery/profile-search.ts +100 -0
  357. package/src/discovery/reputation-verifier.ts +54 -0
  358. package/src/index.ts +61 -0
  359. package/src/interfaces/buyer-router.ts +21 -0
  360. package/src/interfaces/plugin.ts +36 -0
  361. package/src/interfaces/seller-provider.ts +81 -0
  362. package/src/metering/index.ts +6 -0
  363. package/src/metering/receipt-generator.ts +105 -0
  364. package/src/metering/receipt-verifier.ts +102 -0
  365. package/src/metering/session-tracker.ts +145 -0
  366. package/src/metering/storage.ts +600 -0
  367. package/src/metering/token-counter.ts +127 -0
  368. package/src/metering/usage-aggregator.ts +236 -0
  369. package/src/node.ts +1698 -0
  370. package/src/p2p/connection-auth.ts +152 -0
  371. package/src/p2p/connection-manager.ts +916 -0
  372. package/src/p2p/handshake.ts +162 -0
  373. package/src/p2p/ice-config.ts +59 -0
  374. package/src/p2p/identity.ts +110 -0
  375. package/src/p2p/index.ts +11 -0
  376. package/src/p2p/keepalive.ts +118 -0
  377. package/src/p2p/message-protocol.ts +171 -0
  378. package/src/p2p/nat-traversal.ts +169 -0
  379. package/src/p2p/payment-codec.ts +165 -0
  380. package/src/p2p/payment-mux.ts +153 -0
  381. package/src/p2p/reconnect.ts +117 -0
  382. package/src/payments/balance-manager.ts +77 -0
  383. package/src/payments/buyer-payment-manager.ts +414 -0
  384. package/src/payments/disputes.ts +72 -0
  385. package/src/payments/evm/escrow-client.ts +263 -0
  386. package/src/payments/evm/keypair.ts +31 -0
  387. package/src/payments/evm/signatures.ts +103 -0
  388. package/src/payments/evm/wallet.ts +42 -0
  389. package/src/payments/index.ts +50 -0
  390. package/src/payments/settlement.ts +40 -0
  391. package/src/payments/types.ts +79 -0
  392. package/src/proxy/index.ts +3 -0
  393. package/src/proxy/provider-detection.ts +78 -0
  394. package/src/proxy/proxy-mux.ts +173 -0
  395. package/src/proxy/request-codec.ts +294 -0
  396. package/src/reputation/index.ts +6 -0
  397. package/src/reputation/rating-manager.ts +118 -0
  398. package/src/reputation/report-manager.ts +91 -0
  399. package/src/reputation/trust-engine.ts +120 -0
  400. package/src/reputation/trust-score.ts +74 -0
  401. package/src/reputation/uptime-tracker.ts +155 -0
  402. package/src/routing/default-router.ts +75 -0
  403. package/src/types/bittorrent-dht.d.ts +19 -0
  404. package/src/types/buyer.ts +37 -0
  405. package/src/types/capability.ts +34 -0
  406. package/src/types/connection.ts +29 -0
  407. package/src/types/http.ts +20 -0
  408. package/src/types/index.ts +14 -0
  409. package/src/types/metering.ts +175 -0
  410. package/src/types/nat-api.d.ts +29 -0
  411. package/src/types/peer-profile.ts +25 -0
  412. package/src/types/peer.ts +62 -0
  413. package/src/types/plugin-config.ts +31 -0
  414. package/src/types/protocol.ts +162 -0
  415. package/src/types/provider.ts +40 -0
  416. package/src/types/rating.ts +23 -0
  417. package/src/types/report.ts +30 -0
  418. package/src/types/seller.ts +38 -0
  419. package/src/types/staking.ts +23 -0
  420. package/src/utils/debug.ts +30 -0
  421. package/src/utils/hex.ts +14 -0
  422. package/tests/balance-manager.test.ts +156 -0
  423. package/tests/bootstrap.test.ts +108 -0
  424. package/tests/buyer-payment-manager.test.ts +358 -0
  425. package/tests/connection-auth.test.ts +87 -0
  426. package/tests/default-router.test.ts +148 -0
  427. package/tests/evm-keypair.test.ts +173 -0
  428. package/tests/identity.test.ts +133 -0
  429. package/tests/message-protocol.test.ts +212 -0
  430. package/tests/metadata-codec.test.ts +165 -0
  431. package/tests/metadata-validator.test.ts +261 -0
  432. package/tests/metering-storage.test.ts +244 -0
  433. package/tests/payment-codec.test.ts +95 -0
  434. package/tests/payment-mux.test.ts +191 -0
  435. package/tests/peer-selector.test.ts +184 -0
  436. package/tests/provider-detection.test.ts +107 -0
  437. package/tests/proxy-mux-security.test.ts +38 -0
  438. package/tests/receipt.test.ts +215 -0
  439. package/tests/reputation-integration.test.ts +195 -0
  440. package/tests/request-codec.test.ts +144 -0
  441. package/tests/token-counter.test.ts +122 -0
  442. package/tsconfig.json +9 -0
  443. package/vitest.config.ts +7 -0
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Aggregates session metrics into time-period summaries.
3
+ */
4
+ export class UsageAggregator {
5
+ /**
6
+ * Aggregate a list of session metrics into time-period buckets.
7
+ *
8
+ * @param sessions - Session metrics to aggregate
9
+ * @param granularity - Time period granularity
10
+ * @param topPeerCount - Number of top peers to include (default: 5)
11
+ * @returns Array of UsageAggregate, one per period that has data
12
+ */
13
+ aggregate(sessions, granularity, topPeerCount = 5) {
14
+ if (sessions.length === 0)
15
+ return [];
16
+ // Group sessions by period
17
+ const buckets = new Map();
18
+ for (const session of sessions) {
19
+ const period = this.getPeriod(session.startedAt, granularity);
20
+ const key = `${period.start}`;
21
+ const bucket = buckets.get(key);
22
+ if (bucket) {
23
+ bucket.push(session);
24
+ }
25
+ else {
26
+ buckets.set(key, [session]);
27
+ }
28
+ }
29
+ // Build aggregates
30
+ const aggregates = [];
31
+ for (const [_key, bucketSessions] of buckets) {
32
+ const period = this.getPeriod(bucketSessions[0].startedAt, granularity);
33
+ aggregates.push(this.buildAggregate(bucketSessions, period, granularity, topPeerCount));
34
+ }
35
+ // Sort by period start
36
+ aggregates.sort((a, b) => a.periodStart - b.periodStart);
37
+ return aggregates;
38
+ }
39
+ /**
40
+ * Get the time period that a timestamp falls into.
41
+ */
42
+ getPeriod(timestamp, granularity) {
43
+ const date = new Date(timestamp);
44
+ switch (granularity) {
45
+ case 'daily': {
46
+ const start = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
47
+ const end = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() + 1));
48
+ return { start: start.getTime(), end: end.getTime() };
49
+ }
50
+ case 'weekly': {
51
+ // Monday 00:00 UTC to next Monday 00:00 UTC
52
+ const dayOfWeek = date.getUTCDay();
53
+ // getUTCDay() returns 0 for Sunday, 1 for Monday, etc.
54
+ // We want Monday as the start, so offset: Monday=0, Tue=1, ..., Sun=6
55
+ const daysFromMonday = dayOfWeek === 0 ? 6 : dayOfWeek - 1;
56
+ const monday = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() - daysFromMonday));
57
+ const nextMonday = new Date(monday.getTime() + 7 * 24 * 60 * 60 * 1000);
58
+ return { start: monday.getTime(), end: nextMonday.getTime() };
59
+ }
60
+ case 'monthly': {
61
+ const start = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), 1));
62
+ const end = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth() + 1, 1));
63
+ return { start: start.getTime(), end: end.getTime() };
64
+ }
65
+ }
66
+ }
67
+ /**
68
+ * Get aggregates for a specific date range.
69
+ *
70
+ * @param sessions - All available session metrics
71
+ * @param startDate - Start of range (ms since epoch)
72
+ * @param endDate - End of range (ms since epoch)
73
+ * @param granularity - Bucket granularity
74
+ * @param topPeerCount - Number of top peers to include (default: 5)
75
+ */
76
+ aggregateRange(sessions, startDate, endDate, granularity, topPeerCount = 5) {
77
+ const filtered = sessions.filter((s) => s.startedAt >= startDate && s.startedAt < endDate);
78
+ return this.aggregate(filtered, granularity, topPeerCount);
79
+ }
80
+ /**
81
+ * Get a single aggregate for all-time usage.
82
+ */
83
+ aggregateAll(sessions) {
84
+ if (sessions.length === 0) {
85
+ return {
86
+ periodStart: 0,
87
+ periodEnd: 0,
88
+ granularity: 'monthly',
89
+ totalSessions: 0,
90
+ totalRequests: 0,
91
+ totalTokens: 0,
92
+ totalCostCents: 0,
93
+ byProvider: {},
94
+ topPeers: [],
95
+ };
96
+ }
97
+ let minStart = Infinity;
98
+ let maxEnd = -Infinity;
99
+ for (const s of sessions) {
100
+ if (s.startedAt < minStart)
101
+ minStart = s.startedAt;
102
+ const end = s.endedAt ?? s.startedAt;
103
+ if (end > maxEnd)
104
+ maxEnd = end;
105
+ }
106
+ return this.buildAggregate(sessions, { start: minStart, end: maxEnd }, 'monthly', sessions.length // Include all peers in all-time view
107
+ );
108
+ }
109
+ /**
110
+ * Build a single UsageAggregate from a list of sessions.
111
+ */
112
+ buildAggregate(sessions, period, granularity, topPeerCount) {
113
+ const byProvider = {};
114
+ const peerMap = new Map();
115
+ let totalRequests = 0;
116
+ let totalTokens = 0;
117
+ let totalCostCents = 0;
118
+ for (const session of sessions) {
119
+ totalRequests += session.totalRequests;
120
+ totalTokens += session.totalTokens;
121
+ totalCostCents += session.totalCostCents;
122
+ // Provider breakdown
123
+ const providerEntry = byProvider[session.provider];
124
+ if (providerEntry) {
125
+ providerEntry.requests += session.totalRequests;
126
+ providerEntry.tokens += session.totalTokens;
127
+ providerEntry.costCents += session.totalCostCents;
128
+ }
129
+ else {
130
+ byProvider[session.provider] = {
131
+ requests: session.totalRequests,
132
+ tokens: session.totalTokens,
133
+ costCents: session.totalCostCents,
134
+ };
135
+ }
136
+ // Peer breakdown (use sellerPeerId as the peer identifier)
137
+ const peerId = session.sellerPeerId;
138
+ const peerEntry = peerMap.get(peerId);
139
+ if (peerEntry) {
140
+ peerEntry.requests += session.totalRequests;
141
+ peerEntry.tokens += session.totalTokens;
142
+ peerEntry.costCents += session.totalCostCents;
143
+ }
144
+ else {
145
+ peerMap.set(peerId, {
146
+ requests: session.totalRequests,
147
+ tokens: session.totalTokens,
148
+ costCents: session.totalCostCents,
149
+ });
150
+ }
151
+ }
152
+ // Sort peers by costCents descending, take top N
153
+ const topPeers = Array.from(peerMap.entries())
154
+ .map(([peerId, data]) => ({ peerId, ...data }))
155
+ .sort((a, b) => b.costCents - a.costCents)
156
+ .slice(0, topPeerCount);
157
+ return {
158
+ periodStart: period.start,
159
+ periodEnd: period.end,
160
+ granularity,
161
+ totalSessions: sessions.length,
162
+ totalRequests,
163
+ totalTokens,
164
+ totalCostCents,
165
+ byProvider,
166
+ topPeers,
167
+ };
168
+ }
169
+ }
170
+ //# sourceMappingURL=usage-aggregator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-aggregator.js","sourceRoot":"","sources":["../../src/metering/usage-aggregator.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B;;;;;;;OAOG;IACH,SAAS,CACP,QAA0B,EAC1B,WAAmC,EACnC,eAAuB,CAAC;QAExB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAErC,2BAA2B;QAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;QAEpD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,MAAM,UAAU,GAAqB,EAAE,CAAC;QAExC,KAAK,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,OAAO,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACzE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;QAC1F,CAAC;QAED,uBAAuB;QACvB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;QAEzD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,SAAiB,EAAE,WAAmC;QAC9D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAEjC,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAC7B,IAAI,CAAC,cAAc,EAAE,EACrB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,UAAU,EAAE,CAClB,CAAC,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAC3B,IAAI,CAAC,cAAc,EAAE,EACrB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CACtB,CAAC,CAAC;gBACH,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACxD,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,4CAA4C;gBAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnC,uDAAuD;gBACvD,sEAAsE;gBACtE,MAAM,cAAc,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;gBAC3D,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAC9B,IAAI,CAAC,cAAc,EAAE,EACrB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,UAAU,EAAE,GAAG,cAAc,CACnC,CAAC,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;gBACxE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YAChE,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAC7B,IAAI,CAAC,cAAc,EAAE,EACrB,IAAI,CAAC,WAAW,EAAE,EAClB,CAAC,CACF,CAAC,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAC3B,IAAI,CAAC,cAAc,EAAE,EACrB,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EACtB,CAAC,CACF,CAAC,CAAC;gBACH,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,cAAc,CACZ,QAA0B,EAC1B,SAAiB,EACjB,OAAe,EACf,WAAmC,EACnC,eAAuB,CAAC;QAExB,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,IAAI,CAAC,CAAC,SAAS,GAAG,OAAO,CACzD,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,QAA0B;QACrC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,WAAW,EAAE,CAAC;gBACd,SAAS,EAAE,CAAC;gBACZ,WAAW,EAAE,SAAS;gBACtB,aAAa,EAAE,CAAC;gBAChB,aAAa,EAAE,CAAC;gBAChB,WAAW,EAAE,CAAC;gBACd,cAAc,EAAE,CAAC;gBACjB,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,EAAE;aACb,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,GAAG,QAAQ,CAAC;QACxB,IAAI,MAAM,GAAG,CAAC,QAAQ,CAAC;QAEvB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,CAAC,SAAS,GAAG,QAAQ;gBAAE,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC;YACnD,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,CAAC;YACrC,IAAI,GAAG,GAAG,MAAM;gBAAE,MAAM,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CACxB,QAAQ,EACR,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,EAChC,SAAS,EACT,QAAQ,CAAC,MAAM,CAAC,qCAAqC;SACtD,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,cAAc,CACpB,QAA0B,EAC1B,MAAkB,EAClB,WAAmC,EACnC,YAAoB;QAEpB,MAAM,UAAU,GAAkF,EAAE,CAAC;QACrG,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmE,CAAC;QAE3F,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC;YACvC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;YACnC,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC;YAEzC,qBAAqB;YACrB,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,aAAa,EAAE,CAAC;gBAClB,aAAa,CAAC,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;gBAChD,aAAa,CAAC,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;gBAC5C,aAAa,CAAC,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG;oBAC7B,QAAQ,EAAE,OAAO,CAAC,aAAa;oBAC/B,MAAM,EAAE,OAAO,CAAC,WAAW;oBAC3B,SAAS,EAAE,OAAO,CAAC,cAAc;iBAClC,CAAC;YACJ,CAAC;YAED,2DAA2D;YAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YACpC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;gBAC5C,SAAS,CAAC,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;gBACxC,SAAS,CAAC,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;oBAClB,QAAQ,EAAE,OAAO,CAAC,aAAa;oBAC/B,MAAM,EAAE,OAAO,CAAC,WAAW;oBAC3B,SAAS,EAAE,OAAO,CAAC,cAAc;iBAClC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;aAC3C,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;aAC9C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;aACzC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QAE1B,OAAO;YACL,WAAW,EAAE,MAAM,CAAC,KAAK;YACzB,SAAS,EAAE,MAAM,CAAC,GAAG;YACrB,WAAW;YACX,aAAa,EAAE,QAAQ,CAAC,MAAM;YAC9B,aAAa;YACb,WAAW;YACX,cAAc;YACd,UAAU;YACV,QAAQ;SACT,CAAC;IACJ,CAAC;CACF"}
package/dist/node.d.ts ADDED
@@ -0,0 +1,179 @@
1
+ import { EventEmitter } from "node:events";
2
+ import type { Identity } from "./p2p/identity.js";
3
+ import type { PeerInfo } from "./types/peer.js";
4
+ import type { SerializedHttpRequest, SerializedHttpResponse } from "./types/http.js";
5
+ import type { Provider, TaskRequest, TaskEvent, SkillRequest, SkillResponse } from "./interfaces/seller-provider.js";
6
+ import type { Router } from "./interfaces/buyer-router.js";
7
+ import { type PaymentConfig, type PaymentMethod } from "./payments/index.js";
8
+ import { BuyerPaymentManager, type BuyerPaymentConfig } from "./payments/buyer-payment-manager.js";
9
+ export type { Provider, TaskRequest, TaskEvent, SkillRequest, SkillResponse };
10
+ export type { Router };
11
+ export type { BuyerPaymentConfig };
12
+ export interface NodePaymentsConfig {
13
+ /** Enable seller-side payment channels and automatic settlement. */
14
+ enabled?: boolean;
15
+ /** Payment method used for settlement. Default: "crypto" */
16
+ paymentMethod?: PaymentMethod;
17
+ /** Platform fee rate in [0,1]. Default: 0.05 */
18
+ platformFeeRate?: number;
19
+ /** Idle time before a session is finalized and settled. Default: 30000ms */
20
+ settlementIdleMs?: number;
21
+ /** Default escrow amount in USDC units. Default: "1" */
22
+ defaultEscrowAmountUSDC?: string;
23
+ /** Optional seller wallet address for auto-funded escrow deposit. */
24
+ sellerWalletAddress?: string;
25
+ /** Settlement backend configuration (crypto). */
26
+ paymentConfig?: PaymentConfig | null;
27
+ /** Base JSON-RPC URL (e.g. http://127.0.0.1:8545 for anvil) */
28
+ rpcUrl?: string;
29
+ /** Deployed AntseedEscrow contract address */
30
+ contractAddress?: string;
31
+ /** USDC token contract address */
32
+ usdcAddress?: string;
33
+ }
34
+ export interface NodeConfig {
35
+ role: 'seller' | 'buyer';
36
+ dataDir?: string;
37
+ dhtPort?: number;
38
+ signalingPort?: number;
39
+ bootstrapNodes?: Array<{
40
+ host: string;
41
+ port: number;
42
+ }>;
43
+ requestTimeoutMs?: number;
44
+ /** Allow private/loopback IPs in DHT lookups. Default: false. Set true for local testing. */
45
+ allowPrivateIPs?: boolean;
46
+ /** Optional seller-side payment runtime wiring. */
47
+ payments?: NodePaymentsConfig;
48
+ }
49
+ export interface SellerSessionSnapshot {
50
+ sessionId: string;
51
+ buyerPeerId: string;
52
+ provider: string;
53
+ startedAt: number;
54
+ lastActivityAt: number;
55
+ totalRequests: number;
56
+ totalTokens: number;
57
+ avgLatencyMs: number;
58
+ settling: boolean;
59
+ lockCommitted: boolean;
60
+ lockedAmountUSDC: string;
61
+ runningTotalUSDC: string;
62
+ ackedRequestCount: number;
63
+ }
64
+ export declare class AntseedNode extends EventEmitter {
65
+ private _config;
66
+ private _identity;
67
+ private _dht;
68
+ private _connectionManager;
69
+ private _providers;
70
+ private _router;
71
+ private _started;
72
+ private _announcer;
73
+ private _peerLookup;
74
+ private _muxes;
75
+ private _decoders;
76
+ private _nat;
77
+ private _metering;
78
+ private _receiptGenerator;
79
+ private _balanceManager;
80
+ private _escrowClient;
81
+ private _paymentMuxes;
82
+ /** Per-buyer session tracking: buyerPeerId → seller session state */
83
+ private _sessions;
84
+ private _settlementTimers;
85
+ /** Buyer-side payment manager (initialized when buyer has payment config). */
86
+ private _buyerPaymentManager;
87
+ /** Tracks which seller peers the buyer has already initiated a lock for. */
88
+ private _buyerLockedPeers;
89
+ constructor(config: NodeConfig);
90
+ get peerId(): string | null;
91
+ get identity(): Identity | null;
92
+ registerProvider(provider: Provider): void;
93
+ setRouter(router: Router): void;
94
+ get router(): Router | null;
95
+ /** Buyer-side payment manager (null if payments not enabled or not in buyer mode). */
96
+ get buyerPaymentManager(): BuyerPaymentManager | null;
97
+ /** Actual DHT port after binding (0 means not started). */
98
+ get dhtPort(): number;
99
+ /** Actual signaling/connection port after binding (0 means not started). */
100
+ get signalingPort(): number;
101
+ /**
102
+ * Active seller sessions currently tracked in-memory.
103
+ * Includes open sessions before they are finalized/settled.
104
+ */
105
+ getActiveSellerSessions(): SellerSessionSnapshot[];
106
+ /** Number of active in-memory seller sessions that are not currently settling. */
107
+ getActiveSellerSessionCount(): number;
108
+ start(): Promise<void>;
109
+ stop(): Promise<void>;
110
+ discoverPeers(model?: string): Promise<PeerInfo[]>;
111
+ sendRequest(peer: PeerInfo, req: SerializedHttpRequest): Promise<SerializedHttpResponse>;
112
+ sendTask(peer: PeerInfo, task: TaskRequest): AsyncIterable<TaskEvent>;
113
+ sendSkill(peer: PeerInfo, skill: SkillRequest): Promise<SkillResponse>;
114
+ private _createDHTConfig;
115
+ private _wireConnection;
116
+ private _startSeller;
117
+ private _startBuyer;
118
+ private _handleIncomingConnection;
119
+ private _executeProviderRequest;
120
+ private _parseJsonBody;
121
+ private _extractRequestedModel;
122
+ private _resolveProviderPricing;
123
+ private _getOrCreateSellerSession;
124
+ private _emitSellerSessionUpdated;
125
+ /** Estimate tokens from byte lengths (rough: ~4 chars per token). */
126
+ private _estimateTokens;
127
+ private _recordMetering;
128
+ private _initializePayments;
129
+ private _scheduleSettlementTimer;
130
+ private _finalizeSession;
131
+ private _finalizeAllSessions;
132
+ private _getOrCreateConnection;
133
+ private _getOrCreateMux;
134
+ /**
135
+ * Handle SessionLockAuth from buyer (Task 2).
136
+ * Recovers buyer address, commits lock on-chain, initializes bilateral state.
137
+ */
138
+ private _handleSessionLockAuth;
139
+ /**
140
+ * Generate and send a bilateral receipt after processing a request (Task 3).
141
+ */
142
+ private _sendBilateralReceipt;
143
+ /**
144
+ * Handle BuyerAck (Task 4).
145
+ * Verifies buyer's Ed25519 ack signature and updates session state.
146
+ */
147
+ private _handleBuyerAck;
148
+ /**
149
+ * Handle SessionEnd from buyer (Task 5).
150
+ * Submits settlement on-chain and cleans up.
151
+ */
152
+ private _handleSessionEnd;
153
+ /**
154
+ * Handle TopUpAuth from buyer (Task 6).
155
+ * Calls extendLock on-chain and updates session.
156
+ */
157
+ private _handleTopUpAuth;
158
+ /**
159
+ * Create a PaymentMux for a buyer-side outbound connection and register
160
+ * buyer-side handlers (lock confirm, lock reject, seller receipt, top-up request).
161
+ */
162
+ private _getOrCreateBuyerPaymentMux;
163
+ /**
164
+ * Initiate a lock with a seller peer. Creates PaymentMux, signs lock auth,
165
+ * and waits for confirmation before returning.
166
+ */
167
+ private _initiateBuyerLock;
168
+ /**
169
+ * Poll until the lock for a seller is confirmed or rejected.
170
+ * Polls every 200ms with a 30-second timeout.
171
+ */
172
+ private _waitForLockConfirmation;
173
+ /**
174
+ * End all active buyer payment sessions (called during shutdown).
175
+ */
176
+ private _endAllBuyerSessions;
177
+ private _lookupResultToPeerInfo;
178
+ }
179
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}