@dynamic-labs-wallet/evm 0.0.121 → 0.0.123

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/index.cjs.js CHANGED
@@ -130,7 +130,7 @@ class DynamicEvmWalletClient extends browser.DynamicWalletClient {
130
130
  throw new Error(browser.ERROR_CREATE_WALLET_ACCOUNT);
131
131
  }
132
132
  }
133
- async signMessage({ message, accountAddress, password = undefined, signedSessionId }) {
133
+ async signMessage({ message, accountAddress, password = undefined, signedSessionId, mfaToken }) {
134
134
  await this.verifyPassword({
135
135
  accountAddress,
136
136
  password,
@@ -149,7 +149,8 @@ class DynamicEvmWalletClient extends browser.DynamicWalletClient {
149
149
  accountAddress: accountAddress,
150
150
  chainName: this.chainName,
151
151
  password,
152
- signedSessionId
152
+ signedSessionId,
153
+ mfaToken
153
154
  });
154
155
  // Serialize the signature
155
156
  const serializedSignature = serializeECDSASignature(signatureEcdsa, this.logger);
@@ -176,7 +177,7 @@ class DynamicEvmWalletClient extends browser.DynamicWalletClient {
176
177
  throw new Error(browser.ERROR_VERIFY_MESSAGE_SIGNATURE);
177
178
  }
178
179
  }
179
- async signTransaction({ senderAddress, transaction, password = undefined, signedSessionId }) {
180
+ async signTransaction({ senderAddress, transaction, password = undefined, signedSessionId, mfaToken }) {
180
181
  await this.verifyPassword({
181
182
  accountAddress: senderAddress,
182
183
  password,
@@ -194,7 +195,8 @@ class DynamicEvmWalletClient extends browser.DynamicWalletClient {
194
195
  accountAddress: senderAddress,
195
196
  chainName: this.chainName,
196
197
  password,
197
- signedSessionId
198
+ signedSessionId,
199
+ mfaToken
198
200
  });
199
201
  if (!('r' in signatureEcdsa && 's' in signatureEcdsa && 'v' in signatureEcdsa)) {
200
202
  throw new Error('Invalid signature format returned from MPC signing');
@@ -215,7 +217,7 @@ class DynamicEvmWalletClient extends browser.DynamicWalletClient {
215
217
  throw error;
216
218
  }
217
219
  }
218
- async signTypedData({ accountAddress, typedData, password = undefined, signedSessionId }) {
220
+ async signTypedData({ accountAddress, typedData, password = undefined, signedSessionId, mfaToken }) {
219
221
  await this.verifyPassword({
220
222
  accountAddress,
221
223
  password,
@@ -233,7 +235,8 @@ class DynamicEvmWalletClient extends browser.DynamicWalletClient {
233
235
  chainName: this.chainName,
234
236
  password,
235
237
  signedSessionId,
236
- isFormatted: true
238
+ isFormatted: true,
239
+ mfaToken
237
240
  });
238
241
  const serializedSignature = serializeECDSASignature(signatureEcdsa, this.logger);
239
242
  return serializedSignature;
@@ -254,7 +257,7 @@ class DynamicEvmWalletClient extends browser.DynamicWalletClient {
254
257
  publicKeyHex
255
258
  };
256
259
  }
257
- async exportPrivateKey({ accountAddress, password = undefined, signedSessionId }) {
260
+ async exportPrivateKey({ accountAddress, password = undefined, signedSessionId, mfaToken }) {
258
261
  await this.verifyPassword({
259
262
  accountAddress,
260
263
  password,
@@ -265,7 +268,8 @@ class DynamicEvmWalletClient extends browser.DynamicWalletClient {
265
268
  accountAddress,
266
269
  chainName: this.chainName,
267
270
  password,
268
- signedSessionId
271
+ signedSessionId,
272
+ mfaToken
269
273
  });
270
274
  return derivedPrivateKey;
271
275
  }
@@ -352,14 +356,15 @@ class DynamicEvmWalletClient extends browser.DynamicWalletClient {
352
356
  const evmWallets = wallets.filter((wallet)=>wallet.chainName === 'eip155');
353
357
  return evmWallets;
354
358
  }
355
- constructor({ environmentId, authToken, baseApiUrl, baseMPCRelayApiUrl, storageKey, debug }){
359
+ constructor({ environmentId, authToken, baseApiUrl, baseMPCRelayApiUrl, storageKey, debug, featureFlags }){
356
360
  super({
357
361
  environmentId,
358
362
  authToken,
359
363
  baseApiUrl,
360
364
  baseMPCRelayApiUrl,
361
365
  storageKey,
362
- debug
366
+ debug,
367
+ featureFlags
363
368
  }), this.chainName = 'EVM';
364
369
  }
365
370
  }
package/index.esm.js CHANGED
@@ -128,7 +128,7 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
128
128
  throw new Error(ERROR_CREATE_WALLET_ACCOUNT);
129
129
  }
130
130
  }
131
- async signMessage({ message, accountAddress, password = undefined, signedSessionId }) {
131
+ async signMessage({ message, accountAddress, password = undefined, signedSessionId, mfaToken }) {
132
132
  await this.verifyPassword({
133
133
  accountAddress,
134
134
  password,
@@ -147,7 +147,8 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
147
147
  accountAddress: accountAddress,
148
148
  chainName: this.chainName,
149
149
  password,
150
- signedSessionId
150
+ signedSessionId,
151
+ mfaToken
151
152
  });
152
153
  // Serialize the signature
153
154
  const serializedSignature = serializeECDSASignature(signatureEcdsa, this.logger);
@@ -174,7 +175,7 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
174
175
  throw new Error(ERROR_VERIFY_MESSAGE_SIGNATURE);
175
176
  }
176
177
  }
177
- async signTransaction({ senderAddress, transaction, password = undefined, signedSessionId }) {
178
+ async signTransaction({ senderAddress, transaction, password = undefined, signedSessionId, mfaToken }) {
178
179
  await this.verifyPassword({
179
180
  accountAddress: senderAddress,
180
181
  password,
@@ -192,7 +193,8 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
192
193
  accountAddress: senderAddress,
193
194
  chainName: this.chainName,
194
195
  password,
195
- signedSessionId
196
+ signedSessionId,
197
+ mfaToken
196
198
  });
197
199
  if (!('r' in signatureEcdsa && 's' in signatureEcdsa && 'v' in signatureEcdsa)) {
198
200
  throw new Error('Invalid signature format returned from MPC signing');
@@ -213,7 +215,7 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
213
215
  throw error;
214
216
  }
215
217
  }
216
- async signTypedData({ accountAddress, typedData, password = undefined, signedSessionId }) {
218
+ async signTypedData({ accountAddress, typedData, password = undefined, signedSessionId, mfaToken }) {
217
219
  await this.verifyPassword({
218
220
  accountAddress,
219
221
  password,
@@ -231,7 +233,8 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
231
233
  chainName: this.chainName,
232
234
  password,
233
235
  signedSessionId,
234
- isFormatted: true
236
+ isFormatted: true,
237
+ mfaToken
235
238
  });
236
239
  const serializedSignature = serializeECDSASignature(signatureEcdsa, this.logger);
237
240
  return serializedSignature;
@@ -252,7 +255,7 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
252
255
  publicKeyHex
253
256
  };
254
257
  }
255
- async exportPrivateKey({ accountAddress, password = undefined, signedSessionId }) {
258
+ async exportPrivateKey({ accountAddress, password = undefined, signedSessionId, mfaToken }) {
256
259
  await this.verifyPassword({
257
260
  accountAddress,
258
261
  password,
@@ -263,7 +266,8 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
263
266
  accountAddress,
264
267
  chainName: this.chainName,
265
268
  password,
266
- signedSessionId
269
+ signedSessionId,
270
+ mfaToken
267
271
  });
268
272
  return derivedPrivateKey;
269
273
  }
@@ -350,14 +354,15 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
350
354
  const evmWallets = wallets.filter((wallet)=>wallet.chainName === 'eip155');
351
355
  return evmWallets;
352
356
  }
353
- constructor({ environmentId, authToken, baseApiUrl, baseMPCRelayApiUrl, storageKey, debug }){
357
+ constructor({ environmentId, authToken, baseApiUrl, baseMPCRelayApiUrl, storageKey, debug, featureFlags }){
354
358
  super({
355
359
  environmentId,
356
360
  authToken,
357
361
  baseApiUrl,
358
362
  baseMPCRelayApiUrl,
359
363
  storageKey,
360
- debug
364
+ debug,
365
+ featureFlags
361
366
  }), this.chainName = 'EVM';
362
367
  }
363
368
  }
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@dynamic-labs-wallet/evm",
3
- "version": "0.0.121",
3
+ "version": "0.0.123",
4
4
  "license": "MIT",
5
5
  "type": "commonjs",
6
6
  "dependencies": {
7
- "@dynamic-labs-wallet/browser": "0.0.121"
7
+ "@dynamic-labs-wallet/browser": "0.0.123"
8
8
  },
9
9
  "peerDependencies": {
10
10
  "viem": "^2.22.1"
@@ -2,7 +2,7 @@ import { DynamicWalletClient, DynamicWalletClientProps, EcdsaKeygenResult, Ecdsa
2
2
  import { type Chain, type PublicClient, type SignableMessage, type TransactionSerializable, type TypedData } from 'viem';
3
3
  export declare class DynamicEvmWalletClient extends DynamicWalletClient {
4
4
  readonly chainName = "EVM";
5
- constructor({ environmentId, authToken, baseApiUrl, baseMPCRelayApiUrl, storageKey, debug, }: DynamicWalletClientProps);
5
+ constructor({ environmentId, authToken, baseApiUrl, baseMPCRelayApiUrl, storageKey, debug, featureFlags, }: DynamicWalletClientProps);
6
6
  createViemPublicClient({ chain, rpcUrl, }: {
7
7
  chain: Chain;
8
8
  rpcUrl?: string;
@@ -17,28 +17,31 @@ export declare class DynamicEvmWalletClient extends DynamicWalletClient {
17
17
  publicKeyHex: string;
18
18
  rawPublicKey: EcdsaPublicKey | Uint8Array | string | undefined;
19
19
  }>;
20
- signMessage({ message, accountAddress, password, signedSessionId, }: {
20
+ signMessage({ message, accountAddress, password, signedSessionId, mfaToken, }: {
21
21
  message: string;
22
22
  accountAddress: string;
23
23
  password?: string;
24
24
  signedSessionId: string;
25
+ mfaToken?: string;
25
26
  }): Promise<`0x${string}`>;
26
27
  verifyMessageSignature({ accountAddress, message, signature, }: {
27
28
  accountAddress: string;
28
29
  message: SignableMessage;
29
30
  signature: any;
30
31
  }): Promise<boolean>;
31
- signTransaction({ senderAddress, transaction, password, signedSessionId, }: {
32
+ signTransaction({ senderAddress, transaction, password, signedSessionId, mfaToken, }: {
32
33
  senderAddress: string;
33
34
  transaction: TransactionSerializable;
34
35
  password?: string;
35
36
  signedSessionId: string;
37
+ mfaToken?: string;
36
38
  }): Promise<string>;
37
- signTypedData({ accountAddress, typedData, password, signedSessionId, }: {
39
+ signTypedData({ accountAddress, typedData, password, signedSessionId, mfaToken, }: {
38
40
  accountAddress: string;
39
41
  typedData: TypedData;
40
42
  password?: string;
41
43
  signedSessionId: string;
44
+ mfaToken?: string;
42
45
  }): Promise<`0x${string}`>;
43
46
  deriveAccountAddress({ rawPublicKey }: {
44
47
  rawPublicKey: EcdsaPublicKey;
@@ -46,10 +49,11 @@ export declare class DynamicEvmWalletClient extends DynamicWalletClient {
46
49
  accountAddress: `0x${string}`;
47
50
  publicKeyHex: any;
48
51
  };
49
- exportPrivateKey({ accountAddress, password, signedSessionId, }: {
52
+ exportPrivateKey({ accountAddress, password, signedSessionId, mfaToken, }: {
50
53
  accountAddress: string;
51
54
  password?: string;
52
55
  signedSessionId: string;
56
+ mfaToken?: string;
53
57
  }): Promise<string | undefined>;
54
58
  offlineExportPrivateKey({ keyShares, derivationPath, }: {
55
59
  keyShares: (EcdsaKeygenResult | Ed25519KeygenResult)[];
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}