@emilia-protocol/gate 0.11.0 → 0.13.0

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 (419) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.md +252 -0
  3. package/action-control-manifest.js +3 -268
  4. package/action-escrow-custodian.js +3 -394
  5. package/action-escrow-evidence.js +3 -858
  6. package/action-escrow-package.js +3 -1668
  7. package/action-escrow-postgres.js +3 -337
  8. package/action-escrow-state.js +3 -396
  9. package/action-escrow-verifiers.js +3 -331
  10. package/action-escrow.js +3 -2447
  11. package/action-packs.js +3 -140
  12. package/adapters/_kit.js +3 -104
  13. package/adapters/aws.js +3 -108
  14. package/adapters/cloudflare.js +3 -54
  15. package/adapters/gcp.js +3 -70
  16. package/adapters/github.js +3 -109
  17. package/adapters/jira.js +3 -55
  18. package/adapters/k8s.js +3 -70
  19. package/adapters/linear.js +3 -55
  20. package/adapters/salesforce.js +3 -55
  21. package/adapters/stripe.js +3 -81
  22. package/adapters/supabase.js +3 -121
  23. package/adapters/terraform.js +3 -59
  24. package/adapters/vercel.js +3 -84
  25. package/aec-execution.js +3 -312
  26. package/breakglass.js +3 -582
  27. package/capability-receipt.js +4 -0
  28. package/cf1-conformance.js +3 -106
  29. package/challenge-store.js +3 -69
  30. package/control-plane.js +3 -340
  31. package/coverage.js +3 -721
  32. package/demo.mjs +1 -1
  33. package/deployment-attestation.js +3 -247
  34. package/dist/action-control-manifest.d.ts +82 -0
  35. package/dist/action-control-manifest.d.ts.map +1 -0
  36. package/dist/action-control-manifest.js +422 -0
  37. package/dist/action-control-manifest.js.map +1 -0
  38. package/dist/action-escrow-custodian.d.ts +74 -0
  39. package/dist/action-escrow-custodian.d.ts.map +1 -0
  40. package/dist/action-escrow-custodian.js +363 -0
  41. package/dist/action-escrow-custodian.js.map +1 -0
  42. package/dist/action-escrow-evidence.d.ts +130 -0
  43. package/dist/action-escrow-evidence.d.ts.map +1 -0
  44. package/dist/action-escrow-evidence.js +1012 -0
  45. package/dist/action-escrow-evidence.js.map +1 -0
  46. package/dist/action-escrow-package.d.ts +10 -0
  47. package/dist/action-escrow-package.d.ts.map +1 -0
  48. package/dist/action-escrow-package.js +1583 -0
  49. package/dist/action-escrow-package.js.map +1 -0
  50. package/dist/action-escrow-postgres.d.ts +62 -0
  51. package/dist/action-escrow-postgres.d.ts.map +1 -0
  52. package/dist/action-escrow-postgres.js +339 -0
  53. package/dist/action-escrow-postgres.js.map +1 -0
  54. package/dist/action-escrow-state.d.ts +141 -0
  55. package/dist/action-escrow-state.d.ts.map +1 -0
  56. package/dist/action-escrow-state.js +413 -0
  57. package/dist/action-escrow-state.js.map +1 -0
  58. package/dist/action-escrow-verifiers.d.ts +65 -0
  59. package/dist/action-escrow-verifiers.d.ts.map +1 -0
  60. package/dist/action-escrow-verifiers.js +421 -0
  61. package/dist/action-escrow-verifiers.js.map +1 -0
  62. package/dist/action-escrow.d.ts +112 -0
  63. package/dist/action-escrow.d.ts.map +1 -0
  64. package/dist/action-escrow.js +2661 -0
  65. package/dist/action-escrow.js.map +1 -0
  66. package/dist/action-packs.d.ts +54 -0
  67. package/dist/action-packs.d.ts.map +1 -0
  68. package/dist/action-packs.js +143 -0
  69. package/dist/action-packs.js.map +1 -0
  70. package/dist/adapters/_kit.d.ts +50 -0
  71. package/dist/adapters/_kit.d.ts.map +1 -0
  72. package/dist/adapters/_kit.js +98 -0
  73. package/dist/adapters/_kit.js.map +1 -0
  74. package/dist/adapters/aws.d.ts +158 -0
  75. package/dist/adapters/aws.d.ts.map +1 -0
  76. package/dist/adapters/aws.js +136 -0
  77. package/dist/adapters/aws.js.map +1 -0
  78. package/dist/adapters/cloudflare.d.ts +116 -0
  79. package/dist/adapters/cloudflare.d.ts.map +1 -0
  80. package/dist/adapters/cloudflare.js +75 -0
  81. package/dist/adapters/cloudflare.js.map +1 -0
  82. package/dist/adapters/gcp.d.ts +139 -0
  83. package/dist/adapters/gcp.d.ts.map +1 -0
  84. package/dist/adapters/gcp.js +69 -0
  85. package/dist/adapters/gcp.js.map +1 -0
  86. package/dist/adapters/github.d.ts +123 -0
  87. package/dist/adapters/github.d.ts.map +1 -0
  88. package/dist/adapters/github.js +105 -0
  89. package/dist/adapters/github.js.map +1 -0
  90. package/dist/adapters/jira.d.ts +109 -0
  91. package/dist/adapters/jira.d.ts.map +1 -0
  92. package/dist/adapters/jira.js +54 -0
  93. package/dist/adapters/jira.js.map +1 -0
  94. package/dist/adapters/k8s.d.ts +139 -0
  95. package/dist/adapters/k8s.d.ts.map +1 -0
  96. package/dist/adapters/k8s.js +69 -0
  97. package/dist/adapters/k8s.js.map +1 -0
  98. package/dist/adapters/linear.d.ts +109 -0
  99. package/dist/adapters/linear.d.ts.map +1 -0
  100. package/dist/adapters/linear.js +54 -0
  101. package/dist/adapters/linear.js.map +1 -0
  102. package/dist/adapters/salesforce.d.ts +109 -0
  103. package/dist/adapters/salesforce.d.ts.map +1 -0
  104. package/dist/adapters/salesforce.js +54 -0
  105. package/dist/adapters/salesforce.js.map +1 -0
  106. package/dist/adapters/stripe.d.ts +116 -0
  107. package/dist/adapters/stripe.d.ts.map +1 -0
  108. package/dist/adapters/stripe.js +77 -0
  109. package/dist/adapters/stripe.js.map +1 -0
  110. package/dist/adapters/supabase.d.ts +127 -0
  111. package/dist/adapters/supabase.d.ts.map +1 -0
  112. package/dist/adapters/supabase.js +112 -0
  113. package/dist/adapters/supabase.js.map +1 -0
  114. package/dist/adapters/terraform.d.ts +109 -0
  115. package/dist/adapters/terraform.d.ts.map +1 -0
  116. package/dist/adapters/terraform.js +58 -0
  117. package/dist/adapters/terraform.js.map +1 -0
  118. package/dist/adapters/vercel.d.ts +114 -0
  119. package/dist/adapters/vercel.d.ts.map +1 -0
  120. package/dist/adapters/vercel.js +81 -0
  121. package/dist/adapters/vercel.js.map +1 -0
  122. package/dist/aec-execution.d.ts +107 -0
  123. package/dist/aec-execution.d.ts.map +1 -0
  124. package/dist/aec-execution.js +334 -0
  125. package/dist/aec-execution.js.map +1 -0
  126. package/dist/breakglass.d.ts +205 -0
  127. package/dist/breakglass.d.ts.map +1 -0
  128. package/dist/breakglass.js +627 -0
  129. package/dist/breakglass.js.map +1 -0
  130. package/dist/capability-receipt.d.ts +601 -0
  131. package/dist/capability-receipt.d.ts.map +1 -0
  132. package/dist/capability-receipt.js +1177 -0
  133. package/dist/capability-receipt.js.map +1 -0
  134. package/dist/cf1-conformance.d.ts +83 -0
  135. package/dist/cf1-conformance.d.ts.map +1 -0
  136. package/dist/cf1-conformance.js +94 -0
  137. package/dist/cf1-conformance.js.map +1 -0
  138. package/dist/challenge-store.d.ts +20 -0
  139. package/dist/challenge-store.d.ts.map +1 -0
  140. package/dist/challenge-store.js +62 -0
  141. package/dist/challenge-store.js.map +1 -0
  142. package/dist/control-plane.d.ts +136 -0
  143. package/dist/control-plane.d.ts.map +1 -0
  144. package/dist/control-plane.js +349 -0
  145. package/dist/control-plane.js.map +1 -0
  146. package/dist/coverage.d.ts +156 -0
  147. package/dist/coverage.d.ts.map +1 -0
  148. package/dist/coverage.js +768 -0
  149. package/dist/coverage.js.map +1 -0
  150. package/dist/deployment-attestation.d.ts +93 -0
  151. package/dist/deployment-attestation.d.ts.map +1 -0
  152. package/dist/deployment-attestation.js +262 -0
  153. package/dist/deployment-attestation.js.map +1 -0
  154. package/dist/eg1-conformance.d.ts +286 -0
  155. package/dist/eg1-conformance.d.ts.map +1 -0
  156. package/dist/eg1-conformance.js +379 -0
  157. package/dist/eg1-conformance.js.map +1 -0
  158. package/dist/enterprise.d.ts +88 -0
  159. package/dist/enterprise.d.ts.map +1 -0
  160. package/dist/enterprise.js +194 -0
  161. package/dist/enterprise.js.map +1 -0
  162. package/dist/evidence-postgres.d.ts +123 -0
  163. package/dist/evidence-postgres.d.ts.map +1 -0
  164. package/dist/evidence-postgres.js +343 -0
  165. package/dist/evidence-postgres.js.map +1 -0
  166. package/dist/evidence.d.ts +113 -0
  167. package/dist/evidence.d.ts.map +1 -0
  168. package/dist/evidence.js +369 -0
  169. package/dist/evidence.js.map +1 -0
  170. package/dist/execution-binding.d.ts +49 -0
  171. package/dist/execution-binding.d.ts.map +1 -0
  172. package/dist/execution-binding.js +243 -0
  173. package/dist/execution-binding.js.map +1 -0
  174. package/dist/formal-runtime-map.d.ts +42 -0
  175. package/dist/formal-runtime-map.d.ts.map +1 -0
  176. package/dist/formal-runtime-map.js +23 -0
  177. package/dist/formal-runtime-map.js.map +1 -0
  178. package/dist/index.d.ts +1002 -0
  179. package/dist/index.d.ts.map +1 -0
  180. package/dist/index.js +1736 -0
  181. package/dist/index.js.map +1 -0
  182. package/dist/key-registry.d.ts +60 -0
  183. package/dist/key-registry.d.ts.map +1 -0
  184. package/dist/key-registry.js +144 -0
  185. package/dist/key-registry.js.map +1 -0
  186. package/dist/mcp.d.ts +53 -0
  187. package/dist/mcp.d.ts.map +1 -0
  188. package/dist/mcp.js +112 -0
  189. package/dist/mcp.js.map +1 -0
  190. package/dist/metering.d.ts +80 -0
  191. package/dist/metering.d.ts.map +1 -0
  192. package/dist/metering.js +227 -0
  193. package/dist/metering.js.map +1 -0
  194. package/dist/metrics.d.ts +68 -0
  195. package/dist/metrics.d.ts.map +1 -0
  196. package/dist/metrics.js +242 -0
  197. package/dist/metrics.js.map +1 -0
  198. package/dist/network-witness.d.ts +167 -0
  199. package/dist/network-witness.d.ts.map +1 -0
  200. package/dist/network-witness.js +520 -0
  201. package/dist/network-witness.js.map +1 -0
  202. package/dist/protocol-state.d.ts +141 -0
  203. package/dist/protocol-state.d.ts.map +1 -0
  204. package/dist/protocol-state.js +106 -0
  205. package/dist/protocol-state.js.map +1 -0
  206. package/dist/receipt-program.d.ts +59 -0
  207. package/dist/receipt-program.d.ts.map +1 -0
  208. package/dist/receipt-program.js +1053 -0
  209. package/dist/receipt-program.js.map +1 -0
  210. package/dist/reliance-kernel.d.ts +66 -0
  211. package/dist/reliance-kernel.d.ts.map +1 -0
  212. package/dist/reliance-kernel.js +103 -0
  213. package/dist/reliance-kernel.js.map +1 -0
  214. package/dist/reliance-packet.d.ts +67 -0
  215. package/dist/reliance-packet.d.ts.map +1 -0
  216. package/dist/reliance-packet.js +176 -0
  217. package/dist/reliance-packet.js.map +1 -0
  218. package/dist/remedy-program-postgres.d.ts +37 -0
  219. package/dist/remedy-program-postgres.d.ts.map +1 -0
  220. package/dist/remedy-program-postgres.js +291 -0
  221. package/dist/remedy-program-postgres.js.map +1 -0
  222. package/dist/remedy-program-receipt.d.ts +97 -0
  223. package/dist/remedy-program-receipt.d.ts.map +1 -0
  224. package/dist/remedy-program-receipt.js +817 -0
  225. package/dist/remedy-program-receipt.js.map +1 -0
  226. package/dist/remedy-program.d.ts +76 -0
  227. package/dist/remedy-program.d.ts.map +1 -0
  228. package/dist/remedy-program.js +1346 -0
  229. package/dist/remedy-program.js.map +1 -0
  230. package/dist/reports/art14.d.ts +101 -0
  231. package/dist/reports/art14.d.ts.map +1 -0
  232. package/dist/reports/art14.js +340 -0
  233. package/dist/reports/art14.js.map +1 -0
  234. package/dist/reports/assurance-package.d.ts +197 -0
  235. package/dist/reports/assurance-package.d.ts.map +1 -0
  236. package/dist/reports/assurance-package.js +313 -0
  237. package/dist/reports/assurance-package.js.map +1 -0
  238. package/dist/reports/auditor-workpaper.d.ts +194 -0
  239. package/dist/reports/auditor-workpaper.d.ts.map +1 -0
  240. package/dist/reports/auditor-workpaper.js +545 -0
  241. package/dist/reports/auditor-workpaper.js.map +1 -0
  242. package/dist/reports/external-verification.d.ts +76 -0
  243. package/dist/reports/external-verification.d.ts.map +1 -0
  244. package/dist/reports/external-verification.js +209 -0
  245. package/dist/reports/external-verification.js.map +1 -0
  246. package/dist/reports/reperform.d.ts +122 -0
  247. package/dist/reports/reperform.d.ts.map +1 -0
  248. package/dist/reports/reperform.js +432 -0
  249. package/dist/reports/reperform.js.map +1 -0
  250. package/dist/reports/underwriter.d.ts +127 -0
  251. package/dist/reports/underwriter.d.ts.map +1 -0
  252. package/dist/reports/underwriter.js +348 -0
  253. package/dist/reports/underwriter.js.map +1 -0
  254. package/dist/retention.d.ts +88 -0
  255. package/dist/retention.d.ts.map +1 -0
  256. package/dist/retention.js +90 -0
  257. package/dist/retention.js.map +1 -0
  258. package/dist/roster.d.ts +113 -0
  259. package/dist/roster.d.ts.map +1 -0
  260. package/dist/roster.js +261 -0
  261. package/dist/roster.js.map +1 -0
  262. package/dist/runtime-monitor.d.ts +132 -0
  263. package/dist/runtime-monitor.d.ts.map +1 -0
  264. package/dist/runtime-monitor.js +197 -0
  265. package/dist/runtime-monitor.js.map +1 -0
  266. package/dist/settlement.d.ts +68 -0
  267. package/dist/settlement.d.ts.map +1 -0
  268. package/dist/settlement.js +306 -0
  269. package/dist/settlement.js.map +1 -0
  270. package/dist/siem.d.ts +261 -0
  271. package/dist/siem.d.ts.map +1 -0
  272. package/dist/siem.js +247 -0
  273. package/dist/siem.js.map +1 -0
  274. package/dist/store-postgres.d.ts +107 -0
  275. package/dist/store-postgres.d.ts.map +1 -0
  276. package/dist/store-postgres.js +152 -0
  277. package/dist/store-postgres.js.map +1 -0
  278. package/dist/store.d.ts +95 -0
  279. package/dist/store.d.ts.map +1 -0
  280. package/dist/store.js +202 -0
  281. package/dist/store.js.map +1 -0
  282. package/dist/strict-json.d.ts +14 -0
  283. package/dist/strict-json.d.ts.map +1 -0
  284. package/dist/strict-json.js +132 -0
  285. package/dist/strict-json.js.map +1 -0
  286. package/dist/trust-program-adapters.d.ts +122 -0
  287. package/dist/trust-program-adapters.d.ts.map +1 -0
  288. package/dist/trust-program-adapters.js +802 -0
  289. package/dist/trust-program-adapters.js.map +1 -0
  290. package/dist/trust-program-postgres.d.ts +41 -0
  291. package/dist/trust-program-postgres.d.ts.map +1 -0
  292. package/dist/trust-program-postgres.js +346 -0
  293. package/dist/trust-program-postgres.js.map +1 -0
  294. package/dist/trust-program-revocation.d.ts +206 -0
  295. package/dist/trust-program-revocation.d.ts.map +1 -0
  296. package/dist/trust-program-revocation.js +600 -0
  297. package/dist/trust-program-revocation.js.map +1 -0
  298. package/dist/trust-program.d.ts +197 -0
  299. package/dist/trust-program.d.ts.map +1 -0
  300. package/dist/trust-program.js +1351 -0
  301. package/dist/trust-program.js.map +1 -0
  302. package/dist/witness-postgres.d.ts +43 -0
  303. package/dist/witness-postgres.d.ts.map +1 -0
  304. package/dist/witness-postgres.js +92 -0
  305. package/dist/witness-postgres.js.map +1 -0
  306. package/dist/zk-range-proof.d.ts +78 -0
  307. package/dist/zk-range-proof.d.ts.map +1 -0
  308. package/dist/zk-range-proof.js +228 -0
  309. package/dist/zk-range-proof.js.map +1 -0
  310. package/eg1-conformance.js +3 -404
  311. package/enterprise.js +3 -180
  312. package/ep-assure.mjs +1 -0
  313. package/evidence-postgres.js +3 -356
  314. package/evidence.js +4 -360
  315. package/execution-binding.js +3 -212
  316. package/formal-runtime-map.js +4 -0
  317. package/index.js +4 -1249
  318. package/key-registry.js +3 -134
  319. package/mcp.js +3 -109
  320. package/metering.js +3 -226
  321. package/metrics.js +3 -231
  322. package/network-witness.js +3 -499
  323. package/package.json +31 -2
  324. package/receipt-program.js +4 -0
  325. package/reliance-kernel.js +3 -112
  326. package/reliance-packet.js +3 -175
  327. package/remedy-program-postgres.js +4 -0
  328. package/remedy-program-receipt.js +4 -0
  329. package/remedy-program.js +4 -0
  330. package/reports/art14.js +0 -0
  331. package/reports/assurance-package.js +2 -312
  332. package/reports/auditor-workpaper.js +3 -537
  333. package/reports/external-verification.js +3 -222
  334. package/reports/reperform.js +3 -424
  335. package/reports/underwriter.js +3 -339
  336. package/retention.js +3 -84
  337. package/roster.js +3 -264
  338. package/runtime-monitor.js +4 -0
  339. package/settlement.js +3 -299
  340. package/siem.js +3 -235
  341. package/src/action-control-manifest.ts +424 -0
  342. package/src/action-escrow-custodian.ts +427 -0
  343. package/src/action-escrow-evidence.ts +1178 -0
  344. package/src/action-escrow-package.ts +1821 -0
  345. package/src/action-escrow-postgres.ts +366 -0
  346. package/src/action-escrow-state.ts +498 -0
  347. package/src/action-escrow-verifiers.ts +484 -0
  348. package/src/action-escrow.ts +3039 -0
  349. package/src/action-packs.ts +170 -0
  350. package/src/adapters/_kit.ts +117 -0
  351. package/src/adapters/aws.ts +142 -0
  352. package/src/adapters/cloudflare.ts +78 -0
  353. package/src/adapters/gcp.ts +71 -0
  354. package/src/adapters/github.ts +110 -0
  355. package/src/adapters/jira.ts +56 -0
  356. package/src/adapters/k8s.ts +71 -0
  357. package/src/adapters/linear.ts +56 -0
  358. package/src/adapters/salesforce.ts +56 -0
  359. package/src/adapters/stripe.ts +82 -0
  360. package/src/adapters/supabase.ts +122 -0
  361. package/src/adapters/terraform.ts +60 -0
  362. package/src/adapters/vercel.ts +85 -0
  363. package/src/aec-execution.ts +354 -0
  364. package/src/breakglass.ts +647 -0
  365. package/src/capability-receipt.ts +1258 -0
  366. package/src/cf1-conformance.ts +120 -0
  367. package/src/challenge-store.ts +70 -0
  368. package/src/control-plane.ts +374 -0
  369. package/src/coverage.ts +832 -0
  370. package/src/deployment-attestation.ts +259 -0
  371. package/src/eg1-conformance.ts +471 -0
  372. package/src/enterprise.ts +195 -0
  373. package/src/evidence-postgres.ts +374 -0
  374. package/src/evidence.ts +367 -0
  375. package/src/execution-binding.ts +236 -0
  376. package/src/formal-runtime-map.ts +24 -0
  377. package/src/index.ts +2122 -0
  378. package/src/key-registry.ts +150 -0
  379. package/src/mcp.ts +120 -0
  380. package/src/metering.ts +237 -0
  381. package/src/metrics.ts +232 -0
  382. package/src/network-witness.ts +585 -0
  383. package/src/protocol-state.ts +143 -0
  384. package/src/protocol-state.typecheck.ts +94 -0
  385. package/src/receipt-program.ts +1105 -0
  386. package/src/reliance-kernel.ts +119 -0
  387. package/src/reliance-packet.ts +206 -0
  388. package/src/remedy-program-postgres.ts +367 -0
  389. package/src/remedy-program-receipt.ts +891 -0
  390. package/src/remedy-program.ts +1388 -0
  391. package/src/reports/art14.ts +361 -0
  392. package/src/reports/assurance-package.ts +330 -0
  393. package/src/reports/auditor-workpaper.ts +558 -0
  394. package/src/reports/external-verification.ts +232 -0
  395. package/src/reports/reperform.ts +441 -0
  396. package/src/reports/underwriter.ts +356 -0
  397. package/src/retention.ts +100 -0
  398. package/src/roster.ts +273 -0
  399. package/src/runtime-monitor.ts +217 -0
  400. package/src/settlement.ts +313 -0
  401. package/src/siem.ts +247 -0
  402. package/src/store-postgres.ts +167 -0
  403. package/src/store.ts +214 -0
  404. package/src/strict-json.ts +115 -0
  405. package/src/trust-program-adapters.ts +847 -0
  406. package/src/trust-program-postgres.ts +429 -0
  407. package/src/trust-program-revocation.ts +751 -0
  408. package/src/trust-program.ts +1460 -0
  409. package/src/witness-postgres.ts +106 -0
  410. package/src/zk-range-proof.ts +250 -0
  411. package/store-postgres.js +3 -161
  412. package/store.js +4 -198
  413. package/strict-json.js +3 -102
  414. package/trust-program-adapters.js +4 -0
  415. package/trust-program-postgres.js +4 -0
  416. package/trust-program-revocation.js +4 -0
  417. package/trust-program.js +4 -0
  418. package/witness-postgres.js +3 -96
  419. package/zk-range-proof.js +4 -0
@@ -0,0 +1,421 @@
1
+ // @ts-nocheck
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Adapters that turn independently verified protocol artifacts into the exact
5
+ * result contract consumed by the Action Escrow state kernel.
6
+ */
7
+ import { verifyDocumentActionBinding, } from '@emilia-protocol/verify/document-action-binding';
8
+ import { canonicalize, hashCanonical } from './execution-binding.js';
9
+ /**
10
+ * Validated, sorted shape of the caller-supplied expected-binding context
11
+ * returned by {@link exactExpected}.
12
+ * @typedef {Object} ExpectedActionBindingContext
13
+ * @property {string} agreement_digest
14
+ * @property {string} document_action_binding_digest
15
+ * @property {string} release_action_digest
16
+ * @property {string} milestone_id
17
+ * @property {Array<{party_id: string, role: string}>} parties
18
+ * @property {string} parties_digest
19
+ * @property {string} profile_digest
20
+ * @property {string|null} supersedes_document_action_binding_digest
21
+ */
22
+ /**
23
+ * Validated release-action template shape produced by
24
+ * {@link validateActionEscrowReleaseTemplate}.
25
+ * @typedef {Object} ActionEscrowReleaseTemplate
26
+ * @property {string} action_type
27
+ * @property {string} action_escrow_profile_digest
28
+ * @property {string} agreement_id
29
+ * @property {string} agreement_digest
30
+ * @property {string} milestone_id
31
+ * @property {string} amount
32
+ * @property {string} currency
33
+ * @property {string} destination_id
34
+ * @property {string} payee_id
35
+ * @property {string} custodian_provider
36
+ * @property {'sandbox'|'production'} custodian_environment
37
+ * @property {string} custodian_transaction_id
38
+ * @property {string} custodian_milestone_id
39
+ * @property {string} document_sha256
40
+ * @property {string} material_terms_sha256
41
+ * @property {string} completion_evidence_sha256
42
+ * @property {number} amendment_version
43
+ * @property {string} [project_record_snapshot_digest]
44
+ * @property {string} [action_escrow_template_profile]
45
+ */
46
+ export const ACTION_ESCROW_AGREEMENT_DIGEST_VERSION = 'EP-ACTION-ESCROW-AGREEMENT-DIGEST-v1';
47
+ export const ACTION_ESCROW_CONTRACTOR_TEMPLATE_VERSION = 'EP-ACTION-ESCROW-CONTRACTOR-TEMPLATE-v1';
48
+ const HASH = /^sha256:[0-9a-f]{64}$/;
49
+ const AMOUNT = /^(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$/;
50
+ const CURRENCY = /^[A-Z]{3}$/;
51
+ export const ACTION_ESCROW_REQUIRED_MATERIAL_TERM_IDS = Object.freeze([
52
+ 'amendment_version',
53
+ 'completion_requirements_digest',
54
+ 'document_authorizes_payment',
55
+ 'milestone_name',
56
+ 'payee_id',
57
+ 'release.amount',
58
+ 'release.destination_id',
59
+ 'release.milestone_id',
60
+ 'release_requires_mutual_approval',
61
+ 'retainage_amount',
62
+ ]);
63
+ export const ACTION_ESCROW_CONTRACTOR_REQUIRED_MATERIAL_TERM_IDS = Object.freeze([
64
+ ...ACTION_ESCROW_REQUIRED_MATERIAL_TERM_IDS,
65
+ 'project_record_snapshot_digest',
66
+ ]);
67
+ const LEGACY_RELEASE_TEMPLATE_KEYS = new Set([
68
+ 'action_type',
69
+ 'action_escrow_profile_digest',
70
+ 'agreement_id',
71
+ 'agreement_digest',
72
+ 'milestone_id',
73
+ 'amount',
74
+ 'currency',
75
+ 'destination_id',
76
+ 'payee_id',
77
+ 'custodian_provider',
78
+ 'custodian_environment',
79
+ 'custodian_transaction_id',
80
+ 'custodian_milestone_id',
81
+ 'document_sha256',
82
+ 'material_terms_sha256',
83
+ 'completion_evidence_sha256',
84
+ 'amendment_version',
85
+ ]);
86
+ const UNMARKED_PROJECT_RELEASE_TEMPLATE_KEYS = new Set([
87
+ ...LEGACY_RELEASE_TEMPLATE_KEYS,
88
+ 'project_record_snapshot_digest',
89
+ ]);
90
+ const CONTRACTOR_RELEASE_TEMPLATE_KEYS = new Set([
91
+ ...LEGACY_RELEASE_TEMPLATE_KEYS,
92
+ 'action_escrow_template_profile',
93
+ 'project_record_snapshot_digest',
94
+ ]);
95
+ function isRecord(value) {
96
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
97
+ return false;
98
+ const prototype = Object.getPrototypeOf(value);
99
+ return prototype === Object.prototype || prototype === null;
100
+ }
101
+ /** @param {*} value */
102
+ function canonicalCopy(value) {
103
+ return JSON.parse(canonicalize(value));
104
+ }
105
+ /** @param {*} value */
106
+ function deepFreeze(value) {
107
+ if (!value || typeof value !== 'object' || Object.isFrozen(value))
108
+ return value;
109
+ Object.freeze(value);
110
+ for (const child of Object.values(value))
111
+ deepFreeze(child);
112
+ return value;
113
+ }
114
+ /** @param {*} value */
115
+ function validString(value, max = 256) {
116
+ return typeof value === 'string'
117
+ && value.length > 0
118
+ && value.length <= max
119
+ && !/[\u0000-\u001f\u007f]/.test(value);
120
+ }
121
+ /** @param {*} parties */
122
+ function sortedParties(parties) {
123
+ if (!Array.isArray(parties))
124
+ return null;
125
+ try {
126
+ return canonicalCopy(parties).sort(
127
+ /**
128
+ * @param {{party_id: string, role: string}} left
129
+ * @param {{party_id: string, role: string}} right
130
+ */
131
+ (left, right) => {
132
+ const leftKey = `${left.role}\u0000${left.party_id}`;
133
+ const rightKey = `${right.role}\u0000${right.party_id}`;
134
+ return leftKey < rightKey ? -1 : leftKey > rightKey ? 1 : 0;
135
+ });
136
+ }
137
+ catch {
138
+ return null;
139
+ }
140
+ }
141
+ /** @param {*} value */
142
+ function bytesCopy(value) {
143
+ if (Buffer.isBuffer(value) || value instanceof Uint8Array) {
144
+ return Uint8Array.from(value);
145
+ }
146
+ if (value instanceof ArrayBuffer)
147
+ return new Uint8Array(value.slice(0));
148
+ return null;
149
+ }
150
+ /** @param {string} reason */
151
+ function refusal(reason) {
152
+ return Object.freeze({
153
+ valid: false,
154
+ reason,
155
+ });
156
+ }
157
+ export function computeActionEscrowAgreementDigest(agreementId) {
158
+ if (!validString(agreementId))
159
+ return null;
160
+ try {
161
+ return `sha256:${hashCanonical({
162
+ '@version': ACTION_ESCROW_AGREEMENT_DIGEST_VERSION,
163
+ agreement_id: agreementId,
164
+ })}`;
165
+ }
166
+ catch {
167
+ return null;
168
+ }
169
+ }
170
+ /**
171
+ * @param {*} value
172
+ * @returns {ExpectedActionBindingContext|null}
173
+ */
174
+ function exactExpected(value) {
175
+ if (!isRecord(value)
176
+ || !HASH.test(value.agreement_digest)
177
+ || !HASH.test(value.document_action_binding_digest)
178
+ || !HASH.test(value.release_action_digest)
179
+ || !HASH.test(value.parties_digest)
180
+ || !HASH.test(value.profile_digest)
181
+ || !validString(value.milestone_id)
182
+ || !Array.isArray(value.parties)) {
183
+ return null;
184
+ }
185
+ const parties = sortedParties(value.parties);
186
+ if (!parties || parties.length < 2)
187
+ return null;
188
+ return {
189
+ agreement_digest: value.agreement_digest,
190
+ document_action_binding_digest: value.document_action_binding_digest,
191
+ release_action_digest: value.release_action_digest,
192
+ milestone_id: value.milestone_id,
193
+ parties,
194
+ parties_digest: value.parties_digest,
195
+ profile_digest: value.profile_digest,
196
+ supersedes_document_action_binding_digest: value.supersedes_document_action_binding_digest ?? null,
197
+ };
198
+ }
199
+ export function validateActionEscrowReleaseTemplate(template, { profileDigest, agreementId, agreementDigest, milestoneId, documentDigest, materialTerms, contractorProjectSource = false, } = {}) {
200
+ const templateKeys = isRecord(template) ? Object.keys(template) : [];
201
+ const allowedKeys = contractorProjectSource
202
+ ? CONTRACTOR_RELEASE_TEMPLATE_KEYS
203
+ : UNMARKED_PROJECT_RELEASE_TEMPLATE_KEYS;
204
+ const requiredKeys = contractorProjectSource
205
+ ? CONTRACTOR_RELEASE_TEMPLATE_KEYS
206
+ : LEGACY_RELEASE_TEMPLATE_KEYS;
207
+ if (!isRecord(template)
208
+ || templateKeys.some((key) => !allowedKeys.has(key))
209
+ || [...requiredKeys].some((key) => !Object.hasOwn(template, key))
210
+ || (contractorProjectSource
211
+ && template.action_escrow_template_profile
212
+ !== ACTION_ESCROW_CONTRACTOR_TEMPLATE_VERSION)
213
+ || template.action_type !== 'escrow.milestone.release'
214
+ || template.action_escrow_profile_digest !== profileDigest
215
+ || template.agreement_id !== agreementId
216
+ || template.agreement_digest !== agreementDigest
217
+ || template.milestone_id !== milestoneId
218
+ || typeof template.amount !== 'string'
219
+ || !AMOUNT.test(template.amount)
220
+ || typeof template.currency !== 'string'
221
+ || !CURRENCY.test(template.currency)
222
+ || !validString(template.destination_id, 512)
223
+ || !validString(template.payee_id, 512)
224
+ || !validString(template.custodian_provider, 128)
225
+ || !['sandbox', 'production'].includes(template.custodian_environment)
226
+ || !validString(template.custodian_transaction_id, 256)
227
+ || !validString(template.custodian_milestone_id, 256)
228
+ || template.document_sha256 !== documentDigest
229
+ || !HASH.test(template.material_terms_sha256)
230
+ || (materialTerms !== undefined
231
+ && template.material_terms_sha256 !== `sha256:${hashCanonical(materialTerms)}`)
232
+ || (contractorProjectSource
233
+ && !HASH.test(template.project_record_snapshot_digest))
234
+ || (Object.hasOwn(template, 'project_record_snapshot_digest')
235
+ && !HASH.test(template.project_record_snapshot_digest))
236
+ || !HASH.test(template.completion_evidence_sha256)
237
+ || !Number.isSafeInteger(template.amendment_version)
238
+ || template.amendment_version < 1) {
239
+ return null;
240
+ }
241
+ try {
242
+ const copy = canonicalCopy(template);
243
+ return Buffer.byteLength(canonicalize(copy), 'utf8') <= 64 * 1024 ? copy : null;
244
+ }
245
+ catch {
246
+ return null;
247
+ }
248
+ }
249
+ function exactActionTemplate(binding, expected, contractorProjectSource) {
250
+ return validateActionEscrowReleaseTemplate(binding?.release_action?.template, {
251
+ profileDigest: expected.profile_digest,
252
+ agreementId: binding?.agreement_id,
253
+ agreementDigest: expected.agreement_digest,
254
+ milestoneId: expected.milestone_id,
255
+ documentDigest: binding?.document?.digest,
256
+ materialTerms: binding?.material_terms,
257
+ contractorProjectSource,
258
+ });
259
+ }
260
+ function materialTermsMatchAction(binding, template) {
261
+ if (!Array.isArray(binding?.material_terms))
262
+ return false;
263
+ const terms = new Map(binding.material_terms.map((term) => [term.term_id, term]));
264
+ const amount = terms.get('release.amount');
265
+ const destination = terms.get('release.destination_id');
266
+ const milestone = terms.get('release.milestone_id');
267
+ const amendment = terms.get('amendment_version');
268
+ const completionRequirements = terms.get('completion_requirements_digest');
269
+ const documentAuthorizesPayment = terms.get('document_authorizes_payment');
270
+ const milestoneName = terms.get('milestone_name');
271
+ const payee = terms.get('payee_id');
272
+ const releaseRequiresMutualApproval = terms.get('release_requires_mutual_approval');
273
+ const retainage = terms.get('retainage_amount');
274
+ const projectRecord = terms.get('project_record_snapshot_digest');
275
+ const projectRecordBound = Object.hasOwn(template, 'project_record_snapshot_digest');
276
+ return amount?.type === 'amount'
277
+ && amount.value === template.amount
278
+ && amount.currency === template.currency
279
+ // `.includes()` is not a type guard, but it can only be true here when
280
+ // `destination` is defined (undefined never matches either literal).
281
+ && ['identifier', 'string'].includes(destination?.type)
282
+ && destination.value === template.destination_id
283
+ && ['identifier', 'string'].includes(milestone?.type)
284
+ && milestone.value === template.milestone_id
285
+ && amendment?.type === 'integer'
286
+ && amendment.value === template.amendment_version
287
+ && completionRequirements?.type === 'digest'
288
+ && HASH.test(completionRequirements.value)
289
+ && documentAuthorizesPayment?.type === 'boolean'
290
+ && documentAuthorizesPayment.value === false
291
+ && milestoneName?.type === 'string'
292
+ && validString(milestoneName.value, 2048)
293
+ && payee?.type === 'identifier'
294
+ && payee.value === template.payee_id
295
+ && releaseRequiresMutualApproval?.type === 'boolean'
296
+ && releaseRequiresMutualApproval.value === true
297
+ && retainage?.type === 'amount'
298
+ && retainage.currency === template.currency
299
+ && (!projectRecordBound
300
+ || (projectRecord?.type === 'digest'
301
+ && projectRecord.value === template.project_record_snapshot_digest));
302
+ }
303
+ /**
304
+ * Create a kernel verifier backed by the public DAB verifier.
305
+ *
306
+ * The document resolver is mandatory: mapping authenticity without checking
307
+ * the final bytes is insufficient for a release decision.
308
+ */
309
+ function createDocumentBindingVerifier({ issuerKeys, resolveDocumentBytes, allowedMediaTypes = ['application/pdf'], allowedPartyRoles = ['client', 'contractor'], now = Date.now, } = {}, { contractorProjectSource, }) {
310
+ if (!isRecord(issuerKeys)
311
+ || Object.keys(issuerKeys).length === 0
312
+ || typeof resolveDocumentBytes !== 'function'
313
+ || typeof now !== 'function') {
314
+ throw new TypeError('pinned DAB keys, document resolver, and clock are required');
315
+ }
316
+ const pinnedIssuerKeys = deepFreeze(canonicalCopy(issuerKeys));
317
+ const mediaTypes = deepFreeze(canonicalCopy(allowedMediaTypes));
318
+ const partyRoles = deepFreeze(canonicalCopy(allowedPartyRoles));
319
+ return async function verifyForKernel(binding, untrustedExpected) {
320
+ try {
321
+ const expected = exactExpected(untrustedExpected);
322
+ if (!expected)
323
+ return refusal('invalid_expected_binding_context');
324
+ const evaluationTime = now();
325
+ const options = {
326
+ issuerKeys: pinnedIssuerKeys,
327
+ now: evaluationTime,
328
+ allowedMediaTypes: mediaTypes,
329
+ allowedPartyRoles: partyRoles,
330
+ allowedActionTypes: ['escrow.milestone.release'],
331
+ requiredMaterialTermIds: (contractorProjectSource
332
+ ? ACTION_ESCROW_CONTRACTOR_REQUIRED_MATERIAL_TERM_IDS
333
+ : ACTION_ESCROW_REQUIRED_MATERIAL_TERM_IDS),
334
+ expectedRequiredParties: expected.parties,
335
+ expectedSupersedesDigest: expected.supersedes_document_action_binding_digest,
336
+ };
337
+ const authenticated = verifyDocumentActionBinding(binding, options);
338
+ if (!authenticated.valid)
339
+ return refusal(authenticated.reason);
340
+ if (authenticated.binding_digest !== expected.document_action_binding_digest
341
+ || authenticated.action_digest !== expected.release_action_digest
342
+ || computeActionEscrowAgreementDigest(authenticated.agreement_id)
343
+ !== expected.agreement_digest) {
344
+ return refusal('kernel_binding_context_mismatch');
345
+ }
346
+ const actionTemplate = exactActionTemplate(binding, expected, contractorProjectSource);
347
+ if (!actionTemplate
348
+ || !materialTermsMatchAction(binding, actionTemplate)) {
349
+ return refusal('material_action_mapping_mismatch');
350
+ }
351
+ const resolved = await resolveDocumentBytes(deepFreeze({
352
+ agreement_id: authenticated.agreement_id,
353
+ binding_id: authenticated.binding_id,
354
+ binding_digest: authenticated.binding_digest,
355
+ document_digest: authenticated.document_digest,
356
+ document_media_type: binding.document.media_type,
357
+ document_byte_length: binding.document.byte_length,
358
+ }));
359
+ const documentBytes = bytesCopy(resolved);
360
+ if (!documentBytes)
361
+ return refusal('document_bytes_unavailable');
362
+ const verified = verifyDocumentActionBinding(binding, {
363
+ ...options,
364
+ documentBytes,
365
+ documentMediaType: binding.document.media_type,
366
+ releaseActionTemplate: actionTemplate,
367
+ });
368
+ if (!verified.valid)
369
+ return refusal(verified.reason);
370
+ return deepFreeze({
371
+ valid: true,
372
+ reason: 'valid',
373
+ verification_digest: verified.binding_digest,
374
+ document_digest: verified.document_digest,
375
+ agreement_id: verified.agreement_id,
376
+ binding_id: verified.binding_id,
377
+ release_action_template: actionTemplate,
378
+ agreement_digest: expected.agreement_digest,
379
+ document_action_binding_digest: verified.binding_digest,
380
+ milestone_id: expected.milestone_id,
381
+ release_action_digest: verified.action_digest,
382
+ parties_digest: expected.parties_digest,
383
+ profile_digest: expected.profile_digest,
384
+ ...(HASH.test(actionTemplate.project_record_snapshot_digest)
385
+ ? {
386
+ project_record_snapshot_digest: actionTemplate.project_record_snapshot_digest,
387
+ }
388
+ : {}),
389
+ ...(verified.supersedes_digest === null
390
+ ? {}
391
+ : {
392
+ supersedes_document_action_binding_digest: verified.supersedes_digest,
393
+ }),
394
+ });
395
+ }
396
+ catch {
397
+ return refusal('document_action_binding_verifier_failed');
398
+ }
399
+ };
400
+ }
401
+ export function createActionEscrowDocumentBindingVerifier(options = {}) {
402
+ return createDocumentBindingVerifier(options, {
403
+ contractorProjectSource: false,
404
+ });
405
+ }
406
+ export function createActionEscrowContractorDocumentBindingVerifier(options = {}) {
407
+ return createDocumentBindingVerifier(options, {
408
+ contractorProjectSource: true,
409
+ });
410
+ }
411
+ export default Object.freeze({
412
+ ACTION_ESCROW_AGREEMENT_DIGEST_VERSION,
413
+ ACTION_ESCROW_CONTRACTOR_TEMPLATE_VERSION,
414
+ ACTION_ESCROW_CONTRACTOR_REQUIRED_MATERIAL_TERM_IDS,
415
+ ACTION_ESCROW_REQUIRED_MATERIAL_TERM_IDS,
416
+ computeActionEscrowAgreementDigest,
417
+ createActionEscrowContractorDocumentBindingVerifier,
418
+ createActionEscrowDocumentBindingVerifier,
419
+ validateActionEscrowReleaseTemplate,
420
+ });
421
+ //# sourceMappingURL=action-escrow-verifiers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-escrow-verifiers.js","sourceRoot":"","sources":["../src/action-escrow-verifiers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ export declare const ACTION_ESCROW_STATE_VERSION = "EP-ACTION-ESCROW-STATE-v1";
2
+ export declare const ACTION_ESCROW_OUTCOME_VERSION = "EP-ACTION-ESCROW-OUTCOME-v1";
3
+ export declare const ACTION_ESCROW_PROFILE_VERSION = "EP-ACTION-ESCROW-PROFILE-v1";
4
+ export declare const ACTION_ESCROW_STATES: readonly string[];
5
+ export declare const ACTION_ESCROW_TRANSITIONS: Readonly<{
6
+ draft: readonly string[];
7
+ awaiting_acceptance: readonly string[];
8
+ effective: readonly string[];
9
+ awaiting_funding: readonly string[];
10
+ funded: readonly string[];
11
+ milestone_submitted: readonly string[];
12
+ release_reserved: readonly string[];
13
+ released: readonly string[];
14
+ disputed: readonly never[];
15
+ amendment_pending: readonly string[];
16
+ cancelled: readonly never[];
17
+ completed: readonly never[];
18
+ release_indeterminate: readonly string[];
19
+ }>;
20
+ /**
21
+ * Build the exact human-facing envelope signed by an Action Escrow approver.
22
+ *
23
+ * The release action digest remains the normative machine-action binding. This
24
+ * envelope binds the document, evidence, and material release fields that the
25
+ * approver reviews before selecting the approval option.
26
+ */
27
+ export declare function createActionEscrowReleaseBindingMoment(input: any): any;
28
+ export declare function computeActionEscrowReleaseBindingMomentDigest(input: any): string | null;
29
+ /**
30
+ * Return the relying-party-pinned nonce for one party and one exact release.
31
+ *
32
+ * It is stable while both parties approve, changes with any material action or
33
+ * evidence change, and is consumed by the durable approval CAS.
34
+ */
35
+ export declare function computeActionEscrowResolutionNonce(input: any, partyId: any): string | null;
36
+ type ActionEscrowVerifierFn = (artifact: any, expected: any) => any;
37
+ type ActionEscrowKernelOptions = {
38
+ store?: Record<string, any>;
39
+ provider?: Record<string, any>;
40
+ verifyDocumentActionBinding?: ActionEscrowVerifierFn;
41
+ verifyAgreementAcceptance?: ActionEscrowVerifierFn;
42
+ verifyMilestoneEvidence?: ActionEscrowVerifierFn;
43
+ verifyResolutionReceipt?: ActionEscrowVerifierFn;
44
+ verifyProviderStatement?: ActionEscrowVerifierFn;
45
+ verifyStateCommand?: ActionEscrowVerifierFn;
46
+ profilesById?: Record<string, any>;
47
+ resolveProfile?: (profileId: string, context: Record<string, any>) => any;
48
+ now?: () => (Date | number | string);
49
+ providerTimeoutMs?: number;
50
+ };
51
+ /**
52
+ * Create a fail-closed Action Escrow kernel.
53
+ *
54
+ * Store contract:
55
+ * durable === true
56
+ * atomicExpectedRevisionCas === true
57
+ * linearizableReads === true
58
+ * monotonicRevisions === true
59
+ * nonExpiring === true
60
+ * read(key) -> null | { revision, value: canonicalJsonText }
61
+ * compareAndSwap(key, expectedRevision|null, nextValue)
62
+ * -> { applied, revision }
63
+ */
64
+ export declare function createActionEscrowKernel(options?: ActionEscrowKernelOptions): Readonly<{
65
+ create: (input?: {}) => Promise<any>;
66
+ beginAcceptance: (input?: {}) => Promise<any>;
67
+ acceptAgreement: (input?: {}) => Promise<any>;
68
+ requestFunding: (input?: {}) => Promise<any>;
69
+ recordFunding: (input?: {}) => Promise<any>;
70
+ submitMilestone: (input?: {}) => Promise<any>;
71
+ approveRelease: (input?: {}) => Promise<any>;
72
+ release: (input?: {}) => Promise<any>;
73
+ reconcileRelease: (input?: {}) => Promise<any>;
74
+ openDispute: (input?: {}) => Promise<any>;
75
+ proposeAmendment: (input?: {}) => Promise<any>;
76
+ acceptAmendment: (input?: {}) => Promise<any>;
77
+ cancel: (input?: {}) => Promise<any>;
78
+ complete: (input?: {}) => Promise<any>;
79
+ ready: boolean;
80
+ configuration: Readonly<{
81
+ ok: boolean;
82
+ reason: string | null;
83
+ }>;
84
+ apply: (operation: any, input?: {}) => Promise<any>;
85
+ }>;
86
+ declare const _default: Readonly<{
87
+ ACTION_ESCROW_STATE_VERSION: "EP-ACTION-ESCROW-STATE-v1";
88
+ ACTION_ESCROW_OUTCOME_VERSION: "EP-ACTION-ESCROW-OUTCOME-v1";
89
+ ACTION_ESCROW_PROFILE_VERSION: "EP-ACTION-ESCROW-PROFILE-v1";
90
+ ACTION_ESCROW_STATES: readonly string[];
91
+ ACTION_ESCROW_TRANSITIONS: Readonly<{
92
+ draft: readonly string[];
93
+ awaiting_acceptance: readonly string[];
94
+ effective: readonly string[];
95
+ awaiting_funding: readonly string[];
96
+ funded: readonly string[];
97
+ milestone_submitted: readonly string[];
98
+ release_reserved: readonly string[];
99
+ released: readonly string[];
100
+ disputed: readonly never[];
101
+ amendment_pending: readonly string[];
102
+ cancelled: readonly never[];
103
+ completed: readonly never[];
104
+ release_indeterminate: readonly string[];
105
+ }>;
106
+ createActionEscrowReleaseBindingMoment: typeof createActionEscrowReleaseBindingMoment;
107
+ computeActionEscrowReleaseBindingMomentDigest: typeof computeActionEscrowReleaseBindingMomentDigest;
108
+ computeActionEscrowResolutionNonce: typeof computeActionEscrowResolutionNonce;
109
+ createActionEscrowKernel: typeof createActionEscrowKernel;
110
+ }>;
111
+ export default _default;
112
+ //# sourceMappingURL=action-escrow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-escrow.d.ts","sourceRoot":"","sources":["../src/action-escrow.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,2BAA2B,8BAA8B,CAAC;AACvE,eAAO,MAAM,6BAA6B,gCAAgC,CAAC;AAC3E,eAAO,MAAM,6BAA6B,gCAAgC,CAAC;AAE3E,eAAO,MAAM,oBAAoB,mBAc/B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;EAoBpC,CAAC;AA0MH;;;;;;GAMG;AACH,wBAAgB,sCAAsC,CAAC,KAAK,KAAA,OAmE3D;AAED,wBAAgB,6CAA6C,CAAC,KAAK,KAAA,iBAGlE;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAAC,KAAK,KAAA,EAAE,OAAO,KAAA,iBAehE;AAopBD,KAAK,sBAAsB,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,GAAG,CAAC;AAEpE,KAAK,yBAAyB,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,2BAA2B,CAAC,EAAE,sBAAsB,CAAC;IACrD,yBAAyB,CAAC,EAAE,sBAAsB,CAAC;IACnD,uBAAuB,CAAC,EAAE,sBAAsB,CAAC;IACjD,uBAAuB,CAAC,EAAE,sBAAsB,CAAC;IACjD,uBAAuB,CAAC,EAAE,sBAAsB,CAAC;IACjD,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,yBAA8B;;;;;;;;;;;;;;;;;;;;;GA07D/E;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAUG"}