@dynamic-labs/embedded-wallet-solana 4.57.1 → 4.58.0

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/CHANGELOG.md CHANGED
@@ -1,4 +1,20 @@
1
1
 
2
+ ## [4.58.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.57.2...v4.58.0) (2026-01-28)
3
+
4
+
5
+ ### Features
6
+
7
+ * add password setup flow for WaaS wallets ([#10308](https://github.com/dynamic-labs/dynamic-auth/issues/10308)) ([aad892d](https://github.com/dynamic-labs/dynamic-auth/commit/aad892d0359df589753b141c1099a03c72b799d9))
8
+ * add useRefreshAuth ([#10280](https://github.com/dynamic-labs/dynamic-auth/issues/10280)) ([bff850a](https://github.com/dynamic-labs/dynamic-auth/commit/bff850afc4167d47d3a38c5e9845d35b754ea573))
9
+ * **waas:** add unlockWallet and getWalletRecoveryState methods ([#10286](https://github.com/dynamic-labs/dynamic-auth/issues/10286)) ([4c2f26b](https://github.com/dynamic-labs/dynamic-auth/commit/4c2f26b1cd6483406288513d73be66554cd3c66a))
10
+
11
+ ### Bug Fixes
12
+
13
+ * ensure refresh user not update the jwt ([#10278](https://github.com/dynamic-labs/dynamic-auth/issues/10278)) ([c8cdbe6](https://github.com/dynamic-labs/dynamic-auth/commit/c8cdbe6e10636b39985f299a219fa362c25b4cd0))
14
+ * use isVersionedTransaction for reliable Solana transaction type detection ([#10319](https://github.com/dynamic-labs/dynamic-auth/issues/10319)) ([472aa15](https://github.com/dynamic-labs/dynamic-auth/commit/472aa15a94cfe541b22b96c5c63483e6a5971781))
15
+
16
+ ### [4.57.2](https://github.com/dynamic-labs/dynamic-auth/compare/v4.57.1...v4.57.2) (2026-01-23)
17
+
2
18
  ### [4.57.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.57.0...v4.57.1) (2026-01-22)
3
19
 
4
20
 
package/package.cjs CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.57.1";
6
+ var version = "4.58.0";
7
7
 
8
8
  exports.version = version;
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "4.57.1";
2
+ var version = "4.58.0";
3
3
 
4
4
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/embedded-wallet-solana",
3
- "version": "4.57.1",
3
+ "version": "4.58.0",
4
4
  "description": "A React SDK for implementing wallet web3 authentication and authorization to your website.",
5
5
  "author": "Dynamic Labs, Inc.",
6
6
  "license": "MIT",
@@ -18,21 +18,21 @@
18
18
  },
19
19
  "homepage": "https://www.dynamic.xyz/",
20
20
  "dependencies": {
21
- "@dynamic-labs/utils": "4.57.1",
22
- "@dynamic-labs/types": "4.57.1",
21
+ "@dynamic-labs/utils": "4.58.0",
22
+ "@dynamic-labs/types": "4.58.0",
23
23
  "@dynamic-labs/sdk-api-core": "0.0.860",
24
24
  "@dynamic-labs-sdk/client": "0.4.0",
25
25
  "@solana/web3.js": "1.98.1",
26
26
  "@turnkey/iframe-stamper": "2.5.0",
27
27
  "@turnkey/solana": "1.0.42",
28
28
  "@turnkey/webauthn-stamper": "0.5.1",
29
- "@dynamic-labs/assert-package-version": "4.57.1",
30
- "@dynamic-labs/embedded-wallet": "4.57.1",
31
- "@dynamic-labs/rpc-providers": "4.57.1",
32
- "@dynamic-labs/solana-core": "4.57.1",
33
- "@dynamic-labs/wallet-book": "4.57.1",
34
- "@dynamic-labs/wallet-connector-core": "4.57.1",
35
- "@dynamic-labs/webauthn": "4.57.1",
29
+ "@dynamic-labs/assert-package-version": "4.58.0",
30
+ "@dynamic-labs/embedded-wallet": "4.58.0",
31
+ "@dynamic-labs/rpc-providers": "4.58.0",
32
+ "@dynamic-labs/solana-core": "4.58.0",
33
+ "@dynamic-labs/wallet-book": "4.58.0",
34
+ "@dynamic-labs/wallet-connector-core": "4.58.0",
35
+ "@dynamic-labs/webauthn": "4.58.0",
36
36
  "viem": "2.29.0"
37
37
  },
38
38
  "peerDependencies": {}
package/src/index.cjs CHANGED
@@ -6,7 +6,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
6
6
  var assertPackageVersion = require('@dynamic-labs/assert-package-version');
7
7
  var _package = require('../package.cjs');
8
8
  var TurnkeySolanaWalletConnectors = require('./TurnkeySolanaWalletConnectors.cjs');
9
+ var api = require('./lib/utils/api/api.cjs');
9
10
 
10
11
  assertPackageVersion.assertPackageVersion('@dynamic-labs/embedded-wallet-solana', _package.version);
11
12
 
12
13
  exports.TurnkeySolanaWalletConnectors = TurnkeySolanaWalletConnectors.TurnkeySolanaWalletConnectors;
14
+ exports.sponsorSolanaTransaction = api.sponsorSolanaTransaction;
package/src/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './TurnkeySolanaWalletConnectors';
2
2
  export { type IEmbeddedWalletSolanaSigner } from './lib/TurnkeySolanaWalletConnector/TurnkeySolanaSigner';
3
+ export { sponsorSolanaTransaction } from './lib/utils/api/api';
package/src/index.js CHANGED
@@ -2,5 +2,6 @@
2
2
  import { assertPackageVersion } from '@dynamic-labs/assert-package-version';
3
3
  import { version } from '../package.js';
4
4
  export { TurnkeySolanaWalletConnectors } from './TurnkeySolanaWalletConnectors.js';
5
+ export { sponsorSolanaTransaction } from './lib/utils/api/api.js';
5
6
 
6
7
  assertPackageVersion('@dynamic-labs/embedded-wallet-solana', version);
@@ -1,6 +1,6 @@
1
1
  'use client'
2
2
  import { __awaiter, __rest } from '../../../_virtual/_tslib.js';
3
- import { LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js';
3
+ import { PublicKey, LAMPORTS_PER_SOL } from '@solana/web3.js';
4
4
  import { IframeStamper } from '@turnkey/iframe-stamper';
5
5
  import { TurnkeySigner } from '@turnkey/solana';
6
6
  import { WebauthnStamper } from '@turnkey/webauthn-stamper';
@@ -9,15 +9,15 @@ var core = require('@dynamic-labs-sdk/client/core');
9
9
 
10
10
  const serializeTransaction = (transaction) => {
11
11
  if (transaction instanceof web3_js.VersionedTransaction) {
12
- return Buffer.from(transaction.serialize()).toString('base64');
12
+ return Buffer.from(new Uint8Array(transaction.serialize())).toString('base64');
13
13
  }
14
14
  else {
15
- return Buffer.from(transaction.serialize({ verifySignatures: false })).toString('base64');
15
+ return Buffer.from(new Uint8Array(transaction.serialize({ verifySignatures: false }))).toString('base64');
16
16
  }
17
17
  };
18
18
  const deserializeTransaction = (serializedTransaction) => {
19
19
  const transactionBuffer = Buffer.from(serializedTransaction, 'base64');
20
- return web3_js.VersionedTransaction.deserialize(transactionBuffer);
20
+ return web3_js.VersionedTransaction.deserialize(new Uint8Array(transactionBuffer));
21
21
  };
22
22
  const optimizeSolanaTransaction = (environmentId, transaction, address) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
23
23
  const serializedTransaction = serializeTransaction(transaction);
@@ -32,7 +32,43 @@ const optimizeSolanaTransaction = (environmentId, transaction, address) => _tsli
32
32
  const optimizedTransaction = deserializeTransaction(response.transaction);
33
33
  return optimizedTransaction;
34
34
  });
35
+ /**
36
+ * Sponsors a Solana transaction using the Grid API via our backend.
37
+ * This covers network fees so users don't need SOL for gas.
38
+ *
39
+ * Uses direct fetch to avoid SDK API client dependency version issues.
40
+ */
41
+ const sponsorSolanaTransaction = (environmentId, transaction) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
42
+ const serializedTransaction = serializeTransaction(transaction);
43
+ const client = core.getDefaultClient();
44
+ const core$1 = core.getCore(client);
45
+ const { legacyToken } = core$1.state.get();
46
+ const url = `${core$1.apiBaseUrl}/sdk/${environmentId}/solana/sponsorTransaction`;
47
+ if (!legacyToken) {
48
+ throw new Error('No auth token available for sponsoring transaction');
49
+ }
50
+ const response = yield fetch(url, {
51
+ body: JSON.stringify({ transaction: serializedTransaction }),
52
+ credentials: 'include',
53
+ headers: {
54
+ Authorization: `Bearer ${legacyToken}`,
55
+ 'Content-Type': 'application/json',
56
+ },
57
+ method: 'POST',
58
+ });
59
+ if (!response.ok) {
60
+ const errorBody = yield response.json().catch(() => ({}));
61
+ throw new Error(errorBody.error || `Failed to sponsor transaction: ${response.status}`);
62
+ }
63
+ const data = yield response.json();
64
+ if (!data.transaction) {
65
+ throw new Error('Invalid API response: missing transaction field');
66
+ }
67
+ const sponsoredTransaction = deserializeTransaction(data.transaction);
68
+ return sponsoredTransaction;
69
+ });
35
70
 
36
71
  exports.deserializeTransaction = deserializeTransaction;
37
72
  exports.optimizeSolanaTransaction = optimizeSolanaTransaction;
38
73
  exports.serializeTransaction = serializeTransaction;
74
+ exports.sponsorSolanaTransaction = sponsorSolanaTransaction;
@@ -2,3 +2,10 @@ import { Transaction, VersionedTransaction } from '@solana/web3.js';
2
2
  export declare const serializeTransaction: (transaction: Transaction | VersionedTransaction) => string;
3
3
  export declare const deserializeTransaction: (serializedTransaction: string) => VersionedTransaction;
4
4
  export declare const optimizeSolanaTransaction: (environmentId: string, transaction: Transaction | VersionedTransaction, address: string) => Promise<VersionedTransaction>;
5
+ /**
6
+ * Sponsors a Solana transaction using the Grid API via our backend.
7
+ * This covers network fees so users don't need SOL for gas.
8
+ *
9
+ * Uses direct fetch to avoid SDK API client dependency version issues.
10
+ */
11
+ export declare const sponsorSolanaTransaction: (environmentId: string, transaction: Transaction | VersionedTransaction) => Promise<VersionedTransaction>;
@@ -1,19 +1,19 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../_virtual/_tslib.js';
3
3
  import { VersionedTransaction } from '@solana/web3.js';
4
- import { createApiClient, getDefaultClient } from '@dynamic-labs-sdk/client/core';
4
+ import { getDefaultClient, getCore, createApiClient } from '@dynamic-labs-sdk/client/core';
5
5
 
6
6
  const serializeTransaction = (transaction) => {
7
7
  if (transaction instanceof VersionedTransaction) {
8
- return Buffer.from(transaction.serialize()).toString('base64');
8
+ return Buffer.from(new Uint8Array(transaction.serialize())).toString('base64');
9
9
  }
10
10
  else {
11
- return Buffer.from(transaction.serialize({ verifySignatures: false })).toString('base64');
11
+ return Buffer.from(new Uint8Array(transaction.serialize({ verifySignatures: false }))).toString('base64');
12
12
  }
13
13
  };
14
14
  const deserializeTransaction = (serializedTransaction) => {
15
15
  const transactionBuffer = Buffer.from(serializedTransaction, 'base64');
16
- return VersionedTransaction.deserialize(transactionBuffer);
16
+ return VersionedTransaction.deserialize(new Uint8Array(transactionBuffer));
17
17
  };
18
18
  const optimizeSolanaTransaction = (environmentId, transaction, address) => __awaiter(void 0, void 0, void 0, function* () {
19
19
  const serializedTransaction = serializeTransaction(transaction);
@@ -28,5 +28,40 @@ const optimizeSolanaTransaction = (environmentId, transaction, address) => __awa
28
28
  const optimizedTransaction = deserializeTransaction(response.transaction);
29
29
  return optimizedTransaction;
30
30
  });
31
+ /**
32
+ * Sponsors a Solana transaction using the Grid API via our backend.
33
+ * This covers network fees so users don't need SOL for gas.
34
+ *
35
+ * Uses direct fetch to avoid SDK API client dependency version issues.
36
+ */
37
+ const sponsorSolanaTransaction = (environmentId, transaction) => __awaiter(void 0, void 0, void 0, function* () {
38
+ const serializedTransaction = serializeTransaction(transaction);
39
+ const client = getDefaultClient();
40
+ const core = getCore(client);
41
+ const { legacyToken } = core.state.get();
42
+ const url = `${core.apiBaseUrl}/sdk/${environmentId}/solana/sponsorTransaction`;
43
+ if (!legacyToken) {
44
+ throw new Error('No auth token available for sponsoring transaction');
45
+ }
46
+ const response = yield fetch(url, {
47
+ body: JSON.stringify({ transaction: serializedTransaction }),
48
+ credentials: 'include',
49
+ headers: {
50
+ Authorization: `Bearer ${legacyToken}`,
51
+ 'Content-Type': 'application/json',
52
+ },
53
+ method: 'POST',
54
+ });
55
+ if (!response.ok) {
56
+ const errorBody = yield response.json().catch(() => ({}));
57
+ throw new Error(errorBody.error || `Failed to sponsor transaction: ${response.status}`);
58
+ }
59
+ const data = yield response.json();
60
+ if (!data.transaction) {
61
+ throw new Error('Invalid API response: missing transaction field');
62
+ }
63
+ const sponsoredTransaction = deserializeTransaction(data.transaction);
64
+ return sponsoredTransaction;
65
+ });
31
66
 
32
- export { deserializeTransaction, optimizeSolanaTransaction, serializeTransaction };
67
+ export { deserializeTransaction, optimizeSolanaTransaction, serializeTransaction, sponsorSolanaTransaction };