@laceio/sdk 0.1.1 → 0.1.2-canary.1

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 (388) hide show
  1. package/dist/{TransactionBuilder-DrB3NVTi.cjs → TransactionBuilder-X1H9Gze6.cjs} +64 -14
  2. package/dist/{TransactionBuilder-V6aLx4SV.js → TransactionBuilder-bp2aMDhg.js} +23 -15
  3. package/dist/{_polyfill-buffer-patch-BnPVerlG.cjs → _polyfill-buffer-patch-CM8X7JiY.cjs} +21 -2
  4. package/dist/_polyfill-buffer-patch-yNxN4d5E.js +1467 -0
  5. package/dist/_web-crypto-random-bytes-Bo-GTcRS.js +197 -0
  6. package/dist/acc-module-4iIUv6My.cjs +27654 -0
  7. package/dist/acc-module-Cmj8EsIb.js +27624 -0
  8. package/dist/account-BOQruszJ.js +6 -0
  9. package/dist/account-BUOj4pYJ.cjs +11 -0
  10. package/dist/account-call-7wnopBq0.cjs +5 -0
  11. package/dist/account-call-B9d_2Xwi.js +4 -0
  12. package/dist/account-call-Bd4Rpbvt.cjs +323 -0
  13. package/dist/account-call-C3CkDqEC.js +276 -0
  14. package/dist/account-guards-BtjTGxDZ.cjs +42 -0
  15. package/dist/account-guards-D9Lu5T3W.js +36 -0
  16. package/dist/account-tokens-DvkOFVON.js +16 -0
  17. package/dist/account-tokens-nwcvwLu4.cjs +21 -0
  18. package/dist/{activity-type.stable-BJEfeLxL.cjs → activity-type-Ch6ljxBy.cjs} +2 -1
  19. package/dist/{activity-type.stable-C76_hWd7.js → activity-type-GsJGWs-3.js} +2 -1
  20. package/dist/address-B9ntKL8K.js +13761 -0
  21. package/dist/address-BXp-mY8H.cjs +11270 -0
  22. package/dist/{address-book-address-validator-DIUolI-s.js → address-book-address-validator-0J9XAADH.js} +2 -2
  23. package/dist/address-book-address-validator-DK0dnsRS.cjs +41 -0
  24. package/dist/address-book-address-validator-Di_ywo8M.js +39 -0
  25. package/dist/{address-book-address-validator-DNwQGlOB.cjs → address-book-address-validator-Dte_YQ2L.cjs} +2 -2
  26. package/dist/artefact-loader-BWWYAD7E.cjs +183 -0
  27. package/dist/artefact-loader-Dik4HIfv.js +160 -0
  28. package/dist/auto-dismiss-failure-on-success-C-qoJuid.cjs +37 -0
  29. package/dist/auto-dismiss-failure-on-success-s8MGDEIu.js +31 -0
  30. package/dist/bip32-D6wd_QMn.cjs +3851 -0
  31. package/dist/bitcoin-data-provider-BYPSmuZS.js +21 -0
  32. package/dist/bitcoin-data-provider-w1oEDSU3.cjs +26 -0
  33. package/dist/bitcoin.cjs +45 -0
  34. package/dist/bitcoin.d.ts +29906 -1
  35. package/dist/bitcoin.js +20 -0
  36. package/dist/{blockfrost-tx-submit-provider-DPTrapz-.js → blockfrost-tx-submit-provider-CBWQ0wK9.js} +5 -157
  37. package/dist/{blockfrost-tx-submit-provider-BAIzV5o3.cjs → blockfrost-tx-submit-provider-CLNQ5ycR.cjs} +3 -167
  38. package/dist/bn-d3nSOIf7.cjs +2553 -0
  39. package/dist/browser-B1eMbDwh.js +7468 -0
  40. package/dist/bytes.vo-BB7_4JK6.js +23 -0
  41. package/dist/bytes.vo-BNRquqaO.cjs +34 -0
  42. package/dist/cardano-DfPwhwm-.js +3 -0
  43. package/dist/{cardano-network-id.vo-DSxrFk9S.cjs → cardano-network-id.vo-BEDPn6Li.cjs} +1 -1
  44. package/dist/{cardano-network-id.vo-CK1tNQDg.js → cardano-network-id.vo-Cfpvbod9.js} +1 -1
  45. package/dist/cardano.cjs +22 -18
  46. package/dist/cardano.d.ts +16962 -1716
  47. package/dist/cardano.js +16 -11
  48. package/dist/client-DXBLHk7K.cjs +808 -0
  49. package/dist/codecs-Cswkg7Tm.cjs +4051 -0
  50. package/dist/codecs-Dc1Krpbt.js +3903 -0
  51. package/dist/{const-C84qHkjp.js → const-BJfIK_G-.js} +4 -4
  52. package/dist/const-BhYOdznB.cjs +42 -0
  53. package/dist/const-BsnjG2_Q.cjs +32071 -0
  54. package/dist/const-CUnCl5U0.js +13 -0
  55. package/dist/{const-DXk2tFyv.js → const-CjmfjBP3.js} +1 -1
  56. package/dist/{const-BDEg2Trq.cjs → const-D-eZIS4n.cjs} +4 -4
  57. package/dist/const-D0CbQlo4.js +154 -0
  58. package/dist/{const-BY8B3_0_.cjs → const-iwzZEE_w.cjs} +1 -1
  59. package/dist/contract-1R86jhSw.js +171 -0
  60. package/dist/contract-MKLzYVkW.cjs +189 -0
  61. package/dist/create-add-accounts-Brqk84vF.js +102 -0
  62. package/dist/create-add-accounts-DzXIh7Ot.cjs +114 -0
  63. package/dist/{delegation-tx-builder-CRpLP6jH.cjs → delegation-tx-builder-Dof_0N_d.cjs} +6 -6
  64. package/dist/{delegation-tx-builder-CGVqlaFE.js → delegation-tx-builder-Dy3-2Auz.js} +5 -5
  65. package/dist/{deregistration-tx-builder-DZGwB4cz.cjs → deregistration-tx-builder-CcLwyFpj.cjs} +6 -6
  66. package/dist/{deregistration-tx-builder-B-CrUyX6.js → deregistration-tx-builder-QkWW_gWl.js} +5 -5
  67. package/dist/device-commitment-hex.vo-5wFtQvDS.js +26 -0
  68. package/dist/device-commitment-hex.vo-CT3RmAug.cjs +31 -0
  69. package/dist/device-readers-CUHYoYOH.js +145 -0
  70. package/dist/device-readers-CdxS2btd.cjs +168 -0
  71. package/dist/device-readers-D_JZeNL2.cjs +8 -0
  72. package/dist/device-readers-DwSNCGPP.js +4 -0
  73. package/dist/dist-BMi5ZjEq.cjs +43175 -0
  74. package/dist/dist-BtIq4XFn.cjs +535 -0
  75. package/dist/dist-C3SHC_Ho.cjs +1394 -0
  76. package/dist/dist-CykEjYEX.cjs +3814 -0
  77. package/dist/dist-Dcsxh3be.cjs +3452 -0
  78. package/dist/dist-DqJfSlTd.cjs +4413 -0
  79. package/dist/dist-nTZ70qj7.cjs +1306 -0
  80. package/dist/{earn-rewards-tx-builder-D5sUT5v8.cjs → earn-rewards-tx-builder-BP5JMIKS.cjs} +6 -6
  81. package/dist/{earn-rewards-tx-builder-BDbTDZmD.js → earn-rewards-tx-builder-Cku4BmNU.js} +5 -5
  82. package/dist/enc-key-circuits-B7BjgUL9.js +13 -0
  83. package/dist/enc-key-circuits-BLrZrBVI.cjs +24 -0
  84. package/dist/english-Byb9M0E_.cjs +2057 -0
  85. package/dist/envelopes-BGoO_v8m.js +1621 -0
  86. package/dist/envelopes-CH25R-DN.cjs +1722 -0
  87. package/dist/errors-BIftM8ZN.cjs +688 -0
  88. package/dist/errors-DSq5wUwt.js +466 -0
  89. package/dist/esm-HBSUQw3w.js +384 -0
  90. package/dist/esm-LZuaZjMf.cjs +389 -0
  91. package/dist/experimental.cjs +7349 -0
  92. package/dist/experimental.d.ts +86279 -0
  93. package/dist/experimental.js +7184 -0
  94. package/dist/gated-call-CDCVZIK-.cjs +5 -0
  95. package/dist/gated-call-D-tT7P_t.js +722 -0
  96. package/dist/gated-call-D_VT2quk.js +4 -0
  97. package/dist/gated-call-DgJm1Mi_.cjs +787 -0
  98. package/dist/grant-circuits-DswmW3nI.cjs +71 -0
  99. package/dist/grant-circuits-Jxb5y1HW.js +42 -0
  100. package/dist/grant-rules-By07_eDi.js +6824 -0
  101. package/dist/grant-rules-BzVTWXS7.cjs +7099 -0
  102. package/dist/grant-spend-B3Md9L0n.js +215 -0
  103. package/dist/grant-spend-oWmzRsjH.cjs +217 -0
  104. package/dist/grant-status-B2y49iIu.js +2688 -0
  105. package/dist/grant-status-DOr3t_u8.cjs +2820 -0
  106. package/dist/grants-2BZ-qEVQ.js +5 -0
  107. package/dist/grants-BPoLSiMt.cjs +18 -0
  108. package/dist/grants-BoI5uwSF.cjs +272 -0
  109. package/dist/grants-CtofFu-e.js +213 -0
  110. package/dist/{group-cardano-addresses-by-account-B533oVXR.cjs → group-cardano-addresses-by-account-Bp0g4wEY.cjs} +3 -39
  111. package/dist/{group-cardano-addresses-by-account-RHKoEskR.js → group-cardano-addresses-by-account-SR8MMrZf.js} +5 -35
  112. package/dist/{guarded-transaction-signer-Bxl6_XNd.cjs → guarded-transaction-signer-MFpPg98D.cjs} +17 -18
  113. package/dist/{guarded-transaction-signer-CpKLj8Kp.js → guarded-transaction-signer-P6Rp1faj.js} +8 -15
  114. package/dist/hex-D9ITYbwt.cjs +263 -0
  115. package/dist/hex-mkXcV3pN.js +191 -0
  116. package/dist/http-client-B3N-TMxu.cjs +167 -0
  117. package/dist/http-client-TRlhDZGh.js +155 -0
  118. package/dist/identity-BMLuufva.cjs +263 -0
  119. package/dist/identity-DII6f-h7.js +233 -0
  120. package/dist/in-memory-wallet-integration-B2xzxORj.cjs +20741 -0
  121. package/dist/in-memory-wallet-integration-CBRiPjLO.js +130 -0
  122. package/dist/in-memory-wallet-integration-CULUB5Tf.cjs +240 -0
  123. package/dist/{in-memory-wallet-integration-D-qn65Kx.js → in-memory-wallet-integration-ChIOirMW.js} +5 -2
  124. package/dist/{in-memory-wallet-integration-Croiuopx.js → in-memory-wallet-integration-CljprQQV.js} +7 -104
  125. package/dist/{in-memory-wallet-integration-DVh9sRXa.cjs → in-memory-wallet-integration-Cm6P8sk6.cjs} +3 -2
  126. package/dist/in-memory-wallet-integration-TM9bBphA.js +20738 -0
  127. package/dist/{in-memory-wallet-integration-CnLYeX4-.cjs → in-memory-wallet-integration-t9I00R_V.cjs} +17 -108
  128. package/dist/index.cjs +84 -47
  129. package/dist/index.d.ts +37505 -10036
  130. package/dist/index.js +52 -24
  131. package/dist/{init-CLHuAMB-.js → init-0zzs9aqU.js} +4 -4
  132. package/dist/{init-U8c9yHYx.cjs → init-5KcGcBb5.cjs} +1 -1
  133. package/dist/{init-CigestoM.js → init-B3-1ghyx.js} +2 -2
  134. package/dist/init-B8U3ABhS.cjs +107 -0
  135. package/dist/init-BJn-8_hf.js +141 -0
  136. package/dist/init-BPU3j8sT.cjs +6 -0
  137. package/dist/init-BRzH6xu-2.cjs +2797 -0
  138. package/dist/init-BmzfDaKL.js +1142 -0
  139. package/dist/{init-C-jErzp5.cjs → init-BopV9ed4.cjs} +2 -2
  140. package/dist/init-BpHTq2R5.js +105 -0
  141. package/dist/init-BpSITBfF.js +39 -0
  142. package/dist/{init-DX4WyB0R.cjs → init-BrdVzxei.cjs} +3 -3
  143. package/dist/{init-LfyMo-sS.cjs → init-BwkU0ruo.cjs} +2 -2
  144. package/dist/{init-CB__aLD7.cjs → init-C-G32J12.cjs} +2 -2
  145. package/dist/init-C00gw1zi.js +422 -0
  146. package/dist/{init-TkPq_Ny_.js → init-C2RgrfZe.js} +1 -1
  147. package/dist/init-C5mYyFTv.js +3584 -0
  148. package/dist/{init-DcYY6zMD.js → init-C8URA2OX.js} +1 -1
  149. package/dist/init-CDkRynJa.js +2796 -0
  150. package/dist/{init-Cg9XdAru.js → init-CNM5m7M2.js} +4 -4
  151. package/dist/init-CR7BfztQ.cjs +18 -0
  152. package/dist/{init-CSHwHnfg.cjs → init-CSDpdu0Q.cjs} +2 -2
  153. package/dist/{init-aJHl-7AO.js → init-CX0AMQUn.js} +2 -2
  154. package/dist/{init-FMGDET-9.js → init-CfTbSEKy.js} +259 -60
  155. package/dist/{init-CR6tpw1B.js → init-Cigr_tKx.js} +47 -43
  156. package/dist/init-Clu8pxwQ.cjs +1181 -0
  157. package/dist/{init-CFYsq82V.js → init-CyAY4Lzl.js} +1 -1
  158. package/dist/{init-BKhH6mVR.cjs → init-D6BxBs7e.cjs} +1 -1
  159. package/dist/init-D8OeObDF.cjs +1141 -0
  160. package/dist/init-D9g1HXYf.cjs +40 -0
  161. package/dist/{init-CNLGJJRx.js → init-DA7zmptx.js} +1 -1
  162. package/dist/{init-DkIc5nqF.cjs → init-DFMiP2ZH.cjs} +1 -1
  163. package/dist/{init-zSzCjoor.js → init-DFjT8YvT.js} +4 -4
  164. package/dist/init-DGjXwWs2.cjs +143 -0
  165. package/dist/init-DHrCbpkW.cjs +121 -0
  166. package/dist/init-DRzJR02G.cjs +3585 -0
  167. package/dist/{init-B64zCLxG.cjs → init-DUF4ar8P.cjs} +4 -4
  168. package/dist/init-DlqJuHhl.js +119 -0
  169. package/dist/{init-y2Ra0vZP.js → init-Dnsv155v.js} +3 -3
  170. package/dist/init-DuYENxci.js +17 -0
  171. package/dist/{init-D6DBUsD3.cjs → init-Dv3zKj0r.cjs} +4 -4
  172. package/dist/{init-BtzMZ7Pk.cjs → init-Dy-05ktr.cjs} +1 -1
  173. package/dist/{init-BsCBAGWf.cjs → init-EP0CUWNK.cjs} +2 -2
  174. package/dist/{init-BJVU54pI.cjs → init-EhzD7a8i.cjs} +1 -1
  175. package/dist/{init-w9GEs73W.js → init-Fw89ZmrR.js} +2 -2
  176. package/dist/init-GsT2AEa4.cjs +424 -0
  177. package/dist/{init-Rxohwpmu.js → init-NCjgwCZy.js} +2 -2
  178. package/dist/{init-DxUHsN53.cjs → init-NdhG_VrF.cjs} +6 -6
  179. package/dist/{init-DDdhguVC.js → init-SZ01tARX2.js} +2 -2
  180. package/dist/{init-BAJJzBza.js → init-Y3mkB4XS.js} +2 -2
  181. package/dist/init-c4l6r-o-.js +5 -0
  182. package/dist/{init-Dku4b2lG.js → init-kEfUTuG2.js} +1 -1
  183. package/dist/{init-C7IeJwQR.cjs → init-lzHt4Cli.cjs} +256 -59
  184. package/dist/init-qSEd_Spq.js +1182 -0
  185. package/dist/{init-anYu6XB7.cjs → init-rmt7-fQE.cjs} +2 -2
  186. package/dist/{init-C4Bkib9u.cjs → init-zU-_9Gsp.cjs} +67 -65
  187. package/dist/{is-retriable-error-BU0e3hVI.js → is-retriable-error-BUiVJDwH.js} +1 -1
  188. package/dist/{is-retriable-error-CeeuHqDa.cjs → is-retriable-error-Dpt860if.cjs} +1 -1
  189. package/dist/jubjub-authoriser-D7zDXu3V.js +86 -0
  190. package/dist/jubjub-authoriser-Dgu6o3Sv.cjs +87 -0
  191. package/dist/key-source-5oUBFiC7.cjs +583 -0
  192. package/dist/key-source-B08HukZg.js +2550 -0
  193. package/dist/keyDerivation-D3k9XyHg.js +4077 -0
  194. package/dist/keyDerivation-u0nBA93T.cjs +274 -0
  195. package/dist/{lace-context-CZcNHr4M.js → lace-context-BZciB9c7.js} +4 -4
  196. package/dist/{lace-context-fJTDghdp.cjs → lace-context-DgR6vLli.cjs} +4 -4
  197. package/dist/lib--iqvW4O_.js +2354 -0
  198. package/dist/lib-Yk6Upl5D.cjs +2359 -0
  199. package/dist/{libsodium-wrappers-UH0LaOUE.js → libsodium-wrappers-BhbOA8dQ.js} +3 -1647
  200. package/dist/midnight-account-id.vo-0x9X-r3l.cjs +10 -0
  201. package/dist/midnight-account-id.vo-DjCAGcqc.js +5 -0
  202. package/dist/midnight-engine-DpemplKO.js +5 -0
  203. package/dist/midnight-engine-xU1wotne.cjs +6 -0
  204. package/dist/midnight-wallet-DIsAlSn6.js +18 -0
  205. package/dist/midnight-wallet-XTZc2li7.cjs +24 -0
  206. package/dist/midnight.cjs +1408 -0
  207. package/dist/midnight.d.ts +28934 -0
  208. package/dist/midnight.js +1352 -0
  209. package/dist/modules-cardano-D9Gs2j60.cjs +1108 -0
  210. package/dist/modules-cardano-VIM8fKu-.js +995 -0
  211. package/dist/node-relay-DWe1U0w2.cjs +49 -0
  212. package/dist/node-relay-h4i5IlAQ.js +48 -0
  213. package/dist/outputs-Bd2yZVjx.js +720 -0
  214. package/dist/outputs-CJoQBIA2.cjs +990 -0
  215. package/dist/pbkdf2-CIW-oWrm.cjs +1337 -0
  216. package/dist/pending-operation-B0_P78Jo.cjs +26 -0
  217. package/dist/pending-operation-BIS6mpjB.js +21 -0
  218. package/dist/providers-FjhM47BH.cjs +388 -0
  219. package/dist/providers-WtiSuxFu.js +365 -0
  220. package/dist/redacted-BmE2aXqr.js +81 -0
  221. package/dist/redacted-CRZJLS3w.cjs +86 -0
  222. package/dist/{retry-config-DC5IMaH7.cjs → retry-config-BaCfVC1H.cjs} +1 -1
  223. package/dist/{retry-config-BcUmMS--.js → retry-config-Dmgt28wM.js} +1 -1
  224. package/dist/safe-buffer-B_vMqJWU.js +43 -0
  225. package/dist/safe-buffer-DYOwEfHB.cjs +48 -0
  226. package/dist/sdk-Cb-gZnS9.js +1241 -0
  227. package/dist/sdk-DffwmX8b.cjs +1439 -0
  228. package/dist/sdk-init-Bln9rFtn.js +4138 -0
  229. package/dist/sdk-init-CYViTJY_.cjs +3841 -0
  230. package/dist/{seam-cardano-CATqBEyK.js → seam-cardano-B_etH4F4.js} +1 -1
  231. package/dist/{bytes.vo-TgiwogWF.js → secret-box-DUR0ACYz.js} +3 -25
  232. package/dist/{bytes.vo-Ck5u40RA.cjs → secret-box-DrjLZuS1.cjs} +1 -35
  233. package/dist/send-proof-progress-C-ljq1x5.js +30 -0
  234. package/dist/send-proof-progress-vmsaSfbz.cjs +47 -0
  235. package/dist/side-effects-BnqYz7Nl.js +768 -0
  236. package/dist/side-effects-CngaeXi0.cjs +804 -0
  237. package/dist/sign-bitcoin-transaction-with-seed-D4z62-jV.js +147 -0
  238. package/dist/sign-bitcoin-transaction-with-seed-DsLYXnCY.cjs +158 -0
  239. package/dist/signer-3fk8lZtE.cjs +7 -0
  240. package/dist/signer-CsL28DrK.cjs +121 -0
  241. package/dist/signer-DGluibtn.js +92 -0
  242. package/dist/signer-RqB5pu3K.js +2 -0
  243. package/dist/signer-factory-BA7WFJVZ.js +282 -0
  244. package/dist/signer-factory-Cwd6o-lG.cjs +281 -0
  245. package/dist/{signer-factory-9URFliA5.js → signer-factory-DObB55D4.js} +6 -3
  246. package/dist/signer-factory-DhZiE03y.cjs +149 -0
  247. package/dist/{signer-factory-BWGUmnvm.cjs → signer-factory-Ds6G2AZk.cjs} +4 -3
  248. package/dist/signer-factory-hzSRaIw2.js +148 -0
  249. package/dist/{slice-CuHUaPZx.cjs → slice-7G2xxYKJ.cjs} +3 -3
  250. package/dist/{slice-DZmQJNV8.cjs → slice-B4CdYoPu.cjs} +2 -2
  251. package/dist/slice-BPNuHKfw.js +9091 -0
  252. package/dist/{slice-DGcNrbPR.cjs → slice-Bg6HEr3K.cjs} +4 -4
  253. package/dist/{slice-DtaO72qY.cjs → slice-Bs2aMERu.cjs} +3 -3
  254. package/dist/{slice-HeHCv3bl.cjs → slice-C34iOOUH.cjs} +7 -7
  255. package/dist/{slice-Do2R2CYW.cjs → slice-C9TT5KhY.cjs} +6 -6
  256. package/dist/{slice-eIwcwKHI.js → slice-CK07EBCo.js} +4 -4
  257. package/dist/{slice-CnyWevM9.js → slice-CU80pbiu.js} +3 -3
  258. package/dist/{slice-CobanYgn.js → slice-CwyYrh1H.js} +2 -2
  259. package/dist/slice-Czfp6t84.cjs +436 -0
  260. package/dist/{slice-d0p6-xj5.js → slice-D-9aPKG-.js} +6 -6
  261. package/dist/{slice-maaskdUn.js → slice-DBpJ2QGf.js} +6 -6
  262. package/dist/{slice-mxLQ_FeY.cjs → slice-DTZTiJle.cjs} +352 -39
  263. package/dist/{slice-zJ9XVYjZ.js → slice-Da426sf9.js} +1 -1
  264. package/dist/{slice-D11m2EKl.cjs → slice-DayJvMRD.cjs} +1 -1
  265. package/dist/slice-DnBWfA-k.cjs +9109 -0
  266. package/dist/{slice-oqm_r1cS.cjs → slice-DnG-yvpI.cjs} +2 -2
  267. package/dist/{slice-BNu73oBa.js → slice-DyNs7oWp.js} +2 -2
  268. package/dist/{slice-CB4SnzMm.js → slice-GwiiJRoq.js} +3 -3
  269. package/dist/slice-oWnc7YVD.js +412 -0
  270. package/dist/{slice-B2PhoWAg.js → slice-qt0uBExh.js} +325 -37
  271. package/dist/slice-t8Gzj55G2.cjs +106 -0
  272. package/dist/slice-t8Q1cHm-.js +88 -0
  273. package/dist/src-BDzYIksE.cjs +20637 -0
  274. package/dist/src-BFoefPv_.js +20755 -0
  275. package/dist/store-B1Lq3cEf.cjs +66 -0
  276. package/dist/store-DuBG8qh5.js +37 -0
  277. package/dist/submit-Bs77dPn_.cjs +413 -0
  278. package/dist/submit-DOv8Z0Vf.js +336 -0
  279. package/dist/submit-bitcoin-tx-D6oYgH5S.js +983 -0
  280. package/dist/submit-bitcoin-tx-goFuRL7K.cjs +1049 -0
  281. package/dist/{sync-operation-utils-BYXLO80m.js → sync-operation-utils-31iFLExW.js} +2 -38
  282. package/dist/{sync-operation-utils-SdPbwFoD.cjs → sync-operation-utils-COIZ66-I.cjs} +1 -67
  283. package/dist/token-id-mapper-Bnds3xKH.cjs +18 -0
  284. package/dist/{token-id-mapper-DsPAL6Nh.cjs → token-id-mapper-CVyQJUKY.cjs} +2 -2
  285. package/dist/token-id-mapper-CnKHQ8DV.js +16 -0
  286. package/dist/{token-id-mapper-B2ivlLv3.js → token-id-mapper-D29Ggv8h.js} +2 -2
  287. package/dist/tokens-Cevp7rdU.cjs +62 -0
  288. package/dist/tokens-Diw4MLRM.js +44 -0
  289. package/dist/types-B8uiJn-X.js +12 -0
  290. package/dist/types-BHC12eSa.js +33 -0
  291. package/dist/types-CJT6XF2c.js +10 -0
  292. package/dist/types-CLRUYpfe.cjs +23 -0
  293. package/dist/types-Cc3mC8u0.cjs +50 -0
  294. package/dist/types-DWbVZpnF.cjs +15 -0
  295. package/dist/unwrap-provider-result-BZSiwabU.js +32 -0
  296. package/dist/unwrap-provider-result-ZqfBsTkk.cjs +39 -0
  297. package/dist/{util-CGzqQ8IV.cjs → util-Bu4W5lF4.cjs} +1 -1
  298. package/dist/{util-BaLzwa32.js → util-Cp5cZkfK.js} +1 -1
  299. package/dist/{utils-o8aMjfln.js → utils-BfBEUvWA.js} +2 -2
  300. package/dist/utils-DFwzEvbv.js +65 -0
  301. package/dist/{utils-5JvjbqH3.cjs → utils-DsElZgCI.cjs} +7 -1
  302. package/dist/utils-IXxR-Djh.cjs +112 -0
  303. package/dist/v8Signatures-CO_Uloy7.cjs +71 -0
  304. package/dist/{vote-delegation-tx-builder-CmKv6GoG.js → vote-delegation-tx-builder-BsBSDmcX.js} +5 -5
  305. package/dist/{vote-delegation-tx-builder-BpEMSti4.cjs → vote-delegation-tx-builder-DSs8nybk.cjs} +6 -6
  306. package/dist/watch-CUEvcP-V.js +21997 -0
  307. package/dist/watch-DMF2s-II.cjs +52281 -0
  308. package/package.json +96 -4
  309. package/dist/account-guards.stable-B1DSSh9D.cjs +0 -10
  310. package/dist/account-guards.stable-JRQ5qx2V.js +0 -5
  311. package/dist/codecs-B7X9pAsK.cjs +0 -1945
  312. package/dist/codecs-CC1Xjntz.js +0 -1882
  313. package/dist/init-Bv53hpLM.js +0 -19
  314. package/dist/init-CRbjI7p1.js +0 -3494
  315. package/dist/init-DAna1KCg.cjs +0 -3495
  316. package/dist/init-DGe47B22.cjs +0 -364
  317. package/dist/init-DMtyvYfC.cjs +0 -21
  318. package/dist/init-TkPDD750.js +0 -363
  319. package/dist/modules-cardano-BDvuL4Xx.js +0 -5248
  320. package/dist/modules-cardano-D2G3De2P.cjs +0 -5432
  321. package/dist/slice-CGVHXHDt.cjs +0 -125
  322. package/dist/slice-DhvF7L6X.js +0 -107
  323. /package/dist/{account-id.vo-LvCBVn5r.cjs → account-id.vo-DwqFjK5u.cjs} +0 -0
  324. /package/dist/{account-id.vo-MYSI7YFm.js → account-id.vo-OPz2v-JZ.js} +0 -0
  325. /package/dist/{actions-DdGbj7c7.cjs → actions-B2BJ4RTy.cjs} +0 -0
  326. /package/dist/{actions-9QSQR-GB.js → actions-iLXdgL5Y.js} +0 -0
  327. /package/dist/{apply-vkey-witnesses-ClZbpk5w.js → apply-vkey-witnesses-BKx3lcs0.js} +0 -0
  328. /package/dist/{apply-vkey-witnesses-CLzVSWxl.cjs → apply-vkey-witnesses-ZnFS0jnJ.cjs} +0 -0
  329. /package/dist/{asyncoption-Cw07zPH7.js → asyncoption-CruEYOBI.js} +0 -0
  330. /package/dist/{asyncoption-DYoGuQfP.cjs → asyncoption-i0VbqVTq.cjs} +0 -0
  331. /package/dist/{bignum.vo-B0rK_PQ1.js → bignum.vo-CEXOIew0.js} +0 -0
  332. /package/dist/{bignum.vo-DsG3kNiZ.cjs → bignum.vo-hx2kuqlA.cjs} +0 -0
  333. /package/dist/{bip32ed25519-1ApqeAZk.cjs → bip32ed25519-B7Yat217.cjs} +0 -0
  334. /package/dist/{bip32ed25519-DetAdGwD.js → bip32ed25519-FQ8qvdcq.js} +0 -0
  335. /package/dist/{blake2b-DOEVc57D.js → blake2b-BiQTw3GC.js} +0 -0
  336. /package/dist/{blake2b-B9tftbvG.cjs → blake2b-DEeVUdKR.cjs} +0 -0
  337. /package/dist/{blockchain-network-id.vo-BXpZhvvQ.cjs → blockchain-network-id.vo-BAKEwGjG.cjs} +0 -0
  338. /package/dist/{blockchain-network-id.vo-DNRkuT5B.js → blockchain-network-id.vo-CiVykuqG.js} +0 -0
  339. /package/dist/{blockingWithLatestFrom-C5wp_uA-.js → blockingWithLatestFrom-Cd8c8EPG.js} +0 -0
  340. /package/dist/{blockingWithLatestFrom-DY8OPg0w.cjs → blockingWithLatestFrom-D8kBPBMX.cjs} +0 -0
  341. /package/dist/{cardano-network-id-to-network-type-CrZfUcyP.js → cardano-network-id-to-network-type-BWwzeEtM.js} +0 -0
  342. /package/dist/{cardano-network-id-to-network-type-BDTF-HmK.cjs → cardano-network-id-to-network-type-C0ufJOyE.cjs} +0 -0
  343. /package/dist/{cardano-tx-id.vo-BPhV-AmZ.cjs → cardano-tx-id.vo-TLjJZHCI.cjs} +0 -0
  344. /package/dist/{cardano-tx-id.vo-DF9NzZXk.js → cardano-tx-id.vo-eVnKuzlm.js} +0 -0
  345. /package/dist/{composite-signer-factory-_46QsNBz.js → composite-signer-factory-CR8YHA1y.js} +0 -0
  346. /package/dist/{composite-signer-factory-BpF1mIYA.cjs → composite-signer-factory-m5cVs9h_.cjs} +0 -0
  347. /package/dist/{error-CNIquqT5.cjs → error-Cb3EnD0u.cjs} +0 -0
  348. /package/dist/{error-BCp9NkPi.js → error-DIZOY2Lw.js} +0 -0
  349. /package/dist/{esm-browser-C93Q-EOI.js → esm-browser-MG97cre9.js} +0 -0
  350. /package/dist/{esm-browser-DTc9IK3D.cjs → esm-browser-bweqfBlL.cjs} +0 -0
  351. /package/dist/{feature-flag-key.vo-ofrB6ZVQ.js → feature-flag-key.vo-DN_-4-sG.js} +0 -0
  352. /package/dist/{feature-flag-key.vo-BPz-ZAp6.cjs → feature-flag-key.vo-RlfHL3hq.cjs} +0 -0
  353. /package/dist/{first-state-of-status-OROkXcRv.cjs → first-state-of-status-CbT7hPa4.cjs} +0 -0
  354. /package/dist/{first-state-of-status-DQnMT3ya.js → first-state-of-status-unPynOuM.js} +0 -0
  355. /package/dist/{init-Es3wHW7D.js → init-829HRYcz.js} +0 -0
  356. /package/dist/{init-CKipPE_c.js → init-A-VyGSNW2.js} +0 -0
  357. /package/dist/{init-DFQQ9dTW.cjs → init-Atisw4x2.cjs} +0 -0
  358. /package/dist/{init-C5CEZ1m0.cjs → init-BFcvPHL-.cjs} +0 -0
  359. /package/dist/{init-IAk_CkGa.cjs → init-BgNobbNq.cjs} +0 -0
  360. /package/dist/{init-cqN3uX2j.js → init-atCFur0v.js} +0 -0
  361. /package/dist/{is-redux-persist-state-CTn3WZVh.cjs → is-redux-persist-state-BCFnSm36.cjs} +0 -0
  362. /package/dist/{is-redux-persist-state-Cxcd0_bM.js → is-redux-persist-state-yBfq0h_E.js} +0 -0
  363. /package/dist/{key-value-store-8cMzeNyG.js → key-value-store--W3SrMaw.js} +0 -0
  364. /package/dist/{key-value-store-DUAepXQf.cjs → key-value-store-C2Xt5Emp.cjs} +0 -0
  365. /package/dist/{repo-slice-WxetRhMY.cjs → repo-slice-7X4AYYVm.cjs} +0 -0
  366. /package/dist/{repo-slice-DwyMhCR1.js → repo-slice-RxFm0zDZ.js} +0 -0
  367. /package/dist/{reselect-CRDqmQY9.cjs → reselect-Bd94u0K-.cjs} +0 -0
  368. /package/dist/{reselect-C06X06oX.js → reselect-CGoLzEPv.js} +0 -0
  369. /package/dist/{serializable-B8GahgE1.js → serializable-BHdKIgk3.js} +0 -0
  370. /package/dist/{serializable-CRdnFaLZ.cjs → serializable-BxHkoPdk.cjs} +0 -0
  371. /package/dist/{slice-D11FHQuQ.cjs → slice-BiRsDKOK.cjs} +0 -0
  372. /package/dist/{slice-Be7hj4Iy.js → slice-Bk0Sv05J.js} +0 -0
  373. /package/dist/{slice-FioKeHtA.cjs → slice-Dqw1ecum.cjs} +0 -0
  374. /package/dist/{slice-B87b52iM.js → slice-obCSLm1x.js} +0 -0
  375. /package/dist/{src-vq1wS9sZ.js → src-BlxEp6Mm.js} +0 -0
  376. /package/dist/{src-BTPIvlDI.cjs → src-Cqp0B2M_.cjs} +0 -0
  377. /package/dist/{time.vo-CQ8pSXz2.cjs → time.vo-D3wWRw9L.cjs} +0 -0
  378. /package/dist/{time.vo-DkYYGYp6.js → time.vo-tNheinXm.js} +0 -0
  379. /package/dist/{toEmpty-CgAl3097.js → toEmpty-8Zax1MPd.js} +0 -0
  380. /package/dist/{toEmpty-DAMmNB5r.cjs → toEmpty-CYAbupM4.cjs} +0 -0
  381. /package/dist/{token-id.vo-ClsroxHO.js → token-id.vo-Bvwhr3ZE.js} +0 -0
  382. /package/dist/{token-id.vo-BxG9TG0O.cjs → token-id.vo-DXv5uS9n.cjs} +0 -0
  383. /package/dist/{util-DxzlYNS5.js → util-C8a4fA9p.js} +0 -0
  384. /package/dist/{util-CmdAhheh.cjs → util-CzeB3hfa.cjs} +0 -0
  385. /package/dist/{util-selector-CcK-GAdE.js → util-selector-BSTsxgne.js} +0 -0
  386. /package/dist/{util-selector-BcAncU4L.cjs → util-selector-BWPH68_l.cjs} +0 -0
  387. /package/dist/{while-active-BpppWuCs.js → while-active-B0lWy_6l.js} +0 -0
  388. /package/dist/{while-active-Dhc2LwOm.cjs → while-active-Dsowp0Fi.cjs} +0 -0
@@ -0,0 +1,1108 @@
1
+ const require_rolldown_runtime = require("./rolldown-runtime-Br2OG8yv.cjs");
2
+ const require_codecs = require("./codecs-Cswkg7Tm.cjs");
3
+ const require_util = require("./util-Bu4W5lF4.cjs");
4
+ const require_bytes_vo = require("./bytes.vo-BNRquqaO.cjs");
5
+ const require_sdk = require("./sdk-DffwmX8b.cjs");
6
+ const require_guarded_transaction_signer = require("./guarded-transaction-signer-MFpPg98D.cjs");
7
+ const require_asyncoption = require("./asyncoption-i0VbqVTq.cjs");
8
+ const require_key_source = require("./key-source-5oUBFiC7.cjs");
9
+ const require_store = require("./store-B1Lq3cEf.cjs");
10
+ const require_slice = require("./slice-DTZTiJle.cjs");
11
+ const require_in_memory_wallet_integration = require("./in-memory-wallet-integration-t9I00R_V.cjs");
12
+ const require_cardano_tx_id_vo = require("./cardano-tx-id.vo-TLjJZHCI.cjs");
13
+ const require_const = require("./const-D-eZIS4n.cjs");
14
+ const require_TransactionBuilder = require("./TransactionBuilder-X1H9Gze6.cjs");
15
+ const require_composite_signer_factory = require("./composite-signer-factory-m5cVs9h_.cjs");
16
+ const require_contract = require("./contract-MKLzYVkW.cjs");
17
+ let _laceio_cardano_key_management = require("@laceio/cardano/key-management");
18
+ let _laceio_cardano_crypto = require("@laceio/cardano/crypto");
19
+ let _laceio_cardano_core = require("@laceio/cardano/core");
20
+ let rxjs = require("rxjs");
21
+ let ts_log = require("ts-log");
22
+ //#region src/cardano-lazy-in-memory-signer-factory.ts
23
+ /**
24
+ * Signer factory for {@link WalletType.LazyInMemory} Cardano accounts.
25
+ *
26
+ * The mnemonic is never persisted by Lace. Its derived account key must match
27
+ * the selected account before signing, regardless of the mnemonic source.
28
+ */
29
+ var CardanoLazyInMemorySignerFactory = class {
30
+ #withMnemonicWords;
31
+ constructor(props) {
32
+ this.#withMnemonicWords = props.withMnemonicWords;
33
+ }
34
+ canSign(account) {
35
+ return account.accountType === "LazyInMemory" && account.blockchainName === "Cardano";
36
+ }
37
+ createTransactionSigner(context) {
38
+ this.#assertSupported(context);
39
+ const { knownAddresses, utxo, auth } = context;
40
+ const accountProps = this.#extractAccountProps(context);
41
+ return require_guarded_transaction_signer.withCollateralOwnershipGuard(new require_guarded_transaction_signer.CardanoInMemoryTransactionSigner({
42
+ withKeyAgent$: this.#buildWithKeyAgent$(accountProps),
43
+ knownAddresses,
44
+ utxo,
45
+ auth
46
+ }), context);
47
+ }
48
+ createDataSigner(context) {
49
+ this.#assertSupported(context);
50
+ const { knownAddresses, auth } = context;
51
+ const accountProps = this.#extractAccountProps(context);
52
+ return new require_guarded_transaction_signer.CardanoInMemoryDataSigner({
53
+ withKeyAgent$: this.#buildWithKeyAgent$(accountProps),
54
+ dRepKeyHash$: (0, rxjs.defer)(() => (0, rxjs.from)(require_guarded_transaction_signer.deriveDRepKeyHash(accountProps))),
55
+ knownAddresses,
56
+ auth
57
+ });
58
+ }
59
+ #buildWithKeyAgent$(accountProps) {
60
+ return (use) => new rxjs.Observable((subscriber) => {
61
+ const cancelled$ = new rxjs.Subject();
62
+ const assertActive = () => {
63
+ if (subscriber.closed) throw new Error("Signing request cancelled.");
64
+ };
65
+ this.#withMnemonicWords(async (words) => {
66
+ assertActive();
67
+ const mnemonicWords = [...words];
68
+ const keyAgent = await require_guarded_transaction_signer.createCardanoKeyAgentFromMnemonic({
69
+ accountIndex: accountProps.accountIndex,
70
+ chainId: accountProps.chainId,
71
+ mnemonicWords
72
+ });
73
+ try {
74
+ assertActive();
75
+ if (keyAgent.extendedAccountPublicKey !== accountProps.extendedAccountPublicKey) throw new require_contract.LazyWalletMismatchError();
76
+ return await (0, rxjs.lastValueFrom)(use(keyAgent).pipe((0, rxjs.takeUntil)(cancelled$)));
77
+ } finally {
78
+ keyAgent.dispose?.();
79
+ }
80
+ }).then((result) => {
81
+ if (!subscriber.closed) {
82
+ subscriber.next(result);
83
+ subscriber.complete();
84
+ }
85
+ }, (error) => {
86
+ if (!subscriber.closed) subscriber.error(error);
87
+ });
88
+ return () => {
89
+ cancelled$.next();
90
+ cancelled$.complete();
91
+ };
92
+ });
93
+ }
94
+ #assertSupported(context) {
95
+ const account = context.wallet.accounts.find((a) => a.accountId === context.accountId);
96
+ if (!account || !this.canSign(account)) throw new Error(`CardanoLazyInMemorySignerFactory does not support account type: ${account?.accountType ?? "unknown"}`);
97
+ }
98
+ #extractAccountProps(context) {
99
+ const { wallet, accountId } = context;
100
+ const account = wallet.accounts.find((a) => a.accountId === accountId);
101
+ if (!account) throw new Error(`Account ${accountId} not found in wallet`);
102
+ if (account.blockchainName !== "Cardano") throw new Error(`Account ${accountId} is not a Cardano account`);
103
+ const { accountIndex, chainId, extendedAccountPublicKey } = account.blockchainSpecific;
104
+ return {
105
+ accountIndex,
106
+ chainId,
107
+ extendedAccountPublicKey
108
+ };
109
+ }
110
+ };
111
+ //#endregion
112
+ //#region src/create-lazy-in-memory-vault-module.ts
113
+ /**
114
+ * Builds a vault module that signs for {@link WalletType.LazyInMemory}
115
+ * Cardano accounts by asking `withMnemonicWords` for the recovery words at
116
+ * each signature. The words must derive the account's stored key, or signing
117
+ * fails with `LazyWalletMismatchError`.
118
+ *
119
+ * Pass the returned module to `createLaceWallet({ modules: [...] })`. Only the
120
+ * `signer-factory-addon` contract is implemented — `vaultContract` is
121
+ * intentionally omitted because the SDK has no encrypted vault to expose to
122
+ * features such as account management or password verification.
123
+ *
124
+ * @param props - The source of the recovery words.
125
+ * @returns A module for the `modules` array of `createLaceWallet`.
126
+ */
127
+ const createLazyInMemoryVaultModule = (props) => {
128
+ const signerFactory = new CardanoLazyInMemorySignerFactory(props);
129
+ const implementsContracts = require_store.combineContracts([require_sdk.signerFactoryAddonContract]);
130
+ return require_store.inferModuleContext({
131
+ moduleName: require_sdk.ModuleName("lazy-in-memory-vault"),
132
+ implements: implementsContracts,
133
+ addons: { loadSignerFactory: async () => ({ default: () => signerFactory }) }
134
+ });
135
+ };
136
+ //#endregion
137
+ //#region src/passkey-vault-module.ts
138
+ /**
139
+ * A lazy vault module whose recovery words come from a fresh assertion of a
140
+ * passkey at each signature: the words derive from the passkey and are
141
+ * checked against the account's stored key before anything is signed. The
142
+ * assertion stays open until the Cardano signature completes.
143
+ *
144
+ * @param props - The passkey.
145
+ * @returns A module for the `modules` array of `createLaceWallet`.
146
+ */
147
+ const createPasskeyVaultModule = ({ keySource }) => createLazyInMemoryVaultModule({ withMnemonicWords: async (use) => keySource.withPasskeyMnemonic(use) });
148
+ //#endregion
149
+ //#region src/passkey-account-public-key.ts
150
+ /** Use the same CIP-3 Icarus account derivation as Cardano's wallet integration. */
151
+ const passkeyAccountPublicKey = async (words) => {
152
+ const passphrase = crypto.getRandomValues(new Uint8Array(32));
153
+ try {
154
+ return (await _laceio_cardano_key_management.InMemoryKeyAgent.fromBip39MnemonicWords({
155
+ accountIndex: 0,
156
+ chainId: _laceio_cardano_core.Cardano.ChainIds.Mainnet,
157
+ getPassphrase: async () => passphrase,
158
+ mnemonicWords: [...words],
159
+ purpose: _laceio_cardano_key_management.KeyPurpose.STANDARD
160
+ }, {
161
+ bip32Ed25519: await _laceio_cardano_crypto.SodiumBip32Ed25519.create(),
162
+ logger: ts_log.dummyLogger
163
+ })).serializableData.extendedAccountPublicKey;
164
+ } finally {
165
+ passphrase.fill(0);
166
+ }
167
+ };
168
+ //#endregion
169
+ //#region src/passkey-wallet-mismatch-error.ts
170
+ /**
171
+ * The passkey, or the signer, serves another account than the one expected:
172
+ * another credential, relying party or account key than the saved binding or
173
+ * public key names.
174
+ */
175
+ var PasskeyWalletMismatchError = class extends Error {
176
+ constructor() {
177
+ super("Passkey does not match the saved Cardano wallet.");
178
+ this.name = "PasskeyWalletMismatchError";
179
+ }
180
+ };
181
+ //#endregion
182
+ //#region src/passkey-wallet-entity.ts
183
+ const fingerprint = (publicKey) => require_codecs.bytesToHex(require_codecs.sha256(new TextEncoder().encode(publicKey)));
184
+ /**
185
+ * Derives the Cardano wallet of a passkey in one assertion, checks it against
186
+ * an expected binding, and returns its wallet entity with the binding to
187
+ * persist. The entity is a `LazyInMemoryWallet`: it stores only public keys,
188
+ * and `createPasskeyVaultModule` signs for it.
189
+ *
190
+ * @param wallet - The wallet the entity is for.
191
+ * @param props - The key source, the name and the saved binding.
192
+ * @returns The entity, for `wallets.addWallet`, and the binding to persist.
193
+ * Rejects with `PasskeyWalletMismatchError` when the passkey serves another
194
+ * account than `expectedBinding`.
195
+ */
196
+ const createPasskeyWalletEntity = async (wallet, { keySource, walletName, expectedBinding }) => {
197
+ const ref = keySource.credentialRef();
198
+ if (expectedBinding && ref && (ref.credentialId !== expectedBinding.credentialId || ref.rpId !== expectedBinding.rpId || ref.recipeVersion !== expectedBinding.recipeVersion)) throw new PasskeyWalletMismatchError();
199
+ return keySource.withPasskeyMnemonic(async (words) => {
200
+ const assertedRef = keySource.credentialRef();
201
+ if (!assertedRef || ref && assertedRef.credentialId !== ref.credentialId) throw new PasskeyWalletMismatchError();
202
+ const publicKey = await passkeyAccountPublicKey(words);
203
+ const binding = {
204
+ ...assertedRef,
205
+ fingerprint: fingerprint(publicKey)
206
+ };
207
+ if (expectedBinding && (binding.credentialId !== expectedBinding.credentialId || binding.rpId !== expectedBinding.rpId || binding.recipeVersion !== expectedBinding.recipeVersion || binding.fingerprint !== expectedBinding.fingerprint)) throw new PasskeyWalletMismatchError();
208
+ const entity = await require_sdk.createBlockchainWalletEntity(wallet, "Cardano", {
209
+ mnemonicWords: [...words],
210
+ walletName
211
+ });
212
+ const accounts = entity.accounts.filter((account) => account.blockchainName === "Cardano");
213
+ if (accounts.length === 0 || accounts.some((account) => account.blockchainSpecific.extendedAccountPublicKey !== publicKey)) throw new PasskeyWalletMismatchError();
214
+ return {
215
+ entity: {
216
+ ...entity,
217
+ accounts
218
+ },
219
+ binding
220
+ };
221
+ });
222
+ };
223
+ //#endregion
224
+ //#region ../../packages/lib/passkey/src/remote/protocol.ts
225
+ /** Whether a channel message is shaped like a signer response. */
226
+ const isSignerResponse = (data) => typeof data === "object" && data !== null && "id" in data && typeof data.id === "number" && "ok" in data && typeof data.ok === "boolean";
227
+ /** Whether a window or channel message carries the given `type` tag. */
228
+ const hasMessageType = (data, type) => typeof data === "object" && data !== null && "type" in data && data.type === type;
229
+ //#endregion
230
+ //#region ../../packages/lib/passkey/src/remote/client.ts
231
+ const POPUP_NAME = "lace-signer";
232
+ const POPUP_FEATURES = "popup,width=420,height=600";
233
+ const POPUP_CLOSED_POLL_INTERVAL = 500;
234
+ /**
235
+ * The low-level client underneath `createRemotePasskeySigner`: it opens the
236
+ * hosted signer page in a popup, completes the handshake over a message
237
+ * channel and carries typed requests to it.
238
+ *
239
+ * Only messages whose origin is the signer's and whose source is the popup
240
+ * this client opened are trusted: any other page that can reach the dApp
241
+ * window could otherwise complete the handshake and receive the port.
242
+ * The hello message is posted to the signer origin alone, so a popup that
243
+ * navigated elsewhere never receives the port either.
244
+ *
245
+ * The popup's loaded message is awaited from `open`, not from `connect`,
246
+ * so a dApp that awaits anything between the two cannot miss it.
247
+ */
248
+ const createSignerClient = ({ signerUrl, host = window }) => {
249
+ const signerOrigin = new URL(signerUrl).origin;
250
+ const pending = /* @__PURE__ */ new Map();
251
+ let nextId = 1;
252
+ let opened;
253
+ let port;
254
+ let didClose = false;
255
+ const close = () => {
256
+ const closing = opened;
257
+ opened = void 0;
258
+ if (closing) didClose = true;
259
+ closing?.stop();
260
+ if (closing && !closing.popup.closed) closing.popup.close();
261
+ port?.close();
262
+ port = void 0;
263
+ closing?.settleClosed();
264
+ const error = new require_key_source.SignerClosedError();
265
+ for (const request of pending.values()) request.reject(error);
266
+ pending.clear();
267
+ };
268
+ const trackPopup = (popup) => {
269
+ let stopListening = () => {};
270
+ const loaded = new Promise((resolve) => {
271
+ const onMessage = (event) => {
272
+ if (event.origin !== signerOrigin || event.source !== popup) return;
273
+ if (!hasMessageType(event.data, "signer-loaded")) return;
274
+ stopListening();
275
+ resolve();
276
+ };
277
+ host.addEventListener("message", onMessage);
278
+ stopListening = () => {
279
+ host.removeEventListener("message", onMessage);
280
+ };
281
+ });
282
+ let settleClosed = () => {};
283
+ const closed = new Promise((_, reject) => {
284
+ settleClosed = () => {
285
+ reject(new require_key_source.SignerClosedError());
286
+ };
287
+ });
288
+ closed.catch(() => {});
289
+ const interval = setInterval(() => {
290
+ if (popup.closed) close();
291
+ }, POPUP_CLOSED_POLL_INTERVAL);
292
+ return {
293
+ popup,
294
+ loaded,
295
+ closed,
296
+ settleClosed,
297
+ stop: () => {
298
+ clearInterval(interval);
299
+ stopListening();
300
+ }
301
+ };
302
+ };
303
+ const open = () => {
304
+ close();
305
+ const popup = host.open(signerUrl, POPUP_NAME, POPUP_FEATURES);
306
+ if (!popup) throw new require_key_source.SignerPopupBlockedError();
307
+ opened = trackPopup(popup);
308
+ didClose = false;
309
+ return popup;
310
+ };
311
+ const onResponse = (event) => {
312
+ if (!isSignerResponse(event.data)) return;
313
+ const response = event.data;
314
+ const request = pending.get(response.id);
315
+ if (!request) return;
316
+ pending.delete(response.id);
317
+ if (response.ok) request.resolve(response.result);
318
+ else request.reject(new require_key_source.RemoteSignerError(response.code, response.message, response.details));
319
+ };
320
+ const handshake = async ({ popup, loaded, closed }) => {
321
+ await Promise.race([loaded, closed]);
322
+ const channel = new MessageChannel();
323
+ const ready = new Promise((resolve) => {
324
+ const onReady = (event) => {
325
+ if (!hasMessageType(event.data, "ready")) return;
326
+ channel.port1.removeEventListener("message", onReady);
327
+ resolve();
328
+ };
329
+ channel.port1.addEventListener("message", onReady);
330
+ });
331
+ channel.port1.addEventListener("message", onResponse);
332
+ channel.port1.start();
333
+ port = channel.port1;
334
+ popup.postMessage({ type: "hello" }, signerOrigin, [channel.port2]);
335
+ await Promise.race([ready, closed]);
336
+ };
337
+ const connect = async () => {
338
+ if (!opened) throw new Error("The signer popup is not open.");
339
+ opened.handshake ??= handshake(opened);
340
+ return opened.handshake;
341
+ };
342
+ const request = async (kind, payload) => {
343
+ const activePort = port;
344
+ if (!activePort) {
345
+ if (didClose) throw new require_key_source.SignerClosedError();
346
+ throw new Error("The signer is not connected.");
347
+ }
348
+ const id = nextId;
349
+ nextId += 1;
350
+ return new Promise((resolve, reject) => {
351
+ pending.set(id, {
352
+ resolve,
353
+ reject
354
+ });
355
+ try {
356
+ activePort.postMessage({
357
+ id,
358
+ kind,
359
+ payload
360
+ });
361
+ } catch (error) {
362
+ pending.delete(id);
363
+ throw error;
364
+ }
365
+ });
366
+ };
367
+ return {
368
+ open,
369
+ connect,
370
+ request,
371
+ close
372
+ };
373
+ };
374
+ //#endregion
375
+ //#region src/cardano-remote-signer-factory.ts
376
+ /** The signer answered a request with a result of the wrong shape. */
377
+ var RemoteSignerResultError = class extends Error {
378
+ constructor() {
379
+ super("The signer returned a malformed result.");
380
+ this.name = "RemoteSignerResultError";
381
+ }
382
+ };
383
+ const isRecord$1 = (value) => typeof value === "object" && value !== null;
384
+ const parseSignResult = (result) => {
385
+ if (!isRecord$1(result) || typeof result.serializedTx !== "string" || typeof result.signatureCount !== "number") throw new RemoteSignerResultError();
386
+ return {
387
+ serializedTx: require_bytes_vo.HexBytes(result.serializedTx),
388
+ signatureCount: result.signatureCount
389
+ };
390
+ };
391
+ const parseSignDataResult = (result) => {
392
+ if (!isRecord$1(result) || typeof result.signature !== "string" || typeof result.key !== "string") throw new RemoteSignerResultError();
393
+ return {
394
+ signature: require_bytes_vo.HexBytes(result.signature),
395
+ key: require_bytes_vo.HexBytes(result.key)
396
+ };
397
+ };
398
+ /**
399
+ * Signer factory for {@link WalletType.LazyInMemory} Cardano accounts whose
400
+ * passkey lives with the Lace signer page. Each sign request travels to the
401
+ * signer with the transaction and the public account data, and only the
402
+ * signed transaction or signature comes back; the mnemonic never reaches
403
+ * the dApp. Consent is the Approve click inside the signer, so no local
404
+ * authentication prompt runs.
405
+ */
406
+ var CardanoRemoteSignerFactory = class {
407
+ #client;
408
+ constructor(props) {
409
+ this.#client = props.client;
410
+ }
411
+ canSign(account) {
412
+ return account.accountType === "LazyInMemory" && account.blockchainName === "Cardano";
413
+ }
414
+ createTransactionSigner(context) {
415
+ const { knownAddresses, utxo } = context;
416
+ const account = this.#resolveAccountProps(context);
417
+ return require_guarded_transaction_signer.withCollateralOwnershipGuard({ sign: ({ serializedTx }) => (0, rxjs.defer)(() => (0, rxjs.from)(this.#client.request("sign-cardano-tx", {
418
+ serializedTx,
419
+ knownAddresses,
420
+ utxo,
421
+ ...account
422
+ }))).pipe((0, rxjs.map)(parseSignResult)) }, context);
423
+ }
424
+ createDataSigner(context) {
425
+ const { knownAddresses } = context;
426
+ const account = this.#resolveAccountProps(context);
427
+ return { signData: ({ signWith, payload }) => (0, rxjs.defer)(() => (0, rxjs.from)(this.#client.request("sign-cardano-data", {
428
+ signWith,
429
+ payload,
430
+ knownAddresses,
431
+ ...account
432
+ }))).pipe((0, rxjs.map)(parseSignDataResult)) };
433
+ }
434
+ /** Reads the public account data the signer needs from the context. */
435
+ #resolveAccountProps(context) {
436
+ const account = context.wallet.accounts.find((a) => a.accountId === context.accountId);
437
+ if (!account || !this.canSign(account)) throw new Error(`CardanoRemoteSignerFactory does not support account type: ${account?.accountType ?? "unknown"}`);
438
+ const { accountIndex, chainId, extendedAccountPublicKey } = account.blockchainSpecific;
439
+ return {
440
+ accountIndex,
441
+ chainId: {
442
+ networkId: chainId.networkId,
443
+ networkMagic: chainId.networkMagic
444
+ },
445
+ extendedAccountPublicKey
446
+ };
447
+ }
448
+ };
449
+ //#endregion
450
+ //#region src/remote-cardano-vault-module.ts
451
+ /**
452
+ * Builds a vault module that signs for
453
+ * {@link WalletType.LazyInMemory} Cardano accounts through the Lace signer
454
+ * page instead of a local mnemonic. Pass the returned module to
455
+ * `createLaceWallet({ modules: [...] })`. Only the `signer-factory-addon`
456
+ * contract is implemented, as with the local lazy vault: the SDK has no
457
+ * encrypted vault to expose. A `RemotePasskeySigner` carries one ready-made,
458
+ * as `cardanoVaultModule`.
459
+ *
460
+ * @param props - The connected signer client.
461
+ * @returns A module for the `modules` array of `createLaceWallet`.
462
+ */
463
+ const createRemoteCardanoVaultModule = (props) => {
464
+ const signerFactory = new CardanoRemoteSignerFactory(props);
465
+ const implementsContracts = require_store.combineContracts([require_sdk.signerFactoryAddonContract]);
466
+ return require_store.inferModuleContext({
467
+ moduleName: require_sdk.ModuleName("remote-cardano-vault"),
468
+ implements: implementsContracts,
469
+ addons: { loadSignerFactory: async () => ({ default: () => signerFactory }) }
470
+ });
471
+ };
472
+ //#endregion
473
+ //#region src/remote-cardano-account-public-key.ts
474
+ const isRecord = (value) => typeof value === "object" && value !== null;
475
+ const parseAccountPublicKeyResult = (result, accountIndex) => {
476
+ if (!isRecord(result) || result.accountIndex !== accountIndex || typeof result.extendedAccountPublicKey !== "string") throw new RemoteSignerResultError();
477
+ try {
478
+ return (0, _laceio_cardano_crypto.Bip32PublicKeyHex)(result.extendedAccountPublicKey);
479
+ } catch {
480
+ throw new RemoteSignerResultError();
481
+ }
482
+ };
483
+ /**
484
+ * Asks the signer for the extended public key of one Cardano account. The
485
+ * signer asks the user to share it, so it is one consent per call; the
486
+ * result is public and safe for the dApp to persist.
487
+ */
488
+ const requestRemoteCardanoAccountPublicKey = async (client, accountIndex) => parseAccountPublicKeyResult(await client.request("cardano-account-public-key", { accountIndex }), accountIndex);
489
+ //#endregion
490
+ //#region src/remote-passkey-signer.ts
491
+ /**
492
+ * Creates one connection to the hosted Lace signer page and everything a dApp
493
+ * signs Cardano transactions and data with through it: the connection's
494
+ * `open`, `connect`, `close` and `request`, the `cardanoVaultModule` and
495
+ * `accountPublicKey(index)`.
496
+ *
497
+ * It composes {@link createSignerClient} with the remote Cardano vault
498
+ * module, so a dApp gets one connection to the Lace signer page instead of
499
+ * building its own key source. The hosted signer is a self-custodial wallet:
500
+ * wallet keys are derived and used in its window in the user's browser, and
501
+ * the passkey stays in the user's authenticator. The dApp receives public
502
+ * keys and signatures only.
503
+ *
504
+ * `open` must run synchronously inside the user's click handler: browsers
505
+ * refuse a popup opened after an await. Call `connect` right after `open`
506
+ * to complete the handshake; calling it before the popup is open rejects.
507
+ *
508
+ * Each Cardano signature is its own Approve click in the signer window and
509
+ * its own fresh passkey assertion.
510
+ *
511
+ * @param props - The signer page's URL and the window that opens it.
512
+ * @returns The signer. Call `open()` synchronously in a click handler, then
513
+ * `await connect()`.
514
+ */
515
+ const createRemotePasskeySigner = ({ signerUrl, host }) => {
516
+ const client = createSignerClient({
517
+ signerUrl,
518
+ host
519
+ });
520
+ return {
521
+ open: client.open,
522
+ connect: client.connect,
523
+ close: client.close,
524
+ request: client.request,
525
+ cardanoVaultModule: createRemoteCardanoVaultModule({ client }),
526
+ accountPublicKey: async (accountIndex) => requestRemoteCardanoAccountPublicKey(client, accountIndex)
527
+ };
528
+ };
529
+ //#endregion
530
+ //#region ../../packages/module/blockchain-cardano/src/sdk-contracts.ts
531
+ const implementsContracts = require_store.combineContracts([
532
+ require_sdk.inMemoryIntegrationAddonContract,
533
+ require_sdk.tokensStoreContract,
534
+ require_sdk.addressesStoreContract,
535
+ require_sdk.signerFactoryAddonContract,
536
+ require_sdk.syncStoreContract,
537
+ require_contract.addressBookAddressValidatorAddonContract,
538
+ require_sdk.delegationTxBuilderAddonContract,
539
+ require_sdk.cardanoInMemorySigningDependencyContract,
540
+ require_contract.tokenIdMapperAddonContract,
541
+ require_sdk.deregistrationTxBuilderAddonContract,
542
+ require_sdk.voteDelegationTxBuilderAddonContract,
543
+ require_sdk.earnRewardsTxBuilderAddonContract
544
+ ]);
545
+ const dependsOnContracts = require_store.combineContracts([
546
+ require_sdk.featureStoreContract,
547
+ require_sdk.cardanoProviderStoreContract,
548
+ require_sdk.walletRepoStoreContract
549
+ ]);
550
+ //#endregion
551
+ //#region ../../packages/module/blockchain-cardano/src/store/index.ts
552
+ var store_default$1 = require_store.inferStoreContext({
553
+ load: async () => Promise.resolve().then(() => require("./init-Clu8pxwQ.cjs")),
554
+ context: {
555
+ actions: {},
556
+ selectors: {}
557
+ }
558
+ });
559
+ //#endregion
560
+ //#region ../../packages/module/blockchain-cardano/src/sdk.ts
561
+ /**
562
+ * Cardano accounts: their addresses, tokens and sync, signing, and the
563
+ * transaction builders for delegation, voting and rewards. Loads when
564
+ * `FEATURE_FLAG_CARDANO` is enabled, and needs a Cardano provider module such
565
+ * as `m.cardanoProviderBlockfrost`.
566
+ */
567
+ var sdk_default$2 = require_store.inferModuleContext({
568
+ moduleName: require_sdk.ModuleName("blockchain-cardano"),
569
+ implements: implementsContracts,
570
+ dependsOn: dependsOnContracts,
571
+ feature: {
572
+ willLoad: (featureFlags) => featureFlags.some((flag) => flag.key === require_const.FEATURE_FLAG_CARDANO),
573
+ metadata: {
574
+ name: "Cardano",
575
+ description: "Cardano blockchain support"
576
+ }
577
+ },
578
+ store: store_default$1,
579
+ addons: {
580
+ loadInMemoryWalletIntegration: async () => Promise.resolve().then(() => require("./in-memory-wallet-integration-Cm6P8sk6.cjs")),
581
+ loadAddressBookAddressValidators: async () => Promise.resolve().then(() => require("./address-book-address-validator-Dte_YQ2L.cjs")),
582
+ loadDelegationTxBuilder: async () => Promise.resolve().then(() => require("./delegation-tx-builder-Dof_0N_d.cjs")),
583
+ loadTokenIdMapper: async () => Promise.resolve().then(() => require("./token-id-mapper-CVyQJUKY.cjs")),
584
+ loadDeregistrationTxBuilder: async () => Promise.resolve().then(() => require("./deregistration-tx-builder-CcLwyFpj.cjs")),
585
+ loadVoteDelegationTxBuilder: async () => Promise.resolve().then(() => require("./vote-delegation-tx-builder-DSs8nybk.cjs")),
586
+ loadEarnRewardsTxBuilder: async () => Promise.resolve().then(() => require("./earn-rewards-tx-builder-BP5JMIKS.cjs")),
587
+ loadSignerFactory: async () => Promise.resolve().then(() => require("./signer-factory-Ds6G2AZk.cjs"))
588
+ }
589
+ });
590
+ //#endregion
591
+ //#region src/remote-passkey-wallet-entity.ts
592
+ /**
593
+ * Builds a Cardano wallet entity from the public account key the user agrees
594
+ * to share through the hosted self-custodial passkey wallet. It fails
595
+ * closed with {@link PasskeyWalletMismatchError} when that key differs from
596
+ * `expectedPublicKey`.
597
+ *
598
+ * The entity is a {@link WalletType.LazyInMemory} wallet built from the
599
+ * public account key alone:
600
+ * no mnemonic, PRF output or encrypted root ever reaches the dApp, so there
601
+ * is nothing secret to persist. Wallet keys stay in the signer's window in
602
+ * the user's browser. The wallet id is derived from the public key.
603
+ *
604
+ * Mainnet and testnet accounts are returned; consumers choose which to expose.
605
+ *
606
+ * @param props - The signer, the name, the account and the saved key.
607
+ * @returns The entity and the public key to persist.
608
+ */
609
+ const createRemotePasskeyWalletEntity = async ({ signer, walletName, accountIndex = 0, expectedPublicKey, order = 0 }) => {
610
+ const publicKey = await signer.accountPublicKey(accountIndex);
611
+ if (expectedPublicKey !== void 0 && publicKey !== expectedPublicKey) throw new PasskeyWalletMismatchError();
612
+ const walletId = require_sdk.WalletId.deriveFromBip32PublicKey(publicKey);
613
+ return {
614
+ entity: {
615
+ accounts: require_in_memory_wallet_integration.createLazyAccountsFromAccountPublicKey({
616
+ walletId,
617
+ accountIndex,
618
+ extendedAccountPublicKey: publicKey
619
+ }),
620
+ blockchainSpecific: {},
621
+ metadata: {
622
+ name: walletName,
623
+ order
624
+ },
625
+ type: require_sdk.WalletType.LazyInMemory,
626
+ walletId
627
+ },
628
+ publicKey
629
+ };
630
+ };
631
+ //#endregion
632
+ //#region src/create-tx-builder.ts
633
+ /**
634
+ * Creates a {@link TransactionBuilder} pre-configured with the active Cardano
635
+ * network and protocol parameters from the wallet's Redux state.
636
+ *
637
+ * Call {@link waitForNetworkInfo} first to ensure the state is ready.
638
+ *
639
+ * @param wallet - A wallet with the Cardano modules loaded (see
640
+ * {@link WalletWithCardanoContext}), whose network info has arrived.
641
+ * @returns `Ok` with the builder, or `Err` until the chain ID and protocol
642
+ * parameters are in the wallet's state.
643
+ */
644
+ const createTxBuilder = (wallet) => {
645
+ const state = wallet.getState();
646
+ const chainId = require_slice.cardanoContextSelectors.cardanoContext.selectChainId(state);
647
+ if (!chainId) return require_asyncoption.Err(/* @__PURE__ */ new Error("Cardano network not initialized — ensure a wallet entity has been created and the Cardano blockchain module is loaded"));
648
+ const protocolParameters = require_slice.cardanoContextSelectors.cardanoContext.selectProtocolParameters(state);
649
+ if (!protocolParameters) return require_asyncoption.Err(/* @__PURE__ */ new Error("Protocol parameters not available — ensure the Cardano provider has synced"));
650
+ return require_asyncoption.Ok(new require_TransactionBuilder.TransactionBuilder(chainId.networkMagic, protocolParameters));
651
+ };
652
+ /**
653
+ * Returns a promise that resolves once the Cardano network info (chain ID and
654
+ * protocol parameters) is available in the wallet state. Await this before
655
+ * calling {@link createTxBuilder} to guarantee it succeeds.
656
+ *
657
+ * @param wallet - A wallet with the Cardano modules loaded (see
658
+ * {@link WalletWithCardanoContext}).
659
+ * @param options - Optional configuration.
660
+ * @returns The chain ID and protocol parameters, once both are in state.
661
+ */
662
+ const waitForNetworkInfo = async (wallet, options) => (0, rxjs.firstValueFrom)((0, rxjs.combineLatest)([wallet.stateObservables.cardanoContext.selectChainId$, wallet.stateObservables.cardanoContext.selectProtocolParameters$]).pipe((0, rxjs.filter)((pair) => pair[0] != null && pair[1] != null), (0, rxjs.map)(([chainId, protocolParameters]) => ({
663
+ chainId,
664
+ protocolParameters
665
+ })), options?.timeout != null ? (0, rxjs.timeout)({ first: options.timeout }) : passthrough()));
666
+ const passthrough = () => (source$) => source$;
667
+ //#endregion
668
+ //#region src/sign-cardano-tx.ts
669
+ const isSignableCardanoWallet = (wallet) => wallet.type === require_sdk.WalletType.InMemory || wallet.type === require_sdk.WalletType.LazyInMemory;
670
+ /**
671
+ * Signs a Cardano transaction with the wallet's keys, through the signer of
672
+ * its wallet kind, with no confirmation prompt of the SDK's own: confirm with
673
+ * the user before calling it. The account is `props.accountId`, or the only
674
+ * signable Cardano account on the active network.
675
+ *
676
+ * @param wallet - A wallet holding the signing account (see
677
+ * {@link WalletWithCardanoSigning}).
678
+ * @param props - The unsigned transaction, and the password and account when
679
+ * needed.
680
+ * @returns `Ok` with the signed transaction, ready for `submitCardanoTx`, or
681
+ * `Err` when no account matches, the password is missing or signing fails.
682
+ * It never rejects.
683
+ */
684
+ const signCardanoTx = async (wallet, props) => {
685
+ const { serializedTx, password, accountId: requestedAccountId } = props;
686
+ try {
687
+ const { stateObservables: obs } = wallet;
688
+ const allWallets = await (0, rxjs.firstValueFrom)(obs.wallets.selectAll$);
689
+ const activeNetworkIds = await (0, rxjs.firstValueFrom)(obs.network.selectAllActiveNetworkIds$);
690
+ const allAddresses = await (0, rxjs.firstValueFrom)(obs.addresses.selectAllAddresses$);
691
+ const accountUtxos = await (0, rxjs.firstValueFrom)(obs.cardanoContext.selectCollateralOwnershipUtxos$);
692
+ const signableWallets = allWallets.filter(isSignableCardanoWallet);
693
+ const cardanoAccounts = signableWallets.flatMap((w) => w.accounts.filter((a) => a.blockchainName === "Cardano" && activeNetworkIds.includes(a.blockchainNetworkId)));
694
+ let accountId;
695
+ let walletEntity;
696
+ if (requestedAccountId) {
697
+ const found = cardanoAccounts.find((a) => a.accountId === requestedAccountId);
698
+ if (!found) return require_asyncoption.Err(/* @__PURE__ */ new Error(`Cardano account "${requestedAccountId}" not found on the active network`));
699
+ accountId = found.accountId;
700
+ walletEntity = signableWallets.find((w) => w.walletId === found.walletId);
701
+ } else {
702
+ if (cardanoAccounts.length === 0) return require_asyncoption.Err(/* @__PURE__ */ new Error("No Cardano accounts found on the active network"));
703
+ if (cardanoAccounts.length > 1) return require_asyncoption.Err(/* @__PURE__ */ new Error(`Multiple Cardano accounts found (${cardanoAccounts.length}) — specify accountId to disambiguate`));
704
+ const account = cardanoAccounts[0];
705
+ accountId = account.accountId;
706
+ walletEntity = signableWallets.find((w) => w.walletId === account.walletId);
707
+ }
708
+ if (walletEntity.type === require_sdk.WalletType.InMemory && !password) return require_asyncoption.Err(/* @__PURE__ */ new Error("password is required for InMemory wallets — supply props.password or use a LazyInMemory wallet"));
709
+ const knownAddresses = allAddresses.filter((addr) => addr.accountId === accountId && addr.blockchainName === "Cardano").filter(require_util.isCardanoAddress).map((addr) => ({
710
+ data: addr.data,
711
+ address: addr.address
712
+ })).filter((addr) => !!addr.data).map((addr) => ({
713
+ type: addr.data.type,
714
+ index: addr.data.index,
715
+ networkId: addr.data.networkId,
716
+ accountIndex: addr.data.accountIndex,
717
+ address: _laceio_cardano_core.Cardano.PaymentAddress(addr.address),
718
+ rewardAccount: _laceio_cardano_core.Cardano.RewardAccount(addr.data.rewardAccount),
719
+ stakeKeyDerivationPath: addr.data.stakeKeyDerivationPath
720
+ }));
721
+ const utxo = accountUtxos[accountId] ?? [];
722
+ const auth = {
723
+ authenticate: () => (0, rxjs.of)(true),
724
+ accessAuthSecret: (callback) => password ? callback(require_sdk.AuthSecret(require_bytes_vo.ByteArray(password))) : (0, rxjs.throwError)(() => /* @__PURE__ */ new Error("accessAuthSecret called on a wallet that has no password — this is a LazyInMemory wallet; signer factories must not access the auth secret"))
725
+ };
726
+ const signerFactory = new require_composite_signer_factory.CompositeSignerFactory(await wallet._loadModules("addons.loadSignerFactory"));
727
+ const context = {
728
+ wallet: walletEntity,
729
+ accountId,
730
+ knownAddresses,
731
+ utxo,
732
+ collateralInputResolver: require_util.createInputResolver(utxo),
733
+ auth
734
+ };
735
+ return require_asyncoption.Ok(await (0, rxjs.firstValueFrom)(signerFactory.createTransactionSigner(context).sign({ serializedTx: require_bytes_vo.HexBytes(serializedTx) })));
736
+ } catch (error) {
737
+ return require_asyncoption.Err(error instanceof Error ? error : new Error(String(error)));
738
+ }
739
+ };
740
+ //#endregion
741
+ //#region src/submit-cardano-tx.ts
742
+ const SUBMIT_TX_TIMEOUT_MS = 6e4;
743
+ /**
744
+ * Submits a signed transaction through the wallet's Cardano provider and
745
+ * waits up to 60 seconds for the provider's answer.
746
+ *
747
+ * @param wallet - A wallet with the Cardano modules loaded (see
748
+ * {@link WalletWithCardanoSubmit}).
749
+ * @param props - The signed transaction.
750
+ * @returns `Ok` with the transaction ID once the provider accepts it, or
751
+ * `Err` with the provider's refusal or a timeout. It never rejects.
752
+ */
753
+ const submitCardanoTx = async (wallet, props) => {
754
+ const { serializedTx } = props;
755
+ try {
756
+ const txId = require_cardano_tx_id_vo.CardanoTxId.fromCbor(serializedTx);
757
+ const resultPromise = (0, rxjs.firstValueFrom)((0, rxjs.merge)(wallet.actionObservables.cardanoContext.submitTxCompleted$.pipe((0, rxjs.filter)(({ payload }) => payload.txId === txId), (0, rxjs.map)(({ payload }) => require_asyncoption.Ok({ txId: payload.txId }))), wallet.actionObservables.cardanoContext.submitTxFailed$.pipe((0, rxjs.filter)(({ payload }) => payload.txId === txId), (0, rxjs.map)(({ payload }) => require_asyncoption.Err(new Error(payload.error))))).pipe((0, rxjs.timeout)(SUBMIT_TX_TIMEOUT_MS)));
758
+ wallet.dispatch("cardanoContext.submitTx", { serializedTx });
759
+ return await resultPromise;
760
+ } catch (error) {
761
+ return require_asyncoption.Err(error instanceof Error ? error : new Error(String(error)));
762
+ }
763
+ };
764
+ //#endregion
765
+ //#region ../../packages/module/swap-provider-steelswap/src/steelswap/steelswap-mappers.ts
766
+ const STEELSWAP_PROVIDER_ID = "steelswap";
767
+ const STEELSWAP_PARTNER = "lace-aggregator";
768
+ const STEELSWAP_PARTNER_ADDRESS = "$lace@steelswap";
769
+ const LOVELACE_DECIMALS = 6;
770
+ const QUOTE_EXPIRY_MS = 15e3;
771
+ const DEFAULT_PARTNER = {
772
+ name: STEELSWAP_PARTNER,
773
+ address: STEELSWAP_PARTNER_ADDRESS
774
+ };
775
+ const lovelaceToAda = (lovelace) => (lovelace / 10 ** LOVELACE_DECIMALS).toFixed(2);
776
+ const makeLovelaceFee = (label, amount) => ({
777
+ label,
778
+ amount: String(amount),
779
+ tokenId: "lovelace",
780
+ displayAmount: lovelaceToAda(amount),
781
+ displayCurrency: "ADA"
782
+ });
783
+ const toSmallestUnit = (displayAmount, decimals) => {
784
+ const number_ = Number(displayAmount);
785
+ if (Number.isNaN(number_) || number_ === 0) return 0;
786
+ return Math.round(number_ * 10 ** decimals);
787
+ };
788
+ const toEstimateRequest = (request, partner = DEFAULT_PARTNER) => ({
789
+ tokenA: request.sellTokenId,
790
+ tokenB: request.buyTokenId,
791
+ quantity: toSmallestUnit(request.sellAmount, request.sellTokenDecimals),
792
+ ignoreDexes: request.excludedDexes,
793
+ partner: partner.name,
794
+ hop: true,
795
+ da: []
796
+ });
797
+ const fromEstimateResponse = (response, request) => {
798
+ const route = (response.pools ?? (response.splitGroup ?? []).flat().flatMap((split) => split.pools ?? [])).map((pool) => ({
799
+ dexName: pool.dex,
800
+ sellTokenId: response.tokenA,
801
+ buyTokenId: response.tokenB,
802
+ percentage: response.quantityA > 0 ? pool.quantityA / response.quantityA : 0
803
+ }));
804
+ const fees = [makeLovelaceFee("v2.swap.review.network-fee", response.totalFee), makeLovelaceFee("v2.swap.review.service-fee", response.steelswapFee)];
805
+ const deposit = response.totalDeposit > 0 ? {
806
+ amount: String(response.totalDeposit),
807
+ displayAmount: lovelaceToAda(response.totalDeposit),
808
+ displayCurrency: "ADA"
809
+ } : void 0;
810
+ const totalFeeLovelace = response.totalFee + response.steelswapFee;
811
+ return {
812
+ routeId: `steelswap-${request.sellTokenId}-${request.buyTokenId}-${Date.now()}`,
813
+ providerId: STEELSWAP_PROVIDER_ID,
814
+ sellTokenId: response.tokenA,
815
+ buyTokenId: response.tokenB,
816
+ sellAmount: String(response.quantityA),
817
+ expectedBuyAmount: String(response.quantityB),
818
+ price: response.price,
819
+ priceDisplay: `${response.price.toFixed(6)}`,
820
+ fees,
821
+ totalFeeDisplay: `${lovelaceToAda(totalFeeLovelace)} ADA`,
822
+ deposit,
823
+ route,
824
+ quoteExpiresAt: Date.now() + QUOTE_EXPIRY_MS
825
+ };
826
+ };
827
+ const toBuildRequest = (request, partner = DEFAULT_PARTNER) => ({
828
+ tokenA: request.quote.sellTokenId,
829
+ tokenB: request.quote.buyTokenId,
830
+ quantity: Number(request.quote.sellAmount),
831
+ ignoreDexes: [],
832
+ partner: partner.name,
833
+ hop: true,
834
+ da: [],
835
+ address: request.userAddress,
836
+ forwardAddress: "",
837
+ utxos: request.utxos,
838
+ collateral: request.collateralUtxos,
839
+ slippage: Math.round(request.slippage * 100),
840
+ pAddress: partner.address,
841
+ feeAdust: true,
842
+ ttl: request.ttl
843
+ });
844
+ const fromBuildResponse = (response) => ({
845
+ unsignedTxCbor: response.tx,
846
+ providerId: STEELSWAP_PROVIDER_ID
847
+ });
848
+ const getCardanoTokenIconUrl = (nftCdnUrl, policyId, assetName) => {
849
+ try {
850
+ return `${nftCdnUrl}/lace/image/${_laceio_cardano_core.Cardano.AssetFingerprint.fromParts(_laceio_cardano_core.Cardano.PolicyId(policyId), _laceio_cardano_core.Cardano.AssetName(assetName))}?size=64`;
851
+ } catch {
852
+ return;
853
+ }
854
+ };
855
+ const fromTokenSummary = (token, nftCdnUrl) => {
856
+ const tokenKey = token.policyId && token.policyName ? `${token.policyId}${token.policyName}` : "lovelace";
857
+ const iconUrl = token.policyId && token.policyName ? getCardanoTokenIconUrl(nftCdnUrl, token.policyId, token.policyName) : void 0;
858
+ return {
859
+ id: tokenKey,
860
+ ticker: token.ticker,
861
+ name: token.name,
862
+ decimals: token.decimals,
863
+ policyId: token.policyId || void 0,
864
+ icon: iconUrl
865
+ };
866
+ };
867
+ const fromDexList = (dexNames) => dexNames.map((name) => ({
868
+ id: name,
869
+ name
870
+ }));
871
+ const extractDetailFromErrorMessage = (message) => {
872
+ const jsonStart = message.indexOf("{");
873
+ if (jsonStart === -1) return message;
874
+ try {
875
+ return JSON.parse(message.slice(jsonStart)).detail ?? message;
876
+ } catch {
877
+ return message;
878
+ }
879
+ };
880
+ const toSwapProviderError = (error) => {
881
+ if (error instanceof Error) return {
882
+ code: "PROVIDER_UNAVAILABLE",
883
+ message: extractDetailFromErrorMessage(error.message)
884
+ };
885
+ return {
886
+ code: "UNKNOWN",
887
+ message: String(error)
888
+ };
889
+ };
890
+ //#endregion
891
+ //#region ../../packages/module/swap-provider-steelswap/src/steelswap/steelswap-provider.ts
892
+ const jsonPost = async (url, body) => {
893
+ const response = await fetch(url, {
894
+ method: "POST",
895
+ headers: { "Content-Type": "application/json" },
896
+ body: JSON.stringify(body)
897
+ });
898
+ if (!response.ok) {
899
+ const text = await response.text().catch(() => "");
900
+ throw new Error(`SteelSwap API error (${response.status}): ${text || response.statusText}`);
901
+ }
902
+ return await response.json();
903
+ };
904
+ const jsonGet = async (url) => {
905
+ const response = await fetch(url);
906
+ if (!response.ok) throw new Error(`SteelSwap API error (${response.status}): ${response.statusText}`);
907
+ return await response.json();
908
+ };
909
+ /**
910
+ * A {@link SwapProvider} over the SteelSwap aggregator's API: it quotes swap
911
+ * routes across Cardano DEXes, builds the unsigned swap transaction for a
912
+ * quote, and lists and searches the tokens and DEXes it serves. Each call
913
+ * emits one `Result`; a failed request is an `Err` with a `SwapProviderError`.
914
+ */
915
+ const createSteelSwapProvider = (config) => {
916
+ const partner = config.partner ?? {
917
+ name: "lace-aggregator",
918
+ address: "$lace@steelswap"
919
+ };
920
+ return {
921
+ getQuote: (request) => (0, rxjs.from)(jsonPost(`${config.steelswapApiBaseUrl}/swap/estimate/`, toEstimateRequest(request, partner)).then((response) => require_asyncoption.Ok(fromEstimateResponse(response, request))).catch((error) => {
922
+ return require_asyncoption.Err(toSwapProviderError(error));
923
+ })),
924
+ buildSwapTx: (request) => (0, rxjs.from)(jsonPost(`${config.steelswapApiBaseUrl}/swap/build/`, toBuildRequest(request, partner)).then((response) => require_asyncoption.Ok(fromBuildResponse(response))).catch((error) => {
925
+ return require_asyncoption.Err(toSwapProviderError(error));
926
+ })),
927
+ listTokens: () => (0, rxjs.from)(jsonGet(`${config.steelswapApiBaseUrl}/tokens/list/`).then((tokens) => require_asyncoption.Ok(tokens.map((t) => fromTokenSummary(t, config.nftCdnUrl)))).catch((error) => require_asyncoption.Err(toSwapProviderError(error)))),
928
+ listDexes: () => (0, rxjs.from)(jsonGet(`${config.steelswapApiBaseUrl}/dex/list/`).then((dexes) => require_asyncoption.Ok(fromDexList(dexes))).catch((error) => require_asyncoption.Err(toSwapProviderError(error)))),
929
+ searchTokens: (_networkId, query) => (0, rxjs.from)(jsonPost(`${config.steelswapApiBaseUrl}/tokens/find-pairs/`, { token: query }).then((tokens) => require_asyncoption.Ok(tokens.map((t) => fromTokenSummary(t, config.nftCdnUrl)))).catch((error) => require_asyncoption.Err(toSwapProviderError(error))))
930
+ };
931
+ };
932
+ //#endregion
933
+ //#region ../../packages/contract/crypto/src/contract.ts
934
+ const cryptoAddonContract = require_store.inferContractContext({
935
+ name: require_sdk.ContractName("crypto-addon"),
936
+ instance: "exactly-one",
937
+ contractType: "addon",
938
+ preloadInServiceWorker: true,
939
+ provides: { addons: ["bip32Ed25519", "blake2b"] }
940
+ });
941
+ //#endregion
942
+ //#region ../../packages/module/cardano-provider-blockfrost/src/store/index.ts
943
+ var store_default = require_store.inferStoreContext({
944
+ load: async () => Promise.resolve().then(() => require("./init-D8OeObDF.cjs")),
945
+ context: {
946
+ actions: {},
947
+ selectors: {}
948
+ }
949
+ });
950
+ //#endregion
951
+ //#region ../../packages/module/cardano-provider-blockfrost/src/sdk.ts
952
+ /**
953
+ * Cardano chain data through Blockfrost: UTxOs, transactions, stake
954
+ * information and protocol parameters, configured by
955
+ * `config.cardanoProvider.blockfrostConfigs`. Loads when
956
+ * `FEATURE_FLAG_CARDANO` is enabled, and needs a crypto module such as
957
+ * `m.cryptoCardanoSdk`.
958
+ */
959
+ var sdk_default$1 = require_store.inferModuleContext({
960
+ moduleName: require_sdk.ModuleName("cardano-provider-blockfrost"),
961
+ dependsOn: require_store.combineContracts([cryptoAddonContract]),
962
+ implements: require_store.combineContracts([require_sdk.cardanoProviderStoreContract, require_sdk.cardanoProviderDependencyContract]),
963
+ store: store_default,
964
+ feature: {
965
+ willLoad: (featureFlags) => featureFlags.some((flag) => flag.key === require_const.FEATURE_FLAG_CARDANO),
966
+ metadata: {
967
+ name: "Blockfrost",
968
+ description: "Blockfrost provider for Cardano"
969
+ }
970
+ },
971
+ addons: {}
972
+ });
973
+ //#endregion
974
+ //#region ../../packages/module/crypto-cardano-sdk/src/sdk.ts
975
+ /** Cardano cryptography: BIP32-Ed25519 key derivation and Blake2b hashing. */
976
+ var sdk_default = require_store.inferModuleContext({
977
+ moduleName: require_sdk.ModuleName("crypto-cardano-sdk"),
978
+ implements: require_store.combineContracts([cryptoAddonContract]),
979
+ addons: {
980
+ bip32Ed25519: async () => Promise.resolve().then(() => require("./bip32ed25519-B7Yat217.cjs")),
981
+ blake2b: async () => Promise.resolve().then(() => require("./blake2b-DEeVUdKR.cjs"))
982
+ }
983
+ });
984
+ //#endregion
985
+ //#region src/modules-cardano.ts
986
+ var modules_cardano_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
987
+ blockchainCardano: () => sdk_default$2,
988
+ cardanoProviderBlockfrost: () => sdk_default$1,
989
+ cryptoCardanoSdk: () => sdk_default,
990
+ featureDev: () => require_sdk.sdk_default$2,
991
+ storageInMemory: () => require_sdk.sdk_default$1,
992
+ storageWebIndexeddb: () => require_sdk.sdk_default
993
+ });
994
+ //#endregion
995
+ Object.defineProperty(exports, "CardanoRemoteSignerFactory", {
996
+ enumerable: true,
997
+ get: function() {
998
+ return CardanoRemoteSignerFactory;
999
+ }
1000
+ });
1001
+ Object.defineProperty(exports, "PasskeyWalletMismatchError", {
1002
+ enumerable: true,
1003
+ get: function() {
1004
+ return PasskeyWalletMismatchError;
1005
+ }
1006
+ });
1007
+ Object.defineProperty(exports, "RemoteSignerResultError", {
1008
+ enumerable: true,
1009
+ get: function() {
1010
+ return RemoteSignerResultError;
1011
+ }
1012
+ });
1013
+ Object.defineProperty(exports, "createLazyInMemoryVaultModule", {
1014
+ enumerable: true,
1015
+ get: function() {
1016
+ return createLazyInMemoryVaultModule;
1017
+ }
1018
+ });
1019
+ Object.defineProperty(exports, "createPasskeyVaultModule", {
1020
+ enumerable: true,
1021
+ get: function() {
1022
+ return createPasskeyVaultModule;
1023
+ }
1024
+ });
1025
+ Object.defineProperty(exports, "createPasskeyWalletEntity", {
1026
+ enumerable: true,
1027
+ get: function() {
1028
+ return createPasskeyWalletEntity;
1029
+ }
1030
+ });
1031
+ Object.defineProperty(exports, "createRemoteCardanoVaultModule", {
1032
+ enumerable: true,
1033
+ get: function() {
1034
+ return createRemoteCardanoVaultModule;
1035
+ }
1036
+ });
1037
+ Object.defineProperty(exports, "createRemotePasskeySigner", {
1038
+ enumerable: true,
1039
+ get: function() {
1040
+ return createRemotePasskeySigner;
1041
+ }
1042
+ });
1043
+ Object.defineProperty(exports, "createRemotePasskeyWalletEntity", {
1044
+ enumerable: true,
1045
+ get: function() {
1046
+ return createRemotePasskeyWalletEntity;
1047
+ }
1048
+ });
1049
+ Object.defineProperty(exports, "createSignerClient", {
1050
+ enumerable: true,
1051
+ get: function() {
1052
+ return createSignerClient;
1053
+ }
1054
+ });
1055
+ Object.defineProperty(exports, "createSteelSwapProvider", {
1056
+ enumerable: true,
1057
+ get: function() {
1058
+ return createSteelSwapProvider;
1059
+ }
1060
+ });
1061
+ Object.defineProperty(exports, "createTxBuilder", {
1062
+ enumerable: true,
1063
+ get: function() {
1064
+ return createTxBuilder;
1065
+ }
1066
+ });
1067
+ Object.defineProperty(exports, "modules_cardano_exports", {
1068
+ enumerable: true,
1069
+ get: function() {
1070
+ return modules_cardano_exports;
1071
+ }
1072
+ });
1073
+ Object.defineProperty(exports, "sdk_default", {
1074
+ enumerable: true,
1075
+ get: function() {
1076
+ return sdk_default;
1077
+ }
1078
+ });
1079
+ Object.defineProperty(exports, "sdk_default$1", {
1080
+ enumerable: true,
1081
+ get: function() {
1082
+ return sdk_default$1;
1083
+ }
1084
+ });
1085
+ Object.defineProperty(exports, "sdk_default$2", {
1086
+ enumerable: true,
1087
+ get: function() {
1088
+ return sdk_default$2;
1089
+ }
1090
+ });
1091
+ Object.defineProperty(exports, "signCardanoTx", {
1092
+ enumerable: true,
1093
+ get: function() {
1094
+ return signCardanoTx;
1095
+ }
1096
+ });
1097
+ Object.defineProperty(exports, "submitCardanoTx", {
1098
+ enumerable: true,
1099
+ get: function() {
1100
+ return submitCardanoTx;
1101
+ }
1102
+ });
1103
+ Object.defineProperty(exports, "waitForNetworkInfo", {
1104
+ enumerable: true,
1105
+ get: function() {
1106
+ return waitForNetworkInfo;
1107
+ }
1108
+ });