@agirails/sdk 2.0.1-beta → 2.0.2

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 (405) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +116 -108
  3. package/bin/actp +10 -0
  4. package/dist/ACTPClient.d.ts +456 -33
  5. package/dist/ACTPClient.d.ts.map +1 -1
  6. package/dist/ACTPClient.js +477 -93
  7. package/dist/ACTPClient.js.map +1 -1
  8. package/dist/abi/AgentRegistry.json +782 -0
  9. package/dist/abi/EscrowVault.json +106 -38
  10. package/dist/abi/IdentityRegistry.json +316 -0
  11. package/dist/adapters/BaseAdapter.d.ts +231 -0
  12. package/dist/adapters/BaseAdapter.d.ts.map +1 -0
  13. package/dist/adapters/BaseAdapter.js +393 -0
  14. package/dist/adapters/BaseAdapter.js.map +1 -0
  15. package/dist/adapters/BeginnerAdapter.d.ts +152 -0
  16. package/dist/adapters/BeginnerAdapter.d.ts.map +1 -0
  17. package/dist/adapters/BeginnerAdapter.js +168 -0
  18. package/dist/adapters/BeginnerAdapter.js.map +1 -0
  19. package/dist/adapters/IntermediateAdapter.d.ts +211 -0
  20. package/dist/adapters/IntermediateAdapter.d.ts.map +1 -0
  21. package/dist/adapters/IntermediateAdapter.js +260 -0
  22. package/dist/adapters/IntermediateAdapter.js.map +1 -0
  23. package/dist/adapters/index.d.ts +15 -0
  24. package/dist/adapters/index.d.ts.map +1 -0
  25. package/dist/adapters/index.js +26 -0
  26. package/dist/adapters/index.js.map +1 -0
  27. package/dist/builders/DeliveryProofBuilder.d.ts +60 -1
  28. package/dist/builders/DeliveryProofBuilder.d.ts.map +1 -1
  29. package/dist/builders/DeliveryProofBuilder.js +81 -5
  30. package/dist/builders/DeliveryProofBuilder.js.map +1 -1
  31. package/dist/builders/QuoteBuilder.d.ts +101 -0
  32. package/dist/builders/QuoteBuilder.d.ts.map +1 -1
  33. package/dist/builders/QuoteBuilder.js +120 -3
  34. package/dist/builders/QuoteBuilder.js.map +1 -1
  35. package/dist/builders/index.d.ts +4 -0
  36. package/dist/builders/index.d.ts.map +1 -1
  37. package/dist/builders/index.js +4 -0
  38. package/dist/builders/index.js.map +1 -1
  39. package/dist/cli/commands/balance.d.ts +13 -0
  40. package/dist/cli/commands/balance.d.ts.map +1 -0
  41. package/dist/cli/commands/balance.js +89 -0
  42. package/dist/cli/commands/balance.js.map +1 -0
  43. package/dist/cli/commands/batch.d.ts +24 -0
  44. package/dist/cli/commands/batch.d.ts.map +1 -0
  45. package/dist/cli/commands/batch.js +424 -0
  46. package/dist/cli/commands/batch.js.map +1 -0
  47. package/dist/cli/commands/config.d.ts +13 -0
  48. package/dist/cli/commands/config.d.ts.map +1 -0
  49. package/dist/cli/commands/config.js +192 -0
  50. package/dist/cli/commands/config.js.map +1 -0
  51. package/dist/cli/commands/init.d.ts +19 -0
  52. package/dist/cli/commands/init.d.ts.map +1 -0
  53. package/dist/cli/commands/init.js +143 -0
  54. package/dist/cli/commands/init.js.map +1 -0
  55. package/dist/cli/commands/mint.d.ts +13 -0
  56. package/dist/cli/commands/mint.d.ts.map +1 -0
  57. package/dist/cli/commands/mint.js +91 -0
  58. package/dist/cli/commands/mint.js.map +1 -0
  59. package/dist/cli/commands/pay.d.ts +18 -0
  60. package/dist/cli/commands/pay.d.ts.map +1 -0
  61. package/dist/cli/commands/pay.js +87 -0
  62. package/dist/cli/commands/pay.js.map +1 -0
  63. package/dist/cli/commands/simulate.d.ts +32 -0
  64. package/dist/cli/commands/simulate.d.ts.map +1 -0
  65. package/dist/cli/commands/simulate.js +290 -0
  66. package/dist/cli/commands/simulate.js.map +1 -0
  67. package/dist/cli/commands/time.d.ts +29 -0
  68. package/dist/cli/commands/time.d.ts.map +1 -0
  69. package/dist/cli/commands/time.js +252 -0
  70. package/dist/cli/commands/time.js.map +1 -0
  71. package/dist/cli/commands/tx.d.ts +16 -0
  72. package/dist/cli/commands/tx.d.ts.map +1 -0
  73. package/dist/cli/commands/tx.js +379 -0
  74. package/dist/cli/commands/tx.js.map +1 -0
  75. package/dist/cli/commands/watch.d.ts +20 -0
  76. package/dist/cli/commands/watch.d.ts.map +1 -0
  77. package/dist/cli/commands/watch.js +160 -0
  78. package/dist/cli/commands/watch.js.map +1 -0
  79. package/dist/cli/index.d.ts +17 -0
  80. package/dist/cli/index.d.ts.map +1 -0
  81. package/dist/cli/index.js +104 -0
  82. package/dist/cli/index.js.map +1 -0
  83. package/dist/cli/utils/client.d.ts +70 -0
  84. package/dist/cli/utils/client.d.ts.map +1 -0
  85. package/dist/cli/utils/client.js +240 -0
  86. package/dist/cli/utils/client.js.map +1 -0
  87. package/dist/cli/utils/config.d.ts +91 -0
  88. package/dist/cli/utils/config.d.ts.map +1 -0
  89. package/dist/cli/utils/config.js +240 -0
  90. package/dist/cli/utils/config.js.map +1 -0
  91. package/dist/cli/utils/output.d.ts +174 -0
  92. package/dist/cli/utils/output.d.ts.map +1 -0
  93. package/dist/cli/utils/output.js +380 -0
  94. package/dist/cli/utils/output.js.map +1 -0
  95. package/dist/config/networks.d.ts +28 -0
  96. package/dist/config/networks.d.ts.map +1 -1
  97. package/dist/config/networks.js +60 -12
  98. package/dist/config/networks.js.map +1 -1
  99. package/dist/errors/index.d.ts +165 -2
  100. package/dist/errors/index.d.ts.map +1 -1
  101. package/dist/errors/index.js +260 -2
  102. package/dist/errors/index.js.map +1 -1
  103. package/dist/index.d.ts +61 -13
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +141 -36
  106. package/dist/index.js.map +1 -1
  107. package/dist/level0/Provider.d.ts +106 -0
  108. package/dist/level0/Provider.d.ts.map +1 -0
  109. package/dist/level0/Provider.js +10 -0
  110. package/dist/level0/Provider.js.map +1 -0
  111. package/dist/level0/ServiceDirectory.d.ts +74 -0
  112. package/dist/level0/ServiceDirectory.d.ts.map +1 -0
  113. package/dist/level0/ServiceDirectory.js +122 -0
  114. package/dist/level0/ServiceDirectory.js.map +1 -0
  115. package/dist/level0/index.d.ts +10 -0
  116. package/dist/level0/index.d.ts.map +1 -0
  117. package/dist/level0/index.js +15 -0
  118. package/dist/level0/index.js.map +1 -0
  119. package/dist/level0/provide.d.ts +51 -0
  120. package/dist/level0/provide.d.ts.map +1 -0
  121. package/dist/level0/provide.js +113 -0
  122. package/dist/level0/provide.js.map +1 -0
  123. package/dist/level0/request.d.ts +53 -0
  124. package/dist/level0/request.d.ts.map +1 -0
  125. package/dist/level0/request.js +462 -0
  126. package/dist/level0/request.js.map +1 -0
  127. package/dist/level1/Agent.d.ts +472 -0
  128. package/dist/level1/Agent.d.ts.map +1 -0
  129. package/dist/level1/Agent.js +1091 -0
  130. package/dist/level1/Agent.js.map +1 -0
  131. package/dist/level1/index.d.ts +10 -0
  132. package/dist/level1/index.d.ts.map +1 -0
  133. package/dist/level1/index.js +30 -0
  134. package/dist/level1/index.js.map +1 -0
  135. package/dist/level1/pricing/PriceCalculator.d.ts +62 -0
  136. package/dist/level1/pricing/PriceCalculator.d.ts.map +1 -0
  137. package/dist/level1/pricing/PriceCalculator.js +237 -0
  138. package/dist/level1/pricing/PriceCalculator.js.map +1 -0
  139. package/dist/level1/pricing/PricingStrategy.d.ts +179 -0
  140. package/dist/level1/pricing/PricingStrategy.d.ts.map +1 -0
  141. package/dist/level1/pricing/PricingStrategy.js +11 -0
  142. package/dist/level1/pricing/PricingStrategy.js.map +1 -0
  143. package/dist/level1/types/Job.d.ts +166 -0
  144. package/dist/level1/types/Job.d.ts.map +1 -0
  145. package/dist/level1/types/Job.js +11 -0
  146. package/dist/level1/types/Job.js.map +1 -0
  147. package/dist/level1/types/Options.d.ts +258 -0
  148. package/dist/level1/types/Options.d.ts.map +1 -0
  149. package/dist/level1/types/Options.js +8 -0
  150. package/dist/level1/types/Options.js.map +1 -0
  151. package/dist/level1/types/index.d.ts +8 -0
  152. package/dist/level1/types/index.d.ts.map +1 -0
  153. package/dist/level1/types/index.js +8 -0
  154. package/dist/level1/types/index.js.map +1 -0
  155. package/dist/protocol/ACTPKernel.d.ts +229 -2
  156. package/dist/protocol/ACTPKernel.d.ts.map +1 -1
  157. package/dist/protocol/ACTPKernel.js +367 -33
  158. package/dist/protocol/ACTPKernel.js.map +1 -1
  159. package/dist/protocol/AgentRegistry.d.ts +177 -0
  160. package/dist/protocol/AgentRegistry.d.ts.map +1 -0
  161. package/dist/protocol/AgentRegistry.js +449 -0
  162. package/dist/protocol/AgentRegistry.js.map +1 -0
  163. package/dist/protocol/DIDManager.d.ts +289 -0
  164. package/dist/protocol/DIDManager.d.ts.map +1 -0
  165. package/dist/protocol/DIDManager.js +481 -0
  166. package/dist/protocol/DIDManager.js.map +1 -0
  167. package/dist/protocol/DIDResolver.d.ts +236 -0
  168. package/dist/protocol/DIDResolver.d.ts.map +1 -0
  169. package/dist/protocol/DIDResolver.js +495 -0
  170. package/dist/protocol/DIDResolver.js.map +1 -0
  171. package/dist/protocol/EASHelper.d.ts +57 -2
  172. package/dist/protocol/EASHelper.d.ts.map +1 -1
  173. package/dist/protocol/EASHelper.js +230 -37
  174. package/dist/protocol/EASHelper.js.map +1 -1
  175. package/dist/protocol/EscrowVault.d.ts +93 -2
  176. package/dist/protocol/EscrowVault.d.ts.map +1 -1
  177. package/dist/protocol/EscrowVault.js +122 -33
  178. package/dist/protocol/EscrowVault.js.map +1 -1
  179. package/dist/protocol/EventMonitor.d.ts +45 -1
  180. package/dist/protocol/EventMonitor.d.ts.map +1 -1
  181. package/dist/protocol/EventMonitor.js +64 -8
  182. package/dist/protocol/EventMonitor.js.map +1 -1
  183. package/dist/protocol/MessageSigner.d.ts +116 -2
  184. package/dist/protocol/MessageSigner.d.ts.map +1 -1
  185. package/dist/protocol/MessageSigner.js +215 -9
  186. package/dist/protocol/MessageSigner.js.map +1 -1
  187. package/dist/protocol/ProofGenerator.d.ts +93 -0
  188. package/dist/protocol/ProofGenerator.d.ts.map +1 -1
  189. package/dist/protocol/ProofGenerator.js +194 -9
  190. package/dist/protocol/ProofGenerator.js.map +1 -1
  191. package/dist/protocol/QuoteBuilder.d.ts +8 -0
  192. package/dist/protocol/QuoteBuilder.d.ts.map +1 -1
  193. package/dist/protocol/QuoteBuilder.js +8 -0
  194. package/dist/protocol/QuoteBuilder.js.map +1 -1
  195. package/dist/runtime/BlockchainRuntime.d.ts +360 -0
  196. package/dist/runtime/BlockchainRuntime.d.ts.map +1 -0
  197. package/dist/runtime/BlockchainRuntime.js +767 -0
  198. package/dist/runtime/BlockchainRuntime.js.map +1 -0
  199. package/dist/runtime/IACTPRuntime.d.ts +271 -0
  200. package/dist/runtime/IACTPRuntime.d.ts.map +1 -0
  201. package/dist/runtime/IACTPRuntime.js +15 -0
  202. package/dist/runtime/IACTPRuntime.js.map +1 -0
  203. package/dist/runtime/MockRuntime.d.ts +445 -0
  204. package/dist/runtime/MockRuntime.d.ts.map +1 -0
  205. package/dist/runtime/MockRuntime.js +1065 -0
  206. package/dist/runtime/MockRuntime.js.map +1 -0
  207. package/dist/runtime/MockStateManager.d.ts +233 -0
  208. package/dist/runtime/MockStateManager.d.ts.map +1 -0
  209. package/dist/runtime/MockStateManager.js +533 -0
  210. package/dist/runtime/MockStateManager.js.map +1 -0
  211. package/dist/runtime/index.d.ts +14 -0
  212. package/dist/runtime/index.d.ts.map +1 -0
  213. package/dist/runtime/index.js +42 -0
  214. package/dist/runtime/index.js.map +1 -0
  215. package/dist/runtime/types/MockState.d.ts +167 -0
  216. package/dist/runtime/types/MockState.d.ts.map +1 -0
  217. package/dist/runtime/types/MockState.js +43 -0
  218. package/dist/runtime/types/MockState.js.map +1 -0
  219. package/dist/types/agent.d.ts +76 -0
  220. package/dist/types/agent.d.ts.map +1 -0
  221. package/dist/types/agent.js +8 -0
  222. package/dist/types/agent.js.map +1 -0
  223. package/dist/types/did.d.ts +192 -0
  224. package/dist/types/did.d.ts.map +1 -0
  225. package/dist/types/did.js +38 -0
  226. package/dist/types/did.js.map +1 -0
  227. package/dist/types/eip712.d.ts +34 -0
  228. package/dist/types/eip712.d.ts.map +1 -1
  229. package/dist/types/eip712.js +31 -5
  230. package/dist/types/eip712.js.map +1 -1
  231. package/dist/types/escrow.d.ts +17 -10
  232. package/dist/types/escrow.d.ts.map +1 -1
  233. package/dist/types/index.d.ts +5 -0
  234. package/dist/types/index.d.ts.map +1 -1
  235. package/dist/types/index.js +8 -0
  236. package/dist/types/index.js.map +1 -1
  237. package/dist/types/message.d.ts +32 -0
  238. package/dist/types/message.d.ts.map +1 -1
  239. package/dist/types/message.js +4 -0
  240. package/dist/types/message.js.map +1 -1
  241. package/dist/types/state.d.ts +28 -0
  242. package/dist/types/state.d.ts.map +1 -1
  243. package/dist/types/state.js +37 -6
  244. package/dist/types/state.js.map +1 -1
  245. package/dist/types/transaction.d.ts +17 -0
  246. package/dist/types/transaction.d.ts.map +1 -1
  247. package/dist/utils/ErrorRecoveryGuide.d.ts +125 -0
  248. package/dist/utils/ErrorRecoveryGuide.d.ts.map +1 -0
  249. package/dist/utils/ErrorRecoveryGuide.js +579 -0
  250. package/dist/utils/ErrorRecoveryGuide.js.map +1 -0
  251. package/dist/utils/Helpers.d.ts +453 -0
  252. package/dist/utils/Helpers.d.ts.map +1 -0
  253. package/dist/utils/Helpers.js +623 -0
  254. package/dist/utils/Helpers.js.map +1 -0
  255. package/dist/utils/IPFSClient.d.ts +113 -0
  256. package/dist/utils/IPFSClient.d.ts.map +1 -1
  257. package/dist/utils/IPFSClient.js +128 -7
  258. package/dist/utils/IPFSClient.js.map +1 -1
  259. package/dist/utils/Logger.d.ts +195 -0
  260. package/dist/utils/Logger.d.ts.map +1 -0
  261. package/dist/utils/Logger.js +382 -0
  262. package/dist/utils/Logger.js.map +1 -0
  263. package/dist/utils/NonceManager.d.ts +234 -1
  264. package/dist/utils/NonceManager.d.ts.map +1 -1
  265. package/dist/utils/NonceManager.js +372 -7
  266. package/dist/utils/NonceManager.js.map +1 -1
  267. package/dist/utils/RateLimiter.d.ts +253 -0
  268. package/dist/utils/RateLimiter.d.ts.map +1 -0
  269. package/dist/utils/RateLimiter.js +424 -0
  270. package/dist/utils/RateLimiter.js.map +1 -0
  271. package/dist/utils/ReceivedNonceTracker.d.ts +175 -0
  272. package/dist/utils/ReceivedNonceTracker.d.ts.map +1 -1
  273. package/dist/utils/ReceivedNonceTracker.js +261 -5
  274. package/dist/utils/ReceivedNonceTracker.js.map +1 -1
  275. package/dist/utils/SDKLifecycle.d.ts +156 -0
  276. package/dist/utils/SDKLifecycle.d.ts.map +1 -0
  277. package/dist/utils/SDKLifecycle.js +347 -0
  278. package/dist/utils/SDKLifecycle.js.map +1 -0
  279. package/dist/utils/SecureNonce.d.ts +57 -0
  280. package/dist/utils/SecureNonce.d.ts.map +1 -0
  281. package/dist/utils/SecureNonce.js +80 -0
  282. package/dist/utils/SecureNonce.js.map +1 -0
  283. package/dist/utils/Semaphore.d.ts +123 -0
  284. package/dist/utils/Semaphore.d.ts.map +1 -0
  285. package/dist/utils/Semaphore.js +247 -0
  286. package/dist/utils/Semaphore.js.map +1 -0
  287. package/dist/utils/UsedAttestationTracker.d.ts +167 -0
  288. package/dist/utils/UsedAttestationTracker.d.ts.map +1 -0
  289. package/dist/utils/UsedAttestationTracker.js +309 -0
  290. package/dist/utils/UsedAttestationTracker.js.map +1 -0
  291. package/dist/utils/canonicalJson.d.ts +22 -0
  292. package/dist/utils/canonicalJson.d.ts.map +1 -1
  293. package/dist/utils/canonicalJson.js +26 -3
  294. package/dist/utils/canonicalJson.js.map +1 -1
  295. package/dist/utils/computeTypeHash.d.ts +14 -0
  296. package/dist/utils/computeTypeHash.d.ts.map +1 -1
  297. package/dist/utils/computeTypeHash.js +19 -2
  298. package/dist/utils/computeTypeHash.js.map +1 -1
  299. package/dist/utils/fsSafe.d.ts +14 -0
  300. package/dist/utils/fsSafe.d.ts.map +1 -0
  301. package/dist/utils/fsSafe.js +89 -0
  302. package/dist/utils/fsSafe.js.map +1 -0
  303. package/dist/utils/index.d.ts +15 -0
  304. package/dist/utils/index.d.ts.map +1 -0
  305. package/dist/utils/index.js +51 -0
  306. package/dist/utils/index.js.map +1 -0
  307. package/dist/utils/security.d.ts +147 -0
  308. package/dist/utils/security.d.ts.map +1 -0
  309. package/dist/utils/security.js +391 -0
  310. package/dist/utils/security.js.map +1 -0
  311. package/dist/utils/validation.d.ts +40 -0
  312. package/dist/utils/validation.d.ts.map +1 -1
  313. package/dist/utils/validation.js +184 -7
  314. package/dist/utils/validation.js.map +1 -1
  315. package/package.json +54 -37
  316. package/src/ACTPClient.ts +692 -178
  317. package/src/abi/AgentRegistry.json +782 -0
  318. package/src/abi/EscrowVault.json +106 -38
  319. package/src/abi/IdentityRegistry.json +316 -0
  320. package/src/adapters/BaseAdapter.ts +473 -0
  321. package/src/adapters/BeginnerAdapter.ts +232 -0
  322. package/src/adapters/IntermediateAdapter.ts +316 -0
  323. package/src/adapters/index.ts +25 -0
  324. package/src/builders/DeliveryProofBuilder.ts +3 -2
  325. package/src/cli/commands/balance.ts +110 -0
  326. package/src/cli/commands/batch.ts +487 -0
  327. package/src/cli/commands/config.ts +231 -0
  328. package/src/cli/commands/init.ts +161 -0
  329. package/src/cli/commands/mint.ts +116 -0
  330. package/src/cli/commands/pay.ts +113 -0
  331. package/src/cli/commands/simulate.ts +345 -0
  332. package/src/cli/commands/time.ts +303 -0
  333. package/src/cli/commands/tx.ts +448 -0
  334. package/src/cli/commands/watch.ts +211 -0
  335. package/src/cli/index.ts +116 -0
  336. package/src/cli/utils/client.ts +249 -0
  337. package/src/cli/utils/config.ts +282 -0
  338. package/src/cli/utils/output.ts +465 -0
  339. package/src/config/networks.ts +32 -9
  340. package/src/errors/index.ts +298 -1
  341. package/src/index.ts +207 -71
  342. package/src/level0/Provider.ts +117 -0
  343. package/src/level0/ServiceDirectory.ts +131 -0
  344. package/src/level0/index.ts +10 -0
  345. package/src/level0/provide.ts +131 -0
  346. package/src/level0/request.ts +494 -0
  347. package/src/level1/Agent.ts +1432 -0
  348. package/src/level1/index.ts +10 -0
  349. package/src/level1/pricing/PriceCalculator.ts +255 -0
  350. package/src/level1/pricing/PricingStrategy.ts +198 -0
  351. package/src/level1/types/Job.ts +179 -0
  352. package/src/level1/types/Options.ts +291 -0
  353. package/src/level1/types/index.ts +8 -0
  354. package/src/protocol/ACTPKernel.ts +175 -23
  355. package/src/protocol/AgentRegistry.ts +559 -0
  356. package/src/protocol/DIDManager.ts +629 -0
  357. package/src/protocol/DIDResolver.ts +554 -0
  358. package/src/protocol/EASHelper.ts +230 -46
  359. package/src/protocol/EscrowVault.ts +68 -50
  360. package/src/protocol/EventMonitor.ts +44 -15
  361. package/src/protocol/MessageSigner.ts +193 -13
  362. package/src/protocol/ProofGenerator.ts +223 -4
  363. package/src/runtime/BlockchainRuntime.ts +993 -0
  364. package/src/runtime/IACTPRuntime.ts +284 -0
  365. package/src/runtime/MockRuntime.ts +1244 -0
  366. package/src/runtime/MockStateManager.ts +576 -0
  367. package/src/runtime/index.ts +25 -0
  368. package/src/runtime/types/MockState.ts +227 -0
  369. package/src/types/agent.ts +79 -0
  370. package/src/types/did.ts +223 -0
  371. package/src/types/escrow.ts +12 -11
  372. package/src/types/index.ts +5 -1
  373. package/src/types/state.ts +12 -3
  374. package/src/types/transaction.ts +4 -1
  375. package/src/utils/ErrorRecoveryGuide.ts +675 -0
  376. package/src/utils/Helpers.ts +688 -0
  377. package/src/utils/IPFSClient.ts +122 -5
  378. package/src/utils/Logger.ts +484 -0
  379. package/src/utils/NonceManager.ts +305 -8
  380. package/src/utils/RateLimiter.ts +534 -0
  381. package/src/utils/ReceivedNonceTracker.ts +170 -0
  382. package/src/utils/SDKLifecycle.ts +416 -0
  383. package/src/utils/SecureNonce.ts +78 -0
  384. package/src/utils/Semaphore.ts +276 -0
  385. package/src/utils/UsedAttestationTracker.ts +387 -0
  386. package/src/utils/fsSafe.ts +75 -0
  387. package/src/utils/index.ts +80 -0
  388. package/src/utils/security.ts +418 -0
  389. package/src/utils/validation.ts +164 -0
  390. package/src/__tests__/ProofGenerator.test.ts +0 -124
  391. package/src/__tests__/QuoteBuilder.test.ts +0 -516
  392. package/src/__tests__/StateMachine.test.ts +0 -82
  393. package/src/__tests__/builders/DeliveryProofBuilder.test.ts +0 -581
  394. package/src/__tests__/integration/ACTPClient.test.ts +0 -263
  395. package/src/__tests__/integration.test.ts +0 -289
  396. package/src/__tests__/protocol/EASHelper.test.ts +0 -472
  397. package/src/__tests__/protocol/EventMonitor.test.ts +0 -382
  398. package/src/__tests__/security/ACTPKernel.security.test.ts +0 -1167
  399. package/src/__tests__/security/EscrowVault.security.test.ts +0 -570
  400. package/src/__tests__/security/MessageSigner.security.test.ts +0 -286
  401. package/src/__tests__/security/NonceReplay.security.test.ts +0 -501
  402. package/src/__tests__/security/validation.security.test.ts +0 -376
  403. package/src/__tests__/utils/IPFSClient.test.ts +0 -262
  404. package/src/__tests__/utils/NonceManager.test.ts +0 -205
  405. package/src/__tests__/utils/canonicalJson.test.ts +0 -153
@@ -9,6 +9,25 @@ const EscrowVault_json_1 = __importDefault(require("../abi/EscrowVault.json"));
9
9
  const ERC20_json_1 = __importDefault(require("../abi/ERC20.json"));
10
10
  const errors_1 = require("../errors");
11
11
  const validation_1 = require("../utils/validation");
12
+ /**
13
+ * EscrowVault - Escrow contract wrapper
14
+ *
15
+ * IMPORTANT:
16
+ * - Escrow creation happens atomically inside `ACTPKernel.linkEscrow()`.
17
+ * - Payout/refund functions are `onlyKernel` on-chain and MUST NOT be called by users.
18
+ *
19
+ * This module provides:
20
+ * - Helper methods for USDC approvals (requester → EscrowVault allowance)
21
+ * - Read-only access to escrow state (`escrows()` / `remaining()`)
22
+ *
23
+ * Workflow (per AIP-3):
24
+ * 1. Consumer approves USDC to EscrowVault address (use approveToken)
25
+ * 2. Consumer calls ACTPKernel.linkEscrow(txId, escrowVault, escrowId)
26
+ * 3. Kernel internally calls IEscrowValidator.createEscrow(escrowId, requester, provider, amount)
27
+ * 4. Escrow pulls USDC from requester
28
+ *
29
+ * Reference: AIP-3 §3.2 (Escrow Linking Workflow), lines 258-336
30
+ */
12
31
  class EscrowVault {
13
32
  constructor(address, signer, gasSettings) {
14
33
  this.address = address;
@@ -16,17 +35,43 @@ class EscrowVault {
16
35
  this.contract = new ethers_1.Contract(address, EscrowVault_json_1.default, signer);
17
36
  this.gasSettings = gasSettings;
18
37
  }
38
+ /**
39
+ * Get gas buffer multiplier based on operation complexity
40
+ * V6 Security Enhancement: Operation-specific gas buffers
41
+ * Reference: SDK_SECURITY_ANALYSIS-Ultra-Think.md Lines 326-337
42
+ */
19
43
  getGasBufferMultiplier(operation) {
20
44
  const buffers = {
21
- 'releaseEscrow': 1.30,
22
- 'approveToken': 1.20
45
+ 'approveToken': 1.20 // 20% - Standard ERC20 approval
23
46
  };
24
- return buffers[operation] || 1.20;
47
+ return buffers[operation] || 1.20; // Default 20% for unknown operations
25
48
  }
49
+ /**
50
+ * Build transaction options with gas settings and estimated gas
51
+ * V6 Enhancement: Dynamic buffer based on operation type
52
+ *
53
+ * SECURITY FIX (NEW-C-1): Gas estimation manipulation attack protection
54
+ * - Enforces minimum gas floor regardless of estimate
55
+ * - Uses safe BigInt arithmetic with overflow detection
56
+ */
26
57
  buildTxOptions(estimatedGas, operation = 'default') {
58
+ // SECURITY FIX (NEW-C-1): Minimum gas floor to prevent manipulation
59
+ // Malicious contracts could return artificially low gas estimates
60
+ const MIN_GAS_FLOOR = 100000n;
61
+ const safeEstimate = estimatedGas > MIN_GAS_FLOOR ? estimatedGas : MIN_GAS_FLOOR;
27
62
  const bufferMultiplier = this.getGasBufferMultiplier(operation);
63
+ // SECURITY FIX (NEW-H-1): Safe BigInt arithmetic with overflow check
64
+ // Use 10000 denominator to avoid floating point precision issues
65
+ const bufferNumerator = BigInt(Math.floor(bufferMultiplier * 10000));
66
+ const bufferDenominator = 10000n;
67
+ const gasLimit = (safeEstimate * bufferNumerator) / bufferDenominator;
68
+ // Overflow detection: result should always be >= original estimate
69
+ if (gasLimit < safeEstimate) {
70
+ throw new Error(`Gas calculation overflow detected for operation ${operation}. ` +
71
+ `Estimate: ${safeEstimate}, Buffer: ${bufferMultiplier}x, Result: ${gasLimit}`);
72
+ }
28
73
  const options = {
29
- gasLimit: (estimatedGas * BigInt(Math.round(bufferMultiplier * 100))) / 100n
74
+ gasLimit
30
75
  };
31
76
  if (this.gasSettings?.maxFeePerGas) {
32
77
  options.maxFeePerGas = this.gasSettings.maxFeePerGas;
@@ -36,22 +81,63 @@ class EscrowVault {
36
81
  }
37
82
  return options;
38
83
  }
84
+ /**
85
+ * Get escrow vault address
86
+ */
39
87
  getAddress() {
40
88
  return this.address;
41
89
  }
90
+ /**
91
+ * Get the underlying ethers Contract instance.
92
+ *
93
+ * SECURITY FIX (C-3): Provides public access to contract for EventMonitor
94
+ * instead of accessing private field via bracket notation.
95
+ *
96
+ * @returns ethers Contract instance
97
+ */
98
+ getContract() {
99
+ return this.contract;
100
+ }
101
+ /**
102
+ * Approve USDC token for escrow creation
103
+ *
104
+ * IMPORTANT: Call this BEFORE ACTPKernel.linkEscrow()
105
+ * The consumer must approve EscrowVault to pull USDC when linkEscrow() is called
106
+ *
107
+ * @param tokenAddress - USDC contract address
108
+ * @param amount - Amount to approve (in USDC wei, 6 decimals)
109
+ * @throws {ValidationError} If inputs are invalid
110
+ * @throws {TransactionRevertedError} If approval fails
111
+ *
112
+ * @example
113
+ * ```typescript
114
+ * // Approve 100 USDC for escrow
115
+ * const amount = ethers.parseUnits('100', 6);
116
+ * await client.escrow.approveToken(BASE_SEPOLIA.contracts.usdc, amount);
117
+ *
118
+ * // Now call linkEscrow via Kernel
119
+ * const escrowId = ethers.id(`escrow-${Date.now()}`);
120
+ * await client.kernel.linkEscrow(txId, escrowVault, escrowId);
121
+ * ```
122
+ */
42
123
  async approveToken(tokenAddress, amount) {
43
124
  (0, validation_1.validateAddress)(tokenAddress, 'tokenAddress');
44
125
  (0, validation_1.validateAmount)(amount, 'amount');
45
126
  const tokenContract = new ethers_1.Contract(tokenAddress, ERC20_json_1.default, this.signer);
46
127
  try {
128
+ // Check current allowance
47
129
  const currentAllowance = await tokenContract.allowance(await this.signer.getAddress(), this.address);
130
+ // Only approve if needed
48
131
  if (currentAllowance < amount) {
49
132
  const approveFunc = tokenContract.getFunction('approve');
133
+ // USDC-compatible approval pattern:
134
+ // If any residual allowance exists, reset to zero first
50
135
  if (currentAllowance > 0n) {
51
136
  const resetGas = await approveFunc.estimateGas(this.address, 0);
52
137
  const resetTx = await approveFunc(this.address, 0, this.buildTxOptions(resetGas, 'approveToken'));
53
138
  await resetTx.wait();
54
139
  }
140
+ // Now set the new allowance
55
141
  const approveGas = await approveFunc.estimateGas(this.address, amount);
56
142
  const approveTx = await approveFunc(this.address, amount, this.buildTxOptions(approveGas, 'approveToken'));
57
143
  await approveTx.wait();
@@ -61,50 +147,53 @@ class EscrowVault {
61
147
  throw new errors_1.TransactionRevertedError(error.transactionHash, `Token approval failed: ${error.reason || error.message}`);
62
148
  }
63
149
  }
150
+ /**
151
+ * Get escrow details
152
+ */
64
153
  async getEscrow(escrowId) {
154
+ (0, validation_1.validateTxId)(escrowId, 'escrowId');
65
155
  const escrowData = await this.contract.escrows(escrowId);
66
156
  return {
67
157
  escrowId,
68
- kernel: escrowData.kernel,
69
- txId: escrowData.txId,
70
- token: escrowData.token,
158
+ requester: escrowData.requester,
159
+ provider: escrowData.provider,
71
160
  amount: escrowData.amount,
72
- beneficiary: escrowData.beneficiary,
73
- createdAt: 0,
74
- released: escrowData.released
161
+ releasedAmount: escrowData.releasedAmount,
162
+ active: escrowData.active
75
163
  };
76
164
  }
165
+ /**
166
+ * Get escrow remaining balance (amount - releasedAmount)
167
+ */
77
168
  async getEscrowBalance(escrowId) {
78
- const escrow = await this.getEscrow(escrowId);
79
- return escrow.amount;
169
+ (0, validation_1.validateTxId)(escrowId, 'escrowId');
170
+ return await this.contract.remaining(escrowId);
80
171
  }
81
- async releaseEscrow(escrowId, recipients, amounts) {
172
+ /**
173
+ * @deprecated
174
+ *
175
+ * Payouts/refunds are executed by ACTPKernel (on-chain) as part of state transitions.
176
+ * EscrowVault disbursement methods are `onlyKernel` and cannot be called by EOAs.
177
+ *
178
+ * Use:
179
+ * - `BlockchainRuntime.releaseEscrow(txId, attestationUID?)` (recommended)
180
+ * - or `ACTPKernel.transitionState(txId, State.SETTLED, proof)` (advanced)
181
+ */
182
+ async releaseEscrow(escrowId, _recipients, _amounts) {
82
183
  (0, validation_1.validateTxId)(escrowId, 'escrowId');
83
- if (recipients.length !== amounts.length) {
84
- throw new errors_1.ValidationError('recipients/amounts', 'Recipients and amounts length mismatch');
85
- }
86
- if (recipients.length === 0) {
87
- throw new errors_1.ValidationError('recipients', 'Must provide at least one recipient');
88
- }
89
- recipients.forEach((recipient, i) => {
90
- (0, validation_1.validateAddress)(recipient, `recipients[${i}]`);
91
- (0, validation_1.validateAmount)(amounts[i], `amounts[${i}]`);
92
- });
93
- try {
94
- const disburseFunc = this.contract.getFunction('disburse');
95
- const estimatedGas = await disburseFunc.estimateGas(escrowId, recipients, amounts);
96
- const txOptions = this.buildTxOptions(estimatedGas, 'releaseEscrow');
97
- const tx = await disburseFunc(escrowId, recipients, amounts, txOptions);
98
- await tx.wait();
99
- }
100
- catch (error) {
101
- throw new errors_1.TransactionRevertedError(error.transactionHash, error.reason || error.message);
102
- }
184
+ throw new errors_1.ValidationError('EscrowVault.releaseEscrow', 'Escrow payouts are performed by ACTPKernel (onlyKernel). ' +
185
+ 'Use BlockchainRuntime.releaseEscrow(txId, attestationUID?) or ACTPKernel.transitionState(txId, SETTLED).');
103
186
  }
187
+ /**
188
+ * Check token balance
189
+ */
104
190
  async getTokenBalance(tokenAddress, account) {
105
191
  const tokenContract = new ethers_1.Contract(tokenAddress, ERC20_json_1.default, this.signer);
106
192
  return await tokenContract.balanceOf(account);
107
193
  }
194
+ /**
195
+ * Check token allowance
196
+ */
108
197
  async getTokenAllowance(tokenAddress, owner, spender) {
109
198
  const tokenContract = new ethers_1.Contract(tokenAddress, ERC20_json_1.default, this.signer);
110
199
  return await tokenContract.allowance(owner, spender);
@@ -1 +1 @@
1
- {"version":3,"file":"EscrowVault.js","sourceRoot":"","sources":["../../src/protocol/EscrowVault.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EscrowVault.js","sourceRoot":"","sources":["../../src/protocol/EscrowVault.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,62 @@
1
1
  import { Contract } from 'ethers';
2
2
  import { State, Transaction } from '../types';
3
+ /**
4
+ * EventMonitor - Listen to blockchain events
5
+ *
6
+ * SECURITY FIX (EVENT-MONITOR): Corrected event parameter order to match ABI.
7
+ * Per ACTPKernel.json, TransactionCreated signature is:
8
+ * (bytes32 indexed transactionId, address indexed requester, address indexed provider, uint256 amount, bytes32 serviceHash)
9
+ *
10
+ * Previous code had requester/provider swapped which caused wrong filter results.
11
+ */
3
12
  export declare class EventMonitor {
4
13
  private readonly kernelContract;
5
14
  constructor(kernelContract: Contract, _escrowContract: Contract);
15
+ /**
16
+ * Watch transaction state changes
17
+ * Returns cleanup function to stop watching
18
+ */
6
19
  watchTransaction(txId: string, callback: (state: State) => void): () => void;
20
+ /**
21
+ * Wait for specific state
22
+ */
7
23
  waitForState(txId: string, targetState: State, timeoutMs?: number): Promise<void>;
24
+ /**
25
+ * Get all transactions for an address
26
+ *
27
+ * SECURITY FIX (EVENT-MONITOR): Corrected filter parameter order.
28
+ * Per ACTPKernel.json ABI, TransactionCreated event signature is:
29
+ * (bytes32 indexed transactionId, address indexed requester, address indexed provider, uint256 amount, bytes32 serviceHash)
30
+ *
31
+ * Filter order: TransactionCreated(txId, requester, provider)
32
+ * - To filter by requester: (null, address, null)
33
+ * - To filter by provider: (null, null, address)
34
+ *
35
+ * SECURITY FIX (EVENT-MONITOR): Use getTransaction() instead of transactions()
36
+ * The kernel contract exposes getTransaction(bytes32) not transactions(bytes32).
37
+ */
8
38
  getTransactionHistory(address: string, role?: 'requester' | 'provider'): Promise<Transaction[]>;
39
+ /**
40
+ * Subscribe to transaction creation events
41
+ *
42
+ * SECURITY FIX (EVENT-MONITOR): Corrected event parameter order.
43
+ * Per ACTPKernel.json ABI:
44
+ * TransactionCreated(bytes32 indexed transactionId, address indexed requester, address indexed provider, uint256 amount, bytes32 serviceHash)
45
+ */
9
46
  onTransactionCreated(callback: (tx: {
10
47
  txId: string;
11
- provider: string;
12
48
  requester: string;
49
+ provider: string;
13
50
  amount: bigint;
51
+ serviceHash?: string;
14
52
  }) => void): () => void;
53
+ /**
54
+ * Subscribe to state change events
55
+ */
15
56
  onStateChanged(callback: (txId: string, from: State, to: State) => void): () => void;
57
+ /**
58
+ * Subscribe to escrow release events
59
+ */
16
60
  onEscrowReleased(callback: (txId: string, amount: bigint) => void): () => void;
17
61
  }
18
62
  //# sourceMappingURL=EventMonitor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventMonitor.d.ts","sourceRoot":"","sources":["../../src/protocol/EventMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAY,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK9C,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,QAAQ,EACzC,eAAe,EAAE,QAAQ;IAO3B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,MAAM,IAAI;IAkBtE,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,KAAK,EAClB,SAAS,GAAE,MAAc,GACxB,OAAO,CAAC,IAAI,CAAC;IAqBV,qBAAqB,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,WAAW,GAAG,UAAwB,GAC3C,OAAO,CAAC,WAAW,EAAE,CAAC;IAwCzB,oBAAoB,CAClB,QAAQ,EAAE,CAAC,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAC5F,MAAM,IAAI;IAuBb,cAAc,CACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,KAAK,IAAI,GACvD,MAAM,IAAI;IAiBb,gBAAgB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;CAa/E"}
1
+ {"version":3,"file":"EventMonitor.d.ts","sourceRoot":"","sources":["../../src/protocol/EventMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAY,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE9C;;;;;;;;GAQG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,QAAQ,EACzC,eAAe,EAAE,QAAQ;IAG3B;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,MAAM,IAAI;IAe5E;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,KAAK,EAClB,SAAS,GAAE,MAAc,GACxB,OAAO,CAAC,IAAI,CAAC;IAiBhB;;;;;;;;;;;;;OAaG;IACG,qBAAqB,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,WAAW,GAAG,UAAwB,GAC3C,OAAO,CAAC,WAAW,EAAE,CAAC;IA6CzB;;;;;;OAMG;IACH,oBAAoB,CAClB,QAAQ,EAAE,CAAC,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAClH,MAAM,IAAI;IAqBb;;OAEG;IACH,cAAc,CACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,KAAK,IAAI,GACvD,MAAM,IAAI;IAcb;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;CAa/E"}
@@ -2,20 +2,37 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EventMonitor = void 0;
4
4
  const types_1 = require("../types");
5
+ /**
6
+ * EventMonitor - Listen to blockchain events
7
+ *
8
+ * SECURITY FIX (EVENT-MONITOR): Corrected event parameter order to match ABI.
9
+ * Per ACTPKernel.json, TransactionCreated signature is:
10
+ * (bytes32 indexed transactionId, address indexed requester, address indexed provider, uint256 amount, bytes32 serviceHash)
11
+ *
12
+ * Previous code had requester/provider swapped which caused wrong filter results.
13
+ */
5
14
  class EventMonitor {
6
15
  constructor(kernelContract, _escrowContract) {
7
16
  this.kernelContract = kernelContract;
8
17
  }
18
+ /**
19
+ * Watch transaction state changes
20
+ * Returns cleanup function to stop watching
21
+ */
9
22
  watchTransaction(txId, callback) {
10
23
  const filter = this.kernelContract.filters.StateTransitioned(txId);
11
24
  const listener = (_eventTxId, _from, to) => {
12
25
  callback(to);
13
26
  };
14
27
  this.kernelContract.on(filter, listener);
28
+ // Return cleanup function
15
29
  return () => {
16
30
  this.kernelContract.off(filter, listener);
17
31
  };
18
32
  }
33
+ /**
34
+ * Wait for specific state
35
+ */
19
36
  async waitForState(txId, targetState, timeoutMs = 60000) {
20
37
  return new Promise((resolve, reject) => {
21
38
  const timer = setTimeout(() => {
@@ -31,42 +48,78 @@ class EventMonitor {
31
48
  });
32
49
  });
33
50
  }
51
+ /**
52
+ * Get all transactions for an address
53
+ *
54
+ * SECURITY FIX (EVENT-MONITOR): Corrected filter parameter order.
55
+ * Per ACTPKernel.json ABI, TransactionCreated event signature is:
56
+ * (bytes32 indexed transactionId, address indexed requester, address indexed provider, uint256 amount, bytes32 serviceHash)
57
+ *
58
+ * Filter order: TransactionCreated(txId, requester, provider)
59
+ * - To filter by requester: (null, address, null)
60
+ * - To filter by provider: (null, null, address)
61
+ *
62
+ * SECURITY FIX (EVENT-MONITOR): Use getTransaction() instead of transactions()
63
+ * The kernel contract exposes getTransaction(bytes32) not transactions(bytes32).
64
+ */
34
65
  async getTransactionHistory(address, role = 'requester') {
66
+ // TransactionCreated event signature per ABI:
67
+ // (bytes32 indexed transactionId, address indexed requester, address indexed provider, uint256 amount, bytes32 serviceHash)
68
+ // Filter format: TransactionCreated(txId, requester, provider)
35
69
  const filter = role === 'requester'
36
- ? this.kernelContract.filters.TransactionCreated(null, null, address)
37
- : this.kernelContract.filters.TransactionCreated(null, address, null);
70
+ ? this.kernelContract.filters.TransactionCreated(null, address, null) // Match requester (2nd indexed param)
71
+ : this.kernelContract.filters.TransactionCreated(null, null, address); // Match provider (3rd indexed param)
38
72
  const events = await this.kernelContract.queryFilter(filter);
39
73
  return Promise.all(events.map(async (event) => {
74
+ // ethers v6: EventLog has args, Log does not
40
75
  if (!('args' in event)) {
41
76
  throw new Error('Event does not contain args (not an EventLog)');
42
77
  }
43
78
  const txId = event.args?.transactionId;
44
- const txData = await this.kernelContract.transactions(txId);
79
+ // SECURITY FIX: Use getTransaction() - the actual ABI function
80
+ // Previous code called transactions(txId) which doesn't exist in ABI
81
+ const txData = await this.kernelContract.getTransaction(txId);
45
82
  return {
46
- txId: txData.transactionId,
83
+ txId: txData.transactionId || txId,
47
84
  requester: txData.requester,
48
85
  provider: txData.provider,
49
86
  amount: txData.amount,
50
- state: txData.state,
87
+ state: (typeof txData.state === 'bigint' ? Number(txData.state) : txData.state),
51
88
  createdAt: Number(txData.createdAt),
89
+ updatedAt: Number(txData.updatedAt),
52
90
  deadline: Number(txData.deadline),
53
91
  disputeWindow: Number(txData.disputeWindow),
54
92
  escrowContract: txData.escrowContract,
55
93
  escrowId: txData.escrowId,
56
- metadata: txData.serviceHash
94
+ serviceHash: txData.serviceHash,
95
+ attestationUID: txData.attestationUID,
96
+ // Use metadata field (quote hash for QUOTED state) if available, fallback to serviceHash
97
+ metadata: txData.metadata || txData.serviceHash,
98
+ platformFeeBpsLocked: Number(txData.platformFeeBpsLocked)
57
99
  };
58
100
  }));
59
101
  }
102
+ /**
103
+ * Subscribe to transaction creation events
104
+ *
105
+ * SECURITY FIX (EVENT-MONITOR): Corrected event parameter order.
106
+ * Per ACTPKernel.json ABI:
107
+ * TransactionCreated(bytes32 indexed transactionId, address indexed requester, address indexed provider, uint256 amount, bytes32 serviceHash)
108
+ */
60
109
  onTransactionCreated(callback) {
61
110
  const filter = this.kernelContract.filters.TransactionCreated();
62
- const listener = async (txId, provider, requester, amount) => {
63
- callback({ txId, provider, requester, amount });
111
+ // Event signature per ABI: (txId, requester, provider, amount, serviceHash)
112
+ const listener = async (txId, requester, provider, amount, serviceHash) => {
113
+ callback({ txId, requester, provider, amount, serviceHash });
64
114
  };
65
115
  this.kernelContract.on(filter, listener);
66
116
  return () => {
67
117
  this.kernelContract.off(filter, listener);
68
118
  };
69
119
  }
120
+ /**
121
+ * Subscribe to state change events
122
+ */
70
123
  onStateChanged(callback) {
71
124
  const filter = this.kernelContract.filters.StateTransitioned();
72
125
  const listener = (txId, from, to) => {
@@ -77,6 +130,9 @@ class EventMonitor {
77
130
  this.kernelContract.off(filter, listener);
78
131
  };
79
132
  }
133
+ /**
134
+ * Subscribe to escrow release events
135
+ */
80
136
  onEscrowReleased(callback) {
81
137
  const filter = this.kernelContract.filters.EscrowReleased();
82
138
  const listener = (txId, amount) => {
@@ -1 +1 @@
1
- {"version":3,"file":"EventMonitor.js","sourceRoot":"","sources":["../../src/protocol/EventMonitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EventMonitor.js","sourceRoot":"","sources":["../../src/protocol/EventMonitor.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,137 @@
1
1
  import { Signer } from 'ethers';
2
2
  import { ACTPMessage, DeliveryProof } from '../types';
3
- import { QuoteRequestData, QuoteResponseData, DeliveryProofData } from '../types/eip712';
3
+ import { EIP712Domain, QuoteRequestData, QuoteResponseData, DeliveryProofData } from '../types/eip712';
4
4
  import { IReceivedNonceTracker } from '../utils/ReceivedNonceTracker';
5
+ /**
6
+ * MessageSigner - Cryptographic signing for ACTP messages with EIP-712
7
+ * Reference: Yellow Paper §11.4.2
8
+ *
9
+ * V4 Security Enhancement: Optional nonce replay protection via ReceivedNonceTracker
10
+ *
11
+ * IMPORTANT: Use MessageSigner.create() factory method to ensure domain is initialized.
12
+ */
5
13
  export declare class MessageSigner {
6
14
  private readonly signer;
7
15
  private readonly nonceTracker?;
8
16
  private domain;
9
- constructor(signer: Signer, nonceTracker?: IReceivedNonceTracker | undefined);
17
+ /**
18
+ * SECURITY FIX (H-5): Private constructor - MUST use MessageSigner.create() factory method
19
+ *
20
+ * This ensures EIP-712 domain is ALWAYS initialized before use (prevents race conditions).
21
+ * Direct construction would allow calling sign/verify without domain initialization.
22
+ */
23
+ private constructor();
24
+ /**
25
+ * SECURITY FIX (H-4): Factory method to create MessageSigner with guaranteed domain initialization
26
+ *
27
+ * This factory ensures the EIP-712 domain is always properly initialized before use.
28
+ * Prevents the common bug of calling sign/verify without initializing domain first.
29
+ *
30
+ * @param signer - Ethers signer for signing messages
31
+ * @param kernelAddress - Address of ACTP Kernel contract (for domain separation)
32
+ * @param options - Optional configuration (chainId, nonceTracker)
33
+ * @returns Promise resolving to initialized MessageSigner
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * const messageSigner = await MessageSigner.create(
38
+ * signer,
39
+ * KERNEL_ADDRESS,
40
+ * { chainId: 84532 }
41
+ * );
42
+ * const signature = await messageSigner.signMessage(message);
43
+ * ```
44
+ */
45
+ static create(signer: Signer, kernelAddress: string, options?: {
46
+ chainId?: number;
47
+ nonceTracker?: IReceivedNonceTracker;
48
+ }): Promise<MessageSigner>;
49
+ /**
50
+ * Check if domain is initialized
51
+ * @returns true if domain has been initialized
52
+ */
53
+ isDomainInitialized(): boolean;
54
+ /**
55
+ * Get the current domain (throws if not initialized)
56
+ * @returns Current EIP-712 domain
57
+ * @throws Error if domain not initialized
58
+ */
59
+ getDomain(): EIP712Domain;
60
+ /**
61
+ * Initialize EIP-712 domain (must be called before signing)
62
+ * @param kernelAddress - Address of ACTP Kernel contract
63
+ * @param chainId - Optional chainId (defaults to signer's chainId or 84532 for Base Sepolia)
64
+ */
10
65
  initDomain(kernelAddress: string, chainId?: number): Promise<void>;
66
+ /**
67
+ * Sign ACTP message using EIP-712 typed data
68
+ * Uses ECDSA (secp256k1) with domain separation per Yellow Paper §11.4.2
69
+ *
70
+ * SECURITY FIX (H-3): Validates nonce format and warns about sequential nonces
71
+ *
72
+ * Generic ACTPMessage format (backward compatible).
73
+ * For strict typed AIP messages, use signQuoteRequest/signQuoteResponse/signDeliveryProof
74
+ */
11
75
  signMessage(message: ACTPMessage): Promise<string>;
76
+ /**
77
+ * Sign typed QuoteRequest message
78
+ */
12
79
  signQuoteRequest(data: QuoteRequestData): Promise<string>;
80
+ /**
81
+ * Sign typed QuoteResponse message
82
+ */
13
83
  signQuoteResponse(data: QuoteResponseData): Promise<string>;
84
+ /**
85
+ * Sign typed DeliveryProof message
86
+ */
14
87
  signDeliveryProof(data: DeliveryProofData): Promise<string>;
88
+ /**
89
+ * Convenience helper to sign a DeliveryProof generated by ProofGenerator
90
+ */
15
91
  signGeneratedDeliveryProof(proof: DeliveryProof): Promise<string>;
92
+ /**
93
+ * Verify message signature using EIP-712
94
+ * Uses generic ACTPMessage types (backward compatible)
95
+ *
96
+ * V4 Security: If nonceTracker is configured, validates nonce for replay protection
97
+ */
16
98
  verifySignature(message: ACTPMessage, signature: string): Promise<boolean>;
99
+ /**
100
+ * Verify signature and throw if invalid
101
+ * V4 Security: Throws specific error for nonce replay detection
102
+ */
17
103
  verifySignatureOrThrow(message: ACTPMessage, signature: string): Promise<void>;
104
+ /**
105
+ * Canonicalize payload to deterministic string (recursively sorted keys)
106
+ * Prevents JSON serialization ambiguity across different JS runtimes
107
+ * Recursively handles nested objects and arrays
108
+ */
18
109
  private canonicalizePayload;
110
+ /**
111
+ * Recursively sort object keys for deterministic JSON encoding
112
+ */
19
113
  private recursiveSort;
114
+ /**
115
+ * Convert DID to Ethereum address
116
+ *
117
+ * SECURITY FIX (DID-FORMAT): Handles both DID formats:
118
+ * - Legacy: did:ethr:<address>
119
+ * - Canonical (EIP-3770): did:ethr:<chainId>:<address>
120
+ *
121
+ * Examples:
122
+ * - "did:ethr:0x1234...abcd" → "0x1234...abcd"
123
+ * - "did:ethr:84532:0x1234...abcd" → "0x1234...abcd"
124
+ * - "0x1234...abcd" → "0x1234...abcd" (raw address passthrough)
125
+ */
20
126
  private didToAddress;
127
+ /**
128
+ * Convert Ethereum address to DID
129
+ *
130
+ * SECURITY FIX (DID-FORMAT): Now generates canonical DID format
131
+ * with chainId when domain is initialized: did:ethr:<chainId>:<address>
132
+ *
133
+ * Falls back to legacy format if domain not initialized.
134
+ */
21
135
  addressToDID(address: string): string;
22
136
  }
23
137
  //# sourceMappingURL=MessageSigner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageSigner.d.ts","sourceRoot":"","sources":["../../src/protocol/MessageSigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,EAGL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAwBtE,qBAAa,aAAa;IAItB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAJhC,OAAO,CAAC,MAAM,CAA6B;gBAGxB,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,qBAAqB,YAAA;IAQjD,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoClE,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAqClD,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAazD,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAa3D,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAa3D,0BAA0B,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAWjE,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuD1E,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDpF,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,YAAY;IAgBpB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAOtC"}
1
+ {"version":3,"file":"MessageSigner.d.ts","sourceRoot":"","sources":["../../src/protocol/MessageSigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,EACL,YAAY,EAEZ,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAkBtE;;;;;;;GAOG;AACH,qBAAa,aAAa;IAUtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAVhC,OAAO,CAAC,MAAM,CAA6B;IAE3C;;;;;OAKG;IACH,OAAO;IAKP;;;;;;;;;;;;;;;;;;;;OAoBG;WACU,MAAM,CACjB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,qBAAqB,CAAC;KACtC,GACA,OAAO,CAAC,aAAa,CAAC;IAMzB;;;OAGG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;;;OAIG;IACH,SAAS,IAAI,YAAY;IASzB;;;;OAIG;IACG,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BxE;;;;;;;;OAQG;IACG,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAsExD;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAY/D;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAYjE;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAYjE;;OAEG;IACG,0BAA0B,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAKvE;;;;;OAKG;IACG,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqDhF;;;OAGG;IACG,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4CpF;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,YAAY;IA8DpB;;;;;;;OAOG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAatC"}