@crossmint/client-sdk-smart-wallet 0.1.24 → 0.1.26
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 +1 -34
- package/dist/SmartWalletSDK.js +1 -34
- package/dist/api/CrossmintWalletService.cjs +1 -13
- package/dist/api/CrossmintWalletService.js +1 -13
- package/dist/blockchain/chains.cjs +1 -23
- package/dist/blockchain/chains.js +1 -23
- package/dist/blockchain/rpc.cjs +1 -11
- package/dist/blockchain/rpc.js +1 -11
- package/dist/blockchain/transfer.cjs +1 -7
- package/dist/blockchain/transfer.js +1 -7
- package/dist/blockchain/wallets/EVMSmartWallet.cjs +1 -10
- package/dist/blockchain/wallets/EVMSmartWallet.js +1 -10
- package/dist/blockchain/wallets/SendTransactionService.cjs +1 -11
- package/dist/blockchain/wallets/SendTransactionService.js +1 -11
- package/dist/blockchain/wallets/account/cache.cjs +1 -9
- package/dist/blockchain/wallets/account/cache.js +1 -9
- package/dist/blockchain/wallets/account/config.cjs +1 -9
- package/dist/blockchain/wallets/account/config.js +1 -9
- package/dist/blockchain/wallets/account/creator.cjs +1 -10
- package/dist/blockchain/wallets/account/creator.js +1 -10
- package/dist/blockchain/wallets/account/eoa.cjs +1 -11
- package/dist/blockchain/wallets/account/eoa.js +1 -11
- package/dist/blockchain/wallets/account/passkey.cjs +1 -9
- package/dist/blockchain/wallets/account/passkey.js +1 -9
- package/dist/blockchain/wallets/account/signer.cjs +1 -9
- package/dist/blockchain/wallets/account/signer.js +1 -9
- package/dist/blockchain/wallets/account/strategy.cjs +1 -1
- package/dist/blockchain/wallets/account/strategy.js +0 -1
- package/dist/blockchain/wallets/clientDecorator.cjs +1 -12
- package/dist/blockchain/wallets/clientDecorator.js +1 -12
- package/dist/blockchain/wallets/index.cjs +1 -10
- package/dist/blockchain/wallets/index.js +1 -10
- package/dist/blockchain/wallets/paymaster.cjs +1 -10
- package/dist/blockchain/wallets/paymaster.js +1 -10
- package/dist/blockchain/wallets/service.cjs +1 -16
- package/dist/blockchain/wallets/service.js +1 -16
- package/dist/chunk-265KNPZR.js +1 -0
- package/dist/chunk-2GS5TXEY.cjs +1 -0
- package/dist/chunk-2R6HK64N.cjs +1 -0
- package/dist/chunk-3F6P4HUZ.js +1 -0
- package/dist/chunk-4SPA557P.js +0 -0
- package/dist/chunk-7AVDZZGD.cjs +1 -0
- package/dist/chunk-7FXFOOQU.cjs +1 -0
- package/dist/chunk-7KTCGFU5.js +1 -0
- package/dist/chunk-AK6IIUTM.js +1 -0
- package/dist/chunk-ATQ4WGCW.js +1 -0
- package/dist/chunk-BIJAOWPS.js +1 -0
- package/dist/chunk-BJZQA5VC.js +1 -0
- package/dist/chunk-C3VZY7VJ.js +1 -0
- package/dist/chunk-CUTQYF3F.js +1 -0
- package/dist/chunk-D4NDUT36.js +1 -0
- package/dist/chunk-DIDKPOO2.cjs +1 -0
- package/dist/chunk-DQNKQDE2.cjs +1 -0
- package/dist/chunk-E3NG3YWO.js +1 -0
- package/dist/chunk-ETVJGLNY.js +1 -0
- package/dist/chunk-FHNNZVNU.js +1 -0
- package/dist/chunk-GB35YMN4.cjs +1 -0
- package/dist/chunk-H4CMXNVK.js +1 -0
- package/dist/chunk-HGA3WK6L.cjs +1 -0
- package/dist/chunk-II4HKF7X.cjs +1 -0
- package/dist/chunk-IQTGPM2U.cjs +1 -0
- package/dist/chunk-KYPTGHC6.cjs +1 -0
- package/dist/chunk-LDNU6SJL.cjs +3 -0
- package/dist/chunk-M4K3IZTT.cjs +1 -0
- package/dist/chunk-MJ62KCTK.cjs +1 -0
- package/dist/chunk-NAX6LRUY.cjs +1 -0
- package/dist/chunk-NLGILHJS.js +1 -0
- package/dist/chunk-O2ACORII.cjs +1 -0
- package/dist/chunk-ODAUWGUU.cjs +1 -0
- package/dist/chunk-PZ6Q22YJ.js +1 -0
- package/dist/chunk-QD2JKGX6.cjs +1 -0
- package/dist/chunk-S2XBSAGM.js +1 -0
- package/dist/chunk-SBW2PS63.cjs +1 -0
- package/dist/chunk-SCXFZMLR.cjs +1 -0
- package/dist/chunk-STH2LE35.cjs +1 -0
- package/dist/chunk-SWWOVT47.cjs +1 -0
- package/dist/chunk-TBTRV56U.cjs +2 -0
- package/dist/chunk-TWADESPF.cjs +1 -0
- package/dist/chunk-TXLAUKCK.cjs +1 -0
- package/dist/chunk-TZG6MROQ.js +1 -0
- package/dist/chunk-UG47CBKR.js +1 -0
- package/dist/chunk-UPURFW46.js +1 -0
- package/dist/chunk-UXNWF66Q.js +1 -0
- package/dist/chunk-VMOQWOZV.js +3 -0
- package/dist/chunk-VXGNAQOW.js +1 -0
- package/dist/chunk-WJ6XJMRD.cjs +1 -0
- package/dist/{chunk-5MG5CIEX.cjs → chunk-XJGFG3RT.cjs} +1 -13
- package/dist/chunk-XQ2K2K23.cjs +1 -0
- package/dist/chunk-YBHSEZMB.js +1 -0
- package/dist/chunk-YJUD5MVS.js +1 -0
- package/dist/chunk-YUWCRSYD.js +1 -0
- package/dist/chunk-Z7MMOBIC.js +2 -0
- package/dist/error/index.cjs +1 -25
- package/dist/error/index.js +1 -25
- package/dist/error/processor.cjs +1 -9
- package/dist/error/processor.js +1 -9
- package/dist/index.cjs +1 -86
- package/dist/index.js +1 -86
- package/dist/services/index.cjs +1 -11
- package/dist/services/index.js +1 -11
- package/dist/services/logger.cjs +1 -10
- package/dist/services/logger.js +1 -10
- package/dist/types/internal.cjs +1 -18
- package/dist/types/internal.js +1 -18
- package/dist/types/params.cjs +1 -1
- package/dist/types/params.js +0 -1
- package/dist/types/schema.cjs +1 -16
- package/dist/types/schema.js +1 -16
- package/dist/types/service.cjs +1 -1
- package/dist/types/service.js +0 -1
- package/dist/types/token.cjs +1 -1
- package/dist/types/token.js +0 -1
- package/dist/utils/api.cjs +1 -9
- package/dist/utils/api.js +1 -9
- package/dist/utils/blockchain.cjs +1 -7
- package/dist/utils/blockchain.js +1 -7
- package/dist/utils/constants.cjs +1 -19
- package/dist/utils/constants.js +1 -19
- package/dist/utils/environment.cjs +1 -7
- package/dist/utils/environment.js +1 -7
- package/dist/utils/helpers.cjs +1 -9
- package/dist/utils/helpers.js +1 -9
- package/dist/utils/signer.cjs +1 -10
- package/dist/utils/signer.js +1 -10
- package/dist/utils/test.cjs +1 -27
- package/dist/utils/test.js +1 -27
- package/package.json +3 -4
- package/dist/SmartWalletSDK.cjs.map +0 -1
- package/dist/SmartWalletSDK.js.map +0 -1
- package/dist/api/CrossmintWalletService.cjs.map +0 -1
- package/dist/api/CrossmintWalletService.js.map +0 -1
- package/dist/blockchain/chains.cjs.map +0 -1
- package/dist/blockchain/chains.js.map +0 -1
- package/dist/blockchain/rpc.cjs.map +0 -1
- package/dist/blockchain/rpc.js.map +0 -1
- package/dist/blockchain/transfer.cjs.map +0 -1
- package/dist/blockchain/transfer.js.map +0 -1
- package/dist/blockchain/wallets/EVMSmartWallet.cjs.map +0 -1
- package/dist/blockchain/wallets/EVMSmartWallet.js.map +0 -1
- package/dist/blockchain/wallets/SendTransactionService.cjs.map +0 -1
- package/dist/blockchain/wallets/SendTransactionService.js.map +0 -1
- package/dist/blockchain/wallets/account/cache.cjs.map +0 -1
- package/dist/blockchain/wallets/account/cache.js.map +0 -1
- package/dist/blockchain/wallets/account/config.cjs.map +0 -1
- package/dist/blockchain/wallets/account/config.js.map +0 -1
- package/dist/blockchain/wallets/account/creator.cjs.map +0 -1
- package/dist/blockchain/wallets/account/creator.js.map +0 -1
- package/dist/blockchain/wallets/account/eoa.cjs.map +0 -1
- package/dist/blockchain/wallets/account/eoa.js.map +0 -1
- package/dist/blockchain/wallets/account/passkey.cjs.map +0 -1
- package/dist/blockchain/wallets/account/passkey.js.map +0 -1
- package/dist/blockchain/wallets/account/signer.cjs.map +0 -1
- package/dist/blockchain/wallets/account/signer.js.map +0 -1
- package/dist/blockchain/wallets/account/strategy.cjs.map +0 -1
- package/dist/blockchain/wallets/account/strategy.js.map +0 -1
- package/dist/blockchain/wallets/clientDecorator.cjs.map +0 -1
- package/dist/blockchain/wallets/clientDecorator.js.map +0 -1
- package/dist/blockchain/wallets/index.cjs.map +0 -1
- package/dist/blockchain/wallets/index.js.map +0 -1
- package/dist/blockchain/wallets/paymaster.cjs.map +0 -1
- package/dist/blockchain/wallets/paymaster.js.map +0 -1
- package/dist/blockchain/wallets/service.cjs.map +0 -1
- package/dist/blockchain/wallets/service.js.map +0 -1
- package/dist/chunk-2BBSPDW4.cjs +0 -99
- package/dist/chunk-2BBSPDW4.cjs.map +0 -1
- package/dist/chunk-2GADBKIW.cjs +0 -39
- package/dist/chunk-2GADBKIW.cjs.map +0 -1
- package/dist/chunk-2HB65Y7D.js +0 -79
- package/dist/chunk-2HB65Y7D.js.map +0 -1
- package/dist/chunk-3EQHAQXO.js +0 -112
- package/dist/chunk-3EQHAQXO.js.map +0 -1
- package/dist/chunk-3R6PW6HY.js +0 -30
- package/dist/chunk-3R6PW6HY.js.map +0 -1
- package/dist/chunk-5MG5CIEX.cjs.map +0 -1
- package/dist/chunk-5URMCCO6.js +0 -9
- package/dist/chunk-5URMCCO6.js.map +0 -1
- package/dist/chunk-5WVQ7J3E.cjs +0 -369
- package/dist/chunk-5WVQ7J3E.cjs.map +0 -1
- package/dist/chunk-6FS2OI5W.js +0 -66
- package/dist/chunk-6FS2OI5W.js.map +0 -1
- package/dist/chunk-6NJVFL2X.js +0 -60
- package/dist/chunk-6NJVFL2X.js.map +0 -1
- package/dist/chunk-74NTQGER.js +0 -44
- package/dist/chunk-74NTQGER.js.map +0 -1
- package/dist/chunk-77GT6B5L.cjs +0 -79
- package/dist/chunk-77GT6B5L.cjs.map +0 -1
- package/dist/chunk-7KTQNIAZ.cjs +0 -112
- package/dist/chunk-7KTQNIAZ.cjs.map +0 -1
- package/dist/chunk-7ORLXP6K.cjs +0 -93
- package/dist/chunk-7ORLXP6K.cjs.map +0 -1
- package/dist/chunk-ASIPMVRQ.js +0 -90
- package/dist/chunk-ASIPMVRQ.js.map +0 -1
- package/dist/chunk-BARW756O.js +0 -27
- package/dist/chunk-BARW756O.js.map +0 -1
- package/dist/chunk-BXSAJOIV.cjs +0 -90
- package/dist/chunk-BXSAJOIV.cjs.map +0 -1
- package/dist/chunk-DTEA33DF.cjs +0 -59
- package/dist/chunk-DTEA33DF.cjs.map +0 -1
- package/dist/chunk-DYO4HODM.cjs +0 -36
- package/dist/chunk-DYO4HODM.cjs.map +0 -1
- package/dist/chunk-EPEGJY6N.cjs +0 -9
- package/dist/chunk-EPEGJY6N.cjs.map +0 -1
- package/dist/chunk-EQSMHR77.js +0 -30
- package/dist/chunk-EQSMHR77.js.map +0 -1
- package/dist/chunk-FSIMJYXR.js +0 -36
- package/dist/chunk-FSIMJYXR.js.map +0 -1
- package/dist/chunk-FXGOVLZW.cjs +0 -9
- package/dist/chunk-FXGOVLZW.cjs.map +0 -1
- package/dist/chunk-ICLDP7BD.cjs +0 -36
- package/dist/chunk-ICLDP7BD.cjs.map +0 -1
- package/dist/chunk-IZZQHNZT.cjs +0 -22
- package/dist/chunk-IZZQHNZT.cjs.map +0 -1
- package/dist/chunk-JLZCSWUY.cjs +0 -14
- package/dist/chunk-JLZCSWUY.cjs.map +0 -1
- package/dist/chunk-JOB7STIS.js +0 -9
- package/dist/chunk-JOB7STIS.js.map +0 -1
- package/dist/chunk-KHROQTVY.js +0 -1
- package/dist/chunk-KHROQTVY.js.map +0 -1
- package/dist/chunk-LWVV7JDJ.js +0 -36
- package/dist/chunk-LWVV7JDJ.js.map +0 -1
- package/dist/chunk-N6DG5EZG.cjs +0 -156
- package/dist/chunk-N6DG5EZG.cjs.map +0 -1
- package/dist/chunk-NI6WQXMN.js +0 -99
- package/dist/chunk-NI6WQXMN.js.map +0 -1
- package/dist/chunk-O6IFYHDP.cjs +0 -36
- package/dist/chunk-O6IFYHDP.cjs.map +0 -1
- package/dist/chunk-OGA3YDWS.cjs +0 -112
- package/dist/chunk-OGA3YDWS.cjs.map +0 -1
- package/dist/chunk-OIEP34C6.js +0 -41
- package/dist/chunk-OIEP34C6.js.map +0 -1
- package/dist/chunk-ON4DOYVD.js +0 -369
- package/dist/chunk-ON4DOYVD.js.map +0 -1
- package/dist/chunk-PVFA6PBX.cjs +0 -60
- package/dist/chunk-PVFA6PBX.cjs.map +0 -1
- package/dist/chunk-QBQDYMNI.js +0 -39
- package/dist/chunk-QBQDYMNI.js.map +0 -1
- package/dist/chunk-QJ3BSVGV.js +0 -36
- package/dist/chunk-QJ3BSVGV.js.map +0 -1
- package/dist/chunk-RUTDRRS2.cjs +0 -66
- package/dist/chunk-RUTDRRS2.cjs.map +0 -1
- package/dist/chunk-SBR2CREX.js +0 -82
- package/dist/chunk-SBR2CREX.js.map +0 -1
- package/dist/chunk-SMDX2MXU.js +0 -13
- package/dist/chunk-SMDX2MXU.js.map +0 -1
- package/dist/chunk-TDJDKTRS.js +0 -156
- package/dist/chunk-TDJDKTRS.js.map +0 -1
- package/dist/chunk-TZUJ5MXW.cjs +0 -82
- package/dist/chunk-TZUJ5MXW.cjs.map +0 -1
- package/dist/chunk-U4OBHCIP.js +0 -59
- package/dist/chunk-U4OBHCIP.js.map +0 -1
- package/dist/chunk-UQKE6R5W.cjs +0 -27
- package/dist/chunk-UQKE6R5W.cjs.map +0 -1
- package/dist/chunk-UZGHOTKZ.js +0 -112
- package/dist/chunk-UZGHOTKZ.js.map +0 -1
- package/dist/chunk-WRH3YJT3.js +0 -14
- package/dist/chunk-WRH3YJT3.js.map +0 -1
- package/dist/chunk-X4KT4AKM.cjs +0 -123
- package/dist/chunk-X4KT4AKM.cjs.map +0 -1
- package/dist/chunk-YKW7PMBU.js +0 -22
- package/dist/chunk-YKW7PMBU.js.map +0 -1
- package/dist/chunk-YWCXHOSD.cjs +0 -30
- package/dist/chunk-YWCXHOSD.cjs.map +0 -1
- package/dist/chunk-Z5DNJTAW.cjs +0 -41
- package/dist/chunk-Z5DNJTAW.cjs.map +0 -1
- package/dist/chunk-Z7JWER3L.js +0 -93
- package/dist/chunk-Z7JWER3L.js.map +0 -1
- package/dist/chunk-ZAQLXUMA.cjs +0 -44
- package/dist/chunk-ZAQLXUMA.cjs.map +0 -1
- package/dist/chunk-ZEWOQEKM.js +0 -123
- package/dist/chunk-ZEWOQEKM.js.map +0 -1
- package/dist/chunk-ZN42AA2G.cjs +0 -1
- package/dist/chunk-ZN42AA2G.cjs.map +0 -1
- package/dist/chunk-ZOXKITU4.cjs +0 -30
- package/dist/chunk-ZOXKITU4.cjs.map +0 -1
- package/dist/error/index.cjs.map +0 -1
- package/dist/error/index.js.map +0 -1
- package/dist/error/processor.cjs.map +0 -1
- package/dist/error/processor.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/services/index.cjs.map +0 -1
- package/dist/services/index.js.map +0 -1
- package/dist/services/logger.cjs.map +0 -1
- package/dist/services/logger.js.map +0 -1
- package/dist/types/internal.cjs.map +0 -1
- package/dist/types/internal.js.map +0 -1
- package/dist/types/params.cjs.map +0 -1
- package/dist/types/params.js.map +0 -1
- package/dist/types/schema.cjs.map +0 -1
- package/dist/types/schema.js.map +0 -1
- package/dist/types/service.cjs.map +0 -1
- package/dist/types/service.js.map +0 -1
- package/dist/types/token.cjs.map +0 -1
- package/dist/types/token.js.map +0 -1
- package/dist/utils/api.cjs.map +0 -1
- package/dist/utils/api.js.map +0 -1
- package/dist/utils/blockchain.cjs.map +0 -1
- package/dist/utils/blockchain.js.map +0 -1
- package/dist/utils/constants.cjs.map +0 -1
- package/dist/utils/constants.js.map +0 -1
- package/dist/utils/environment.cjs.map +0 -1
- package/dist/utils/environment.js.map +0 -1
- package/dist/utils/helpers.cjs.map +0 -1
- package/dist/utils/helpers.js.map +0 -1
- package/dist/utils/signer.cjs.map +0 -1
- package/dist/utils/signer.js.map +0 -1
- package/dist/utils/test.cjs.map +0 -1
- package/dist/utils/test.js.map +0 -1
- package/src/ABI/ERC1155.json +0 -325
- package/src/ABI/ERC20.json +0 -222
- package/src/ABI/ERC721.json +0 -320
- package/src/SmartWalletSDK.test.ts +0 -31
- package/src/SmartWalletSDK.ts +0 -104
- package/src/api/CrossmintWalletService.test.ts +0 -43
- package/src/api/CrossmintWalletService.ts +0 -84
- package/src/blockchain/chains.ts +0 -57
- package/src/blockchain/rpc.ts +0 -25
- package/src/blockchain/transfer.ts +0 -54
- package/src/blockchain/wallets/EVMSmartWallet.ts +0 -157
- package/src/blockchain/wallets/SendTransactionService.test.ts +0 -159
- package/src/blockchain/wallets/SendTransactionService.ts +0 -188
- package/src/blockchain/wallets/account/cache.test.ts +0 -67
- package/src/blockchain/wallets/account/cache.ts +0 -43
- package/src/blockchain/wallets/account/config.test.ts +0 -103
- package/src/blockchain/wallets/account/config.ts +0 -116
- package/src/blockchain/wallets/account/creator.ts +0 -40
- package/src/blockchain/wallets/account/eoa.ts +0 -51
- package/src/blockchain/wallets/account/passkey.ts +0 -198
- package/src/blockchain/wallets/account/signer.ts +0 -44
- package/src/blockchain/wallets/account/strategy.ts +0 -5
- package/src/blockchain/wallets/clientDecorator.ts +0 -128
- package/src/blockchain/wallets/index.ts +0 -1
- package/src/blockchain/wallets/paymaster.ts +0 -41
- package/src/blockchain/wallets/service.ts +0 -107
- package/src/error/index.ts +0 -100
- package/src/error/processor.ts +0 -36
- package/src/index.ts +0 -47
- package/src/services/index.ts +0 -1
- package/src/services/logger.ts +0 -6
- package/src/types/internal.ts +0 -76
- package/src/types/params.ts +0 -34
- package/src/types/schema.ts +0 -63
- package/src/types/service.ts +0 -31
- package/src/types/token.ts +0 -29
- package/src/utils/api.ts +0 -39
- package/src/utils/blockchain.ts +0 -5
- package/src/utils/constants.ts +0 -9
- package/src/utils/environment.ts +0 -3
- package/src/utils/helpers.ts +0 -7
- package/src/utils/signer.ts +0 -33
- package/src/utils/test.ts +0 -24
package/dist/chunk-SBR2CREX.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
scwLogger
|
|
3
|
-
} from "./chunk-WRH3YJT3.js";
|
|
4
|
-
import {
|
|
5
|
-
SmartWalletConfigSchema
|
|
6
|
-
} from "./chunk-6FS2OI5W.js";
|
|
7
|
-
import {
|
|
8
|
-
bigintsToHex,
|
|
9
|
-
parseBigintAPIResponse
|
|
10
|
-
} from "./chunk-FSIMJYXR.js";
|
|
11
|
-
import {
|
|
12
|
-
API_VERSION
|
|
13
|
-
} from "./chunk-YKW7PMBU.js";
|
|
14
|
-
import {
|
|
15
|
-
AdminAlreadyUsedError,
|
|
16
|
-
SmartWalletsNotEnabledError,
|
|
17
|
-
UserWalletAlreadyCreatedError
|
|
18
|
-
} from "./chunk-ASIPMVRQ.js";
|
|
19
|
-
|
|
20
|
-
// src/api/CrossmintWalletService.ts
|
|
21
|
-
import { APIErrorService, BaseCrossmintService, CrossmintServiceError } from "@crossmint/client-sdk-base";
|
|
22
|
-
import { blockchainToChainId } from "@crossmint/common-sdk-base";
|
|
23
|
-
var CrossmintWalletService = class extends BaseCrossmintService {
|
|
24
|
-
constructor() {
|
|
25
|
-
super(...arguments);
|
|
26
|
-
this.logger = scwLogger;
|
|
27
|
-
this.apiErrorService = new APIErrorService({
|
|
28
|
-
ERROR_USER_WALLET_ALREADY_CREATED: ({ userId }) => new UserWalletAlreadyCreatedError(userId),
|
|
29
|
-
ERROR_ADMIN_SIGNER_ALREADY_USED: () => new AdminAlreadyUsedError(),
|
|
30
|
-
ERROR_PROJECT_NONCUSTODIAL_WALLETS_NOT_ENABLED: () => new SmartWalletsNotEnabledError()
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
async idempotentCreateSmartWallet(user, input) {
|
|
34
|
-
await this.fetchCrossmintAPI(
|
|
35
|
-
`${API_VERSION}/sdk/smart-wallet`,
|
|
36
|
-
{ method: "PUT", body: JSON.stringify(input) },
|
|
37
|
-
"Error creating abstract wallet. Please contact support",
|
|
38
|
-
user.jwt
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
async sponsorUserOperation(user, userOp, entryPoint, chain) {
|
|
42
|
-
const chainId = blockchainToChainId(chain);
|
|
43
|
-
const result = await this.fetchCrossmintAPI(
|
|
44
|
-
`${API_VERSION}/sdk/paymaster`,
|
|
45
|
-
{ method: "POST", body: JSON.stringify({ userOp: bigintsToHex(userOp), entryPoint, chainId }) },
|
|
46
|
-
"Error sponsoring user operation. Please contact support",
|
|
47
|
-
user.jwt
|
|
48
|
-
);
|
|
49
|
-
return parseBigintAPIResponse(result);
|
|
50
|
-
}
|
|
51
|
-
async getSmartWalletConfig(user, chain) {
|
|
52
|
-
const data = await this.fetchCrossmintAPI(
|
|
53
|
-
`${API_VERSION}/sdk/smart-wallet/config?chain=${chain}`,
|
|
54
|
-
{ method: "GET" },
|
|
55
|
-
"Error getting smart wallet version configuration. Please contact support",
|
|
56
|
-
user.jwt
|
|
57
|
-
);
|
|
58
|
-
const result = SmartWalletConfigSchema.safeParse(data);
|
|
59
|
-
if (!result.success) {
|
|
60
|
-
throw new CrossmintServiceError(
|
|
61
|
-
`Invalid smart wallet config, please contact support. Details below:
|
|
62
|
-
${result.error.toString()}`
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
return result.data;
|
|
66
|
-
}
|
|
67
|
-
async fetchNFTs(address, chain) {
|
|
68
|
-
return this.fetchCrossmintAPI(
|
|
69
|
-
`v1-alpha1/wallets/${chain}:${address}/nfts`,
|
|
70
|
-
{ method: "GET" },
|
|
71
|
-
`Error fetching NFTs for wallet: ${address}`
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
getPasskeyServerUrl() {
|
|
75
|
-
return this.crossmintBaseUrl + "api/internal/passkeys";
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
export {
|
|
80
|
-
CrossmintWalletService
|
|
81
|
-
};
|
|
82
|
-
//# sourceMappingURL=chunk-SBR2CREX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api/CrossmintWalletService.ts"],"sourcesContent":["import type { UserOperation } from \"permissionless\";\nimport type { EntryPoint, GetEntryPointVersion } from \"permissionless/types/entrypoint\";\n\nimport { APIErrorService, BaseCrossmintService, CrossmintServiceError } from \"@crossmint/client-sdk-base\";\nimport { blockchainToChainId } from \"@crossmint/common-sdk-base\";\n\nimport type { SmartWalletChain } from \"../blockchain/chains\";\nimport { AdminAlreadyUsedError, SmartWalletsNotEnabledError, UserWalletAlreadyCreatedError } from \"../error\";\nimport { scwLogger } from \"../services\";\nimport type { UserParams } from \"../types/params\";\nimport { SmartWalletConfigSchema } from \"../types/schema\";\nimport type { SmartWalletConfig, StoreSmartWalletParams } from \"../types/service\";\nimport { bigintsToHex, parseBigintAPIResponse } from \"../utils/api\";\nimport { API_VERSION } from \"../utils/constants\";\n\ntype WalletsAPIErrorCodes =\n | \"ERROR_USER_WALLET_ALREADY_CREATED\"\n | \"ERROR_ADMIN_SIGNER_ALREADY_USED\"\n | \"ERROR_PROJECT_NONCUSTODIAL_WALLETS_NOT_ENABLED\";\n\nexport class CrossmintWalletService extends BaseCrossmintService {\n logger = scwLogger;\n protected apiErrorService = new APIErrorService<WalletsAPIErrorCodes>({\n ERROR_USER_WALLET_ALREADY_CREATED: ({ userId }: { userId: string }) =>\n new UserWalletAlreadyCreatedError(userId),\n ERROR_ADMIN_SIGNER_ALREADY_USED: () => new AdminAlreadyUsedError(),\n ERROR_PROJECT_NONCUSTODIAL_WALLETS_NOT_ENABLED: () => new SmartWalletsNotEnabledError(),\n });\n\n async idempotentCreateSmartWallet(user: UserParams, input: StoreSmartWalletParams): Promise<void> {\n await this.fetchCrossmintAPI(\n `${API_VERSION}/sdk/smart-wallet`,\n { method: \"PUT\", body: JSON.stringify(input) },\n \"Error creating abstract wallet. Please contact support\",\n user.jwt\n );\n }\n\n async sponsorUserOperation<E extends EntryPoint>(\n user: UserParams,\n userOp: UserOperation<GetEntryPointVersion<E>>,\n entryPoint: E,\n chain: SmartWalletChain\n ): Promise<{ sponsorUserOpParams: UserOperation<GetEntryPointVersion<E>> }> {\n const chainId = blockchainToChainId(chain);\n const result = await this.fetchCrossmintAPI(\n `${API_VERSION}/sdk/paymaster`,\n { method: \"POST\", body: JSON.stringify({ userOp: bigintsToHex(userOp), entryPoint, chainId }) },\n \"Error sponsoring user operation. Please contact support\",\n user.jwt\n );\n return parseBigintAPIResponse(result);\n }\n\n async getSmartWalletConfig(user: UserParams, chain: SmartWalletChain): Promise<SmartWalletConfig> {\n const data: unknown = await this.fetchCrossmintAPI(\n `${API_VERSION}/sdk/smart-wallet/config?chain=${chain}`,\n { method: \"GET\" },\n \"Error getting smart wallet version configuration. Please contact support\",\n user.jwt\n );\n\n const result = SmartWalletConfigSchema.safeParse(data);\n if (!result.success) {\n throw new CrossmintServiceError(\n `Invalid smart wallet config, please contact support. Details below:\\n${result.error.toString()}`\n );\n }\n\n return result.data;\n }\n\n async fetchNFTs(address: string, chain: SmartWalletChain) {\n return this.fetchCrossmintAPI(\n `v1-alpha1/wallets/${chain}:${address}/nfts`,\n { method: \"GET\" },\n `Error fetching NFTs for wallet: ${address}`\n );\n }\n\n public getPasskeyServerUrl(): string {\n return this.crossmintBaseUrl + \"api/internal/passkeys\";\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAGA,SAAS,iBAAiB,sBAAsB,6BAA6B;AAC7E,SAAS,2BAA2B;AAgB7B,IAAM,yBAAN,cAAqC,qBAAqB;AAAA,EAA1D;AAAA;AACH,kBAAS;AACT,SAAU,kBAAkB,IAAI,gBAAsC;AAAA,MAClE,mCAAmC,CAAC,EAAE,OAAO,MACzC,IAAI,8BAA8B,MAAM;AAAA,MAC5C,iCAAiC,MAAM,IAAI,sBAAsB;AAAA,MACjE,gDAAgD,MAAM,IAAI,4BAA4B;AAAA,IAC1F,CAAC;AAAA;AAAA,EAED,MAAM,4BAA4B,MAAkB,OAA8C;AAC9F,UAAM,KAAK;AAAA,MACP,GAAG,WAAW;AAAA,MACd,EAAE,QAAQ,OAAO,MAAM,KAAK,UAAU,KAAK,EAAE;AAAA,MAC7C;AAAA,MACA,KAAK;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,MAAM,qBACF,MACA,QACA,YACA,OACwE;AACxE,UAAM,UAAU,oBAAoB,KAAK;AACzC,UAAM,SAAS,MAAM,KAAK;AAAA,MACtB,GAAG,WAAW;AAAA,MACd,EAAE,QAAQ,QAAQ,MAAM,KAAK,UAAU,EAAE,QAAQ,aAAa,MAAM,GAAG,YAAY,QAAQ,CAAC,EAAE;AAAA,MAC9F;AAAA,MACA,KAAK;AAAA,IACT;AACA,WAAO,uBAAuB,MAAM;AAAA,EACxC;AAAA,EAEA,MAAM,qBAAqB,MAAkB,OAAqD;AAC9F,UAAM,OAAgB,MAAM,KAAK;AAAA,MAC7B,GAAG,WAAW,kCAAkC,KAAK;AAAA,MACrD,EAAE,QAAQ,MAAM;AAAA,MAChB;AAAA,MACA,KAAK;AAAA,IACT;AAEA,UAAM,SAAS,wBAAwB,UAAU,IAAI;AACrD,QAAI,CAAC,OAAO,SAAS;AACjB,YAAM,IAAI;AAAA,QACN;AAAA,EAAwE,OAAO,MAAM,SAAS,CAAC;AAAA,MACnG;AAAA,IACJ;AAEA,WAAO,OAAO;AAAA,EAClB;AAAA,EAEA,MAAM,UAAU,SAAiB,OAAyB;AACtD,WAAO,KAAK;AAAA,MACR,qBAAqB,KAAK,IAAI,OAAO;AAAA,MACrC,EAAE,QAAQ,MAAM;AAAA,MAChB,mCAAmC,OAAO;AAAA,IAC9C;AAAA,EACJ;AAAA,EAEO,sBAA8B;AACjC,WAAO,KAAK,mBAAmB;AAAA,EACnC;AACJ;","names":[]}
|
package/dist/chunk-SMDX2MXU.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// src/utils/helpers.ts
|
|
2
|
-
function isEmpty(str) {
|
|
3
|
-
return !str || str.length === 0 || str.trim().length === 0;
|
|
4
|
-
}
|
|
5
|
-
function equalsIgnoreCase(a, b) {
|
|
6
|
-
return a?.toLowerCase() === b?.toLowerCase();
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export {
|
|
10
|
-
isEmpty,
|
|
11
|
-
equalsIgnoreCase
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=chunk-SMDX2MXU.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/helpers.ts"],"sourcesContent":["export function isEmpty(str: string | undefined | null): str is undefined | null {\n return !str || str.length === 0 || str.trim().length === 0;\n}\n\nexport function equalsIgnoreCase(a?: string, b?: string): boolean {\n return a?.toLowerCase() === b?.toLowerCase();\n}\n"],"mappings":";AAAO,SAAS,QAAQ,KAAyD;AAC7E,SAAO,CAAC,OAAO,IAAI,WAAW,KAAK,IAAI,KAAK,EAAE,WAAW;AAC7D;AAEO,SAAS,iBAAiB,GAAY,GAAqB;AAC9D,SAAO,GAAG,YAAY,MAAM,GAAG,YAAY;AAC/C;","names":[]}
|
package/dist/chunk-TDJDKTRS.js
DELETED
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
PasskeySignerConfig
|
|
3
|
-
} from "./chunk-3R6PW6HY.js";
|
|
4
|
-
import {
|
|
5
|
-
PasskeyIncompatibleAuthenticatorError,
|
|
6
|
-
PasskeyMismatchError,
|
|
7
|
-
PasskeyPromptError,
|
|
8
|
-
PasskeyRegistrationError
|
|
9
|
-
} from "./chunk-ASIPMVRQ.js";
|
|
10
|
-
|
|
11
|
-
// src/blockchain/wallets/account/passkey.ts
|
|
12
|
-
import { PasskeyValidatorContractVersion, WebAuthnMode, toPasskeyValidator } from "@zerodev/passkey-validator";
|
|
13
|
-
import { createKernelAccount } from "@zerodev/sdk";
|
|
14
|
-
import { toWebAuthnKey } from "@zerodev/webauthn-key";
|
|
15
|
-
var PasskeyCreationStrategy = class {
|
|
16
|
-
constructor(passkeyServerUrl, apiKey) {
|
|
17
|
-
this.passkeyServerUrl = passkeyServerUrl;
|
|
18
|
-
this.apiKey = apiKey;
|
|
19
|
-
}
|
|
20
|
-
async create({
|
|
21
|
-
user,
|
|
22
|
-
publicClient,
|
|
23
|
-
walletParams,
|
|
24
|
-
entryPoint,
|
|
25
|
-
kernelVersion,
|
|
26
|
-
existing
|
|
27
|
-
}) {
|
|
28
|
-
const inputPasskeyName = walletParams.signer.passkeyName ?? user.id;
|
|
29
|
-
if (existing != null && existing.signerConfig.data.passkeyName !== inputPasskeyName) {
|
|
30
|
-
throw new PasskeyMismatchError(
|
|
31
|
-
`User '${user.id}' has an existing wallet created with a passkey named '${existing.signerConfig.data.passkeyName}', this does match input passkey name '${inputPasskeyName}'.`,
|
|
32
|
-
existing.signerConfig.display()
|
|
33
|
-
);
|
|
34
|
-
}
|
|
35
|
-
try {
|
|
36
|
-
if (existing == null && walletParams.signer.onPrePasskeyRegistration != null) {
|
|
37
|
-
await walletParams.signer.onPrePasskeyRegistration();
|
|
38
|
-
}
|
|
39
|
-
const passkey = await this.getPasskey(user, inputPasskeyName, existing?.signerConfig.data);
|
|
40
|
-
const latestValidatorVersion = PasskeyValidatorContractVersion.V0_0_2;
|
|
41
|
-
const validatorContractVersion = existing == null ? latestValidatorVersion : existing.signerConfig.data.validatorContractVersion;
|
|
42
|
-
const validator = await toPasskeyValidator(publicClient, {
|
|
43
|
-
webAuthnKey: passkey,
|
|
44
|
-
entryPoint,
|
|
45
|
-
validatorContractVersion,
|
|
46
|
-
kernelVersion
|
|
47
|
-
});
|
|
48
|
-
const kernelAccount = await createKernelAccount(publicClient, {
|
|
49
|
-
plugins: { sudo: validator },
|
|
50
|
-
entryPoint,
|
|
51
|
-
kernelVersion,
|
|
52
|
-
deployedAccountAddress: existing?.address
|
|
53
|
-
});
|
|
54
|
-
return {
|
|
55
|
-
signerConfig: this.getSignerConfig(validator, validatorContractVersion, inputPasskeyName),
|
|
56
|
-
account: this.decorate(kernelAccount, inputPasskeyName, walletParams)
|
|
57
|
-
};
|
|
58
|
-
} catch (error) {
|
|
59
|
-
if (walletParams.signer.onPasskeyRegistrationError != null) {
|
|
60
|
-
walletParams.signer.onPasskeyRegistrationError(error);
|
|
61
|
-
}
|
|
62
|
-
throw this.mapError(error, inputPasskeyName);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
async getPasskey(user, passkeyName, existing) {
|
|
66
|
-
if (existing != null) {
|
|
67
|
-
return {
|
|
68
|
-
pubX: BigInt(existing.pubKeyX),
|
|
69
|
-
pubY: BigInt(existing.pubKeyY),
|
|
70
|
-
authenticatorId: existing.authenticatorId,
|
|
71
|
-
authenticatorIdHash: existing.authenticatorIdHash
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
return toWebAuthnKey({
|
|
75
|
-
passkeyName,
|
|
76
|
-
passkeyServerUrl: this.passkeyServerUrl,
|
|
77
|
-
mode: WebAuthnMode.Register,
|
|
78
|
-
passkeyServerHeaders: this.createPasskeysServerHeaders(user)
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
getSignerConfig(validator, validatorContractVersion, passkeyName) {
|
|
82
|
-
return new PasskeySignerConfig({
|
|
83
|
-
...deserializePasskeyValidatorData(validator.getSerializedData()),
|
|
84
|
-
passkeyName,
|
|
85
|
-
validatorContractVersion,
|
|
86
|
-
domain: window.location.hostname,
|
|
87
|
-
type: "passkeys"
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
createPasskeysServerHeaders(user) {
|
|
91
|
-
return {
|
|
92
|
-
"x-api-key": this.apiKey,
|
|
93
|
-
Authorization: `Bearer ${user.jwt}`
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
mapError(error, passkeyName) {
|
|
97
|
-
if (error.code === 0 && error.name === "DataError") {
|
|
98
|
-
return new PasskeyIncompatibleAuthenticatorError(passkeyName);
|
|
99
|
-
}
|
|
100
|
-
if (error.message === "Registration not verified") {
|
|
101
|
-
return new PasskeyRegistrationError(passkeyName);
|
|
102
|
-
}
|
|
103
|
-
if (error.code === "ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY" && error.name === "NotAllowedError") {
|
|
104
|
-
return new PasskeyPromptError(passkeyName);
|
|
105
|
-
}
|
|
106
|
-
return error;
|
|
107
|
-
}
|
|
108
|
-
decorate(account, passkeyName, walletParams) {
|
|
109
|
-
return new Proxy(account, {
|
|
110
|
-
get: (target, prop, receiver) => {
|
|
111
|
-
const original = Reflect.get(target, prop, receiver);
|
|
112
|
-
if (typeof original !== "function" || typeof prop !== "string" || !isAccountSigningMethod(prop)) {
|
|
113
|
-
return original;
|
|
114
|
-
}
|
|
115
|
-
const signer = walletParams.signer;
|
|
116
|
-
return async (...args) => {
|
|
117
|
-
const isFirstTransaction = args?.[0]?.factoryData != null;
|
|
118
|
-
if (isFirstTransaction && prop === "signUserOperation" && signer.type === "PASSKEY" && signer.onFirstTimePasskeySigning != null) {
|
|
119
|
-
await signer.onFirstTimePasskeySigning();
|
|
120
|
-
}
|
|
121
|
-
try {
|
|
122
|
-
return await original.call(target, ...args);
|
|
123
|
-
} catch (error) {
|
|
124
|
-
if (signer.onFirstTimePasskeySigningError != null) {
|
|
125
|
-
await signer.onFirstTimePasskeySigningError(error);
|
|
126
|
-
}
|
|
127
|
-
throw this.mapError(error, passkeyName);
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
var accountSigningMethods = [
|
|
135
|
-
"signMessage",
|
|
136
|
-
"signTypedData",
|
|
137
|
-
"signUserOperation",
|
|
138
|
-
"signTransaction"
|
|
139
|
-
];
|
|
140
|
-
function isAccountSigningMethod(method) {
|
|
141
|
-
return accountSigningMethods.includes(method);
|
|
142
|
-
}
|
|
143
|
-
var deserializePasskeyValidatorData = (params) => {
|
|
144
|
-
const uint8Array = base64ToBytes(params);
|
|
145
|
-
const jsonString = new TextDecoder().decode(uint8Array);
|
|
146
|
-
return JSON.parse(jsonString);
|
|
147
|
-
};
|
|
148
|
-
function base64ToBytes(base64) {
|
|
149
|
-
const binString = atob(base64);
|
|
150
|
-
return Uint8Array.from(binString, (m) => m.codePointAt(0));
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
export {
|
|
154
|
-
PasskeyCreationStrategy
|
|
155
|
-
};
|
|
156
|
-
//# sourceMappingURL=chunk-TDJDKTRS.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/blockchain/wallets/account/passkey.ts"],"sourcesContent":["import { PasskeyValidatorContractVersion, WebAuthnMode, toPasskeyValidator } from \"@zerodev/passkey-validator\";\nimport { type KernelSmartAccount, type KernelValidator, createKernelAccount } from \"@zerodev/sdk\";\nimport { type WebAuthnKey, toWebAuthnKey } from \"@zerodev/webauthn-key\";\nimport type { SmartAccount } from \"permissionless/accounts\";\nimport type { EntryPoint } from \"permissionless/types/entrypoint\";\n\nimport {\n PasskeyIncompatibleAuthenticatorError,\n PasskeyMismatchError,\n PasskeyPromptError,\n PasskeyRegistrationError,\n} from \"../../../error\";\nimport type { AccountAndSigner, PasskeyCreationContext } from \"../../../types/internal\";\nimport type { PasskeySigner, UserParams, WalletParams } from \"../../../types/params\";\nimport type { PasskeySignerData, PasskeyValidatorSerializedData } from \"../../../types/service\";\nimport { PasskeySignerConfig } from \"./signer\";\nimport type { AccountCreationStrategy } from \"./strategy\";\n\ntype PasskeyValidator = KernelValidator<EntryPoint, \"WebAuthnValidator\"> & {\n getSerializedData: () => string;\n};\nexport class PasskeyCreationStrategy implements AccountCreationStrategy {\n constructor(\n private readonly passkeyServerUrl: string,\n private readonly apiKey: string\n ) {}\n\n public async create({\n user,\n publicClient,\n walletParams,\n entryPoint,\n kernelVersion,\n existing,\n }: PasskeyCreationContext): Promise<AccountAndSigner> {\n const inputPasskeyName = walletParams.signer.passkeyName ?? user.id;\n if (existing != null && existing.signerConfig.data.passkeyName !== inputPasskeyName) {\n throw new PasskeyMismatchError(\n `User '${user.id}' has an existing wallet created with a passkey named '${existing.signerConfig.data.passkeyName}', this does match input passkey name '${inputPasskeyName}'.`,\n existing.signerConfig.display()\n );\n }\n\n try {\n if (existing == null && walletParams.signer.onPrePasskeyRegistration != null) {\n await walletParams.signer.onPrePasskeyRegistration();\n }\n\n const passkey = await this.getPasskey(user, inputPasskeyName, existing?.signerConfig.data);\n\n const latestValidatorVersion = PasskeyValidatorContractVersion.V0_0_2;\n const validatorContractVersion =\n existing == null ? latestValidatorVersion : existing.signerConfig.data.validatorContractVersion;\n\n const validator = await toPasskeyValidator(publicClient, {\n webAuthnKey: passkey,\n entryPoint,\n validatorContractVersion,\n kernelVersion,\n });\n\n const kernelAccount = await createKernelAccount(publicClient, {\n plugins: { sudo: validator },\n entryPoint,\n kernelVersion,\n deployedAccountAddress: existing?.address,\n });\n\n return {\n signerConfig: this.getSignerConfig(validator, validatorContractVersion, inputPasskeyName),\n account: this.decorate(kernelAccount, inputPasskeyName, walletParams),\n };\n } catch (error) {\n if (walletParams.signer.onPasskeyRegistrationError != null) {\n walletParams.signer.onPasskeyRegistrationError(error);\n }\n throw this.mapError(error, inputPasskeyName);\n }\n }\n\n private async getPasskey(\n user: UserParams,\n passkeyName: string,\n existing?: PasskeySignerData\n ): Promise<WebAuthnKey> {\n if (existing != null) {\n return {\n pubX: BigInt(existing.pubKeyX),\n pubY: BigInt(existing.pubKeyY),\n authenticatorId: existing.authenticatorId,\n authenticatorIdHash: existing.authenticatorIdHash,\n };\n }\n\n return toWebAuthnKey({\n passkeyName,\n passkeyServerUrl: this.passkeyServerUrl,\n mode: WebAuthnMode.Register,\n passkeyServerHeaders: this.createPasskeysServerHeaders(user),\n });\n }\n\n private getSignerConfig(\n validator: PasskeyValidator,\n validatorContractVersion: PasskeyValidatorContractVersion,\n passkeyName: string\n ): PasskeySignerConfig {\n return new PasskeySignerConfig({\n ...deserializePasskeyValidatorData(validator.getSerializedData()),\n passkeyName,\n validatorContractVersion,\n domain: window.location.hostname,\n type: \"passkeys\",\n });\n }\n\n private createPasskeysServerHeaders(user: UserParams) {\n return {\n \"x-api-key\": this.apiKey,\n Authorization: `Bearer ${user.jwt}`,\n };\n }\n\n private mapError(error: any, passkeyName: string) {\n if (error.code === 0 && error.name === \"DataError\") {\n return new PasskeyIncompatibleAuthenticatorError(passkeyName);\n }\n\n if (error.message === \"Registration not verified\") {\n return new PasskeyRegistrationError(passkeyName);\n }\n\n if (error.code === \"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY\" && error.name === \"NotAllowedError\") {\n return new PasskeyPromptError(passkeyName);\n }\n\n return error;\n }\n\n private decorate<Account extends KernelSmartAccount<EntryPoint>>(\n account: Account,\n passkeyName: string,\n walletParams: WalletParams\n ): Account {\n return new Proxy(account, {\n get: (target, prop, receiver) => {\n const original = Reflect.get(target, prop, receiver);\n if (typeof original !== \"function\" || typeof prop !== \"string\" || !isAccountSigningMethod(prop)) {\n return original;\n }\n\n const signer = walletParams.signer as PasskeySigner;\n return async (...args: any[]) => {\n const isFirstTransaction = args?.[0]?.factoryData != null;\n if (\n isFirstTransaction &&\n prop === \"signUserOperation\" &&\n signer.type === \"PASSKEY\" &&\n signer.onFirstTimePasskeySigning != null\n ) {\n await signer.onFirstTimePasskeySigning();\n }\n try {\n return await original.call(target, ...args);\n } catch (error) {\n if (signer.onFirstTimePasskeySigningError != null) {\n await signer.onFirstTimePasskeySigningError(error);\n }\n throw this.mapError(error, passkeyName);\n }\n };\n },\n });\n }\n}\n\nconst accountSigningMethods = [\n \"signMessage\",\n \"signTypedData\",\n \"signUserOperation\",\n \"signTransaction\",\n] as const satisfies readonly (keyof SmartAccount<EntryPoint>)[];\n\nfunction isAccountSigningMethod(method: string): method is (typeof accountSigningMethods)[number] {\n return accountSigningMethods.includes(method as any);\n}\n\nconst deserializePasskeyValidatorData = (params: string) => {\n const uint8Array = base64ToBytes(params);\n const jsonString = new TextDecoder().decode(uint8Array);\n\n return JSON.parse(jsonString) as PasskeyValidatorSerializedData;\n};\n\nfunction base64ToBytes(base64: string) {\n const binString = atob(base64);\n return Uint8Array.from(binString, (m) => m.codePointAt(0) as number);\n}\n"],"mappings":";;;;;;;;;;;AAAA,SAAS,iCAAiC,cAAc,0BAA0B;AAClF,SAAwD,2BAA2B;AACnF,SAA2B,qBAAqB;AAmBzC,IAAM,0BAAN,MAAiE;AAAA,EACpE,YACqB,kBACA,QACnB;AAFmB;AACA;AAAA,EAClB;AAAA,EAEH,MAAa,OAAO;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAAsD;AAClD,UAAM,mBAAmB,aAAa,OAAO,eAAe,KAAK;AACjE,QAAI,YAAY,QAAQ,SAAS,aAAa,KAAK,gBAAgB,kBAAkB;AACjF,YAAM,IAAI;AAAA,QACN,SAAS,KAAK,EAAE,0DAA0D,SAAS,aAAa,KAAK,WAAW,0CAA0C,gBAAgB;AAAA,QAC1K,SAAS,aAAa,QAAQ;AAAA,MAClC;AAAA,IACJ;AAEA,QAAI;AACA,UAAI,YAAY,QAAQ,aAAa,OAAO,4BAA4B,MAAM;AAC1E,cAAM,aAAa,OAAO,yBAAyB;AAAA,MACvD;AAEA,YAAM,UAAU,MAAM,KAAK,WAAW,MAAM,kBAAkB,UAAU,aAAa,IAAI;AAEzF,YAAM,yBAAyB,gCAAgC;AAC/D,YAAM,2BACF,YAAY,OAAO,yBAAyB,SAAS,aAAa,KAAK;AAE3E,YAAM,YAAY,MAAM,mBAAmB,cAAc;AAAA,QACrD,aAAa;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,MACJ,CAAC;AAED,YAAM,gBAAgB,MAAM,oBAAoB,cAAc;AAAA,QAC1D,SAAS,EAAE,MAAM,UAAU;AAAA,QAC3B;AAAA,QACA;AAAA,QACA,wBAAwB,UAAU;AAAA,MACtC,CAAC;AAED,aAAO;AAAA,QACH,cAAc,KAAK,gBAAgB,WAAW,0BAA0B,gBAAgB;AAAA,QACxF,SAAS,KAAK,SAAS,eAAe,kBAAkB,YAAY;AAAA,MACxE;AAAA,IACJ,SAAS,OAAO;AACZ,UAAI,aAAa,OAAO,8BAA8B,MAAM;AACxD,qBAAa,OAAO,2BAA2B,KAAK;AAAA,MACxD;AACA,YAAM,KAAK,SAAS,OAAO,gBAAgB;AAAA,IAC/C;AAAA,EACJ;AAAA,EAEA,MAAc,WACV,MACA,aACA,UACoB;AACpB,QAAI,YAAY,MAAM;AAClB,aAAO;AAAA,QACH,MAAM,OAAO,SAAS,OAAO;AAAA,QAC7B,MAAM,OAAO,SAAS,OAAO;AAAA,QAC7B,iBAAiB,SAAS;AAAA,QAC1B,qBAAqB,SAAS;AAAA,MAClC;AAAA,IACJ;AAEA,WAAO,cAAc;AAAA,MACjB;AAAA,MACA,kBAAkB,KAAK;AAAA,MACvB,MAAM,aAAa;AAAA,MACnB,sBAAsB,KAAK,4BAA4B,IAAI;AAAA,IAC/D,CAAC;AAAA,EACL;AAAA,EAEQ,gBACJ,WACA,0BACA,aACmB;AACnB,WAAO,IAAI,oBAAoB;AAAA,MAC3B,GAAG,gCAAgC,UAAU,kBAAkB,CAAC;AAAA,MAChE;AAAA,MACA;AAAA,MACA,QAAQ,OAAO,SAAS;AAAA,MACxB,MAAM;AAAA,IACV,CAAC;AAAA,EACL;AAAA,EAEQ,4BAA4B,MAAkB;AAClD,WAAO;AAAA,MACH,aAAa,KAAK;AAAA,MAClB,eAAe,UAAU,KAAK,GAAG;AAAA,IACrC;AAAA,EACJ;AAAA,EAEQ,SAAS,OAAY,aAAqB;AAC9C,QAAI,MAAM,SAAS,KAAK,MAAM,SAAS,aAAa;AAChD,aAAO,IAAI,sCAAsC,WAAW;AAAA,IAChE;AAEA,QAAI,MAAM,YAAY,6BAA6B;AAC/C,aAAO,IAAI,yBAAyB,WAAW;AAAA,IACnD;AAEA,QAAI,MAAM,SAAS,0CAA0C,MAAM,SAAS,mBAAmB;AAC3F,aAAO,IAAI,mBAAmB,WAAW;AAAA,IAC7C;AAEA,WAAO;AAAA,EACX;AAAA,EAEQ,SACJ,SACA,aACA,cACO;AACP,WAAO,IAAI,MAAM,SAAS;AAAA,MACtB,KAAK,CAAC,QAAQ,MAAM,aAAa;AAC7B,cAAM,WAAW,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AACnD,YAAI,OAAO,aAAa,cAAc,OAAO,SAAS,YAAY,CAAC,uBAAuB,IAAI,GAAG;AAC7F,iBAAO;AAAA,QACX;AAEA,cAAM,SAAS,aAAa;AAC5B,eAAO,UAAU,SAAgB;AAC7B,gBAAM,qBAAqB,OAAO,CAAC,GAAG,eAAe;AACrD,cACI,sBACA,SAAS,uBACT,OAAO,SAAS,aAChB,OAAO,6BAA6B,MACtC;AACE,kBAAM,OAAO,0BAA0B;AAAA,UAC3C;AACA,cAAI;AACA,mBAAO,MAAM,SAAS,KAAK,QAAQ,GAAG,IAAI;AAAA,UAC9C,SAAS,OAAO;AACZ,gBAAI,OAAO,kCAAkC,MAAM;AAC/C,oBAAM,OAAO,+BAA+B,KAAK;AAAA,YACrD;AACA,kBAAM,KAAK,SAAS,OAAO,WAAW;AAAA,UAC1C;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;AAEA,IAAM,wBAAwB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEA,SAAS,uBAAuB,QAAkE;AAC9F,SAAO,sBAAsB,SAAS,MAAa;AACvD;AAEA,IAAM,kCAAkC,CAAC,WAAmB;AACxD,QAAM,aAAa,cAAc,MAAM;AACvC,QAAM,aAAa,IAAI,YAAY,EAAE,OAAO,UAAU;AAEtD,SAAO,KAAK,MAAM,UAAU;AAChC;AAEA,SAAS,cAAc,QAAgB;AACnC,QAAM,YAAY,KAAK,MAAM;AAC7B,SAAO,WAAW,KAAK,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAW;AACvE;","names":[]}
|
package/dist/chunk-TZUJ5MXW.cjs
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
-
|
|
3
|
-
var _chunkJLZCSWUYcjs = require('./chunk-JLZCSWUY.cjs');
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var _chunkRUTDRRS2cjs = require('./chunk-RUTDRRS2.cjs');
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var _chunkO6IFYHDPcjs = require('./chunk-O6IFYHDP.cjs');
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var _chunkIZZQHNZTcjs = require('./chunk-IZZQHNZT.cjs');
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var _chunkBXSAJOIVcjs = require('./chunk-BXSAJOIV.cjs');
|
|
19
|
-
|
|
20
|
-
// src/api/CrossmintWalletService.ts
|
|
21
|
-
var _clientsdkbase = require('@crossmint/client-sdk-base');
|
|
22
|
-
var _commonsdkbase = require('@crossmint/common-sdk-base');
|
|
23
|
-
var CrossmintWalletService = class extends _clientsdkbase.BaseCrossmintService {
|
|
24
|
-
constructor() {
|
|
25
|
-
super(...arguments);
|
|
26
|
-
this.logger = _chunkJLZCSWUYcjs.scwLogger;
|
|
27
|
-
this.apiErrorService = new (0, _clientsdkbase.APIErrorService)({
|
|
28
|
-
ERROR_USER_WALLET_ALREADY_CREATED: ({ userId }) => new (0, _chunkBXSAJOIVcjs.UserWalletAlreadyCreatedError)(userId),
|
|
29
|
-
ERROR_ADMIN_SIGNER_ALREADY_USED: () => new (0, _chunkBXSAJOIVcjs.AdminAlreadyUsedError)(),
|
|
30
|
-
ERROR_PROJECT_NONCUSTODIAL_WALLETS_NOT_ENABLED: () => new (0, _chunkBXSAJOIVcjs.SmartWalletsNotEnabledError)()
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
async idempotentCreateSmartWallet(user, input) {
|
|
34
|
-
await this.fetchCrossmintAPI(
|
|
35
|
-
`${_chunkIZZQHNZTcjs.API_VERSION}/sdk/smart-wallet`,
|
|
36
|
-
{ method: "PUT", body: JSON.stringify(input) },
|
|
37
|
-
"Error creating abstract wallet. Please contact support",
|
|
38
|
-
user.jwt
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
async sponsorUserOperation(user, userOp, entryPoint, chain) {
|
|
42
|
-
const chainId = _commonsdkbase.blockchainToChainId.call(void 0, chain);
|
|
43
|
-
const result = await this.fetchCrossmintAPI(
|
|
44
|
-
`${_chunkIZZQHNZTcjs.API_VERSION}/sdk/paymaster`,
|
|
45
|
-
{ method: "POST", body: JSON.stringify({ userOp: _chunkO6IFYHDPcjs.bigintsToHex.call(void 0, userOp), entryPoint, chainId }) },
|
|
46
|
-
"Error sponsoring user operation. Please contact support",
|
|
47
|
-
user.jwt
|
|
48
|
-
);
|
|
49
|
-
return _chunkO6IFYHDPcjs.parseBigintAPIResponse.call(void 0, result);
|
|
50
|
-
}
|
|
51
|
-
async getSmartWalletConfig(user, chain) {
|
|
52
|
-
const data = await this.fetchCrossmintAPI(
|
|
53
|
-
`${_chunkIZZQHNZTcjs.API_VERSION}/sdk/smart-wallet/config?chain=${chain}`,
|
|
54
|
-
{ method: "GET" },
|
|
55
|
-
"Error getting smart wallet version configuration. Please contact support",
|
|
56
|
-
user.jwt
|
|
57
|
-
);
|
|
58
|
-
const result = _chunkRUTDRRS2cjs.SmartWalletConfigSchema.safeParse(data);
|
|
59
|
-
if (!result.success) {
|
|
60
|
-
throw new (0, _clientsdkbase.CrossmintServiceError)(
|
|
61
|
-
`Invalid smart wallet config, please contact support. Details below:
|
|
62
|
-
${result.error.toString()}`
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
return result.data;
|
|
66
|
-
}
|
|
67
|
-
async fetchNFTs(address, chain) {
|
|
68
|
-
return this.fetchCrossmintAPI(
|
|
69
|
-
`v1-alpha1/wallets/${chain}:${address}/nfts`,
|
|
70
|
-
{ method: "GET" },
|
|
71
|
-
`Error fetching NFTs for wallet: ${address}`
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
getPasskeyServerUrl() {
|
|
75
|
-
return this.crossmintBaseUrl + "api/internal/passkeys";
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
exports.CrossmintWalletService = CrossmintWalletService;
|
|
82
|
-
//# sourceMappingURL=chunk-TZUJ5MXW.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api/CrossmintWalletService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAGA,SAAS,iBAAiB,sBAAsB,6BAA6B;AAC7E,SAAS,2BAA2B;AAgB7B,IAAM,yBAAN,cAAqC,qBAAqB;AAAA,EAA1D;AAAA;AACH,kBAAS;AACT,SAAU,kBAAkB,IAAI,gBAAsC;AAAA,MAClE,mCAAmC,CAAC,EAAE,OAAO,MACzC,IAAI,8BAA8B,MAAM;AAAA,MAC5C,iCAAiC,MAAM,IAAI,sBAAsB;AAAA,MACjE,gDAAgD,MAAM,IAAI,4BAA4B;AAAA,IAC1F,CAAC;AAAA;AAAA,EAED,MAAM,4BAA4B,MAAkB,OAA8C;AAC9F,UAAM,KAAK;AAAA,MACP,GAAG,WAAW;AAAA,MACd,EAAE,QAAQ,OAAO,MAAM,KAAK,UAAU,KAAK,EAAE;AAAA,MAC7C;AAAA,MACA,KAAK;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,MAAM,qBACF,MACA,QACA,YACA,OACwE;AACxE,UAAM,UAAU,oBAAoB,KAAK;AACzC,UAAM,SAAS,MAAM,KAAK;AAAA,MACtB,GAAG,WAAW;AAAA,MACd,EAAE,QAAQ,QAAQ,MAAM,KAAK,UAAU,EAAE,QAAQ,aAAa,MAAM,GAAG,YAAY,QAAQ,CAAC,EAAE;AAAA,MAC9F;AAAA,MACA,KAAK;AAAA,IACT;AACA,WAAO,uBAAuB,MAAM;AAAA,EACxC;AAAA,EAEA,MAAM,qBAAqB,MAAkB,OAAqD;AAC9F,UAAM,OAAgB,MAAM,KAAK;AAAA,MAC7B,GAAG,WAAW,kCAAkC,KAAK;AAAA,MACrD,EAAE,QAAQ,MAAM;AAAA,MAChB;AAAA,MACA,KAAK;AAAA,IACT;AAEA,UAAM,SAAS,wBAAwB,UAAU,IAAI;AACrD,QAAI,CAAC,OAAO,SAAS;AACjB,YAAM,IAAI;AAAA,QACN;AAAA,EAAwE,OAAO,MAAM,SAAS,CAAC;AAAA,MACnG;AAAA,IACJ;AAEA,WAAO,OAAO;AAAA,EAClB;AAAA,EAEA,MAAM,UAAU,SAAiB,OAAyB;AACtD,WAAO,KAAK;AAAA,MACR,qBAAqB,KAAK,IAAI,OAAO;AAAA,MACrC,EAAE,QAAQ,MAAM;AAAA,MAChB,mCAAmC,OAAO;AAAA,IAC9C;AAAA,EACJ;AAAA,EAEO,sBAA8B;AACjC,WAAO,KAAK,mBAAmB;AAAA,EACnC;AACJ","sourcesContent":["import type { UserOperation } from \"permissionless\";\nimport type { EntryPoint, GetEntryPointVersion } from \"permissionless/types/entrypoint\";\n\nimport { APIErrorService, BaseCrossmintService, CrossmintServiceError } from \"@crossmint/client-sdk-base\";\nimport { blockchainToChainId } from \"@crossmint/common-sdk-base\";\n\nimport type { SmartWalletChain } from \"../blockchain/chains\";\nimport { AdminAlreadyUsedError, SmartWalletsNotEnabledError, UserWalletAlreadyCreatedError } from \"../error\";\nimport { scwLogger } from \"../services\";\nimport type { UserParams } from \"../types/params\";\nimport { SmartWalletConfigSchema } from \"../types/schema\";\nimport type { SmartWalletConfig, StoreSmartWalletParams } from \"../types/service\";\nimport { bigintsToHex, parseBigintAPIResponse } from \"../utils/api\";\nimport { API_VERSION } from \"../utils/constants\";\n\ntype WalletsAPIErrorCodes =\n | \"ERROR_USER_WALLET_ALREADY_CREATED\"\n | \"ERROR_ADMIN_SIGNER_ALREADY_USED\"\n | \"ERROR_PROJECT_NONCUSTODIAL_WALLETS_NOT_ENABLED\";\n\nexport class CrossmintWalletService extends BaseCrossmintService {\n logger = scwLogger;\n protected apiErrorService = new APIErrorService<WalletsAPIErrorCodes>({\n ERROR_USER_WALLET_ALREADY_CREATED: ({ userId }: { userId: string }) =>\n new UserWalletAlreadyCreatedError(userId),\n ERROR_ADMIN_SIGNER_ALREADY_USED: () => new AdminAlreadyUsedError(),\n ERROR_PROJECT_NONCUSTODIAL_WALLETS_NOT_ENABLED: () => new SmartWalletsNotEnabledError(),\n });\n\n async idempotentCreateSmartWallet(user: UserParams, input: StoreSmartWalletParams): Promise<void> {\n await this.fetchCrossmintAPI(\n `${API_VERSION}/sdk/smart-wallet`,\n { method: \"PUT\", body: JSON.stringify(input) },\n \"Error creating abstract wallet. Please contact support\",\n user.jwt\n );\n }\n\n async sponsorUserOperation<E extends EntryPoint>(\n user: UserParams,\n userOp: UserOperation<GetEntryPointVersion<E>>,\n entryPoint: E,\n chain: SmartWalletChain\n ): Promise<{ sponsorUserOpParams: UserOperation<GetEntryPointVersion<E>> }> {\n const chainId = blockchainToChainId(chain);\n const result = await this.fetchCrossmintAPI(\n `${API_VERSION}/sdk/paymaster`,\n { method: \"POST\", body: JSON.stringify({ userOp: bigintsToHex(userOp), entryPoint, chainId }) },\n \"Error sponsoring user operation. Please contact support\",\n user.jwt\n );\n return parseBigintAPIResponse(result);\n }\n\n async getSmartWalletConfig(user: UserParams, chain: SmartWalletChain): Promise<SmartWalletConfig> {\n const data: unknown = await this.fetchCrossmintAPI(\n `${API_VERSION}/sdk/smart-wallet/config?chain=${chain}`,\n { method: \"GET\" },\n \"Error getting smart wallet version configuration. Please contact support\",\n user.jwt\n );\n\n const result = SmartWalletConfigSchema.safeParse(data);\n if (!result.success) {\n throw new CrossmintServiceError(\n `Invalid smart wallet config, please contact support. Details below:\\n${result.error.toString()}`\n );\n }\n\n return result.data;\n }\n\n async fetchNFTs(address: string, chain: SmartWalletChain) {\n return this.fetchCrossmintAPI(\n `v1-alpha1/wallets/${chain}:${address}/nfts`,\n { method: \"GET\" },\n `Error fetching NFTs for wallet: ${address}`\n );\n }\n\n public getPasskeyServerUrl(): string {\n return this.crossmintBaseUrl + \"api/internal/passkeys\";\n }\n}\n"]}
|
package/dist/chunk-U4OBHCIP.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
EOASignerConfig
|
|
3
|
-
} from "./chunk-3R6PW6HY.js";
|
|
4
|
-
import {
|
|
5
|
-
equalsIgnoreCase
|
|
6
|
-
} from "./chunk-SMDX2MXU.js";
|
|
7
|
-
import {
|
|
8
|
-
createOwnerSigner
|
|
9
|
-
} from "./chunk-EQSMHR77.js";
|
|
10
|
-
import {
|
|
11
|
-
AdminMismatchError
|
|
12
|
-
} from "./chunk-ASIPMVRQ.js";
|
|
13
|
-
|
|
14
|
-
// src/blockchain/wallets/account/eoa.ts
|
|
15
|
-
import { signerToEcdsaValidator } from "@zerodev/ecdsa-validator";
|
|
16
|
-
import { createKernelAccount } from "@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 createOwnerSigner({
|
|
28
|
-
chain,
|
|
29
|
-
walletParams
|
|
30
|
-
});
|
|
31
|
-
if (existing != null && !equalsIgnoreCase(eoa.address, existing.signerConfig.data.eoaAddress)) {
|
|
32
|
-
throw new 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 signerToEcdsaValidator(publicClient, {
|
|
39
|
-
signer: eoa,
|
|
40
|
-
entryPoint,
|
|
41
|
-
kernelVersion
|
|
42
|
-
});
|
|
43
|
-
const account = await createKernelAccount(publicClient, {
|
|
44
|
-
plugins: {
|
|
45
|
-
sudo: ecdsaValidator
|
|
46
|
-
},
|
|
47
|
-
index: 0n,
|
|
48
|
-
entryPoint,
|
|
49
|
-
kernelVersion,
|
|
50
|
-
deployedAccountAddress: existing?.address
|
|
51
|
-
});
|
|
52
|
-
return { account, signerConfig: new EOASignerConfig({ eoaAddress: eoa.address, type: "eoa" }) };
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
export {
|
|
57
|
-
EOACreationStrategy
|
|
58
|
-
};
|
|
59
|
-
//# sourceMappingURL=chunk-U4OBHCIP.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/blockchain/wallets/account/eoa.ts"],"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"],"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;","names":[]}
|
package/dist/chunk-UQKE6R5W.cjs
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/blockchain/rpc.ts
|
|
2
|
-
var _commonsdkbase = require('@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/${_commonsdkbase.blockchainToChainId.call(void 0, chain)}/rpc?apikey=${PIMLICO_API_KEY}`;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
exports.ALCHEMY_RPC_SUBDOMAIN = ALCHEMY_RPC_SUBDOMAIN; exports.getAlchemyRPC = getAlchemyRPC; exports.getPimlicoBundlerRPC = getPimlicoBundlerRPC;
|
|
27
|
-
//# sourceMappingURL=chunk-UQKE6R5W.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/blockchain/rpc.ts"],"names":[],"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","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"]}
|
package/dist/chunk-UZGHOTKZ.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SendTransactionService
|
|
3
|
-
} from "./chunk-3EQHAQXO.js";
|
|
4
|
-
import {
|
|
5
|
-
transferParams
|
|
6
|
-
} from "./chunk-ON4DOYVD.js";
|
|
7
|
-
import {
|
|
8
|
-
SmartWalletError
|
|
9
|
-
} from "./chunk-ASIPMVRQ.js";
|
|
10
|
-
|
|
11
|
-
// src/blockchain/wallets/EVMSmartWallet.ts
|
|
12
|
-
var EVMSmartWallet = class {
|
|
13
|
-
constructor(client, chain, crossmintService, sendTransactionService = new SendTransactionService(client)) {
|
|
14
|
-
this.crossmintService = crossmintService;
|
|
15
|
-
this.sendTransactionService = sendTransactionService;
|
|
16
|
-
this.chain = chain;
|
|
17
|
-
this.client = client;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* The address of the smart wallet.
|
|
21
|
-
*/
|
|
22
|
-
get address() {
|
|
23
|
-
return this.client.wallet.account.address;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Transfers tokens from the smart wallet to a specified address.
|
|
27
|
-
* @param toAddress The recipient's address.
|
|
28
|
-
* @param config The transfer configuration, including token details and amount.
|
|
29
|
-
* @returns The transaction hash.
|
|
30
|
-
* @throws {SmartWalletError} If there's a chain mismatch between this wallet and the input configuration.
|
|
31
|
-
* @throws {SendTransactionError} If the transaction fails to send. Contains the error thrown by the viem client.
|
|
32
|
-
* @throws {SendTransactionExecutionRevertedError} A subclass of SendTransactionError if the transaction fails due to a contract execution error.
|
|
33
|
-
*/
|
|
34
|
-
async transferToken(toAddress, config) {
|
|
35
|
-
if (this.chain !== config.token.chain) {
|
|
36
|
-
throw new SmartWalletError(
|
|
37
|
-
`Chain mismatch: Expected ${config.token.chain}, but got ${this.chain}. Ensure you are interacting with the correct blockchain.`
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
return this.executeContract(
|
|
41
|
-
transferParams({
|
|
42
|
-
contract: config.token.contractAddress,
|
|
43
|
-
to: toAddress,
|
|
44
|
-
from: this.client.wallet.account,
|
|
45
|
-
config
|
|
46
|
-
})
|
|
47
|
-
);
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* @returns A list of NFTs owned by the wallet.
|
|
51
|
-
*/
|
|
52
|
-
async nfts() {
|
|
53
|
-
return this.crossmintService.fetchNFTs(this.address, this.chain);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Sends a contract call transaction and returns the hash of a confirmed transaction.
|
|
57
|
-
* @param address the address of the contract to be called
|
|
58
|
-
* @param abi the ABI of the contract - ***should be defined as a typed variable*** to enable type checking of the contract arguments, see https://viem.sh/docs/typescript#type-inference for guidance
|
|
59
|
-
* @param functionName the name of the smart contract function to be called
|
|
60
|
-
* @param args the arguments to be passed to the function
|
|
61
|
-
* @returns The transaction hash.
|
|
62
|
-
* @throws `SendTransactionError` if the transaction fails to send. Contains the error thrown by the viem client.
|
|
63
|
-
* @throws `SendTransactionExecutionRevertedError`, a subclass of `SendTransactionError` if the transaction fails due to a contract execution error.
|
|
64
|
-
*
|
|
65
|
-
* **Passing a typed ABI:**
|
|
66
|
-
* @example
|
|
67
|
-
* const abi = [{
|
|
68
|
-
* "inputs": [
|
|
69
|
-
* {
|
|
70
|
-
* "internalType": "address",
|
|
71
|
-
* "name": "recipient",
|
|
72
|
-
* "type": "address"
|
|
73
|
-
* },
|
|
74
|
-
* ],
|
|
75
|
-
* "name": "mintNFT",
|
|
76
|
-
* "outputs": [],
|
|
77
|
-
* "stateMutability": "nonpayable",
|
|
78
|
-
* "type": "function"
|
|
79
|
-
* }] as const;
|
|
80
|
-
*
|
|
81
|
-
* await wallet.executeContract({
|
|
82
|
-
* address: contractAddress,
|
|
83
|
-
* abi,
|
|
84
|
-
* functionName: "mintNFT",
|
|
85
|
-
* args: [recipientAddress],
|
|
86
|
-
* });
|
|
87
|
-
*/
|
|
88
|
-
async executeContract({
|
|
89
|
-
address,
|
|
90
|
-
abi,
|
|
91
|
-
functionName,
|
|
92
|
-
args,
|
|
93
|
-
value,
|
|
94
|
-
config
|
|
95
|
-
}) {
|
|
96
|
-
return this.sendTransactionService.sendTransaction(
|
|
97
|
-
{
|
|
98
|
-
address,
|
|
99
|
-
abi,
|
|
100
|
-
functionName,
|
|
101
|
-
args,
|
|
102
|
-
value
|
|
103
|
-
},
|
|
104
|
-
config
|
|
105
|
-
);
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
export {
|
|
110
|
-
EVMSmartWallet
|
|
111
|
-
};
|
|
112
|
-
//# sourceMappingURL=chunk-UZGHOTKZ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/blockchain/wallets/EVMSmartWallet.ts"],"sourcesContent":["import type {\n Abi,\n Address,\n ContractFunctionArgs,\n ContractFunctionName,\n Hex,\n HttpTransport,\n PublicClient,\n WriteContractParameters,\n} from \"viem\";\n\nimport type { CrossmintWalletService } from \"../../api/CrossmintWalletService\";\nimport { SmartWalletError } from \"../../error\";\nimport type { SmartWalletClient } from \"../../types/internal\";\nimport type { TransferType } from \"../../types/token\";\nimport type { SmartWalletChain } from \"../chains\";\nimport { transferParams } from \"../transfer\";\nimport { type SendTransactionOptions, SendTransactionService } from \"./SendTransactionService\";\n\n/**\n * Smart wallet interface for EVM chains enhanced with Crossmint capabilities.\n * Core functionality is exposed via [viem](https://viem.sh/) clients within the `client` property of the class.\n */\nexport class EVMSmartWallet {\n public readonly chain: SmartWalletChain;\n\n /**\n * [viem](https://viem.sh/) clients that provide an interface for core wallet functionality.\n */\n public readonly client: {\n /**\n * An interface to interact with the smart wallet, execute transactions, sign messages, etc.\n */\n wallet: SmartWalletClient;\n\n /**\n * An interface to read onchain data, fetch transactions, retrieve account balances, etc. Corresponds to public [JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/) methods.\n */\n public: PublicClient;\n };\n\n constructor(\n client: { public: PublicClient<HttpTransport>; wallet: SmartWalletClient },\n chain: SmartWalletChain,\n private readonly crossmintService: CrossmintWalletService,\n private readonly sendTransactionService = new SendTransactionService(client)\n ) {\n this.chain = chain;\n this.client = client;\n }\n\n /**\n * The address of the smart wallet.\n */\n public get address() {\n return this.client.wallet.account.address;\n }\n\n /**\n * Transfers tokens from the smart wallet to a specified address.\n * @param toAddress The recipient's address.\n * @param config The transfer configuration, including token details and amount.\n * @returns The transaction hash.\n * @throws {SmartWalletError} If there's a chain mismatch between this wallet and the input configuration.\n * @throws {SendTransactionError} If the transaction fails to send. Contains the error thrown by the viem client.\n * @throws {SendTransactionExecutionRevertedError} A subclass of SendTransactionError if the transaction fails due to a contract execution error.\n */\n public async transferToken(toAddress: Address, config: TransferType): Promise<string> {\n if (this.chain !== config.token.chain) {\n throw new SmartWalletError(\n `Chain mismatch: Expected ${config.token.chain}, but got ${this.chain}. Ensure you are interacting with the correct blockchain.`\n );\n }\n\n return this.executeContract(\n transferParams({\n contract: config.token.contractAddress,\n to: toAddress,\n from: this.client.wallet.account,\n config,\n })\n );\n }\n\n /**\n * @returns A list of NFTs owned by the wallet.\n */\n public async nfts() {\n return this.crossmintService.fetchNFTs(this.address, this.chain);\n }\n\n /**\n * Sends a contract call transaction and returns the hash of a confirmed transaction.\n * @param address the address of the contract to be called\n * @param abi the ABI of the contract - ***should be defined as a typed variable*** to enable type checking of the contract arguments, see https://viem.sh/docs/typescript#type-inference for guidance\n * @param functionName the name of the smart contract function to be called\n * @param args the arguments to be passed to the function\n * @returns The transaction hash.\n * @throws `SendTransactionError` if the transaction fails to send. Contains the error thrown by the viem client.\n * @throws `SendTransactionExecutionRevertedError`, a subclass of `SendTransactionError` if the transaction fails due to a contract execution error.\n *\n * **Passing a typed ABI:**\n * @example\n * const abi = [{\n * \"inputs\": [\n * {\n * \"internalType\": \"address\",\n * \"name\": \"recipient\",\n * \"type\": \"address\"\n * },\n * ],\n * \"name\": \"mintNFT\",\n * \"outputs\": [],\n * \"stateMutability\": \"nonpayable\",\n * \"type\": \"function\"\n * }] as const;\n *\n * await wallet.executeContract({\n * address: contractAddress,\n * abi,\n * functionName: \"mintNFT\",\n * args: [recipientAddress],\n * });\n */\n public async executeContract<\n const TAbi extends Abi | readonly unknown[],\n TFunctionName extends ContractFunctionName<TAbi, \"nonpayable\" | \"payable\"> = ContractFunctionName<\n TAbi,\n \"nonpayable\" | \"payable\"\n >,\n TArgs extends ContractFunctionArgs<TAbi, \"nonpayable\" | \"payable\", TFunctionName> = ContractFunctionArgs<\n TAbi,\n \"nonpayable\" | \"payable\",\n TFunctionName\n >,\n >({\n address,\n abi,\n functionName,\n args,\n value,\n config,\n }: Omit<WriteContractParameters<TAbi, TFunctionName, TArgs>, \"chain\" | \"account\"> & {\n config?: Partial<SendTransactionOptions>;\n }): Promise<Hex> {\n return this.sendTransactionService.sendTransaction(\n {\n address,\n abi: abi as Abi,\n functionName,\n args,\n value,\n },\n config\n );\n }\n}\n"],"mappings":";;;;;;;;;;;AAuBO,IAAM,iBAAN,MAAqB;AAAA,EAkBxB,YACI,QACA,OACiB,kBACA,yBAAyB,IAAI,uBAAuB,MAAM,GAC7E;AAFmB;AACA;AAEjB,SAAK,QAAQ;AACb,SAAK,SAAS;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAW,UAAU;AACjB,WAAO,KAAK,OAAO,OAAO,QAAQ;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,cAAc,WAAoB,QAAuC;AAClF,QAAI,KAAK,UAAU,OAAO,MAAM,OAAO;AACnC,YAAM,IAAI;AAAA,QACN,4BAA4B,OAAO,MAAM,KAAK,aAAa,KAAK,KAAK;AAAA,MACzE;AAAA,IACJ;AAEA,WAAO,KAAK;AAAA,MACR,eAAe;AAAA,QACX,UAAU,OAAO,MAAM;AAAA,QACvB,IAAI;AAAA,QACJ,MAAM,KAAK,OAAO,OAAO;AAAA,QACzB;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,OAAO;AAChB,WAAO,KAAK,iBAAiB,UAAU,KAAK,SAAS,KAAK,KAAK;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmCA,MAAa,gBAWX;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAEiB;AACb,WAAO,KAAK,uBAAuB;AAAA,MAC/B;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACJ;","names":[]}
|
package/dist/chunk-WRH3YJT3.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SCW_SERVICE
|
|
3
|
-
} from "./chunk-YKW7PMBU.js";
|
|
4
|
-
|
|
5
|
-
// src/services/logger.ts
|
|
6
|
-
import { SDKLogger, getBrowserLogger } from "@crossmint/client-sdk-base";
|
|
7
|
-
var scwLogger = new SDKLogger(SCW_SERVICE);
|
|
8
|
-
var scwDatadogLogger = new SDKLogger(SCW_SERVICE, getBrowserLogger(SCW_SERVICE, { onlyDatadog: true }));
|
|
9
|
-
|
|
10
|
-
export {
|
|
11
|
-
scwLogger,
|
|
12
|
-
scwDatadogLogger
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=chunk-WRH3YJT3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/services/logger.ts"],"sourcesContent":["import { SDKLogger, getBrowserLogger } from \"@crossmint/client-sdk-base\";\n\nimport { SCW_SERVICE } from \"../utils/constants\";\n\nexport const scwLogger = new SDKLogger(SCW_SERVICE);\nexport const scwDatadogLogger = new SDKLogger(SCW_SERVICE, getBrowserLogger(SCW_SERVICE, { onlyDatadog: true }));\n"],"mappings":";;;;;AAAA,SAAS,WAAW,wBAAwB;AAIrC,IAAM,YAAY,IAAI,UAAU,WAAW;AAC3C,IAAM,mBAAmB,IAAI,UAAU,aAAa,iBAAiB,aAAa,EAAE,aAAa,KAAK,CAAC,CAAC;","names":[]}
|