@crossmint/client-sdk-smart-wallet 0.1.21 → 0.1.22
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/SmartWalletSDK.cjs +34 -1
- package/dist/SmartWalletSDK.cjs.map +1 -0
- package/dist/SmartWalletSDK.js +34 -1
- package/dist/SmartWalletSDK.js.map +1 -0
- package/dist/api/CrossmintWalletService.cjs +13 -1
- package/dist/api/CrossmintWalletService.cjs.map +1 -0
- package/dist/api/CrossmintWalletService.js +13 -1
- package/dist/api/CrossmintWalletService.js.map +1 -0
- package/dist/blockchain/chains.cjs +23 -1
- package/dist/blockchain/chains.cjs.map +1 -0
- package/dist/blockchain/chains.js +23 -1
- package/dist/blockchain/chains.js.map +1 -0
- package/dist/blockchain/rpc.cjs +11 -1
- package/dist/blockchain/rpc.cjs.map +1 -0
- package/dist/blockchain/rpc.js +11 -1
- package/dist/blockchain/rpc.js.map +1 -0
- package/dist/blockchain/transfer.cjs +7 -1
- package/dist/blockchain/transfer.cjs.map +1 -0
- package/dist/blockchain/transfer.js +7 -1
- package/dist/blockchain/transfer.js.map +1 -0
- package/dist/blockchain/wallets/EVMSmartWallet.cjs +10 -1
- package/dist/blockchain/wallets/EVMSmartWallet.cjs.map +1 -0
- package/dist/blockchain/wallets/EVMSmartWallet.js +10 -1
- package/dist/blockchain/wallets/EVMSmartWallet.js.map +1 -0
- package/dist/blockchain/wallets/SendTransactionService.cjs +11 -1
- package/dist/blockchain/wallets/SendTransactionService.cjs.map +1 -0
- package/dist/blockchain/wallets/SendTransactionService.js +11 -1
- package/dist/blockchain/wallets/SendTransactionService.js.map +1 -0
- package/dist/blockchain/wallets/account/cache.cjs +9 -1
- package/dist/blockchain/wallets/account/cache.cjs.map +1 -0
- package/dist/blockchain/wallets/account/cache.js +9 -1
- package/dist/blockchain/wallets/account/cache.js.map +1 -0
- package/dist/blockchain/wallets/account/config.cjs +9 -1
- package/dist/blockchain/wallets/account/config.cjs.map +1 -0
- package/dist/blockchain/wallets/account/config.js +9 -1
- package/dist/blockchain/wallets/account/config.js.map +1 -0
- package/dist/blockchain/wallets/account/creator.cjs +10 -1
- package/dist/blockchain/wallets/account/creator.cjs.map +1 -0
- package/dist/blockchain/wallets/account/creator.js +10 -1
- package/dist/blockchain/wallets/account/creator.js.map +1 -0
- package/dist/blockchain/wallets/account/eoa.cjs +11 -1
- package/dist/blockchain/wallets/account/eoa.cjs.map +1 -0
- package/dist/blockchain/wallets/account/eoa.js +11 -1
- package/dist/blockchain/wallets/account/eoa.js.map +1 -0
- package/dist/blockchain/wallets/account/passkey.cjs +9 -1
- package/dist/blockchain/wallets/account/passkey.cjs.map +1 -0
- package/dist/blockchain/wallets/account/passkey.js +9 -1
- package/dist/blockchain/wallets/account/passkey.js.map +1 -0
- package/dist/blockchain/wallets/account/signer.cjs +9 -1
- package/dist/blockchain/wallets/account/signer.cjs.map +1 -0
- package/dist/blockchain/wallets/account/signer.js +9 -1
- package/dist/blockchain/wallets/account/signer.js.map +1 -0
- package/dist/blockchain/wallets/account/strategy.cjs +1 -1
- package/dist/blockchain/wallets/account/strategy.cjs.map +1 -0
- package/dist/blockchain/wallets/account/strategy.js +1 -0
- package/dist/blockchain/wallets/account/strategy.js.map +1 -0
- package/dist/blockchain/wallets/clientDecorator.cjs +12 -1
- package/dist/blockchain/wallets/clientDecorator.cjs.map +1 -0
- package/dist/blockchain/wallets/clientDecorator.js +12 -1
- package/dist/blockchain/wallets/clientDecorator.js.map +1 -0
- package/dist/blockchain/wallets/index.cjs +10 -1
- package/dist/blockchain/wallets/index.cjs.map +1 -0
- package/dist/blockchain/wallets/index.js +10 -1
- package/dist/blockchain/wallets/index.js.map +1 -0
- package/dist/blockchain/wallets/paymaster.cjs +10 -1
- package/dist/blockchain/wallets/paymaster.cjs.map +1 -0
- package/dist/blockchain/wallets/paymaster.js +10 -1
- package/dist/blockchain/wallets/paymaster.js.map +1 -0
- package/dist/blockchain/wallets/service.cjs +16 -1
- package/dist/blockchain/wallets/service.cjs.map +1 -0
- package/dist/blockchain/wallets/service.js +16 -1
- package/dist/blockchain/wallets/service.js.map +1 -0
- package/dist/chunk-2HB65Y7D.js +79 -0
- package/dist/chunk-2HB65Y7D.js.map +1 -0
- package/dist/chunk-3EQHAQXO.js +112 -0
- package/dist/chunk-3EQHAQXO.js.map +1 -0
- package/dist/chunk-3R6PW6HY.js +30 -0
- package/dist/chunk-3R6PW6HY.js.map +1 -0
- package/dist/chunk-4NTNOPLE.cjs +14 -0
- package/dist/chunk-4NTNOPLE.cjs.map +1 -0
- package/dist/chunk-535JCXYA.js +44 -0
- package/dist/chunk-535JCXYA.js.map +1 -0
- package/dist/chunk-5EHCB2XX.cjs +22 -0
- package/dist/chunk-5EHCB2XX.cjs.map +1 -0
- package/dist/{chunk-XJGFG3RT.cjs → chunk-5MG5CIEX.cjs} +13 -1
- package/dist/chunk-5MG5CIEX.cjs.map +1 -0
- package/dist/chunk-5URMCCO6.js +9 -0
- package/dist/chunk-5URMCCO6.js.map +1 -0
- package/dist/chunk-5WVQ7J3E.cjs +369 -0
- package/dist/chunk-5WVQ7J3E.cjs.map +1 -0
- package/dist/chunk-6NJVFL2X.js +60 -0
- package/dist/chunk-6NJVFL2X.js.map +1 -0
- package/dist/chunk-77GT6B5L.cjs +79 -0
- package/dist/chunk-77GT6B5L.cjs.map +1 -0
- package/dist/chunk-7KTQNIAZ.cjs +112 -0
- package/dist/chunk-7KTQNIAZ.cjs.map +1 -0
- package/dist/chunk-A6KV4FS7.cjs +99 -0
- package/dist/chunk-A6KV4FS7.cjs.map +1 -0
- package/dist/chunk-AKSNZLJ2.cjs +39 -0
- package/dist/chunk-AKSNZLJ2.cjs.map +1 -0
- package/dist/chunk-ASIPMVRQ.js +90 -0
- package/dist/chunk-ASIPMVRQ.js.map +1 -0
- package/dist/chunk-BARW756O.js +27 -0
- package/dist/chunk-BARW756O.js.map +1 -0
- package/dist/chunk-BEKNEEJQ.js +36 -0
- package/dist/chunk-BEKNEEJQ.js.map +1 -0
- package/dist/chunk-BQ5BBWL3.cjs +93 -0
- package/dist/chunk-BQ5BBWL3.cjs.map +1 -0
- package/dist/chunk-BXSAJOIV.cjs +90 -0
- package/dist/chunk-BXSAJOIV.cjs.map +1 -0
- package/dist/chunk-DTEA33DF.cjs +59 -0
- package/dist/chunk-DTEA33DF.cjs.map +1 -0
- package/dist/chunk-DYO4HODM.cjs +36 -0
- package/dist/chunk-DYO4HODM.cjs.map +1 -0
- package/dist/chunk-ECIGZ74W.js +123 -0
- package/dist/chunk-ECIGZ74W.js.map +1 -0
- package/dist/chunk-EPEGJY6N.cjs +9 -0
- package/dist/chunk-EPEGJY6N.cjs.map +1 -0
- package/dist/chunk-EQSMHR77.js +30 -0
- package/dist/chunk-EQSMHR77.js.map +1 -0
- package/dist/chunk-FSIMJYXR.js +36 -0
- package/dist/chunk-FSIMJYXR.js.map +1 -0
- package/dist/chunk-FXGOVLZW.cjs +9 -0
- package/dist/chunk-FXGOVLZW.cjs.map +1 -0
- package/dist/chunk-IKVGZHGP.cjs +44 -0
- package/dist/chunk-IKVGZHGP.cjs.map +1 -0
- package/dist/chunk-IYBOBUTI.js +66 -0
- package/dist/chunk-IYBOBUTI.js.map +1 -0
- package/dist/chunk-JOB7STIS.js +9 -0
- package/dist/chunk-JOB7STIS.js.map +1 -0
- package/dist/chunk-JSFGHJTS.js +82 -0
- package/dist/chunk-JSFGHJTS.js.map +1 -0
- package/dist/chunk-KHROQTVY.js +1 -0
- package/dist/chunk-KHROQTVY.js.map +1 -0
- package/dist/chunk-LGYR5QB5.cjs +66 -0
- package/dist/chunk-LGYR5QB5.cjs.map +1 -0
- package/dist/chunk-MILDB23W.js +14 -0
- package/dist/chunk-MILDB23W.js.map +1 -0
- package/dist/chunk-N6DG5EZG.cjs +156 -0
- package/dist/chunk-N6DG5EZG.cjs.map +1 -0
- package/dist/chunk-O3YQNP7C.js +99 -0
- package/dist/chunk-O3YQNP7C.js.map +1 -0
- package/dist/chunk-O6IFYHDP.cjs +36 -0
- package/dist/chunk-O6IFYHDP.cjs.map +1 -0
- package/dist/chunk-OGA3YDWS.cjs +112 -0
- package/dist/chunk-OGA3YDWS.cjs.map +1 -0
- package/dist/chunk-ON4DOYVD.js +369 -0
- package/dist/chunk-ON4DOYVD.js.map +1 -0
- package/dist/chunk-OSQSSEFB.cjs +123 -0
- package/dist/chunk-OSQSSEFB.cjs.map +1 -0
- package/dist/chunk-PF7Q7DFL.cjs +82 -0
- package/dist/chunk-PF7Q7DFL.cjs.map +1 -0
- package/dist/chunk-PVFA6PBX.cjs +60 -0
- package/dist/chunk-PVFA6PBX.cjs.map +1 -0
- package/dist/chunk-QFMVSQA5.js +93 -0
- package/dist/chunk-QFMVSQA5.js.map +1 -0
- package/dist/chunk-QJ3BSVGV.js +36 -0
- package/dist/chunk-QJ3BSVGV.js.map +1 -0
- package/dist/chunk-QZWWILWQ.cjs +36 -0
- package/dist/chunk-QZWWILWQ.cjs.map +1 -0
- package/dist/chunk-SEA2NTT5.js +22 -0
- package/dist/chunk-SEA2NTT5.js.map +1 -0
- package/dist/chunk-SMDX2MXU.js +13 -0
- package/dist/chunk-SMDX2MXU.js.map +1 -0
- package/dist/chunk-TDJDKTRS.js +156 -0
- package/dist/chunk-TDJDKTRS.js.map +1 -0
- package/dist/chunk-U4OBHCIP.js +59 -0
- package/dist/chunk-U4OBHCIP.js.map +1 -0
- package/dist/chunk-UQKE6R5W.cjs +27 -0
- package/dist/chunk-UQKE6R5W.cjs.map +1 -0
- package/dist/chunk-UZGHOTKZ.js +112 -0
- package/dist/chunk-UZGHOTKZ.js.map +1 -0
- package/dist/chunk-W3Y26K52.cjs +41 -0
- package/dist/chunk-W3Y26K52.cjs.map +1 -0
- package/dist/chunk-YVORZRCJ.js +39 -0
- package/dist/chunk-YVORZRCJ.js.map +1 -0
- package/dist/chunk-YWCXHOSD.cjs +30 -0
- package/dist/chunk-YWCXHOSD.cjs.map +1 -0
- package/dist/chunk-Z4DWICCM.js +41 -0
- package/dist/chunk-Z4DWICCM.js.map +1 -0
- package/dist/chunk-ZN42AA2G.cjs +1 -0
- package/dist/chunk-ZN42AA2G.cjs.map +1 -0
- package/dist/chunk-ZOXKITU4.cjs +30 -0
- package/dist/chunk-ZOXKITU4.cjs.map +1 -0
- package/dist/error/index.cjs +25 -1
- package/dist/error/index.cjs.map +1 -0
- package/dist/error/index.js +25 -1
- package/dist/error/index.js.map +1 -0
- package/dist/error/processor.cjs +9 -1
- package/dist/error/processor.cjs.map +1 -0
- package/dist/error/processor.js +9 -1
- package/dist/error/processor.js.map +1 -0
- package/dist/index.cjs +86 -1
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +86 -1
- package/dist/index.js.map +1 -0
- package/dist/services/index.cjs +11 -1
- package/dist/services/index.cjs.map +1 -0
- package/dist/services/index.js +11 -1
- package/dist/services/index.js.map +1 -0
- package/dist/services/logger.cjs +10 -1
- package/dist/services/logger.cjs.map +1 -0
- package/dist/services/logger.js +10 -1
- package/dist/services/logger.js.map +1 -0
- package/dist/types/internal.cjs +18 -1
- package/dist/types/internal.cjs.map +1 -0
- package/dist/types/internal.js +18 -1
- package/dist/types/internal.js.map +1 -0
- package/dist/types/params.cjs +1 -1
- package/dist/types/params.cjs.map +1 -0
- package/dist/types/params.js +1 -0
- package/dist/types/params.js.map +1 -0
- package/dist/types/schema.cjs +16 -1
- package/dist/types/schema.cjs.map +1 -0
- package/dist/types/schema.js +16 -1
- package/dist/types/schema.js.map +1 -0
- package/dist/types/service.cjs +1 -1
- package/dist/types/service.cjs.map +1 -0
- package/dist/types/service.js +1 -0
- package/dist/types/service.js.map +1 -0
- package/dist/types/token.cjs +1 -1
- package/dist/types/token.cjs.map +1 -0
- package/dist/types/token.js +1 -0
- package/dist/types/token.js.map +1 -0
- package/dist/utils/api.cjs +9 -1
- package/dist/utils/api.cjs.map +1 -0
- package/dist/utils/api.js +9 -1
- package/dist/utils/api.js.map +1 -0
- package/dist/utils/blockchain.cjs +7 -1
- package/dist/utils/blockchain.cjs.map +1 -0
- package/dist/utils/blockchain.js +7 -1
- package/dist/utils/blockchain.js.map +1 -0
- package/dist/utils/constants.cjs +19 -1
- package/dist/utils/constants.cjs.map +1 -0
- package/dist/utils/constants.js +19 -1
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/environment.cjs +7 -1
- package/dist/utils/environment.cjs.map +1 -0
- package/dist/utils/environment.js +7 -1
- package/dist/utils/environment.js.map +1 -0
- package/dist/utils/helpers.cjs +9 -1
- package/dist/utils/helpers.cjs.map +1 -0
- package/dist/utils/helpers.js +9 -1
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/signer.cjs +10 -1
- package/dist/utils/signer.cjs.map +1 -0
- package/dist/utils/signer.js +10 -1
- package/dist/utils/signer.js.map +1 -0
- package/dist/utils/test.cjs +27 -1
- package/dist/utils/test.cjs.map +1 -0
- package/dist/utils/test.js +27 -1
- package/dist/utils/test.js.map +1 -0
- package/package.json +4 -4
- package/dist/chunk-27US7ZBX.js +0 -1
- package/dist/chunk-2GS5TXEY.cjs +0 -1
- package/dist/chunk-2R6HK64N.cjs +0 -1
- package/dist/chunk-3F6P4HUZ.js +0 -1
- package/dist/chunk-4SPA557P.js +0 -0
- package/dist/chunk-5M3MSPHK.cjs +0 -1
- package/dist/chunk-6DE5YEO5.cjs +0 -1
- package/dist/chunk-7AVDZZGD.cjs +0 -1
- package/dist/chunk-7FXFOOQU.cjs +0 -1
- package/dist/chunk-7JAT6GQU.js +0 -1
- package/dist/chunk-ATQ4WGCW.js +0 -1
- package/dist/chunk-B3LJJZXD.cjs +0 -2
- package/dist/chunk-BJZQA5VC.js +0 -1
- package/dist/chunk-BXXREMNR.cjs +0 -1
- package/dist/chunk-C3VZY7VJ.js +0 -1
- package/dist/chunk-CPYNP4XI.js +0 -1
- package/dist/chunk-CUTQYF3F.js +0 -1
- package/dist/chunk-D4NDUT36.js +0 -1
- package/dist/chunk-DIDKPOO2.cjs +0 -1
- package/dist/chunk-ETVJGLNY.js +0 -1
- package/dist/chunk-FHNNZVNU.js +0 -1
- package/dist/chunk-FIJ3CBJ4.js +0 -3
- package/dist/chunk-G57LROTD.js +0 -1
- package/dist/chunk-GB35YMN4.cjs +0 -1
- package/dist/chunk-H4CMXNVK.js +0 -1
- package/dist/chunk-IQTGPM2U.cjs +0 -1
- package/dist/chunk-KYPTGHC6.cjs +0 -1
- package/dist/chunk-LMVY4C4Y.js +0 -1
- package/dist/chunk-M4K3IZTT.cjs +0 -1
- package/dist/chunk-NLGILHJS.js +0 -1
- package/dist/chunk-O2ACORII.cjs +0 -1
- package/dist/chunk-OCJYX5QF.cjs +0 -1
- package/dist/chunk-ODAUWGUU.cjs +0 -1
- package/dist/chunk-PBUJXVQT.js +0 -1
- package/dist/chunk-PLRQBDYS.cjs +0 -1
- package/dist/chunk-PPTSNCSQ.cjs +0 -1
- package/dist/chunk-PZ6Q22YJ.js +0 -1
- package/dist/chunk-Q44P7MO7.cjs +0 -1
- package/dist/chunk-QVB3HE6Q.js +0 -2
- package/dist/chunk-S2XBSAGM.js +0 -1
- package/dist/chunk-SCXFZMLR.cjs +0 -1
- package/dist/chunk-STH2LE35.cjs +0 -1
- package/dist/chunk-SWWOVT47.cjs +0 -1
- package/dist/chunk-TZG6MROQ.js +0 -1
- package/dist/chunk-UG47CBKR.js +0 -1
- package/dist/chunk-UPURFW46.js +0 -1
- package/dist/chunk-WDM7PN4O.js +0 -1
- package/dist/chunk-WJ6XJMRD.cjs +0 -1
- package/dist/chunk-WTPE2I2Q.cjs +0 -1
- package/dist/chunk-XHSA4YTO.cjs +0 -3
- package/dist/chunk-XP6ESWVJ.js +0 -1
- package/dist/chunk-XQ2K2K23.cjs +0 -1
- package/dist/chunk-YBHSEZMB.js +0 -1
- package/dist/chunk-YZQJV2KA.cjs +0 -1
- package/dist/chunk-Z22H3MJS.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/blockchain/wallets/SendTransactionService.ts"],"names":[],"mappings":";AAGA;AAAA,EAGI;AAAA,EAEA;AAAA,OAKG;AAEP,SAAS,mBAAmB,uBAAuB;AAgB5C,IAAM,0BAAN,cAAsC,kBAAkB;AAAA,EAC3D,YACI,SACgB,WACA,OAChB,OAAO,gBAAgB,yBACzB;AACE,UAAM,SAAS,IAAI;AAJH;AACA;AAAA,EAIpB;AACJ;AAsBO,IAAM,2CAAN,cAAuD,wBAAwB;AAAA,EAClF,YACI,SACgB,WAChB,aACgB,MACA,OACA,OAAO,YAAY,MACnB,SAAS,YAAY,QACvC;AACE,UAAM,SAAS,WAAW,OAAO,gBAAgB,mCAAmC;AAPpE;AAEA;AACA;AACA;AACA;AAAA,EAGpB;AACJ;AAaO,IAAM,yBAAN,MAA6B;AAAA,EAChC,YACqB,QAIA,gCAAwD;AAAA,IACrE,eAAe;AAAA,IACf,gCAAgC;AAAA,EACpC,GACF;AARmB;AAIA;AAAA,EAIlB;AAAA,EAEH,MAAM,gBACF,SACA,SAA0C,CAAC,GAC/B;AACZ,UAAM,EAAE,eAAe,+BAA+B,IAAI,KAAK,UAAU,MAAM;AAE/E,UAAM,KAAK,aAAa,SAAS,QAAW,YAAY;AAExD,QAAI;AACJ,QAAI;AACA,aAAO,MAAM,KAAK,OAAO,OAAO,cAAc;AAAA,QAC1C,GAAG;AAAA,QACH,SAAS,KAAK,OAAO,OAAO;AAAA,QAC5B,OAAO,KAAK,OAAO,OAAO;AAAA,MAC9B,CAAC;AAAA,IACL,SAAS,GAAG;AACR,UAAI,aAAa,WAAW;AACxB,cAAM,IAAI,wBAAwB,EAAE,SAAS,GAAG,MAAM;AAAA,MAC1D;AACA,YAAM;AAAA,IACV;AAEA,QAAI;AACA,YAAM,UAAU,MAAM,KAAK,OAAO,OAAO,0BAA0B;AAAA,QAC/D;AAAA,QACA;AAAA,QACA,SAAS;AAAA,MACb,CAAC;AACD,aAAO,MAAM,KAAK,cAAc,SAAS,OAAO;AAAA,IACpD,SAAS,GAAG;AACR,UAAI,aAAa,WAAW;AACxB,cAAM,IAAI,wBAAwB,EAAE,SAAS,GAAG,cAAc;AAAA,MAClE;AACA,YAAM;AAAA,IACV;AAAA,EACJ;AAAA,EAEQ,UAAU,QAAiE;AAC/E,WAAO;AAAA,MACH,GAAG,KAAK;AAAA,MACR,GAAG;AAAA,IACP;AAAA,EACJ;AAAA,EAEA,MAAc,cAAc,SAA6B,SAA+C;AACpG,QAAI,QAAQ,WAAW,YAAY;AAE/B,YAAM,KAAK,aAAa,SAAS,QAAQ,iBAAiB,WAAW;AAErE,YAAM,IAAI;AAAA,QACN;AAAA,QACA,IAAI,8BAA8B,EAAE,KAAK,QAAQ,KAAY,cAAc,QAAQ,aAAa,CAAC;AAAA,QACjG,IAAI,8BAA8B,EAAE,KAAK,QAAQ,KAAY,cAAc,QAAQ,aAAa,CAAC;AAAA,QACjG,QAAQ;AAAA,QACR;AAAA,MACJ;AAAA,IACJ;AACA,WAAO,QAAQ;AAAA,EACnB;AAAA,EAEA,MAAc,aACV,SACA,iBACA,OACF;AACE,QAAI;AACA,YAAM,KAAK,OAAO,OAAO,iBAAiB;AAAA,QACtC,GAAG;AAAA,QACH,SAAS,KAAK,OAAO,OAAO,QAAQ;AAAA,QACpC,OAAO,KAAK,OAAO,OAAO;AAAA,MAC9B,CAAC;AAAA,IACL,SAAS,GAAG;AACR,UAAI,aAAa,WAAW;AACxB,cAAM,cAAc,EAAE,KAAK,CAAC,QAAQ,eAAe,6BAA6B;AAChF,YAAI,uBAAuB,+BAA+B;AACtD,gBAAM,IAAI;AAAA,YACN,YAAY;AAAA,YACZ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACJ;AAAA,QACJ;AACA,cAAM,IAAI,wBAAwB,EAAE,SAAS,GAAG,KAAK;AAAA,MACzD;AACA,YAAM;AAAA,IACV;AAAA,EACJ;AACJ","sourcesContent":["import type { SmartAccountClient } from \"permissionless\";\nimport type { EntryPoint } from \"permissionless/_types/types\";\nimport type { SmartAccount } from \"permissionless/accounts\";\nimport {\n type Abi,\n type Address,\n BaseError,\n type Chain,\n ContractFunctionRevertedError,\n type Hex,\n type PublicClient,\n type TransactionReceipt,\n type Transport,\n} from \"viem\";\n\nimport { CrossmintSDKError, WalletErrorCode } from \"@crossmint/client-sdk-base\";\n\nexport type TransactionServiceTransactionRequest = {\n address: Address;\n abi: Abi;\n functionName: string;\n args: any;\n value?: bigint;\n};\n\nexport type SendTransactionFailureStage = \"simulation\" | \"send\" | \"confirmation\" | \"execution\";\n\n/**\n * Error thrown when a transaction fails to send.\n * @param viemError The error thrown by the viem client. See https://viem.sh/docs/glossary/errors.html\n */\nexport class EVMSendTransactionError extends CrossmintSDKError {\n constructor(\n message: string,\n public readonly viemError: BaseError,\n public readonly stage: SendTransactionFailureStage,\n code = WalletErrorCode.SEND_TRANSACTION_FAILED\n ) {\n super(message, code);\n }\n}\n\n/**\n * Error thrown when a transaction fails due to a contract execution error.\n * @param viemError The error thrown by the viem client. See https://viem.sh/docs/glossary/errors.html\n * @param data The name and arguments of the revert error from the provided ABI\n * @param reason The revert error if it is a string and not an ABI error\n * @example\n * try {\n * await wallet.executeContract({\n * address: contractAddress,\n * abi,\n * functionName: \"mintNFT\",\n * args: [recipientAddress],\n * });\n * } catch (e) {\n * if (e instanceof SendTransactionExecutionRevertedError) {\n * alert(`Transaction reverted: ${e.message}`);\n * }\n * throw e;\n * }\n */\nexport class EVMSendTransactionExecutionRevertedError extends EVMSendTransactionError {\n constructor(\n message: string,\n public readonly viemError: BaseError,\n revertError: ContractFunctionRevertedError,\n public readonly txId: string | undefined,\n public readonly stage: SendTransactionFailureStage,\n public readonly data = revertError.data,\n public readonly reason = revertError.reason\n ) {\n super(message, viemError, stage, WalletErrorCode.SEND_TRANSACTION_EXECUTION_REVERTED);\n }\n}\n\nexport interface SendTransactionOptions {\n /**\n * The number of confirmations to wait for before yielding the transaction hash.\n */\n confirmations: number;\n /**\n * The timeout in milliseconds to wait for a transaction to confirm before throwing an error.\n */\n transactionConfirmationTimeout: number;\n}\n\nexport class SendTransactionService {\n constructor(\n private readonly client: {\n public: PublicClient;\n wallet: SmartAccountClient<EntryPoint, Transport, Chain, SmartAccount<EntryPoint>>;\n },\n private readonly defaultSendTransactionOptions: SendTransactionOptions = {\n confirmations: 2,\n transactionConfirmationTimeout: 30_000,\n }\n ) {}\n\n async sendTransaction(\n request: TransactionServiceTransactionRequest,\n config: Partial<SendTransactionOptions> = {}\n ): Promise<Hex> {\n const { confirmations, transactionConfirmationTimeout } = this.getConfig(config);\n\n await this.simulateCall(request, undefined, \"simulation\");\n\n let hash;\n try {\n hash = await this.client.wallet.writeContract({\n ...request,\n account: this.client.wallet.account,\n chain: this.client.wallet.chain,\n });\n } catch (e) {\n if (e instanceof BaseError) {\n throw new EVMSendTransactionError(e.message, e, \"send\");\n }\n throw e;\n }\n\n try {\n const receipt = await this.client.public.waitForTransactionReceipt({\n hash,\n confirmations,\n timeout: transactionConfirmationTimeout,\n });\n return await this.handleReceipt(receipt, request);\n } catch (e) {\n if (e instanceof BaseError) {\n throw new EVMSendTransactionError(e.message, e, \"confirmation\");\n }\n throw e;\n }\n }\n\n private getConfig(config: Partial<SendTransactionOptions>): SendTransactionOptions {\n return {\n ...this.defaultSendTransactionOptions,\n ...config,\n };\n }\n\n private async handleReceipt(receipt: TransactionReceipt, request: TransactionServiceTransactionRequest) {\n if (receipt.status === \"reverted\") {\n // This should revert and throw the full reason\n await this.simulateCall(request, receipt.transactionHash, \"execution\");\n // Otherwise, throw a generic error (this should practically never happen)\n throw new EVMSendTransactionExecutionRevertedError(\n \"Transaction reverted but unable to detect the reason\",\n new ContractFunctionRevertedError({ abi: request.abi as Abi, functionName: request.functionName }),\n new ContractFunctionRevertedError({ abi: request.abi as Abi, functionName: request.functionName }),\n receipt.transactionHash,\n \"execution\"\n );\n }\n return receipt.transactionHash;\n }\n\n private async simulateCall(\n request: TransactionServiceTransactionRequest,\n passthroughTxId: string | undefined,\n stage: SendTransactionFailureStage\n ) {\n try {\n await this.client.public.simulateContract({\n ...request,\n account: this.client.wallet.account.address,\n chain: this.client.public.chain,\n });\n } catch (e) {\n if (e instanceof BaseError) {\n const revertError = e.walk((err) => err instanceof ContractFunctionRevertedError);\n if (revertError instanceof ContractFunctionRevertedError) {\n throw new EVMSendTransactionExecutionRevertedError(\n revertError.message,\n e,\n revertError,\n passthroughTxId,\n stage\n );\n }\n throw new EVMSendTransactionError(e.message, e, stage);\n }\n throw e;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkDYO4HODMcjs = require('./chunk-DYO4HODM.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkOGA3YDWScjs = require('./chunk-OGA3YDWS.cjs');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
var _chunkPVFA6PBXcjs = require('./chunk-PVFA6PBX.cjs');
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
var _chunkUQKE6R5Wcjs = require('./chunk-UQKE6R5W.cjs');
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
var _chunk5EHCB2XXcjs = require('./chunk-5EHCB2XX.cjs');
|
|
19
|
+
|
|
20
|
+
// src/blockchain/wallets/service.ts
|
|
21
|
+
var _permissionless = require('permissionless');
|
|
22
|
+
var _pimlico = require('permissionless/clients/pimlico');
|
|
23
|
+
var _viem = require('viem');
|
|
24
|
+
var _commonsdkbase = require('@crossmint/common-sdk-base');
|
|
25
|
+
var SmartWalletService = class {
|
|
26
|
+
constructor(crossmintService, accountConfigService, accountCreator, clientDecorator) {
|
|
27
|
+
this.crossmintService = crossmintService;
|
|
28
|
+
this.accountConfigService = accountConfigService;
|
|
29
|
+
this.accountCreator = accountCreator;
|
|
30
|
+
this.clientDecorator = clientDecorator;
|
|
31
|
+
}
|
|
32
|
+
async getOrCreate(user, chain, walletParams) {
|
|
33
|
+
const {
|
|
34
|
+
config: { entryPointVersion, kernelVersion, existing, userWithId },
|
|
35
|
+
cached
|
|
36
|
+
} = await this.accountConfigService.get(user, chain);
|
|
37
|
+
const publicClient = _viem.createPublicClient.call(void 0, { transport: _viem.http.call(void 0, _chunkUQKE6R5Wcjs.getAlchemyRPC.call(void 0, chain)) });
|
|
38
|
+
const { account, signerConfig } = await this.accountCreator.get({
|
|
39
|
+
chain,
|
|
40
|
+
walletParams,
|
|
41
|
+
publicClient,
|
|
42
|
+
user: userWithId,
|
|
43
|
+
entryPoint: entryPointVersion === "v0.6" ? _permissionless.ENTRYPOINT_ADDRESS_V06 : _permissionless.ENTRYPOINT_ADDRESS_V07,
|
|
44
|
+
kernelVersion,
|
|
45
|
+
existing
|
|
46
|
+
});
|
|
47
|
+
if (existing == null) {
|
|
48
|
+
await this.crossmintService.idempotentCreateSmartWallet(user, {
|
|
49
|
+
type: _chunk5EHCB2XXcjs.ZERO_DEV_TYPE,
|
|
50
|
+
smartContractWalletAddress: account.address,
|
|
51
|
+
signerData: signerConfig.data,
|
|
52
|
+
version: _chunk5EHCB2XXcjs.CURRENT_VERSION,
|
|
53
|
+
baseLayer: "evm",
|
|
54
|
+
chainId: _commonsdkbase.blockchainToChainId.call(void 0, chain),
|
|
55
|
+
entryPointVersion,
|
|
56
|
+
kernelVersion
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
if (!cached) {
|
|
60
|
+
this.accountConfigService.cache({
|
|
61
|
+
entryPointVersion,
|
|
62
|
+
kernelVersion,
|
|
63
|
+
user: userWithId,
|
|
64
|
+
existing: { address: account.address, signerConfig }
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return new (0, _chunkOGA3YDWScjs.EVMSmartWallet)(
|
|
68
|
+
{ wallet: this.smartAccountClient(chain, account, user), public: publicClient },
|
|
69
|
+
chain,
|
|
70
|
+
this.crossmintService
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
smartAccountClient(chain, account, user) {
|
|
74
|
+
const transport = _viem.http.call(void 0, _chunkUQKE6R5Wcjs.getPimlicoBundlerRPC.call(void 0, chain));
|
|
75
|
+
const bundlerConfig = { chain: _chunkPVFA6PBXcjs.viemNetworks[chain], entryPoint: account.entryPoint };
|
|
76
|
+
const bundlerClient = _pimlico.createPimlicoBundlerClient.call(void 0, { ...bundlerConfig, transport });
|
|
77
|
+
const smartAccountClient = _permissionless.createSmartAccountClient.call(void 0, {
|
|
78
|
+
account,
|
|
79
|
+
bundlerTransport: transport,
|
|
80
|
+
...bundlerConfig,
|
|
81
|
+
..._chunkDYO4HODMcjs.usePaymaster.call(void 0, chain) && _chunkDYO4HODMcjs.paymasterMiddleware.call(void 0, {
|
|
82
|
+
bundlerClient,
|
|
83
|
+
entryPoint: account.entryPoint,
|
|
84
|
+
chain,
|
|
85
|
+
walletService: this.crossmintService,
|
|
86
|
+
user
|
|
87
|
+
})
|
|
88
|
+
});
|
|
89
|
+
return this.clientDecorator.decorate({
|
|
90
|
+
crossmintChain: chain,
|
|
91
|
+
smartAccountClient
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
exports.SmartWalletService = SmartWalletService;
|
|
99
|
+
//# sourceMappingURL=chunk-A6KV4FS7.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/blockchain/wallets/service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,SAAS,wBAAwB,wBAAwB,gCAAgC;AACzF,SAAS,kCAAkC;AAE3C,SAA6B,oBAAoB,YAAY;AAE7D,SAAS,2BAA2B;AAc7B,IAAM,qBAAN,MAAyB;AAAA,EAC5B,YACqB,kBACA,sBACA,gBACA,iBACnB;AAJmB;AACA;AACA;AACA;AAAA,EAClB;AAAA,EAEH,MAAa,YACT,MACA,OACA,cACuB;AACvB,UAAM;AAAA,MACF,QAAQ,EAAE,mBAAmB,eAAe,UAAU,WAAW;AAAA,MACjE;AAAA,IACJ,IAAI,MAAM,KAAK,qBAAqB,IAAI,MAAM,KAAK;AAEnD,UAAM,eAAe,mBAAmB,EAAE,WAAW,KAAK,cAAc,KAAK,CAAC,EAAE,CAAC;AAEjF,UAAM,EAAE,SAAS,aAAa,IAAI,MAAM,KAAK,eAAe,IAAI;AAAA,MAC5D;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN,YAAY,sBAAsB,SAAS,yBAAyB;AAAA,MACpE;AAAA,MACA;AAAA,IACJ,CAAC;AAED,QAAI,YAAY,MAAM;AAClB,YAAM,KAAK,iBAAiB,4BAA4B,MAAM;AAAA,QAC1D,MAAM;AAAA,QACN,4BAA4B,QAAQ;AAAA,QACpC,YAAY,aAAa;AAAA,QACzB,SAAS;AAAA,QACT,WAAW;AAAA,QACX,SAAS,oBAAoB,KAAK;AAAA,QAClC;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL;AAEA,QAAI,CAAC,QAAQ;AACT,WAAK,qBAAqB,MAAM;AAAA,QAC5B;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,UAAU,EAAE,SAAS,QAAQ,SAAS,aAAa;AAAA,MACvD,CAAC;AAAA,IACL;AAEA,WAAO,IAAI;AAAA,MACP,EAAE,QAAQ,KAAK,mBAAmB,OAAO,SAAS,IAAI,GAAG,QAAQ,aAAa;AAAA,MAC9E;AAAA,MACA,KAAK;AAAA,IACT;AAAA,EACJ;AAAA,EAEQ,mBACJ,OACA,SACA,MACiB;AACjB,UAAM,YAAY,KAAK,qBAAqB,KAAK,CAAC;AAClD,UAAM,gBAAgB,EAAE,OAAO,aAAa,KAAK,GAAG,YAAY,QAAQ,WAAW;AACnF,UAAM,gBAAgB,2BAA2B,EAAE,GAAG,eAAe,UAAU,CAAC;AAChF,UAAM,qBAAwC,yBAAyB;AAAA,MACnE;AAAA,MACA,kBAAkB;AAAA,MAClB,GAAG;AAAA,MACH,GAAI,aAAa,KAAK,KAClB,oBAAoB;AAAA,QAChB;AAAA,QACA,YAAY,QAAQ;AAAA,QACpB;AAAA,QACA,eAAe,KAAK;AAAA,QACpB;AAAA,MACJ,CAAC;AAAA,IACT,CAAC;AAED,WAAO,KAAK,gBAAgB,SAAS;AAAA,MACjC,gBAAgB;AAAA,MAChB;AAAA,IACJ,CAAC;AAAA,EACL;AACJ","sourcesContent":["import type { KernelSmartAccount } from \"@zerodev/sdk\";\nimport { ENTRYPOINT_ADDRESS_V06, ENTRYPOINT_ADDRESS_V07, createSmartAccountClient } from \"permissionless\";\nimport { createPimlicoBundlerClient } from \"permissionless/clients/pimlico\";\nimport type { EntryPoint } from \"permissionless/types/entrypoint\";\nimport { type HttpTransport, createPublicClient, http } from \"viem\";\n\nimport { blockchainToChainId } from \"@crossmint/common-sdk-base\";\n\nimport type { CrossmintWalletService } from \"../../api/CrossmintWalletService\";\nimport type { SmartWalletClient } from \"../../types/internal\";\nimport type { UserParams, WalletParams } from \"../../types/params\";\nimport { CURRENT_VERSION, ZERO_DEV_TYPE } from \"../../utils/constants\";\nimport { type SmartWalletChain, viemNetworks } from \"../chains\";\nimport { getAlchemyRPC, getPimlicoBundlerRPC } from \"../rpc\";\nimport { EVMSmartWallet } from \"./EVMSmartWallet\";\nimport type { AccountConfigService } from \"./account/config\";\nimport type { AccountCreator } from \"./account/creator\";\nimport type { ClientDecorator } from \"./clientDecorator\";\nimport { paymasterMiddleware, usePaymaster } from \"./paymaster\";\n\nexport class SmartWalletService {\n constructor(\n private readonly crossmintService: CrossmintWalletService,\n private readonly accountConfigService: AccountConfigService,\n private readonly accountCreator: AccountCreator,\n private readonly clientDecorator: ClientDecorator\n ) {}\n\n public async getOrCreate(\n user: UserParams,\n chain: SmartWalletChain,\n walletParams: WalletParams\n ): Promise<EVMSmartWallet> {\n const {\n config: { entryPointVersion, kernelVersion, existing, userWithId },\n cached,\n } = await this.accountConfigService.get(user, chain);\n\n const publicClient = createPublicClient({ transport: http(getAlchemyRPC(chain)) });\n\n const { account, signerConfig } = await this.accountCreator.get({\n chain,\n walletParams,\n publicClient,\n user: userWithId,\n entryPoint: entryPointVersion === \"v0.6\" ? ENTRYPOINT_ADDRESS_V06 : ENTRYPOINT_ADDRESS_V07,\n kernelVersion,\n existing,\n });\n\n if (existing == null) {\n await this.crossmintService.idempotentCreateSmartWallet(user, {\n type: ZERO_DEV_TYPE,\n smartContractWalletAddress: account.address,\n signerData: signerConfig.data,\n version: CURRENT_VERSION,\n baseLayer: \"evm\",\n chainId: blockchainToChainId(chain),\n entryPointVersion,\n kernelVersion,\n });\n }\n\n if (!cached) {\n this.accountConfigService.cache({\n entryPointVersion,\n kernelVersion,\n user: userWithId,\n existing: { address: account.address, signerConfig },\n });\n }\n\n return new EVMSmartWallet(\n { wallet: this.smartAccountClient(chain, account, user), public: publicClient },\n chain,\n this.crossmintService\n );\n }\n\n private smartAccountClient(\n chain: SmartWalletChain,\n account: KernelSmartAccount<EntryPoint, HttpTransport>,\n user: UserParams\n ): SmartWalletClient {\n const transport = http(getPimlicoBundlerRPC(chain));\n const bundlerConfig = { chain: viemNetworks[chain], entryPoint: account.entryPoint };\n const bundlerClient = createPimlicoBundlerClient({ ...bundlerConfig, transport });\n const smartAccountClient: SmartWalletClient = createSmartAccountClient({\n account,\n bundlerTransport: transport,\n ...bundlerConfig,\n ...(usePaymaster(chain) &&\n paymasterMiddleware({\n bundlerClient,\n entryPoint: account.entryPoint,\n chain,\n walletService: this.crossmintService,\n user,\n })),\n });\n\n return this.clientDecorator.decorate({\n crossmintChain: chain,\n smartAccountClient,\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunk5EHCB2XXcjs = require('./chunk-5EHCB2XX.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkBXSAJOIVcjs = require('./chunk-BXSAJOIV.cjs');
|
|
7
|
+
|
|
8
|
+
// src/error/processor.ts
|
|
9
|
+
var _viem = require('viem');
|
|
10
|
+
var ErrorProcessor = class {
|
|
11
|
+
constructor(logger) {
|
|
12
|
+
this.logger = logger;
|
|
13
|
+
}
|
|
14
|
+
map(error, fallback) {
|
|
15
|
+
this.record(error);
|
|
16
|
+
if (error instanceof _chunkBXSAJOIVcjs.SmartWalletError) {
|
|
17
|
+
return error;
|
|
18
|
+
}
|
|
19
|
+
if (error instanceof _viem.BaseError) {
|
|
20
|
+
return error;
|
|
21
|
+
}
|
|
22
|
+
return fallback;
|
|
23
|
+
}
|
|
24
|
+
record(error) {
|
|
25
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
26
|
+
this.logger.error(`Smart Wallet SDK Error: ${message}`, {
|
|
27
|
+
stack: error instanceof Error ? error.stack : void 0,
|
|
28
|
+
name: error instanceof Error ? error.name : "UnknownError",
|
|
29
|
+
details: _viem.stringify.call(void 0, error),
|
|
30
|
+
domain: window.location.hostname,
|
|
31
|
+
sdk_version: _chunk5EHCB2XXcjs.SDK_VERSION
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
exports.ErrorProcessor = ErrorProcessor;
|
|
39
|
+
//# sourceMappingURL=chunk-AKSNZLJ2.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/error/processor.ts"],"names":[],"mappings":";;;;;;;;AAAA,SAAS,WAAW,iBAAiB;AAO9B,IAAM,iBAAN,MAAqB;AAAA,EACxB,YAA6B,QAAmB;AAAnB;AAAA,EAAoB;AAAA,EAE1C,IAAI,OAAgB,UAA0D;AACjF,SAAK,OAAO,KAAK;AAEjB,QAAI,iBAAiB,kBAAkB;AACnC,aAAO;AAAA,IACX;AAGA,QAAI,iBAAiB,WAAW;AAC5B,aAAO;AAAA,IACX;AAEA,WAAO;AAAA,EACX;AAAA,EAEQ,OAAO,OAAgB;AAC3B,UAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,SAAK,OAAO,MAAM,2BAA2B,OAAO,IAAI;AAAA,MACpD,OAAO,iBAAiB,QAAQ,MAAM,QAAQ;AAAA,MAC9C,MAAM,iBAAiB,QAAQ,MAAM,OAAO;AAAA,MAC5C,SAAS,UAAU,KAAK;AAAA,MACxB,QAAQ,OAAO,SAAS;AAAA,MACxB,aAAa;AAAA,IACjB,CAAC;AAAA,EACL;AACJ","sourcesContent":["import { BaseError, stringify } from \"viem\";\n\nimport type { SDKLogger } from \"@crossmint/client-sdk-base\";\n\nimport { SmartWalletError } from \".\";\nimport { SDK_VERSION } from \"../utils/constants\";\n\nexport class ErrorProcessor {\n constructor(private readonly logger: SDKLogger) {}\n\n public map(error: unknown, fallback: SmartWalletError): SmartWalletError | BaseError {\n this.record(error);\n\n if (error instanceof SmartWalletError) {\n return error;\n }\n\n // Allow viem errors, which are generally pretty friendly.\n if (error instanceof BaseError) {\n return error;\n }\n\n return fallback;\n }\n\n private record(error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n this.logger.error(`Smart Wallet SDK Error: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n name: error instanceof Error ? error.name : \"UnknownError\",\n details: stringify(error),\n domain: window.location.hostname,\n sdk_version: SDK_VERSION,\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// src/error/index.ts
|
|
2
|
+
import { CrossmintSDKError, SmartWalletErrorCode } from "@crossmint/client-sdk-base";
|
|
3
|
+
var SmartWalletError = class extends CrossmintSDKError {
|
|
4
|
+
constructor(message, details, code = SmartWalletErrorCode.UNCATEGORIZED) {
|
|
5
|
+
super(message, code, details);
|
|
6
|
+
}
|
|
7
|
+
};
|
|
8
|
+
var AdminMismatchError = class extends SmartWalletError {
|
|
9
|
+
constructor(message, required, used) {
|
|
10
|
+
super(message, SmartWalletErrorCode.ADMIN_MISMATCH);
|
|
11
|
+
this.required = required;
|
|
12
|
+
this.used = used;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
var PasskeyMismatchError = class extends SmartWalletError {
|
|
16
|
+
constructor(message, required, used) {
|
|
17
|
+
super(message, SmartWalletErrorCode.PASSKEY_MISMATCH);
|
|
18
|
+
this.required = required;
|
|
19
|
+
this.used = used;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
var UserWalletAlreadyCreatedError = class extends SmartWalletError {
|
|
23
|
+
constructor(userId) {
|
|
24
|
+
super(`The user with userId ${userId.toString()} already has a wallet created for this project`);
|
|
25
|
+
this.code = SmartWalletErrorCode.USER_WALLET_ALREADY_CREATED;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
var PasskeyPromptError = class extends SmartWalletError {
|
|
29
|
+
constructor(passkeyName) {
|
|
30
|
+
super(
|
|
31
|
+
`Prompt was either cancelled or timed out for passkey ${passkeyName}`,
|
|
32
|
+
void 0,
|
|
33
|
+
SmartWalletErrorCode.PASSKEY_PROMPT
|
|
34
|
+
);
|
|
35
|
+
this.passkeyName = passkeyName;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var PasskeyRegistrationError = class extends SmartWalletError {
|
|
39
|
+
constructor(passkeyName) {
|
|
40
|
+
super(
|
|
41
|
+
`Registration for passkey ${passkeyName} failed, either the registration took too long, or passkey signature vaildation failed.`,
|
|
42
|
+
void 0,
|
|
43
|
+
SmartWalletErrorCode.PASSKEY_REGISTRATION
|
|
44
|
+
);
|
|
45
|
+
this.passkeyName = passkeyName;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
var PasskeyIncompatibleAuthenticatorError = class extends SmartWalletError {
|
|
49
|
+
constructor(passkeyName) {
|
|
50
|
+
super(
|
|
51
|
+
`User selected authenticator for passkey ${passkeyName} is not compatible with Crossmint's Smart Wallets.`,
|
|
52
|
+
void 0,
|
|
53
|
+
SmartWalletErrorCode.PASSKEY_INCOMPATIBLE_AUTHENTICATOR
|
|
54
|
+
);
|
|
55
|
+
this.passkeyName = passkeyName;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
var ConfigError = class extends SmartWalletError {
|
|
59
|
+
constructor(message) {
|
|
60
|
+
super(message, void 0, SmartWalletErrorCode.WALLET_CONFIG);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
var AdminAlreadyUsedError = class extends ConfigError {
|
|
64
|
+
constructor() {
|
|
65
|
+
super("This signer was already used to create another wallet. Please use a different signer.");
|
|
66
|
+
this.code = SmartWalletErrorCode.ADMIN_SIGNER_ALREADY_USED;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
var SmartWalletsNotEnabledError = class extends ConfigError {
|
|
70
|
+
constructor() {
|
|
71
|
+
super(
|
|
72
|
+
"Smart wallets are not enabled for this project. They can be enabled on the project settings page in the developer console."
|
|
73
|
+
);
|
|
74
|
+
this.code = SmartWalletErrorCode.SMART_WALLETS_NOT_ENABLED;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export {
|
|
79
|
+
SmartWalletError,
|
|
80
|
+
AdminMismatchError,
|
|
81
|
+
PasskeyMismatchError,
|
|
82
|
+
UserWalletAlreadyCreatedError,
|
|
83
|
+
PasskeyPromptError,
|
|
84
|
+
PasskeyRegistrationError,
|
|
85
|
+
PasskeyIncompatibleAuthenticatorError,
|
|
86
|
+
ConfigError,
|
|
87
|
+
AdminAlreadyUsedError,
|
|
88
|
+
SmartWalletsNotEnabledError
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=chunk-ASIPMVRQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/error/index.ts"],"sourcesContent":["import { CrossmintSDKError, SmartWalletErrorCode } from \"@crossmint/client-sdk-base\";\n\nimport type { PasskeyDisplay, SignerDisplay } from \"../types/service\";\n\nexport class SmartWalletError extends CrossmintSDKError {\n constructor(message: string, details?: string, code: SmartWalletErrorCode = SmartWalletErrorCode.UNCATEGORIZED) {\n super(message, code, details);\n }\n}\n\nexport class AdminMismatchError extends SmartWalletError {\n public readonly required: SignerDisplay;\n public readonly used?: SignerDisplay;\n\n constructor(message: string, required: SignerDisplay, used?: SignerDisplay) {\n super(message, SmartWalletErrorCode.ADMIN_MISMATCH);\n this.required = required;\n this.used = used;\n }\n}\n\nexport class PasskeyMismatchError extends SmartWalletError {\n public readonly required: PasskeyDisplay;\n public readonly used?: PasskeyDisplay;\n\n constructor(message: string, required: PasskeyDisplay, used?: PasskeyDisplay) {\n super(message, SmartWalletErrorCode.PASSKEY_MISMATCH);\n this.required = required;\n this.used = used;\n }\n}\n\nexport class UserWalletAlreadyCreatedError extends SmartWalletError {\n public readonly code = SmartWalletErrorCode.USER_WALLET_ALREADY_CREATED;\n\n constructor(userId: string) {\n super(`The user with userId ${userId.toString()} already has a wallet created for this project`);\n }\n}\n\nexport class PasskeyPromptError extends SmartWalletError {\n public passkeyName: string;\n\n constructor(passkeyName: string) {\n super(\n `Prompt was either cancelled or timed out for passkey ${passkeyName}`,\n undefined,\n SmartWalletErrorCode.PASSKEY_PROMPT\n );\n this.passkeyName = passkeyName;\n }\n}\n\nexport class PasskeyRegistrationError extends SmartWalletError {\n public passkeyName: string;\n\n constructor(passkeyName: string) {\n super(\n `Registration for passkey ${passkeyName} failed, either the registration took too long, or passkey signature vaildation failed.`,\n undefined,\n SmartWalletErrorCode.PASSKEY_REGISTRATION\n );\n this.passkeyName = passkeyName;\n }\n}\n\nexport class PasskeyIncompatibleAuthenticatorError extends SmartWalletError {\n public passkeyName: string;\n\n constructor(passkeyName: string) {\n super(\n `User selected authenticator for passkey ${passkeyName} is not compatible with Crossmint's Smart Wallets.`,\n undefined,\n SmartWalletErrorCode.PASSKEY_INCOMPATIBLE_AUTHENTICATOR\n );\n this.passkeyName = passkeyName;\n }\n}\n\nexport class ConfigError extends SmartWalletError {\n constructor(message: string) {\n super(message, undefined, SmartWalletErrorCode.WALLET_CONFIG);\n }\n}\n\nexport class AdminAlreadyUsedError extends ConfigError {\n public readonly code = SmartWalletErrorCode.ADMIN_SIGNER_ALREADY_USED;\n constructor() {\n super(\"This signer was already used to create another wallet. Please use a different signer.\");\n }\n}\n\nexport class SmartWalletsNotEnabledError extends ConfigError {\n public readonly code = SmartWalletErrorCode.SMART_WALLETS_NOT_ENABLED;\n constructor() {\n super(\n \"Smart wallets are not enabled for this project. They can be enabled on the project settings page in the developer console.\"\n );\n }\n}\n"],"mappings":";AAAA,SAAS,mBAAmB,4BAA4B;AAIjD,IAAM,mBAAN,cAA+B,kBAAkB;AAAA,EACpD,YAAY,SAAiB,SAAkB,OAA6B,qBAAqB,eAAe;AAC5G,UAAM,SAAS,MAAM,OAAO;AAAA,EAChC;AACJ;AAEO,IAAM,qBAAN,cAAiC,iBAAiB;AAAA,EAIrD,YAAY,SAAiB,UAAyB,MAAsB;AACxE,UAAM,SAAS,qBAAqB,cAAc;AAClD,SAAK,WAAW;AAChB,SAAK,OAAO;AAAA,EAChB;AACJ;AAEO,IAAM,uBAAN,cAAmC,iBAAiB;AAAA,EAIvD,YAAY,SAAiB,UAA0B,MAAuB;AAC1E,UAAM,SAAS,qBAAqB,gBAAgB;AACpD,SAAK,WAAW;AAChB,SAAK,OAAO;AAAA,EAChB;AACJ;AAEO,IAAM,gCAAN,cAA4C,iBAAiB;AAAA,EAGhE,YAAY,QAAgB;AACxB,UAAM,wBAAwB,OAAO,SAAS,CAAC,gDAAgD;AAHnG,SAAgB,OAAO,qBAAqB;AAAA,EAI5C;AACJ;AAEO,IAAM,qBAAN,cAAiC,iBAAiB;AAAA,EAGrD,YAAY,aAAqB;AAC7B;AAAA,MACI,wDAAwD,WAAW;AAAA,MACnE;AAAA,MACA,qBAAqB;AAAA,IACzB;AACA,SAAK,cAAc;AAAA,EACvB;AACJ;AAEO,IAAM,2BAAN,cAAuC,iBAAiB;AAAA,EAG3D,YAAY,aAAqB;AAC7B;AAAA,MACI,4BAA4B,WAAW;AAAA,MACvC;AAAA,MACA,qBAAqB;AAAA,IACzB;AACA,SAAK,cAAc;AAAA,EACvB;AACJ;AAEO,IAAM,wCAAN,cAAoD,iBAAiB;AAAA,EAGxE,YAAY,aAAqB;AAC7B;AAAA,MACI,2CAA2C,WAAW;AAAA,MACtD;AAAA,MACA,qBAAqB;AAAA,IACzB;AACA,SAAK,cAAc;AAAA,EACvB;AACJ;AAEO,IAAM,cAAN,cAA0B,iBAAiB;AAAA,EAC9C,YAAY,SAAiB;AACzB,UAAM,SAAS,QAAW,qBAAqB,aAAa;AAAA,EAChE;AACJ;AAEO,IAAM,wBAAN,cAAoC,YAAY;AAAA,EAEnD,cAAc;AACV,UAAM,uFAAuF;AAFjG,SAAgB,OAAO,qBAAqB;AAAA,EAG5C;AACJ;AAEO,IAAM,8BAAN,cAA0C,YAAY;AAAA,EAEzD,cAAc;AACV;AAAA,MACI;AAAA,IACJ;AAJJ,SAAgB,OAAO,qBAAqB;AAAA,EAK5C;AACJ;","names":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// src/blockchain/rpc.ts
|
|
2
|
+
import { blockchainToChainId } from "@crossmint/common-sdk-base";
|
|
3
|
+
var ALCHEMY_API_KEY = "-7M6vRDBDknwvMxnqah_jbcieWg0qad9";
|
|
4
|
+
var PIMLICO_API_KEY = "pim_9dKmQPxiTCvtbUNF7XFBbA";
|
|
5
|
+
var ALCHEMY_RPC_SUBDOMAIN = {
|
|
6
|
+
polygon: "polygon-mainnet",
|
|
7
|
+
"polygon-amoy": "polygon-amoy",
|
|
8
|
+
base: "base-mainnet",
|
|
9
|
+
"base-sepolia": "base-sepolia",
|
|
10
|
+
optimism: "opt-mainnet",
|
|
11
|
+
"optimism-sepolia": "opt-sepolia",
|
|
12
|
+
arbitrum: "arb-mainnet",
|
|
13
|
+
"arbitrum-sepolia": "arb-sepolia"
|
|
14
|
+
};
|
|
15
|
+
function getAlchemyRPC(chain) {
|
|
16
|
+
return `https://${ALCHEMY_RPC_SUBDOMAIN[chain]}.g.alchemy.com/v2/${ALCHEMY_API_KEY}`;
|
|
17
|
+
}
|
|
18
|
+
function getPimlicoBundlerRPC(chain) {
|
|
19
|
+
return `https://api.pimlico.io/v2/${blockchainToChainId(chain)}/rpc?apikey=${PIMLICO_API_KEY}`;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export {
|
|
23
|
+
ALCHEMY_RPC_SUBDOMAIN,
|
|
24
|
+
getAlchemyRPC,
|
|
25
|
+
getPimlicoBundlerRPC
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=chunk-BARW756O.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/blockchain/rpc.ts"],"sourcesContent":["import { blockchainToChainId } from \"@crossmint/common-sdk-base\";\n\nimport type { SmartWalletChain } from \"./chains\";\n\nconst ALCHEMY_API_KEY = \"-7M6vRDBDknwvMxnqah_jbcieWg0qad9\";\nconst PIMLICO_API_KEY = \"pim_9dKmQPxiTCvtbUNF7XFBbA\";\n\nexport const ALCHEMY_RPC_SUBDOMAIN: Record<SmartWalletChain, string> = {\n polygon: \"polygon-mainnet\",\n \"polygon-amoy\": \"polygon-amoy\",\n base: \"base-mainnet\",\n \"base-sepolia\": \"base-sepolia\",\n optimism: \"opt-mainnet\",\n \"optimism-sepolia\": \"opt-sepolia\",\n arbitrum: \"arb-mainnet\",\n \"arbitrum-sepolia\": \"arb-sepolia\",\n};\n\nexport function getAlchemyRPC(chain: SmartWalletChain): string {\n return `https://${ALCHEMY_RPC_SUBDOMAIN[chain]}.g.alchemy.com/v2/${ALCHEMY_API_KEY}`;\n}\n\nexport function getPimlicoBundlerRPC(chain: SmartWalletChain): string {\n return `https://api.pimlico.io/v2/${blockchainToChainId(chain)}/rpc?apikey=${PIMLICO_API_KEY}`;\n}\n"],"mappings":";AAAA,SAAS,2BAA2B;AAIpC,IAAM,kBAAkB;AACxB,IAAM,kBAAkB;AAEjB,IAAM,wBAA0D;AAAA,EACnE,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,UAAU;AAAA,EACV,oBAAoB;AACxB;AAEO,SAAS,cAAc,OAAiC;AAC3D,SAAO,WAAW,sBAAsB,KAAK,CAAC,qBAAqB,eAAe;AACtF;AAEO,SAAS,qBAAqB,OAAiC;AAClE,SAAO,6BAA6B,oBAAoB,KAAK,CAAC,eAAe,eAAe;AAChG;","names":[]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SUPPORTED_ENTRYPOINT_VERSIONS,
|
|
3
|
+
SUPPORTED_KERNEL_VERSIONS
|
|
4
|
+
} from "./chunk-SEA2NTT5.js";
|
|
5
|
+
|
|
6
|
+
// src/types/internal.ts
|
|
7
|
+
function isSupportedKernelVersion(version) {
|
|
8
|
+
return SUPPORTED_KERNEL_VERSIONS.includes(version);
|
|
9
|
+
}
|
|
10
|
+
function isSupportedEntryPointVersion(version) {
|
|
11
|
+
return SUPPORTED_ENTRYPOINT_VERSIONS.includes(version);
|
|
12
|
+
}
|
|
13
|
+
function isPasskeyWalletParams(params) {
|
|
14
|
+
return "signer" in params && "type" in params.signer && params.signer.type === "PASSKEY";
|
|
15
|
+
}
|
|
16
|
+
function isPasskeyCreationContext(params) {
|
|
17
|
+
const signerIsPasskeyOrUndefined = params.existing == null || params.existing.signerConfig.type === "passkeys";
|
|
18
|
+
return isPasskeyWalletParams(params.walletParams) && signerIsPasskeyOrUndefined;
|
|
19
|
+
}
|
|
20
|
+
function isEOAWalletParams(params) {
|
|
21
|
+
return "signer" in params && ("type" in params.signer && params.signer.type === "VIEM_ACCOUNT" || "request" in params.signer && typeof params.signer.request === "function");
|
|
22
|
+
}
|
|
23
|
+
function isEOACreationContext(params) {
|
|
24
|
+
const signerIsEOAOrUndefined = params.existing == null || params.existing.signerConfig.type === "eoa";
|
|
25
|
+
return isEOAWalletParams(params.walletParams) && signerIsEOAOrUndefined;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export {
|
|
29
|
+
isSupportedKernelVersion,
|
|
30
|
+
isSupportedEntryPointVersion,
|
|
31
|
+
isPasskeyWalletParams,
|
|
32
|
+
isPasskeyCreationContext,
|
|
33
|
+
isEOAWalletParams,
|
|
34
|
+
isEOACreationContext
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=chunk-BEKNEEJQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types/internal.ts"],"sourcesContent":["import type { KernelSmartAccount } from \"@zerodev/sdk\";\nimport type { SmartAccountClient } from \"permissionless\";\nimport type { SmartAccount } from \"permissionless/accounts\";\nimport type { EntryPoint } from \"permissionless/types/entrypoint\";\nimport type { Address, Chain, HttpTransport, PublicClient } from \"viem\";\n\nimport type { SmartWalletChain } from \"../blockchain/chains\";\nimport type { EOASignerConfig, PasskeySignerConfig, SignerConfig } from \"../blockchain/wallets/account/signer\";\nimport { SUPPORTED_ENTRYPOINT_VERSIONS, SUPPORTED_KERNEL_VERSIONS } from \"../utils/constants\";\nimport type { ExternalSigner, PasskeySigner, UserParams, WalletParams } from \"./params\";\n\nexport type SupportedKernelVersion = (typeof SUPPORTED_KERNEL_VERSIONS)[number];\nexport function isSupportedKernelVersion(version: string): version is SupportedKernelVersion {\n return SUPPORTED_KERNEL_VERSIONS.includes(version as any);\n}\n\nexport type SupportedEntryPointVersion = (typeof SUPPORTED_ENTRYPOINT_VERSIONS)[number];\nexport function isSupportedEntryPointVersion(version: string): version is SupportedEntryPointVersion {\n return SUPPORTED_ENTRYPOINT_VERSIONS.includes(version as any);\n}\n\nexport interface PreExistingWalletProperties {\n signerConfig: SignerConfig;\n address: Address;\n}\n\nexport interface WalletCreationContext {\n user: UserParams & { id: string };\n chain: SmartWalletChain;\n publicClient: PublicClient<HttpTransport>;\n walletParams: WalletParams;\n entryPoint: EntryPoint;\n kernelVersion: SupportedKernelVersion;\n existing?: PreExistingWalletProperties;\n}\n\nexport interface PasskeyCreationContext extends WalletCreationContext {\n walletParams: WalletParams & { signer: PasskeySigner };\n existing?: { signerConfig: PasskeySignerConfig; address: Address };\n}\n\nexport interface EOACreationContext extends WalletCreationContext {\n walletParams: WalletParams & { signer: ExternalSigner };\n existing?: { signerConfig: EOASignerConfig; address: Address };\n}\n\nexport function isPasskeyWalletParams(params: WalletParams): params is WalletParams & { signer: PasskeySigner } {\n return \"signer\" in params && \"type\" in params.signer && params.signer.type === \"PASSKEY\";\n}\n\nexport function isPasskeyCreationContext(params: WalletCreationContext): params is PasskeyCreationContext {\n const signerIsPasskeyOrUndefined = params.existing == null || params.existing.signerConfig.type === \"passkeys\";\n\n return isPasskeyWalletParams(params.walletParams) && signerIsPasskeyOrUndefined;\n}\n\nexport function isEOAWalletParams(params: WalletParams): params is WalletParams & { signer: ExternalSigner } {\n return (\n \"signer\" in params &&\n ((\"type\" in params.signer && params.signer.type === \"VIEM_ACCOUNT\") ||\n (\"request\" in params.signer && typeof params.signer.request === \"function\"))\n );\n}\n\nexport function isEOACreationContext(params: WalletCreationContext): params is EOACreationContext {\n const signerIsEOAOrUndefined = params.existing == null || params.existing.signerConfig.type === \"eoa\";\n\n return isEOAWalletParams(params.walletParams) && signerIsEOAOrUndefined;\n}\n\nexport interface AccountAndSigner {\n account: KernelSmartAccount<EntryPoint, HttpTransport>;\n signerConfig: SignerConfig;\n}\n\nexport type SmartWalletClient = SmartAccountClient<EntryPoint, HttpTransport, Chain, SmartAccount<EntryPoint>>;\n"],"mappings":";;;;;;AAYO,SAAS,yBAAyB,SAAoD;AACzF,SAAO,0BAA0B,SAAS,OAAc;AAC5D;AAGO,SAAS,6BAA6B,SAAwD;AACjG,SAAO,8BAA8B,SAAS,OAAc;AAChE;AA2BO,SAAS,sBAAsB,QAA0E;AAC5G,SAAO,YAAY,UAAU,UAAU,OAAO,UAAU,OAAO,OAAO,SAAS;AACnF;AAEO,SAAS,yBAAyB,QAAiE;AACtG,QAAM,6BAA6B,OAAO,YAAY,QAAQ,OAAO,SAAS,aAAa,SAAS;AAEpG,SAAO,sBAAsB,OAAO,YAAY,KAAK;AACzD;AAEO,SAAS,kBAAkB,QAA2E;AACzG,SACI,YAAY,WACV,UAAU,OAAO,UAAU,OAAO,OAAO,SAAS,kBAC/C,aAAa,OAAO,UAAU,OAAO,OAAO,OAAO,YAAY;AAE5E;AAEO,SAAS,qBAAqB,QAA6D;AAC9F,QAAM,yBAAyB,OAAO,YAAY,QAAQ,OAAO,SAAS,aAAa,SAAS;AAEhG,SAAO,kBAAkB,OAAO,YAAY,KAAK;AACrD;","names":[]}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkFXGOVLZWcjs = require('./chunk-FXGOVLZW.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunk4NTNOPLEcjs = require('./chunk-4NTNOPLE.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkBXSAJOIVcjs = require('./chunk-BXSAJOIV.cjs');
|
|
10
|
+
|
|
11
|
+
// src/blockchain/wallets/clientDecorator.ts
|
|
12
|
+
var _viem = require('viem');
|
|
13
|
+
var transactionMethods = [
|
|
14
|
+
"sendTransaction",
|
|
15
|
+
"writeContract",
|
|
16
|
+
"sendUserOperation"
|
|
17
|
+
];
|
|
18
|
+
var signingMethods = [
|
|
19
|
+
"signMessage",
|
|
20
|
+
"signTypedData"
|
|
21
|
+
];
|
|
22
|
+
function isTxnMethod(method) {
|
|
23
|
+
return transactionMethods.includes(method);
|
|
24
|
+
}
|
|
25
|
+
function isSignMethod(method) {
|
|
26
|
+
return signingMethods.includes(method);
|
|
27
|
+
}
|
|
28
|
+
var ClientDecorator = class {
|
|
29
|
+
constructor(errorProcessor, logger = _chunk4NTNOPLEcjs.scwLogger) {
|
|
30
|
+
this.errorProcessor = errorProcessor;
|
|
31
|
+
this.logger = logger;
|
|
32
|
+
}
|
|
33
|
+
decorate({
|
|
34
|
+
crossmintChain,
|
|
35
|
+
smartAccountClient
|
|
36
|
+
}) {
|
|
37
|
+
return new Proxy(smartAccountClient, {
|
|
38
|
+
get: (target, prop, receiver) => {
|
|
39
|
+
const originalMethod = Reflect.get(target, prop, receiver);
|
|
40
|
+
if (typeof originalMethod !== "function" || typeof prop !== "string" || !(isSignMethod(prop) || isTxnMethod(prop))) {
|
|
41
|
+
return originalMethod;
|
|
42
|
+
}
|
|
43
|
+
return (...args) => this.logger.logPerformance(
|
|
44
|
+
`CrossmintSmartWallet.${prop}`,
|
|
45
|
+
() => this.execute(target, prop, originalMethod, args, crossmintChain)
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
async execute(target, prop, originalMethod, args, crossmintChain) {
|
|
51
|
+
try {
|
|
52
|
+
this.logger.log(`[CrossmintSmartWallet.${prop}] - params: ${_viem.stringify.call(void 0, args)}`);
|
|
53
|
+
const processed = isTxnMethod(prop) ? this.processTxnArgs(prop, crossmintChain, args) : args;
|
|
54
|
+
return await originalMethod.call(target, ...processed);
|
|
55
|
+
} catch (error) {
|
|
56
|
+
const description = isTxnMethod(prop) ? "signing" : "sending transaction";
|
|
57
|
+
throw this.errorProcessor.map(
|
|
58
|
+
error,
|
|
59
|
+
new (0, _chunkBXSAJOIVcjs.SmartWalletError)(`Error ${description}: ${error.message}`, _viem.stringify.call(void 0, error))
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
processTxnArgs(prop, crossmintChain, args) {
|
|
64
|
+
if (prop === "sendUserOperation") {
|
|
65
|
+
const [{ userOperation, middleware, account }] = args;
|
|
66
|
+
return [
|
|
67
|
+
{
|
|
68
|
+
middleware,
|
|
69
|
+
account,
|
|
70
|
+
userOperation: this.addGelatoBundlerProperties(crossmintChain, userOperation)
|
|
71
|
+
},
|
|
72
|
+
...args.slice(1)
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
const [txn] = args;
|
|
76
|
+
return [this.addGelatoBundlerProperties(crossmintChain, txn), ...args.slice(1)];
|
|
77
|
+
}
|
|
78
|
+
/*
|
|
79
|
+
* Chain that ZD uses Gelato as for bundler require special parameters:
|
|
80
|
+
* https://docs.zerodev.app/sdk/faqs/use-with-gelato#transaction-configuration
|
|
81
|
+
*/
|
|
82
|
+
addGelatoBundlerProperties(crossmintChain, txnParams) {
|
|
83
|
+
if (_chunkFXGOVLZWcjs.usesGelatoBundler.call(void 0, crossmintChain)) {
|
|
84
|
+
return { ...txnParams, maxFeePerGas: "0x0", maxPriorityFeePerGas: "0x0" };
|
|
85
|
+
}
|
|
86
|
+
return txnParams;
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
exports.ClientDecorator = ClientDecorator;
|
|
93
|
+
//# sourceMappingURL=chunk-BQ5BBWL3.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/blockchain/wallets/clientDecorator.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,SAAS,iBAAiB;AAQ1B,IAAM,qBAAqB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AACJ;AAEA,IAAM,iBAAiB;AAAA,EACnB;AAAA,EACA;AACJ;AAKA,SAAS,YAAY,QAAqC;AACtD,SAAO,mBAAmB,SAAS,MAAa;AACpD;AAEA,SAAS,aAAa,QAAsC;AACxD,SAAO,eAAe,SAAS,MAAa;AAChD;AAQO,IAAM,kBAAN,MAAsB;AAAA,EACzB,YACqB,gBACP,SAAS,WACrB;AAFmB;AACP;AAAA,EACX;AAAA,EAEI,SAAwD;AAAA,IAC3D;AAAA,IACA;AAAA,EACJ,GAGW;AACP,WAAO,IAAI,MAAM,oBAAoB;AAAA,MACjC,KAAK,CAAC,QAAQ,MAAM,aAAa;AAC7B,cAAM,iBAAiB,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAEzD,YACI,OAAO,mBAAmB,cAC1B,OAAO,SAAS,YAChB,EAAE,aAAa,IAAI,KAAK,YAAY,IAAI,IAC1C;AACE,iBAAO;AAAA,QACX;AAEA,eAAO,IAAI,SACP,KAAK,OAAO;AAAA,UAAe,wBAAwB,IAAI;AAAA,UAAI,MACvD,KAAK,QAAQ,QAAQ,MAAM,gBAAgB,MAAM,cAAc;AAAA,QACnE;AAAA,MACR;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAc,QACV,QACA,MACA,gBACA,MACA,gBACF;AACE,QAAI;AACA,WAAK,OAAO,IAAI,yBAAyB,IAAI,eAAe,UAAU,IAAI,CAAC,EAAE;AAC7E,YAAM,YAAY,YAAY,IAAI,IAAI,KAAK,eAAe,MAAM,gBAAgB,IAAI,IAAI;AACxF,aAAO,MAAM,eAAe,KAAK,QAAQ,GAAG,SAAS;AAAA,IACzD,SAAS,OAAY;AACjB,YAAM,cAAc,YAAY,IAAI,IAAI,YAAY;AACpD,YAAM,KAAK,eAAe;AAAA,QACtB;AAAA,QACA,IAAI,iBAAiB,SAAS,WAAW,KAAK,MAAM,OAAO,IAAI,UAAU,KAAK,CAAC;AAAA,MACnF;AAAA,IACJ;AAAA,EACJ;AAAA,EAEQ,eAAe,MAAiB,gBAAkC,MAAoB;AAC1F,QAAI,SAAS,qBAAqB;AAC9B,YAAM,CAAC,EAAE,eAAe,YAAY,QAAQ,CAAC,IAAI;AAGjD,aAAO;AAAA,QACH;AAAA,UACI;AAAA,UACA;AAAA,UACA,eAAe,KAAK,2BAA2B,gBAAgB,aAAa;AAAA,QAChF;AAAA,QACA,GAAG,KAAK,MAAM,CAAC;AAAA,MACnB;AAAA,IACJ;AAEA,UAAM,CAAC,GAAG,IAAI;AAId,WAAO,CAAC,KAAK,2BAA2B,gBAAgB,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC;AAAA,EAClF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,2BACJ,gBACA,WACF;AACE,QAAI,kBAAkB,cAAc,GAAG;AACnC,aAAO,EAAE,GAAG,WAAW,cAAc,OAAc,sBAAsB,MAAa;AAAA,IAC1F;AAEA,WAAO;AAAA,EACX;AACJ","sourcesContent":["import type { SmartAccountClient } from \"permissionless\";\nimport type { EntryPoint } from \"permissionless/types/entrypoint\";\nimport { stringify } from \"viem\";\n\nimport { SmartWalletError } from \"../../error\";\nimport type { ErrorProcessor } from \"../../error/processor\";\nimport { scwLogger } from \"../../services\";\nimport { usesGelatoBundler } from \"../../utils/blockchain\";\nimport type { SmartWalletChain } from \"../chains\";\n\nconst transactionMethods = [\n \"sendTransaction\",\n \"writeContract\",\n \"sendUserOperation\",\n] as const satisfies readonly (keyof SmartAccountClient<EntryPoint>)[];\n\nconst signingMethods = [\n \"signMessage\",\n \"signTypedData\",\n] as const satisfies readonly (keyof SmartAccountClient<EntryPoint>)[];\n\ntype TxnMethod = (typeof transactionMethods)[number];\ntype SignMethod = (typeof signingMethods)[number];\n\nfunction isTxnMethod(method: string): method is TxnMethod {\n return transactionMethods.includes(method as any);\n}\n\nfunction isSignMethod(method: string): method is SignMethod {\n return signingMethods.includes(method as any);\n}\n\n/**\n * A decorator class for SmartAccountClient instances. It enhances the client with:\n * - Error handling & logging.\n * - Performance metrics.\n * - Automatic formatting of transactions for Gelato bundler compatibility.\n * */\nexport class ClientDecorator {\n constructor(\n private readonly errorProcessor: ErrorProcessor,\n protected logger = scwLogger\n ) {}\n\n public decorate<Client extends SmartAccountClient<EntryPoint>>({\n crossmintChain,\n smartAccountClient,\n }: {\n crossmintChain: SmartWalletChain;\n smartAccountClient: Client;\n }): Client {\n return new Proxy(smartAccountClient, {\n get: (target, prop, receiver) => {\n const originalMethod = Reflect.get(target, prop, receiver);\n\n if (\n typeof originalMethod !== \"function\" ||\n typeof prop !== \"string\" ||\n !(isSignMethod(prop) || isTxnMethod(prop))\n ) {\n return originalMethod;\n }\n\n return (...args: any[]) =>\n this.logger.logPerformance(`CrossmintSmartWallet.${prop}`, () =>\n this.execute(target, prop, originalMethod, args, crossmintChain)\n );\n },\n }) as Client;\n }\n\n private async execute<M extends TxnMethod | SignMethod>(\n target: SmartAccountClient<EntryPoint>,\n prop: M,\n originalMethod: Function,\n args: any[],\n crossmintChain: SmartWalletChain\n ) {\n try {\n this.logger.log(`[CrossmintSmartWallet.${prop}] - params: ${stringify(args)}`);\n const processed = isTxnMethod(prop) ? this.processTxnArgs(prop, crossmintChain, args) : args;\n return await originalMethod.call(target, ...processed);\n } catch (error: any) {\n const description = isTxnMethod(prop) ? \"signing\" : \"sending transaction\";\n throw this.errorProcessor.map(\n error,\n new SmartWalletError(`Error ${description}: ${error.message}`, stringify(error))\n );\n }\n }\n\n private processTxnArgs(prop: TxnMethod, crossmintChain: SmartWalletChain, args: any[]): any[] {\n if (prop === \"sendUserOperation\") {\n const [{ userOperation, middleware, account }] = args as Parameters<\n SmartAccountClient<EntryPoint>[\"sendUserOperation\"]\n >;\n return [\n {\n middleware,\n account,\n userOperation: this.addGelatoBundlerProperties(crossmintChain, userOperation),\n },\n ...args.slice(1),\n ];\n }\n\n const [txn] = args as\n | Parameters<SmartAccountClient<EntryPoint>[\"sendTransaction\"]>\n | Parameters<SmartAccountClient<EntryPoint>[\"writeContract\"]>;\n\n return [this.addGelatoBundlerProperties(crossmintChain, txn), ...args.slice(1)];\n }\n\n /*\n * Chain that ZD uses Gelato as for bundler require special parameters:\n * https://docs.zerodev.app/sdk/faqs/use-with-gelato#transaction-configuration\n */\n private addGelatoBundlerProperties(\n crossmintChain: SmartWalletChain,\n txnParams: { maxFeePerGas?: bigint; maxPriorityFeePerGas?: bigint }\n ) {\n if (usesGelatoBundler(crossmintChain)) {\n return { ...txnParams, maxFeePerGas: \"0x0\" as any, maxPriorityFeePerGas: \"0x0\" as any };\n }\n\n return txnParams;\n }\n}\n"]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/error/index.ts
|
|
2
|
+
var _clientsdkbase = require('@crossmint/client-sdk-base');
|
|
3
|
+
var SmartWalletError = class extends _clientsdkbase.CrossmintSDKError {
|
|
4
|
+
constructor(message, details, code = _clientsdkbase.SmartWalletErrorCode.UNCATEGORIZED) {
|
|
5
|
+
super(message, code, details);
|
|
6
|
+
}
|
|
7
|
+
};
|
|
8
|
+
var AdminMismatchError = class extends SmartWalletError {
|
|
9
|
+
constructor(message, required, used) {
|
|
10
|
+
super(message, _clientsdkbase.SmartWalletErrorCode.ADMIN_MISMATCH);
|
|
11
|
+
this.required = required;
|
|
12
|
+
this.used = used;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
var PasskeyMismatchError = class extends SmartWalletError {
|
|
16
|
+
constructor(message, required, used) {
|
|
17
|
+
super(message, _clientsdkbase.SmartWalletErrorCode.PASSKEY_MISMATCH);
|
|
18
|
+
this.required = required;
|
|
19
|
+
this.used = used;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
var UserWalletAlreadyCreatedError = class extends SmartWalletError {
|
|
23
|
+
constructor(userId) {
|
|
24
|
+
super(`The user with userId ${userId.toString()} already has a wallet created for this project`);
|
|
25
|
+
this.code = _clientsdkbase.SmartWalletErrorCode.USER_WALLET_ALREADY_CREATED;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
var PasskeyPromptError = class extends SmartWalletError {
|
|
29
|
+
constructor(passkeyName) {
|
|
30
|
+
super(
|
|
31
|
+
`Prompt was either cancelled or timed out for passkey ${passkeyName}`,
|
|
32
|
+
void 0,
|
|
33
|
+
_clientsdkbase.SmartWalletErrorCode.PASSKEY_PROMPT
|
|
34
|
+
);
|
|
35
|
+
this.passkeyName = passkeyName;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var PasskeyRegistrationError = class extends SmartWalletError {
|
|
39
|
+
constructor(passkeyName) {
|
|
40
|
+
super(
|
|
41
|
+
`Registration for passkey ${passkeyName} failed, either the registration took too long, or passkey signature vaildation failed.`,
|
|
42
|
+
void 0,
|
|
43
|
+
_clientsdkbase.SmartWalletErrorCode.PASSKEY_REGISTRATION
|
|
44
|
+
);
|
|
45
|
+
this.passkeyName = passkeyName;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
var PasskeyIncompatibleAuthenticatorError = class extends SmartWalletError {
|
|
49
|
+
constructor(passkeyName) {
|
|
50
|
+
super(
|
|
51
|
+
`User selected authenticator for passkey ${passkeyName} is not compatible with Crossmint's Smart Wallets.`,
|
|
52
|
+
void 0,
|
|
53
|
+
_clientsdkbase.SmartWalletErrorCode.PASSKEY_INCOMPATIBLE_AUTHENTICATOR
|
|
54
|
+
);
|
|
55
|
+
this.passkeyName = passkeyName;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
var ConfigError = class extends SmartWalletError {
|
|
59
|
+
constructor(message) {
|
|
60
|
+
super(message, void 0, _clientsdkbase.SmartWalletErrorCode.WALLET_CONFIG);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
var AdminAlreadyUsedError = class extends ConfigError {
|
|
64
|
+
constructor() {
|
|
65
|
+
super("This signer was already used to create another wallet. Please use a different signer.");
|
|
66
|
+
this.code = _clientsdkbase.SmartWalletErrorCode.ADMIN_SIGNER_ALREADY_USED;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
var SmartWalletsNotEnabledError = class extends ConfigError {
|
|
70
|
+
constructor() {
|
|
71
|
+
super(
|
|
72
|
+
"Smart wallets are not enabled for this project. They can be enabled on the project settings page in the developer console."
|
|
73
|
+
);
|
|
74
|
+
this.code = _clientsdkbase.SmartWalletErrorCode.SMART_WALLETS_NOT_ENABLED;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
exports.SmartWalletError = SmartWalletError; exports.AdminMismatchError = AdminMismatchError; exports.PasskeyMismatchError = PasskeyMismatchError; exports.UserWalletAlreadyCreatedError = UserWalletAlreadyCreatedError; exports.PasskeyPromptError = PasskeyPromptError; exports.PasskeyRegistrationError = PasskeyRegistrationError; exports.PasskeyIncompatibleAuthenticatorError = PasskeyIncompatibleAuthenticatorError; exports.ConfigError = ConfigError; exports.AdminAlreadyUsedError = AdminAlreadyUsedError; exports.SmartWalletsNotEnabledError = SmartWalletsNotEnabledError;
|
|
90
|
+
//# sourceMappingURL=chunk-BXSAJOIV.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/error/index.ts"],"names":[],"mappings":";AAAA,SAAS,mBAAmB,4BAA4B;AAIjD,IAAM,mBAAN,cAA+B,kBAAkB;AAAA,EACpD,YAAY,SAAiB,SAAkB,OAA6B,qBAAqB,eAAe;AAC5G,UAAM,SAAS,MAAM,OAAO;AAAA,EAChC;AACJ;AAEO,IAAM,qBAAN,cAAiC,iBAAiB;AAAA,EAIrD,YAAY,SAAiB,UAAyB,MAAsB;AACxE,UAAM,SAAS,qBAAqB,cAAc;AAClD,SAAK,WAAW;AAChB,SAAK,OAAO;AAAA,EAChB;AACJ;AAEO,IAAM,uBAAN,cAAmC,iBAAiB;AAAA,EAIvD,YAAY,SAAiB,UAA0B,MAAuB;AAC1E,UAAM,SAAS,qBAAqB,gBAAgB;AACpD,SAAK,WAAW;AAChB,SAAK,OAAO;AAAA,EAChB;AACJ;AAEO,IAAM,gCAAN,cAA4C,iBAAiB;AAAA,EAGhE,YAAY,QAAgB;AACxB,UAAM,wBAAwB,OAAO,SAAS,CAAC,gDAAgD;AAHnG,SAAgB,OAAO,qBAAqB;AAAA,EAI5C;AACJ;AAEO,IAAM,qBAAN,cAAiC,iBAAiB;AAAA,EAGrD,YAAY,aAAqB;AAC7B;AAAA,MACI,wDAAwD,WAAW;AAAA,MACnE;AAAA,MACA,qBAAqB;AAAA,IACzB;AACA,SAAK,cAAc;AAAA,EACvB;AACJ;AAEO,IAAM,2BAAN,cAAuC,iBAAiB;AAAA,EAG3D,YAAY,aAAqB;AAC7B;AAAA,MACI,4BAA4B,WAAW;AAAA,MACvC;AAAA,MACA,qBAAqB;AAAA,IACzB;AACA,SAAK,cAAc;AAAA,EACvB;AACJ;AAEO,IAAM,wCAAN,cAAoD,iBAAiB;AAAA,EAGxE,YAAY,aAAqB;AAC7B;AAAA,MACI,2CAA2C,WAAW;AAAA,MACtD;AAAA,MACA,qBAAqB;AAAA,IACzB;AACA,SAAK,cAAc;AAAA,EACvB;AACJ;AAEO,IAAM,cAAN,cAA0B,iBAAiB;AAAA,EAC9C,YAAY,SAAiB;AACzB,UAAM,SAAS,QAAW,qBAAqB,aAAa;AAAA,EAChE;AACJ;AAEO,IAAM,wBAAN,cAAoC,YAAY;AAAA,EAEnD,cAAc;AACV,UAAM,uFAAuF;AAFjG,SAAgB,OAAO,qBAAqB;AAAA,EAG5C;AACJ;AAEO,IAAM,8BAAN,cAA0C,YAAY;AAAA,EAEzD,cAAc;AACV;AAAA,MACI;AAAA,IACJ;AAJJ,SAAgB,OAAO,qBAAqB;AAAA,EAK5C;AACJ","sourcesContent":["import { CrossmintSDKError, SmartWalletErrorCode } from \"@crossmint/client-sdk-base\";\n\nimport type { PasskeyDisplay, SignerDisplay } from \"../types/service\";\n\nexport class SmartWalletError extends CrossmintSDKError {\n constructor(message: string, details?: string, code: SmartWalletErrorCode = SmartWalletErrorCode.UNCATEGORIZED) {\n super(message, code, details);\n }\n}\n\nexport class AdminMismatchError extends SmartWalletError {\n public readonly required: SignerDisplay;\n public readonly used?: SignerDisplay;\n\n constructor(message: string, required: SignerDisplay, used?: SignerDisplay) {\n super(message, SmartWalletErrorCode.ADMIN_MISMATCH);\n this.required = required;\n this.used = used;\n }\n}\n\nexport class PasskeyMismatchError extends SmartWalletError {\n public readonly required: PasskeyDisplay;\n public readonly used?: PasskeyDisplay;\n\n constructor(message: string, required: PasskeyDisplay, used?: PasskeyDisplay) {\n super(message, SmartWalletErrorCode.PASSKEY_MISMATCH);\n this.required = required;\n this.used = used;\n }\n}\n\nexport class UserWalletAlreadyCreatedError extends SmartWalletError {\n public readonly code = SmartWalletErrorCode.USER_WALLET_ALREADY_CREATED;\n\n constructor(userId: string) {\n super(`The user with userId ${userId.toString()} already has a wallet created for this project`);\n }\n}\n\nexport class PasskeyPromptError extends SmartWalletError {\n public passkeyName: string;\n\n constructor(passkeyName: string) {\n super(\n `Prompt was either cancelled or timed out for passkey ${passkeyName}`,\n undefined,\n SmartWalletErrorCode.PASSKEY_PROMPT\n );\n this.passkeyName = passkeyName;\n }\n}\n\nexport class PasskeyRegistrationError extends SmartWalletError {\n public passkeyName: string;\n\n constructor(passkeyName: string) {\n super(\n `Registration for passkey ${passkeyName} failed, either the registration took too long, or passkey signature vaildation failed.`,\n undefined,\n SmartWalletErrorCode.PASSKEY_REGISTRATION\n );\n this.passkeyName = passkeyName;\n }\n}\n\nexport class PasskeyIncompatibleAuthenticatorError extends SmartWalletError {\n public passkeyName: string;\n\n constructor(passkeyName: string) {\n super(\n `User selected authenticator for passkey ${passkeyName} is not compatible with Crossmint's Smart Wallets.`,\n undefined,\n SmartWalletErrorCode.PASSKEY_INCOMPATIBLE_AUTHENTICATOR\n );\n this.passkeyName = passkeyName;\n }\n}\n\nexport class ConfigError extends SmartWalletError {\n constructor(message: string) {\n super(message, undefined, SmartWalletErrorCode.WALLET_CONFIG);\n }\n}\n\nexport class AdminAlreadyUsedError extends ConfigError {\n public readonly code = SmartWalletErrorCode.ADMIN_SIGNER_ALREADY_USED;\n constructor() {\n super(\"This signer was already used to create another wallet. Please use a different signer.\");\n }\n}\n\nexport class SmartWalletsNotEnabledError extends ConfigError {\n public readonly code = SmartWalletErrorCode.SMART_WALLETS_NOT_ENABLED;\n constructor() {\n super(\n \"Smart wallets are not enabled for this project. They can be enabled on the project settings page in the developer console.\"\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
+
|
|
3
|
+
var _chunkZOXKITU4cjs = require('./chunk-ZOXKITU4.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunk5MG5CIEXcjs = require('./chunk-5MG5CIEX.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkYWCXHOSDcjs = require('./chunk-YWCXHOSD.cjs');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _chunkBXSAJOIVcjs = require('./chunk-BXSAJOIV.cjs');
|
|
13
|
+
|
|
14
|
+
// src/blockchain/wallets/account/eoa.ts
|
|
15
|
+
var _ecdsavalidator = require('@zerodev/ecdsa-validator');
|
|
16
|
+
var _sdk = require('@zerodev/sdk');
|
|
17
|
+
var EOACreationStrategy = class {
|
|
18
|
+
async create({
|
|
19
|
+
chain,
|
|
20
|
+
publicClient,
|
|
21
|
+
entryPoint,
|
|
22
|
+
walletParams,
|
|
23
|
+
kernelVersion,
|
|
24
|
+
user,
|
|
25
|
+
existing
|
|
26
|
+
}) {
|
|
27
|
+
const eoa = await _chunkYWCXHOSDcjs.createOwnerSigner.call(void 0, {
|
|
28
|
+
chain,
|
|
29
|
+
walletParams
|
|
30
|
+
});
|
|
31
|
+
if (existing != null && !_chunk5MG5CIEXcjs.equalsIgnoreCase.call(void 0, eoa.address, existing.signerConfig.data.eoaAddress)) {
|
|
32
|
+
throw new (0, _chunkBXSAJOIVcjs.AdminMismatchError)(
|
|
33
|
+
`User '${user.id}' has an existing wallet with an eoa signer '${existing.signerConfig.data.eoaAddress}', this does not match input eoa signer '${eoa.address}'.`,
|
|
34
|
+
existing.signerConfig.display(),
|
|
35
|
+
{ type: "eoa", eoaAddress: existing.signerConfig.data.eoaAddress }
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
const ecdsaValidator = await _ecdsavalidator.signerToEcdsaValidator.call(void 0, publicClient, {
|
|
39
|
+
signer: eoa,
|
|
40
|
+
entryPoint,
|
|
41
|
+
kernelVersion
|
|
42
|
+
});
|
|
43
|
+
const account = await _sdk.createKernelAccount.call(void 0, publicClient, {
|
|
44
|
+
plugins: {
|
|
45
|
+
sudo: ecdsaValidator
|
|
46
|
+
},
|
|
47
|
+
index: 0n,
|
|
48
|
+
entryPoint,
|
|
49
|
+
kernelVersion,
|
|
50
|
+
deployedAccountAddress: _optionalChain([existing, 'optionalAccess', _ => _.address])
|
|
51
|
+
});
|
|
52
|
+
return { account, signerConfig: new (0, _chunkZOXKITU4cjs.EOASignerConfig)({ eoaAddress: eoa.address, type: "eoa" }) };
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
exports.EOACreationStrategy = EOACreationStrategy;
|
|
59
|
+
//# sourceMappingURL=chunk-DTEA33DF.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/blockchain/wallets/account/eoa.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,8BAA8B;AACvC,SAAS,2BAA2B;AAS7B,IAAM,sBAAN,MAA6D;AAAA,EAChE,MAAa,OAAO;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAAkD;AAC9C,UAAM,MAAM,MAAM,kBAAkB;AAAA,MAChC;AAAA,MACA;AAAA,IACJ,CAAC;AAED,QAAI,YAAY,QAAQ,CAAC,iBAAiB,IAAI,SAAS,SAAS,aAAa,KAAK,UAAU,GAAG;AAC3F,YAAM,IAAI;AAAA,QACN,SAAS,KAAK,EAAE,gDAAgD,SAAS,aAAa,KAAK,UAAU,4CAA4C,IAAI,OAAO;AAAA,QAC5J,SAAS,aAAa,QAAQ;AAAA,QAC9B,EAAE,MAAM,OAAO,YAAY,SAAS,aAAa,KAAK,WAAW;AAAA,MACrE;AAAA,IACJ;AAEA,UAAM,iBAAiB,MAAM,uBAAuB,cAAc;AAAA,MAC9D,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACJ,CAAC;AACD,UAAM,UAAU,MAAM,oBAAoB,cAAc;AAAA,MACpD,SAAS;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,wBAAwB,UAAU;AAAA,IACtC,CAAC;AAED,WAAO,EAAE,SAAS,cAAc,IAAI,gBAAgB,EAAE,YAAY,IAAI,SAAS,MAAM,MAAM,CAAC,EAAE;AAAA,EAClG;AACJ","sourcesContent":["import { signerToEcdsaValidator } from \"@zerodev/ecdsa-validator\";\nimport { createKernelAccount } from \"@zerodev/sdk\";\n\nimport { AdminMismatchError } from \"../../../error\";\nimport type { AccountAndSigner, EOACreationContext } from \"../../../types/internal\";\nimport { equalsIgnoreCase } from \"../../../utils/helpers\";\nimport { createOwnerSigner } from \"../../../utils/signer\";\nimport { EOASignerConfig } from \"./signer\";\nimport type { AccountCreationStrategy } from \"./strategy\";\n\nexport class EOACreationStrategy implements AccountCreationStrategy {\n public async create({\n chain,\n publicClient,\n entryPoint,\n walletParams,\n kernelVersion,\n user,\n existing,\n }: EOACreationContext): Promise<AccountAndSigner> {\n const eoa = await createOwnerSigner({\n chain,\n walletParams,\n });\n\n if (existing != null && !equalsIgnoreCase(eoa.address, existing.signerConfig.data.eoaAddress)) {\n throw new AdminMismatchError(\n `User '${user.id}' has an existing wallet with an eoa signer '${existing.signerConfig.data.eoaAddress}', this does not match input eoa signer '${eoa.address}'.`,\n existing.signerConfig.display(),\n { type: \"eoa\", eoaAddress: existing.signerConfig.data.eoaAddress }\n );\n }\n\n const ecdsaValidator = await signerToEcdsaValidator(publicClient, {\n signer: eoa,\n entryPoint,\n kernelVersion,\n });\n const account = await createKernelAccount(publicClient, {\n plugins: {\n sudo: ecdsaValidator,\n },\n index: 0n,\n entryPoint,\n kernelVersion,\n deployedAccountAddress: existing?.address,\n });\n\n return { account, signerConfig: new EOASignerConfig({ eoaAddress: eoa.address, type: \"eoa\" }) };\n }\n}\n"]}
|