@crossmint/wallets-sdk 0.20.2 → 0.20.4
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/api/__tests__/constants.cjs +4 -3
- package/dist/api/__tests__/constants.cjs.map +1 -0
- package/dist/api/__tests__/constants.js +3 -2
- package/dist/api/__tests__/constants.js.map +1 -0
- package/dist/api/__tests__/test-utils.cjs +36 -35
- package/dist/api/__tests__/test-utils.cjs.map +1 -0
- package/dist/api/__tests__/test-utils.js +7 -6
- package/dist/api/__tests__/test-utils.js.map +1 -0
- package/dist/api/client.cjs +7 -6
- package/dist/api/client.cjs.map +1 -0
- package/dist/api/client.js +6 -5
- package/dist/api/client.js.map +1 -0
- package/dist/api/gen/client.gen.cjs +4 -3
- package/dist/api/gen/client.gen.cjs.map +1 -0
- package/dist/api/gen/client.gen.js +3 -2
- package/dist/api/gen/client.gen.js.map +1 -0
- package/dist/api/gen/index.cjs +6 -5
- package/dist/api/gen/index.cjs.map +1 -0
- package/dist/api/gen/index.js +5 -4
- package/dist/api/gen/index.js.map +1 -0
- package/dist/api/gen/sdk.gen.cjs +5 -4
- package/dist/api/gen/sdk.gen.cjs.map +1 -0
- package/dist/api/gen/sdk.gen.js +4 -3
- package/dist/api/gen/sdk.gen.js.map +1 -0
- package/dist/api/gen/types.gen.cjs +2 -1
- package/dist/api/gen/types.gen.cjs.map +1 -0
- package/dist/api/gen/types.gen.js +2 -1
- package/dist/api/gen/types.gen.js.map +1 -0
- package/dist/api/index.cjs +9 -8
- package/dist/api/index.cjs.map +1 -0
- package/dist/api/index.js +8 -7
- package/dist/api/index.js.map +1 -0
- package/dist/api/types.cjs +2 -1
- package/dist/api/types.cjs.map +1 -0
- package/dist/api/types.js +2 -1
- package/dist/api/types.js.map +1 -0
- package/dist/chains/chains.cjs +13 -12
- package/dist/chains/chains.cjs.map +1 -0
- package/dist/chains/chains.js +12 -11
- package/dist/chains/chains.js.map +1 -0
- package/dist/chains/definitions/arcTestnet.cjs +4 -3
- package/dist/chains/definitions/arcTestnet.cjs.map +1 -0
- package/dist/chains/definitions/arcTestnet.js +3 -2
- package/dist/chains/definitions/arcTestnet.js.map +1 -0
- package/dist/chains/definitions/story.cjs +4 -3
- package/dist/chains/definitions/story.cjs.map +1 -0
- package/dist/chains/definitions/story.js +3 -2
- package/dist/chains/definitions/story.js.map +1 -0
- package/dist/chains/definitions/storyTestnet.cjs +4 -3
- package/dist/chains/definitions/storyTestnet.cjs.map +1 -0
- package/dist/chains/definitions/storyTestnet.js +3 -2
- package/dist/chains/definitions/storyTestnet.js.map +1 -0
- package/dist/chains/definitions/tempo.cjs +4 -3
- package/dist/chains/definitions/tempo.cjs.map +1 -0
- package/dist/chains/definitions/tempo.js +3 -2
- package/dist/chains/definitions/tempo.js.map +1 -0
- package/dist/chains/definitions/tempoTestnet.cjs +4 -3
- package/dist/chains/definitions/tempoTestnet.cjs.map +1 -0
- package/dist/chains/definitions/tempoTestnet.js +3 -2
- package/dist/chains/definitions/tempoTestnet.js.map +1 -0
- package/dist/{chunk-FICVKSXZ.js → chunk-2QI75IOB.js} +4 -3
- package/dist/chunk-2QI75IOB.js.map +1 -0
- package/dist/{chunk-2T5HHKUI.js → chunk-2RQYQVVY.js} +1 -0
- package/dist/chunk-2RQYQVVY.js.map +1 -0
- package/dist/{chunk-JWMQALLN.js → chunk-33TLFTHT.js} +1 -0
- package/dist/chunk-33TLFTHT.js.map +1 -0
- package/dist/{chunk-SGINWAB6.js → chunk-36C7SCPK.js} +1 -0
- package/dist/chunk-36C7SCPK.js.map +1 -0
- package/dist/{chunk-WJUPOCKJ.js → chunk-3J2BNUTO.js} +1 -0
- package/dist/chunk-3J2BNUTO.js.map +1 -0
- package/dist/{chunk-FOOISYCJ.js → chunk-3PG4HRAS.js} +2 -1
- package/dist/chunk-3PG4HRAS.js.map +1 -0
- package/dist/{chunk-ZP4ZZCIE.js → chunk-4AV3GY27.js} +2 -1
- package/dist/chunk-4AV3GY27.js.map +1 -0
- package/dist/{chunk-47WKYTRN.js → chunk-4BB7YYTT.js} +2 -1
- package/dist/chunk-4BB7YYTT.js.map +1 -0
- package/dist/{chunk-XC2V34TS.cjs → chunk-4GADBBZN.cjs} +1 -0
- package/dist/chunk-4GADBBZN.cjs.map +1 -0
- package/dist/{chunk-PUO4QNXH.js → chunk-4GSHSMCA.js} +4 -3
- package/dist/chunk-4GSHSMCA.js.map +1 -0
- package/dist/{chunk-6UMJYMAY.js → chunk-5NIFUAZH.js} +4 -3
- package/dist/chunk-5NIFUAZH.js.map +1 -0
- package/dist/{chunk-HXJ3YPAN.js → chunk-5OFC4HSW.js} +5 -4
- package/dist/chunk-5OFC4HSW.js.map +1 -0
- package/dist/{chunk-6FG5QXII.cjs → chunk-5QPU62QL.cjs} +16 -15
- package/dist/chunk-5QPU62QL.cjs.map +1 -0
- package/dist/{chunk-4GFSUI2I.cjs → chunk-6CR6FGAO.cjs} +4 -3
- package/dist/chunk-6CR6FGAO.cjs.map +1 -0
- package/dist/{chunk-JSWTGW46.cjs → chunk-6DPHKKVR.cjs} +4 -3
- package/dist/chunk-6DPHKKVR.cjs.map +1 -0
- package/dist/{chunk-MMISP35W.js → chunk-6G4QLBSO.js} +1 -0
- package/dist/chunk-6G4QLBSO.js.map +1 -0
- package/dist/{chunk-ZNAGDENG.cjs → chunk-6PIQDY3F.cjs} +4 -3
- package/dist/chunk-6PIQDY3F.cjs.map +1 -0
- package/dist/{chunk-WWW6IGZ7.js → chunk-6QZLBFZZ.js} +6 -5
- package/dist/chunk-6QZLBFZZ.js.map +1 -0
- package/dist/{chunk-TYQ4YIP7.js → chunk-7PHIXK4Q.js} +2 -1
- package/dist/chunk-7PHIXK4Q.js.map +1 -0
- package/dist/{chunk-RBHGZDDX.cjs → chunk-A3QJT5UU.cjs} +3 -2
- package/dist/chunk-A3QJT5UU.cjs.map +1 -0
- package/dist/{chunk-A6E67ZZP.js → chunk-AMS7MCD6.js} +6 -5
- package/dist/chunk-AMS7MCD6.js.map +1 -0
- package/dist/{chunk-JREZWZ2S.cjs → chunk-BBUEX3DG.cjs} +4 -3
- package/dist/chunk-BBUEX3DG.cjs.map +1 -0
- package/dist/chunk-BD3ZXT5D.js +1 -0
- package/dist/chunk-BD3ZXT5D.js.map +1 -0
- package/dist/{chunk-ZBLW42YE.js → chunk-C6WWOWGR.js} +1 -0
- package/dist/chunk-C6WWOWGR.js.map +1 -0
- package/dist/{chunk-Q5KNPVYI.cjs → chunk-CLVXR2JV.cjs} +7 -6
- package/dist/chunk-CLVXR2JV.cjs.map +1 -0
- package/dist/{chunk-55V4VMTX.cjs → chunk-CYUJJIHO.cjs} +1 -0
- package/dist/chunk-CYUJJIHO.cjs.map +1 -0
- package/dist/{chunk-7GOUUPS4.js → chunk-D2OS4757.js} +2 -1
- package/dist/chunk-D2OS4757.js.map +1 -0
- package/dist/chunk-DA47DMPI.js +1 -0
- package/dist/chunk-DA47DMPI.js.map +1 -0
- package/dist/{chunk-IPO25BCU.js → chunk-DGBAFJTM.js} +2 -1
- package/dist/chunk-DGBAFJTM.js.map +1 -0
- package/dist/{chunk-IDKGJO2G.cjs → chunk-DIJNSNWN.cjs} +18 -17
- package/dist/chunk-DIJNSNWN.cjs.map +1 -0
- package/dist/{chunk-7USEVMTW.cjs → chunk-DN2SNZIX.cjs} +1 -0
- package/dist/chunk-DN2SNZIX.cjs.map +1 -0
- package/dist/{chunk-PIFD6KNH.js → chunk-EKMTR3GD.js} +3 -2
- package/dist/chunk-EKMTR3GD.js.map +1 -0
- package/dist/{chunk-COR3CNRW.cjs → chunk-FLI7NWQN.cjs} +130 -129
- package/dist/chunk-FLI7NWQN.cjs.map +1 -0
- package/dist/{chunk-NIBKCMQ2.cjs → chunk-G43MR76L.cjs} +1 -0
- package/dist/chunk-G43MR76L.cjs.map +1 -0
- package/dist/{chunk-XOCC3MPK.cjs → chunk-GGMUF77N.cjs} +4 -3
- package/dist/chunk-GGMUF77N.cjs.map +1 -0
- package/dist/{chunk-2WBSPOWU.js → chunk-GNU6RIKU.js} +8 -7
- package/dist/chunk-GNU6RIKU.js.map +1 -0
- package/dist/{chunk-WDZY4PP4.cjs → chunk-H6BH7OK4.cjs} +16 -15
- package/dist/chunk-H6BH7OK4.cjs.map +1 -0
- package/dist/{chunk-CMBFV325.js → chunk-HP6T3FTF.js} +5 -4
- package/dist/chunk-HP6T3FTF.js.map +1 -0
- package/dist/{chunk-RHR6P2KP.cjs → chunk-I2O3XXRZ.cjs} +1 -0
- package/dist/chunk-I2O3XXRZ.cjs.map +1 -0
- package/dist/chunk-IE4R2VDM.cjs +1 -0
- package/dist/chunk-IE4R2VDM.cjs.map +1 -0
- package/dist/{chunk-W7K5E64Q.js → chunk-IP6APT2S.js} +5 -4
- package/dist/chunk-IP6APT2S.js.map +1 -0
- package/dist/{chunk-BMMZIPXT.js → chunk-IUSTF2DR.js} +3 -2
- package/dist/chunk-IUSTF2DR.js.map +1 -0
- package/dist/{chunk-R6DH4V7S.cjs → chunk-IYQMWYQI.cjs} +12 -11
- package/dist/chunk-IYQMWYQI.cjs.map +1 -0
- package/dist/{chunk-ZAX22GSI.cjs → chunk-IZYJJUOE.cjs} +37 -36
- package/dist/chunk-IZYJJUOE.cjs.map +1 -0
- package/dist/{chunk-HTSQPZHW.cjs → chunk-J2OH6EMB.cjs} +1 -0
- package/dist/chunk-J2OH6EMB.cjs.map +1 -0
- package/dist/{chunk-FHMKNG62.js → chunk-J6AO2ZDU.js} +8 -6
- package/dist/chunk-J6AO2ZDU.js.map +1 -0
- package/dist/{chunk-ASE2FXWP.js → chunk-JF4JR5QQ.js} +1 -0
- package/dist/chunk-JF4JR5QQ.js.map +1 -0
- package/dist/{chunk-2I2OFGNL.js → chunk-JMRG565N.js} +2 -1
- package/dist/chunk-JMRG565N.js.map +1 -0
- package/dist/{chunk-ABMZ3ZVN.js → chunk-JXXXM7AV.js} +2 -1
- package/dist/chunk-JXXXM7AV.js.map +1 -0
- package/dist/{chunk-ZT7EGOCI.cjs → chunk-KV7KHODO.cjs} +1 -0
- package/dist/chunk-KV7KHODO.cjs.map +1 -0
- package/dist/{chunk-MRZXYVQO.cjs → chunk-KXXRVRR6.cjs} +10 -9
- package/dist/chunk-KXXRVRR6.cjs.map +1 -0
- package/dist/chunk-L33DZOLM.cjs +1 -0
- package/dist/chunk-L33DZOLM.cjs.map +1 -0
- package/dist/chunk-M2OFHRMU.cjs +1 -0
- package/dist/chunk-M2OFHRMU.cjs.map +1 -0
- package/dist/{chunk-ZTEMOYS2.cjs → chunk-NAGMAP3Y.cjs} +4 -3
- package/dist/chunk-NAGMAP3Y.cjs.map +1 -0
- package/dist/{chunk-PK7J3Y3L.js → chunk-NG77OKLY.js} +2 -1
- package/dist/chunk-NG77OKLY.js.map +1 -0
- package/dist/{chunk-R4AW5ADG.cjs → chunk-NQR4AQOW.cjs} +2 -1
- package/dist/chunk-NQR4AQOW.cjs.map +1 -0
- package/dist/chunk-PHGHKSBT.js +1 -0
- package/dist/chunk-PHGHKSBT.js.map +1 -0
- package/dist/{chunk-G6QJHFSY.cjs → chunk-QFE6TYBN.cjs} +1 -0
- package/dist/chunk-QFE6TYBN.cjs.map +1 -0
- package/dist/{chunk-PJOJIRTY.js → chunk-QUIRXKKE.js} +1 -0
- package/dist/chunk-QUIRXKKE.js.map +1 -0
- package/dist/chunk-RB7HTHG4.js +1 -0
- package/dist/chunk-RB7HTHG4.js.map +1 -0
- package/dist/{chunk-IOMKHF6R.cjs → chunk-RJ3VNO74.cjs} +4 -3
- package/dist/chunk-RJ3VNO74.cjs.map +1 -0
- package/dist/chunk-RLWGW5R2.js +1 -0
- package/dist/chunk-RLWGW5R2.js.map +1 -0
- package/dist/{chunk-WHTECI7J.cjs → chunk-RPLIXWF3.cjs} +11 -10
- package/dist/chunk-RPLIXWF3.cjs.map +1 -0
- package/dist/{chunk-T2XUADHW.js → chunk-RUUBB4EB.js} +10 -9
- package/dist/chunk-RUUBB4EB.js.map +1 -0
- package/dist/{chunk-POG76HDD.cjs → chunk-TONAC74L.cjs} +121 -119
- package/dist/chunk-TONAC74L.cjs.map +1 -0
- package/dist/{chunk-F7L2TZ3I.cjs → chunk-TXLF6BM6.cjs} +1 -0
- package/dist/chunk-TXLF6BM6.cjs.map +1 -0
- package/dist/{chunk-U3NV7UY7.js → chunk-UAFXNE4C.js} +5 -4
- package/dist/chunk-UAFXNE4C.js.map +1 -0
- package/dist/chunk-UBZ7RWBZ.cjs +1 -0
- package/dist/chunk-UBZ7RWBZ.cjs.map +1 -0
- package/dist/chunk-UDLDOYUB.cjs +1 -0
- package/dist/chunk-UDLDOYUB.cjs.map +1 -0
- package/dist/chunk-V5HHKVTT.cjs +59 -0
- package/dist/chunk-V5HHKVTT.cjs.map +1 -0
- package/dist/{chunk-KQH5ZXJ4.js → chunk-VIL33DEX.js} +8 -7
- package/dist/chunk-VIL33DEX.js.map +1 -0
- package/dist/{chunk-UO2J2ZB2.cjs → chunk-W4VYO3P6.cjs} +1 -0
- package/dist/chunk-W4VYO3P6.cjs.map +1 -0
- package/dist/{chunk-7TT3VUDF.cjs → chunk-W5LNQWQD.cjs} +10 -9
- package/dist/chunk-W5LNQWQD.cjs.map +1 -0
- package/dist/{chunk-PM7BGATN.cjs → chunk-XOVH2G3J.cjs} +38 -37
- package/dist/chunk-XOVH2G3J.cjs.map +1 -0
- package/dist/{chunk-RYQI3RXL.cjs → chunk-XWXIO5PH.cjs} +32 -31
- package/dist/chunk-XWXIO5PH.cjs.map +1 -0
- package/dist/{chunk-66UY53KP.cjs → chunk-Y3CJJ3GO.cjs} +55 -54
- package/dist/chunk-Y3CJJ3GO.cjs.map +1 -0
- package/dist/{chunk-3U6UAYOV.js → chunk-Y5AADOPZ.js} +1 -0
- package/dist/chunk-Y5AADOPZ.js.map +1 -0
- package/dist/{chunk-KT3CVXFG.js → chunk-ZEH4W3O4.js} +1 -0
- package/dist/chunk-ZEH4W3O4.js.map +1 -0
- package/dist/index.cjs +37 -36
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +36 -35
- package/dist/index.js.map +1 -0
- package/dist/logger/index.cjs +6 -5
- package/dist/logger/index.cjs.map +1 -0
- package/dist/logger/index.js +5 -4
- package/dist/logger/index.js.map +1 -0
- package/dist/logger/init.cjs +5 -4
- package/dist/logger/init.cjs.map +1 -0
- package/dist/logger/init.js +4 -3
- package/dist/logger/init.js.map +1 -0
- package/dist/sdk.cjs +34 -33
- package/dist/sdk.cjs.map +1 -0
- package/dist/sdk.js +33 -32
- package/dist/sdk.js.map +1 -0
- package/dist/signers/evm-api-key.cjs +4 -3
- package/dist/signers/evm-api-key.cjs.map +1 -0
- package/dist/signers/evm-api-key.js +3 -2
- package/dist/signers/evm-api-key.js.map +1 -0
- package/dist/signers/evm-external-wallet.cjs +4 -3
- package/dist/signers/evm-external-wallet.cjs.map +1 -0
- package/dist/signers/evm-external-wallet.js +3 -2
- package/dist/signers/evm-external-wallet.js.map +1 -0
- package/dist/signers/index.cjs +21 -20
- package/dist/signers/index.cjs.map +1 -0
- package/dist/signers/index.js +20 -19
- package/dist/signers/index.js.map +1 -0
- package/dist/signers/non-custodial/index.cjs +13 -12
- package/dist/signers/non-custodial/index.cjs.map +1 -0
- package/dist/signers/non-custodial/index.js +12 -11
- package/dist/signers/non-custodial/index.js.map +1 -0
- package/dist/signers/non-custodial/ncs-evm-signer.cjs +10 -9
- package/dist/signers/non-custodial/ncs-evm-signer.cjs.map +1 -0
- package/dist/signers/non-custodial/ncs-evm-signer.js +9 -8
- package/dist/signers/non-custodial/ncs-evm-signer.js.map +1 -0
- package/dist/signers/non-custodial/ncs-iframe-manager.cjs +4 -3
- package/dist/signers/non-custodial/ncs-iframe-manager.cjs.map +1 -0
- package/dist/signers/non-custodial/ncs-iframe-manager.js +3 -2
- package/dist/signers/non-custodial/ncs-iframe-manager.js.map +1 -0
- package/dist/signers/non-custodial/ncs-signer.cjs +9 -8
- package/dist/signers/non-custodial/ncs-signer.cjs.map +1 -0
- package/dist/signers/non-custodial/ncs-signer.js +8 -7
- package/dist/signers/non-custodial/ncs-signer.js.map +1 -0
- package/dist/signers/non-custodial/ncs-solana-signer.cjs +10 -9
- package/dist/signers/non-custodial/ncs-solana-signer.cjs.map +1 -0
- package/dist/signers/non-custodial/ncs-solana-signer.js +9 -8
- package/dist/signers/non-custodial/ncs-solana-signer.js.map +1 -0
- package/dist/signers/non-custodial/ncs-stellar-signer.cjs +10 -9
- package/dist/signers/non-custodial/ncs-stellar-signer.cjs.map +1 -0
- package/dist/signers/non-custodial/ncs-stellar-signer.js +9 -8
- package/dist/signers/non-custodial/ncs-stellar-signer.js.map +1 -0
- package/dist/signers/passkey.cjs +4 -3
- package/dist/signers/passkey.cjs.map +1 -0
- package/dist/signers/passkey.js +3 -2
- package/dist/signers/passkey.js.map +1 -0
- package/dist/signers/solana-api-key.cjs +4 -3
- package/dist/signers/solana-api-key.cjs.map +1 -0
- package/dist/signers/solana-api-key.js +3 -2
- package/dist/signers/solana-api-key.js.map +1 -0
- package/dist/signers/solana-external-wallet.cjs +5 -4
- package/dist/signers/solana-external-wallet.cjs.map +1 -0
- package/dist/signers/solana-external-wallet.js +4 -3
- package/dist/signers/solana-external-wallet.js.map +1 -0
- package/dist/signers/stellar-external-wallet.cjs +4 -3
- package/dist/signers/stellar-external-wallet.cjs.map +1 -0
- package/dist/signers/stellar-external-wallet.js +3 -2
- package/dist/signers/stellar-external-wallet.js.map +1 -0
- package/dist/signers/types.cjs +4 -3
- package/dist/signers/types.cjs.map +1 -0
- package/dist/signers/types.js +3 -2
- package/dist/signers/types.js.map +1 -0
- package/dist/utils/constants.cjs +4 -3
- package/dist/utils/constants.cjs.map +1 -0
- package/dist/utils/constants.js +3 -2
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/errors.cjs +4 -3
- package/dist/utils/errors.cjs.map +1 -0
- package/dist/utils/errors.js +3 -2
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/signer-validation.cjs +5 -4
- package/dist/utils/signer-validation.cjs.map +1 -0
- package/dist/utils/signer-validation.js +4 -3
- package/dist/utils/signer-validation.js.map +1 -0
- package/dist/wallets/__tests__/setup.cjs +4 -3
- package/dist/wallets/__tests__/setup.cjs.map +1 -0
- package/dist/wallets/__tests__/setup.js +2 -1
- package/dist/wallets/__tests__/setup.js.map +1 -0
- package/dist/wallets/__tests__/test-helpers.cjs +22 -21
- package/dist/wallets/__tests__/test-helpers.cjs.map +1 -0
- package/dist/wallets/__tests__/test-helpers.js +20 -19
- package/dist/wallets/__tests__/test-helpers.js.map +1 -0
- package/dist/wallets/evm.cjs +22 -21
- package/dist/wallets/evm.cjs.map +1 -0
- package/dist/wallets/evm.js +21 -20
- package/dist/wallets/evm.js.map +1 -0
- package/dist/wallets/solana.cjs +23 -22
- package/dist/wallets/solana.cjs.map +1 -0
- package/dist/wallets/solana.js +22 -21
- package/dist/wallets/solana.js.map +1 -0
- package/dist/wallets/stellar.cjs +22 -21
- package/dist/wallets/stellar.cjs.map +1 -0
- package/dist/wallets/stellar.js +21 -20
- package/dist/wallets/stellar.js.map +1 -0
- package/dist/wallets/types.cjs +1 -1
- package/dist/wallets/types.cjs.map +1 -0
- package/dist/wallets/types.js +1 -0
- package/dist/wallets/types.js.map +1 -0
- package/dist/wallets/wallet-factory.cjs +30 -29
- package/dist/wallets/wallet-factory.cjs.map +1 -0
- package/dist/wallets/wallet-factory.js +29 -28
- package/dist/wallets/wallet-factory.js.map +1 -0
- package/dist/wallets/wallet.cjs +21 -20
- package/dist/wallets/wallet.cjs.map +1 -0
- package/dist/wallets/wallet.js +20 -19
- package/dist/wallets/wallet.js.map +1 -0
- package/package.json +47 -50
- package/dist/chunk-455NK5LB.js +0 -0
- package/dist/chunk-47R3UV3J.cjs +0 -58
- package/dist/chunk-5IFDVB4Y.js +0 -0
- package/dist/chunk-6HXIZLEQ.cjs +0 -1
- package/dist/chunk-CCIGWTAO.cjs +0 -1
- package/dist/chunk-ECAM5KTH.cjs +0 -1
- package/dist/chunk-KBJA7JDT.js +0 -0
- package/dist/chunk-PO6S7UR3.cjs +0 -1
- package/dist/chunk-XPMCPXI3.cjs +0 -1
- package/dist/chunk-YDZRBHS3.js +0 -0
- package/dist/chunk-YMRXMNME.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/wallets/wallet.ts"],"names":["approvals","signature"],"mappings":"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","sourcesContent":["import { isValidAddress, WithLoggerContext } from \"@crossmint/common-sdk-base\";\nimport type {\n Activity,\n ApiClient,\n GetSignatureResponse,\n GetBalanceSuccessResponse,\n WalletLocator,\n RegisterSignerPasskeyParams,\n GetTransactionSuccessResponse,\n GetTransactionsResponse,\n FundWalletResponse,\n} from \"../api\";\nimport type {\n AddDelegatedSignerOptions,\n AddDelegatedSignerReturnType,\n DelegatedSigner,\n WalletOptions,\n UserLocator,\n Transaction,\n Balances,\n TokenBalance,\n ApproveParams,\n ApproveOptions,\n Approval,\n Signature,\n ApproveResult,\n PrepareOnly,\n SendTokenTransactionOptions,\n} from \"./types\";\nimport {\n InvalidSignerError,\n SignatureFailedError,\n SignatureNotAvailableError,\n SigningFailedError,\n TransactionAwaitingApprovalError,\n TransactionConfirmationTimeoutError,\n TransactionFailedError,\n TransactionHashNotFoundError,\n TransactionNotAvailableError,\n TransactionNotCreatedError,\n TransactionSendingFailedError,\n WalletNotAvailableError,\n WalletTypeNotSupportedError,\n} from \"../utils/errors\";\nimport { STATUS_POLLING_INTERVAL_MS } from \"../utils/constants\";\nimport { type Chain, validateChainForEnvironment } from \"../chains/chains\";\nimport type { Signer } from \"../signers/types\";\nimport { NonCustodialSigner } from \"../signers/non-custodial\";\nimport { walletsLogger } from \"../logger\";\n\ntype WalletContructorType<C extends Chain> = {\n chain: C;\n address: string;\n owner?: string;\n alias?: string;\n signer: Signer;\n options?: WalletOptions;\n};\n\nexport class Wallet<C extends Chain> {\n chain: C;\n address: string;\n owner?: string;\n alias?: string;\n signer: Signer;\n #options?: WalletOptions;\n #apiClient: ApiClient;\n\n constructor(args: WalletContructorType<C>, apiClient: ApiClient) {\n const { chain, address, owner, signer, options, alias } = args;\n this.#apiClient = apiClient;\n this.chain = chain;\n this.address = address;\n this.owner = owner;\n this.signer = signer;\n this.#options = options;\n this.alias = alias;\n }\n\n protected static getApiClient<C extends Chain>(wallet: Wallet<C>): ApiClient {\n return wallet.apiClient;\n }\n\n protected static getOptions<C extends Chain>(wallet: Wallet<C>): WalletOptions | undefined {\n return wallet.options;\n }\n\n protected get apiClient(): ApiClient {\n return this.#apiClient;\n }\n\n protected get options(): WalletOptions | undefined {\n return this.#options;\n }\n\n /**\n * Get the API client\n * @returns The API client\n * @experimental This API is experimental and may change in the future\n */\n public experimental_apiClient(): ApiClient {\n return this.#apiClient;\n }\n\n /**\n * Get the wallet balances - always includes USDC and native token (ETH/SOL)\n * @param {string[]} tokens - Additional tokens to request (optional: native token and usdc are always included)\n * @returns {Promise<Balances<C>>} The balances returns nativeToken, usdc, tokens\n * @throws {Error} If the balances cannot be retrieved\n */\n @WithLoggerContext({\n logger: walletsLogger,\n methodName: \"wallet.balances\",\n buildContext(thisArg: Wallet<Chain>) {\n return { chain: thisArg.chain, address: thisArg.address };\n },\n })\n public async balances(tokens?: string[]): Promise<Balances<C>> {\n walletsLogger.info(\"wallet.balances.start\");\n\n const resolvedChain = this.resolveChainForEnvironment();\n\n let nativeToken: string;\n switch (this.chain) {\n case \"solana\":\n nativeToken = \"sol\";\n break;\n case \"stellar\":\n nativeToken = \"xlm\";\n break;\n default:\n nativeToken = \"eth\";\n break;\n }\n const allTokens = [nativeToken, \"usdc\", ...(tokens ?? [])];\n\n const response = await this.#apiClient.getBalance(this.address, {\n chains: [resolvedChain],\n tokens: allTokens,\n });\n\n if (\"error\" in response) {\n walletsLogger.error(\"wallet.balances.error\", { error: response });\n throw new Error(`Failed to get balances for wallet: ${JSON.stringify(response.message)}`);\n }\n\n walletsLogger.info(\"wallet.balances.success\");\n return this.transformBalanceResponse(response, nativeToken, tokens);\n }\n\n /**\n * Funds the wallet with Crossmint's stablecoin (USDXM).\n *\n * **Note:** This method is only available in staging environments and exclusively supports USDXM tokens.\n * It cannot be used in production environments.\n * @param amount - The amount of USDXM to fund the wallet with\n * @param chain - Optional chain to fund on. If not provided, uses the wallet's default chain\n * @returns The funding response\n * @throws {Error} If the funding operation fails or if called in a production environment\n */\n @WithLoggerContext({\n logger: walletsLogger,\n methodName: \"wallet.stagingFund\",\n buildContext(thisArg: Wallet<Chain>) {\n return { chain: thisArg.chain, address: thisArg.address };\n },\n })\n public async stagingFund(amount: number, chain?: Chain): Promise<FundWalletResponse> {\n walletsLogger.info(\"wallet.stagingFund.start\", {\n amount,\n chain: chain ?? this.chain,\n });\n\n const response = await this.apiClient.fundWallet(this.address, {\n amount,\n token: \"usdxm\",\n // Type casting is necessary here due to a type mismatch between our DTO schema and server-side types\n // (which only contains 10 testnet chains. Variable in main server is called EvmUsdcEnabledTestnetChains for reference).\n chain: chain ?? (this.chain as any),\n });\n if (\"error\" in response) {\n walletsLogger.error(\"wallet.stagingFund.error\", {\n error: response,\n });\n throw new Error(`Failed to fund wallet: ${JSON.stringify(response.message)}`);\n }\n walletsLogger.info(\"wallet.stagingFund.success\");\n return response;\n }\n\n /**\n * Transform the API balance response to the new structure\n * @private\n */\n private transformBalanceResponse(\n apiResponse: GetBalanceSuccessResponse,\n nativeTokenSymbol: TokenBalance[\"symbol\"],\n requestedTokens?: string[]\n ): Balances<C> {\n const transformTokenBalance = (tokenData: GetBalanceSuccessResponse[number]): TokenBalance<C> => {\n const chainData = tokenData.chains?.[this.chain];\n\n let chainSpecificField = {};\n if (this.chain === \"solana\" && chainData != null && \"mintHash\" in chainData) {\n chainSpecificField = { mintHash: chainData.mintHash };\n } else if (this.chain === \"stellar\" && chainData != null && \"contractId\" in chainData) {\n chainSpecificField = { contractId: chainData.contractId };\n } else if (chainData != null && \"contractAddress\" in chainData) {\n chainSpecificField = {\n contractAddress: chainData.contractAddress,\n };\n }\n\n return {\n symbol: tokenData.symbol ?? \"\",\n name: tokenData.name ?? \"\",\n amount: tokenData.amount ?? \"0\",\n decimals: tokenData.decimals,\n rawAmount: tokenData.rawAmount ?? \"0\",\n ...chainSpecificField,\n } as TokenBalance<C>;\n };\n\n const nativeTokenData = apiResponse.find((token) => token.symbol === nativeTokenSymbol);\n const usdcData = apiResponse.find((token) => token.symbol === \"usdc\");\n\n const otherTokens = apiResponse.filter((token) => {\n return token.symbol !== nativeTokenSymbol && token.symbol !== \"usdc\";\n });\n\n const createDefaultToken = (symbol: TokenBalance[\"symbol\"]): TokenBalance<C> => {\n const baseToken = {\n symbol,\n name: symbol,\n amount: \"0\",\n decimals: 0,\n rawAmount: \"0\",\n };\n\n let chainSpecificField = {};\n if (this.chain === \"solana\") {\n chainSpecificField = { mintHash: undefined };\n } else if (this.chain === \"stellar\") {\n chainSpecificField = { contractId: undefined };\n } else {\n chainSpecificField = { contractAddress: undefined };\n }\n\n return {\n ...baseToken,\n ...chainSpecificField,\n } as TokenBalance<C>;\n };\n\n return {\n nativeToken:\n nativeTokenData != null\n ? transformTokenBalance(nativeTokenData)\n : createDefaultToken(nativeTokenSymbol),\n usdc: usdcData != null ? transformTokenBalance(usdcData) : createDefaultToken(\"usdc\"),\n tokens: otherTokens.map(transformTokenBalance),\n };\n }\n\n /**\n * Get the wallet NFTs\n * @param {Object} params - The parameters\n * @param {number} params.perPage - The number of NFTs per page\n * @param {number} params.page - The page number\n * @param {WalletLocator} [params.locator] - The locator\n * @returns The NFTs\n * @experimental This API is experimental and may change in the future\n */\n public async experimental_nfts(params: { perPage: number; page: number }) {\n return await this.#apiClient.experimental_getNfts({\n ...params,\n chain: this.chain,\n address: this.address,\n });\n }\n\n /**\n * Get the wallet transactions\n * @returns The transactions\n * @throws {Error} If the transactions cannot be retrieved\n */\n public async experimental_transactions(): Promise<GetTransactionsResponse> {\n const response = await this.#apiClient.getTransactions(this.walletLocator);\n if (\"error\" in response) {\n throw new Error(`Failed to get transactions: ${JSON.stringify(response.message)}`);\n }\n return response;\n }\n\n /**\n * Get a transaction by id\n * @returns The transaction\n * @throws {Error} If the transaction cannot be retrieved\n */\n public async experimental_transaction(transactionId: string): Promise<GetTransactionSuccessResponse> {\n const response = await this.#apiClient.getTransaction(this.walletLocator, transactionId);\n if (\"error\" in response) {\n throw new Error(`Failed to get transaction: ${JSON.stringify(response.error)}`);\n }\n return response;\n }\n\n /**\n * Get the wallet activity\n * @returns The activity\n * @experimental This API is experimental and may change in the future\n * @throws {Error} If the activity cannot be retrieved\n */\n public async experimental_activity(): Promise<Activity> {\n const resolvedChain = this.resolveChainForEnvironment();\n const response = await this.apiClient.experimental_activity(this.walletLocator, { chain: resolvedChain });\n if (\"error\" in response) {\n throw new Error(`Failed to get activity: ${JSON.stringify(response.message)}`);\n }\n return response;\n }\n\n /**\n * Send a token to a wallet or user locator\n * @param {string | UserLocator} to - The recipient (address or user locator)\n * @param {string} token - The token (address or currency symbol)\n * @param {string} amount - The amount to send (decimal units)\n * @param {TransactionInputOptions} options - The options for the transaction\n * @returns {Transaction} The transaction\n */\n @WithLoggerContext({\n logger: walletsLogger,\n methodName: \"wallet.send\",\n buildContext(thisArg: Wallet<Chain>) {\n return { chain: thisArg.chain, address: thisArg.address };\n },\n })\n public async send<T extends SendTokenTransactionOptions | undefined = undefined>(\n to: string | UserLocator,\n token: string,\n amount: string,\n options?: T\n ): Promise<Transaction<T extends PrepareOnly<true> ? true : false>> {\n const resolvedChain = this.resolveChainForEnvironment();\n const recipient = toRecipientLocator(to);\n const tokenLocator = toTokenLocator(token, resolvedChain);\n\n walletsLogger.info(\"wallet.send.start\", {\n recipient,\n token: tokenLocator,\n amount,\n ...(options?.transactionType != null ? { transactionType: options.transactionType } : {}),\n });\n\n await this.preAuthIfNeeded();\n const sendParams = {\n recipient,\n amount,\n ...(options?.experimental_signer != null ? { signer: options.experimental_signer } : {}),\n ...(options?.transactionType != null ? { transactionType: options.transactionType } : {}),\n };\n const transactionCreationResponse = await this.#apiClient.send(this.walletLocator, tokenLocator, sendParams);\n\n if (\"message\" in transactionCreationResponse) {\n walletsLogger.error(\"wallet.send.error\", {\n error: transactionCreationResponse,\n });\n throw new TransactionNotCreatedError(\n `Failed to send token: ${JSON.stringify(transactionCreationResponse.message)}`\n );\n }\n\n if (options?.experimental_prepareOnly) {\n walletsLogger.info(\"wallet.send.prepared\", {\n transactionId: transactionCreationResponse.id,\n });\n return {\n hash: undefined,\n explorerLink: undefined,\n transactionId: transactionCreationResponse.id,\n } as Transaction<T extends PrepareOnly<true> ? true : false>;\n }\n\n const result = await this.approveTransactionAndWait(transactionCreationResponse.id);\n walletsLogger.info(\"wallet.send.success\", {\n transactionId: transactionCreationResponse.id,\n hash: result.hash,\n });\n return result;\n }\n\n /**\n * @deprecated Use `approve` instead.\n * Approve a transaction\n * @param params - The parameters\n * @param params.transactionId - The transaction id\n * @param params.options - The options for the transaction\n * @param params.options.experimental_approval - The approval\n * @param params.options.additionalSigners - The additional signers\n * @returns The transaction\n */\n // TODO: Remove this method in the next major version\n public async approveTransaction(params: ApproveParams) {\n console.warn(\n \"approveTransaction is deprecated. Use approve instead. This method will be removed in the next major version.\"\n );\n return await this.approve(params);\n }\n\n /**\n * Approve a transaction or signature\n * @param params - The parameters\n * @param params.transactionId - The transaction id or\n * @param params.signatureId - The signature id\n * @param params.options - The options for the transaction\n * @param params.options.experimental_approval - The approval\n * @param params.options.additionalSigners - The additional signers\n * @returns The transaction or signature\n */\n @WithLoggerContext({\n logger: walletsLogger,\n methodName: \"wallet.approve\",\n buildContext(thisArg: Wallet<Chain>) {\n return { chain: thisArg.chain, address: thisArg.address };\n },\n })\n public async approve<T extends ApproveParams>(params: T): Promise<ApproveResult<T>> {\n walletsLogger.info(\"wallet.approve.start\", {\n transactionId: params.transactionId,\n signatureId: params.signatureId,\n });\n\n await this.preAuthIfNeeded();\n\n if (params.transactionId != null) {\n const result = (await this.approveTransactionAndWait(\n params.transactionId,\n params.options\n )) as ApproveResult<T>;\n walletsLogger.info(\"wallet.approve.success\", {\n transactionId: params.transactionId,\n });\n return result;\n }\n if (params.signatureId != null) {\n const result = (await this.approveSignatureAndWait(params.signatureId, params.options)) as ApproveResult<T>;\n walletsLogger.info(\"wallet.approve.success\", {\n signatureId: params.signatureId,\n });\n return result;\n }\n walletsLogger.error(\"wallet.approve.error\", {\n error: \"Either transactionId or signatureId must be provided\",\n });\n throw new Error(\"Either transactionId or signatureId must be provided\");\n }\n\n /**\n * Add a delegated signer to the wallet\n * @param signer - The signer. For Solana, it must be a string. For EVM, it can be a string or a passkey.\n * @param options - The options for the operation\n * @param options.experimental_prepareOnly - If true, returns the transaction/signature ID without auto-approving\n */\n @WithLoggerContext({\n logger: walletsLogger,\n methodName: \"wallet.addDelegatedSigner\",\n buildContext(thisArg: Wallet<Chain>) {\n return { chain: thisArg.chain, address: thisArg.address };\n },\n })\n public async addDelegatedSigner<T extends AddDelegatedSignerOptions | undefined = undefined>(params: {\n signer: string | RegisterSignerPasskeyParams;\n options?: T;\n }): Promise<T extends PrepareOnly<true> ? AddDelegatedSignerReturnType<C> : void> {\n walletsLogger.info(\"wallet.addDelegatedSigner.start\");\n\n const response = await this.#apiClient.registerSigner(this.walletLocator, {\n signer: params.signer,\n chain: this.chain === \"solana\" || this.chain === \"stellar\" ? undefined : this.chain,\n });\n\n if (\"error\" in response) {\n walletsLogger.error(\"wallet.addDelegatedSigner.error\", {\n error: response,\n });\n throw new Error(`Failed to register signer: ${JSON.stringify(response.message)}`);\n }\n\n if (this.chain === \"solana\" || this.chain === \"stellar\") {\n if (!(\"transaction\" in response) || response.transaction == null) {\n walletsLogger.error(\"wallet.addDelegatedSigner.error\", {\n error: \"Expected transaction in response for Solana/Stellar chain\",\n });\n throw new Error(\"Expected transaction in response for Solana/Stellar chain\");\n }\n\n const transactionId = response.transaction.id;\n\n if (params.options?.experimental_prepareOnly) {\n walletsLogger.info(\"wallet.addDelegatedSigner.prepared\", {\n transactionId,\n });\n return { transactionId } as any;\n }\n\n await this.approveTransactionAndWait(transactionId);\n walletsLogger.info(\"wallet.addDelegatedSigner.success\", {\n transactionId,\n });\n return undefined as any;\n }\n\n if (!(\"chains\" in response)) {\n walletsLogger.error(\"wallet.addDelegatedSigner.error\", {\n error: \"Expected chains in response for EVM chain\",\n });\n throw new Error(\"Expected chains in response for EVM chain\");\n }\n\n const chainResponse = response.chains?.[this.chain];\n\n if (params.options?.experimental_prepareOnly) {\n const signatureId = chainResponse?.status !== \"success\" ? chainResponse?.id : undefined;\n walletsLogger.info(\"wallet.addDelegatedSigner.prepared\", {\n signatureId,\n });\n return { signatureId } as any;\n }\n\n if (chainResponse?.status === \"awaiting-approval\") {\n await this.approveSignatureAndWait(chainResponse.id);\n walletsLogger.info(\"wallet.addDelegatedSigner.success\", {\n signatureId: chainResponse.id,\n });\n return undefined as any;\n }\n if (chainResponse?.status === \"pending\") {\n await this.waitForSignature(chainResponse.id);\n walletsLogger.info(\"wallet.addDelegatedSigner.success\", {\n signatureId: chainResponse.id,\n });\n return undefined as any;\n }\n\n walletsLogger.info(\"wallet.addDelegatedSigner.success\");\n return undefined as any;\n }\n\n /**\n * List the delegated signers for this wallet.\n * @returns {Promise<DelegatedSigner[]>} The delegated signers\n */\n @WithLoggerContext({\n logger: walletsLogger,\n methodName: \"wallet.delegatedSigners\",\n buildContext(thisArg: Wallet<Chain>) {\n return { chain: thisArg.chain, address: thisArg.address };\n },\n })\n public async delegatedSigners(): Promise<DelegatedSigner[]> {\n walletsLogger.info(\"wallet.delegatedSigners.start\");\n\n const walletResponse = await this.#apiClient.getWallet(this.walletLocator);\n if (\"error\" in walletResponse) {\n walletsLogger.error(\"wallet.delegatedSigners.error\", {\n error: walletResponse,\n });\n throw new WalletNotAvailableError(JSON.stringify(walletResponse));\n }\n\n if (\n walletResponse.type !== \"smart\" ||\n (walletResponse.chainType !== \"evm\" &&\n walletResponse.chainType !== \"solana\" &&\n walletResponse.chainType !== \"stellar\")\n ) {\n walletsLogger.error(\"wallet.delegatedSigners.error\", {\n error: `Wallet type ${walletResponse.type} not supported`,\n });\n throw new WalletTypeNotSupportedError(`Wallet type ${walletResponse.type} not supported`);\n }\n\n // Map wallet-type to simply wallet\n const signers =\n walletResponse?.config?.delegatedSigners?.map((signer) => {\n const colonIndex = signer.locator.indexOf(\":\");\n // If there's a colon, keep everything after it; otherwise treat the whole string as \"rest\"\n const address = colonIndex >= 0 ? signer.locator.slice(colonIndex + 1) : signer.locator;\n return {\n signer: `external-wallet:${address}`,\n };\n }) ?? [];\n\n walletsLogger.info(\"wallet.delegatedSigners.success\", {\n count: signers.length,\n });\n return signers;\n }\n\n protected get walletLocator(): WalletLocator {\n if (this.#apiClient.isServerSide) {\n return this.address;\n } else {\n let baseLocator: string;\n switch (this.chain) {\n case \"stellar\":\n baseLocator = `me:stellar:smart`;\n break;\n case \"solana\":\n baseLocator = `me:solana:smart`;\n break;\n default:\n baseLocator = `me:evm:smart`;\n break;\n }\n const aliasLocatorPart = this.alias != null ? `:alias:${this.alias}` : \"\";\n return baseLocator + aliasLocatorPart;\n }\n }\n\n protected async preAuthIfNeeded(): Promise<void> {\n if (this.signer instanceof NonCustodialSigner) {\n await this.signer.ensureAuthenticated();\n }\n }\n\n protected get isSolanaWallet(): boolean {\n return this.chain === \"solana\";\n }\n\n protected resolveChainForEnvironment(): C {\n const resolvedChain = validateChainForEnvironment(this.chain, this.#apiClient.environment);\n\n if (resolvedChain !== this.chain) {\n this.chain = resolvedChain as C;\n }\n\n return this.chain;\n }\n\n protected async approveTransactionAndWait(transactionId: string, options?: ApproveOptions) {\n await this.approveTransactionInternal(transactionId, options);\n await this.sleep(1_000); // Rule of thumb: tx won't be confirmed in less than 1 second\n return await this.waitForTransaction(transactionId);\n }\n\n protected async approveSignatureAndWait(signatureId: string, options?: ApproveOptions) {\n const signatureResponse = await this.approveSignatureInternal(signatureId, options);\n\n if (\n !(\"error\" in signatureResponse) &&\n signatureResponse.status === \"success\" &&\n signatureResponse.outputSignature != null\n ) {\n return {\n signature: signatureResponse.outputSignature,\n signatureId,\n };\n }\n\n await this.sleep(1_000);\n return await this.waitForSignature(signatureId);\n }\n\n protected async approveSignatureInternal(signatureId: string, options?: ApproveOptions) {\n if (this.isSolanaWallet) {\n throw new Error(\"Approving signatures is only supported for EVM smart wallets\");\n }\n\n const signature = await this.#apiClient.getSignature(this.walletLocator, signatureId);\n\n if (\"error\" in signature) {\n throw new SignatureNotAvailableError(JSON.stringify(signature));\n }\n\n // API key signers approve automatically\n if (this.signer.type === \"api-key\") {\n return signature;\n }\n\n // If an external signature is provided, use it to approve the transaction\n if (options?.experimental_approval != null) {\n const approvals = [options.experimental_approval];\n\n return await this.executeApproveSignatureWithErrorHandling(signatureId, approvals);\n }\n\n const pendingApprovals = signature.approvals?.pending;\n\n if (pendingApprovals == null) {\n return signature;\n }\n\n const signers = [...(options?.additionalSigners ?? []), this.signer];\n\n const approvals = await Promise.all(\n pendingApprovals.map(async (pendingApproval) => {\n const signer = signers.find((s) => s.locator() === pendingApproval.signer.locator);\n if (signer == null) {\n throw new InvalidSignerError(`Signer ${pendingApproval.signer} not found in pending approvals`);\n }\n\n const signature = await signer.signMessage(pendingApproval.message);\n return {\n ...signature,\n signer: signer.locator(),\n };\n })\n );\n\n return await this.executeApproveSignatureWithErrorHandling(signatureId, approvals);\n }\n\n protected async approveTransactionInternal(transactionId: string, options?: ApproveOptions) {\n const transaction = await this.#apiClient.getTransaction(this.walletLocator, transactionId);\n\n if (\"error\" in transaction) {\n throw new TransactionNotAvailableError(JSON.stringify(transaction));\n }\n\n await this.#options?.experimental_callbacks?.onTransactionStart?.();\n\n // API key signers approve automatically\n if (this.signer.type === \"api-key\") {\n return transaction;\n }\n\n // If an external signature is provided, use it to approve the transaction\n if (options?.experimental_approval != null) {\n const approvals = [options.experimental_approval];\n\n return await this.executeApproveTransactionWithErrorHandling(transactionId, approvals);\n }\n\n const pendingApprovals = transaction.approvals?.pending;\n\n if (pendingApprovals == null) {\n return transaction;\n }\n\n const signers = [...(options?.additionalSigners ?? []), this.signer];\n\n const approvals = await Promise.all(\n pendingApprovals.map(async (pendingApproval) => {\n const signer = signers.find((s) => s.locator() === pendingApproval.signer.locator);\n if (signer == null) {\n throw new InvalidSignerError(`Signer ${pendingApproval.signer} not found in pending approvals`);\n }\n\n const transactionToSign =\n transaction.chainType === \"solana\" && \"transaction\" in transaction.onChain\n ? (transaction.onChain.transaction as string) // in Solana, the transaction is a string\n : pendingApproval.message;\n\n const signature = await signer.signTransaction(transactionToSign);\n return {\n ...signature,\n signer: signer.locator(),\n };\n })\n );\n\n return await this.executeApproveTransactionWithErrorHandling(transactionId, approvals);\n }\n\n private async executeApproveTransactionWithErrorHandling(transactionId: string, approvals: Approval[]) {\n walletsLogger.info(\"wallet.approve: submitting approval to API\", { transactionId });\n const approvedTransaction = await this.#apiClient.approveTransaction(this.walletLocator, transactionId, {\n approvals,\n });\n\n if (approvedTransaction.error) {\n throw new TransactionFailedError(JSON.stringify(approvedTransaction));\n }\n\n return approvedTransaction;\n }\n\n private async executeApproveSignatureWithErrorHandling(signatureId: string, approvals: Approval[]) {\n const approvedSignature = await this.#apiClient.approveSignature(this.walletLocator, signatureId, {\n approvals,\n });\n\n if (approvedSignature.error) {\n throw new SignatureFailedError(JSON.stringify(approvedSignature));\n }\n\n return approvedSignature;\n }\n\n protected async waitForSignature(signatureId: string): Promise<Signature<false>> {\n let signatureResponse: GetSignatureResponse | null = null;\n\n do {\n await new Promise((resolve) => setTimeout(resolve, STATUS_POLLING_INTERVAL_MS));\n signatureResponse = await this.#apiClient.getSignature(this.walletLocator, signatureId);\n if (\"error\" in signatureResponse) {\n throw new SignatureNotAvailableError(JSON.stringify(signatureResponse));\n }\n } while (signatureResponse === null || signatureResponse.status === \"pending\");\n\n if (signatureResponse.status === \"failed\") {\n throw new SigningFailedError(\"Signature signing failed\");\n }\n\n if (!signatureResponse.outputSignature) {\n throw new SignatureNotAvailableError(\"Signature not available\");\n }\n\n return {\n signature: signatureResponse.outputSignature,\n signatureId,\n };\n }\n\n protected async waitForTransaction(\n transactionId: string,\n timeoutMs = 60_000,\n {\n backoffMultiplier = 1.1,\n maxBackoffMs = 2_000,\n initialBackoffMs = STATUS_POLLING_INTERVAL_MS,\n }: {\n initialBackoffMs?: number;\n backoffMultiplier?: number;\n maxBackoffMs?: number;\n } = {}\n ): Promise<Transaction<false>> {\n walletsLogger.info(\"wallet.approve: waiting for transaction confirmation\", { transactionId, timeoutMs });\n const startTime = Date.now();\n let transactionResponse;\n\n do {\n if (Date.now() - startTime > timeoutMs) {\n const error = new TransactionConfirmationTimeoutError(\"Transaction confirmation timeout\");\n throw error;\n }\n\n transactionResponse = await this.#apiClient.getTransaction(this.walletLocator, transactionId);\n if (transactionResponse.error) {\n throw new TransactionNotAvailableError(JSON.stringify(transactionResponse));\n }\n // Wait for the polling interval\n await this.sleep(initialBackoffMs);\n initialBackoffMs = Math.min(initialBackoffMs * backoffMultiplier, maxBackoffMs);\n } while (transactionResponse.status === \"pending\");\n\n if (transactionResponse.status === \"failed\") {\n const error = new TransactionSendingFailedError(\n `Transaction sending failed: ${JSON.stringify(transactionResponse.error)}`\n );\n throw error;\n }\n\n if (transactionResponse.status === \"awaiting-approval\") {\n const error = new TransactionAwaitingApprovalError(\n `Transaction is awaiting approval. Please submit required approvals before waiting for completion.`\n );\n throw error;\n }\n\n const transactionHash = transactionResponse.onChain.txId;\n if (transactionHash == null) {\n const error = new TransactionHashNotFoundError(\"Transaction hash not found on transaction response\");\n throw error;\n }\n\n return {\n hash: transactionHash,\n explorerLink: transactionResponse.onChain.explorerLink ?? \"\",\n transactionId: transactionResponse.id,\n };\n }\n\n protected async sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n}\n\nfunction toRecipientLocator(to: string | UserLocator): string {\n if (typeof to === \"string\") {\n return to;\n }\n if (\"email\" in to) {\n return `email:${to.email}`;\n }\n if (\"x\" in to) {\n return `x:${to.x}`;\n }\n if (\"twitter\" in to) {\n return `twitter:${to.twitter}`;\n }\n if (\"phone\" in to) {\n return `phoneNumber:${to.phone}`;\n }\n if (\"userId\" in to) {\n return `userId:${to.userId}`;\n }\n throw new Error(\"Invalid recipient locator\");\n}\n\nfunction toTokenLocator(token: string, chain: string): string {\n if (isValidAddress(token)) {\n return `${chain}:${token}`;\n }\n // Otherwise, treat as currency symbol (lowercase)\n return `${chain}:${token.toLowerCase()}`;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/chains/definitions/tempoTestnet.ts"],"names":[],"mappings":";AAAA,SAAS,mBAAmB;AAErB,IAAM,eAAe,YAAY;AAAA,EACpC,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,SAAS;AAAA,IACL,SAAS,EAAE,MAAM,CAAC,gCAAgC,EAAE;AAAA,EACxD;AAAA,EACA,gBAAgB;AAAA,IACZ,SAAS;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,IACT;AAAA,EACJ;AAAA,EACA,SAAS;AACb,CAAC","sourcesContent":["import { defineChain } from \"viem\";\n\nexport const tempoTestnet = defineChain({\n id: 42431,\n name: \"Tempo Testnet\",\n nativeCurrency: undefined as never,\n rpcUrls: {\n default: { http: [\"https://rpc.moderato.tempo.xyz\"] },\n },\n blockExplorers: {\n default: {\n name: \"Tempo Explorer\",\n url: \"https://explore.tempo.xyz\",\n },\n },\n testnet: true,\n});\n"]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
NcsIframeManager
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3PG4HRAS.js";
|
|
4
4
|
import {
|
|
5
5
|
AuthRejectedError
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-3J2BNUTO.js";
|
|
7
7
|
import {
|
|
8
8
|
walletsLogger
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-JXXXM7AV.js";
|
|
10
10
|
import {
|
|
11
11
|
__async,
|
|
12
12
|
__decorateClass
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-JF4JR5QQ.js";
|
|
14
14
|
|
|
15
15
|
// src/signers/non-custodial/ncs-signer.ts
|
|
16
16
|
import { validateAPIKey, WithLoggerContext } from "@crossmint/common-sdk-base";
|
|
@@ -321,3 +321,4 @@ export {
|
|
|
321
321
|
NonCustodialSigner,
|
|
322
322
|
DEFAULT_EVENT_OPTIONS
|
|
323
323
|
};
|
|
324
|
+
//# sourceMappingURL=chunk-UAFXNE4C.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/signers/non-custodial/ncs-signer.ts"],"sourcesContent":["import type {\n BaseSignResult,\n EmailInternalSignerConfig,\n ExportSignerTEEConnection,\n PhoneInternalSignerConfig,\n Signer,\n} from \"../types\";\nimport { AuthRejectedError } from \"../types\";\nimport { NcsIframeManager } from \"./ncs-iframe-manager\";\nimport { validateAPIKey, WithLoggerContext } from \"@crossmint/common-sdk-base\";\nimport type { SignerOutputEvent } from \"@crossmint/client-signers\";\nimport { walletsLogger } from \"../../logger\";\n\nexport abstract class NonCustodialSigner implements Signer {\n public readonly type: \"email\" | \"phone\";\n private _needsAuth = true;\n private _authPromise: {\n promise: Promise<void>;\n resolve: () => void;\n reject: (error: Error) => void;\n } | null = null;\n private _initializationPromise: Promise<void> | null = null;\n\n constructor(protected config: EmailInternalSignerConfig | PhoneInternalSignerConfig) {\n // Only initialize the signer if running client-side\n if (typeof window !== \"undefined\") {\n this.initialize();\n }\n this.type = this.config.type;\n }\n\n locator() {\n return this.config.locator;\n }\n\n address() {\n return this.config.address;\n }\n\n abstract signMessage(message: string): Promise<BaseSignResult>;\n\n private async initialize() {\n // Initialize iframe if no custom handshake parent is provided\n if (this.config.clientTEEConnection == null) {\n const parsedAPIKey = validateAPIKey(this.config.crossmint.apiKey);\n if (!parsedAPIKey.isValid) {\n throw new Error(\"Invalid API key\");\n }\n const iframeManager = new NcsIframeManager({\n environment: parsedAPIKey.environment,\n });\n this.config.clientTEEConnection = await iframeManager.initialize();\n }\n }\n\n abstract signTransaction(transaction: string): Promise<{ signature: string }>;\n\n private async getTEEConnection() {\n if (this.config.clientTEEConnection == null) {\n // If there's already an initialization in progress, wait for it\n if (this._initializationPromise) {\n await this._initializationPromise;\n return this.config.clientTEEConnection!;\n }\n\n // Start initialization and store the promise to prevent concurrent initializations\n this._initializationPromise = this.initializeTEEConnection();\n\n try {\n await this._initializationPromise;\n } finally {\n // Clear the promise after completion (success or failure)\n this._initializationPromise = null;\n }\n }\n\n return this.config.clientTEEConnection!;\n }\n\n private async initializeTEEConnection(): Promise<void> {\n walletsLogger.info(\"TEE connection not initialized, initializing now\");\n\n const parsedAPIKey = validateAPIKey(this.config.crossmint.apiKey);\n if (!parsedAPIKey.isValid) {\n throw new Error(\"Invalid API key\");\n }\n const iframeManager = new NcsIframeManager({\n environment: parsedAPIKey.environment,\n });\n this.config.clientTEEConnection = await iframeManager.initialize();\n\n if (this.config.clientTEEConnection == null) {\n throw new Error(\"Failed to initialize TEE connection\");\n }\n\n walletsLogger.info(\"TEE connection initialized successfully\");\n }\n\n @WithLoggerContext({\n logger: walletsLogger,\n methodName: \"handleAuthRequired\",\n })\n protected async handleAuthRequired() {\n const clientTEEConnection = await this.getTEEConnection();\n\n if (this.config.onAuthRequired == null) {\n throw new Error(\n `${this.type} signer requires the onAuthRequired callback to handle OTP verification. ` +\n `This callback manages the authentication flow (sending OTP and verifying user input). ` +\n `If using our React/React Native SDK, this is handled automatically by the provider. ` +\n `For other environments, implement: onAuthRequired: (needsAuth, sendEmailWithOtp, verifyOtp, reject) => { /* your UI logic */ }`\n );\n }\n\n // Determine if we need to authenticate the user via OTP or not\n walletsLogger.info(\"get-status: sending request\");\n const startTime = Date.now();\n const signerResponse = await clientTEEConnection.sendAction({\n event: \"request:get-status\",\n responseEvent: \"response:get-status\",\n data: {\n authData: {\n jwt: this.config.crossmint.experimental_customAuth?.jwt ?? \"\",\n apiKey: this.config.crossmint.apiKey,\n },\n },\n options: DEFAULT_EVENT_OPTIONS,\n });\n const durationMs = Date.now() - startTime;\n\n if (signerResponse?.status !== \"success\") {\n walletsLogger.error(\"get-status: failed\", {\n status: signerResponse?.status,\n error: signerResponse?.error,\n durationMs,\n });\n throw new Error(signerResponse?.error);\n }\n\n walletsLogger.info(\"get-status: response received\", {\n signerStatus: signerResponse.signerStatus,\n durationMs,\n });\n\n if (signerResponse.signerStatus === \"ready\") {\n this._needsAuth = false;\n return;\n } else {\n this._needsAuth = true;\n }\n\n walletsLogger.info(\"Auth required, initiating OTP flow\", { needsAuth: this._needsAuth });\n\n const { promise, resolve, reject } = this.createAuthPromise();\n this._authPromise = { promise, resolve, reject };\n\n if (this.config.onAuthRequired) {\n try {\n await this.config.onAuthRequired(\n this._needsAuth,\n () => this.sendMessageWithOtp(),\n (otp) => this.verifyOtp(otp),\n async () => {\n walletsLogger.info(\"Auth rejected\", { authRejected: true });\n this._needsAuth = false;\n // We call onAuthRequired again so the needsAuth state is updated for the dev\n if (this.config.onAuthRequired != null) {\n await this.config.onAuthRequired(\n this._needsAuth,\n () => this.sendMessageWithOtp(),\n (otp) => this.verifyOtp(otp),\n () => this._authPromise?.reject(new AuthRejectedError())\n );\n }\n reject(new AuthRejectedError());\n }\n );\n } catch (error) {\n walletsLogger.error(\"handleAuthRequired error\", { error });\n reject(error as Error);\n }\n }\n\n try {\n await promise;\n } catch (error) {\n walletsLogger.error(\"handleAuthRequired promise error\", { error });\n throw error;\n }\n }\n\n public async ensureAuthenticated(): Promise<void> {\n await this.handleAuthRequired();\n }\n\n protected getJwtOrThrow() {\n const jwt = this.config.crossmint.experimental_customAuth?.jwt;\n if (jwt == null) {\n throw new Error(\"JWT is required\");\n }\n return jwt;\n }\n\n private createAuthPromise(): {\n promise: Promise<void>;\n resolve: () => void;\n reject: (error: Error) => void;\n } {\n let resolvePromise!: () => void;\n let rejectPromise!: (error: Error) => void;\n\n const promise = new Promise<void>((resolve, reject) => {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n\n return { promise, resolve: resolvePromise, reject: rejectPromise };\n }\n\n private async sendMessageWithOtp() {\n const handshakeParent = await this.getTEEConnection();\n const authId = this.getAuthId();\n walletsLogger.info(\"start-onboarding: sending request\");\n const startTime = Date.now();\n const response = await handshakeParent.sendAction({\n event: \"request:start-onboarding\",\n responseEvent: \"response:start-onboarding\",\n data: {\n authData: {\n jwt: this.config.crossmint.experimental_customAuth?.jwt ?? \"\",\n apiKey: this.config.crossmint.apiKey,\n },\n data: { authId },\n },\n options: DEFAULT_EVENT_OPTIONS,\n });\n const durationMs = Date.now() - startTime;\n walletsLogger.info(\"start-onboarding: response received\", {\n status: response?.status,\n durationMs,\n });\n\n if (response?.status === \"success\" && response.signerStatus === \"ready\") {\n this._needsAuth = false;\n return;\n }\n\n if (response?.status === \"error\") {\n walletsLogger.error(\"start-onboarding: failed\", { error: response.error });\n this._authPromise?.reject(new Error(response.error || \"Failed to initiate OTP process.\"));\n }\n }\n\n private getAuthId() {\n if (this.config.type === \"email\") {\n return `email:${this.config.email}`;\n }\n return `phone:${this.config.phone}`;\n }\n\n private async verifyOtp(encryptedOtp: string) {\n let response: SignerOutputEvent<\"complete-onboarding\">;\n try {\n const handshakeParent = await this.getTEEConnection();\n walletsLogger.info(\"complete-onboarding: sending request\");\n const startTime = Date.now();\n response = await handshakeParent.sendAction({\n event: \"request:complete-onboarding\",\n responseEvent: \"response:complete-onboarding\",\n data: {\n authData: {\n jwt: this.config.crossmint.experimental_customAuth?.jwt ?? \"\",\n apiKey: this.config.crossmint.apiKey,\n },\n data: {\n onboardingAuthentication: { encryptedOtp },\n },\n },\n options: DEFAULT_EVENT_OPTIONS,\n });\n walletsLogger.info(\"complete-onboarding: response received\", {\n status: response?.status,\n durationMs: Date.now() - startTime,\n });\n } catch (err) {\n walletsLogger.error(\"complete-onboarding: error\", { error: err });\n this._needsAuth = true;\n this._authPromise?.reject(err as Error);\n throw err;\n }\n\n if (response?.status === \"success\") {\n this._needsAuth = false;\n // We call onAuthRequired again so the needsAuth state is updated for the dev\n if (this.config.onAuthRequired != null) {\n await this.config.onAuthRequired(\n this._needsAuth,\n () => this.sendMessageWithOtp(),\n (otp) => this.verifyOtp(otp),\n () => this._authPromise?.reject(new AuthRejectedError())\n );\n }\n this._authPromise?.resolve();\n return;\n }\n\n walletsLogger.error(\"complete-onboarding: OTP validation failed\", { status: response?.status });\n this._needsAuth = true;\n const errorMessage = response?.status === \"error\" ? response.error : \"Failed to validate encrypted OTP\";\n const error = new Error(errorMessage);\n this._authPromise?.reject(error);\n throw error;\n }\n\n /**\n * Export the private key for this signer\n * @throws {Error} If signer is not authenticated\n */\n async _exportPrivateKey(exportTEEConnection: ExportSignerTEEConnection): Promise<void> {\n await this.handleAuthRequired();\n const jwt = this.getJwtOrThrow();\n\n const { scheme, encoding } = this.getChainKeyParams();\n\n const response = await exportTEEConnection.sendAction({\n event: \"request:export-signer\",\n responseEvent: \"response:export-signer\",\n data: {\n authData: {\n jwt,\n apiKey: this.config.crossmint.apiKey,\n },\n data: {\n scheme,\n encoding,\n },\n },\n options: DEFAULT_EVENT_OPTIONS,\n });\n\n if (response?.status === \"error\") {\n throw new Error(response.error || \"Failed to export private key\");\n }\n }\n\n /**\n * Get the appropriate scheme and encoding based on the chain\n * Must be implemented by concrete classes\n */\n protected abstract getChainKeyParams(): {\n scheme: \"secp256k1\" | \"ed25519\";\n encoding: \"base58\" | \"hex\" | \"strkey\";\n };\n}\n\nexport const DEFAULT_EVENT_OPTIONS = {\n timeoutMs: 30_000,\n};\n"],"mappings":"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","names":["_a"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";//# sourceMappingURL=chunk-UBZ7RWBZ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";//# sourceMappingURL=chunk-UDLDOYUB.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkW5LNQWQDcjs = require('./chunk-W5LNQWQD.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkKXXRVRR6cjs = require('./chunk-KXXRVRR6.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkRPLIXWF3cjs = require('./chunk-RPLIXWF3.cjs');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _chunk6DPHKKVRcjs = require('./chunk-6DPHKKVR.cjs');
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var _chunkNAGMAP3Ycjs = require('./chunk-NAGMAP3Y.cjs');
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
var _chunk6PIQDY3Fcjs = require('./chunk-6PIQDY3F.cjs');
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
var _chunkGGMUF77Ncjs = require('./chunk-GGMUF77N.cjs');
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
var _chunkCLVXR2JVcjs = require('./chunk-CLVXR2JV.cjs');
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
var _chunkRJ3VNO74cjs = require('./chunk-RJ3VNO74.cjs');
|
|
28
|
+
|
|
29
|
+
// src/signers/index.ts
|
|
30
|
+
function assembleSigner(chain, config) {
|
|
31
|
+
switch (config.type) {
|
|
32
|
+
case "email":
|
|
33
|
+
case "phone":
|
|
34
|
+
if (chain === "solana") {
|
|
35
|
+
return new (0, _chunkW5LNQWQDcjs.SolanaNonCustodialSigner)(config);
|
|
36
|
+
}
|
|
37
|
+
if (chain === "stellar") {
|
|
38
|
+
return new (0, _chunkKXXRVRR6cjs.StellarNonCustodialSigner)(config);
|
|
39
|
+
}
|
|
40
|
+
return new (0, _chunkRPLIXWF3cjs.EVMNonCustodialSigner)(config);
|
|
41
|
+
case "api-key":
|
|
42
|
+
return chain === "solana" ? new (0, _chunkGGMUF77Ncjs.SolanaApiKeySigner)(config) : new (0, _chunk6DPHKKVRcjs.EVMApiKeySigner)(config);
|
|
43
|
+
case "external-wallet":
|
|
44
|
+
if (chain === "solana") {
|
|
45
|
+
return new (0, _chunkCLVXR2JVcjs.SolanaExternalWalletSigner)(config);
|
|
46
|
+
}
|
|
47
|
+
if (chain === "stellar") {
|
|
48
|
+
return new (0, _chunkRJ3VNO74cjs.StellarExternalWalletSigner)(config);
|
|
49
|
+
}
|
|
50
|
+
return new (0, _chunkNAGMAP3Ycjs.EVMExternalWalletSigner)(config);
|
|
51
|
+
case "passkey":
|
|
52
|
+
return new (0, _chunk6PIQDY3Fcjs.PasskeySigner)(config);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
exports.assembleSigner = assembleSigner;
|
|
59
|
+
//# sourceMappingURL=chunk-V5HHKVTT.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/signers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,SAAS,eAAgC,OAAU,QAAyC;AAC/F,UAAQ,OAAO,MAAM;AAAA,IACjB,KAAK;AAAA,IACL,KAAK;AACD,UAAI,UAAU,UAAU;AACpB,eAAO,IAAI,yBAAyB,MAAM;AAAA,MAC9C;AACA,UAAI,UAAU,WAAW;AACrB,eAAO,IAAI,0BAA0B,MAAM;AAAA,MAC/C;AACA,aAAO,IAAI,sBAAsB,MAAM;AAAA,IAC3C,KAAK;AACD,aAAO,UAAU,WAAW,IAAI,mBAAmB,MAAM,IAAI,IAAI,gBAAgB,MAAM;AAAA,IAE3F,KAAK;AACD,UAAI,UAAU,UAAU;AACpB,eAAO,IAAI,2BAA2B,MAAM;AAAA,MAChD;AACA,UAAI,UAAU,WAAW;AACrB,eAAO,IAAI,4BAA4B,MAAM;AAAA,MACjD;AACA,aAAO,IAAI,wBAAwB,MAAM;AAAA,IAE7C,KAAK;AACD,aAAO,IAAI,cAAc,MAAM;AAAA,EACvC;AACJ","sourcesContent":["import { EVMNonCustodialSigner, SolanaNonCustodialSigner, StellarNonCustodialSigner } from \"./non-custodial\";\nimport { SolanaExternalWalletSigner } from \"./solana-external-wallet\";\nimport { EVMExternalWalletSigner } from \"./evm-external-wallet\";\nimport { PasskeySigner } from \"./passkey\";\nimport { EVMApiKeySigner } from \"./evm-api-key\";\nimport { SolanaApiKeySigner } from \"./solana-api-key\";\nimport type { Chain } from \"../chains/chains\";\nimport type { InternalSignerConfig, Signer } from \"./types\";\nimport { StellarExternalWalletSigner } from \"./stellar-external-wallet\";\n\nexport function assembleSigner<C extends Chain>(chain: C, config: InternalSignerConfig<C>): Signer {\n switch (config.type) {\n case \"email\":\n case \"phone\":\n if (chain === \"solana\") {\n return new SolanaNonCustodialSigner(config);\n }\n if (chain === \"stellar\") {\n return new StellarNonCustodialSigner(config);\n }\n return new EVMNonCustodialSigner(config);\n case \"api-key\":\n return chain === \"solana\" ? new SolanaApiKeySigner(config) : new EVMApiKeySigner(config);\n\n case \"external-wallet\":\n if (chain === \"solana\") {\n return new SolanaExternalWalletSigner(config);\n }\n if (chain === \"stellar\") {\n return new StellarExternalWalletSigner(config);\n }\n return new EVMExternalWalletSigner(config);\n\n case \"passkey\":\n return new PasskeySigner(config);\n }\n}\n"]}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compareSignerConfigs,
|
|
3
3
|
normalizeValueForComparison
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-4AV3GY27.js";
|
|
5
5
|
import {
|
|
6
6
|
Wallet
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-J6AO2ZDU.js";
|
|
8
8
|
import {
|
|
9
9
|
assembleSigner
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-RUUBB4EB.js";
|
|
11
11
|
import {
|
|
12
12
|
validateChainForEnvironment
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-GNU6RIKU.js";
|
|
14
14
|
import {
|
|
15
15
|
WalletCreationError,
|
|
16
16
|
WalletNotAvailableError
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-36C7SCPK.js";
|
|
18
18
|
import {
|
|
19
19
|
walletsLogger
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-JXXXM7AV.js";
|
|
21
21
|
import {
|
|
22
22
|
__async,
|
|
23
23
|
__decorateClass,
|
|
24
24
|
__spreadProps,
|
|
25
25
|
__spreadValues
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-JF4JR5QQ.js";
|
|
27
27
|
|
|
28
28
|
// src/wallets/wallet-factory.ts
|
|
29
29
|
import { WithLoggerContext } from "@crossmint/common-sdk-base";
|
|
@@ -334,3 +334,4 @@ __decorateClass([
|
|
|
334
334
|
export {
|
|
335
335
|
WalletFactory
|
|
336
336
|
};
|
|
337
|
+
//# sourceMappingURL=chunk-VIL33DEX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/wallets/wallet-factory.ts"],"sourcesContent":["import { WithLoggerContext } from \"@crossmint/common-sdk-base\";\nimport { WebAuthnP256 } from \"ox\";\nimport { walletsLogger } from \"../logger\";\n\nimport type {\n AdminSignerConfig,\n ApiClient,\n CreateWalletParams,\n GetWalletSuccessResponse,\n RegisterSignerPasskeyParams,\n DelegatedSigner as DelegatedSignerResponse,\n} from \"../api\";\nimport { WalletCreationError, WalletNotAvailableError } from \"../utils/errors\";\nimport { type Chain, validateChainForEnvironment } from \"../chains/chains\";\nimport type { InternalSignerConfig, SignerConfigForChain } from \"../signers/types\";\nimport { Wallet } from \"./wallet\";\nimport { assembleSigner } from \"../signers\";\nimport type { DelegatedSigner, WalletArgsFor, WalletOptions } from \"./types\";\nimport { compareSignerConfigs, normalizeValueForComparison } from \"../utils/signer-validation\";\n\nconst DELEGATED_SIGNER_MISMATCH_ERROR =\n \"When 'delegatedSigners' is provided to a method that may fetch an existing wallet, each specified delegated signer must exist in that wallet's configuration.\";\n\nexport class WalletFactory {\n constructor(private readonly apiClient: ApiClient) {}\n\n @WithLoggerContext({\n logger: walletsLogger,\n methodName: \"walletFactory.getOrCreateWallet\",\n buildContext(_thisArg: WalletFactory, args: unknown[]) {\n const walletArgs = args[0] as WalletArgsFor<Chain>;\n return { chain: walletArgs.chain, signerType: walletArgs.signer.type };\n },\n })\n public async getOrCreateWallet<C extends Chain>(args: WalletArgsFor<C>): Promise<Wallet<C>> {\n if (this.apiClient.isServerSide) {\n walletsLogger.error(\"walletFactory.getOrCreateWallet.error\", {\n error: \"getOrCreateWallet can only be called from client-side code\",\n });\n throw new WalletCreationError(\n \"getOrCreateWallet can only be called from client-side code.\\n- Make sure you're running this in the browser (or another client environment), not on your server.\\n- Use your Crossmint Client API Key (not a server key).\"\n );\n }\n\n args = { ...args, chain: validateChainForEnvironment(args.chain, this.apiClient.environment) };\n\n const locator = this.getWalletLocator<C>(args);\n walletsLogger.info(\"walletFactory.getOrCreateWallet.start\");\n\n const existingWallet = await this.apiClient.getWallet(locator);\n\n if (existingWallet != null && !(\"error\" in existingWallet)) {\n walletsLogger.info(\"walletFactory.getOrCreateWallet.existing\", {\n address: existingWallet.address,\n });\n return this.createWalletInstance(existingWallet, args);\n }\n\n walletsLogger.info(\"walletFactory.getOrCreateWallet.creating\");\n return this.createWalletInternal(args);\n }\n\n @WithLoggerContext({\n logger: walletsLogger,\n methodName: \"walletFactory.getWallet\",\n buildContext(_thisArg: WalletFactory, args: unknown[]) {\n const walletLocator = args[0] as string;\n const walletArgs = args[1] as WalletArgsFor<Chain>;\n return { walletLocator, chain: walletArgs.chain };\n },\n })\n public async getWallet<C extends Chain>(walletLocator: string, args: WalletArgsFor<C>): Promise<Wallet<C>> {\n if (!this.apiClient.isServerSide) {\n walletsLogger.error(\"walletFactory.getWallet.error\", {\n error: \"getWallet is not supported on client side\",\n });\n throw new WalletCreationError(\"getWallet is not supported on client side, use getOrCreateWallet instead\");\n }\n\n args = { ...args, chain: validateChainForEnvironment(args.chain, this.apiClient.environment) };\n\n walletsLogger.info(\"walletFactory.getWallet.start\");\n\n const existingWallet = await this.apiClient.getWallet(walletLocator);\n if (\"error\" in existingWallet) {\n walletsLogger.warn(\"walletFactory.getWallet.notFound\", {\n error: existingWallet.error,\n });\n throw new WalletNotAvailableError(JSON.stringify(existingWallet));\n }\n\n walletsLogger.info(\"walletFactory.getWallet.success\", {\n address: existingWallet.address,\n });\n\n return this.createWalletInstance(existingWallet, args);\n }\n\n @WithLoggerContext({\n logger: walletsLogger,\n methodName: \"walletFactory.createWallet\",\n buildContext(_thisArg: WalletFactory, args: unknown[]) {\n const walletArgs = args[0] as WalletArgsFor<Chain>;\n return { chain: walletArgs.chain, signerType: walletArgs.signer.type };\n },\n })\n public async createWallet<C extends Chain>(args: WalletArgsFor<C>): Promise<Wallet<C>> {\n args = { ...args, chain: validateChainForEnvironment(args.chain, this.apiClient.environment) };\n return this.createWalletInternal(args);\n }\n\n private async createWalletInternal<C extends Chain>(args: WalletArgsFor<C>): Promise<Wallet<C>> {\n await args.options?.experimental_callbacks?.onWalletCreationStart?.();\n walletsLogger.info(\"walletFactory.createWallet.start\");\n\n this.mutateSignerFromCustomAuth(args, true);\n\n const adminSigner =\n args.signer.type === \"passkey\" ? await this.createPasskeyAdminSigner(args.signer) : args.signer;\n\n const walletResponse = await this.apiClient.createWallet({\n type: \"smart\",\n chainType: this.getChainType(args.chain),\n config: {\n adminSigner,\n ...(args?.plugins ? { plugins: args.plugins } : {}),\n ...(args.delegatedSigners != null ? { delegatedSigners: args.delegatedSigners } : {}),\n },\n owner: args.owner ?? undefined,\n alias: args.alias ?? undefined,\n } as CreateWalletParams);\n\n if (\"error\" in walletResponse) {\n walletsLogger.error(\"walletFactory.createWallet.error\", {\n error: walletResponse.error,\n });\n throw new WalletCreationError(JSON.stringify(walletResponse));\n }\n\n walletsLogger.info(\"walletFactory.createWallet.success\", {\n address: walletResponse.address,\n });\n\n return this.createWalletInstance(walletResponse, args);\n }\n\n private createWalletInstance<C extends Chain>(\n walletResponse: GetWalletSuccessResponse,\n args: WalletArgsFor<C>\n ): Wallet<C> {\n this.validateExistingWalletConfig(walletResponse, args);\n\n const signerConfig = this.toInternalSignerConfig(walletResponse, args.signer, args.options);\n return new Wallet(\n {\n chain: args.chain,\n address: walletResponse.address,\n owner: walletResponse.owner,\n signer: assembleSigner(args.chain, signerConfig),\n options: args.options,\n alias: args.alias,\n },\n this.apiClient\n );\n }\n\n private toInternalSignerConfig<C extends Chain>(\n walletResponse: GetWalletSuccessResponse,\n signerArgs: SignerConfigForChain<C>,\n options?: WalletOptions\n ): InternalSignerConfig<C> {\n if (\n !(\n walletResponse.chainType === \"evm\" ||\n walletResponse.chainType === \"solana\" ||\n walletResponse.chainType === \"stellar\"\n )\n ) {\n throw new WalletCreationError(`Wallet type ${walletResponse.chainType} is not supported`);\n }\n\n if (signerArgs == null && walletResponse.config?.adminSigner == null) {\n throw new WalletCreationError(\"Signer is required to create a wallet\");\n }\n\n switch (signerArgs.type) {\n case \"api-key\": {\n if (walletResponse.config?.adminSigner.type !== \"api-key\") {\n throw new WalletCreationError(\"API key signer does not match the wallet's signer type\");\n }\n\n return {\n type: \"api-key\",\n address: walletResponse.config.adminSigner.address,\n locator: walletResponse.config.adminSigner.locator,\n };\n }\n\n case \"external-wallet\":\n if (walletResponse.config?.adminSigner.type !== \"external-wallet\") {\n throw new WalletCreationError(\"External wallet signer does not match the wallet's signer type\");\n }\n\n return { ...walletResponse.config.adminSigner, ...signerArgs } as InternalSignerConfig<C>;\n\n case \"passkey\":\n if (walletResponse.config?.adminSigner.type !== \"passkey\") {\n throw new WalletCreationError(\"Passkey signer does not match the wallet's signer type\");\n }\n\n return {\n type: \"passkey\",\n id: walletResponse.config.adminSigner.id,\n name: walletResponse.config.adminSigner.name,\n locator: walletResponse.config.adminSigner.locator,\n onCreatePasskey: signerArgs.onCreatePasskey,\n onSignWithPasskey: signerArgs.onSignWithPasskey,\n };\n\n case \"email\": {\n if (walletResponse.config?.adminSigner.type !== \"email\") {\n throw new WalletCreationError(\"Email signer does not match the wallet's signer type\");\n }\n\n const { locator, email, address } = walletResponse.config.adminSigner;\n return {\n type: \"email\",\n email,\n locator,\n address,\n crossmint: this.apiClient.crossmint,\n onAuthRequired: signerArgs.onAuthRequired,\n clientTEEConnection: options?.clientTEEConnection,\n };\n }\n\n case \"phone\": {\n if (walletResponse.config?.adminSigner.type !== \"phone\") {\n throw new WalletCreationError(\"Phone signer does not match the wallet's signer type\");\n }\n\n const { locator, phone, address } = walletResponse.config.adminSigner;\n return {\n type: \"phone\",\n phone,\n locator,\n address,\n crossmint: this.apiClient.crossmint,\n onAuthRequired: signerArgs.onAuthRequired,\n clientTEEConnection: options?.clientTEEConnection,\n };\n }\n\n default:\n throw new Error(\"Invalid signer type\");\n }\n }\n\n private getWalletLocator<C extends Chain>(args: WalletArgsFor<C>): string {\n return `me:${this.getChainType(args.chain)}:smart` + (args.alias != null ? `:alias:${args.alias}` : \"\");\n }\n\n private async createPasskeyAdminSigner<C extends Chain>(\n signer: SignerConfigForChain<C>\n ): Promise<RegisterSignerPasskeyParams> {\n if (signer.type !== \"passkey\") {\n throw new Error(\"Signer is not a passkey\");\n }\n const passkeyName = signer.name ?? `Crossmint Wallet ${Date.now()}`;\n const passkeyCredential = signer.onCreatePasskey\n ? await signer.onCreatePasskey(passkeyName)\n : await WebAuthnP256.createCredential({ name: passkeyName });\n return {\n type: \"passkey\",\n id: passkeyCredential.id,\n name: passkeyName,\n publicKey: {\n x: passkeyCredential.publicKey.x.toString(),\n y: passkeyCredential.publicKey.y.toString(),\n },\n };\n }\n\n private mutateSignerFromCustomAuth<C extends Chain>(args: WalletArgsFor<C>, isNewWalletSigner = false): void {\n const { experimental_customAuth } = this.apiClient.crossmint;\n if (args.signer.type === \"email\" && experimental_customAuth?.email != null) {\n args.signer.email = args.signer.email ?? experimental_customAuth.email;\n }\n if (args.signer.type === \"phone\" && experimental_customAuth?.phone != null) {\n args.signer.phone = args.signer.phone ?? experimental_customAuth.phone;\n }\n if (args.signer.type === \"external-wallet\" && experimental_customAuth?.externalWalletSigner != null) {\n args.signer = isNewWalletSigner\n ? ({\n type: \"external-wallet\",\n address: experimental_customAuth.externalWalletSigner.address,\n } as SignerConfigForChain<C>)\n : (experimental_customAuth.externalWalletSigner as SignerConfigForChain<C>);\n }\n return;\n }\n\n private validateExistingWalletConfig<C extends Chain>(\n existingWallet: GetWalletSuccessResponse,\n args: WalletArgsFor<C>\n ): void {\n this.mutateSignerFromCustomAuth(args);\n\n if (\n args.owner != null &&\n existingWallet.owner != null &&\n normalizeValueForComparison(args.owner) !== normalizeValueForComparison(existingWallet.owner)\n ) {\n throw new WalletCreationError(\"Wallet owner does not match existing wallet's linked user\");\n }\n\n if (\n (args.chain === \"solana\" && existingWallet.chainType !== \"solana\") ||\n (args.chain !== \"solana\" && existingWallet.chainType === \"solana\") ||\n (args.chain === \"stellar\" && existingWallet.chainType !== \"stellar\") ||\n (args.chain !== \"stellar\" && existingWallet.chainType === \"stellar\")\n ) {\n throw new WalletCreationError(\n `Wallet chain does not match existing wallet's chain. You must use chain: ${existingWallet.chainType}.`\n );\n }\n\n if (existingWallet.type !== \"smart\") {\n return;\n }\n\n const adminSignerArgs = args.signer;\n const existingWalletSigner = (existingWallet?.config as any)?.adminSigner as AdminSignerConfig;\n\n if (adminSignerArgs != null && existingWalletSigner != null) {\n if (adminSignerArgs.type !== existingWalletSigner.type) {\n throw new WalletCreationError(\n \"The wallet signer type provided in the wallet config does not match the existing wallet's adminSigner type\"\n );\n }\n compareSignerConfigs(adminSignerArgs, existingWalletSigner);\n }\n\n if (args.delegatedSigners != null) {\n this.validateDelegatedSigners(existingWallet, args.delegatedSigners);\n }\n }\n\n private validateDelegatedSigners(\n existingWallet: GetWalletSuccessResponse,\n inputDelegatedSigners: Array<DelegatedSigner>\n ): void {\n const existingDelegatedSigners = (existingWallet?.config as any)?.delegatedSigners as\n | DelegatedSignerResponse[]\n | undefined;\n\n // If no delegated signers specified in input, no validation needed\n if (inputDelegatedSigners.length === 0) {\n return;\n }\n\n // If input has delegated signers but wallet has none, that's an error\n if (existingDelegatedSigners == null || existingDelegatedSigners.length === 0) {\n throw new WalletCreationError(\n `${inputDelegatedSigners.length} delegated signer(s) specified, but wallet \"${existingWallet.address}\" has no delegated signers. ${DELEGATED_SIGNER_MISMATCH_ERROR}`\n );\n }\n\n // Check that each input delegated signer exists in the wallet\n // (wallet can have additional signers that weren't specified in input)\n for (const argSigner of inputDelegatedSigners) {\n const matchingExistingSigner = existingDelegatedSigners.find(\n (existingSigner) => existingSigner.locator === argSigner.signer\n );\n\n if (matchingExistingSigner == null) {\n const walletSigners = existingDelegatedSigners.map((s) => s.locator).join(\", \");\n throw new WalletCreationError(\n `Delegated signer '${argSigner.signer}' does not exist in wallet \"${existingWallet.address}\". Available delegated signers: ${walletSigners}. ${DELEGATED_SIGNER_MISMATCH_ERROR}`\n );\n }\n }\n }\n\n private getChainType(chain: Chain): \"solana\" | \"evm\" | \"stellar\" {\n if (chain === \"solana\") {\n return \"solana\";\n }\n if (chain === \"stellar\") {\n return \"stellar\";\n }\n return \"evm\";\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -63,3 +63,4 @@ var __async = (__this, __arguments, generator) => {
|
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
exports.__spreadValues = __spreadValues; exports.__spreadProps = __spreadProps; exports.__decorateClass = __decorateClass; exports.__privateGet = __privateGet; exports.__privateAdd = __privateAdd; exports.__privateSet = __privateSet; exports.__async = __async;
|
|
66
|
+
//# sourceMappingURL=chunk-W4VYO3P6.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkIZYJJUOEcjs = require('./chunk-IZYJJUOE.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkBBUEX3DGcjs = require('./chunk-BBUEX3DG.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkW4VYO3P6cjs = require('./chunk-W4VYO3P6.cjs');
|
|
11
11
|
|
|
12
12
|
// src/signers/non-custodial/ncs-solana-signer.ts
|
|
13
13
|
var _web3js = require('@solana/web3.js');
|
|
14
14
|
var _bs58 = require('bs58'); var _bs582 = _interopRequireDefault(_bs58);
|
|
15
|
-
var SolanaNonCustodialSigner = class _SolanaNonCustodialSigner extends
|
|
15
|
+
var SolanaNonCustodialSigner = class _SolanaNonCustodialSigner extends _chunkIZYJJUOEcjs.NonCustodialSigner {
|
|
16
16
|
constructor(config) {
|
|
17
17
|
super(config);
|
|
18
18
|
}
|
|
19
19
|
signMessage() {
|
|
20
|
-
return
|
|
20
|
+
return _chunkW4VYO3P6cjs.__async.call(void 0, this, null, function* () {
|
|
21
21
|
return yield Promise.reject(new Error("signMessage method not implemented for email signer"));
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
24
|
signTransaction(transaction) {
|
|
25
|
-
return
|
|
25
|
+
return _chunkW4VYO3P6cjs.__async.call(void 0, this, null, function* () {
|
|
26
26
|
var _a;
|
|
27
27
|
yield this.handleAuthRequired();
|
|
28
28
|
const jwt = this.getJwtOrThrow();
|
|
29
29
|
const transactionBytes = _bs582.default.decode(transaction);
|
|
30
30
|
const deserializedTransaction = _web3js.VersionedTransaction.deserialize(transactionBytes);
|
|
31
31
|
const messageData = deserializedTransaction.message.serialize();
|
|
32
|
-
|
|
32
|
+
_chunkBBUEX3DGcjs.walletsLogger.info("sign: sending request", { keyType: "ed25519" });
|
|
33
33
|
const startTime = Date.now();
|
|
34
34
|
const res = yield (_a = this.config.clientTEEConnection) == null ? void 0 : _a.sendAction({
|
|
35
35
|
event: "request:sign",
|
|
@@ -45,9 +45,9 @@ var SolanaNonCustodialSigner = class _SolanaNonCustodialSigner extends _chunkZAX
|
|
|
45
45
|
encoding: "base58"
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
|
-
options:
|
|
48
|
+
options: _chunkIZYJJUOEcjs.DEFAULT_EVENT_OPTIONS
|
|
49
49
|
});
|
|
50
|
-
|
|
50
|
+
_chunkBBUEX3DGcjs.walletsLogger.info("sign: response received", {
|
|
51
51
|
status: res == null ? void 0 : res.status,
|
|
52
52
|
durationMs: Date.now() - startTime
|
|
53
53
|
});
|
|
@@ -82,3 +82,4 @@ var SolanaNonCustodialSigner = class _SolanaNonCustodialSigner extends _chunkZAX
|
|
|
82
82
|
|
|
83
83
|
|
|
84
84
|
exports.SolanaNonCustodialSigner = SolanaNonCustodialSigner;
|
|
85
|
+
//# sourceMappingURL=chunk-W5LNQWQD.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/signers/non-custodial/ncs-solana-signer.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,SAAS,4BAA4B;AACrC,OAAO,YAAY;AAKZ,IAAM,2BAAN,MAAM,kCAAiC,mBAAmB;AAAA,EAC7D,YAAY,QAA+D;AACvE,UAAM,MAAM;AAAA,EAChB;AAAA,EAEM,cAAc;AAAA;AAChB,aAAO,MAAM,QAAQ,OAAO,IAAI,MAAM,qDAAqD,CAAC;AAAA,IAChG;AAAA;AAAA,EAEM,gBAAgB,aAAqD;AAAA;AAf/E;AAgBQ,YAAM,KAAK,mBAAmB;AAC9B,YAAM,MAAM,KAAK,cAAc;AAE/B,YAAM,mBAAmB,OAAO,OAAO,WAAW;AAClD,YAAM,0BAA0B,qBAAqB,YAAY,gBAAgB;AACjF,YAAM,cAAc,wBAAwB,QAAQ,UAAU;AAE9D,oBAAc,KAAK,yBAAyB,EAAE,SAAS,UAAU,CAAC;AAClE,YAAM,YAAY,KAAK,IAAI;AAC3B,YAAM,MAAM,OAAM,UAAK,OAAO,wBAAZ,mBAAiC,WAAW;AAAA,QAC1D,OAAO;AAAA,QACP,eAAe;AAAA,QACf,MAAM;AAAA,UACF,UAAU;AAAA,YACN;AAAA,YACA,QAAQ,KAAK,OAAO,UAAU;AAAA,UAClC;AAAA,UACA,MAAM;AAAA,YACF,SAAS;AAAA,YACT,OAAO,OAAO,OAAO,WAAW;AAAA,YAChC,UAAU;AAAA,UACd;AAAA,QACJ;AAAA,QACA,SAAS;AAAA,MACb;AACA,oBAAc,KAAK,2BAA2B;AAAA,QAC1C,QAAQ,2BAAK;AAAA,QACb,YAAY,KAAK,IAAI,IAAI;AAAA,MAC7B,CAAC;AAED,WAAI,2BAAK,YAAW,SAAS;AACzB,cAAM,IAAI,MAAM,IAAI,KAAK;AAAA,MAC7B;AAEA,WAAI,2BAAK,cAAa,MAAM;AACxB,cAAM,IAAI,MAAM,4BAA4B;AAAA,MAChD;AACA,gCAAyB,sBAAsB,IAAI,SAAS;AAC5D,aAAO,EAAE,WAAW,IAAI,UAAU,MAAM;AAAA,IAC5C;AAAA;AAAA,EAEA,OAAO,sBAAsB,WAAwE;AACjG,QAAI,aAAa,MAAM;AACnB,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACzC;AAEA,QAAI,UAAU,aAAa,YAAY,UAAU,YAAY,aAAa,UAAU,SAAS,MAAM;AAC/F,YAAM,IAAI;AAAA,QACN,4FACI,KAAK,UAAU,SAAS;AAAA,MAChC;AAAA,IACJ;AAAA,EACJ;AAAA,EAEU,oBAA+D;AACrE,WAAO;AAAA,MACH,QAAQ;AAAA,MACR,UAAU;AAAA,IACd;AAAA,EACJ;AACJ","sourcesContent":["import { VersionedTransaction } from \"@solana/web3.js\";\nimport base58 from \"bs58\";\nimport type { EmailInternalSignerConfig, PhoneInternalSignerConfig } from \"../types\";\nimport { NonCustodialSigner, DEFAULT_EVENT_OPTIONS } from \"./ncs-signer\";\nimport { walletsLogger } from \"../../logger\";\n\nexport class SolanaNonCustodialSigner extends NonCustodialSigner {\n constructor(config: EmailInternalSignerConfig | PhoneInternalSignerConfig) {\n super(config);\n }\n\n async signMessage() {\n return await Promise.reject(new Error(\"signMessage method not implemented for email signer\"));\n }\n\n async signTransaction(transaction: string): Promise<{ signature: string }> {\n await this.handleAuthRequired();\n const jwt = this.getJwtOrThrow();\n\n const transactionBytes = base58.decode(transaction);\n const deserializedTransaction = VersionedTransaction.deserialize(transactionBytes);\n const messageData = deserializedTransaction.message.serialize();\n\n walletsLogger.info(\"sign: sending request\", { keyType: \"ed25519\" });\n const startTime = Date.now();\n const res = await this.config.clientTEEConnection?.sendAction({\n event: \"request:sign\",\n responseEvent: \"response:sign\",\n data: {\n authData: {\n jwt,\n apiKey: this.config.crossmint.apiKey,\n },\n data: {\n keyType: \"ed25519\",\n bytes: base58.encode(messageData),\n encoding: \"base58\",\n },\n },\n options: DEFAULT_EVENT_OPTIONS,\n });\n walletsLogger.info(\"sign: response received\", {\n status: res?.status,\n durationMs: Date.now() - startTime,\n });\n\n if (res?.status === \"error\") {\n throw new Error(res.error);\n }\n\n if (res?.signature == null) {\n throw new Error(\"Failed to sign transaction\");\n }\n SolanaNonCustodialSigner.verifyPublicKeyFormat(res.publicKey);\n return { signature: res.signature.bytes };\n }\n\n static verifyPublicKeyFormat(publicKey: { encoding: string; keyType: string; bytes: string } | null) {\n if (publicKey == null) {\n throw new Error(\"No public key found\");\n }\n\n if (publicKey.encoding !== \"base58\" || publicKey.keyType !== \"ed25519\" || publicKey.bytes == null) {\n throw new Error(\n \"Not supported. Expected public key to be in base58 encoding and ed25519 key type. Got: \" +\n JSON.stringify(publicKey)\n );\n }\n }\n\n protected getChainKeyParams(): { scheme: \"ed25519\"; encoding: \"base58\" } {\n return {\n scheme: \"ed25519\",\n encoding: \"base58\",\n };\n }\n}\n"]}
|