@layerzerolabs/common-canton 1.2.82 → 1.2.84

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 (274) hide show
  1. package/dist/{7MEBFPGZ.js → 2MDY7NOT.js} +3 -3
  2. package/dist/{7MEBFPGZ.js.map → 2MDY7NOT.js.map} +1 -1
  3. package/dist/{ZSOWBGX3.js → 35HFP3P5.js} +3 -3
  4. package/dist/{ZSOWBGX3.js.map → 35HFP3P5.js.map} +1 -1
  5. package/dist/{25ZZZGNN.js → 3TIEYCKL.js} +3 -3
  6. package/dist/{25ZZZGNN.js.map → 3TIEYCKL.js.map} +1 -1
  7. package/dist/{PLCXYLPU.js → 465SJA2X.js} +3 -3
  8. package/dist/{PLCXYLPU.js.map → 465SJA2X.js.map} +1 -1
  9. package/dist/{QIYRAOGU.js → 4VX7UAGI.js} +3 -3
  10. package/dist/{QIYRAOGU.js.map → 4VX7UAGI.js.map} +1 -1
  11. package/dist/{BQ2SFPGS.js → 56HIY2EH.js} +4 -4
  12. package/dist/{BQ2SFPGS.js.map → 56HIY2EH.js.map} +1 -1
  13. package/dist/{XLO35F3H.js → 5LBTGOFY.js} +3 -3
  14. package/dist/{XLO35F3H.js.map → 5LBTGOFY.js.map} +1 -1
  15. package/dist/{P7PG4R5T.js → 65SCKUZN.js} +3 -3
  16. package/dist/{P7PG4R5T.js.map → 65SCKUZN.js.map} +1 -1
  17. package/dist/{W5CHA5AA.js → 6U4QHSRF.js} +3 -3
  18. package/dist/{W5CHA5AA.js.map → 6U4QHSRF.js.map} +1 -1
  19. package/dist/{BWPOOFYL.js → 7DQZUTXG.js} +3 -3
  20. package/dist/{BWPOOFYL.js.map → 7DQZUTXG.js.map} +1 -1
  21. package/dist/{5KN65GJK.js → 7KCG6XNJ.js} +3 -3
  22. package/dist/{5KN65GJK.js.map → 7KCG6XNJ.js.map} +1 -1
  23. package/dist/{3TPQEBCC.js → AKJB7QUH.js} +4 -4
  24. package/dist/{3TPQEBCC.js.map → AKJB7QUH.js.map} +1 -1
  25. package/dist/{ULL44NXA.js → AYATS7Q7.js} +4 -4
  26. package/dist/{ULL44NXA.js.map → AYATS7Q7.js.map} +1 -1
  27. package/dist/{B7MBM6I4.js → B5WQLYXA.js} +3 -3
  28. package/dist/{B7MBM6I4.js.map → B5WQLYXA.js.map} +1 -1
  29. package/dist/{QPSHOSQZ.js → B6FULRVA.js} +3 -3
  30. package/dist/{QPSHOSQZ.js.map → B6FULRVA.js.map} +1 -1
  31. package/dist/{OBDYSLUL.js → B7B4NFMT.js} +4 -4
  32. package/dist/{OBDYSLUL.js.map → B7B4NFMT.js.map} +1 -1
  33. package/dist/{QRPS2ZRD.js → BAJWS3PR.js} +3 -3
  34. package/dist/{QRPS2ZRD.js.map → BAJWS3PR.js.map} +1 -1
  35. package/dist/{V2TREL3L.js → BVYO2Q67.js} +3 -3
  36. package/dist/{V2TREL3L.js.map → BVYO2Q67.js.map} +1 -1
  37. package/dist/{A7FFE5B3.js → C7YYEPNV.js} +3 -3
  38. package/dist/{A7FFE5B3.js.map → C7YYEPNV.js.map} +1 -1
  39. package/dist/CNSI6MLV.js +3 -0
  40. package/dist/CNSI6MLV.js.map +1 -0
  41. package/dist/{DFCC26G3.js → CRVXAMIK.js} +4 -4
  42. package/dist/{DFCC26G3.js.map → CRVXAMIK.js.map} +1 -1
  43. package/dist/{FGQEPZNL.js → D46GHYLR.js} +4 -4
  44. package/dist/{FGQEPZNL.js.map → D46GHYLR.js.map} +1 -1
  45. package/dist/{MO6W6SKU.js → DCDLEU2R.js} +3 -3
  46. package/dist/{MO6W6SKU.js.map → DCDLEU2R.js.map} +1 -1
  47. package/dist/{JBO4ZQNH.js → DH4R3OEY.js} +3 -3
  48. package/dist/{JBO4ZQNH.js.map → DH4R3OEY.js.map} +1 -1
  49. package/dist/{FSV2XOCP.js → DXB7KQQ3.js} +3 -3
  50. package/dist/{FSV2XOCP.js.map → DXB7KQQ3.js.map} +1 -1
  51. package/dist/{UINDAVKP.js → F3GDX5RU.js} +3 -3
  52. package/dist/{UINDAVKP.js.map → F3GDX5RU.js.map} +1 -1
  53. package/dist/{VPGKHXFY.js → FMIJBVTF.js} +3 -3
  54. package/dist/{VPGKHXFY.js.map → FMIJBVTF.js.map} +1 -1
  55. package/dist/{TYI7PTYG.js → G2IINZ4S.js} +4 -4
  56. package/dist/{TYI7PTYG.js.map → G2IINZ4S.js.map} +1 -1
  57. package/dist/{NN67IIT7.js → GNTIQ643.js} +3 -3
  58. package/dist/{NN67IIT7.js.map → GNTIQ643.js.map} +1 -1
  59. package/dist/{RH6PBMPO.js → GO3V36NC.js} +3 -3
  60. package/dist/{RH6PBMPO.js.map → GO3V36NC.js.map} +1 -1
  61. package/dist/{WZ4QCFOE.js → H6FC5ZHO.js} +3 -3
  62. package/dist/{WZ4QCFOE.js.map → H6FC5ZHO.js.map} +1 -1
  63. package/dist/{IPSWV2QP.js → HNPWKZ6F.js} +3 -3
  64. package/dist/{IPSWV2QP.js.map → HNPWKZ6F.js.map} +1 -1
  65. package/dist/{OU543BQK.js → HQLFL4RA.js} +4 -4
  66. package/dist/{OU543BQK.js.map → HQLFL4RA.js.map} +1 -1
  67. package/dist/{MW2R4OL5.js → HUCQT5VJ.js} +3 -3
  68. package/dist/{MW2R4OL5.js.map → HUCQT5VJ.js.map} +1 -1
  69. package/dist/{6SVME57P.js → HUFKMP7V.js} +3 -3
  70. package/dist/{6SVME57P.js.map → HUFKMP7V.js.map} +1 -1
  71. package/dist/{KPHXDZAV.js → IARIG54E.js} +3 -3
  72. package/dist/{KPHXDZAV.js.map → IARIG54E.js.map} +1 -1
  73. package/dist/{PDVMANRS.js → IF5HNKIS.js} +10 -11
  74. package/dist/IF5HNKIS.js.map +1 -0
  75. package/dist/{UNT3QBTP.js → ISOF5W3C.js} +3 -3
  76. package/dist/{UNT3QBTP.js.map → ISOF5W3C.js.map} +1 -1
  77. package/dist/{ND24MKMU.js → ISPQTPDP.js} +3 -3
  78. package/dist/{ND24MKMU.js.map → ISPQTPDP.js.map} +1 -1
  79. package/dist/{6OFY25TY.js → JI5SNJMZ.js} +3 -3
  80. package/dist/{6OFY25TY.js.map → JI5SNJMZ.js.map} +1 -1
  81. package/dist/{N3QRG2AK.js → KFTXC6M6.js} +4 -4
  82. package/dist/{N3QRG2AK.js.map → KFTXC6M6.js.map} +1 -1
  83. package/dist/{4P5QC3JV.js → KPRGDDD4.js} +3 -3
  84. package/dist/{4P5QC3JV.js.map → KPRGDDD4.js.map} +1 -1
  85. package/dist/{75BEFQTY.js → KPYTSJJS.js} +3 -3
  86. package/dist/{75BEFQTY.js.map → KPYTSJJS.js.map} +1 -1
  87. package/dist/{MISBG67G.js → KXKCEJPZ.js} +3 -3
  88. package/dist/{MISBG67G.js.map → KXKCEJPZ.js.map} +1 -1
  89. package/dist/{7IMQETOY.js → LIFJZMPI.js} +3 -3
  90. package/dist/{7IMQETOY.js.map → LIFJZMPI.js.map} +1 -1
  91. package/dist/{7AWXDEJN.js → MSW4M7DJ.js} +3 -3
  92. package/dist/{7AWXDEJN.js.map → MSW4M7DJ.js.map} +1 -1
  93. package/dist/{LMKFC7LV.js → N2VZE4OM.js} +42 -42
  94. package/dist/{LMKFC7LV.js.map → N2VZE4OM.js.map} +1 -1
  95. package/dist/{O6C7LDBM.js → N6MJWA4V.js} +3 -3
  96. package/dist/{O6C7LDBM.js.map → N6MJWA4V.js.map} +1 -1
  97. package/dist/{YHT3X6LW.js → NQ32FVJQ.js} +3 -3
  98. package/dist/{YHT3X6LW.js.map → NQ32FVJQ.js.map} +1 -1
  99. package/dist/{6O6IFYQM.js → OMUCTDKJ.js} +3 -3
  100. package/dist/{6O6IFYQM.js.map → OMUCTDKJ.js.map} +1 -1
  101. package/dist/{XCOORR26.js → P4PU4NFW.js} +3 -3
  102. package/dist/P4PU4NFW.js.map +1 -0
  103. package/dist/{3KBNHKU6.js → PIQ3L4RJ.js} +3 -3
  104. package/dist/{3KBNHKU6.js.map → PIQ3L4RJ.js.map} +1 -1
  105. package/dist/{VJKB367I.js → PS62VP4X.js} +4 -4
  106. package/dist/{VJKB367I.js.map → PS62VP4X.js.map} +1 -1
  107. package/dist/{3I23YKYV.js → Q7STSQKL.js} +3 -3
  108. package/dist/{3I23YKYV.js.map → Q7STSQKL.js.map} +1 -1
  109. package/dist/{RVJRKYSC.js → QSOEA7F4.js} +4 -11
  110. package/dist/QSOEA7F4.js.map +1 -0
  111. package/dist/{LSKYLA4P.js → SDQAF6FO.js} +3 -3
  112. package/dist/{LSKYLA4P.js.map → SDQAF6FO.js.map} +1 -1
  113. package/dist/{W7DMST44.js → SPSLTFPC.js} +3 -3
  114. package/dist/{W7DMST44.js.map → SPSLTFPC.js.map} +1 -1
  115. package/dist/{ISTGNQEF.js → SWLTCAND.js} +3 -3
  116. package/dist/{ISTGNQEF.js.map → SWLTCAND.js.map} +1 -1
  117. package/dist/{JAONRVNE.js → TI4MI7RA.js} +3 -3
  118. package/dist/{JAONRVNE.js.map → TI4MI7RA.js.map} +1 -1
  119. package/dist/{SA63DYLV.js → TJ6SKLPC.js} +3 -3
  120. package/dist/{SA63DYLV.js.map → TJ6SKLPC.js.map} +1 -1
  121. package/dist/{PWKI6T6A.js → U6EV6YAY.js} +3 -27
  122. package/dist/U6EV6YAY.js.map +1 -0
  123. package/dist/{HCNXHOIJ.js → UG2M23HF.js} +5 -6
  124. package/dist/UG2M23HF.js.map +1 -0
  125. package/dist/{YONIYI4X.js → UMD5REID.js} +3 -3
  126. package/dist/{YONIYI4X.js.map → UMD5REID.js.map} +1 -1
  127. package/dist/{44EVBXCG.js → V4O4HXKX.js} +3 -3
  128. package/dist/{44EVBXCG.js.map → V4O4HXKX.js.map} +1 -1
  129. package/dist/{FO4X6Q5A.js → VINQ7WT7.js} +3 -3
  130. package/dist/{FO4X6Q5A.js.map → VINQ7WT7.js.map} +1 -1
  131. package/dist/VJU775PW.js +20 -0
  132. package/dist/VJU775PW.js.map +1 -0
  133. package/dist/{BZXMNRDO.js → VQM45MNW.js} +3 -3
  134. package/dist/{BZXMNRDO.js.map → VQM45MNW.js.map} +1 -1
  135. package/dist/{CLHFF2NZ.js → VTWWYUP6.js} +3 -3
  136. package/dist/{CLHFF2NZ.js.map → VTWWYUP6.js.map} +1 -1
  137. package/dist/{75VVMQKH.js → VX44V3KJ.js} +3 -3
  138. package/dist/{75VVMQKH.js.map → VX44V3KJ.js.map} +1 -1
  139. package/dist/{DTELRK7C.js → W53VMEDS.js} +3 -3
  140. package/dist/{DTELRK7C.js.map → W53VMEDS.js.map} +1 -1
  141. package/dist/{RLSRF5OW.js → W5NNHK5Y.js} +3 -3
  142. package/dist/{RLSRF5OW.js.map → W5NNHK5Y.js.map} +1 -1
  143. package/dist/{PTJBIMSS.js → WCIL5GCC.js} +3 -3
  144. package/dist/{PTJBIMSS.js.map → WCIL5GCC.js.map} +1 -1
  145. package/dist/{HB636AF5.js → YV6LAB6R.js} +4 -4
  146. package/dist/{HB636AF5.js.map → YV6LAB6R.js.map} +1 -1
  147. package/dist/{TQMPIJZW.js → ZBM7PUST.js} +3 -3
  148. package/dist/{TQMPIJZW.js.map → ZBM7PUST.js.map} +1 -1
  149. package/dist/{BQWTGHOG.js → ZMRZLUTH.js} +3 -3
  150. package/dist/{BQWTGHOG.js.map → ZMRZLUTH.js.map} +1 -1
  151. package/dist/{ENHZYE4Z.js → ZN6IMTCH.js} +3 -3
  152. package/dist/{ENHZYE4Z.js.map → ZN6IMTCH.js.map} +1 -1
  153. package/dist/{NPSCFRV6.js → ZXJZWQK5.js} +3 -3
  154. package/dist/{NPSCFRV6.js.map → ZXJZWQK5.js.map} +1 -1
  155. package/dist/address.js +2 -2
  156. package/dist/browser.js +2 -2
  157. package/dist/client/amulet.js +4 -4
  158. package/dist/client/canton-client.js +128 -128
  159. package/dist/client/index.js +128 -128
  160. package/dist/deferredValue.d.ts +1 -19
  161. package/dist/deferredValue.d.ts.map +1 -1
  162. package/dist/deferredValue.js +1 -1
  163. package/dist/events.js +5 -5
  164. package/dist/index.js +140 -142
  165. package/dist/open-api/apis/DefaultApi.js +123 -123
  166. package/dist/open-api/apis/index.js +123 -123
  167. package/dist/open-api/index.js +123 -123
  168. package/dist/open-api/models/Command.js +5 -5
  169. package/dist/open-api/models/Completion.js +4 -4
  170. package/dist/open-api/models/Completion1.js +3 -3
  171. package/dist/open-api/models/CompletionResponse.js +6 -6
  172. package/dist/open-api/models/CompletionResponseOneOf.js +5 -5
  173. package/dist/open-api/models/CompletionStreamResponse.js +7 -7
  174. package/dist/open-api/models/CreateUserRequest.js +8 -8
  175. package/dist/open-api/models/CumulativeFilter.js +5 -5
  176. package/dist/open-api/models/DeduplicationPeriod.js +2 -2
  177. package/dist/open-api/models/DeduplicationPeriod2.js +2 -2
  178. package/dist/open-api/models/Event.js +3 -3
  179. package/dist/open-api/models/EventFormat.js +7 -7
  180. package/dist/open-api/models/ExperimentalFeatures.js +2 -2
  181. package/dist/open-api/models/FeaturesDescriptor.js +3 -3
  182. package/dist/open-api/models/Filters.js +6 -6
  183. package/dist/open-api/models/GetActiveContractsPageRequest.js +8 -8
  184. package/dist/open-api/models/GetActiveContractsRequest.js +8 -8
  185. package/dist/open-api/models/GetCompletionByHashResponse.js +4 -4
  186. package/dist/open-api/models/GetEventsByContractIdRequest.js +8 -8
  187. package/dist/open-api/models/GetLedgerApiVersionResponse.js +4 -4
  188. package/dist/open-api/models/GetUpdateByHashRequest.js +10 -10
  189. package/dist/open-api/models/GetUpdateByIdRequest.js +10 -10
  190. package/dist/open-api/models/GetUpdateByOffsetRequest.js +10 -10
  191. package/dist/open-api/models/GetUpdatesPageRequest.js +10 -10
  192. package/dist/open-api/models/GetUpdatesRequest.js +10 -10
  193. package/dist/open-api/models/GrantUserRightsRequest.js +8 -8
  194. package/dist/open-api/models/GrantUserRightsResponse.js +8 -8
  195. package/dist/open-api/models/IdentifierFilter.js +4 -4
  196. package/dist/open-api/models/JsCommands.js +8 -8
  197. package/dist/open-api/models/JsExecuteSubmissionAndWaitForTransactionRequest.js +11 -11
  198. package/dist/open-api/models/JsExecuteSubmissionAndWaitForTransactionResponse.js +5 -5
  199. package/dist/open-api/models/JsExecuteSubmissionAndWaitRequest.js +3 -3
  200. package/dist/open-api/models/JsExecuteSubmissionRequest.js +3 -3
  201. package/dist/open-api/models/JsGetUpdateResponse.js +17 -17
  202. package/dist/open-api/models/JsGetUpdatesPageResponse.js +18 -18
  203. package/dist/open-api/models/JsGetUpdatesResponse.js +17 -17
  204. package/dist/open-api/models/JsPrepareSubmissionRequest.js +7 -7
  205. package/dist/open-api/models/JsReassignment.js +1 -1
  206. package/dist/open-api/models/JsReassignmentEvent.js +1 -1
  207. package/dist/open-api/models/JsSubmitAndWaitForReassignmentResponse.js +1 -1
  208. package/dist/open-api/models/JsSubmitAndWaitForTransactionRequest.js +19 -19
  209. package/dist/open-api/models/JsSubmitAndWaitForTransactionResponse.js +5 -5
  210. package/dist/open-api/models/JsTopologyTransaction.js +6 -6
  211. package/dist/open-api/models/JsTransaction.js +4 -4
  212. package/dist/open-api/models/Kind.js +6 -6
  213. package/dist/open-api/models/ListUserRightsResponse.js +8 -8
  214. package/dist/open-api/models/PriorTopologySerial.js +3 -3
  215. package/dist/open-api/models/Reassignment.js +1 -1
  216. package/dist/open-api/models/RevokeUserRightsRequest.js +8 -8
  217. package/dist/open-api/models/RevokeUserRightsResponse.js +8 -8
  218. package/dist/open-api/models/Right.js +7 -7
  219. package/dist/open-api/models/Serial.js +2 -2
  220. package/dist/open-api/models/SubmitAndWaitForReassignmentRequest.js +8 -8
  221. package/dist/open-api/models/TopologyEvent.js +5 -5
  222. package/dist/open-api/models/TopologyEventEvent.js +4 -4
  223. package/dist/open-api/models/TopologyTransaction.js +7 -7
  224. package/dist/open-api/models/Transaction.js +5 -5
  225. package/dist/open-api/models/TransactionFormat.js +8 -8
  226. package/dist/open-api/models/Update.js +16 -16
  227. package/dist/open-api/models/UpdateFormat.js +9 -9
  228. package/dist/open-api/models/UpdateOneOf1.js +1 -1
  229. package/dist/open-api/models/UpdateOneOf2.js +8 -8
  230. package/dist/open-api/models/UpdateOneOf3.js +6 -6
  231. package/dist/open-api/models/UpdateVettedPackagesRequest.js +4 -4
  232. package/dist/open-api/models/index.js +122 -122
  233. package/dist/provider.js +129 -129
  234. package/dist/refresh/address-resolver.d.ts +0 -2
  235. package/dist/refresh/address-resolver.d.ts.map +1 -1
  236. package/dist/refresh/address-resolver.js +2 -2
  237. package/dist/refresh/deployment-address.js +2 -2
  238. package/dist/refresh/index.d.ts +0 -2
  239. package/dist/refresh/index.d.ts.map +1 -1
  240. package/dist/refresh/index.js +13 -15
  241. package/dist/refresh/onesig-request.js +1 -1
  242. package/dist/refresh/onesig-transfer-instruction.js +4 -4
  243. package/dist/refresh/onesig-transfer.js +4 -4
  244. package/dist/refresh/plan.js +2 -2
  245. package/dist/refresh/prepare-amulet-transfer.js +5 -5
  246. package/dist/refresh/resolve-plan.d.ts.map +1 -1
  247. package/dist/refresh/resolve-plan.js +8 -8
  248. package/dist/refresh/resolve.d.ts.map +1 -1
  249. package/dist/refresh/resolve.js +9 -11
  250. package/dist/transaction.d.ts +136 -366
  251. package/dist/transaction.d.ts.map +1 -1
  252. package/dist/transaction.js +3 -3
  253. package/package.json +12 -13
  254. package/dist/BSVJEBKM.js +0 -52
  255. package/dist/BSVJEBKM.js.map +0 -1
  256. package/dist/HCNXHOIJ.js.map +0 -1
  257. package/dist/I5ERUZDD.js +0 -48
  258. package/dist/I5ERUZDD.js.map +0 -1
  259. package/dist/NQWAH7C4.js +0 -3
  260. package/dist/NQWAH7C4.js.map +0 -1
  261. package/dist/PDVMANRS.js.map +0 -1
  262. package/dist/PWKI6T6A.js.map +0 -1
  263. package/dist/RVJRKYSC.js.map +0 -1
  264. package/dist/XCOORR26.js.map +0 -1
  265. package/dist/ZZUOA324.js +0 -82
  266. package/dist/ZZUOA324.js.map +0 -1
  267. package/dist/refresh/reverse-substitute.d.ts +0 -6
  268. package/dist/refresh/reverse-substitute.d.ts.map +0 -1
  269. package/dist/refresh/reverse-substitute.js +0 -5
  270. package/dist/refresh/reverse-substitute.js.map +0 -1
  271. package/dist/refresh/wrapped-lz-sdk.d.ts +0 -10
  272. package/dist/refresh/wrapped-lz-sdk.d.ts.map +0 -1
  273. package/dist/refresh/wrapped-lz-sdk.js +0 -6
  274. package/dist/refresh/wrapped-lz-sdk.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/common-canton",
3
- "version": "1.2.82",
3
+ "version": "1.2.84",
4
4
  "private": false,
5
5
  "description": "Canton VM client and utilities",
6
6
  "license": "MIT",
@@ -31,11 +31,11 @@
31
31
  "dependencies": {
32
32
  "@canton-network/core-ledger-proto": "^1.7.0",
33
33
  "@daml/types": "3.4.8",
34
- "@grpc/grpc-js": "^1.12.0",
35
- "@layerzerolabs/common-chain-model": "1.2.82",
36
- "@layerzerolabs/common-encoding-utils": "1.2.82",
37
- "@layerzerolabs/common-error-utils": "1.2.82",
38
- "@layerzerolabs/typescript-utils": "1.2.82",
34
+ "@grpc/grpc-js": "^1.14.5",
35
+ "@layerzerolabs/common-chain-model": "1.2.84",
36
+ "@layerzerolabs/common-encoding-utils": "1.2.84",
37
+ "@layerzerolabs/common-error-utils": "1.2.84",
38
+ "@layerzerolabs/typescript-utils": "1.2.84",
39
39
  "@mojotech/json-type-validation": "^3.1.0",
40
40
  "@noble/hashes": "^1.8.0",
41
41
  "@noble/secp256k1": "1.7.1",
@@ -46,11 +46,11 @@
46
46
  "zod": "4.3.5"
47
47
  },
48
48
  "devDependencies": {
49
- "@layerzerolabs/eslint-configuration": "^1.2.82",
50
- "@layerzerolabs/tsup-configuration": "1.2.82",
51
- "@layerzerolabs/typescript-configuration": "1.2.82",
52
- "@layerzerolabs/vitest-configuration": "1.2.82",
53
- "@layerzerolabs/vm-tooling-canton": "1.2.82",
49
+ "@layerzerolabs/eslint-configuration": "^1.2.84",
50
+ "@layerzerolabs/tsup-configuration": "1.2.84",
51
+ "@layerzerolabs/typescript-configuration": "1.2.84",
52
+ "@layerzerolabs/vitest-configuration": "1.2.84",
53
+ "@layerzerolabs/vm-tooling-canton": "1.2.84",
54
54
  "@vitest/coverage-v8": "4.1.10",
55
55
  "eslint": "9.39.1",
56
56
  "tsup": "^8.4.0",
@@ -68,8 +68,7 @@
68
68
  "gasolina-audit",
69
69
  "layerzero-ver",
70
70
  "lz-labs-sidecar",
71
- "onesig-client",
72
- "value-transfer-external"
71
+ "onesig-client"
73
72
  ]
74
73
  },
75
74
  "scripts": {
package/dist/BSVJEBKM.js DELETED
@@ -1,52 +0,0 @@
1
- import { parseCantonDeferredValueOrThrow } from './PWKI6T6A.js';
2
- import { __name } from './VUOMXK5T.js';
3
-
4
- // src/refresh/reverse-substitute.ts
5
- var BLOB_KEY = "createdEventBlob";
6
- var substituteCidsToRefs = /* @__PURE__ */ __name((value, cidToRef) => {
7
- if (typeof value === "string") {
8
- const ref = cidToRef.get(value);
9
- return ref ?? value;
10
- }
11
- if (Array.isArray(value)) {
12
- return value.map((item) => substituteCidsToRefs(item, cidToRef));
13
- }
14
- if (value !== null && typeof value === "object") {
15
- const out = {};
16
- for (const [key, item] of Object.entries(value)) {
17
- out[key] = key === BLOB_KEY ? item : substituteCidsToRefs(item, cidToRef);
18
- }
19
- return out;
20
- }
21
- return value;
22
- }, "substituteCidsToRefs");
23
- var substituteRefsToCids = /* @__PURE__ */ __name(async (value, resolve) => {
24
- if (Array.isArray(value)) {
25
- const items = await Promise.all(value.map(async (item) => {
26
- const ref2 = parseCantonDeferredValueOrThrow(item);
27
- return ref2?.type === "activeContractIds" ? await resolve(ref2) : [
28
- await substituteRefsToCids(item, resolve)
29
- ];
30
- }));
31
- return items.flat();
32
- }
33
- const ref = parseCantonDeferredValueOrThrow(value);
34
- if (ref) {
35
- if (ref.type === "activeContractIds") {
36
- throw new Error(`Refresh for ${ref.templateId} resolves to multiple contract ids, but the ref was not inside an array`);
37
- }
38
- return await resolve(ref);
39
- }
40
- if (value !== null && typeof value === "object") {
41
- const entries = await Promise.all(Object.entries(value).map(async ([key, item]) => [
42
- key,
43
- await substituteRefsToCids(item, resolve)
44
- ]));
45
- return Object.fromEntries(entries);
46
- }
47
- return value;
48
- }, "substituteRefsToCids");
49
-
50
- export { substituteCidsToRefs, substituteRefsToCids };
51
- //# sourceMappingURL=BSVJEBKM.js.map
52
- //# sourceMappingURL=BSVJEBKM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/refresh/reverse-substitute.ts"],"names":["BLOB_KEY","substituteCidsToRefs","value","cidToRef","ref","get","Array","isArray","map","item","out","key","Object","entries","substituteRefsToCids","resolve","items","Promise","all","parseCantonDeferredValueOrThrow","type","flat","Error","templateId","fromEntries"],"mappings":";;;;AAGA,IAAMA,QAAAA,GAAW,kBAAA;AAEV,IAAMC,oBAAAA,mBAAuB,MAAA,CAAA,CAAIC,KAAAA,EAAUC,QAAAA,KAAAA;AAC9C,EAAA,IAAI,OAAOD,UAAU,QAAA,EAAU;AAC3B,IAAA,MAAME,GAAAA,GAAMD,QAAAA,CAASE,GAAAA,CAAIH,KAAAA,CAAAA;AACzB,IAAA,OAAQE,GAAAA,IAAOF,KAAAA;AACnB,EAAA;AACA,EAAA,IAAII,KAAAA,CAAMC,OAAAA,CAAQL,KAAAA,CAAAA,EAAQ;AACtB,IAAA,OAAOA,MAAMM,GAAAA,CAAI,CAACC,SAASR,oBAAAA,CAAqBQ,IAAAA,EAAMN,QAAAA,CAAAA,CAAAA;AAC1D,EAAA;AACA,EAAA,IAAID,KAAAA,KAAU,IAAA,IAAQ,OAAOA,KAAAA,KAAU,QAAA,EAAU;AAC7C,IAAA,MAAMQ,MAA+B,EAAC;AACtC,IAAA,KAAA,MAAW,CAACC,GAAAA,EAAKF,IAAAA,KAASG,MAAAA,CAAOC,OAAAA,CAAQX,KAAAA,CAAAA,EAAmC;AACxEQ,MAAAA,GAAAA,CAAIC,GAAAA,CAAAA,GAAOA,GAAAA,KAAQX,WAAWS,IAAAA,GAAOR,oBAAAA,CAAqBQ,MAAMN,QAAAA,CAAAA;AACpE,IAAA;AACA,IAAA,OAAOO,GAAAA;AACX,EAAA;AACA,EAAA,OAAOR,KAAAA;AACX,CAAA,EAhBoC,sBAAA;AAqB7B,IAAMY,oBAAAA,mBAAuB,MAAA,CAAA,OAAUZ,KAAAA,EAAUa,OAAAA,KAAAA;AACpD,EAAA,IAAIT,KAAAA,CAAMC,OAAAA,CAAQL,KAAAA,CAAAA,EAAQ;AACtB,IAAA,MAAMc,QAAQ,MAAMC,OAAAA,CAAQC,IACxBhB,KAAAA,CAAMM,GAAAA,CAAI,OAAOC,IAAAA,KAAAA;AACb,MAAA,MAAML,IAAAA,GAAMe,gCAAgCV,IAAAA,CAAAA;AAC5C,MAAA,OAAOL,MAAKgB,IAAAA,KAAS,mBAAA,GACb,MAAML,OAAAA,CAAQX,IAAAA,CAAAA,GAChB;QAAC,MAAMU,oBAAAA,CAAqBL,MAAMM,OAAAA;;AAC5C,IAAA,CAAA,CAAA,CAAA;AAEJ,IAAA,OAAOC,MAAMK,IAAAA,EAAI;AACrB,EAAA;AAEA,EAAA,MAAMjB,GAAAA,GAAMe,gCAAgCjB,KAAAA,CAAAA;AAC5C,EAAA,IAAIE,GAAAA,EAAK;AACL,IAAA,IAAIA,GAAAA,CAAIgB,SAAS,mBAAA,EAAqB;AAClC,MAAA,MAAM,IAAIE,KAAAA,CACN,CAAA,YAAA,EAAelB,GAAAA,CAAImB,UAAU,CAAA,uEAAA,CAAyE,CAAA;AAE9G,IAAA;AACA,IAAA,OAAQ,MAAMR,QAAQX,GAAAA,CAAAA;AAC1B,EAAA;AAEA,EAAA,IAAIF,KAAAA,KAAU,IAAA,IAAQ,OAAOA,KAAAA,KAAU,QAAA,EAAU;AAC7C,IAAA,MAAMW,OAAAA,GAAU,MAAMI,OAAAA,CAAQC,GAAAA,CAC1BN,MAAAA,CAAOC,OAAAA,CAAQX,KAAAA,CAAAA,CAAkCM,GAAAA,CAAI,OAAO,CAACG,GAAAA,EAAKF,IAAAA,CAAAA,KAAU;AACxEE,MAAAA,GAAAA;MACA,MAAMG,oBAAAA,CAAqBL,MAAMM,OAAAA;KACpC,CAAA,CAAA;AAEL,IAAA,OAAOH,MAAAA,CAAOY,YAAYX,OAAAA,CAAAA;AAC9B,EAAA;AAEA,EAAA,OAAOX,KAAAA;AACX,CAAA,EAlCoC,sBAAA","file":"BSVJEBKM.js","sourcesContent":["import { type CantonDeferredValue, parseCantonDeferredValueOrThrow } from '../deferredValue';\n\n// Opaque base64 — swapping a cid here would corrupt it.\nconst BLOB_KEY = 'createdEventBlob';\n\nexport const substituteCidsToRefs = <T>(value: T, cidToRef: Map<string, string>): T => {\n if (typeof value === 'string') {\n const ref = cidToRef.get(value);\n return (ref ?? value) as T;\n }\n if (Array.isArray(value)) {\n return value.map((item) => substituteCidsToRefs(item, cidToRef)) as T;\n }\n if (value !== null && typeof value === 'object') {\n const out: Record<string, unknown> = {};\n for (const [key, item] of Object.entries(value as Record<string, unknown>)) {\n out[key] = key === BLOB_KEY ? item : substituteCidsToRefs(item, cidToRef);\n }\n return out as T;\n }\n return value;\n};\n\nexport type ResolveRef = (ref: CantonDeferredValue) => Promise<unknown>;\n\n/** A plural activeContractIds ref expands in place — must be inside an array; a scalar slot throws. */\nexport const substituteRefsToCids = async <T>(value: T, resolve: ResolveRef): Promise<T> => {\n if (Array.isArray(value)) {\n const items = await Promise.all(\n value.map(async (item) => {\n const ref = parseCantonDeferredValueOrThrow(item);\n return ref?.type === 'activeContractIds'\n ? ((await resolve(ref)) as unknown[])\n : [await substituteRefsToCids(item, resolve)];\n }),\n );\n return items.flat() as T;\n }\n\n const ref = parseCantonDeferredValueOrThrow(value);\n if (ref) {\n if (ref.type === 'activeContractIds') {\n throw new Error(\n `Refresh for ${ref.templateId} resolves to multiple contract ids, but the ref was not inside an array`,\n );\n }\n return (await resolve(ref)) as T;\n }\n\n if (value !== null && typeof value === 'object') {\n const entries = await Promise.all(\n Object.entries(value as Record<string, unknown>).map(async ([key, item]) => [\n key,\n await substituteRefsToCids(item, resolve),\n ]),\n );\n return Object.fromEntries(entries) as T;\n }\n\n return value;\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/transaction.ts"],"names":["cantonCommandSchema","z","union","object","createCommand","templateId","string","createArguments","any","exerciseCommand","contractId","choice","choiceArgument","createAndExerciseCommand","exerciseByKeyCommand","contractKey","unresolvedCantonCommandSchema","cantonDisclosedContractSchema","optional","createdEventBlob","synchronizerId","cantonTransactionSchema","transactionSchema","extend","populatedTransaction","unresolvedCommands","array","unresolvedDisclosedContracts","actAs","partyToSenderEntity","record","deploymentSpec","packageName","ownerField","identityKeys","refreshPlan","cantonRefreshPlanSchema","cantonTransactionWithResultSchema","buildTransactionWithResultSchema","cantonInflightTransactionSchema","preparedTransaction","preparedTransactionHash","hashingSchemeVersion","enum","commandId","completionOffset","number","cantonAssignedTransactionSchema","assignedTransactionSchema","shape","inflightTransaction","cantonSignedTransactionSchema","signedTransactionSchema","commands","disclosedContracts","signedTransaction","signatures","party","format","signature","signedBy","signingAlgorithmSpec","cantonMinedTransactionSchema","minedTransactionSchema","buildCantonTransaction","chainName","tx","timestamps","created","Date","now"],"mappings":"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","file":"HCNXHOIJ.js","sourcesContent":["import { z } from 'zod';\n\nimport {\n assignedTransactionSchema,\n buildTransactionWithResultSchema,\n minedTransactionSchema,\n signedTransactionSchema,\n transactionSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { PartialBy } from '@layerzerolabs/typescript-utils';\n\nimport type { CantonDeferredRef, CantonExpectedSignatories } from './deferredValue';\nimport { cantonRefreshPlanSchema } from './refresh/plan';\n\n// === Component schemas ===\n\nexport const cantonCommandSchema = z.union([\n z.object({\n createCommand: z.object({\n templateId: z.string(),\n createArguments: z.any(),\n }),\n }),\n z.object({\n exerciseCommand: z.object({\n templateId: z.string(),\n contractId: z.string(),\n choice: z.string(),\n choiceArgument: z.any(),\n }),\n }),\n z.object({\n createAndExerciseCommand: z.object({\n templateId: z.string(),\n createArguments: z.any(),\n choice: z.string(),\n choiceArgument: z.any(),\n }),\n }),\n z.object({\n exerciseByKeyCommand: z.object({\n templateId: z.string(),\n contractKey: z.any(),\n choice: z.string(),\n choiceArgument: z.any(),\n }),\n }),\n]);\n\n/**\n * Like cantonCommandSchema but with contractId typed as CantonDeferredRef | string.\n * Used for unresolvedCommands where exercise contractIds are deferred sentinels.\n * At runtime the validation is identical (z.string()); only the TypeScript type differs.\n */\nexport const unresolvedCantonCommandSchema = cantonCommandSchema as unknown as z.ZodType<\n | z.infer<typeof cantonCommandSchema>\n | {\n exerciseCommand: {\n templateId: string;\n contractId: CantonDeferredRef | string;\n choice: string;\n choiceArgument: unknown;\n };\n }\n>;\n\nexport const cantonDisclosedContractSchema = z.object({\n templateId: z.string().optional(),\n contractId: z.string(),\n createdEventBlob: z.string(),\n synchronizerId: z.string(),\n});\n\n// === Lifecycle schemas ===\n\n/**\n * Canton transaction schema for Daml Ledger API commands.\n */\nexport const cantonTransactionSchema = transactionSchema.extend({\n populatedTransaction: z.object({\n unresolvedCommands: z.array(unresolvedCantonCommandSchema),\n unresolvedDisclosedContracts: z.array(cantonDisclosedContractSchema),\n\n /** Parties submitting the command (actAs) */\n actAs: z.array(z.string()),\n /** Maps each actAs party → the senderEntityName(s) controlling its signing\n * key(s), always as an array. `.optional()` only so deferred-sender create-time\n * payloads parse. At sign time: multi-party transactions must map every actAs\n * party or signing throws; single-party transactions may omit the map and sign()\n * falls back to the queue's senderEntityName. Multiple entries = a multisig party\n * (decentralized namespace) whose keys must all sign. */\n partyToSenderEntity: z.record(z.string(), z.array(z.string())).optional(),\n /** Deployment spec set at prepare time; the deployment activity resolves the live address ref from this + the createCommand. */\n deploymentSpec: z\n .object({\n packageName: z.string(),\n ownerField: z.string(),\n identityKeys: z.array(z.string()),\n })\n .optional(),\n /** Build-time replacements for volatile command inputs and disclosures. */\n refreshPlan: cantonRefreshPlanSchema.optional(),\n }),\n});\n\nexport const cantonTransactionWithResultSchema =\n buildTransactionWithResultSchema(cantonTransactionSchema);\n\nconst cantonInflightTransactionSchema = z.object({\n /** The prepared transaction blob */\n preparedTransaction: z.string(),\n /** Hash of the prepared transaction (what was signed) */\n preparedTransactionHash: z.string(),\n /** Hashing scheme version used */\n hashingSchemeVersion: z.enum([\n 'HASHING_SCHEME_VERSION_UNSPECIFIED',\n 'HASHING_SCHEME_VERSION_V2',\n ]),\n /** Command ID for tracking */\n commandId: z.string(),\n // Ledger offset at which the submission landed — used as `beginExclusive`\n // for waitForCommand to avoid polling from the start of the ledger.\n // Optional: only present after send(); absent for old/retry scenarios.\n completionOffset: z.number().optional(),\n});\n\n/**\n * Assigned transaction includes the inflight transaction data.\n */\nexport const cantonAssignedTransactionSchema = assignedTransactionSchema.extend({\n ...cantonTransactionSchema.shape,\n inflightTransaction: cantonInflightTransactionSchema.optional(),\n});\n\n/**\n * Signed transaction includes the DER-encoded ECDSA signature.\n */\nexport const cantonSignedTransactionSchema = signedTransactionSchema.extend({\n ...cantonAssignedTransactionSchema.shape,\n // Resolved commands and contracts\n commands: z.array(cantonCommandSchema),\n disclosedContracts: z.array(cantonDisclosedContractSchema),\n signedTransaction: z.object({\n /** Per-party signatures in the format expected by Canton's submitSigned */\n signatures: z.array(\n z.object({\n party: z.string(),\n signatures: z.array(\n z.object({\n format: z.string(),\n signature: z.string(),\n signedBy: z.string(),\n signingAlgorithmSpec: z.string(),\n }),\n ),\n }),\n ),\n }),\n});\n\n/**\n * Mined transaction with confirmation result.\n */\nexport const cantonMinedTransactionSchema = minedTransactionSchema.extend({\n ...cantonSignedTransactionSchema.shape,\n inflightTransaction: cantonInflightTransactionSchema,\n});\n\n/** Identifies a contract by data so its live cid can be re-resolved at sign time. */\nexport interface ContractDataIdentifier {\n cid: string;\n templateId: string;\n /** ACS query / visibility party (`partyToFilter`). */\n party: string;\n /**\n * Authority parties that must all be ledger signatories at refresh time.\n * Typically `[party]`; use a different list when querying as an observer\n * (e.g. gateway) while authenticating the admin signatory.\n *\n * Non-empty; same type as the deferred-ref wire field.\n */\n expectedSignatories: CantonExpectedSignatories;\n contractStateFilter?: Record<string, unknown>;\n}\n\nexport type CantonTx = z.infer<typeof cantonTransactionSchema>;\nexport type CantonPopulatedTransaction = CantonTx['populatedTransaction'];\nexport type CantonCommand = z.infer<typeof cantonCommandSchema>;\nexport type CantonUnresolvedCommand = z.infer<typeof unresolvedCantonCommandSchema>;\nexport type CantonDisclosedContract = z.infer<typeof cantonDisclosedContractSchema>;\nexport type CantonAssignedTx = z.infer<typeof cantonAssignedTransactionSchema>;\nexport type CantonSignedTx = z.infer<typeof cantonSignedTransactionSchema>;\nexport type CantonMinedTx = z.infer<typeof cantonMinedTransactionSchema>;\n\n// === Builder ===\n\nexport type BuildCantonTransactionInput = PartialBy<CantonTx, 'chainName' | 'timestamps'>;\n\nexport const buildCantonTransaction = async (\n chainName: string,\n tx: BuildCantonTransactionInput,\n): Promise<CantonTx> => {\n return {\n ...tx,\n chainName,\n timestamps: {\n created: tx.timestamps?.created ?? Date.now(),\n },\n };\n};\n"]}
package/dist/I5ERUZDD.js DELETED
@@ -1,48 +0,0 @@
1
- import { substituteCidsToRefs } from './BSVJEBKM.js';
2
- import { cantonActiveContractIdRef } from './PWKI6T6A.js';
3
- import { __name } from './VUOMXK5T.js';
4
- import { isPromise } from '@layerzerolabs/typescript-utils';
5
-
6
- var applyRefs = /* @__PURE__ */ __name((result) => {
7
- const refs = result?.referencedContracts;
8
- if (!refs?.length) return result;
9
- const contractIdToRef = new Map(refs.map((ref) => {
10
- const expectedSignatories = ref.expectedSignatories;
11
- if (!expectedSignatories[0]) {
12
- throw new Error(`ContractDataIdentifier for ${ref.cid} missing expectedSignatories`);
13
- }
14
- return [
15
- ref.cid,
16
- cantonActiveContractIdRef({
17
- partyToFilter: {
18
- party: ref.party
19
- },
20
- expectedSignatories,
21
- templateId: ref.templateId,
22
- ...ref.contractStateFilter ? {
23
- contractStateFilter: ref.contractStateFilter
24
- } : {}
25
- })
26
- ];
27
- }));
28
- const { referencedContracts: _dropped, ...rest } = result;
29
- const disclosed = rest.disclosedContracts;
30
- if (Array.isArray(disclosed)) {
31
- rest.disclosedContracts = disclosed.filter((disclosure) => !contractIdToRef.has(disclosure.contractId));
32
- }
33
- return substituteCidsToRefs(rest, contractIdToRef);
34
- }, "applyRefs");
35
- var wrapLzSdk = /* @__PURE__ */ __name((sdk) => new Proxy(sdk, {
36
- get(target, prop, receiver) {
37
- const member = Reflect.get(target, prop, receiver);
38
- if (typeof member !== "function") return member;
39
- return (...args) => {
40
- const result = member.apply(target, args);
41
- return isPromise(result) ? result.then(applyRefs) : result;
42
- };
43
- }
44
- }), "wrapLzSdk");
45
-
46
- export { wrapLzSdk };
47
- //# sourceMappingURL=I5ERUZDD.js.map
48
- //# sourceMappingURL=I5ERUZDD.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/refresh/wrapped-lz-sdk.ts"],"names":["applyRefs","result","refs","referencedContracts","length","contractIdToRef","Map","map","ref","expectedSignatories","Error","cid","cantonActiveContractIdRef","partyToFilter","party","templateId","contractStateFilter","_dropped","rest","disclosed","disclosedContracts","Array","isArray","filter","disclosure","has","contractId","substituteCidsToRefs","wrapLzSdk","sdk","Proxy","get","target","prop","receiver","member","Reflect","args","apply","isPromise","then"],"mappings":";;;;;AAkBA,IAAMA,SAAAA,2BAAgBC,MAAAA,KAAAA;AAClB,EAAA,MAAMC,OAAQD,MAAAA,EACRE,mBAAAA;AACN,EAAA,IAAI,CAACD,IAAAA,EAAME,MAAAA,EAAQ,OAAOH,MAAAA;AAE1B,EAAA,MAAMI,kBAAkB,IAAIC,GAAAA,CACxBJ,IAAAA,CAAKK,GAAAA,CAAI,CAACC,GAAAA,KAAAA;AACN,IAAA,MAAMC,sBAAsBD,GAAAA,CAAIC,mBAAAA;AAChC,IAAA,IAAI,CAACA,mBAAAA,CAAoB,CAAA,CAAA,EAAI;AACzB,MAAA,MAAM,IAAIC,KAAAA,CACN,CAAA,2BAAA,EAA8BF,GAAAA,CAAIG,GAAG,CAAA,4BAAA,CAA8B,CAAA;AAE3E,IAAA;AACA,IAAA,OAAO;MACHH,GAAAA,CAAIG,GAAAA;MACJC,yBAAAA,CAA0B;QACtBC,aAAAA,EAAe;AAAEC,UAAAA,KAAAA,EAAON,GAAAA,CAAIM;AAAM,SAAA;AAClCL,QAAAA,mBAAAA;AACAM,QAAAA,UAAAA,EAAYP,GAAAA,CAAIO,UAAAA;AAChB,QAAA,GAAIP,IAAIQ,mBAAAA,GACF;AAAEA,UAAAA,mBAAAA,EAAqBR,GAAAA,CAAIQ;AAAoB,SAAA,GAC/C;OACV;;AAER,EAAA,CAAA,CAAA,CAAA;AAGJ,EAAA,MAAM,EAAEb,mBAAAA,EAAqBc,QAAAA,EAAU,GAAGC,MAAAA,GAASjB,MAAAA;AACnD,EAAA,MAAMkB,YAAaD,IAAAA,CACdE,kBAAAA;AACL,EAAA,IAAIC,KAAAA,CAAMC,OAAAA,CAAQH,SAAAA,CAAAA,EAAY;AACzBD,IAAAA,IAAAA,CAAyCE,kBAAAA,GAAqBD,SAAAA,CAAUI,MAAAA,CACrE,CAACC,UAAAA,KAAe,CAACnB,eAAAA,CAAgBoB,GAAAA,CAAID,UAAAA,CAAWE,UAAU,CAAA,CAAA;AAElE,EAAA;AACA,EAAA,OAAOC,oBAAAA,CAAqBT,MAAMb,eAAAA,CAAAA;AACtC,CAAA,EApCkB,WAAA,CAAA;AAuCX,IAAMuB,SAAAA,mBAAY,MAAA,CAAA,CAAmBC,GAAAA,KACxC,IAAIC,MAAMD,GAAAA,EAAK;EACXE,GAAAA,CAAIC,MAAAA,EAAQC,MAAMC,QAAAA,EAAQ;AACtB,IAAA,MAAMC,MAAAA,GAASC,OAAAA,CAAQL,GAAAA,CAAIC,MAAAA,EAAQC,MAAMC,QAAAA,CAAAA;AACzC,IAAA,IAAI,OAAOC,MAAAA,KAAW,UAAA,EAAY,OAAOA,MAAAA;AACzC,IAAA,OAAO,IAAIE,IAAAA,KAAAA;AACP,MAAA,MAAMpC,MAAAA,GAAUkC,MAAAA,CAAqBG,KAAAA,CAAMN,MAAAA,EAAQK,IAAAA,CAAAA;AACnD,MAAA,OAAOE,UAAUtC,MAAAA,CAAAA,GAAUA,MAAAA,CAAOuC,IAAAA,CAAKxC,SAAAA,CAAAA,GAAaC,MAAAA;AACxD,IAAA,CAAA;AACJ,EAAA;AACJ,CAAA,CAAA,EAVqB,WAAA","file":"I5ERUZDD.js","sourcesContent":["import { isPromise } from '@layerzerolabs/typescript-utils';\n\nimport { cantonActiveContractIdRef, type CantonDeferredRef } from '../deferredValue';\nimport type { ContractDataIdentifier } from '../transaction';\nimport { substituteCidsToRefs } from './reverse-substitute';\n\ntype AnyMethod = (...args: unknown[]) => unknown;\n\ntype WithRefsInjected<R> = R extends { referencedContracts?: unknown }\n ? Omit<R, 'referencedContracts'>\n : R;\n\ntype LzWrapped<T> = {\n [K in keyof T]: T[K] extends (...a: infer A) => Promise<infer R>\n ? (...a: A) => Promise<WithRefsInjected<R>>\n : T[K];\n};\n\nconst applyRefs = <R>(result: R): WithRefsInjected<R> => {\n const refs = (result as { referencedContracts?: Array<ContractDataIdentifier> })\n ?.referencedContracts;\n if (!refs?.length) return result as WithRefsInjected<R>;\n\n const contractIdToRef = new Map<string, CantonDeferredRef>(\n refs.map((ref) => {\n const expectedSignatories = ref.expectedSignatories;\n if (!expectedSignatories[0]) {\n throw new Error(\n `ContractDataIdentifier for ${ref.cid} missing expectedSignatories`,\n );\n }\n return [\n ref.cid,\n cantonActiveContractIdRef({\n partyToFilter: { party: ref.party },\n expectedSignatories,\n templateId: ref.templateId,\n ...(ref.contractStateFilter\n ? { contractStateFilter: ref.contractStateFilter }\n : {}),\n }),\n ];\n }),\n );\n\n const { referencedContracts: _dropped, ...rest } = result as Record<string, unknown>;\n const disclosed = (rest as { disclosedContracts?: Array<{ contractId: string }> })\n .disclosedContracts;\n if (Array.isArray(disclosed)) {\n (rest as { disclosedContracts: unknown }).disclosedContracts = disclosed.filter(\n (disclosure) => !contractIdToRef.has(disclosure.contractId),\n );\n }\n return substituteCidsToRefs(rest, contractIdToRef) as WithRefsInjected<R>;\n};\n\n/** Rewrites the cids a contract SDK reports in `referencedContracts` to sign-time refs. */\nexport const wrapLzSdk = <T extends object>(sdk: T): LzWrapped<T> =>\n new Proxy(sdk, {\n get(target, prop, receiver) {\n const member = Reflect.get(target, prop, receiver);\n if (typeof member !== 'function') return member;\n return (...args: unknown[]): unknown => {\n const result = (member as AnyMethod).apply(target, args);\n return isPromise(result) ? result.then(applyRefs) : result;\n };\n },\n }) as LzWrapped<T>;\n"]}
package/dist/NQWAH7C4.js DELETED
@@ -1,3 +0,0 @@
1
-
2
- //# sourceMappingURL=NQWAH7C4.js.map
3
- //# sourceMappingURL=NQWAH7C4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"NQWAH7C4.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/refresh/resolve-plan.ts"],"names":["CANTON_TIME_PATTERN","resolveParty","partyRef","senderParty","label","isCantonDeferredSender","party","Error","getContractNumericField","contract","field","raw","getCreateArgumentField","createdEvent","createArgument","value","initialAmount","parseDamlDecimal","contractId","selectContractsByGte","contracts","requestedValue","selectContractAmounts","makeActiveContractRef","selector","type","partyToFilter","queryAs","expectedSignatories","templateId","interfaceId","contractStateFilter","stateFilter","resolveSelectorContracts","resolver","resolveActiveContracts","source","length","filter","resolveContractValue","selectActiveContracts","selection","kind","resolveCantonActiveContracts","args","queryParty","createContractAddressResolver","client","signingParties","appendDisclosures","undefined","selected","contractIds","map","isRecord","Array","isArray","isCantonTime","test","Number","isFinite","Date","parse","isActiveContractRefresh","refresh","isActiveContractValueRefresh","isAmuletContextRefresh","isTimestampRefresh","replaceAtPath","root","path","current","position","segment","entries","isLast","index","damlMapKey","matches","entry","readAtPath","readTarget","commands","target","command","commandIndex","exerciseCommand","choice","choiceArgument","createCommand","template","createArguments","applyPatch","applyTarget","argument","arguments","containsDeferredSentinel","isCantonDeferredSentinel","some","item","Object","values","child","hasDisclosureSentinel","disclosures","createdEventBlob","_blob","fields","disclosuresEqual","left","right","synchronizerId","resolveCantonRefreshPlan","replacements","cantonRefreshPlanSchema","shape","replaceSentinels","refreshPlan","structuredClone","unresolvedCommands","trim","replacement","targets","cantonSenderPartyRef","unresolvedDisclosedContracts","callback","cantonFinalizeCallbackRefreshSchema","contextIndices","sort","cidIndices","callbackCidTargets","JSON","stringify","pendingCallbackCid","disclosureMap","Map","disclosure","existing","get","set","ref","discloseActiveContracts","resolved","transfer","cantonOneSigTransferBatchRefreshSchema","firstTarget","calls","transferIndices","flatMap","call","tag","indices","Set","size","includes","bundle","resolveCantonOneSigTransferBatch","CantonSdk","disclosedContracts","forEach","contexts","instruction","cantonOneSigTransferInstructionContextRefreshSchema","slice","transferInstructionCid","resolveCantonOneSigTransferInstructionContext","context","config","cantonOneSigConfigContextRefreshSchema","expected","operation","oappId","admin","id","expectedHandler","resolveCantonOneSigConfigContext","scope","cantonOneSigScopeContextRefreshSchema","contextTag","category","resolveCantonOneSigScopeContext","discovery","cantonOneSigDiscoveryContextRefreshSchema","timestamp","feeAmount","feeDsoParty","dso","resolveCantonOneSigDiscoveryContext","request","cantonOneSigRequestContextRefreshSchema","requestTags","dsoParty","String","resolveCantonOneSigRequestContext","resolveCantonFinalizeCallback","executeContext","callbackCid","acceptance","cantonTransferInstructionAcceptContextRefreshSchema","getTransferInstructionAcceptContext","choiceContext","getAmuletContextWithExternalRules","amuletContext","contractIdTargets","externalPartyAmuletRulesCid","now","offsetMs","iso","getTime","toISOString"],"mappings":"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","file":"PDVMANRS.js","sourcesContent":["import type { ICantonClient } from '../client/interface';\nimport {\n type CantonRefreshPartyFilter,\n cantonSenderPartyRef,\n isCantonDeferredSender,\n isCantonDeferredSentinel,\n} from '../deferredValue';\nimport type { JsActiveContract } from '../open-api/models';\nimport { CantonSdk } from '../sdk/canton-sdk';\nimport type {\n CantonCommand,\n CantonDisclosedContract,\n CantonUnresolvedCommand,\n} from '../transaction';\nimport { getCreateArgumentField } from '../trusted-origin';\nimport { type ActiveContractRef, createContractAddressResolver } from './address-resolver';\nimport { resolveCantonFinalizeCallback } from './callback';\nimport { resolveCantonOneSigConfigContext } from './onesig-config';\nimport { resolveCantonOneSigDiscoveryContext } from './onesig-discovery';\nimport { resolveCantonOneSigRequestContext } from './onesig-request';\nimport { resolveCantonOneSigScopeContext } from './onesig-scope';\nimport { resolveCantonOneSigTransferBatch } from './onesig-transfer';\nimport { resolveCantonOneSigTransferInstructionContext } from './onesig-transfer-instruction';\nimport {\n type CantonActiveContractRefresh,\n type CantonActiveContractSelection,\n type CantonActiveContractValue,\n type CantonActiveContractValueRefresh,\n type CantonAmuletContextRefresh,\n type CantonArgumentRefreshTarget,\n type CantonContractSelector,\n cantonFinalizeCallbackRefreshSchema,\n cantonOneSigConfigContextRefreshSchema,\n cantonOneSigDiscoveryContextRefreshSchema,\n cantonOneSigRequestContextRefreshSchema,\n cantonOneSigScopeContextRefreshSchema,\n cantonOneSigTransferBatchRefreshSchema,\n cantonOneSigTransferInstructionContextRefreshSchema,\n type CantonRefresh,\n type CantonRefreshPath,\n type CantonRefreshPlan,\n cantonRefreshPlanSchema,\n type CantonRefreshTarget,\n type CantonTimestampRefresh,\n cantonTransferInstructionAcceptContextRefreshSchema,\n} from './plan';\nimport { parseDamlDecimal, selectContractAmounts } from './select-contracts';\n\nconst CANTON_TIME_PATTERN = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,9})?Z$/;\n\nconst resolveParty = (\n partyRef: CantonRefreshPartyFilter,\n senderParty: string | undefined,\n label: string,\n): string => {\n if (!isCantonDeferredSender(partyRef)) return partyRef.party;\n if (!senderParty) {\n throw new Error(`${label} requires a resolved sender party`);\n }\n return senderParty;\n};\n\nconst getContractNumericField = (contract: JsActiveContract, field: string): bigint => {\n const raw = getCreateArgumentField(contract.createdEvent.createArgument, field);\n const value =\n raw !== null && typeof raw === 'object' && 'initialAmount' in raw\n ? (raw as { initialAmount?: unknown }).initialAmount\n : raw;\n return parseDamlDecimal(\n value,\n `Contract ${contract.createdEvent.contractId} numeric field ${field}`,\n );\n};\n\nexport const selectContractsByGte = (\n contracts: JsActiveContract[],\n field: string,\n requestedValue: string,\n): JsActiveContract[] =>\n selectContractAmounts(contracts, field, requestedValue, (contract) =>\n getContractNumericField(contract, field),\n );\n\nconst makeActiveContractRef = (selector: CantonContractSelector): ActiveContractRef => ({\n type: 'activeContractIds',\n partyToFilter: selector.queryAs,\n expectedSignatories: selector.expectedSignatories,\n templateId: selector.templateId ?? selector.interfaceId,\n interfaceId: selector.interfaceId,\n contractStateFilter: selector.stateFilter,\n});\n\nconst resolveSelectorContracts = async (\n resolver: ReturnType<typeof createContractAddressResolver>,\n selector: CantonContractSelector,\n): Promise<JsActiveContract[]> => {\n const contracts = await resolver.resolveActiveContracts(makeActiveContractRef(selector));\n if (!selector.contractId) return contracts;\n const source = await resolver.resolveActiveContracts(\n makeActiveContractRef(selector.contractId.selector),\n );\n if (source.length !== 1)\n throw new Error(\n `Contract ID source matched ${source.length} contracts, expected exactly one`,\n );\n const contractId = getCreateArgumentField(\n source[0]!.createdEvent.createArgument,\n selector.contractId.field,\n );\n if (typeof contractId !== 'string' || !contractId)\n throw new Error('Contract ID source must contain a nonempty contract ID');\n return contracts.filter((contract) => contract.createdEvent.contractId === contractId);\n};\n\nconst resolveContractValue = async (\n resolver: ReturnType<typeof createContractAddressResolver>,\n source: CantonActiveContractValue,\n): Promise<string> => {\n const contracts = await resolveSelectorContracts(resolver, source.selector);\n if (contracts.length !== 1) {\n throw new Error(\n `Active contract value matched ${contracts.length} contracts, expected exactly one`,\n );\n }\n const value = getCreateArgumentField(contracts[0]!.createdEvent.createArgument, source.field);\n if (parseDamlDecimal(value, `Contract value ${source.field}`) <= 0n) {\n throw new Error(`Contract value ${source.field} must be positive`);\n }\n return value as string;\n};\n\nconst selectActiveContracts = async (\n contracts: JsActiveContract[],\n selection: CantonActiveContractSelection,\n resolver: ReturnType<typeof createContractAddressResolver>,\n): Promise<JsActiveContract[]> => {\n switch (selection.kind) {\n case 'exactlyOne':\n if (contracts.length !== 1) {\n throw new Error(\n `Active contract selection matched ${contracts.length} contracts, expected exactly one`,\n );\n }\n return contracts;\n case 'all':\n return contracts;\n case 'gte':\n return selectContractsByGte(\n contracts,\n selection.field,\n typeof selection.value === 'string'\n ? selection.value\n : await resolveContractValue(resolver, selection.value),\n );\n }\n};\n\nexport const resolveCantonActiveContracts = async (args: {\n client: ICantonClient;\n selector: CantonContractSelector;\n selection: CantonActiveContractSelection;\n senderParty?: string;\n}): Promise<{ contractIds: string[] }> => {\n const queryParty = resolveParty(\n args.selector.queryAs,\n args.senderParty,\n 'Active contract selection',\n );\n const resolver = createContractAddressResolver({\n client: args.client,\n senderParty: args.senderParty,\n signingParties: [queryParty],\n appendDisclosures: () => undefined,\n });\n const selected = await selectActiveContracts(\n await resolveSelectorContracts(resolver, args.selector),\n args.selection,\n resolver,\n );\n return {\n contractIds: selected.map(({ createdEvent }) => createdEvent.contractId),\n };\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n value !== null && typeof value === 'object' && !Array.isArray(value);\n\nconst isCantonTime = (value: unknown): value is string =>\n typeof value === 'string' &&\n CANTON_TIME_PATTERN.test(value) &&\n Number.isFinite(Date.parse(value));\n\nconst isActiveContractRefresh = (refresh: CantonRefresh): refresh is CantonActiveContractRefresh =>\n refresh.resolver.type === 'activeContract';\n\nconst isActiveContractValueRefresh = (\n refresh: CantonRefresh,\n): refresh is CantonActiveContractValueRefresh => refresh.resolver.type === 'activeContractValue';\n\nconst isAmuletContextRefresh = (refresh: CantonRefresh): refresh is CantonAmuletContextRefresh =>\n refresh.resolver.type === 'amuletContext';\n\nconst isTimestampRefresh = (refresh: CantonRefresh): refresh is CantonTimestampRefresh =>\n refresh.resolver.type === 'timestamp';\n\nconst replaceAtPath = (root: unknown, path: CantonRefreshPath, value: unknown): unknown => {\n if (path.length === 0) return value;\n\n let current = root;\n for (const [position, segment] of path.entries()) {\n const isLast = position === path.length - 1;\n if ('field' in segment) {\n if (!isRecord(current) || !(segment.field in current)) {\n throw new Error(`Refresh target field \"${segment.field}\" does not exist`);\n }\n if (isLast) {\n current[segment.field] = value;\n return root;\n }\n current = current[segment.field];\n continue;\n }\n if ('index' in segment) {\n if (!Array.isArray(current) || segment.index >= current.length) {\n throw new Error(`Refresh target array index ${segment.index} does not exist`);\n }\n if (isLast) {\n current[segment.index] = value;\n return root;\n }\n current = current[segment.index];\n continue;\n }\n\n if (!Array.isArray(current)) {\n throw new Error(`Refresh target DAML map \"${segment.damlMapKey}\" is not an array`);\n }\n const matches = current.filter(\n (entry): entry is [string, unknown] =>\n Array.isArray(entry) && entry.length === 2 && entry[0] === segment.damlMapKey,\n );\n if (matches.length !== 1) {\n throw new Error(\n `Refresh target DAML map key \"${segment.damlMapKey}\" matched ${matches.length} entries`,\n );\n }\n if (isLast) {\n matches[0]![1] = value;\n return root;\n }\n current = matches[0]![1];\n }\n return root;\n};\n\nconst readAtPath = (root: unknown, path: CantonRefreshPath): unknown => {\n let current = root;\n for (const segment of path) {\n if ('field' in segment) {\n if (!isRecord(current) || !(segment.field in current)) {\n throw new Error(`Refresh target field \"${segment.field}\" does not exist`);\n }\n current = current[segment.field];\n continue;\n }\n if ('index' in segment) {\n if (!Array.isArray(current) || segment.index >= current.length) {\n throw new Error(`Refresh target array index ${segment.index} does not exist`);\n }\n current = current[segment.index];\n continue;\n }\n\n if (!Array.isArray(current)) {\n throw new Error(`Refresh target DAML map \"${segment.damlMapKey}\" is not an array`);\n }\n const matches = current.filter(\n (entry): entry is [string, unknown] =>\n Array.isArray(entry) && entry.length === 2 && entry[0] === segment.damlMapKey,\n );\n if (matches.length !== 1) {\n throw new Error(\n `Refresh target DAML map key \"${segment.damlMapKey}\" matched ${matches.length} entries`,\n );\n }\n current = matches[0]![1];\n }\n return current;\n};\n\nconst readTarget = (\n commands: CantonUnresolvedCommand[],\n target: CantonArgumentRefreshTarget,\n path: CantonRefreshPath,\n): unknown => {\n const command = commands[target.commandIndex];\n if (!command) {\n throw new Error(`Refresh command index ${target.commandIndex} does not exist`);\n }\n\n if (target.command === 'exercise') {\n if (!('exerciseCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not an exercise`);\n }\n if (command.exerciseCommand.choice !== target.choice) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected choice ${target.choice}, found ${command.exerciseCommand.choice}`,\n );\n }\n return readAtPath(command.exerciseCommand.choiceArgument, path);\n }\n\n if (!('createCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not a create`);\n }\n if (command.createCommand.templateId !== target.template) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected template ${target.template}, found ${command.createCommand.templateId}`,\n );\n }\n return readAtPath(command.createCommand.createArguments, path);\n};\n\nconst applyPatch = (\n commands: CantonUnresolvedCommand[],\n target: CantonArgumentRefreshTarget,\n path: CantonRefreshPath,\n value: unknown,\n): void => {\n const command = commands[target.commandIndex];\n if (!command) {\n throw new Error(`Refresh command index ${target.commandIndex} does not exist`);\n }\n\n if (target.command === 'exercise') {\n if (!('exerciseCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not an exercise`);\n }\n if (command.exerciseCommand.choice !== target.choice) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected choice ${target.choice}, found ${command.exerciseCommand.choice}`,\n );\n }\n command.exerciseCommand.choiceArgument = replaceAtPath(\n command.exerciseCommand.choiceArgument,\n path,\n value,\n );\n return;\n }\n\n if (!('createCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not a create`);\n }\n if (command.createCommand.templateId !== target.template) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected template ${target.template}, found ${command.createCommand.templateId}`,\n );\n }\n command.createCommand.createArguments = replaceAtPath(\n command.createCommand.createArguments,\n path,\n value,\n );\n};\n\nconst applyTarget = (\n commands: CantonUnresolvedCommand[],\n target: CantonRefreshTarget,\n value: unknown,\n): void => {\n if ('field' in target) {\n const command = commands[target.commandIndex];\n if (!command) {\n throw new Error(`Refresh command index ${target.commandIndex} does not exist`);\n }\n if (!('exerciseCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not an exercise`);\n }\n if (target.choice !== undefined && command.exerciseCommand.choice !== target.choice) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected choice ${target.choice}, found ${command.exerciseCommand.choice}`,\n );\n }\n if (typeof value !== 'string') {\n throw new Error('Exercise contract ID refresh must resolve to a string');\n }\n command.exerciseCommand.contractId = value;\n return;\n }\n\n for (const argument of target.arguments) {\n applyPatch(commands, target, argument.path, value);\n }\n};\n\nconst containsDeferredSentinel = (value: unknown): boolean => {\n if (isCantonDeferredSentinel(value)) return true;\n if (Array.isArray(value)) return value.some((item) => containsDeferredSentinel(item));\n if (!isRecord(value)) return false;\n return Object.values(value).some((child) => containsDeferredSentinel(child));\n};\n\n// TODO: Remove disclosure sentinel validation once all legacy deferred-resolution paths are retired.\nconst hasDisclosureSentinel = (disclosures: CantonDisclosedContract[]): boolean =>\n disclosures.some(({ createdEventBlob: _blob, ...fields }) => containsDeferredSentinel(fields));\n\nconst disclosuresEqual = (left: CantonDisclosedContract, right: CantonDisclosedContract): boolean =>\n left.contractId === right.contractId &&\n left.templateId === right.templateId &&\n left.createdEventBlob === right.createdEventBlob &&\n left.synchronizerId === right.synchronizerId;\n\nexport const resolveCantonRefreshPlan = async (args: {\n unresolvedCommands: CantonUnresolvedCommand[];\n unresolvedDisclosedContracts: CantonDisclosedContract[];\n refreshPlan: CantonRefreshPlan;\n senderParty?: string;\n signingParties: string[];\n client: ICantonClient;\n}): Promise<{ commands: CantonCommand[]; disclosedContracts: CantonDisclosedContract[] }> => {\n const replacements = cantonRefreshPlanSchema.shape.replaceSentinels.parse(\n args.refreshPlan.replaceSentinels,\n );\n const commands = structuredClone(args.unresolvedCommands);\n if (replacements) {\n if (\n typeof args.senderParty !== 'string' ||\n !args.senderParty.trim() ||\n isCantonDeferredSentinel(args.senderParty)\n ) {\n throw new Error('Sender binding requires a resolved sender party');\n }\n for (const replacement of replacements) {\n for (const target of replacement.targets) {\n for (const { path } of target.arguments) {\n if (readTarget(commands, target, path) !== cantonSenderPartyRef()) {\n throw new Error(\n 'Sender binding target must contain cantonSenderPartyRef()',\n );\n }\n applyPatch(commands, target, path, args.senderParty);\n }\n }\n }\n }\n if (\n containsDeferredSentinel(commands) ||\n hasDisclosureSentinel(args.unresolvedDisclosedContracts)\n ) {\n throw new Error('Canton refreshPlan cannot be combined with deferred sentinels');\n }\n\n for (const entry of args.refreshPlan.commands) {\n if (entry.resolver.type !== 'finalizeCallback') continue;\n const callback = cantonFinalizeCallbackRefreshSchema.parse(entry);\n const contextIndices = callback.targets.map((target) => target.commandIndex).sort();\n const cidIndices = callback.callbackCidTargets.map((target) => target.commandIndex).sort();\n if (JSON.stringify(contextIndices) !== JSON.stringify(cidIndices)) {\n throw new Error(\n 'Callback context and contract ID targets must address the same commands',\n );\n }\n for (const target of [...callback.targets, ...callback.callbackCidTargets]) {\n readTarget(commands, target, target.arguments[0].path);\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n !isRecord(command.exerciseCommand.choiceArgument) ||\n command.exerciseCommand.choiceArgument.pendingCallbackCid !==\n callback.resolver.pendingCallbackCid\n ) {\n throw new Error('Callback target must match the pinned PendingCallback');\n }\n }\n }\n\n const disclosureMap = new Map<string, CantonDisclosedContract>();\n const appendDisclosures = (disclosures: CantonDisclosedContract[]): void => {\n for (const disclosure of disclosures) {\n const existing = disclosureMap.get(disclosure.contractId);\n if (existing && !disclosuresEqual(existing, disclosure)) {\n throw new Error(`Conflicting disclosures for contract ${disclosure.contractId}`);\n }\n disclosureMap.set(disclosure.contractId, disclosure);\n }\n };\n appendDisclosures(args.unresolvedDisclosedContracts);\n\n const resolver = createContractAddressResolver({\n client: args.client,\n senderParty: args.senderParty,\n signingParties: args.signingParties,\n appendDisclosures,\n });\n\n for (const refresh of args.refreshPlan.commands) {\n if (isActiveContractRefresh(refresh)) {\n const ref = makeActiveContractRef(refresh.resolver.selector);\n const selected = await selectActiveContracts(\n await resolveSelectorContracts(resolver, refresh.resolver.selector),\n refresh.resolver.selection,\n resolver,\n );\n await resolver.discloseActiveContracts(ref, selected);\n const contractIds = selected.map(({ createdEvent }) => createdEvent.contractId);\n const resolved =\n refresh.resolver.selection.kind === 'exactlyOne' ? contractIds[0]! : contractIds;\n for (const target of refresh.targets) applyTarget(commands, target, resolved);\n continue;\n }\n\n if (isActiveContractValueRefresh(refresh)) {\n const value = await resolveContractValue(resolver, refresh.resolver);\n for (const target of refresh.targets) applyTarget(commands, target, value);\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigTransferBatch') {\n const transfer = cantonOneSigTransferBatchRefreshSchema.parse(refresh);\n const firstTarget = transfer.targets[0]!;\n const commandIndex = firstTarget.commandIndex;\n const calls = readTarget(commands, firstTarget, [\n { field: 'transaction' },\n { field: 'calls' },\n ]);\n if (!Array.isArray(calls)) throw new Error('OneSig transfer target requires calls');\n const transferIndices = calls.flatMap((entry, index) =>\n isRecord(entry) && isRecord(entry.call) && entry.call.tag === 'OpTransfer'\n ? [index]\n : [],\n );\n const indices = transfer.targets.map((target) => target.arguments[0].path[2].index);\n if (\n transfer.targets.some((target) => target.commandIndex !== commandIndex) ||\n indices.length !== transferIndices.length ||\n new Set(indices).size !== indices.length ||\n transferIndices.some((index) => !indices.includes(index)) ||\n args.refreshPlan.commands.filter(\n (entry) =>\n entry.resolver.type === 'oneSigTransferBatch' &&\n entry.targets.some((target) => target.commandIndex === commandIndex),\n ).length !== 1\n ) {\n throw new Error(\n 'OneSig transfer targets must cover every Transfer context exactly once',\n );\n }\n for (const target of transfer.targets) {\n const current = readTarget(commands, target, target.arguments[0].path);\n if (\n !isRecord(current) ||\n current.tag !== 'TransferFactoryContext' ||\n !isRecord(current.value)\n )\n throw new Error('OneSig transfer target context mismatch');\n }\n const bundle = await resolveCantonOneSigTransferBatch(\n new CantonSdk(args.client),\n transfer.resolver,\n indices.map((index) => calls[index].call),\n args.client,\n );\n appendDisclosures(bundle.disclosedContracts);\n transfer.targets.forEach((target, index) =>\n applyTarget(commands, target, bundle.contexts[index]),\n );\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigTransferInstructionContext') {\n const instruction = cantonOneSigTransferInstructionContextRefreshSchema.parse(refresh);\n const target = instruction.targets[0]!;\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [...path.slice(0, -1), { field: 'call' }]);\n if (\n !isRecord(current) ||\n current.tag !== 'TransferInstructionContext' ||\n !isRecord(current.value) ||\n current.value.transferInstructionCid !== instruction.resolver.transferInstructionCid\n ) {\n throw new Error(\n 'OneSig instruction target must match the pinned transfer instruction',\n );\n }\n const bundle = await resolveCantonOneSigTransferInstructionContext(\n new CantonSdk(args.client),\n instruction.resolver,\n call,\n args.client,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigConfigContext') {\n const config = cantonOneSigConfigContextRefreshSchema.parse(refresh);\n for (const target of config.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = config.resolver;\n if (\n !isRecord(call) ||\n !isRecord(call.value) ||\n call.tag !== expected.operation ||\n !isRecord(call.value.oappId) ||\n call.value.oappId.admin !== expected.oappId.admin ||\n call.value.oappId.id !== expected.oappId.id ||\n !isRecord(current) ||\n current.tag !== 'ConfigContext' ||\n !isRecord(current.value) ||\n (expected.operation === 'OpSetRequestFactory' &&\n call.value.expectedHandler !== expected.expectedHandler)\n ) {\n throw new Error('OneSig config target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigConfigContext(\n new CantonSdk(args.client),\n expected,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigScopeContext') {\n const scope = cantonOneSigScopeContextRefreshSchema.parse(refresh);\n for (const target of scope.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = scope.resolver;\n const contextTag =\n expected.operation === 'OpSetMinFee'\n ? 'MinFeeContext'\n : expected.operation === 'OpSetMinPayoutValue'\n ? 'MinPayoutValueContext'\n : expected.operation === 'OpSetProtocolLedgerTimeValidityPeriod'\n ? 'LedgerTimeValidityContext'\n : 'AccessControlContext';\n if (\n !isRecord(call) ||\n !isRecord(call.value) ||\n call.tag !== expected.operation ||\n !isRecord(call.value.scope) ||\n call.value.scope.category !== expected.scope.category ||\n call.value.scope.admin !== expected.scope.admin ||\n call.value.scope.id !== expected.scope.id ||\n (expected.operation === 'OpAcceptDefaultAdmin' &&\n expected.scope.category === 'oapp') ||\n !isRecord(current) ||\n current.tag !== contextTag ||\n !isRecord(current.value)\n ) {\n throw new Error('OneSig scope target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigScopeContext(\n new CantonSdk(args.client),\n expected,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigDiscoveryContext') {\n const discovery = cantonOneSigDiscoveryContextRefreshSchema.parse(refresh);\n for (const target of discovery.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = discovery.resolver;\n if (\n !isRecord(call) ||\n call.tag !== 'OpSetDiscoveryUrl' ||\n !isRecord(call.value) ||\n !isRecord(call.value.oappId) ||\n call.value.oappId.admin !== expected.oappId.admin ||\n call.value.oappId.id !== expected.oappId.id ||\n !isRecord(current) ||\n current.tag !== 'OAppDiscoveryContext' ||\n !isRecord(current.value) ||\n !isCantonTime(current.value.timestamp) ||\n (parseDamlDecimal(call.value.feeAmount, 'Discovery fee') > 0n\n ? expected.feeDsoParty !== call.value.dso\n : expected.feeDsoParty !== undefined)\n ) {\n throw new Error('OneSig discovery target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigDiscoveryContext(\n new CantonSdk(args.client),\n expected,\n current.value.timestamp,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigRequestContext') {\n const request = cantonOneSigRequestContextRefreshSchema.parse(refresh);\n for (const target of request.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = request.resolver.request;\n const requestTags = [\n 'OpCreateOAppRequest',\n 'OpSkip',\n 'OpBurn',\n 'OpClear',\n 'OpNilify',\n ];\n if (\n !isRecord(call) ||\n !isRecord(call.value) ||\n call.value.dso !== request.resolver.dsoParty ||\n !isRecord(current) ||\n !isRecord(current.value) ||\n !isCantonTime(current.value.timestamp) ||\n (expected.kind === 'request'\n ? call.tag !== 'OpCreateRequest' || current.tag !== 'RequestContext'\n : expected.kind === 'oappAccept'\n ? call.tag !== 'OpAcceptDefaultAdmin' ||\n current.tag !== 'OAppRequestContext' ||\n !isRecord(call.value.scope) ||\n call.value.scope.category !== 'oapp' ||\n call.value.scope.admin !== expected.oappId.admin ||\n call.value.scope.id !== expected.oappId.id ||\n parseDamlDecimal(call.value.feeAmount, 'OApp Accept fee') <= 0n\n : !requestTags.includes(String(call.tag)) ||\n current.tag !== 'OAppRequestContext' ||\n !isRecord(call.value.oappId) ||\n call.value.oappId.admin !== expected.oappId.admin ||\n call.value.oappId.id !== expected.oappId.id)\n ) {\n throw new Error('OneSig request target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigRequestContext(\n new CantonSdk(args.client),\n request.resolver,\n current.value.timestamp,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'finalizeCallback') {\n const callback = cantonFinalizeCallbackRefreshSchema.parse(refresh);\n const bundle = await resolveCantonFinalizeCallback(\n new CantonSdk(args.client),\n callback.resolver,\n );\n appendDisclosures(bundle.disclosedContracts);\n for (const target of callback.targets)\n applyTarget(commands, target, bundle.executeContext);\n for (const target of callback.callbackCidTargets)\n applyTarget(commands, target, bundle.callbackCid);\n continue;\n }\n\n if (refresh.resolver.type === 'transferInstructionAcceptContext') {\n const acceptance = cantonTransferInstructionAcceptContextRefreshSchema.parse(refresh);\n for (const target of acceptance.targets) {\n readTarget(commands, target, target.arguments[0]!.path);\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n command.exerciseCommand.contractId !== acceptance.resolver.contractId\n ) {\n throw new Error(\n 'Accept context target must match the pinned transfer instruction',\n );\n }\n }\n const bundle = await args.client.getTransferInstructionAcceptContext({\n contractId: acceptance.resolver.contractId,\n });\n appendDisclosures(bundle.disclosedContracts);\n for (const target of acceptance.targets) {\n applyTarget(commands, target, bundle.choiceContext);\n }\n continue;\n }\n\n if (isAmuletContextRefresh(refresh)) {\n const bundle = await args.client.getAmuletContextWithExternalRules({\n admin: refresh.resolver.dsoParty,\n id: 'Amulet',\n });\n appendDisclosures(bundle.disclosedContracts);\n for (const target of refresh.targets) {\n applyTarget(commands, target, bundle.amuletContext);\n }\n for (const target of refresh.contractIdTargets ?? []) {\n applyTarget(commands, target, bundle.externalPartyAmuletRulesCid);\n }\n }\n }\n\n // Timestamp refreshes run after all external reads so their shared instant is\n // as close as possible to prepareForSigning, regardless of declaration order.\n const now = new Date();\n for (const refresh of args.refreshPlan.commands) {\n if (!isTimestampRefresh(refresh)) continue;\n\n for (const target of refresh.targets) {\n for (const { path, offsetMs = 0 } of target.arguments) {\n const iso = new Date(now.getTime() + offsetMs).toISOString();\n const current = readTarget(commands, target, path);\n let value: unknown;\n if (isCantonTime(current)) {\n value = iso;\n } else if (\n isRecord(current) &&\n current.tag === 'AV_Time' &&\n isCantonTime(current.value)\n ) {\n value = { ...current, value: iso };\n } else {\n throw new Error('Timestamp refresh target must contain a Canton Time value');\n }\n applyPatch(commands, target, path, value);\n }\n }\n }\n\n for (const refresh of args.refreshPlan.commands) {\n if (refresh.resolver.type !== 'transferInstructionAcceptContext') continue;\n for (const target of refresh.targets) {\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n command.exerciseCommand.contractId !== refresh.resolver.contractId\n ) {\n throw new Error('Accept context target must match the pinned transfer instruction');\n }\n }\n }\n\n for (const refresh of args.refreshPlan.commands) {\n if (refresh.resolver.type !== 'finalizeCallback') continue;\n const callback = cantonFinalizeCallbackRefreshSchema.parse(refresh);\n for (const target of [...callback.targets, ...callback.callbackCidTargets]) {\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n !isRecord(command.exerciseCommand.choiceArgument) ||\n command.exerciseCommand.choiceArgument.pendingCallbackCid !==\n callback.resolver.pendingCallbackCid\n ) {\n throw new Error('Callback target must match the pinned PendingCallback');\n }\n }\n }\n\n for (const replacement of replacements ?? []) {\n for (const target of replacement.targets) {\n for (const { path } of target.arguments) {\n if (readTarget(commands, target, path) !== args.senderParty) {\n throw new Error('Refresh cannot change the bound sender party');\n }\n }\n }\n }\n const disclosedContracts = [...disclosureMap.values()];\n if (containsDeferredSentinel(commands) || hasDisclosureSentinel(disclosedContracts)) {\n throw new Error('Canton refreshPlan cannot return deferred sentinels');\n }\n\n return {\n commands: commands as CantonCommand[],\n disclosedContracts,\n };\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/deferredValue.ts"],"names":["CANTON_DEFERRED_SENDER","cantonDeferredSenderSchema","z","literal","isCantonDeferredSender","value","cantonRefreshPartyFilterSchema","union","object","party","string","cantonExpectedSignatoriesSchema","array","min","nonempty","cantonActiveContractRefFields","partyToFilter","expectedSignatories","optional","templateId","contractStateFilter","partialRecord","any","cantonDeferredValueSchema","discriminatedUnion","type","CANTON_DEFERRED_VALUE_PREFIX","CANTON_DEFERRED_VALUE_SUFFIX","isCantonDeferredSentinel","startsWith","endsWith","encodeCantonDeferredValue","JSON","stringify","parseCantonDeferredValue","undefined","parsedJson","parse","slice","length","parseCantonDeferredValueOrThrow","ref","Error","cantonSenderPartyRef","cantonActiveContractIdRef","cantonActiveContractIdsRef","cantonAmuletRulesCidRef","cantonAmuletContextRef","isCantonPlaceholder"],"mappings":"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","file":"PWKI6T6A.js","sourcesContent":["import { z } from 'zod';\n\n/** Filter / authority token resolved to the ACS query (funding) party at refresh. */\nexport const CANTON_DEFERRED_SENDER = 'sender' as const;\nexport type CantonDeferredSender = typeof CANTON_DEFERRED_SENDER;\n\nexport const cantonDeferredSenderSchema = z.literal(CANTON_DEFERRED_SENDER);\n\nexport const isCantonDeferredSender = (value: unknown): value is CantonDeferredSender =>\n value === CANTON_DEFERRED_SENDER;\n\nexport const cantonRefreshPartyFilterSchema = z.union([\n cantonDeferredSenderSchema,\n z.object({ party: z.string() }),\n]);\n\n/** Non-empty list of parties that must all appear in created-event signatories. */\nexport const cantonExpectedSignatoriesSchema = z\n .array(z.union([cantonDeferredSenderSchema, z.string().min(1)]))\n .nonempty();\n\nconst cantonActiveContractRefFields = {\n partyToFilter: cantonRefreshPartyFilterSchema,\n /**\n * Authority parties that must all be ledger signatories (authenticate-then-count).\n * Use {@link CANTON_DEFERRED_SENDER} for the resolved funding/query party.\n * Omitted on pre-existing persisted refs; refresh then defaults to the query\n * party, except CIP-56 Amulet holdings (owner is not a signatory).\n */\n expectedSignatories: cantonExpectedSignatoriesSchema.optional(),\n templateId: z.string(),\n contractStateFilter: z.partialRecord(z.string(), z.any()).optional(),\n};\n\nexport const cantonDeferredValueSchema = z.discriminatedUnion('type', [\n z.object({ type: z.literal('senderParty') }),\n z.object({\n type: z.literal('activeContractId'),\n ...cantonActiveContractRefFields,\n }),\n z.object({\n type: z.literal('activeContractIds'),\n ...cantonActiveContractRefFields,\n }),\n z.object({ type: z.literal('amuletRulesCid') }),\n z.object({ type: z.literal('amuletContext') }),\n]);\n\nexport type CantonRefreshPartyFilter = z.infer<typeof cantonRefreshPartyFilterSchema>;\nexport type CantonExpectedSignatories = z.infer<typeof cantonExpectedSignatoriesSchema>;\nexport type CantonDeferredValue = z.infer<typeof cantonDeferredValueSchema>;\ntype CantonActiveContractIdRef = Omit<\n Extract<CantonDeferredValue, { type: 'activeContractId' }>,\n 'type'\n>;\ntype CantonActiveContractIdsRef = Omit<\n Extract<CantonDeferredValue, { type: 'activeContractIds' }>,\n 'type'\n>;\n\n/**\n * Branded encoded form of a {@link CantonDeferredValue}: a sign-time reference\n * string that a resolver turns into a live contract id / party. Branding keeps it\n * distinct from a plain `string` so the ref-substitution stays type-checked.\n */\nexport type CantonDeferredRef = string & { readonly __cantonDeferredRef: unique symbol };\n\nexport const CANTON_DEFERRED_VALUE_PREFIX = '<<CANTON_DEFERRED:';\nexport const CANTON_DEFERRED_VALUE_SUFFIX = '>>';\n\n/** True when `value` has deferred-ref framing, whether or not the payload parses. */\nexport const isCantonDeferredSentinel = (value: unknown): value is string =>\n typeof value === 'string' &&\n value.startsWith(CANTON_DEFERRED_VALUE_PREFIX) &&\n value.endsWith(CANTON_DEFERRED_VALUE_SUFFIX);\n\nexport const encodeCantonDeferredValue = (value: CantonDeferredValue): CantonDeferredRef =>\n `${CANTON_DEFERRED_VALUE_PREFIX}${JSON.stringify(value)}${CANTON_DEFERRED_VALUE_SUFFIX}` as CantonDeferredRef;\n\nexport const parseCantonDeferredValue = (value: unknown): CantonDeferredValue | undefined => {\n if (!isCantonDeferredSentinel(value)) {\n return undefined;\n }\n\n try {\n const parsedJson = JSON.parse(\n value.slice(CANTON_DEFERRED_VALUE_PREFIX.length, -CANTON_DEFERRED_VALUE_SUFFIX.length),\n );\n return cantonDeferredValueSchema.parse(parsedJson);\n } catch {\n return undefined;\n }\n};\n\n/**\n * Parse a deferred ref. Non-sentinels return `undefined`. A framed sentinel\n * that fails schema validation throws — callers must not treat corrupt refs\n * as plain strings.\n */\nexport const parseCantonDeferredValueOrThrow = (\n value: unknown,\n): CantonDeferredValue | undefined => {\n const ref = parseCantonDeferredValue(value);\n if (ref) return ref;\n if (isCantonDeferredSentinel(value)) {\n throw new Error(`Invalid Canton deferred ref: ${value}`);\n }\n return undefined;\n};\n\nexport const cantonSenderPartyRef = (): CantonDeferredRef =>\n encodeCantonDeferredValue({ type: 'senderParty' });\n\nexport const cantonActiveContractIdRef = (value: CantonActiveContractIdRef): CantonDeferredRef =>\n encodeCantonDeferredValue({ type: 'activeContractId', ...value });\n\nexport const cantonActiveContractIdsRef = (value: CantonActiveContractIdsRef): CantonDeferredRef =>\n encodeCantonDeferredValue({ type: 'activeContractIds', ...value });\n\nexport const cantonAmuletRulesCidRef = (): CantonDeferredRef =>\n encodeCantonDeferredValue({ type: 'amuletRulesCid' });\n\nexport const cantonAmuletContextRef = (): CantonDeferredRef =>\n encodeCantonDeferredValue({ type: 'amuletContext' });\n\n/** Returns true if `value` is a valid Canton deferred-value sentinel. */\nexport const isCantonPlaceholder = (value: string): boolean =>\n parseCantonDeferredValue(value) !== undefined;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/refresh/address-resolver.ts"],"names":["isAmuletHoldingTemplateId","templateId","endsWith","isConcreteActiveContractRef","ref","type","partyToFilter","CANTON_DEFERRED_SENDER","matchesContractStateFilter","contract","contractStateFilter","createArgument","createdEvent","Object","entries","every","key","value","actual","getCreateArgumentField","undefined","JSON","stringify","resolveExpectedSignatories","expectedSignatories","queryParty","length","map","party","isCantonDeferredSender","resolveContractStateFilter","fromEntries","isRefAlive","client","contracts","queryLiveContractsForRef","interfaceId","startsWith","packageName","moduleName","entityName","extra","slice","split","Error","packageId","getPackageId","offset","getLedgerEndOffset","queryActiveContractsByInterface","includeCreatedEventBlob","queryActiveContracts","templateIds","filter","areExpectedSignatories","views","interfaceViews","view","viewValue","viewStatus","code","queryLiveContractIdsForRef","senderParty","c","contractId","createContractAddressResolver","deps","signingParties","appendDisclosures","requireSender","resolveQueryParty","queryCache","Map","queryAsParty","cacheKey","cached","get","query","set","needsDisclosure","stakeholders","Set","signatories","observers","some","has","discloseContracts","toDisclose","disclosures","createdEventBlob","synchronizerId","resolveActiveContractId","resolveActiveContractIds","resolveActiveContracts","discloseActiveContracts","requireSenderParty"],"mappings":"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","file":"RVJRKYSC.js","sourcesContent":["import type { ICantonClient } from '../client/interface';\nimport {\n CANTON_DEFERRED_SENDER,\n type CantonDeferredValue,\n isCantonDeferredSender,\n} from '../deferredValue';\nimport type { JsActiveContract } from '../open-api/models';\nimport type { CantonDisclosedContract } from '../transaction';\nimport { areExpectedSignatories, getCreateArgumentField } from '../trusted-origin';\n\n/** CIP-56 Amulet holding — DSO is the sole signatory; owner is payload/observer. */\nconst isAmuletHoldingTemplateId = (templateId: string): boolean =>\n templateId.endsWith(':Splice.Amulet:Amulet');\n\nexport type ActiveContractRef = Extract<\n CantonDeferredValue,\n { type: 'activeContractId' | 'activeContractIds' }\n> & { interfaceId?: string };\n\n/** Active-contract ref whose handler party is concrete (not the sender sentinel). */\nexport type ConcreteActiveContractRef = ActiveContractRef & {\n partyToFilter: { party: string };\n};\n\nexport const isConcreteActiveContractRef = (\n ref: CantonDeferredValue,\n): ref is ConcreteActiveContractRef =>\n (ref.type === 'activeContractId' || ref.type === 'activeContractIds') &&\n ref.partyToFilter !== CANTON_DEFERRED_SENDER;\n\nexport interface ContractAddressResolverDeps {\n client: ICantonClient;\n senderParty?: string;\n /** A contract is only disclosed when none of these parties is already a stakeholder on it. */\n signingParties: string[];\n appendDisclosures: (disclosures: CantonDisclosedContract[]) => void;\n}\n\n/**\n * Match create-argument fields, including dotted paths (`instrumentId.admin`).\n */\nexport const matchesContractStateFilter = (\n contract: JsActiveContract,\n contractStateFilter: ActiveContractRef['contractStateFilter'],\n): boolean => {\n if (!contractStateFilter) return true;\n const createArgument = contract.createdEvent.createArgument;\n return Object.entries(contractStateFilter).every(([key, value]) => {\n const actual = getCreateArgumentField(createArgument, key);\n // Missing / unresolvable paths must not match (fail closed).\n if (actual === undefined) return false;\n return JSON.stringify(actual) === JSON.stringify(value);\n });\n};\n\n/**\n * Resolve {@link CANTON_DEFERRED_SENDER} entries to the ACS query party.\n * Missing lists default to `[queryParty]` except CIP-56 Amulet holdings, where\n * the owner is not a signatory — omit the filter so pre-PR refs still resolve.\n */\nexport const resolveExpectedSignatories = (\n expectedSignatories: readonly string[] | undefined,\n queryParty: string,\n templateId: string,\n): string[] | undefined => {\n if (expectedSignatories?.length) {\n return expectedSignatories.map((party) =>\n isCantonDeferredSender(party) ? queryParty : party,\n );\n }\n if (isAmuletHoldingTemplateId(templateId)) {\n return undefined;\n }\n return [queryParty];\n};\n\n/** Resolve {@link CANTON_DEFERRED_SENDER} values in `contractStateFilter` to the ACS query party. */\nexport const resolveContractStateFilter = (\n contractStateFilter: ActiveContractRef['contractStateFilter'],\n queryParty: string,\n): ActiveContractRef['contractStateFilter'] => {\n if (!contractStateFilter) return contractStateFilter;\n return Object.fromEntries(\n Object.entries(contractStateFilter).map(([key, value]) => [\n key,\n isCantonDeferredSender(value) ? queryParty : value,\n ]),\n );\n};\n\nexport const isRefAlive = async (\n client: ICantonClient,\n ref: CantonDeferredValue,\n): Promise<boolean> => {\n if (!isConcreteActiveContractRef(ref)) return false;\n const contracts = await queryLiveContractsForRef(client, ref.partyToFilter.party, ref);\n return ref.type === 'activeContractId' ? contracts.length === 1 : contracts.length > 0;\n};\n\n/**\n * Query ACS for `party` + template, apply state filter, then\n * authenticate-then-count: keep only contracts where every resolved\n * `expectedSignatories` entry is a ledger signatory.\n *\n * `partyToFilter` is visibility (may be an observer). `expectedSignatories` is\n * authority (defaults to the query party when omitted, except Amulet holdings).\n * Optional `contractStateFilter` disambiguates / binds payload roles (supports\n * dotted paths; {@link CANTON_DEFERRED_SENDER} values resolve).\n */\nexport const queryLiveContractsForRef = async (\n client: ICantonClient,\n party: string,\n ref: ActiveContractRef,\n): Promise<JsActiveContract[]> => {\n let interfaceId = ref.interfaceId;\n if (interfaceId?.startsWith('#')) {\n const [packageName, moduleName, entityName, ...extra] = interfaceId.slice(1).split(':');\n if (!packageName || !moduleName || !entityName || extra.length) {\n throw new Error(`Invalid package-name-qualified interface ID: ${interfaceId}`);\n }\n const packageId = await client.getPackageId(packageName, [party]);\n interfaceId = `${packageId}:${moduleName}:${entityName}`;\n }\n const offset = await client.getLedgerEndOffset();\n const expectedSignatories = resolveExpectedSignatories(\n ref.expectedSignatories,\n party,\n ref.templateId,\n );\n const contractStateFilter = resolveContractStateFilter(ref.contractStateFilter, party);\n // The Ledger API filters interfaces by package name, so query by the reference as given; the\n // view filter below pins a name-qualified interface to its resolved `interfaceId`.\n const contracts = ref.interfaceId\n ? await client.queryActiveContractsByInterface([party], offset, [ref.interfaceId], {\n includeCreatedEventBlob: true,\n })\n : await client.queryActiveContracts(party, offset, {\n templateIds: [ref.templateId],\n includeCreatedEventBlob: true,\n });\n return contracts.filter((contract) => {\n if (\n expectedSignatories !== undefined &&\n !areExpectedSignatories(contract.createdEvent, expectedSignatories)\n )\n return false;\n if (!interfaceId) return matchesContractStateFilter(contract, contractStateFilter);\n const views = (contract.createdEvent.interfaceViews ?? []).filter(\n (view) => view.interfaceId === interfaceId,\n );\n if (views.length !== 1 || views[0]!.viewValue == null || views[0]!.viewStatus?.code !== 0) {\n return false;\n }\n return matchesContractStateFilter(\n {\n ...contract,\n createdEvent: { ...contract.createdEvent, createArgument: views[0]!.viewValue },\n },\n contractStateFilter,\n );\n });\n};\n\n/**\n * Returns the contractIds of all live contracts matching ref.\n * Resolves {@link CANTON_DEFERRED_SENDER} to senderParty when provided; returns [] if unresolvable.\n */\nexport const queryLiveContractIdsForRef = async (\n client: ICantonClient,\n ref: CantonDeferredValue,\n senderParty?: string,\n): Promise<string[]> => {\n if (ref.type !== 'activeContractId' && ref.type !== 'activeContractIds') return [];\n const party =\n ref.partyToFilter === CANTON_DEFERRED_SENDER ? senderParty : ref.partyToFilter.party;\n if (!party) return [];\n const contracts = await queryLiveContractsForRef(client, party, ref);\n return contracts.map((c) => c.createdEvent.contractId);\n};\n\nexport const createContractAddressResolver = (deps: ContractAddressResolverDeps) => {\n const { client, senderParty, signingParties, appendDisclosures } = deps;\n\n const requireSender = (templateId: string): string => {\n if (!senderParty) {\n throw new Error(\n `Refresh entry for ${templateId} needs a resolved sender party, but none was provided`,\n );\n }\n return senderParty;\n };\n\n const resolveQueryParty = ({ partyToFilter, templateId }: ActiveContractRef): string =>\n partyToFilter === CANTON_DEFERRED_SENDER ? requireSender(templateId) : partyToFilter.party;\n\n const queryCache = new Map<string, Promise<JsActiveContract[]>>();\n const queryAsParty = async (ref: ActiveContractRef): Promise<JsActiveContract[]> => {\n const party = resolveQueryParty(ref);\n const cacheKey = JSON.stringify({ ...ref, party });\n const cached = queryCache.get(cacheKey);\n if (cached) return cached;\n\n const query = (async () => {\n const contracts = await queryLiveContractsForRef(client, party, ref);\n if (contracts.length === 0) {\n throw new Error(\n `Party ${party} has no matching active contracts of ${ref.templateId}`,\n );\n }\n return contracts;\n })();\n queryCache.set(cacheKey, query);\n return query;\n };\n\n // A signing party that is already a stakeholder can see the contract on its\n // own stream, so only disclose to parties that aren't signatories/observers.\n const needsDisclosure = (contract: JsActiveContract): boolean => {\n const stakeholders = new Set([\n ...(contract.createdEvent.signatories ?? []),\n ...(contract.createdEvent.observers ?? []),\n ]);\n return !signingParties.some((party) => stakeholders.has(party));\n };\n\n const discloseContracts = async (\n ref: ActiveContractRef,\n contracts: JsActiveContract[],\n ): Promise<void> => {\n const toDisclose = contracts.filter(needsDisclosure);\n if (toDisclose.length === 0) return;\n\n const disclosures = toDisclose.map((contract) => {\n const contractId = contract.createdEvent.contractId;\n const createdEventBlob = contract.createdEvent.createdEventBlob;\n if (!createdEventBlob) {\n throw new Error(\n `Could not disclose ${contractId} (template ${ref.templateId}) — ACS result omitted createdEventBlob`,\n );\n }\n return {\n contractId,\n templateId: contract.createdEvent.templateId,\n createdEventBlob,\n synchronizerId: contract.synchronizerId,\n };\n });\n appendDisclosures(disclosures);\n };\n\n const resolveActiveContractId = async (ref: ActiveContractRef): Promise<string> => {\n const contracts = await queryAsParty(ref);\n if (contracts.length !== 1) {\n throw new Error(\n `Refresh for ${ref.templateId} matched ${contracts.length} contracts, but a scalar ref expects exactly one`,\n );\n }\n await discloseContracts(ref, contracts);\n return contracts[0]!.createdEvent.contractId;\n };\n\n const resolveActiveContractIds = async (ref: ActiveContractRef): Promise<string[]> => {\n const contracts = await queryAsParty(ref);\n await discloseContracts(ref, contracts);\n return contracts.map((contract) => contract.createdEvent.contractId);\n };\n\n return {\n resolveActiveContractId,\n resolveActiveContractIds,\n resolveActiveContracts: queryAsParty,\n discloseActiveContracts: discloseContracts,\n requireSenderParty: requireSender,\n };\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/refresh/onesig-request.ts"],"names":["ONESIG_CONFIG","FACTORY","FACTORY_CONFIG","IOAPP","OAPP_CONFIG","ACCESS_CONTROL","sameIdentity","value","identity","getCreateArgumentField","admin","id","exactlyOne","contracts","label","length","Error","requiredText","resolveCantonOneSigRequestContext","sdk","input","timestamp","offset","getLedgerEndOffset","templateContracts","templateId","name","entity","slice","split","queryActiveContracts","informee","templateIds","includeCreatedEventBlob","filter","createdEvent","packageName","join","interfaceContracts","interfaceId","packageId","getPackageId","resolvedId","queryActiveContractsByInterface","flatMap","contract","views","interfaceViews","view","viewStatus","code","viewValue","areExpectedSignatories","disclosedContracts","disclose","push","callbackDisclosure","contractId","factoryCid","gateway","oapp","request","kind","oneSigId","oneSig","config","createArgument","oappId","ioApps","configs","accessControls","Promise","all","ioApp","map","find","oappGateway","matchingAccess","scope","ioAppCid","oappConfig","accessControlCid","factory","handler","dsoParty","undefined","ownerConfig","ownerConfigCid","time","Date","now","toISOString","context","tag","requestFactoryConfig"],"mappings":"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","file":"XCOORR26.js","sourcesContent":["import type { JsActiveContract } from '../open-api/models';\nimport type { CantonSdk } from '../sdk/canton-sdk';\nimport type { CantonDisclosedContract } from '../transaction';\nimport { areExpectedSignatories, getCreateArgumentField } from '../trusted-origin';\nimport { callbackDisclosure } from './callback-contracts';\nimport type { CantonOneSigRequestContextRefresh } from './plan';\n\nconst ONESIG_CONFIG = '#layerzero-onesig:OneSigConfig:OneSigConfig';\nconst FACTORY = '#layerzero-request-factory:RequestFactory:RequestFactory';\nconst FACTORY_CONFIG = '#layerzero-request-factory:RequestFactoryConfig:RequestFactoryConfig';\nconst IOAPP = '#layerzero-ioapp:IOApp:IOApp';\nconst OAPP_CONFIG = '#layerzero-ioapp-config:IOAppConfig:IOAppConfig';\nconst ACCESS_CONTROL = '#layerzero-iaccess-control:IAccessControl:IAccessControl';\n\ntype Input = CantonOneSigRequestContextRefresh['resolver'];\ntype Identity = { admin: string; id: string };\nexport type CantonOneSigRequestContext =\n | { tag: 'RequestContext'; value: { ownerConfig: string; timestamp: string } }\n | {\n tag: 'OAppRequestContext';\n value: {\n ioAppCid: string;\n oappConfig: string;\n accessControlCid: string | null;\n requestFactoryConfig: string;\n timestamp: string;\n };\n };\n\nconst sameIdentity = (value: unknown, identity: Identity): boolean =>\n getCreateArgumentField(value, 'admin') === identity.admin &&\n getCreateArgumentField(value, 'id') === identity.id;\nconst exactlyOne = (contracts: JsActiveContract[], label: string): JsActiveContract => {\n if (contracts.length !== 1)\n throw new Error(`Expected exactly one ${label}, found ${contracts.length}`);\n return contracts[0]!;\n};\nconst requiredText = (value: unknown, label: string): string => {\n if (typeof value !== 'string' || !value) throw new Error(`Missing ${label}`);\n return value;\n};\n\nexport const resolveCantonOneSigRequestContext = async (\n sdk: CantonSdk,\n input: Input,\n timestamp?: string,\n): Promise<{\n context: CantonOneSigRequestContext;\n disclosedContracts: CantonDisclosedContract[];\n}> => {\n const offset = await sdk.getLedgerEndOffset();\n const templateContracts = async (templateId: string) => {\n const [name, ...entity] = templateId.slice(1).split(':');\n return (\n await sdk.queryActiveContracts(input.informee, offset, {\n templateIds: [templateId],\n includeCreatedEventBlob: true,\n })\n ).filter(\n ({ createdEvent }) =>\n createdEvent.packageName === name &&\n createdEvent.templateId.split(':').slice(1).join(':') === entity.join(':'),\n );\n };\n const interfaceContracts = async (interfaceId: string, admin: string) => {\n const [name, ...entity] = interfaceId.slice(1).split(':');\n const packageId = await sdk.getPackageId(name!, [input.informee]);\n const resolvedId = `${packageId}:${entity.join(':')}`;\n return (\n await sdk.queryActiveContractsByInterface([input.informee], offset, [interfaceId], {\n includeCreatedEventBlob: true,\n })\n ).flatMap((contract) => {\n const views =\n contract.createdEvent.interfaceViews?.filter(\n (view) => view.interfaceId === resolvedId,\n ) ?? [];\n const view = views[0];\n return views.length === 1 &&\n view?.viewStatus?.code === 0 &&\n view.viewValue &&\n areExpectedSignatories(contract.createdEvent, [admin])\n ? [{ contract, view: view.viewValue as Record<string, unknown> }]\n : [];\n });\n };\n const disclosedContracts: CantonDisclosedContract[] = [];\n const disclose = (contract: JsActiveContract) => {\n disclosedContracts.push(callbackDisclosure(contract));\n return contract.createdEvent.contractId;\n };\n let factoryCid: string;\n let gateway: string | undefined;\n let oapp: { ioAppCid: string; oappConfig: string; accessControlCid: string | null } | undefined;\n if (input.request.kind === 'request') {\n const { admin, oneSigId } = input.request.oneSig;\n const config = exactlyOne(\n (await templateContracts(ONESIG_CONFIG)).filter(\n ({ createdEvent }) =>\n areExpectedSignatories(createdEvent, [admin]) &&\n getCreateArgumentField(createdEvent.createArgument, 'admin') === admin &&\n getCreateArgumentField(createdEvent.createArgument, 'oneSigId') === oneSigId,\n ),\n 'OneSig config',\n );\n factoryCid = requiredText(\n getCreateArgumentField(config.createdEvent.createArgument, 'requestFactoryCid'),\n 'OneSig request factory',\n );\n } else {\n const { oappId } = input.request;\n const [ioApps, configs, accessControls] = await Promise.all([\n interfaceContracts(IOAPP, oappId.admin),\n interfaceContracts(OAPP_CONFIG, oappId.admin),\n interfaceContracts(ACCESS_CONTROL, oappId.admin),\n ]);\n const ioApp = exactlyOne(\n ioApps\n .filter(({ view }) => sameIdentity(view.oappId, oappId))\n .map(({ contract }) => contract),\n 'IOApp',\n );\n const config = exactlyOne(\n configs\n .filter(({ view }) => sameIdentity(view.oappId, oappId))\n .map(({ contract }) => contract),\n 'OApp config',\n );\n gateway = requiredText(\n ioApps.find(({ contract }) => contract === ioApp)!.view.oappGateway,\n 'OApp gateway',\n );\n factoryCid = requiredText(\n getCreateArgumentField(config.createdEvent.createArgument, 'requestFactoryCid'),\n 'OApp request factory',\n );\n const matchingAccess = accessControls.filter(\n ({ view }) =>\n sameIdentity(view.scope, oappId) &&\n getCreateArgumentField(view.scope, 'category') === 'oapp',\n );\n if (matchingAccess.length > 1) throw new Error('Ambiguous OApp access control');\n if (input.request.kind === 'oappAccept' && matchingAccess.length !== 1)\n throw new Error('OApp Accept requires access control');\n oapp = {\n ioAppCid: disclose(ioApp),\n oappConfig: disclose(config),\n accessControlCid: matchingAccess[0] ? disclose(matchingAccess[0].contract) : null,\n };\n }\n const factory = exactlyOne(\n (await templateContracts(FACTORY)).filter(\n ({ createdEvent }) => createdEvent.contractId === factoryCid,\n ),\n 'configured request factory',\n );\n const handler = requiredText(\n getCreateArgumentField(factory.createdEvent.createArgument, 'handler'),\n 'request factory handler',\n );\n if (\n !areExpectedSignatories(factory.createdEvent, [handler]) ||\n getCreateArgumentField(factory.createdEvent.createArgument, 'dso') !== input.dsoParty ||\n (gateway !== undefined && gateway !== handler)\n ) {\n throw new Error('Request factory authority, DSO or OApp gateway mismatch');\n }\n disclose(factory);\n const ownerConfig = exactlyOne(\n (await templateContracts(FACTORY_CONFIG)).filter(\n ({ createdEvent }) =>\n areExpectedSignatories(createdEvent, [handler]) &&\n getCreateArgumentField(createdEvent.createArgument, 'handler') === handler,\n ),\n 'request factory config',\n );\n const ownerConfigCid = disclose(ownerConfig);\n const time = timestamp ?? new Date(Date.now() - 10_000).toISOString();\n return {\n context: oapp\n ? {\n tag: 'OAppRequestContext',\n value: { ...oapp, requestFactoryConfig: ownerConfigCid, timestamp: time },\n }\n : { tag: 'RequestContext', value: { ownerConfig: ownerConfigCid, timestamp: time } },\n disclosedContracts,\n };\n};\n"]}
package/dist/ZZUOA324.js DELETED
@@ -1,82 +0,0 @@
1
- import { resolveCantonRefreshPlan } from './PDVMANRS.js';
2
- import { substituteRefsToCids } from './BSVJEBKM.js';
3
- import { createContractAddressResolver } from './RVJRKYSC.js';
4
- import { AMULET_INSTRUMENT_ID } from './P7PG4R5T.js';
5
- import { __name } from './VUOMXK5T.js';
6
-
7
- // src/refresh/resolve.ts
8
- var resolveCantonTransaction = /* @__PURE__ */ __name(async ({ unresolvedCommands, unresolvedDisclosedContracts, refreshPlan, senderParty, signingParties, client }) => {
9
- if (refreshPlan) {
10
- return resolveCantonRefreshPlan({
11
- unresolvedCommands,
12
- unresolvedDisclosedContracts,
13
- refreshPlan,
14
- senderParty,
15
- signingParties,
16
- client
17
- });
18
- }
19
- const nextDisclosed = [
20
- ...unresolvedDisclosedContracts
21
- ];
22
- const disclosedContractIds = new Set(unresolvedDisclosedContracts.map(({ contractId }) => contractId));
23
- const appendDisclosures = /* @__PURE__ */ __name((disclosures) => {
24
- for (const disclosure of disclosures) {
25
- if (!disclosedContractIds.has(disclosure.contractId)) {
26
- disclosedContractIds.add(disclosure.contractId);
27
- nextDisclosed.push(disclosure);
28
- }
29
- }
30
- }, "appendDisclosures");
31
- const { resolveActiveContractId, resolveActiveContractIds, requireSenderParty } = createContractAddressResolver({
32
- client,
33
- senderParty,
34
- signingParties,
35
- appendDisclosures
36
- });
37
- let amuletBundlePromise;
38
- const getAmuletBundle = /* @__PURE__ */ __name(async () => {
39
- if (!amuletBundlePromise) {
40
- amuletBundlePromise = (async () => {
41
- const dsoParty = await client.getDsoParty();
42
- const { amuletContext, disclosedContracts: bundle, externalPartyAmuletRulesCid } = await client.getAmuletContextWithExternalRules({
43
- admin: dsoParty,
44
- id: AMULET_INSTRUMENT_ID
45
- });
46
- appendDisclosures(bundle);
47
- return {
48
- amuletContext,
49
- externalPartyAmuletRulesCid
50
- };
51
- })();
52
- }
53
- return amuletBundlePromise;
54
- }, "getAmuletBundle");
55
- const resolveRef = /* @__PURE__ */ __name(async (ref) => {
56
- switch (ref.type) {
57
- case "senderParty":
58
- return requireSenderParty(ref.type);
59
- case "activeContractId":
60
- return resolveActiveContractId(ref);
61
- case "activeContractIds":
62
- return resolveActiveContractIds(ref);
63
- case "amuletRulesCid":
64
- return (await getAmuletBundle()).externalPartyAmuletRulesCid;
65
- case "amuletContext":
66
- return (await getAmuletBundle()).amuletContext;
67
- }
68
- }, "resolveRef");
69
- const resolvedCommands = await substituteRefsToCids(unresolvedCommands, resolveRef);
70
- const resolvedDisclosedContracts = [];
71
- for (let index = 0; index < nextDisclosed.length; index++) {
72
- resolvedDisclosedContracts.push(await substituteRefsToCids(nextDisclosed[index], resolveRef));
73
- }
74
- return {
75
- commands: resolvedCommands,
76
- disclosedContracts: resolvedDisclosedContracts
77
- };
78
- }, "resolveCantonTransaction");
79
-
80
- export { resolveCantonTransaction };
81
- //# sourceMappingURL=ZZUOA324.js.map
82
- //# sourceMappingURL=ZZUOA324.js.map