@laceio/sdk 0.1.0 → 0.1.1-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/dist/{Ed25519PublicKey-lvu1s54U.cjs → Address-AMKTo-dA.cjs} +17150 -61
  2. package/dist/{Ed25519PublicKey-CjnuAYRR.js → Address-_c_-9hLC.js} +16955 -264
  3. package/dist/{Bip32Account-r3KAhCgU.js → Bip32Account-CaW1zC9Y.js} +4 -5
  4. package/dist/{Bip32Account-Cz3h0ZUa.cjs → Bip32Account-DOaGmKpv.cjs} +4 -5
  5. package/dist/Cardano-B-gyqBBD.js +311 -0
  6. package/dist/Cardano-BQ_af0Y3.cjs +322 -0
  7. package/dist/Ed25519PublicKey-B3QcR0J2.cjs +88 -0
  8. package/dist/Ed25519PublicKey-DIE19xHg.js +83 -0
  9. package/dist/InMemoryKeyAgent-Bc_xZY-v.cjs +652 -0
  10. package/dist/InMemoryKeyAgent-D8T3vtXy.js +631 -0
  11. package/dist/{PaymentAddress-DhbtuYb7.cjs → PaymentAddress-B4n1KZMx.cjs} +1 -2
  12. package/dist/{PaymentAddress-xSmGUQ-8.js → PaymentAddress-Cml3EA1n.js} +1 -2
  13. package/dist/Percent-Cfuw5YyL.cjs +11 -0
  14. package/dist/Percent-DpvyJ_93.js +5 -0
  15. package/dist/SodiumBip32Ed25519-BaD-kjyx.cjs +380 -0
  16. package/dist/SodiumBip32Ed25519-DCikAMsl.js +363 -0
  17. package/dist/{TransactionBuilder-CeJTNzm-.cjs → TransactionBuilder-BakTJvsJ.cjs} +59 -89
  18. package/dist/{TransactionBuilder-DGNDM4kt.js → TransactionBuilder-D2ErwVWv.js} +5 -71
  19. package/dist/_md-6zV2Cme0.cjs +684 -0
  20. package/dist/_md-gbUqlhqd.js +399 -0
  21. package/dist/_web-crypto-random-bytes-BvzwTYPG.js +197 -0
  22. package/dist/acc-module-NL_8mEHH.cjs +27654 -0
  23. package/dist/acc-module-ur8CkBd1.js +27624 -0
  24. package/dist/account-call-B7cF8ly4.cjs +293 -0
  25. package/dist/account-call-BF4rBcNw.js +3 -0
  26. package/dist/account-call-CoCq3V55.js +252 -0
  27. package/dist/account-call-DFcD257E.cjs +4 -0
  28. package/dist/account-guards-BeKbV9D1.cjs +41 -0
  29. package/dist/account-guards-qnFXuXSE.js +36 -0
  30. package/dist/{activity-type.stable-ClO9j_PH.cjs → activity-type-BPXxdHBP.cjs} +2 -1
  31. package/dist/{activity-type.stable-Ml0SOYv9.js → activity-type-C1geyPsH.js} +2 -1
  32. package/dist/address-OxwXIwbF.js +15502 -0
  33. package/dist/address-book-address-validator-BqYM0Uyp.cjs +41 -0
  34. package/dist/{address-book-address-validator-BhqRfmlL.cjs → address-book-address-validator-CGIcqn5W.cjs} +5 -4
  35. package/dist/{address-book-address-validator-VqIOB8PY.js → address-book-address-validator-FkkYim3z.js} +6 -4
  36. package/dist/address-book-address-validator-RSx2Jozy.js +39 -0
  37. package/dist/address-lECYBd9-.cjs +13043 -0
  38. package/dist/{apply-vkey-witnesses-Ctzk7eye.cjs → apply-vkey-witnesses-1jyczTkw.cjs} +1 -1
  39. package/dist/{apply-vkey-witnesses-Dfo7XfhL.js → apply-vkey-witnesses-Byb40-yJ.js} +1 -1
  40. package/dist/artefact-loader-Cqc9eSkL.cjs +182 -0
  41. package/dist/artefact-loader-D0T2f6F7.js +159 -0
  42. package/dist/auto-dismiss-failure-on-success-BWJceNXd.cjs +37 -0
  43. package/dist/auto-dismiss-failure-on-success-Bpod-v4r.js +31 -0
  44. package/dist/bip32-EPpcFrpH.cjs +3851 -0
  45. package/dist/{bip32ed25519-D2In8WzR.cjs → bip32ed25519-CRiG-Kjg.cjs} +5 -4
  46. package/dist/{bip32ed25519-qsLH_eWO.js → bip32ed25519-E-fCUZNv.js} +6 -4
  47. package/dist/bip39-DZomfqeY.js +9 -0
  48. package/dist/bip39-MAck9iod.cjs +26 -0
  49. package/dist/bitcoin-data-provider-D0OT_Uiu.cjs +26 -0
  50. package/dist/bitcoin-data-provider-LN_8oamW.js +21 -0
  51. package/dist/bitcoin.cjs +48 -0
  52. package/dist/bitcoin.d.ts +29805 -1
  53. package/dist/bitcoin.js +22 -0
  54. package/dist/{blake2b-BGHUWMsV.js → blake2b-BL-eR5G2.js} +6 -4
  55. package/dist/{blake2b-DspUqw68.cjs → blake2b-Iy324FwH.cjs} +5 -4
  56. package/dist/{blockfrost-tx-submit-provider-BUEOmdvc.js → blockfrost-tx-submit-provider-BHDLgOIE.js} +9 -162
  57. package/dist/{blockfrost-tx-submit-provider-B5dWbdrZ.cjs → blockfrost-tx-submit-provider-BxC19smv.cjs} +7 -171
  58. package/dist/{blockingWithLatestFrom-BhaE7pnA.js → blockingWithLatestFrom-FUfZFEUG.js} +1 -1
  59. package/dist/{blockingWithLatestFrom-DkuT3G2a.cjs → blockingWithLatestFrom-bmCPgA3c.cjs} +1 -1
  60. package/dist/bn-BFq5a4dk.cjs +2553 -0
  61. package/dist/{SodiumBip32Ed25519-BEfo1Q9m.js → browser-D5jRKv_L.js} +4 -401
  62. package/dist/bytes.vo-CziaOsba.js +24 -0
  63. package/dist/bytes.vo-hecRu3YZ.cjs +35 -0
  64. package/dist/{cardano-network-id-to-network-type-PXvn1ycQ.cjs → cardano-network-id-to-network-type-BwG_d6QP.cjs} +1 -1
  65. package/dist/{cardano-network-id-to-network-type-DHgKhDAK.js → cardano-network-id-to-network-type-CYJheetp.js} +1 -1
  66. package/dist/{cardano-network-id.vo-CbNNKd-k.cjs → cardano-network-id.vo-C5VuBXT3.cjs} +2 -2
  67. package/dist/{cardano-network-id.vo-CTYe-Oix.js → cardano-network-id.vo-CeLJqmb_.js} +2 -2
  68. package/dist/{cardano-tx-id.vo-BMwemq5x.js → cardano-tx-id.vo-DJ70NC0-.js} +1 -1
  69. package/dist/{cardano-tx-id.vo-NY-gCOWJ.cjs → cardano-tx-id.vo-lnyO9XaW.cjs} +1 -1
  70. package/dist/cardano.cjs +31 -24
  71. package/dist/cardano.d.ts +27602 -8121
  72. package/dist/cardano.js +21 -13
  73. package/dist/client-Bw2foG5E.cjs +808 -0
  74. package/dist/const-BB3MccLt.js +153 -0
  75. package/dist/{const-BErUlcZw.cjs → const-BWBAzOmN.cjs} +1 -1
  76. package/dist/const-CSWmOyzn.cjs +42 -0
  77. package/dist/{const-Dy8Ctnpd.cjs → const-D3mCkwrM.cjs} +5 -5
  78. package/dist/const-DW7z3R5k.js +13 -0
  79. package/dist/{const-DeUA7zYl.js → const-DbuUHSzR.js} +5 -5
  80. package/dist/const-DgBzKfz6.cjs +31995 -0
  81. package/dist/{const-DVW6DGkZ.js → const-xGSNCtwQ.js} +1 -1
  82. package/dist/contract-BsIGhsYa.js +171 -0
  83. package/dist/contract-DD6CGnpB.cjs +189 -0
  84. package/dist/create-add-accounts-2mQA0ST2.js +102 -0
  85. package/dist/create-add-accounts-B6mR2NMn.cjs +114 -0
  86. package/dist/{delegation-tx-builder-CF0VunDW.cjs → delegation-tx-builder-Cp30jtj9.cjs} +9 -8
  87. package/dist/{delegation-tx-builder-C8LQxU2R.js → delegation-tx-builder-DUMikSTg.js} +9 -7
  88. package/dist/{deregistration-tx-builder-DcUXA3Ls.cjs → deregistration-tx-builder-B-ZeY-dR.cjs} +10 -9
  89. package/dist/{deregistration-tx-builder-BOBPP8m_.js → deregistration-tx-builder-CRLrK99U.js} +10 -8
  90. package/dist/device-commitment-hex.vo-BIUYUNz1.cjs +31 -0
  91. package/dist/device-commitment-hex.vo-D9FsYLn7.js +26 -0
  92. package/dist/device-key-BToCoS4D.js +2394 -0
  93. package/dist/device-key-D6euvxFi.cjs +2489 -0
  94. package/dist/device-readers-BHJeNR8I.js +3 -0
  95. package/dist/device-readers-Dw7uTNM5.cjs +167 -0
  96. package/dist/device-readers-b4g2j3QL.js +144 -0
  97. package/dist/device-readers-cxcJcWq5.cjs +7 -0
  98. package/dist/dist-B00GN41m.js +141 -0
  99. package/dist/dist-BA1xnF9O.cjs +4413 -0
  100. package/dist/dist-BmHOXLe8.cjs +3814 -0
  101. package/dist/dist-Br0OVXKt.cjs +535 -0
  102. package/dist/dist-C1JK9C1I.cjs +3452 -0
  103. package/dist/dist-DKEViNEI.cjs +1306 -0
  104. package/dist/dist-Dwqx184a.cjs +43175 -0
  105. package/dist/dist-MJof_Ky1.cjs +145 -0
  106. package/dist/dist-p84sVVJ9.cjs +1394 -0
  107. package/dist/{earn-rewards-tx-builder-BRlTueHS.js → earn-rewards-tx-builder-8G_rouIk.js} +9 -7
  108. package/dist/{earn-rewards-tx-builder-RgO0QUY8.cjs → earn-rewards-tx-builder-cOUNV58E.cjs} +9 -8
  109. package/dist/enc-key-circuits-0Dud78IB.js +13 -0
  110. package/dist/enc-key-circuits-yjPHbuo_.cjs +24 -0
  111. package/dist/english-BZ_ebp2-.cjs +2057 -0
  112. package/dist/envelopes-B3QCzo5p.js +2658 -0
  113. package/dist/envelopes-BdE1xlgz.cjs +2777 -0
  114. package/dist/errors-BA3b8aVu.cjs +584 -0
  115. package/dist/errors-pkQdxW-7.js +392 -0
  116. package/dist/experimental.cjs +6820 -0
  117. package/dist/experimental.d.ts +63552 -0
  118. package/dist/experimental.js +6670 -0
  119. package/dist/fees-6C2uEWFK.js +653 -0
  120. package/dist/fees-DtC71fOx.cjs +820 -0
  121. package/dist/gated-call-BrPjKolT.js +3 -0
  122. package/dist/gated-call-CcsuW9L5.js +691 -0
  123. package/dist/gated-call-DdDrxEq5.cjs +732 -0
  124. package/dist/gated-call-Dk7PazhG.cjs +4 -0
  125. package/dist/grant-rules-B7eDuD5G.cjs +5468 -0
  126. package/dist/grant-rules-qLrKUIR3.js +5217 -0
  127. package/dist/grant-status-CDmZpx32.js +296 -0
  128. package/dist/grant-status-CQtwjLsA.cjs +337 -0
  129. package/dist/grants-Bnb-3Hkv.cjs +16 -0
  130. package/dist/grants-CIb6nOV7.cjs +273 -0
  131. package/dist/grants-CYY0AquW.js +202 -0
  132. package/dist/grants-DOsFSotP.js +4 -0
  133. package/dist/{group-cardano-addresses-by-account-C-1GHUu8.cjs → group-cardano-addresses-by-account-BGOtPV-Y.cjs} +4 -40
  134. package/dist/{group-cardano-addresses-by-account-p4dXmCoj.js → group-cardano-addresses-by-account-TqvESg9x.js} +6 -37
  135. package/dist/{guarded-transaction-signer-DZSGHp1K.js → guarded-transaction-signer-BbVDE9Nn.js} +12 -18
  136. package/dist/{guarded-transaction-signer-BLSezbfV.cjs → guarded-transaction-signer-DTLjAkif.cjs} +26 -26
  137. package/dist/hex-BVtOKJki.cjs +263 -0
  138. package/dist/hex-CGYJPK_Z.js +192 -0
  139. package/dist/http-client-B7_kBTYn.js +155 -0
  140. package/dist/http-client-DYQ_7Rdf.cjs +167 -0
  141. package/dist/identity-DxPhxkZs.js +239 -0
  142. package/dist/identity-y41Yle03.cjs +274 -0
  143. package/dist/in-memory-wallet-integration-5BKiAvPT.js +20861 -0
  144. package/dist/{in-memory-wallet-integration-CUTa68ET.js → in-memory-wallet-integration-BCOqDgbt.js} +10 -107
  145. package/dist/in-memory-wallet-integration-Bi8I9Dso.js +128 -0
  146. package/dist/in-memory-wallet-integration-Bsl2ONua.cjs +239 -0
  147. package/dist/in-memory-wallet-integration-DZ0CAyvY.cjs +20865 -0
  148. package/dist/{in-memory-wallet-integration-Dw_S7amX.cjs → in-memory-wallet-integration-DsFm8gLk.cjs} +21 -112
  149. package/dist/{in-memory-wallet-integration-Z4Bp_DTv.cjs → in-memory-wallet-integration-aW_SF-go.cjs} +8 -5
  150. package/dist/{in-memory-wallet-integration-B6cbAlvD.js → in-memory-wallet-integration-mIEc8EfR.js} +9 -5
  151. package/dist/index.cjs +95 -58
  152. package/dist/index.d.ts +45152 -13448
  153. package/dist/index.js +55 -28
  154. package/dist/{init-CVi8J0zk.cjs → init-5SfWgCYD.cjs} +3 -3
  155. package/dist/{init-Ci7aqWCf2.cjs → init-8NVWbo302.cjs} +2 -2
  156. package/dist/init-B-C7n6u6.js +5 -0
  157. package/dist/{init-BFMWRf-L.js → init-B-ppfGO-.js} +1 -1
  158. package/dist/{init-IiR093Jw.cjs → init-B2OUhY5T.cjs} +2 -2
  159. package/dist/{init-DXnus199.cjs → init-B6Eg_o6G.cjs} +5 -5
  160. package/dist/{init-4hDl5bpr.js → init-BAWMHL1k.js} +2 -2
  161. package/dist/init-BC2CZZOu2.cjs +2002 -0
  162. package/dist/{init-a228hXnS.cjs → init-BF-a2p6E.cjs} +65 -73
  163. package/dist/{init-fFirX8OY.cjs → init-BFxlQAD8.cjs} +1 -1
  164. package/dist/init-BJE1ry0O.js +17 -0
  165. package/dist/{init-BVnI4z2J.js → init-BPKBVOHU.js} +2 -2
  166. package/dist/{init-bdqZBd-o.js → init-BSP_xcpB.js} +2 -2
  167. package/dist/{init-CFNOn3lo.js → init-BSd7mznK.js} +3 -3
  168. package/dist/{init-MjR4swi6.js → init-BUJTT0MN.js} +36 -43
  169. package/dist/init-BUpFzYsD.cjs +143 -0
  170. package/dist/{init-BvpYHyLH.cjs → init-BZ-WyAIL.cjs} +3 -3
  171. package/dist/init-BZdfdLX7.js +422 -0
  172. package/dist/{init-CJeOys1w.cjs → init-B_HWNXMD.cjs} +2 -2
  173. package/dist/init-BbIMt6xU.cjs +6 -0
  174. package/dist/{init-BYdN1aqE.cjs → init-BewG6swt.cjs} +2 -2
  175. package/dist/{init-BX0AZAVH2.js → init-Bilqsbng.js} +2 -2
  176. package/dist/{init-Tpn9VkFu.cjs → init-BpwlQ6wF.cjs} +1 -1
  177. package/dist/{init-D5-P0HXK.js → init-BtQOzUjX.js} +1 -1
  178. package/dist/{init-BvGz3qUd2.js → init-CCTscPaY2.js} +2 -2
  179. package/dist/{init-D4hPipCD.cjs → init-CH0yyBof.cjs} +1 -1
  180. package/dist/init-CaIkrXal.cjs +121 -0
  181. package/dist/init-CkZy4IMf.cjs +107 -0
  182. package/dist/{init-Drr2f_Pr.js → init-CmfcY7SV.js} +1 -1
  183. package/dist/{init-Kf3_OLv6.js → init-CnJAlks_.js} +1 -1
  184. package/dist/{init-Cdjt_z-b.cjs → init-CqqmtAIK.cjs} +4 -4
  185. package/dist/{init-Bb0avZeZ.js → init-Cu2znmIc.js} +5 -5
  186. package/dist/init-Cz5LAizN.js +2001 -0
  187. package/dist/init-D4WM3-Mn.cjs +18 -0
  188. package/dist/init-DMi2FGpf.cjs +424 -0
  189. package/dist/{init-lcaUSOOG.js → init-DPTJohPd.js} +1 -1
  190. package/dist/{init-BTYLMF9F2.cjs → init-DexLSprL2.cjs} +258 -61
  191. package/dist/init-DfKPgD21.js +106 -0
  192. package/dist/init-DgzRsI-C.js +141 -0
  193. package/dist/init-Dj4Cn7-P.js +4789 -0
  194. package/dist/init-DktAnYI0.cjs +2354 -0
  195. package/dist/{init-DFwhgert.cjs → init-DmyuM9Lo.cjs} +1 -1
  196. package/dist/{init-CX_zLXc6.js → init-IBnizp1U.js} +5 -5
  197. package/dist/init-MDKB6tGI2.cjs +4790 -0
  198. package/dist/{init-DbZ5byj42.js → init-TbB38KNt2.js} +258 -60
  199. package/dist/init-X6m_cqDy.js +2353 -0
  200. package/dist/{init-DvVgKCaP2.cjs → init-bzvl1JhF.cjs} +2 -2
  201. package/dist/{init-BgrY29gW.js → init-dsYkC_0B.js} +4 -4
  202. package/dist/{init-B5BsI3DR.cjs → init-kvn5FlPS.cjs} +7 -7
  203. package/dist/init-vfy9DW_E.js +119 -0
  204. package/dist/{init-BE_6Jyc4.js → init-w7xl6LsP.js} +3 -3
  205. package/dist/{init-DEsWVyn5.cjs → init-wgiBUmyW.cjs} +1 -1
  206. package/dist/{is-retriable-error-DWv_ob-f.js → is-retriable-error-CmFR20pe.js} +1 -1
  207. package/dist/{is-retriable-error-Dtb4JGjd.cjs → is-retriable-error-D2yo0_lS.cjs} +1 -1
  208. package/dist/jubjub-authoriser-A2c8vmkN.js +84 -0
  209. package/dist/jubjub-authoriser-D3ZDgzcF.cjs +85 -0
  210. package/dist/key-source-CcLTx8HK.js +2761 -0
  211. package/dist/key-source-D2tTAag-.cjs +806 -0
  212. package/dist/{key-value-store-DTX1quRS.js → key-value-store-DZcNDB3n.js} +1 -1
  213. package/dist/{key-value-store-B-XRIwaM.cjs → key-value-store-Htj4RgMe.cjs} +1 -1
  214. package/dist/keyDerivation-DcKRUCVh.cjs +274 -0
  215. package/dist/keyDerivation-QGesIMbS.js +4077 -0
  216. package/dist/{lace-context-FpU3iG3f.cjs → lace-context-BN0b_ury.cjs} +4 -4
  217. package/dist/{lace-context-BQvvxVLm.js → lace-context-DMRJ87Vg.js} +4 -4
  218. package/dist/lib-BC-62Byh.cjs +2359 -0
  219. package/dist/lib-JYqcAX0c.js +2354 -0
  220. package/dist/midnight-account-id.vo--Vcx34Xk.cjs +10 -0
  221. package/dist/midnight-account-id.vo-BuB8fiVO.js +5 -0
  222. package/dist/midnight-engine-B7D2hbHo.js +5 -0
  223. package/dist/midnight-engine-D5ikN_5F.cjs +6 -0
  224. package/dist/midnight-wallet-BOdFD6SX.cjs +24 -0
  225. package/dist/midnight-wallet-CAqZrNVe.js +18 -0
  226. package/dist/midnight.cjs +1412 -0
  227. package/dist/midnight.d.ts +28609 -0
  228. package/dist/midnight.js +1355 -0
  229. package/dist/modules-cardano-BiL9hoM3.js +996 -0
  230. package/dist/modules-cardano-UeXks3sd.cjs +1109 -0
  231. package/dist/node-relay-BOuvdZvC.cjs +49 -0
  232. package/dist/node-relay-CLtc5n1v.js +48 -0
  233. package/dist/outputs-5qdW8s-f.js +196 -0
  234. package/dist/outputs-BEM1GPMf.cjs +339 -0
  235. package/dist/{SodiumBip32Ed25519-BQUcrQWX.cjs → pbkdf2-B1veireP.cjs} +6 -411
  236. package/dist/pending-operation-CfTUNQVD.cjs +26 -0
  237. package/dist/pending-operation-Ljijb1Uh.js +21 -0
  238. package/dist/providers-1on_fwJO.cjs +364 -0
  239. package/dist/providers-C1MsxfMA.js +341 -0
  240. package/dist/redacted-4SJPqt-G.js +81 -0
  241. package/dist/redacted-DwxIDdIF.cjs +86 -0
  242. package/dist/{reselect-DPML1uFN.cjs → reselect-kP4DaAII.cjs} +1 -1
  243. package/dist/{retry-config-oNtfdyrG.cjs → retry-config-BGv5q5QM.cjs} +1 -1
  244. package/dist/{retry-config-VdbuqBsI.js → retry-config-Bu5Yn5ua.js} +1 -1
  245. package/dist/safe-buffer-CqGpSFCQ.js +43 -0
  246. package/dist/safe-buffer-DbXbwhUQ.cjs +48 -0
  247. package/dist/sdk-1SRu8Ype.cjs +1445 -0
  248. package/dist/sdk-BneJm7ey.js +1249 -0
  249. package/dist/sdk-init-9TG1ZvHF.cjs +3795 -0
  250. package/dist/sdk-init-Ce3mD-8F.js +1047 -0
  251. package/dist/secret-box-CSmRp6Tt.js +3777 -0
  252. package/dist/secret-box-ZfbYwBgS.cjs +6970 -0
  253. package/dist/send-proof-progress-DtAcrMP6.cjs +33 -0
  254. package/dist/send-proof-progress-Dx2cUz1B.js +22 -0
  255. package/dist/sha2-DaRJZOjk.cjs +390 -0
  256. package/dist/sha2-c4sB6peD.js +378 -0
  257. package/dist/side-effects-C3BhLrdP.js +768 -0
  258. package/dist/side-effects-DG0R-KFc.cjs +804 -0
  259. package/dist/sign-bitcoin-transaction-with-seed-C7vq9om8.js +147 -0
  260. package/dist/sign-bitcoin-transaction-with-seed-Ds1dwzan.cjs +158 -0
  261. package/dist/signer--2I6poMD.js +2 -0
  262. package/dist/signer-CX21Ups_.cjs +121 -0
  263. package/dist/signer-Cnn9q9oY.js +92 -0
  264. package/dist/signer-DbSxjk0F.cjs +7 -0
  265. package/dist/signer-factory-B5oFuUZ-.cjs +130 -0
  266. package/dist/signer-factory-BAt8FPNc.cjs +281 -0
  267. package/dist/signer-factory-BGE4nL4k.js +129 -0
  268. package/dist/signer-factory-C4pgsiJi.js +281 -0
  269. package/dist/{signer-factory-DySc1wRX.cjs → signer-factory-D95jQIPV.cjs} +9 -6
  270. package/dist/{signer-factory-D4HrwFPl.js → signer-factory-PrpsGX-8.js} +10 -6
  271. package/dist/{slice-BZTQgYSs.js → slice-B-xJcuT1.js} +4 -4
  272. package/dist/slice-B4QOYaOG.cjs +105 -0
  273. package/dist/{slice-CtIMw2YT.cjs → slice-B9QKuhi0.cjs} +3 -3
  274. package/dist/slice-BKnGkAkd.cjs +9031 -0
  275. package/dist/{slice-Bhwmqn1p.cjs → slice-Bf4enJKZ.cjs} +8 -8
  276. package/dist/{slice-DaNVz7_l.js → slice-ByNWnxKS.js} +8 -8
  277. package/dist/{slice-C2UDQrdt.js → slice-C1zOeseG.js} +449 -355
  278. package/dist/{slice-DFLyKRm5.cjs → slice-C4toRM6A.cjs} +2 -2
  279. package/dist/{slice-Cx4dULDA.cjs → slice-C8YVv4Qn.cjs} +1 -1
  280. package/dist/{slice-jnpOgiSZ.cjs → slice-CaMfviYu.cjs} +3 -3
  281. package/dist/{slice-DFvrwUur.js → slice-CgeRsYRg.js} +6 -6
  282. package/dist/slice-Cwt8jShq.js +9013 -0
  283. package/dist/{slice-zNEspZND.js → slice-D0VzpMbY.js} +2 -2
  284. package/dist/slice-D14F78Ca.js +87 -0
  285. package/dist/{slice-F6A1YKOF.cjs → slice-DLflttAu.cjs} +479 -366
  286. package/dist/{slice-C96EdeY1.js → slice-DcO-iNz2.js} +1 -1
  287. package/dist/{slice-C19quNWM.cjs → slice-DimtxfAT.cjs} +2 -2
  288. package/dist/{slice-KiNoGwD9.js → slice-DlTEqIoI.js} +1 -1
  289. package/dist/{slice-ws8PccRX.js → slice-Dn0WojD7.js} +3 -3
  290. package/dist/{slice-BLSxLmie.cjs → slice-Dongunf7.cjs} +4 -4
  291. package/dist/{slice-B6vPum19.js → slice-DpufJAjJ.js} +2 -2
  292. package/dist/{slice-exhhmucR.cjs → slice-DtitVc9L.cjs} +7 -7
  293. package/dist/{slice-Bjj2t2ut.cjs → slice-WMMMc1Xv.cjs} +2 -2
  294. package/dist/slice-a8VuIqzS.cjs +378 -0
  295. package/dist/slice-bRASyM-m.js +354 -0
  296. package/dist/{slice-CBFrgHSH.js → slice-hNyKbDry.js} +3 -3
  297. package/dist/{InMemoryKeyAgent-pyB2gA-N.cjs → src-BayYMIjw.cjs} +20 -8228
  298. package/dist/{InMemoryKeyAgent-D-3HejxN.js → src-CgINPlSx.js} +29 -4811
  299. package/dist/store-AUlTfcI_.js +37 -0
  300. package/dist/store-C7AneHEY.cjs +66 -0
  301. package/dist/submit-BuBCVi-l.cjs +87 -0
  302. package/dist/submit-D37lxFrK.js +70 -0
  303. package/dist/submit-bitcoin-tx-DFLnhidO.js +983 -0
  304. package/dist/submit-bitcoin-tx-sih2hSfb.cjs +1049 -0
  305. package/dist/{subtractValueQuantities-DfZg6oiG.js → subtractValueQuantities-BuDJVxq6.js} +3 -22
  306. package/dist/{subtractValueQuantities-C8qDTtgH.cjs → subtractValueQuantities-CqR606HV.cjs} +2 -32
  307. package/dist/{sync-operation-utils-BrQyWFS_.cjs → sync-operation-utils--Z_IQfyW.cjs} +0 -66
  308. package/dist/{sync-operation-utils-CAaCGvEN.js → sync-operation-utils-BimBpvI3.js} +1 -37
  309. package/dist/token-color.vo-CItgoOjw.js +26 -0
  310. package/dist/token-color.vo-Ca4hUXfh.cjs +37 -0
  311. package/dist/token-id-mapper-BVau2RXa.js +16 -0
  312. package/dist/token-id-mapper-CSeLzM4o.cjs +18 -0
  313. package/dist/{token-id-mapper-pDaTxpw2.js → token-id-mapper-ClBeIdJR.js} +2 -2
  314. package/dist/{token-id-mapper-DYcd8hhQ.cjs → token-id-mapper-D0wFdbOy.cjs} +2 -2
  315. package/dist/types-BhzypKMS.cjs +15 -0
  316. package/dist/types-DTE1ctDB.js +10 -0
  317. package/dist/types-DXSxXGz0.js +12 -0
  318. package/dist/types-Dls6Z5gV.cjs +23 -0
  319. package/dist/{util-P4PX2muj.cjs → util-D1YlKzrc.cjs} +2 -2
  320. package/dist/{util-CQSJU0wT.js → util-DHxtzUzY.js} +2 -2
  321. package/dist/{utils-Bv4OHT4S.cjs → utils-DYf4iZKX.cjs} +7 -1
  322. package/dist/{utils-DrtzChYN.js → utils-DcnoETEP.js} +2 -2
  323. package/dist/utils-Du0YXRcU.cjs +112 -0
  324. package/dist/utils-fF_rnZe3.js +65 -0
  325. package/dist/v8Signatures-ClGpA8mS.cjs +71 -0
  326. package/dist/{vote-delegation-tx-builder-69gOEkCB.cjs → vote-delegation-tx-builder-BjZxCOd3.cjs} +9 -8
  327. package/dist/{vote-delegation-tx-builder-BRJ_pf-c.js → vote-delegation-tx-builder-DRJwPXkD.js} +9 -7
  328. package/dist/watch-FGE4B_Ge.js +13056 -0
  329. package/dist/watch-imlsRZDp.cjs +52207 -0
  330. package/package.json +95 -3
  331. package/dist/Address-4KjeDt_x.cjs +0 -17269
  332. package/dist/Address-_VPkf7Xh.js +0 -17101
  333. package/dist/account-guards.stable-BKyYPj4z.cjs +0 -10
  334. package/dist/account-guards.stable-BdmQ43vC.js +0 -5
  335. package/dist/init-BR9ZIbED.cjs +0 -378
  336. package/dist/init-B_k1RUN_.cjs +0 -21
  337. package/dist/init-Bs3b5ZQH.js +0 -378
  338. package/dist/init-ChfcrHgG2.cjs +0 -4354
  339. package/dist/init-D1uUMMpG.js +0 -19
  340. package/dist/init-DV1OSZiK.js +0 -4352
  341. package/dist/modules-cardano-BINzpXpk.js +0 -5454
  342. package/dist/modules-cardano-Dt8OwoQb.cjs +0 -5640
  343. package/dist/slice-Caf98m0d2.js +0 -107
  344. package/dist/slice-PM6llajQ2.cjs +0 -125
  345. /package/dist/{BigIntMath-CoJWXt1h.cjs → BigIntMath-CBciEQn2.cjs} +0 -0
  346. /package/dist/{BigIntMath-BWUJOsOW.js → BigIntMath-X3EniYDo.js} +0 -0
  347. /package/dist/{ChainId-sdLmlIRk.cjs → ChainId-CNPSU9nn.cjs} +0 -0
  348. /package/dist/{ChainId-CKbm87yQ.js → ChainId-CeoG8Sov.js} +0 -0
  349. /package/dist/{_polyfill-node.process-4fnlkbBi.cjs → _polyfill-node.process-5UxyjoHG.cjs} +0 -0
  350. /package/dist/{account-id.vo-Xpgnu-av.cjs → account-id.vo-DYZBZQsz.cjs} +0 -0
  351. /package/dist/{account-id.vo-DP0BtOoF.js → account-id.vo-KDTWJ-W5.js} +0 -0
  352. /package/dist/{actions-BNagEO6m.cjs → actions-BnHFVSr_.cjs} +0 -0
  353. /package/dist/{actions-BWTyAr7B.js → actions-Cwj0ApZf.js} +0 -0
  354. /package/dist/{asyncoption-po7-RiA5.cjs → asyncoption-CYcZNBRM.cjs} +0 -0
  355. /package/dist/{asyncoption-CzIVH5Y1.js → asyncoption-DZQGfznq.js} +0 -0
  356. /package/dist/{bignum.vo-DhhZ9HP1.js → bignum.vo-Co6tMH2q.js} +0 -0
  357. /package/dist/{bignum.vo-CpkrIXjH.cjs → bignum.vo-Du-bpvar.cjs} +0 -0
  358. /package/dist/{blockchain-network-id.vo-CbgrAY_K.js → blockchain-network-id.vo-C6Jowh8t.js} +0 -0
  359. /package/dist/{blockchain-network-id.vo-5iC6Kffo.cjs → blockchain-network-id.vo-DEQ14dYj.cjs} +0 -0
  360. /package/dist/{composite-signer-factory-DABpCe1_.js → composite-signer-factory-D9RWY-1V.js} +0 -0
  361. /package/dist/{composite-signer-factory-BizuNPP7.cjs → composite-signer-factory-v4Pxn8bA.cjs} +0 -0
  362. /package/dist/{error-ggOihIfv.cjs → error-B6wj9nPv.cjs} +0 -0
  363. /package/dist/{error-DHKO2iS4.js → error-CvEYL98P.js} +0 -0
  364. /package/dist/{esm-browser-DnXNvpcn.cjs → esm-browser-CZbMeVod.cjs} +0 -0
  365. /package/dist/{esm-browser-BBVQuyQv.js → esm-browser-DpAD_RKv.js} +0 -0
  366. /package/dist/{feature-flag-key.vo-DoGK5Bfh.js → feature-flag-key.vo-9reURsOQ.js} +0 -0
  367. /package/dist/{feature-flag-key.vo-CP1Z9s8e.cjs → feature-flag-key.vo-KTIdnzYX.cjs} +0 -0
  368. /package/dist/{first-state-of-status-Bx4-QQ5m.cjs → first-state-of-status-9ICeDNSa.cjs} +0 -0
  369. /package/dist/{first-state-of-status-D7XzEuSa.js → first-state-of-status-BscbKj_t.js} +0 -0
  370. /package/dist/{init-4319psUJ.cjs → init-BT67pd9x.cjs} +0 -0
  371. /package/dist/{init-AFUM1TSg.js → init-CHk1fvJ2.js} +0 -0
  372. /package/dist/{init-ZX90nEJe2.js → init-DIyNx6DZ.js} +0 -0
  373. /package/dist/{init-CTQ2g6Xt.js → init-DtxxFaCx.js} +0 -0
  374. /package/dist/{init-Dt1Xifg_2.cjs → init-J8QobR93.cjs} +0 -0
  375. /package/dist/{init-BNewLCqw.cjs → init-xzZPlQwB.cjs} +0 -0
  376. /package/dist/{is-redux-persist-state-DxJSsvxB.cjs → is-redux-persist-state-C5luvPEH.cjs} +0 -0
  377. /package/dist/{is-redux-persist-state-Bl2n4VMr.js → is-redux-persist-state-CjcqyCoh.js} +0 -0
  378. /package/dist/{isNotNil-CZxBMfL5.js → isNotNil-Be7gCY0m.js} +0 -0
  379. /package/dist/{isNotNil-C_SO1tcC.cjs → isNotNil-CrYIUFry.cjs} +0 -0
  380. /package/dist/{logging-BvMDKgl0.js → logging-BAMMfn5j.js} +0 -0
  381. /package/dist/{logging-Bh9ikph3.cjs → logging-CbxgIX9V.cjs} +0 -0
  382. /package/dist/{metadatum-B-sxBnSY.cjs → metadatum-BGvFqGPt.cjs} +0 -0
  383. /package/dist/{metadatum-Ego4jVas.js → metadatum-BVocMYy_.js} +0 -0
  384. /package/dist/{repo-slice-BzZQUTj8.cjs → repo-slice-BB_W-6OL.cjs} +0 -0
  385. /package/dist/{repo-slice-vCcQJotS.js → repo-slice-BQlssw9M.js} +0 -0
  386. /package/dist/{reselect-BPkMzw3k.js → reselect-JIgawvPe.js} +0 -0
  387. /package/dist/{serializable-BxFUShKY.js → serializable-F7OtYl8d.js} +0 -0
  388. /package/dist/{serializable-DWgkHhv_.cjs → serializable-n3UoxbZc.cjs} +0 -0
  389. /package/dist/{slice-DY-DNtSi.js → slice-5dGBAz6w.js} +0 -0
  390. /package/dist/{slice-BEFoeqgr.cjs → slice-BzJgg9FS.cjs} +0 -0
  391. /package/dist/{src-CPmX4KUh.cjs → src-CeBNkonz.cjs} +0 -0
  392. /package/dist/{src-XOZXPKxe.js → src-Cv1ifqbe.js} +0 -0
  393. /package/dist/{time-CQPt4FdU.js → time-ByoKevdZ.js} +0 -0
  394. /package/dist/{time-Blvoyh9G.cjs → time-qD7edGU0.cjs} +0 -0
  395. /package/dist/{time.vo-Xln4yGBU.js → time.vo-C17-tYq3.js} +0 -0
  396. /package/dist/{time.vo-rwWwJzmP.cjs → time.vo-TmYE-_Y2.cjs} +0 -0
  397. /package/dist/{toEmpty-CzmoZVLN.cjs → toEmpty-Db6V94Mf.cjs} +0 -0
  398. /package/dist/{toEmpty-DzLd-ZCi.js → toEmpty-Djj-QbpI.js} +0 -0
  399. /package/dist/{token-id.vo-l8fuSpem.cjs → token-id.vo-CZ622zcZ.cjs} +0 -0
  400. /package/dist/{token-id.vo-DMKSaMlc.js → token-id.vo-IDI9C_Qm.js} +0 -0
  401. /package/dist/{types-B61DQoFW.js → types-By-XeXWg.js} +0 -0
  402. /package/dist/{types-CUC-Kcqh.cjs → types-Cn6WlQV6.cjs} +0 -0
  403. /package/dist/{util-BV3iGOrz.cjs → util-Cp1h58uD.cjs} +0 -0
  404. /package/dist/{util-BsQKLorV.js → util-DHppXj7U.js} +0 -0
  405. /package/dist/{util-selector-CKIyoAOz.js → util-selector-BWmHpo92.js} +0 -0
  406. /package/dist/{util-selector-C9H5RsNw.cjs → util-selector-glXkO-jR.cjs} +0 -0
  407. /package/dist/{while-active-CNXeLxre.js → while-active-CDBnUlQA.js} +0 -0
  408. /package/dist/{while-active-BsDWSNrO.cjs → while-active-I2TlHtm7.cjs} +0 -0
@@ -0,0 +1,296 @@
1
+ import { Bt as AssetName, Vt as PolicyId, Zt as Hash28ByteBase16, c as EnterpriseAddress, nt as PlutusData, r as CredentialType, zt as AssetId } from "./Address-_c_-9hLC.js";
2
+ import { b as custodyRecipientToAddress, c as isCustodyLovelaceAsset, d as parseCustodyAccountTokenName, f as decodeCustodyAccountState, h as decodeCustodyStateLogic, o as isCustodyGrantCurrent, p as decodeCustodyGrant, s as isCustodyGrantExpired, t as minAdaRequired } from "./fees-6C2uEWFK.js";
3
+ import { l as findCustodyContractVersion, u as findCustodyLogic } from "./hex-CGYJPK_Z.js";
4
+ //#region ../../packages/lib/cardano-custody/src/codecs/reserve.ts
5
+ /** The datum the upstream library writes on a reserve: constructor 0 with no fields. */
6
+ const RESERVE_DATUM_CBOR = "d87980";
7
+ /**
8
+ * Whether an inline datum is, byte for byte, the reserve datum `d87980`.
9
+ * Any datum makes a deposit an owner-only reserve; only this one has a known
10
+ * size, so a builder can spend such a reserve without a surprise in fee or
11
+ * minimum lovelace.
12
+ */
13
+ const isCustodyReserveDatum = (datum) => PlutusData.fromCore(datum).toCbor() === RESERVE_DATUM_CBOR;
14
+ //#endregion
15
+ //#region ../../packages/lib/cardano-custody/src/classify.ts
16
+ /** The tokens of a value under a policy. */
17
+ const tokensUnder = (value, policyId) => [...value.assets?.entries() ?? []].filter(([assetId, quantity]) => quantity !== 0n && AssetId.getPolicyId(assetId) === policyId).map(([assetId]) => assetId);
18
+ /** Reads a UTxO that holds exactly one grant token of the account, in quantity one. */
19
+ const classifyGrant = (utxo, token, slot) => {
20
+ const [, output] = utxo;
21
+ if (output.value.assets?.size !== 1) return { anomaly: {
22
+ code: "grant-value-not-strict",
23
+ utxo,
24
+ slot
25
+ } };
26
+ if (output.datum === void 0) return { anomaly: {
27
+ code: "grant-datum-not-inline",
28
+ utxo,
29
+ slot
30
+ } };
31
+ const decoded = decodeCustodyGrant(output.datum);
32
+ if (!decoded.ok) return { anomaly: {
33
+ code: "grant-datum-malformed",
34
+ utxo,
35
+ slot,
36
+ error: decoded.error
37
+ } };
38
+ if (decoded.value.slot !== slot) return { anomaly: {
39
+ code: "grant-slot-mismatch",
40
+ utxo,
41
+ slot,
42
+ datumSlot: decoded.value.slot
43
+ } };
44
+ return { grant: {
45
+ utxo,
46
+ grant: decoded.value,
47
+ token
48
+ } };
49
+ };
50
+ /** The grant token and its slot, when the tokens are exactly one own grant token held once. */
51
+ const ownGrantToken = (account, value, tokens) => {
52
+ const [token] = tokens;
53
+ if (tokens.length !== 1 || value.assets?.get(token) !== 1n) return void 0;
54
+ const name = parseCustodyAccountTokenName(AssetId.getAssetName(token));
55
+ return name?.kind === "grant" && name.stakeScriptHash === account.stakeScriptHash ? {
56
+ token,
57
+ slot: name.slot
58
+ } : void 0;
59
+ };
60
+ /**
61
+ * Sorts an account's UTxOs by kind. UTxOs not at the exact account address
62
+ * are ignored. It never throws: a UTxO that holds an account token in a
63
+ * shape the contract rules out is listed in `anomalies`.
64
+ */
65
+ const classifyCustodyAccountUtxos = (account, utxos) => {
66
+ const policyId = PolicyId(account.accountValidatorHash);
67
+ const stateNft = AssetId.fromParts(policyId, AssetName(account.stakeScriptHash));
68
+ const controls = [];
69
+ const grants = [];
70
+ const own = [];
71
+ const foreign = [];
72
+ const funds = [];
73
+ const stranded = [];
74
+ const anomalies = [];
75
+ for (const utxo of utxos) {
76
+ const [, output] = utxo;
77
+ if (output.address !== account.address) continue;
78
+ const tokens = tokensUnder(output.value, policyId);
79
+ if (tokens.includes(stateNft)) controls.push(utxo);
80
+ else if (tokens.length > 0) {
81
+ const grantToken = ownGrantToken(account, output.value, tokens);
82
+ if (!grantToken) {
83
+ anomalies.push({
84
+ code: "unexpected-account-tokens",
85
+ utxo,
86
+ assetIds: tokens
87
+ });
88
+ continue;
89
+ }
90
+ const classified = classifyGrant(utxo, grantToken.token, grantToken.slot);
91
+ if ("grant" in classified) grants.push(classified.grant);
92
+ else anomalies.push(classified.anomaly);
93
+ } else if (output.datum !== void 0) (output.scriptReference === void 0 && isCustodyReserveDatum(output.datum) ? own : foreign).push(utxo);
94
+ else if (output.datumHash === void 0) funds.push(utxo);
95
+ else stranded.push(utxo);
96
+ }
97
+ grants.sort((a, b) => a.grant.slot < b.grant.slot ? -1 : a.grant.slot > b.grant.slot ? 1 : 0);
98
+ return {
99
+ controls,
100
+ grants,
101
+ reserves: {
102
+ own,
103
+ foreign
104
+ },
105
+ funds,
106
+ stranded,
107
+ anomalies
108
+ };
109
+ };
110
+ /**
111
+ * The liveness of a grant against a control state at `now`. A grant dead for
112
+ * several reasons takes the first of superseded, revoked and expired, so
113
+ * `expired` alone means a sweep needs a validity interval that starts after
114
+ * the expiry.
115
+ *
116
+ * @param now - POSIX milliseconds; a non-finite value counts as past every expiry
117
+ */
118
+ const custodyGrantLiveness = (grant, state, now) => {
119
+ if (grant.generation < state.grantGeneration) return "superseded";
120
+ if (grant.generation > state.grantGeneration) return "future-generation";
121
+ if (!isCustodyGrantCurrent(grant, state)) return "revoked";
122
+ return isCustodyGrantExpired(grant, now) ? "expired" : "current";
123
+ };
124
+ //#endregion
125
+ //#region ../../packages/contract/cardano-context/src/custody/account-state.ts
126
+ /** Whether the account's contract version lists the logic in its catalogue. */
127
+ const isKnownLogic = (accountValidatorHash, logic) => {
128
+ const version = findCustodyContractVersion(accountValidatorHash);
129
+ return version.ok && findCustodyLogic(version.value, logic).ok;
130
+ };
131
+ /**
132
+ * Classifies a custody account's UTxOs by the rules of the custody contract
133
+ * and reads the control state.
134
+ */
135
+ const classifyCardanoCustodyAccount = ({ account, utxos, withdrawableRewards, protocolParameters }) => {
136
+ const { controls, grants, reserves, funds, stranded, anomalies } = classifyCustodyAccountUtxos(account, utxos);
137
+ const holdings = {
138
+ funds,
139
+ reserves,
140
+ grants,
141
+ grantLockedLovelace: grants.reduce((total, { utxo: [, output] }) => total + output.value.coins, 0n),
142
+ stranded,
143
+ anomalies,
144
+ withdrawableRewards
145
+ };
146
+ if (controls.length === 0) return {
147
+ ...holdings,
148
+ status: "notCreated"
149
+ };
150
+ const invalid = (reason) => ({
151
+ ...holdings,
152
+ status: "invalid",
153
+ reason,
154
+ controlUtxos: controls
155
+ });
156
+ if (controls.length > 1) return invalid({ code: "multiple-control-utxos" });
157
+ const [controlUtxo] = controls;
158
+ const [, controlOutput] = controlUtxo;
159
+ if (controlOutput.datum === void 0) return invalid({ code: "missing-inline-datum" });
160
+ const logic = decodeCustodyStateLogic(controlOutput.datum);
161
+ if (!logic.ok) return invalid({
162
+ code: "undecodable-state",
163
+ error: logic.error
164
+ });
165
+ if (!isKnownLogic(account.accountValidatorHash, logic.value)) return invalid({
166
+ code: "unknown-logic",
167
+ logic: logic.value
168
+ });
169
+ const decoded = decodeCustodyAccountState(controlOutput.datum);
170
+ if (!decoded.ok) return invalid({
171
+ code: "undecodable-state",
172
+ error: decoded.error
173
+ });
174
+ const controlMinimumLovelace = minAdaRequired(controlOutput, BigInt(protocolParameters.coinsPerUtxoByte));
175
+ const controlLovelace = controlOutput.value.coins;
176
+ const deviceKeyHash = account.device?.keyHash;
177
+ return {
178
+ ...holdings,
179
+ status: "live",
180
+ controlUtxo,
181
+ state: decoded.value,
182
+ controlMinimumLovelace,
183
+ controlHeadroomLovelace: controlLovelace > controlMinimumLovelace ? controlLovelace - controlMinimumLovelace : 0n,
184
+ ...deviceKeyHash !== void 0 && { currentDeviceListed: decoded.value.devices.some((device) => device.toLowerCase() === deviceKeyHash.toLowerCase()) }
185
+ };
186
+ };
187
+ //#endregion
188
+ //#region ../../packages/contract/cardano-context/src/custody/build-transaction.ts
189
+ /**
190
+ * The most lovelace a grant spend's fee may take when the operation names
191
+ * no `feeBound`: 1,500,000 lovelace. The spend lowers the grant's remaining caps by its outputs
192
+ * and fee before the fee is final, so the bound is what the caps must leave
193
+ * room for.
194
+ */
195
+ const CARDANO_CUSTODY_DEFAULT_GRANT_FEE_BOUND = 1500000n;
196
+ //#endregion
197
+ //#region ../../packages/contract/cardano-context/src/custody/grant-status.ts
198
+ /**
199
+ * Any key hash: an unrestricted grant pays out to any address, and an
200
+ * enterprise key address makes the smallest output.
201
+ */
202
+ const ANY_KEY_HASH = Hash28ByteBase16("00".repeat(28));
203
+ /** The addresses a grant may pay out to, or one standing for any address. */
204
+ const payoutAddressesOf = ({ recipients }, networkId) => {
205
+ if (recipients.length === 0) return [EnterpriseAddress.fromCredentials(networkId, {
206
+ type: CredentialType.KeyHash,
207
+ hash: ANY_KEY_HASH
208
+ }).toAddress().toBech32()];
209
+ return recipients.flatMap((recipient) => {
210
+ const address = custodyRecipientToAddress(recipient, networkId);
211
+ return address.ok ? [address.value.toBech32()] : [];
212
+ });
213
+ };
214
+ /** The scope's token, or undefined when its policy id or name is malformed. */
215
+ const tokenOf = ({ asset }) => {
216
+ try {
217
+ return AssetId.fromParts(PolicyId(asset.policyId), AssetName(asset.assetName));
218
+ } catch {
219
+ return;
220
+ }
221
+ };
222
+ const smallerOf = (a, b) => a < b ? a : b;
223
+ /**
224
+ * Whether a grant scope can no longer pay the smallest spend. That spend
225
+ * is one output to the cheapest address the grant allows, holding the
226
+ * ledger minimum lovelace, plus the fee bound. A lovelace grant draws both
227
+ * from its lovelace caps (`cap`, `perCallCap`). A token grant draws one
228
+ * token from its token caps and the lovelace from `lovelaceCap` and
229
+ * `lovelacePerCallCap`. A grant with no address it can pay is exhausted.
230
+ */
231
+ const isCardanoCustodyGrantExhausted = (scope, { protocolParameters, networkId, feeBound = CARDANO_CUSTODY_DEFAULT_GRANT_FEE_BOUND }) => {
232
+ const isLovelace = isCustodyLovelaceAsset(scope.asset);
233
+ const token = isLovelace ? void 0 : tokenOf(scope);
234
+ if (!isLovelace && !token) return true;
235
+ const addresses = payoutAddressesOf(scope, networkId);
236
+ if (addresses.length === 0) return true;
237
+ const coinsPerUtxoByte = BigInt(protocolParameters.coinsPerUtxoByte);
238
+ const smallestLovelaceSpend = addresses.map((address) => minAdaRequired({
239
+ address,
240
+ value: {
241
+ coins: 0n,
242
+ ...token && { assets: new Map([[token, 1n]]) }
243
+ }
244
+ }, coinsPerUtxoByte)).reduce(smallerOf) + feeBound;
245
+ if (isLovelace) return smallerOf(scope.cap, scope.perCallCap) < smallestLovelaceSpend;
246
+ return smallerOf(scope.cap, scope.perCallCap) < 1n || smallerOf(scope.lovelaceCap, scope.lovelacePerCallCap) < smallestLovelaceSpend;
247
+ };
248
+ const bySlot = ({ grant: a }, { grant: b }) => a.slot < b.slot ? -1 : a.slot > b.slot ? 1 : 0;
249
+ /**
250
+ * The status of a grant the confirmed view holds and the in-flight view
251
+ * keeps. `grant` is its in-flight version: an unsettled grant spend lowers
252
+ * its caps and changes nothing else.
253
+ */
254
+ const confirmedGrantStatus = (grant, { confirmed, inFlight, now, ...pricing }) => {
255
+ const liveness = custodyGrantLiveness(grant, confirmed, now);
256
+ if (liveness === "revoked" || liveness === "superseded") return liveness;
257
+ if (liveness === "future-generation") return "pending";
258
+ const next = custodyGrantLiveness(grant, inFlight, now);
259
+ if (next === "revoked" || next === "superseded") return "revoking";
260
+ if (liveness === "expired") return "expired";
261
+ return isCardanoCustodyGrantExhausted(grant.scope, pricing) ? "exhausted" : "live";
262
+ };
263
+ /**
264
+ * The status of every grant UTxO of a custody account, in slot order.
265
+ * `inFlight` is the account after the submitted operations that have not
266
+ * settled; `confirmed` is the account on chain, absent while it has no
267
+ * confirmed control state. A grant is known by its slot, which no grant
268
+ * ever reuses. `now` is POSIX milliseconds: the time of the chain tip.
269
+ *
270
+ * A grant only the in-flight view holds is `pending`, and one only the
271
+ * confirmed view holds is `sweeping`. A grant both hold is judged against
272
+ * the confirmed state, and is `revoking` when the in-flight state kills it.
273
+ * Its listed version is the in-flight one, so an unsettled grant spend
274
+ * shows its lowered caps at once.
275
+ */
276
+ const classifyCardanoCustodyGrants = ({ confirmed, inFlight, now, protocolParameters, networkId }) => {
277
+ const confirmedSlots = new Set(confirmed?.grants.map(({ grant }) => grant.slot));
278
+ const inFlightSlots = new Set(inFlight.grants.map(({ grant }) => grant.slot));
279
+ const kept = inFlight.grants.map((grantUtxo) => ({
280
+ ...grantUtxo,
281
+ status: confirmed && confirmedSlots.has(grantUtxo.grant.slot) ? confirmedGrantStatus(grantUtxo.grant, {
282
+ confirmed: confirmed.state,
283
+ inFlight: inFlight.state,
284
+ now,
285
+ protocolParameters,
286
+ networkId
287
+ }) : "pending"
288
+ }));
289
+ const swept = (confirmed?.grants ?? []).filter(({ grant }) => !inFlightSlots.has(grant.slot)).map((grantUtxo) => ({
290
+ ...grantUtxo,
291
+ status: "sweeping"
292
+ }));
293
+ return [...kept, ...swept].sort(bySlot);
294
+ };
295
+ //#endregion
296
+ export { classifyCustodyAccountUtxos as a, classifyCardanoCustodyAccount as i, isCardanoCustodyGrantExhausted as n, custodyGrantLiveness as o, CARDANO_CUSTODY_DEFAULT_GRANT_FEE_BOUND as r, isCustodyReserveDatum as s, classifyCardanoCustodyGrants as t };
@@ -0,0 +1,337 @@
1
+ const require_Address = require("./Address-AMKTo-dA.cjs");
2
+ const require_fees = require("./fees-DtC71fOx.cjs");
3
+ const require_hex = require("./hex-BVtOKJki.cjs");
4
+ //#region ../../packages/lib/cardano-custody/src/codecs/reserve.ts
5
+ /** The datum the upstream library writes on a reserve: constructor 0 with no fields. */
6
+ const RESERVE_DATUM_CBOR = "d87980";
7
+ /**
8
+ * Whether an inline datum is, byte for byte, the reserve datum `d87980`.
9
+ * Any datum makes a deposit an owner-only reserve; only this one has a known
10
+ * size, so a builder can spend such a reserve without a surprise in fee or
11
+ * minimum lovelace.
12
+ */
13
+ const isCustodyReserveDatum = (datum) => require_Address.PlutusData.fromCore(datum).toCbor() === RESERVE_DATUM_CBOR;
14
+ //#endregion
15
+ //#region ../../packages/lib/cardano-custody/src/classify.ts
16
+ /** The tokens of a value under a policy. */
17
+ const tokensUnder = (value, policyId) => [...value.assets?.entries() ?? []].filter(([assetId, quantity]) => quantity !== 0n && require_Address.AssetId.getPolicyId(assetId) === policyId).map(([assetId]) => assetId);
18
+ /** Reads a UTxO that holds exactly one grant token of the account, in quantity one. */
19
+ const classifyGrant = (utxo, token, slot) => {
20
+ const [, output] = utxo;
21
+ if (output.value.assets?.size !== 1) return { anomaly: {
22
+ code: "grant-value-not-strict",
23
+ utxo,
24
+ slot
25
+ } };
26
+ if (output.datum === void 0) return { anomaly: {
27
+ code: "grant-datum-not-inline",
28
+ utxo,
29
+ slot
30
+ } };
31
+ const decoded = require_fees.decodeCustodyGrant(output.datum);
32
+ if (!decoded.ok) return { anomaly: {
33
+ code: "grant-datum-malformed",
34
+ utxo,
35
+ slot,
36
+ error: decoded.error
37
+ } };
38
+ if (decoded.value.slot !== slot) return { anomaly: {
39
+ code: "grant-slot-mismatch",
40
+ utxo,
41
+ slot,
42
+ datumSlot: decoded.value.slot
43
+ } };
44
+ return { grant: {
45
+ utxo,
46
+ grant: decoded.value,
47
+ token
48
+ } };
49
+ };
50
+ /** The grant token and its slot, when the tokens are exactly one own grant token held once. */
51
+ const ownGrantToken = (account, value, tokens) => {
52
+ const [token] = tokens;
53
+ if (tokens.length !== 1 || value.assets?.get(token) !== 1n) return void 0;
54
+ const name = require_fees.parseCustodyAccountTokenName(require_Address.AssetId.getAssetName(token));
55
+ return name?.kind === "grant" && name.stakeScriptHash === account.stakeScriptHash ? {
56
+ token,
57
+ slot: name.slot
58
+ } : void 0;
59
+ };
60
+ /**
61
+ * Sorts an account's UTxOs by kind. UTxOs not at the exact account address
62
+ * are ignored. It never throws: a UTxO that holds an account token in a
63
+ * shape the contract rules out is listed in `anomalies`.
64
+ */
65
+ const classifyCustodyAccountUtxos = (account, utxos) => {
66
+ const policyId = require_Address.PolicyId(account.accountValidatorHash);
67
+ const stateNft = require_Address.AssetId.fromParts(policyId, require_Address.AssetName(account.stakeScriptHash));
68
+ const controls = [];
69
+ const grants = [];
70
+ const own = [];
71
+ const foreign = [];
72
+ const funds = [];
73
+ const stranded = [];
74
+ const anomalies = [];
75
+ for (const utxo of utxos) {
76
+ const [, output] = utxo;
77
+ if (output.address !== account.address) continue;
78
+ const tokens = tokensUnder(output.value, policyId);
79
+ if (tokens.includes(stateNft)) controls.push(utxo);
80
+ else if (tokens.length > 0) {
81
+ const grantToken = ownGrantToken(account, output.value, tokens);
82
+ if (!grantToken) {
83
+ anomalies.push({
84
+ code: "unexpected-account-tokens",
85
+ utxo,
86
+ assetIds: tokens
87
+ });
88
+ continue;
89
+ }
90
+ const classified = classifyGrant(utxo, grantToken.token, grantToken.slot);
91
+ if ("grant" in classified) grants.push(classified.grant);
92
+ else anomalies.push(classified.anomaly);
93
+ } else if (output.datum !== void 0) (output.scriptReference === void 0 && isCustodyReserveDatum(output.datum) ? own : foreign).push(utxo);
94
+ else if (output.datumHash === void 0) funds.push(utxo);
95
+ else stranded.push(utxo);
96
+ }
97
+ grants.sort((a, b) => a.grant.slot < b.grant.slot ? -1 : a.grant.slot > b.grant.slot ? 1 : 0);
98
+ return {
99
+ controls,
100
+ grants,
101
+ reserves: {
102
+ own,
103
+ foreign
104
+ },
105
+ funds,
106
+ stranded,
107
+ anomalies
108
+ };
109
+ };
110
+ /**
111
+ * The liveness of a grant against a control state at `now`. A grant dead for
112
+ * several reasons takes the first of superseded, revoked and expired, so
113
+ * `expired` alone means a sweep needs a validity interval that starts after
114
+ * the expiry.
115
+ *
116
+ * @param now - POSIX milliseconds; a non-finite value counts as past every expiry
117
+ */
118
+ const custodyGrantLiveness = (grant, state, now) => {
119
+ if (grant.generation < state.grantGeneration) return "superseded";
120
+ if (grant.generation > state.grantGeneration) return "future-generation";
121
+ if (!require_fees.isCustodyGrantCurrent(grant, state)) return "revoked";
122
+ return require_fees.isCustodyGrantExpired(grant, now) ? "expired" : "current";
123
+ };
124
+ //#endregion
125
+ //#region ../../packages/contract/cardano-context/src/custody/account-state.ts
126
+ /** Whether the account's contract version lists the logic in its catalogue. */
127
+ const isKnownLogic = (accountValidatorHash, logic) => {
128
+ const version = require_hex.findCustodyContractVersion(accountValidatorHash);
129
+ return version.ok && require_hex.findCustodyLogic(version.value, logic).ok;
130
+ };
131
+ /**
132
+ * Classifies a custody account's UTxOs by the rules of the custody contract
133
+ * and reads the control state.
134
+ */
135
+ const classifyCardanoCustodyAccount = ({ account, utxos, withdrawableRewards, protocolParameters }) => {
136
+ const { controls, grants, reserves, funds, stranded, anomalies } = classifyCustodyAccountUtxos(account, utxos);
137
+ const holdings = {
138
+ funds,
139
+ reserves,
140
+ grants,
141
+ grantLockedLovelace: grants.reduce((total, { utxo: [, output] }) => total + output.value.coins, 0n),
142
+ stranded,
143
+ anomalies,
144
+ withdrawableRewards
145
+ };
146
+ if (controls.length === 0) return {
147
+ ...holdings,
148
+ status: "notCreated"
149
+ };
150
+ const invalid = (reason) => ({
151
+ ...holdings,
152
+ status: "invalid",
153
+ reason,
154
+ controlUtxos: controls
155
+ });
156
+ if (controls.length > 1) return invalid({ code: "multiple-control-utxos" });
157
+ const [controlUtxo] = controls;
158
+ const [, controlOutput] = controlUtxo;
159
+ if (controlOutput.datum === void 0) return invalid({ code: "missing-inline-datum" });
160
+ const logic = require_fees.decodeCustodyStateLogic(controlOutput.datum);
161
+ if (!logic.ok) return invalid({
162
+ code: "undecodable-state",
163
+ error: logic.error
164
+ });
165
+ if (!isKnownLogic(account.accountValidatorHash, logic.value)) return invalid({
166
+ code: "unknown-logic",
167
+ logic: logic.value
168
+ });
169
+ const decoded = require_fees.decodeCustodyAccountState(controlOutput.datum);
170
+ if (!decoded.ok) return invalid({
171
+ code: "undecodable-state",
172
+ error: decoded.error
173
+ });
174
+ const controlMinimumLovelace = require_fees.minAdaRequired(controlOutput, BigInt(protocolParameters.coinsPerUtxoByte));
175
+ const controlLovelace = controlOutput.value.coins;
176
+ const deviceKeyHash = account.device?.keyHash;
177
+ return {
178
+ ...holdings,
179
+ status: "live",
180
+ controlUtxo,
181
+ state: decoded.value,
182
+ controlMinimumLovelace,
183
+ controlHeadroomLovelace: controlLovelace > controlMinimumLovelace ? controlLovelace - controlMinimumLovelace : 0n,
184
+ ...deviceKeyHash !== void 0 && { currentDeviceListed: decoded.value.devices.some((device) => device.toLowerCase() === deviceKeyHash.toLowerCase()) }
185
+ };
186
+ };
187
+ //#endregion
188
+ //#region ../../packages/contract/cardano-context/src/custody/build-transaction.ts
189
+ /**
190
+ * The most lovelace a grant spend's fee may take when the operation names
191
+ * no `feeBound`: 1,500,000 lovelace. The spend lowers the grant's remaining caps by its outputs
192
+ * and fee before the fee is final, so the bound is what the caps must leave
193
+ * room for.
194
+ */
195
+ const CARDANO_CUSTODY_DEFAULT_GRANT_FEE_BOUND = 1500000n;
196
+ //#endregion
197
+ //#region ../../packages/contract/cardano-context/src/custody/grant-status.ts
198
+ /**
199
+ * Any key hash: an unrestricted grant pays out to any address, and an
200
+ * enterprise key address makes the smallest output.
201
+ */
202
+ const ANY_KEY_HASH = require_Address.Hash28ByteBase16("00".repeat(28));
203
+ /** The addresses a grant may pay out to, or one standing for any address. */
204
+ const payoutAddressesOf = ({ recipients }, networkId) => {
205
+ if (recipients.length === 0) return [require_Address.EnterpriseAddress.fromCredentials(networkId, {
206
+ type: require_Address.CredentialType.KeyHash,
207
+ hash: ANY_KEY_HASH
208
+ }).toAddress().toBech32()];
209
+ return recipients.flatMap((recipient) => {
210
+ const address = require_fees.custodyRecipientToAddress(recipient, networkId);
211
+ return address.ok ? [address.value.toBech32()] : [];
212
+ });
213
+ };
214
+ /** The scope's token, or undefined when its policy id or name is malformed. */
215
+ const tokenOf = ({ asset }) => {
216
+ try {
217
+ return require_Address.AssetId.fromParts(require_Address.PolicyId(asset.policyId), require_Address.AssetName(asset.assetName));
218
+ } catch {
219
+ return;
220
+ }
221
+ };
222
+ const smallerOf = (a, b) => a < b ? a : b;
223
+ /**
224
+ * Whether a grant scope can no longer pay the smallest spend. That spend
225
+ * is one output to the cheapest address the grant allows, holding the
226
+ * ledger minimum lovelace, plus the fee bound. A lovelace grant draws both
227
+ * from its lovelace caps (`cap`, `perCallCap`). A token grant draws one
228
+ * token from its token caps and the lovelace from `lovelaceCap` and
229
+ * `lovelacePerCallCap`. A grant with no address it can pay is exhausted.
230
+ */
231
+ const isCardanoCustodyGrantExhausted = (scope, { protocolParameters, networkId, feeBound = CARDANO_CUSTODY_DEFAULT_GRANT_FEE_BOUND }) => {
232
+ const isLovelace = require_fees.isCustodyLovelaceAsset(scope.asset);
233
+ const token = isLovelace ? void 0 : tokenOf(scope);
234
+ if (!isLovelace && !token) return true;
235
+ const addresses = payoutAddressesOf(scope, networkId);
236
+ if (addresses.length === 0) return true;
237
+ const coinsPerUtxoByte = BigInt(protocolParameters.coinsPerUtxoByte);
238
+ const smallestLovelaceSpend = addresses.map((address) => require_fees.minAdaRequired({
239
+ address,
240
+ value: {
241
+ coins: 0n,
242
+ ...token && { assets: new Map([[token, 1n]]) }
243
+ }
244
+ }, coinsPerUtxoByte)).reduce(smallerOf) + feeBound;
245
+ if (isLovelace) return smallerOf(scope.cap, scope.perCallCap) < smallestLovelaceSpend;
246
+ return smallerOf(scope.cap, scope.perCallCap) < 1n || smallerOf(scope.lovelaceCap, scope.lovelacePerCallCap) < smallestLovelaceSpend;
247
+ };
248
+ const bySlot = ({ grant: a }, { grant: b }) => a.slot < b.slot ? -1 : a.slot > b.slot ? 1 : 0;
249
+ /**
250
+ * The status of a grant the confirmed view holds and the in-flight view
251
+ * keeps. `grant` is its in-flight version: an unsettled grant spend lowers
252
+ * its caps and changes nothing else.
253
+ */
254
+ const confirmedGrantStatus = (grant, { confirmed, inFlight, now, ...pricing }) => {
255
+ const liveness = custodyGrantLiveness(grant, confirmed, now);
256
+ if (liveness === "revoked" || liveness === "superseded") return liveness;
257
+ if (liveness === "future-generation") return "pending";
258
+ const next = custodyGrantLiveness(grant, inFlight, now);
259
+ if (next === "revoked" || next === "superseded") return "revoking";
260
+ if (liveness === "expired") return "expired";
261
+ return isCardanoCustodyGrantExhausted(grant.scope, pricing) ? "exhausted" : "live";
262
+ };
263
+ /**
264
+ * The status of every grant UTxO of a custody account, in slot order.
265
+ * `inFlight` is the account after the submitted operations that have not
266
+ * settled; `confirmed` is the account on chain, absent while it has no
267
+ * confirmed control state. A grant is known by its slot, which no grant
268
+ * ever reuses. `now` is POSIX milliseconds: the time of the chain tip.
269
+ *
270
+ * A grant only the in-flight view holds is `pending`, and one only the
271
+ * confirmed view holds is `sweeping`. A grant both hold is judged against
272
+ * the confirmed state, and is `revoking` when the in-flight state kills it.
273
+ * Its listed version is the in-flight one, so an unsettled grant spend
274
+ * shows its lowered caps at once.
275
+ */
276
+ const classifyCardanoCustodyGrants = ({ confirmed, inFlight, now, protocolParameters, networkId }) => {
277
+ const confirmedSlots = new Set(confirmed?.grants.map(({ grant }) => grant.slot));
278
+ const inFlightSlots = new Set(inFlight.grants.map(({ grant }) => grant.slot));
279
+ const kept = inFlight.grants.map((grantUtxo) => ({
280
+ ...grantUtxo,
281
+ status: confirmed && confirmedSlots.has(grantUtxo.grant.slot) ? confirmedGrantStatus(grantUtxo.grant, {
282
+ confirmed: confirmed.state,
283
+ inFlight: inFlight.state,
284
+ now,
285
+ protocolParameters,
286
+ networkId
287
+ }) : "pending"
288
+ }));
289
+ const swept = (confirmed?.grants ?? []).filter(({ grant }) => !inFlightSlots.has(grant.slot)).map((grantUtxo) => ({
290
+ ...grantUtxo,
291
+ status: "sweeping"
292
+ }));
293
+ return [...kept, ...swept].sort(bySlot);
294
+ };
295
+ //#endregion
296
+ Object.defineProperty(exports, "CARDANO_CUSTODY_DEFAULT_GRANT_FEE_BOUND", {
297
+ enumerable: true,
298
+ get: function() {
299
+ return CARDANO_CUSTODY_DEFAULT_GRANT_FEE_BOUND;
300
+ }
301
+ });
302
+ Object.defineProperty(exports, "classifyCardanoCustodyAccount", {
303
+ enumerable: true,
304
+ get: function() {
305
+ return classifyCardanoCustodyAccount;
306
+ }
307
+ });
308
+ Object.defineProperty(exports, "classifyCardanoCustodyGrants", {
309
+ enumerable: true,
310
+ get: function() {
311
+ return classifyCardanoCustodyGrants;
312
+ }
313
+ });
314
+ Object.defineProperty(exports, "classifyCustodyAccountUtxos", {
315
+ enumerable: true,
316
+ get: function() {
317
+ return classifyCustodyAccountUtxos;
318
+ }
319
+ });
320
+ Object.defineProperty(exports, "custodyGrantLiveness", {
321
+ enumerable: true,
322
+ get: function() {
323
+ return custodyGrantLiveness;
324
+ }
325
+ });
326
+ Object.defineProperty(exports, "isCardanoCustodyGrantExhausted", {
327
+ enumerable: true,
328
+ get: function() {
329
+ return isCardanoCustodyGrantExhausted;
330
+ }
331
+ });
332
+ Object.defineProperty(exports, "isCustodyReserveDatum", {
333
+ enumerable: true,
334
+ get: function() {
335
+ return isCustodyReserveDatum;
336
+ }
337
+ });
@@ -0,0 +1,16 @@
1
+ require("./chunk-9hOWP6kD.cjs");
2
+ require("./_polyfill-buffer-patch-BycQkEkK.cjs");
3
+ const require_grant_rules = require("./grant-rules-B7eDuD5G.cjs");
4
+ const require_grants = require("./grants-CIb6nOV7.cjs");
5
+ exports.assertIssueRules = require_grant_rules.assertIssueRules;
6
+ exports.circuitScope = require_grant_rules.circuitScope;
7
+ exports.deriveGrantId = require_grants.deriveGrantId;
8
+ exports.grantObjectCommit = require_grants.grantObjectCommit;
9
+ exports.granteePoint = require_grant_rules.granteePoint;
10
+ exports.issueGrantBinding = require_grants.issueGrantBinding;
11
+ exports.originHash = require_grants.originHash;
12
+ exports.prepareIssueGrant = require_grants.prepareIssueGrant;
13
+ exports.prepareRevokeAllGrants = require_grants.prepareRevokeAllGrants;
14
+ exports.prepareRevokeGrant = require_grants.prepareRevokeGrant;
15
+ exports.scopeArgs = require_grants.scopeArgs;
16
+ exports.scopeDigest = require_grants.scopeDigest;