envoy-pay 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 (364) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/LICENSE +200 -0
  3. package/README.md +529 -0
  4. package/dist/cjs/adapters/base.js +174 -0
  5. package/dist/cjs/adapters/base.js.map +1 -0
  6. package/dist/cjs/adapters/evm.js +339 -0
  7. package/dist/cjs/adapters/evm.js.map +1 -0
  8. package/dist/cjs/adapters/index.js +15 -0
  9. package/dist/cjs/adapters/index.js.map +1 -0
  10. package/dist/cjs/adapters/ows.js +204 -0
  11. package/dist/cjs/adapters/ows.js.map +1 -0
  12. package/dist/cjs/adapters/solana.js +210 -0
  13. package/dist/cjs/adapters/solana.js.map +1 -0
  14. package/dist/cjs/adapters/stellar.js +173 -0
  15. package/dist/cjs/adapters/stellar.js.map +1 -0
  16. package/dist/cjs/adapters/stripe.js +338 -0
  17. package/dist/cjs/adapters/stripe.js.map +1 -0
  18. package/dist/cjs/adapters/types.js +3 -0
  19. package/dist/cjs/adapters/types.js.map +1 -0
  20. package/dist/cjs/client.js +309 -0
  21. package/dist/cjs/client.js.map +1 -0
  22. package/dist/cjs/contracts/abis/EnvoyFacilitator.js +197 -0
  23. package/dist/cjs/contracts/abis/EnvoyFacilitator.js.map +1 -0
  24. package/dist/cjs/contracts/addresses.js +42 -0
  25. package/dist/cjs/contracts/addresses.js.map +1 -0
  26. package/dist/cjs/contracts/facilitator.js +225 -0
  27. package/dist/cjs/contracts/facilitator.js.map +1 -0
  28. package/dist/cjs/contracts/index.js +21 -0
  29. package/dist/cjs/contracts/index.js.map +1 -0
  30. package/dist/cjs/facilitator/facilitator-service.js +305 -0
  31. package/dist/cjs/facilitator/facilitator-service.js.map +1 -0
  32. package/dist/cjs/facilitator/fee-calculator.js +134 -0
  33. package/dist/cjs/facilitator/fee-calculator.js.map +1 -0
  34. package/dist/cjs/facilitator/index.js +12 -0
  35. package/dist/cjs/facilitator/index.js.map +1 -0
  36. package/dist/cjs/facilitator/types.js +99 -0
  37. package/dist/cjs/facilitator/types.js.map +1 -0
  38. package/dist/cjs/identity/agent-card.js +143 -0
  39. package/dist/cjs/identity/agent-card.js.map +1 -0
  40. package/dist/cjs/identity/agent-identity.js +166 -0
  41. package/dist/cjs/identity/agent-identity.js.map +1 -0
  42. package/dist/cjs/identity/did-resolver.js +149 -0
  43. package/dist/cjs/identity/did-resolver.js.map +1 -0
  44. package/dist/cjs/identity/erc8004/abis.js +218 -0
  45. package/dist/cjs/identity/erc8004/abis.js.map +1 -0
  46. package/dist/cjs/identity/erc8004/identity.js +268 -0
  47. package/dist/cjs/identity/erc8004/identity.js.map +1 -0
  48. package/dist/cjs/identity/erc8004/index.js +36 -0
  49. package/dist/cjs/identity/erc8004/index.js.map +1 -0
  50. package/dist/cjs/identity/erc8004/reputation.js +110 -0
  51. package/dist/cjs/identity/erc8004/reputation.js.map +1 -0
  52. package/dist/cjs/identity/erc8004/types.js +3 -0
  53. package/dist/cjs/identity/erc8004/types.js.map +1 -0
  54. package/dist/cjs/identity/index.js +61 -0
  55. package/dist/cjs/identity/index.js.map +1 -0
  56. package/dist/cjs/identity/owner-registry.js +140 -0
  57. package/dist/cjs/identity/owner-registry.js.map +1 -0
  58. package/dist/cjs/identity/reputation.js +193 -0
  59. package/dist/cjs/identity/reputation.js.map +1 -0
  60. package/dist/cjs/identity/types.js +16 -0
  61. package/dist/cjs/identity/types.js.map +1 -0
  62. package/dist/cjs/index.js +72 -0
  63. package/dist/cjs/index.js.map +1 -0
  64. package/dist/cjs/logger.js +7 -0
  65. package/dist/cjs/logger.js.map +1 -0
  66. package/dist/cjs/monitor/evm-watcher.js +165 -0
  67. package/dist/cjs/monitor/evm-watcher.js.map +1 -0
  68. package/dist/cjs/monitor/index.js +32 -0
  69. package/dist/cjs/monitor/index.js.map +1 -0
  70. package/dist/cjs/monitor/multi-watcher.js +94 -0
  71. package/dist/cjs/monitor/multi-watcher.js.map +1 -0
  72. package/dist/cjs/monitor/solana-watcher.js +172 -0
  73. package/dist/cjs/monitor/solana-watcher.js.map +1 -0
  74. package/dist/cjs/monitor/stellar-watcher.js +125 -0
  75. package/dist/cjs/monitor/stellar-watcher.js.map +1 -0
  76. package/dist/cjs/mpp.js +187 -0
  77. package/dist/cjs/mpp.js.map +1 -0
  78. package/dist/cjs/policy.js +71 -0
  79. package/dist/cjs/policy.js.map +1 -0
  80. package/dist/cjs/providers/bridge.js +323 -0
  81. package/dist/cjs/providers/bridge.js.map +1 -0
  82. package/dist/cjs/providers/onchainos.js +210 -0
  83. package/dist/cjs/providers/onchainos.js.map +1 -0
  84. package/dist/cjs/requests/eip681.js +77 -0
  85. package/dist/cjs/requests/eip681.js.map +1 -0
  86. package/dist/cjs/requests/index.js +18 -0
  87. package/dist/cjs/requests/index.js.map +1 -0
  88. package/dist/cjs/requests/sep7.js +61 -0
  89. package/dist/cjs/requests/sep7.js.map +1 -0
  90. package/dist/cjs/requests/solana-pay.js +51 -0
  91. package/dist/cjs/requests/solana-pay.js.map +1 -0
  92. package/dist/cjs/requests/universal.js +40 -0
  93. package/dist/cjs/requests/universal.js.map +1 -0
  94. package/dist/cjs/server/index.js +35 -0
  95. package/dist/cjs/server/index.js.map +1 -0
  96. package/dist/cjs/server/mpp-gate.js +118 -0
  97. package/dist/cjs/server/mpp-gate.js.map +1 -0
  98. package/dist/cjs/server/payment-gate.js +92 -0
  99. package/dist/cjs/server/payment-gate.js.map +1 -0
  100. package/dist/cjs/server/receipt.js +52 -0
  101. package/dist/cjs/server/receipt.js.map +1 -0
  102. package/dist/cjs/server/webhook.js +122 -0
  103. package/dist/cjs/server/webhook.js.map +1 -0
  104. package/dist/cjs/server/x402-gate.js +103 -0
  105. package/dist/cjs/server/x402-gate.js.map +1 -0
  106. package/dist/cjs/solana.js +14 -0
  107. package/dist/cjs/solana.js.map +1 -0
  108. package/dist/cjs/stellar.js +14 -0
  109. package/dist/cjs/stellar.js.map +1 -0
  110. package/dist/cjs/wallet/balance-aggregator.js +149 -0
  111. package/dist/cjs/wallet/balance-aggregator.js.map +1 -0
  112. package/dist/cjs/wallet/chain-router.js +254 -0
  113. package/dist/cjs/wallet/chain-router.js.map +1 -0
  114. package/dist/cjs/wallet/index.js +15 -0
  115. package/dist/cjs/wallet/index.js.map +1 -0
  116. package/dist/cjs/wallet/intent-resolver.js +145 -0
  117. package/dist/cjs/wallet/intent-resolver.js.map +1 -0
  118. package/dist/cjs/wallet/session-manager.js +170 -0
  119. package/dist/cjs/wallet/session-manager.js.map +1 -0
  120. package/dist/cjs/wallet/types.js +14 -0
  121. package/dist/cjs/wallet/types.js.map +1 -0
  122. package/dist/cjs/wallet/unified-wallet.js +253 -0
  123. package/dist/cjs/wallet/unified-wallet.js.map +1 -0
  124. package/dist/esm/adapters/base.js +170 -0
  125. package/dist/esm/adapters/base.js.map +1 -0
  126. package/dist/esm/adapters/evm.js +334 -0
  127. package/dist/esm/adapters/evm.js.map +1 -0
  128. package/dist/esm/adapters/index.js +6 -0
  129. package/dist/esm/adapters/index.js.map +1 -0
  130. package/dist/esm/adapters/ows.js +194 -0
  131. package/dist/esm/adapters/ows.js.map +1 -0
  132. package/dist/esm/adapters/solana.js +206 -0
  133. package/dist/esm/adapters/solana.js.map +1 -0
  134. package/dist/esm/adapters/stellar.js +136 -0
  135. package/dist/esm/adapters/stellar.js.map +1 -0
  136. package/dist/esm/adapters/stripe.js +334 -0
  137. package/dist/esm/adapters/stripe.js.map +1 -0
  138. package/dist/esm/adapters/types.js +2 -0
  139. package/dist/esm/adapters/types.js.map +1 -0
  140. package/dist/esm/client.js +302 -0
  141. package/dist/esm/client.js.map +1 -0
  142. package/dist/esm/contracts/abis/EnvoyFacilitator.js +194 -0
  143. package/dist/esm/contracts/abis/EnvoyFacilitator.js.map +1 -0
  144. package/dist/esm/contracts/addresses.js +38 -0
  145. package/dist/esm/contracts/addresses.js.map +1 -0
  146. package/dist/esm/contracts/facilitator.js +218 -0
  147. package/dist/esm/contracts/facilitator.js.map +1 -0
  148. package/dist/esm/contracts/index.js +8 -0
  149. package/dist/esm/contracts/index.js.map +1 -0
  150. package/dist/esm/facilitator/facilitator-service.js +301 -0
  151. package/dist/esm/facilitator/facilitator-service.js.map +1 -0
  152. package/dist/esm/facilitator/fee-calculator.js +130 -0
  153. package/dist/esm/facilitator/fee-calculator.js.map +1 -0
  154. package/dist/esm/facilitator/index.js +5 -0
  155. package/dist/esm/facilitator/index.js.map +1 -0
  156. package/dist/esm/facilitator/types.js +96 -0
  157. package/dist/esm/facilitator/types.js.map +1 -0
  158. package/dist/esm/identity/agent-card.js +139 -0
  159. package/dist/esm/identity/agent-card.js.map +1 -0
  160. package/dist/esm/identity/agent-identity.js +162 -0
  161. package/dist/esm/identity/agent-identity.js.map +1 -0
  162. package/dist/esm/identity/did-resolver.js +145 -0
  163. package/dist/esm/identity/did-resolver.js.map +1 -0
  164. package/dist/esm/identity/erc8004/abis.js +215 -0
  165. package/dist/esm/identity/erc8004/abis.js.map +1 -0
  166. package/dist/esm/identity/erc8004/identity.js +250 -0
  167. package/dist/esm/identity/erc8004/identity.js.map +1 -0
  168. package/dist/esm/identity/erc8004/index.js +13 -0
  169. package/dist/esm/identity/erc8004/index.js.map +1 -0
  170. package/dist/esm/identity/erc8004/reputation.js +105 -0
  171. package/dist/esm/identity/erc8004/reputation.js.map +1 -0
  172. package/dist/esm/identity/erc8004/types.js +2 -0
  173. package/dist/esm/identity/erc8004/types.js.map +1 -0
  174. package/dist/esm/identity/index.js +19 -0
  175. package/dist/esm/identity/index.js.map +1 -0
  176. package/dist/esm/identity/owner-registry.js +136 -0
  177. package/dist/esm/identity/owner-registry.js.map +1 -0
  178. package/dist/esm/identity/reputation.js +189 -0
  179. package/dist/esm/identity/reputation.js.map +1 -0
  180. package/dist/esm/identity/types.js +15 -0
  181. package/dist/esm/identity/types.js.map +1 -0
  182. package/dist/esm/index.js +37 -0
  183. package/dist/esm/index.js.map +1 -0
  184. package/dist/esm/logger.js +3 -0
  185. package/dist/esm/logger.js.map +1 -0
  186. package/dist/esm/monitor/evm-watcher.js +162 -0
  187. package/dist/esm/monitor/evm-watcher.js.map +1 -0
  188. package/dist/esm/monitor/index.js +25 -0
  189. package/dist/esm/monitor/index.js.map +1 -0
  190. package/dist/esm/monitor/multi-watcher.js +91 -0
  191. package/dist/esm/monitor/multi-watcher.js.map +1 -0
  192. package/dist/esm/monitor/solana-watcher.js +169 -0
  193. package/dist/esm/monitor/solana-watcher.js.map +1 -0
  194. package/dist/esm/monitor/stellar-watcher.js +122 -0
  195. package/dist/esm/monitor/stellar-watcher.js.map +1 -0
  196. package/dist/esm/mpp.js +175 -0
  197. package/dist/esm/mpp.js.map +1 -0
  198. package/dist/esm/policy.js +67 -0
  199. package/dist/esm/policy.js.map +1 -0
  200. package/dist/esm/providers/bridge.js +319 -0
  201. package/dist/esm/providers/bridge.js.map +1 -0
  202. package/dist/esm/providers/onchainos.js +172 -0
  203. package/dist/esm/providers/onchainos.js.map +1 -0
  204. package/dist/esm/requests/eip681.js +74 -0
  205. package/dist/esm/requests/eip681.js.map +1 -0
  206. package/dist/esm/requests/index.js +11 -0
  207. package/dist/esm/requests/index.js.map +1 -0
  208. package/dist/esm/requests/sep7.js +58 -0
  209. package/dist/esm/requests/sep7.js.map +1 -0
  210. package/dist/esm/requests/solana-pay.js +48 -0
  211. package/dist/esm/requests/solana-pay.js.map +1 -0
  212. package/dist/esm/requests/universal.js +37 -0
  213. package/dist/esm/requests/universal.js.map +1 -0
  214. package/dist/esm/server/index.js +27 -0
  215. package/dist/esm/server/index.js.map +1 -0
  216. package/dist/esm/server/mpp-gate.js +115 -0
  217. package/dist/esm/server/mpp-gate.js.map +1 -0
  218. package/dist/esm/server/payment-gate.js +89 -0
  219. package/dist/esm/server/payment-gate.js.map +1 -0
  220. package/dist/esm/server/receipt.js +48 -0
  221. package/dist/esm/server/receipt.js.map +1 -0
  222. package/dist/esm/server/webhook.js +119 -0
  223. package/dist/esm/server/webhook.js.map +1 -0
  224. package/dist/esm/server/x402-gate.js +100 -0
  225. package/dist/esm/server/x402-gate.js.map +1 -0
  226. package/dist/esm/solana.js +8 -0
  227. package/dist/esm/solana.js.map +1 -0
  228. package/dist/esm/stellar.js +8 -0
  229. package/dist/esm/stellar.js.map +1 -0
  230. package/dist/esm/wallet/balance-aggregator.js +145 -0
  231. package/dist/esm/wallet/balance-aggregator.js.map +1 -0
  232. package/dist/esm/wallet/chain-router.js +250 -0
  233. package/dist/esm/wallet/chain-router.js.map +1 -0
  234. package/dist/esm/wallet/index.js +7 -0
  235. package/dist/esm/wallet/index.js.map +1 -0
  236. package/dist/esm/wallet/intent-resolver.js +141 -0
  237. package/dist/esm/wallet/intent-resolver.js.map +1 -0
  238. package/dist/esm/wallet/session-manager.js +166 -0
  239. package/dist/esm/wallet/session-manager.js.map +1 -0
  240. package/dist/esm/wallet/types.js +13 -0
  241. package/dist/esm/wallet/types.js.map +1 -0
  242. package/dist/esm/wallet/unified-wallet.js +249 -0
  243. package/dist/esm/wallet/unified-wallet.js.map +1 -0
  244. package/dist/types/adapters/base.d.ts +53 -0
  245. package/dist/types/adapters/base.d.ts.map +1 -0
  246. package/dist/types/adapters/evm.d.ts +93 -0
  247. package/dist/types/adapters/evm.d.ts.map +1 -0
  248. package/dist/types/adapters/index.d.ts +7 -0
  249. package/dist/types/adapters/index.d.ts.map +1 -0
  250. package/dist/types/adapters/ows.d.ts +123 -0
  251. package/dist/types/adapters/ows.d.ts.map +1 -0
  252. package/dist/types/adapters/solana.d.ts +77 -0
  253. package/dist/types/adapters/solana.d.ts.map +1 -0
  254. package/dist/types/adapters/stellar.d.ts +67 -0
  255. package/dist/types/adapters/stellar.d.ts.map +1 -0
  256. package/dist/types/adapters/stripe.d.ts +206 -0
  257. package/dist/types/adapters/stripe.d.ts.map +1 -0
  258. package/dist/types/adapters/types.d.ts +110 -0
  259. package/dist/types/adapters/types.d.ts.map +1 -0
  260. package/dist/types/client.d.ts +89 -0
  261. package/dist/types/client.d.ts.map +1 -0
  262. package/dist/types/contracts/abis/EnvoyFacilitator.d.ts +296 -0
  263. package/dist/types/contracts/abis/EnvoyFacilitator.d.ts.map +1 -0
  264. package/dist/types/contracts/addresses.d.ts +24 -0
  265. package/dist/types/contracts/addresses.d.ts.map +1 -0
  266. package/dist/types/contracts/facilitator.d.ts +172 -0
  267. package/dist/types/contracts/facilitator.d.ts.map +1 -0
  268. package/dist/types/contracts/index.d.ts +6 -0
  269. package/dist/types/contracts/index.d.ts.map +1 -0
  270. package/dist/types/facilitator/facilitator-service.d.ts +69 -0
  271. package/dist/types/facilitator/facilitator-service.d.ts.map +1 -0
  272. package/dist/types/facilitator/fee-calculator.d.ts +48 -0
  273. package/dist/types/facilitator/fee-calculator.d.ts.map +1 -0
  274. package/dist/types/facilitator/index.d.ts +5 -0
  275. package/dist/types/facilitator/index.d.ts.map +1 -0
  276. package/dist/types/facilitator/types.d.ts +221 -0
  277. package/dist/types/facilitator/types.d.ts.map +1 -0
  278. package/dist/types/identity/agent-card.d.ts +83 -0
  279. package/dist/types/identity/agent-card.d.ts.map +1 -0
  280. package/dist/types/identity/agent-identity.d.ts +102 -0
  281. package/dist/types/identity/agent-identity.d.ts.map +1 -0
  282. package/dist/types/identity/did-resolver.d.ts +70 -0
  283. package/dist/types/identity/did-resolver.d.ts.map +1 -0
  284. package/dist/types/identity/erc8004/abis.d.ts +336 -0
  285. package/dist/types/identity/erc8004/abis.d.ts.map +1 -0
  286. package/dist/types/identity/erc8004/identity.d.ts +109 -0
  287. package/dist/types/identity/erc8004/identity.d.ts.map +1 -0
  288. package/dist/types/identity/erc8004/index.d.ts +15 -0
  289. package/dist/types/identity/erc8004/index.d.ts.map +1 -0
  290. package/dist/types/identity/erc8004/reputation.d.ts +52 -0
  291. package/dist/types/identity/erc8004/reputation.d.ts.map +1 -0
  292. package/dist/types/identity/erc8004/types.d.ts +31 -0
  293. package/dist/types/identity/erc8004/types.d.ts.map +1 -0
  294. package/dist/types/identity/index.d.ts +10 -0
  295. package/dist/types/identity/index.d.ts.map +1 -0
  296. package/dist/types/identity/owner-registry.d.ts +68 -0
  297. package/dist/types/identity/owner-registry.d.ts.map +1 -0
  298. package/dist/types/identity/reputation.d.ts +66 -0
  299. package/dist/types/identity/reputation.d.ts.map +1 -0
  300. package/dist/types/identity/types.d.ts +182 -0
  301. package/dist/types/identity/types.d.ts.map +1 -0
  302. package/dist/types/index.d.ts +17 -0
  303. package/dist/types/index.d.ts.map +1 -0
  304. package/dist/types/logger.d.ts +10 -0
  305. package/dist/types/logger.d.ts.map +1 -0
  306. package/dist/types/monitor/evm-watcher.d.ts +40 -0
  307. package/dist/types/monitor/evm-watcher.d.ts.map +1 -0
  308. package/dist/types/monitor/index.d.ts +25 -0
  309. package/dist/types/monitor/index.d.ts.map +1 -0
  310. package/dist/types/monitor/multi-watcher.d.ts +48 -0
  311. package/dist/types/monitor/multi-watcher.d.ts.map +1 -0
  312. package/dist/types/monitor/solana-watcher.d.ts +36 -0
  313. package/dist/types/monitor/solana-watcher.d.ts.map +1 -0
  314. package/dist/types/monitor/stellar-watcher.d.ts +34 -0
  315. package/dist/types/monitor/stellar-watcher.d.ts.map +1 -0
  316. package/dist/types/mpp.d.ts +153 -0
  317. package/dist/types/mpp.d.ts.map +1 -0
  318. package/dist/types/policy.d.ts +40 -0
  319. package/dist/types/policy.d.ts.map +1 -0
  320. package/dist/types/providers/bridge.d.ts +162 -0
  321. package/dist/types/providers/bridge.d.ts.map +1 -0
  322. package/dist/types/providers/onchainos.d.ts +128 -0
  323. package/dist/types/providers/onchainos.d.ts.map +1 -0
  324. package/dist/types/requests/eip681.d.ts +51 -0
  325. package/dist/types/requests/eip681.d.ts.map +1 -0
  326. package/dist/types/requests/index.d.ts +11 -0
  327. package/dist/types/requests/index.d.ts.map +1 -0
  328. package/dist/types/requests/sep7.d.ts +56 -0
  329. package/dist/types/requests/sep7.d.ts.map +1 -0
  330. package/dist/types/requests/solana-pay.d.ts +50 -0
  331. package/dist/types/requests/solana-pay.d.ts.map +1 -0
  332. package/dist/types/requests/universal.d.ts +28 -0
  333. package/dist/types/requests/universal.d.ts.map +1 -0
  334. package/dist/types/server/index.d.ts +27 -0
  335. package/dist/types/server/index.d.ts.map +1 -0
  336. package/dist/types/server/mpp-gate.d.ts +66 -0
  337. package/dist/types/server/mpp-gate.d.ts.map +1 -0
  338. package/dist/types/server/payment-gate.d.ts +33 -0
  339. package/dist/types/server/payment-gate.d.ts.map +1 -0
  340. package/dist/types/server/receipt.d.ts +52 -0
  341. package/dist/types/server/receipt.d.ts.map +1 -0
  342. package/dist/types/server/webhook.d.ts +46 -0
  343. package/dist/types/server/webhook.d.ts.map +1 -0
  344. package/dist/types/server/x402-gate.d.ts +70 -0
  345. package/dist/types/server/x402-gate.d.ts.map +1 -0
  346. package/dist/types/solana.d.ts +7 -0
  347. package/dist/types/solana.d.ts.map +1 -0
  348. package/dist/types/stellar.d.ts +7 -0
  349. package/dist/types/stellar.d.ts.map +1 -0
  350. package/dist/types/wallet/balance-aggregator.d.ts +51 -0
  351. package/dist/types/wallet/balance-aggregator.d.ts.map +1 -0
  352. package/dist/types/wallet/chain-router.d.ts +44 -0
  353. package/dist/types/wallet/chain-router.d.ts.map +1 -0
  354. package/dist/types/wallet/index.d.ts +7 -0
  355. package/dist/types/wallet/index.d.ts.map +1 -0
  356. package/dist/types/wallet/intent-resolver.d.ts +39 -0
  357. package/dist/types/wallet/intent-resolver.d.ts.map +1 -0
  358. package/dist/types/wallet/session-manager.d.ts +57 -0
  359. package/dist/types/wallet/session-manager.d.ts.map +1 -0
  360. package/dist/types/wallet/types.d.ts +161 -0
  361. package/dist/types/wallet/types.d.ts.map +1 -0
  362. package/dist/types/wallet/unified-wallet.d.ts +122 -0
  363. package/dist/types/wallet/unified-wallet.d.ts.map +1 -0
  364. package/package.json +194 -0
@@ -0,0 +1,136 @@
1
+ /**
2
+ * OwnerRegistry — Agent ↔ Owner binding with delegation levels.
3
+ *
4
+ * Implements the Validation Registry concept from ERC-8004,
5
+ * linking AI agents to their human/organizational owners with
6
+ * configurable delegation levels.
7
+ *
8
+ * Delegation levels:
9
+ * - `full` — Agent has full autonomy
10
+ * - `supervised` — Owner receives notifications
11
+ * - `restricted` — Owner must approve large transactions
12
+ * - `readonly` — Agent can only read, not transact
13
+ *
14
+ * @see ERC-8004 — Validation Registry
15
+ */
16
+ export class OwnerRegistry {
17
+ /** In-memory registry (production: on-chain smart contract). */
18
+ records = new Map();
19
+ /** Reverse index: owner → agents. */
20
+ ownerIndex = new Map();
21
+ /**
22
+ * Register an agent-owner binding.
23
+ */
24
+ register(agentDid, ownerAddress, delegationLevel = 'supervised', metadata) {
25
+ if (!agentDid || !ownerAddress) {
26
+ throw new Error('Agent DID and owner address are required');
27
+ }
28
+ const record = {
29
+ agentDid,
30
+ ownerAddress,
31
+ since: new Date(),
32
+ delegationLevel,
33
+ metadata,
34
+ };
35
+ this.records.set(agentDid, record);
36
+ // Update reverse index
37
+ if (!this.ownerIndex.has(ownerAddress)) {
38
+ this.ownerIndex.set(ownerAddress, new Set());
39
+ }
40
+ this.ownerIndex.get(ownerAddress).add(agentDid);
41
+ return record;
42
+ }
43
+ /**
44
+ * Get the owner record for an agent.
45
+ */
46
+ getOwner(agentDid) {
47
+ return this.records.get(agentDid) ?? null;
48
+ }
49
+ /**
50
+ * Get all agents owned by a specific address.
51
+ */
52
+ getAgentsByOwner(ownerAddress) {
53
+ const agentDids = this.ownerIndex.get(ownerAddress);
54
+ if (!agentDids)
55
+ return [];
56
+ return Array.from(agentDids)
57
+ .map((did) => this.records.get(did))
58
+ .filter((r) => r !== undefined);
59
+ }
60
+ /**
61
+ * Check if an address owns a specific agent.
62
+ */
63
+ isOwner(agentDid, ownerAddress) {
64
+ const record = this.records.get(agentDid);
65
+ return record?.ownerAddress === ownerAddress;
66
+ }
67
+ /**
68
+ * Get the delegation level for an agent.
69
+ */
70
+ getDelegationLevel(agentDid) {
71
+ const record = this.records.get(agentDid);
72
+ return record?.delegationLevel ?? null;
73
+ }
74
+ /**
75
+ * Update the delegation level for an agent.
76
+ * Only the current owner can do this (enforcement is caller's responsibility).
77
+ */
78
+ setDelegationLevel(agentDid, level) {
79
+ const record = this.records.get(agentDid);
80
+ if (!record)
81
+ return false;
82
+ record.delegationLevel = level;
83
+ return true;
84
+ }
85
+ /**
86
+ * Transfer ownership of an agent to a new address.
87
+ */
88
+ transferOwnership(agentDid, newOwnerAddress) {
89
+ const record = this.records.get(agentDid);
90
+ if (!record)
91
+ return false;
92
+ const oldOwner = record.ownerAddress;
93
+ // Update reverse index
94
+ this.ownerIndex.get(oldOwner)?.delete(agentDid);
95
+ if (!this.ownerIndex.has(newOwnerAddress)) {
96
+ this.ownerIndex.set(newOwnerAddress, new Set());
97
+ }
98
+ this.ownerIndex.get(newOwnerAddress).add(agentDid);
99
+ // Update record
100
+ record.ownerAddress = newOwnerAddress;
101
+ record.since = new Date();
102
+ return true;
103
+ }
104
+ /**
105
+ * Remove an agent from the registry.
106
+ */
107
+ unregister(agentDid) {
108
+ const record = this.records.get(agentDid);
109
+ if (!record)
110
+ return false;
111
+ this.ownerIndex.get(record.ownerAddress)?.delete(agentDid);
112
+ this.records.delete(agentDid);
113
+ return true;
114
+ }
115
+ /**
116
+ * Check if an agent is allowed to perform an action based on delegation.
117
+ */
118
+ canTransact(agentDid) {
119
+ const level = this.getDelegationLevel(agentDid);
120
+ return level !== null && level !== 'readonly';
121
+ }
122
+ /**
123
+ * Check if an action requires owner approval.
124
+ */
125
+ requiresApproval(agentDid) {
126
+ const level = this.getDelegationLevel(agentDid);
127
+ return level === 'restricted';
128
+ }
129
+ /**
130
+ * Get the total number of registered agents.
131
+ */
132
+ getAgentCount() {
133
+ return this.records.size;
134
+ }
135
+ }
136
+ //# sourceMappingURL=owner-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-registry.js","sourceRoot":"","sources":["../../../src/identity/owner-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,OAAO,aAAa;IACxB,gEAAgE;IACxD,OAAO,GAA6B,IAAI,GAAG,EAAE,CAAC;IACtD,qCAAqC;IAC7B,UAAU,GAA6B,IAAI,GAAG,EAAE,CAAC;IAEzD;;OAEG;IACH,QAAQ,CACN,QAAkB,EAClB,YAAoB,EACpB,kBAAmC,YAAY,EAC/C,QAAiC;QAEjC,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,MAAM,GAAgB;YAC1B,QAAQ;YACR,YAAY;YACZ,KAAK,EAAE,IAAI,IAAI,EAAE;YACjB,eAAe;YACf,QAAQ;SACT,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEnC,uBAAuB;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEjD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,QAAkB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,YAAoB;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAE1B,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;aACzB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,QAAkB,EAAE,YAAoB;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,MAAM,EAAE,YAAY,KAAK,YAAY,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,QAAkB;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,MAAM,EAAE,eAAe,IAAI,IAAI,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,QAAkB,EAAE,KAAsB;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE1B,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,QAAkB,EAAE,eAAuB;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE1B,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC;QAErC,uBAAuB;QACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEpD,gBAAgB;QAChB,MAAM,CAAC,YAAY,GAAG,eAAe,CAAC;QACtC,MAAM,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QAE1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,QAAkB;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAkB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,UAAU,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,QAAkB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,KAAK,KAAK,YAAY,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Reputation — EAS-compatible reputation scoring for AI agents.
3
+ *
4
+ * Implements the Reputation Registry concept from ERC-8004, using
5
+ * an EAS-compatible schema for creating, storing, and querying
6
+ * reputation attestations.
7
+ *
8
+ * Features:
9
+ * - Create/revoke attestations
10
+ * - Aggregate scores by category
11
+ * - Compute overall trust score
12
+ * - Track payment reliability, task quality, uptime, etc.
13
+ *
14
+ * @see ERC-8004 — Reputation Registry
15
+ * @see https://attest.org — Ethereum Attestation Service
16
+ */
17
+ /**
18
+ * Weights for each reputation category in the overall score.
19
+ */
20
+ const CATEGORY_WEIGHTS = {
21
+ 'payment-reliability': 0.30,
22
+ 'task-quality': 0.25,
23
+ 'response-time': 0.15,
24
+ 'uptime': 0.15,
25
+ 'security': 0.10,
26
+ 'general': 0.05,
27
+ };
28
+ /**
29
+ * Generate a unique attestation ID.
30
+ */
31
+ function generateAttestationId() {
32
+ const ts = Date.now().toString(36);
33
+ const rand = Math.random().toString(36).substring(2, 10);
34
+ return `att_${ts}_${rand}`;
35
+ }
36
+ export class Reputation {
37
+ /** In-memory attestation store (production: EAS on-chain or IPFS). */
38
+ attestations = new Map();
39
+ /**
40
+ * Create a reputation attestation for an agent.
41
+ *
42
+ * @param attesterAddress - Who is creating the attestation
43
+ * @param options - Attestation details
44
+ * @returns The created attestation
45
+ */
46
+ attest(attesterAddress, options) {
47
+ if (options.score < 0 || options.score > 100) {
48
+ throw new Error('Score must be between 0 and 100');
49
+ }
50
+ const attestation = {
51
+ id: generateAttestationId(),
52
+ attester: attesterAddress,
53
+ subject: options.subject,
54
+ score: options.score,
55
+ category: options.category,
56
+ comment: options.comment,
57
+ timestamp: new Date(),
58
+ expiresAt: options.validFor
59
+ ? new Date(Date.now() + options.validFor)
60
+ : undefined,
61
+ isValid: true,
62
+ };
63
+ const existing = this.attestations.get(options.subject) ?? [];
64
+ existing.push(attestation);
65
+ this.attestations.set(options.subject, existing);
66
+ return attestation;
67
+ }
68
+ /**
69
+ * Revoke an attestation by ID.
70
+ */
71
+ revoke(subject, attestationId) {
72
+ const attestations = this.attestations.get(subject);
73
+ if (!attestations)
74
+ return false;
75
+ const att = attestations.find((a) => a.id === attestationId);
76
+ if (!att)
77
+ return false;
78
+ att.isValid = false;
79
+ return true;
80
+ }
81
+ /**
82
+ * Get the full reputation profile for an agent.
83
+ */
84
+ getProfile(agentDid) {
85
+ const attestations = this.getValidAttestations(agentDid);
86
+ if (attestations.length === 0) {
87
+ return {
88
+ agentDid,
89
+ overallScore: 0,
90
+ totalAttestations: 0,
91
+ successRate: 0,
92
+ totalTransactions: 0,
93
+ categoryScores: {},
94
+ recentAttestations: [],
95
+ lastUpdated: new Date(),
96
+ };
97
+ }
98
+ // Calculate category scores
99
+ const categoryScores = this.calculateCategoryScores(attestations);
100
+ // Calculate weighted overall score
101
+ const overallScore = this.calculateOverallScore(categoryScores);
102
+ // Calculate success rate (score >= 70 is "success")
103
+ const successCount = attestations.filter((a) => a.score >= 70).length;
104
+ const successRate = successCount / attestations.length;
105
+ return {
106
+ agentDid,
107
+ overallScore: Math.round(overallScore),
108
+ totalAttestations: attestations.length,
109
+ successRate: Math.round(successRate * 100) / 100,
110
+ totalTransactions: attestations.filter((a) => a.category === 'payment-reliability').length,
111
+ categoryScores,
112
+ recentAttestations: attestations.slice(-10),
113
+ lastUpdated: new Date(),
114
+ };
115
+ }
116
+ /**
117
+ * Get the overall score for an agent (0-100).
118
+ */
119
+ getScore(agentDid) {
120
+ return this.getProfile(agentDid).overallScore;
121
+ }
122
+ /**
123
+ * Check if an agent meets a minimum trust threshold.
124
+ */
125
+ meetsThreshold(agentDid, minScore) {
126
+ return this.getScore(agentDid) >= minScore;
127
+ }
128
+ /**
129
+ * Get all valid (non-expired, non-revoked) attestations for an agent.
130
+ */
131
+ getValidAttestations(subject) {
132
+ const all = this.attestations.get(subject) ?? [];
133
+ const now = Date.now();
134
+ return all.filter((a) => {
135
+ if (!a.isValid)
136
+ return false;
137
+ if (a.expiresAt && a.expiresAt.getTime() < now)
138
+ return false;
139
+ return true;
140
+ });
141
+ }
142
+ /**
143
+ * Get all attestations (including invalid) for an agent.
144
+ */
145
+ getAllAttestations(subject) {
146
+ return [...(this.attestations.get(subject) ?? [])];
147
+ }
148
+ /**
149
+ * Get the attestation count for an agent.
150
+ */
151
+ getAttestationCount(subject) {
152
+ return this.getValidAttestations(subject).length;
153
+ }
154
+ // ─── Internal ──────────────────────────────────────────────────────
155
+ /**
156
+ * Calculate average scores per category.
157
+ */
158
+ calculateCategoryScores(attestations) {
159
+ const categoryGroups = {};
160
+ for (const att of attestations) {
161
+ if (!categoryGroups[att.category]) {
162
+ categoryGroups[att.category] = [];
163
+ }
164
+ categoryGroups[att.category].push(att.score);
165
+ }
166
+ const result = {};
167
+ for (const [category, scores] of Object.entries(categoryGroups)) {
168
+ const avg = scores.reduce((a, b) => a + b, 0) / scores.length;
169
+ result[category] = Math.round(avg);
170
+ }
171
+ return result;
172
+ }
173
+ /**
174
+ * Calculate weighted overall score from category scores.
175
+ */
176
+ calculateOverallScore(categoryScores) {
177
+ let weightedSum = 0;
178
+ let totalWeight = 0;
179
+ for (const [category, score] of Object.entries(categoryScores)) {
180
+ const weight = CATEGORY_WEIGHTS[category] ?? 0.05;
181
+ weightedSum += score * weight;
182
+ totalWeight += weight;
183
+ }
184
+ if (totalWeight === 0)
185
+ return 0;
186
+ return weightedSum / totalWeight;
187
+ }
188
+ }
189
+ //# sourceMappingURL=reputation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reputation.js","sourceRoot":"","sources":["../../../src/identity/reputation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Identity Layer Types — Agent identity, reputation, and ownership.
3
+ *
4
+ * Implements concepts from:
5
+ * - ERC-8004 "Trustless Agents" (Identity + Reputation + Validation registries)
6
+ * - W3C DID (Decentralized Identifiers)
7
+ * - EAS (Ethereum Attestation Service)
8
+ * - Stellar Protocol 25 (ZK-KYC selective disclosure)
9
+ *
10
+ * @see https://eips.ethereum.org/EIPS/eip-8004
11
+ * @see https://www.w3.org/TR/did-core/
12
+ * @see https://attest.org
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/identity/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -0,0 +1,37 @@
1
+ // envoy — Celo-first agent payment SDK (x402 + MPP)
2
+ // https://github.com/envoy-pay/envoy-pay
3
+ //
4
+ // The default import is the lean Celo core: the agent client, on-chain
5
+ // settlement via the EnvoyFacilitator, ERC-8004 identity, an EVM payment
6
+ // adapter + watcher, and EIP-681 request URIs. Everything else is opt-in via
7
+ // subpath imports, so you only pay for what you use:
8
+ //
9
+ // envoy-pay/server 402 gating middleware (x402 / MPP) + webhooks
10
+ // envoy-pay/wallet unified multi-chain wallet abstraction
11
+ // envoy-pay/ows Open Wallet Standard — local key mgmt + signing
12
+ // envoy-pay/stripe Stripe MPP adapter (fiat + stablecoins)
13
+ // envoy-pay/solana Solana adapter + watcher + Solana Pay URIs
14
+ // envoy-pay/stellar Stellar adapter + watcher + SEP-7 URIs
15
+ // envoy-pay/okx OnchainOS (OKX DEX aggregator)
16
+ // envoy-pay/bridge cross-chain USDC bridge
17
+ // envoy-pay/monitor every chain watcher (incl. multi-chain)
18
+ // envoy-pay/requests every payment-request URI builder
19
+ // envoy-pay/facilitator hosted facilitation service (revenue engine)
20
+ // envoy-pay/contracts on-chain EnvoyFacilitator client (also re-exported here)
21
+ // envoy-pay/identity ERC-8004 + identity primitives (also re-exported here)
22
+ // ── Core ──────────────────────────────────────────────────────────────────
23
+ export { EnvoyClient } from './client.js';
24
+ export { PolicyEngine } from './policy.js';
25
+ // ── Protocol — x402 + MPP ───────────────────────────────────────────────────
26
+ export { parseMppChallenge, parseMppChallenges, decodeChallengeRequest, buildMppCredential, buildAuthorizationHeader, parseMppReceipt, detectProtocol, extractMppChallenges, base64urlEncode, base64urlDecode, } from './mpp.js';
27
+ // ── On-chain x402 adapter — Celo and any EVM chain ──────────────────────────
28
+ export { EvmPaymentAdapter, listEvmChains } from './adapters/evm.js';
29
+ // ── Watch a Celo / EVM address for incoming payments ────────────────────────
30
+ export { createEvmWatcher } from './monitor/evm-watcher.js';
31
+ // ── Payment-request URIs — EIP-681 (Celo / EVM) ─────────────────────────────
32
+ export { buildEip681Uri } from './requests/eip681.js';
33
+ // ── Identity — ERC-8004 (canonical) + off-chain primitives ──────────────────
34
+ export { AgentIdentity, DIDResolver, AgentCard, Reputation, OwnerRegistry, erc8004, } from './identity/index.js';
35
+ // ── Contracts — EnvoyFacilitator on-chain client (Celo) ─────────────────────
36
+ export { ENVOY_CONTRACT_ADDRESSES, getEnvoyAddresses, CELO_MAINNET, CELO_SEPOLIA, createEnvoyFacilitator, signPaymentAuth, paymentAuthDomain, paymentAuthTypedData, PAYMENT_AUTH_TYPES, ENVOY_FACILITATOR_ABI, } from './contracts/index.js';
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,yCAAyC;AACzC,EAAE;AACF,uEAAuE;AACvE,yEAAyE;AACzE,6EAA6E;AAC7E,qDAAqD;AACrD,EAAE;AACF,yEAAyE;AACzE,kEAAkE;AAClE,2EAA2E;AAC3E,mEAAmE;AACnE,sEAAsE;AACtE,kEAAkE;AAClE,0DAA0D;AAC1D,mDAAmD;AACnD,mEAAmE;AACnE,6DAA6D;AAC7D,wEAAwE;AACxE,oFAAoF;AACpF,kFAAkF;AAElF,6EAA6E;AAC7E,OAAO,EAAE,WAAW,EAAsB,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAgB,MAAM,UAAU,CAAC;AAGtD,+EAA+E;AAC/E,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,eAAe,GAChB,MAAM,OAAO,CAAC;AAYf,+EAA+E;AAC/E,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAalE,+EAA+E;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,+EAA+E;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,+EAA+E;AAC/E,OAAO,EACL,aAAa,EACb,WAAW,EACX,SAAS,EACT,UAAU,EACV,aAAa,EACb,OAAO,GACR,MAAM,YAAY,CAAC;AAsBpB,+EAA+E;AAC/E,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** No-op logger — used when no logger is provided. */
2
+ export const noopLogger = () => { };
3
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAQA,sDAAsD;AACtD,MAAM,CAAC,MAAM,UAAU,GAAW,GAAG,EAAE,GAAE,CAAC,CAAC"}
@@ -0,0 +1,162 @@
1
+ import { noopLogger } from '../logger.js';
2
+ /**
3
+ * ERC-20 Transfer event topic hash.
4
+ * keccak256('Transfer(address,address,uint256)')
5
+ */
6
+ const TRANSFER_TOPIC = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
7
+ /**
8
+ * Creates an EVM payment watcher using JSON-RPC polling.
9
+ *
10
+ * Monitors:
11
+ * 1. ERC-20 Transfer events TO the target address (USDC)
12
+ * 2. Native ETH transfers TO the target address (via block scanning)
13
+ *
14
+ * @returns Unsubscribe function to stop watching.
15
+ */
16
+ export function createEvmWatcher(config) {
17
+ const log = config.logger ?? noopLogger;
18
+ const pollInterval = config.pollIntervalMs ?? 12000;
19
+ const chainName = config.chainName ?? 'EVM';
20
+ const chainId = config.chainId ?? 'eip155:1';
21
+ let running = true;
22
+ let lastBlock = 0;
23
+ let timer = null;
24
+ async function rpcCall(method, params) {
25
+ const response = await fetch(config.rpcUrl, {
26
+ method: 'POST',
27
+ headers: { 'Content-Type': 'application/json' },
28
+ body: JSON.stringify({ jsonrpc: '2.0', id: 1, method, params }),
29
+ });
30
+ const json = await response.json();
31
+ if (json.error)
32
+ throw new Error(`RPC error: ${json.error.message}`);
33
+ return json.result;
34
+ }
35
+ async function getLatestBlock() {
36
+ const hex = await rpcCall('eth_blockNumber', []);
37
+ return parseInt(hex, 16);
38
+ }
39
+ async function getErc20Transfers(fromBlock, toBlock) {
40
+ if (!config.usdcContractAddress)
41
+ return [];
42
+ const paddedAddress = '0x' + config.address.slice(2).toLowerCase().padStart(64, '0');
43
+ const logs = await rpcCall('eth_getLogs', [{
44
+ fromBlock: '0x' + fromBlock.toString(16),
45
+ toBlock: '0x' + toBlock.toString(16),
46
+ address: config.usdcContractAddress,
47
+ topics: [TRANSFER_TOPIC, null, paddedAddress],
48
+ }]);
49
+ if (!Array.isArray(logs))
50
+ return [];
51
+ return logs.map((logEntry) => {
52
+ const amount = BigInt(logEntry.data).toString();
53
+ const from = '0x' + logEntry.topics[1].slice(26);
54
+ return {
55
+ amount,
56
+ amountFormatted: formatUsdc(amount),
57
+ asset: 'USDC',
58
+ from,
59
+ transactionHash: logEntry.transactionHash,
60
+ chain: chainName,
61
+ caip2Id: chainId,
62
+ timestamp: new Date(),
63
+ confirmations: 1,
64
+ };
65
+ });
66
+ }
67
+ async function getNativeTransfers(fromBlock, toBlock) {
68
+ const payments = [];
69
+ const targetLower = config.address.toLowerCase();
70
+ for (let blockNum = fromBlock; blockNum <= toBlock; blockNum++) {
71
+ try {
72
+ const block = await rpcCall('eth_getBlockByNumber', ['0x' + blockNum.toString(16), true]);
73
+ if (!block?.transactions)
74
+ continue;
75
+ for (const tx of block.transactions) {
76
+ if (tx.to?.toLowerCase() === targetLower &&
77
+ tx.value && tx.value !== '0x0' && tx.value !== '0x') {
78
+ const amount = BigInt(tx.value).toString();
79
+ payments.push({
80
+ amount,
81
+ amountFormatted: formatEth(amount),
82
+ asset: 'ETH',
83
+ from: tx.from,
84
+ transactionHash: tx.hash,
85
+ chain: chainName,
86
+ caip2Id: chainId,
87
+ timestamp: new Date(parseInt(block.timestamp, 16) * 1000),
88
+ confirmations: 1,
89
+ });
90
+ }
91
+ }
92
+ }
93
+ catch (err) {
94
+ log(`[evm-watcher] ⚠️ Error scanning block ${blockNum}: ${err.message}`);
95
+ }
96
+ }
97
+ return payments;
98
+ }
99
+ async function poll() {
100
+ if (!running)
101
+ return;
102
+ try {
103
+ const currentBlock = await getLatestBlock();
104
+ if (lastBlock === 0) {
105
+ lastBlock = currentBlock;
106
+ log(`[evm-watcher] 🔍 Started watching from block ${currentBlock} on ${chainName}`);
107
+ schedulePoll();
108
+ return;
109
+ }
110
+ if (currentBlock <= lastBlock) {
111
+ schedulePoll();
112
+ return;
113
+ }
114
+ const fromBlock = lastBlock + 1;
115
+ const toBlock = currentBlock;
116
+ log(`[evm-watcher] 📦 Scanning blocks ${fromBlock}–${toBlock} on ${chainName}`);
117
+ // Scan for ERC-20 and native transfers in parallel
118
+ const [erc20Payments, nativePayments] = await Promise.all([
119
+ getErc20Transfers(fromBlock, toBlock),
120
+ getNativeTransfers(fromBlock, toBlock),
121
+ ]);
122
+ const allPayments = [...erc20Payments, ...nativePayments];
123
+ for (const payment of allPayments) {
124
+ log(`[evm-watcher] 💰 Incoming: ${payment.amountFormatted} ${payment.asset} from ${payment.from.slice(0, 10)}…`);
125
+ config.onPayment(payment);
126
+ }
127
+ lastBlock = toBlock;
128
+ }
129
+ catch (err) {
130
+ log(`[evm-watcher] ❌ Poll error: ${err.message}`);
131
+ config.onError?.(err);
132
+ }
133
+ schedulePoll();
134
+ }
135
+ function schedulePoll() {
136
+ if (running && pollInterval > 0) {
137
+ timer = setTimeout(poll, pollInterval);
138
+ }
139
+ }
140
+ // Start polling
141
+ poll();
142
+ // Return unsubscribe function
143
+ return () => {
144
+ running = false;
145
+ if (timer)
146
+ clearTimeout(timer);
147
+ log(`[evm-watcher] 🛑 Stopped watching on ${chainName}`);
148
+ };
149
+ }
150
+ function formatUsdc(atomicAmount) {
151
+ const n = BigInt(atomicAmount);
152
+ const whole = n / 1000000n;
153
+ const frac = (n % 1000000n).toString().padStart(6, '0');
154
+ return `${whole}.${frac}`;
155
+ }
156
+ function formatEth(weiAmount) {
157
+ const n = BigInt(weiAmount);
158
+ const whole = n / 10n ** 18n;
159
+ const frac = ((n % 10n ** 18n) / 10n ** 12n).toString().padStart(6, '0');
160
+ return `${whole}.${frac}`;
161
+ }
162
+ //# sourceMappingURL=evm-watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evm-watcher.js","sourceRoot":"","sources":["../../../src/monitor/evm-watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * envoy — Real-Time Payment Monitoring
3
+ *
4
+ * Chain-specific watchers that detect incoming payments
5
+ * and invoke callbacks in real-time.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { createEvmWatcher, createStellarWatcher } from 'envoy-pay/monitor';
10
+ *
11
+ * const unsub = createEvmWatcher({
12
+ * address: '0xYOUR_WALLET',
13
+ * rpcUrl: 'https://mainnet.base.org',
14
+ * onPayment: (event) => console.log('Received:', event),
15
+ * });
16
+ *
17
+ * // Stop watching
18
+ * unsub();
19
+ * ```
20
+ */
21
+ export { createEvmWatcher } from './evm-watcher.js';
22
+ export { createStellarWatcher } from './stellar-watcher.js';
23
+ export { createSolanaWatcher } from './solana-watcher.js';
24
+ export { createMultiChainWatcher } from './multi-watcher.js';
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/monitor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,gBAAgB,EAAyB,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAA6B,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAA4B,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAgC,MAAM,iBAAiB,CAAC"}