@dynamic-labs-wallet/evm 1.1.34 → 1.1.36
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 +50 -1
- package/index.esm.js +50 -1
- package/package.json +3 -3
- package/src/client/client.d.ts +47 -3
- package/src/client/client.d.ts.map +1 -1
package/index.cjs
CHANGED
|
@@ -98,6 +98,7 @@ const mapTransactionToEvmTransaction = (transaction)=>{
|
|
|
98
98
|
};
|
|
99
99
|
};
|
|
100
100
|
|
|
101
|
+
/** The most fee attempts one sign-and-broadcast request carries. */ const MAX_SIGN_AND_BROADCAST_FEES = 3;
|
|
101
102
|
class DynamicEvmWalletClient extends browser.DynamicWalletClient {
|
|
102
103
|
createViemPublicClient({ chain, rpcUrl }) {
|
|
103
104
|
return viem.createPublicClient({
|
|
@@ -296,6 +297,52 @@ class DynamicEvmWalletClient extends browser.DynamicWalletClient {
|
|
|
296
297
|
throw error;
|
|
297
298
|
}
|
|
298
299
|
}
|
|
300
|
+
/**
|
|
301
|
+
* Signs the transaction at each fee for Dynamic to broadcast: the cheapest is sent first and the next replaces it if it stalls. Each fee is its own signing ceremony.
|
|
302
|
+
*
|
|
303
|
+
* @param params.senderAddress - The wallet's address.
|
|
304
|
+
* @param params.transaction - The transaction without a fee: chain id, recipient, nonce, gas limit, and optionally value and data.
|
|
305
|
+
* @param params.fees - One to three prices for the same transaction, cheapest first, all in one style (`gasPrice`, or `maxFeePerGas` with `maxPriorityFeePerGas`).
|
|
306
|
+
* @param params.requestedCertainty - How sure to be before calling it confirmed: `fast`, `safe` or `final`, or `chain:` plus a chain-specific value. Defaults to `safe`.
|
|
307
|
+
* @param params.externalReference - Your own label, returned on every event. Not unique.
|
|
308
|
+
* @param params.idempotencyKey - Makes a retry safe: the same key replays the stored answer instead of sending twice. A new one is made when omitted.
|
|
309
|
+
* @param params.password - The wallet's backup password, if it has one.
|
|
310
|
+
* @param params.signedSessionId - The signed-in session, used to unlock the wallet's key share.
|
|
311
|
+
* @param params.mfaToken - Proof of the user's multi-factor check, when the wallet needs one.
|
|
312
|
+
* @param params.elevatedAccessToken - Proof of a recent re-login, when the wallet needs one.
|
|
313
|
+
* @param params.approvalQuorum - Approvers' consent for a governed wallet, sent on the retry after `intent_required`.
|
|
314
|
+
* @param params.onError - Called with the failure's message, never the raw error.
|
|
315
|
+
* @param params.traceContext - Ties this call's logs to the server's, across retries. Created when omitted.
|
|
316
|
+
* @returns The transaction record.
|
|
317
|
+
* @throws Error when `fees` has no entry or more than three.
|
|
318
|
+
*/ async signAndBroadcastTransaction({ senderAddress, transaction, fees, password = undefined, signedSessionId, mfaToken, elevatedAccessToken, approvalQuorum, requestedCertainty, externalReference, idempotencyKey, onError, traceContext }) {
|
|
319
|
+
if (fees.length === 0 || fees.length > MAX_SIGN_AND_BROADCAST_FEES) {
|
|
320
|
+
throw new Error(`Sign and broadcast takes 1 to ${MAX_SIGN_AND_BROADCAST_FEES} fees, got ${fees.length}`);
|
|
321
|
+
}
|
|
322
|
+
const transactions = fees.map((fee)=>_extends({}, transaction, fee));
|
|
323
|
+
const messages = transactions.map((attempt)=>this.prepareSignTransaction({
|
|
324
|
+
transaction: attempt
|
|
325
|
+
}));
|
|
326
|
+
const contexts = transactions.map((attempt)=>({
|
|
327
|
+
evmTransaction: mapTransactionToEvmTransaction(attempt)
|
|
328
|
+
}));
|
|
329
|
+
return await this.signAndBroadcast({
|
|
330
|
+
accountAddress: senderAddress,
|
|
331
|
+
chainName: this.chainName,
|
|
332
|
+
contexts,
|
|
333
|
+
messages,
|
|
334
|
+
password,
|
|
335
|
+
signedSessionId,
|
|
336
|
+
mfaToken,
|
|
337
|
+
elevatedAccessToken,
|
|
338
|
+
approvalQuorum,
|
|
339
|
+
requestedCertainty,
|
|
340
|
+
externalReference,
|
|
341
|
+
idempotencyKey,
|
|
342
|
+
onError,
|
|
343
|
+
traceContext
|
|
344
|
+
});
|
|
345
|
+
}
|
|
299
346
|
async signTypedData({ accountAddress, typedData, password = undefined, signedSessionId, mfaToken, elevatedAccessToken, approvalQuorum, onError, traceContext }) {
|
|
300
347
|
await this.verifyPassword({
|
|
301
348
|
accountAddress,
|
|
@@ -346,7 +393,7 @@ class DynamicEvmWalletClient extends browser.DynamicWalletClient {
|
|
|
346
393
|
publicKeyHex
|
|
347
394
|
};
|
|
348
395
|
}
|
|
349
|
-
async exportPrivateKey({ accountAddress, password = undefined, signedSessionId, mfaToken, elevatedAccessToken, traceContext }) {
|
|
396
|
+
async exportPrivateKey({ accountAddress, password = undefined, signedSessionId, mfaToken, elevatedAccessToken, approvalQuorum, proposalId, traceContext }) {
|
|
350
397
|
await this.verifyPassword({
|
|
351
398
|
accountAddress,
|
|
352
399
|
password,
|
|
@@ -359,6 +406,8 @@ class DynamicEvmWalletClient extends browser.DynamicWalletClient {
|
|
|
359
406
|
signedSessionId,
|
|
360
407
|
mfaToken,
|
|
361
408
|
elevatedAccessToken,
|
|
409
|
+
approvalQuorum,
|
|
410
|
+
proposalId,
|
|
362
411
|
traceContext
|
|
363
412
|
});
|
|
364
413
|
return derivedPrivateKey;
|
package/index.esm.js
CHANGED
|
@@ -96,6 +96,7 @@ const mapTransactionToEvmTransaction = (transaction)=>{
|
|
|
96
96
|
};
|
|
97
97
|
};
|
|
98
98
|
|
|
99
|
+
/** The most fee attempts one sign-and-broadcast request carries. */ const MAX_SIGN_AND_BROADCAST_FEES = 3;
|
|
99
100
|
class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
100
101
|
createViemPublicClient({ chain, rpcUrl }) {
|
|
101
102
|
return createPublicClient({
|
|
@@ -294,6 +295,52 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
294
295
|
throw error;
|
|
295
296
|
}
|
|
296
297
|
}
|
|
298
|
+
/**
|
|
299
|
+
* Signs the transaction at each fee for Dynamic to broadcast: the cheapest is sent first and the next replaces it if it stalls. Each fee is its own signing ceremony.
|
|
300
|
+
*
|
|
301
|
+
* @param params.senderAddress - The wallet's address.
|
|
302
|
+
* @param params.transaction - The transaction without a fee: chain id, recipient, nonce, gas limit, and optionally value and data.
|
|
303
|
+
* @param params.fees - One to three prices for the same transaction, cheapest first, all in one style (`gasPrice`, or `maxFeePerGas` with `maxPriorityFeePerGas`).
|
|
304
|
+
* @param params.requestedCertainty - How sure to be before calling it confirmed: `fast`, `safe` or `final`, or `chain:` plus a chain-specific value. Defaults to `safe`.
|
|
305
|
+
* @param params.externalReference - Your own label, returned on every event. Not unique.
|
|
306
|
+
* @param params.idempotencyKey - Makes a retry safe: the same key replays the stored answer instead of sending twice. A new one is made when omitted.
|
|
307
|
+
* @param params.password - The wallet's backup password, if it has one.
|
|
308
|
+
* @param params.signedSessionId - The signed-in session, used to unlock the wallet's key share.
|
|
309
|
+
* @param params.mfaToken - Proof of the user's multi-factor check, when the wallet needs one.
|
|
310
|
+
* @param params.elevatedAccessToken - Proof of a recent re-login, when the wallet needs one.
|
|
311
|
+
* @param params.approvalQuorum - Approvers' consent for a governed wallet, sent on the retry after `intent_required`.
|
|
312
|
+
* @param params.onError - Called with the failure's message, never the raw error.
|
|
313
|
+
* @param params.traceContext - Ties this call's logs to the server's, across retries. Created when omitted.
|
|
314
|
+
* @returns The transaction record.
|
|
315
|
+
* @throws Error when `fees` has no entry or more than three.
|
|
316
|
+
*/ async signAndBroadcastTransaction({ senderAddress, transaction, fees, password = undefined, signedSessionId, mfaToken, elevatedAccessToken, approvalQuorum, requestedCertainty, externalReference, idempotencyKey, onError, traceContext }) {
|
|
317
|
+
if (fees.length === 0 || fees.length > MAX_SIGN_AND_BROADCAST_FEES) {
|
|
318
|
+
throw new Error(`Sign and broadcast takes 1 to ${MAX_SIGN_AND_BROADCAST_FEES} fees, got ${fees.length}`);
|
|
319
|
+
}
|
|
320
|
+
const transactions = fees.map((fee)=>_extends({}, transaction, fee));
|
|
321
|
+
const messages = transactions.map((attempt)=>this.prepareSignTransaction({
|
|
322
|
+
transaction: attempt
|
|
323
|
+
}));
|
|
324
|
+
const contexts = transactions.map((attempt)=>({
|
|
325
|
+
evmTransaction: mapTransactionToEvmTransaction(attempt)
|
|
326
|
+
}));
|
|
327
|
+
return await this.signAndBroadcast({
|
|
328
|
+
accountAddress: senderAddress,
|
|
329
|
+
chainName: this.chainName,
|
|
330
|
+
contexts,
|
|
331
|
+
messages,
|
|
332
|
+
password,
|
|
333
|
+
signedSessionId,
|
|
334
|
+
mfaToken,
|
|
335
|
+
elevatedAccessToken,
|
|
336
|
+
approvalQuorum,
|
|
337
|
+
requestedCertainty,
|
|
338
|
+
externalReference,
|
|
339
|
+
idempotencyKey,
|
|
340
|
+
onError,
|
|
341
|
+
traceContext
|
|
342
|
+
});
|
|
343
|
+
}
|
|
297
344
|
async signTypedData({ accountAddress, typedData, password = undefined, signedSessionId, mfaToken, elevatedAccessToken, approvalQuorum, onError, traceContext }) {
|
|
298
345
|
await this.verifyPassword({
|
|
299
346
|
accountAddress,
|
|
@@ -344,7 +391,7 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
344
391
|
publicKeyHex
|
|
345
392
|
};
|
|
346
393
|
}
|
|
347
|
-
async exportPrivateKey({ accountAddress, password = undefined, signedSessionId, mfaToken, elevatedAccessToken, traceContext }) {
|
|
394
|
+
async exportPrivateKey({ accountAddress, password = undefined, signedSessionId, mfaToken, elevatedAccessToken, approvalQuorum, proposalId, traceContext }) {
|
|
348
395
|
await this.verifyPassword({
|
|
349
396
|
accountAddress,
|
|
350
397
|
password,
|
|
@@ -357,6 +404,8 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
357
404
|
signedSessionId,
|
|
358
405
|
mfaToken,
|
|
359
406
|
elevatedAccessToken,
|
|
407
|
+
approvalQuorum,
|
|
408
|
+
proposalId,
|
|
360
409
|
traceContext
|
|
361
410
|
});
|
|
362
411
|
return derivedPrivateKey;
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs-wallet/evm",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.36",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@dynamic-labs-wallet/browser": "1.1.
|
|
8
|
-
"@dynamic-labs-wallet/core": "1.1.
|
|
7
|
+
"@dynamic-labs-wallet/browser": "1.1.36",
|
|
8
|
+
"@dynamic-labs-wallet/core": "1.1.36",
|
|
9
9
|
"@dynamic-labs/sdk-api-core": "0.50.0"
|
|
10
10
|
},
|
|
11
11
|
"peerDependencies": {
|
package/src/client/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DynamicWalletClient, type EcdsaKeygenResult, type EcdsaPublicKey, type Ed25519KeygenResult, type ThresholdSignatureScheme, type TraceContext, type RequestWithElevatedAccessToken, type BaseSignParams } from '@dynamic-labs-wallet/browser';
|
|
2
|
-
import { type Chain, type PublicClient, type SignableMessage, type TransactionSerializable, type TypedData } from 'viem';
|
|
1
|
+
import { DynamicWalletClient, type EcdsaKeygenResult, type EcdsaPublicKey, type Ed25519KeygenResult, type ThresholdSignatureScheme, type TraceContext, type RequestWithElevatedAccessToken, type BaseSignParams, type SignAndBroadcastResponse, type ExportApprovalQuorumRequest } from '@dynamic-labs-wallet/browser';
|
|
2
|
+
import { type Address, type Chain, type Hex, type PublicClient, type SignableMessage, type TransactionSerializable, type TypedData } from 'viem';
|
|
3
3
|
export declare class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
4
4
|
readonly chainName = "EVM";
|
|
5
5
|
createViemPublicClient({ chain, rpcUrl }: {
|
|
@@ -45,6 +45,46 @@ export declare class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
45
45
|
senderAddress: string;
|
|
46
46
|
transaction: TransactionSerializable;
|
|
47
47
|
} & BaseSignParams): Promise<string>;
|
|
48
|
+
/**
|
|
49
|
+
* Signs the transaction at each fee for Dynamic to broadcast: the cheapest is sent first and the next replaces it if it stalls. Each fee is its own signing ceremony.
|
|
50
|
+
*
|
|
51
|
+
* @param params.senderAddress - The wallet's address.
|
|
52
|
+
* @param params.transaction - The transaction without a fee: chain id, recipient, nonce, gas limit, and optionally value and data.
|
|
53
|
+
* @param params.fees - One to three prices for the same transaction, cheapest first, all in one style (`gasPrice`, or `maxFeePerGas` with `maxPriorityFeePerGas`).
|
|
54
|
+
* @param params.requestedCertainty - How sure to be before calling it confirmed: `fast`, `safe` or `final`, or `chain:` plus a chain-specific value. Defaults to `safe`.
|
|
55
|
+
* @param params.externalReference - Your own label, returned on every event. Not unique.
|
|
56
|
+
* @param params.idempotencyKey - Makes a retry safe: the same key replays the stored answer instead of sending twice. A new one is made when omitted.
|
|
57
|
+
* @param params.password - The wallet's backup password, if it has one.
|
|
58
|
+
* @param params.signedSessionId - The signed-in session, used to unlock the wallet's key share.
|
|
59
|
+
* @param params.mfaToken - Proof of the user's multi-factor check, when the wallet needs one.
|
|
60
|
+
* @param params.elevatedAccessToken - Proof of a recent re-login, when the wallet needs one.
|
|
61
|
+
* @param params.approvalQuorum - Approvers' consent for a governed wallet, sent on the retry after `intent_required`.
|
|
62
|
+
* @param params.onError - Called with the failure's message, never the raw error.
|
|
63
|
+
* @param params.traceContext - Ties this call's logs to the server's, across retries. Created when omitted.
|
|
64
|
+
* @returns The transaction record.
|
|
65
|
+
* @throws Error when `fees` has no entry or more than three.
|
|
66
|
+
*/
|
|
67
|
+
signAndBroadcastTransaction({ senderAddress, transaction, fees, password, signedSessionId, mfaToken, elevatedAccessToken, approvalQuorum, requestedCertainty, externalReference, idempotencyKey, onError, traceContext, }: {
|
|
68
|
+
senderAddress: string;
|
|
69
|
+
transaction: {
|
|
70
|
+
chainId: number;
|
|
71
|
+
to: Address;
|
|
72
|
+
nonce: number;
|
|
73
|
+
gas: bigint;
|
|
74
|
+
value?: bigint;
|
|
75
|
+
data?: Hex;
|
|
76
|
+
};
|
|
77
|
+
/** Cheapest first, all in one style. */
|
|
78
|
+
fees: Array<{
|
|
79
|
+
gasPrice: bigint;
|
|
80
|
+
} | {
|
|
81
|
+
maxFeePerGas: bigint;
|
|
82
|
+
maxPriorityFeePerGas: bigint;
|
|
83
|
+
}>;
|
|
84
|
+
requestedCertainty?: string;
|
|
85
|
+
externalReference?: string;
|
|
86
|
+
idempotencyKey?: string;
|
|
87
|
+
} & Pick<BaseSignParams, 'password' | 'signedSessionId' | 'mfaToken' | 'elevatedAccessToken' | 'approvalQuorum' | 'onError' | 'traceContext'>): Promise<SignAndBroadcastResponse>;
|
|
48
88
|
signTypedData({ accountAddress, typedData, password, signedSessionId, mfaToken, elevatedAccessToken, approvalQuorum, onError, traceContext, }: {
|
|
49
89
|
accountAddress: string;
|
|
50
90
|
typedData: TypedData;
|
|
@@ -55,11 +95,15 @@ export declare class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
55
95
|
accountAddress: `0x${string}`;
|
|
56
96
|
publicKeyHex: string;
|
|
57
97
|
};
|
|
58
|
-
exportPrivateKey({ accountAddress, password, signedSessionId, mfaToken, elevatedAccessToken, traceContext, }: RequestWithElevatedAccessToken<{
|
|
98
|
+
exportPrivateKey({ accountAddress, password, signedSessionId, mfaToken, elevatedAccessToken, approvalQuorum, proposalId, traceContext, }: RequestWithElevatedAccessToken<{
|
|
59
99
|
accountAddress: string;
|
|
60
100
|
password?: string;
|
|
61
101
|
signedSessionId: string;
|
|
62
102
|
mfaToken?: string;
|
|
103
|
+
/** The initiator's signed export Intent, from `prepareExportIntent`. */
|
|
104
|
+
approvalQuorum?: ExportApprovalQuorumRequest;
|
|
105
|
+
/** The approved export proposal being redeemed, from the consent error the export call raised. */
|
|
106
|
+
proposalId?: string;
|
|
63
107
|
traceContext?: TraceContext;
|
|
64
108
|
}>): Promise<string | undefined>;
|
|
65
109
|
offlineExportPrivateKey({ keyShares, derivationPath, }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EAYnB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAEnB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,8BAA8B,EACnC,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
|