@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
@@ -2,18 +2,62 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EASHelper = void 0;
4
4
  const ethers_1 = require("ethers");
5
+ const eas_sdk_1 = require("@ethereum-attestation-service/eas-sdk");
5
6
  const eip712_1 = require("../types/eip712");
6
- const EAS_ABI = [
7
- 'event Attested(address indexed attester, bytes32 indexed uid, bytes32 indexed schema)',
8
- 'function attest(tuple(bytes32 schema, tuple(address recipient, uint64 expirationTime, bool revocable, bytes32 refUID, bytes data) data) request) external returns (bytes32)',
9
- 'function revoke(tuple(bytes32 schema, bytes32 uid) request) external returns (bytes32)',
10
- 'function getAttestation(bytes32 uid) external view returns (tuple(bytes32 uid, bytes32 schema, address recipient, address attester, uint64 time, uint64 expirationTime, bool revocable, bytes32 refUID, bytes data, uint32 bump))'
11
- ];
7
+ const UsedAttestationTracker_1 = require("../utils/UsedAttestationTracker");
8
+ /**
9
+ * EASHelper - utility wrapper for Ethereum Attestation Service interactions
10
+ */
12
11
  class EASHelper {
13
- constructor(signer, config) {
12
+ /**
13
+ * Create EASHelper instance
14
+ *
15
+ * @param signer - Ethers signer for signing attestations
16
+ * @param config - EAS configuration
17
+ * @param attestationTracker - Optional tracker for replay attack prevention (C-1 fix)
18
+ *
19
+ * SECURITY FIX (NEW-M-2): Validates schema UID format in constructor
20
+ */
21
+ constructor(signer, config, attestationTracker) {
14
22
  this.config = config;
15
- this.eas = new ethers_1.Contract(config.contractAddress, EAS_ABI, signer);
23
+ // SECURITY FIX (NEW-M-2): Validate schema UID format
24
+ if (!config.deliveryProofSchemaId || !/^0x[a-fA-F0-9]{64}$/.test(config.deliveryProofSchemaId)) {
25
+ throw new Error(`Invalid deliveryProofSchemaId: must be bytes32 hex string (0x...). ` +
26
+ `Got: ${config.deliveryProofSchemaId}`);
27
+ }
28
+ if (config.deliveryProofSchemaId === '0x0000000000000000000000000000000000000000000000000000000000000000') {
29
+ throw new Error('deliveryProofSchemaId cannot be zero bytes32');
30
+ }
31
+ // Use official EAS SDK wrapper to ensure ABI correctness across deployments
32
+ // (includes fields like revocationTime that are required for security checks).
33
+ this.eas = new eas_sdk_1.EAS(config.contractAddress);
34
+ this.eas.connect(signer);
35
+ // SECURITY FIX (C-1): Use provided tracker or create new in-memory one
36
+ if (!attestationTracker) {
37
+ // SECURITY WARNING (HIGH-5): In-memory tracker does not persist across restarts!
38
+ // For production use, provide a FileBasedUsedAttestationTracker with a stateDirectory:
39
+ //
40
+ // import { FileBasedUsedAttestationTracker } from '../utils/UsedAttestationTracker';
41
+ // const tracker = new FileBasedUsedAttestationTracker('/path/to/state');
42
+ // const easHelper = new EASHelper(signer, config, tracker);
43
+ //
44
+ // Without persistence, attestation replay protection is lost on process restart,
45
+ // allowing potential double-spend attacks.
46
+ console.warn('[SECURITY WARNING] EASHelper: Using in-memory attestation tracker. ' +
47
+ 'Replay protection will be lost on process restart. ' +
48
+ 'For production, provide FileBasedUsedAttestationTracker for persistence.');
49
+ }
50
+ this.attestationTracker = attestationTracker || new UsedAttestationTracker_1.InMemoryUsedAttestationTracker();
16
51
  }
52
+ /**
53
+ * Get the attestation tracker for external use
54
+ */
55
+ getAttestationTracker() {
56
+ return this.attestationTracker;
57
+ }
58
+ /**
59
+ * Create an attestation for a delivery proof. Returns the attestation UID and transaction hash.
60
+ */
17
61
  async attestDeliveryProof(proof, recipient, options) {
18
62
  const { expirationTime = 0, revocable = true } = options || {};
19
63
  const proofData = (0, eip712_1.deliveryProofDataFromProof)(proof);
@@ -30,77 +74,226 @@ class EASHelper {
30
74
  schema: this.config.deliveryProofSchemaId,
31
75
  data: {
32
76
  recipient,
33
- expirationTime,
77
+ expirationTime: BigInt(expirationTime),
34
78
  revocable,
35
79
  refUID: proof.txId,
36
- data: encodedData
37
- }
38
- });
39
- const receipt = await tx.wait();
40
- const attestedLog = receipt?.logs?.find((log) => {
41
- try {
42
- const parsed = this.eas.interface.parseLog(log);
43
- return parsed?.name === 'Attested';
44
- }
45
- catch {
46
- return false;
80
+ data: encodedData,
81
+ // For Base EAS, value is typically 0. Keep explicit to avoid ambiguity.
82
+ value: 0n
47
83
  }
48
84
  });
49
- const uid = attestedLog
50
- ? this.eas.interface.parseLog(attestedLog)?.args?.uid
51
- : (0, ethers_1.zeroPadValue)('0x00', 32);
85
+ const uid = await tx.wait();
86
+ if (!uid || !/^0x[a-fA-F0-9]{64}$/.test(uid)) {
87
+ throw new Error(`Failed to obtain attestation UID from EAS transaction. Got: ${String(uid)}`);
88
+ }
89
+ if (uid === '0x0000000000000000000000000000000000000000000000000000000000000000') {
90
+ throw new Error('EAS returned zero UID for attestation (unexpected).');
91
+ }
52
92
  return {
53
93
  uid,
54
- transactionHash: receipt.transactionHash
94
+ transactionHash: tx.tx.hash
55
95
  };
56
96
  }
97
+ /**
98
+ * Revoke a previously issued attestation by UID.
99
+ */
57
100
  async revokeAttestation(uid) {
101
+ if (!uid || !/^0x[a-fA-F0-9]{64}$/.test(uid)) {
102
+ throw new Error(`Invalid attestation UID format: ${uid}`);
103
+ }
58
104
  const tx = await this.eas.revoke({
59
105
  schema: this.config.deliveryProofSchemaId,
60
- uid
106
+ data: { uid }
61
107
  });
62
- const receipt = await tx.wait();
63
- return receipt.transactionHash;
108
+ await tx.wait();
109
+ return tx.tx.hash;
64
110
  }
111
+ /**
112
+ * Fetch attestation data from the EAS contract.
113
+ */
65
114
  async getAttestation(uid) {
115
+ if (!uid || !/^0x[a-fA-F0-9]{64}$/.test(uid)) {
116
+ throw new Error(`Invalid attestation UID format: ${uid}`);
117
+ }
66
118
  return await this.eas.getAttestation(uid);
67
119
  }
120
+ /**
121
+ * Verify that a delivery attestation belongs to the specified transaction.
122
+ *
123
+ * SECURITY: ACTPKernel V1 accepts any bytes32 as attestationUID without validation.
124
+ * This means a malicious provider could submit attestation from Transaction A
125
+ * for Transaction B. This method provides SDK-side protection by verifying:
126
+ *
127
+ * 1. Attestation exists and is not revoked
128
+ * 2. Attestation uses the canonical delivery schema UID
129
+ * 3. Attestation's txId matches the expected transaction ID
130
+ * 4. Attestation has not expired
131
+ *
132
+ * @param txId - Expected transaction ID (bytes32)
133
+ * @param attestationUID - Attestation UID to verify (bytes32)
134
+ * @returns true if attestation is valid for this transaction, false otherwise
135
+ * @throws Error if attestation is revoked, expired, schema mismatch, or txId mismatch
136
+ */
68
137
  async verifyDeliveryAttestation(txId, attestationUID) {
138
+ if (!txId || !/^0x[a-fA-F0-9]{64}$/.test(txId)) {
139
+ throw new Error(`Invalid txId format (expected bytes32): ${txId}`);
140
+ }
141
+ if (!attestationUID || !/^0x[a-fA-F0-9]{64}$/.test(attestationUID)) {
142
+ throw new Error(`Invalid attestationUID format (expected bytes32): ${attestationUID}`);
143
+ }
144
+ // 1. Fetch attestation from EAS contract
69
145
  const attestation = await this.eas.getAttestation(attestationUID);
146
+ // 2. Check if attestation exists (uid should match)
70
147
  if (attestation.uid !== attestationUID) {
71
148
  throw new Error(`Attestation not found: ${attestationUID}`);
72
149
  }
150
+ // 3. Check schema UID matches canonical delivery schema (B2 blocker fix)
151
+ // This prevents accepting attestations from unrelated EAS schemas
73
152
  if (attestation.schema !== this.config.deliveryProofSchemaId) {
74
153
  throw new Error(`Schema UID mismatch: expected canonical delivery schema ${this.config.deliveryProofSchemaId}, ` +
75
154
  `got ${attestation.schema}. Attestation may be from a different schema!`);
76
155
  }
77
- const isRevoked = attestation.revocationTime > 0n;
156
+ // 4. Check revocation - EAS uses revocationTime field (not revoked boolean)
157
+ // revocationTime = 0 means not revoked
158
+ // revocationTime > 0 means revoked at that timestamp
159
+ const revocationTime = BigInt(attestation.revocationTime ?? 0);
160
+ const isRevoked = revocationTime > 0n;
78
161
  if (isRevoked) {
79
- throw new Error(`Attestation has been revoked: ${attestationUID} (revoked at timestamp ${attestation.revocationTime})`);
162
+ throw new Error(`Attestation has been revoked: ${attestationUID} (revoked at timestamp ${revocationTime})`);
80
163
  }
81
- if (attestation.expirationTime > 0n) {
164
+ // 5. Check expiration
165
+ // expirationTime = 0 means no expiration
166
+ // expirationTime > 0 means expires at that timestamp
167
+ const expirationTime = BigInt(attestation.expirationTime ?? 0);
168
+ if (expirationTime > 0n) {
82
169
  const now = Math.floor(Date.now() / 1000);
83
- if (Number(attestation.expirationTime) < now) {
84
- throw new Error(`Attestation has expired: ${attestationUID} (expired at ${attestation.expirationTime})`);
170
+ if (Number(expirationTime) < now) {
171
+ throw new Error(`Attestation has expired: ${attestationUID} (expired at ${expirationTime})`);
85
172
  }
86
173
  }
87
- let attestedTxId;
174
+ // 6. Decode attestation data to extract txId
175
+ let attestedTxId = '';
88
176
  try {
89
177
  const abiCoder = ethers_1.AbiCoder.defaultAbiCoder();
90
- const decoded = abiCoder.decode(['bytes32', 'bytes32', 'uint256', 'string', 'uint256', 'string'], attestation.data);
91
- attestedTxId = decoded[0];
178
+ const rawData = attestation.data;
179
+ // Prefer AIP-6 decoding (current DX Playground schema)
180
+ // - Official AIP-6: bytes32 txId,string resultCID,bytes32 resultHash,uint256 deliveredAt
181
+ // - Test schema: + uint256 testTimestamp
182
+ try {
183
+ const decoded = abiCoder.decode(['bytes32', 'string', 'bytes32', 'uint256', 'uint256'], rawData);
184
+ attestedTxId = decoded[0];
185
+ const resultCID = decoded[1];
186
+ const resultHash = decoded[2];
187
+ const deliveredAt = decoded[3];
188
+ if (!attestedTxId || !/^0x[a-fA-F0-9]{64}$/.test(attestedTxId)) {
189
+ throw new Error(`Decoded txId is not valid bytes32: ${attestedTxId}`);
190
+ }
191
+ if (typeof resultCID !== 'string' || resultCID.length === 0 || resultCID.length > 2048) {
192
+ throw new Error(`Decoded resultCID invalid length: ${resultCID?.length}`);
193
+ }
194
+ if (!resultHash || !/^0x[a-fA-F0-9]{64}$/.test(resultHash)) {
195
+ throw new Error(`Decoded resultHash is not valid bytes32: ${resultHash}`);
196
+ }
197
+ const now = BigInt(Math.floor(Date.now() / 1000));
198
+ if (deliveredAt > now + 86400n) {
199
+ throw new Error(`Decoded deliveredAt is in far future: ${deliveredAt.toString()}`);
200
+ }
201
+ }
202
+ catch (_e) {
203
+ // Fallback: official AIP-6 schema without testTimestamp
204
+ try {
205
+ const decoded = abiCoder.decode(['bytes32', 'string', 'bytes32', 'uint256'], rawData);
206
+ attestedTxId = decoded[0];
207
+ const resultCID = decoded[1];
208
+ const resultHash = decoded[2];
209
+ const deliveredAt = decoded[3];
210
+ if (!attestedTxId || !/^0x[a-fA-F0-9]{64}$/.test(attestedTxId)) {
211
+ throw new Error(`Decoded txId is not valid bytes32: ${attestedTxId}`);
212
+ }
213
+ if (typeof resultCID !== 'string' || resultCID.length === 0 || resultCID.length > 2048) {
214
+ throw new Error(`Decoded resultCID invalid length: ${resultCID?.length}`);
215
+ }
216
+ if (!resultHash || !/^0x[a-fA-F0-9]{64}$/.test(resultHash)) {
217
+ throw new Error(`Decoded resultHash is not valid bytes32: ${resultHash}`);
218
+ }
219
+ const now = BigInt(Math.floor(Date.now() / 1000));
220
+ if (deliveredAt > now + 86400n) {
221
+ throw new Error(`Decoded deliveredAt is in far future: ${deliveredAt.toString()}`);
222
+ }
223
+ }
224
+ catch (__e) {
225
+ // Final fallback: legacy AIP-4 schema
226
+ // Schema: bytes32 txId, bytes32 contentHash, uint256 timestamp, string deliveryUrl, uint256 size, string mimeType
227
+ const decoded = abiCoder.decode(['bytes32', 'bytes32', 'uint256', 'string', 'uint256', 'string'], rawData);
228
+ attestedTxId = decoded[0];
229
+ const contentHash = decoded[1];
230
+ const timestamp = decoded[2];
231
+ const deliveryUrl = decoded[3];
232
+ const size = decoded[4];
233
+ const mimeType = decoded[5];
234
+ if (!attestedTxId || !/^0x[a-fA-F0-9]{64}$/.test(attestedTxId)) {
235
+ throw new Error(`Decoded txId is not valid bytes32: ${attestedTxId}`);
236
+ }
237
+ if (!contentHash || !/^0x[a-fA-F0-9]{64}$/.test(contentHash)) {
238
+ throw new Error(`Decoded contentHash is not valid bytes32: ${contentHash}`);
239
+ }
240
+ const now = BigInt(Math.floor(Date.now() / 1000));
241
+ if (timestamp > now + 86400n) {
242
+ throw new Error(`Decoded timestamp is in far future: ${timestamp.toString()}`);
243
+ }
244
+ if (typeof deliveryUrl !== 'string' || deliveryUrl.length > 2048) {
245
+ throw new Error('Decoded deliveryUrl too long');
246
+ }
247
+ if (size < 0n) {
248
+ throw new Error(`Decoded size is negative: ${size}`);
249
+ }
250
+ if (typeof mimeType !== 'string' || mimeType.length > 256) {
251
+ throw new Error('Decoded mimeType too long');
252
+ }
253
+ }
254
+ }
92
255
  }
93
256
  catch (error) {
94
257
  throw new Error(`Attestation data format mismatch: cannot decode attestation ${attestationUID}. ` +
95
- `Expected AIP-4 delivery proof schema format. ` +
258
+ `Expected AIP-6 (preferred) or AIP-4 (legacy) delivery proof schema format. ` +
96
259
  `Original error: ${error.message}`);
97
260
  }
98
- if (attestedTxId !== txId) {
261
+ // 7. Verify attestation txId matches expected transaction ID
262
+ if (attestedTxId.toLowerCase() !== txId.toLowerCase()) {
99
263
  throw new Error(`Attestation txId mismatch: expected ${txId}, got ${attestedTxId}. ` +
100
264
  `Provider may be attempting to use attestation from different transaction!`);
101
265
  }
266
+ // SECURITY FIX (C-1): Check if attestation has been used for a different transaction
267
+ if (!this.attestationTracker.isValidForTransaction(attestationUID, txId)) {
268
+ const usedFor = this.attestationTracker.getUsageForAttestation(attestationUID);
269
+ throw new Error(`Attestation replay attack detected: attestation ${attestationUID} ` +
270
+ `was already used for transaction ${usedFor}. ` +
271
+ `Cannot reuse for transaction ${txId}.`);
272
+ }
273
+ // Record this attestation as used for this transaction
274
+ const recorded = await this.attestationTracker.recordUsage(attestationUID, txId);
275
+ if (!recorded) {
276
+ const usedFor = this.attestationTracker.getUsageForAttestation(attestationUID);
277
+ throw new Error(`Attestation replay attack detected: attestation ${attestationUID} ` +
278
+ `was already used for transaction ${usedFor}. Cannot reuse for ${txId}.`);
279
+ }
280
+ // All checks passed
102
281
  return true;
103
282
  }
283
+ /**
284
+ * Verify attestation for escrow release with mandatory replay protection
285
+ *
286
+ * SECURITY FIX (C-4): This method MUST be called before releaseEscrow()
287
+ * to prevent attestation replay attacks.
288
+ *
289
+ * @param txId - Expected transaction ID (bytes32)
290
+ * @param attestationUID - Attestation UID to verify (bytes32)
291
+ * @throws Error if verification fails or replay attack detected
292
+ */
293
+ async verifyAndRecordForRelease(txId, attestationUID) {
294
+ // Verify the attestation
295
+ await this.verifyDeliveryAttestation(txId, attestationUID);
296
+ }
104
297
  }
105
298
  exports.EASHelper = EASHelper;
106
299
  //# sourceMappingURL=EASHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EASHelper.js","sourceRoot":"","sources":["../../src/protocol/EASHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EASHelper.js","sourceRoot":"","sources":["../../src/protocol/EASHelper.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,114 @@
1
- import { Signer } from 'ethers';
1
+ import { Contract, Signer } from 'ethers';
2
2
  import { Escrow } from '../types';
3
+ /**
4
+ * Gas options for transactions
5
+ */
3
6
  interface GasOptions {
4
7
  maxFeePerGas?: bigint;
5
8
  maxPriorityFeePerGas?: bigint;
6
9
  }
10
+ /**
11
+ * EscrowVault - Escrow contract wrapper
12
+ *
13
+ * IMPORTANT:
14
+ * - Escrow creation happens atomically inside `ACTPKernel.linkEscrow()`.
15
+ * - Payout/refund functions are `onlyKernel` on-chain and MUST NOT be called by users.
16
+ *
17
+ * This module provides:
18
+ * - Helper methods for USDC approvals (requester → EscrowVault allowance)
19
+ * - Read-only access to escrow state (`escrows()` / `remaining()`)
20
+ *
21
+ * Workflow (per AIP-3):
22
+ * 1. Consumer approves USDC to EscrowVault address (use approveToken)
23
+ * 2. Consumer calls ACTPKernel.linkEscrow(txId, escrowVault, escrowId)
24
+ * 3. Kernel internally calls IEscrowValidator.createEscrow(escrowId, requester, provider, amount)
25
+ * 4. Escrow pulls USDC from requester
26
+ *
27
+ * Reference: AIP-3 §3.2 (Escrow Linking Workflow), lines 258-336
28
+ */
7
29
  export declare class EscrowVault {
8
30
  private readonly address;
9
31
  private readonly signer;
10
32
  private contract;
11
33
  private readonly gasSettings?;
12
34
  constructor(address: string, signer: Signer, gasSettings?: GasOptions);
35
+ /**
36
+ * Get gas buffer multiplier based on operation complexity
37
+ * V6 Security Enhancement: Operation-specific gas buffers
38
+ * Reference: SDK_SECURITY_ANALYSIS-Ultra-Think.md Lines 326-337
39
+ */
13
40
  private getGasBufferMultiplier;
41
+ /**
42
+ * Build transaction options with gas settings and estimated gas
43
+ * V6 Enhancement: Dynamic buffer based on operation type
44
+ *
45
+ * SECURITY FIX (NEW-C-1): Gas estimation manipulation attack protection
46
+ * - Enforces minimum gas floor regardless of estimate
47
+ * - Uses safe BigInt arithmetic with overflow detection
48
+ */
14
49
  private buildTxOptions;
50
+ /**
51
+ * Get escrow vault address
52
+ */
15
53
  getAddress(): string;
54
+ /**
55
+ * Get the underlying ethers Contract instance.
56
+ *
57
+ * SECURITY FIX (C-3): Provides public access to contract for EventMonitor
58
+ * instead of accessing private field via bracket notation.
59
+ *
60
+ * @returns ethers Contract instance
61
+ */
62
+ getContract(): Contract;
63
+ /**
64
+ * Approve USDC token for escrow creation
65
+ *
66
+ * IMPORTANT: Call this BEFORE ACTPKernel.linkEscrow()
67
+ * The consumer must approve EscrowVault to pull USDC when linkEscrow() is called
68
+ *
69
+ * @param tokenAddress - USDC contract address
70
+ * @param amount - Amount to approve (in USDC wei, 6 decimals)
71
+ * @throws {ValidationError} If inputs are invalid
72
+ * @throws {TransactionRevertedError} If approval fails
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * // Approve 100 USDC for escrow
77
+ * const amount = ethers.parseUnits('100', 6);
78
+ * await client.escrow.approveToken(BASE_SEPOLIA.contracts.usdc, amount);
79
+ *
80
+ * // Now call linkEscrow via Kernel
81
+ * const escrowId = ethers.id(`escrow-${Date.now()}`);
82
+ * await client.kernel.linkEscrow(txId, escrowVault, escrowId);
83
+ * ```
84
+ */
16
85
  approveToken(tokenAddress: string, amount: bigint): Promise<void>;
86
+ /**
87
+ * Get escrow details
88
+ */
17
89
  getEscrow(escrowId: string): Promise<Escrow>;
90
+ /**
91
+ * Get escrow remaining balance (amount - releasedAmount)
92
+ */
18
93
  getEscrowBalance(escrowId: string): Promise<bigint>;
19
- releaseEscrow(escrowId: string, recipients: string[], amounts: bigint[]): Promise<void>;
94
+ /**
95
+ * @deprecated
96
+ *
97
+ * Payouts/refunds are executed by ACTPKernel (on-chain) as part of state transitions.
98
+ * EscrowVault disbursement methods are `onlyKernel` and cannot be called by EOAs.
99
+ *
100
+ * Use:
101
+ * - `BlockchainRuntime.releaseEscrow(txId, attestationUID?)` (recommended)
102
+ * - or `ACTPKernel.transitionState(txId, State.SETTLED, proof)` (advanced)
103
+ */
104
+ releaseEscrow(escrowId: string, _recipients: string[], _amounts: bigint[]): Promise<void>;
105
+ /**
106
+ * Check token balance
107
+ */
20
108
  getTokenBalance(tokenAddress: string, account: string): Promise<bigint>;
109
+ /**
110
+ * Check token allowance
111
+ */
21
112
  getTokenAllowance(tokenAddress: string, owner: string, spender: string): Promise<bigint>;
22
113
  }
23
114
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"EscrowVault.d.ts","sourceRoot":"","sources":["../../src/protocol/EscrowVault.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,MAAM,QAAQ,CAAC;AAG1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAWlC,UAAU,UAAU;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAiBD,qBAAa,WAAW;IAKpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAa;gBAGvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EAC/B,WAAW,CAAC,EAAE,UAAU;IAW1B,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,cAAc;IAoBtB,UAAU,IAAI,MAAM;IA0Bd,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCjE,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkB5C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASnD,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,IAAI,CAAC;IAqCV,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQvE,iBAAiB,CACrB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;CAInB"}
1
+ {"version":3,"file":"EscrowVault.d.ts","sourceRoot":"","sources":["../../src/protocol/EscrowVault.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAG1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAQlC;;GAEG;AACH,UAAU,UAAU;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,WAAW;IAKpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAa;gBAGvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EAC/B,WAAW,CAAC,EAAE,UAAU;IAM1B;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAQ9B;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAoCtB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;;;;OAOG;IACH,WAAW,IAAI,QAAQ;IAIvB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCvE;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAclD;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKzD;;;;;;;;;OASG;IACG,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,EACrB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,IAAI,CAAC;IAShB;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK7E;;OAEG;IACG,iBAAiB,CACrB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;CAInB"}