@laceio/sdk 0.1.0 → 0.1.1-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Ed25519PublicKey-lvu1s54U.cjs → Address-AMKTo-dA.cjs} +17150 -61
- package/dist/{Ed25519PublicKey-CjnuAYRR.js → Address-_c_-9hLC.js} +16955 -264
- package/dist/{Bip32Account-r3KAhCgU.js → Bip32Account-CaW1zC9Y.js} +4 -5
- package/dist/{Bip32Account-Cz3h0ZUa.cjs → Bip32Account-DOaGmKpv.cjs} +4 -5
- package/dist/Cardano-B-gyqBBD.js +311 -0
- package/dist/Cardano-BQ_af0Y3.cjs +322 -0
- package/dist/Ed25519PublicKey-B3QcR0J2.cjs +88 -0
- package/dist/Ed25519PublicKey-DIE19xHg.js +83 -0
- package/dist/InMemoryKeyAgent-Bc_xZY-v.cjs +652 -0
- package/dist/InMemoryKeyAgent-D8T3vtXy.js +631 -0
- package/dist/{PaymentAddress-DhbtuYb7.cjs → PaymentAddress-B4n1KZMx.cjs} +1 -2
- package/dist/{PaymentAddress-xSmGUQ-8.js → PaymentAddress-Cml3EA1n.js} +1 -2
- package/dist/Percent-Cfuw5YyL.cjs +11 -0
- package/dist/Percent-DpvyJ_93.js +5 -0
- package/dist/SodiumBip32Ed25519-BaD-kjyx.cjs +380 -0
- package/dist/SodiumBip32Ed25519-DCikAMsl.js +363 -0
- package/dist/{TransactionBuilder-CeJTNzm-.cjs → TransactionBuilder-BakTJvsJ.cjs} +59 -89
- package/dist/{TransactionBuilder-DGNDM4kt.js → TransactionBuilder-D2ErwVWv.js} +5 -71
- package/dist/_md-6zV2Cme0.cjs +684 -0
- package/dist/_md-gbUqlhqd.js +399 -0
- package/dist/_web-crypto-random-bytes-BvzwTYPG.js +197 -0
- package/dist/acc-module-NL_8mEHH.cjs +27654 -0
- package/dist/acc-module-ur8CkBd1.js +27624 -0
- package/dist/account-call-B7cF8ly4.cjs +293 -0
- package/dist/account-call-BF4rBcNw.js +3 -0
- package/dist/account-call-CoCq3V55.js +252 -0
- package/dist/account-call-DFcD257E.cjs +4 -0
- package/dist/account-guards-BeKbV9D1.cjs +41 -0
- package/dist/account-guards-qnFXuXSE.js +36 -0
- package/dist/{activity-type.stable-ClO9j_PH.cjs → activity-type-BPXxdHBP.cjs} +2 -1
- package/dist/{activity-type.stable-Ml0SOYv9.js → activity-type-C1geyPsH.js} +2 -1
- package/dist/address-OxwXIwbF.js +15502 -0
- package/dist/address-book-address-validator-BqYM0Uyp.cjs +41 -0
- package/dist/{address-book-address-validator-BhqRfmlL.cjs → address-book-address-validator-CGIcqn5W.cjs} +5 -4
- package/dist/{address-book-address-validator-VqIOB8PY.js → address-book-address-validator-FkkYim3z.js} +6 -4
- package/dist/address-book-address-validator-RSx2Jozy.js +39 -0
- package/dist/address-lECYBd9-.cjs +13043 -0
- package/dist/{apply-vkey-witnesses-Ctzk7eye.cjs → apply-vkey-witnesses-1jyczTkw.cjs} +1 -1
- package/dist/{apply-vkey-witnesses-Dfo7XfhL.js → apply-vkey-witnesses-Byb40-yJ.js} +1 -1
- package/dist/artefact-loader-Cqc9eSkL.cjs +182 -0
- package/dist/artefact-loader-D0T2f6F7.js +159 -0
- package/dist/auto-dismiss-failure-on-success-BWJceNXd.cjs +37 -0
- package/dist/auto-dismiss-failure-on-success-Bpod-v4r.js +31 -0
- package/dist/bip32-EPpcFrpH.cjs +3851 -0
- package/dist/{bip32ed25519-D2In8WzR.cjs → bip32ed25519-CRiG-Kjg.cjs} +5 -4
- package/dist/{bip32ed25519-qsLH_eWO.js → bip32ed25519-E-fCUZNv.js} +6 -4
- package/dist/bip39-DZomfqeY.js +9 -0
- package/dist/bip39-MAck9iod.cjs +26 -0
- package/dist/bitcoin-data-provider-D0OT_Uiu.cjs +26 -0
- package/dist/bitcoin-data-provider-LN_8oamW.js +21 -0
- package/dist/bitcoin.cjs +48 -0
- package/dist/bitcoin.d.ts +29805 -1
- package/dist/bitcoin.js +22 -0
- package/dist/{blake2b-BGHUWMsV.js → blake2b-BL-eR5G2.js} +6 -4
- package/dist/{blake2b-DspUqw68.cjs → blake2b-Iy324FwH.cjs} +5 -4
- package/dist/{blockfrost-tx-submit-provider-BUEOmdvc.js → blockfrost-tx-submit-provider-BHDLgOIE.js} +9 -162
- package/dist/{blockfrost-tx-submit-provider-B5dWbdrZ.cjs → blockfrost-tx-submit-provider-BxC19smv.cjs} +7 -171
- package/dist/{blockingWithLatestFrom-BhaE7pnA.js → blockingWithLatestFrom-FUfZFEUG.js} +1 -1
- package/dist/{blockingWithLatestFrom-DkuT3G2a.cjs → blockingWithLatestFrom-bmCPgA3c.cjs} +1 -1
- package/dist/bn-BFq5a4dk.cjs +2553 -0
- package/dist/{SodiumBip32Ed25519-BEfo1Q9m.js → browser-D5jRKv_L.js} +4 -401
- package/dist/bytes.vo-CziaOsba.js +24 -0
- package/dist/bytes.vo-hecRu3YZ.cjs +35 -0
- package/dist/{cardano-network-id-to-network-type-PXvn1ycQ.cjs → cardano-network-id-to-network-type-BwG_d6QP.cjs} +1 -1
- package/dist/{cardano-network-id-to-network-type-DHgKhDAK.js → cardano-network-id-to-network-type-CYJheetp.js} +1 -1
- package/dist/{cardano-network-id.vo-CbNNKd-k.cjs → cardano-network-id.vo-C5VuBXT3.cjs} +2 -2
- package/dist/{cardano-network-id.vo-CTYe-Oix.js → cardano-network-id.vo-CeLJqmb_.js} +2 -2
- package/dist/{cardano-tx-id.vo-BMwemq5x.js → cardano-tx-id.vo-DJ70NC0-.js} +1 -1
- package/dist/{cardano-tx-id.vo-NY-gCOWJ.cjs → cardano-tx-id.vo-lnyO9XaW.cjs} +1 -1
- package/dist/cardano.cjs +31 -24
- package/dist/cardano.d.ts +27602 -8121
- package/dist/cardano.js +21 -13
- package/dist/client-Bw2foG5E.cjs +808 -0
- package/dist/const-BB3MccLt.js +153 -0
- package/dist/{const-BErUlcZw.cjs → const-BWBAzOmN.cjs} +1 -1
- package/dist/const-CSWmOyzn.cjs +42 -0
- package/dist/{const-Dy8Ctnpd.cjs → const-D3mCkwrM.cjs} +5 -5
- package/dist/const-DW7z3R5k.js +13 -0
- package/dist/{const-DeUA7zYl.js → const-DbuUHSzR.js} +5 -5
- package/dist/const-DgBzKfz6.cjs +31995 -0
- package/dist/{const-DVW6DGkZ.js → const-xGSNCtwQ.js} +1 -1
- package/dist/contract-BsIGhsYa.js +171 -0
- package/dist/contract-DD6CGnpB.cjs +189 -0
- package/dist/create-add-accounts-2mQA0ST2.js +102 -0
- package/dist/create-add-accounts-B6mR2NMn.cjs +114 -0
- package/dist/{delegation-tx-builder-CF0VunDW.cjs → delegation-tx-builder-Cp30jtj9.cjs} +9 -8
- package/dist/{delegation-tx-builder-C8LQxU2R.js → delegation-tx-builder-DUMikSTg.js} +9 -7
- package/dist/{deregistration-tx-builder-DcUXA3Ls.cjs → deregistration-tx-builder-B-ZeY-dR.cjs} +10 -9
- package/dist/{deregistration-tx-builder-BOBPP8m_.js → deregistration-tx-builder-CRLrK99U.js} +10 -8
- package/dist/device-commitment-hex.vo-BIUYUNz1.cjs +31 -0
- package/dist/device-commitment-hex.vo-D9FsYLn7.js +26 -0
- package/dist/device-key-BToCoS4D.js +2394 -0
- package/dist/device-key-D6euvxFi.cjs +2489 -0
- package/dist/device-readers-BHJeNR8I.js +3 -0
- package/dist/device-readers-Dw7uTNM5.cjs +167 -0
- package/dist/device-readers-b4g2j3QL.js +144 -0
- package/dist/device-readers-cxcJcWq5.cjs +7 -0
- package/dist/dist-B00GN41m.js +141 -0
- package/dist/dist-BA1xnF9O.cjs +4413 -0
- package/dist/dist-BmHOXLe8.cjs +3814 -0
- package/dist/dist-Br0OVXKt.cjs +535 -0
- package/dist/dist-C1JK9C1I.cjs +3452 -0
- package/dist/dist-DKEViNEI.cjs +1306 -0
- package/dist/dist-Dwqx184a.cjs +43175 -0
- package/dist/dist-MJof_Ky1.cjs +145 -0
- package/dist/dist-p84sVVJ9.cjs +1394 -0
- package/dist/{earn-rewards-tx-builder-BRlTueHS.js → earn-rewards-tx-builder-8G_rouIk.js} +9 -7
- package/dist/{earn-rewards-tx-builder-RgO0QUY8.cjs → earn-rewards-tx-builder-cOUNV58E.cjs} +9 -8
- package/dist/enc-key-circuits-0Dud78IB.js +13 -0
- package/dist/enc-key-circuits-yjPHbuo_.cjs +24 -0
- package/dist/english-BZ_ebp2-.cjs +2057 -0
- package/dist/envelopes-B3QCzo5p.js +2658 -0
- package/dist/envelopes-BdE1xlgz.cjs +2777 -0
- package/dist/errors-BA3b8aVu.cjs +584 -0
- package/dist/errors-pkQdxW-7.js +392 -0
- package/dist/experimental.cjs +6820 -0
- package/dist/experimental.d.ts +63552 -0
- package/dist/experimental.js +6670 -0
- package/dist/fees-6C2uEWFK.js +653 -0
- package/dist/fees-DtC71fOx.cjs +820 -0
- package/dist/gated-call-BrPjKolT.js +3 -0
- package/dist/gated-call-CcsuW9L5.js +691 -0
- package/dist/gated-call-DdDrxEq5.cjs +732 -0
- package/dist/gated-call-Dk7PazhG.cjs +4 -0
- package/dist/grant-rules-B7eDuD5G.cjs +5468 -0
- package/dist/grant-rules-qLrKUIR3.js +5217 -0
- package/dist/grant-status-CDmZpx32.js +296 -0
- package/dist/grant-status-CQtwjLsA.cjs +337 -0
- package/dist/grants-Bnb-3Hkv.cjs +16 -0
- package/dist/grants-CIb6nOV7.cjs +273 -0
- package/dist/grants-CYY0AquW.js +202 -0
- package/dist/grants-DOsFSotP.js +4 -0
- package/dist/{group-cardano-addresses-by-account-C-1GHUu8.cjs → group-cardano-addresses-by-account-BGOtPV-Y.cjs} +4 -40
- package/dist/{group-cardano-addresses-by-account-p4dXmCoj.js → group-cardano-addresses-by-account-TqvESg9x.js} +6 -37
- package/dist/{guarded-transaction-signer-DZSGHp1K.js → guarded-transaction-signer-BbVDE9Nn.js} +12 -18
- package/dist/{guarded-transaction-signer-BLSezbfV.cjs → guarded-transaction-signer-DTLjAkif.cjs} +26 -26
- package/dist/hex-BVtOKJki.cjs +263 -0
- package/dist/hex-CGYJPK_Z.js +192 -0
- package/dist/http-client-B7_kBTYn.js +155 -0
- package/dist/http-client-DYQ_7Rdf.cjs +167 -0
- package/dist/identity-DxPhxkZs.js +239 -0
- package/dist/identity-y41Yle03.cjs +274 -0
- package/dist/in-memory-wallet-integration-5BKiAvPT.js +20861 -0
- package/dist/{in-memory-wallet-integration-CUTa68ET.js → in-memory-wallet-integration-BCOqDgbt.js} +10 -107
- package/dist/in-memory-wallet-integration-Bi8I9Dso.js +128 -0
- package/dist/in-memory-wallet-integration-Bsl2ONua.cjs +239 -0
- package/dist/in-memory-wallet-integration-DZ0CAyvY.cjs +20865 -0
- package/dist/{in-memory-wallet-integration-Dw_S7amX.cjs → in-memory-wallet-integration-DsFm8gLk.cjs} +21 -112
- package/dist/{in-memory-wallet-integration-Z4Bp_DTv.cjs → in-memory-wallet-integration-aW_SF-go.cjs} +8 -5
- package/dist/{in-memory-wallet-integration-B6cbAlvD.js → in-memory-wallet-integration-mIEc8EfR.js} +9 -5
- package/dist/index.cjs +95 -58
- package/dist/index.d.ts +45152 -13448
- package/dist/index.js +55 -28
- package/dist/{init-CVi8J0zk.cjs → init-5SfWgCYD.cjs} +3 -3
- package/dist/{init-Ci7aqWCf2.cjs → init-8NVWbo302.cjs} +2 -2
- package/dist/init-B-C7n6u6.js +5 -0
- package/dist/{init-BFMWRf-L.js → init-B-ppfGO-.js} +1 -1
- package/dist/{init-IiR093Jw.cjs → init-B2OUhY5T.cjs} +2 -2
- package/dist/{init-DXnus199.cjs → init-B6Eg_o6G.cjs} +5 -5
- package/dist/{init-4hDl5bpr.js → init-BAWMHL1k.js} +2 -2
- package/dist/init-BC2CZZOu2.cjs +2002 -0
- package/dist/{init-a228hXnS.cjs → init-BF-a2p6E.cjs} +65 -73
- package/dist/{init-fFirX8OY.cjs → init-BFxlQAD8.cjs} +1 -1
- package/dist/init-BJE1ry0O.js +17 -0
- package/dist/{init-BVnI4z2J.js → init-BPKBVOHU.js} +2 -2
- package/dist/{init-bdqZBd-o.js → init-BSP_xcpB.js} +2 -2
- package/dist/{init-CFNOn3lo.js → init-BSd7mznK.js} +3 -3
- package/dist/{init-MjR4swi6.js → init-BUJTT0MN.js} +36 -43
- package/dist/init-BUpFzYsD.cjs +143 -0
- package/dist/{init-BvpYHyLH.cjs → init-BZ-WyAIL.cjs} +3 -3
- package/dist/init-BZdfdLX7.js +422 -0
- package/dist/{init-CJeOys1w.cjs → init-B_HWNXMD.cjs} +2 -2
- package/dist/init-BbIMt6xU.cjs +6 -0
- package/dist/{init-BYdN1aqE.cjs → init-BewG6swt.cjs} +2 -2
- package/dist/{init-BX0AZAVH2.js → init-Bilqsbng.js} +2 -2
- package/dist/{init-Tpn9VkFu.cjs → init-BpwlQ6wF.cjs} +1 -1
- package/dist/{init-D5-P0HXK.js → init-BtQOzUjX.js} +1 -1
- package/dist/{init-BvGz3qUd2.js → init-CCTscPaY2.js} +2 -2
- package/dist/{init-D4hPipCD.cjs → init-CH0yyBof.cjs} +1 -1
- package/dist/init-CaIkrXal.cjs +121 -0
- package/dist/init-CkZy4IMf.cjs +107 -0
- package/dist/{init-Drr2f_Pr.js → init-CmfcY7SV.js} +1 -1
- package/dist/{init-Kf3_OLv6.js → init-CnJAlks_.js} +1 -1
- package/dist/{init-Cdjt_z-b.cjs → init-CqqmtAIK.cjs} +4 -4
- package/dist/{init-Bb0avZeZ.js → init-Cu2znmIc.js} +5 -5
- package/dist/init-Cz5LAizN.js +2001 -0
- package/dist/init-D4WM3-Mn.cjs +18 -0
- package/dist/init-DMi2FGpf.cjs +424 -0
- package/dist/{init-lcaUSOOG.js → init-DPTJohPd.js} +1 -1
- package/dist/{init-BTYLMF9F2.cjs → init-DexLSprL2.cjs} +258 -61
- package/dist/init-DfKPgD21.js +106 -0
- package/dist/init-DgzRsI-C.js +141 -0
- package/dist/init-Dj4Cn7-P.js +4789 -0
- package/dist/init-DktAnYI0.cjs +2354 -0
- package/dist/{init-DFwhgert.cjs → init-DmyuM9Lo.cjs} +1 -1
- package/dist/{init-CX_zLXc6.js → init-IBnizp1U.js} +5 -5
- package/dist/init-MDKB6tGI2.cjs +4790 -0
- package/dist/{init-DbZ5byj42.js → init-TbB38KNt2.js} +258 -60
- package/dist/init-X6m_cqDy.js +2353 -0
- package/dist/{init-DvVgKCaP2.cjs → init-bzvl1JhF.cjs} +2 -2
- package/dist/{init-BgrY29gW.js → init-dsYkC_0B.js} +4 -4
- package/dist/{init-B5BsI3DR.cjs → init-kvn5FlPS.cjs} +7 -7
- package/dist/init-vfy9DW_E.js +119 -0
- package/dist/{init-BE_6Jyc4.js → init-w7xl6LsP.js} +3 -3
- package/dist/{init-DEsWVyn5.cjs → init-wgiBUmyW.cjs} +1 -1
- package/dist/{is-retriable-error-DWv_ob-f.js → is-retriable-error-CmFR20pe.js} +1 -1
- package/dist/{is-retriable-error-Dtb4JGjd.cjs → is-retriable-error-D2yo0_lS.cjs} +1 -1
- package/dist/jubjub-authoriser-A2c8vmkN.js +84 -0
- package/dist/jubjub-authoriser-D3ZDgzcF.cjs +85 -0
- package/dist/key-source-CcLTx8HK.js +2761 -0
- package/dist/key-source-D2tTAag-.cjs +806 -0
- package/dist/{key-value-store-DTX1quRS.js → key-value-store-DZcNDB3n.js} +1 -1
- package/dist/{key-value-store-B-XRIwaM.cjs → key-value-store-Htj4RgMe.cjs} +1 -1
- package/dist/keyDerivation-DcKRUCVh.cjs +274 -0
- package/dist/keyDerivation-QGesIMbS.js +4077 -0
- package/dist/{lace-context-FpU3iG3f.cjs → lace-context-BN0b_ury.cjs} +4 -4
- package/dist/{lace-context-BQvvxVLm.js → lace-context-DMRJ87Vg.js} +4 -4
- package/dist/lib-BC-62Byh.cjs +2359 -0
- package/dist/lib-JYqcAX0c.js +2354 -0
- package/dist/midnight-account-id.vo--Vcx34Xk.cjs +10 -0
- package/dist/midnight-account-id.vo-BuB8fiVO.js +5 -0
- package/dist/midnight-engine-B7D2hbHo.js +5 -0
- package/dist/midnight-engine-D5ikN_5F.cjs +6 -0
- package/dist/midnight-wallet-BOdFD6SX.cjs +24 -0
- package/dist/midnight-wallet-CAqZrNVe.js +18 -0
- package/dist/midnight.cjs +1412 -0
- package/dist/midnight.d.ts +28609 -0
- package/dist/midnight.js +1355 -0
- package/dist/modules-cardano-BiL9hoM3.js +996 -0
- package/dist/modules-cardano-UeXks3sd.cjs +1109 -0
- package/dist/node-relay-BOuvdZvC.cjs +49 -0
- package/dist/node-relay-CLtc5n1v.js +48 -0
- package/dist/outputs-5qdW8s-f.js +196 -0
- package/dist/outputs-BEM1GPMf.cjs +339 -0
- package/dist/{SodiumBip32Ed25519-BQUcrQWX.cjs → pbkdf2-B1veireP.cjs} +6 -411
- package/dist/pending-operation-CfTUNQVD.cjs +26 -0
- package/dist/pending-operation-Ljijb1Uh.js +21 -0
- package/dist/providers-1on_fwJO.cjs +364 -0
- package/dist/providers-C1MsxfMA.js +341 -0
- package/dist/redacted-4SJPqt-G.js +81 -0
- package/dist/redacted-DwxIDdIF.cjs +86 -0
- package/dist/{reselect-DPML1uFN.cjs → reselect-kP4DaAII.cjs} +1 -1
- package/dist/{retry-config-oNtfdyrG.cjs → retry-config-BGv5q5QM.cjs} +1 -1
- package/dist/{retry-config-VdbuqBsI.js → retry-config-Bu5Yn5ua.js} +1 -1
- package/dist/safe-buffer-CqGpSFCQ.js +43 -0
- package/dist/safe-buffer-DbXbwhUQ.cjs +48 -0
- package/dist/sdk-1SRu8Ype.cjs +1445 -0
- package/dist/sdk-BneJm7ey.js +1249 -0
- package/dist/sdk-init-9TG1ZvHF.cjs +3795 -0
- package/dist/sdk-init-Ce3mD-8F.js +1047 -0
- package/dist/secret-box-CSmRp6Tt.js +3777 -0
- package/dist/secret-box-ZfbYwBgS.cjs +6970 -0
- package/dist/send-proof-progress-DtAcrMP6.cjs +33 -0
- package/dist/send-proof-progress-Dx2cUz1B.js +22 -0
- package/dist/sha2-DaRJZOjk.cjs +390 -0
- package/dist/sha2-c4sB6peD.js +378 -0
- package/dist/side-effects-C3BhLrdP.js +768 -0
- package/dist/side-effects-DG0R-KFc.cjs +804 -0
- package/dist/sign-bitcoin-transaction-with-seed-C7vq9om8.js +147 -0
- package/dist/sign-bitcoin-transaction-with-seed-Ds1dwzan.cjs +158 -0
- package/dist/signer--2I6poMD.js +2 -0
- package/dist/signer-CX21Ups_.cjs +121 -0
- package/dist/signer-Cnn9q9oY.js +92 -0
- package/dist/signer-DbSxjk0F.cjs +7 -0
- package/dist/signer-factory-B5oFuUZ-.cjs +130 -0
- package/dist/signer-factory-BAt8FPNc.cjs +281 -0
- package/dist/signer-factory-BGE4nL4k.js +129 -0
- package/dist/signer-factory-C4pgsiJi.js +281 -0
- package/dist/{signer-factory-DySc1wRX.cjs → signer-factory-D95jQIPV.cjs} +9 -6
- package/dist/{signer-factory-D4HrwFPl.js → signer-factory-PrpsGX-8.js} +10 -6
- package/dist/{slice-BZTQgYSs.js → slice-B-xJcuT1.js} +4 -4
- package/dist/slice-B4QOYaOG.cjs +105 -0
- package/dist/{slice-CtIMw2YT.cjs → slice-B9QKuhi0.cjs} +3 -3
- package/dist/slice-BKnGkAkd.cjs +9031 -0
- package/dist/{slice-Bhwmqn1p.cjs → slice-Bf4enJKZ.cjs} +8 -8
- package/dist/{slice-DaNVz7_l.js → slice-ByNWnxKS.js} +8 -8
- package/dist/{slice-C2UDQrdt.js → slice-C1zOeseG.js} +449 -355
- package/dist/{slice-DFLyKRm5.cjs → slice-C4toRM6A.cjs} +2 -2
- package/dist/{slice-Cx4dULDA.cjs → slice-C8YVv4Qn.cjs} +1 -1
- package/dist/{slice-jnpOgiSZ.cjs → slice-CaMfviYu.cjs} +3 -3
- package/dist/{slice-DFvrwUur.js → slice-CgeRsYRg.js} +6 -6
- package/dist/slice-Cwt8jShq.js +9013 -0
- package/dist/{slice-zNEspZND.js → slice-D0VzpMbY.js} +2 -2
- package/dist/slice-D14F78Ca.js +87 -0
- package/dist/{slice-F6A1YKOF.cjs → slice-DLflttAu.cjs} +479 -366
- package/dist/{slice-C96EdeY1.js → slice-DcO-iNz2.js} +1 -1
- package/dist/{slice-C19quNWM.cjs → slice-DimtxfAT.cjs} +2 -2
- package/dist/{slice-KiNoGwD9.js → slice-DlTEqIoI.js} +1 -1
- package/dist/{slice-ws8PccRX.js → slice-Dn0WojD7.js} +3 -3
- package/dist/{slice-BLSxLmie.cjs → slice-Dongunf7.cjs} +4 -4
- package/dist/{slice-B6vPum19.js → slice-DpufJAjJ.js} +2 -2
- package/dist/{slice-exhhmucR.cjs → slice-DtitVc9L.cjs} +7 -7
- package/dist/{slice-Bjj2t2ut.cjs → slice-WMMMc1Xv.cjs} +2 -2
- package/dist/slice-a8VuIqzS.cjs +378 -0
- package/dist/slice-bRASyM-m.js +354 -0
- package/dist/{slice-CBFrgHSH.js → slice-hNyKbDry.js} +3 -3
- package/dist/{InMemoryKeyAgent-pyB2gA-N.cjs → src-BayYMIjw.cjs} +20 -8228
- package/dist/{InMemoryKeyAgent-D-3HejxN.js → src-CgINPlSx.js} +29 -4811
- package/dist/store-AUlTfcI_.js +37 -0
- package/dist/store-C7AneHEY.cjs +66 -0
- package/dist/submit-BuBCVi-l.cjs +87 -0
- package/dist/submit-D37lxFrK.js +70 -0
- package/dist/submit-bitcoin-tx-DFLnhidO.js +983 -0
- package/dist/submit-bitcoin-tx-sih2hSfb.cjs +1049 -0
- package/dist/{subtractValueQuantities-DfZg6oiG.js → subtractValueQuantities-BuDJVxq6.js} +3 -22
- package/dist/{subtractValueQuantities-C8qDTtgH.cjs → subtractValueQuantities-CqR606HV.cjs} +2 -32
- package/dist/{sync-operation-utils-BrQyWFS_.cjs → sync-operation-utils--Z_IQfyW.cjs} +0 -66
- package/dist/{sync-operation-utils-CAaCGvEN.js → sync-operation-utils-BimBpvI3.js} +1 -37
- package/dist/token-color.vo-CItgoOjw.js +26 -0
- package/dist/token-color.vo-Ca4hUXfh.cjs +37 -0
- package/dist/token-id-mapper-BVau2RXa.js +16 -0
- package/dist/token-id-mapper-CSeLzM4o.cjs +18 -0
- package/dist/{token-id-mapper-pDaTxpw2.js → token-id-mapper-ClBeIdJR.js} +2 -2
- package/dist/{token-id-mapper-DYcd8hhQ.cjs → token-id-mapper-D0wFdbOy.cjs} +2 -2
- package/dist/types-BhzypKMS.cjs +15 -0
- package/dist/types-DTE1ctDB.js +10 -0
- package/dist/types-DXSxXGz0.js +12 -0
- package/dist/types-Dls6Z5gV.cjs +23 -0
- package/dist/{util-P4PX2muj.cjs → util-D1YlKzrc.cjs} +2 -2
- package/dist/{util-CQSJU0wT.js → util-DHxtzUzY.js} +2 -2
- package/dist/{utils-Bv4OHT4S.cjs → utils-DYf4iZKX.cjs} +7 -1
- package/dist/{utils-DrtzChYN.js → utils-DcnoETEP.js} +2 -2
- package/dist/utils-Du0YXRcU.cjs +112 -0
- package/dist/utils-fF_rnZe3.js +65 -0
- package/dist/v8Signatures-ClGpA8mS.cjs +71 -0
- package/dist/{vote-delegation-tx-builder-69gOEkCB.cjs → vote-delegation-tx-builder-BjZxCOd3.cjs} +9 -8
- package/dist/{vote-delegation-tx-builder-BRJ_pf-c.js → vote-delegation-tx-builder-DRJwPXkD.js} +9 -7
- package/dist/watch-FGE4B_Ge.js +13056 -0
- package/dist/watch-imlsRZDp.cjs +52207 -0
- package/package.json +95 -3
- package/dist/Address-4KjeDt_x.cjs +0 -17269
- package/dist/Address-_VPkf7Xh.js +0 -17101
- package/dist/account-guards.stable-BKyYPj4z.cjs +0 -10
- package/dist/account-guards.stable-BdmQ43vC.js +0 -5
- package/dist/init-BR9ZIbED.cjs +0 -378
- package/dist/init-B_k1RUN_.cjs +0 -21
- package/dist/init-Bs3b5ZQH.js +0 -378
- package/dist/init-ChfcrHgG2.cjs +0 -4354
- package/dist/init-D1uUMMpG.js +0 -19
- package/dist/init-DV1OSZiK.js +0 -4352
- package/dist/modules-cardano-BINzpXpk.js +0 -5454
- package/dist/modules-cardano-Dt8OwoQb.cjs +0 -5640
- package/dist/slice-Caf98m0d2.js +0 -107
- package/dist/slice-PM6llajQ2.cjs +0 -125
- /package/dist/{BigIntMath-CoJWXt1h.cjs → BigIntMath-CBciEQn2.cjs} +0 -0
- /package/dist/{BigIntMath-BWUJOsOW.js → BigIntMath-X3EniYDo.js} +0 -0
- /package/dist/{ChainId-sdLmlIRk.cjs → ChainId-CNPSU9nn.cjs} +0 -0
- /package/dist/{ChainId-CKbm87yQ.js → ChainId-CeoG8Sov.js} +0 -0
- /package/dist/{_polyfill-node.process-4fnlkbBi.cjs → _polyfill-node.process-5UxyjoHG.cjs} +0 -0
- /package/dist/{account-id.vo-Xpgnu-av.cjs → account-id.vo-DYZBZQsz.cjs} +0 -0
- /package/dist/{account-id.vo-DP0BtOoF.js → account-id.vo-KDTWJ-W5.js} +0 -0
- /package/dist/{actions-BNagEO6m.cjs → actions-BnHFVSr_.cjs} +0 -0
- /package/dist/{actions-BWTyAr7B.js → actions-Cwj0ApZf.js} +0 -0
- /package/dist/{asyncoption-po7-RiA5.cjs → asyncoption-CYcZNBRM.cjs} +0 -0
- /package/dist/{asyncoption-CzIVH5Y1.js → asyncoption-DZQGfznq.js} +0 -0
- /package/dist/{bignum.vo-DhhZ9HP1.js → bignum.vo-Co6tMH2q.js} +0 -0
- /package/dist/{bignum.vo-CpkrIXjH.cjs → bignum.vo-Du-bpvar.cjs} +0 -0
- /package/dist/{blockchain-network-id.vo-CbgrAY_K.js → blockchain-network-id.vo-C6Jowh8t.js} +0 -0
- /package/dist/{blockchain-network-id.vo-5iC6Kffo.cjs → blockchain-network-id.vo-DEQ14dYj.cjs} +0 -0
- /package/dist/{composite-signer-factory-DABpCe1_.js → composite-signer-factory-D9RWY-1V.js} +0 -0
- /package/dist/{composite-signer-factory-BizuNPP7.cjs → composite-signer-factory-v4Pxn8bA.cjs} +0 -0
- /package/dist/{error-ggOihIfv.cjs → error-B6wj9nPv.cjs} +0 -0
- /package/dist/{error-DHKO2iS4.js → error-CvEYL98P.js} +0 -0
- /package/dist/{esm-browser-DnXNvpcn.cjs → esm-browser-CZbMeVod.cjs} +0 -0
- /package/dist/{esm-browser-BBVQuyQv.js → esm-browser-DpAD_RKv.js} +0 -0
- /package/dist/{feature-flag-key.vo-DoGK5Bfh.js → feature-flag-key.vo-9reURsOQ.js} +0 -0
- /package/dist/{feature-flag-key.vo-CP1Z9s8e.cjs → feature-flag-key.vo-KTIdnzYX.cjs} +0 -0
- /package/dist/{first-state-of-status-Bx4-QQ5m.cjs → first-state-of-status-9ICeDNSa.cjs} +0 -0
- /package/dist/{first-state-of-status-D7XzEuSa.js → first-state-of-status-BscbKj_t.js} +0 -0
- /package/dist/{init-4319psUJ.cjs → init-BT67pd9x.cjs} +0 -0
- /package/dist/{init-AFUM1TSg.js → init-CHk1fvJ2.js} +0 -0
- /package/dist/{init-ZX90nEJe2.js → init-DIyNx6DZ.js} +0 -0
- /package/dist/{init-CTQ2g6Xt.js → init-DtxxFaCx.js} +0 -0
- /package/dist/{init-Dt1Xifg_2.cjs → init-J8QobR93.cjs} +0 -0
- /package/dist/{init-BNewLCqw.cjs → init-xzZPlQwB.cjs} +0 -0
- /package/dist/{is-redux-persist-state-DxJSsvxB.cjs → is-redux-persist-state-C5luvPEH.cjs} +0 -0
- /package/dist/{is-redux-persist-state-Bl2n4VMr.js → is-redux-persist-state-CjcqyCoh.js} +0 -0
- /package/dist/{isNotNil-CZxBMfL5.js → isNotNil-Be7gCY0m.js} +0 -0
- /package/dist/{isNotNil-C_SO1tcC.cjs → isNotNil-CrYIUFry.cjs} +0 -0
- /package/dist/{logging-BvMDKgl0.js → logging-BAMMfn5j.js} +0 -0
- /package/dist/{logging-Bh9ikph3.cjs → logging-CbxgIX9V.cjs} +0 -0
- /package/dist/{metadatum-B-sxBnSY.cjs → metadatum-BGvFqGPt.cjs} +0 -0
- /package/dist/{metadatum-Ego4jVas.js → metadatum-BVocMYy_.js} +0 -0
- /package/dist/{repo-slice-BzZQUTj8.cjs → repo-slice-BB_W-6OL.cjs} +0 -0
- /package/dist/{repo-slice-vCcQJotS.js → repo-slice-BQlssw9M.js} +0 -0
- /package/dist/{reselect-BPkMzw3k.js → reselect-JIgawvPe.js} +0 -0
- /package/dist/{serializable-BxFUShKY.js → serializable-F7OtYl8d.js} +0 -0
- /package/dist/{serializable-DWgkHhv_.cjs → serializable-n3UoxbZc.cjs} +0 -0
- /package/dist/{slice-DY-DNtSi.js → slice-5dGBAz6w.js} +0 -0
- /package/dist/{slice-BEFoeqgr.cjs → slice-BzJgg9FS.cjs} +0 -0
- /package/dist/{src-CPmX4KUh.cjs → src-CeBNkonz.cjs} +0 -0
- /package/dist/{src-XOZXPKxe.js → src-Cv1ifqbe.js} +0 -0
- /package/dist/{time-CQPt4FdU.js → time-ByoKevdZ.js} +0 -0
- /package/dist/{time-Blvoyh9G.cjs → time-qD7edGU0.cjs} +0 -0
- /package/dist/{time.vo-Xln4yGBU.js → time.vo-C17-tYq3.js} +0 -0
- /package/dist/{time.vo-rwWwJzmP.cjs → time.vo-TmYE-_Y2.cjs} +0 -0
- /package/dist/{toEmpty-CzmoZVLN.cjs → toEmpty-Db6V94Mf.cjs} +0 -0
- /package/dist/{toEmpty-DzLd-ZCi.js → toEmpty-Djj-QbpI.js} +0 -0
- /package/dist/{token-id.vo-l8fuSpem.cjs → token-id.vo-CZ622zcZ.cjs} +0 -0
- /package/dist/{token-id.vo-DMKSaMlc.js → token-id.vo-IDI9C_Qm.js} +0 -0
- /package/dist/{types-B61DQoFW.js → types-By-XeXWg.js} +0 -0
- /package/dist/{types-CUC-Kcqh.cjs → types-Cn6WlQV6.cjs} +0 -0
- /package/dist/{util-BV3iGOrz.cjs → util-Cp1h58uD.cjs} +0 -0
- /package/dist/{util-BsQKLorV.js → util-DHppXj7U.js} +0 -0
- /package/dist/{util-selector-CKIyoAOz.js → util-selector-BWmHpo92.js} +0 -0
- /package/dist/{util-selector-C9H5RsNw.cjs → util-selector-glXkO-jR.cjs} +0 -0
- /package/dist/{while-active-CNXeLxre.js → while-active-CDBnUlQA.js} +0 -0
- /package/dist/{while-active-BsDWSNrO.cjs → while-active-I2TlHtm7.cjs} +0 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
const require_bytes_vo = require("./bytes.vo-hecRu3YZ.cjs");
|
|
2
|
+
const require_providers = require("./providers-1on_fwJO.cjs");
|
|
3
|
+
const require_gated_call = require("./gated-call-DdDrxEq5.cjs");
|
|
4
|
+
const require_errors = require("./errors-BA3b8aVu.cjs");
|
|
5
|
+
const require_acc_module = require("./acc-module-NL_8mEHH.cjs");
|
|
6
|
+
//#region ../../packages/module/passport-account/src/infra/indexer.ts
|
|
7
|
+
const TX_FIELDS = `transaction {
|
|
8
|
+
hash
|
|
9
|
+
block { height }
|
|
10
|
+
... on RegularTransaction { identifiers zswapStartIndex zswapEndIndex }
|
|
11
|
+
}`;
|
|
12
|
+
const ACTION_FIELDS = `
|
|
13
|
+
__typename
|
|
14
|
+
... on ContractDeploy { ${TX_FIELDS} }
|
|
15
|
+
... on ContractCall { entryPoint ${TX_FIELDS} }
|
|
16
|
+
... on ContractUpdate { ${TX_FIELDS} }
|
|
17
|
+
`;
|
|
18
|
+
const isShieldedOutputEvent = (content) => content.tag === "zswapOutput";
|
|
19
|
+
const toRecord = (action) => {
|
|
20
|
+
const transaction = action.transaction ?? {};
|
|
21
|
+
return {
|
|
22
|
+
kind: action.__typename,
|
|
23
|
+
entryPoint: action.entryPoint ?? void 0,
|
|
24
|
+
txHash: String(transaction.hash ?? ""),
|
|
25
|
+
identifiers: (transaction.identifiers ?? []).map(String),
|
|
26
|
+
blockHeight: Number(transaction.block?.height ?? 0),
|
|
27
|
+
startIndex: transaction.zswapStartIndex == null ? void 0 : Number(transaction.zswapStartIndex),
|
|
28
|
+
endIndex: transaction.zswapEndIndex == null ? void 0 : Number(transaction.zswapEndIndex)
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
const stripHexPrefix = (address) => address.replace(/^0x/, "");
|
|
32
|
+
const HEX_BYTES_PATTERN = /^(?:[0-9a-fA-F]{2})*$/;
|
|
33
|
+
/**
|
|
34
|
+
* The bytes of a ledger event the indexer returned as hex. A payload that
|
|
35
|
+
* is not whole hex bytes is refused outright: decoding it leniently would
|
|
36
|
+
* hand the ledger a truncated event and lose the output it described.
|
|
37
|
+
*/
|
|
38
|
+
const eventBytes = (raw) => {
|
|
39
|
+
if (!HEX_BYTES_PATTERN.test(raw)) throw new Error(`transactions query: ledger event is not hex: "${raw}"`);
|
|
40
|
+
return require_bytes_vo.ByteArray.fromHex(require_bytes_vo.HexBytes(raw));
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Reads Passport contract data from a Midnight indexer: the current
|
|
44
|
+
* contract state through the midnight-js public data provider, the
|
|
45
|
+
* complete per-address action history through the indexer's
|
|
46
|
+
* contractActions subscription, and the shielded outputs a transaction
|
|
47
|
+
* created through the ledger events the indexer keeps per transaction.
|
|
48
|
+
*/
|
|
49
|
+
const createIndexerClient = ({ indexerUrl, indexerWsUrl, fetchHttp = globalThis.fetch, createSocket = (url, protocol) => new WebSocket(url, protocol), createPublicDataProvider }) => {
|
|
50
|
+
const defaultProvider = async () => {
|
|
51
|
+
const { indexerPublicDataProvider } = await import("@midnight-ntwrk/midnight-js-indexer-public-data-provider");
|
|
52
|
+
return indexerPublicDataProvider({
|
|
53
|
+
queryURL: indexerUrl,
|
|
54
|
+
subscriptionURL: indexerWsUrl
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
let providerPromise;
|
|
58
|
+
const provider = async () => providerPromise ??= (createPublicDataProvider ?? defaultProvider)();
|
|
59
|
+
const postQuery = async (name, query, variables) => {
|
|
60
|
+
const response = await fetchHttp(indexerUrl, {
|
|
61
|
+
method: "POST",
|
|
62
|
+
headers: { "Content-Type": "application/json" },
|
|
63
|
+
body: JSON.stringify({
|
|
64
|
+
query,
|
|
65
|
+
variables
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
if (!response.ok) throw new Error(`${name} query failed: HTTP ${response.status} ${response.statusText}`);
|
|
69
|
+
const body = await response.json();
|
|
70
|
+
if (body.errors?.length) throw new Error(`${name} query: ${JSON.stringify(body.errors)}`);
|
|
71
|
+
return body;
|
|
72
|
+
};
|
|
73
|
+
const latestContractAction = async (address) => {
|
|
74
|
+
const action = (await postQuery("contractAction", `query($address: HexEncoded!) { contractAction(address: $address) { ${ACTION_FIELDS} } }`, { address: stripHexPrefix(address) })).data?.contractAction;
|
|
75
|
+
return action ? toRecord(action) : null;
|
|
76
|
+
};
|
|
77
|
+
const enumerateContractActions = async (address, { timeoutMs = 6e4, drainMs = 500 } = {}) => {
|
|
78
|
+
const frontier = await latestContractAction(address);
|
|
79
|
+
if (!frontier) return [];
|
|
80
|
+
return new Promise((resolve, reject) => {
|
|
81
|
+
const actions = [];
|
|
82
|
+
const socket = createSocket(indexerWsUrl, "graphql-transport-ws");
|
|
83
|
+
let drain;
|
|
84
|
+
const deadline = setTimeout(() => {
|
|
85
|
+
fail(/* @__PURE__ */ new Error(`contractActions replay timed out after ${timeoutMs}ms (${actions.length} received)`));
|
|
86
|
+
}, timeoutMs);
|
|
87
|
+
const finish = (error) => {
|
|
88
|
+
clearTimeout(deadline);
|
|
89
|
+
if (drain) clearTimeout(drain);
|
|
90
|
+
try {
|
|
91
|
+
socket.close();
|
|
92
|
+
} catch {}
|
|
93
|
+
if (error) reject(error);
|
|
94
|
+
else resolve(actions);
|
|
95
|
+
};
|
|
96
|
+
const fail = (error) => {
|
|
97
|
+
finish(error);
|
|
98
|
+
};
|
|
99
|
+
socket.addEventListener("error", (event) => {
|
|
100
|
+
fail(/* @__PURE__ */ new Error(`indexer websocket: ${event.message ?? "error"}`));
|
|
101
|
+
});
|
|
102
|
+
socket.addEventListener("open", () => {
|
|
103
|
+
socket.send(JSON.stringify({ type: "connection_init" }));
|
|
104
|
+
});
|
|
105
|
+
socket.addEventListener("message", (event) => {
|
|
106
|
+
const message = JSON.parse(String(event.data));
|
|
107
|
+
switch (message.type ?? "") {
|
|
108
|
+
case "connection_ack":
|
|
109
|
+
socket.send(JSON.stringify({
|
|
110
|
+
id: "1",
|
|
111
|
+
type: "subscribe",
|
|
112
|
+
payload: {
|
|
113
|
+
query: `subscription($address: HexEncoded!) {
|
|
114
|
+
contractActions(address: $address, offset: { height: 0 }) { ${ACTION_FIELDS} }
|
|
115
|
+
}`,
|
|
116
|
+
variables: { address: stripHexPrefix(address) }
|
|
117
|
+
}
|
|
118
|
+
}));
|
|
119
|
+
break;
|
|
120
|
+
case "next": {
|
|
121
|
+
if (message.payload?.errors?.length) {
|
|
122
|
+
fail(/* @__PURE__ */ new Error(`contractActions subscription: ${JSON.stringify(message.payload.errors)}`));
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
const action = message.payload?.data?.contractActions;
|
|
126
|
+
if (!action) break;
|
|
127
|
+
actions.push(toRecord(action));
|
|
128
|
+
if (actions.at(-1)?.txHash === frontier.txHash && !drain) drain = setTimeout(() => {
|
|
129
|
+
finish();
|
|
130
|
+
}, drainMs);
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
case "error":
|
|
134
|
+
fail(/* @__PURE__ */ new Error(`contractActions subscription: ${JSON.stringify(message.payload)}`));
|
|
135
|
+
break;
|
|
136
|
+
case "complete":
|
|
137
|
+
finish();
|
|
138
|
+
break;
|
|
139
|
+
default: break;
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* The indexer keeps, per transaction, the events the ledger emitted while
|
|
146
|
+
* applying it; a shielded output's event carries the commitment and the
|
|
147
|
+
* tree index the ledger assigned, so the index is read, never inferred
|
|
148
|
+
* from the transaction's position window.
|
|
149
|
+
*/
|
|
150
|
+
const queryShieldedOutputs = async (txHash) => {
|
|
151
|
+
const events = ((await postQuery("transactions", `query($offset: TransactionOffset!) { transactions(offset: $offset) { hash ... on RegularTransaction { zswapLedgerEvents { raw } } } }`, { offset: { hash: stripHexPrefix(txHash) } })).data?.transactions ?? []).flatMap((transaction) => transaction.zswapLedgerEvents ?? []);
|
|
152
|
+
if (events.length === 0) return [];
|
|
153
|
+
const { Event } = await import("@midnightntwrk/ledger-v9");
|
|
154
|
+
return events.flatMap(({ raw }) => {
|
|
155
|
+
const { content } = Event.deserialize(eventBytes(stripHexPrefix(raw ?? "")));
|
|
156
|
+
return isShieldedOutputEvent(content) ? [{
|
|
157
|
+
commitment: content.commitment.toLowerCase(),
|
|
158
|
+
...content.contract === void 0 ? {} : { contractAddress: content.contract.toLowerCase() },
|
|
159
|
+
index: content.mtIndex
|
|
160
|
+
}] : [];
|
|
161
|
+
});
|
|
162
|
+
};
|
|
163
|
+
return {
|
|
164
|
+
queryContractState: async (address) => (await provider()).queryContractState(address),
|
|
165
|
+
enumerateContractActions,
|
|
166
|
+
queryShieldedOutputs
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
//#endregion
|
|
170
|
+
//#region ../../packages/module/passport-account/src/flows/account-call.ts
|
|
171
|
+
/** Contract aborts meaning the authorising key was rejected. */
|
|
172
|
+
const NOT_AUTHORISED_ABORTS = ["failed assert: invalid signature", "failed assert: device key"];
|
|
173
|
+
/**
|
|
174
|
+
* Raised by the caller checks in require_authorised and by the target
|
|
175
|
+
* check in _do_remove_device: the same string for two different failures.
|
|
176
|
+
*/
|
|
177
|
+
const UNKNOWN_ENTRY_ABORT = "failed assert: unknown device entry";
|
|
178
|
+
/** Whether a contract abort message says the authorising key was rejected. */
|
|
179
|
+
const isNotAuthorisedAbort = (message) => NOT_AUTHORISED_ABORTS.some((abort) => message.includes(abort));
|
|
180
|
+
/**
|
|
181
|
+
* The decoded ledger state of the account at `address`, which must hold
|
|
182
|
+
* a live contract.
|
|
183
|
+
*
|
|
184
|
+
* @throws {@link AccountContractMissingError} when the indexer serves no
|
|
185
|
+
* contract at the address.
|
|
186
|
+
*/
|
|
187
|
+
const queryAccountLedger = async (indexer, address) => {
|
|
188
|
+
const state = await indexer.queryContractState(address);
|
|
189
|
+
if (!state) throw new require_errors.AccountContractMissingError(`No live Account Custody Contract found at ${address}.`);
|
|
190
|
+
return require_acc_module.ledger(state.data);
|
|
191
|
+
};
|
|
192
|
+
/**
|
|
193
|
+
* Reads the account's ledger state through a fresh indexer client, which
|
|
194
|
+
* is returned with it so a flow can read the state again after a call.
|
|
195
|
+
*/
|
|
196
|
+
const readAccountLedger = async (address, { indexerUrl, indexerWsUrl }) => {
|
|
197
|
+
const indexer = createIndexerClient({
|
|
198
|
+
indexerUrl,
|
|
199
|
+
indexerWsUrl
|
|
200
|
+
});
|
|
201
|
+
return {
|
|
202
|
+
indexer,
|
|
203
|
+
ledgerState: await queryAccountLedger(indexer, address)
|
|
204
|
+
};
|
|
205
|
+
};
|
|
206
|
+
/**
|
|
207
|
+
* Submits one gated call and reports the position it left the local
|
|
208
|
+
* device in. The handle is connected without the account encryption
|
|
209
|
+
* secret: the device and grant lifecycle circuits read no private state,
|
|
210
|
+
* so deriving it here would only widen the window the secret spends in
|
|
211
|
+
* memory. The successor commitment is computed against the epoch read
|
|
212
|
+
* before the call, which is the epoch the accepted call ran under: a
|
|
213
|
+
* gated call never changes device_epoch (it is only written at
|
|
214
|
+
* construction), so the pre-call epoch names the very entry the contract
|
|
215
|
+
* inserted.
|
|
216
|
+
*/
|
|
217
|
+
const submitAccountCall = async ({ circuit, args, account, localUseCounter, ledgerState, onStage }, { passportAuthoriser, passportNetwork, passportProver, passportSponsor }) => {
|
|
218
|
+
const handle = await require_gated_call.connectAccountHandle(await require_providers.createMidnightProviders({
|
|
219
|
+
network: passportNetwork,
|
|
220
|
+
prover: passportProver,
|
|
221
|
+
sponsor: passportSponsor,
|
|
222
|
+
...onStage ? { onStage } : {}
|
|
223
|
+
}), account.address);
|
|
224
|
+
const address = require_providers.AccAddress(account.address);
|
|
225
|
+
const advancedCounter = await require_gated_call.executeGatedCall({
|
|
226
|
+
handle,
|
|
227
|
+
authoriser: passportAuthoriser,
|
|
228
|
+
circuit,
|
|
229
|
+
args,
|
|
230
|
+
address,
|
|
231
|
+
ledgerState,
|
|
232
|
+
knownUseCounter: localUseCounter === void 0 ? void 0 : require_gated_call.UseCounter(BigInt(localUseCounter))
|
|
233
|
+
});
|
|
234
|
+
return {
|
|
235
|
+
advancedCounter,
|
|
236
|
+
localCommitmentHex: await passportAuthoriser.deviceCommitment(address, require_gated_call.DeviceEpoch(ledgerState.device_epoch), advancedCounter)
|
|
237
|
+
};
|
|
238
|
+
};
|
|
239
|
+
/**
|
|
240
|
+
* The devices list with the local device's row moved to the commitment it
|
|
241
|
+
* holds after an accepted call. An entry is single use: the call consumed
|
|
242
|
+
* the one the row carried and the contract inserted its successor, so
|
|
243
|
+
* leaving the row as it was would name an entry the on-chain set no
|
|
244
|
+
* longer holds. Only existing rows are rewritten, so a removal that
|
|
245
|
+
* dropped the local row does not resurrect it.
|
|
246
|
+
*/
|
|
247
|
+
const withRefreshedLocalDevice = (devices, commitmentHex) => devices.map((device) => device.isLocal ? {
|
|
248
|
+
...device,
|
|
249
|
+
commitmentHex
|
|
250
|
+
} : device);
|
|
251
|
+
//#endregion
|
|
252
|
+
Object.defineProperty(exports, "UNKNOWN_ENTRY_ABORT", {
|
|
253
|
+
enumerable: true,
|
|
254
|
+
get: function() {
|
|
255
|
+
return UNKNOWN_ENTRY_ABORT;
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
Object.defineProperty(exports, "createIndexerClient", {
|
|
259
|
+
enumerable: true,
|
|
260
|
+
get: function() {
|
|
261
|
+
return createIndexerClient;
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
Object.defineProperty(exports, "isNotAuthorisedAbort", {
|
|
265
|
+
enumerable: true,
|
|
266
|
+
get: function() {
|
|
267
|
+
return isNotAuthorisedAbort;
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
Object.defineProperty(exports, "queryAccountLedger", {
|
|
271
|
+
enumerable: true,
|
|
272
|
+
get: function() {
|
|
273
|
+
return queryAccountLedger;
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
Object.defineProperty(exports, "readAccountLedger", {
|
|
277
|
+
enumerable: true,
|
|
278
|
+
get: function() {
|
|
279
|
+
return readAccountLedger;
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
Object.defineProperty(exports, "submitAccountCall", {
|
|
283
|
+
enumerable: true,
|
|
284
|
+
get: function() {
|
|
285
|
+
return submitAccountCall;
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
Object.defineProperty(exports, "withRefreshedLocalDevice", {
|
|
289
|
+
enumerable: true,
|
|
290
|
+
get: function() {
|
|
291
|
+
return withRefreshedLocalDevice;
|
|
292
|
+
}
|
|
293
|
+
});
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { n as HexBytes, t as ByteArray } from "./bytes.vo-CziaOsba.js";
|
|
2
|
+
import { i as AccAddress, t as createMidnightProviders } from "./providers-C1MsxfMA.js";
|
|
3
|
+
import { n as executeGatedCall, o as DeviceEpoch, s as UseCounter, t as connectAccountHandle } from "./gated-call-CcsuW9L5.js";
|
|
4
|
+
import { t as AccountContractMissingError } from "./errors-pkQdxW-7.js";
|
|
5
|
+
import { i as ledger } from "./acc-module-ur8CkBd1.js";
|
|
6
|
+
//#region ../../packages/module/passport-account/src/infra/indexer.ts
|
|
7
|
+
const TX_FIELDS = `transaction {
|
|
8
|
+
hash
|
|
9
|
+
block { height }
|
|
10
|
+
... on RegularTransaction { identifiers zswapStartIndex zswapEndIndex }
|
|
11
|
+
}`;
|
|
12
|
+
const ACTION_FIELDS = `
|
|
13
|
+
__typename
|
|
14
|
+
... on ContractDeploy { ${TX_FIELDS} }
|
|
15
|
+
... on ContractCall { entryPoint ${TX_FIELDS} }
|
|
16
|
+
... on ContractUpdate { ${TX_FIELDS} }
|
|
17
|
+
`;
|
|
18
|
+
const isShieldedOutputEvent = (content) => content.tag === "zswapOutput";
|
|
19
|
+
const toRecord = (action) => {
|
|
20
|
+
const transaction = action.transaction ?? {};
|
|
21
|
+
return {
|
|
22
|
+
kind: action.__typename,
|
|
23
|
+
entryPoint: action.entryPoint ?? void 0,
|
|
24
|
+
txHash: String(transaction.hash ?? ""),
|
|
25
|
+
identifiers: (transaction.identifiers ?? []).map(String),
|
|
26
|
+
blockHeight: Number(transaction.block?.height ?? 0),
|
|
27
|
+
startIndex: transaction.zswapStartIndex == null ? void 0 : Number(transaction.zswapStartIndex),
|
|
28
|
+
endIndex: transaction.zswapEndIndex == null ? void 0 : Number(transaction.zswapEndIndex)
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
const stripHexPrefix = (address) => address.replace(/^0x/, "");
|
|
32
|
+
const HEX_BYTES_PATTERN = /^(?:[0-9a-fA-F]{2})*$/;
|
|
33
|
+
/**
|
|
34
|
+
* The bytes of a ledger event the indexer returned as hex. A payload that
|
|
35
|
+
* is not whole hex bytes is refused outright: decoding it leniently would
|
|
36
|
+
* hand the ledger a truncated event and lose the output it described.
|
|
37
|
+
*/
|
|
38
|
+
const eventBytes = (raw) => {
|
|
39
|
+
if (!HEX_BYTES_PATTERN.test(raw)) throw new Error(`transactions query: ledger event is not hex: "${raw}"`);
|
|
40
|
+
return ByteArray.fromHex(HexBytes(raw));
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Reads Passport contract data from a Midnight indexer: the current
|
|
44
|
+
* contract state through the midnight-js public data provider, the
|
|
45
|
+
* complete per-address action history through the indexer's
|
|
46
|
+
* contractActions subscription, and the shielded outputs a transaction
|
|
47
|
+
* created through the ledger events the indexer keeps per transaction.
|
|
48
|
+
*/
|
|
49
|
+
const createIndexerClient = ({ indexerUrl, indexerWsUrl, fetchHttp = globalThis.fetch, createSocket = (url, protocol) => new WebSocket(url, protocol), createPublicDataProvider }) => {
|
|
50
|
+
const defaultProvider = async () => {
|
|
51
|
+
const { indexerPublicDataProvider } = await import("@midnight-ntwrk/midnight-js-indexer-public-data-provider");
|
|
52
|
+
return indexerPublicDataProvider({
|
|
53
|
+
queryURL: indexerUrl,
|
|
54
|
+
subscriptionURL: indexerWsUrl
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
let providerPromise;
|
|
58
|
+
const provider = async () => providerPromise ??= (createPublicDataProvider ?? defaultProvider)();
|
|
59
|
+
const postQuery = async (name, query, variables) => {
|
|
60
|
+
const response = await fetchHttp(indexerUrl, {
|
|
61
|
+
method: "POST",
|
|
62
|
+
headers: { "Content-Type": "application/json" },
|
|
63
|
+
body: JSON.stringify({
|
|
64
|
+
query,
|
|
65
|
+
variables
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
if (!response.ok) throw new Error(`${name} query failed: HTTP ${response.status} ${response.statusText}`);
|
|
69
|
+
const body = await response.json();
|
|
70
|
+
if (body.errors?.length) throw new Error(`${name} query: ${JSON.stringify(body.errors)}`);
|
|
71
|
+
return body;
|
|
72
|
+
};
|
|
73
|
+
const latestContractAction = async (address) => {
|
|
74
|
+
const action = (await postQuery("contractAction", `query($address: HexEncoded!) { contractAction(address: $address) { ${ACTION_FIELDS} } }`, { address: stripHexPrefix(address) })).data?.contractAction;
|
|
75
|
+
return action ? toRecord(action) : null;
|
|
76
|
+
};
|
|
77
|
+
const enumerateContractActions = async (address, { timeoutMs = 6e4, drainMs = 500 } = {}) => {
|
|
78
|
+
const frontier = await latestContractAction(address);
|
|
79
|
+
if (!frontier) return [];
|
|
80
|
+
return new Promise((resolve, reject) => {
|
|
81
|
+
const actions = [];
|
|
82
|
+
const socket = createSocket(indexerWsUrl, "graphql-transport-ws");
|
|
83
|
+
let drain;
|
|
84
|
+
const deadline = setTimeout(() => {
|
|
85
|
+
fail(/* @__PURE__ */ new Error(`contractActions replay timed out after ${timeoutMs}ms (${actions.length} received)`));
|
|
86
|
+
}, timeoutMs);
|
|
87
|
+
const finish = (error) => {
|
|
88
|
+
clearTimeout(deadline);
|
|
89
|
+
if (drain) clearTimeout(drain);
|
|
90
|
+
try {
|
|
91
|
+
socket.close();
|
|
92
|
+
} catch {}
|
|
93
|
+
if (error) reject(error);
|
|
94
|
+
else resolve(actions);
|
|
95
|
+
};
|
|
96
|
+
const fail = (error) => {
|
|
97
|
+
finish(error);
|
|
98
|
+
};
|
|
99
|
+
socket.addEventListener("error", (event) => {
|
|
100
|
+
fail(/* @__PURE__ */ new Error(`indexer websocket: ${event.message ?? "error"}`));
|
|
101
|
+
});
|
|
102
|
+
socket.addEventListener("open", () => {
|
|
103
|
+
socket.send(JSON.stringify({ type: "connection_init" }));
|
|
104
|
+
});
|
|
105
|
+
socket.addEventListener("message", (event) => {
|
|
106
|
+
const message = JSON.parse(String(event.data));
|
|
107
|
+
switch (message.type ?? "") {
|
|
108
|
+
case "connection_ack":
|
|
109
|
+
socket.send(JSON.stringify({
|
|
110
|
+
id: "1",
|
|
111
|
+
type: "subscribe",
|
|
112
|
+
payload: {
|
|
113
|
+
query: `subscription($address: HexEncoded!) {
|
|
114
|
+
contractActions(address: $address, offset: { height: 0 }) { ${ACTION_FIELDS} }
|
|
115
|
+
}`,
|
|
116
|
+
variables: { address: stripHexPrefix(address) }
|
|
117
|
+
}
|
|
118
|
+
}));
|
|
119
|
+
break;
|
|
120
|
+
case "next": {
|
|
121
|
+
if (message.payload?.errors?.length) {
|
|
122
|
+
fail(/* @__PURE__ */ new Error(`contractActions subscription: ${JSON.stringify(message.payload.errors)}`));
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
const action = message.payload?.data?.contractActions;
|
|
126
|
+
if (!action) break;
|
|
127
|
+
actions.push(toRecord(action));
|
|
128
|
+
if (actions.at(-1)?.txHash === frontier.txHash && !drain) drain = setTimeout(() => {
|
|
129
|
+
finish();
|
|
130
|
+
}, drainMs);
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
case "error":
|
|
134
|
+
fail(/* @__PURE__ */ new Error(`contractActions subscription: ${JSON.stringify(message.payload)}`));
|
|
135
|
+
break;
|
|
136
|
+
case "complete":
|
|
137
|
+
finish();
|
|
138
|
+
break;
|
|
139
|
+
default: break;
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* The indexer keeps, per transaction, the events the ledger emitted while
|
|
146
|
+
* applying it; a shielded output's event carries the commitment and the
|
|
147
|
+
* tree index the ledger assigned, so the index is read, never inferred
|
|
148
|
+
* from the transaction's position window.
|
|
149
|
+
*/
|
|
150
|
+
const queryShieldedOutputs = async (txHash) => {
|
|
151
|
+
const events = ((await postQuery("transactions", `query($offset: TransactionOffset!) { transactions(offset: $offset) { hash ... on RegularTransaction { zswapLedgerEvents { raw } } } }`, { offset: { hash: stripHexPrefix(txHash) } })).data?.transactions ?? []).flatMap((transaction) => transaction.zswapLedgerEvents ?? []);
|
|
152
|
+
if (events.length === 0) return [];
|
|
153
|
+
const { Event } = await import("@midnightntwrk/ledger-v9");
|
|
154
|
+
return events.flatMap(({ raw }) => {
|
|
155
|
+
const { content } = Event.deserialize(eventBytes(stripHexPrefix(raw ?? "")));
|
|
156
|
+
return isShieldedOutputEvent(content) ? [{
|
|
157
|
+
commitment: content.commitment.toLowerCase(),
|
|
158
|
+
...content.contract === void 0 ? {} : { contractAddress: content.contract.toLowerCase() },
|
|
159
|
+
index: content.mtIndex
|
|
160
|
+
}] : [];
|
|
161
|
+
});
|
|
162
|
+
};
|
|
163
|
+
return {
|
|
164
|
+
queryContractState: async (address) => (await provider()).queryContractState(address),
|
|
165
|
+
enumerateContractActions,
|
|
166
|
+
queryShieldedOutputs
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
//#endregion
|
|
170
|
+
//#region ../../packages/module/passport-account/src/flows/account-call.ts
|
|
171
|
+
/** Contract aborts meaning the authorising key was rejected. */
|
|
172
|
+
const NOT_AUTHORISED_ABORTS = ["failed assert: invalid signature", "failed assert: device key"];
|
|
173
|
+
/**
|
|
174
|
+
* Raised by the caller checks in require_authorised and by the target
|
|
175
|
+
* check in _do_remove_device: the same string for two different failures.
|
|
176
|
+
*/
|
|
177
|
+
const UNKNOWN_ENTRY_ABORT = "failed assert: unknown device entry";
|
|
178
|
+
/** Whether a contract abort message says the authorising key was rejected. */
|
|
179
|
+
const isNotAuthorisedAbort = (message) => NOT_AUTHORISED_ABORTS.some((abort) => message.includes(abort));
|
|
180
|
+
/**
|
|
181
|
+
* The decoded ledger state of the account at `address`, which must hold
|
|
182
|
+
* a live contract.
|
|
183
|
+
*
|
|
184
|
+
* @throws {@link AccountContractMissingError} when the indexer serves no
|
|
185
|
+
* contract at the address.
|
|
186
|
+
*/
|
|
187
|
+
const queryAccountLedger = async (indexer, address) => {
|
|
188
|
+
const state = await indexer.queryContractState(address);
|
|
189
|
+
if (!state) throw new AccountContractMissingError(`No live Account Custody Contract found at ${address}.`);
|
|
190
|
+
return ledger(state.data);
|
|
191
|
+
};
|
|
192
|
+
/**
|
|
193
|
+
* Reads the account's ledger state through a fresh indexer client, which
|
|
194
|
+
* is returned with it so a flow can read the state again after a call.
|
|
195
|
+
*/
|
|
196
|
+
const readAccountLedger = async (address, { indexerUrl, indexerWsUrl }) => {
|
|
197
|
+
const indexer = createIndexerClient({
|
|
198
|
+
indexerUrl,
|
|
199
|
+
indexerWsUrl
|
|
200
|
+
});
|
|
201
|
+
return {
|
|
202
|
+
indexer,
|
|
203
|
+
ledgerState: await queryAccountLedger(indexer, address)
|
|
204
|
+
};
|
|
205
|
+
};
|
|
206
|
+
/**
|
|
207
|
+
* Submits one gated call and reports the position it left the local
|
|
208
|
+
* device in. The handle is connected without the account encryption
|
|
209
|
+
* secret: the device and grant lifecycle circuits read no private state,
|
|
210
|
+
* so deriving it here would only widen the window the secret spends in
|
|
211
|
+
* memory. The successor commitment is computed against the epoch read
|
|
212
|
+
* before the call, which is the epoch the accepted call ran under: a
|
|
213
|
+
* gated call never changes device_epoch (it is only written at
|
|
214
|
+
* construction), so the pre-call epoch names the very entry the contract
|
|
215
|
+
* inserted.
|
|
216
|
+
*/
|
|
217
|
+
const submitAccountCall = async ({ circuit, args, account, localUseCounter, ledgerState, onStage }, { passportAuthoriser, passportNetwork, passportProver, passportSponsor }) => {
|
|
218
|
+
const handle = await connectAccountHandle(await createMidnightProviders({
|
|
219
|
+
network: passportNetwork,
|
|
220
|
+
prover: passportProver,
|
|
221
|
+
sponsor: passportSponsor,
|
|
222
|
+
...onStage ? { onStage } : {}
|
|
223
|
+
}), account.address);
|
|
224
|
+
const address = AccAddress(account.address);
|
|
225
|
+
const advancedCounter = await executeGatedCall({
|
|
226
|
+
handle,
|
|
227
|
+
authoriser: passportAuthoriser,
|
|
228
|
+
circuit,
|
|
229
|
+
args,
|
|
230
|
+
address,
|
|
231
|
+
ledgerState,
|
|
232
|
+
knownUseCounter: localUseCounter === void 0 ? void 0 : UseCounter(BigInt(localUseCounter))
|
|
233
|
+
});
|
|
234
|
+
return {
|
|
235
|
+
advancedCounter,
|
|
236
|
+
localCommitmentHex: await passportAuthoriser.deviceCommitment(address, DeviceEpoch(ledgerState.device_epoch), advancedCounter)
|
|
237
|
+
};
|
|
238
|
+
};
|
|
239
|
+
/**
|
|
240
|
+
* The devices list with the local device's row moved to the commitment it
|
|
241
|
+
* holds after an accepted call. An entry is single use: the call consumed
|
|
242
|
+
* the one the row carried and the contract inserted its successor, so
|
|
243
|
+
* leaving the row as it was would name an entry the on-chain set no
|
|
244
|
+
* longer holds. Only existing rows are rewritten, so a removal that
|
|
245
|
+
* dropped the local row does not resurrect it.
|
|
246
|
+
*/
|
|
247
|
+
const withRefreshedLocalDevice = (devices, commitmentHex) => devices.map((device) => device.isLocal ? {
|
|
248
|
+
...device,
|
|
249
|
+
commitmentHex
|
|
250
|
+
} : device);
|
|
251
|
+
//#endregion
|
|
252
|
+
export { submitAccountCall as a, readAccountLedger as i, isNotAuthorisedAbort as n, withRefreshedLocalDevice as o, queryAccountLedger as r, createIndexerClient as s, UNKNOWN_ENTRY_ABORT as t };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const require_Address = require("./Address-AMKTo-dA.cjs");
|
|
2
|
+
const require_outputs = require("./outputs-BEM1GPMf.cjs");
|
|
3
|
+
//#region ../../packages/module/blockchain-cardano/src/store/custody/custody-account-guard.ts
|
|
4
|
+
/**
|
|
5
|
+
* An ordinary builder was asked to spend from a Cardano custody account.
|
|
6
|
+
* Its UTxOs are locked by the custody script, and a key-signed build would
|
|
7
|
+
* be one the chain refuses; only the custody builder spends them.
|
|
8
|
+
*/
|
|
9
|
+
var CardanoCustodyAccountRefusedError = class extends Error {
|
|
10
|
+
code = "custody-account";
|
|
11
|
+
constructor(accountId) {
|
|
12
|
+
super(`Account ${accountId} is a Cardano custody account; build its transactions with the custody builder`);
|
|
13
|
+
this.name = "CardanoCustodyAccountRefusedError";
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const isCustodyAddress = (address) => {
|
|
17
|
+
const parsed = require_Address.Address.fromString(address);
|
|
18
|
+
return !!parsed && require_outputs.classifyCustodyAddress(parsed).kind !== "other";
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Throws when any of the account's Cardano addresses pays a supported
|
|
22
|
+
* custody account validator, with any stake part or none.
|
|
23
|
+
*
|
|
24
|
+
* @throws `CardanoCustodyAccountRefusedError`
|
|
25
|
+
*/
|
|
26
|
+
const refuseCustodyAccount = (accountId, addresses) => {
|
|
27
|
+
if (addresses.some((address) => address.accountId === accountId && address.blockchainName === "Cardano" && isCustodyAddress(address.address))) throw new CardanoCustodyAccountRefusedError(accountId);
|
|
28
|
+
};
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region ../../packages/module/blockchain-cardano/src/store/account-guards.ts
|
|
31
|
+
/** Throws when an ordinary builder may not spend from the account. */
|
|
32
|
+
const refuseExtensionAccount = (accountId, addresses) => {
|
|
33
|
+
refuseCustodyAccount(accountId, addresses);
|
|
34
|
+
};
|
|
35
|
+
//#endregion
|
|
36
|
+
Object.defineProperty(exports, "refuseExtensionAccount", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function() {
|
|
39
|
+
return refuseExtensionAccount;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { t as Address } from "./Address-_c_-9hLC.js";
|
|
2
|
+
import { a as classifyCustodyAddress } from "./outputs-5qdW8s-f.js";
|
|
3
|
+
//#region ../../packages/module/blockchain-cardano/src/store/custody/custody-account-guard.ts
|
|
4
|
+
/**
|
|
5
|
+
* An ordinary builder was asked to spend from a Cardano custody account.
|
|
6
|
+
* Its UTxOs are locked by the custody script, and a key-signed build would
|
|
7
|
+
* be one the chain refuses; only the custody builder spends them.
|
|
8
|
+
*/
|
|
9
|
+
var CardanoCustodyAccountRefusedError = class extends Error {
|
|
10
|
+
code = "custody-account";
|
|
11
|
+
constructor(accountId) {
|
|
12
|
+
super(`Account ${accountId} is a Cardano custody account; build its transactions with the custody builder`);
|
|
13
|
+
this.name = "CardanoCustodyAccountRefusedError";
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const isCustodyAddress = (address) => {
|
|
17
|
+
const parsed = Address.fromString(address);
|
|
18
|
+
return !!parsed && classifyCustodyAddress(parsed).kind !== "other";
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Throws when any of the account's Cardano addresses pays a supported
|
|
22
|
+
* custody account validator, with any stake part or none.
|
|
23
|
+
*
|
|
24
|
+
* @throws `CardanoCustodyAccountRefusedError`
|
|
25
|
+
*/
|
|
26
|
+
const refuseCustodyAccount = (accountId, addresses) => {
|
|
27
|
+
if (addresses.some((address) => address.accountId === accountId && address.blockchainName === "Cardano" && isCustodyAddress(address.address))) throw new CardanoCustodyAccountRefusedError(accountId);
|
|
28
|
+
};
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region ../../packages/module/blockchain-cardano/src/store/account-guards.ts
|
|
31
|
+
/** Throws when an ordinary builder may not spend from the account. */
|
|
32
|
+
const refuseExtensionAccount = (accountId, addresses) => {
|
|
33
|
+
refuseCustodyAccount(accountId, addresses);
|
|
34
|
+
};
|
|
35
|
+
//#endregion
|
|
36
|
+
export { refuseExtensionAccount as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region ../../packages/contract/activities/src/activity-type.
|
|
1
|
+
//#region ../../packages/contract/activities/src/activity-type.ts
|
|
2
2
|
/** What an activity did, such as `Send`, `Receive`, `Rewards` or `Delegation`. */
|
|
3
3
|
let ActivityType = /* @__PURE__ */ function(ActivityType) {
|
|
4
4
|
ActivityType["Send"] = "Send";
|
|
@@ -11,6 +11,7 @@ let ActivityType = /* @__PURE__ */ function(ActivityType) {
|
|
|
11
11
|
ActivityType["Registration"] = "Registration";
|
|
12
12
|
ActivityType["Deregistration"] = "Deregistration";
|
|
13
13
|
ActivityType["Withdrawal"] = "Withdrawal";
|
|
14
|
+
ActivityType["NightDesignation"] = "NightDesignation";
|
|
14
15
|
return ActivityType;
|
|
15
16
|
}({});
|
|
16
17
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region ../../packages/contract/activities/src/activity-type.
|
|
1
|
+
//#region ../../packages/contract/activities/src/activity-type.ts
|
|
2
2
|
/** What an activity did, such as `Send`, `Receive`, `Rewards` or `Delegation`. */
|
|
3
3
|
let ActivityType = /* @__PURE__ */ function(ActivityType) {
|
|
4
4
|
ActivityType["Send"] = "Send";
|
|
@@ -11,6 +11,7 @@ let ActivityType = /* @__PURE__ */ function(ActivityType) {
|
|
|
11
11
|
ActivityType["Registration"] = "Registration";
|
|
12
12
|
ActivityType["Deregistration"] = "Deregistration";
|
|
13
13
|
ActivityType["Withdrawal"] = "Withdrawal";
|
|
14
|
+
ActivityType["NightDesignation"] = "NightDesignation";
|
|
14
15
|
return ActivityType;
|
|
15
16
|
}({});
|
|
16
17
|
//#endregion
|