@laceio/sdk 0.1.1 → 0.1.2-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 (388) hide show
  1. package/dist/{TransactionBuilder-DrB3NVTi.cjs → TransactionBuilder-CCjOn7NA.cjs} +42 -0
  2. package/dist/{TransactionBuilder-V6aLx4SV.js → TransactionBuilder-CIzdw18M.js} +1 -1
  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 +16956 -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-CCjiakoy.cjs} +6 -6
  64. package/dist/{delegation-tx-builder-CGVqlaFE.js → delegation-tx-builder-DZFjHDS8.js} +5 -5
  65. package/dist/{deregistration-tx-builder-B-CrUyX6.js → deregistration-tx-builder-Bf6xAYp4.js} +5 -5
  66. package/dist/{deregistration-tx-builder-DZGwB4cz.cjs → deregistration-tx-builder-CQP35yex.cjs} +6 -6
  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-BDbTDZmD.js → earn-rewards-tx-builder-Bsga3yFb.js} +5 -5
  81. package/dist/{earn-rewards-tx-builder-D5sUT5v8.cjs → earn-rewards-tx-builder-GuxofYns.cjs} +6 -6
  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 +86273 -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 +37496 -10033
  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-8v_n8boO.js +1177 -0
  134. package/dist/{init-CigestoM.js → init-B3-1ghyx.js} +2 -2
  135. package/dist/init-B8U3ABhS.cjs +107 -0
  136. package/dist/init-BJn-8_hf.js +141 -0
  137. package/dist/init-BPU3j8sT.cjs +6 -0
  138. package/dist/init-BRzH6xu-2.cjs +2797 -0
  139. package/dist/init-BmzfDaKL.js +1142 -0
  140. package/dist/{init-C-jErzp5.cjs → init-BopV9ed4.cjs} +2 -2
  141. package/dist/init-BpHTq2R5.js +105 -0
  142. package/dist/init-BpSITBfF.js +39 -0
  143. package/dist/{init-DX4WyB0R.cjs → init-BrdVzxei.cjs} +3 -3
  144. package/dist/{init-LfyMo-sS.cjs → init-BwkU0ruo.cjs} +2 -2
  145. package/dist/{init-CB__aLD7.cjs → init-C-G32J12.cjs} +2 -2
  146. package/dist/init-C00gw1zi.js +422 -0
  147. package/dist/{init-TkPq_Ny_.js → init-C2RgrfZe.js} +1 -1
  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-CuW7rHNA.js +3584 -0
  157. package/dist/{init-CFYsq82V.js → init-CyAY4Lzl.js} +1 -1
  158. package/dist/init-Cz0rz5fU.cjs +3585 -0
  159. package/dist/{init-BKhH6mVR.cjs → init-D6BxBs7e.cjs} +1 -1
  160. package/dist/init-D8OeObDF.cjs +1141 -0
  161. package/dist/init-D9g1HXYf.cjs +40 -0
  162. package/dist/{init-CNLGJJRx.js → init-DA7zmptx.js} +1 -1
  163. package/dist/{init-DkIc5nqF.cjs → init-DFMiP2ZH.cjs} +1 -1
  164. package/dist/{init-zSzCjoor.js → init-DFjT8YvT.js} +4 -4
  165. package/dist/init-DGjXwWs2.cjs +143 -0
  166. package/dist/init-DHrCbpkW.cjs +121 -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-DrRdf5sZ.cjs +1176 -0
  171. package/dist/init-DuYENxci.js +17 -0
  172. package/dist/{init-D6DBUsD3.cjs → init-Dv3zKj0r.cjs} +4 -4
  173. package/dist/{init-BtzMZ7Pk.cjs → init-Dy-05ktr.cjs} +1 -1
  174. package/dist/{init-BsCBAGWf.cjs → init-EP0CUWNK.cjs} +2 -2
  175. package/dist/{init-BJVU54pI.cjs → init-EhzD7a8i.cjs} +1 -1
  176. package/dist/{init-w9GEs73W.js → init-Fw89ZmrR.js} +2 -2
  177. package/dist/init-GsT2AEa4.cjs +424 -0
  178. package/dist/{init-Rxohwpmu.js → init-NCjgwCZy.js} +2 -2
  179. package/dist/{init-DxUHsN53.cjs → init-NdhG_VrF.cjs} +6 -6
  180. package/dist/{init-DDdhguVC.js → init-SZ01tARX2.js} +2 -2
  181. package/dist/{init-BAJJzBza.js → init-Y3mkB4XS.js} +2 -2
  182. package/dist/init-c4l6r-o-.js +5 -0
  183. package/dist/{init-Dku4b2lG.js → init-kEfUTuG2.js} +1 -1
  184. package/dist/{init-C7IeJwQR.cjs → init-lzHt4Cli.cjs} +256 -59
  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-B1nDUWqy.js +995 -0
  210. package/dist/modules-cardano-BYeYHrRm.cjs +1108 -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-BpEMSti4.cjs → vote-delegation-tx-builder-BUg1S2Ep.cjs} +6 -6
  305. package/dist/{vote-delegation-tx-builder-CmKv6GoG.js → vote-delegation-tx-builder-C6FiS7zI.js} +5 -5
  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,13 @@
1
+ import { s as BitcoinNetworkId } from "./address-B9ntKL8K.js";
2
+ import { t as TokenId } from "./token-id.vo-Bvwhr3ZE.js";
3
+ import { n as BitcoinNetwork } from "./types-B8uiJn-X.js";
4
+ //#region ../../packages/contract/bitcoin-context/src/const.ts
5
+ /** Enables Bitcoin accounts: the Bitcoin chain and provider modules load with it. */
6
+ const BITCOIN_FEATURE_FLAG = "BLOCKCHAIN_BITCOIN";
7
+ /** Enables Bitcoin fee rate estimates from mempool.space. */
8
+ const BITCOIN_MEMPOOL_FEE_MARKET_FEATURE_FLAG = "BITCOIN_MEMPOOL_FEE_MARKET";
9
+ const BITCOIN_TOKEN_ID = TokenId("bitcoin");
10
+ const allSupportedNetworks = [BitcoinNetwork.Mainnet, BitcoinNetwork.Testnet];
11
+ const supportedNetworkIds = new Map(allSupportedNetworks.map((network) => [BitcoinNetworkId(network), network]));
12
+ //#endregion
13
+ export { supportedNetworkIds as a, allSupportedNetworks as i, BITCOIN_MEMPOOL_FEE_MARKET_FEATURE_FLAG as n, BITCOIN_TOKEN_ID as r, BITCOIN_FEATURE_FLAG as t };
@@ -1,4 +1,4 @@
1
- import { t as FeatureFlagKey } from "./feature-flag-key.vo-ofrB6ZVQ.js";
1
+ import { t as FeatureFlagKey } from "./feature-flag-key.vo-DN_-4-sG.js";
2
2
  //#region ../../packages/contract/network/src/const.ts
3
3
  /**
4
4
  * Sets the network type a new wallet starts on: its payload is `'mainnet'` or
@@ -1,8 +1,8 @@
1
1
  require("./rolldown-runtime-Br2OG8yv.cjs");
2
- const require_time_vo = require("./time.vo-CQ8pSXz2.cjs");
3
- const require_feature_flag_key_vo = require("./feature-flag-key.vo-BPz-ZAp6.cjs");
4
- const require_token_id_vo = require("./token-id.vo-BxG9TG0O.cjs");
5
- const require_cardano_network_id_vo = require("./cardano-network-id.vo-DSxrFk9S.cjs");
2
+ const require_time_vo = require("./time.vo-D3wWRw9L.cjs");
3
+ const require_feature_flag_key_vo = require("./feature-flag-key.vo-RlfHL3hq.cjs");
4
+ const require_token_id_vo = require("./token-id.vo-DXv5uS9n.cjs");
5
+ const require_cardano_network_id_vo = require("./cardano-network-id.vo-BEDPn6Li.cjs");
6
6
  let _laceio_cardano_core = require("@laceio/cardano/core");
7
7
  //#region ../../packages/contract/cardano-context/src/const.ts
8
8
  /**
@@ -0,0 +1,154 @@
1
+ import { t as FeatureFlagKey } from "./feature-flag-key.vo-DN_-4-sG.js";
2
+ import { t as BlockchainNetworkId } from "./blockchain-network-id.vo-CiVykuqG.js";
3
+ import { NetworkId } from "@midnightntwrk/wallet-sdk-abstractions";
4
+ //#region ../../packages/lib/vendor/src/midnight-proof-servers.ts
5
+ /**
6
+ * Stable identity for a mode — what we compare to decide if two selections
7
+ * refer to the same option (e.g. for radio-button highlighting and for
8
+ * deciding whether the user's pick differs from the default).
9
+ *
10
+ * Labels/descriptions are denormalised metadata; they may drift across
11
+ * application updates, so identity is keyed on `kind` + `url`/`pairingId`.
12
+ */
13
+ const isSameProofServerMode = (a, b) => {
14
+ if (a.kind !== b.kind) return false;
15
+ switch (a.kind) {
16
+ case "in-process": return true;
17
+ case "local-host": return a.url === b.url;
18
+ case "paired-device": {
19
+ const right = b;
20
+ return a.url === right.url && a.pairingId === right.pairingId;
21
+ }
22
+ case "delegated": return a.url === b.url;
23
+ case "tee-delegated": return a.url === b.url;
24
+ }
25
+ };
26
+ /** Returns the configured HTTP endpoint, or undefined for in-process proving. */
27
+ const getProofServerEndpoint = (mode) => "url" in mode ? mode.url : void 0;
28
+ const TEMENOS_PREPROD_DEPLOYMENT_MODE = {
29
+ kind: "tee-delegated",
30
+ url: "https://api.proofserver.wastedp.io",
31
+ label: "Temenos (remote TEE proof server)",
32
+ descriptionKey: "midnight.proof-server.tee-delegated.description"
33
+ };
34
+ const TEMENOS_MAINNET_DEPLOYMENT_MODE = {
35
+ kind: "tee-delegated",
36
+ url: "https://api.proofserver.mainnet.wastedp.io",
37
+ label: "Temenos (remote TEE proof server)",
38
+ descriptionKey: "midnight.proof-server.tee-delegated.description"
39
+ };
40
+ const TEMENOS_PREVIEW_DEPLOYMENT_MODE = {
41
+ kind: "tee-delegated",
42
+ url: "https://api.proofserver.preview.wastedp.io",
43
+ label: "Temenos (remote TEE proof server)",
44
+ descriptionKey: "midnight.proof-server.tee-delegated.description"
45
+ };
46
+ /**
47
+ * Contract-visible part of the baked Temenos TEE proof-server config, per
48
+ * network: just enough for `selectAllProofServerModes` to synthesize the
49
+ * settings row without importing module code. The heavyweight attestation
50
+ * config (evidence/Warden endpoints, application id, AMD root certificates)
51
+ * lives in the vendor Temenos driver, keyed by the same network id and
52
+ * cross-checked against this mode's `url` at module load.
53
+ *
54
+ * Values are build-baked and reviewed like code (rotating an endpoint
55
+ * requires a release); the remote feature flag only toggles visibility.
56
+ */
57
+ const TEMENOS_PROOF_SERVER_MODES = {
58
+ ["mainnet"]: TEMENOS_MAINNET_DEPLOYMENT_MODE,
59
+ ["preprod"]: TEMENOS_PREPROD_DEPLOYMENT_MODE,
60
+ ["preview"]: TEMENOS_PREVIEW_DEPLOYMENT_MODE
61
+ };
62
+ /** Source-controlled ordinary remote providers. Currently empty: the Midnight
63
+ * Foundation service was decommissioned. Keep the selection infrastructure;
64
+ * a feature flag or legacy payload must not resurrect a retired endpoint. */
65
+ const REMOTE_PROOF_SERVER_MODES = {};
66
+ const defaultLocalProofServerMode = {
67
+ kind: "local-host",
68
+ url: "http://localhost:6300"
69
+ };
70
+ /** Refuses unsupported modes and routes recognized TEE hosts only through attestation. */
71
+ const assertProofServerRouting = (mode, hasAttestedProver, hasLocalProver = false) => {
72
+ if (mode.kind === "in-process" && hasLocalProver) return;
73
+ if (mode.kind === "in-process" || mode.kind === "paired-device") throw new Error(`Unsupported Midnight proof server mode "${mode.kind}"`);
74
+ const hostname = new URL(mode.url).hostname.replace(/\.$/, "");
75
+ if (Object.values(TEMENOS_PROOF_SERVER_MODES).some((candidate) => candidate && new URL(candidate.url).hostname.replace(/\.$/, "") === hostname) && mode.kind !== "tee-delegated") throw new Error("Cannot attest a TEE proof server through ordinary HTTP; select tee-delegated");
76
+ if (mode.kind === "tee-delegated" && !hasAttestedProver) throw new Error("Cannot attest Midnight proof server: proof server mode \"tee-delegated\" needs an attested prover");
77
+ };
78
+ //#endregion
79
+ //#region ../../packages/contract/midnight-context/src/value-objects/midnight-network-id.vo.ts
80
+ const MIDNIGHT_NETWORK_PREFIX = "midnight-";
81
+ /** Converts a Midnight network name to its blockchain-qualified identity and back. */
82
+ const MidnightNetworkId = Object.assign((networkId) => BlockchainNetworkId(`${MIDNIGHT_NETWORK_PREFIX}${networkId}`), { getNetworkNameId: (networkId) => networkId?.startsWith(MIDNIGHT_NETWORK_PREFIX) ? networkId.slice(9) : void 0 });
83
+ //#endregion
84
+ //#region ../../packages/contract/midnight-context/src/const.ts
85
+ const FEATURE_FLAG_MIDNIGHT_REMOTE_PROOF_SERVER = FeatureFlagKey("BLOCKCHAIN_MIDNIGHT_REMOTE_PROOF_SERVER");
86
+ const FEATURE_FLAG_MIDNIGHT_INDEXER_URLS = FeatureFlagKey("BLOCKCHAIN_MIDNIGHT_INDEXER_URLS");
87
+ const FEATURE_FLAG_MIDNIGHT_NODE_URLS = FeatureFlagKey("BLOCKCHAIN_MIDNIGHT_NODE_URLS");
88
+ /**
89
+ * Gates the Temenos TEE proof-server option (LW-15081). Boolean gate with
90
+ * no payload by design: all Temenos configuration (endpoints, trust
91
+ * anchors) is baked into the build, so the remote flag system controls
92
+ * visibility only and can never inject or alter a TEE entry.
93
+ */
94
+ const FEATURE_FLAG_MIDNIGHT_TEE_TEMENOS_PROOF_SERVER = FeatureFlagKey("BLOCKCHAIN_MIDNIGHT_TEE_TEMENOS_PROOF_SERVER");
95
+ const defaultTxTtlLength = 3600 * 1e3;
96
+ /** The Midnight networks, keyed by name. */
97
+ const MidnightSDKNetworkIds = NetworkId.NetworkId;
98
+ /** Every Midnight network id. */
99
+ const MidnightSDKNetworkId = Object.values(MidnightSDKNetworkIds);
100
+ const supportedNetworkIds = new Map(MidnightSDKNetworkId.map((id) => [MidnightNetworkId(id), id]));
101
+ const MidnightSDKTestNetworkId = MidnightSDKNetworkId.filter((id) => id !== "mainnet");
102
+ const DEFAULT_NETWORKS_CONFIG = {
103
+ [NetworkId.NetworkId.Undeployed]: {
104
+ nodeAddress: "http://localhost:9944",
105
+ proofServer: defaultLocalProofServerMode,
106
+ indexerAddress: "http://localhost:8088/api/v4/graphql"
107
+ },
108
+ [NetworkId.NetworkId.MainNet]: {
109
+ nodeAddress: "https://blockfrost.lw.iog.io/midnight-mainnet-rpc/",
110
+ proofServer: defaultLocalProofServerMode,
111
+ indexerAddress: "https://blockfrost.lw.iog.io/midnight-mainnet/"
112
+ },
113
+ [NetworkId.NetworkId.PreProd]: {
114
+ nodeAddress: "https://blockfrost.lw.iog.io/midnight-preprod-rpc/",
115
+ proofServer: defaultLocalProofServerMode,
116
+ indexerAddress: "https://blockfrost.lw.iog.io/midnight-preprod/"
117
+ },
118
+ [NetworkId.NetworkId.Preview]: {
119
+ nodeAddress: "https://blockfrost.lw.iog.io/midnight-preview-rpc/",
120
+ proofServer: defaultLocalProofServerMode,
121
+ indexerAddress: "https://blockfrost.lw.iog.io/midnight-preview/"
122
+ },
123
+ [NetworkId.NetworkId.QaNet]: {
124
+ nodeAddress: "https://rpc.qanet.midnight.network",
125
+ proofServer: defaultLocalProofServerMode,
126
+ indexerAddress: "https://indexer.qanet.midnight.network/api/v4/graphql"
127
+ },
128
+ [NetworkId.NetworkId.DevNet]: {
129
+ nodeAddress: "http://localhost:9944",
130
+ proofServer: defaultLocalProofServerMode,
131
+ indexerAddress: "http://localhost:8088/api/v4/graphql"
132
+ },
133
+ [NetworkId.NetworkId.TestNet]: {
134
+ nodeAddress: "http://localhost:9944",
135
+ proofServer: defaultLocalProofServerMode,
136
+ indexerAddress: "http://localhost:8088/api/v4/graphql"
137
+ }
138
+ };
139
+ const EMPTY_PARTIAL_NETWORKS_CONFIG = {
140
+ [NetworkId.NetworkId.Undeployed]: {},
141
+ [NetworkId.NetworkId.MainNet]: {},
142
+ [NetworkId.NetworkId.PreProd]: {},
143
+ [NetworkId.NetworkId.Preview]: {},
144
+ [NetworkId.NetworkId.QaNet]: {},
145
+ [NetworkId.NetworkId.DevNet]: {},
146
+ [NetworkId.NetworkId.TestNet]: {}
147
+ };
148
+ /** The token type of NIGHT, Midnight's native token. */
149
+ const NIGHT_TOKEN_ID = "0000000000000000000000000000000000000000000000000000000000000000";
150
+ const NIGHT_TOKEN_TICKER = "NIGHT";
151
+ const TNIGHT_TOKEN_TICKER = "tNIGHT";
152
+ const NIGHT_ICON = "data:image/png;base64,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";
153
+ //#endregion
154
+ export { isSameProofServerMode as S, REMOTE_PROOF_SERVER_MODES as _, FEATURE_FLAG_MIDNIGHT_REMOTE_PROOF_SERVER as a, defaultLocalProofServerMode as b, MidnightSDKNetworkIds as c, NIGHT_TOKEN_ID as d, NIGHT_TOKEN_TICKER as f, MidnightNetworkId as g, supportedNetworkIds as h, FEATURE_FLAG_MIDNIGHT_NODE_URLS as i, MidnightSDKTestNetworkId as l, defaultTxTtlLength as m, EMPTY_PARTIAL_NETWORKS_CONFIG as n, FEATURE_FLAG_MIDNIGHT_TEE_TEMENOS_PROOF_SERVER as o, TNIGHT_TOKEN_TICKER as p, FEATURE_FLAG_MIDNIGHT_INDEXER_URLS as r, MidnightSDKNetworkId as s, DEFAULT_NETWORKS_CONFIG as t, NIGHT_ICON as u, TEMENOS_PROOF_SERVER_MODES as v, getProofServerEndpoint as x, assertProofServerRouting as y };
@@ -4,7 +4,7 @@
4
4
  * `'testnet'`, or `{ networkType }` with either. The default is `'mainnet'`;
5
5
  * once the wallet persists a network type, that one applies.
6
6
  */
7
- const FEATURE_FLAG_NETWORK_TYPE = require("./feature-flag-key.vo-BPz-ZAp6.cjs").FeatureFlagKey("INITIAL_NETWORK_TYPE");
7
+ const FEATURE_FLAG_NETWORK_TYPE = require("./feature-flag-key.vo-RlfHL3hq.cjs").FeatureFlagKey("INITIAL_NETWORK_TYPE");
8
8
  //#endregion
9
9
  Object.defineProperty(exports, "FEATURE_FLAG_NETWORK_TYPE", {
10
10
  enumerable: true,
@@ -0,0 +1,171 @@
1
+ import { A as ContractName, D as storageDependencyContract, O as combineStore, _ as walletActiveStateDependencyContract, k as createMixin, v as tokensStoreContract, w as networkStoreContract, y as syncStoreContract } from "./sdk-Cb-gZnS9.js";
2
+ import { a as inferStoreContext, n as combineContracts, r as inferContractContext } from "./store-DuBG8qh5.js";
3
+ import { t as createSelector } from "./reselect-CGoLzEPv.js";
4
+ import { r as tokensSelectors } from "./slice-DBpJ2QGf.js";
5
+ import { r as addressBookSelectors, t as addressBookActions } from "./slice-obCSLm1x.js";
6
+ import { c as FIAT_CURRENCIES, s as DEFAULT_CURRENCY_PREFERENCE, t as calculatePortfolioValueOverTime } from "./utils-BfBEUvWA.js";
7
+ import { n as tokenPricingActions, t as slice } from "./slice-Da426sf9.js";
8
+ //#region src/lazy-wallet-mismatch-error.ts
9
+ /**
10
+ * The recovery words a lazy vault supplied derive another account key than
11
+ * the one the signing account stores, so nothing was signed.
12
+ */
13
+ var LazyWalletMismatchError = class extends Error {
14
+ constructor() {
15
+ super("Mnemonic does not match the selected lazy wallet account.");
16
+ this.name = "LazyWalletMismatchError";
17
+ }
18
+ };
19
+ //#endregion
20
+ //#region ../../packages/contract/address-book/src/store/index.ts
21
+ var store_default$1 = inferStoreContext({
22
+ load: async () => import("./init-Y3mkB4XS.js"),
23
+ context: {
24
+ actions: addressBookActions,
25
+ selectors: addressBookSelectors
26
+ }
27
+ });
28
+ //#endregion
29
+ //#region ../../packages/contract/address-book/src/contract.ts
30
+ const addressBookAddressValidatorAddonContract = inferContractContext({
31
+ name: ContractName("address-book-address-validator-addon"),
32
+ instance: "zero-or-more",
33
+ contractType: "addon",
34
+ provides: { addons: ["loadAddressBookAddressValidators"] }
35
+ });
36
+ inferContractContext({
37
+ name: ContractName("address-book-store"),
38
+ contractType: "store",
39
+ instance: "exactly-one",
40
+ mixin: createMixin((laceModule) => ({ store: combineStore(laceModule, store_default$1) }))
41
+ });
42
+ //#endregion
43
+ //#region ../../packages/contract/token-pricing/src/store/selectors.ts
44
+ const EMPTY_PRICE_DATA_POINTS = [];
45
+ const selectHasActivePricingError = createSelector([slice.selectors.selectError, slice.selectors.selectIsPricingStale], (error, isPricingStale) => !!error && isPricingStale);
46
+ const selectTokenPriceHistoryForRange = createSelector(slice.selectors.selectPriceHistory, (_, params) => params, (priceHistory, { priceId, timeRange }) => {
47
+ if (!priceId) return EMPTY_PRICE_DATA_POINTS;
48
+ const points = priceHistory[priceId]?.[timeRange];
49
+ if (!points || points.length === 0) return EMPTY_PRICE_DATA_POINTS;
50
+ return points;
51
+ });
52
+ /**
53
+ * Select portfolio value history for a given time range
54
+ * This is a cross-slice selector that combines price history with token data
55
+ */
56
+ const selectPortfolioValueHistory = createSelector([
57
+ slice.selectors.selectPriceHistory,
58
+ slice.selectors.selectPrices,
59
+ tokensSelectors.tokens.selectAggregatedFungibleTokensForVisibleAccounts,
60
+ (_, timeRange) => timeRange
61
+ ], (priceHistory, prices, tokens, timeRange) => {
62
+ if (!tokens || tokens.length === 0) return EMPTY_PRICE_DATA_POINTS;
63
+ const priceHistoryMap = /* @__PURE__ */ new Map();
64
+ let hasAnyData = false;
65
+ for (const [priceId, history] of Object.entries(priceHistory)) {
66
+ const data = history[timeRange];
67
+ if (data && data.length > 0) {
68
+ priceHistoryMap.set(priceId, data);
69
+ hasAnyData = true;
70
+ }
71
+ }
72
+ if (!hasAnyData) return EMPTY_PRICE_DATA_POINTS;
73
+ return calculatePortfolioValueOverTime(priceHistoryMap, tokens, prices);
74
+ });
75
+ /**
76
+ * The currencies the user can actually pick, in allowlist display order.
77
+ *
78
+ * While the supported-currencies list is unavailable (not yet fetched,
79
+ * testnet, or offline) the full allowlist is shown.
80
+ *
81
+ * Never empty: the default currency always stays selectable (even when excluded
82
+ * or dropped by CoinGecko), so a corrected user is never left on a currency
83
+ * that is missing from the sheet.
84
+ *
85
+ * Inputs are raw slice fields (stable references); the intersection/filter and
86
+ * allocation happen in the result function, per reselect input-stability rules.
87
+ */
88
+ const selectSupportedCurrencyPreferences = createSelector([slice.selectors.selectSupportedVsCurrencies, slice.selectors.selectCurrencyChoiceExclusions], (supportedVsCurrencies, exclusions) => {
89
+ const exclusionSet = new Set(exclusions.map((code) => code.toLowerCase()));
90
+ const supportedSet = supportedVsCurrencies?.length ? new Set(supportedVsCurrencies.map((code) => code.toLowerCase())) : null;
91
+ const defaultCode = DEFAULT_CURRENCY_PREFERENCE.name.toLowerCase();
92
+ return FIAT_CURRENCIES.filter((currency) => {
93
+ const code = currency.name.toLowerCase();
94
+ if (code === defaultCode) return true;
95
+ if (exclusionSet.has(code)) return false;
96
+ if (supportedSet && !supportedSet.has(code)) return false;
97
+ return true;
98
+ });
99
+ });
100
+ const NO_CURRENCY_FALLBACK = { fallback: false };
101
+ const CURRENCY_FALLBACK = { fallback: true };
102
+ const selectCurrencyFallback = createSelector([slice.selectors.selectCurrencyPreference, selectSupportedCurrencyPreferences], (preference, selectableCurrencies) => {
103
+ if (preference.name === DEFAULT_CURRENCY_PREFERENCE.name) return NO_CURRENCY_FALLBACK;
104
+ if (selectableCurrencies.some((c) => c.name === preference.name)) return NO_CURRENCY_FALLBACK;
105
+ return CURRENCY_FALLBACK;
106
+ });
107
+ /**
108
+ * USD → selected-currency conversion rate, for values that are inherently
109
+ * USD-denominated (e.g. USD-pegged stablecoin positions). Every cached price
110
+ * carries both `price` (in the user's currency) and `priceInUsd`, so their
111
+ * ratio is the live exchange rate. Undefined while no fresh price in the
112
+ * selected currency is cached — callers should then fall back to displaying
113
+ * USD rather than mislabeling an unconverted value.
114
+ */
115
+ const selectUsdToCurrencyRate = createSelector([slice.selectors.selectPrices, slice.selectors.selectCurrencyPreference], (prices, preference) => {
116
+ const preferred = preference.name.toLowerCase();
117
+ if (preferred === "usd") return 1;
118
+ for (const price of Object.values(prices)) if (!price.isStale && price.fiatCurrency.toLowerCase() === preferred && price.priceInUsd > 0 && price.price > 0) return price.price / price.priceInUsd;
119
+ });
120
+ //#endregion
121
+ //#region ../../packages/contract/token-pricing/src/store/index.ts
122
+ var store_default = inferStoreContext({
123
+ load: async () => import("./init-DFjT8YvT.js"),
124
+ context: {
125
+ actions: tokenPricingActions,
126
+ selectors: { tokenPricing: {
127
+ ...slice.selectors,
128
+ selectHasActivePricingError,
129
+ selectTokenPriceHistoryForRange,
130
+ selectPortfolioValueHistory,
131
+ selectSupportedCurrencyPreferences,
132
+ selectCurrencyFallback,
133
+ selectUsdToCurrencyRate
134
+ } }
135
+ }
136
+ });
137
+ //#endregion
138
+ //#region ../../packages/contract/token-pricing/src/contract.ts
139
+ const tokenPricingProviderDependencyContract = inferContractContext({
140
+ contractType: "sideEffectDependency",
141
+ name: ContractName("token-pricing-provider-dependency"),
142
+ instance: "zero-or-more"
143
+ });
144
+ /**
145
+ * Addon contract for blockchain-specific token ID mappers.
146
+ * Each blockchain module implements this to provide its own token-to-price-id mapping.
147
+ */
148
+ const tokenIdMapperAddonContract = inferContractContext({
149
+ name: ContractName("token-id-mapper-addon"),
150
+ instance: "zero-or-more",
151
+ contractType: "addon",
152
+ preloadInServiceWorker: true,
153
+ provides: { addons: ["loadTokenIdMapper"] }
154
+ });
155
+ inferContractContext({
156
+ name: ContractName("token-pricing-store"),
157
+ contractType: "store",
158
+ dependsOn: combineContracts([
159
+ storageDependencyContract,
160
+ networkStoreContract,
161
+ tokensStoreContract,
162
+ syncStoreContract,
163
+ tokenPricingProviderDependencyContract,
164
+ tokenIdMapperAddonContract,
165
+ walletActiveStateDependencyContract
166
+ ]),
167
+ mixin: createMixin((laceModule) => ({ store: combineStore(laceModule, store_default) })),
168
+ instance: "zero-or-more"
169
+ });
170
+ //#endregion
171
+ export { addressBookAddressValidatorAddonContract as n, LazyWalletMismatchError as r, tokenIdMapperAddonContract as t };
@@ -0,0 +1,189 @@
1
+ const require_sdk = require("./sdk-DffwmX8b.cjs");
2
+ const require_store = require("./store-B1Lq3cEf.cjs");
3
+ const require_reselect = require("./reselect-Bd94u0K-.cjs");
4
+ const require_slice = require("./slice-C9TT5KhY.cjs");
5
+ const require_slice$1 = require("./slice-Dqw1ecum.cjs");
6
+ const require_utils = require("./utils-DsElZgCI.cjs");
7
+ const require_slice$2 = require("./slice-DayJvMRD.cjs");
8
+ //#region src/lazy-wallet-mismatch-error.ts
9
+ /**
10
+ * The recovery words a lazy vault supplied derive another account key than
11
+ * the one the signing account stores, so nothing was signed.
12
+ */
13
+ var LazyWalletMismatchError = class extends Error {
14
+ constructor() {
15
+ super("Mnemonic does not match the selected lazy wallet account.");
16
+ this.name = "LazyWalletMismatchError";
17
+ }
18
+ };
19
+ //#endregion
20
+ //#region ../../packages/contract/address-book/src/store/index.ts
21
+ var store_default$1 = require_store.inferStoreContext({
22
+ load: async () => Promise.resolve().then(() => require("./init-rmt7-fQE.cjs")),
23
+ context: {
24
+ actions: require_slice$1.addressBookActions,
25
+ selectors: require_slice$1.addressBookSelectors
26
+ }
27
+ });
28
+ //#endregion
29
+ //#region ../../packages/contract/address-book/src/contract.ts
30
+ const addressBookAddressValidatorAddonContract = require_store.inferContractContext({
31
+ name: require_sdk.ContractName("address-book-address-validator-addon"),
32
+ instance: "zero-or-more",
33
+ contractType: "addon",
34
+ provides: { addons: ["loadAddressBookAddressValidators"] }
35
+ });
36
+ require_store.inferContractContext({
37
+ name: require_sdk.ContractName("address-book-store"),
38
+ contractType: "store",
39
+ instance: "exactly-one",
40
+ mixin: require_sdk.createMixin((laceModule) => ({ store: require_sdk.combineStore(laceModule, store_default$1) }))
41
+ });
42
+ //#endregion
43
+ //#region ../../packages/contract/token-pricing/src/store/selectors.ts
44
+ const EMPTY_PRICE_DATA_POINTS = [];
45
+ const selectHasActivePricingError = require_reselect.createSelector([require_slice$2.slice.selectors.selectError, require_slice$2.slice.selectors.selectIsPricingStale], (error, isPricingStale) => !!error && isPricingStale);
46
+ const selectTokenPriceHistoryForRange = require_reselect.createSelector(require_slice$2.slice.selectors.selectPriceHistory, (_, params) => params, (priceHistory, { priceId, timeRange }) => {
47
+ if (!priceId) return EMPTY_PRICE_DATA_POINTS;
48
+ const points = priceHistory[priceId]?.[timeRange];
49
+ if (!points || points.length === 0) return EMPTY_PRICE_DATA_POINTS;
50
+ return points;
51
+ });
52
+ /**
53
+ * Select portfolio value history for a given time range
54
+ * This is a cross-slice selector that combines price history with token data
55
+ */
56
+ const selectPortfolioValueHistory = require_reselect.createSelector([
57
+ require_slice$2.slice.selectors.selectPriceHistory,
58
+ require_slice$2.slice.selectors.selectPrices,
59
+ require_slice.tokensSelectors.tokens.selectAggregatedFungibleTokensForVisibleAccounts,
60
+ (_, timeRange) => timeRange
61
+ ], (priceHistory, prices, tokens, timeRange) => {
62
+ if (!tokens || tokens.length === 0) return EMPTY_PRICE_DATA_POINTS;
63
+ const priceHistoryMap = /* @__PURE__ */ new Map();
64
+ let hasAnyData = false;
65
+ for (const [priceId, history] of Object.entries(priceHistory)) {
66
+ const data = history[timeRange];
67
+ if (data && data.length > 0) {
68
+ priceHistoryMap.set(priceId, data);
69
+ hasAnyData = true;
70
+ }
71
+ }
72
+ if (!hasAnyData) return EMPTY_PRICE_DATA_POINTS;
73
+ return require_utils.calculatePortfolioValueOverTime(priceHistoryMap, tokens, prices);
74
+ });
75
+ /**
76
+ * The currencies the user can actually pick, in allowlist display order.
77
+ *
78
+ * While the supported-currencies list is unavailable (not yet fetched,
79
+ * testnet, or offline) the full allowlist is shown.
80
+ *
81
+ * Never empty: the default currency always stays selectable (even when excluded
82
+ * or dropped by CoinGecko), so a corrected user is never left on a currency
83
+ * that is missing from the sheet.
84
+ *
85
+ * Inputs are raw slice fields (stable references); the intersection/filter and
86
+ * allocation happen in the result function, per reselect input-stability rules.
87
+ */
88
+ const selectSupportedCurrencyPreferences = require_reselect.createSelector([require_slice$2.slice.selectors.selectSupportedVsCurrencies, require_slice$2.slice.selectors.selectCurrencyChoiceExclusions], (supportedVsCurrencies, exclusions) => {
89
+ const exclusionSet = new Set(exclusions.map((code) => code.toLowerCase()));
90
+ const supportedSet = supportedVsCurrencies?.length ? new Set(supportedVsCurrencies.map((code) => code.toLowerCase())) : null;
91
+ const defaultCode = require_utils.DEFAULT_CURRENCY_PREFERENCE.name.toLowerCase();
92
+ return require_utils.FIAT_CURRENCIES.filter((currency) => {
93
+ const code = currency.name.toLowerCase();
94
+ if (code === defaultCode) return true;
95
+ if (exclusionSet.has(code)) return false;
96
+ if (supportedSet && !supportedSet.has(code)) return false;
97
+ return true;
98
+ });
99
+ });
100
+ const NO_CURRENCY_FALLBACK = { fallback: false };
101
+ const CURRENCY_FALLBACK = { fallback: true };
102
+ const selectCurrencyFallback = require_reselect.createSelector([require_slice$2.slice.selectors.selectCurrencyPreference, selectSupportedCurrencyPreferences], (preference, selectableCurrencies) => {
103
+ if (preference.name === require_utils.DEFAULT_CURRENCY_PREFERENCE.name) return NO_CURRENCY_FALLBACK;
104
+ if (selectableCurrencies.some((c) => c.name === preference.name)) return NO_CURRENCY_FALLBACK;
105
+ return CURRENCY_FALLBACK;
106
+ });
107
+ /**
108
+ * USD → selected-currency conversion rate, for values that are inherently
109
+ * USD-denominated (e.g. USD-pegged stablecoin positions). Every cached price
110
+ * carries both `price` (in the user's currency) and `priceInUsd`, so their
111
+ * ratio is the live exchange rate. Undefined while no fresh price in the
112
+ * selected currency is cached — callers should then fall back to displaying
113
+ * USD rather than mislabeling an unconverted value.
114
+ */
115
+ const selectUsdToCurrencyRate = require_reselect.createSelector([require_slice$2.slice.selectors.selectPrices, require_slice$2.slice.selectors.selectCurrencyPreference], (prices, preference) => {
116
+ const preferred = preference.name.toLowerCase();
117
+ if (preferred === "usd") return 1;
118
+ for (const price of Object.values(prices)) if (!price.isStale && price.fiatCurrency.toLowerCase() === preferred && price.priceInUsd > 0 && price.price > 0) return price.price / price.priceInUsd;
119
+ });
120
+ const tokenPricingSliceSelectors = { tokenPricing: {
121
+ ...require_slice$2.slice.selectors,
122
+ selectHasActivePricingError,
123
+ selectTokenPriceHistoryForRange,
124
+ selectPortfolioValueHistory,
125
+ selectSupportedCurrencyPreferences,
126
+ selectCurrencyFallback,
127
+ selectUsdToCurrencyRate
128
+ } };
129
+ //#endregion
130
+ //#region ../../packages/contract/token-pricing/src/store/index.ts
131
+ var store_default = require_store.inferStoreContext({
132
+ load: async () => Promise.resolve().then(() => require("./init-Dv3zKj0r.cjs")),
133
+ context: {
134
+ actions: require_slice$2.tokenPricingActions,
135
+ selectors: tokenPricingSliceSelectors
136
+ }
137
+ });
138
+ //#endregion
139
+ //#region ../../packages/contract/token-pricing/src/contract.ts
140
+ const tokenPricingProviderDependencyContract = require_store.inferContractContext({
141
+ contractType: "sideEffectDependency",
142
+ name: require_sdk.ContractName("token-pricing-provider-dependency"),
143
+ instance: "zero-or-more"
144
+ });
145
+ /**
146
+ * Addon contract for blockchain-specific token ID mappers.
147
+ * Each blockchain module implements this to provide its own token-to-price-id mapping.
148
+ */
149
+ const tokenIdMapperAddonContract = require_store.inferContractContext({
150
+ name: require_sdk.ContractName("token-id-mapper-addon"),
151
+ instance: "zero-or-more",
152
+ contractType: "addon",
153
+ preloadInServiceWorker: true,
154
+ provides: { addons: ["loadTokenIdMapper"] }
155
+ });
156
+ require_store.inferContractContext({
157
+ name: require_sdk.ContractName("token-pricing-store"),
158
+ contractType: "store",
159
+ dependsOn: require_store.combineContracts([
160
+ require_sdk.storageDependencyContract,
161
+ require_sdk.networkStoreContract,
162
+ require_sdk.tokensStoreContract,
163
+ require_sdk.syncStoreContract,
164
+ tokenPricingProviderDependencyContract,
165
+ tokenIdMapperAddonContract,
166
+ require_sdk.walletActiveStateDependencyContract
167
+ ]),
168
+ mixin: require_sdk.createMixin((laceModule) => ({ store: require_sdk.combineStore(laceModule, store_default) })),
169
+ instance: "zero-or-more"
170
+ });
171
+ //#endregion
172
+ Object.defineProperty(exports, "LazyWalletMismatchError", {
173
+ enumerable: true,
174
+ get: function() {
175
+ return LazyWalletMismatchError;
176
+ }
177
+ });
178
+ Object.defineProperty(exports, "addressBookAddressValidatorAddonContract", {
179
+ enumerable: true,
180
+ get: function() {
181
+ return addressBookAddressValidatorAddonContract;
182
+ }
183
+ });
184
+ Object.defineProperty(exports, "tokenIdMapperAddonContract", {
185
+ enumerable: true,
186
+ get: function() {
187
+ return tokenIdMapperAddonContract;
188
+ }
189
+ });