@agirails/sdk 2.0.1-beta → 2.0.3

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 (413) 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/BasicAdapter.d.ts +152 -0
  16. package/dist/adapters/BasicAdapter.d.ts.map +1 -0
  17. package/dist/adapters/BasicAdapter.js +168 -0
  18. package/dist/adapters/BasicAdapter.js.map +1 -0
  19. package/dist/adapters/BeginnerAdapter.d.ts +152 -0
  20. package/dist/adapters/BeginnerAdapter.d.ts.map +1 -0
  21. package/dist/adapters/BeginnerAdapter.js +168 -0
  22. package/dist/adapters/BeginnerAdapter.js.map +1 -0
  23. package/dist/adapters/IntermediateAdapter.d.ts +211 -0
  24. package/dist/adapters/IntermediateAdapter.d.ts.map +1 -0
  25. package/dist/adapters/IntermediateAdapter.js +260 -0
  26. package/dist/adapters/IntermediateAdapter.js.map +1 -0
  27. package/dist/adapters/StandardAdapter.d.ts +211 -0
  28. package/dist/adapters/StandardAdapter.d.ts.map +1 -0
  29. package/dist/adapters/StandardAdapter.js +260 -0
  30. package/dist/adapters/StandardAdapter.js.map +1 -0
  31. package/dist/adapters/index.d.ts +15 -0
  32. package/dist/adapters/index.d.ts.map +1 -0
  33. package/dist/adapters/index.js +26 -0
  34. package/dist/adapters/index.js.map +1 -0
  35. package/dist/builders/DeliveryProofBuilder.d.ts +60 -1
  36. package/dist/builders/DeliveryProofBuilder.d.ts.map +1 -1
  37. package/dist/builders/DeliveryProofBuilder.js +81 -5
  38. package/dist/builders/DeliveryProofBuilder.js.map +1 -1
  39. package/dist/builders/QuoteBuilder.d.ts +101 -0
  40. package/dist/builders/QuoteBuilder.d.ts.map +1 -1
  41. package/dist/builders/QuoteBuilder.js +120 -3
  42. package/dist/builders/QuoteBuilder.js.map +1 -1
  43. package/dist/builders/index.d.ts +4 -0
  44. package/dist/builders/index.d.ts.map +1 -1
  45. package/dist/builders/index.js +4 -0
  46. package/dist/builders/index.js.map +1 -1
  47. package/dist/cli/commands/balance.d.ts +13 -0
  48. package/dist/cli/commands/balance.d.ts.map +1 -0
  49. package/dist/cli/commands/balance.js +89 -0
  50. package/dist/cli/commands/balance.js.map +1 -0
  51. package/dist/cli/commands/batch.d.ts +24 -0
  52. package/dist/cli/commands/batch.d.ts.map +1 -0
  53. package/dist/cli/commands/batch.js +424 -0
  54. package/dist/cli/commands/batch.js.map +1 -0
  55. package/dist/cli/commands/config.d.ts +13 -0
  56. package/dist/cli/commands/config.d.ts.map +1 -0
  57. package/dist/cli/commands/config.js +192 -0
  58. package/dist/cli/commands/config.js.map +1 -0
  59. package/dist/cli/commands/init.d.ts +19 -0
  60. package/dist/cli/commands/init.d.ts.map +1 -0
  61. package/dist/cli/commands/init.js +143 -0
  62. package/dist/cli/commands/init.js.map +1 -0
  63. package/dist/cli/commands/mint.d.ts +13 -0
  64. package/dist/cli/commands/mint.d.ts.map +1 -0
  65. package/dist/cli/commands/mint.js +91 -0
  66. package/dist/cli/commands/mint.js.map +1 -0
  67. package/dist/cli/commands/pay.d.ts +18 -0
  68. package/dist/cli/commands/pay.d.ts.map +1 -0
  69. package/dist/cli/commands/pay.js +87 -0
  70. package/dist/cli/commands/pay.js.map +1 -0
  71. package/dist/cli/commands/simulate.d.ts +32 -0
  72. package/dist/cli/commands/simulate.d.ts.map +1 -0
  73. package/dist/cli/commands/simulate.js +290 -0
  74. package/dist/cli/commands/simulate.js.map +1 -0
  75. package/dist/cli/commands/time.d.ts +29 -0
  76. package/dist/cli/commands/time.d.ts.map +1 -0
  77. package/dist/cli/commands/time.js +252 -0
  78. package/dist/cli/commands/time.js.map +1 -0
  79. package/dist/cli/commands/tx.d.ts +16 -0
  80. package/dist/cli/commands/tx.d.ts.map +1 -0
  81. package/dist/cli/commands/tx.js +379 -0
  82. package/dist/cli/commands/tx.js.map +1 -0
  83. package/dist/cli/commands/watch.d.ts +20 -0
  84. package/dist/cli/commands/watch.d.ts.map +1 -0
  85. package/dist/cli/commands/watch.js +160 -0
  86. package/dist/cli/commands/watch.js.map +1 -0
  87. package/dist/cli/index.d.ts +17 -0
  88. package/dist/cli/index.d.ts.map +1 -0
  89. package/dist/cli/index.js +104 -0
  90. package/dist/cli/index.js.map +1 -0
  91. package/dist/cli/utils/client.d.ts +70 -0
  92. package/dist/cli/utils/client.d.ts.map +1 -0
  93. package/dist/cli/utils/client.js +240 -0
  94. package/dist/cli/utils/client.js.map +1 -0
  95. package/dist/cli/utils/config.d.ts +91 -0
  96. package/dist/cli/utils/config.d.ts.map +1 -0
  97. package/dist/cli/utils/config.js +240 -0
  98. package/dist/cli/utils/config.js.map +1 -0
  99. package/dist/cli/utils/output.d.ts +174 -0
  100. package/dist/cli/utils/output.d.ts.map +1 -0
  101. package/dist/cli/utils/output.js +380 -0
  102. package/dist/cli/utils/output.js.map +1 -0
  103. package/dist/config/networks.d.ts +28 -0
  104. package/dist/config/networks.d.ts.map +1 -1
  105. package/dist/config/networks.js +60 -12
  106. package/dist/config/networks.js.map +1 -1
  107. package/dist/errors/index.d.ts +165 -2
  108. package/dist/errors/index.d.ts.map +1 -1
  109. package/dist/errors/index.js +260 -2
  110. package/dist/errors/index.js.map +1 -1
  111. package/dist/index.d.ts +61 -13
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +141 -36
  114. package/dist/index.js.map +1 -1
  115. package/dist/level0/Provider.d.ts +106 -0
  116. package/dist/level0/Provider.d.ts.map +1 -0
  117. package/dist/level0/Provider.js +10 -0
  118. package/dist/level0/Provider.js.map +1 -0
  119. package/dist/level0/ServiceDirectory.d.ts +74 -0
  120. package/dist/level0/ServiceDirectory.d.ts.map +1 -0
  121. package/dist/level0/ServiceDirectory.js +122 -0
  122. package/dist/level0/ServiceDirectory.js.map +1 -0
  123. package/dist/level0/index.d.ts +10 -0
  124. package/dist/level0/index.d.ts.map +1 -0
  125. package/dist/level0/index.js +15 -0
  126. package/dist/level0/index.js.map +1 -0
  127. package/dist/level0/provide.d.ts +51 -0
  128. package/dist/level0/provide.d.ts.map +1 -0
  129. package/dist/level0/provide.js +113 -0
  130. package/dist/level0/provide.js.map +1 -0
  131. package/dist/level0/request.d.ts +53 -0
  132. package/dist/level0/request.d.ts.map +1 -0
  133. package/dist/level0/request.js +462 -0
  134. package/dist/level0/request.js.map +1 -0
  135. package/dist/level1/Agent.d.ts +472 -0
  136. package/dist/level1/Agent.d.ts.map +1 -0
  137. package/dist/level1/Agent.js +1091 -0
  138. package/dist/level1/Agent.js.map +1 -0
  139. package/dist/level1/index.d.ts +10 -0
  140. package/dist/level1/index.d.ts.map +1 -0
  141. package/dist/level1/index.js +30 -0
  142. package/dist/level1/index.js.map +1 -0
  143. package/dist/level1/pricing/PriceCalculator.d.ts +62 -0
  144. package/dist/level1/pricing/PriceCalculator.d.ts.map +1 -0
  145. package/dist/level1/pricing/PriceCalculator.js +237 -0
  146. package/dist/level1/pricing/PriceCalculator.js.map +1 -0
  147. package/dist/level1/pricing/PricingStrategy.d.ts +179 -0
  148. package/dist/level1/pricing/PricingStrategy.d.ts.map +1 -0
  149. package/dist/level1/pricing/PricingStrategy.js +11 -0
  150. package/dist/level1/pricing/PricingStrategy.js.map +1 -0
  151. package/dist/level1/types/Job.d.ts +166 -0
  152. package/dist/level1/types/Job.d.ts.map +1 -0
  153. package/dist/level1/types/Job.js +11 -0
  154. package/dist/level1/types/Job.js.map +1 -0
  155. package/dist/level1/types/Options.d.ts +258 -0
  156. package/dist/level1/types/Options.d.ts.map +1 -0
  157. package/dist/level1/types/Options.js +8 -0
  158. package/dist/level1/types/Options.js.map +1 -0
  159. package/dist/level1/types/index.d.ts +8 -0
  160. package/dist/level1/types/index.d.ts.map +1 -0
  161. package/dist/level1/types/index.js +8 -0
  162. package/dist/level1/types/index.js.map +1 -0
  163. package/dist/protocol/ACTPKernel.d.ts +229 -2
  164. package/dist/protocol/ACTPKernel.d.ts.map +1 -1
  165. package/dist/protocol/ACTPKernel.js +367 -33
  166. package/dist/protocol/ACTPKernel.js.map +1 -1
  167. package/dist/protocol/AgentRegistry.d.ts +177 -0
  168. package/dist/protocol/AgentRegistry.d.ts.map +1 -0
  169. package/dist/protocol/AgentRegistry.js +449 -0
  170. package/dist/protocol/AgentRegistry.js.map +1 -0
  171. package/dist/protocol/DIDManager.d.ts +289 -0
  172. package/dist/protocol/DIDManager.d.ts.map +1 -0
  173. package/dist/protocol/DIDManager.js +481 -0
  174. package/dist/protocol/DIDManager.js.map +1 -0
  175. package/dist/protocol/DIDResolver.d.ts +236 -0
  176. package/dist/protocol/DIDResolver.d.ts.map +1 -0
  177. package/dist/protocol/DIDResolver.js +495 -0
  178. package/dist/protocol/DIDResolver.js.map +1 -0
  179. package/dist/protocol/EASHelper.d.ts +57 -2
  180. package/dist/protocol/EASHelper.d.ts.map +1 -1
  181. package/dist/protocol/EASHelper.js +230 -37
  182. package/dist/protocol/EASHelper.js.map +1 -1
  183. package/dist/protocol/EscrowVault.d.ts +93 -2
  184. package/dist/protocol/EscrowVault.d.ts.map +1 -1
  185. package/dist/protocol/EscrowVault.js +122 -33
  186. package/dist/protocol/EscrowVault.js.map +1 -1
  187. package/dist/protocol/EventMonitor.d.ts +45 -1
  188. package/dist/protocol/EventMonitor.d.ts.map +1 -1
  189. package/dist/protocol/EventMonitor.js +64 -8
  190. package/dist/protocol/EventMonitor.js.map +1 -1
  191. package/dist/protocol/MessageSigner.d.ts +116 -2
  192. package/dist/protocol/MessageSigner.d.ts.map +1 -1
  193. package/dist/protocol/MessageSigner.js +215 -9
  194. package/dist/protocol/MessageSigner.js.map +1 -1
  195. package/dist/protocol/ProofGenerator.d.ts +93 -0
  196. package/dist/protocol/ProofGenerator.d.ts.map +1 -1
  197. package/dist/protocol/ProofGenerator.js +194 -9
  198. package/dist/protocol/ProofGenerator.js.map +1 -1
  199. package/dist/protocol/QuoteBuilder.d.ts +8 -0
  200. package/dist/protocol/QuoteBuilder.d.ts.map +1 -1
  201. package/dist/protocol/QuoteBuilder.js +8 -0
  202. package/dist/protocol/QuoteBuilder.js.map +1 -1
  203. package/dist/runtime/BlockchainRuntime.d.ts +360 -0
  204. package/dist/runtime/BlockchainRuntime.d.ts.map +1 -0
  205. package/dist/runtime/BlockchainRuntime.js +767 -0
  206. package/dist/runtime/BlockchainRuntime.js.map +1 -0
  207. package/dist/runtime/IACTPRuntime.d.ts +271 -0
  208. package/dist/runtime/IACTPRuntime.d.ts.map +1 -0
  209. package/dist/runtime/IACTPRuntime.js +15 -0
  210. package/dist/runtime/IACTPRuntime.js.map +1 -0
  211. package/dist/runtime/MockRuntime.d.ts +445 -0
  212. package/dist/runtime/MockRuntime.d.ts.map +1 -0
  213. package/dist/runtime/MockRuntime.js +1065 -0
  214. package/dist/runtime/MockRuntime.js.map +1 -0
  215. package/dist/runtime/MockStateManager.d.ts +233 -0
  216. package/dist/runtime/MockStateManager.d.ts.map +1 -0
  217. package/dist/runtime/MockStateManager.js +533 -0
  218. package/dist/runtime/MockStateManager.js.map +1 -0
  219. package/dist/runtime/index.d.ts +14 -0
  220. package/dist/runtime/index.d.ts.map +1 -0
  221. package/dist/runtime/index.js +42 -0
  222. package/dist/runtime/index.js.map +1 -0
  223. package/dist/runtime/types/MockState.d.ts +167 -0
  224. package/dist/runtime/types/MockState.d.ts.map +1 -0
  225. package/dist/runtime/types/MockState.js +43 -0
  226. package/dist/runtime/types/MockState.js.map +1 -0
  227. package/dist/types/agent.d.ts +76 -0
  228. package/dist/types/agent.d.ts.map +1 -0
  229. package/dist/types/agent.js +8 -0
  230. package/dist/types/agent.js.map +1 -0
  231. package/dist/types/did.d.ts +192 -0
  232. package/dist/types/did.d.ts.map +1 -0
  233. package/dist/types/did.js +38 -0
  234. package/dist/types/did.js.map +1 -0
  235. package/dist/types/eip712.d.ts +34 -0
  236. package/dist/types/eip712.d.ts.map +1 -1
  237. package/dist/types/eip712.js +31 -5
  238. package/dist/types/eip712.js.map +1 -1
  239. package/dist/types/escrow.d.ts +17 -10
  240. package/dist/types/escrow.d.ts.map +1 -1
  241. package/dist/types/index.d.ts +5 -0
  242. package/dist/types/index.d.ts.map +1 -1
  243. package/dist/types/index.js +8 -0
  244. package/dist/types/index.js.map +1 -1
  245. package/dist/types/message.d.ts +32 -0
  246. package/dist/types/message.d.ts.map +1 -1
  247. package/dist/types/message.js +4 -0
  248. package/dist/types/message.js.map +1 -1
  249. package/dist/types/state.d.ts +28 -0
  250. package/dist/types/state.d.ts.map +1 -1
  251. package/dist/types/state.js +37 -6
  252. package/dist/types/state.js.map +1 -1
  253. package/dist/types/transaction.d.ts +17 -0
  254. package/dist/types/transaction.d.ts.map +1 -1
  255. package/dist/utils/ErrorRecoveryGuide.d.ts +125 -0
  256. package/dist/utils/ErrorRecoveryGuide.d.ts.map +1 -0
  257. package/dist/utils/ErrorRecoveryGuide.js +579 -0
  258. package/dist/utils/ErrorRecoveryGuide.js.map +1 -0
  259. package/dist/utils/Helpers.d.ts +453 -0
  260. package/dist/utils/Helpers.d.ts.map +1 -0
  261. package/dist/utils/Helpers.js +623 -0
  262. package/dist/utils/Helpers.js.map +1 -0
  263. package/dist/utils/IPFSClient.d.ts +113 -0
  264. package/dist/utils/IPFSClient.d.ts.map +1 -1
  265. package/dist/utils/IPFSClient.js +128 -7
  266. package/dist/utils/IPFSClient.js.map +1 -1
  267. package/dist/utils/Logger.d.ts +195 -0
  268. package/dist/utils/Logger.d.ts.map +1 -0
  269. package/dist/utils/Logger.js +382 -0
  270. package/dist/utils/Logger.js.map +1 -0
  271. package/dist/utils/NonceManager.d.ts +234 -1
  272. package/dist/utils/NonceManager.d.ts.map +1 -1
  273. package/dist/utils/NonceManager.js +372 -7
  274. package/dist/utils/NonceManager.js.map +1 -1
  275. package/dist/utils/RateLimiter.d.ts +253 -0
  276. package/dist/utils/RateLimiter.d.ts.map +1 -0
  277. package/dist/utils/RateLimiter.js +424 -0
  278. package/dist/utils/RateLimiter.js.map +1 -0
  279. package/dist/utils/ReceivedNonceTracker.d.ts +175 -0
  280. package/dist/utils/ReceivedNonceTracker.d.ts.map +1 -1
  281. package/dist/utils/ReceivedNonceTracker.js +261 -5
  282. package/dist/utils/ReceivedNonceTracker.js.map +1 -1
  283. package/dist/utils/SDKLifecycle.d.ts +156 -0
  284. package/dist/utils/SDKLifecycle.d.ts.map +1 -0
  285. package/dist/utils/SDKLifecycle.js +347 -0
  286. package/dist/utils/SDKLifecycle.js.map +1 -0
  287. package/dist/utils/SecureNonce.d.ts +57 -0
  288. package/dist/utils/SecureNonce.d.ts.map +1 -0
  289. package/dist/utils/SecureNonce.js +80 -0
  290. package/dist/utils/SecureNonce.js.map +1 -0
  291. package/dist/utils/Semaphore.d.ts +123 -0
  292. package/dist/utils/Semaphore.d.ts.map +1 -0
  293. package/dist/utils/Semaphore.js +247 -0
  294. package/dist/utils/Semaphore.js.map +1 -0
  295. package/dist/utils/UsedAttestationTracker.d.ts +167 -0
  296. package/dist/utils/UsedAttestationTracker.d.ts.map +1 -0
  297. package/dist/utils/UsedAttestationTracker.js +309 -0
  298. package/dist/utils/UsedAttestationTracker.js.map +1 -0
  299. package/dist/utils/canonicalJson.d.ts +22 -0
  300. package/dist/utils/canonicalJson.d.ts.map +1 -1
  301. package/dist/utils/canonicalJson.js +26 -3
  302. package/dist/utils/canonicalJson.js.map +1 -1
  303. package/dist/utils/computeTypeHash.d.ts +14 -0
  304. package/dist/utils/computeTypeHash.d.ts.map +1 -1
  305. package/dist/utils/computeTypeHash.js +19 -2
  306. package/dist/utils/computeTypeHash.js.map +1 -1
  307. package/dist/utils/fsSafe.d.ts +14 -0
  308. package/dist/utils/fsSafe.d.ts.map +1 -0
  309. package/dist/utils/fsSafe.js +89 -0
  310. package/dist/utils/fsSafe.js.map +1 -0
  311. package/dist/utils/index.d.ts +15 -0
  312. package/dist/utils/index.d.ts.map +1 -0
  313. package/dist/utils/index.js +51 -0
  314. package/dist/utils/index.js.map +1 -0
  315. package/dist/utils/security.d.ts +147 -0
  316. package/dist/utils/security.d.ts.map +1 -0
  317. package/dist/utils/security.js +391 -0
  318. package/dist/utils/security.js.map +1 -0
  319. package/dist/utils/validation.d.ts +40 -0
  320. package/dist/utils/validation.d.ts.map +1 -1
  321. package/dist/utils/validation.js +184 -7
  322. package/dist/utils/validation.js.map +1 -1
  323. package/package.json +54 -37
  324. package/src/ACTPClient.ts +692 -178
  325. package/src/abi/AgentRegistry.json +782 -0
  326. package/src/abi/EscrowVault.json +106 -38
  327. package/src/abi/IdentityRegistry.json +316 -0
  328. package/src/adapters/BaseAdapter.ts +473 -0
  329. package/src/adapters/BasicAdapter.ts +232 -0
  330. package/src/adapters/StandardAdapter.ts +316 -0
  331. package/src/adapters/index.ts +25 -0
  332. package/src/builders/DeliveryProofBuilder.ts +3 -2
  333. package/src/cli/commands/balance.ts +110 -0
  334. package/src/cli/commands/batch.ts +487 -0
  335. package/src/cli/commands/config.ts +231 -0
  336. package/src/cli/commands/init.ts +161 -0
  337. package/src/cli/commands/mint.ts +116 -0
  338. package/src/cli/commands/pay.ts +113 -0
  339. package/src/cli/commands/simulate.ts +345 -0
  340. package/src/cli/commands/time.ts +303 -0
  341. package/src/cli/commands/tx.ts +448 -0
  342. package/src/cli/commands/watch.ts +211 -0
  343. package/src/cli/index.ts +116 -0
  344. package/src/cli/utils/client.ts +249 -0
  345. package/src/cli/utils/config.ts +282 -0
  346. package/src/cli/utils/output.ts +465 -0
  347. package/src/config/networks.ts +32 -9
  348. package/src/errors/index.ts +298 -1
  349. package/src/index.ts +207 -71
  350. package/src/level0/Provider.ts +117 -0
  351. package/src/level0/ServiceDirectory.ts +131 -0
  352. package/src/level0/index.ts +10 -0
  353. package/src/level0/provide.ts +131 -0
  354. package/src/level0/request.ts +494 -0
  355. package/src/level1/Agent.ts +1432 -0
  356. package/src/level1/index.ts +10 -0
  357. package/src/level1/pricing/PriceCalculator.ts +255 -0
  358. package/src/level1/pricing/PricingStrategy.ts +198 -0
  359. package/src/level1/types/Job.ts +179 -0
  360. package/src/level1/types/Options.ts +291 -0
  361. package/src/level1/types/index.ts +8 -0
  362. package/src/protocol/ACTPKernel.ts +175 -23
  363. package/src/protocol/AgentRegistry.ts +559 -0
  364. package/src/protocol/DIDManager.ts +629 -0
  365. package/src/protocol/DIDResolver.ts +554 -0
  366. package/src/protocol/EASHelper.ts +230 -46
  367. package/src/protocol/EscrowVault.ts +68 -50
  368. package/src/protocol/EventMonitor.ts +44 -15
  369. package/src/protocol/MessageSigner.ts +193 -13
  370. package/src/protocol/ProofGenerator.ts +223 -4
  371. package/src/runtime/BlockchainRuntime.ts +993 -0
  372. package/src/runtime/IACTPRuntime.ts +284 -0
  373. package/src/runtime/MockRuntime.ts +1244 -0
  374. package/src/runtime/MockStateManager.ts +576 -0
  375. package/src/runtime/index.ts +25 -0
  376. package/src/runtime/types/MockState.ts +227 -0
  377. package/src/types/agent.ts +79 -0
  378. package/src/types/did.ts +223 -0
  379. package/src/types/escrow.ts +12 -11
  380. package/src/types/index.ts +5 -1
  381. package/src/types/state.ts +12 -3
  382. package/src/types/transaction.ts +4 -1
  383. package/src/utils/ErrorRecoveryGuide.ts +675 -0
  384. package/src/utils/Helpers.ts +688 -0
  385. package/src/utils/IPFSClient.ts +122 -5
  386. package/src/utils/Logger.ts +484 -0
  387. package/src/utils/NonceManager.ts +305 -8
  388. package/src/utils/RateLimiter.ts +534 -0
  389. package/src/utils/ReceivedNonceTracker.ts +170 -0
  390. package/src/utils/SDKLifecycle.ts +416 -0
  391. package/src/utils/SecureNonce.ts +78 -0
  392. package/src/utils/Semaphore.ts +276 -0
  393. package/src/utils/UsedAttestationTracker.ts +387 -0
  394. package/src/utils/fsSafe.ts +75 -0
  395. package/src/utils/index.ts +80 -0
  396. package/src/utils/security.ts +418 -0
  397. package/src/utils/validation.ts +164 -0
  398. package/src/__tests__/ProofGenerator.test.ts +0 -124
  399. package/src/__tests__/QuoteBuilder.test.ts +0 -516
  400. package/src/__tests__/StateMachine.test.ts +0 -82
  401. package/src/__tests__/builders/DeliveryProofBuilder.test.ts +0 -581
  402. package/src/__tests__/integration/ACTPClient.test.ts +0 -263
  403. package/src/__tests__/integration.test.ts +0 -289
  404. package/src/__tests__/protocol/EASHelper.test.ts +0 -472
  405. package/src/__tests__/protocol/EventMonitor.test.ts +0 -382
  406. package/src/__tests__/security/ACTPKernel.security.test.ts +0 -1167
  407. package/src/__tests__/security/EscrowVault.security.test.ts +0 -570
  408. package/src/__tests__/security/MessageSigner.security.test.ts +0 -286
  409. package/src/__tests__/security/NonceReplay.security.test.ts +0 -501
  410. package/src/__tests__/security/validation.security.test.ts +0 -376
  411. package/src/__tests__/utils/IPFSClient.test.ts +0 -262
  412. package/src/__tests__/utils/NonceManager.test.ts +0 -205
  413. package/src/__tests__/utils/canonicalJson.test.ts +0 -153
@@ -0,0 +1,152 @@
1
+ /**
2
+ * BasicAdapter - High-level, opinionated API for simple use cases
3
+ *
4
+ * Provides the simplest possible interface for creating and checking transactions.
5
+ * Designed for developers who want to "just make it work" without deep protocol knowledge.
6
+ *
7
+ * Key Features:
8
+ * - Smart defaults (24h deadline, 2-day dispute window)
9
+ * - Inferred requester (from constructor)
10
+ * - User-friendly input (strings, no BigInt)
11
+ * - User-friendly output (formatted amounts, ISO dates)
12
+ *
13
+ * @module adapters/BasicAdapter
14
+ */
15
+ import { BaseAdapter } from './BaseAdapter';
16
+ import { IACTPRuntime } from '../runtime/IACTPRuntime';
17
+ import { EASHelper } from '../protocol/EASHelper';
18
+ /**
19
+ * Parameters for creating a simple payment.
20
+ *
21
+ * This is the most user-friendly interface - minimal required fields.
22
+ */
23
+ export interface BasicPayParams {
24
+ /** Recipient address (provider) */
25
+ to: string;
26
+ /** Amount in user-friendly format ("100", "100.50", "100 USDC", "$100") */
27
+ amount: string | number;
28
+ /** Optional: Deadline as relative time ("+24h") or Unix timestamp. Defaults to +24h */
29
+ deadline?: string | number;
30
+ /** Optional: Dispute window in seconds. Defaults to 172800 (2 days) */
31
+ disputeWindow?: number;
32
+ }
33
+ /**
34
+ * Result of creating a payment.
35
+ *
36
+ * Provides user-friendly formatted data (not raw protocol types).
37
+ */
38
+ export interface BasicPayResult {
39
+ /** Transaction ID (bytes32 hex string) */
40
+ txId: string;
41
+ /** Provider address */
42
+ provider: string;
43
+ /** Requester address (caller) */
44
+ requester: string;
45
+ /** Amount in USDC (human-readable, e.g., "100.00 USDC") */
46
+ amount: string;
47
+ /** Deadline as ISO 8601 timestamp */
48
+ deadline: string;
49
+ /** Transaction state */
50
+ state: string;
51
+ }
52
+ /**
53
+ * BasicAdapter - High-level API for simple payment flows.
54
+ *
55
+ * This adapter provides the simplest possible interface:
56
+ * - `pay()` - Create and fund a transaction in one call
57
+ * - `checkStatus()` - Get transaction status with action hints
58
+ *
59
+ * All complexity is hidden behind smart defaults.
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * const client = await ACTPClient.create({ mode: 'mock' });
64
+ *
65
+ * // Simple payment (all defaults)
66
+ * const result = await client.basic.pay({
67
+ * to: '0xProvider123',
68
+ * amount: '100',
69
+ * });
70
+ * console.log('Transaction ID:', result.txId);
71
+ * console.log('Amount:', result.amount); // "100.00 USDC"
72
+ *
73
+ * // Check status
74
+ * const status = await client.basic.checkStatus(result.txId);
75
+ * if (status.canAccept) {
76
+ * console.log('Provider can accept this transaction');
77
+ * }
78
+ * ```
79
+ */
80
+ export declare class BasicAdapter extends BaseAdapter {
81
+ private runtime;
82
+ private easHelper?;
83
+ /**
84
+ * Creates a new BasicAdapter instance.
85
+ *
86
+ * @param runtime - ACTP runtime implementation (MockRuntime or BlockchainRuntime)
87
+ * @param requesterAddress - The requester's Ethereum address
88
+ * @param easHelper - Optional EAS helper for attestation verification (SECURITY FIX C-4)
89
+ */
90
+ constructor(runtime: IACTPRuntime, requesterAddress: string, easHelper?: EASHelper | undefined);
91
+ /**
92
+ * Create a payment transaction with smart defaults.
93
+ *
94
+ * This is the simplest way to create a transaction - just specify
95
+ * recipient and amount. All other parameters use sensible defaults.
96
+ *
97
+ * Smart defaults:
98
+ * - Requester: Inferred from constructor
99
+ * - Deadline: 24 hours from now
100
+ * - Dispute window: 2 days (172800 seconds)
101
+ *
102
+ * Validations performed:
103
+ * - Address format (0x-prefixed hex)
104
+ * - Amount format (positive number)
105
+ * - Deadline in future
106
+ * - Cannot pay yourself
107
+ *
108
+ * @param params - Payment parameters
109
+ * @returns User-friendly payment result
110
+ * @throws {ValidationError} If inputs are invalid
111
+ *
112
+ * @example
113
+ * ```typescript
114
+ * const result = await adapter.pay({
115
+ * to: '0xProvider123',
116
+ * amount: '100.50',
117
+ * deadline: '+7d', // Optional: 7 days from now
118
+ * });
119
+ * ```
120
+ */
121
+ pay(params: BasicPayParams): Promise<BasicPayResult>;
122
+ /**
123
+ * Check payment status by transaction ID.
124
+ *
125
+ * Returns current state plus action hints (what can be done next).
126
+ *
127
+ * Action hints:
128
+ * - `canAccept`: Provider can accept (INITIATED state, before deadline)
129
+ * - `canComplete`: Provider can mark as delivered (COMMITTED state)
130
+ * - `canDispute`: Requester can dispute (DELIVERED state, within dispute window)
131
+ *
132
+ * @param txId - Transaction ID to check
133
+ * @returns Status with action hints
134
+ * @throws {Error} If transaction not found
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * const status = await adapter.checkStatus(txId);
139
+ * console.log('State:', status.state); // "COMMITTED"
140
+ * if (status.canComplete) {
141
+ * // Provider can deliver now
142
+ * }
143
+ * ```
144
+ */
145
+ checkStatus(txId: string): Promise<{
146
+ state: string;
147
+ canAccept: boolean;
148
+ canComplete: boolean;
149
+ canDispute: boolean;
150
+ }>;
151
+ }
152
+ //# sourceMappingURL=BasicAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BasicAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/BasicAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,WAAW,EAAmD,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IAEX,2EAA2E;IAC3E,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE3B,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IAEb,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IAEjB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAElB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IAEf,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IAEjB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,YAAa,SAAQ,WAAW;IASzC,OAAO,CAAC,OAAO;IAEf,OAAO,CAAC,SAAS,CAAC;IAVpB;;;;;;OAMG;gBAEO,OAAO,EAAE,YAAY,EAC7B,gBAAgB,EAAE,MAAM,EAChB,SAAS,CAAC,uBAAW;IAK/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAiD1D;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QACvC,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;CAgBH"}
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ /**
3
+ * BasicAdapter - High-level, opinionated API for simple use cases
4
+ *
5
+ * Provides the simplest possible interface for creating and checking transactions.
6
+ * Designed for developers who want to "just make it work" without deep protocol knowledge.
7
+ *
8
+ * Key Features:
9
+ * - Smart defaults (24h deadline, 2-day dispute window)
10
+ * - Inferred requester (from constructor)
11
+ * - User-friendly input (strings, no BigInt)
12
+ * - User-friendly output (formatted amounts, ISO dates)
13
+ *
14
+ * @module adapters/BasicAdapter
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.BasicAdapter = void 0;
18
+ const BaseAdapter_1 = require("./BaseAdapter");
19
+ /**
20
+ * BasicAdapter - High-level API for simple payment flows.
21
+ *
22
+ * This adapter provides the simplest possible interface:
23
+ * - `pay()` - Create and fund a transaction in one call
24
+ * - `checkStatus()` - Get transaction status with action hints
25
+ *
26
+ * All complexity is hidden behind smart defaults.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const client = await ACTPClient.create({ mode: 'mock' });
31
+ *
32
+ * // Simple payment (all defaults)
33
+ * const result = await client.basic.pay({
34
+ * to: '0xProvider123',
35
+ * amount: '100',
36
+ * });
37
+ * console.log('Transaction ID:', result.txId);
38
+ * console.log('Amount:', result.amount); // "100.00 USDC"
39
+ *
40
+ * // Check status
41
+ * const status = await client.basic.checkStatus(result.txId);
42
+ * if (status.canAccept) {
43
+ * console.log('Provider can accept this transaction');
44
+ * }
45
+ * ```
46
+ */
47
+ class BasicAdapter extends BaseAdapter_1.BaseAdapter {
48
+ /**
49
+ * Creates a new BasicAdapter instance.
50
+ *
51
+ * @param runtime - ACTP runtime implementation (MockRuntime or BlockchainRuntime)
52
+ * @param requesterAddress - The requester's Ethereum address
53
+ * @param easHelper - Optional EAS helper for attestation verification (SECURITY FIX C-4)
54
+ */
55
+ constructor(runtime, requesterAddress, easHelper) {
56
+ super(requesterAddress);
57
+ this.runtime = runtime;
58
+ this.easHelper = easHelper;
59
+ }
60
+ /**
61
+ * Create a payment transaction with smart defaults.
62
+ *
63
+ * This is the simplest way to create a transaction - just specify
64
+ * recipient and amount. All other parameters use sensible defaults.
65
+ *
66
+ * Smart defaults:
67
+ * - Requester: Inferred from constructor
68
+ * - Deadline: 24 hours from now
69
+ * - Dispute window: 2 days (172800 seconds)
70
+ *
71
+ * Validations performed:
72
+ * - Address format (0x-prefixed hex)
73
+ * - Amount format (positive number)
74
+ * - Deadline in future
75
+ * - Cannot pay yourself
76
+ *
77
+ * @param params - Payment parameters
78
+ * @returns User-friendly payment result
79
+ * @throws {ValidationError} If inputs are invalid
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const result = await adapter.pay({
84
+ * to: '0xProvider123',
85
+ * amount: '100.50',
86
+ * deadline: '+7d', // Optional: 7 days from now
87
+ * });
88
+ * ```
89
+ */
90
+ async pay(params) {
91
+ // Validate and parse inputs
92
+ const provider = this.validateAddress(params.to, 'to');
93
+ const amount = this.parseAmount(params.amount);
94
+ const currentTime = this.runtime.time.now();
95
+ const deadline = this.parseDeadline(params.deadline, currentTime);
96
+ // SECURITY FIX (L-1): Validate dispute window bounds
97
+ const disputeWindow = this.validateDisputeWindow(params.disputeWindow);
98
+ const requester = this.requesterAddress;
99
+ // Additional validations
100
+ if (requester.toLowerCase() === provider.toLowerCase()) {
101
+ throw new BaseAdapter_1.ValidationError('Cannot pay yourself (requester equals provider)');
102
+ }
103
+ if (deadline <= currentTime) {
104
+ throw new BaseAdapter_1.ValidationError('Deadline must be in the future');
105
+ }
106
+ // Create transaction
107
+ const txId = await this.runtime.createTransaction({
108
+ provider,
109
+ requester,
110
+ amount: amount.toString(),
111
+ deadline,
112
+ disputeWindow,
113
+ });
114
+ // Link escrow (auto-transitions to COMMITTED)
115
+ await this.runtime.linkEscrow(txId, amount.toString());
116
+ // Fetch transaction details for user-friendly response
117
+ const tx = await this.runtime.getTransaction(txId);
118
+ if (!tx) {
119
+ throw new Error(`Transaction ${txId} not found after creation`);
120
+ }
121
+ return {
122
+ txId,
123
+ provider,
124
+ requester,
125
+ amount: this.formatAmount(amount),
126
+ deadline: new Date(deadline * 1000).toISOString(),
127
+ state: tx.state,
128
+ };
129
+ }
130
+ /**
131
+ * Check payment status by transaction ID.
132
+ *
133
+ * Returns current state plus action hints (what can be done next).
134
+ *
135
+ * Action hints:
136
+ * - `canAccept`: Provider can accept (INITIATED state, before deadline)
137
+ * - `canComplete`: Provider can mark as delivered (COMMITTED state)
138
+ * - `canDispute`: Requester can dispute (DELIVERED state, within dispute window)
139
+ *
140
+ * @param txId - Transaction ID to check
141
+ * @returns Status with action hints
142
+ * @throws {Error} If transaction not found
143
+ *
144
+ * @example
145
+ * ```typescript
146
+ * const status = await adapter.checkStatus(txId);
147
+ * console.log('State:', status.state); // "COMMITTED"
148
+ * if (status.canComplete) {
149
+ * // Provider can deliver now
150
+ * }
151
+ * ```
152
+ */
153
+ async checkStatus(txId) {
154
+ const tx = await this.runtime.getTransaction(txId);
155
+ if (!tx) {
156
+ throw new Error(`Transaction ${txId} not found`);
157
+ }
158
+ const now = this.runtime.time.now();
159
+ return {
160
+ state: tx.state,
161
+ canAccept: tx.state === 'INITIATED' && tx.deadline > now,
162
+ canComplete: tx.state === 'COMMITTED' || tx.state === 'IN_PROGRESS',
163
+ canDispute: tx.state === 'DELIVERED' && tx.completedAt !== null && tx.completedAt + tx.disputeWindow > now,
164
+ };
165
+ }
166
+ }
167
+ exports.BasicAdapter = BasicAdapter;
168
+ //# sourceMappingURL=BasicAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BasicAdapter.js","sourceRoot":"","sources":["../../src/adapters/BasicAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * BeginnerAdapter - High-level, opinionated API for simple use cases
3
+ *
4
+ * Provides the simplest possible interface for creating and checking transactions.
5
+ * Designed for developers who want to "just make it work" without deep protocol knowledge.
6
+ *
7
+ * Key Features:
8
+ * - Smart defaults (24h deadline, 2-day dispute window)
9
+ * - Inferred requester (from constructor)
10
+ * - User-friendly input (strings, no BigInt)
11
+ * - User-friendly output (formatted amounts, ISO dates)
12
+ *
13
+ * @module adapters/BeginnerAdapter
14
+ */
15
+ import { BaseAdapter } from './BaseAdapter';
16
+ import { IACTPRuntime } from '../runtime/IACTPRuntime';
17
+ import { EASHelper } from '../protocol/EASHelper';
18
+ /**
19
+ * Parameters for creating a simple payment.
20
+ *
21
+ * This is the most beginner-friendly interface - minimal required fields.
22
+ */
23
+ export interface BeginnerPayParams {
24
+ /** Recipient address (provider) */
25
+ to: string;
26
+ /** Amount in user-friendly format ("100", "100.50", "100 USDC", "$100") */
27
+ amount: string | number;
28
+ /** Optional: Deadline as relative time ("+24h") or Unix timestamp. Defaults to +24h */
29
+ deadline?: string | number;
30
+ /** Optional: Dispute window in seconds. Defaults to 172800 (2 days) */
31
+ disputeWindow?: number;
32
+ }
33
+ /**
34
+ * Result of creating a payment.
35
+ *
36
+ * Provides user-friendly formatted data (not raw protocol types).
37
+ */
38
+ export interface BeginnerPayResult {
39
+ /** Transaction ID (bytes32 hex string) */
40
+ txId: string;
41
+ /** Provider address */
42
+ provider: string;
43
+ /** Requester address (caller) */
44
+ requester: string;
45
+ /** Amount in USDC (human-readable, e.g., "100.00 USDC") */
46
+ amount: string;
47
+ /** Deadline as ISO 8601 timestamp */
48
+ deadline: string;
49
+ /** Transaction state */
50
+ state: string;
51
+ }
52
+ /**
53
+ * BeginnerAdapter - High-level API for simple payment flows.
54
+ *
55
+ * This adapter provides the simplest possible interface:
56
+ * - `pay()` - Create and fund a transaction in one call
57
+ * - `checkStatus()` - Get transaction status with action hints
58
+ *
59
+ * All complexity is hidden behind smart defaults.
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * const client = await ACTPClient.create({ mode: 'mock' });
64
+ *
65
+ * // Simple payment (all defaults)
66
+ * const result = await client.beginner.pay({
67
+ * to: '0xProvider123',
68
+ * amount: '100',
69
+ * });
70
+ * console.log('Transaction ID:', result.txId);
71
+ * console.log('Amount:', result.amount); // "100.00 USDC"
72
+ *
73
+ * // Check status
74
+ * const status = await client.beginner.checkStatus(result.txId);
75
+ * if (status.canAccept) {
76
+ * console.log('Provider can accept this transaction');
77
+ * }
78
+ * ```
79
+ */
80
+ export declare class BeginnerAdapter extends BaseAdapter {
81
+ private runtime;
82
+ private easHelper?;
83
+ /**
84
+ * Creates a new BeginnerAdapter instance.
85
+ *
86
+ * @param runtime - ACTP runtime implementation (MockRuntime or BlockchainRuntime)
87
+ * @param requesterAddress - The requester's Ethereum address
88
+ * @param easHelper - Optional EAS helper for attestation verification (SECURITY FIX C-4)
89
+ */
90
+ constructor(runtime: IACTPRuntime, requesterAddress: string, easHelper?: EASHelper | undefined);
91
+ /**
92
+ * Create a payment transaction with smart defaults.
93
+ *
94
+ * This is the simplest way to create a transaction - just specify
95
+ * recipient and amount. All other parameters use sensible defaults.
96
+ *
97
+ * Smart defaults:
98
+ * - Requester: Inferred from constructor
99
+ * - Deadline: 24 hours from now
100
+ * - Dispute window: 2 days (172800 seconds)
101
+ *
102
+ * Validations performed:
103
+ * - Address format (0x-prefixed hex)
104
+ * - Amount format (positive number)
105
+ * - Deadline in future
106
+ * - Cannot pay yourself
107
+ *
108
+ * @param params - Payment parameters
109
+ * @returns User-friendly payment result
110
+ * @throws {ValidationError} If inputs are invalid
111
+ *
112
+ * @example
113
+ * ```typescript
114
+ * const result = await adapter.pay({
115
+ * to: '0xProvider123',
116
+ * amount: '100.50',
117
+ * deadline: '+7d', // Optional: 7 days from now
118
+ * });
119
+ * ```
120
+ */
121
+ pay(params: BeginnerPayParams): Promise<BeginnerPayResult>;
122
+ /**
123
+ * Check payment status by transaction ID.
124
+ *
125
+ * Returns current state plus action hints (what can be done next).
126
+ *
127
+ * Action hints:
128
+ * - `canAccept`: Provider can accept (INITIATED state, before deadline)
129
+ * - `canComplete`: Provider can mark as delivered (COMMITTED state)
130
+ * - `canDispute`: Requester can dispute (DELIVERED state, within dispute window)
131
+ *
132
+ * @param txId - Transaction ID to check
133
+ * @returns Status with action hints
134
+ * @throws {Error} If transaction not found
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * const status = await adapter.checkStatus(txId);
139
+ * console.log('State:', status.state); // "COMMITTED"
140
+ * if (status.canComplete) {
141
+ * // Provider can deliver now
142
+ * }
143
+ * ```
144
+ */
145
+ checkStatus(txId: string): Promise<{
146
+ state: string;
147
+ canAccept: boolean;
148
+ canComplete: boolean;
149
+ canDispute: boolean;
150
+ }>;
151
+ }
152
+ //# sourceMappingURL=BeginnerAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BeginnerAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/BeginnerAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,WAAW,EAAmD,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IAEX,2EAA2E;IAC3E,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE3B,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IAEb,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IAEjB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAElB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IAEf,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IAEjB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAS5C,OAAO,CAAC,OAAO;IAEf,OAAO,CAAC,SAAS,CAAC;IAVpB;;;;;;OAMG;gBAEO,OAAO,EAAE,YAAY,EAC7B,gBAAgB,EAAE,MAAM,EAChB,SAAS,CAAC,uBAAW;IAK/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiDhE;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QACvC,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;CAgBH"}
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ /**
3
+ * BeginnerAdapter - High-level, opinionated API for simple use cases
4
+ *
5
+ * Provides the simplest possible interface for creating and checking transactions.
6
+ * Designed for developers who want to "just make it work" without deep protocol knowledge.
7
+ *
8
+ * Key Features:
9
+ * - Smart defaults (24h deadline, 2-day dispute window)
10
+ * - Inferred requester (from constructor)
11
+ * - User-friendly input (strings, no BigInt)
12
+ * - User-friendly output (formatted amounts, ISO dates)
13
+ *
14
+ * @module adapters/BeginnerAdapter
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.BeginnerAdapter = void 0;
18
+ const BaseAdapter_1 = require("./BaseAdapter");
19
+ /**
20
+ * BeginnerAdapter - High-level API for simple payment flows.
21
+ *
22
+ * This adapter provides the simplest possible interface:
23
+ * - `pay()` - Create and fund a transaction in one call
24
+ * - `checkStatus()` - Get transaction status with action hints
25
+ *
26
+ * All complexity is hidden behind smart defaults.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const client = await ACTPClient.create({ mode: 'mock' });
31
+ *
32
+ * // Simple payment (all defaults)
33
+ * const result = await client.beginner.pay({
34
+ * to: '0xProvider123',
35
+ * amount: '100',
36
+ * });
37
+ * console.log('Transaction ID:', result.txId);
38
+ * console.log('Amount:', result.amount); // "100.00 USDC"
39
+ *
40
+ * // Check status
41
+ * const status = await client.beginner.checkStatus(result.txId);
42
+ * if (status.canAccept) {
43
+ * console.log('Provider can accept this transaction');
44
+ * }
45
+ * ```
46
+ */
47
+ class BeginnerAdapter extends BaseAdapter_1.BaseAdapter {
48
+ /**
49
+ * Creates a new BeginnerAdapter instance.
50
+ *
51
+ * @param runtime - ACTP runtime implementation (MockRuntime or BlockchainRuntime)
52
+ * @param requesterAddress - The requester's Ethereum address
53
+ * @param easHelper - Optional EAS helper for attestation verification (SECURITY FIX C-4)
54
+ */
55
+ constructor(runtime, requesterAddress, easHelper) {
56
+ super(requesterAddress);
57
+ this.runtime = runtime;
58
+ this.easHelper = easHelper;
59
+ }
60
+ /**
61
+ * Create a payment transaction with smart defaults.
62
+ *
63
+ * This is the simplest way to create a transaction - just specify
64
+ * recipient and amount. All other parameters use sensible defaults.
65
+ *
66
+ * Smart defaults:
67
+ * - Requester: Inferred from constructor
68
+ * - Deadline: 24 hours from now
69
+ * - Dispute window: 2 days (172800 seconds)
70
+ *
71
+ * Validations performed:
72
+ * - Address format (0x-prefixed hex)
73
+ * - Amount format (positive number)
74
+ * - Deadline in future
75
+ * - Cannot pay yourself
76
+ *
77
+ * @param params - Payment parameters
78
+ * @returns User-friendly payment result
79
+ * @throws {ValidationError} If inputs are invalid
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const result = await adapter.pay({
84
+ * to: '0xProvider123',
85
+ * amount: '100.50',
86
+ * deadline: '+7d', // Optional: 7 days from now
87
+ * });
88
+ * ```
89
+ */
90
+ async pay(params) {
91
+ // Validate and parse inputs
92
+ const provider = this.validateAddress(params.to, 'to');
93
+ const amount = this.parseAmount(params.amount);
94
+ const currentTime = this.runtime.time.now();
95
+ const deadline = this.parseDeadline(params.deadline, currentTime);
96
+ // SECURITY FIX (L-1): Validate dispute window bounds
97
+ const disputeWindow = this.validateDisputeWindow(params.disputeWindow);
98
+ const requester = this.requesterAddress;
99
+ // Additional validations
100
+ if (requester.toLowerCase() === provider.toLowerCase()) {
101
+ throw new BaseAdapter_1.ValidationError('Cannot pay yourself (requester equals provider)');
102
+ }
103
+ if (deadline <= currentTime) {
104
+ throw new BaseAdapter_1.ValidationError('Deadline must be in the future');
105
+ }
106
+ // Create transaction
107
+ const txId = await this.runtime.createTransaction({
108
+ provider,
109
+ requester,
110
+ amount: amount.toString(),
111
+ deadline,
112
+ disputeWindow,
113
+ });
114
+ // Link escrow (auto-transitions to COMMITTED)
115
+ await this.runtime.linkEscrow(txId, amount.toString());
116
+ // Fetch transaction details for user-friendly response
117
+ const tx = await this.runtime.getTransaction(txId);
118
+ if (!tx) {
119
+ throw new Error(`Transaction ${txId} not found after creation`);
120
+ }
121
+ return {
122
+ txId,
123
+ provider,
124
+ requester,
125
+ amount: this.formatAmount(amount),
126
+ deadline: new Date(deadline * 1000).toISOString(),
127
+ state: tx.state,
128
+ };
129
+ }
130
+ /**
131
+ * Check payment status by transaction ID.
132
+ *
133
+ * Returns current state plus action hints (what can be done next).
134
+ *
135
+ * Action hints:
136
+ * - `canAccept`: Provider can accept (INITIATED state, before deadline)
137
+ * - `canComplete`: Provider can mark as delivered (COMMITTED state)
138
+ * - `canDispute`: Requester can dispute (DELIVERED state, within dispute window)
139
+ *
140
+ * @param txId - Transaction ID to check
141
+ * @returns Status with action hints
142
+ * @throws {Error} If transaction not found
143
+ *
144
+ * @example
145
+ * ```typescript
146
+ * const status = await adapter.checkStatus(txId);
147
+ * console.log('State:', status.state); // "COMMITTED"
148
+ * if (status.canComplete) {
149
+ * // Provider can deliver now
150
+ * }
151
+ * ```
152
+ */
153
+ async checkStatus(txId) {
154
+ const tx = await this.runtime.getTransaction(txId);
155
+ if (!tx) {
156
+ throw new Error(`Transaction ${txId} not found`);
157
+ }
158
+ const now = this.runtime.time.now();
159
+ return {
160
+ state: tx.state,
161
+ canAccept: tx.state === 'INITIATED' && tx.deadline > now,
162
+ canComplete: tx.state === 'COMMITTED' || tx.state === 'IN_PROGRESS',
163
+ canDispute: tx.state === 'DELIVERED' && tx.completedAt !== null && tx.completedAt + tx.disputeWindow > now,
164
+ };
165
+ }
166
+ }
167
+ exports.BeginnerAdapter = BeginnerAdapter;
168
+ //# sourceMappingURL=BeginnerAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BeginnerAdapter.js","sourceRoot":"","sources":["../../src/adapters/BeginnerAdapter.ts"],"names":[],"mappings":"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"}