@dynamic-labs-sdk/solana 0.0.1-alpha.8 → 0.1.0-alpha.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.
Files changed (83) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/addSolanaWalletStandardExtension.cjs.js +141 -97
  3. package/addSolanaWalletStandardExtension.esm.js +142 -98
  4. package/addWaasSolanaExtension.cjs.js +176 -0
  5. package/addWaasSolanaExtension.esm.js +173 -0
  6. package/index.cjs.js +44 -11
  7. package/index.esm.js +44 -11
  8. package/isVersionedTransaction.cjs.js +63 -0
  9. package/isVersionedTransaction.esm.js +57 -0
  10. package/package.json +11 -4
  11. package/src/SolanaNetworkProvider.types.d.ts +8 -0
  12. package/src/SolanaNetworkProvider.types.d.ts.map +1 -0
  13. package/src/SolanaWalletAccount.types.d.ts +8 -0
  14. package/src/SolanaWalletAccount.types.d.ts.map +1 -0
  15. package/src/SolanaWalletProvider.types.d.ts +1 -1
  16. package/src/SolanaWalletProvider.types.d.ts.map +1 -1
  17. package/src/addSolanaExtension/addSolanaExtension.d.ts +7 -4
  18. package/src/addSolanaExtension/addSolanaExtension.d.ts.map +1 -1
  19. package/src/exports/index.d.ts +4 -1
  20. package/src/exports/index.d.ts.map +1 -1
  21. package/src/exports/waas.d.ts +2 -0
  22. package/src/exports/waas.d.ts.map +1 -0
  23. package/src/exports/walletStandard.d.ts.map +1 -1
  24. package/src/getSigner/getSigner.d.ts +14 -1
  25. package/src/getSigner/getSigner.d.ts.map +1 -1
  26. package/src/getSolanaConnection/getSolanaConnection.d.ts +29 -0
  27. package/src/getSolanaConnection/getSolanaConnection.d.ts.map +1 -0
  28. package/src/getSolanaConnection/index.d.ts +2 -0
  29. package/src/getSolanaConnection/index.d.ts.map +1 -0
  30. package/src/isSolanaNetworkProvider/index.d.ts +2 -0
  31. package/src/isSolanaNetworkProvider/index.d.ts.map +1 -0
  32. package/src/isSolanaNetworkProvider/isSolanaNetworkProvider.d.ts +10 -0
  33. package/src/isSolanaNetworkProvider/isSolanaNetworkProvider.d.ts.map +1 -0
  34. package/src/isSolanaWalletAccount/isSolanaWalletAccount.d.ts +8 -1
  35. package/src/isSolanaWalletAccount/isSolanaWalletAccount.d.ts.map +1 -1
  36. package/src/isSolanaWalletProvider/isSolanaWalletProvider.d.ts +1 -1
  37. package/src/isSolanaWalletProvider/isSolanaWalletProvider.d.ts.map +1 -1
  38. package/src/registerSolanaNetworkProviderBuilder/index.d.ts +2 -0
  39. package/src/registerSolanaNetworkProviderBuilder/index.d.ts.map +1 -0
  40. package/src/registerSolanaNetworkProviderBuilder/registerSolanaNetworkProviderBuilder.d.ts +3 -0
  41. package/src/registerSolanaNetworkProviderBuilder/registerSolanaNetworkProviderBuilder.d.ts.map +1 -0
  42. package/src/utils/createEmptyEventEmitter/createEmptyEventEmitter.d.ts +17 -0
  43. package/src/utils/createEmptyEventEmitter/createEmptyEventEmitter.d.ts.map +1 -0
  44. package/src/utils/createEmptyEventEmitter/index.d.ts +2 -0
  45. package/src/utils/createEmptyEventEmitter/index.d.ts.map +1 -0
  46. package/src/utils/createSolanaNetworkProvider/createSolanaNetworkProvider.d.ts +4 -0
  47. package/src/utils/createSolanaNetworkProvider/createSolanaNetworkProvider.d.ts.map +1 -0
  48. package/src/utils/createSolanaNetworkProvider/index.d.ts +2 -0
  49. package/src/utils/createSolanaNetworkProvider/index.d.ts.map +1 -0
  50. package/src/utils/fetchSolBalance/fetchSolBalance.d.ts +5 -0
  51. package/src/utils/fetchSolBalance/fetchSolBalance.d.ts.map +1 -0
  52. package/src/utils/fetchSolBalance/index.d.ts +2 -0
  53. package/src/utils/fetchSolBalance/index.d.ts.map +1 -0
  54. package/src/waas/WaasSolanaWalletProvider.types.d.ts +4 -0
  55. package/src/waas/WaasSolanaWalletProvider.types.d.ts.map +1 -0
  56. package/src/waas/addWaasSolanaExtension/addWaasSolanaExtension.d.ts +11 -0
  57. package/src/waas/addWaasSolanaExtension/addWaasSolanaExtension.d.ts.map +1 -0
  58. package/src/waas/addWaasSolanaExtension/index.d.ts +2 -0
  59. package/src/waas/addWaasSolanaExtension/index.d.ts.map +1 -0
  60. package/src/waas/utils/createSolanaSignerFromSolanaWaasProvider/createSolanaSignerFromSolanaWaasProvider.d.ts +11 -0
  61. package/src/waas/utils/createSolanaSignerFromSolanaWaasProvider/createSolanaSignerFromSolanaWaasProvider.d.ts.map +1 -0
  62. package/src/waas/utils/createSolanaSignerFromSolanaWaasProvider/index.d.ts +2 -0
  63. package/src/waas/utils/createSolanaSignerFromSolanaWaasProvider/index.d.ts.map +1 -0
  64. package/src/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.d.ts +4 -0
  65. package/src/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.d.ts.map +1 -0
  66. package/src/waas/utils/createWalletProviderForWaasSolana/index.d.ts +2 -0
  67. package/src/waas/utils/createWalletProviderForWaasSolana/index.d.ts.map +1 -0
  68. package/src/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.d.ts +9 -2
  69. package/src/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.d.ts.map +1 -1
  70. package/src/walletStandard/utils/createSolanaSignerFromSolanaStandardWallet/createSolanaSignerFromSolanaStandardWallet.d.ts +7 -1
  71. package/src/walletStandard/utils/createSolanaSignerFromSolanaStandardWallet/createSolanaSignerFromSolanaStandardWallet.d.ts.map +1 -1
  72. package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.d.ts +5 -3
  73. package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.d.ts.map +1 -1
  74. package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/getActiveNetworkId.d.ts +5 -0
  75. package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/getActiveNetworkId.d.ts.map +1 -0
  76. package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/index.d.ts +2 -0
  77. package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/index.d.ts.map +1 -0
  78. package/waas.cjs.d.ts +1 -0
  79. package/waas.cjs.js +15 -0
  80. package/waas.esm.d.ts +1 -0
  81. package/waas.esm.js +11 -0
  82. package/walletStandard.cjs.js +5 -2
  83. package/walletStandard.esm.js +6 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,160 @@
1
+ ## 0.1.0-alpha.0 (2025-09-02)
2
+
3
+ ### 🚀 Features
4
+
5
+ - add connectAndVerifyWithWalletProvider function ([#385](https://github.com/dynamic-labs/dynamic-sdk/pull/385))
6
+ - add event listening for wallet providers ([#389](https://github.com/dynamic-labs/dynamic-sdk/pull/389))
7
+
8
+ ### 🩹 Fixes
9
+
10
+ - sending transaction with solana ([#381](https://github.com/dynamic-labs/dynamic-sdk/pull/381))
11
+
12
+ ### 🔧 Refactors
13
+
14
+ - waas sign message defined in waas provider ([#377](https://github.com/dynamic-labs/dynamic-sdk/pull/377))
15
+ - ban chain enum ([#386](https://github.com/dynamic-labs/dynamic-sdk/pull/386))
16
+ - ban misplaced waas exports ([#387](https://github.com/dynamic-labs/dynamic-sdk/pull/387))
17
+
18
+ ## 0.0.1-alpha.27 (2025-08-29)
19
+
20
+ ### 🚀 Features
21
+
22
+ - allow switching network ([#323](https://github.com/dynamic-labs/dynamic-sdk/pull/323))
23
+ - introduce getBalance and getBalanceForAddress ([#335](https://github.com/dynamic-labs/dynamic-sdk/pull/335))
24
+ - add delegateWaasKeyShares function ([#353](https://github.com/dynamic-labs/dynamic-sdk/pull/353))
25
+ - add updateWaasPassword function ([#354](https://github.com/dynamic-labs/dynamic-sdk/pull/354))
26
+ - add exportWaasClientKeyshares function ([#355](https://github.com/dynamic-labs/dynamic-sdk/pull/355))
27
+ - add importWaasPrivateKey function ([#356](https://github.com/dynamic-labs/dynamic-sdk/pull/356))
28
+ - add refreshWaasWalletAccountShares function ([#357](https://github.com/dynamic-labs/dynamic-sdk/pull/357))
29
+ - add backupWaasKeySharesToGoogleDrive function ([#358](https://github.com/dynamic-labs/dynamic-sdk/pull/358))
30
+ - add exportWaasPrivateKey function ([#359](https://github.com/dynamic-labs/dynamic-sdk/pull/359))
31
+ - add isWaasWalletAccount function ([#365](https://github.com/dynamic-labs/dynamic-sdk/pull/365))
32
+ - add createWalletClientForWalletAccount function ([#367](https://github.com/dynamic-labs/dynamic-sdk/pull/367))
33
+
34
+ ### 🔧 Refactors
35
+
36
+ - assert signed session id in getSignedSessionId ([#361](https://github.com/dynamic-labs/dynamic-sdk/pull/361))
37
+ - add consumeMfaTokenIfRequiredForAction function ([#363](https://github.com/dynamic-labs/dynamic-sdk/pull/363))
38
+
39
+ ## 0.0.1-alpha.26 (2025-08-27)
40
+
41
+ ### 🩹 Fixes
42
+
43
+ - remove version pin on sdk-api-core ([#351](https://github.com/dynamic-labs/dynamic-sdk/pull/351))
44
+
45
+ ## 0.0.1-alpha.25 (2025-08-27)
46
+
47
+ ### 🚀 Features
48
+
49
+ - add ethereum netowrk providers ([#267](https://github.com/dynamic-labs/dynamic-sdk/pull/267))
50
+ - add solana network provider ([#268](https://github.com/dynamic-labs/dynamic-sdk/pull/268))
51
+ - add proveWalletAccountOwnership function ([#295](https://github.com/dynamic-labs/dynamic-sdk/pull/295))
52
+ - format evm wallet addresses to conform to eip55 ([#300](https://github.com/dynamic-labs/dynamic-sdk/pull/300))
53
+ - add viem public client ([#272](https://github.com/dynamic-labs/dynamic-sdk/pull/272))
54
+ - add getSolanaConnection ([#275](https://github.com/dynamic-labs/dynamic-sdk/pull/275))
55
+ - add dynamic waas evm extension ([#299](https://github.com/dynamic-labs/dynamic-sdk/pull/299))
56
+ - add refreshUser function ([#332](https://github.com/dynamic-labs/dynamic-sdk/pull/332))
57
+ - add get network method ([#321](https://github.com/dynamic-labs/dynamic-sdk/pull/321))
58
+
59
+ ### 🩹 Fixes
60
+
61
+ - update default API base URL ([#296](https://github.com/dynamic-labs/dynamic-sdk/pull/296))
62
+
63
+ ### 🔧 Refactors
64
+
65
+ - reorganize exports index file ([#303](https://github.com/dynamic-labs/dynamic-sdk/pull/303))
66
+ - rename events folder to clientEvents ([#305](https://github.com/dynamic-labs/dynamic-sdk/pull/305))
67
+ - dry network provider type ([#308](https://github.com/dynamic-labs/dynamic-sdk/pull/308))
68
+ - rename types files to include the features name ([#319](https://github.com/dynamic-labs/dynamic-sdk/pull/319))
69
+ - use evm instead of other terms ([#306](https://github.com/dynamic-labs/dynamic-sdk/pull/306))
70
+ - rename net configuration to net data ([#322](https://github.com/dynamic-labs/dynamic-sdk/pull/322))
71
+ - move waas-utils to client package ([#342](https://github.com/dynamic-labs/dynamic-sdk/pull/342))
72
+
73
+ ## 0.0.1-alpha.24 (2025-08-14)
74
+
75
+ This was a version bump only, there were no code changes.
76
+
77
+ ## 0.0.1-alpha.23 (2025-08-14)
78
+
79
+ This was a version bump only, there were no code changes.
80
+
81
+ ## 0.0.1-alpha.22 (2025-08-13)
82
+
83
+ This was a version bump only, there were no code changes.
84
+
85
+ ## 0.0.1-alpha.21 (2025-08-12)
86
+
87
+ ### 🚀 Features
88
+
89
+ - add signInWithExternalJwt function ([#263](https://github.com/dynamic-labs/dynamic-sdk/pull/263))
90
+
91
+ ### 🩹 Fixes
92
+
93
+ - bind fetch to window ([#265](https://github.com/dynamic-labs/dynamic-sdk/pull/265))
94
+
95
+ ## 0.0.1-alpha.20 (2025-08-06)
96
+
97
+ ### 🚀 Features
98
+
99
+ - raise an error if different dynamic packages are on different versions ([#253](https://github.com/dynamic-labs/dynamic-sdk/pull/253))
100
+
101
+ ## 0.0.1-alpha.19 (2025-07-23)
102
+
103
+ This was a version bump only, there were no code changes.
104
+
105
+ ## 0.0.1-alpha.18 (2025-07-22)
106
+
107
+ This was a version bump only, there were no code changes.
108
+
109
+ ## 0.0.1-alpha.17 (2025-07-22)
110
+
111
+ This was a version bump only, there were no code changes.
112
+
113
+ ## 0.0.1-alpha.16 (2025-07-14)
114
+
115
+ ### 🚀 Features
116
+
117
+ - add new getMultichainBalances api method ([#219](https://github.com/dynamic-labs/dynamic-sdk/pull/219))
118
+ - adds authenticated event ([#222](https://github.com/dynamic-labs/dynamic-sdk/pull/222))
119
+
120
+ ## 0.0.1-alpha.15 (2025-07-14)
121
+
122
+ ### 🚀 Features
123
+
124
+ - **SIN-7:** Add Signin with Passkey ([#201](https://github.com/dynamic-labs/dynamic-sdk/pull/201))
125
+
126
+ ## 0.0.1-alpha.14 (2025-07-11)
127
+
128
+ ### 🩹 Fixes
129
+
130
+ - import zod mini using namespace ([#214](https://github.com/dynamic-labs/dynamic-sdk/pull/214))
131
+
132
+ ## 0.0.1-alpha.13 (2025-07-09)
133
+
134
+ ### 🩹 Fixes
135
+
136
+ - convert api headers to get api headers ([#211](https://github.com/dynamic-labs/dynamic-sdk/pull/211))
137
+
138
+ ## 0.0.1-alpha.12 (2025-07-09)
139
+
140
+ ### 🩹 Fixes
141
+
142
+ - allow the api call to include cookie credentials ([#209](https://github.com/dynamic-labs/dynamic-sdk/pull/209))
143
+
144
+ ## 0.0.1-alpha.11 (2025-07-08)
145
+
146
+ This was a version bump only, there were no code changes.
147
+
148
+ ## 0.0.1-alpha.10 (2025-07-08)
149
+
150
+ This was a version bump only, there were no code changes.
151
+
152
+ ## 0.0.1-alpha.9 (2025-07-08)
153
+
154
+ ### 🩹 Fixes
155
+
156
+ - throw when attempting to set undefined prop in storage ([#200](https://github.com/dynamic-labs/dynamic-sdk/pull/200))
157
+
1
158
  ## 0.0.1-alpha.8 (2025-07-03)
2
159
 
3
160
  This was a version bump only, there were no code changes.
@@ -2,49 +2,82 @@
2
2
 
3
3
  var core = require('@dynamic-labs-sdk/client/core');
4
4
  var app = require('@wallet-standard/app');
5
+ var isVersionedTransaction = require('./isVersionedTransaction.cjs.js');
6
+ var web3_js = require('@solana/web3.js');
5
7
  var client = require('@dynamic-labs-sdk/client');
6
8
  var sdkApiCore = require('@dynamic-labs/sdk-api-core');
7
- var web3_js = require('@solana/web3.js');
9
+ var bs58 = require('bs58');
8
10
 
9
- const isVersionedTransaction = (transaction)=>!('instructions' in transaction);
11
+ const fetchSolBalance = async ({ address, rpcUrl })=>{
12
+ // Establish a connection to the Solana network using the provided RPC URL.
13
+ const connection = new web3_js.Connection(rpcUrl);
14
+ // Convert the string address into a PublicKey object.
15
+ const publicKey = new web3_js.PublicKey(address);
16
+ // Fetch the balance of the public key. The balance is in lamports.
17
+ const balanceInLamports = await connection.getBalance(publicKey);
18
+ // The getBalance method returns the balance in lamports.
19
+ // 1 SOL = 1,000,000,000 lamports.
20
+ const balanceInSol = balanceInLamports / 1000000000;
21
+ // Return the balance in SOL as a string
22
+ return balanceInSol.toString();
23
+ };
24
+
25
+ const createSolanaNetworkProvider = (networkData)=>isVersionedTransaction._extends({}, core.createBaseNetworkProvider('SOL', networkData), {
26
+ cluster: networkData.cluster,
27
+ getBalance: async ({ address })=>({
28
+ balance: await fetchSolBalance({
29
+ address,
30
+ rpcUrl: networkData.rpcUrls.http[0]
31
+ })
32
+ })
33
+ });
34
+
35
+ const registerSolanaNetworkProviderBuilder = (client)=>{
36
+ const networkProviderBuilderRegistry = core.getNetworkProviderBuilderRegistry(client);
37
+ /**
38
+ * If the Solana network provider builder is already registered, return.
39
+ */ if (networkProviderBuilderRegistry.get().get('SOL')) {
40
+ return;
41
+ }
42
+ networkProviderBuilderRegistry.register({
43
+ builder: createSolanaNetworkProvider,
44
+ chain: 'SOL'
45
+ });
46
+ };
10
47
 
11
48
  const getFeaturesForSolanaStandardWallet = (wallet)=>{
12
49
  return wallet.features;
13
50
  };
14
51
 
15
- const createSolanaSignerFromSolanaStandardWallet = (wallet)=>{
16
- const features = getFeaturesForSolanaStandardWallet(wallet);
52
+ const createSolanaSignerFromSolanaStandardWallet = ({ networkProvider, walletStandardWallet })=>{
53
+ const features = getFeaturesForSolanaStandardWallet(walletStandardWallet);
17
54
  const getPublicKey = ()=>{
18
- var _wallet_accounts_, _wallet_accounts;
19
- if (!((_wallet_accounts = wallet.accounts) == null ? void 0 : (_wallet_accounts_ = _wallet_accounts[0]) == null ? void 0 : _wallet_accounts_.publicKey)) {
55
+ var _walletStandardWallet_accounts_, _walletStandardWallet_accounts;
56
+ if (!((_walletStandardWallet_accounts = walletStandardWallet.accounts) == null ? void 0 : (_walletStandardWallet_accounts_ = _walletStandardWallet_accounts[0]) == null ? void 0 : _walletStandardWallet_accounts_.publicKey)) {
20
57
  return undefined;
21
58
  }
22
- return new web3_js.PublicKey(wallet.accounts[0].publicKey);
59
+ return new web3_js.PublicKey(walletStandardWallet.accounts[0].publicKey);
23
60
  };
24
61
  const getChain = ()=>{
25
- // TODO: add support for getting the chain from the provider
26
- // const currentNetwork = provider.getSelectedNetwork();
27
- // assertDefined(currentNetwork, 'Network not found');
28
- // const cluster = currentNetwork.cluster ?? 'mainnet';
29
- const cluster = 'mainnet';
30
- return `solana:${cluster}`;
62
+ core.assertDefined(networkProvider.cluster, `Cluster was not defined for network provider ${networkProvider.displayName} (networkId: ${networkProvider.networkId})`);
63
+ return `solana:${networkProvider.cluster}`;
31
64
  };
32
65
  const isConnected = ()=>{
33
- var _wallet_accounts;
34
- return ((_wallet_accounts = wallet.accounts) == null ? void 0 : _wallet_accounts.length) > 0;
66
+ var _walletStandardWallet_accounts;
67
+ return ((_walletStandardWallet_accounts = walletStandardWallet.accounts) == null ? void 0 : _walletStandardWallet_accounts.length) > 0;
35
68
  };
36
69
  const getCurrentAccount = async ()=>{
37
- var _wallet_accounts;
70
+ var _walletStandardWallet_accounts;
38
71
  if (!isConnected()) {
39
72
  await connect();
40
73
  }
41
- const account = (_wallet_accounts = wallet.accounts) == null ? void 0 : _wallet_accounts[0];
74
+ const account = (_walletStandardWallet_accounts = walletStandardWallet.accounts) == null ? void 0 : _walletStandardWallet_accounts[0];
42
75
  core.assertDefined(account, 'No connected accounts found');
43
76
  return account;
44
77
  };
45
78
  const connect = async ()=>{
46
79
  var _features_standardconnect, _result_accounts;
47
- const autoConnectedAccounts = wallet.accounts;
80
+ const autoConnectedAccounts = walletStandardWallet.accounts;
48
81
  // some wallets like Farcaster will auto inject the account into the wallet object
49
82
  // instead of returning it from the connect method
50
83
  // so we need to check for that first
@@ -105,7 +138,7 @@ const createSolanaSignerFromSolanaStandardWallet = (wallet)=>{
105
138
  })
106
139
  });
107
140
  const signedTransaction = signTransactionResult[0].signedTransaction;
108
- if (isVersionedTransaction(transaction)) {
141
+ if (isVersionedTransaction.isVersionedTransaction(transaction)) {
109
142
  return web3_js.VersionedTransaction.deserialize(signedTransaction);
110
143
  }
111
144
  return web3_js.Transaction.from(signedTransaction);
@@ -125,7 +158,7 @@ const createSolanaSignerFromSolanaStandardWallet = (wallet)=>{
125
158
  });
126
159
  const [{ signature }] = signedTransactions;
127
160
  return {
128
- signature: new TextDecoder().decode(signature)
161
+ signature: bs58.encode(signature)
129
162
  };
130
163
  };
131
164
  const signMessage = async (message)=>{
@@ -141,52 +174,35 @@ const createSolanaSignerFromSolanaStandardWallet = (wallet)=>{
141
174
  signature: messages[0].signature
142
175
  };
143
176
  };
144
- return {
145
- addListener: ()=>{
146
- throw new core.MethodNotImplementedError('addListener');
147
- },
177
+ return isVersionedTransaction._extends({}, isVersionedTransaction.createEmptyEventEmitter(), {
148
178
  connect,
149
179
  disconnect,
150
- emit: ()=>{
151
- throw new core.MethodNotImplementedError('emit');
152
- },
153
- eventNames: ()=>{
154
- return [];
155
- },
156
180
  get isConnected () {
157
181
  return isConnected();
158
182
  },
159
- listenerCount: ()=>{
160
- return 0;
161
- },
162
- listeners: ()=>{
163
- return [];
164
- },
165
- off: ()=>{
166
- throw new core.MethodNotImplementedError('off');
167
- },
168
183
  on,
169
- once: ()=>{
170
- throw new core.MethodNotImplementedError('once');
171
- },
172
184
  providers: [],
173
185
  get publicKey () {
174
186
  return getPublicKey();
175
187
  },
176
- removeAllListeners: ()=>{
177
- throw new core.MethodNotImplementedError('removeAllListeners');
178
- },
179
- removeListener: ()=>{
180
- throw new core.MethodNotImplementedError('removeListener');
181
- },
182
188
  signAllTransactions,
183
189
  signAndSendTransaction,
184
190
  signMessage,
185
191
  signTransaction
186
- };
192
+ });
187
193
  };
188
194
 
189
- const createWalletProviderFromSolanaStandardWallet = ({ wallet })=>{
195
+ const createWalletProviderFromSolanaStandardWallet = ({ dynamicClient, walletStandardWallet })=>{
196
+ const key = core.formatWalletProviderKey(walletStandardWallet.name, 'SOL');
197
+ const getActiveNetworkId = async ()=>core.getActiveNetworkIdFromLastKnownRegistry({
198
+ client: dynamicClient,
199
+ walletProviderKey: key
200
+ });
201
+ const switchActiveNetwork = async ({ networkId })=>core.switchActiveNetworkInLastKnownRegistry({
202
+ client: dynamicClient,
203
+ networkId,
204
+ walletProviderKey: key
205
+ });
190
206
  const connect = async ()=>{
191
207
  const signer = await getSigner();
192
208
  const result = await signer.connect();
@@ -206,45 +222,24 @@ const createWalletProviderFromSolanaStandardWallet = ({ wallet })=>{
206
222
  await signer.connect();
207
223
  }
208
224
  return {
209
- addresses: wallet.accounts.map((account)=>account.address)
225
+ addresses: walletStandardWallet.accounts.map((account)=>account.address)
210
226
  };
211
227
  };
212
228
  const getSigner = async (walletAccount)=>{
213
229
  if (walletAccount) {
214
- await client.assertWalletAccountSigningAvailability(walletAccount);
230
+ await client.assertWalletAccountSigningAvailability({
231
+ walletAccount
232
+ }, dynamicClient);
215
233
  }
216
- return createSolanaSignerFromSolanaStandardWallet(wallet);
217
- };
218
- const proveOwnership = async (walletAccount)=>{
219
- var _core_metadata;
220
- const client = core.getClient(walletAccount);
221
- const core$1 = core.getCore(client);
222
- const apiClient = core.createApiClient(client);
223
- const appUrl = (_core_metadata = core$1.metadata) == null ? void 0 : _core_metadata.url;
224
- core.assertDefined(appUrl, 'App URL is not set');
225
- const url = new URL(appUrl);
226
- const { nonce } = await apiClient.getNonce({
227
- environmentId: core$1.environmentId
228
- });
229
- core.assertDefined(nonce, 'Failed to get nonce');
230
- const messageToSign = await core.formatSignInMessage({
231
- address: walletAccount.address,
232
- blockchainName: 'Solana',
233
- domain: url.host,
234
- issuedAt: new Date().toISOString(),
235
- nonce,
236
- requestId: core$1.environmentId,
237
- uri: url.toString()
238
- });
239
- const signedMessage = await signMessage({
240
- message: messageToSign,
241
- walletAccount
234
+ const { networkId } = await getActiveNetworkId();
235
+ const networkProvider = core.getNetworkProviderFromNetworkId({
236
+ chain: 'SOL',
237
+ networkId
238
+ }, dynamicClient);
239
+ return createSolanaSignerFromSolanaStandardWallet({
240
+ networkProvider,
241
+ walletStandardWallet
242
242
  });
243
- return {
244
- chain: sdkApiCore.ChainEnum.Sol,
245
- messageToSign,
246
- signedMessage: signedMessage.signature
247
- };
248
243
  };
249
244
  const signMessage = async ({ message, walletAccount })=>{
250
245
  const signer = await getSigner(walletAccount);
@@ -255,22 +250,57 @@ const createWalletProviderFromSolanaStandardWallet = ({ wallet })=>{
255
250
  signature: core.bufferToBase64(signedMessage.signature)
256
251
  };
257
252
  };
258
- return {
253
+ const getEventsFeature = ()=>{
254
+ const features = getFeaturesForSolanaStandardWallet(walletStandardWallet);
255
+ const eventsFeature = features['standard:events'];
256
+ return eventsFeature;
257
+ };
258
+ const { getEventEmitter, cleanupEventEmitter } = core.createWalletProviderEventEmitter({
259
+ removeEventListeners: ({ setupReturnValue })=>{
260
+ core.assertDefined(setupReturnValue, 'Setup return value not defined');
261
+ setupReturnValue();
262
+ },
263
+ setupEventListeners: ({ handleAccountsChanged })=>{
264
+ return getEventsFeature().on('change', ({ accounts })=>{
265
+ var _accounts_map;
266
+ handleAccountsChanged({
267
+ addresses: (_accounts_map = accounts == null ? void 0 : accounts.map((account)=>account.address)) != null ? _accounts_map : []
268
+ });
269
+ });
270
+ },
271
+ supportedEvents: [
272
+ 'accountsChanged'
273
+ ]
274
+ });
275
+ const terminate = async ()=>{
276
+ cleanupEventEmitter();
277
+ };
278
+ const walletProvider = {
259
279
  chain: 'SOL',
260
280
  connect,
261
281
  disconnect,
282
+ getActiveNetworkId,
262
283
  getConnectedAddresses,
263
284
  getSigner,
264
285
  getWalletProviderType: ()=>sdkApiCore.WalletProviderEnum.BrowserExtension,
265
- groupKey: core.formatWalletProviderGroupKey(wallet.name),
266
- key: core.formatWalletProviderKey(wallet.name, sdkApiCore.ChainEnum.Sol),
286
+ groupKey: core.formatWalletProviderGroupKey(walletStandardWallet.name),
287
+ key,
267
288
  metadata: {
268
- displayName: wallet.name,
269
- icon: wallet.icon
289
+ displayName: walletStandardWallet.name,
290
+ icon: walletStandardWallet.icon
270
291
  },
271
- proveOwnership,
272
- signMessage
292
+ signMessage,
293
+ switchActiveNetwork,
294
+ terminate
273
295
  };
296
+ // The provider will only implement events if this external wallet provider
297
+ // implements the standard:events feature
298
+ if (getEventsFeature()) {
299
+ Object.defineProperty(walletProvider, 'events', {
300
+ get: ()=>getEventEmitter()
301
+ });
302
+ }
303
+ return walletProvider;
274
304
  };
275
305
 
276
306
  const hasAllRequiredFeatures = (wallet)=>{
@@ -279,16 +309,30 @@ const hasAllRequiredFeatures = (wallet)=>{
279
309
  };
280
310
 
281
311
  const SOLANA_WALLET_STANDARD_EXTENSION_KEY = 'solanaWalletStandard';
282
- const addSolanaWalletStandardExtension = (client)=>{
283
- if (core.hasExtension(client, SOLANA_WALLET_STANDARD_EXTENSION_KEY)) {
312
+ /**
313
+ * Adds the Solana Wallet Standard extension to the Dynamic client.
314
+ *
315
+ * This extension enables integration with wallets that implement the Solana Wallet Standard,
316
+ * automatically detecting and registering compatible wallets for use with the Dynamic SDK.
317
+ *
318
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
319
+ */ const addSolanaWalletStandardExtension = (client = core.getDefaultClient())=>{
320
+ if (core.hasExtension({
321
+ extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY
322
+ }, client)) {
284
323
  return;
285
324
  }
325
+ core.registerExtension({
326
+ extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY
327
+ }, client);
328
+ registerSolanaNetworkProviderBuilder(client);
286
329
  const walletProviderRegistry = core.getWalletProviderRegistry(client);
287
- const walletStandardWallet = app.getWallets().get().filter(hasAllRequiredFeatures);
288
- walletStandardWallet.forEach((wallet)=>{
289
- const walletProvider = core.assignClient(createWalletProviderFromSolanaStandardWallet({
290
- wallet
291
- }), client);
330
+ const walletStandardWallets = app.getWallets().get().filter(hasAllRequiredFeatures);
331
+ walletStandardWallets.forEach((walletStandardWallet)=>{
332
+ const walletProvider = createWalletProviderFromSolanaStandardWallet({
333
+ dynamicClient: client,
334
+ walletStandardWallet
335
+ });
292
336
  walletProviderRegistry.register({
293
337
  priority: core.WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,
294
338
  walletProvider