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,215 @@
1
+ /**
2
+ * Minimal ABI fragments for the canonical ERC-8004 contracts on Celo.
3
+ *
4
+ * Sourced from the upstream Solidity at:
5
+ * https://github.com/erc-8004/erc-8004-contracts/blob/main/contracts/
6
+ *
7
+ * We deliberately do NOT vendor the full ABI — only the function and event
8
+ * signatures the SDK touches. If you need a method that's not here, add it
9
+ * (it's an additive change) rather than swapping in the full upstream ABI.
10
+ *
11
+ * Marked `as const` so viem can infer return types from the ABI shape.
12
+ */
13
+ export const ERC8004_IDENTITY_ABI = [
14
+ // ---- writes ----
15
+ {
16
+ type: 'function',
17
+ name: 'register',
18
+ stateMutability: 'nonpayable',
19
+ inputs: [],
20
+ outputs: [{ name: 'agentId', type: 'uint256' }],
21
+ },
22
+ {
23
+ type: 'function',
24
+ name: 'register',
25
+ stateMutability: 'nonpayable',
26
+ inputs: [{ name: 'agentURI', type: 'string' }],
27
+ outputs: [{ name: 'agentId', type: 'uint256' }],
28
+ },
29
+ {
30
+ type: 'function',
31
+ name: 'register',
32
+ stateMutability: 'nonpayable',
33
+ inputs: [
34
+ { name: 'agentURI', type: 'string' },
35
+ {
36
+ name: 'metadata',
37
+ type: 'tuple[]',
38
+ components: [
39
+ { name: 'metadataKey', type: 'string' },
40
+ { name: 'metadataValue', type: 'bytes' },
41
+ ],
42
+ },
43
+ ],
44
+ outputs: [{ name: 'agentId', type: 'uint256' }],
45
+ },
46
+ {
47
+ type: 'function',
48
+ name: 'setAgentURI',
49
+ stateMutability: 'nonpayable',
50
+ inputs: [
51
+ { name: 'agentId', type: 'uint256' },
52
+ { name: 'newURI', type: 'string' },
53
+ ],
54
+ outputs: [],
55
+ },
56
+ {
57
+ type: 'function',
58
+ name: 'setMetadata',
59
+ stateMutability: 'nonpayable',
60
+ inputs: [
61
+ { name: 'agentId', type: 'uint256' },
62
+ { name: 'metadataKey', type: 'string' },
63
+ { name: 'metadataValue', type: 'bytes' },
64
+ ],
65
+ outputs: [],
66
+ },
67
+ {
68
+ type: 'function',
69
+ name: 'setAgentWallet',
70
+ stateMutability: 'nonpayable',
71
+ inputs: [
72
+ { name: 'agentId', type: 'uint256' },
73
+ { name: 'newWallet', type: 'address' },
74
+ { name: 'deadline', type: 'uint256' },
75
+ { name: 'signature', type: 'bytes' },
76
+ ],
77
+ outputs: [],
78
+ },
79
+ {
80
+ type: 'function',
81
+ name: 'unsetAgentWallet',
82
+ stateMutability: 'nonpayable',
83
+ inputs: [{ name: 'agentId', type: 'uint256' }],
84
+ outputs: [],
85
+ },
86
+ // ---- reads ----
87
+ {
88
+ type: 'function',
89
+ name: 'getAgentWallet',
90
+ stateMutability: 'view',
91
+ inputs: [{ name: 'agentId', type: 'uint256' }],
92
+ outputs: [{ name: '', type: 'address' }],
93
+ },
94
+ {
95
+ type: 'function',
96
+ name: 'getMetadata',
97
+ stateMutability: 'view',
98
+ inputs: [
99
+ { name: 'agentId', type: 'uint256' },
100
+ { name: 'metadataKey', type: 'string' },
101
+ ],
102
+ outputs: [{ name: '', type: 'bytes' }],
103
+ },
104
+ {
105
+ type: 'function',
106
+ name: 'isAuthorizedOrOwner',
107
+ stateMutability: 'view',
108
+ inputs: [
109
+ { name: 'spender', type: 'address' },
110
+ { name: 'agentId', type: 'uint256' },
111
+ ],
112
+ outputs: [{ name: '', type: 'bool' }],
113
+ },
114
+ // ---- ERC-721 surface we use ----
115
+ {
116
+ type: 'function',
117
+ name: 'ownerOf',
118
+ stateMutability: 'view',
119
+ inputs: [{ name: 'tokenId', type: 'uint256' }],
120
+ outputs: [{ name: '', type: 'address' }],
121
+ },
122
+ {
123
+ type: 'function',
124
+ name: 'tokenURI',
125
+ stateMutability: 'view',
126
+ inputs: [{ name: 'tokenId', type: 'uint256' }],
127
+ outputs: [{ name: '', type: 'string' }],
128
+ },
129
+ // ---- events ----
130
+ {
131
+ type: 'event',
132
+ name: 'Registered',
133
+ inputs: [
134
+ { name: 'agentId', type: 'uint256', indexed: true },
135
+ { name: 'agentURI', type: 'string', indexed: false },
136
+ { name: 'owner', type: 'address', indexed: true },
137
+ ],
138
+ },
139
+ {
140
+ type: 'event',
141
+ name: 'URIUpdated',
142
+ inputs: [
143
+ { name: 'agentId', type: 'uint256', indexed: true },
144
+ { name: 'newURI', type: 'string', indexed: false },
145
+ { name: 'updatedBy', type: 'address', indexed: true },
146
+ ],
147
+ },
148
+ {
149
+ type: 'event',
150
+ name: 'MetadataSet',
151
+ inputs: [
152
+ { name: 'agentId', type: 'uint256', indexed: true },
153
+ { name: 'indexedMetadataKey', type: 'string', indexed: true },
154
+ { name: 'metadataKey', type: 'string', indexed: false },
155
+ { name: 'metadataValue', type: 'bytes', indexed: false },
156
+ ],
157
+ },
158
+ ];
159
+ export const ERC8004_REPUTATION_ABI = [
160
+ // ---- writes ----
161
+ {
162
+ type: 'function',
163
+ name: 'giveFeedback',
164
+ stateMutability: 'nonpayable',
165
+ inputs: [
166
+ { name: 'agentId', type: 'uint256' },
167
+ { name: 'value', type: 'int128' },
168
+ { name: 'valueDecimals', type: 'uint8' },
169
+ { name: 'tag1', type: 'string' },
170
+ { name: 'tag2', type: 'string' },
171
+ { name: 'endpoint', type: 'string' },
172
+ { name: 'feedbackURI', type: 'string' },
173
+ { name: 'feedbackHash', type: 'bytes32' },
174
+ ],
175
+ outputs: [],
176
+ },
177
+ {
178
+ type: 'function',
179
+ name: 'revokeFeedback',
180
+ stateMutability: 'nonpayable',
181
+ inputs: [
182
+ { name: 'agentId', type: 'uint256' },
183
+ { name: 'feedbackIndex', type: 'uint64' },
184
+ ],
185
+ outputs: [],
186
+ },
187
+ // ---- events ----
188
+ {
189
+ type: 'event',
190
+ name: 'NewFeedback',
191
+ inputs: [
192
+ { name: 'agentId', type: 'uint256', indexed: true },
193
+ { name: 'clientAddress', type: 'address', indexed: true },
194
+ { name: 'feedbackIndex', type: 'uint64', indexed: false },
195
+ { name: 'value', type: 'int128', indexed: false },
196
+ { name: 'valueDecimals', type: 'uint8', indexed: false },
197
+ { name: 'indexedTag1', type: 'string', indexed: true },
198
+ { name: 'tag1', type: 'string', indexed: false },
199
+ { name: 'tag2', type: 'string', indexed: false },
200
+ { name: 'endpoint', type: 'string', indexed: false },
201
+ { name: 'feedbackURI', type: 'string', indexed: false },
202
+ { name: 'feedbackHash', type: 'bytes32', indexed: false },
203
+ ],
204
+ },
205
+ {
206
+ type: 'event',
207
+ name: 'FeedbackRevoked',
208
+ inputs: [
209
+ { name: 'agentId', type: 'uint256', indexed: true },
210
+ { name: 'clientAddress', type: 'address', indexed: true },
211
+ { name: 'feedbackIndex', type: 'uint64', indexed: true },
212
+ ],
213
+ },
214
+ ];
215
+ //# sourceMappingURL=abis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abis.js","sourceRoot":"","sources":["../../../../src/identity/erc8004/abis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,250 @@
1
+ /**
2
+ * Helpers around the canonical Celo ERC-8004 Identity Registry.
3
+ *
4
+ * The Identity Registry is the source of truth for who an agent is:
5
+ *
6
+ * - Registration mints an ERC-721 NFT to `msg.sender`. The tokenId is the
7
+ * agentId we use everywhere else.
8
+ * - `getAgentWallet(agentId)` returns the address authorized to *sign on the
9
+ * agent's behalf* — separate from `ownerOf(agentId)` which holds the NFT.
10
+ * - On NFT transfer the canonical contract clears `agentWallet`, so the new
11
+ * holder must re-register their signing wallet (via `setAgentWallet`).
12
+ *
13
+ * All helpers take a viem `Client` and the canonical Identity Registry
14
+ * `address` for the chain you're targeting. Pull the address from
15
+ * `getEnvoyAddresses(chainId).identityRegistry`.
16
+ */
17
+ import { decodeEventLog, encodePacked, getAddress, hexToBytes, keccak256, stringToHex, toHex, } from 'viem';
18
+ import { ERC8004_IDENTITY_ABI } from './abis.js';
19
+ /**
20
+ * Register a new agent on the canonical Identity Registry. The caller's address
21
+ * becomes the NFT owner AND the initial `agentWallet`. Returns the minted
22
+ * `agentId` (parsed from the `Registered` event in the receipt).
23
+ *
24
+ * Three overloads are exposed on the contract; this helper picks the one whose
25
+ * input shape matches the arguments you pass (no URI / URI only / URI + metadata).
26
+ */
27
+ export async function registerAgent(walletClient, publicClient, registryAddress, args = {}) {
28
+ const account = walletClient.account;
29
+ if (!account)
30
+ throw new Error('registerAgent: walletClient has no account configured');
31
+ let txHash;
32
+ if (args.metadata && args.metadata.length > 0) {
33
+ txHash = await walletClient.writeContract({
34
+ address: registryAddress,
35
+ abi: ERC8004_IDENTITY_ABI,
36
+ functionName: 'register',
37
+ args: [
38
+ args.agentURI ?? '',
39
+ args.metadata.map((m) => ({ metadataKey: m.key, metadataValue: m.value })),
40
+ ],
41
+ account,
42
+ chain: walletClient.chain,
43
+ });
44
+ }
45
+ else if (args.agentURI !== undefined) {
46
+ txHash = await walletClient.writeContract({
47
+ address: registryAddress,
48
+ abi: ERC8004_IDENTITY_ABI,
49
+ functionName: 'register',
50
+ args: [args.agentURI],
51
+ account,
52
+ chain: walletClient.chain,
53
+ });
54
+ }
55
+ else {
56
+ txHash = await walletClient.writeContract({
57
+ address: registryAddress,
58
+ abi: ERC8004_IDENTITY_ABI,
59
+ functionName: 'register',
60
+ args: [],
61
+ account,
62
+ chain: walletClient.chain,
63
+ });
64
+ }
65
+ const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
66
+ for (const log of receipt.logs) {
67
+ if (getAddress(log.address) !== getAddress(registryAddress))
68
+ continue;
69
+ try {
70
+ const decoded = decodeEventLog({
71
+ abi: ERC8004_IDENTITY_ABI,
72
+ data: log.data,
73
+ topics: log.topics,
74
+ });
75
+ if (decoded.eventName === 'Registered') {
76
+ return { agentId: decoded.args.agentId, txHash };
77
+ }
78
+ }
79
+ catch {
80
+ // Not the event we wanted — keep scanning.
81
+ }
82
+ }
83
+ throw new Error(`registerAgent: no Registered event found in receipt ${txHash}; ` +
84
+ 'the transaction succeeded but the agentId could not be parsed.');
85
+ }
86
+ /**
87
+ * Rotate the agent's operational signing wallet. The new wallet (or its owner, in
88
+ * the ERC-1271 case) must produce a signature over the EIP-712 `AgentWalletSet`
89
+ * struct: `(uint256 agentId, address newWallet, address owner, uint256 deadline)`.
90
+ *
91
+ * The canonical contract verifies both ECDSA (EOA / 7702) and ERC-1271 paths.
92
+ * Build the signature off-chain with `signAgentWalletRotation` below.
93
+ */
94
+ export async function setAgentWallet(walletClient, registryAddress, args) {
95
+ const account = walletClient.account;
96
+ if (!account)
97
+ throw new Error('setAgentWallet: walletClient has no account configured');
98
+ return walletClient.writeContract({
99
+ address: registryAddress,
100
+ abi: ERC8004_IDENTITY_ABI,
101
+ functionName: 'setAgentWallet',
102
+ args: [args.agentId, args.newWallet, args.deadline, args.signature],
103
+ account,
104
+ chain: walletClient.chain,
105
+ });
106
+ }
107
+ /** Clear the agent's operational signing wallet. Effectively pauses on-chain payments. */
108
+ export async function unsetAgentWallet(walletClient, registryAddress, agentId) {
109
+ const account = walletClient.account;
110
+ if (!account)
111
+ throw new Error('unsetAgentWallet: walletClient has no account configured');
112
+ return walletClient.writeContract({
113
+ address: registryAddress,
114
+ abi: ERC8004_IDENTITY_ABI,
115
+ functionName: 'unsetAgentWallet',
116
+ args: [agentId],
117
+ account,
118
+ chain: walletClient.chain,
119
+ });
120
+ }
121
+ /** Update the agent's URI (e.g. when the agent card moves IPFS gateways). */
122
+ export async function setAgentURI(walletClient, registryAddress, agentId, newURI) {
123
+ const account = walletClient.account;
124
+ if (!account)
125
+ throw new Error('setAgentURI: walletClient has no account configured');
126
+ return walletClient.writeContract({
127
+ address: registryAddress,
128
+ abi: ERC8004_IDENTITY_ABI,
129
+ functionName: 'setAgentURI',
130
+ args: [agentId, newURI],
131
+ account,
132
+ chain: walletClient.chain,
133
+ });
134
+ }
135
+ /** Set a single metadata key/value pair. Reserved key `"agentWallet"` is rejected on-chain. */
136
+ export async function setMetadata(walletClient, registryAddress, agentId, key, value) {
137
+ const account = walletClient.account;
138
+ if (!account)
139
+ throw new Error('setMetadata: walletClient has no account configured');
140
+ return walletClient.writeContract({
141
+ address: registryAddress,
142
+ abi: ERC8004_IDENTITY_ABI,
143
+ functionName: 'setMetadata',
144
+ args: [agentId, key, value],
145
+ account,
146
+ chain: walletClient.chain,
147
+ });
148
+ }
149
+ // ---------------------------------------------------------------------------
150
+ // Reads
151
+ // ---------------------------------------------------------------------------
152
+ export async function getAgentWallet(publicClient, registryAddress, agentId) {
153
+ return publicClient.readContract({
154
+ address: registryAddress,
155
+ abi: ERC8004_IDENTITY_ABI,
156
+ functionName: 'getAgentWallet',
157
+ args: [agentId],
158
+ });
159
+ }
160
+ export async function getAgentOwner(publicClient, registryAddress, agentId) {
161
+ return publicClient.readContract({
162
+ address: registryAddress,
163
+ abi: ERC8004_IDENTITY_ABI,
164
+ functionName: 'ownerOf',
165
+ args: [agentId],
166
+ });
167
+ }
168
+ export async function getAgentURI(publicClient, registryAddress, agentId) {
169
+ return publicClient.readContract({
170
+ address: registryAddress,
171
+ abi: ERC8004_IDENTITY_ABI,
172
+ functionName: 'tokenURI',
173
+ args: [agentId],
174
+ });
175
+ }
176
+ export async function getMetadata(publicClient, registryAddress, agentId, key) {
177
+ return publicClient.readContract({
178
+ address: registryAddress,
179
+ abi: ERC8004_IDENTITY_ABI,
180
+ functionName: 'getMetadata',
181
+ args: [agentId, key],
182
+ });
183
+ }
184
+ export async function isAuthorizedOrOwner(publicClient, registryAddress, spender, agentId) {
185
+ return publicClient.readContract({
186
+ address: registryAddress,
187
+ abi: ERC8004_IDENTITY_ABI,
188
+ functionName: 'isAuthorizedOrOwner',
189
+ args: [spender, agentId],
190
+ });
191
+ }
192
+ /** Aggregate read — one round-trip per field. Convenience wrapper. */
193
+ export async function getAgent(publicClient, registryAddress, agentId) {
194
+ const [owner, agentWallet, tokenURI] = await Promise.all([
195
+ getAgentOwner(publicClient, registryAddress, agentId),
196
+ getAgentWallet(publicClient, registryAddress, agentId),
197
+ getAgentURI(publicClient, registryAddress, agentId).catch(() => ''),
198
+ ]);
199
+ return { agentId, owner, agentWallet, tokenURI };
200
+ }
201
+ // ---------------------------------------------------------------------------
202
+ // EIP-712 helpers for setAgentWallet
203
+ // ---------------------------------------------------------------------------
204
+ /**
205
+ * EIP-712 typed-data payload the new wallet must sign before `setAgentWallet`
206
+ * can be called. The canonical contract's domain is
207
+ * `EIP712Domain("ERC8004IdentityRegistry","1",chainId,verifyingContract)`.
208
+ *
209
+ * Pass the result to `walletClient.signTypedData(...)` from the *new* wallet (or
210
+ * its ERC-1271 owner), then pass the signature into `setAgentWallet`.
211
+ */
212
+ export function agentWalletRotationTypedData(args) {
213
+ return {
214
+ domain: {
215
+ name: 'ERC8004IdentityRegistry',
216
+ version: '1',
217
+ chainId: args.chainId,
218
+ verifyingContract: args.registryAddress,
219
+ },
220
+ types: {
221
+ AgentWalletSet: [
222
+ { name: 'agentId', type: 'uint256' },
223
+ { name: 'newWallet', type: 'address' },
224
+ { name: 'owner', type: 'address' },
225
+ { name: 'deadline', type: 'uint256' },
226
+ ],
227
+ },
228
+ primaryType: 'AgentWalletSet',
229
+ message: {
230
+ agentId: args.agentId,
231
+ newWallet: args.newWallet,
232
+ owner: args.owner,
233
+ deadline: args.deadline,
234
+ },
235
+ };
236
+ }
237
+ // ---------------------------------------------------------------------------
238
+ // Encoding helpers
239
+ // ---------------------------------------------------------------------------
240
+ /** Encode a UTF-8 string as a metadata value. Use for `setMetadata(...)`. */
241
+ export const encodeStringMetadata = (s) => stringToHex(s);
242
+ /** Encode raw bytes as a metadata value. */
243
+ export const encodeBytesMetadata = (b) => toHex(b);
244
+ /** Compute the keccak256 hash an agent card URI's contents would have. Useful for `feedbackHash` etc. */
245
+ export function contentHash(bytes) {
246
+ return keccak256(bytes);
247
+ }
248
+ /** Re-export viem encoder so callers don't have to import viem directly for trivial work. */
249
+ export { encodePacked, hexToBytes };
250
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../../src/identity/erc8004/identity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Canonical Celo ERC-8004 helpers — Identity + Reputation registries.
3
+ *
4
+ * These wrap the read/write surface envoy needs from the canonical contracts
5
+ * deployed on Celo (mainnet + Sepolia). All helpers are pure functions taking
6
+ * a viem client; no global state, no hidden singletons.
7
+ *
8
+ * Pull the registry addresses from `getEnvoyAddresses(chainId)`.
9
+ */
10
+ export { registerAgent, setAgentWallet, unsetAgentWallet, setAgentURI, setMetadata, getAgentWallet, getAgentOwner, getAgentURI, getMetadata, isAuthorizedOrOwner, getAgent, agentWalletRotationTypedData, encodeStringMetadata, encodeBytesMetadata, contentHash, } from './identity.js';
11
+ export { giveFeedback, revokeFeedback, makeScoreFeedback } from './reputation.js';
12
+ export { ERC8004_IDENTITY_ABI, ERC8004_REPUTATION_ABI } from './abis.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/identity/erc8004/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,QAAQ,EACR,4BAA4B,EAC5B,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,GACZ,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE/E,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Helpers around the canonical Celo ERC-8004 Reputation Registry.
3
+ *
4
+ * Each `giveFeedback` call attaches a signed value (with explicit decimals),
5
+ * two free-form tags, an endpoint string, and an optional URI+hash of a richer
6
+ * feedback document. The canonical contract:
7
+ *
8
+ * - REJECTS self-feedback (where `msg.sender` is the agent's owner or an
9
+ * approved operator) — see the source's `isAuthorizedOrOwner` check.
10
+ * - Indexes feedback by `(agentId, clientAddress, feedbackIndex)`. The index
11
+ * is 1-based per client; the first call returns 1, the second returns 2, etc.
12
+ *
13
+ * 8004scan reads these contracts directly, so any feedback attributed to your
14
+ * agentId here counts toward the Celo hackathon's Track 3 rank.
15
+ */
16
+ import { decodeEventLog, getAddress, } from 'viem';
17
+ import { ERC8004_REPUTATION_ABI } from './abis.js';
18
+ /**
19
+ * Submit feedback on an agent. Returns the `feedbackIndex` (1-based per caller)
20
+ * parsed from the `NewFeedback` event in the receipt.
21
+ *
22
+ * The caller (`walletClient.account.address`) must NOT be authorized for the
23
+ * agent — i.e. an agent cannot rate itself. The contract reverts with
24
+ * "Self-feedback not allowed" if you try.
25
+ */
26
+ export async function giveFeedback(walletClient, publicClient, registryAddress, args) {
27
+ const account = walletClient.account;
28
+ if (!account)
29
+ throw new Error('giveFeedback: walletClient has no account configured');
30
+ const txHash = await walletClient.writeContract({
31
+ address: registryAddress,
32
+ abi: ERC8004_REPUTATION_ABI,
33
+ functionName: 'giveFeedback',
34
+ args: [
35
+ args.agentId,
36
+ args.value,
37
+ args.valueDecimals,
38
+ args.tag1,
39
+ args.tag2,
40
+ args.endpoint,
41
+ args.feedbackURI,
42
+ args.feedbackHash,
43
+ ],
44
+ account,
45
+ chain: walletClient.chain,
46
+ });
47
+ const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
48
+ for (const log of receipt.logs) {
49
+ if (getAddress(log.address) !== getAddress(registryAddress))
50
+ continue;
51
+ try {
52
+ const decoded = decodeEventLog({
53
+ abi: ERC8004_REPUTATION_ABI,
54
+ data: log.data,
55
+ topics: log.topics,
56
+ });
57
+ if (decoded.eventName === 'NewFeedback') {
58
+ return { feedbackIndex: BigInt(decoded.args.feedbackIndex), txHash };
59
+ }
60
+ }
61
+ catch {
62
+ // Different event — keep scanning.
63
+ }
64
+ }
65
+ throw new Error(`giveFeedback: no NewFeedback event in receipt ${txHash}`);
66
+ }
67
+ /**
68
+ * Revoke a previously-submitted feedback. Only the original `clientAddress`
69
+ * (i.e. the same wallet that called `giveFeedback`) can revoke.
70
+ */
71
+ export async function revokeFeedback(walletClient, registryAddress, agentId, feedbackIndex) {
72
+ const account = walletClient.account;
73
+ if (!account)
74
+ throw new Error('revokeFeedback: walletClient has no account configured');
75
+ return walletClient.writeContract({
76
+ address: registryAddress,
77
+ abi: ERC8004_REPUTATION_ABI,
78
+ functionName: 'revokeFeedback',
79
+ args: [agentId, feedbackIndex],
80
+ account,
81
+ chain: walletClient.chain,
82
+ });
83
+ }
84
+ /**
85
+ * Build a `FeedbackArgs` object with the most common shape:
86
+ * - a percentage-style score in [0, 100] with one decimal,
87
+ * - two tags (category, sub-category),
88
+ * - an endpoint string for which deployment the feedback applies to.
89
+ *
90
+ * `value=850, valueDecimals=1` means "85.0 / 100".
91
+ */
92
+ export function makeScoreFeedback(args) {
93
+ const value = BigInt(Math.round(args.scoreOutOf100 * 10));
94
+ return {
95
+ agentId: args.agentId,
96
+ value,
97
+ valueDecimals: 1,
98
+ tag1: args.tag1,
99
+ tag2: args.tag2,
100
+ endpoint: args.endpoint,
101
+ feedbackURI: args.feedbackURI ?? '',
102
+ feedbackHash: args.feedbackHash ?? '0x0000000000000000000000000000000000000000000000000000000000000000',
103
+ };
104
+ }
105
+ //# sourceMappingURL=reputation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reputation.js","sourceRoot":"","sources":["../../../../src/identity/erc8004/reputation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/identity/erc8004/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ // Identity Layer — Barrel exports
2
+ //
3
+ // This module ships two layers:
4
+ // - Off-chain TypeScript primitives (AgentIdentity, DIDResolver, ...) for
5
+ // building agent cards, resolving DIDs, scoring reputation, etc.
6
+ // - On-chain helpers under `./erc8004/` for the canonical Celo ERC-8004
7
+ // Identity + Reputation registries (re-exported as `erc8004` below).
8
+ export { AgentIdentity } from './agent-identity.js';
9
+ export { DIDResolver } from './did-resolver.js';
10
+ export { AgentCard } from './agent-card.js';
11
+ export { Reputation } from './reputation.js';
12
+ export { OwnerRegistry } from './owner-registry.js';
13
+ // Canonical Celo ERC-8004 helpers — Identity + Reputation registries.
14
+ export * as erc8004 from './erc8004/index.js';
15
+ // Direct re-export of the AgentWalletSet EIP-712 builder. Consumers that vendor a
16
+ // client-safe copy (e.g. the envoy-app web client, which can't bundle the native
17
+ // OWS dep) pin their copy against this to guarantee on-chain signatures match.
18
+ export { agentWalletRotationTypedData } from './erc8004/identity.js';
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/identity/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,EAAE;AACF,gCAAgC;AAChC,4EAA4E;AAC5E,qEAAqE;AACrE,0EAA0E;AAC1E,yEAAyE;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAkBjD,sEAAsE;AACtE,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAGrC,kFAAkF;AAClF,iFAAiF;AACjF,+EAA+E;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC"}