@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.
- package/dist/{TransactionBuilder-DrB3NVTi.cjs → TransactionBuilder-CCjOn7NA.cjs} +42 -0
- package/dist/{TransactionBuilder-V6aLx4SV.js → TransactionBuilder-CIzdw18M.js} +1 -1
- package/dist/{_polyfill-buffer-patch-BnPVerlG.cjs → _polyfill-buffer-patch-CM8X7JiY.cjs} +21 -2
- package/dist/_polyfill-buffer-patch-yNxN4d5E.js +1467 -0
- package/dist/_web-crypto-random-bytes-Bo-GTcRS.js +197 -0
- package/dist/acc-module-4iIUv6My.cjs +27654 -0
- package/dist/acc-module-Cmj8EsIb.js +27624 -0
- package/dist/account-BOQruszJ.js +6 -0
- package/dist/account-BUOj4pYJ.cjs +11 -0
- package/dist/account-call-7wnopBq0.cjs +5 -0
- package/dist/account-call-B9d_2Xwi.js +4 -0
- package/dist/account-call-Bd4Rpbvt.cjs +323 -0
- package/dist/account-call-C3CkDqEC.js +276 -0
- package/dist/account-guards-BtjTGxDZ.cjs +42 -0
- package/dist/account-guards-D9Lu5T3W.js +36 -0
- package/dist/account-tokens-DvkOFVON.js +16 -0
- package/dist/account-tokens-nwcvwLu4.cjs +21 -0
- package/dist/{activity-type.stable-BJEfeLxL.cjs → activity-type-Ch6ljxBy.cjs} +2 -1
- package/dist/{activity-type.stable-C76_hWd7.js → activity-type-GsJGWs-3.js} +2 -1
- package/dist/address-B9ntKL8K.js +13761 -0
- package/dist/address-BXp-mY8H.cjs +11270 -0
- package/dist/{address-book-address-validator-DIUolI-s.js → address-book-address-validator-0J9XAADH.js} +2 -2
- package/dist/address-book-address-validator-DK0dnsRS.cjs +41 -0
- package/dist/address-book-address-validator-Di_ywo8M.js +39 -0
- package/dist/{address-book-address-validator-DNwQGlOB.cjs → address-book-address-validator-Dte_YQ2L.cjs} +2 -2
- package/dist/artefact-loader-BWWYAD7E.cjs +183 -0
- package/dist/artefact-loader-Dik4HIfv.js +160 -0
- package/dist/auto-dismiss-failure-on-success-C-qoJuid.cjs +37 -0
- package/dist/auto-dismiss-failure-on-success-s8MGDEIu.js +31 -0
- package/dist/bip32-D6wd_QMn.cjs +3851 -0
- package/dist/bitcoin-data-provider-BYPSmuZS.js +21 -0
- package/dist/bitcoin-data-provider-w1oEDSU3.cjs +26 -0
- package/dist/bitcoin.cjs +45 -0
- package/dist/bitcoin.d.ts +29906 -1
- package/dist/bitcoin.js +20 -0
- package/dist/{blockfrost-tx-submit-provider-DPTrapz-.js → blockfrost-tx-submit-provider-CBWQ0wK9.js} +5 -157
- package/dist/{blockfrost-tx-submit-provider-BAIzV5o3.cjs → blockfrost-tx-submit-provider-CLNQ5ycR.cjs} +3 -167
- package/dist/bn-d3nSOIf7.cjs +2553 -0
- package/dist/browser-B1eMbDwh.js +7468 -0
- package/dist/bytes.vo-BB7_4JK6.js +23 -0
- package/dist/bytes.vo-BNRquqaO.cjs +34 -0
- package/dist/cardano-DfPwhwm-.js +3 -0
- package/dist/{cardano-network-id.vo-DSxrFk9S.cjs → cardano-network-id.vo-BEDPn6Li.cjs} +1 -1
- package/dist/{cardano-network-id.vo-CK1tNQDg.js → cardano-network-id.vo-Cfpvbod9.js} +1 -1
- package/dist/cardano.cjs +22 -18
- package/dist/cardano.d.ts +16956 -1716
- package/dist/cardano.js +16 -11
- package/dist/client-DXBLHk7K.cjs +808 -0
- package/dist/codecs-Cswkg7Tm.cjs +4051 -0
- package/dist/codecs-Dc1Krpbt.js +3903 -0
- package/dist/{const-C84qHkjp.js → const-BJfIK_G-.js} +4 -4
- package/dist/const-BhYOdznB.cjs +42 -0
- package/dist/const-BsnjG2_Q.cjs +32071 -0
- package/dist/const-CUnCl5U0.js +13 -0
- package/dist/{const-DXk2tFyv.js → const-CjmfjBP3.js} +1 -1
- package/dist/{const-BDEg2Trq.cjs → const-D-eZIS4n.cjs} +4 -4
- package/dist/const-D0CbQlo4.js +154 -0
- package/dist/{const-BY8B3_0_.cjs → const-iwzZEE_w.cjs} +1 -1
- package/dist/contract-1R86jhSw.js +171 -0
- package/dist/contract-MKLzYVkW.cjs +189 -0
- package/dist/create-add-accounts-Brqk84vF.js +102 -0
- package/dist/create-add-accounts-DzXIh7Ot.cjs +114 -0
- package/dist/{delegation-tx-builder-CRpLP6jH.cjs → delegation-tx-builder-CCjiakoy.cjs} +6 -6
- package/dist/{delegation-tx-builder-CGVqlaFE.js → delegation-tx-builder-DZFjHDS8.js} +5 -5
- package/dist/{deregistration-tx-builder-B-CrUyX6.js → deregistration-tx-builder-Bf6xAYp4.js} +5 -5
- package/dist/{deregistration-tx-builder-DZGwB4cz.cjs → deregistration-tx-builder-CQP35yex.cjs} +6 -6
- package/dist/device-commitment-hex.vo-5wFtQvDS.js +26 -0
- package/dist/device-commitment-hex.vo-CT3RmAug.cjs +31 -0
- package/dist/device-readers-CUHYoYOH.js +145 -0
- package/dist/device-readers-CdxS2btd.cjs +168 -0
- package/dist/device-readers-D_JZeNL2.cjs +8 -0
- package/dist/device-readers-DwSNCGPP.js +4 -0
- package/dist/dist-BMi5ZjEq.cjs +43175 -0
- package/dist/dist-BtIq4XFn.cjs +535 -0
- package/dist/dist-C3SHC_Ho.cjs +1394 -0
- package/dist/dist-CykEjYEX.cjs +3814 -0
- package/dist/dist-Dcsxh3be.cjs +3452 -0
- package/dist/dist-DqJfSlTd.cjs +4413 -0
- package/dist/dist-nTZ70qj7.cjs +1306 -0
- package/dist/{earn-rewards-tx-builder-BDbTDZmD.js → earn-rewards-tx-builder-Bsga3yFb.js} +5 -5
- package/dist/{earn-rewards-tx-builder-D5sUT5v8.cjs → earn-rewards-tx-builder-GuxofYns.cjs} +6 -6
- package/dist/enc-key-circuits-B7BjgUL9.js +13 -0
- package/dist/enc-key-circuits-BLrZrBVI.cjs +24 -0
- package/dist/english-Byb9M0E_.cjs +2057 -0
- package/dist/envelopes-BGoO_v8m.js +1621 -0
- package/dist/envelopes-CH25R-DN.cjs +1722 -0
- package/dist/errors-BIftM8ZN.cjs +688 -0
- package/dist/errors-DSq5wUwt.js +466 -0
- package/dist/esm-HBSUQw3w.js +384 -0
- package/dist/esm-LZuaZjMf.cjs +389 -0
- package/dist/experimental.cjs +7349 -0
- package/dist/experimental.d.ts +86273 -0
- package/dist/experimental.js +7184 -0
- package/dist/gated-call-CDCVZIK-.cjs +5 -0
- package/dist/gated-call-D-tT7P_t.js +722 -0
- package/dist/gated-call-D_VT2quk.js +4 -0
- package/dist/gated-call-DgJm1Mi_.cjs +787 -0
- package/dist/grant-circuits-DswmW3nI.cjs +71 -0
- package/dist/grant-circuits-Jxb5y1HW.js +42 -0
- package/dist/grant-rules-By07_eDi.js +6824 -0
- package/dist/grant-rules-BzVTWXS7.cjs +7099 -0
- package/dist/grant-spend-B3Md9L0n.js +215 -0
- package/dist/grant-spend-oWmzRsjH.cjs +217 -0
- package/dist/grant-status-B2y49iIu.js +2688 -0
- package/dist/grant-status-DOr3t_u8.cjs +2820 -0
- package/dist/grants-2BZ-qEVQ.js +5 -0
- package/dist/grants-BPoLSiMt.cjs +18 -0
- package/dist/grants-BoI5uwSF.cjs +272 -0
- package/dist/grants-CtofFu-e.js +213 -0
- package/dist/{group-cardano-addresses-by-account-B533oVXR.cjs → group-cardano-addresses-by-account-Bp0g4wEY.cjs} +3 -39
- package/dist/{group-cardano-addresses-by-account-RHKoEskR.js → group-cardano-addresses-by-account-SR8MMrZf.js} +5 -35
- package/dist/{guarded-transaction-signer-Bxl6_XNd.cjs → guarded-transaction-signer-MFpPg98D.cjs} +17 -18
- package/dist/{guarded-transaction-signer-CpKLj8Kp.js → guarded-transaction-signer-P6Rp1faj.js} +8 -15
- package/dist/hex-D9ITYbwt.cjs +263 -0
- package/dist/hex-mkXcV3pN.js +191 -0
- package/dist/http-client-B3N-TMxu.cjs +167 -0
- package/dist/http-client-TRlhDZGh.js +155 -0
- package/dist/identity-BMLuufva.cjs +263 -0
- package/dist/identity-DII6f-h7.js +233 -0
- package/dist/in-memory-wallet-integration-B2xzxORj.cjs +20741 -0
- package/dist/in-memory-wallet-integration-CBRiPjLO.js +130 -0
- package/dist/in-memory-wallet-integration-CULUB5Tf.cjs +240 -0
- package/dist/{in-memory-wallet-integration-D-qn65Kx.js → in-memory-wallet-integration-ChIOirMW.js} +5 -2
- package/dist/{in-memory-wallet-integration-Croiuopx.js → in-memory-wallet-integration-CljprQQV.js} +7 -104
- package/dist/{in-memory-wallet-integration-DVh9sRXa.cjs → in-memory-wallet-integration-Cm6P8sk6.cjs} +3 -2
- package/dist/in-memory-wallet-integration-TM9bBphA.js +20738 -0
- package/dist/{in-memory-wallet-integration-CnLYeX4-.cjs → in-memory-wallet-integration-t9I00R_V.cjs} +17 -108
- package/dist/index.cjs +84 -47
- package/dist/index.d.ts +37496 -10033
- package/dist/index.js +52 -24
- package/dist/{init-CLHuAMB-.js → init-0zzs9aqU.js} +4 -4
- package/dist/{init-U8c9yHYx.cjs → init-5KcGcBb5.cjs} +1 -1
- package/dist/init-8v_n8boO.js +1177 -0
- package/dist/{init-CigestoM.js → init-B3-1ghyx.js} +2 -2
- package/dist/init-B8U3ABhS.cjs +107 -0
- package/dist/init-BJn-8_hf.js +141 -0
- package/dist/init-BPU3j8sT.cjs +6 -0
- package/dist/init-BRzH6xu-2.cjs +2797 -0
- package/dist/init-BmzfDaKL.js +1142 -0
- package/dist/{init-C-jErzp5.cjs → init-BopV9ed4.cjs} +2 -2
- package/dist/init-BpHTq2R5.js +105 -0
- package/dist/init-BpSITBfF.js +39 -0
- package/dist/{init-DX4WyB0R.cjs → init-BrdVzxei.cjs} +3 -3
- package/dist/{init-LfyMo-sS.cjs → init-BwkU0ruo.cjs} +2 -2
- package/dist/{init-CB__aLD7.cjs → init-C-G32J12.cjs} +2 -2
- package/dist/init-C00gw1zi.js +422 -0
- package/dist/{init-TkPq_Ny_.js → init-C2RgrfZe.js} +1 -1
- package/dist/{init-DcYY6zMD.js → init-C8URA2OX.js} +1 -1
- package/dist/init-CDkRynJa.js +2796 -0
- package/dist/{init-Cg9XdAru.js → init-CNM5m7M2.js} +4 -4
- package/dist/init-CR7BfztQ.cjs +18 -0
- package/dist/{init-CSHwHnfg.cjs → init-CSDpdu0Q.cjs} +2 -2
- package/dist/{init-aJHl-7AO.js → init-CX0AMQUn.js} +2 -2
- package/dist/{init-FMGDET-9.js → init-CfTbSEKy.js} +259 -60
- package/dist/{init-CR6tpw1B.js → init-Cigr_tKx.js} +47 -43
- package/dist/init-CuW7rHNA.js +3584 -0
- package/dist/{init-CFYsq82V.js → init-CyAY4Lzl.js} +1 -1
- package/dist/init-Cz0rz5fU.cjs +3585 -0
- package/dist/{init-BKhH6mVR.cjs → init-D6BxBs7e.cjs} +1 -1
- package/dist/init-D8OeObDF.cjs +1141 -0
- package/dist/init-D9g1HXYf.cjs +40 -0
- package/dist/{init-CNLGJJRx.js → init-DA7zmptx.js} +1 -1
- package/dist/{init-DkIc5nqF.cjs → init-DFMiP2ZH.cjs} +1 -1
- package/dist/{init-zSzCjoor.js → init-DFjT8YvT.js} +4 -4
- package/dist/init-DGjXwWs2.cjs +143 -0
- package/dist/init-DHrCbpkW.cjs +121 -0
- package/dist/{init-B64zCLxG.cjs → init-DUF4ar8P.cjs} +4 -4
- package/dist/init-DlqJuHhl.js +119 -0
- package/dist/{init-y2Ra0vZP.js → init-Dnsv155v.js} +3 -3
- package/dist/init-DrRdf5sZ.cjs +1176 -0
- package/dist/init-DuYENxci.js +17 -0
- package/dist/{init-D6DBUsD3.cjs → init-Dv3zKj0r.cjs} +4 -4
- package/dist/{init-BtzMZ7Pk.cjs → init-Dy-05ktr.cjs} +1 -1
- package/dist/{init-BsCBAGWf.cjs → init-EP0CUWNK.cjs} +2 -2
- package/dist/{init-BJVU54pI.cjs → init-EhzD7a8i.cjs} +1 -1
- package/dist/{init-w9GEs73W.js → init-Fw89ZmrR.js} +2 -2
- package/dist/init-GsT2AEa4.cjs +424 -0
- package/dist/{init-Rxohwpmu.js → init-NCjgwCZy.js} +2 -2
- package/dist/{init-DxUHsN53.cjs → init-NdhG_VrF.cjs} +6 -6
- package/dist/{init-DDdhguVC.js → init-SZ01tARX2.js} +2 -2
- package/dist/{init-BAJJzBza.js → init-Y3mkB4XS.js} +2 -2
- package/dist/init-c4l6r-o-.js +5 -0
- package/dist/{init-Dku4b2lG.js → init-kEfUTuG2.js} +1 -1
- package/dist/{init-C7IeJwQR.cjs → init-lzHt4Cli.cjs} +256 -59
- package/dist/{init-anYu6XB7.cjs → init-rmt7-fQE.cjs} +2 -2
- package/dist/{init-C4Bkib9u.cjs → init-zU-_9Gsp.cjs} +67 -65
- package/dist/{is-retriable-error-BU0e3hVI.js → is-retriable-error-BUiVJDwH.js} +1 -1
- package/dist/{is-retriable-error-CeeuHqDa.cjs → is-retriable-error-Dpt860if.cjs} +1 -1
- package/dist/jubjub-authoriser-D7zDXu3V.js +86 -0
- package/dist/jubjub-authoriser-Dgu6o3Sv.cjs +87 -0
- package/dist/key-source-5oUBFiC7.cjs +583 -0
- package/dist/key-source-B08HukZg.js +2550 -0
- package/dist/keyDerivation-D3k9XyHg.js +4077 -0
- package/dist/keyDerivation-u0nBA93T.cjs +274 -0
- package/dist/{lace-context-CZcNHr4M.js → lace-context-BZciB9c7.js} +4 -4
- package/dist/{lace-context-fJTDghdp.cjs → lace-context-DgR6vLli.cjs} +4 -4
- package/dist/lib--iqvW4O_.js +2354 -0
- package/dist/lib-Yk6Upl5D.cjs +2359 -0
- package/dist/{libsodium-wrappers-UH0LaOUE.js → libsodium-wrappers-BhbOA8dQ.js} +3 -1647
- package/dist/midnight-account-id.vo-0x9X-r3l.cjs +10 -0
- package/dist/midnight-account-id.vo-DjCAGcqc.js +5 -0
- package/dist/midnight-engine-DpemplKO.js +5 -0
- package/dist/midnight-engine-xU1wotne.cjs +6 -0
- package/dist/midnight-wallet-DIsAlSn6.js +18 -0
- package/dist/midnight-wallet-XTZc2li7.cjs +24 -0
- package/dist/midnight.cjs +1408 -0
- package/dist/midnight.d.ts +28934 -0
- package/dist/midnight.js +1352 -0
- package/dist/modules-cardano-B1nDUWqy.js +995 -0
- package/dist/modules-cardano-BYeYHrRm.cjs +1108 -0
- package/dist/node-relay-DWe1U0w2.cjs +49 -0
- package/dist/node-relay-h4i5IlAQ.js +48 -0
- package/dist/outputs-Bd2yZVjx.js +720 -0
- package/dist/outputs-CJoQBIA2.cjs +990 -0
- package/dist/pbkdf2-CIW-oWrm.cjs +1337 -0
- package/dist/pending-operation-B0_P78Jo.cjs +26 -0
- package/dist/pending-operation-BIS6mpjB.js +21 -0
- package/dist/providers-FjhM47BH.cjs +388 -0
- package/dist/providers-WtiSuxFu.js +365 -0
- package/dist/redacted-BmE2aXqr.js +81 -0
- package/dist/redacted-CRZJLS3w.cjs +86 -0
- package/dist/{retry-config-DC5IMaH7.cjs → retry-config-BaCfVC1H.cjs} +1 -1
- package/dist/{retry-config-BcUmMS--.js → retry-config-Dmgt28wM.js} +1 -1
- package/dist/safe-buffer-B_vMqJWU.js +43 -0
- package/dist/safe-buffer-DYOwEfHB.cjs +48 -0
- package/dist/sdk-Cb-gZnS9.js +1241 -0
- package/dist/sdk-DffwmX8b.cjs +1439 -0
- package/dist/sdk-init-Bln9rFtn.js +4138 -0
- package/dist/sdk-init-CYViTJY_.cjs +3841 -0
- package/dist/{seam-cardano-CATqBEyK.js → seam-cardano-B_etH4F4.js} +1 -1
- package/dist/{bytes.vo-TgiwogWF.js → secret-box-DUR0ACYz.js} +3 -25
- package/dist/{bytes.vo-Ck5u40RA.cjs → secret-box-DrjLZuS1.cjs} +1 -35
- package/dist/send-proof-progress-C-ljq1x5.js +30 -0
- package/dist/send-proof-progress-vmsaSfbz.cjs +47 -0
- package/dist/side-effects-BnqYz7Nl.js +768 -0
- package/dist/side-effects-CngaeXi0.cjs +804 -0
- package/dist/sign-bitcoin-transaction-with-seed-D4z62-jV.js +147 -0
- package/dist/sign-bitcoin-transaction-with-seed-DsLYXnCY.cjs +158 -0
- package/dist/signer-3fk8lZtE.cjs +7 -0
- package/dist/signer-CsL28DrK.cjs +121 -0
- package/dist/signer-DGluibtn.js +92 -0
- package/dist/signer-RqB5pu3K.js +2 -0
- package/dist/signer-factory-BA7WFJVZ.js +282 -0
- package/dist/signer-factory-Cwd6o-lG.cjs +281 -0
- package/dist/{signer-factory-9URFliA5.js → signer-factory-DObB55D4.js} +6 -3
- package/dist/signer-factory-DhZiE03y.cjs +149 -0
- package/dist/{signer-factory-BWGUmnvm.cjs → signer-factory-Ds6G2AZk.cjs} +4 -3
- package/dist/signer-factory-hzSRaIw2.js +148 -0
- package/dist/{slice-CuHUaPZx.cjs → slice-7G2xxYKJ.cjs} +3 -3
- package/dist/{slice-DZmQJNV8.cjs → slice-B4CdYoPu.cjs} +2 -2
- package/dist/slice-BPNuHKfw.js +9091 -0
- package/dist/{slice-DGcNrbPR.cjs → slice-Bg6HEr3K.cjs} +4 -4
- package/dist/{slice-DtaO72qY.cjs → slice-Bs2aMERu.cjs} +3 -3
- package/dist/{slice-HeHCv3bl.cjs → slice-C34iOOUH.cjs} +7 -7
- package/dist/{slice-Do2R2CYW.cjs → slice-C9TT5KhY.cjs} +6 -6
- package/dist/{slice-eIwcwKHI.js → slice-CK07EBCo.js} +4 -4
- package/dist/{slice-CnyWevM9.js → slice-CU80pbiu.js} +3 -3
- package/dist/{slice-CobanYgn.js → slice-CwyYrh1H.js} +2 -2
- package/dist/slice-Czfp6t84.cjs +436 -0
- package/dist/{slice-d0p6-xj5.js → slice-D-9aPKG-.js} +6 -6
- package/dist/{slice-maaskdUn.js → slice-DBpJ2QGf.js} +6 -6
- package/dist/{slice-mxLQ_FeY.cjs → slice-DTZTiJle.cjs} +352 -39
- package/dist/{slice-zJ9XVYjZ.js → slice-Da426sf9.js} +1 -1
- package/dist/{slice-D11m2EKl.cjs → slice-DayJvMRD.cjs} +1 -1
- package/dist/slice-DnBWfA-k.cjs +9109 -0
- package/dist/{slice-oqm_r1cS.cjs → slice-DnG-yvpI.cjs} +2 -2
- package/dist/{slice-BNu73oBa.js → slice-DyNs7oWp.js} +2 -2
- package/dist/{slice-CB4SnzMm.js → slice-GwiiJRoq.js} +3 -3
- package/dist/slice-oWnc7YVD.js +412 -0
- package/dist/{slice-B2PhoWAg.js → slice-qt0uBExh.js} +325 -37
- package/dist/slice-t8Gzj55G2.cjs +106 -0
- package/dist/slice-t8Q1cHm-.js +88 -0
- package/dist/src-BDzYIksE.cjs +20637 -0
- package/dist/src-BFoefPv_.js +20755 -0
- package/dist/store-B1Lq3cEf.cjs +66 -0
- package/dist/store-DuBG8qh5.js +37 -0
- package/dist/submit-Bs77dPn_.cjs +413 -0
- package/dist/submit-DOv8Z0Vf.js +336 -0
- package/dist/submit-bitcoin-tx-D6oYgH5S.js +983 -0
- package/dist/submit-bitcoin-tx-goFuRL7K.cjs +1049 -0
- package/dist/{sync-operation-utils-BYXLO80m.js → sync-operation-utils-31iFLExW.js} +2 -38
- package/dist/{sync-operation-utils-SdPbwFoD.cjs → sync-operation-utils-COIZ66-I.cjs} +1 -67
- package/dist/token-id-mapper-Bnds3xKH.cjs +18 -0
- package/dist/{token-id-mapper-DsPAL6Nh.cjs → token-id-mapper-CVyQJUKY.cjs} +2 -2
- package/dist/token-id-mapper-CnKHQ8DV.js +16 -0
- package/dist/{token-id-mapper-B2ivlLv3.js → token-id-mapper-D29Ggv8h.js} +2 -2
- package/dist/tokens-Cevp7rdU.cjs +62 -0
- package/dist/tokens-Diw4MLRM.js +44 -0
- package/dist/types-B8uiJn-X.js +12 -0
- package/dist/types-BHC12eSa.js +33 -0
- package/dist/types-CJT6XF2c.js +10 -0
- package/dist/types-CLRUYpfe.cjs +23 -0
- package/dist/types-Cc3mC8u0.cjs +50 -0
- package/dist/types-DWbVZpnF.cjs +15 -0
- package/dist/unwrap-provider-result-BZSiwabU.js +32 -0
- package/dist/unwrap-provider-result-ZqfBsTkk.cjs +39 -0
- package/dist/{util-CGzqQ8IV.cjs → util-Bu4W5lF4.cjs} +1 -1
- package/dist/{util-BaLzwa32.js → util-Cp5cZkfK.js} +1 -1
- package/dist/{utils-o8aMjfln.js → utils-BfBEUvWA.js} +2 -2
- package/dist/utils-DFwzEvbv.js +65 -0
- package/dist/{utils-5JvjbqH3.cjs → utils-DsElZgCI.cjs} +7 -1
- package/dist/utils-IXxR-Djh.cjs +112 -0
- package/dist/v8Signatures-CO_Uloy7.cjs +71 -0
- package/dist/{vote-delegation-tx-builder-BpEMSti4.cjs → vote-delegation-tx-builder-BUg1S2Ep.cjs} +6 -6
- package/dist/{vote-delegation-tx-builder-CmKv6GoG.js → vote-delegation-tx-builder-C6FiS7zI.js} +5 -5
- package/dist/watch-CUEvcP-V.js +21997 -0
- package/dist/watch-DMF2s-II.cjs +52281 -0
- package/package.json +96 -4
- package/dist/account-guards.stable-B1DSSh9D.cjs +0 -10
- package/dist/account-guards.stable-JRQ5qx2V.js +0 -5
- package/dist/codecs-B7X9pAsK.cjs +0 -1945
- package/dist/codecs-CC1Xjntz.js +0 -1882
- package/dist/init-Bv53hpLM.js +0 -19
- package/dist/init-CRbjI7p1.js +0 -3494
- package/dist/init-DAna1KCg.cjs +0 -3495
- package/dist/init-DGe47B22.cjs +0 -364
- package/dist/init-DMtyvYfC.cjs +0 -21
- package/dist/init-TkPDD750.js +0 -363
- package/dist/modules-cardano-BDvuL4Xx.js +0 -5248
- package/dist/modules-cardano-D2G3De2P.cjs +0 -5432
- package/dist/slice-CGVHXHDt.cjs +0 -125
- package/dist/slice-DhvF7L6X.js +0 -107
- /package/dist/{account-id.vo-LvCBVn5r.cjs → account-id.vo-DwqFjK5u.cjs} +0 -0
- /package/dist/{account-id.vo-MYSI7YFm.js → account-id.vo-OPz2v-JZ.js} +0 -0
- /package/dist/{actions-DdGbj7c7.cjs → actions-B2BJ4RTy.cjs} +0 -0
- /package/dist/{actions-9QSQR-GB.js → actions-iLXdgL5Y.js} +0 -0
- /package/dist/{apply-vkey-witnesses-ClZbpk5w.js → apply-vkey-witnesses-BKx3lcs0.js} +0 -0
- /package/dist/{apply-vkey-witnesses-CLzVSWxl.cjs → apply-vkey-witnesses-ZnFS0jnJ.cjs} +0 -0
- /package/dist/{asyncoption-Cw07zPH7.js → asyncoption-CruEYOBI.js} +0 -0
- /package/dist/{asyncoption-DYoGuQfP.cjs → asyncoption-i0VbqVTq.cjs} +0 -0
- /package/dist/{bignum.vo-B0rK_PQ1.js → bignum.vo-CEXOIew0.js} +0 -0
- /package/dist/{bignum.vo-DsG3kNiZ.cjs → bignum.vo-hx2kuqlA.cjs} +0 -0
- /package/dist/{bip32ed25519-1ApqeAZk.cjs → bip32ed25519-B7Yat217.cjs} +0 -0
- /package/dist/{bip32ed25519-DetAdGwD.js → bip32ed25519-FQ8qvdcq.js} +0 -0
- /package/dist/{blake2b-DOEVc57D.js → blake2b-BiQTw3GC.js} +0 -0
- /package/dist/{blake2b-B9tftbvG.cjs → blake2b-DEeVUdKR.cjs} +0 -0
- /package/dist/{blockchain-network-id.vo-BXpZhvvQ.cjs → blockchain-network-id.vo-BAKEwGjG.cjs} +0 -0
- /package/dist/{blockchain-network-id.vo-DNRkuT5B.js → blockchain-network-id.vo-CiVykuqG.js} +0 -0
- /package/dist/{blockingWithLatestFrom-C5wp_uA-.js → blockingWithLatestFrom-Cd8c8EPG.js} +0 -0
- /package/dist/{blockingWithLatestFrom-DY8OPg0w.cjs → blockingWithLatestFrom-D8kBPBMX.cjs} +0 -0
- /package/dist/{cardano-network-id-to-network-type-CrZfUcyP.js → cardano-network-id-to-network-type-BWwzeEtM.js} +0 -0
- /package/dist/{cardano-network-id-to-network-type-BDTF-HmK.cjs → cardano-network-id-to-network-type-C0ufJOyE.cjs} +0 -0
- /package/dist/{cardano-tx-id.vo-BPhV-AmZ.cjs → cardano-tx-id.vo-TLjJZHCI.cjs} +0 -0
- /package/dist/{cardano-tx-id.vo-DF9NzZXk.js → cardano-tx-id.vo-eVnKuzlm.js} +0 -0
- /package/dist/{composite-signer-factory-_46QsNBz.js → composite-signer-factory-CR8YHA1y.js} +0 -0
- /package/dist/{composite-signer-factory-BpF1mIYA.cjs → composite-signer-factory-m5cVs9h_.cjs} +0 -0
- /package/dist/{error-CNIquqT5.cjs → error-Cb3EnD0u.cjs} +0 -0
- /package/dist/{error-BCp9NkPi.js → error-DIZOY2Lw.js} +0 -0
- /package/dist/{esm-browser-C93Q-EOI.js → esm-browser-MG97cre9.js} +0 -0
- /package/dist/{esm-browser-DTc9IK3D.cjs → esm-browser-bweqfBlL.cjs} +0 -0
- /package/dist/{feature-flag-key.vo-ofrB6ZVQ.js → feature-flag-key.vo-DN_-4-sG.js} +0 -0
- /package/dist/{feature-flag-key.vo-BPz-ZAp6.cjs → feature-flag-key.vo-RlfHL3hq.cjs} +0 -0
- /package/dist/{first-state-of-status-OROkXcRv.cjs → first-state-of-status-CbT7hPa4.cjs} +0 -0
- /package/dist/{first-state-of-status-DQnMT3ya.js → first-state-of-status-unPynOuM.js} +0 -0
- /package/dist/{init-Es3wHW7D.js → init-829HRYcz.js} +0 -0
- /package/dist/{init-CKipPE_c.js → init-A-VyGSNW2.js} +0 -0
- /package/dist/{init-DFQQ9dTW.cjs → init-Atisw4x2.cjs} +0 -0
- /package/dist/{init-C5CEZ1m0.cjs → init-BFcvPHL-.cjs} +0 -0
- /package/dist/{init-IAk_CkGa.cjs → init-BgNobbNq.cjs} +0 -0
- /package/dist/{init-cqN3uX2j.js → init-atCFur0v.js} +0 -0
- /package/dist/{is-redux-persist-state-CTn3WZVh.cjs → is-redux-persist-state-BCFnSm36.cjs} +0 -0
- /package/dist/{is-redux-persist-state-Cxcd0_bM.js → is-redux-persist-state-yBfq0h_E.js} +0 -0
- /package/dist/{key-value-store-8cMzeNyG.js → key-value-store--W3SrMaw.js} +0 -0
- /package/dist/{key-value-store-DUAepXQf.cjs → key-value-store-C2Xt5Emp.cjs} +0 -0
- /package/dist/{repo-slice-WxetRhMY.cjs → repo-slice-7X4AYYVm.cjs} +0 -0
- /package/dist/{repo-slice-DwyMhCR1.js → repo-slice-RxFm0zDZ.js} +0 -0
- /package/dist/{reselect-CRDqmQY9.cjs → reselect-Bd94u0K-.cjs} +0 -0
- /package/dist/{reselect-C06X06oX.js → reselect-CGoLzEPv.js} +0 -0
- /package/dist/{serializable-B8GahgE1.js → serializable-BHdKIgk3.js} +0 -0
- /package/dist/{serializable-CRdnFaLZ.cjs → serializable-BxHkoPdk.cjs} +0 -0
- /package/dist/{slice-D11FHQuQ.cjs → slice-BiRsDKOK.cjs} +0 -0
- /package/dist/{slice-Be7hj4Iy.js → slice-Bk0Sv05J.js} +0 -0
- /package/dist/{slice-FioKeHtA.cjs → slice-Dqw1ecum.cjs} +0 -0
- /package/dist/{slice-B87b52iM.js → slice-obCSLm1x.js} +0 -0
- /package/dist/{src-vq1wS9sZ.js → src-BlxEp6Mm.js} +0 -0
- /package/dist/{src-BTPIvlDI.cjs → src-Cqp0B2M_.cjs} +0 -0
- /package/dist/{time.vo-CQ8pSXz2.cjs → time.vo-D3wWRw9L.cjs} +0 -0
- /package/dist/{time.vo-DkYYGYp6.js → time.vo-tNheinXm.js} +0 -0
- /package/dist/{toEmpty-CgAl3097.js → toEmpty-8Zax1MPd.js} +0 -0
- /package/dist/{toEmpty-DAMmNB5r.cjs → toEmpty-CYAbupM4.cjs} +0 -0
- /package/dist/{token-id.vo-ClsroxHO.js → token-id.vo-Bvwhr3ZE.js} +0 -0
- /package/dist/{token-id.vo-BxG9TG0O.cjs → token-id.vo-DXv5uS9n.cjs} +0 -0
- /package/dist/{util-DxzlYNS5.js → util-C8a4fA9p.js} +0 -0
- /package/dist/{util-CmdAhheh.cjs → util-CzeB3hfa.cjs} +0 -0
- /package/dist/{util-selector-CcK-GAdE.js → util-selector-BSTsxgne.js} +0 -0
- /package/dist/{util-selector-BcAncU4L.cjs → util-selector-BWPH68_l.cjs} +0 -0
- /package/dist/{while-active-BpppWuCs.js → while-active-B0lWy_6l.js} +0 -0
- /package/dist/{while-active-Dhc2LwOm.cjs → while-active-Dsowp0Fi.cjs} +0 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import "./_polyfill-buffer-patch-yNxN4d5E.js";
|
|
2
|
+
import "./codecs-Dc1Krpbt.js";
|
|
3
|
+
import { i as granteePoint, n as assertIssueRules, r as circuitScope } from "./grant-rules-By07_eDi.js";
|
|
4
|
+
import { a as originHash, c as prepareRevokeGrant, i as issueGrantBinding, l as scopeArgs, n as deriveGrantId, o as prepareIssueGrant, r as grantObjectCommit, s as prepareRevokeAllGrants, t as K256_GRANT_ENVELOPE, u as scopeDigest } from "./grants-CtofFu-e.js";
|
|
5
|
+
export { K256_GRANT_ENVELOPE, assertIssueRules, circuitScope, deriveGrantId, grantObjectCommit, granteePoint, issueGrantBinding, originHash, prepareIssueGrant, prepareRevokeAllGrants, prepareRevokeGrant, scopeArgs, scopeDigest };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require("./rolldown-runtime-Br2OG8yv.cjs");
|
|
2
|
+
require("./_polyfill-buffer-patch-CM8X7JiY.cjs");
|
|
3
|
+
require("./codecs-Cswkg7Tm.cjs");
|
|
4
|
+
const require_grant_rules = require("./grant-rules-BzVTWXS7.cjs");
|
|
5
|
+
const require_grants = require("./grants-BoI5uwSF.cjs");
|
|
6
|
+
exports.K256_GRANT_ENVELOPE = require_grants.K256_GRANT_ENVELOPE;
|
|
7
|
+
exports.assertIssueRules = require_grant_rules.assertIssueRules;
|
|
8
|
+
exports.circuitScope = require_grant_rules.circuitScope;
|
|
9
|
+
exports.deriveGrantId = require_grants.deriveGrantId;
|
|
10
|
+
exports.grantObjectCommit = require_grants.grantObjectCommit;
|
|
11
|
+
exports.granteePoint = require_grant_rules.granteePoint;
|
|
12
|
+
exports.issueGrantBinding = require_grants.issueGrantBinding;
|
|
13
|
+
exports.originHash = require_grants.originHash;
|
|
14
|
+
exports.prepareIssueGrant = require_grants.prepareIssueGrant;
|
|
15
|
+
exports.prepareRevokeAllGrants = require_grants.prepareRevokeAllGrants;
|
|
16
|
+
exports.prepareRevokeGrant = require_grants.prepareRevokeGrant;
|
|
17
|
+
exports.scopeArgs = require_grants.scopeArgs;
|
|
18
|
+
exports.scopeDigest = require_grants.scopeDigest;
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
const require_bytes_vo = require("./bytes.vo-BNRquqaO.cjs");
|
|
2
|
+
const require_errors = require("./errors-BIftM8ZN.cjs");
|
|
3
|
+
const require_grant_rules = require("./grant-rules-BzVTWXS7.cjs");
|
|
4
|
+
const require_grant_circuits = require("./grant-circuits-DswmW3nI.cjs");
|
|
5
|
+
const require_acc_module = require("./acc-module-4iIUv6My.cjs");
|
|
6
|
+
//#region ../../packages/module/passport-account/src/acc/grants.ts
|
|
7
|
+
/** Domain tag of the origin hash; it fills its 32-byte pad exactly. */
|
|
8
|
+
const GRANT_ORIGIN_TAG = "midnight:account:grant:origin:v1";
|
|
9
|
+
const ORIGIN_TAG_LENGTH = 32;
|
|
10
|
+
const SCOPE_SALT_LENGTH = 32;
|
|
11
|
+
const GRANT_SLOT_COUNT = 256;
|
|
12
|
+
const SCOPE_ARG_COUNT = 16;
|
|
13
|
+
/**
|
|
14
|
+
* The signature envelope a secp256k1 grant is bound to: plain ECDSA over
|
|
15
|
+
* the SHA-256 digest of the challenge, the only envelope the contract
|
|
16
|
+
* admits for a spend grant.
|
|
17
|
+
*/
|
|
18
|
+
const K256_GRANT_ENVELOPE = 0n;
|
|
19
|
+
/** Lays the scope out in the circuit's declaration order. */
|
|
20
|
+
const scopeArgs = (scope) => [
|
|
21
|
+
scope.opWithdrawUnshielded,
|
|
22
|
+
scope.opWithdrawShielded,
|
|
23
|
+
scope.opWithdrawShieldedToContract,
|
|
24
|
+
scope.read,
|
|
25
|
+
scope.color,
|
|
26
|
+
scope.recipientKind,
|
|
27
|
+
scope.recipient,
|
|
28
|
+
scope.maxCoinValue,
|
|
29
|
+
scope.perCallCap,
|
|
30
|
+
scope.cap,
|
|
31
|
+
scope.expiresAt,
|
|
32
|
+
scope.rpIdHash,
|
|
33
|
+
scope.readPkHash,
|
|
34
|
+
scope.windowLen,
|
|
35
|
+
scope.windowCap,
|
|
36
|
+
{
|
|
37
|
+
is_some: scope.caller !== void 0,
|
|
38
|
+
value: { bytes: scope.caller ?? require_grant_rules.zero32() }
|
|
39
|
+
}
|
|
40
|
+
];
|
|
41
|
+
/**
|
|
42
|
+
* The salted digest of the plaintext scope, the single element through
|
|
43
|
+
* which the issue challenge binds the whole scope, produced by the
|
|
44
|
+
* contract's own pure circuit.
|
|
45
|
+
*/
|
|
46
|
+
const scopeDigest = (scopeSalt, args) => require_acc_module.pureCircuits.derive_grant_scope_digest(scopeSalt, ...args);
|
|
47
|
+
/**
|
|
48
|
+
* The commitment the contract stores for a grant's object: the colour,
|
|
49
|
+
* recipient kind and value, and coin bound of its circuit scope, hidden
|
|
50
|
+
* under the scope salt, as lowercase hex, produced by the contract's own
|
|
51
|
+
* pure circuit.
|
|
52
|
+
*/
|
|
53
|
+
const grantObjectCommit = (scopeSalt, scope) => require_bytes_vo.HexBytes.fromByteArray(require_acc_module.pureCircuits.derive_grant_object_commit(scopeSalt, scope.color, scope.recipientKind, scope.recipient, scope.maxCoinValue));
|
|
54
|
+
/**
|
|
55
|
+
* The origin hash that enters a grant id: SHA-256 of the origin tag padded
|
|
56
|
+
* to 32 bytes followed by the raw UTF-8 bytes of the client id. Computed
|
|
57
|
+
* off chain only, so no circuit exports it. For this module the client id
|
|
58
|
+
* is the relying party id of the consumer issuing the grant.
|
|
59
|
+
*/
|
|
60
|
+
const originHash = async (clientId) => {
|
|
61
|
+
const encoder = new TextEncoder();
|
|
62
|
+
const tag = new Uint8Array(ORIGIN_TAG_LENGTH);
|
|
63
|
+
tag.set(encoder.encode(GRANT_ORIGIN_TAG));
|
|
64
|
+
const client = encoder.encode(clientId);
|
|
65
|
+
const preimage = new Uint8Array(tag.length + client.length);
|
|
66
|
+
preimage.set(tag);
|
|
67
|
+
preimage.set(client, tag.length);
|
|
68
|
+
return new Uint8Array(await crypto.subtle.digest("SHA-256", preimage));
|
|
69
|
+
};
|
|
70
|
+
/** A grant id from the bytes a derivation circuit returns. */
|
|
71
|
+
const grantIdOf = (id) => require_grant_rules.GrantId(require_bytes_vo.HexBytes.fromByteArray(id));
|
|
72
|
+
/**
|
|
73
|
+
* The identity of a grant: the contract's own commitment to the account,
|
|
74
|
+
* the grantee key, the origin hash and the slot, which keys the record in
|
|
75
|
+
* the grants map. Each grantee scheme has its own derivation, and a
|
|
76
|
+
* secp256k1 grant also binds its signature envelope, so the same key
|
|
77
|
+
* bytes never name the same grant under two schemes or two envelopes.
|
|
78
|
+
*/
|
|
79
|
+
const deriveGrantId = ({ contractAddress, granteePublicKey, originHash: origin, slot }) => {
|
|
80
|
+
const self = { bytes: contractAddress };
|
|
81
|
+
switch (granteePublicKey.scheme) {
|
|
82
|
+
case "jubjub-schnorr": return grantIdOf(require_acc_module.pureCircuits.derive_grant_id_with_jubjub(self, granteePublicKey.point, origin, BigInt(slot)));
|
|
83
|
+
case "secp256k1-ecdsa": return grantIdOf(require_acc_module.pureCircuits.derive_grant_id_with_k256(self, granteePublicKey.point, K256_GRANT_ENVELOPE, origin, BigInt(slot)));
|
|
84
|
+
default: {
|
|
85
|
+
const unhandled = granteePublicKey;
|
|
86
|
+
throw new require_errors.GrantScopeInvalidError(`unsupported grantee scheme "${String(unhandled.scheme)}"`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* The first slot under which this grantee and origin have no active grant,
|
|
92
|
+
* with the id derived for it. The contract stores neither grantee nor
|
|
93
|
+
* slot, so the slot is found by deriving the id of each candidate and
|
|
94
|
+
* checking it against the roster. A revoked grant leaves a tombstone the
|
|
95
|
+
* contract lets a new grant overwrite, so its slot counts as free.
|
|
96
|
+
*
|
|
97
|
+
* @throws {@link GrantLimitReachedError} when every slot is taken.
|
|
98
|
+
*/
|
|
99
|
+
const findFreeSlot = ({ contractAddress, grantee, originHash: origin, roster }) => {
|
|
100
|
+
const taken = new Set(roster.filter((record) => record.active).map((record) => record.id));
|
|
101
|
+
const granteePublicKey = require_grant_rules.granteePoint(grantee);
|
|
102
|
+
for (let candidate = 0; candidate < GRANT_SLOT_COUNT; candidate++) {
|
|
103
|
+
const slot = require_grant_rules.GrantSlot(candidate);
|
|
104
|
+
const grantId = deriveGrantId({
|
|
105
|
+
contractAddress,
|
|
106
|
+
granteePublicKey,
|
|
107
|
+
originHash: origin,
|
|
108
|
+
slot
|
|
109
|
+
});
|
|
110
|
+
if (!taken.has(grantId)) return {
|
|
111
|
+
slot,
|
|
112
|
+
grantId
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
throw new require_errors.GrantLimitReachedError("Every grant slot of this grantee under this origin is taken.");
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Prepares `issue_grant_with_jubjub`: encodes and checks the scope,
|
|
119
|
+
* allocates the grantee's slot, derives the grant id and draws the scope
|
|
120
|
+
* salt. The call's arguments are the grant id, the scope in declaration
|
|
121
|
+
* order and the salt; the authoriser derives the scope digest it signs
|
|
122
|
+
* from those same arguments, and the preparation carries that digest for
|
|
123
|
+
* an authoriser that presents it ahead of the ceremony.
|
|
124
|
+
*
|
|
125
|
+
* @throws {@link GrantScopeInvalidError} when the scope is malformed or
|
|
126
|
+
* breaks an issue rule.
|
|
127
|
+
* @throws {@link GrantLimitReachedError} when the grantee has no free slot.
|
|
128
|
+
*/
|
|
129
|
+
const prepareIssueGrant = ({ contractAddress, scope, originHash: origin, roster, randomBytes = (length) => crypto.getRandomValues(new Uint8Array(length)) }) => {
|
|
130
|
+
const encoded = require_grant_rules.circuitScope(scope);
|
|
131
|
+
require_grant_rules.assertIssueRules(encoded);
|
|
132
|
+
const { slot, grantId } = findFreeSlot({
|
|
133
|
+
contractAddress,
|
|
134
|
+
grantee: scope.grantee,
|
|
135
|
+
originHash: origin,
|
|
136
|
+
roster
|
|
137
|
+
});
|
|
138
|
+
const salt = randomBytes(SCOPE_SALT_LENGTH);
|
|
139
|
+
const args = scopeArgs(encoded);
|
|
140
|
+
return {
|
|
141
|
+
grantId,
|
|
142
|
+
slot,
|
|
143
|
+
scopeSalt: require_grant_rules.GrantScopeSalt(require_bytes_vo.HexBytes.fromByteArray(salt)),
|
|
144
|
+
scopeDigest: require_bytes_vo.HexBytes.fromByteArray(scopeDigest(salt, args)),
|
|
145
|
+
call: {
|
|
146
|
+
circuit: require_grant_circuits.ISSUE_GRANT_CIRCUIT,
|
|
147
|
+
args: [
|
|
148
|
+
require_bytes_vo.ByteArray.fromHex(require_bytes_vo.HexBytes(grantId)),
|
|
149
|
+
...args,
|
|
150
|
+
salt
|
|
151
|
+
]
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
/** Prepares `revoke_grant_with_jubjub` over one grant id. */
|
|
156
|
+
const prepareRevokeGrant = (grantId) => ({
|
|
157
|
+
circuit: require_grant_circuits.REVOKE_GRANT_CIRCUIT,
|
|
158
|
+
args: [require_bytes_vo.ByteArray.fromHex(require_bytes_vo.HexBytes(grantId))]
|
|
159
|
+
});
|
|
160
|
+
/** Prepares `revoke_all_grants_with_jubjub`, which takes no argument. */
|
|
161
|
+
const prepareRevokeAllGrants = () => ({
|
|
162
|
+
circuit: require_grant_circuits.REVOKE_ALL_GRANTS_CIRCUIT,
|
|
163
|
+
args: []
|
|
164
|
+
});
|
|
165
|
+
const SCOPE_ARG_KINDS = [
|
|
166
|
+
"boolean",
|
|
167
|
+
"boolean",
|
|
168
|
+
"boolean",
|
|
169
|
+
"boolean",
|
|
170
|
+
"bytes",
|
|
171
|
+
"bigint",
|
|
172
|
+
"bytes",
|
|
173
|
+
"bigint",
|
|
174
|
+
"bigint",
|
|
175
|
+
"bigint",
|
|
176
|
+
"bigint",
|
|
177
|
+
"bytes",
|
|
178
|
+
"bytes",
|
|
179
|
+
"bigint",
|
|
180
|
+
"bigint",
|
|
181
|
+
"caller"
|
|
182
|
+
];
|
|
183
|
+
const isCaller = (value) => typeof value === "object" && value !== null && typeof value.is_some === "boolean" && value.value?.bytes instanceof Uint8Array;
|
|
184
|
+
const isScopeArgument = (value, kind) => {
|
|
185
|
+
switch (kind) {
|
|
186
|
+
case "boolean": return typeof value === "boolean";
|
|
187
|
+
case "bigint": return typeof value === "bigint";
|
|
188
|
+
case "bytes": return value instanceof Uint8Array;
|
|
189
|
+
case "caller": return isCaller(value);
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
const isScopeArgs = (values) => values.length === SCOPE_ARG_COUNT && values.every((value, index) => isScopeArgument(value, SCOPE_ARG_KINDS[index]));
|
|
193
|
+
/**
|
|
194
|
+
* Reads what the issue challenge binds out of the circuit's argument list
|
|
195
|
+
* as it reaches an authoriser: the grant id and the digest of the scope,
|
|
196
|
+
* derived here from the plaintext arguments and the salt so the signer
|
|
197
|
+
* binds the scope it was shown and nothing else.
|
|
198
|
+
*
|
|
199
|
+
* @throws an Error when the arguments are not a grant id, sixteen scope
|
|
200
|
+
* arguments and a scope salt.
|
|
201
|
+
*/
|
|
202
|
+
const issueGrantBinding = (args) => {
|
|
203
|
+
const [grantId, ...rest] = args;
|
|
204
|
+
const scopeSalt = rest.at(-1);
|
|
205
|
+
const scope = rest.slice(0, -1);
|
|
206
|
+
if (!(grantId instanceof Uint8Array) || !(scopeSalt instanceof Uint8Array) || !isScopeArgs(scope)) throw new Error(`Circuit ${require_grant_circuits.ISSUE_GRANT_CIRCUIT} expects a grant id, ${SCOPE_ARG_COUNT} scope arguments and a scope salt`);
|
|
207
|
+
return {
|
|
208
|
+
grantId,
|
|
209
|
+
scopeDigest: scopeDigest(scopeSalt, scope)
|
|
210
|
+
};
|
|
211
|
+
};
|
|
212
|
+
//#endregion
|
|
213
|
+
Object.defineProperty(exports, "K256_GRANT_ENVELOPE", {
|
|
214
|
+
enumerable: true,
|
|
215
|
+
get: function() {
|
|
216
|
+
return K256_GRANT_ENVELOPE;
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
Object.defineProperty(exports, "deriveGrantId", {
|
|
220
|
+
enumerable: true,
|
|
221
|
+
get: function() {
|
|
222
|
+
return deriveGrantId;
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
Object.defineProperty(exports, "grantObjectCommit", {
|
|
226
|
+
enumerable: true,
|
|
227
|
+
get: function() {
|
|
228
|
+
return grantObjectCommit;
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
Object.defineProperty(exports, "issueGrantBinding", {
|
|
232
|
+
enumerable: true,
|
|
233
|
+
get: function() {
|
|
234
|
+
return issueGrantBinding;
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
Object.defineProperty(exports, "originHash", {
|
|
238
|
+
enumerable: true,
|
|
239
|
+
get: function() {
|
|
240
|
+
return originHash;
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
Object.defineProperty(exports, "prepareIssueGrant", {
|
|
244
|
+
enumerable: true,
|
|
245
|
+
get: function() {
|
|
246
|
+
return prepareIssueGrant;
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
Object.defineProperty(exports, "prepareRevokeAllGrants", {
|
|
250
|
+
enumerable: true,
|
|
251
|
+
get: function() {
|
|
252
|
+
return prepareRevokeAllGrants;
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
Object.defineProperty(exports, "prepareRevokeGrant", {
|
|
256
|
+
enumerable: true,
|
|
257
|
+
get: function() {
|
|
258
|
+
return prepareRevokeGrant;
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
Object.defineProperty(exports, "scopeArgs", {
|
|
262
|
+
enumerable: true,
|
|
263
|
+
get: function() {
|
|
264
|
+
return scopeArgs;
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
Object.defineProperty(exports, "scopeDigest", {
|
|
268
|
+
enumerable: true,
|
|
269
|
+
get: function() {
|
|
270
|
+
return scopeDigest;
|
|
271
|
+
}
|
|
272
|
+
});
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { n as HexBytes, t as ByteArray } from "./bytes.vo-BB7_4JK6.js";
|
|
2
|
+
import { C as GrantScopeInvalidError, g as GrantLimitReachedError } from "./errors-DSq5wUwt.js";
|
|
3
|
+
import { G as GrantScopeSalt, K as GrantId, W as GrantSlot, a as zero32, i as granteePoint, n as assertIssueRules, r as circuitScope } from "./grant-rules-By07_eDi.js";
|
|
4
|
+
import { i as REVOKE_GRANT_CIRCUIT, n as ISSUE_GRANT_CIRCUIT, r as REVOKE_ALL_GRANTS_CIRCUIT } from "./grant-circuits-Jxb5y1HW.js";
|
|
5
|
+
import { a as pureCircuits } from "./acc-module-Cmj8EsIb.js";
|
|
6
|
+
//#region ../../packages/module/passport-account/src/acc/grants.ts
|
|
7
|
+
/** Domain tag of the origin hash; it fills its 32-byte pad exactly. */
|
|
8
|
+
const GRANT_ORIGIN_TAG = "midnight:account:grant:origin:v1";
|
|
9
|
+
const ORIGIN_TAG_LENGTH = 32;
|
|
10
|
+
const SCOPE_SALT_LENGTH = 32;
|
|
11
|
+
const GRANT_SLOT_COUNT = 256;
|
|
12
|
+
const SCOPE_ARG_COUNT = 16;
|
|
13
|
+
/**
|
|
14
|
+
* The signature envelope a secp256k1 grant is bound to: plain ECDSA over
|
|
15
|
+
* the SHA-256 digest of the challenge, the only envelope the contract
|
|
16
|
+
* admits for a spend grant.
|
|
17
|
+
*/
|
|
18
|
+
const K256_GRANT_ENVELOPE = 0n;
|
|
19
|
+
/** Lays the scope out in the circuit's declaration order. */
|
|
20
|
+
const scopeArgs = (scope) => [
|
|
21
|
+
scope.opWithdrawUnshielded,
|
|
22
|
+
scope.opWithdrawShielded,
|
|
23
|
+
scope.opWithdrawShieldedToContract,
|
|
24
|
+
scope.read,
|
|
25
|
+
scope.color,
|
|
26
|
+
scope.recipientKind,
|
|
27
|
+
scope.recipient,
|
|
28
|
+
scope.maxCoinValue,
|
|
29
|
+
scope.perCallCap,
|
|
30
|
+
scope.cap,
|
|
31
|
+
scope.expiresAt,
|
|
32
|
+
scope.rpIdHash,
|
|
33
|
+
scope.readPkHash,
|
|
34
|
+
scope.windowLen,
|
|
35
|
+
scope.windowCap,
|
|
36
|
+
{
|
|
37
|
+
is_some: scope.caller !== void 0,
|
|
38
|
+
value: { bytes: scope.caller ?? zero32() }
|
|
39
|
+
}
|
|
40
|
+
];
|
|
41
|
+
/**
|
|
42
|
+
* The salted digest of the plaintext scope, the single element through
|
|
43
|
+
* which the issue challenge binds the whole scope, produced by the
|
|
44
|
+
* contract's own pure circuit.
|
|
45
|
+
*/
|
|
46
|
+
const scopeDigest = (scopeSalt, args) => pureCircuits.derive_grant_scope_digest(scopeSalt, ...args);
|
|
47
|
+
/**
|
|
48
|
+
* The commitment the contract stores for a grant's object: the colour,
|
|
49
|
+
* recipient kind and value, and coin bound of its circuit scope, hidden
|
|
50
|
+
* under the scope salt, as lowercase hex, produced by the contract's own
|
|
51
|
+
* pure circuit.
|
|
52
|
+
*/
|
|
53
|
+
const grantObjectCommit = (scopeSalt, scope) => HexBytes.fromByteArray(pureCircuits.derive_grant_object_commit(scopeSalt, scope.color, scope.recipientKind, scope.recipient, scope.maxCoinValue));
|
|
54
|
+
/**
|
|
55
|
+
* The origin hash that enters a grant id: SHA-256 of the origin tag padded
|
|
56
|
+
* to 32 bytes followed by the raw UTF-8 bytes of the client id. Computed
|
|
57
|
+
* off chain only, so no circuit exports it. For this module the client id
|
|
58
|
+
* is the relying party id of the consumer issuing the grant.
|
|
59
|
+
*/
|
|
60
|
+
const originHash = async (clientId) => {
|
|
61
|
+
const encoder = new TextEncoder();
|
|
62
|
+
const tag = new Uint8Array(ORIGIN_TAG_LENGTH);
|
|
63
|
+
tag.set(encoder.encode(GRANT_ORIGIN_TAG));
|
|
64
|
+
const client = encoder.encode(clientId);
|
|
65
|
+
const preimage = new Uint8Array(tag.length + client.length);
|
|
66
|
+
preimage.set(tag);
|
|
67
|
+
preimage.set(client, tag.length);
|
|
68
|
+
return new Uint8Array(await crypto.subtle.digest("SHA-256", preimage));
|
|
69
|
+
};
|
|
70
|
+
/** A grant id from the bytes a derivation circuit returns. */
|
|
71
|
+
const grantIdOf = (id) => GrantId(HexBytes.fromByteArray(id));
|
|
72
|
+
/**
|
|
73
|
+
* The identity of a grant: the contract's own commitment to the account,
|
|
74
|
+
* the grantee key, the origin hash and the slot, which keys the record in
|
|
75
|
+
* the grants map. Each grantee scheme has its own derivation, and a
|
|
76
|
+
* secp256k1 grant also binds its signature envelope, so the same key
|
|
77
|
+
* bytes never name the same grant under two schemes or two envelopes.
|
|
78
|
+
*/
|
|
79
|
+
const deriveGrantId = ({ contractAddress, granteePublicKey, originHash: origin, slot }) => {
|
|
80
|
+
const self = { bytes: contractAddress };
|
|
81
|
+
switch (granteePublicKey.scheme) {
|
|
82
|
+
case "jubjub-schnorr": return grantIdOf(pureCircuits.derive_grant_id_with_jubjub(self, granteePublicKey.point, origin, BigInt(slot)));
|
|
83
|
+
case "secp256k1-ecdsa": return grantIdOf(pureCircuits.derive_grant_id_with_k256(self, granteePublicKey.point, K256_GRANT_ENVELOPE, origin, BigInt(slot)));
|
|
84
|
+
default: {
|
|
85
|
+
const unhandled = granteePublicKey;
|
|
86
|
+
throw new GrantScopeInvalidError(`unsupported grantee scheme "${String(unhandled.scheme)}"`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* The first slot under which this grantee and origin have no active grant,
|
|
92
|
+
* with the id derived for it. The contract stores neither grantee nor
|
|
93
|
+
* slot, so the slot is found by deriving the id of each candidate and
|
|
94
|
+
* checking it against the roster. A revoked grant leaves a tombstone the
|
|
95
|
+
* contract lets a new grant overwrite, so its slot counts as free.
|
|
96
|
+
*
|
|
97
|
+
* @throws {@link GrantLimitReachedError} when every slot is taken.
|
|
98
|
+
*/
|
|
99
|
+
const findFreeSlot = ({ contractAddress, grantee, originHash: origin, roster }) => {
|
|
100
|
+
const taken = new Set(roster.filter((record) => record.active).map((record) => record.id));
|
|
101
|
+
const granteePublicKey = granteePoint(grantee);
|
|
102
|
+
for (let candidate = 0; candidate < GRANT_SLOT_COUNT; candidate++) {
|
|
103
|
+
const slot = GrantSlot(candidate);
|
|
104
|
+
const grantId = deriveGrantId({
|
|
105
|
+
contractAddress,
|
|
106
|
+
granteePublicKey,
|
|
107
|
+
originHash: origin,
|
|
108
|
+
slot
|
|
109
|
+
});
|
|
110
|
+
if (!taken.has(grantId)) return {
|
|
111
|
+
slot,
|
|
112
|
+
grantId
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
throw new GrantLimitReachedError("Every grant slot of this grantee under this origin is taken.");
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Prepares `issue_grant_with_jubjub`: encodes and checks the scope,
|
|
119
|
+
* allocates the grantee's slot, derives the grant id and draws the scope
|
|
120
|
+
* salt. The call's arguments are the grant id, the scope in declaration
|
|
121
|
+
* order and the salt; the authoriser derives the scope digest it signs
|
|
122
|
+
* from those same arguments, and the preparation carries that digest for
|
|
123
|
+
* an authoriser that presents it ahead of the ceremony.
|
|
124
|
+
*
|
|
125
|
+
* @throws {@link GrantScopeInvalidError} when the scope is malformed or
|
|
126
|
+
* breaks an issue rule.
|
|
127
|
+
* @throws {@link GrantLimitReachedError} when the grantee has no free slot.
|
|
128
|
+
*/
|
|
129
|
+
const prepareIssueGrant = ({ contractAddress, scope, originHash: origin, roster, randomBytes = (length) => crypto.getRandomValues(new Uint8Array(length)) }) => {
|
|
130
|
+
const encoded = circuitScope(scope);
|
|
131
|
+
assertIssueRules(encoded);
|
|
132
|
+
const { slot, grantId } = findFreeSlot({
|
|
133
|
+
contractAddress,
|
|
134
|
+
grantee: scope.grantee,
|
|
135
|
+
originHash: origin,
|
|
136
|
+
roster
|
|
137
|
+
});
|
|
138
|
+
const salt = randomBytes(SCOPE_SALT_LENGTH);
|
|
139
|
+
const args = scopeArgs(encoded);
|
|
140
|
+
return {
|
|
141
|
+
grantId,
|
|
142
|
+
slot,
|
|
143
|
+
scopeSalt: GrantScopeSalt(HexBytes.fromByteArray(salt)),
|
|
144
|
+
scopeDigest: HexBytes.fromByteArray(scopeDigest(salt, args)),
|
|
145
|
+
call: {
|
|
146
|
+
circuit: ISSUE_GRANT_CIRCUIT,
|
|
147
|
+
args: [
|
|
148
|
+
ByteArray.fromHex(HexBytes(grantId)),
|
|
149
|
+
...args,
|
|
150
|
+
salt
|
|
151
|
+
]
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
/** Prepares `revoke_grant_with_jubjub` over one grant id. */
|
|
156
|
+
const prepareRevokeGrant = (grantId) => ({
|
|
157
|
+
circuit: REVOKE_GRANT_CIRCUIT,
|
|
158
|
+
args: [ByteArray.fromHex(HexBytes(grantId))]
|
|
159
|
+
});
|
|
160
|
+
/** Prepares `revoke_all_grants_with_jubjub`, which takes no argument. */
|
|
161
|
+
const prepareRevokeAllGrants = () => ({
|
|
162
|
+
circuit: REVOKE_ALL_GRANTS_CIRCUIT,
|
|
163
|
+
args: []
|
|
164
|
+
});
|
|
165
|
+
const SCOPE_ARG_KINDS = [
|
|
166
|
+
"boolean",
|
|
167
|
+
"boolean",
|
|
168
|
+
"boolean",
|
|
169
|
+
"boolean",
|
|
170
|
+
"bytes",
|
|
171
|
+
"bigint",
|
|
172
|
+
"bytes",
|
|
173
|
+
"bigint",
|
|
174
|
+
"bigint",
|
|
175
|
+
"bigint",
|
|
176
|
+
"bigint",
|
|
177
|
+
"bytes",
|
|
178
|
+
"bytes",
|
|
179
|
+
"bigint",
|
|
180
|
+
"bigint",
|
|
181
|
+
"caller"
|
|
182
|
+
];
|
|
183
|
+
const isCaller = (value) => typeof value === "object" && value !== null && typeof value.is_some === "boolean" && value.value?.bytes instanceof Uint8Array;
|
|
184
|
+
const isScopeArgument = (value, kind) => {
|
|
185
|
+
switch (kind) {
|
|
186
|
+
case "boolean": return typeof value === "boolean";
|
|
187
|
+
case "bigint": return typeof value === "bigint";
|
|
188
|
+
case "bytes": return value instanceof Uint8Array;
|
|
189
|
+
case "caller": return isCaller(value);
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
const isScopeArgs = (values) => values.length === SCOPE_ARG_COUNT && values.every((value, index) => isScopeArgument(value, SCOPE_ARG_KINDS[index]));
|
|
193
|
+
/**
|
|
194
|
+
* Reads what the issue challenge binds out of the circuit's argument list
|
|
195
|
+
* as it reaches an authoriser: the grant id and the digest of the scope,
|
|
196
|
+
* derived here from the plaintext arguments and the salt so the signer
|
|
197
|
+
* binds the scope it was shown and nothing else.
|
|
198
|
+
*
|
|
199
|
+
* @throws an Error when the arguments are not a grant id, sixteen scope
|
|
200
|
+
* arguments and a scope salt.
|
|
201
|
+
*/
|
|
202
|
+
const issueGrantBinding = (args) => {
|
|
203
|
+
const [grantId, ...rest] = args;
|
|
204
|
+
const scopeSalt = rest.at(-1);
|
|
205
|
+
const scope = rest.slice(0, -1);
|
|
206
|
+
if (!(grantId instanceof Uint8Array) || !(scopeSalt instanceof Uint8Array) || !isScopeArgs(scope)) throw new Error(`Circuit ${ISSUE_GRANT_CIRCUIT} expects a grant id, ${SCOPE_ARG_COUNT} scope arguments and a scope salt`);
|
|
207
|
+
return {
|
|
208
|
+
grantId,
|
|
209
|
+
scopeDigest: scopeDigest(scopeSalt, scope)
|
|
210
|
+
};
|
|
211
|
+
};
|
|
212
|
+
//#endregion
|
|
213
|
+
export { originHash as a, prepareRevokeGrant as c, issueGrantBinding as i, scopeArgs as l, deriveGrantId as n, prepareIssueGrant as o, grantObjectCommit as r, prepareRevokeAllGrants as s, K256_GRANT_ENVELOPE as t, scopeDigest as u };
|
|
@@ -1,38 +1,8 @@
|
|
|
1
1
|
const require_rolldown_runtime = require("./rolldown-runtime-Br2OG8yv.cjs");
|
|
2
|
-
const require_util = require("./util-
|
|
3
|
-
const
|
|
4
|
-
const require_activity_type_stable = require("./activity-type.stable-BJEfeLxL.cjs");
|
|
5
|
-
let rxjs = require("rxjs");
|
|
2
|
+
const require_util = require("./util-Bu4W5lF4.cjs");
|
|
3
|
+
const require_activity_type = require("./activity-type-Ch6ljxBy.cjs");
|
|
6
4
|
let lodash_groupBy = require("lodash/groupBy.js");
|
|
7
5
|
lodash_groupBy = require_rolldown_runtime.__toESM(lodash_groupBy);
|
|
8
|
-
//#region ../../packages/contract/failures/src/utils/auto-dismiss-failure-on-success.ts
|
|
9
|
-
/**
|
|
10
|
-
* RxJS operator that auto-dismisses a failure when an operation succeeds.
|
|
11
|
-
*
|
|
12
|
-
* This operator:
|
|
13
|
-
* 1. Takes a failureId observable
|
|
14
|
-
* 2. Checks if the failure exists in the store
|
|
15
|
-
* 3. Only emits dismissFailure action if the failure actually exists
|
|
16
|
-
*
|
|
17
|
-
* This prevents unnecessary action dispatches when a failure has already been dismissed.
|
|
18
|
-
*
|
|
19
|
-
* @param selectFailureById$ - Observable of the selector function to check failure existence
|
|
20
|
-
* @returns RxJS operator that emits dismissFailure actions only when failures exist
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* // In a side effect:
|
|
25
|
-
* return operation$.pipe(
|
|
26
|
-
* // ... operation logic ...
|
|
27
|
-
* map(() => CardanoSyncFailureId('account-123')),
|
|
28
|
-
* autoDismissFailureOnSuccess(selectFailureById$),
|
|
29
|
-
* );
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
const autoDismissFailureOnSuccess = (selectFailureById$) => (source) => source.pipe((0, rxjs.withLatestFrom)(selectFailureById$), (0, rxjs.filter)(([failureId, selectFailureById]) => {
|
|
33
|
-
return selectFailureById(failureId) !== void 0;
|
|
34
|
-
}), (0, rxjs.map)(([failureId]) => require_slice.failuresActions.failures.dismissFailure(failureId)));
|
|
35
|
-
//#endregion
|
|
36
6
|
//#region ../../packages/contract/cardano-context/src/value-objects/utxo-cache-key.vo.ts
|
|
37
7
|
const compareRewardAccounts = (a, b) => a < b ? -1 : a > b ? 1 : 0;
|
|
38
8
|
const UtxoCacheKey = (params) => `${params.topOnChainActivityId}:${[...params.stakeKeys].sort(compareRewardAccounts).join(",")}:n${params.accountAddressCount}`;
|
|
@@ -79,7 +49,7 @@ UtxoCacheKey.topOnChainActivityId = (key) => key?.split(":")[0];
|
|
|
79
49
|
* for consumers that need to refresh on reward arrival (e.g. `rewardsSum`).
|
|
80
50
|
*/
|
|
81
51
|
const getTopOnChainActivity = (activitiesByAccount, accountId, includeRewardActivities = false) => {
|
|
82
|
-
const top = activitiesByAccount[accountId]?.find((activity) => activity.type !==
|
|
52
|
+
const top = activitiesByAccount[accountId]?.find((activity) => activity.type !== require_activity_type.ActivityType.Pending && (includeRewardActivities || activity.type !== require_activity_type.ActivityType.Rewards));
|
|
83
53
|
if (!top) return void 0;
|
|
84
54
|
const cardano = top.blockchainSpecific?.Cardano;
|
|
85
55
|
return {
|
|
@@ -133,12 +103,6 @@ Object.defineProperty(exports, "UtxoCacheKey", {
|
|
|
133
103
|
return UtxoCacheKey;
|
|
134
104
|
}
|
|
135
105
|
});
|
|
136
|
-
Object.defineProperty(exports, "autoDismissFailureOnSuccess", {
|
|
137
|
-
enumerable: true,
|
|
138
|
-
get: function() {
|
|
139
|
-
return autoDismissFailureOnSuccess;
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
106
|
Object.defineProperty(exports, "filterCardanoAddressesForNetwork", {
|
|
143
107
|
enumerable: true,
|
|
144
108
|
get: function() {
|
|
@@ -1,36 +1,6 @@
|
|
|
1
|
-
import { s as isCardanoAddressOfSupportedNetwork } from "./util-
|
|
2
|
-
import { t as
|
|
3
|
-
import
|
|
4
|
-
import { filter, map, withLatestFrom } from "rxjs";
|
|
5
|
-
import groupBy$1 from "lodash/groupBy.js";
|
|
6
|
-
//#region ../../packages/contract/failures/src/utils/auto-dismiss-failure-on-success.ts
|
|
7
|
-
/**
|
|
8
|
-
* RxJS operator that auto-dismisses a failure when an operation succeeds.
|
|
9
|
-
*
|
|
10
|
-
* This operator:
|
|
11
|
-
* 1. Takes a failureId observable
|
|
12
|
-
* 2. Checks if the failure exists in the store
|
|
13
|
-
* 3. Only emits dismissFailure action if the failure actually exists
|
|
14
|
-
*
|
|
15
|
-
* This prevents unnecessary action dispatches when a failure has already been dismissed.
|
|
16
|
-
*
|
|
17
|
-
* @param selectFailureById$ - Observable of the selector function to check failure existence
|
|
18
|
-
* @returns RxJS operator that emits dismissFailure actions only when failures exist
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```typescript
|
|
22
|
-
* // In a side effect:
|
|
23
|
-
* return operation$.pipe(
|
|
24
|
-
* // ... operation logic ...
|
|
25
|
-
* map(() => CardanoSyncFailureId('account-123')),
|
|
26
|
-
* autoDismissFailureOnSuccess(selectFailureById$),
|
|
27
|
-
* );
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
const autoDismissFailureOnSuccess = (selectFailureById$) => (source) => source.pipe(withLatestFrom(selectFailureById$), filter(([failureId, selectFailureById]) => {
|
|
31
|
-
return selectFailureById(failureId) !== void 0;
|
|
32
|
-
}), map(([failureId]) => failuresActions.failures.dismissFailure(failureId)));
|
|
33
|
-
//#endregion
|
|
1
|
+
import { s as isCardanoAddressOfSupportedNetwork } from "./util-Cp5cZkfK.js";
|
|
2
|
+
import { t as ActivityType } from "./activity-type-GsJGWs-3.js";
|
|
3
|
+
import groupBy from "lodash/groupBy.js";
|
|
34
4
|
//#region ../../packages/contract/cardano-context/src/value-objects/utxo-cache-key.vo.ts
|
|
35
5
|
const compareRewardAccounts = (a, b) => a < b ? -1 : a > b ? 1 : 0;
|
|
36
6
|
const UtxoCacheKey = (params) => `${params.topOnChainActivityId}:${[...params.stakeKeys].sort(compareRewardAccounts).join(",")}:n${params.accountAddressCount}`;
|
|
@@ -122,7 +92,7 @@ const getAccountAddresses = (addresses, accountId, chainId) => filterCardanoAddr
|
|
|
122
92
|
* associated with those accounts.
|
|
123
93
|
*/
|
|
124
94
|
const groupCardanoAddressesByAccount = (addresses, chainId) => {
|
|
125
|
-
return groupBy
|
|
95
|
+
return groupBy(filterCardanoAddressesForNetwork(addresses, chainId), (addr) => addr.accountId);
|
|
126
96
|
};
|
|
127
97
|
//#endregion
|
|
128
|
-
export { UtxoCacheKey as a, getTopOnChainActivity as i, getAccountAddresses as n,
|
|
98
|
+
export { UtxoCacheKey as a, getTopOnChainActivity as i, getAccountAddresses as n, groupCardanoAddressesByAccount as r, filterCardanoAddressesForNetwork as t };
|