@crossmint/client-sdk-smart-wallet 0.1.19 → 0.1.21
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 -0
- package/dist/SmartWalletSDK.d.cts +47 -0
- package/dist/SmartWalletSDK.d.ts +47 -0
- package/dist/SmartWalletSDK.js +1 -0
- package/dist/api/CrossmintWalletService.cjs +1 -0
- package/dist/api/CrossmintWalletService.d.cts +31 -0
- package/dist/api/CrossmintWalletService.d.ts +31 -0
- package/dist/api/CrossmintWalletService.js +1 -0
- package/dist/blockchain/chains.cjs +1 -0
- package/dist/blockchain/chains.d.cts +36 -0
- package/dist/blockchain/chains.d.ts +36 -0
- package/dist/blockchain/chains.js +1 -0
- package/dist/blockchain/rpc.cjs +1 -0
- package/dist/blockchain/rpc.d.cts +9 -0
- package/dist/blockchain/rpc.d.ts +9 -0
- package/dist/blockchain/rpc.js +1 -0
- package/dist/blockchain/transfer.cjs +1 -0
- package/dist/blockchain/transfer.d.cts +23 -0
- package/dist/blockchain/transfer.d.ts +23 -0
- package/dist/blockchain/transfer.js +1 -0
- package/dist/blockchain/wallets/EVMSmartWallet.cjs +1 -0
- package/dist/blockchain/wallets/EVMSmartWallet.d.cts +102 -0
- package/dist/blockchain/wallets/EVMSmartWallet.d.ts +102 -0
- package/dist/blockchain/wallets/EVMSmartWallet.js +1 -0
- package/dist/blockchain/wallets/SendTransactionService.cjs +1 -0
- package/dist/blockchain/wallets/SendTransactionService.d.cts +84 -0
- package/dist/blockchain/wallets/SendTransactionService.d.ts +84 -0
- package/dist/blockchain/wallets/SendTransactionService.js +1 -0
- package/dist/blockchain/wallets/account/cache.cjs +1 -0
- package/dist/blockchain/wallets/account/cache.d.cts +25 -0
- package/dist/blockchain/wallets/account/cache.d.ts +25 -0
- package/dist/blockchain/wallets/account/cache.js +1 -0
- package/dist/blockchain/wallets/account/config.cjs +1 -0
- package/dist/blockchain/wallets/account/config.d.cts +47 -0
- package/dist/blockchain/wallets/account/config.d.ts +47 -0
- package/dist/blockchain/wallets/account/config.js +1 -0
- package/dist/blockchain/wallets/account/creator.cjs +1 -0
- package/dist/blockchain/wallets/account/creator.d.cts +26 -0
- package/dist/blockchain/wallets/account/creator.d.ts +26 -0
- package/dist/blockchain/wallets/account/creator.js +1 -0
- package/dist/blockchain/wallets/account/eoa.cjs +1 -0
- package/dist/blockchain/wallets/account/eoa.d.cts +21 -0
- package/dist/blockchain/wallets/account/eoa.d.ts +21 -0
- package/dist/blockchain/wallets/account/eoa.js +1 -0
- package/dist/blockchain/wallets/account/passkey.cjs +1 -0
- package/dist/blockchain/wallets/account/passkey.d.cts +29 -0
- package/dist/blockchain/wallets/account/passkey.d.ts +29 -0
- package/dist/blockchain/wallets/account/passkey.js +1 -0
- package/dist/blockchain/wallets/account/signer.cjs +1 -0
- package/dist/blockchain/wallets/account/signer.d.cts +14 -0
- package/dist/blockchain/wallets/account/signer.d.ts +14 -0
- package/dist/blockchain/wallets/account/signer.js +1 -0
- package/dist/blockchain/wallets/account/strategy.cjs +1 -0
- package/dist/blockchain/wallets/account/strategy.d.cts +20 -0
- package/dist/blockchain/wallets/account/strategy.d.ts +20 -0
- package/dist/blockchain/wallets/account/strategy.js +0 -0
- package/dist/blockchain/wallets/clientDecorator.cjs +1 -0
- package/dist/blockchain/wallets/clientDecorator.d.cts +38 -0
- package/dist/blockchain/wallets/clientDecorator.d.ts +38 -0
- package/dist/blockchain/wallets/clientDecorator.js +1 -0
- package/dist/blockchain/wallets/index.cjs +1 -0
- package/dist/blockchain/wallets/index.d.cts +20 -0
- package/dist/blockchain/wallets/index.d.ts +20 -0
- package/dist/blockchain/wallets/index.js +1 -0
- package/dist/blockchain/wallets/paymaster.cjs +1 -0
- package/dist/blockchain/wallets/paymaster.d.cts +29 -0
- package/dist/blockchain/wallets/paymaster.d.ts +29 -0
- package/dist/blockchain/wallets/paymaster.js +1 -0
- package/dist/blockchain/wallets/service.cjs +1 -0
- package/dist/blockchain/wallets/service.d.cts +41 -0
- package/dist/blockchain/wallets/service.d.ts +41 -0
- package/dist/blockchain/wallets/service.js +1 -0
- package/dist/chunk-27US7ZBX.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-5M3MSPHK.cjs +1 -0
- package/dist/chunk-6DE5YEO5.cjs +1 -0
- package/dist/chunk-7AVDZZGD.cjs +1 -0
- package/dist/chunk-7FXFOOQU.cjs +1 -0
- package/dist/chunk-7JAT6GQU.js +1 -0
- package/dist/chunk-ATQ4WGCW.js +1 -0
- package/dist/chunk-B3LJJZXD.cjs +2 -0
- package/dist/chunk-BJZQA5VC.js +1 -0
- package/dist/chunk-BXXREMNR.cjs +1 -0
- package/dist/chunk-C3VZY7VJ.js +1 -0
- package/dist/chunk-CPYNP4XI.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-ETVJGLNY.js +1 -0
- package/dist/chunk-FHNNZVNU.js +1 -0
- package/dist/chunk-FIJ3CBJ4.js +3 -0
- package/dist/chunk-G57LROTD.js +1 -0
- package/dist/chunk-GB35YMN4.cjs +1 -0
- package/dist/chunk-H4CMXNVK.js +1 -0
- package/dist/chunk-IQTGPM2U.cjs +1 -0
- package/dist/chunk-KYPTGHC6.cjs +1 -0
- package/dist/chunk-LMVY4C4Y.js +1 -0
- package/dist/chunk-M4K3IZTT.cjs +1 -0
- package/dist/chunk-NLGILHJS.js +1 -0
- package/dist/chunk-O2ACORII.cjs +1 -0
- package/dist/chunk-OCJYX5QF.cjs +1 -0
- package/dist/chunk-ODAUWGUU.cjs +1 -0
- package/dist/chunk-PBUJXVQT.js +1 -0
- package/dist/chunk-PLRQBDYS.cjs +1 -0
- package/dist/chunk-PPTSNCSQ.cjs +1 -0
- package/dist/chunk-PZ6Q22YJ.js +1 -0
- package/dist/chunk-Q44P7MO7.cjs +1 -0
- package/dist/chunk-QVB3HE6Q.js +2 -0
- package/dist/chunk-S2XBSAGM.js +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-TZG6MROQ.js +1 -0
- package/dist/chunk-UG47CBKR.js +1 -0
- package/dist/chunk-UPURFW46.js +1 -0
- package/dist/chunk-WDM7PN4O.js +1 -0
- package/dist/chunk-WJ6XJMRD.cjs +1 -0
- package/dist/chunk-WTPE2I2Q.cjs +1 -0
- package/dist/chunk-XHSA4YTO.cjs +3 -0
- package/dist/chunk-XJGFG3RT.cjs +1 -0
- package/dist/chunk-XP6ESWVJ.js +1 -0
- package/dist/chunk-XQ2K2K23.cjs +1 -0
- package/dist/chunk-YBHSEZMB.js +1 -0
- package/dist/chunk-YZQJV2KA.cjs +1 -0
- package/dist/chunk-Z22H3MJS.js +1 -0
- package/dist/error/index.cjs +1 -0
- package/dist/error/index.d.cts +58 -0
- package/dist/error/index.d.ts +58 -0
- package/dist/error/index.js +1 -0
- package/dist/error/processor.cjs +1 -0
- package/dist/error/processor.d.cts +25 -0
- package/dist/error/processor.d.ts +25 -0
- package/dist/error/processor.js +1 -0
- package/dist/index.cjs +1 -5
- package/dist/index.d.cts +20 -559
- package/dist/index.d.ts +20 -559
- package/dist/index.js +1 -5
- package/dist/service-DqYCir8s.d.ts +103 -0
- package/dist/service-Ir-Qho-9.d.cts +103 -0
- package/dist/services/index.cjs +1 -0
- package/dist/services/index.d.cts +2 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.js +1 -0
- package/dist/services/logger.cjs +1 -0
- package/dist/services/logger.d.cts +6 -0
- package/dist/services/logger.d.ts +6 -0
- package/dist/services/logger.js +1 -0
- package/dist/types/internal.cjs +1 -0
- package/dist/types/internal.d.cts +14 -0
- package/dist/types/internal.d.ts +14 -0
- package/dist/types/internal.js +1 -0
- package/dist/types/params.cjs +1 -0
- package/dist/types/params.d.cts +33 -0
- package/dist/types/params.d.ts +33 -0
- package/dist/types/params.js +0 -0
- package/dist/types/schema.cjs +1 -0
- package/dist/types/schema.d.cts +241 -0
- package/dist/types/schema.d.ts +241 -0
- package/dist/types/schema.js +1 -0
- package/dist/types/service.cjs +1 -0
- package/dist/types/service.d.cts +14 -0
- package/dist/types/service.d.ts +14 -0
- package/dist/types/service.js +0 -0
- package/dist/types/token.cjs +1 -0
- package/dist/types/token.d.cts +35 -0
- package/dist/types/token.d.ts +35 -0
- package/dist/types/token.js +0 -0
- package/dist/utils/api.cjs +1 -0
- package/dist/utils/api.d.cts +4 -0
- package/dist/utils/api.d.ts +4 -0
- package/dist/utils/api.js +1 -0
- package/dist/utils/blockchain.cjs +1 -0
- package/dist/utils/blockchain.d.cts +7 -0
- package/dist/utils/blockchain.d.ts +7 -0
- package/dist/utils/blockchain.js +1 -0
- package/dist/utils/constants.cjs +1 -0
- package/dist/utils/constants.d.cts +9 -0
- package/dist/utils/constants.d.ts +9 -0
- package/dist/utils/constants.js +1 -0
- package/dist/utils/environment.cjs +1 -0
- package/dist/utils/environment.d.cts +3 -0
- package/dist/utils/environment.d.ts +3 -0
- package/dist/utils/environment.js +1 -0
- package/dist/utils/helpers.cjs +1 -0
- package/dist/utils/helpers.d.cts +4 -0
- package/dist/utils/helpers.d.ts +4 -0
- package/dist/utils/helpers.js +1 -0
- package/dist/utils/signer.cjs +1 -0
- package/dist/utils/signer.d.cts +15 -0
- package/dist/utils/signer.d.ts +15 -0
- package/dist/utils/signer.js +1 -0
- package/dist/utils/test.cjs +1 -0
- package/dist/utils/test.d.cts +18 -0
- package/dist/utils/test.d.ts +18 -0
- package/dist/utils/test.js +1 -0
- package/package.json +4 -5
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,561 +1,22 @@
|
|
|
1
|
-
import { ObjectValues } from '@crossmint/common-sdk-base';
|
|
2
1
|
export { EVMBlockchainIncludingTestnet as Chain, blockchainToChainId } from '@crossmint/common-sdk-base';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
export { EVMSmartWallet } from './blockchain/wallets/EVMSmartWallet.js';
|
|
3
|
+
export { ExternalSigner, PasskeySigner, SmartWalletSDKInitParams, UserParams, ViemAccount, WalletParams } from './types/params.js';
|
|
4
|
+
export { SmartWalletChain as EVMSmartWalletChain } from './blockchain/chains.js';
|
|
5
|
+
export { ERC20TransferType, NFTTransferType, SFTTransferType, TransferType } from './types/token.js';
|
|
6
|
+
export { AdminAlreadyUsedError, AdminMismatchError, ConfigError, PasskeyIncompatibleAuthenticatorError, PasskeyMismatchError, PasskeyPromptError, PasskeyRegistrationError, SmartWalletError, SmartWalletsNotEnabledError, UserWalletAlreadyCreatedError } from './error/index.js';
|
|
7
|
+
export { EVMSendTransactionError, EVMSendTransactionExecutionRevertedError } from './blockchain/wallets/SendTransactionService.js';
|
|
7
8
|
export { CrossmintSDKError, CrossmintServiceError, JWTDecryptionError, JWTExpiredError, JWTIdentifierError, JWTInvalidError, NotAuthorizedError, SmartWalletErrorCode } from '@crossmint/client-sdk-base';
|
|
8
|
-
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
readonly OPTIMISM_SEPOLIA: "optimism-sepolia";
|
|
23
|
-
readonly ARBITRUM_SEPOLIA: "arbitrum-sepolia";
|
|
24
|
-
};
|
|
25
|
-
type SmartWalletChain = ObjectValues<typeof SmartWalletChain>;
|
|
26
|
-
|
|
27
|
-
type SmartWalletSDKInitParams = {
|
|
28
|
-
clientApiKey: string;
|
|
29
|
-
};
|
|
30
|
-
type UserParams = {
|
|
31
|
-
jwt: string;
|
|
32
|
-
};
|
|
33
|
-
type ViemAccount = {
|
|
34
|
-
type: "VIEM_ACCOUNT";
|
|
35
|
-
account: LocalAccount & {
|
|
36
|
-
source: "custom";
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
type PasskeySigner = {
|
|
40
|
-
type: "PASSKEY";
|
|
41
|
-
/**
|
|
42
|
-
* Displayed to the user during passkey registration or signing prompts.
|
|
43
|
-
* If not provided, a default name identifier within the JWT
|
|
44
|
-
* that is specified in the project settings (typically `sub`) will be used.
|
|
45
|
-
*/
|
|
46
|
-
passkeyName?: string;
|
|
47
|
-
onPrePasskeyRegistration?: () => Promise<void> | void;
|
|
48
|
-
onPasskeyRegistrationError?: (error: unknown) => Promise<void>;
|
|
49
|
-
onFirstTimePasskeySigning?: () => Promise<void> | void;
|
|
50
|
-
onFirstTimePasskeySigningError?: (error: unknown) => Promise<void>;
|
|
51
|
-
};
|
|
52
|
-
type ExternalSigner = EIP1193Provider | ViemAccount;
|
|
53
|
-
interface WalletParams {
|
|
54
|
-
signer: ExternalSigner | PasskeySigner;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
declare const SUPPORTED_KERNEL_VERSIONS: readonly ["0.3.1", "0.3.0", "0.2.4"];
|
|
58
|
-
declare const SUPPORTED_ENTRYPOINT_VERSIONS: readonly ["v0.6", "v0.7"];
|
|
59
|
-
|
|
60
|
-
type SupportedKernelVersion = (typeof SUPPORTED_KERNEL_VERSIONS)[number];
|
|
61
|
-
type SupportedEntryPointVersion = (typeof SUPPORTED_ENTRYPOINT_VERSIONS)[number];
|
|
62
|
-
type SmartWalletClient = SmartAccountClient<EntryPoint, HttpTransport, Chain, SmartAccount<EntryPoint>>;
|
|
63
|
-
|
|
64
|
-
declare const EOASignerDataSchema: z.ZodObject<{
|
|
65
|
-
eoaAddress: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>;
|
|
66
|
-
type: z.ZodLiteral<"eoa">;
|
|
67
|
-
}, "strip", z.ZodTypeAny, {
|
|
68
|
-
type: "eoa";
|
|
69
|
-
eoaAddress: `0x${string}`;
|
|
70
|
-
}, {
|
|
71
|
-
type: "eoa";
|
|
72
|
-
eoaAddress: `0x${string}`;
|
|
73
|
-
}>;
|
|
74
|
-
declare const PasskeySignerDataSchema: z.ZodObject<{
|
|
75
|
-
entryPoint: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>;
|
|
76
|
-
validatorAddress: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>;
|
|
77
|
-
pubKeyX: z.ZodString;
|
|
78
|
-
pubKeyY: z.ZodString;
|
|
79
|
-
authenticatorIdHash: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>;
|
|
80
|
-
authenticatorId: z.ZodString;
|
|
81
|
-
passkeyName: z.ZodString;
|
|
82
|
-
validatorContractVersion: z.ZodNativeEnum<typeof PasskeyValidatorContractVersion>;
|
|
83
|
-
domain: z.ZodString;
|
|
84
|
-
type: z.ZodLiteral<"passkeys">;
|
|
85
|
-
}, "strip", z.ZodTypeAny, {
|
|
86
|
-
type: "passkeys";
|
|
87
|
-
entryPoint: `0x${string}`;
|
|
88
|
-
domain: string;
|
|
89
|
-
validatorAddress: `0x${string}`;
|
|
90
|
-
pubKeyX: string;
|
|
91
|
-
pubKeyY: string;
|
|
92
|
-
authenticatorIdHash: `0x${string}`;
|
|
93
|
-
authenticatorId: string;
|
|
94
|
-
passkeyName: string;
|
|
95
|
-
validatorContractVersion: PasskeyValidatorContractVersion;
|
|
96
|
-
}, {
|
|
97
|
-
type: "passkeys";
|
|
98
|
-
entryPoint: `0x${string}`;
|
|
99
|
-
domain: string;
|
|
100
|
-
validatorAddress: `0x${string}`;
|
|
101
|
-
pubKeyX: string;
|
|
102
|
-
pubKeyY: string;
|
|
103
|
-
authenticatorIdHash: `0x${string}`;
|
|
104
|
-
authenticatorId: string;
|
|
105
|
-
passkeyName: string;
|
|
106
|
-
validatorContractVersion: PasskeyValidatorContractVersion;
|
|
107
|
-
}>;
|
|
108
|
-
declare const SignerDataSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
109
|
-
entryPoint: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>;
|
|
110
|
-
validatorAddress: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>;
|
|
111
|
-
pubKeyX: z.ZodString;
|
|
112
|
-
pubKeyY: z.ZodString;
|
|
113
|
-
authenticatorIdHash: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>;
|
|
114
|
-
authenticatorId: z.ZodString;
|
|
115
|
-
passkeyName: z.ZodString;
|
|
116
|
-
validatorContractVersion: z.ZodNativeEnum<typeof PasskeyValidatorContractVersion>;
|
|
117
|
-
domain: z.ZodString;
|
|
118
|
-
type: z.ZodLiteral<"passkeys">;
|
|
119
|
-
}, "strip", z.ZodTypeAny, {
|
|
120
|
-
type: "passkeys";
|
|
121
|
-
entryPoint: `0x${string}`;
|
|
122
|
-
domain: string;
|
|
123
|
-
validatorAddress: `0x${string}`;
|
|
124
|
-
pubKeyX: string;
|
|
125
|
-
pubKeyY: string;
|
|
126
|
-
authenticatorIdHash: `0x${string}`;
|
|
127
|
-
authenticatorId: string;
|
|
128
|
-
passkeyName: string;
|
|
129
|
-
validatorContractVersion: PasskeyValidatorContractVersion;
|
|
130
|
-
}, {
|
|
131
|
-
type: "passkeys";
|
|
132
|
-
entryPoint: `0x${string}`;
|
|
133
|
-
domain: string;
|
|
134
|
-
validatorAddress: `0x${string}`;
|
|
135
|
-
pubKeyX: string;
|
|
136
|
-
pubKeyY: string;
|
|
137
|
-
authenticatorIdHash: `0x${string}`;
|
|
138
|
-
authenticatorId: string;
|
|
139
|
-
passkeyName: string;
|
|
140
|
-
validatorContractVersion: PasskeyValidatorContractVersion;
|
|
141
|
-
}>, z.ZodObject<{
|
|
142
|
-
eoaAddress: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>;
|
|
143
|
-
type: z.ZodLiteral<"eoa">;
|
|
144
|
-
}, "strip", z.ZodTypeAny, {
|
|
145
|
-
type: "eoa";
|
|
146
|
-
eoaAddress: `0x${string}`;
|
|
147
|
-
}, {
|
|
148
|
-
type: "eoa";
|
|
149
|
-
eoaAddress: `0x${string}`;
|
|
150
|
-
}>]>;
|
|
151
|
-
declare const SmartWalletConfigSchema: z.ZodObject<{
|
|
152
|
-
kernelVersion: z.ZodEnum<["0.3.1", "0.3.0", "0.2.4"]>;
|
|
153
|
-
entryPointVersion: z.ZodEnum<["v0.6", "v0.7"]>;
|
|
154
|
-
userId: z.ZodString;
|
|
155
|
-
signers: z.ZodArray<z.ZodObject<{
|
|
156
|
-
signerData: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
157
|
-
entryPoint: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>;
|
|
158
|
-
validatorAddress: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>;
|
|
159
|
-
pubKeyX: z.ZodString;
|
|
160
|
-
pubKeyY: z.ZodString;
|
|
161
|
-
authenticatorIdHash: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>;
|
|
162
|
-
authenticatorId: z.ZodString;
|
|
163
|
-
passkeyName: z.ZodString;
|
|
164
|
-
validatorContractVersion: z.ZodNativeEnum<typeof PasskeyValidatorContractVersion>;
|
|
165
|
-
domain: z.ZodString;
|
|
166
|
-
type: z.ZodLiteral<"passkeys">;
|
|
167
|
-
}, "strip", z.ZodTypeAny, {
|
|
168
|
-
type: "passkeys";
|
|
169
|
-
entryPoint: `0x${string}`;
|
|
170
|
-
domain: string;
|
|
171
|
-
validatorAddress: `0x${string}`;
|
|
172
|
-
pubKeyX: string;
|
|
173
|
-
pubKeyY: string;
|
|
174
|
-
authenticatorIdHash: `0x${string}`;
|
|
175
|
-
authenticatorId: string;
|
|
176
|
-
passkeyName: string;
|
|
177
|
-
validatorContractVersion: PasskeyValidatorContractVersion;
|
|
178
|
-
}, {
|
|
179
|
-
type: "passkeys";
|
|
180
|
-
entryPoint: `0x${string}`;
|
|
181
|
-
domain: string;
|
|
182
|
-
validatorAddress: `0x${string}`;
|
|
183
|
-
pubKeyX: string;
|
|
184
|
-
pubKeyY: string;
|
|
185
|
-
authenticatorIdHash: `0x${string}`;
|
|
186
|
-
authenticatorId: string;
|
|
187
|
-
passkeyName: string;
|
|
188
|
-
validatorContractVersion: PasskeyValidatorContractVersion;
|
|
189
|
-
}>, z.ZodObject<{
|
|
190
|
-
eoaAddress: z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>;
|
|
191
|
-
type: z.ZodLiteral<"eoa">;
|
|
192
|
-
}, "strip", z.ZodTypeAny, {
|
|
193
|
-
type: "eoa";
|
|
194
|
-
eoaAddress: `0x${string}`;
|
|
195
|
-
}, {
|
|
196
|
-
type: "eoa";
|
|
197
|
-
eoaAddress: `0x${string}`;
|
|
198
|
-
}>]>;
|
|
199
|
-
}, "strip", z.ZodTypeAny, {
|
|
200
|
-
signerData: {
|
|
201
|
-
type: "eoa";
|
|
202
|
-
eoaAddress: `0x${string}`;
|
|
203
|
-
} | {
|
|
204
|
-
type: "passkeys";
|
|
205
|
-
entryPoint: `0x${string}`;
|
|
206
|
-
domain: string;
|
|
207
|
-
validatorAddress: `0x${string}`;
|
|
208
|
-
pubKeyX: string;
|
|
209
|
-
pubKeyY: string;
|
|
210
|
-
authenticatorIdHash: `0x${string}`;
|
|
211
|
-
authenticatorId: string;
|
|
212
|
-
passkeyName: string;
|
|
213
|
-
validatorContractVersion: PasskeyValidatorContractVersion;
|
|
214
|
-
};
|
|
215
|
-
}, {
|
|
216
|
-
signerData: {
|
|
217
|
-
type: "eoa";
|
|
218
|
-
eoaAddress: `0x${string}`;
|
|
219
|
-
} | {
|
|
220
|
-
type: "passkeys";
|
|
221
|
-
entryPoint: `0x${string}`;
|
|
222
|
-
domain: string;
|
|
223
|
-
validatorAddress: `0x${string}`;
|
|
224
|
-
pubKeyX: string;
|
|
225
|
-
pubKeyY: string;
|
|
226
|
-
authenticatorIdHash: `0x${string}`;
|
|
227
|
-
authenticatorId: string;
|
|
228
|
-
passkeyName: string;
|
|
229
|
-
validatorContractVersion: PasskeyValidatorContractVersion;
|
|
230
|
-
};
|
|
231
|
-
}>, "many">;
|
|
232
|
-
smartContractWalletAddress: z.ZodOptional<z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>>;
|
|
233
|
-
}, "strip", z.ZodTypeAny, {
|
|
234
|
-
kernelVersion: "0.2.4" | "0.3.0" | "0.3.1";
|
|
235
|
-
entryPointVersion: "v0.6" | "v0.7";
|
|
236
|
-
userId: string;
|
|
237
|
-
signers: {
|
|
238
|
-
signerData: {
|
|
239
|
-
type: "eoa";
|
|
240
|
-
eoaAddress: `0x${string}`;
|
|
241
|
-
} | {
|
|
242
|
-
type: "passkeys";
|
|
243
|
-
entryPoint: `0x${string}`;
|
|
244
|
-
domain: string;
|
|
245
|
-
validatorAddress: `0x${string}`;
|
|
246
|
-
pubKeyX: string;
|
|
247
|
-
pubKeyY: string;
|
|
248
|
-
authenticatorIdHash: `0x${string}`;
|
|
249
|
-
authenticatorId: string;
|
|
250
|
-
passkeyName: string;
|
|
251
|
-
validatorContractVersion: PasskeyValidatorContractVersion;
|
|
252
|
-
};
|
|
253
|
-
}[];
|
|
254
|
-
smartContractWalletAddress?: `0x${string}` | undefined;
|
|
255
|
-
}, {
|
|
256
|
-
kernelVersion: "0.2.4" | "0.3.0" | "0.3.1";
|
|
257
|
-
entryPointVersion: "v0.6" | "v0.7";
|
|
258
|
-
userId: string;
|
|
259
|
-
signers: {
|
|
260
|
-
signerData: {
|
|
261
|
-
type: "eoa";
|
|
262
|
-
eoaAddress: `0x${string}`;
|
|
263
|
-
} | {
|
|
264
|
-
type: "passkeys";
|
|
265
|
-
entryPoint: `0x${string}`;
|
|
266
|
-
domain: string;
|
|
267
|
-
validatorAddress: `0x${string}`;
|
|
268
|
-
pubKeyX: string;
|
|
269
|
-
pubKeyY: string;
|
|
270
|
-
authenticatorIdHash: `0x${string}`;
|
|
271
|
-
authenticatorId: string;
|
|
272
|
-
passkeyName: string;
|
|
273
|
-
validatorContractVersion: PasskeyValidatorContractVersion;
|
|
274
|
-
};
|
|
275
|
-
}[];
|
|
276
|
-
smartContractWalletAddress?: `0x${string}` | undefined;
|
|
277
|
-
}>;
|
|
278
|
-
|
|
279
|
-
type EOASignerData = z.infer<typeof EOASignerDataSchema>;
|
|
280
|
-
type PasskeySignerData = z.infer<typeof PasskeySignerDataSchema>;
|
|
281
|
-
type SmartWalletConfig = z.infer<typeof SmartWalletConfigSchema>;
|
|
282
|
-
type SignerData = z.infer<typeof SignerDataSchema>;
|
|
283
|
-
type PasskeyDisplay = Pick<PasskeySignerData, "type" | "passkeyName" | "pubKeyX" | "pubKeyY">;
|
|
284
|
-
type SignerDisplay = EOASignerData | PasskeyDisplay;
|
|
285
|
-
type StoreSmartWalletParams = {
|
|
286
|
-
type: string;
|
|
287
|
-
smartContractWalletAddress: string;
|
|
288
|
-
signerData: SignerData;
|
|
289
|
-
sessionKeySignerAddress?: string;
|
|
290
|
-
version: number;
|
|
291
|
-
baseLayer: string;
|
|
292
|
-
chainId: number;
|
|
293
|
-
entryPointVersion: SupportedEntryPointVersion;
|
|
294
|
-
kernelVersion: SupportedKernelVersion;
|
|
295
|
-
};
|
|
296
|
-
|
|
297
|
-
type WalletsAPIErrorCodes = "ERROR_USER_WALLET_ALREADY_CREATED" | "ERROR_ADMIN_SIGNER_ALREADY_USED" | "ERROR_PROJECT_NONCUSTODIAL_WALLETS_NOT_ENABLED";
|
|
298
|
-
declare class CrossmintWalletService extends BaseCrossmintService {
|
|
299
|
-
logger: _crossmint_client_sdk_base.SDKLogger;
|
|
300
|
-
protected apiErrorService: APIErrorService<WalletsAPIErrorCodes>;
|
|
301
|
-
idempotentCreateSmartWallet(user: UserParams, input: StoreSmartWalletParams): Promise<void>;
|
|
302
|
-
sponsorUserOperation<E extends EntryPoint>(user: UserParams, userOp: UserOperation<GetEntryPointVersion<E>>, entryPoint: E, chain: SmartWalletChain): Promise<{
|
|
303
|
-
sponsorUserOpParams: UserOperation<GetEntryPointVersion<E>>;
|
|
304
|
-
}>;
|
|
305
|
-
getSmartWalletConfig(user: UserParams, chain: SmartWalletChain): Promise<SmartWalletConfig>;
|
|
306
|
-
fetchNFTs(address: string, chain: SmartWalletChain): Promise<any>;
|
|
307
|
-
getPasskeyServerUrl(): string;
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
interface EVMToken {
|
|
311
|
-
chain: SmartWalletChain;
|
|
312
|
-
contractAddress: Address;
|
|
313
|
-
}
|
|
314
|
-
interface NFTEVMToken extends EVMToken {
|
|
315
|
-
tokenId: string;
|
|
316
|
-
type: "nft";
|
|
317
|
-
}
|
|
318
|
-
interface SFTEVMToken extends EVMToken {
|
|
319
|
-
tokenId: string;
|
|
320
|
-
type: "sft";
|
|
321
|
-
}
|
|
322
|
-
interface ERC2OEVMToken extends EVMToken {
|
|
323
|
-
type: "ft";
|
|
324
|
-
}
|
|
325
|
-
type ERC20TransferType = {
|
|
326
|
-
token: ERC2OEVMToken;
|
|
327
|
-
amount: bigint;
|
|
328
|
-
};
|
|
329
|
-
type SFTTransferType = {
|
|
330
|
-
token: SFTEVMToken;
|
|
331
|
-
quantity: number;
|
|
332
|
-
};
|
|
333
|
-
type NFTTransferType = {
|
|
334
|
-
token: NFTEVMToken;
|
|
335
|
-
};
|
|
336
|
-
type TransferType = ERC20TransferType | SFTTransferType | NFTTransferType;
|
|
337
|
-
|
|
338
|
-
type TransactionServiceTransactionRequest = {
|
|
339
|
-
address: Address;
|
|
340
|
-
abi: Abi;
|
|
341
|
-
functionName: string;
|
|
342
|
-
args: any;
|
|
343
|
-
value?: bigint;
|
|
344
|
-
};
|
|
345
|
-
type SendTransactionFailureStage = "simulation" | "send" | "confirmation" | "execution";
|
|
346
|
-
/**
|
|
347
|
-
* Error thrown when a transaction fails to send.
|
|
348
|
-
* @param viemError The error thrown by the viem client. See https://viem.sh/docs/glossary/errors.html
|
|
349
|
-
*/
|
|
350
|
-
declare class EVMSendTransactionError extends CrossmintSDKError {
|
|
351
|
-
readonly viemError: BaseError;
|
|
352
|
-
readonly stage: SendTransactionFailureStage;
|
|
353
|
-
constructor(message: string, viemError: BaseError, stage: SendTransactionFailureStage, code?: string);
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
* Error thrown when a transaction fails due to a contract execution error.
|
|
357
|
-
* @param viemError The error thrown by the viem client. See https://viem.sh/docs/glossary/errors.html
|
|
358
|
-
* @param data The name and arguments of the revert error from the provided ABI
|
|
359
|
-
* @param reason The revert error if it is a string and not an ABI error
|
|
360
|
-
* @example
|
|
361
|
-
* try {
|
|
362
|
-
* await wallet.executeContract({
|
|
363
|
-
* address: contractAddress,
|
|
364
|
-
* abi,
|
|
365
|
-
* functionName: "mintNFT",
|
|
366
|
-
* args: [recipientAddress],
|
|
367
|
-
* });
|
|
368
|
-
* } catch (e) {
|
|
369
|
-
* if (e instanceof SendTransactionExecutionRevertedError) {
|
|
370
|
-
* alert(`Transaction reverted: ${e.message}`);
|
|
371
|
-
* }
|
|
372
|
-
* throw e;
|
|
373
|
-
* }
|
|
374
|
-
*/
|
|
375
|
-
declare class EVMSendTransactionExecutionRevertedError extends EVMSendTransactionError {
|
|
376
|
-
readonly viemError: BaseError;
|
|
377
|
-
readonly txId: string | undefined;
|
|
378
|
-
readonly stage: SendTransactionFailureStage;
|
|
379
|
-
readonly data: {
|
|
380
|
-
abiItem: viem.AbiItem;
|
|
381
|
-
args: readonly unknown[] | undefined;
|
|
382
|
-
errorName: string;
|
|
383
|
-
} | undefined;
|
|
384
|
-
readonly reason: string | undefined;
|
|
385
|
-
constructor(message: string, viemError: BaseError, revertError: ContractFunctionRevertedError, txId: string | undefined, stage: SendTransactionFailureStage, data?: {
|
|
386
|
-
abiItem: viem.AbiItem;
|
|
387
|
-
args: readonly unknown[] | undefined;
|
|
388
|
-
errorName: string;
|
|
389
|
-
} | undefined, reason?: string | undefined);
|
|
390
|
-
}
|
|
391
|
-
interface SendTransactionOptions {
|
|
392
|
-
/**
|
|
393
|
-
* The number of confirmations to wait for before yielding the transaction hash.
|
|
394
|
-
*/
|
|
395
|
-
confirmations: number;
|
|
396
|
-
/**
|
|
397
|
-
* The timeout in milliseconds to wait for a transaction to confirm before throwing an error.
|
|
398
|
-
*/
|
|
399
|
-
transactionConfirmationTimeout: number;
|
|
400
|
-
}
|
|
401
|
-
declare class SendTransactionService {
|
|
402
|
-
private readonly client;
|
|
403
|
-
private readonly defaultSendTransactionOptions;
|
|
404
|
-
constructor(client: {
|
|
405
|
-
public: PublicClient;
|
|
406
|
-
wallet: SmartAccountClient<EntryPoint$1, Transport, Chain, SmartAccount<EntryPoint$1>>;
|
|
407
|
-
}, defaultSendTransactionOptions?: SendTransactionOptions);
|
|
408
|
-
sendTransaction(request: TransactionServiceTransactionRequest, config?: Partial<SendTransactionOptions>): Promise<Hex>;
|
|
409
|
-
private getConfig;
|
|
410
|
-
private handleReceipt;
|
|
411
|
-
private simulateCall;
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
/**
|
|
415
|
-
* Smart wallet interface for EVM chains enhanced with Crossmint capabilities.
|
|
416
|
-
* Core functionality is exposed via [viem](https://viem.sh/) clients within the `client` property of the class.
|
|
417
|
-
*/
|
|
418
|
-
declare class EVMSmartWallet {
|
|
419
|
-
private readonly crossmintService;
|
|
420
|
-
private readonly sendTransactionService;
|
|
421
|
-
readonly chain: SmartWalletChain;
|
|
422
|
-
/**
|
|
423
|
-
* [viem](https://viem.sh/) clients that provide an interface for core wallet functionality.
|
|
424
|
-
*/
|
|
425
|
-
readonly client: {
|
|
426
|
-
/**
|
|
427
|
-
* An interface to interact with the smart wallet, execute transactions, sign messages, etc.
|
|
428
|
-
*/
|
|
429
|
-
wallet: SmartWalletClient;
|
|
430
|
-
/**
|
|
431
|
-
* 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.
|
|
432
|
-
*/
|
|
433
|
-
public: PublicClient;
|
|
434
|
-
};
|
|
435
|
-
constructor(client: {
|
|
436
|
-
public: PublicClient<HttpTransport>;
|
|
437
|
-
wallet: SmartWalletClient;
|
|
438
|
-
}, chain: SmartWalletChain, crossmintService: CrossmintWalletService, sendTransactionService?: SendTransactionService);
|
|
439
|
-
/**
|
|
440
|
-
* The address of the smart wallet.
|
|
441
|
-
*/
|
|
442
|
-
get address(): `0x${string}`;
|
|
443
|
-
/**
|
|
444
|
-
* Transfers tokens from the smart wallet to a specified address.
|
|
445
|
-
* @param toAddress The recipient's address.
|
|
446
|
-
* @param config The transfer configuration, including token details and amount.
|
|
447
|
-
* @returns The transaction hash.
|
|
448
|
-
* @throws {SmartWalletError} If there's a chain mismatch between this wallet and the input configuration.
|
|
449
|
-
* @throws {SendTransactionError} If the transaction fails to send. Contains the error thrown by the viem client.
|
|
450
|
-
* @throws {SendTransactionExecutionRevertedError} A subclass of SendTransactionError if the transaction fails due to a contract execution error.
|
|
451
|
-
*/
|
|
452
|
-
transferToken(toAddress: Address, config: TransferType): Promise<string>;
|
|
453
|
-
/**
|
|
454
|
-
* @returns A list of NFTs owned by the wallet.
|
|
455
|
-
*/
|
|
456
|
-
nfts(): Promise<any>;
|
|
457
|
-
/**
|
|
458
|
-
* Sends a contract call transaction and returns the hash of a confirmed transaction.
|
|
459
|
-
* @param address the address of the contract to be called
|
|
460
|
-
* @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
|
|
461
|
-
* @param functionName the name of the smart contract function to be called
|
|
462
|
-
* @param args the arguments to be passed to the function
|
|
463
|
-
* @returns The transaction hash.
|
|
464
|
-
* @throws `SendTransactionError` if the transaction fails to send. Contains the error thrown by the viem client.
|
|
465
|
-
* @throws `SendTransactionExecutionRevertedError`, a subclass of `SendTransactionError` if the transaction fails due to a contract execution error.
|
|
466
|
-
*
|
|
467
|
-
* **Passing a typed ABI:**
|
|
468
|
-
* @example
|
|
469
|
-
* const abi = [{
|
|
470
|
-
* "inputs": [
|
|
471
|
-
* {
|
|
472
|
-
* "internalType": "address",
|
|
473
|
-
* "name": "recipient",
|
|
474
|
-
* "type": "address"
|
|
475
|
-
* },
|
|
476
|
-
* ],
|
|
477
|
-
* "name": "mintNFT",
|
|
478
|
-
* "outputs": [],
|
|
479
|
-
* "stateMutability": "nonpayable",
|
|
480
|
-
* "type": "function"
|
|
481
|
-
* }] as const;
|
|
482
|
-
*
|
|
483
|
-
* await wallet.executeContract({
|
|
484
|
-
* address: contractAddress,
|
|
485
|
-
* abi,
|
|
486
|
-
* functionName: "mintNFT",
|
|
487
|
-
* args: [recipientAddress],
|
|
488
|
-
* });
|
|
489
|
-
*/
|
|
490
|
-
executeContract<const TAbi extends Abi | readonly unknown[], TFunctionName extends ContractFunctionName<TAbi, "nonpayable" | "payable"> = ContractFunctionName<TAbi, "nonpayable" | "payable">, TArgs extends ContractFunctionArgs<TAbi, "nonpayable" | "payable", TFunctionName> = ContractFunctionArgs<TAbi, "nonpayable" | "payable", TFunctionName>>({ address, abi, functionName, args, value, config, }: Omit<WriteContractParameters<TAbi, TFunctionName, TArgs>, "chain" | "account"> & {
|
|
491
|
-
config?: Partial<SendTransactionOptions>;
|
|
492
|
-
}): Promise<Hex>;
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
declare class SmartWalletError extends CrossmintSDKError {
|
|
496
|
-
constructor(message: string, details?: string, code?: SmartWalletErrorCode);
|
|
497
|
-
}
|
|
498
|
-
declare class AdminMismatchError extends SmartWalletError {
|
|
499
|
-
readonly required: SignerDisplay;
|
|
500
|
-
readonly used?: SignerDisplay;
|
|
501
|
-
constructor(message: string, required: SignerDisplay, used?: SignerDisplay);
|
|
502
|
-
}
|
|
503
|
-
declare class PasskeyMismatchError extends SmartWalletError {
|
|
504
|
-
readonly required: PasskeyDisplay;
|
|
505
|
-
readonly used?: PasskeyDisplay;
|
|
506
|
-
constructor(message: string, required: PasskeyDisplay, used?: PasskeyDisplay);
|
|
507
|
-
}
|
|
508
|
-
declare class UserWalletAlreadyCreatedError extends SmartWalletError {
|
|
509
|
-
readonly code: "smart-wallet:user-wallet-already-created";
|
|
510
|
-
constructor(userId: string);
|
|
511
|
-
}
|
|
512
|
-
declare class PasskeyPromptError extends SmartWalletError {
|
|
513
|
-
passkeyName: string;
|
|
514
|
-
constructor(passkeyName: string);
|
|
515
|
-
}
|
|
516
|
-
declare class PasskeyRegistrationError extends SmartWalletError {
|
|
517
|
-
passkeyName: string;
|
|
518
|
-
constructor(passkeyName: string);
|
|
519
|
-
}
|
|
520
|
-
declare class PasskeyIncompatibleAuthenticatorError extends SmartWalletError {
|
|
521
|
-
passkeyName: string;
|
|
522
|
-
constructor(passkeyName: string);
|
|
523
|
-
}
|
|
524
|
-
declare class ConfigError extends SmartWalletError {
|
|
525
|
-
constructor(message: string);
|
|
526
|
-
}
|
|
527
|
-
declare class AdminAlreadyUsedError extends ConfigError {
|
|
528
|
-
readonly code: "smart-wallet:config.admin-signer-already-used";
|
|
529
|
-
constructor();
|
|
530
|
-
}
|
|
531
|
-
declare class SmartWalletsNotEnabledError extends ConfigError {
|
|
532
|
-
readonly code: "smart-wallet:not-enabled";
|
|
533
|
-
constructor();
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
declare class SmartWalletSDK {
|
|
537
|
-
private readonly crossmintEnv;
|
|
538
|
-
private readonly smartWalletService;
|
|
539
|
-
private readonly errorProcessor;
|
|
540
|
-
private readonly logger;
|
|
541
|
-
private constructor();
|
|
542
|
-
/**
|
|
543
|
-
* Initializes the SDK with the **client side** API key obtained from the Crossmint console.
|
|
544
|
-
* @throws error if the api key is not formatted correctly.
|
|
545
|
-
*/
|
|
546
|
-
static init({ clientApiKey }: SmartWalletSDKInitParams): SmartWalletSDK;
|
|
547
|
-
/**
|
|
548
|
-
* Retrieves or creates a wallet for the specified user.
|
|
549
|
-
* The default configuration is a `PasskeySigner` with the name, which is displayed to the user during creation or signing prompts, derived from the provided jwt.
|
|
550
|
-
*
|
|
551
|
-
* Example using the default passkey signer:
|
|
552
|
-
* ```ts
|
|
553
|
-
* const wallet = await smartWalletSDK.getOrCreateWallet({ jwt: "xxx" }, "base");
|
|
554
|
-
* ```
|
|
555
|
-
*/
|
|
556
|
-
getOrCreateWallet(user: UserParams, chain: SmartWalletChain, walletParams?: WalletParams): Promise<EVMSmartWallet>;
|
|
557
|
-
private assertValidChain;
|
|
558
|
-
private validChain;
|
|
559
|
-
}
|
|
560
|
-
|
|
561
|
-
export { AdminAlreadyUsedError, AdminMismatchError, ConfigError, type ERC20TransferType, EVMSendTransactionError, EVMSendTransactionExecutionRevertedError, EVMSmartWallet, SmartWalletChain as EVMSmartWalletChain, type ExternalSigner, type NFTTransferType, PasskeyIncompatibleAuthenticatorError, PasskeyMismatchError, PasskeyPromptError, PasskeyRegistrationError, type PasskeySigner, type SFTTransferType, SmartWalletError, SmartWalletSDK, type SmartWalletSDKInitParams, SmartWalletsNotEnabledError, type TransferType, type UserParams, UserWalletAlreadyCreatedError, type ViemAccount, type WalletParams };
|
|
9
|
+
export { SmartWalletSDK } from './SmartWalletSDK.js';
|
|
10
|
+
import 'viem';
|
|
11
|
+
import './api/CrossmintWalletService.js';
|
|
12
|
+
import 'permissionless';
|
|
13
|
+
import 'permissionless/types/entrypoint';
|
|
14
|
+
import './service-DqYCir8s.js';
|
|
15
|
+
import 'zod';
|
|
16
|
+
import '@zerodev/sdk';
|
|
17
|
+
import 'permissionless/accounts';
|
|
18
|
+
import './types/schema.js';
|
|
19
|
+
import '@zerodev/passkey-validator';
|
|
20
|
+
import './utils/constants.js';
|
|
21
|
+
import 'viem/chains';
|
|
22
|
+
import 'permissionless/_types/types';
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1 @@
|
|
|
1
|
-
import{blockchainToChainId as Bn,EVMBlockchainIncludingTestnet as Yn}from"@crossmint/common-sdk-base";import{CrossmintSDKError as ke,SmartWalletErrorCode as d}from"@crossmint/client-sdk-base";var l=class extends ke{constructor(e,t,n=d.UNCATEGORIZED){super(e,n,t)}},f=class extends l{constructor(e,t,n){super(e,d.ADMIN_MISMATCH),this.required=t,this.used=n}},A=class extends l{constructor(e,t,n){super(e,d.PASSKEY_MISMATCH),this.required=t,this.used=n}},T=class extends l{constructor(t){super(`The user with userId ${t.toString()} already has a wallet created for this project`);this.code=d.USER_WALLET_ALREADY_CREATED}},b=class extends l{constructor(e){super(`Prompt was either cancelled or timed out for passkey ${e}`,void 0,d.PASSKEY_PROMPT),this.passkeyName=e}},x=class extends l{constructor(e){super(`Registration for passkey ${e} failed, either the registration took too long, or passkey signature vaildation failed.`,void 0,d.PASSKEY_REGISTRATION),this.passkeyName=e}},v=class extends l{constructor(e){super(`User selected authenticator for passkey ${e} is not compatible with Crossmint's Smart Wallets.`,void 0,d.PASSKEY_INCOMPATIBLE_AUTHENTICATOR),this.passkeyName=e}},S=class extends l{constructor(e){super(e,void 0,d.WALLET_CONFIG)}},w=class extends S{constructor(){super("This signer was already used to create another wallet. Please use a different signer.");this.code=d.ADMIN_SIGNER_ALREADY_USED}},W=class extends S{constructor(){super("Smart wallets are not enabled for this project. They can be enabled on the project settings page in the developer console.");this.code=d.SMART_WALLETS_NOT_ENABLED}};import{erc20Abi as Ie,erc721Abi as Re}from"viem";var re=[{inputs:[{internalType:"string",name:"uri_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!1,internalType:"bool",name:"approved",type:"bool"}],name:"ApprovalForAll",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256[]",name:"ids",type:"uint256[]"},{indexed:!1,internalType:"uint256[]",name:"values",type:"uint256[]"}],name:"TransferBatch",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"id",type:"uint256"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"TransferSingle",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"value",type:"string"},{indexed:!0,internalType:"uint256",name:"id",type:"uint256"}],name:"URI",type:"event"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"id",type:"uint256"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts",type:"address[]"},{internalType:"uint256[]",name:"ids",type:"uint256[]"}],name:"balanceOfBatch",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"address",name:"operator",type:"address"}],name:"isApprovedForAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256[]",name:"ids",type:"uint256[]"},{internalType:"uint256[]",name:"amounts",type:"uint256[]"},{internalType:"bytes",name:"data",type:"bytes"}],name:"safeBatchTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"id",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"operator",type:"address"},{internalType:"bool",name:"approved",type:"bool"}],name:"setApprovalForAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"uri",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"}];function ne({contract:r,config:e,from:t,to:n}){switch(e.token.type){case"ft":return{account:t,address:r,abi:Ie,functionName:"transfer",args:[n,e.amount]};case"sft":return{account:t,address:r,abi:re,functionName:"safeTransferFrom",args:[t.address,n,e.token.tokenId,e.quantity,"0x00"],tokenId:e.token.tokenId};case"nft":return{account:t,address:r,abi:Re,functionName:"safeTransferFrom",args:[t.address,n,e.token.tokenId],tokenId:e.token.tokenId}}}import{BaseError as J,ContractFunctionRevertedError as I}from"viem";import{CrossmintSDKError as _e,WalletErrorCode as ae}from"@crossmint/client-sdk-base";var h=class extends _e{constructor(t,n,a,s=ae.SEND_TRANSACTION_FAILED){super(t,s);this.viemError=n;this.stage=a}},k=class extends h{constructor(t,n,a,s,i,o=a.data,c=a.reason){super(t,n,i,ae.SEND_TRANSACTION_EXECUTION_REVERTED);this.viemError=n;this.txId=s;this.stage=i;this.data=o;this.reason=c}},R=class{constructor(e,t={confirmations:2,transactionConfirmationTimeout:3e4}){this.client=e;this.defaultSendTransactionOptions=t}async sendTransaction(e,t={}){let{confirmations:n,transactionConfirmationTimeout:a}=this.getConfig(t);await this.simulateCall(e,void 0,"simulation");let s;try{s=await this.client.wallet.writeContract({...e,account:this.client.wallet.account,chain:this.client.wallet.chain})}catch(i){throw i instanceof J?new h(i.message,i,"send"):i}try{let i=await this.client.public.waitForTransactionReceipt({hash:s,confirmations:n,timeout:a});return await this.handleReceipt(i,e)}catch(i){throw i instanceof J?new h(i.message,i,"confirmation"):i}}getConfig(e){return{...this.defaultSendTransactionOptions,...e}}async handleReceipt(e,t){if(e.status==="reverted")throw await this.simulateCall(t,e.transactionHash,"execution"),new k("Transaction reverted but unable to detect the reason",new I({abi:t.abi,functionName:t.functionName}),new I({abi:t.abi,functionName:t.functionName}),e.transactionHash,"execution");return e.transactionHash}async simulateCall(e,t,n){try{await this.client.public.simulateContract({...e,account:this.client.wallet.account.address,chain:this.client.public.chain})}catch(a){if(a instanceof J){let s=a.walk(i=>i instanceof I);throw s instanceof I?new k(s.message,a,s,t,n):new h(a.message,a,n)}throw a}}};var O=class{constructor(e,t,n,a=new R(e)){this.crossmintService=n;this.sendTransactionService=a;this.chain=t,this.client=e}get address(){return this.client.wallet.account.address}async transferToken(e,t){if(this.chain!==t.token.chain)throw new l(`Chain mismatch: Expected ${t.token.chain}, but got ${this.chain}. Ensure you are interacting with the correct blockchain.`);return this.executeContract(ne({contract:t.token.contractAddress,to:e,from:this.client.wallet.account,config:t}))}async nfts(){return this.crossmintService.fetchNFTs(this.address,this.chain)}async executeContract({address:e,abi:t,functionName:n,args:a,value:s,config:i}){return this.sendTransactionService.sendTransaction({address:e,abi:t,functionName:n,args:a,value:s},i)}};import{SmartWalletErrorCode as Jn,CrossmintSDKError as qn,CrossmintServiceError as Xn,JWTDecryptionError as Zn,JWTExpiredError as Qn,JWTIdentifierError as ea,JWTInvalidError as ta,NotAuthorizedError as ra}from"@crossmint/client-sdk-base";import{stringify as Vt}from"viem";import{validateAPIKey as Lt}from"@crossmint/common-sdk-base";import{APIErrorService as He,BaseCrossmintService as je,CrossmintServiceError as Ge}from"@crossmint/client-sdk-base";import{blockchainToChainId as ze}from"@crossmint/common-sdk-base";import{SDKLogger as le,getBrowserLogger as Ne}from"@crossmint/client-sdk-base";var ie="0.1.19";var se="ZeroDev",oe=0,_="SCW_SDK",D=ie,N="2024-06-09",q=["0.3.1","0.3.0","0.2.4"],X=["v0.6","v0.7"];var C=new le(_),ce=new le(_,Ne(_,{onlyDatadog:!0}));import{PasskeyValidatorContractVersion as Ue}from"@zerodev/passkey-validator";import{isAddress as Me,isHex as Ve}from"viem";import{z as p}from"zod";var Le=p.custom(r=>Ve(r),{message:"Invalid hex string"}),U=p.custom(r=>Me(r),{message:"Invalid evm address"}),Ke=p.object({eoaAddress:U,type:p.literal("eoa")}),$e=p.object({entryPoint:U,validatorAddress:U,pubKeyX:p.string(),pubKeyY:p.string(),authenticatorIdHash:Le,authenticatorId:p.string()}),Fe=$e.extend({passkeyName:p.string(),validatorContractVersion:p.nativeEnum(Ue),domain:p.string(),type:p.literal("passkeys")}),Be=p.discriminatedUnion("type",[Fe,Ke]),M=p.object({kernelVersion:p.enum(q,{errorMap:(r,e)=>({message:`Unsupported kernel version. Supported versions: ${q.join(", ")}. Version used: ${e.data}. Please contact support`})}),entryPointVersion:p.enum(X,{errorMap:(r,e)=>({message:`Unsupported entry point version. Supported versions: ${X.join(", ")}. Version used: ${e.data}. Please contact support`})}),userId:p.string().min(1),signers:p.array(p.object({signerData:Be})).min(0).max(1,"Invalid wallet signer configuration. Please contact support"),smartContractWalletAddress:U.optional()});import{toHex as Ye}from"viem";function V(r,e){let t=e(r);return t.replace?t.value:Array.isArray(r)?r.map(n=>V(n,e)):r!==null&&typeof r=="object"?Object.fromEntries(Object.entries(r).map(([n,a])=>[n,V(a,e)])):t.value}function pe(r){return V(r,e=>typeof e=="bigint"?{value:Ye(e),replace:!0}:{value:e,replace:!1})}function me(r){return V(r,e=>e!=null&&typeof e=="object"&&"__xm_serializedType"in e&&"value"in e&&e.__xm_serializedType==="bigint"&&typeof e.value=="string"?{value:BigInt(e.value),replace:!0}:{value:e,replace:!1})}var L=class extends je{constructor(){super(...arguments);this.logger=C;this.apiErrorService=new He({ERROR_USER_WALLET_ALREADY_CREATED:({userId:t})=>new T(t),ERROR_ADMIN_SIGNER_ALREADY_USED:()=>new w,ERROR_PROJECT_NONCUSTODIAL_WALLETS_NOT_ENABLED:()=>new W})}async idempotentCreateSmartWallet(t,n){await this.fetchCrossmintAPI(`${N}/sdk/smart-wallet`,{method:"PUT",body:JSON.stringify(n)},"Error creating abstract wallet. Please contact support",t.jwt)}async sponsorUserOperation(t,n,a,s){let i=ze(s),o=await this.fetchCrossmintAPI(`${N}/sdk/paymaster`,{method:"POST",body:JSON.stringify({userOp:pe(n),entryPoint:a,chainId:i})},"Error sponsoring user operation. Please contact support",t.jwt);return me(o)}async getSmartWalletConfig(t,n){let a=await this.fetchCrossmintAPI(`${N}/sdk/smart-wallet/config?chain=${n}`,{method:"GET"},"Error getting smart wallet version configuration. Please contact support",t.jwt),s=M.safeParse(a);if(!s.success)throw new Ge(`Invalid smart wallet config, please contact support. Details below:
|
|
2
|
-
${s.error.toString()}`);return s.data}async fetchNFTs(t,n){return this.fetchCrossmintAPI(`v1-alpha1/wallets/${n}:${t}/nfts`,{method:"GET"},`Error fetching NFTs for wallet: ${t}`)}getPasskeyServerUrl(){return this.crossmintBaseUrl+"api/internal/passkeys"}};import{arbitrum as Je,arbitrumSepolia as qe,base as Xe,baseSepolia as Ze,optimism as Qe,optimismSepolia as et,polygon as tt,polygonAmoy as rt}from"viem/chains";import{BlockchainIncludingTestnet as g,objectValues as Z}from"@crossmint/common-sdk-base";var de={BASE_SEPOLIA:g.BASE_SEPOLIA,POLYGON_AMOY:g.POLYGON_AMOY,OPTIMISM_SEPOLIA:g.OPTIMISM_SEPOLIA,ARBITRUM_SEPOLIA:g.ARBITRUM_SEPOLIA},nt=Z(de),ue={BASE:g.BASE,POLYGON:g.POLYGON,OPTIMISM:g.OPTIMISM,ARBITRUM:g.ARBITRUM},at=Z(ue),it={...de,...ue},Ar=Z(it);function ye(r){return nt.includes(r)}function ge(r){return at.includes(r)}var fe={polygon:tt,"polygon-amoy":rt,base:Xe,"base-sepolia":Ze,optimism:Qe,"optimism-sepolia":et,arbitrum:Je,"arbitrum-sepolia":qe};import{keccak256 as st,toHex as ot}from"viem";var K=class{constructor(e){this.keyPrefix=e}set(e,t){localStorage.setItem(this.key(e),JSON.stringify(t))}get(e){let t=this.key(e),n=localStorage.getItem(t);if(n==null)return null;let a=M.safeParse(JSON.parse(n));return a.success?a.data:(localStorage.removeItem(t),null)}clear(){for(let e=0;e<localStorage.length;e++){let t=localStorage.key(e);t&&t.startsWith(this.keyPrefix)&&(localStorage.removeItem(t),e--)}}key(e){return`${this.keyPrefix}-${st(ot(e.jwt))}`}};var P=class{constructor(e){this.type="passkeys";this.data=e}display(){return{pubKeyX:this.data.pubKeyX,pubKeyY:this.data.pubKeyY,passkeyName:this.data.passkeyName,type:this.type}}},E=class{constructor(e){this.type="eoa";this.data=e}display(){return this.data}};var $=class{constructor(e,t){this.crossmintService=e;this.configCache=t}async get(e,t){let n=this.configCache.get(e);if(n!=null)return{config:this.validateAndFormat(e,n),cached:!0};let a=await this.crossmintService.getSmartWalletConfig(e,t);return{config:this.validateAndFormat(e,a),cached:!1}}cache({entryPointVersion:e,kernelVersion:t,user:n,existing:a}){this.configCache.clear(),this.configCache.set(n,{entryPointVersion:e,kernelVersion:t,userId:n.id,signers:[{signerData:a.signerConfig.data}],smartContractWalletAddress:a.address})}validateAndFormat(e,{entryPointVersion:t,kernelVersion:n,signers:a,smartContractWalletAddress:s,userId:i}){if(t==="v0.7"&&n.startsWith("0.2")||t==="v0.6"&&n.startsWith("0.3"))throw new l(`Unsupported combination: entryPoint ${t} and kernel version ${n}. Please contact support`);let o=a.map(m=>m.signerData),c=this.getSigner(o);if(s!=null&&c==null||c!=null&&s==null)throw new l("Either both signer and address must be present, or both must be null");return c==null||s==null?{entryPointVersion:t,kernelVersion:n,userWithId:{...e,id:i}}:{entryPointVersion:t,kernelVersion:n,userWithId:{...e,id:i},existing:{signerConfig:c,address:s}}}getSigner(e){if(e.length===0)return;let t=e[0];if(t.type==="eoa")return new E(t);if(t.type==="passkeys")return new P(t)}};function Q(r){return"signer"in r&&"type"in r.signer&&r.signer.type==="PASSKEY"}function Se(r){let e=r.existing==null||r.existing.signerConfig.type==="passkeys";return Q(r.walletParams)&&e}function lt(r){return"signer"in r&&("type"in r.signer&&r.signer.type==="VIEM_ACCOUNT"||"request"in r.signer&&typeof r.signer.request=="function")}function he(r){let e=r.existing==null||r.existing.signerConfig.type==="eoa";return lt(r.walletParams)&&e}var F=class{constructor(e,t){this.eoaStrategy=e;this.passkeyStrategy=t}get(e){if(Se(e))return this.passkeyStrategy.create(e);if(he(e))return this.eoaStrategy.create(e);if(e.existing==null)throw new S(`Unsupported wallet params:
|
|
3
|
-
${e.walletParams}`);let t=e.existing.signerConfig.display(),n=Q(e.walletParams)?"passkey":"eoa";throw new f(`Cannot create wallet with ${n} signer for user ${e.user.id}', they already have a wallet with signer:
|
|
4
|
-
'${JSON.stringify(t,null,2)}'`,t)}};import{signerToEcdsaValidator as dt}from"@zerodev/ecdsa-validator";import{createKernelAccount as ut}from"@zerodev/sdk";function Ce(r,e){return r?.toLowerCase()===e?.toLowerCase()}import{providerToSmartAccountSigner as ct}from"permissionless";async function Pe({walletParams:r}){if(pt(r.signer))return await ct(r.signer);if(mt(r.signer))return r.signer.account;{let e=r.signer;throw new l(`The signer type ${e.type} is not supported`)}}function pt(r){return r&&typeof r.request=="function"}function mt(r){return r&&r.type==="VIEM_ACCOUNT"}var B=class{async create({chain:e,publicClient:t,entryPoint:n,walletParams:a,kernelVersion:s,user:i,existing:o}){let c=await Pe({chain:e,walletParams:a});if(o!=null&&!Ce(c.address,o.signerConfig.data.eoaAddress))throw new f(`User '${i.id}' has an existing wallet with an eoa signer '${o.signerConfig.data.eoaAddress}', this does not match input eoa signer '${c.address}'.`,o.signerConfig.display(),{type:"eoa",eoaAddress:o.signerConfig.data.eoaAddress});let m=await dt(t,{signer:c,entryPoint:n,kernelVersion:s});return{account:await ut(t,{plugins:{sudo:m},index:0n,entryPoint:n,kernelVersion:s,deployedAccountAddress:o?.address}),signerConfig:new E({eoaAddress:c.address,type:"eoa"})}}};import{PasskeyValidatorContractVersion as yt,WebAuthnMode as gt,toPasskeyValidator as ft}from"@zerodev/passkey-validator";import{createKernelAccount as St}from"@zerodev/sdk";import{toWebAuthnKey as ht}from"@zerodev/webauthn-key";var Y=class{constructor(e,t){this.passkeyServerUrl=e;this.apiKey=t}async create({user:e,publicClient:t,walletParams:n,entryPoint:a,kernelVersion:s,existing:i}){let o=n.signer.passkeyName??e.id;if(i!=null&&i.signerConfig.data.passkeyName!==o)throw new A(`User '${e.id}' has an existing wallet created with a passkey named '${i.signerConfig.data.passkeyName}', this does match input passkey name '${o}'.`,i.signerConfig.display());try{i==null&&n.signer.onPrePasskeyRegistration!=null&&await n.signer.onPrePasskeyRegistration();let c=await this.getPasskey(e,o,i?.signerConfig.data),m=yt.V0_0_2,u=i==null?m:i.signerConfig.data.validatorContractVersion,y=await ft(t,{webAuthnKey:c,entryPoint:a,validatorContractVersion:u,kernelVersion:s}),We=await St(t,{plugins:{sudo:y},entryPoint:a,kernelVersion:s,deployedAccountAddress:i?.address});return{signerConfig:this.getSignerConfig(y,u,o),account:this.decorate(We,o,n)}}catch(c){throw n.signer.onPasskeyRegistrationError!=null&&n.signer.onPasskeyRegistrationError(c),this.mapError(c,o)}}async getPasskey(e,t,n){return n!=null?{pubX:BigInt(n.pubKeyX),pubY:BigInt(n.pubKeyY),authenticatorId:n.authenticatorId,authenticatorIdHash:n.authenticatorIdHash}:ht({passkeyName:t,passkeyServerUrl:this.passkeyServerUrl,mode:gt.Register,passkeyServerHeaders:this.createPasskeysServerHeaders(e)})}getSignerConfig(e,t,n){return new P({...Et(e.getSerializedData()),passkeyName:n,validatorContractVersion:t,domain:window.location.hostname,type:"passkeys"})}createPasskeysServerHeaders(e){return{"x-api-key":this.apiKey,Authorization:`Bearer ${e.jwt}`}}mapError(e,t){return e.code===0&&e.name==="DataError"?new v(t):e.message==="Registration not verified"?new x(t):e.code==="ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY"&&e.name==="NotAllowedError"?new b(t):e}decorate(e,t,n){return new Proxy(e,{get:(a,s,i)=>{let o=Reflect.get(a,s,i);if(typeof o!="function"||typeof s!="string"||!Pt(s))return o;let c=n.signer;return async(...m)=>{m?.[0]?.factoryData!=null&&s==="signUserOperation"&&c.type==="PASSKEY"&&c.onFirstTimePasskeySigning!=null&&await c.onFirstTimePasskeySigning();try{return await o.call(a,...m)}catch(y){throw c.onFirstTimePasskeySigningError!=null&&await c.onFirstTimePasskeySigningError(y),this.mapError(y,t)}}}})}},Ct=["signMessage","signTypedData","signUserOperation","signTransaction"];function Pt(r){return Ct.includes(r)}var Et=r=>{let e=At(r),t=new TextDecoder().decode(e);return JSON.parse(t)};function At(r){let e=atob(r);return Uint8Array.from(e,t=>t.codePointAt(0))}import{stringify as Ee}from"viem";function H(r){return!1}var Tt=["sendTransaction","writeContract","sendUserOperation"],bt=["signMessage","signTypedData"];function ee(r){return Tt.includes(r)}function xt(r){return bt.includes(r)}var j=class{constructor(e,t=C){this.errorProcessor=e;this.logger=t}decorate({crossmintChain:e,smartAccountClient:t}){return new Proxy(t,{get:(n,a,s)=>{let i=Reflect.get(n,a,s);return typeof i!="function"||typeof a!="string"||!(xt(a)||ee(a))?i:(...o)=>this.logger.logPerformance(`CrossmintSmartWallet.${a}`,()=>this.execute(n,a,i,o,e))}})}async execute(e,t,n,a,s){try{this.logger.log(`[CrossmintSmartWallet.${t}] - params: ${Ee(a)}`);let i=ee(t)?this.processTxnArgs(t,s,a):a;return await n.call(e,...i)}catch(i){let o=ee(t)?"signing":"sending transaction";throw this.errorProcessor.map(i,new l(`Error ${o}: ${i.message}`,Ee(i)))}}processTxnArgs(e,t,n){if(e==="sendUserOperation"){let[{userOperation:s,middleware:i,account:o}]=n;return[{middleware:i,account:o,userOperation:this.addGelatoBundlerProperties(t,s)},...n.slice(1)]}let[a]=n;return[this.addGelatoBundlerProperties(t,a),...n.slice(1)]}addGelatoBundlerProperties(e,t){return H(e)?{...t,maxFeePerGas:"0x0",maxPriorityFeePerGas:"0x0"}:t}};import{ENTRYPOINT_ADDRESS_V06 as Ot,ENTRYPOINT_ADDRESS_V07 as It,createSmartAccountClient as Rt}from"permissionless";import{createPimlicoBundlerClient as _t}from"permissionless/clients/pimlico";import{createPublicClient as Dt,http as ve}from"viem";import{blockchainToChainId as Nt}from"@crossmint/common-sdk-base";import{blockchainToChainId as vt}from"@crossmint/common-sdk-base";var wt="-7M6vRDBDknwvMxnqah_jbcieWg0qad9",Wt="pim_9dKmQPxiTCvtbUNF7XFBbA",kt={polygon:"polygon-mainnet","polygon-amoy":"polygon-amoy",base:"base-mainnet","base-sepolia":"base-sepolia",optimism:"opt-mainnet","optimism-sepolia":"opt-sepolia",arbitrum:"arb-mainnet","arbitrum-sepolia":"arb-sepolia"};function Ae(r){return`https://${kt[r]}.g.alchemy.com/v2/${wt}`}function Te(r){return`https://api.pimlico.io/v2/${vt(r)}/rpc?apikey=${Wt}`}function be(r){return!H(r)}function xe({bundlerClient:r,entryPoint:e,chain:t,walletService:n,user:a}){return{middleware:{gasPrice:async()=>(await r.getUserOperationGasPrice()).fast,sponsorUserOperation:async({userOperation:s})=>{let{sponsorUserOpParams:i}=await n.sponsorUserOperation(a,s,e,t);return i}}}}var G=class{constructor(e,t,n,a){this.crossmintService=e;this.accountConfigService=t;this.accountCreator=n;this.clientDecorator=a}async getOrCreate(e,t,n){let{config:{entryPointVersion:a,kernelVersion:s,existing:i,userWithId:o},cached:c}=await this.accountConfigService.get(e,t),m=Dt({transport:ve(Ae(t))}),{account:u,signerConfig:y}=await this.accountCreator.get({chain:t,walletParams:n,publicClient:m,user:o,entryPoint:a==="v0.6"?Ot:It,kernelVersion:s,existing:i});return i==null&&await this.crossmintService.idempotentCreateSmartWallet(e,{type:se,smartContractWalletAddress:u.address,signerData:y.data,version:oe,baseLayer:"evm",chainId:Nt(t),entryPointVersion:a,kernelVersion:s}),c||this.accountConfigService.cache({entryPointVersion:a,kernelVersion:s,user:o,existing:{address:u.address,signerConfig:y}}),new O({wallet:this.smartAccountClient(t,u,e),public:m},t,this.crossmintService)}smartAccountClient(e,t,n){let a=ve(Te(e)),s={chain:fe[e],entryPoint:t.entryPoint},i=_t({...s,transport:a}),o=Rt({account:t,bundlerTransport:a,...s,...be(e)&&xe({bundlerClient:i,entryPoint:t.entryPoint,chain:e,walletService:this.crossmintService,user:n})});return this.clientDecorator.decorate({crossmintChain:e,smartAccountClient:o})}};import{BaseError as Ut,stringify as Mt}from"viem";var z=class{constructor(e){this.logger=e}map(e,t){return this.record(e),e instanceof l||e instanceof Ut?e:t}record(e){let t=e instanceof Error?e.message:String(e);this.logger.error(`Smart Wallet SDK Error: ${t}`,{stack:e instanceof Error?e.stack:void 0,name:e instanceof Error?e.name:"UnknownError",details:Mt(e),domain:window.location.hostname,sdk_version:D})}};function we(){return typeof window<"u"}var te=class r{constructor(e,t,n,a=C){this.crossmintEnv=e;this.smartWalletService=t;this.errorProcessor=n;this.logger=a}static init({clientApiKey:e}){let t=Lt(e);if(!t.isValid)throw new Error("API key invalid");let n=new L(e),a=new z(ce),s=new F(new B,new Y(n.getPasskeyServerUrl(),e)),i=new K(`smart-wallet-${D}`),o=new G(n,new $(n,i),s,new j(a));return new r(t.environment,o,a)}async getOrCreateWallet(e,t,n={signer:{type:"PASSKEY"}}){if(!we())throw new l("Smart Wallet SDK should only be used client side.");return this.assertValidChain(t),await this.logger.logPerformance("GET_OR_CREATE_WALLET",async()=>{try{return await this.smartWalletService.getOrCreate(e,t,n)}catch(a){throw this.errorProcessor.map(a,new l(`Wallet creation failed: ${a.message}.`,Vt(a)))}})}assertValidChain(e){if(!this.validChain(e))throw new l(`The selected chain "${e}" is not available in "${this.crossmintEnv}". Either set a valid chain or check you're using an API key for the environment you're trying to target.`)}validChain(e){return this.crossmintEnv==="development"||this.crossmintEnv==="staging"?ye(e):ge(e)}};export{w as AdminAlreadyUsedError,f as AdminMismatchError,Yn as Chain,S as ConfigError,qn as CrossmintSDKError,Xn as CrossmintServiceError,h as EVMSendTransactionError,k as EVMSendTransactionExecutionRevertedError,O as EVMSmartWallet,Zn as JWTDecryptionError,Qn as JWTExpiredError,ea as JWTIdentifierError,ta as JWTInvalidError,ra as NotAuthorizedError,v as PasskeyIncompatibleAuthenticatorError,A as PasskeyMismatchError,b as PasskeyPromptError,x as PasskeyRegistrationError,l as SmartWalletError,Jn as SmartWalletErrorCode,te as SmartWalletSDK,W as SmartWalletsNotEnabledError,T as UserWalletAlreadyCreatedError,Bn as blockchainToChainId};
|
|
5
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
import{a as T}from"./chunk-27US7ZBX.js";import"./chunk-H4CMXNVK.js";import"./chunk-PBUJXVQT.js";import"./chunk-LMVY4C4Y.js";import"./chunk-NLGILHJS.js";import"./chunk-G57LROTD.js";import"./chunk-ATQ4WGCW.js";import"./chunk-FIJ3CBJ4.js";import"./chunk-UG47CBKR.js";import"./chunk-BJZQA5VC.js";import"./chunk-C3VZY7VJ.js";import"./chunk-D4NDUT36.js";import"./chunk-CUTQYF3F.js";import"./chunk-FHNNZVNU.js";import{a as c}from"./chunk-ETVJGLNY.js";import{a as E,b as p}from"./chunk-S2XBSAGM.js";import"./chunk-XP6ESWVJ.js";import"./chunk-QVB3HE6Q.js";import"./chunk-4SPA557P.js";import"./chunk-Z22H3MJS.js";import"./chunk-CPYNP4XI.js";import"./chunk-PZ6Q22YJ.js";import"./chunk-YBHSEZMB.js";import"./chunk-TZG6MROQ.js";import"./chunk-3F6P4HUZ.js";import"./chunk-7JAT6GQU.js";import"./chunk-WDM7PN4O.js";import{a as r,b as e,c as a,d as o,e as t,f as n,g as s,h as i,i as l,j as m}from"./chunk-UPURFW46.js";import{blockchainToChainId as h,EVMBlockchainIncludingTestnet as x}from"@crossmint/common-sdk-base";import{SmartWalletErrorCode as M,CrossmintSDKError as I,CrossmintServiceError as V,JWTDecryptionError as g,JWTExpiredError as u,JWTIdentifierError as b,JWTInvalidError as D,NotAuthorizedError as J}from"@crossmint/client-sdk-base";export{l as AdminAlreadyUsedError,e as AdminMismatchError,x as Chain,i as ConfigError,I as CrossmintSDKError,V as CrossmintServiceError,E as EVMSendTransactionError,p as EVMSendTransactionExecutionRevertedError,c as EVMSmartWallet,g as JWTDecryptionError,u as JWTExpiredError,b as JWTIdentifierError,D as JWTInvalidError,J as NotAuthorizedError,s as PasskeyIncompatibleAuthenticatorError,a as PasskeyMismatchError,t as PasskeyPromptError,n as PasskeyRegistrationError,r as SmartWalletError,M as SmartWalletErrorCode,T as SmartWalletSDK,m as SmartWalletsNotEnabledError,o as UserWalletAlreadyCreatedError,h as blockchainToChainId};
|