@dynamic-labs-sdk/solana 0.0.1-alpha.10
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 +85 -0
- package/README.md +15 -0
- package/addSolanaWalletStandardExtension.cjs.js +299 -0
- package/addSolanaWalletStandardExtension.esm.js +297 -0
- package/index.cjs.d.ts +1 -0
- package/index.cjs.js +53 -0
- package/index.esm.d.ts +1 -0
- package/index.esm.js +47 -0
- package/package.json +31 -0
- package/src/SolanaSigner.types.d.ts +40 -0
- package/src/SolanaSigner.types.d.ts.map +1 -0
- package/src/SolanaWalletProvider.types.d.ts +11 -0
- package/src/SolanaWalletProvider.types.d.ts.map +1 -0
- package/src/addSolanaExtension/addSolanaExtension.d.ts +8 -0
- package/src/addSolanaExtension/addSolanaExtension.d.ts.map +1 -0
- package/src/addSolanaExtension/index.d.ts +2 -0
- package/src/addSolanaExtension/index.d.ts.map +1 -0
- package/src/errors/NotSolanaProviderError/NotSolanaProviderError.d.ts +8 -0
- package/src/errors/NotSolanaProviderError/NotSolanaProviderError.d.ts.map +1 -0
- package/src/errors/NotSolanaProviderError/index.d.ts +2 -0
- package/src/errors/NotSolanaProviderError/index.d.ts.map +1 -0
- package/src/exports/index.d.ts +6 -0
- package/src/exports/index.d.ts.map +1 -0
- package/src/exports/walletStandard.d.ts +2 -0
- package/src/exports/walletStandard.d.ts.map +1 -0
- package/src/getSigner/getSigner.d.ts +3 -0
- package/src/getSigner/getSigner.d.ts.map +1 -0
- package/src/getSigner/index.d.ts +2 -0
- package/src/getSigner/index.d.ts.map +1 -0
- package/src/isSolanaWalletAccount/index.d.ts +2 -0
- package/src/isSolanaWalletAccount/index.d.ts.map +1 -0
- package/src/isSolanaWalletAccount/isSolanaWalletAccount.d.ts +3 -0
- package/src/isSolanaWalletAccount/isSolanaWalletAccount.d.ts.map +1 -0
- package/src/isSolanaWalletProvider/index.d.ts +2 -0
- package/src/isSolanaWalletProvider/index.d.ts.map +1 -0
- package/src/isSolanaWalletProvider/isSolanaWalletProvider.d.ts +4 -0
- package/src/isSolanaWalletProvider/isSolanaWalletProvider.d.ts.map +1 -0
- package/src/utils/isVersionedTransaction/index.d.ts +2 -0
- package/src/utils/isVersionedTransaction/index.d.ts.map +1 -0
- package/src/utils/isVersionedTransaction/isVersionedTransaction.d.ts +3 -0
- package/src/utils/isVersionedTransaction/isVersionedTransaction.d.ts.map +1 -0
- package/src/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.d.ts +4 -0
- package/src/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.d.ts.map +1 -0
- package/src/walletStandard/addSolanaWalletStandardExtension/index.d.ts +2 -0
- package/src/walletStandard/addSolanaWalletStandardExtension/index.d.ts.map +1 -0
- package/src/walletStandard/utils/createSolanaSignerFromSolanaStandardWallet/createSolanaSignerFromSolanaStandardWallet.d.ts +4 -0
- package/src/walletStandard/utils/createSolanaSignerFromSolanaStandardWallet/createSolanaSignerFromSolanaStandardWallet.d.ts.map +1 -0
- package/src/walletStandard/utils/createSolanaSignerFromSolanaStandardWallet/index.d.ts +2 -0
- package/src/walletStandard/utils/createSolanaSignerFromSolanaStandardWallet/index.d.ts.map +1 -0
- package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.d.ts +8 -0
- package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.d.ts.map +1 -0
- package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/index.d.ts +2 -0
- package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/index.d.ts.map +1 -0
- package/src/walletStandard/utils/getFeaturesForSolanaStandardWallet/getFeaturesForSolanaStandardWallet.d.ts +11 -0
- package/src/walletStandard/utils/getFeaturesForSolanaStandardWallet/getFeaturesForSolanaStandardWallet.d.ts.map +1 -0
- package/src/walletStandard/utils/getFeaturesForSolanaStandardWallet/index.d.ts +2 -0
- package/src/walletStandard/utils/getFeaturesForSolanaStandardWallet/index.d.ts.map +1 -0
- package/src/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.d.ts +3 -0
- package/src/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.d.ts.map +1 -0
- package/src/walletStandard/utils/hasAllRequiredFeatures/index.d.ts +2 -0
- package/src/walletStandard/utils/hasAllRequiredFeatures/index.d.ts.map +1 -0
- package/walletStandard.cjs.d.ts +1 -0
- package/walletStandard.cjs.js +12 -0
- package/walletStandard.esm.d.ts +1 -0
- package/walletStandard.esm.js +6 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
## 0.0.1-alpha.10 (2025-07-08)
|
|
2
|
+
|
|
3
|
+
This was a version bump only, there were no code changes.
|
|
4
|
+
|
|
5
|
+
## 0.0.1-alpha.9 (2025-07-08)
|
|
6
|
+
|
|
7
|
+
### 🩹 Fixes
|
|
8
|
+
|
|
9
|
+
- throw when attempting to set undefined prop in storage ([#200](https://github.com/dynamic-labs/dynamic-sdk/pull/200))
|
|
10
|
+
|
|
11
|
+
## 0.0.1-alpha.8 (2025-07-03)
|
|
12
|
+
|
|
13
|
+
This was a version bump only, there were no code changes.
|
|
14
|
+
|
|
15
|
+
## 0.0.1-alpha.7 (2025-07-02)
|
|
16
|
+
|
|
17
|
+
### 🩹 Fixes
|
|
18
|
+
|
|
19
|
+
- **mfa:** make device id optional ([#175](https://github.com/dynamic-labs/dynamic-sdk/pull/175))
|
|
20
|
+
- **mfa:** allow create mfa options to authTotpMfaDevice ([#178](https://github.com/dynamic-labs/dynamic-sdk/pull/178))
|
|
21
|
+
|
|
22
|
+
## 0.0.1-alpha.6 (2025-06-30)
|
|
23
|
+
|
|
24
|
+
### 🚀 Features
|
|
25
|
+
|
|
26
|
+
- add support for solana wallet standard ([#133](https://github.com/dynamic-labs/dynamic-sdk/pull/133))
|
|
27
|
+
- add support social sign in ([#123](https://github.com/dynamic-labs/dynamic-sdk/pull/123))
|
|
28
|
+
- add support for TOTP MFA ([#139](https://github.com/dynamic-labs/dynamic-sdk/pull/139))([#140](https://github.com/dynamic-labs/dynamic-sdk/pull/140))([#141](https://github.com/dynamic-labs/dynamic-sdk/pull/141))([#142](https://github.com/dynamic-labs/dynamic-sdk/pull/142))([#143](https://github.com/dynamic-labs/dynamic-sdk/pull/143))([#144](https://github.com/dynamic-labs/dynamic-sdk/pull/144))([#149](https://github.com/dynamic-labs/dynamic-sdk/pull/149))([#146](https://github.com/dynamic-labs/dynamic-sdk/pull/146))([#147](https://github.com/dynamic-labs/dynamic-sdk/pull/147))
|
|
29
|
+
- add methods to connect and verify a wallet ([#99](https://github.com/dynamic-labs/dynamic-sdk/pull/99))
|
|
30
|
+
- add signMessage ([#111](https://github.com/dynamic-labs/dynamic-sdk/pull/111))
|
|
31
|
+
- add primary wallet account ([#128](https://github.com/dynamic-labs/dynamic-sdk/pull/128))
|
|
32
|
+
- cache project settings for connected users ([#148](https://github.com/dynamic-labs/dynamic-sdk/pull/148))
|
|
33
|
+
- add updateUser function ([#138](https://github.com/dynamic-labs/dynamic-sdk/pull/138))
|
|
34
|
+
|
|
35
|
+
### 🩹 Fixes
|
|
36
|
+
|
|
37
|
+
- use correct import path for commonjs ([#125](https://github.com/dynamic-labs/dynamic-sdk/pull/125))
|
|
38
|
+
- ensure change events are fired only when state changes ([#168](https://github.com/dynamic-labs/dynamic-sdk/pull/168))
|
|
39
|
+
|
|
40
|
+
### 🔧 Refactors
|
|
41
|
+
|
|
42
|
+
- modularize DynamicCoreState with global interface ([#93](https://github.com/dynamic-labs/dynamic-sdk/pull/93))
|
|
43
|
+
- add setVerifyResponse ([#106](https://github.com/dynamic-labs/dynamic-sdk/pull/106))
|
|
44
|
+
- rename set verify response function ([#122](https://github.com/dynamic-labs/dynamic-sdk/pull/122))
|
|
45
|
+
|
|
46
|
+
## 0.0.1-alpha.5 (2025-06-04)
|
|
47
|
+
|
|
48
|
+
### 🩹 Fixes
|
|
49
|
+
|
|
50
|
+
- support server side rendering ([#92](https://github.com/dynamic-labs/dynamic-sdk/pull/92))
|
|
51
|
+
|
|
52
|
+
## 0.0.1-alpha.4 (2025-05-28)
|
|
53
|
+
|
|
54
|
+
### 🚀 Features
|
|
55
|
+
|
|
56
|
+
- allow manual init of client ([#88](https://github.com/dynamic-labs/dynamic-sdk/pull/88))
|
|
57
|
+
|
|
58
|
+
### 🩹 Fixes
|
|
59
|
+
|
|
60
|
+
- client core accidentally sharing state among different instances ([#89](https://github.com/dynamic-labs/dynamic-sdk/pull/89))
|
|
61
|
+
|
|
62
|
+
## 0.0.1-alpha.3 (2025-05-27)
|
|
63
|
+
|
|
64
|
+
### 🩹 Fixes
|
|
65
|
+
|
|
66
|
+
- properly export state changed events ([#85](https://github.com/dynamic-labs/dynamic-sdk/pull/85))
|
|
67
|
+
|
|
68
|
+
## 0.0.1-alpha.2 (2025-05-26)
|
|
69
|
+
|
|
70
|
+
### 🚀 Features
|
|
71
|
+
|
|
72
|
+
- logout user when session expires ([#47](https://github.com/dynamic-labs/dynamic-sdk/pull/47))
|
|
73
|
+
- add sms verification ([#78](https://github.com/dynamic-labs/dynamic-sdk/pull/78))
|
|
74
|
+
- raise changed events for state variables ([#79](https://github.com/dynamic-labs/dynamic-sdk/pull/79))
|
|
75
|
+
- allow extending the client ([#80](https://github.com/dynamic-labs/dynamic-sdk/pull/80))
|
|
76
|
+
|
|
77
|
+
## 0.0.1-alpha.1 (2025-05-19)
|
|
78
|
+
|
|
79
|
+
### 🩹 Fixes
|
|
80
|
+
|
|
81
|
+
- make the client package public ([#74](https://github.com/dynamic-labs/dynamic-sdk/pull/74))
|
|
82
|
+
|
|
83
|
+
## 0.0.1-alpha.0 (2025-05-16)
|
|
84
|
+
|
|
85
|
+
Initial release of the Dynamic SDK.
|
package/README.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# @dynamic-labs-sdk/solana
|
|
2
|
+
|
|
3
|
+
This package contains the Solana (SVM) integration for the Dynamic SDK.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { addSolanaExtension } from '@dynamic-labs-sdk/solana';
|
|
9
|
+
import { createDynamicClient } from '@dynamic-labs-sdk/client';
|
|
10
|
+
|
|
11
|
+
const dynamicClient = createDynamicClient({
|
|
12
|
+
environmentId: '123',
|
|
13
|
+
});
|
|
14
|
+
addSolanaExtension(dynamicClient);
|
|
15
|
+
```
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var core = require('@dynamic-labs-sdk/client/core');
|
|
4
|
+
var app = require('@wallet-standard/app');
|
|
5
|
+
var client = require('@dynamic-labs-sdk/client');
|
|
6
|
+
var sdkApiCore = require('@dynamic-labs/sdk-api-core');
|
|
7
|
+
var web3_js = require('@solana/web3.js');
|
|
8
|
+
|
|
9
|
+
const isVersionedTransaction = (transaction)=>!('instructions' in transaction);
|
|
10
|
+
|
|
11
|
+
const getFeaturesForSolanaStandardWallet = (wallet)=>{
|
|
12
|
+
return wallet.features;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const createSolanaSignerFromSolanaStandardWallet = (wallet)=>{
|
|
16
|
+
const features = getFeaturesForSolanaStandardWallet(wallet);
|
|
17
|
+
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)) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
return new web3_js.PublicKey(wallet.accounts[0].publicKey);
|
|
23
|
+
};
|
|
24
|
+
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}`;
|
|
31
|
+
};
|
|
32
|
+
const isConnected = ()=>{
|
|
33
|
+
var _wallet_accounts;
|
|
34
|
+
return ((_wallet_accounts = wallet.accounts) == null ? void 0 : _wallet_accounts.length) > 0;
|
|
35
|
+
};
|
|
36
|
+
const getCurrentAccount = async ()=>{
|
|
37
|
+
var _wallet_accounts;
|
|
38
|
+
if (!isConnected()) {
|
|
39
|
+
await connect();
|
|
40
|
+
}
|
|
41
|
+
const account = (_wallet_accounts = wallet.accounts) == null ? void 0 : _wallet_accounts[0];
|
|
42
|
+
core.assertDefined(account, 'No connected accounts found');
|
|
43
|
+
return account;
|
|
44
|
+
};
|
|
45
|
+
const connect = async ()=>{
|
|
46
|
+
var _features_standardconnect, _result_accounts;
|
|
47
|
+
const autoConnectedAccounts = wallet.accounts;
|
|
48
|
+
// some wallets like Farcaster will auto inject the account into the wallet object
|
|
49
|
+
// instead of returning it from the connect method
|
|
50
|
+
// so we need to check for that first
|
|
51
|
+
if ((autoConnectedAccounts == null ? void 0 : autoConnectedAccounts.length) && autoConnectedAccounts[0].publicKey && autoConnectedAccounts[0].address) {
|
|
52
|
+
return {
|
|
53
|
+
address: autoConnectedAccounts[0].address,
|
|
54
|
+
publicKey: autoConnectedAccounts[0].publicKey
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const connectMethod = (_features_standardconnect = features['standard:connect']) == null ? void 0 : _features_standardconnect.connect;
|
|
58
|
+
core.assertDefined(connectMethod, 'connect method not found in wallet features');
|
|
59
|
+
const result = await connectMethod({
|
|
60
|
+
silent: false
|
|
61
|
+
});
|
|
62
|
+
const connectedAccount = result == null ? void 0 : (_result_accounts = result.accounts) == null ? void 0 : _result_accounts[0];
|
|
63
|
+
core.assertDefined(connectedAccount, 'No connected accounts');
|
|
64
|
+
return {
|
|
65
|
+
address: connectedAccount.address,
|
|
66
|
+
publicKey: connectedAccount.publicKey
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
const disconnect = async ()=>{
|
|
70
|
+
var _features_standarddisconnect;
|
|
71
|
+
const disconnectMethod = (_features_standarddisconnect = features['standard:disconnect']) == null ? void 0 : _features_standarddisconnect.disconnect;
|
|
72
|
+
core.assertDefined(disconnectMethod, 'disconnect method not found in wallet features');
|
|
73
|
+
await disconnectMethod();
|
|
74
|
+
};
|
|
75
|
+
const on = (event, listener)=>{
|
|
76
|
+
var _features_standardevents;
|
|
77
|
+
const onMethod = (_features_standardevents = features['standard:events']) == null ? void 0 : _features_standardevents.on;
|
|
78
|
+
if (!onMethod) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (event !== 'accountChanged') {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const wrappedListener = (prop)=>{
|
|
85
|
+
var _prop_accounts_, _prop_accounts;
|
|
86
|
+
const publicKey = (_prop_accounts = prop.accounts) == null ? void 0 : (_prop_accounts_ = _prop_accounts[0]) == null ? void 0 : _prop_accounts_.publicKey;
|
|
87
|
+
if (publicKey) {
|
|
88
|
+
listener(new TextDecoder().decode(publicKey));
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
// 'change' is the only event that is supported by the wallet standard
|
|
92
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
93
|
+
return onMethod('change', wrappedListener);
|
|
94
|
+
};
|
|
95
|
+
const signTransaction = async (transaction)=>{
|
|
96
|
+
var _features_solanasignTransaction;
|
|
97
|
+
const signMessageMethod = (_features_solanasignTransaction = features['solana:signTransaction']) == null ? void 0 : _features_solanasignTransaction.signTransaction;
|
|
98
|
+
core.assertDefined(signMessageMethod, 'signTransaction method not found in wallet features');
|
|
99
|
+
const account = await getCurrentAccount();
|
|
100
|
+
const signTransactionResult = await signMessageMethod({
|
|
101
|
+
account,
|
|
102
|
+
chain: getChain(),
|
|
103
|
+
transaction: transaction.serialize({
|
|
104
|
+
requireAllSignatures: false
|
|
105
|
+
})
|
|
106
|
+
});
|
|
107
|
+
const signedTransaction = signTransactionResult[0].signedTransaction;
|
|
108
|
+
if (isVersionedTransaction(transaction)) {
|
|
109
|
+
return web3_js.VersionedTransaction.deserialize(signedTransaction);
|
|
110
|
+
}
|
|
111
|
+
return web3_js.Transaction.from(signedTransaction);
|
|
112
|
+
};
|
|
113
|
+
const signAllTransactions = async (transactions)=>Promise.all(transactions.map(signTransaction));
|
|
114
|
+
const signAndSendTransaction = async (transaction)=>{
|
|
115
|
+
var _features_solanasignAndSendTransaction;
|
|
116
|
+
const signAndSendTransactionMethod = (_features_solanasignAndSendTransaction = features['solana:signAndSendTransaction']) == null ? void 0 : _features_solanasignAndSendTransaction.signAndSendTransaction;
|
|
117
|
+
core.assertDefined(signAndSendTransactionMethod, 'signAndSendTransaction method not found in wallet features');
|
|
118
|
+
const account = await getCurrentAccount();
|
|
119
|
+
const signedTransactions = await signAndSendTransactionMethod({
|
|
120
|
+
account,
|
|
121
|
+
chain: getChain(),
|
|
122
|
+
transaction: transaction.serialize({
|
|
123
|
+
requireAllSignatures: false
|
|
124
|
+
})
|
|
125
|
+
});
|
|
126
|
+
const [{ signature }] = signedTransactions;
|
|
127
|
+
return {
|
|
128
|
+
signature: new TextDecoder().decode(signature)
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
const signMessage = async (message)=>{
|
|
132
|
+
var _features_solanasignMessage;
|
|
133
|
+
const signMessageMethod = (_features_solanasignMessage = features['solana:signMessage']) == null ? void 0 : _features_solanasignMessage.signMessage;
|
|
134
|
+
core.assertDefined(signMessageMethod, 'signMessage method not found in wallet features');
|
|
135
|
+
const account = await getCurrentAccount();
|
|
136
|
+
const messages = await signMessageMethod({
|
|
137
|
+
account,
|
|
138
|
+
message
|
|
139
|
+
});
|
|
140
|
+
return {
|
|
141
|
+
signature: messages[0].signature
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
return {
|
|
145
|
+
addListener: ()=>{
|
|
146
|
+
throw new core.MethodNotImplementedError('addListener');
|
|
147
|
+
},
|
|
148
|
+
connect,
|
|
149
|
+
disconnect,
|
|
150
|
+
emit: ()=>{
|
|
151
|
+
throw new core.MethodNotImplementedError('emit');
|
|
152
|
+
},
|
|
153
|
+
eventNames: ()=>{
|
|
154
|
+
return [];
|
|
155
|
+
},
|
|
156
|
+
get isConnected () {
|
|
157
|
+
return isConnected();
|
|
158
|
+
},
|
|
159
|
+
listenerCount: ()=>{
|
|
160
|
+
return 0;
|
|
161
|
+
},
|
|
162
|
+
listeners: ()=>{
|
|
163
|
+
return [];
|
|
164
|
+
},
|
|
165
|
+
off: ()=>{
|
|
166
|
+
throw new core.MethodNotImplementedError('off');
|
|
167
|
+
},
|
|
168
|
+
on,
|
|
169
|
+
once: ()=>{
|
|
170
|
+
throw new core.MethodNotImplementedError('once');
|
|
171
|
+
},
|
|
172
|
+
providers: [],
|
|
173
|
+
get publicKey () {
|
|
174
|
+
return getPublicKey();
|
|
175
|
+
},
|
|
176
|
+
removeAllListeners: ()=>{
|
|
177
|
+
throw new core.MethodNotImplementedError('removeAllListeners');
|
|
178
|
+
},
|
|
179
|
+
removeListener: ()=>{
|
|
180
|
+
throw new core.MethodNotImplementedError('removeListener');
|
|
181
|
+
},
|
|
182
|
+
signAllTransactions,
|
|
183
|
+
signAndSendTransaction,
|
|
184
|
+
signMessage,
|
|
185
|
+
signTransaction
|
|
186
|
+
};
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
const createWalletProviderFromSolanaStandardWallet = ({ wallet })=>{
|
|
190
|
+
const connect = async ()=>{
|
|
191
|
+
const signer = await getSigner();
|
|
192
|
+
const result = await signer.connect();
|
|
193
|
+
return {
|
|
194
|
+
addresses: (result == null ? void 0 : result.address) ? [
|
|
195
|
+
result.address
|
|
196
|
+
] : []
|
|
197
|
+
};
|
|
198
|
+
};
|
|
199
|
+
const disconnect = async ()=>{
|
|
200
|
+
const signer = await getSigner();
|
|
201
|
+
await signer.disconnect();
|
|
202
|
+
};
|
|
203
|
+
const getConnectedAddresses = async ()=>{
|
|
204
|
+
const signer = await getSigner();
|
|
205
|
+
if (!signer.isConnected) {
|
|
206
|
+
await signer.connect();
|
|
207
|
+
}
|
|
208
|
+
return {
|
|
209
|
+
addresses: wallet.accounts.map((account)=>account.address)
|
|
210
|
+
};
|
|
211
|
+
};
|
|
212
|
+
const getSigner = async (walletAccount)=>{
|
|
213
|
+
if (walletAccount) {
|
|
214
|
+
await client.assertWalletAccountSigningAvailability(walletAccount);
|
|
215
|
+
}
|
|
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
|
|
242
|
+
});
|
|
243
|
+
return {
|
|
244
|
+
chain: sdkApiCore.ChainEnum.Sol,
|
|
245
|
+
messageToSign,
|
|
246
|
+
signedMessage: signedMessage.signature
|
|
247
|
+
};
|
|
248
|
+
};
|
|
249
|
+
const signMessage = async ({ message, walletAccount })=>{
|
|
250
|
+
const signer = await getSigner(walletAccount);
|
|
251
|
+
const encodedMessage = new TextEncoder().encode(message);
|
|
252
|
+
const signedMessage = await signer.signMessage(encodedMessage, 'utf8');
|
|
253
|
+
core.assertDefined(signedMessage, 'Failed to sign message');
|
|
254
|
+
return {
|
|
255
|
+
signature: core.bufferToBase64(signedMessage.signature)
|
|
256
|
+
};
|
|
257
|
+
};
|
|
258
|
+
return {
|
|
259
|
+
chain: 'SOL',
|
|
260
|
+
connect,
|
|
261
|
+
disconnect,
|
|
262
|
+
getConnectedAddresses,
|
|
263
|
+
getSigner,
|
|
264
|
+
getWalletProviderType: ()=>sdkApiCore.WalletProviderEnum.BrowserExtension,
|
|
265
|
+
groupKey: core.formatWalletProviderGroupKey(wallet.name),
|
|
266
|
+
key: core.formatWalletProviderKey(wallet.name, sdkApiCore.ChainEnum.Sol),
|
|
267
|
+
metadata: {
|
|
268
|
+
displayName: wallet.name,
|
|
269
|
+
icon: wallet.icon
|
|
270
|
+
},
|
|
271
|
+
proveOwnership,
|
|
272
|
+
signMessage
|
|
273
|
+
};
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
const hasAllRequiredFeatures = (wallet)=>{
|
|
277
|
+
var _wallet_features, _wallet_features1, _wallet_features2, _wallet_features3;
|
|
278
|
+
return Boolean(((_wallet_features = wallet.features) == null ? void 0 : _wallet_features['standard:events']) && ((_wallet_features1 = wallet.features) == null ? void 0 : _wallet_features1['standard:connect']) && ((_wallet_features2 = wallet.features) == null ? void 0 : _wallet_features2['solana:signTransaction']) && ((_wallet_features3 = wallet.features) == null ? void 0 : _wallet_features3['solana:signMessage']));
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
const SOLANA_WALLET_STANDARD_EXTENSION_KEY = 'solanaWalletStandard';
|
|
282
|
+
const addSolanaWalletStandardExtension = (client)=>{
|
|
283
|
+
if (core.hasExtension(client, SOLANA_WALLET_STANDARD_EXTENSION_KEY)) {
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
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);
|
|
292
|
+
walletProviderRegistry.register({
|
|
293
|
+
priority: core.WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,
|
|
294
|
+
walletProvider
|
|
295
|
+
});
|
|
296
|
+
});
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
exports.addSolanaWalletStandardExtension = addSolanaWalletStandardExtension;
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import { MethodNotImplementedError, assertDefined, formatWalletProviderKey, formatWalletProviderGroupKey, bufferToBase64, getClient, getCore, createApiClient, formatSignInMessage, hasExtension, getWalletProviderRegistry, assignClient, WalletProviderPriority } from '@dynamic-labs-sdk/client/core';
|
|
2
|
+
import { getWallets } from '@wallet-standard/app';
|
|
3
|
+
import { assertWalletAccountSigningAvailability } from '@dynamic-labs-sdk/client';
|
|
4
|
+
import { WalletProviderEnum, ChainEnum } from '@dynamic-labs/sdk-api-core';
|
|
5
|
+
import { VersionedTransaction, Transaction, PublicKey } from '@solana/web3.js';
|
|
6
|
+
|
|
7
|
+
const isVersionedTransaction = (transaction)=>!('instructions' in transaction);
|
|
8
|
+
|
|
9
|
+
const getFeaturesForSolanaStandardWallet = (wallet)=>{
|
|
10
|
+
return wallet.features;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const createSolanaSignerFromSolanaStandardWallet = (wallet)=>{
|
|
14
|
+
const features = getFeaturesForSolanaStandardWallet(wallet);
|
|
15
|
+
const getPublicKey = ()=>{
|
|
16
|
+
var _wallet_accounts_, _wallet_accounts;
|
|
17
|
+
if (!((_wallet_accounts = wallet.accounts) == null ? void 0 : (_wallet_accounts_ = _wallet_accounts[0]) == null ? void 0 : _wallet_accounts_.publicKey)) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
return new PublicKey(wallet.accounts[0].publicKey);
|
|
21
|
+
};
|
|
22
|
+
const getChain = ()=>{
|
|
23
|
+
// TODO: add support for getting the chain from the provider
|
|
24
|
+
// const currentNetwork = provider.getSelectedNetwork();
|
|
25
|
+
// assertDefined(currentNetwork, 'Network not found');
|
|
26
|
+
// const cluster = currentNetwork.cluster ?? 'mainnet';
|
|
27
|
+
const cluster = 'mainnet';
|
|
28
|
+
return `solana:${cluster}`;
|
|
29
|
+
};
|
|
30
|
+
const isConnected = ()=>{
|
|
31
|
+
var _wallet_accounts;
|
|
32
|
+
return ((_wallet_accounts = wallet.accounts) == null ? void 0 : _wallet_accounts.length) > 0;
|
|
33
|
+
};
|
|
34
|
+
const getCurrentAccount = async ()=>{
|
|
35
|
+
var _wallet_accounts;
|
|
36
|
+
if (!isConnected()) {
|
|
37
|
+
await connect();
|
|
38
|
+
}
|
|
39
|
+
const account = (_wallet_accounts = wallet.accounts) == null ? void 0 : _wallet_accounts[0];
|
|
40
|
+
assertDefined(account, 'No connected accounts found');
|
|
41
|
+
return account;
|
|
42
|
+
};
|
|
43
|
+
const connect = async ()=>{
|
|
44
|
+
var _features_standardconnect, _result_accounts;
|
|
45
|
+
const autoConnectedAccounts = wallet.accounts;
|
|
46
|
+
// some wallets like Farcaster will auto inject the account into the wallet object
|
|
47
|
+
// instead of returning it from the connect method
|
|
48
|
+
// so we need to check for that first
|
|
49
|
+
if ((autoConnectedAccounts == null ? void 0 : autoConnectedAccounts.length) && autoConnectedAccounts[0].publicKey && autoConnectedAccounts[0].address) {
|
|
50
|
+
return {
|
|
51
|
+
address: autoConnectedAccounts[0].address,
|
|
52
|
+
publicKey: autoConnectedAccounts[0].publicKey
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const connectMethod = (_features_standardconnect = features['standard:connect']) == null ? void 0 : _features_standardconnect.connect;
|
|
56
|
+
assertDefined(connectMethod, 'connect method not found in wallet features');
|
|
57
|
+
const result = await connectMethod({
|
|
58
|
+
silent: false
|
|
59
|
+
});
|
|
60
|
+
const connectedAccount = result == null ? void 0 : (_result_accounts = result.accounts) == null ? void 0 : _result_accounts[0];
|
|
61
|
+
assertDefined(connectedAccount, 'No connected accounts');
|
|
62
|
+
return {
|
|
63
|
+
address: connectedAccount.address,
|
|
64
|
+
publicKey: connectedAccount.publicKey
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
const disconnect = async ()=>{
|
|
68
|
+
var _features_standarddisconnect;
|
|
69
|
+
const disconnectMethod = (_features_standarddisconnect = features['standard:disconnect']) == null ? void 0 : _features_standarddisconnect.disconnect;
|
|
70
|
+
assertDefined(disconnectMethod, 'disconnect method not found in wallet features');
|
|
71
|
+
await disconnectMethod();
|
|
72
|
+
};
|
|
73
|
+
const on = (event, listener)=>{
|
|
74
|
+
var _features_standardevents;
|
|
75
|
+
const onMethod = (_features_standardevents = features['standard:events']) == null ? void 0 : _features_standardevents.on;
|
|
76
|
+
if (!onMethod) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (event !== 'accountChanged') {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const wrappedListener = (prop)=>{
|
|
83
|
+
var _prop_accounts_, _prop_accounts;
|
|
84
|
+
const publicKey = (_prop_accounts = prop.accounts) == null ? void 0 : (_prop_accounts_ = _prop_accounts[0]) == null ? void 0 : _prop_accounts_.publicKey;
|
|
85
|
+
if (publicKey) {
|
|
86
|
+
listener(new TextDecoder().decode(publicKey));
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
// 'change' is the only event that is supported by the wallet standard
|
|
90
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
91
|
+
return onMethod('change', wrappedListener);
|
|
92
|
+
};
|
|
93
|
+
const signTransaction = async (transaction)=>{
|
|
94
|
+
var _features_solanasignTransaction;
|
|
95
|
+
const signMessageMethod = (_features_solanasignTransaction = features['solana:signTransaction']) == null ? void 0 : _features_solanasignTransaction.signTransaction;
|
|
96
|
+
assertDefined(signMessageMethod, 'signTransaction method not found in wallet features');
|
|
97
|
+
const account = await getCurrentAccount();
|
|
98
|
+
const signTransactionResult = await signMessageMethod({
|
|
99
|
+
account,
|
|
100
|
+
chain: getChain(),
|
|
101
|
+
transaction: transaction.serialize({
|
|
102
|
+
requireAllSignatures: false
|
|
103
|
+
})
|
|
104
|
+
});
|
|
105
|
+
const signedTransaction = signTransactionResult[0].signedTransaction;
|
|
106
|
+
if (isVersionedTransaction(transaction)) {
|
|
107
|
+
return VersionedTransaction.deserialize(signedTransaction);
|
|
108
|
+
}
|
|
109
|
+
return Transaction.from(signedTransaction);
|
|
110
|
+
};
|
|
111
|
+
const signAllTransactions = async (transactions)=>Promise.all(transactions.map(signTransaction));
|
|
112
|
+
const signAndSendTransaction = async (transaction)=>{
|
|
113
|
+
var _features_solanasignAndSendTransaction;
|
|
114
|
+
const signAndSendTransactionMethod = (_features_solanasignAndSendTransaction = features['solana:signAndSendTransaction']) == null ? void 0 : _features_solanasignAndSendTransaction.signAndSendTransaction;
|
|
115
|
+
assertDefined(signAndSendTransactionMethod, 'signAndSendTransaction method not found in wallet features');
|
|
116
|
+
const account = await getCurrentAccount();
|
|
117
|
+
const signedTransactions = await signAndSendTransactionMethod({
|
|
118
|
+
account,
|
|
119
|
+
chain: getChain(),
|
|
120
|
+
transaction: transaction.serialize({
|
|
121
|
+
requireAllSignatures: false
|
|
122
|
+
})
|
|
123
|
+
});
|
|
124
|
+
const [{ signature }] = signedTransactions;
|
|
125
|
+
return {
|
|
126
|
+
signature: new TextDecoder().decode(signature)
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
const signMessage = async (message)=>{
|
|
130
|
+
var _features_solanasignMessage;
|
|
131
|
+
const signMessageMethod = (_features_solanasignMessage = features['solana:signMessage']) == null ? void 0 : _features_solanasignMessage.signMessage;
|
|
132
|
+
assertDefined(signMessageMethod, 'signMessage method not found in wallet features');
|
|
133
|
+
const account = await getCurrentAccount();
|
|
134
|
+
const messages = await signMessageMethod({
|
|
135
|
+
account,
|
|
136
|
+
message
|
|
137
|
+
});
|
|
138
|
+
return {
|
|
139
|
+
signature: messages[0].signature
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
return {
|
|
143
|
+
addListener: ()=>{
|
|
144
|
+
throw new MethodNotImplementedError('addListener');
|
|
145
|
+
},
|
|
146
|
+
connect,
|
|
147
|
+
disconnect,
|
|
148
|
+
emit: ()=>{
|
|
149
|
+
throw new MethodNotImplementedError('emit');
|
|
150
|
+
},
|
|
151
|
+
eventNames: ()=>{
|
|
152
|
+
return [];
|
|
153
|
+
},
|
|
154
|
+
get isConnected () {
|
|
155
|
+
return isConnected();
|
|
156
|
+
},
|
|
157
|
+
listenerCount: ()=>{
|
|
158
|
+
return 0;
|
|
159
|
+
},
|
|
160
|
+
listeners: ()=>{
|
|
161
|
+
return [];
|
|
162
|
+
},
|
|
163
|
+
off: ()=>{
|
|
164
|
+
throw new MethodNotImplementedError('off');
|
|
165
|
+
},
|
|
166
|
+
on,
|
|
167
|
+
once: ()=>{
|
|
168
|
+
throw new MethodNotImplementedError('once');
|
|
169
|
+
},
|
|
170
|
+
providers: [],
|
|
171
|
+
get publicKey () {
|
|
172
|
+
return getPublicKey();
|
|
173
|
+
},
|
|
174
|
+
removeAllListeners: ()=>{
|
|
175
|
+
throw new MethodNotImplementedError('removeAllListeners');
|
|
176
|
+
},
|
|
177
|
+
removeListener: ()=>{
|
|
178
|
+
throw new MethodNotImplementedError('removeListener');
|
|
179
|
+
},
|
|
180
|
+
signAllTransactions,
|
|
181
|
+
signAndSendTransaction,
|
|
182
|
+
signMessage,
|
|
183
|
+
signTransaction
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
const createWalletProviderFromSolanaStandardWallet = ({ wallet })=>{
|
|
188
|
+
const connect = async ()=>{
|
|
189
|
+
const signer = await getSigner();
|
|
190
|
+
const result = await signer.connect();
|
|
191
|
+
return {
|
|
192
|
+
addresses: (result == null ? void 0 : result.address) ? [
|
|
193
|
+
result.address
|
|
194
|
+
] : []
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
const disconnect = async ()=>{
|
|
198
|
+
const signer = await getSigner();
|
|
199
|
+
await signer.disconnect();
|
|
200
|
+
};
|
|
201
|
+
const getConnectedAddresses = async ()=>{
|
|
202
|
+
const signer = await getSigner();
|
|
203
|
+
if (!signer.isConnected) {
|
|
204
|
+
await signer.connect();
|
|
205
|
+
}
|
|
206
|
+
return {
|
|
207
|
+
addresses: wallet.accounts.map((account)=>account.address)
|
|
208
|
+
};
|
|
209
|
+
};
|
|
210
|
+
const getSigner = async (walletAccount)=>{
|
|
211
|
+
if (walletAccount) {
|
|
212
|
+
await assertWalletAccountSigningAvailability(walletAccount);
|
|
213
|
+
}
|
|
214
|
+
return createSolanaSignerFromSolanaStandardWallet(wallet);
|
|
215
|
+
};
|
|
216
|
+
const proveOwnership = async (walletAccount)=>{
|
|
217
|
+
var _core_metadata;
|
|
218
|
+
const client = getClient(walletAccount);
|
|
219
|
+
const core = getCore(client);
|
|
220
|
+
const apiClient = createApiClient(client);
|
|
221
|
+
const appUrl = (_core_metadata = core.metadata) == null ? void 0 : _core_metadata.url;
|
|
222
|
+
assertDefined(appUrl, 'App URL is not set');
|
|
223
|
+
const url = new URL(appUrl);
|
|
224
|
+
const { nonce } = await apiClient.getNonce({
|
|
225
|
+
environmentId: core.environmentId
|
|
226
|
+
});
|
|
227
|
+
assertDefined(nonce, 'Failed to get nonce');
|
|
228
|
+
const messageToSign = await formatSignInMessage({
|
|
229
|
+
address: walletAccount.address,
|
|
230
|
+
blockchainName: 'Solana',
|
|
231
|
+
domain: url.host,
|
|
232
|
+
issuedAt: new Date().toISOString(),
|
|
233
|
+
nonce,
|
|
234
|
+
requestId: core.environmentId,
|
|
235
|
+
uri: url.toString()
|
|
236
|
+
});
|
|
237
|
+
const signedMessage = await signMessage({
|
|
238
|
+
message: messageToSign,
|
|
239
|
+
walletAccount
|
|
240
|
+
});
|
|
241
|
+
return {
|
|
242
|
+
chain: ChainEnum.Sol,
|
|
243
|
+
messageToSign,
|
|
244
|
+
signedMessage: signedMessage.signature
|
|
245
|
+
};
|
|
246
|
+
};
|
|
247
|
+
const signMessage = async ({ message, walletAccount })=>{
|
|
248
|
+
const signer = await getSigner(walletAccount);
|
|
249
|
+
const encodedMessage = new TextEncoder().encode(message);
|
|
250
|
+
const signedMessage = await signer.signMessage(encodedMessage, 'utf8');
|
|
251
|
+
assertDefined(signedMessage, 'Failed to sign message');
|
|
252
|
+
return {
|
|
253
|
+
signature: bufferToBase64(signedMessage.signature)
|
|
254
|
+
};
|
|
255
|
+
};
|
|
256
|
+
return {
|
|
257
|
+
chain: 'SOL',
|
|
258
|
+
connect,
|
|
259
|
+
disconnect,
|
|
260
|
+
getConnectedAddresses,
|
|
261
|
+
getSigner,
|
|
262
|
+
getWalletProviderType: ()=>WalletProviderEnum.BrowserExtension,
|
|
263
|
+
groupKey: formatWalletProviderGroupKey(wallet.name),
|
|
264
|
+
key: formatWalletProviderKey(wallet.name, ChainEnum.Sol),
|
|
265
|
+
metadata: {
|
|
266
|
+
displayName: wallet.name,
|
|
267
|
+
icon: wallet.icon
|
|
268
|
+
},
|
|
269
|
+
proveOwnership,
|
|
270
|
+
signMessage
|
|
271
|
+
};
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
const hasAllRequiredFeatures = (wallet)=>{
|
|
275
|
+
var _wallet_features, _wallet_features1, _wallet_features2, _wallet_features3;
|
|
276
|
+
return Boolean(((_wallet_features = wallet.features) == null ? void 0 : _wallet_features['standard:events']) && ((_wallet_features1 = wallet.features) == null ? void 0 : _wallet_features1['standard:connect']) && ((_wallet_features2 = wallet.features) == null ? void 0 : _wallet_features2['solana:signTransaction']) && ((_wallet_features3 = wallet.features) == null ? void 0 : _wallet_features3['solana:signMessage']));
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
const SOLANA_WALLET_STANDARD_EXTENSION_KEY = 'solanaWalletStandard';
|
|
280
|
+
const addSolanaWalletStandardExtension = (client)=>{
|
|
281
|
+
if (hasExtension(client, SOLANA_WALLET_STANDARD_EXTENSION_KEY)) {
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
const walletProviderRegistry = getWalletProviderRegistry(client);
|
|
285
|
+
const walletStandardWallet = getWallets().get().filter(hasAllRequiredFeatures);
|
|
286
|
+
walletStandardWallet.forEach((wallet)=>{
|
|
287
|
+
const walletProvider = assignClient(createWalletProviderFromSolanaStandardWallet({
|
|
288
|
+
wallet
|
|
289
|
+
}), client);
|
|
290
|
+
walletProviderRegistry.register({
|
|
291
|
+
priority: WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,
|
|
292
|
+
walletProvider
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
export { addSolanaWalletStandardExtension as a };
|
package/index.cjs.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./src/exports/index";
|
package/index.cjs.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var addSolanaWalletStandardExtension = require('./addSolanaWalletStandardExtension.cjs.js');
|
|
4
|
+
var client = require('@dynamic-labs-sdk/client');
|
|
5
|
+
var core = require('@dynamic-labs-sdk/client/core');
|
|
6
|
+
require('@wallet-standard/app');
|
|
7
|
+
require('@dynamic-labs/sdk-api-core');
|
|
8
|
+
require('@solana/web3.js');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Adds all solana wallets to the client.
|
|
12
|
+
*
|
|
13
|
+
* @param client - The client to add the solana wallets to.
|
|
14
|
+
*/ const addSolanaExtension = (client)=>{
|
|
15
|
+
addSolanaWalletStandardExtension.addSolanaWalletStandardExtension(client);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
class NotSolanaProviderError extends client.BaseError {
|
|
19
|
+
constructor(params){
|
|
20
|
+
super({
|
|
21
|
+
cause: null,
|
|
22
|
+
code: 'not_solana_provider_error',
|
|
23
|
+
docsUrl: null,
|
|
24
|
+
name: 'NotSolanaProviderError',
|
|
25
|
+
shortMessage: 'Provider is not a Solana wallet provider'
|
|
26
|
+
});
|
|
27
|
+
this.providerKey = params.providerKey;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const isSolanaWalletProvider = (provider)=>{
|
|
32
|
+
return provider.chain === 'SOL';
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const getSigner = async (walletAccount)=>{
|
|
36
|
+
const provider = core.getWalletProviderFromWalletAccount(walletAccount);
|
|
37
|
+
if (!isSolanaWalletProvider(provider)) {
|
|
38
|
+
throw new NotSolanaProviderError({
|
|
39
|
+
providerKey: provider.key
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return provider.getSigner(walletAccount);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const isSolanaWalletAccount = (walletAccount)=>{
|
|
46
|
+
return walletAccount.chain === 'SOL';
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
exports.NotSolanaProviderError = NotSolanaProviderError;
|
|
50
|
+
exports.addSolanaExtension = addSolanaExtension;
|
|
51
|
+
exports.getSigner = getSigner;
|
|
52
|
+
exports.isSolanaWalletAccount = isSolanaWalletAccount;
|
|
53
|
+
exports.isSolanaWalletProvider = isSolanaWalletProvider;
|
package/index.esm.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./src/exports/index";
|
package/index.esm.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { a as addSolanaWalletStandardExtension } from './addSolanaWalletStandardExtension.esm.js';
|
|
2
|
+
import { BaseError } from '@dynamic-labs-sdk/client';
|
|
3
|
+
import { getWalletProviderFromWalletAccount } from '@dynamic-labs-sdk/client/core';
|
|
4
|
+
import '@wallet-standard/app';
|
|
5
|
+
import '@dynamic-labs/sdk-api-core';
|
|
6
|
+
import '@solana/web3.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Adds all solana wallets to the client.
|
|
10
|
+
*
|
|
11
|
+
* @param client - The client to add the solana wallets to.
|
|
12
|
+
*/ const addSolanaExtension = (client)=>{
|
|
13
|
+
addSolanaWalletStandardExtension(client);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
class NotSolanaProviderError extends BaseError {
|
|
17
|
+
constructor(params){
|
|
18
|
+
super({
|
|
19
|
+
cause: null,
|
|
20
|
+
code: 'not_solana_provider_error',
|
|
21
|
+
docsUrl: null,
|
|
22
|
+
name: 'NotSolanaProviderError',
|
|
23
|
+
shortMessage: 'Provider is not a Solana wallet provider'
|
|
24
|
+
});
|
|
25
|
+
this.providerKey = params.providerKey;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const isSolanaWalletProvider = (provider)=>{
|
|
30
|
+
return provider.chain === 'SOL';
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const getSigner = async (walletAccount)=>{
|
|
34
|
+
const provider = getWalletProviderFromWalletAccount(walletAccount);
|
|
35
|
+
if (!isSolanaWalletProvider(provider)) {
|
|
36
|
+
throw new NotSolanaProviderError({
|
|
37
|
+
providerKey: provider.key
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return provider.getSigner(walletAccount);
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const isSolanaWalletAccount = (walletAccount)=>{
|
|
44
|
+
return walletAccount.chain === 'SOL';
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export { NotSolanaProviderError, addSolanaExtension, getSigner, isSolanaWalletAccount, isSolanaWalletProvider };
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dynamic-labs-sdk/solana",
|
|
3
|
+
"version": "0.0.1-alpha.10",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./index.cjs.js",
|
|
6
|
+
"module": "./index.esm.js",
|
|
7
|
+
"types": "./index.esm.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
"./package.json": "./package.json",
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./index.esm.d.ts",
|
|
12
|
+
"import": "./index.esm.js",
|
|
13
|
+
"default": "./index.cjs.js"
|
|
14
|
+
},
|
|
15
|
+
"./walletStandard": {
|
|
16
|
+
"types": "./walletStandard.esm.d.ts",
|
|
17
|
+
"import": "./walletStandard.esm.js",
|
|
18
|
+
"default": "./walletStandard.cjs.js"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@dynamic-labs-sdk/client": "0.0.1-alpha.10",
|
|
23
|
+
"@dynamic-labs/sdk-api-core": "0.0.702",
|
|
24
|
+
"@solana/web3.js": "1.98.1",
|
|
25
|
+
"@wallet-standard/app": "1.0.1",
|
|
26
|
+
"@wallet-standard/base": "1.0.1",
|
|
27
|
+
"@wallet-standard/features": "1.0.3",
|
|
28
|
+
"@wallet-standard/experimental-features": "0.1.1",
|
|
29
|
+
"eventemitter3": "^5.0.1"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solana signer specific types
|
|
3
|
+
*/
|
|
4
|
+
import { type SendOptions, type Transaction, type TransactionSignature, type VersionedTransaction } from '@solana/web3.js';
|
|
5
|
+
import type EventEmitter from 'eventemitter3';
|
|
6
|
+
type PublicKey = {
|
|
7
|
+
toString: () => string;
|
|
8
|
+
};
|
|
9
|
+
export type ConnectionResult = {
|
|
10
|
+
address: string;
|
|
11
|
+
publicKey: PublicKey;
|
|
12
|
+
};
|
|
13
|
+
export type SolanaEvents = {
|
|
14
|
+
accountChanged(publicKey: string): unknown;
|
|
15
|
+
activeWalletDidChange(publicKey: string): unknown;
|
|
16
|
+
connect(...args: unknown[]): unknown;
|
|
17
|
+
disconnect(...args: unknown[]): unknown;
|
|
18
|
+
};
|
|
19
|
+
export type SignedMessage = {
|
|
20
|
+
signature: Uint8Array;
|
|
21
|
+
};
|
|
22
|
+
export type SolanaSigner = EventEmitter<SolanaEvents> & {
|
|
23
|
+
connect: (args?: {
|
|
24
|
+
onlyIfTrusted: boolean;
|
|
25
|
+
}) => Promise<ConnectionResult>;
|
|
26
|
+
disconnect(): Promise<void>;
|
|
27
|
+
isConnected: boolean;
|
|
28
|
+
providers: SolanaSigner[];
|
|
29
|
+
publicKey?: {
|
|
30
|
+
toBytes(): Uint8Array;
|
|
31
|
+
};
|
|
32
|
+
signAllTransactions<T extends Transaction | VersionedTransaction>(transactions: T[]): Promise<T[]>;
|
|
33
|
+
signAndSendTransaction<T extends Transaction | VersionedTransaction>(transaction: T, options?: SendOptions): Promise<{
|
|
34
|
+
signature: TransactionSignature;
|
|
35
|
+
}>;
|
|
36
|
+
signMessage(message: Uint8Array, encoding?: string): Promise<SignedMessage>;
|
|
37
|
+
signTransaction<T extends Transaction | VersionedTransaction>(transaction: T): Promise<T>;
|
|
38
|
+
};
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=SolanaSigner.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolanaSigner.types.d.ts","sourceRoot":"","sources":["../../../../packages/solana/src/SolanaSigner.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAE9C,KAAK,SAAS,GAAG;IAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;CAAE,CAAC;AAE5C,MAAM,MAAM,gBAAgB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC;AAEzE,MAAM,MAAM,YAAY,GAAG;IACzB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3C,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAClD,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACrC,UAAU,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,GAAG;IACtD,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;QAAE,aAAa,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC1E,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE;QAAE,OAAO,IAAI,UAAU,CAAA;KAAE,CAAC;IACtC,mBAAmB,CAAC,CAAC,SAAS,WAAW,GAAG,oBAAoB,EAC9D,YAAY,EAAE,CAAC,EAAE,GAChB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAChB,sBAAsB,CAAC,CAAC,SAAS,WAAW,GAAG,oBAAoB,EACjE,WAAW,EAAE,CAAC,EACd,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC;QAAE,SAAS,EAAE,oBAAoB,CAAA;KAAE,CAAC,CAAC;IAChD,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5E,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,oBAAoB,EAC1D,WAAW,EAAE,CAAC,GACb,OAAO,CAAC,CAAC,CAAC,CAAC;CACf,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solana wallet provider specific types
|
|
3
|
+
*/
|
|
4
|
+
import type { WalletAccount } from '@dynamic-labs-sdk/client';
|
|
5
|
+
import type { WalletProvider } from '@dynamic-labs-sdk/client/core';
|
|
6
|
+
import type { SolanaSigner } from './SolanaSigner.types';
|
|
7
|
+
export type SolanaWalletProvider = Omit<WalletProvider, 'chain'> & {
|
|
8
|
+
chain: 'SOL';
|
|
9
|
+
getSigner(walletAccount?: WalletAccount): Promise<SolanaSigner>;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=SolanaWalletProvider.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolanaWalletProvider.types.d.ts","sourceRoot":"","sources":["../../../../packages/solana/src/SolanaWalletProvider.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;IACjE,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACjE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DynamicClient } from '@dynamic-labs-sdk/client';
|
|
2
|
+
/**
|
|
3
|
+
* Adds all solana wallets to the client.
|
|
4
|
+
*
|
|
5
|
+
* @param client - The client to add the solana wallets to.
|
|
6
|
+
*/
|
|
7
|
+
export declare const addSolanaExtension: (client: DynamicClient) => void;
|
|
8
|
+
//# sourceMappingURL=addSolanaExtension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addSolanaExtension.d.ts","sourceRoot":"","sources":["../../../../../packages/solana/src/addSolanaExtension/addSolanaExtension.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI9D;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,WAAY,aAAa,KAAG,IAE1D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/solana/src/addSolanaExtension/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotSolanaProviderError.d.ts","sourceRoot":"","sources":["../../../../../../packages/solana/src/errors/NotSolanaProviderError/NotSolanaProviderError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,qBAAa,sBAAuB,SAAQ,SAAS;IACnD,SAAgB,WAAW,EAAE,MAAM,CAAC;gBAExB,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE;CAW5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/solana/src/errors/NotSolanaProviderError/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { addSolanaExtension } from '../addSolanaExtension';
|
|
2
|
+
export { NotSolanaProviderError } from '../errors/NotSolanaProviderError';
|
|
3
|
+
export { getSigner } from '../getSigner';
|
|
4
|
+
export { isSolanaWalletAccount } from '../isSolanaWalletAccount';
|
|
5
|
+
export { isSolanaWalletProvider } from '../isSolanaWalletProvider';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/solana/src/exports/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walletStandard.d.ts","sourceRoot":"","sources":["../../../../../packages/solana/src/exports/walletStandard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,oDAAoD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSigner.d.ts","sourceRoot":"","sources":["../../../../../packages/solana/src/getSigner/getSigner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAM9D,eAAO,MAAM,SAAS,kBAAyB,aAAa,0DAQ3D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/solana/src/getSigner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/solana/src/isSolanaWalletAccount/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isSolanaWalletAccount.d.ts","sourceRoot":"","sources":["../../../../../packages/solana/src/isSolanaWalletAccount/isSolanaWalletAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,eAAO,MAAM,qBAAqB,kBACjB,aAAa,KAC3B,OAEF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/solana/src/isSolanaWalletProvider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { WalletProvider } from '@dynamic-labs-sdk/client';
|
|
2
|
+
import type { SolanaWalletProvider } from '../SolanaWalletProvider.types';
|
|
3
|
+
export declare const isSolanaWalletProvider: (provider: WalletProvider) => provider is SolanaWalletProvider;
|
|
4
|
+
//# sourceMappingURL=isSolanaWalletProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isSolanaWalletProvider.d.ts","sourceRoot":"","sources":["../../../../../packages/solana/src/isSolanaWalletProvider/isSolanaWalletProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,eAAO,MAAM,sBAAsB,aACvB,cAAc,KACvB,QAAQ,IAAI,oBAEd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/solana/src/utils/isVersionedTransaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isVersionedTransaction.d.ts","sourceRoot":"","sources":["../../../../../../packages/solana/src/utils/isVersionedTransaction/isVersionedTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,eAAO,MAAM,sBAAsB,gBACpB,oBAAoB,GAAG,WAAW,KAC9C,WAAW,IAAI,oBAAwD,CAAC"}
|
package/src/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { DynamicClient } from '@dynamic-labs-sdk/client';
|
|
2
|
+
export declare const SOLANA_WALLET_STANDARD_EXTENSION_KEY = "solanaWalletStandard";
|
|
3
|
+
export declare const addSolanaWalletStandardExtension: (client: DynamicClient) => void;
|
|
4
|
+
//# sourceMappingURL=addSolanaWalletStandardExtension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addSolanaWalletStandardExtension.d.ts","sourceRoot":"","sources":["../../../../../../packages/solana/src/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAY9D,eAAO,MAAM,oCAAoC,yBAAyB,CAAC;AAE3E,eAAO,MAAM,gCAAgC,WACnC,aAAa,KACpB,IAwBF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/solana/src/walletStandard/addSolanaWalletStandardExtension/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Wallet } from '@wallet-standard/base';
|
|
2
|
+
import type { SolanaSigner } from '../../../SolanaSigner.types';
|
|
3
|
+
export declare const createSolanaSignerFromSolanaStandardWallet: (wallet: Wallet) => SolanaSigner;
|
|
4
|
+
//# sourceMappingURL=createSolanaSignerFromSolanaStandardWallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createSolanaSignerFromSolanaStandardWallet.d.ts","sourceRoot":"","sources":["../../../../../../../packages/solana/src/walletStandard/utils/createSolanaSignerFromSolanaStandardWallet/createSolanaSignerFromSolanaStandardWallet.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAI9E,eAAO,MAAM,0CAA0C,WAC7C,MAAM,KACb,YA0OF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/solana/src/walletStandard/utils/createSolanaSignerFromSolanaStandardWallet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0CAA0C,EAAE,MAAM,8CAA8C,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Wallet } from '@wallet-standard/base';
|
|
2
|
+
import type { SolanaWalletProvider } from '../../../SolanaWalletProvider.types';
|
|
3
|
+
type CreateWalletProviderFromSolanaStandardWalletParams = {
|
|
4
|
+
wallet: Wallet;
|
|
5
|
+
};
|
|
6
|
+
export declare const createWalletProviderFromSolanaStandardWallet: ({ wallet, }: CreateWalletProviderFromSolanaStandardWalletParams) => SolanaWalletProvider;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=createWalletProviderFromSolanaStandardWallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createWalletProviderFromSolanaStandardWallet.d.ts","sourceRoot":"","sources":["../../../../../../../packages/solana/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAGhF,KAAK,kDAAkD,GAAG;IACxD,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AACF,eAAO,MAAM,4CAA4C,gBAEtD,kDAAkD,KAAG,oBA2GvD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/solana/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4CAA4C,EAAE,MAAM,gDAAgD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Wallet } from '@wallet-standard/base';
|
|
2
|
+
import type { SignAndSendTransactionFeature, SignMessageFeature, SignTransactionFeature } from '@wallet-standard/experimental-features';
|
|
3
|
+
import type { StandardConnectFeature, StandardDisconnectFeature, StandardEventsFeature } from '@wallet-standard/features';
|
|
4
|
+
type WalletStandardFeatures = {
|
|
5
|
+
'solana:signAndSendTransaction': SignAndSendTransactionFeature['experimental:signAndSendTransaction'];
|
|
6
|
+
'solana:signMessage': SignMessageFeature['experimental:signMessage'];
|
|
7
|
+
'solana:signTransaction': SignTransactionFeature['experimental:signTransaction'];
|
|
8
|
+
} & StandardConnectFeature & StandardDisconnectFeature & StandardEventsFeature;
|
|
9
|
+
export declare const getFeaturesForSolanaStandardWallet: (wallet: Wallet) => WalletStandardFeatures;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=getFeaturesForSolanaStandardWallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFeaturesForSolanaStandardWallet.d.ts","sourceRoot":"","sources":["../../../../../../../packages/solana/src/walletStandard/utils/getFeaturesForSolanaStandardWallet/getFeaturesForSolanaStandardWallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EACV,6BAA6B,EAC7B,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EACV,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AAEnC,KAAK,sBAAsB,GAAG;IAC5B,+BAA+B,EAAE,6BAA6B,CAAC,qCAAqC,CAAC,CAAC;IACtG,oBAAoB,EAAE,kBAAkB,CAAC,0BAA0B,CAAC,CAAC;IACrE,wBAAwB,EAAE,sBAAsB,CAAC,8BAA8B,CAAC,CAAC;CAClF,GAAG,sBAAsB,GACxB,yBAAyB,GACzB,qBAAqB,CAAC;AAExB,eAAO,MAAM,kCAAkC,WAAY,MAAM,KACrC,sBAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/solana/src/walletStandard/utils/getFeaturesForSolanaStandardWallet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasAllRequiredFeatures.d.ts","sourceRoot":"","sources":["../../../../../../../packages/solana/src/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,eAAO,MAAM,sBAAsB,WAAY,MAAM,KAAG,OAOvD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/solana/src/walletStandard/utils/hasAllRequiredFeatures/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./src/exports/walletStandard";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var addSolanaWalletStandardExtension = require('./addSolanaWalletStandardExtension.cjs.js');
|
|
4
|
+
require('@dynamic-labs-sdk/client/core');
|
|
5
|
+
require('@wallet-standard/app');
|
|
6
|
+
require('@dynamic-labs-sdk/client');
|
|
7
|
+
require('@dynamic-labs/sdk-api-core');
|
|
8
|
+
require('@solana/web3.js');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
exports.addSolanaWalletStandardExtension = addSolanaWalletStandardExtension.addSolanaWalletStandardExtension;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./src/exports/walletStandard";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { a as addSolanaWalletStandardExtension } from './addSolanaWalletStandardExtension.esm.js';
|
|
2
|
+
import '@dynamic-labs-sdk/client/core';
|
|
3
|
+
import '@wallet-standard/app';
|
|
4
|
+
import '@dynamic-labs-sdk/client';
|
|
5
|
+
import '@dynamic-labs/sdk-api-core';
|
|
6
|
+
import '@solana/web3.js';
|