@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,533 @@
1
+ "use strict";
2
+ /**
3
+ * MockStateManager - Persistent state management for Mock Mode
4
+ *
5
+ * Responsible for persisting mock blockchain state to disk, enabling
6
+ * state sharing across CLI commands, SDK library usage, and Dashboard.
7
+ *
8
+ * Features:
9
+ * - File-based JSON persistence in `.actp/mock-state.json`
10
+ * - Atomic file operations (write to temp file, then rename)
11
+ * - File locking to prevent concurrent access corruption
12
+ * - Error recovery for corrupted state files
13
+ *
14
+ * @module runtime/MockStateManager
15
+ * @see ADR-001 (Mock State Persistence Strategy)
16
+ * @see MOCK_STATE_MANAGER_SPEC.md
17
+ */
18
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ var desc = Object.getOwnPropertyDescriptor(m, k);
21
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
22
+ desc = { enumerable: true, get: function() { return m[k]; } };
23
+ }
24
+ Object.defineProperty(o, k2, desc);
25
+ }) : (function(o, m, k, k2) {
26
+ if (k2 === undefined) k2 = k;
27
+ o[k2] = m[k];
28
+ }));
29
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
30
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
31
+ }) : function(o, v) {
32
+ o["default"] = v;
33
+ });
34
+ var __importStar = (this && this.__importStar) || function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.MockStateManager = exports.MockStateLockError = exports.MockStateVersionError = exports.MockStateCorruptedError = void 0;
46
+ const fs = __importStar(require("fs"));
47
+ const path = __importStar(require("path"));
48
+ const proper_lockfile_1 = __importDefault(require("proper-lockfile"));
49
+ const MockState_1 = require("./types/MockState");
50
+ const fsSafe_1 = require("../utils/fsSafe");
51
+ /**
52
+ * Error thrown when mock state file is corrupted.
53
+ */
54
+ class MockStateCorruptedError extends Error {
55
+ constructor(statePath, cause) {
56
+ super(`Mock state file corrupted: ${statePath}\n` +
57
+ `Delete it manually or run: actp mock reset\n` +
58
+ (cause ? `Cause: ${cause.message}` : ''));
59
+ this.name = 'MockStateCorruptedError';
60
+ this.statePath = statePath;
61
+ }
62
+ }
63
+ exports.MockStateCorruptedError = MockStateCorruptedError;
64
+ /**
65
+ * Error thrown when state version is unsupported.
66
+ */
67
+ class MockStateVersionError extends Error {
68
+ constructor(version, supportedVersion = MockState_1.MOCK_STATE_DEFAULTS.VERSION) {
69
+ super(`Unsupported state version: ${version}\n` +
70
+ `Supported version: ${supportedVersion}\n` +
71
+ `Run: actp mock reset to create new state file`);
72
+ this.name = 'MockStateVersionError';
73
+ this.version = version;
74
+ this.supportedVersion = supportedVersion;
75
+ }
76
+ }
77
+ exports.MockStateVersionError = MockStateVersionError;
78
+ /**
79
+ * Error thrown when lock cannot be acquired.
80
+ */
81
+ class MockStateLockError extends Error {
82
+ constructor(statePath, cause) {
83
+ super(`Could not acquire lock on mock state: ${statePath}\n` +
84
+ `Another ACTP process may be running.\n` +
85
+ `Please wait a moment and try again.` +
86
+ (cause ? `\nCause: ${cause.message}` : ''));
87
+ this.name = 'MockStateLockError';
88
+ this.statePath = statePath;
89
+ this.cause = cause;
90
+ }
91
+ }
92
+ exports.MockStateLockError = MockStateLockError;
93
+ /**
94
+ * Lock options for proper-lockfile.
95
+ * - 5 retries with exponential backoff (100ms -> 1000ms)
96
+ * - 10 second stale lock detection (handles process crashes)
97
+ */
98
+ const LOCK_OPTIONS = {
99
+ retries: {
100
+ retries: 5,
101
+ minTimeout: 100,
102
+ maxTimeout: 1000,
103
+ },
104
+ stale: 10000, // 10 seconds
105
+ };
106
+ /**
107
+ * Maximum allowed state file size (10 MB).
108
+ * Prevents disk exhaustion from runaway state growth.
109
+ *
110
+ * Note: For states approaching this limit, JSON.stringify/parse may
111
+ * temporarily use ~3x the file size in memory (~30 MB for 10 MB state).
112
+ * This is acceptable for a local development tool with <1000 transactions.
113
+ */
114
+ const MAX_STATE_FILE_SIZE = 10 * 1024 * 1024;
115
+ /**
116
+ * Maximum nesting depth for JSON parsing.
117
+ * Prevents DoS attacks via deeply nested JSON structures.
118
+ *
119
+ * SECURITY: Deeply nested JSON can cause:
120
+ * - Stack overflow during parsing
121
+ * - Excessive CPU usage during traversal
122
+ * - Memory exhaustion from recursion
123
+ */
124
+ const MAX_NESTING_DEPTH = 100;
125
+ // ============================================================================
126
+ // Security: Path Sanitization and JSON Depth Check
127
+ // ============================================================================
128
+ /**
129
+ * Sanitize a file path for safe display in error messages.
130
+ *
131
+ * SECURITY: Replaces home directory with ~ to prevent information disclosure.
132
+ *
133
+ * @param fullPath - The full file path to sanitize
134
+ * @returns Sanitized path safe for display
135
+ */
136
+ function sanitizePath(fullPath) {
137
+ // Import os dynamically to get home directory
138
+ const home = process.env.HOME || process.env.USERPROFILE || '/';
139
+ return fullPath.replace(home, '~');
140
+ }
141
+ /**
142
+ * Check the nesting depth of a parsed JSON object.
143
+ *
144
+ * SECURITY: Prevents DoS via deeply nested JSON structures that can cause:
145
+ * - Stack overflow
146
+ * - Excessive CPU usage
147
+ * - Memory exhaustion
148
+ *
149
+ * @param obj - The object to check
150
+ * @param maxDepth - Maximum allowed nesting depth
151
+ * @param currentDepth - Current depth (used for recursion)
152
+ * @throws Error if object exceeds maximum nesting depth
153
+ */
154
+ function checkNestingDepth(obj, maxDepth = MAX_NESTING_DEPTH, currentDepth = 0) {
155
+ if (currentDepth > maxDepth) {
156
+ throw new Error(`State file exceeds maximum nesting depth of ${maxDepth}. ` +
157
+ 'This may indicate a corrupted or malicious state file.');
158
+ }
159
+ if (obj !== null && typeof obj === 'object') {
160
+ // Check arrays and objects
161
+ const values = Array.isArray(obj) ? obj : Object.values(obj);
162
+ for (const value of values) {
163
+ checkNestingDepth(value, maxDepth, currentDepth + 1);
164
+ }
165
+ }
166
+ }
167
+ /**
168
+ * MockStateManager handles persistence of mock blockchain state.
169
+ *
170
+ * State is stored in `.actp/mock-state.json` within the project root.
171
+ * Uses file locking to prevent corruption from concurrent access.
172
+ *
173
+ * @example
174
+ * ```typescript
175
+ * const manager = new MockStateManager();
176
+ *
177
+ * // Read-only access (no lock)
178
+ * const state = manager.loadState();
179
+ * console.log('Transactions:', Object.keys(state.transactions).length);
180
+ *
181
+ * // Read-modify-write with lock
182
+ * const txId = await manager.withLock(async (state) => {
183
+ * const txId = generateId();
184
+ * state.transactions[txId] = { ... };
185
+ * return txId;
186
+ * });
187
+ * ```
188
+ */
189
+ class MockStateManager {
190
+ /**
191
+ * Creates a new MockStateManager instance.
192
+ *
193
+ * @param projectRoot - Root directory for `.actp/` folder.
194
+ * Defaults to current working directory.
195
+ *
196
+ * @example
197
+ * ```typescript
198
+ * // Use current directory
199
+ * const manager = new MockStateManager();
200
+ *
201
+ * // Use specific project root
202
+ * const manager = new MockStateManager('/path/to/project');
203
+ * ```
204
+ */
205
+ constructor(projectRoot = process.cwd()) {
206
+ this.actpDir = path.join(projectRoot, '.actp');
207
+ this.statePath = path.join(this.actpDir, 'mock-state.json');
208
+ // Ensure .actp directory exists
209
+ this.ensureDirectory();
210
+ }
211
+ /**
212
+ * Ensures the .actp directory exists.
213
+ * Creates it with secure permissions if missing.
214
+ */
215
+ ensureDirectory() {
216
+ (0, fsSafe_1.ensureSafeDir)(this.actpDir, 0o755);
217
+ }
218
+ /**
219
+ * Loads state from disk.
220
+ *
221
+ * Returns default state if file doesn't exist (first run).
222
+ * Validates version compatibility and file size limits.
223
+ *
224
+ * SECURITY: Validates nesting depth to prevent DoS attacks.
225
+ *
226
+ * @returns The current mock state
227
+ *
228
+ * @throws {MockStateCorruptedError} If state file contains invalid JSON
229
+ * @throws {MockStateVersionError} If state version is not supported
230
+ * @throws {Error} If file exceeds size limit or other I/O errors
231
+ *
232
+ * @example
233
+ * ```typescript
234
+ * const state = manager.loadState();
235
+ * console.log('Current time:', state.blockchain.currentTime);
236
+ * ```
237
+ */
238
+ loadState() {
239
+ // If file doesn't exist, return default state
240
+ if (!fs.existsSync(this.statePath)) {
241
+ return this.getDefaultState();
242
+ }
243
+ // SECURITY: Refuse to read from symlinked state files
244
+ (0, fsSafe_1.assertSafeFileForRead)(this.statePath);
245
+ // Check file size limit
246
+ const stats = fs.statSync(this.statePath);
247
+ if (stats.size > MAX_STATE_FILE_SIZE) {
248
+ throw new Error(`Mock state file exceeds ${MAX_STATE_FILE_SIZE / 1024 / 1024} MB limit.\n` +
249
+ `Run: actp mock compact or actp mock reset`);
250
+ }
251
+ // Read and parse file
252
+ let raw;
253
+ try {
254
+ raw = fs.readFileSync(this.statePath, 'utf-8');
255
+ }
256
+ catch (error) {
257
+ // SECURITY: Sanitize path in error message
258
+ throw new Error(`Failed to read mock state file: ${sanitizePath(this.statePath)}\n` +
259
+ `Error: ${error.message}`);
260
+ }
261
+ // Parse JSON
262
+ let state;
263
+ try {
264
+ state = JSON.parse(raw);
265
+ }
266
+ catch (error) {
267
+ // SECURITY: Sanitize path in error message
268
+ throw new MockStateCorruptedError(sanitizePath(this.statePath), error);
269
+ }
270
+ // SECURITY FIX: Check nesting depth to prevent DoS via deeply nested JSON
271
+ try {
272
+ checkNestingDepth(state);
273
+ }
274
+ catch (error) {
275
+ throw new MockStateCorruptedError(sanitizePath(this.statePath), error);
276
+ }
277
+ // Validate version
278
+ if (state.version !== MockState_1.MOCK_STATE_DEFAULTS.VERSION) {
279
+ throw new MockStateVersionError(state.version);
280
+ }
281
+ // Basic schema validation
282
+ if (typeof state.mode !== 'string' ||
283
+ typeof state.blockchain !== 'object' ||
284
+ typeof state.transactions !== 'object' ||
285
+ typeof state.escrows !== 'object' ||
286
+ typeof state.accounts !== 'object') {
287
+ throw new MockStateCorruptedError(sanitizePath(this.statePath));
288
+ }
289
+ return state;
290
+ }
291
+ /**
292
+ * Saves state to disk atomically.
293
+ *
294
+ * Uses write-to-temp-then-rename pattern to ensure atomicity:
295
+ * 1. Write state to `.tmp` file
296
+ * 2. Rename `.tmp` to final path (atomic on POSIX)
297
+ *
298
+ * This prevents corruption if process crashes during write.
299
+ *
300
+ * @param state - The state to save
301
+ *
302
+ * @throws {Error} If write fails (disk full, permissions, etc.)
303
+ *
304
+ * @example
305
+ * ```typescript
306
+ * const state = manager.loadState();
307
+ * state.blockchain.currentTime += 3600; // Advance 1 hour
308
+ * manager.saveState(state);
309
+ * ```
310
+ */
311
+ saveState(state) {
312
+ // Ensure directory exists (may have been deleted)
313
+ this.ensureDirectory();
314
+ const tempPath = `${this.statePath}.tmp`;
315
+ try {
316
+ // Prevent clobbering via pre-created temp symlink/file
317
+ if (fs.existsSync(tempPath)) {
318
+ fs.unlinkSync(tempPath);
319
+ }
320
+ // Write to temp file first (pretty-printed for human readability)
321
+ const json = JSON.stringify(state, null, 2);
322
+ fs.writeFileSync(tempPath, json, {
323
+ encoding: 'utf-8',
324
+ mode: 0o644,
325
+ flag: 'wx', // exclusive create: do not follow existing symlink
326
+ });
327
+ // Rename atomically (POSIX rename is atomic)
328
+ fs.renameSync(tempPath, this.statePath);
329
+ }
330
+ catch (error) {
331
+ // Clean up temp file if it exists
332
+ if (fs.existsSync(tempPath)) {
333
+ try {
334
+ fs.unlinkSync(tempPath);
335
+ }
336
+ catch {
337
+ // Ignore cleanup errors
338
+ }
339
+ }
340
+ throw new Error(`Failed to save mock state: ${error.message}\n` +
341
+ `Path: ${sanitizePath(this.statePath)}`);
342
+ }
343
+ }
344
+ /**
345
+ * Executes an operation with exclusive file lock.
346
+ *
347
+ * Provides read-modify-write semantics with concurrency protection:
348
+ * 1. Acquires exclusive lock on state file
349
+ * 2. Loads current state
350
+ * 3. Executes operation (may modify state)
351
+ * 4. Saves updated state
352
+ * 5. Releases lock
353
+ *
354
+ * Lock is always released, even if operation throws.
355
+ *
356
+ * @typeParam T - Return type of the operation
357
+ * @param operation - Function that receives state and returns result.
358
+ * Can be sync or async. May modify state object.
359
+ *
360
+ * @returns Promise resolving to operation's return value
361
+ *
362
+ * @throws {MockStateLockError} If lock cannot be acquired after retries
363
+ * @throws {Error} If operation throws or save fails
364
+ *
365
+ * @example
366
+ * ```typescript
367
+ * // Create transaction with lock
368
+ * const txId = await manager.withLock(async (state) => {
369
+ * const txId = '0x' + crypto.randomBytes(32).toString('hex');
370
+ * state.transactions[txId] = {
371
+ * id: txId,
372
+ * state: 'INITIATED',
373
+ * // ...
374
+ * };
375
+ * return txId;
376
+ * });
377
+ * ```
378
+ */
379
+ async withLock(operation) {
380
+ // Ensure state file exists before locking
381
+ // (proper-lockfile requires the file to exist)
382
+ if (!fs.existsSync(this.statePath)) {
383
+ this.saveState(this.getDefaultState());
384
+ }
385
+ // SECURITY: Refuse to lock/use symlinked state files
386
+ (0, fsSafe_1.assertSafeFileForRead)(this.statePath);
387
+ let release = null;
388
+ try {
389
+ // Acquire exclusive lock
390
+ release = await proper_lockfile_1.default.lock(this.statePath, LOCK_OPTIONS);
391
+ // Load current state
392
+ const state = this.loadState();
393
+ // Execute operation (may be async)
394
+ const result = await operation(state);
395
+ // Save modified state
396
+ this.saveState(state);
397
+ return result;
398
+ }
399
+ catch (error) {
400
+ // Transform lock errors into friendlier messages
401
+ if (error instanceof Error &&
402
+ (error.message.includes('ELOCKED') || error.message.includes('lock'))) {
403
+ throw new MockStateLockError(this.statePath, error);
404
+ }
405
+ throw error;
406
+ }
407
+ finally {
408
+ // Always release lock
409
+ if (release) {
410
+ try {
411
+ await release();
412
+ }
413
+ catch {
414
+ // Ignore release errors (lock may have expired)
415
+ }
416
+ }
417
+ }
418
+ }
419
+ /**
420
+ * Resets state to default (fresh blockchain).
421
+ *
422
+ * Useful for starting fresh during testing or after corruption.
423
+ * Does not require lock (overwrites entire file).
424
+ *
425
+ * @example
426
+ * ```typescript
427
+ * // Reset to clean state
428
+ * manager.reset();
429
+ *
430
+ * // Verify reset
431
+ * const state = manager.loadState();
432
+ * console.log('Transactions:', Object.keys(state.transactions).length); // 0
433
+ * ```
434
+ */
435
+ reset() {
436
+ const defaultState = this.getDefaultState();
437
+ this.saveState(defaultState);
438
+ }
439
+ /**
440
+ * Checks if mock mode is initialized (state file exists).
441
+ *
442
+ * @returns true if state file exists, false otherwise
443
+ *
444
+ * @example
445
+ * ```typescript
446
+ * if (!manager.exists()) {
447
+ * console.log('Run: actp init to initialize mock mode');
448
+ * }
449
+ * ```
450
+ */
451
+ exists() {
452
+ return fs.existsSync(this.statePath);
453
+ }
454
+ /**
455
+ * Gets the path to the state file.
456
+ *
457
+ * @returns Absolute path to mock-state.json
458
+ */
459
+ getStatePath() {
460
+ return this.statePath;
461
+ }
462
+ /**
463
+ * Gets the path to the .actp directory.
464
+ *
465
+ * @returns Absolute path to .actp directory
466
+ */
467
+ getActpDir() {
468
+ return this.actpDir;
469
+ }
470
+ /**
471
+ * Creates default/initial mock state.
472
+ *
473
+ * Used when state file doesn't exist or after reset.
474
+ * Initializes blockchain with current timestamp.
475
+ *
476
+ * @returns Fresh mock state with empty transactions/escrows/accounts
477
+ */
478
+ getDefaultState() {
479
+ return {
480
+ version: MockState_1.MOCK_STATE_DEFAULTS.VERSION,
481
+ mode: 'mock',
482
+ blockchain: {
483
+ currentTime: Math.floor(Date.now() / 1000),
484
+ blockNumber: MockState_1.MOCK_STATE_DEFAULTS.INITIAL_BLOCK_NUMBER,
485
+ chainId: MockState_1.MOCK_STATE_DEFAULTS.CHAIN_ID,
486
+ blockTime: MockState_1.MOCK_STATE_DEFAULTS.BLOCK_TIME,
487
+ },
488
+ transactions: {},
489
+ escrows: {},
490
+ accounts: {},
491
+ // SECURITY FIX (L-4): Initialize events array for persistence
492
+ events: [],
493
+ };
494
+ }
495
+ /**
496
+ * Deletes the state file and .actp directory if empty.
497
+ *
498
+ * Used for cleanup during tests or uninitialization.
499
+ *
500
+ * @param force - If true, delete .actp directory even if not empty
501
+ *
502
+ * @example
503
+ * ```typescript
504
+ * // Clean up after tests
505
+ * manager.destroy();
506
+ * ```
507
+ */
508
+ destroy(force = false) {
509
+ // Remove state file
510
+ if (fs.existsSync(this.statePath)) {
511
+ fs.unlinkSync(this.statePath);
512
+ }
513
+ // Remove temp file if exists
514
+ const tempPath = `${this.statePath}.tmp`;
515
+ if (fs.existsSync(tempPath)) {
516
+ fs.unlinkSync(tempPath);
517
+ }
518
+ // Remove lock file if exists (created by proper-lockfile)
519
+ const lockPath = `${this.statePath}.lock`;
520
+ if (fs.existsSync(lockPath)) {
521
+ fs.unlinkSync(lockPath);
522
+ }
523
+ // Remove .actp directory if empty or forced
524
+ if (fs.existsSync(this.actpDir)) {
525
+ const files = fs.readdirSync(this.actpDir);
526
+ if (files.length === 0 || force) {
527
+ fs.rmSync(this.actpDir, { recursive: true, force: true });
528
+ }
529
+ }
530
+ }
531
+ }
532
+ exports.MockStateManager = MockStateManager;
533
+ //# sourceMappingURL=MockStateManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockStateManager.js","sourceRoot":"","sources":["../../src/runtime/MockStateManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Runtime module exports.
3
+ *
4
+ * Provides both the runtime interface and concrete implementations.
5
+ *
6
+ * @module runtime
7
+ */
8
+ export { IACTPRuntime, IMockRuntime, CreateTransactionParams } from './IACTPRuntime';
9
+ export { MockRuntime } from './MockRuntime';
10
+ export { MockStateManager } from './MockStateManager';
11
+ export { BlockchainRuntime, BlockchainRuntimeConfig } from './BlockchainRuntime';
12
+ export * from './types/MockState';
13
+ export { TransactionNotFoundError, InvalidStateTransitionError, InsufficientBalanceError, EscrowNotFoundError, DeadlinePassedError, ContractPausedError, InvalidAmountError, DisputeWindowActiveError, } from './MockRuntime';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACjF,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /**
3
+ * Runtime module exports.
4
+ *
5
+ * Provides both the runtime interface and concrete implementations.
6
+ *
7
+ * @module runtime
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.DisputeWindowActiveError = exports.InvalidAmountError = exports.ContractPausedError = exports.DeadlinePassedError = exports.EscrowNotFoundError = exports.InsufficientBalanceError = exports.InvalidStateTransitionError = exports.TransactionNotFoundError = exports.BlockchainRuntime = exports.MockStateManager = exports.MockRuntime = void 0;
25
+ var MockRuntime_1 = require("./MockRuntime");
26
+ Object.defineProperty(exports, "MockRuntime", { enumerable: true, get: function () { return MockRuntime_1.MockRuntime; } });
27
+ var MockStateManager_1 = require("./MockStateManager");
28
+ Object.defineProperty(exports, "MockStateManager", { enumerable: true, get: function () { return MockStateManager_1.MockStateManager; } });
29
+ var BlockchainRuntime_1 = require("./BlockchainRuntime");
30
+ Object.defineProperty(exports, "BlockchainRuntime", { enumerable: true, get: function () { return BlockchainRuntime_1.BlockchainRuntime; } });
31
+ __exportStar(require("./types/MockState"), exports);
32
+ // Re-export all custom errors from MockRuntime
33
+ var MockRuntime_2 = require("./MockRuntime");
34
+ Object.defineProperty(exports, "TransactionNotFoundError", { enumerable: true, get: function () { return MockRuntime_2.TransactionNotFoundError; } });
35
+ Object.defineProperty(exports, "InvalidStateTransitionError", { enumerable: true, get: function () { return MockRuntime_2.InvalidStateTransitionError; } });
36
+ Object.defineProperty(exports, "InsufficientBalanceError", { enumerable: true, get: function () { return MockRuntime_2.InsufficientBalanceError; } });
37
+ Object.defineProperty(exports, "EscrowNotFoundError", { enumerable: true, get: function () { return MockRuntime_2.EscrowNotFoundError; } });
38
+ Object.defineProperty(exports, "DeadlinePassedError", { enumerable: true, get: function () { return MockRuntime_2.DeadlinePassedError; } });
39
+ Object.defineProperty(exports, "ContractPausedError", { enumerable: true, get: function () { return MockRuntime_2.ContractPausedError; } });
40
+ Object.defineProperty(exports, "InvalidAmountError", { enumerable: true, get: function () { return MockRuntime_2.InvalidAmountError; } });
41
+ Object.defineProperty(exports, "DisputeWindowActiveError", { enumerable: true, get: function () { return MockRuntime_2.DisputeWindowActiveError; } });
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;AAGH,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,yDAAiF;AAAxE,sHAAA,iBAAiB,OAAA;AAC1B,oDAAkC;AAElC,+CAA+C;AAC/C,6CASuB;AARrB,uHAAA,wBAAwB,OAAA;AACxB,0HAAA,2BAA2B,OAAA;AAC3B,uHAAA,wBAAwB,OAAA;AACxB,kHAAA,mBAAmB,OAAA;AACnB,kHAAA,mBAAmB,OAAA;AACnB,kHAAA,mBAAmB,OAAA;AACnB,iHAAA,kBAAkB,OAAA;AAClB,uHAAA,wBAAwB,OAAA"}