@dynamic-labs-sdk/solana 0.1.0-alpha.3 → 0.1.0-alpha.30

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 (49) hide show
  1. package/CHANGELOG.md +303 -0
  2. package/addSolanaWalletStandardExtension.cjs.js +118 -156
  3. package/addSolanaWalletStandardExtension.esm.js +121 -159
  4. package/addWaasSolanaExtension.cjs.js +60 -74
  5. package/addWaasSolanaExtension.esm.js +62 -76
  6. package/index.cjs.js +66 -21
  7. package/index.esm.js +64 -21
  8. package/isVersionedTransaction.cjs.js +1 -42
  9. package/isVersionedTransaction.esm.js +2 -42
  10. package/package.json +5 -5
  11. package/src/SolanaWalletProvider.types.d.ts +21 -3
  12. package/src/SolanaWalletProvider.types.d.ts.map +1 -1
  13. package/src/exports/index.d.ts +3 -1
  14. package/src/exports/index.d.ts.map +1 -1
  15. package/src/signAllTransactions/index.d.ts +2 -0
  16. package/src/signAllTransactions/index.d.ts.map +1 -0
  17. package/src/signAllTransactions/signAllTransactions.d.ts +18 -0
  18. package/src/signAllTransactions/signAllTransactions.d.ts.map +1 -0
  19. package/src/signAndSendTransaction/index.d.ts +2 -0
  20. package/src/signAndSendTransaction/index.d.ts.map +1 -0
  21. package/src/signAndSendTransaction/signAndSendTransaction.d.ts +18 -0
  22. package/src/signAndSendTransaction/signAndSendTransaction.d.ts.map +1 -0
  23. package/src/signTransaction/index.d.ts +2 -0
  24. package/src/signTransaction/index.d.ts.map +1 -0
  25. package/src/signTransaction/signTransaction.d.ts +18 -0
  26. package/src/signTransaction/signTransaction.d.ts.map +1 -0
  27. package/src/utils/createSolanaNetworkProvider/createSolanaNetworkProvider.d.ts.map +1 -1
  28. package/src/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.d.ts.map +1 -1
  29. package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.d.ts.map +1 -1
  30. package/src/walletStandard/utils/getActiveNetworkCluster/getActiveNetworkCluster.d.ts +7 -0
  31. package/src/walletStandard/utils/getActiveNetworkCluster/getActiveNetworkCluster.d.ts.map +1 -0
  32. package/src/walletStandard/utils/getActiveNetworkCluster/index.d.ts +2 -0
  33. package/src/walletStandard/utils/getActiveNetworkCluster/index.d.ts.map +1 -0
  34. package/waas.cjs.js +0 -1
  35. package/waas.esm.js +0 -1
  36. package/src/SolanaSigner.types.d.ts +0 -40
  37. package/src/SolanaSigner.types.d.ts.map +0 -1
  38. package/src/getSigner/getSigner.d.ts +0 -16
  39. package/src/getSigner/getSigner.d.ts.map +0 -1
  40. package/src/getSigner/index.d.ts +0 -2
  41. package/src/getSigner/index.d.ts.map +0 -1
  42. package/src/waas/utils/createSolanaSignerFromSolanaWaasProvider/createSolanaSignerFromSolanaWaasProvider.d.ts +0 -11
  43. package/src/waas/utils/createSolanaSignerFromSolanaWaasProvider/createSolanaSignerFromSolanaWaasProvider.d.ts.map +0 -1
  44. package/src/waas/utils/createSolanaSignerFromSolanaWaasProvider/index.d.ts +0 -2
  45. package/src/waas/utils/createSolanaSignerFromSolanaWaasProvider/index.d.ts.map +0 -1
  46. package/src/walletStandard/utils/createSolanaSignerFromSolanaStandardWallet/createSolanaSignerFromSolanaStandardWallet.d.ts +0 -10
  47. package/src/walletStandard/utils/createSolanaSignerFromSolanaStandardWallet/createSolanaSignerFromSolanaStandardWallet.d.ts.map +0 -1
  48. package/src/walletStandard/utils/createSolanaSignerFromSolanaStandardWallet/index.d.ts +0 -2
  49. package/src/walletStandard/utils/createSolanaSignerFromSolanaStandardWallet/index.d.ts.map +0 -1
@@ -1,8 +1,8 @@
1
- import { createBaseNetworkProvider, getNetworkProviderBuilderRegistry, assertDefined, formatWalletProviderKey, createWalletProviderEventEmitter, formatWalletProviderGroupKey, switchActiveNetworkInLastKnownRegistry, getActiveNetworkIdFromLastKnownRegistry, bufferToBase64, getNetworkProviderFromNetworkId, getDefaultClient, hasExtension, registerExtension, getWalletProviderRegistry, WalletProviderPriority } from '@dynamic-labs-sdk/client/core';
1
+ import { createBaseNetworkProvider, getNetworkProviderBuilderRegistry, formatWalletProviderKey, createWalletProviderEventEmitter, assertDefined, formatWalletProviderGroupKey, switchActiveNetworkInLastKnownRegistry, getActiveNetworkIdFromLastKnownRegistry, bufferToBase64, getDefaultClient, hasExtension, registerExtension, getWalletProviderRegistry, WalletProviderPriority } from '@dynamic-labs-sdk/client/core';
2
2
  import { getWallets } from '@wallet-standard/app';
3
- import { _ as _extends, c as createEmptyEventEmitter, i as isVersionedTransaction } from './isVersionedTransaction.esm.js';
3
+ import { _ as _extends, i as isVersionedTransaction } from './isVersionedTransaction.esm.js';
4
4
  import { Connection, PublicKey, VersionedTransaction, Transaction } from '@solana/web3.js';
5
- import { assertWalletAccountSigningAvailability } from '@dynamic-labs-sdk/client';
5
+ import { getActiveNetworkData, assertWalletAccountSigningAvailability } from '@dynamic-labs-sdk/client';
6
6
  import { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';
7
7
  import bs58 from 'bs58';
8
8
 
@@ -22,6 +22,7 @@ const fetchSolBalance = async ({ address, rpcUrl })=>{
22
22
 
23
23
  const createSolanaNetworkProvider = (networkData)=>_extends({}, createBaseNetworkProvider('SOL', networkData), {
24
24
  cluster: networkData.cluster,
25
+ genesisHash: networkData.genesisHash,
25
26
  getBalance: async ({ address })=>({
26
27
  balance: await fetchSolBalance({
27
28
  address,
@@ -43,36 +44,28 @@ const registerSolanaNetworkProviderBuilder = (client)=>{
43
44
  });
44
45
  };
45
46
 
47
+ const getActiveNetworkCluster = async ({ walletAccount }, client)=>{
48
+ const { networkData } = await getActiveNetworkData({
49
+ walletAccount
50
+ }, client);
51
+ if (!(networkData == null ? void 0 : networkData.cluster)) {
52
+ return;
53
+ }
54
+ return `solana:${networkData.cluster}`;
55
+ };
56
+
46
57
  const getFeaturesForSolanaStandardWallet = (wallet)=>{
47
58
  return wallet.features;
48
59
  };
49
60
 
50
- const createSolanaSignerFromSolanaStandardWallet = ({ networkProvider, walletStandardWallet })=>{
61
+ const createWalletProviderFromSolanaStandardWallet = ({ dynamicClient, walletStandardWallet })=>{
51
62
  const features = getFeaturesForSolanaStandardWallet(walletStandardWallet);
52
- const getPublicKey = ()=>{
53
- var _walletStandardWallet_accounts_, _walletStandardWallet_accounts;
54
- if (!((_walletStandardWallet_accounts = walletStandardWallet.accounts) == null ? void 0 : (_walletStandardWallet_accounts_ = _walletStandardWallet_accounts[0]) == null ? void 0 : _walletStandardWallet_accounts_.publicKey)) {
55
- return undefined;
56
- }
57
- return new PublicKey(walletStandardWallet.accounts[0].publicKey);
58
- };
59
- const getChain = ()=>{
60
- assertDefined(networkProvider.cluster, `Cluster was not defined for network provider ${networkProvider.displayName} (networkId: ${networkProvider.networkId})`);
61
- return `solana:${networkProvider.cluster}`;
62
- };
63
- const isConnected = ()=>{
64
- var _walletStandardWallet_accounts;
65
- return ((_walletStandardWallet_accounts = walletStandardWallet.accounts) == null ? void 0 : _walletStandardWallet_accounts.length) > 0;
66
- };
67
- const getCurrentAccount = async ()=>{
68
- var _walletStandardWallet_accounts;
69
- if (!isConnected()) {
70
- await connect();
71
- }
72
- const account = (_walletStandardWallet_accounts = walletStandardWallet.accounts) == null ? void 0 : _walletStandardWallet_accounts[0];
73
- assertDefined(account, 'No connected accounts found');
74
- return account;
75
- };
63
+ const walletProviderType = WalletProviderEnum.BrowserExtension;
64
+ const key = formatWalletProviderKey({
65
+ chain: 'SOL',
66
+ displayName: walletStandardWallet.name,
67
+ walletProviderType
68
+ });
76
69
  const connect = async ()=>{
77
70
  var _features_standardconnect, _result_accounts;
78
71
  const autoConnectedAccounts = walletStandardWallet.accounts;
@@ -81,8 +74,12 @@ const createSolanaSignerFromSolanaStandardWallet = ({ networkProvider, walletSta
81
74
  // so we need to check for that first
82
75
  if ((autoConnectedAccounts == null ? void 0 : autoConnectedAccounts.length) && autoConnectedAccounts[0].publicKey && autoConnectedAccounts[0].address) {
83
76
  return {
84
- address: autoConnectedAccounts[0].address,
85
- publicKey: autoConnectedAccounts[0].publicKey
77
+ addresses: [
78
+ {
79
+ address: autoConnectedAccounts[0].address,
80
+ publicKey: autoConnectedAccounts[0].publicKey.toString()
81
+ }
82
+ ]
86
83
  };
87
84
  }
88
85
  const connectMethod = (_features_standardconnect = features['standard:connect']) == null ? void 0 : _features_standardconnect.connect;
@@ -90,11 +87,14 @@ const createSolanaSignerFromSolanaStandardWallet = ({ networkProvider, walletSta
90
87
  const result = await connectMethod({
91
88
  silent: false
92
89
  });
93
- const connectedAccount = result == null ? void 0 : (_result_accounts = result.accounts) == null ? void 0 : _result_accounts[0];
94
- assertDefined(connectedAccount, 'No connected accounts');
95
90
  return {
96
- address: connectedAccount.address,
97
- publicKey: connectedAccount.publicKey
91
+ addresses: (_result_accounts = result.accounts) == null ? void 0 : _result_accounts.map((account)=>{
92
+ var _account_publicKey;
93
+ return {
94
+ address: account.address,
95
+ publicKey: (_account_publicKey = account.publicKey) == null ? void 0 : _account_publicKey.toString()
96
+ };
97
+ })
98
98
  };
99
99
  };
100
100
  const disconnect = async ()=>{
@@ -103,53 +103,58 @@ const createSolanaSignerFromSolanaStandardWallet = ({ networkProvider, walletSta
103
103
  assertDefined(disconnectMethod, 'disconnect method not found in wallet features');
104
104
  await disconnectMethod();
105
105
  };
106
- const on = (event, listener)=>{
107
- var _features_standardevents;
108
- const onMethod = (_features_standardevents = features['standard:events']) == null ? void 0 : _features_standardevents.on;
109
- if (!onMethod) {
110
- return;
106
+ const getActiveNetworkId = async ()=>getActiveNetworkIdFromLastKnownRegistry({
107
+ client: dynamicClient,
108
+ walletProviderKey: key
109
+ });
110
+ const getCurrentAccount = async ()=>{
111
+ var _walletStandardWallet_accounts;
112
+ if (!isConnected() && connect) {
113
+ await connect();
111
114
  }
112
- if (event !== 'accountChanged') {
113
- return;
115
+ const account = (_walletStandardWallet_accounts = walletStandardWallet.accounts) == null ? void 0 : _walletStandardWallet_accounts[0];
116
+ assertDefined(account, 'No connected accounts found');
117
+ return account;
118
+ };
119
+ const isConnected = ()=>{
120
+ var _walletStandardWallet_accounts;
121
+ return ((_walletStandardWallet_accounts = walletStandardWallet.accounts) == null ? void 0 : _walletStandardWallet_accounts.length) > 0;
122
+ };
123
+ const getConnectedAddresses = async ()=>{
124
+ if (!isConnected() && connect) {
125
+ await connect();
114
126
  }
115
- const wrappedListener = (prop)=>{
116
- var _prop_accounts_, _prop_accounts;
117
- const publicKey = (_prop_accounts = prop.accounts) == null ? void 0 : (_prop_accounts_ = _prop_accounts[0]) == null ? void 0 : _prop_accounts_.publicKey;
118
- if (publicKey) {
119
- listener(new TextDecoder().decode(publicKey));
120
- }
127
+ return {
128
+ addresses: walletStandardWallet.accounts.map((account)=>account.address)
121
129
  };
122
- // 'change' is the only event that is supported by the wallet standard
123
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
124
- return onMethod('change', wrappedListener);
125
130
  };
126
- const signTransaction = async (transaction)=>{
127
- var _features_solanasignTransaction;
128
- const signMessageMethod = (_features_solanasignTransaction = features['solana:signTransaction']) == null ? void 0 : _features_solanasignTransaction.signTransaction;
129
- assertDefined(signMessageMethod, 'signTransaction method not found in wallet features');
130
- const account = await getCurrentAccount();
131
- const signTransactionResult = await signMessageMethod({
132
- account,
133
- chain: getChain(),
134
- transaction: transaction.serialize({
135
- requireAllSignatures: false
136
- })
137
- });
138
- const signedTransaction = signTransactionResult[0].signedTransaction;
139
- if (isVersionedTransaction(transaction)) {
140
- return VersionedTransaction.deserialize(signedTransaction);
141
- }
142
- return Transaction.from(signedTransaction);
131
+ const signAllTransactions = async ({ transactions, walletAccount })=>{
132
+ const signedTransactions = await Promise.all(transactions.map(async (transaction)=>{
133
+ const { signedTransaction } = await signTransaction({
134
+ transaction,
135
+ walletAccount
136
+ });
137
+ return signedTransaction;
138
+ }));
139
+ return {
140
+ signedTransactions
141
+ };
143
142
  };
144
- const signAllTransactions = async (transactions)=>Promise.all(transactions.map(signTransaction));
145
- const signAndSendTransaction = async (transaction)=>{
143
+ const signAndSendTransaction = async ({ transaction, walletAccount })=>{
146
144
  var _features_solanasignAndSendTransaction;
145
+ await assertWalletAccountSigningAvailability({
146
+ walletAccount
147
+ }, dynamicClient);
147
148
  const signAndSendTransactionMethod = (_features_solanasignAndSendTransaction = features['solana:signAndSendTransaction']) == null ? void 0 : _features_solanasignAndSendTransaction.signAndSendTransaction;
148
149
  assertDefined(signAndSendTransactionMethod, 'signAndSendTransaction method not found in wallet features');
149
150
  const account = await getCurrentAccount();
151
+ const chain = await getActiveNetworkCluster({
152
+ walletAccount
153
+ }, dynamicClient);
154
+ assertDefined(chain, 'Could not get active chain for wallet account');
150
155
  const signedTransactions = await signAndSendTransactionMethod({
151
156
  account,
152
- chain: getChain(),
157
+ chain,
153
158
  transaction: transaction.serialize({
154
159
  requireAllSignatures: false
155
160
  })
@@ -159,107 +164,66 @@ const createSolanaSignerFromSolanaStandardWallet = ({ networkProvider, walletSta
159
164
  signature: bs58.encode(signature)
160
165
  };
161
166
  };
162
- const signMessage = async (message)=>{
167
+ const signMessage = async ({ message, walletAccount })=>{
163
168
  var _features_solanasignMessage;
164
169
  const signMessageMethod = (_features_solanasignMessage = features['solana:signMessage']) == null ? void 0 : _features_solanasignMessage.signMessage;
165
170
  assertDefined(signMessageMethod, 'signMessage method not found in wallet features');
171
+ assertDefined(walletAccount, 'Wallet account not found');
172
+ await assertWalletAccountSigningAvailability({
173
+ walletAccount
174
+ }, dynamicClient);
175
+ const encodedMessage = new TextEncoder().encode(message);
166
176
  const account = await getCurrentAccount();
167
177
  const messages = await signMessageMethod({
168
178
  account,
169
- message
179
+ message: encodedMessage
170
180
  });
171
181
  return {
172
- signature: messages[0].signature
182
+ signature: bufferToBase64(messages[0].signature)
173
183
  };
174
184
  };
175
- return _extends({}, createEmptyEventEmitter(), {
176
- connect,
177
- disconnect,
178
- get isConnected () {
179
- return isConnected();
180
- },
181
- on,
182
- providers: [],
183
- get publicKey () {
184
- return getPublicKey();
185
- },
186
- signAllTransactions,
187
- signAndSendTransaction,
188
- signMessage,
189
- signTransaction
190
- });
191
- };
192
-
193
- const createWalletProviderFromSolanaStandardWallet = ({ dynamicClient, walletStandardWallet })=>{
194
- const key = formatWalletProviderKey(walletStandardWallet.name, 'SOL');
195
- const getActiveNetworkId = async ()=>getActiveNetworkIdFromLastKnownRegistry({
196
- client: dynamicClient,
197
- walletProviderKey: key
198
- });
199
- const switchActiveNetwork = async ({ networkId })=>switchActiveNetworkInLastKnownRegistry({
200
- client: dynamicClient,
201
- networkId,
202
- walletProviderKey: key
185
+ const signTransaction = async ({ transaction, walletAccount })=>{
186
+ var _features_solanasignTransaction;
187
+ const signMessageMethod = (_features_solanasignTransaction = features['solana:signTransaction']) == null ? void 0 : _features_solanasignTransaction.signTransaction;
188
+ assertDefined(signMessageMethod, 'signTransaction method not found in wallet features');
189
+ await assertWalletAccountSigningAvailability({
190
+ walletAccount
191
+ }, dynamicClient);
192
+ const account = await getCurrentAccount();
193
+ const chain = await getActiveNetworkCluster({
194
+ walletAccount
195
+ }, dynamicClient);
196
+ assertDefined(chain, 'Could not get active chain for wallet account');
197
+ const signTransactionResult = await signMessageMethod({
198
+ account,
199
+ chain,
200
+ transaction: transaction.serialize({
201
+ requireAllSignatures: false
202
+ })
203
203
  });
204
- const connect = async ()=>{
205
- const signer = await getSigner();
206
- const result = await signer.connect();
207
- return {
208
- addresses: (result == null ? void 0 : result.address) ? [
209
- result.address
210
- ] : []
211
- };
212
- };
213
- const disconnect = async ()=>{
214
- const signer = await getSigner();
215
- await signer.disconnect();
216
- };
217
- const getConnectedAddresses = async ()=>{
218
- const signer = await getSigner();
219
- if (!signer.isConnected) {
220
- await signer.connect();
204
+ const signedTransaction = signTransactionResult[0].signedTransaction;
205
+ if (isVersionedTransaction(transaction)) {
206
+ return {
207
+ signedTransaction: VersionedTransaction.deserialize(signedTransaction)
208
+ };
221
209
  }
222
210
  return {
223
- addresses: walletStandardWallet.accounts.map((account)=>account.address)
211
+ signedTransaction: Transaction.from(signedTransaction)
224
212
  };
225
213
  };
226
- const getSigner = async (walletAccount)=>{
227
- if (walletAccount) {
228
- await assertWalletAccountSigningAvailability({
229
- walletAccount
230
- }, dynamicClient);
231
- }
232
- const { networkId } = await getActiveNetworkId();
233
- const networkProvider = getNetworkProviderFromNetworkId({
234
- chain: 'SOL',
235
- networkId
236
- }, dynamicClient);
237
- return createSolanaSignerFromSolanaStandardWallet({
238
- networkProvider,
239
- walletStandardWallet
214
+ const switchActiveNetwork = async ({ networkId })=>switchActiveNetworkInLastKnownRegistry({
215
+ client: dynamicClient,
216
+ networkId,
217
+ walletProviderKey: key
240
218
  });
241
- };
242
- const signMessage = async ({ message, walletAccount })=>{
243
- const signer = await getSigner(walletAccount);
244
- const encodedMessage = new TextEncoder().encode(message);
245
- const signedMessage = await signer.signMessage(encodedMessage, 'utf8');
246
- assertDefined(signedMessage, 'Failed to sign message');
247
- return {
248
- signature: bufferToBase64(signedMessage.signature)
249
- };
250
- };
251
- const getEventsFeature = ()=>{
252
- const features = getFeaturesForSolanaStandardWallet(walletStandardWallet);
253
- const eventsFeature = features['standard:events'];
254
- return eventsFeature;
255
- };
256
219
  const { getEventEmitter, cleanupEventEmitter } = createWalletProviderEventEmitter({
257
220
  removeEventListeners: ({ setupReturnValue })=>{
258
221
  assertDefined(setupReturnValue, 'Setup return value not defined');
259
222
  setupReturnValue();
260
223
  },
261
224
  setupEventListeners: ({ handleAccountsChanged })=>{
262
- return getEventsFeature().on('change', ({ accounts })=>{
225
+ const eventsFeature = features['standard:events'];
226
+ return eventsFeature.on('change', ({ accounts })=>{
263
227
  var _accounts_map;
264
228
  handleAccountsChanged({
265
229
  addresses: (_accounts_map = accounts == null ? void 0 : accounts.map((account)=>account.address)) != null ? _accounts_map : []
@@ -277,27 +241,25 @@ const createWalletProviderFromSolanaStandardWallet = ({ dynamicClient, walletSta
277
241
  chain: 'SOL',
278
242
  connect,
279
243
  disconnect,
244
+ get events () {
245
+ return getEventEmitter();
246
+ },
280
247
  getActiveNetworkId,
281
248
  getConnectedAddresses,
282
- getSigner,
283
- getWalletProviderType: ()=>WalletProviderEnum.BrowserExtension,
284
249
  groupKey: formatWalletProviderGroupKey(walletStandardWallet.name),
285
250
  key,
286
251
  metadata: {
287
252
  displayName: walletStandardWallet.name,
288
253
  icon: walletStandardWallet.icon
289
254
  },
255
+ signAllTransactions,
256
+ signAndSendTransaction,
290
257
  signMessage,
258
+ signTransaction,
291
259
  switchActiveNetwork,
292
- terminate
260
+ terminate,
261
+ walletProviderType
293
262
  };
294
- // The provider will only implement events if this external wallet provider
295
- // implements the standard:events feature
296
- if (getEventsFeature()) {
297
- Object.defineProperty(walletProvider, 'events', {
298
- get: ()=>getEventEmitter()
299
- });
300
- }
301
263
  return walletProvider;
302
264
  };
303
265
 
@@ -6,7 +6,6 @@ var client = require('@dynamic-labs-sdk/client');
6
6
  var core$1 = require('@dynamic-labs-sdk/client/waas/core');
7
7
  var sdkApiCore = require('@dynamic-labs/sdk-api-core');
8
8
  var web3_js = require('@solana/web3.js');
9
- var bs58 = require('bs58');
10
9
 
11
10
  /**
12
11
  * Returns a new Solana connection for the given network provider.
@@ -30,66 +29,14 @@ var bs58 = require('bs58');
30
29
  return new web3_js.Connection(networkData.rpcUrls.http[0], commitmentOrConfig);
31
30
  };
32
31
 
33
- const createSolanaSignerFromSolanaWaasProvider = ({ networkData, waasProvider, walletAccount })=>{
34
- const publicKey = new web3_js.PublicKey(walletAccount.address);
35
- const signAndSendTransaction = async (transaction)=>{
36
- const signedTransaction = await signTransaction(transaction);
37
- const connection = getSolanaConnection({
38
- networkData
39
- });
40
- const rawTransaction = signedTransaction.serialize();
41
- const signature = await connection.sendRawTransaction(rawTransaction);
42
- return {
43
- signature
44
- };
45
- };
46
- const signMessage = async (messageArrayBuffer)=>{
47
- const message = bs58.encode(messageArrayBuffer);
48
- const { signature } = await waasProvider.signMessage({
49
- message,
50
- walletAccount
51
- });
52
- return {
53
- signature: bs58.decode(signature)
54
- };
55
- };
56
- const signTransaction = async (transaction)=>{
57
- const messageBytes = isVersionedTransaction.isVersionedTransaction(transaction) ? transaction.message.serialize() : transaction.serializeMessage();
58
- const serializedTransaction = core.getBuffer().from(messageBytes).toString('hex');
59
- const { signature } = await waasProvider.signSerializedTransaction({
60
- serializedTransaction,
61
- walletAccount
62
- });
63
- transaction.addSignature(publicKey, core.getBuffer().from(signature, 'hex'));
64
- transaction.serialize({
65
- requireAllSignatures: false,
66
- verifySignatures: true
67
- });
68
- return transaction;
69
- };
70
- const signAllTransactions = async (transactions)=>{
71
- return Promise.all(transactions.map(signTransaction));
72
- };
73
- return isVersionedTransaction._extends({}, isVersionedTransaction.createEmptyEventEmitter(), {
74
- connect: ()=>{
75
- throw new core.MethodNotImplementedError('connect');
76
- },
77
- disconnect: ()=>{
78
- throw new core.MethodNotImplementedError('disconnect');
79
- },
80
- isConnected: true,
81
- providers: [],
82
- publicKey,
83
- signAllTransactions,
84
- signAndSendTransaction,
85
- signMessage,
86
- signTransaction
87
- });
88
- };
89
-
90
32
  const createWalletProviderForWaasSolana = (sdkClient)=>{
91
33
  const chain = 'SOL';
92
- const key = core.formatWalletProviderKey(core$1.DYNAMIC_WAAS_METADATA.name, chain);
34
+ const walletProviderType = sdkApiCore.WalletProviderEnum.EmbeddedWallet;
35
+ const key = core.formatWalletProviderKey({
36
+ chain,
37
+ displayName: core$1.DYNAMIC_WAAS_METADATA.displayName,
38
+ walletProviderType
39
+ });
93
40
  const waasProvider = core$1.createWaasProvider({
94
41
  chain,
95
42
  sdkClient
@@ -111,22 +58,59 @@ const createWalletProviderForWaasSolana = (sdkClient)=>{
111
58
  addresses: waasSolanaAddresses
112
59
  };
113
60
  };
114
- const signMessage = async ({ message, walletAccount })=>{
115
- core.assertDefined(walletAccount, 'Wallet account is required');
116
- return waasProvider.signMessage({
117
- message,
61
+ const signAndSendTransaction = async ({ transaction, walletAccount })=>{
62
+ const { signedTransaction } = await signTransaction({
63
+ transaction,
118
64
  walletAccount
119
65
  });
120
- };
121
- const getSigner = async (walletAccount)=>{
122
- core.assertDefined(walletAccount, 'Wallet account is required');
123
66
  const { networkData } = await client.getActiveNetworkData({
124
67
  walletAccount
125
68
  }, sdkClient);
126
69
  core.assertDefined(networkData, 'Network data is required');
127
- return createSolanaSignerFromSolanaWaasProvider({
128
- networkData,
129
- waasProvider,
70
+ const connection = getSolanaConnection({
71
+ networkData
72
+ });
73
+ const rawTransaction = signedTransaction.serialize();
74
+ const signature = await connection.sendRawTransaction(rawTransaction);
75
+ return {
76
+ signature
77
+ };
78
+ };
79
+ const signTransaction = async ({ transaction, walletAccount })=>{
80
+ const messageBytes = isVersionedTransaction.isVersionedTransaction(transaction) ? transaction.message.serialize() : transaction.serializeMessage();
81
+ const serializedTransaction = core.getBuffer()// eslint-disable-next-line @typescript-eslint/no-explicit-any
82
+ .from(messageBytes).toString('hex');
83
+ const { signature } = await waasProvider.signSerializedTransaction({
84
+ serializedTransaction,
85
+ walletAccount
86
+ });
87
+ const publicKey = new web3_js.PublicKey(walletAccount.address);
88
+ transaction.addSignature(publicKey, // eslint-disable-next-line @typescript-eslint/no-explicit-any
89
+ core.getBuffer().from(signature, 'hex'));
90
+ transaction.serialize({
91
+ requireAllSignatures: false,
92
+ verifySignatures: true
93
+ });
94
+ return {
95
+ signedTransaction: transaction
96
+ };
97
+ };
98
+ const signAllTransactions = async ({ transactions, walletAccount })=>{
99
+ const signedTransactions = await Promise.all(transactions.map(async (transaction)=>{
100
+ const { signedTransaction } = await signTransaction({
101
+ transaction,
102
+ walletAccount
103
+ });
104
+ return signedTransaction;
105
+ }));
106
+ return {
107
+ signedTransactions
108
+ };
109
+ };
110
+ const signMessage = async ({ message, walletAccount })=>{
111
+ core.assertDefined(walletAccount, 'Wallet account is required');
112
+ return waasProvider.signMessage({
113
+ message,
130
114
  walletAccount
131
115
  });
132
116
  };
@@ -134,16 +118,18 @@ const createWalletProviderForWaasSolana = (sdkClient)=>{
134
118
  chain,
135
119
  getActiveNetworkId,
136
120
  getConnectedAddresses,
137
- getSigner,
138
- getWalletProviderType: ()=>sdkApiCore.WalletProviderEnum.EmbeddedWallet,
139
- groupKey: core.formatWalletProviderGroupKey(core$1.DYNAMIC_WAAS_METADATA.name),
121
+ groupKey: core.formatWalletProviderGroupKey(core$1.DYNAMIC_WAAS_METADATA.displayName),
140
122
  key,
141
123
  metadata: {
142
- displayName: core$1.DYNAMIC_WAAS_METADATA.name,
124
+ displayName: core$1.DYNAMIC_WAAS_METADATA.displayName,
143
125
  icon: core$1.DYNAMIC_WAAS_METADATA.icon
144
126
  },
127
+ signAllTransactions,
128
+ signAndSendTransaction,
145
129
  signMessage,
146
- switchActiveNetwork
130
+ signTransaction,
131
+ switchActiveNetwork,
132
+ walletProviderType
147
133
  });
148
134
  };
149
135