@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
@@ -0,0 +1,623 @@
1
+ "use strict";
2
+ /**
3
+ * Helpers - Common utility functions for ACTP SDK
4
+ *
5
+ * SECURITY FIX (L-7): Convenience methods for common operations
6
+ * to reduce boilerplate and prevent mistakes.
7
+ *
8
+ * @module utils/Helpers
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.hashServiceMetadata = exports.ServiceHash = exports.shortenAddress = exports.formatUSDC = exports.parseUSDC = exports.DisputeWindow = exports.State = exports.Bytes32 = exports.Address = exports.Deadline = exports.USDC = void 0;
12
+ /**
13
+ * USDC amount utilities (6 decimal places)
14
+ */
15
+ exports.USDC = {
16
+ /**
17
+ * USDC decimals
18
+ */
19
+ DECIMALS: 6,
20
+ /**
21
+ * Minimum transaction amount in USDC wei ($0.05)
22
+ */
23
+ MIN_AMOUNT_WEI: 50000n,
24
+ /**
25
+ * Convert human-readable USDC amount to wei
26
+ *
27
+ * @param amount - Amount as string or number (e.g., "100.50")
28
+ * @returns Amount in USDC wei (6 decimals)
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * USDC.toWei("100") // 100_000_000n
33
+ * USDC.toWei("100.50") // 100_500_000n
34
+ * USDC.toWei(100) // 100_000_000n
35
+ * ```
36
+ */
37
+ toWei(amount) {
38
+ const amountStr = String(amount).replace(/[,$\s]/g, '');
39
+ const parts = amountStr.split('.');
40
+ const wholePart = parts[0] || '0';
41
+ const decimalPart = (parts[1] || '').padEnd(6, '0').slice(0, 6);
42
+ return BigInt(wholePart) * 1000000n + BigInt(decimalPart);
43
+ },
44
+ /**
45
+ * Convert USDC wei to human-readable string
46
+ *
47
+ * SECURITY FIX (MEDIUM-6): Uses pure BigInt arithmetic to prevent precision loss
48
+ *
49
+ * @param weiAmount - Amount in USDC wei
50
+ * @param decimals - Number of decimal places to show (default: 2)
51
+ * @returns Formatted string (e.g., "100.50")
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * USDC.fromWei(100_500_000n) // "100.50"
56
+ * USDC.fromWei(100_000_000n) // "100.00"
57
+ * USDC.fromWei(100_126_000n, 4) // "100.1260"
58
+ * ```
59
+ */
60
+ fromWei(weiAmount, decimals = 2) {
61
+ const amount = typeof weiAmount === 'string' ? BigInt(weiAmount) : weiAmount;
62
+ // SECURITY FIX (MEDIUM-6): Use pure BigInt arithmetic for precision
63
+ // Calculate divisor and multiplier using BigInt to avoid floating point
64
+ const divisorExponent = 6 - decimals;
65
+ const divisor = divisorExponent >= 0 ? BigInt(10 ** divisorExponent) : 1n;
66
+ const maxDecimal = BigInt(10 ** decimals);
67
+ // SECURITY FIX (MEDIUM-6): Round using BigInt arithmetic
68
+ // Add half divisor before division for proper rounding (banker's rounding alternative)
69
+ const roundedAmount = divisorExponent >= 0
70
+ ? (amount + divisor / 2n) / divisor
71
+ : amount * BigInt(10 ** (-divisorExponent));
72
+ const wholePart = roundedAmount / maxDecimal;
73
+ const decimalPart = roundedAmount % maxDecimal;
74
+ // Handle overflow from rounding (e.g., 999999 rounds to 1000000)
75
+ if (decimalPart < 0n) {
76
+ // This shouldn't happen with positive amounts, but handle defensive
77
+ return `${wholePart}.${decimalPart.toString().slice(1).padStart(decimals, '0')}`;
78
+ }
79
+ return `${wholePart}.${decimalPart.toString().padStart(decimals, '0')}`;
80
+ },
81
+ /**
82
+ * Format USDC amount with currency symbol
83
+ *
84
+ * @param weiAmount - Amount in USDC wei
85
+ * @returns Formatted string with USDC suffix (e.g., "100.50 USDC")
86
+ */
87
+ format(weiAmount) {
88
+ return `${exports.USDC.fromWei(weiAmount)} USDC`;
89
+ },
90
+ /**
91
+ * Check if amount meets minimum transaction requirement
92
+ *
93
+ * @param weiAmount - Amount in USDC wei
94
+ * @returns true if amount >= $0.05
95
+ */
96
+ meetsMinimum(weiAmount) {
97
+ const amount = typeof weiAmount === 'string' ? BigInt(weiAmount) : weiAmount;
98
+ return amount >= exports.USDC.MIN_AMOUNT_WEI;
99
+ },
100
+ };
101
+ /**
102
+ * Deadline utilities
103
+ */
104
+ exports.Deadline = {
105
+ /**
106
+ * Create deadline N hours from now
107
+ *
108
+ * @param hours - Number of hours from now
109
+ * @returns Unix timestamp in seconds
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * Deadline.hoursFromNow(24) // timestamp 24 hours from now
114
+ * ```
115
+ */
116
+ hoursFromNow(hours) {
117
+ return Math.floor(Date.now() / 1000) + hours * 3600;
118
+ },
119
+ /**
120
+ * Create deadline N days from now
121
+ *
122
+ * @param days - Number of days from now
123
+ * @returns Unix timestamp in seconds
124
+ *
125
+ * @example
126
+ * ```typescript
127
+ * Deadline.daysFromNow(7) // timestamp 7 days from now
128
+ * ```
129
+ */
130
+ daysFromNow(days) {
131
+ return Math.floor(Date.now() / 1000) + days * 86400;
132
+ },
133
+ /**
134
+ * Create deadline at specific date
135
+ *
136
+ * @param date - Date object or ISO string
137
+ * @returns Unix timestamp in seconds
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * Deadline.at(new Date('2025-01-01'))
142
+ * Deadline.at('2025-01-01T00:00:00Z')
143
+ * ```
144
+ */
145
+ at(date) {
146
+ const d = typeof date === 'string' ? new Date(date) : date;
147
+ return Math.floor(d.getTime() / 1000);
148
+ },
149
+ /**
150
+ * Check if deadline has passed
151
+ *
152
+ * @param deadline - Unix timestamp in seconds
153
+ * @returns true if deadline is in the past
154
+ */
155
+ isPast(deadline) {
156
+ return deadline <= Math.floor(Date.now() / 1000);
157
+ },
158
+ /**
159
+ * Get time remaining until deadline
160
+ *
161
+ * @param deadline - Unix timestamp in seconds
162
+ * @returns Time remaining in seconds (negative if past)
163
+ */
164
+ timeRemaining(deadline) {
165
+ return deadline - Math.floor(Date.now() / 1000);
166
+ },
167
+ /**
168
+ * Format deadline as human-readable string
169
+ *
170
+ * @param deadline - Unix timestamp in seconds
171
+ * @returns Human-readable string (e.g., "in 2 hours", "expired 1 day ago")
172
+ */
173
+ format(deadline) {
174
+ const remaining = exports.Deadline.timeRemaining(deadline);
175
+ if (remaining <= 0) {
176
+ const ago = Math.abs(remaining);
177
+ if (ago < 60)
178
+ return `expired ${ago} seconds ago`;
179
+ if (ago < 3600)
180
+ return `expired ${Math.floor(ago / 60)} minutes ago`;
181
+ if (ago < 86400)
182
+ return `expired ${Math.floor(ago / 3600)} hours ago`;
183
+ return `expired ${Math.floor(ago / 86400)} days ago`;
184
+ }
185
+ if (remaining < 60)
186
+ return `in ${remaining} seconds`;
187
+ if (remaining < 3600)
188
+ return `in ${Math.floor(remaining / 60)} minutes`;
189
+ if (remaining < 86400)
190
+ return `in ${Math.floor(remaining / 3600)} hours`;
191
+ return `in ${Math.floor(remaining / 86400)} days`;
192
+ },
193
+ };
194
+ /**
195
+ * Address utilities
196
+ */
197
+ exports.Address = {
198
+ /**
199
+ * Normalize address to lowercase with 0x prefix
200
+ *
201
+ * @param address - Ethereum address
202
+ * @returns Normalized address
203
+ */
204
+ normalize(address) {
205
+ return address.toLowerCase();
206
+ },
207
+ /**
208
+ * Check if two addresses are the same (case-insensitive)
209
+ *
210
+ * @param a - First address
211
+ * @param b - Second address
212
+ * @returns true if addresses match
213
+ */
214
+ equals(a, b) {
215
+ return a.toLowerCase() === b.toLowerCase();
216
+ },
217
+ /**
218
+ * Truncate address for display
219
+ *
220
+ * @param address - Ethereum address
221
+ * @param chars - Characters to show on each side (default: 4)
222
+ * @returns Truncated address (e.g., "0x1234...5678")
223
+ */
224
+ truncate(address, chars = 4) {
225
+ if (address.length <= 2 + chars * 2) {
226
+ return address;
227
+ }
228
+ return `${address.slice(0, 2 + chars)}...${address.slice(-chars)}`;
229
+ },
230
+ /**
231
+ * Check if string is valid Ethereum address format
232
+ *
233
+ * @param address - String to check
234
+ * @returns true if valid address format
235
+ */
236
+ isValid(address) {
237
+ return /^0x[0-9a-fA-F]{40}$/.test(address);
238
+ },
239
+ /**
240
+ * Check if address is zero address
241
+ *
242
+ * @param address - Ethereum address
243
+ * @returns true if zero address
244
+ */
245
+ isZero(address) {
246
+ return address.toLowerCase() === '0x0000000000000000000000000000000000000000';
247
+ },
248
+ };
249
+ /**
250
+ * Bytes32 utilities
251
+ */
252
+ exports.Bytes32 = {
253
+ /**
254
+ * Check if string is valid bytes32 format
255
+ *
256
+ * @param value - String to check
257
+ * @returns true if valid bytes32 format
258
+ */
259
+ isValid(value) {
260
+ return /^0x[0-9a-fA-F]{64}$/.test(value);
261
+ },
262
+ /**
263
+ * Normalize bytes32 to lowercase
264
+ *
265
+ * @param value - Bytes32 string
266
+ * @returns Normalized lowercase string
267
+ */
268
+ normalize(value) {
269
+ return value.toLowerCase();
270
+ },
271
+ /**
272
+ * Check if two bytes32 values are equal
273
+ *
274
+ * @param a - First value
275
+ * @param b - Second value
276
+ * @returns true if equal
277
+ */
278
+ equals(a, b) {
279
+ return a.toLowerCase() === b.toLowerCase();
280
+ },
281
+ /**
282
+ * Check if bytes32 is zero
283
+ *
284
+ * @param value - Bytes32 string
285
+ * @returns true if zero
286
+ */
287
+ isZero(value) {
288
+ return value.toLowerCase() === '0x' + '0'.repeat(64);
289
+ },
290
+ /**
291
+ * Create zero bytes32
292
+ *
293
+ * @returns Zero bytes32 string
294
+ */
295
+ zero() {
296
+ return '0x' + '0'.repeat(64);
297
+ },
298
+ /**
299
+ * Truncate bytes32 for display
300
+ *
301
+ * @param value - Bytes32 string
302
+ * @param chars - Characters to show on each side (default: 6)
303
+ * @returns Truncated string (e.g., "0x123456...abcdef")
304
+ */
305
+ truncate(value, chars = 6) {
306
+ if (value.length <= 2 + chars * 2) {
307
+ return value;
308
+ }
309
+ return `${value.slice(0, 2 + chars)}...${value.slice(-chars)}`;
310
+ },
311
+ };
312
+ /**
313
+ * State machine utilities
314
+ */
315
+ exports.State = {
316
+ /**
317
+ * Valid ACTP states
318
+ */
319
+ STATES: [
320
+ 'INITIATED',
321
+ 'QUOTED',
322
+ 'COMMITTED',
323
+ 'IN_PROGRESS',
324
+ 'DELIVERED',
325
+ 'SETTLED',
326
+ 'DISPUTED',
327
+ 'CANCELLED',
328
+ ],
329
+ /**
330
+ * Terminal states (no further transitions)
331
+ */
332
+ TERMINAL: ['SETTLED', 'CANCELLED'],
333
+ /**
334
+ * Check if state is terminal
335
+ *
336
+ * @param state - State to check
337
+ * @returns true if terminal state
338
+ */
339
+ isTerminal(state) {
340
+ return exports.State.TERMINAL.includes(state);
341
+ },
342
+ /**
343
+ * Check if state is valid
344
+ *
345
+ * @param state - State to check
346
+ * @returns true if valid state
347
+ */
348
+ isValid(state) {
349
+ return exports.State.STATES.includes(state);
350
+ },
351
+ /**
352
+ * Get valid next states from current state
353
+ *
354
+ * SECURITY FIX (CRITICAL-1): Must match ACTPKernel contract state machine exactly
355
+ * Per CLAUDE.md §Architecture Overview - ACTP Protocol State Machine
356
+ *
357
+ * @param currentState - Current state
358
+ * @returns Array of valid next states
359
+ */
360
+ validTransitions(currentState) {
361
+ const transitions = {
362
+ INITIATED: ['QUOTED', 'COMMITTED', 'CANCELLED'],
363
+ QUOTED: ['COMMITTED', 'CANCELLED'],
364
+ // Can skip IN_PROGRESS and go directly to DELIVERED
365
+ COMMITTED: ['IN_PROGRESS', 'DELIVERED', 'CANCELLED'],
366
+ // No DISPUTED from IN_PROGRESS - only after DELIVERED
367
+ IN_PROGRESS: ['DELIVERED', 'CANCELLED'],
368
+ DELIVERED: ['SETTLED', 'DISPUTED'],
369
+ // Disputes can only resolve to SETTLED (no CANCELLED)
370
+ DISPUTED: ['SETTLED'],
371
+ SETTLED: [],
372
+ CANCELLED: [],
373
+ };
374
+ return transitions[currentState] || [];
375
+ },
376
+ /**
377
+ * Check if transition is valid
378
+ *
379
+ * @param from - Current state
380
+ * @param to - Target state
381
+ * @returns true if transition is valid
382
+ */
383
+ canTransition(from, to) {
384
+ return exports.State.validTransitions(from).includes(to);
385
+ },
386
+ };
387
+ /**
388
+ * Dispute window utilities
389
+ */
390
+ exports.DisputeWindow = {
391
+ /**
392
+ * Default dispute window in seconds (2 days)
393
+ */
394
+ DEFAULT: 172800,
395
+ /**
396
+ * Minimum dispute window in seconds (1 hour)
397
+ */
398
+ MIN: 3600,
399
+ /**
400
+ * Maximum dispute window in seconds (30 days)
401
+ */
402
+ MAX: 30 * 24 * 3600,
403
+ /**
404
+ * Convert hours to seconds
405
+ */
406
+ hours(h) {
407
+ return h * 3600;
408
+ },
409
+ /**
410
+ * Convert days to seconds
411
+ */
412
+ days(d) {
413
+ return d * 86400;
414
+ },
415
+ /**
416
+ * Check if dispute window is still active
417
+ *
418
+ * @param completedAt - Completion timestamp
419
+ * @param windowSeconds - Dispute window in seconds
420
+ * @returns true if window is still active
421
+ */
422
+ isActive(completedAt, windowSeconds) {
423
+ const expiresAt = completedAt + windowSeconds;
424
+ return Math.floor(Date.now() / 1000) < expiresAt;
425
+ },
426
+ /**
427
+ * Get time remaining in dispute window
428
+ *
429
+ * @param completedAt - Completion timestamp
430
+ * @param windowSeconds - Dispute window in seconds
431
+ * @returns Seconds remaining (0 if expired)
432
+ */
433
+ remaining(completedAt, windowSeconds) {
434
+ const expiresAt = completedAt + windowSeconds;
435
+ const now = Math.floor(Date.now() / 1000);
436
+ return Math.max(0, expiresAt - now);
437
+ },
438
+ };
439
+ /**
440
+ * ============================================================================
441
+ * Convenience Wrappers for Common Operations
442
+ * ============================================================================
443
+ */
444
+ /**
445
+ * Parse USDC amount string to wei (6 decimals)
446
+ *
447
+ * Convenience wrapper for USDC.toWei()
448
+ *
449
+ * @param amount - Amount in USDC (e.g., "100" or "0.50")
450
+ * @returns BigInt in wei (e.g., 100000000n for $100)
451
+ *
452
+ * @example
453
+ * ```typescript
454
+ * parseUSDC("100") // 100_000_000n
455
+ * parseUSDC("0.50") // 500_000n
456
+ * parseUSDC(100) // 100_000_000n
457
+ * ```
458
+ */
459
+ function parseUSDC(amount) {
460
+ return exports.USDC.toWei(amount);
461
+ }
462
+ exports.parseUSDC = parseUSDC;
463
+ /**
464
+ * Format USDC wei to human-readable string
465
+ *
466
+ * Convenience wrapper for USDC.fromWei()
467
+ *
468
+ * @param wei - Amount in wei (BigInt or string)
469
+ * @returns Formatted string (e.g., "100.00")
470
+ *
471
+ * @example
472
+ * ```typescript
473
+ * formatUSDC(100_000_000n) // "100.00"
474
+ * formatUSDC("100000000") // "100.00"
475
+ * formatUSDC(500_000n) // "0.50"
476
+ * ```
477
+ */
478
+ function formatUSDC(wei) {
479
+ return exports.USDC.fromWei(wei);
480
+ }
481
+ exports.formatUSDC = formatUSDC;
482
+ /**
483
+ * Shorten Ethereum address for display
484
+ *
485
+ * Convenience wrapper for Address.truncate()
486
+ *
487
+ * @param address - Full Ethereum address
488
+ * @param chars - Characters to show on each side (default: 4)
489
+ * @returns Shortened address (e.g., "0x1234...abcd")
490
+ *
491
+ * @example
492
+ * ```typescript
493
+ * shortenAddress("0x1234567890123456789012345678901234567890") // "0x1234...7890"
494
+ * shortenAddress("0x1234567890123456789012345678901234567890", 6) // "0x123456...567890"
495
+ * ```
496
+ */
497
+ function shortenAddress(address, chars = 4) {
498
+ return exports.Address.truncate(address, chars);
499
+ }
500
+ exports.shortenAddress = shortenAddress;
501
+ /**
502
+ * Service metadata utilities for ACTP transactions
503
+ *
504
+ * SECURITY FIX (CRITICAL): The ACTPKernel contract expects a bytes32 serviceHash,
505
+ * not a raw JSON string. This utility properly hashes metadata before on-chain calls.
506
+ */
507
+ exports.ServiceHash = {
508
+ /**
509
+ * Create canonical JSON from service metadata
510
+ *
511
+ * SECURITY: Uses deterministic key ordering to ensure consistent hashes
512
+ *
513
+ * @param metadata - Service metadata object
514
+ * @returns Canonical JSON string
515
+ */
516
+ toCanonical(metadata) {
517
+ // Sort keys for deterministic output
518
+ const canonical = {
519
+ service: metadata.service,
520
+ ...(metadata.input !== undefined && { input: metadata.input }),
521
+ ...(metadata.version !== undefined && { version: metadata.version }),
522
+ ...(metadata.timestamp !== undefined && { timestamp: metadata.timestamp }),
523
+ };
524
+ return JSON.stringify(canonical);
525
+ },
526
+ /**
527
+ * Hash service metadata to bytes32 using keccak256
528
+ *
529
+ * SECURITY FIX (CRITICAL): This is what should be passed to ACTPKernel.createTransaction()
530
+ *
531
+ * @param metadata - Service metadata (string or object)
532
+ * @returns bytes32 hash string (0x-prefixed, 64 hex chars)
533
+ *
534
+ * @example
535
+ * ```typescript
536
+ * const hash = ServiceHash.hash({ service: 'echo', input: 'hello' });
537
+ * // Returns: 0x1234...abcd (bytes32)
538
+ * ```
539
+ */
540
+ hash(metadata) {
541
+ // Dynamic import to avoid circular dependencies
542
+ const { keccak256, toUtf8Bytes } = require('ethers');
543
+ const canonical = typeof metadata === 'string'
544
+ ? metadata
545
+ : exports.ServiceHash.toCanonical(metadata);
546
+ return keccak256(toUtf8Bytes(canonical));
547
+ },
548
+ /**
549
+ * Create service metadata from legacy format
550
+ *
551
+ * Parses the old "service:X;input:Y" format into structured metadata
552
+ *
553
+ * @param legacyFormat - Legacy service description string
554
+ * @returns Parsed ServiceMetadata or null if invalid
555
+ */
556
+ fromLegacy(legacyFormat) {
557
+ // Parse "service:NAME;input:JSON" format
558
+ const serviceMatch = legacyFormat.match(/^service:([^;]+)/);
559
+ if (!serviceMatch)
560
+ return null;
561
+ const service = serviceMatch[1];
562
+ const inputMatch = legacyFormat.match(/;input:(.+)$/);
563
+ let input = undefined;
564
+ if (inputMatch) {
565
+ try {
566
+ input = JSON.parse(inputMatch[1]);
567
+ }
568
+ catch {
569
+ // If not valid JSON, use as string
570
+ input = inputMatch[1];
571
+ }
572
+ }
573
+ return { service, input };
574
+ },
575
+ /**
576
+ * Extract service name from metadata hash (requires off-chain lookup)
577
+ *
578
+ * NOTE: The hash cannot be reversed. This is a helper for when you have
579
+ * both the hash and the original metadata stored off-chain.
580
+ *
581
+ * @param metadata - Original metadata
582
+ * @returns Service name
583
+ */
584
+ getServiceName(metadata) {
585
+ if (typeof metadata === 'string') {
586
+ const parsed = exports.ServiceHash.fromLegacy(metadata);
587
+ return parsed?.service || 'unknown';
588
+ }
589
+ return metadata.service;
590
+ },
591
+ /**
592
+ * Validate bytes32 format
593
+ *
594
+ * @param value - Value to check
595
+ * @returns true if valid bytes32 format
596
+ */
597
+ isValidHash(value) {
598
+ return /^0x[0-9a-fA-F]{64}$/.test(value);
599
+ },
600
+ /**
601
+ * Zero hash (empty service metadata)
602
+ */
603
+ ZERO: '0x0000000000000000000000000000000000000000000000000000000000000000',
604
+ };
605
+ /**
606
+ * Hash service description for on-chain storage
607
+ *
608
+ * Convenience function for ServiceHash.hash()
609
+ *
610
+ * @param service - Service name
611
+ * @param input - Input data (optional)
612
+ * @returns bytes32 hash
613
+ *
614
+ * @example
615
+ * ```typescript
616
+ * const hash = hashServiceMetadata('echo', { text: 'hello' });
617
+ * ```
618
+ */
619
+ function hashServiceMetadata(service, input) {
620
+ return exports.ServiceHash.hash({ service, input });
621
+ }
622
+ exports.hashServiceMetadata = hashServiceMetadata;
623
+ //# sourceMappingURL=Helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Helpers.js","sourceRoot":"","sources":["../../src/utils/Helpers.ts"],"names":[],"mappings":"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"}