@dynamic-labs-wallet/svm 1.1.34 → 1.1.35

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 CHANGED
@@ -168,6 +168,59 @@ class DynamicSvmWalletClient extends browser.DynamicWalletClient {
168
168
  throw error;
169
169
  }
170
170
  }
171
+ /**
172
+ * Signs a Solana transaction for Dynamic to broadcast.
173
+ *
174
+ * @param params.senderAddress - The wallet's address.
175
+ * @param params.transaction - The transaction message as hex, the same bytes `signTransaction` signs.
176
+ * @param params.chainId - The Solana network id (e.g. `101`). Dynamic checks it against the wallet's network.
177
+ * @param params.skipPreflight - Skip the network's pre-send dry run. Faster, but a doomed transaction still costs a fee.
178
+ * @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`.
179
+ * @param params.externalReference - Your own label, returned on every event. Not unique.
180
+ * @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.
181
+ * @param params.password - The wallet's backup password, if it has one.
182
+ * @param params.signedSessionId - The signed-in session, used to unlock the wallet's key share.
183
+ * @param params.mfaToken - Proof of the user's multi-factor check, when the wallet needs one.
184
+ * @param params.elevatedAccessToken - Proof of a recent re-login, when the wallet needs one.
185
+ * @param params.approvalQuorum - Approvers' consent for a governed wallet, sent on the retry after `intent_required`.
186
+ * @param params.onError - Called with the failure's message, never the raw error.
187
+ * @param params.traceContext - Ties this call's logs to the server's, across retries. Created when omitted.
188
+ * @returns The transaction record.
189
+ * @throws Error when `chainId` is missing.
190
+ */ async signAndBroadcastTransaction({ senderAddress, transaction, chainId, skipPreflight, password = undefined, signedSessionId, mfaToken, elevatedAccessToken, approvalQuorum, requestedCertainty, externalReference, idempotencyKey, onError, traceContext }) {
191
+ if (!chainId) {
192
+ throw new Error('Sign and broadcast on Solana needs the network id as `chainId`');
193
+ }
194
+ const base58SerializedTransaction = this.prepareTransactionForSigning(transaction);
195
+ return await this.signAndBroadcast({
196
+ accountAddress: senderAddress,
197
+ chainName: this.chainName,
198
+ contexts: [
199
+ {
200
+ svmTransaction: this.buildSvmTransactionContext({
201
+ chainId,
202
+ base58SerializedTransaction
203
+ })
204
+ }
205
+ ],
206
+ broadcastOptions: skipPreflight === undefined ? undefined : {
207
+ skipPreflight
208
+ },
209
+ messages: [
210
+ transaction
211
+ ],
212
+ password,
213
+ signedSessionId,
214
+ mfaToken,
215
+ elevatedAccessToken,
216
+ approvalQuorum,
217
+ requestedCertainty,
218
+ externalReference,
219
+ idempotencyKey,
220
+ onError,
221
+ traceContext
222
+ });
223
+ }
171
224
  prepareTransactionForSigning(transaction) {
172
225
  const transactionBytes = new Uint8Array(Buffer.from(transaction, 'hex'));
173
226
  const deserializedTransaction = web3_js.VersionedMessage.deserialize(transactionBytes);
@@ -175,6 +228,20 @@ class DynamicSvmWalletClient extends browser.DynamicWalletClient {
175
228
  const serializedTransaction = versionedTransaction.serialize();
176
229
  return bs58.encode(serializedTransaction);
177
230
  }
231
+ /**
232
+ * The Solana part of a signing context: which network, how it is sent, and the transaction in base58. Shared by sign and sign-and-broadcast so both describe it the same way.
233
+ *
234
+ * @param params.chainId - The Solana network id.
235
+ * @param params.base58SerializedTransaction - The transaction, base58-encoded.
236
+ */ buildSvmTransactionContext({ chainId, base58SerializedTransaction }) {
237
+ return {
238
+ chainId,
239
+ method: 'signAndSendTransaction',
240
+ serializedTransactions: [
241
+ base58SerializedTransaction
242
+ ]
243
+ };
244
+ }
178
245
  buildSignParams({ transaction, senderAddress, password, signedSessionId, mfaToken, elevatedAccessToken, chainId, base58SerializedTransaction, context, approvalQuorum }) {
179
246
  const signParams = {
180
247
  message: transaction,
@@ -188,13 +255,10 @@ class DynamicSvmWalletClient extends browser.DynamicWalletClient {
188
255
  };
189
256
  if (chainId !== undefined) {
190
257
  signParams.context = _extends({}, context, {
191
- svmTransaction: {
258
+ svmTransaction: this.buildSvmTransactionContext({
192
259
  chainId,
193
- method: 'signAndSendTransaction',
194
- serializedTransactions: [
195
- base58SerializedTransaction
196
- ]
197
- }
260
+ base58SerializedTransaction
261
+ })
198
262
  });
199
263
  }
200
264
  return signParams;
package/index.esm.js CHANGED
@@ -166,6 +166,59 @@ class DynamicSvmWalletClient extends DynamicWalletClient {
166
166
  throw error;
167
167
  }
168
168
  }
169
+ /**
170
+ * Signs a Solana transaction for Dynamic to broadcast.
171
+ *
172
+ * @param params.senderAddress - The wallet's address.
173
+ * @param params.transaction - The transaction message as hex, the same bytes `signTransaction` signs.
174
+ * @param params.chainId - The Solana network id (e.g. `101`). Dynamic checks it against the wallet's network.
175
+ * @param params.skipPreflight - Skip the network's pre-send dry run. Faster, but a doomed transaction still costs a fee.
176
+ * @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`.
177
+ * @param params.externalReference - Your own label, returned on every event. Not unique.
178
+ * @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.
179
+ * @param params.password - The wallet's backup password, if it has one.
180
+ * @param params.signedSessionId - The signed-in session, used to unlock the wallet's key share.
181
+ * @param params.mfaToken - Proof of the user's multi-factor check, when the wallet needs one.
182
+ * @param params.elevatedAccessToken - Proof of a recent re-login, when the wallet needs one.
183
+ * @param params.approvalQuorum - Approvers' consent for a governed wallet, sent on the retry after `intent_required`.
184
+ * @param params.onError - Called with the failure's message, never the raw error.
185
+ * @param params.traceContext - Ties this call's logs to the server's, across retries. Created when omitted.
186
+ * @returns The transaction record.
187
+ * @throws Error when `chainId` is missing.
188
+ */ async signAndBroadcastTransaction({ senderAddress, transaction, chainId, skipPreflight, password = undefined, signedSessionId, mfaToken, elevatedAccessToken, approvalQuorum, requestedCertainty, externalReference, idempotencyKey, onError, traceContext }) {
189
+ if (!chainId) {
190
+ throw new Error('Sign and broadcast on Solana needs the network id as `chainId`');
191
+ }
192
+ const base58SerializedTransaction = this.prepareTransactionForSigning(transaction);
193
+ return await this.signAndBroadcast({
194
+ accountAddress: senderAddress,
195
+ chainName: this.chainName,
196
+ contexts: [
197
+ {
198
+ svmTransaction: this.buildSvmTransactionContext({
199
+ chainId,
200
+ base58SerializedTransaction
201
+ })
202
+ }
203
+ ],
204
+ broadcastOptions: skipPreflight === undefined ? undefined : {
205
+ skipPreflight
206
+ },
207
+ messages: [
208
+ transaction
209
+ ],
210
+ password,
211
+ signedSessionId,
212
+ mfaToken,
213
+ elevatedAccessToken,
214
+ approvalQuorum,
215
+ requestedCertainty,
216
+ externalReference,
217
+ idempotencyKey,
218
+ onError,
219
+ traceContext
220
+ });
221
+ }
169
222
  prepareTransactionForSigning(transaction) {
170
223
  const transactionBytes = new Uint8Array(Buffer.from(transaction, 'hex'));
171
224
  const deserializedTransaction = VersionedMessage.deserialize(transactionBytes);
@@ -173,6 +226,20 @@ class DynamicSvmWalletClient extends DynamicWalletClient {
173
226
  const serializedTransaction = versionedTransaction.serialize();
174
227
  return bs58.encode(serializedTransaction);
175
228
  }
229
+ /**
230
+ * The Solana part of a signing context: which network, how it is sent, and the transaction in base58. Shared by sign and sign-and-broadcast so both describe it the same way.
231
+ *
232
+ * @param params.chainId - The Solana network id.
233
+ * @param params.base58SerializedTransaction - The transaction, base58-encoded.
234
+ */ buildSvmTransactionContext({ chainId, base58SerializedTransaction }) {
235
+ return {
236
+ chainId,
237
+ method: 'signAndSendTransaction',
238
+ serializedTransactions: [
239
+ base58SerializedTransaction
240
+ ]
241
+ };
242
+ }
176
243
  buildSignParams({ transaction, senderAddress, password, signedSessionId, mfaToken, elevatedAccessToken, chainId, base58SerializedTransaction, context, approvalQuorum }) {
177
244
  const signParams = {
178
245
  message: transaction,
@@ -186,13 +253,10 @@ class DynamicSvmWalletClient extends DynamicWalletClient {
186
253
  };
187
254
  if (chainId !== undefined) {
188
255
  signParams.context = _extends({}, context, {
189
- svmTransaction: {
256
+ svmTransaction: this.buildSvmTransactionContext({
190
257
  chainId,
191
- method: 'signAndSendTransaction',
192
- serializedTransactions: [
193
- base58SerializedTransaction
194
- ]
195
- }
258
+ base58SerializedTransaction
259
+ })
196
260
  });
197
261
  }
198
262
  return signParams;
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@dynamic-labs-wallet/svm",
3
- "version": "1.1.34",
3
+ "version": "1.1.35",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "@dynamic-labs-wallet/browser": "1.1.34",
7
+ "@dynamic-labs-wallet/browser": "1.1.35",
8
8
  "@solana/web3.js": "^1.98.2",
9
9
  "bs58": "^6.0.0",
10
10
  "@dynamic-labs/sdk-api-core": "0.50.0"
@@ -1,4 +1,4 @@
1
- import { DynamicWalletClient, type Ed25519KeygenResult, type ThresholdSignatureScheme, type TraceContext, type RequestWithElevatedAccessToken, type BaseSignParams } from '@dynamic-labs-wallet/browser';
1
+ import { DynamicWalletClient, type Ed25519KeygenResult, type ThresholdSignatureScheme, type TraceContext, type RequestWithElevatedAccessToken, type BaseSignParams, type SignAndBroadcastResponse } from '@dynamic-labs-wallet/browser';
2
2
  export declare class DynamicSvmWalletClient extends DynamicWalletClient {
3
3
  readonly chainName = "SVM";
4
4
  accountAddress?: string;
@@ -37,7 +37,43 @@ export declare class DynamicSvmWalletClient extends DynamicWalletClient {
37
37
  transaction: string;
38
38
  chainId?: string;
39
39
  } & BaseSignParams): Promise<string>;
40
+ /**
41
+ * Signs a Solana transaction for Dynamic to broadcast.
42
+ *
43
+ * @param params.senderAddress - The wallet's address.
44
+ * @param params.transaction - The transaction message as hex, the same bytes `signTransaction` signs.
45
+ * @param params.chainId - The Solana network id (e.g. `101`). Dynamic checks it against the wallet's network.
46
+ * @param params.skipPreflight - Skip the network's pre-send dry run. Faster, but a doomed transaction still costs a fee.
47
+ * @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`.
48
+ * @param params.externalReference - Your own label, returned on every event. Not unique.
49
+ * @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.
50
+ * @param params.password - The wallet's backup password, if it has one.
51
+ * @param params.signedSessionId - The signed-in session, used to unlock the wallet's key share.
52
+ * @param params.mfaToken - Proof of the user's multi-factor check, when the wallet needs one.
53
+ * @param params.elevatedAccessToken - Proof of a recent re-login, when the wallet needs one.
54
+ * @param params.approvalQuorum - Approvers' consent for a governed wallet, sent on the retry after `intent_required`.
55
+ * @param params.onError - Called with the failure's message, never the raw error.
56
+ * @param params.traceContext - Ties this call's logs to the server's, across retries. Created when omitted.
57
+ * @returns The transaction record.
58
+ * @throws Error when `chainId` is missing.
59
+ */
60
+ signAndBroadcastTransaction({ senderAddress, transaction, chainId, skipPreflight, password, signedSessionId, mfaToken, elevatedAccessToken, approvalQuorum, requestedCertainty, externalReference, idempotencyKey, onError, traceContext, }: {
61
+ senderAddress: string;
62
+ transaction: string;
63
+ chainId: string;
64
+ skipPreflight?: boolean;
65
+ requestedCertainty?: string;
66
+ externalReference?: string;
67
+ idempotencyKey?: string;
68
+ } & Pick<BaseSignParams, 'password' | 'signedSessionId' | 'mfaToken' | 'elevatedAccessToken' | 'approvalQuorum' | 'onError' | 'traceContext'>): Promise<SignAndBroadcastResponse>;
40
69
  private prepareTransactionForSigning;
70
+ /**
71
+ * The Solana part of a signing context: which network, how it is sent, and the transaction in base58. Shared by sign and sign-and-broadcast so both describe it the same way.
72
+ *
73
+ * @param params.chainId - The Solana network id.
74
+ * @param params.base58SerializedTransaction - The transaction, base58-encoded.
75
+ */
76
+ private buildSvmTransactionContext;
41
77
  private buildSignParams;
42
78
  /**
43
79
  * Exports the private key for a given account address
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/svm/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/svm/client.ts"],"names":[],"mappings":"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"}