agentwallet-sdk 4.0.5 → 5.0.1

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 (400) hide show
  1. package/README.md +154 -158
  2. package/dist/abi.d.ts +396 -46
  3. package/dist/abi.d.ts.map +1 -1
  4. package/dist/abi.js +0 -2
  5. package/dist/abi.js.map +1 -1
  6. package/dist/ap2/index.d.ts +185 -0
  7. package/dist/ap2/index.d.ts.map +1 -0
  8. package/dist/ap2/index.js +255 -0
  9. package/dist/ap2/index.js.map +1 -0
  10. package/dist/bridge/abis.d.ts.map +1 -1
  11. package/dist/bridge/abis.js +0 -2
  12. package/dist/bridge/abis.js.map +1 -1
  13. package/dist/bridge/client.d.ts +28 -43
  14. package/dist/bridge/client.d.ts.map +1 -1
  15. package/dist/bridge/client.js +0 -2
  16. package/dist/bridge/client.js.map +1 -1
  17. package/dist/bridge/index.d.ts +1 -0
  18. package/dist/bridge/index.d.ts.map +1 -1
  19. package/dist/bridge/index.js +0 -2
  20. package/dist/bridge/index.js.map +1 -1
  21. package/dist/bridge/types.d.ts +48 -32
  22. package/dist/bridge/types.d.ts.map +1 -1
  23. package/dist/bridge/types.js +0 -2
  24. package/dist/bridge/types.js.map +1 -1
  25. package/dist/bridge/unified.d.ts +101 -0
  26. package/dist/bridge/unified.d.ts.map +1 -0
  27. package/dist/bridge/unified.js +284 -0
  28. package/dist/bridge/unified.js.map +1 -0
  29. package/dist/chains.d.ts +62 -0
  30. package/dist/chains.d.ts.map +1 -0
  31. package/dist/chains.js +108 -0
  32. package/dist/chains.js.map +1 -0
  33. package/dist/escrow/MutualStakeEscrow.d.ts +75 -0
  34. package/dist/escrow/MutualStakeEscrow.d.ts.map +1 -0
  35. package/dist/escrow/MutualStakeEscrow.js +339 -0
  36. package/dist/escrow/MutualStakeEscrow.js.map +1 -0
  37. package/dist/escrow/types.d.ts +59 -0
  38. package/dist/escrow/types.d.ts.map +1 -0
  39. package/dist/escrow/types.js +11 -0
  40. package/dist/escrow/types.js.map +1 -0
  41. package/dist/escrow/verifiers.d.ts +26 -0
  42. package/dist/escrow/verifiers.d.ts.map +1 -0
  43. package/dist/escrow/verifiers.js +53 -0
  44. package/dist/escrow/verifiers.js.map +1 -0
  45. package/dist/fiat/index.d.ts +10 -0
  46. package/dist/fiat/index.d.ts.map +1 -0
  47. package/dist/fiat/index.js +9 -0
  48. package/dist/fiat/index.js.map +1 -0
  49. package/dist/fiat/onramp.d.ts +101 -0
  50. package/dist/fiat/onramp.d.ts.map +1 -0
  51. package/dist/fiat/onramp.js +155 -0
  52. package/dist/fiat/onramp.js.map +1 -0
  53. package/dist/fiat/providers/index.d.ts +16 -0
  54. package/dist/fiat/providers/index.d.ts.map +1 -0
  55. package/dist/fiat/providers/index.js +30 -0
  56. package/dist/fiat/providers/index.js.map +1 -0
  57. package/dist/fiat/providers/moonpay.d.ts +22 -0
  58. package/dist/fiat/providers/moonpay.d.ts.map +1 -0
  59. package/dist/fiat/providers/moonpay.js +107 -0
  60. package/dist/fiat/providers/moonpay.js.map +1 -0
  61. package/dist/fiat/providers/stripe.d.ts +26 -0
  62. package/dist/fiat/providers/stripe.d.ts.map +1 -0
  63. package/dist/fiat/providers/stripe.js +135 -0
  64. package/dist/fiat/providers/stripe.js.map +1 -0
  65. package/dist/fiat/providers/transak.d.ts +26 -0
  66. package/dist/fiat/providers/transak.d.ts.map +1 -0
  67. package/dist/fiat/providers/transak.js +119 -0
  68. package/dist/fiat/providers/transak.js.map +1 -0
  69. package/dist/fiat/types.d.ts +106 -0
  70. package/dist/fiat/types.d.ts.map +1 -0
  71. package/dist/fiat/types.js +13 -0
  72. package/dist/fiat/types.js.map +1 -0
  73. package/dist/flash/executor.d.ts +119 -0
  74. package/dist/flash/executor.d.ts.map +1 -0
  75. package/dist/flash/executor.js +195 -0
  76. package/dist/flash/executor.js.map +1 -0
  77. package/dist/flash/index.d.ts +28 -0
  78. package/dist/flash/index.d.ts.map +1 -0
  79. package/dist/flash/index.js +29 -0
  80. package/dist/flash/index.js.map +1 -0
  81. package/dist/flash/scanner.d.ts +133 -0
  82. package/dist/flash/scanner.d.ts.map +1 -0
  83. package/dist/flash/scanner.js +212 -0
  84. package/dist/flash/scanner.js.map +1 -0
  85. package/dist/flash/types.d.ts +136 -0
  86. package/dist/flash/types.d.ts.map +1 -0
  87. package/dist/flash/types.js +23 -0
  88. package/dist/flash/types.js.map +1 -0
  89. package/dist/gas/index.d.ts +4 -0
  90. package/dist/gas/index.d.ts.map +1 -0
  91. package/dist/gas/index.js +3 -0
  92. package/dist/gas/index.js.map +1 -0
  93. package/dist/gas/sponsor.d.ts +70 -0
  94. package/dist/gas/sponsor.d.ts.map +1 -0
  95. package/dist/gas/sponsor.js +193 -0
  96. package/dist/gas/sponsor.js.map +1 -0
  97. package/dist/gas/types.d.ts +76 -0
  98. package/dist/gas/types.d.ts.map +1 -0
  99. package/dist/gas/types.js +21 -0
  100. package/dist/gas/types.js.map +1 -0
  101. package/dist/identity/agent-identity.d.ts +276 -0
  102. package/dist/identity/agent-identity.d.ts.map +1 -0
  103. package/dist/identity/agent-identity.js +300 -0
  104. package/dist/identity/agent-identity.js.map +1 -0
  105. package/dist/identity/erc6551.d.ts +441 -0
  106. package/dist/identity/erc6551.d.ts.map +1 -0
  107. package/dist/identity/erc6551.js +517 -0
  108. package/dist/identity/erc6551.js.map +1 -0
  109. package/dist/identity/erc8004.d.ts +296 -141
  110. package/dist/identity/erc8004.d.ts.map +1 -1
  111. package/dist/identity/erc8004.js +43 -12
  112. package/dist/identity/erc8004.js.map +1 -1
  113. package/dist/identity/index.d.ts +6 -2
  114. package/dist/identity/index.d.ts.map +1 -1
  115. package/dist/identity/index.js +3 -2
  116. package/dist/identity/index.js.map +1 -1
  117. package/dist/identity/reputation.d.ts +318 -0
  118. package/dist/identity/reputation.d.ts.map +1 -0
  119. package/dist/identity/reputation.js +272 -0
  120. package/dist/identity/reputation.js.map +1 -0
  121. package/dist/identity/validation.d.ts +284 -0
  122. package/dist/identity/validation.d.ts.map +1 -0
  123. package/dist/identity/validation.js +226 -0
  124. package/dist/identity/validation.js.map +1 -0
  125. package/dist/index.d.ts +32624 -1011
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +16 -12
  128. package/dist/index.js.map +1 -1
  129. package/dist/mev/index.d.ts +4 -0
  130. package/dist/mev/index.d.ts.map +1 -0
  131. package/dist/mev/index.js +8 -0
  132. package/dist/mev/index.js.map +1 -0
  133. package/dist/mev/protection.d.ts +54 -0
  134. package/dist/mev/protection.d.ts.map +1 -0
  135. package/dist/mev/protection.js +185 -0
  136. package/dist/mev/protection.js.map +1 -0
  137. package/dist/mev/risk.d.ts +19 -0
  138. package/dist/mev/risk.d.ts.map +1 -0
  139. package/dist/mev/risk.js +95 -0
  140. package/dist/mev/risk.js.map +1 -0
  141. package/dist/mev/types.d.ts +49 -0
  142. package/dist/mev/types.d.ts.map +1 -0
  143. package/dist/mev/types.js +2 -0
  144. package/dist/mev/types.js.map +1 -0
  145. package/dist/plugins/elizaos.d.ts +26 -14
  146. package/dist/plugins/elizaos.d.ts.map +1 -1
  147. package/dist/plugins/elizaos.js +0 -2
  148. package/dist/plugins/elizaos.js.map +1 -1
  149. package/dist/policy/SpendingPolicy.d.ts +89 -15
  150. package/dist/policy/SpendingPolicy.d.ts.map +1 -1
  151. package/dist/policy/SpendingPolicy.js +0 -2
  152. package/dist/policy/SpendingPolicy.js.map +1 -1
  153. package/dist/policy/SpendingPolicy.test.d.ts +2 -0
  154. package/dist/policy/SpendingPolicy.test.d.ts.map +1 -0
  155. package/dist/policy/SpendingPolicy.test.js +143 -0
  156. package/dist/policy/SpendingPolicy.test.js.map +1 -0
  157. package/dist/settlement/index.d.ts +4 -0
  158. package/dist/settlement/index.d.ts.map +1 -0
  159. package/dist/settlement/index.js +3 -0
  160. package/dist/settlement/index.js.map +1 -0
  161. package/dist/settlement/types.d.ts +66 -0
  162. package/dist/settlement/types.d.ts.map +1 -0
  163. package/dist/settlement/types.js +37 -0
  164. package/dist/settlement/types.js.map +1 -0
  165. package/dist/settlement/verifier.d.ts +75 -0
  166. package/dist/settlement/verifier.d.ts.map +1 -0
  167. package/dist/settlement/verifier.js +354 -0
  168. package/dist/settlement/verifier.js.map +1 -0
  169. package/dist/solana/bridge.d.ts +144 -0
  170. package/dist/solana/bridge.d.ts.map +1 -0
  171. package/dist/solana/bridge.js +352 -0
  172. package/dist/solana/bridge.js.map +1 -0
  173. package/dist/solana/index.d.ts +8 -0
  174. package/dist/solana/index.d.ts.map +1 -0
  175. package/dist/solana/index.js +6 -0
  176. package/dist/solana/index.js.map +1 -0
  177. package/dist/solana/swap.d.ts +85 -0
  178. package/dist/solana/swap.d.ts.map +1 -0
  179. package/dist/solana/swap.js +173 -0
  180. package/dist/solana/swap.js.map +1 -0
  181. package/dist/solana/types.d.ts +126 -0
  182. package/dist/solana/types.d.ts.map +1 -0
  183. package/dist/solana/types.js +10 -0
  184. package/dist/solana/types.js.map +1 -0
  185. package/dist/solana/wallet.d.ts +83 -0
  186. package/dist/solana/wallet.d.ts.map +1 -0
  187. package/dist/solana/wallet.js +164 -0
  188. package/dist/solana/wallet.js.map +1 -0
  189. package/dist/solana/x402.d.ts +69 -0
  190. package/dist/solana/x402.d.ts.map +1 -0
  191. package/dist/solana/x402.js +154 -0
  192. package/dist/solana/x402.js.map +1 -0
  193. package/dist/solver/adapter.d.ts +47 -0
  194. package/dist/solver/adapter.d.ts.map +1 -0
  195. package/dist/solver/adapter.js +146 -0
  196. package/dist/solver/adapter.js.map +1 -0
  197. package/dist/solver/analyzer.d.ts +48 -0
  198. package/dist/solver/analyzer.d.ts.map +1 -0
  199. package/dist/solver/analyzer.js +171 -0
  200. package/dist/solver/analyzer.js.map +1 -0
  201. package/dist/solver/builder.d.ts +31 -0
  202. package/dist/solver/builder.d.ts.map +1 -0
  203. package/dist/solver/builder.js +60 -0
  204. package/dist/solver/builder.js.map +1 -0
  205. package/dist/solver/index.d.ts +22 -0
  206. package/dist/solver/index.d.ts.map +1 -0
  207. package/dist/solver/index.js +25 -0
  208. package/dist/solver/index.js.map +1 -0
  209. package/dist/solver/types.d.ts +115 -0
  210. package/dist/solver/types.d.ts.map +1 -0
  211. package/dist/solver/types.js +10 -0
  212. package/dist/solver/types.js.map +1 -0
  213. package/dist/spend-guard/index.d.ts +125 -0
  214. package/dist/spend-guard/index.d.ts.map +1 -0
  215. package/dist/spend-guard/index.js +150 -0
  216. package/dist/spend-guard/index.js.map +1 -0
  217. package/dist/swap/SwapModule.d.ts +28 -39
  218. package/dist/swap/SwapModule.d.ts.map +1 -1
  219. package/dist/swap/SwapModule.js +2 -4
  220. package/dist/swap/SwapModule.js.map +1 -1
  221. package/dist/swap/abi.d.ts.map +1 -1
  222. package/dist/swap/abi.js +0 -2
  223. package/dist/swap/abi.js.map +1 -1
  224. package/dist/swap/index.d.ts +1 -0
  225. package/dist/swap/index.d.ts.map +1 -1
  226. package/dist/swap/index.js +0 -2
  227. package/dist/swap/index.js.map +1 -1
  228. package/dist/swap/router/cache.d.ts +13 -0
  229. package/dist/swap/router/cache.d.ts.map +1 -0
  230. package/dist/swap/router/cache.js +30 -0
  231. package/dist/swap/router/cache.js.map +1 -0
  232. package/dist/swap/router/flashbots.d.ts +10 -0
  233. package/dist/swap/router/flashbots.d.ts.map +1 -0
  234. package/dist/swap/router/flashbots.js +43 -0
  235. package/dist/swap/router/flashbots.js.map +1 -0
  236. package/dist/swap/router/health.d.ts +17 -0
  237. package/dist/swap/router/health.d.ts.map +1 -0
  238. package/dist/swap/router/health.js +38 -0
  239. package/dist/swap/router/health.js.map +1 -0
  240. package/dist/swap/router/index.d.ts +10 -0
  241. package/dist/swap/router/index.d.ts.map +1 -0
  242. package/dist/swap/router/index.js +10 -0
  243. package/dist/swap/router/index.js.map +1 -0
  244. package/dist/swap/router/providers/cowswap.d.ts +11 -0
  245. package/dist/swap/router/providers/cowswap.d.ts.map +1 -0
  246. package/dist/swap/router/providers/cowswap.js +79 -0
  247. package/dist/swap/router/providers/cowswap.js.map +1 -0
  248. package/dist/swap/router/providers/index.d.ts +20 -0
  249. package/dist/swap/router/providers/index.d.ts.map +1 -0
  250. package/dist/swap/router/providers/index.js +32 -0
  251. package/dist/swap/router/providers/index.js.map +1 -0
  252. package/dist/swap/router/providers/jupiter.d.ts +12 -0
  253. package/dist/swap/router/providers/jupiter.d.ts.map +1 -0
  254. package/dist/swap/router/providers/jupiter.js +73 -0
  255. package/dist/swap/router/providers/jupiter.js.map +1 -0
  256. package/dist/swap/router/providers/lifi.d.ts +11 -0
  257. package/dist/swap/router/providers/lifi.d.ts.map +1 -0
  258. package/dist/swap/router/providers/lifi.js +123 -0
  259. package/dist/swap/router/providers/lifi.js.map +1 -0
  260. package/dist/swap/router/providers/oneinch.d.ts +13 -0
  261. package/dist/swap/router/providers/oneinch.d.ts.map +1 -0
  262. package/dist/swap/router/providers/oneinch.js +71 -0
  263. package/dist/swap/router/providers/oneinch.js.map +1 -0
  264. package/dist/swap/router/providers/paraswap.d.ts +11 -0
  265. package/dist/swap/router/providers/paraswap.d.ts.map +1 -0
  266. package/dist/swap/router/providers/paraswap.js +73 -0
  267. package/dist/swap/router/providers/paraswap.js.map +1 -0
  268. package/dist/swap/router/providers/uniswap.d.ts +31 -0
  269. package/dist/swap/router/providers/uniswap.d.ts.map +1 -0
  270. package/dist/swap/router/providers/uniswap.js +237 -0
  271. package/dist/swap/router/providers/uniswap.js.map +1 -0
  272. package/dist/swap/router/providers/zerox.d.ts +13 -0
  273. package/dist/swap/router/providers/zerox.d.ts.map +1 -0
  274. package/dist/swap/router/providers/zerox.js +94 -0
  275. package/dist/swap/router/providers/zerox.js.map +1 -0
  276. package/dist/swap/router/router.d.ts +86 -0
  277. package/dist/swap/router/router.d.ts.map +1 -0
  278. package/dist/swap/router/router.js +224 -0
  279. package/dist/swap/router/router.js.map +1 -0
  280. package/dist/swap/router/rsi/engine.d.ts +60 -0
  281. package/dist/swap/router/rsi/engine.d.ts.map +1 -0
  282. package/dist/swap/router/rsi/engine.js +483 -0
  283. package/dist/swap/router/rsi/engine.js.map +1 -0
  284. package/dist/swap/router/rsi/index.d.ts +3 -0
  285. package/dist/swap/router/rsi/index.d.ts.map +1 -0
  286. package/dist/swap/router/rsi/index.js +3 -0
  287. package/dist/swap/router/rsi/index.js.map +1 -0
  288. package/dist/swap/router/rsi/types.d.ts +106 -0
  289. package/dist/swap/router/rsi/types.d.ts.map +1 -0
  290. package/dist/swap/router/rsi/types.js +3 -0
  291. package/dist/swap/router/rsi/types.js.map +1 -0
  292. package/dist/swap/router/types.d.ts +120 -0
  293. package/dist/swap/router/types.d.ts.map +1 -0
  294. package/dist/swap/router/types.js +16 -0
  295. package/dist/swap/router/types.js.map +1 -0
  296. package/dist/swap/types.d.ts +41 -7
  297. package/dist/swap/types.d.ts.map +1 -1
  298. package/dist/swap/types.js +1 -3
  299. package/dist/swap/types.js.map +1 -1
  300. package/dist/tax/engine.d.ts +131 -0
  301. package/dist/tax/engine.d.ts.map +1 -0
  302. package/dist/tax/engine.js +307 -0
  303. package/dist/tax/engine.js.map +1 -0
  304. package/dist/tax/index.d.ts +9 -0
  305. package/dist/tax/index.d.ts.map +1 -0
  306. package/dist/tax/index.js +12 -0
  307. package/dist/tax/index.js.map +1 -0
  308. package/dist/tax/lots.d.ts +60 -0
  309. package/dist/tax/lots.d.ts.map +1 -0
  310. package/dist/tax/lots.js +129 -0
  311. package/dist/tax/lots.js.map +1 -0
  312. package/dist/tax/types.d.ts +113 -0
  313. package/dist/tax/types.d.ts.map +1 -0
  314. package/dist/tax/types.js +18 -0
  315. package/dist/tax/types.js.map +1 -0
  316. package/dist/types.d.ts +106 -5
  317. package/dist/types.d.ts.map +1 -1
  318. package/dist/types.js +0 -2
  319. package/dist/types.js.map +1 -1
  320. package/dist/x402/__tests__/budget.test.d.ts +2 -0
  321. package/dist/x402/__tests__/budget.test.d.ts.map +1 -0
  322. package/dist/x402/__tests__/budget.test.js +114 -0
  323. package/dist/x402/__tests__/budget.test.js.map +1 -0
  324. package/dist/x402/__tests__/client.test.d.ts +2 -0
  325. package/dist/x402/__tests__/client.test.d.ts.map +1 -0
  326. package/dist/x402/__tests__/client.test.js +107 -0
  327. package/dist/x402/__tests__/client.test.js.map +1 -0
  328. package/dist/x402/budget.d.ts +23 -15
  329. package/dist/x402/budget.d.ts.map +1 -1
  330. package/dist/x402/budget.js +0 -2
  331. package/dist/x402/budget.js.map +1 -1
  332. package/dist/x402/chains/abstract/index.d.ts +87 -59
  333. package/dist/x402/chains/abstract/index.d.ts.map +1 -1
  334. package/dist/x402/chains/abstract/index.js +0 -2
  335. package/dist/x402/chains/abstract/index.js.map +1 -1
  336. package/dist/x402/client.d.ts +27 -13
  337. package/dist/x402/client.d.ts.map +1 -1
  338. package/dist/x402/client.js +0 -2
  339. package/dist/x402/client.js.map +1 -1
  340. package/dist/x402/index.d.ts +2 -0
  341. package/dist/x402/index.d.ts.map +1 -1
  342. package/dist/x402/index.js +0 -2
  343. package/dist/x402/index.js.map +1 -1
  344. package/dist/x402/middleware.d.ts +4 -4
  345. package/dist/x402/middleware.d.ts.map +1 -1
  346. package/dist/x402/middleware.js +0 -2
  347. package/dist/x402/middleware.js.map +1 -1
  348. package/dist/x402/types.d.ts +88 -5
  349. package/dist/x402/types.d.ts.map +1 -1
  350. package/dist/x402/types.js +0 -2
  351. package/dist/x402/types.js.map +1 -1
  352. package/dist/yield/index.d.ts +26 -0
  353. package/dist/yield/index.d.ts.map +1 -0
  354. package/dist/yield/index.js +29 -0
  355. package/dist/yield/index.js.map +1 -0
  356. package/dist/yield/rates.d.ts +114 -0
  357. package/dist/yield/rates.d.ts.map +1 -0
  358. package/dist/yield/rates.js +351 -0
  359. package/dist/yield/rates.js.map +1 -0
  360. package/dist/yield/types.d.ts +134 -0
  361. package/dist/yield/types.d.ts.map +1 -0
  362. package/dist/yield/types.js +24 -0
  363. package/dist/yield/types.js.map +1 -0
  364. package/dist/yield/vault.d.ts +112 -0
  365. package/dist/yield/vault.d.ts.map +1 -0
  366. package/dist/yield/vault.js +264 -0
  367. package/dist/yield/vault.js.map +1 -0
  368. package/package.json +18 -32
  369. package/dist/__tests__/identity.did.test.d.ts +0 -2
  370. package/dist/__tests__/identity.did.test.d.ts.map +0 -1
  371. package/dist/__tests__/identity.did.test.js +0 -56
  372. package/dist/__tests__/identity.did.test.js.map +0 -1
  373. package/dist/__tests__/staking.test.d.ts +0 -2
  374. package/dist/__tests__/staking.test.d.ts.map +0 -1
  375. package/dist/__tests__/staking.test.js +0 -70
  376. package/dist/__tests__/staking.test.js.map +0 -1
  377. package/dist/__tests__/verify.test.d.ts +0 -2
  378. package/dist/__tests__/verify.test.d.ts.map +0 -1
  379. package/dist/__tests__/verify.test.js +0 -57
  380. package/dist/__tests__/verify.test.js.map +0 -1
  381. package/dist/identity/did.d.ts +0 -66
  382. package/dist/identity/did.d.ts.map +0 -1
  383. package/dist/identity/did.js +0 -186
  384. package/dist/identity/did.js.map +0 -1
  385. package/dist/staking/AgentStakingPool.d.ts +0 -100
  386. package/dist/staking/AgentStakingPool.d.ts.map +0 -1
  387. package/dist/staking/AgentStakingPool.js +0 -298
  388. package/dist/staking/AgentStakingPool.js.map +0 -1
  389. package/dist/staking/index.d.ts +0 -2
  390. package/dist/staking/index.d.ts.map +0 -1
  391. package/dist/staking/index.js +0 -2
  392. package/dist/staking/index.js.map +0 -1
  393. package/dist/verify/index.d.ts +0 -2
  394. package/dist/verify/index.d.ts.map +0 -1
  395. package/dist/verify/index.js +0 -2
  396. package/dist/verify/index.js.map +0 -1
  397. package/dist/verify/verifyAgent.d.ts +0 -42
  398. package/dist/verify/verifyAgent.d.ts.map +0 -1
  399. package/dist/verify/verifyAgent.js +0 -216
  400. package/dist/verify/verifyAgent.js.map +0 -1
@@ -1,298 +0,0 @@
1
- /**
2
- * AgentStakingPool — Agent-Only AAVE V3 USDC Staking Wrapper
3
- *
4
- * Wraps AAVE V3's USDC supply/withdraw pool with:
5
- * - Agent-only access enforced via DID verification
6
- * - 0.5% annualized management fee deducted from yield before distribution
7
- * - Non-custodial: AAVE holds all assets, we just wrap the interaction
8
- *
9
- * AAVE V3 Pool addresses:
10
- * Base: 0xA238Dd80C259a72e81d7e4664a9801593F98d1c5
11
- * Arbitrum: 0x794a61358D6845594F94dc1DB02A252b5b4814aD
12
- *
13
- * USDC addresses:
14
- * Base: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
15
- * Arbitrum: 0xaf88d065e77c8cC2239327C5EDb3A432268e5831
16
- */
17
- import { createPublicClient, http, } from 'viem';
18
- import { base, arbitrum } from 'viem/chains';
19
- // ─── Constants ────────────────────────────────────────────────────────────────
20
- const AAVE_POOL_ADDRESS = {
21
- base: '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5',
22
- arbitrum: '0x794a61358D6845594F94dc1DB02A252b5b4814aD',
23
- };
24
- const USDC_ADDRESS = {
25
- base: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
26
- arbitrum: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
27
- };
28
- // aUSDC (interest-bearing USDC from AAVE)
29
- const AUSDC_ADDRESS = {
30
- base: '0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB',
31
- arbitrum: '0x724dc807b04555b71ed48a6896b6F41593b8C637',
32
- };
33
- /** Fee placeholder — replace with multisig before mainnet launch */
34
- const FEE_COLLECTOR = '0xff86829393C6C26A4EC122bE0Cc3E466Ef876AdD';
35
- const CHAINS = {
36
- base,
37
- arbitrum,
38
- };
39
- // ─── ABIs ─────────────────────────────────────────────────────────────────────
40
- const AAVE_POOL_ABI = [
41
- {
42
- name: 'supply',
43
- type: 'function',
44
- inputs: [
45
- { name: 'asset', type: 'address' },
46
- { name: 'amount', type: 'uint256' },
47
- { name: 'onBehalfOf', type: 'address' },
48
- { name: 'referralCode', type: 'uint16' },
49
- ],
50
- outputs: [],
51
- stateMutability: 'nonpayable',
52
- },
53
- {
54
- name: 'withdraw',
55
- type: 'function',
56
- inputs: [
57
- { name: 'asset', type: 'address' },
58
- { name: 'amount', type: 'uint256' },
59
- { name: 'to', type: 'address' },
60
- ],
61
- outputs: [{ name: '', type: 'uint256' }],
62
- stateMutability: 'nonpayable',
63
- },
64
- ];
65
- const ERC20_ABI = [
66
- {
67
- name: 'approve',
68
- type: 'function',
69
- inputs: [
70
- { name: 'spender', type: 'address' },
71
- { name: 'amount', type: 'uint256' },
72
- ],
73
- outputs: [{ name: '', type: 'bool' }],
74
- stateMutability: 'nonpayable',
75
- },
76
- {
77
- name: 'balanceOf',
78
- type: 'function',
79
- inputs: [{ name: 'account', type: 'address' }],
80
- outputs: [{ name: '', type: 'uint256' }],
81
- stateMutability: 'view',
82
- },
83
- ];
84
- const depositTracker = new Map();
85
- function depositKey(did, chain) {
86
- return `${did}:${chain}`;
87
- }
88
- // ─── AgentStakingPool ─────────────────────────────────────────────────────────
89
- export class AgentStakingPool {
90
- /**
91
- * Deposit USDC into AAVE V3.
92
- * AGENTS ONLY — verifyAgentOnly enforced on every call.
93
- */
94
- async deposit(params) {
95
- const { agentDID, amountUsdc, walletClient, chain } = params;
96
- // 🔐 AGENT-ONLY GATE — must pass before any on-chain action
97
- await this.verifyAgentOnly(agentDID, walletClient);
98
- const viemChain = CHAINS[chain];
99
- const poolAddress = AAVE_POOL_ADDRESS[chain];
100
- const usdcAddress = USDC_ADDRESS[chain];
101
- const agentAddress = walletClient.account.address;
102
- // Step 1: Approve AAVE pool to spend USDC
103
- const approveHash = await walletClient.writeContract({
104
- address: usdcAddress,
105
- abi: ERC20_ABI,
106
- functionName: 'approve',
107
- args: [poolAddress, amountUsdc],
108
- chain: viemChain,
109
- account: walletClient.account,
110
- });
111
- // Wait briefly for approval (in production, await receipt properly)
112
- await new Promise(r => setTimeout(r, 100));
113
- // Step 2: Supply to AAVE pool
114
- const supplyHash = await walletClient.writeContract({
115
- address: poolAddress,
116
- abi: AAVE_POOL_ABI,
117
- functionName: 'supply',
118
- args: [usdcAddress, amountUsdc, agentAddress, 0],
119
- chain: viemChain,
120
- account: walletClient.account,
121
- });
122
- // Track deposit for fee calculation
123
- const key = depositKey(agentDID.did, chain);
124
- const existing = depositTracker.get(key);
125
- depositTracker.set(key, {
126
- principal: (existing?.principal ?? 0n) + amountUsdc,
127
- depositedAt: existing?.depositedAt ?? Math.floor(Date.now() / 1000),
128
- });
129
- return {
130
- txHash: supplyHash,
131
- agentDID: agentDID.did,
132
- amountUsdc,
133
- chain,
134
- depositedAt: Math.floor(Date.now() / 1000),
135
- };
136
- }
137
- /**
138
- * Withdraw USDC + yield from AAVE V3.
139
- * Management fee is deducted from yield before releasing to agent.
140
- */
141
- async withdraw(params) {
142
- const { agentDID, amountUsdc, walletClient, chain } = params;
143
- // 🔐 AGENT-ONLY GATE
144
- await this.verifyAgentOnly(agentDID, walletClient);
145
- const viemChain = CHAINS[chain];
146
- const poolAddress = AAVE_POOL_ADDRESS[chain];
147
- const usdcAddress = USDC_ADDRESS[chain];
148
- const agentAddress = walletClient.account.address;
149
- // Calculate management fee
150
- const key = depositKey(agentDID.did, chain);
151
- const record = depositTracker.get(key);
152
- const daysStaked = record
153
- ? (Date.now() / 1000 - record.depositedAt) / 86400
154
- : 0;
155
- const managementFeeUsdc = this.calculateManagementFee(amountUsdc, daysStaked);
156
- // Withdraw from AAVE (receives full aUSDC redemption value)
157
- const withdrawHash = await walletClient.writeContract({
158
- address: poolAddress,
159
- abi: AAVE_POOL_ABI,
160
- functionName: 'withdraw',
161
- args: [usdcAddress, amountUsdc, agentAddress],
162
- chain: viemChain,
163
- account: walletClient.account,
164
- });
165
- // If there's a management fee, transfer it to FEE_COLLECTOR
166
- if (managementFeeUsdc > 0n) {
167
- await walletClient.writeContract({
168
- address: usdcAddress,
169
- abi: [
170
- {
171
- name: 'transfer',
172
- type: 'function',
173
- inputs: [
174
- { name: 'to', type: 'address' },
175
- { name: 'amount', type: 'uint256' },
176
- ],
177
- outputs: [{ name: '', type: 'bool' }],
178
- stateMutability: 'nonpayable',
179
- },
180
- ],
181
- functionName: 'transfer',
182
- args: [FEE_COLLECTOR, managementFeeUsdc],
183
- chain: viemChain,
184
- account: walletClient.account,
185
- });
186
- }
187
- // Update tracker
188
- if (record) {
189
- const newPrincipal = record.principal > amountUsdc ? record.principal - amountUsdc : 0n;
190
- if (newPrincipal === 0n) {
191
- depositTracker.delete(key);
192
- }
193
- else {
194
- depositTracker.set(key, { ...record, principal: newPrincipal });
195
- }
196
- }
197
- return {
198
- txHash: withdrawHash,
199
- agentDID: agentDID.did,
200
- amountUsdc: amountUsdc - managementFeeUsdc,
201
- managementFeeUsdc,
202
- chain,
203
- withdrawnAt: Math.floor(Date.now() / 1000),
204
- };
205
- }
206
- /**
207
- * Get current staking balance (principal + yield - management fee).
208
- */
209
- async getBalance(agentDID, chain) {
210
- const viemChain = CHAINS[chain];
211
- const aUsdcAddress = AUSDC_ADDRESS[chain];
212
- const publicClient = createPublicClient({
213
- chain: viemChain,
214
- transport: http(),
215
- });
216
- // Derive the wallet address from the DID's public key
217
- // We use the DID string as identifier; actual balance reads require the wallet address
218
- // In production, the DID -> address mapping is maintained via the deposit tracker
219
- const key = depositKey(agentDID.did, chain);
220
- const record = depositTracker.get(key);
221
- const principalUsdc = record?.principal ?? 0n;
222
- // For balance fetching, we need the wallet address. We'll look it up from the
223
- // walletClient account stored via deposit. If no record, return zeroes.
224
- // (In a real deployment, link DID to address on-chain or via the deposit record)
225
- let aUsdcBalance = 0n;
226
- if (record && principalUsdc > 0n) {
227
- // We'd need the address here; use principal as floor estimate
228
- aUsdcBalance = principalUsdc; // AAVE aTokens are 1:1 + yield
229
- }
230
- const daysStaked = record
231
- ? (Date.now() / 1000 - record.depositedAt) / 86400
232
- : 0;
233
- // Yield estimate: AAVE USDC APY varies; use realistic 4% APY estimate for display
234
- const AAVE_USDC_APY_BPS = 400n; // 4%
235
- const yieldEarned = (principalUsdc * AAVE_USDC_APY_BPS * BigInt(Math.floor(daysStaked))) / (10000n * 365n);
236
- const managementFeeAccrued = this.calculateManagementFee(principalUsdc, daysStaked);
237
- const netBalanceUsdc = principalUsdc + yieldEarned - managementFeeAccrued;
238
- return {
239
- agentDID: agentDID.did,
240
- principalUsdc,
241
- aUsdcBalance,
242
- yieldEarned,
243
- managementFeeAccrued,
244
- netBalanceUsdc,
245
- chain,
246
- };
247
- }
248
- /**
249
- * Verify that the caller is an AI agent, not a human.
250
- *
251
- * Enforcement logic:
252
- * 1. The agentDID must be a valid did:key derived via our deterministic derivation
253
- * 2. The DID's encoded public key must match a key that can sign for the wallet address
254
- *
255
- * Humans cannot spoof this because:
256
- * - Deriving a valid AgentDID requires access to the private key in raw hex form
257
- * - The wallet's signing key must match the DID's public key
258
- * - This creates a cryptographic binding: same private key → wallet + DID
259
- *
260
- * In practice, AI agents running our SDK have access to their private key programmatically.
261
- * Human users of typical EOA wallets (MetaMask, hardware wallets) cannot expose their
262
- * private key in the required format to derive the DID.
263
- */
264
- async verifyAgentOnly(agentDID, walletClient) {
265
- if (!agentDID.did.startsWith('did:key:z6Mk')) {
266
- throw new Error('AGENT_ONLY: Invalid AgentDID format. Only did:key (ed25519) DIDs are accepted. ' +
267
- 'Human wallets cannot generate a valid AgentDID without raw private key access.');
268
- }
269
- if (!agentDID.publicKeyHex || agentDID.publicKeyHex.length !== 64) {
270
- throw new Error('AGENT_ONLY: Malformed AgentDID — missing or invalid public key.');
271
- }
272
- if (!agentDID.publicKeyMultibase.startsWith('z6Mk')) {
273
- throw new Error('AGENT_ONLY: AgentDID public key multibase prefix mismatch.');
274
- }
275
- // Verify the DID was correctly derived by checking the multibase matches the pubkey
276
- const expectedMultibase = agentDID.did.replace('did:key:', '');
277
- if (expectedMultibase !== agentDID.publicKeyMultibase) {
278
- throw new Error('AGENT_ONLY: AgentDID multibase mismatch — DID may have been tampered with.');
279
- }
280
- if (!walletClient.account) {
281
- throw new Error('AGENT_ONLY: WalletClient must have an account set.');
282
- }
283
- }
284
- /**
285
- * Calculate management fee: 0.5% annualized.
286
- * Formula: principal * 50 / 10000 * daysStaked / 365
287
- */
288
- calculateManagementFee(principal, daysStaked) {
289
- if (daysStaked <= 0 || principal === 0n)
290
- return 0n;
291
- // principal * 50 / 10000 * daysStaked / 365
292
- // = principal * 50 * daysStaked / (10000 * 365)
293
- const daysScaled = BigInt(Math.max(1, Math.floor(daysStaked)));
294
- return (principal * 50n * daysScaled) / (10000n * 365n);
295
- }
296
- }
297
- export { FEE_COLLECTOR, AAVE_POOL_ADDRESS, USDC_ADDRESS, AUSDC_ADDRESS };
298
- //# sourceMappingURL=AgentStakingPool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentStakingPool.js","sourceRoot":"","sources":["../../src/staking/AgentStakingPool.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export * from './AgentStakingPool.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/staking/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from './AgentStakingPool.js';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/staking/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from './verifyAgent.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verify/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from './verifyAgent.js';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/verify/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -1,42 +0,0 @@
1
- /**
2
- * verifyAgent — Agent Trust Bundle
3
- *
4
- * Generates a cryptographically signed trust bundle that proves:
5
- * - The agent's DID (permanent, derived from private key)
6
- * - The agent's wallet address (onchain)
7
- * - The agent's staking balance in the AgentStakingPool
8
- * - A reputation score (0-100) based on observable onchain data
9
- * - TaskBridge task completion count (if API URL provided)
10
- * - Wallet age in days
11
- *
12
- * The bundle is signed by the agent's DID, making it tamper-proof.
13
- * Any third party can call verifyTrustBundle() to confirm authenticity.
14
- */
15
- import { type Hex, type Address } from 'viem';
16
- export type SupportedChain = 'base' | 'arbitrum';
17
- export interface AgentTrustBundle {
18
- did: string;
19
- walletAddress: Address;
20
- stakingBalance: bigint;
21
- reputationScore: number;
22
- taskBridgeTasksCompleted: number;
23
- walletAgeDays: number;
24
- verifiedAt: number;
25
- signature: string;
26
- }
27
- export interface VerifyAgentParams {
28
- privateKey: Hex;
29
- chain: SupportedChain;
30
- taskBridgeApiUrl?: string;
31
- }
32
- /**
33
- * Generate a complete trust bundle for an agent.
34
- * Fetches real onchain data for staking balance and wallet age.
35
- */
36
- export declare function verifyAgent(params: VerifyAgentParams): Promise<AgentTrustBundle>;
37
- /**
38
- * Verify a trust bundle was signed by the claimed DID.
39
- * Returns true if signature is valid.
40
- */
41
- export declare function verifyTrustBundle(bundle: AgentTrustBundle): boolean;
42
- //# sourceMappingURL=verifyAgent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verifyAgent.d.ts","sourceRoot":"","sources":["../../src/verify/verifyAgent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAA4B,KAAK,GAAG,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAexE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB,EAAE,MAAM,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,GAAG,CAAC;IAChB,KAAK,EAAE,cAAc,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAuDD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuGtF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAyBnE"}
@@ -1,216 +0,0 @@
1
- /**
2
- * verifyAgent — Agent Trust Bundle
3
- *
4
- * Generates a cryptographically signed trust bundle that proves:
5
- * - The agent's DID (permanent, derived from private key)
6
- * - The agent's wallet address (onchain)
7
- * - The agent's staking balance in the AgentStakingPool
8
- * - A reputation score (0-100) based on observable onchain data
9
- * - TaskBridge task completion count (if API URL provided)
10
- * - Wallet age in days
11
- *
12
- * The bundle is signed by the agent's DID, making it tamper-proof.
13
- * Any third party can call verifyTrustBundle() to confirm authenticity.
14
- */
15
- import { createPublicClient, http } from 'viem';
16
- import { base, arbitrum } from 'viem/chains';
17
- import { deriveAgentDID } from '../identity/did.js';
18
- import { AgentStakingPool } from '../staking/AgentStakingPool.js';
19
- import * as ed from '@noble/ed25519';
20
- import { sha512 } from '@noble/hashes/sha512';
21
- import { sha256 } from '@noble/hashes/sha256';
22
- // @noble/ed25519 v2 sha512 sync setup
23
- ed.etc.sha512Sync = (...m) => sha512(ed.etc.concatBytes(...m));
24
- const CHAINS = {
25
- base,
26
- arbitrum,
27
- };
28
- // ─── Base58btc (copied from did.ts for standalone use) ────────────────────────
29
- const BASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
30
- function base58Encode(bytes) {
31
- let num = BigInt('0x' + Buffer.from(bytes).toString('hex'));
32
- const result = [];
33
- while (num > 0n) {
34
- const mod = num % 58n;
35
- result.unshift(BASE58_ALPHABET[Number(mod)]);
36
- num = num / 58n;
37
- }
38
- for (let i = 0; i < bytes.length && bytes[i] === 0; i++)
39
- result.unshift('1');
40
- return result.join('');
41
- }
42
- function base58Decode(str) {
43
- let num = 0n;
44
- for (const char of str) {
45
- const idx = BASE58_ALPHABET.indexOf(char);
46
- if (idx === -1)
47
- throw new Error(`Invalid base58 char: ${char}`);
48
- num = num * 58n + BigInt(idx);
49
- }
50
- const rawHex = num.toString(16);
51
- const hex = rawHex.length % 2 ? "0" + rawHex : rawHex;
52
- const bytes = new Uint8Array(hex.length / 2);
53
- for (let i = 0; i < bytes.length; i++)
54
- bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
55
- const leadingZeros = str.split('').findIndex(c => c !== '1');
56
- const prefix = new Uint8Array(leadingZeros === -1 ? str.length : leadingZeros);
57
- return new Uint8Array([...prefix, ...bytes]);
58
- }
59
- const ED25519_PUB_MULTICODEC = new Uint8Array([0xed, 0x01]);
60
- function multibaseToPubkey(multibase) {
61
- if (!multibase.startsWith('z'))
62
- throw new Error('Expected base58btc multibase');
63
- const decoded = base58Decode(multibase.slice(1));
64
- return decoded.slice(2); // Strip 2-byte multicodec prefix
65
- }
66
- function canonicalize(obj) {
67
- if (typeof obj !== 'object' || obj === null)
68
- return JSON.stringify(obj);
69
- if (Array.isArray(obj))
70
- return '[' + obj.map(canonicalize).join(',') + ']';
71
- const keys = Object.keys(obj).sort();
72
- return '{' + keys.map(k => JSON.stringify(k) + ':' + canonicalize(obj[k])).join(',') + '}';
73
- }
74
- // ─── Core Functions ───────────────────────────────────────────────────────────
75
- /**
76
- * Generate a complete trust bundle for an agent.
77
- * Fetches real onchain data for staking balance and wallet age.
78
- */
79
- export async function verifyAgent(params) {
80
- const { privateKey, chain, taskBridgeApiUrl } = params;
81
- const privKeyBytes = new Uint8Array(Buffer.from(privateKey.startsWith('0x') ? privateKey.slice(2) : privateKey, 'hex'));
82
- // 1. Derive DID
83
- const agentDID = deriveAgentDID(privateKey);
84
- // 2. Derive wallet address from private key (secp256k1)
85
- const { privateKeyToAccount } = await import('viem/accounts');
86
- const account = privateKeyToAccount(privateKey);
87
- const walletAddress = account.address;
88
- // 3. Get staking balance
89
- const pool = new AgentStakingPool();
90
- let stakingBalance = 0n;
91
- try {
92
- const balance = await pool.getBalance(agentDID, chain);
93
- stakingBalance = balance.netBalanceUsdc;
94
- }
95
- catch {
96
- // No staking position — that's fine
97
- stakingBalance = 0n;
98
- }
99
- // 4. Get wallet age from first transaction block
100
- const viemChain = CHAINS[chain];
101
- const publicClient = createPublicClient({
102
- chain: viemChain,
103
- transport: http(),
104
- });
105
- let walletAgeDays = 0;
106
- try {
107
- const txCount = await publicClient.getTransactionCount({ address: walletAddress });
108
- if (txCount > 0) {
109
- // Use a rough heuristic: query current block timestamp vs estimated first tx
110
- // Full indexer query would require third-party RPC or block explorers
111
- // We use the current block as a lower bound
112
- const block = await publicClient.getBlock();
113
- const latestTimestamp = Number(block.timestamp);
114
- // Assume first tx was ~30 days per 10k txs heuristic (rough but non-zero)
115
- // In production: use eth_getLogs or a Dune query to find exact first tx
116
- walletAgeDays = Math.min(txCount * 0.1, 365 * 5); // cap at 5 years
117
- }
118
- }
119
- catch {
120
- walletAgeDays = 0;
121
- }
122
- // 5. Get TaskBridge task count (optional)
123
- let taskBridgeTasksCompleted = 0;
124
- if (taskBridgeApiUrl) {
125
- try {
126
- const url = `${taskBridgeApiUrl.replace(/\/$/, '')}/agents/${walletAddress}/tasks/completed`;
127
- const resp = await fetch(url, {
128
- headers: { 'Content-Type': 'application/json' },
129
- signal: AbortSignal.timeout(5000),
130
- });
131
- if (resp.ok) {
132
- const data = await resp.json();
133
- taskBridgeTasksCompleted = data.count ?? 0;
134
- }
135
- }
136
- catch {
137
- // TaskBridge unavailable — proceed with 0
138
- taskBridgeTasksCompleted = 0;
139
- }
140
- }
141
- // 6. Compute reputation score (0-100)
142
- const reputationScore = computeReputationScore({
143
- stakingBalance,
144
- taskBridgeTasksCompleted,
145
- walletAgeDays,
146
- });
147
- // 7. Build bundle payload and sign with DID private key
148
- const verifiedAt = Math.floor(Date.now() / 1000);
149
- const bundlePayload = {
150
- did: agentDID.did,
151
- walletAddress,
152
- stakingBalance: stakingBalance.toString(),
153
- reputationScore,
154
- taskBridgeTasksCompleted,
155
- walletAgeDays,
156
- verifiedAt,
157
- };
158
- const payloadBytes = new TextEncoder().encode(canonicalize(bundlePayload));
159
- const hash = sha256(payloadBytes);
160
- const sig = ed.sign(hash, privKeyBytes);
161
- const signature = 'z' + base58Encode(sig);
162
- return {
163
- did: agentDID.did,
164
- walletAddress,
165
- stakingBalance,
166
- reputationScore,
167
- taskBridgeTasksCompleted,
168
- walletAgeDays,
169
- verifiedAt,
170
- signature,
171
- };
172
- }
173
- /**
174
- * Verify a trust bundle was signed by the claimed DID.
175
- * Returns true if signature is valid.
176
- */
177
- export function verifyTrustBundle(bundle) {
178
- try {
179
- // Extract public key from DID
180
- const multibase = bundle.did.replace('did:key:', '');
181
- const pubkey = multibaseToPubkey(multibase);
182
- // Reconstruct the signed payload (same fields, same order as above)
183
- const bundlePayload = {
184
- did: bundle.did,
185
- walletAddress: bundle.walletAddress,
186
- stakingBalance: bundle.stakingBalance.toString(),
187
- reputationScore: bundle.reputationScore,
188
- taskBridgeTasksCompleted: bundle.taskBridgeTasksCompleted,
189
- walletAgeDays: bundle.walletAgeDays,
190
- verifiedAt: bundle.verifiedAt,
191
- };
192
- const payloadBytes = new TextEncoder().encode(canonicalize(bundlePayload));
193
- const hash = sha256(payloadBytes);
194
- const sigBytes = base58Decode(bundle.signature.slice(1)); // strip 'z'
195
- return ed.verify(sigBytes, hash, pubkey);
196
- }
197
- catch {
198
- return false;
199
- }
200
- }
201
- /**
202
- * Compute a 0-100 reputation score based on observable agent signals:
203
- * - Staking balance (up to 40 pts): $1000 USDC = 40pts, linear below
204
- * - TaskBridge tasks completed (up to 40 pts): 100 tasks = 40pts, linear below
205
- * - Wallet age (up to 20 pts): 180 days = 20pts, linear below
206
- */
207
- function computeReputationScore(input) {
208
- const { stakingBalance, taskBridgeTasksCompleted, walletAgeDays } = input;
209
- // USDC has 6 decimals
210
- const usdcValue = Number(stakingBalance) / 1e6;
211
- const stakingScore = Math.min(40, (usdcValue / 1000) * 40);
212
- const taskScore = Math.min(40, (taskBridgeTasksCompleted / 100) * 40);
213
- const ageScore = Math.min(20, (walletAgeDays / 180) * 20);
214
- return Math.round(stakingScore + taskScore + ageScore);
215
- }
216
- //# sourceMappingURL=verifyAgent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verifyAgent.js","sourceRoot":"","sources":["../../src/verify/verifyAgent.ts"],"names":[],"mappings":"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"}