@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
@@ -4,12 +4,75 @@ exports.MessageSigner = void 0;
4
4
  const ethers_1 = require("ethers");
5
5
  const errors_1 = require("../errors");
6
6
  const eip712_1 = require("../types/eip712");
7
+ /**
8
+ * MessageSigner - Cryptographic signing for ACTP messages with EIP-712
9
+ * Reference: Yellow Paper §11.4.2
10
+ *
11
+ * V4 Security Enhancement: Optional nonce replay protection via ReceivedNonceTracker
12
+ *
13
+ * IMPORTANT: Use MessageSigner.create() factory method to ensure domain is initialized.
14
+ */
7
15
  class MessageSigner {
16
+ /**
17
+ * SECURITY FIX (H-5): Private constructor - MUST use MessageSigner.create() factory method
18
+ *
19
+ * This ensures EIP-712 domain is ALWAYS initialized before use (prevents race conditions).
20
+ * Direct construction would allow calling sign/verify without domain initialization.
21
+ */
8
22
  constructor(signer, nonceTracker) {
9
23
  this.signer = signer;
10
24
  this.nonceTracker = nonceTracker;
11
25
  this.domain = null;
12
26
  }
27
+ /**
28
+ * SECURITY FIX (H-4): Factory method to create MessageSigner with guaranteed domain initialization
29
+ *
30
+ * This factory ensures the EIP-712 domain is always properly initialized before use.
31
+ * Prevents the common bug of calling sign/verify without initializing domain first.
32
+ *
33
+ * @param signer - Ethers signer for signing messages
34
+ * @param kernelAddress - Address of ACTP Kernel contract (for domain separation)
35
+ * @param options - Optional configuration (chainId, nonceTracker)
36
+ * @returns Promise resolving to initialized MessageSigner
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const messageSigner = await MessageSigner.create(
41
+ * signer,
42
+ * KERNEL_ADDRESS,
43
+ * { chainId: 84532 }
44
+ * );
45
+ * const signature = await messageSigner.signMessage(message);
46
+ * ```
47
+ */
48
+ static async create(signer, kernelAddress, options) {
49
+ const messageSigner = new MessageSigner(signer, options?.nonceTracker);
50
+ await messageSigner.initDomain(kernelAddress, options?.chainId);
51
+ return messageSigner;
52
+ }
53
+ /**
54
+ * Check if domain is initialized
55
+ * @returns true if domain has been initialized
56
+ */
57
+ isDomainInitialized() {
58
+ return this.domain !== null;
59
+ }
60
+ /**
61
+ * Get the current domain (throws if not initialized)
62
+ * @returns Current EIP-712 domain
63
+ * @throws Error if domain not initialized
64
+ */
65
+ getDomain() {
66
+ if (!this.domain) {
67
+ throw new Error('Domain not initialized. Use MessageSigner.create() factory or call initDomain() first.');
68
+ }
69
+ return this.domain;
70
+ }
71
+ /**
72
+ * Initialize EIP-712 domain (must be called before signing)
73
+ * @param kernelAddress - Address of ACTP Kernel contract
74
+ * @param chainId - Optional chainId (defaults to signer's chainId or 84532 for Base Sepolia)
75
+ */
13
76
  async initDomain(kernelAddress, chainId) {
14
77
  let resolvedChainId;
15
78
  if (chainId !== undefined) {
@@ -17,30 +80,70 @@ class MessageSigner {
17
80
  }
18
81
  else {
19
82
  try {
83
+ // ethers v6: signer.provider might be null, check first
20
84
  if (this.signer.provider) {
21
85
  const network = await this.signer.provider.getNetwork();
22
86
  resolvedChainId = Number(network.chainId);
23
87
  }
24
88
  else {
89
+ // Fallback to Base Sepolia for testing without provider
25
90
  resolvedChainId = 84532;
26
91
  }
27
92
  }
28
93
  catch (error) {
94
+ // Fallback to Base Sepolia for testing without provider
29
95
  resolvedChainId = 84532;
30
96
  }
31
97
  }
98
+ // SECURITY FIX (H-6): Standardize domain name to 'AGIRAILS' for brand consistency
99
+ // Note: This change requires coordination with any existing signed messages
32
100
  this.domain = {
33
- name: 'ACTP',
101
+ name: 'AGIRAILS',
34
102
  version: '1.0',
35
103
  chainId: resolvedChainId,
36
104
  verifyingContract: kernelAddress
37
105
  };
38
106
  }
107
+ /**
108
+ * Sign ACTP message using EIP-712 typed data
109
+ * Uses ECDSA (secp256k1) with domain separation per Yellow Paper §11.4.2
110
+ *
111
+ * SECURITY FIX (H-3): Validates nonce format and warns about sequential nonces
112
+ *
113
+ * Generic ACTPMessage format (backward compatible).
114
+ * For strict typed AIP messages, use signQuoteRequest/signQuoteResponse/signDeliveryProof
115
+ */
39
116
  async signMessage(message) {
40
117
  if (!this.domain) {
41
- throw new Error('Domain not initialized. Call initDomain() first.');
118
+ throw new Error('Domain not initialized. Use MessageSigner.create() factory or call initDomain() first.');
42
119
  }
43
120
  const { type, version, from, to, timestamp, nonce, signature, ...payload } = message;
121
+ // SECURITY FIX (H-3): Validate nonce format (must be bytes32)
122
+ if (!nonce || !/^0x[a-fA-F0-9]{64}$/.test(nonce)) {
123
+ throw new Error(`Invalid nonce format: "${nonce}". ` +
124
+ `Nonce MUST be a bytes32 hex string (0x + 64 hex chars). ` +
125
+ `Use SecureNonce.generateSecureNonce() to generate cryptographically secure nonces. ` +
126
+ `Never use sequential integers (1, 2, 3...) or timestamps as nonces.`);
127
+ }
128
+ // SECURITY FIX (H-3): Warn about sequential nonces (low entropy)
129
+ // Sequential nonces like 0x0000...0001, 0x0000...0002 are weak
130
+ // Check if nonce has low entropy (e.g., last 8 bytes are zero, or all same digits)
131
+ const nonceValue = BigInt(nonce);
132
+ if (nonceValue < 0xffffffffn) {
133
+ // Nonce is suspiciously small (< 4 billion = likely sequential)
134
+ console.warn(`[SECURITY WARNING] Nonce ${nonce} appears to be sequential (value < 2^32). ` +
135
+ `This makes replay attacks easier. ` +
136
+ `Use SecureNonce.generateSecureNonce() for cryptographically secure random nonces.`);
137
+ }
138
+ // Check if nonce has all same digits (e.g., 0x111...111 or 0x000...000)
139
+ const hexDigits = nonce.slice(2); // Remove '0x'
140
+ const firstDigit = hexDigits[0];
141
+ if (hexDigits.split('').every(d => d === firstDigit)) {
142
+ console.warn(`[SECURITY WARNING] Nonce ${nonce} has low entropy (all digits are '${firstDigit}'). ` +
143
+ `This is NOT cryptographically secure. ` +
144
+ `Use SecureNonce.generateSecureNonce() instead.`);
145
+ }
146
+ // Generic ACTPMessage with payload encoding (backward compatible)
44
147
  const abiCoder = ethers_1.AbiCoder.defaultAbiCoder();
45
148
  const payloadBytes = abiCoder.encode(['string'], [this.canonicalizePayload(payload)]);
46
149
  const typedMessage = {
@@ -52,42 +155,62 @@ class MessageSigner {
52
155
  nonce,
53
156
  payload: payloadBytes
54
157
  };
158
+ // Use generic ACTPMessage types
55
159
  const messageTypes = (0, eip712_1.getMessageTypes)('default');
160
+ // Sign using EIP-712 (ethers v6 API)
56
161
  const signer = this.signer;
57
162
  const sig = await signer.signTypedData(this.domain, messageTypes, typedMessage);
58
163
  return sig;
59
164
  }
165
+ /**
166
+ * Sign typed QuoteRequest message
167
+ */
60
168
  async signQuoteRequest(data) {
61
169
  if (!this.domain) {
62
- throw new Error('Domain not initialized. Call initDomain() first.');
170
+ throw new Error('Domain not initialized. Use MessageSigner.create() factory or call initDomain() first.');
63
171
  }
64
172
  const messageTypes = (0, eip712_1.getMessageTypes)('quote.request');
65
173
  const signer = this.signer;
66
174
  return await signer.signTypedData(this.domain, messageTypes, data);
67
175
  }
176
+ /**
177
+ * Sign typed QuoteResponse message
178
+ */
68
179
  async signQuoteResponse(data) {
69
180
  if (!this.domain) {
70
- throw new Error('Domain not initialized. Call initDomain() first.');
181
+ throw new Error('Domain not initialized. Use MessageSigner.create() factory or call initDomain() first.');
71
182
  }
72
183
  const messageTypes = (0, eip712_1.getMessageTypes)('quote.response');
73
184
  const signer = this.signer;
74
185
  return await signer.signTypedData(this.domain, messageTypes, data);
75
186
  }
187
+ /**
188
+ * Sign typed DeliveryProof message
189
+ */
76
190
  async signDeliveryProof(data) {
77
191
  if (!this.domain) {
78
- throw new Error('Domain not initialized. Call initDomain() first.');
192
+ throw new Error('Domain not initialized. Use MessageSigner.create() factory or call initDomain() first.');
79
193
  }
80
194
  const messageTypes = (0, eip712_1.getMessageTypes)('delivery.proof');
81
195
  const signer = this.signer;
82
196
  return await signer.signTypedData(this.domain, messageTypes, data);
83
197
  }
198
+ /**
199
+ * Convenience helper to sign a DeliveryProof generated by ProofGenerator
200
+ */
84
201
  async signGeneratedDeliveryProof(proof) {
85
202
  const typedData = (0, eip712_1.deliveryProofDataFromProof)(proof);
86
203
  return await this.signDeliveryProof(typedData);
87
204
  }
205
+ /**
206
+ * Verify message signature using EIP-712
207
+ * Uses generic ACTPMessage types (backward compatible)
208
+ *
209
+ * V4 Security: If nonceTracker is configured, validates nonce for replay protection
210
+ */
88
211
  async verifySignature(message, signature) {
89
212
  if (!this.domain) {
90
- throw new Error('Domain not initialized. Call initDomain() first.');
213
+ throw new Error('Domain not initialized. Use MessageSigner.create() factory or call initDomain() first.');
91
214
  }
92
215
  const { type, version, from, to, timestamp, nonce, signature: _, ...payload } = message;
93
216
  const abiCoder = ethers_1.AbiCoder.defaultAbiCoder();
@@ -101,20 +224,28 @@ class MessageSigner {
101
224
  nonce,
102
225
  payload: payloadBytes
103
226
  };
227
+ // Use generic ACTPMessage types (backward compatible)
104
228
  const messageTypes = (0, eip712_1.getMessageTypes)('default');
105
229
  const recoveredAddress = ethers_1.ethers.verifyTypedData(this.domain, messageTypes, typedMessage, signature);
106
230
  const expectedAddress = this.didToAddress(from);
231
+ // Verify signature matches sender
107
232
  if (recoveredAddress.toLowerCase() !== expectedAddress.toLowerCase()) {
108
233
  return false;
109
234
  }
235
+ // V4 Security: Validate nonce for replay protection (if tracker configured)
110
236
  if (this.nonceTracker) {
111
237
  const nonceValidation = this.nonceTracker.validateAndRecord(from, type, nonce);
112
238
  if (!nonceValidation.valid) {
239
+ // Nonce replay detected - return false
113
240
  return false;
114
241
  }
115
242
  }
116
243
  return true;
117
244
  }
245
+ /**
246
+ * Verify signature and throw if invalid
247
+ * V4 Security: Throws specific error for nonce replay detection
248
+ */
118
249
  async verifySignatureOrThrow(message, signature) {
119
250
  if (!this.domain) {
120
251
  throw new Error('Domain not initialized');
@@ -126,28 +257,41 @@ class MessageSigner {
126
257
  const messageTypes = (0, eip712_1.getMessageTypes)('default');
127
258
  const recoveredAddress = ethers_1.ethers.verifyTypedData(this.domain, messageTypes, typedMessage, signature);
128
259
  const expectedAddress = this.didToAddress(from);
260
+ // Check signature validity first
129
261
  if (recoveredAddress.toLowerCase() !== expectedAddress.toLowerCase()) {
130
262
  throw new errors_1.SignatureVerificationError(expectedAddress, recoveredAddress);
131
263
  }
264
+ // V4 Security: Validate nonce for replay protection (if tracker configured)
132
265
  if (this.nonceTracker) {
133
266
  const nonceValidation = this.nonceTracker.validateAndRecord(from, type, nonce);
134
267
  if (!nonceValidation.valid) {
268
+ // Throw specific error for nonce replay
135
269
  throw new Error(`Nonce replay attack detected: ${nonceValidation.reason}. ` +
136
270
  `Received nonce: ${nonceValidation.receivedNonce}. ` +
137
271
  (nonceValidation.expectedMinimum ? `Expected minimum: ${nonceValidation.expectedMinimum}` : ''));
138
272
  }
139
273
  }
140
274
  }
275
+ /**
276
+ * Canonicalize payload to deterministic string (recursively sorted keys)
277
+ * Prevents JSON serialization ambiguity across different JS runtimes
278
+ * Recursively handles nested objects and arrays
279
+ */
141
280
  canonicalizePayload(payload) {
142
281
  return JSON.stringify(this.recursiveSort(payload));
143
282
  }
283
+ /**
284
+ * Recursively sort object keys for deterministic JSON encoding
285
+ */
144
286
  recursiveSort(obj) {
145
287
  if (obj === null || obj === undefined) {
146
288
  return obj;
147
289
  }
290
+ // Handle arrays: recursively sort each element
148
291
  if (Array.isArray(obj)) {
149
292
  return obj.map((item) => this.recursiveSort(item));
150
293
  }
294
+ // Handle objects: sort keys and recursively sort values
151
295
  if (typeof obj === 'object' && obj.constructor === Object) {
152
296
  const sortedKeys = Object.keys(obj).sort();
153
297
  const canonical = {};
@@ -156,21 +300,83 @@ class MessageSigner {
156
300
  }
157
301
  return canonical;
158
302
  }
303
+ // Primitives (string, number, boolean)
159
304
  return obj;
160
305
  }
306
+ /**
307
+ * Convert DID to Ethereum address
308
+ *
309
+ * SECURITY FIX (DID-FORMAT): Handles both DID formats:
310
+ * - Legacy: did:ethr:<address>
311
+ * - Canonical (EIP-3770): did:ethr:<chainId>:<address>
312
+ *
313
+ * Examples:
314
+ * - "did:ethr:0x1234...abcd" → "0x1234...abcd"
315
+ * - "did:ethr:84532:0x1234...abcd" → "0x1234...abcd"
316
+ * - "0x1234...abcd" → "0x1234...abcd" (raw address passthrough)
317
+ */
161
318
  didToAddress(did) {
162
- if (did.startsWith('did:ethr:')) {
163
- return did.replace('did:ethr:', '');
319
+ // Check for DID format first
320
+ const DID_PREFIX = 'did:ethr:';
321
+ if (did.startsWith(DID_PREFIX)) {
322
+ const remainder = did.slice(DID_PREFIX.length);
323
+ // Check if it's canonical format: did:ethr:<chainId>:<address>
324
+ // chainId is numeric, address starts with 0x
325
+ const parts = remainder.split(':');
326
+ if (parts.length === 2) {
327
+ // Canonical format: did:ethr:<chainId>:<address>
328
+ const [chainIdStr, address] = parts;
329
+ const chainId = parseInt(chainIdStr, 10);
330
+ if (isNaN(chainId)) {
331
+ throw new Error(`Invalid DID format: ${did}. ` +
332
+ `Expected did:ethr:<chainId>:<address> but chainId "${chainIdStr}" is not a number.`);
333
+ }
334
+ if (!ethers_1.ethers.isAddress(address)) {
335
+ throw new Error(`Invalid DID format: ${did}. ` +
336
+ `Expected did:ethr:<chainId>:<address> but "${address}" is not a valid Ethereum address.`);
337
+ }
338
+ // SECURITY: Optionally validate chainId matches domain chainId
339
+ // This prevents cross-chain replay attacks where a message signed for one chain
340
+ // is replayed on another. For now, we just extract the address but log a warning.
341
+ if (this.domain && this.domain.chainId !== chainId) {
342
+ console.warn(`[SECURITY WARNING] DID chainId (${chainId}) does not match domain chainId (${this.domain.chainId}). ` +
343
+ `This could indicate a cross-chain replay attempt. DID: ${did}`);
344
+ }
345
+ return address;
346
+ }
347
+ else if (parts.length === 1 && ethers_1.ethers.isAddress(parts[0])) {
348
+ // Legacy format: did:ethr:<address>
349
+ return parts[0];
350
+ }
351
+ else {
352
+ throw new Error(`Invalid DID format: ${did}. ` +
353
+ `Expected did:ethr:<address> or did:ethr:<chainId>:<address>.`);
354
+ }
164
355
  }
356
+ // If already an address (raw 0x format), return as-is
165
357
  if (ethers_1.ethers.isAddress(did)) {
166
358
  return did;
167
359
  }
168
- throw new Error(`Invalid DID format: ${did}`);
360
+ throw new Error(`Invalid DID format: ${did}. ` +
361
+ `Expected Ethereum address (0x...) or DID (did:ethr:...).`);
169
362
  }
363
+ /**
364
+ * Convert Ethereum address to DID
365
+ *
366
+ * SECURITY FIX (DID-FORMAT): Now generates canonical DID format
367
+ * with chainId when domain is initialized: did:ethr:<chainId>:<address>
368
+ *
369
+ * Falls back to legacy format if domain not initialized.
370
+ */
170
371
  addressToDID(address) {
171
372
  if (!ethers_1.ethers.isAddress(address)) {
172
373
  throw new Error(`Invalid Ethereum address: ${address}`);
173
374
  }
375
+ // Use canonical format with chainId if domain is initialized
376
+ if (this.domain && this.domain.chainId) {
377
+ return `did:ethr:${this.domain.chainId}:${address}`;
378
+ }
379
+ // Fallback to legacy format (backward compatible)
174
380
  return `did:ethr:${address}`;
175
381
  }
176
382
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MessageSigner.js","sourceRoot":"","sources":["../../src/protocol/MessageSigner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MessageSigner.js","sourceRoot":"","sources":["../../src/protocol/MessageSigner.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,115 @@
1
+ /// <reference types="node" />
1
2
  import { BytesLike } from 'ethers';
2
3
  import { DeliveryProof } from '../types';
3
4
  import { DeliveryProofData } from '../types/eip712';
5
+ /**
6
+ * SECURITY FIX (MEDIUM-2): URL validation configuration for SSRF prevention
7
+ */
8
+ export interface URLValidationConfig {
9
+ /**
10
+ * Allowed URL protocols (default: ['https:'])
11
+ * Set to ['https:', 'http:'] to allow HTTP in development
12
+ */
13
+ allowedProtocols?: string[];
14
+ /**
15
+ * Allow localhost URLs (default: false in production, true in dev)
16
+ */
17
+ allowLocalhost?: boolean;
18
+ /**
19
+ * Maximum response size in bytes (default: 10MB)
20
+ */
21
+ maxSize?: number;
22
+ /**
23
+ * Request timeout in milliseconds (default: 30000)
24
+ */
25
+ timeout?: number;
26
+ /**
27
+ * Blocked hostnames (e.g., internal services)
28
+ */
29
+ blockedHosts?: string[];
30
+ }
31
+ /**
32
+ * ProofGenerator - Content hashing and delivery proofs
33
+ * Reference: Yellow Paper §11.4.1
34
+ *
35
+ * SECURITY FIX (MEDIUM-2): Now includes URL validation for SSRF prevention
36
+ */
4
37
  export declare class ProofGenerator {
38
+ private readonly urlConfig;
39
+ /**
40
+ * Create ProofGenerator with optional URL validation config
41
+ *
42
+ * @param urlConfig - URL validation configuration for hashFromUrl()
43
+ */
44
+ constructor(urlConfig?: URLValidationConfig);
45
+ /**
46
+ * Hash deliverable content
47
+ * Uses Keccak256 per Yellow Paper §11.4.1
48
+ */
5
49
  hashContent(content: string | Buffer): string;
50
+ /**
51
+ * Generate delivery proof (AIP-4)
52
+ * Reference: Yellow Paper §8.2
53
+ * Complete schema with type field for AIP compliance
54
+ * Computed fields (size, mimeType) cannot be overwritten
55
+ */
6
56
  generateDeliveryProof(params: {
7
57
  txId: string;
8
58
  deliverable: string | Buffer;
9
59
  deliveryUrl?: string;
10
60
  metadata?: Record<string, any>;
11
61
  }): DeliveryProof;
62
+ /**
63
+ * Convert a generated delivery proof into typed EIP-712 data
64
+ */
12
65
  toDeliveryProofTypedData(proof: DeliveryProof): DeliveryProofData;
66
+ /**
67
+ * Encode proof for on-chain submission
68
+ */
13
69
  encodeProof(proof: DeliveryProof): BytesLike;
70
+ /**
71
+ * Decode proof from on-chain data
72
+ */
14
73
  decodeProof(proofData: BytesLike): {
15
74
  txId: string;
16
75
  contentHash: string;
17
76
  timestamp: number;
18
77
  };
78
+ /**
79
+ * Verify deliverable matches expected hash
80
+ */
19
81
  verifyDeliverable(deliverable: string | Buffer, expectedHash: string): boolean;
82
+ /**
83
+ * Generate content hash from URL (for IPFS/Arweave)
84
+ *
85
+ * SECURITY FIX (MEDIUM-2): Now includes:
86
+ * - Protocol validation (HTTPS only by default)
87
+ * - Hostname blocklist (prevents SSRF to internal services)
88
+ * - Size limits (prevents DoS via large responses)
89
+ * - Request timeout
90
+ *
91
+ * @param url - URL to fetch content from
92
+ * @returns Keccak256 hash of content
93
+ * @throws Error if URL is blocked, too large, or fetch fails
94
+ */
20
95
  hashFromUrl(url: string): Promise<string>;
96
+ /**
97
+ * SECURITY FIX (MEDIUM-2): Validate URL against security rules
98
+ *
99
+ * @param url - URL to validate
100
+ * @throws Error if URL is not allowed
101
+ */
102
+ private validateUrl;
103
+ /**
104
+ * Check if hostname is a private IP address
105
+ *
106
+ * @param hostname - Hostname to check
107
+ * @returns true if hostname is a private IP
108
+ */
109
+ private isPrivateIP;
110
+ /**
111
+ * Get the URL validation config (for testing/inspection)
112
+ */
113
+ getUrlConfig(): Required<URLValidationConfig>;
21
114
  }
22
115
  //# sourceMappingURL=ProofGenerator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProofGenerator.d.ts","sourceRoot":"","sources":["../../src/protocol/ProofGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAA8B,MAAM,iBAAiB,CAAC;AAMhF,qBAAa,cAAc;IAKzB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAY7C,qBAAqB,CAAC,MAAM,EAAE;QAC5B,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;QAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAChC,GAAG,aAAa;IA8BjB,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,iBAAiB;IAOjE,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS;IAW5C,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG;QACjC,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB;IAiBD,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAQxE,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAWhD"}
1
+ {"version":3,"file":"ProofGenerator.d.ts","sourceRoot":"","sources":["../../src/protocol/ProofGenerator.ts"],"names":[],"mappings":";AAAA,OAAO,EAAoC,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAA8B,MAAM,iBAAiB,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAqBD;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAE1D;;;;OAIG;gBACS,SAAS,CAAC,EAAE,mBAAmB;IAa3C;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAM7C;;;;;OAKG;IACH,qBAAqB,CAAC,MAAM,EAAE;QAC5B,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;QAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAChC,GAAG,aAAa;IA2BjB;;OAEG;IACH,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,iBAAiB;IAIjE;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS;IAQ5C;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG;QACjC,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB;IAcD;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAK9E;;;;;;;;;;;;OAYG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2E/C;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAmCnB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAoBnB;;OAEG;IACH,YAAY,IAAI,QAAQ,CAAC,mBAAmB,CAAC;CAG9C"}