@dynamic-labs/solana-core 4.0.0-alpha.3 → 4.0.0-alpha.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,265 @@
1
1
 
2
+ ## [4.0.0-alpha.31](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.30...v4.0.0-alpha.31) (2024-11-13)
3
+
4
+
5
+ ### Features
6
+
7
+ * allow passing telegram auth token into telegramSignIn function ([#7423](https://github.com/dynamic-labs/dynamic-auth/issues/7423)) ([4b8d594](https://github.com/dynamic-labs/dynamic-auth/commit/4b8d594984d1ac7851ce8d94fe4329ba94730f35))
8
+
9
+ ## [4.0.0-alpha.30](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.29...v4.0.0-alpha.30) (2024-11-13)
10
+
11
+
12
+ ### ⚠ BREAKING CHANGES
13
+
14
+ * check wallet limitations from metadata (#7413)
15
+
16
+ ### Bug Fixes
17
+
18
+ * confirmation ui disabled for solana signall and signTransaction ([#7403](https://github.com/dynamic-labs/dynamic-auth/issues/7403)) ([98a352a](https://github.com/dynamic-labs/dynamic-auth/commit/98a352a826202abad734f00df1b3d19080ecf1e2))
19
+ * get starknet wallets directly from window ([#7421](https://github.com/dynamic-labs/dynamic-auth/issues/7421)) ([13e24f7](https://github.com/dynamic-labs/dynamic-auth/commit/13e24f70accf7747f5137fc3f2b05c00939c3af3))
20
+ * issue with SollanaWalletConnectorWithConfig embedded wallets ([#7405](https://github.com/dynamic-labs/dynamic-auth/issues/7405)) ([f08ecd6](https://github.com/dynamic-labs/dynamic-auth/commit/f08ecd6955faf191177bb9833b7a594637a6c4cc))
21
+ * set override key in starknet injected connector ([#7420](https://github.com/dynamic-labs/dynamic-auth/issues/7420)) ([74b2887](https://github.com/dynamic-labs/dynamic-auth/commit/74b28874661b3bad1e0a0f92aa9d3c987dc71225))
22
+
23
+
24
+ * check wallet limitations from metadata ([#7413](https://github.com/dynamic-labs/dynamic-auth/issues/7413)) ([a419de6](https://github.com/dynamic-labs/dynamic-auth/commit/a419de643ea4ff240a27825c10670ba92589b71b))
25
+
26
+ ## [4.0.0-alpha.29](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.28...v4.0.0-alpha.29) (2024-11-07)
27
+
28
+ ## [4.0.0-alpha.28](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.27...v4.0.0-alpha.28) (2024-11-07)
29
+
30
+
31
+ ### ⚠ BREAKING CHANGES
32
+
33
+ * upgrade to starknet v6
34
+ See this guide for more details: https://starknetjs.com/docs/guides/migrate/
35
+ There are no code changes required on the Dynamic SDK side, however if you have installed the `starknet` package, you will need to upgrade to >= v6.11.0.
36
+
37
+ ### Features
38
+
39
+ * new transaction modal and ui for sign/signAll ([#7296](https://github.com/dynamic-labs/dynamic-auth/issues/7296)) ([05a8af1](https://github.com/dynamic-labs/dynamic-auth/commit/05a8af1eb772b2b8087ed96a54caf4b6ae8b79d2)), closes [#7297](https://github.com/dynamic-labs/dynamic-auth/issues/7297) [#7298](https://github.com/dynamic-labs/dynamic-auth/issues/7298)
40
+ * upgrade to starknet v6 ([#7189](https://github.com/dynamic-labs/dynamic-auth/issues/7189)) ([2a6e24e](https://github.com/dynamic-labs/dynamic-auth/commit/2a6e24e4178fcee671b381c28f6a681f4ce52c62))
41
+
42
+
43
+ ### Bug Fixes
44
+
45
+ * transaction confirmation modal popup ([#7368](https://github.com/dynamic-labs/dynamic-auth/issues/7368)) ([3c48658](https://github.com/dynamic-labs/dynamic-auth/commit/3c48658a62874d908bba8f06fb092ff5983ede16))
46
+
47
+ ## [4.0.0-alpha.27](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.26...v4.0.0-alpha.27) (2024-11-06)
48
+
49
+
50
+ ### Features
51
+
52
+ * allows adding connection configuration for solana connectors ([#7354](https://github.com/dynamic-labs/dynamic-auth/issues/7354)) ([01e35ee](https://github.com/dynamic-labs/dynamic-auth/commit/01e35ee5bfe4605df48e4188a753111efe483048))
53
+ * allows passing solana connection config to dynamic client ([#7357](https://github.com/dynamic-labs/dynamic-auth/issues/7357)) ([6da14ce](https://github.com/dynamic-labs/dynamic-auth/commit/6da14ceb481147aea31d192fe268be43a8af80e9))
54
+
55
+
56
+ ### Bug Fixes
57
+
58
+ * check legacy vs eip1599 tx in global connectivity ([#7341](https://github.com/dynamic-labs/dynamic-auth/issues/7341)) ([b223ea7](https://github.com/dynamic-labs/dynamic-auth/commit/b223ea7a5ed5637e11da1040c631c48bc23ba76d))
59
+ * global connectivity multiple transactions in a row ([#7342](https://github.com/dynamic-labs/dynamic-auth/issues/7342)) ([d13c1af](https://github.com/dynamic-labs/dynamic-auth/commit/d13c1afec6b3680961621d8317f55549b3ed428f))
60
+
61
+ ## [4.0.0-alpha.26](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.25...v4.0.0-alpha.26) (2024-11-04)
62
+
63
+ ## [4.0.0-alpha.25](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.24...v4.0.0-alpha.25) (2024-11-01)
64
+
65
+ ## [4.0.0-alpha.24](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.23...v4.0.0-alpha.24) (2024-10-31)
66
+
67
+
68
+ ### Bug Fixes
69
+
70
+ * prevent use-wallet-options from reading empty wallet-book ([#7319](https://github.com/dynamic-labs/dynamic-auth/issues/7319)) ([fc1269e](https://github.com/dynamic-labs/dynamic-auth/commit/fc1269ed2b59ee17fc528d24a4d34936eb20c02f))
71
+
72
+ ## [4.0.0-alpha.23](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.22...v4.0.0-alpha.23) (2024-10-31)
73
+
74
+
75
+ ### Features
76
+
77
+ * allow deletion of embedded wallets ([#7170](https://github.com/dynamic-labs/dynamic-auth/issues/7170)) ([40c5478](https://github.com/dynamic-labs/dynamic-auth/commit/40c54789594ba265a63b24f936da4e72b5b1c5b9))
78
+
79
+ ## [4.0.0-alpha.22](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.21...v4.0.0-alpha.22) (2024-10-30)
80
+
81
+
82
+ ### Features
83
+
84
+ * **QNTM-522:** add wallet details card ([#7239](https://github.com/dynamic-labs/dynamic-auth/issues/7239)) ([0181c87](https://github.com/dynamic-labs/dynamic-auth/commit/0181c8727af575620525b8ea47b196945c347846))
85
+
86
+
87
+ ### Bug Fixes
88
+
89
+ * update check for wallet provider event listeners support ([#7303](https://github.com/dynamic-labs/dynamic-auth/issues/7303)) ([c5f3766](https://github.com/dynamic-labs/dynamic-auth/commit/c5f376691c87a0999991e477f9acd07eed4774aa))
90
+
91
+ ## [4.0.0-alpha.21](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.20...v4.0.0-alpha.21) (2024-10-30)
92
+
93
+ ## [4.0.0-alpha.20](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.19...v4.0.0-alpha.20) (2024-10-30)
94
+
95
+ ## [4.0.0-alpha.19](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.18...v4.0.0-alpha.19) (2024-10-29)
96
+
97
+
98
+ ### Bug Fixes
99
+
100
+ * ensure the client js will emit a change event after the value update ([#7284](https://github.com/dynamic-labs/dynamic-auth/issues/7284)) ([930d2e9](https://github.com/dynamic-labs/dynamic-auth/commit/930d2e9fdc75fd4a38da8ef6efc9d3e29152285b))
101
+
102
+ ## [4.0.0-alpha.18](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.17...v4.0.0-alpha.18) (2024-10-29)
103
+
104
+
105
+ ### Bug Fixes
106
+
107
+ * **web-extension:** add color scheme style to prevent broken style ([#7247](https://github.com/dynamic-labs/dynamic-auth/issues/7247)) ([c525c50](https://github.com/dynamic-labs/dynamic-auth/commit/c525c50ac02997f3baf220fd2e67c6c4b3d10903))
108
+
109
+ ## [4.0.0-alpha.17](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.16...v4.0.0-alpha.17) (2024-10-28)
110
+
111
+
112
+ ### Features
113
+
114
+ * add support for eclipse ([#7255](https://github.com/dynamic-labs/dynamic-auth/issues/7255)) ([70e9830](https://github.com/dynamic-labs/dynamic-auth/commit/70e9830c6c801e0298825b914ee825b578350cf0))
115
+
116
+
117
+ ### Bug Fixes
118
+
119
+ * adds missing packages to zerodev-extension package ([#7187](https://github.com/dynamic-labs/dynamic-auth/issues/7187)) ([052a7e7](https://github.com/dynamic-labs/dynamic-auth/commit/052a7e7c08d458996d1be56f7697448ad5a9a1c9))
120
+ * unpin reactivity package for vue projects ([#7246](https://github.com/dynamic-labs/dynamic-auth/issues/7246)) ([18013e0](https://github.com/dynamic-labs/dynamic-auth/commit/18013e00d6855f8b371c9edb97594a08764c3868))
121
+
122
+ ## [4.0.0-alpha.16](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.15...v4.0.0-alpha.16) (2024-10-27)
123
+
124
+
125
+ ### Features
126
+
127
+ * add passkey to web-extension ([#7096](https://github.com/dynamic-labs/dynamic-auth/issues/7096)) ([a4b4643](https://github.com/dynamic-labs/dynamic-auth/commit/a4b4643e5307358425c878067bae095090f322ca))
128
+ * add social to web extension ([#7106](https://github.com/dynamic-labs/dynamic-auth/issues/7106)) ([422bc8e](https://github.com/dynamic-labs/dynamic-auth/commit/422bc8e2d276d960a7a76ad55a7b244c3fd83173))
129
+ * add support for compass and leap wallets ([9738749](https://github.com/dynamic-labs/dynamic-auth/commit/9738749bb5ed8e07a2582df255f683e4d408db93))
130
+ * add support for epicgames social ([#7220](https://github.com/dynamic-labs/dynamic-auth/issues/7220)) ([cb5bc30](https://github.com/dynamic-labs/dynamic-auth/commit/cb5bc30bc17d063bdaa9b427a9358b30124c4589))
131
+ * add web-extension to client ([#7180](https://github.com/dynamic-labs/dynamic-auth/issues/7180)) ([e2ccbb7](https://github.com/dynamic-labs/dynamic-auth/commit/e2ccbb77bdd0250d000a6cc4d89a2e5d7d2f4bb2))
132
+
133
+ ## [4.0.0-alpha.15](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.14...v4.0.0-alpha.15) (2024-10-19)
134
+
135
+ ## [4.0.0-alpha.14](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2024-10-18)
136
+
137
+ ## [4.0.0-alpha.13](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2024-10-18)
138
+
139
+
140
+ ### Bug Fixes
141
+
142
+ * improve displayed chain name in network switcher ([#7153](https://github.com/dynamic-labs/dynamic-auth/issues/7153)) ([55d2e5a](https://github.com/dynamic-labs/dynamic-auth/commit/55d2e5a9954bf0255b5caf7aba7a6f1f2e215967))
143
+
144
+ ## [4.0.0-alpha.12](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.11...v4.0.0-alpha.12) (2024-10-18)
145
+
146
+
147
+ ### Features
148
+
149
+ * add support for xverse account change event ([#7114](https://github.com/dynamic-labs/dynamic-auth/issues/7114)) ([79df047](https://github.com/dynamic-labs/dynamic-auth/commit/79df04775edb297a339e2d74adcc873584a6d8af))
150
+ * solana embedded signall headless ([#7132](https://github.com/dynamic-labs/dynamic-auth/issues/7132)) ([fe16b71](https://github.com/dynamic-labs/dynamic-auth/commit/fe16b71a4c0ad775f8de87ca899cfdd1071f11d6))
151
+
152
+
153
+ ### Bug Fixes
154
+
155
+ * bug where embeddedWalletCreated event was fired before listener … ([#7151](https://github.com/dynamic-labs/dynamic-auth/issues/7151)) ([ae9da56](https://github.com/dynamic-labs/dynamic-auth/commit/ae9da56850130491384a2d5f47c1617815dcce5b))
156
+ * edge case where wallet book fails to load ([#7148](https://github.com/dynamic-labs/dynamic-auth/issues/7148)) ([805dc6d](https://github.com/dynamic-labs/dynamic-auth/commit/805dc6d7cc4cdf0b23748d82b3bd8216d88d55b5))
157
+ * issues where native currency icons were incorrect ([#7126](https://github.com/dynamic-labs/dynamic-auth/issues/7126)) ([8b8891a](https://github.com/dynamic-labs/dynamic-auth/commit/8b8891a52397e17cc127ea3a09ade14c4b70a8ee))
158
+ * remove now-unused sessionTimeout from useSocial ([#7123](https://github.com/dynamic-labs/dynamic-auth/issues/7123)) ([7959a8a](https://github.com/dynamic-labs/dynamic-auth/commit/7959a8a4c8ceb76c5c4f1ae91af204bf9c5cae7b))
159
+ * Revert: Update Exodus extension version " ([#7130](https://github.com/dynamic-labs/dynamic-auth/issues/7130)) ([f2274ae](https://github.com/dynamic-labs/dynamic-auth/commit/f2274aefd29bb9f3fb6de8493e4a5f73946a5600)), closes [#7129](https://github.com/dynamic-labs/dynamic-auth/issues/7129)
160
+ * use embedded primaryChain when passing undefined chains list to createTurnkeyWallet ([#7149](https://github.com/dynamic-labs/dynamic-auth/issues/7149)) ([c73a3ae](https://github.com/dynamic-labs/dynamic-auth/commit/c73a3aeeda8045b936d218f7078ad79967c321ef))
161
+
162
+ ## [4.0.0-alpha.11](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2024-10-15)
163
+
164
+
165
+ ### Bug Fixes
166
+
167
+ * missing null check in property accessor ([#7122](https://github.com/dynamic-labs/dynamic-auth/issues/7122)) ([bbb5e76](https://github.com/dynamic-labs/dynamic-auth/commit/bbb5e76c1284edad2829605444dda24971027a57))
168
+
169
+ ## [4.0.0-alpha.10](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2024-10-15)
170
+
171
+
172
+ ### Bug Fixes
173
+
174
+ * epicgames key name without dash ([#7119](https://github.com/dynamic-labs/dynamic-auth/issues/7119)) ([7388d6c](https://github.com/dynamic-labs/dynamic-auth/commit/7388d6cf98f6ee92e12003549dfd1ad81951119e))
175
+
176
+ ## [4.0.0-alpha.9](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2024-10-11)
177
+
178
+
179
+ ### Features
180
+
181
+ * add support for fordefi wallet ([#7109](https://github.com/dynamic-labs/dynamic-auth/issues/7109)) ([1adb6b1](https://github.com/dynamic-labs/dynamic-auth/commit/1adb6b15b7f8e9156207ac7addf4368d27c1e371))
182
+ * support ability to define additional oauth scopes ([#7105](https://github.com/dynamic-labs/dynamic-auth/issues/7105)) ([b303203](https://github.com/dynamic-labs/dynamic-auth/commit/b303203e8041c0cbf5f8968df0d3cde04ed1b22a))
183
+
184
+
185
+ ### Bug Fixes
186
+
187
+ * add eip6963 for exodus evm ([#7094](https://github.com/dynamic-labs/dynamic-auth/issues/7094)) ([c1ec5ef](https://github.com/dynamic-labs/dynamic-auth/commit/c1ec5ef4b6a531c563be4b690aa5f2bd4e7e6a16))
188
+
189
+ ## [4.0.0-alpha.8](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2024-10-07)
190
+
191
+
192
+ ### Features
193
+
194
+ * add support for dynamic event callbacks in rn ([#6997](https://github.com/dynamic-labs/dynamic-auth/issues/6997)) ([f9ac402](https://github.com/dynamic-labs/dynamic-auth/commit/f9ac40259d9168dfe69dafd5fd44478ba0e69505))
195
+ * add support for dynamic handlers in rn ([#7032](https://github.com/dynamic-labs/dynamic-auth/issues/7032)) ([f61f926](https://github.com/dynamic-labs/dynamic-auth/commit/f61f92666b6df8483dde2c47304fd4fb02690f7d))
196
+ * Support for multi-chain AA ([#6829](https://github.com/dynamic-labs/dynamic-auth/issues/6829)) ([b4a0c0a](https://github.com/dynamic-labs/dynamic-auth/commit/b4a0c0a4de48231a3748826600407c25abf6894d))
197
+
198
+
199
+ ### Bug Fixes
200
+
201
+ * persist isHardwareWalletEnabled on wallet connector ([#7025](https://github.com/dynamic-labs/dynamic-auth/issues/7025)) ([#7034](https://github.com/dynamic-labs/dynamic-auth/issues/7034)) ([4bfc301](https://github.com/dynamic-labs/dynamic-auth/commit/4bfc301d891f10db8c0bd31e5164c489a882c5c3))
202
+
203
+ ## [4.0.0-alpha.7](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.6...v4.0.0-alpha.7) (2024-10-03)
204
+
205
+
206
+ ### Features
207
+
208
+ * add account abstraction module to client ([#7002](https://github.com/dynamic-labs/dynamic-auth/issues/7002)) ([2f06975](https://github.com/dynamic-labs/dynamic-auth/commit/2f06975083dfa9d40537ef4a99b414eda1a68e01))
209
+ * add support for wallet events in rn ([#7061](https://github.com/dynamic-labs/dynamic-auth/issues/7061)) ([c7c4ce5](https://github.com/dynamic-labs/dynamic-auth/commit/c7c4ce51f27a2b84a1710c120d7006a00920c1e7))
210
+ * add zerodev extension for react native ([#7028](https://github.com/dynamic-labs/dynamic-auth/issues/7028)) ([858b8a8](https://github.com/dynamic-labs/dynamic-auth/commit/858b8a851cfa0cddc8e4559541b03992cf5ccdfc))
211
+
212
+
213
+ ### Bug Fixes
214
+
215
+ * do not modify sol tx blockhash as tx could have been signed already ([#7050](https://github.com/dynamic-labs/dynamic-auth/issues/7050)) ([770edb4](https://github.com/dynamic-labs/dynamic-auth/commit/770edb49ddc231b75fb45a9f6d563f22e5185df2))
216
+ * ensure the correct auth mode is used on social redirect ([#7047](https://github.com/dynamic-labs/dynamic-auth/issues/7047)) ([7c27172](https://github.com/dynamic-labs/dynamic-auth/commit/7c271721d5ddf19e3fd1bf56ddb1d49e0e2bca07))
217
+ * prevent react native message timeout before sdk is ready ([#7051](https://github.com/dynamic-labs/dynamic-auth/issues/7051)) ([6421237](https://github.com/dynamic-labs/dynamic-auth/commit/6421237d677d788b824d53432c1a75b9d571aa78))
218
+ * update version error text ([#7054](https://github.com/dynamic-labs/dynamic-auth/issues/7054)) ([713dacb](https://github.com/dynamic-labs/dynamic-auth/commit/713dacb79c2513323c2e6840d7418716011c2dcd))
219
+ * use project settings sdk network for send flow ([#7011](https://github.com/dynamic-labs/dynamic-auth/issues/7011)) ([983e796](https://github.com/dynamic-labs/dynamic-auth/commit/983e79632762f71ee0502c92057a32ea985ae19c))
220
+
221
+ ## [4.0.0-alpha.6](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.5...v4.0.0-alpha.6) (2024-10-01)
222
+
223
+
224
+ ### ⚠ BREAKING CHANGES
225
+
226
+ * remove support to magic ([#7033](https://github.com/dynamic-labs/dynamic-auth/issues/7033)) ([0fdc41f](https://github.com/dynamic-labs/dynamic-auth/commit/0fdc41f05f87b32f56b73db068f984f18bdf69a0))
227
+
228
+ ### Features
229
+
230
+ * global connectivity disconnect ([#7008](https://github.com/dynamic-labs/dynamic-auth/issues/7008)) ([80d705b](https://github.com/dynamic-labs/dynamic-auth/commit/80d705ba252aa3b01cbf4861507fed00e460215f))
231
+
232
+
233
+ ### Bug Fixes
234
+
235
+ * add popper context to send balance ([#7016](https://github.com/dynamic-labs/dynamic-auth/issues/7016)) ([73aa6f1](https://github.com/dynamic-labs/dynamic-auth/commit/73aa6f122afe0db660ebb654f3e018ae7bf445c5))
236
+ * add retry to useConnectWithOtp ([#7012](https://github.com/dynamic-labs/dynamic-auth/issues/7012)) ([d551d72](https://github.com/dynamic-labs/dynamic-auth/commit/d551d72a463f8a03964858b30ec174d41985a7b1))
237
+ * don't re-fetch wallet address on network change ([#7019](https://github.com/dynamic-labs/dynamic-auth/issues/7019)) ([4e7900c](https://github.com/dynamic-labs/dynamic-auth/commit/4e7900cc24b3abda736bc81466eda7512cf7fc61))
238
+ * fix sign message with solana wallet standard provider ([#7014](https://github.com/dynamic-labs/dynamic-auth/issues/7014)) ([ffaf972](https://github.com/dynamic-labs/dynamic-auth/commit/ffaf972e8b190b0b8cd0103e0ef67bfdee6c8f7c))
239
+ * update wallet reference when user switches wallet in connect-only ([#7030](https://github.com/dynamic-labs/dynamic-auth/issues/7030)) ([75d9aa6](https://github.com/dynamic-labs/dynamic-auth/commit/75d9aa66f63fc5536caeff12d8b860c0ba86106f))
240
+
241
+
242
+ ## [4.0.0-alpha.5](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.4...v4.0.0-alpha.5) (2024-09-25)
243
+
244
+
245
+ ### Features
246
+
247
+ * add isInstalledOnBrowser prop to wallet options in useWalletOptions ([#6976](https://github.com/dynamic-labs/DynamicAuth/issues/6976)) ([0fda409](https://github.com/dynamic-labs/DynamicAuth/commit/0fda409b293c83d73869d791c3d38ac421dcdecb))
248
+
249
+
250
+ ### Bug Fixes
251
+
252
+ * **client:** return user profile when using sign in with external jwt ([#7004](https://github.com/dynamic-labs/DynamicAuth/issues/7004)) ([927cfb6](https://github.com/dynamic-labs/DynamicAuth/commit/927cfb69f3dd7f8b00e3f0f975277a84c99c830b))
253
+ * react-native-extension to include esm ([#6965](https://github.com/dynamic-labs/DynamicAuth/issues/6965)) ([336825b](https://github.com/dynamic-labs/DynamicAuth/commit/336825b50142002bbc67c6f8850bd63030bf384b))
254
+
255
+ ## [4.0.0-alpha.4](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.3...v4.0.0-alpha.4) (2024-09-23)
256
+
257
+
258
+ ### Bug Fixes
259
+
260
+ * issue where builtin stream module was a dependency ([#6968](https://github.com/dynamic-labs/DynamicAuth/issues/6968)) ([0661129](https://github.com/dynamic-labs/DynamicAuth/commit/0661129920ba70ebbcd4d17ee5aa988c51d1b477))
261
+ * update in memory secure storage ([#6955](https://github.com/dynamic-labs/DynamicAuth/issues/6955)) ([697fc20](https://github.com/dynamic-labs/DynamicAuth/commit/697fc20740b243fa31ecf06e8b2ed9d09932a544))
262
+
2
263
  ## [4.0.0-alpha.3](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.2...v4.0.0-alpha.3) (2024-09-20)
3
264
 
4
265
 
package/package.cjs ADDED
@@ -0,0 +1,8 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var version = "4.0.0-alpha.31";
7
+
8
+ exports.version = version;
package/package.js ADDED
@@ -0,0 +1,4 @@
1
+ 'use client'
2
+ var version = "4.0.0-alpha.31";
3
+
4
+ export { version };
package/package.json CHANGED
@@ -1,16 +1,7 @@
1
1
  {
2
2
  "name": "@dynamic-labs/solana-core",
3
- "version": "4.0.0-alpha.3",
4
- "repository": {
5
- "type": "git",
6
- "url": "git+https://github.com/dynamic-labs/dynamic-auth.git",
7
- "directory": "packages/solana-core"
8
- },
3
+ "version": "4.0.0-alpha.31",
9
4
  "description": "Core package for utilities and types for solana",
10
- "bugs": {
11
- "url": "https://github.com/dynamic-labs/DynamicAuth/issues"
12
- },
13
- "homepage": "https://github.com/dynamic-labs/DynamicAuth/main/packages/solana-core#readme",
14
5
  "author": "Dynamic Labs, Inc.",
15
6
  "license": "MIT",
16
7
  "main": "./src/index.cjs",
@@ -25,17 +16,19 @@
25
16
  },
26
17
  "./package.json": "./package.json"
27
18
  },
19
+ "homepage": "https://www.dynamic.xyz/",
28
20
  "dependencies": {
29
- "@dynamic-labs/sdk-api-core": "0.0.534",
21
+ "@dynamic-labs/sdk-api-core": "0.0.563",
30
22
  "@solana/web3.js": "1.92.1",
31
23
  "@solana/spl-token": "0.4.6"
32
24
  },
33
25
  "peerDependencies": {
34
- "@dynamic-labs/rpc-providers": "4.0.0-alpha.3",
35
- "@dynamic-labs/types": "4.0.0-alpha.3",
36
- "@dynamic-labs/utils": "4.0.0-alpha.3",
37
- "@dynamic-labs/wallet-book": "4.0.0-alpha.3",
38
- "@dynamic-labs/wallet-connector-core": "4.0.0-alpha.3",
26
+ "@dynamic-labs/assert-package-version": "4.0.0-alpha.31",
27
+ "@dynamic-labs/rpc-providers": "4.0.0-alpha.31",
28
+ "@dynamic-labs/types": "4.0.0-alpha.31",
29
+ "@dynamic-labs/utils": "4.0.0-alpha.31",
30
+ "@dynamic-labs/wallet-book": "4.0.0-alpha.31",
31
+ "@dynamic-labs/wallet-connector-core": "4.0.0-alpha.31",
39
32
  "eventemitter3": "5.0.1"
40
33
  }
41
34
  }
@@ -13,7 +13,7 @@ var extractNonce = require('../utils/extractNonce/extractNonce.cjs');
13
13
  var getGenesisHashLSKey = require('../utils/getGenesisHashLSKey/getGenesisHashLSKey.cjs');
14
14
 
15
15
  const MEMO_PROGRAM_ID = new web3_js.PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr');
16
- class SolWalletConnector extends walletConnectorCore.WalletConnectorBase {
16
+ class SolanaWalletConnector extends walletConnectorCore.WalletConnectorBase {
17
17
  constructor(opts) {
18
18
  var _a;
19
19
  super(opts);
@@ -24,7 +24,8 @@ class SolWalletConnector extends walletConnectorCore.WalletConnectorBase {
24
24
  this.connectedChain = 'SOL';
25
25
  this.solNetworks = opts.solNetworks;
26
26
  this.chainRpcProviders = opts.chainRpcProviders;
27
- (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerSolanaProviders();
27
+ this.connectionConfig = opts.connectionConfig;
28
+ (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerSolanaProviders(this.connectionConfig);
28
29
  }
29
30
  getNetwork() {
30
31
  return _tslib.__awaiter(this, void 0, void 0, function* () {
@@ -55,13 +56,13 @@ class SolWalletConnector extends walletConnectorCore.WalletConnectorBase {
55
56
  });
56
57
  }
57
58
  getWalletClient() {
58
- var _a;
59
+ var _a, _b;
59
60
  const [network] = this.solNetworks;
60
61
  if (!network) {
61
62
  throw new utils.DynamicError('No enabled networks');
62
63
  }
63
64
  const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
64
- return new web3_js.Connection(rpcUrl, 'confirmed');
65
+ return new web3_js.Connection(rpcUrl, (_b = this.connectionConfig) !== null && _b !== void 0 ? _b : 'confirmed');
65
66
  }
66
67
  getPublicClient() {
67
68
  return _tslib.__awaiter(this, void 0, void 0, function* () {
@@ -172,4 +173,4 @@ class SolWalletConnector extends walletConnectorCore.WalletConnectorBase {
172
173
  }
173
174
  }
174
175
 
175
- exports.SolWalletConnector = SolWalletConnector;
176
+ exports.SolanaWalletConnector = SolanaWalletConnector;
@@ -1,24 +1,27 @@
1
- import { Connection } from '@solana/web3.js';
2
- import { Chain, IHardwareWalletConnector, WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
1
+ import { Connection, ConnectionConfig } from '@solana/web3.js';
2
+ import { Chain, IHardwareWalletConnector, WalletConnectorBase, WalletMetadata } from '@dynamic-labs/wallet-connector-core';
3
3
  import { GenericNetwork } from '@dynamic-labs/types';
4
4
  import { WalletBookSchema } from '@dynamic-labs/wallet-book';
5
5
  import { JwtVerifiedCredential } from '@dynamic-labs/sdk-api-core';
6
6
  import { IChainRpcProviders } from '../rpc';
7
7
  import { SolanaWallet } from '../wallet';
8
8
  import { ISolana } from '../types';
9
- export type SolWalletConnectorOpts = {
9
+ export type SolanaWalletConnectorOpts = {
10
10
  chainRpcProviders: IChainRpcProviders;
11
11
  solNetworks: GenericNetwork[];
12
12
  walletBook: WalletBookSchema;
13
+ metadata?: WalletMetadata;
14
+ connectionConfig?: ConnectionConfig;
13
15
  };
14
- export declare abstract class SolWalletConnector extends WalletConnectorBase<typeof SolanaWallet> implements IHardwareWalletConnector {
16
+ export declare abstract class SolanaWalletConnector extends WalletConnectorBase<typeof SolanaWallet> implements IHardwareWalletConnector {
15
17
  isHardwareWalletEnabled: boolean;
16
18
  verifiedCredentials: JwtVerifiedCredential[];
17
19
  solNetworks: GenericNetwork[];
18
20
  ChainWallet: typeof SolanaWallet;
19
21
  supportedChains: Chain[];
20
22
  connectedChain: Chain;
21
- constructor(opts: SolWalletConnectorOpts);
23
+ protected connectionConfig: ConnectionConfig | undefined;
24
+ constructor(opts: SolanaWalletConnectorOpts);
22
25
  getNetwork(): Promise<string>;
23
26
  endSession(): Promise<void>;
24
27
  getWalletClient(): Connection;
@@ -9,7 +9,7 @@ import { extractNonce } from '../utils/extractNonce/extractNonce.js';
9
9
  import { getGenesisHashLSKey } from '../utils/getGenesisHashLSKey/getGenesisHashLSKey.js';
10
10
 
11
11
  const MEMO_PROGRAM_ID = new PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr');
12
- class SolWalletConnector extends WalletConnectorBase {
12
+ class SolanaWalletConnector extends WalletConnectorBase {
13
13
  constructor(opts) {
14
14
  var _a;
15
15
  super(opts);
@@ -20,7 +20,8 @@ class SolWalletConnector extends WalletConnectorBase {
20
20
  this.connectedChain = 'SOL';
21
21
  this.solNetworks = opts.solNetworks;
22
22
  this.chainRpcProviders = opts.chainRpcProviders;
23
- (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerSolanaProviders();
23
+ this.connectionConfig = opts.connectionConfig;
24
+ (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerSolanaProviders(this.connectionConfig);
24
25
  }
25
26
  getNetwork() {
26
27
  return __awaiter(this, void 0, void 0, function* () {
@@ -51,13 +52,13 @@ class SolWalletConnector extends WalletConnectorBase {
51
52
  });
52
53
  }
53
54
  getWalletClient() {
54
- var _a;
55
+ var _a, _b;
55
56
  const [network] = this.solNetworks;
56
57
  if (!network) {
57
58
  throw new DynamicError('No enabled networks');
58
59
  }
59
60
  const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
60
- return new Connection(rpcUrl, 'confirmed');
61
+ return new Connection(rpcUrl, (_b = this.connectionConfig) !== null && _b !== void 0 ? _b : 'confirmed');
61
62
  }
62
63
  getPublicClient() {
63
64
  return __awaiter(this, void 0, void 0, function* () {
@@ -168,4 +169,4 @@ class SolWalletConnector extends WalletConnectorBase {
168
169
  }
169
170
  }
170
171
 
171
- export { SolWalletConnector };
172
+ export { SolanaWalletConnector };
@@ -1 +1 @@
1
- export * from './SolWalletConnector';
1
+ export * from './SolanaWalletConnector';
package/src/index.cjs CHANGED
@@ -3,7 +3,9 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var SolWalletConnector = require('./connector/SolWalletConnector.cjs');
6
+ var assertPackageVersion = require('@dynamic-labs/assert-package-version');
7
+ var _package = require('../package.cjs');
8
+ var SolanaWalletConnector = require('./connector/SolanaWalletConnector.cjs');
7
9
  require('./rpc/RpcProviderSolana/RpcProviderSolana.cjs');
8
10
  var rpcProviders = require('@dynamic-labs/rpc-providers');
9
11
  var solanaProvidersSelector = require('./rpc/solanaProvidersSelector/solanaProvidersSelector.cjs');
@@ -17,9 +19,9 @@ var isSolanaWallet = require('./wallet/isSolanaWallet/isSolanaWallet.cjs');
17
19
  var isLedgerSolanaWallet = require('./wallet/isLedgerSolanaWallet/isLedgerSolanaWallet.cjs');
18
20
  var constants = require('./constants.cjs');
19
21
 
22
+ assertPackageVersion.assertPackageVersion('@dynamic-labs/solana-core', _package.version);
20
23
 
21
-
22
- exports.SolWalletConnector = SolWalletConnector.SolWalletConnector;
24
+ exports.SolanaWalletConnector = SolanaWalletConnector.SolanaWalletConnector;
23
25
  exports.solanaProvidersSelector = solanaProvidersSelector.solanaProvidersSelector;
24
26
  exports.SolanaUiTransaction = SolanaUiTransaction.SolanaUiTransaction;
25
27
  exports.decodeTransactionFromBase64 = decodeTransactionFromBase64.decodeTransactionFromBase64;
package/src/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  'use client'
2
- export { SolWalletConnector } from './connector/SolWalletConnector.js';
2
+ import { assertPackageVersion } from '@dynamic-labs/assert-package-version';
3
+ import { version } from '../package.js';
4
+ export { SolanaWalletConnector } from './connector/SolanaWalletConnector.js';
3
5
  import './rpc/RpcProviderSolana/RpcProviderSolana.js';
4
6
  export * from '@dynamic-labs/rpc-providers';
5
7
  export { solanaProvidersSelector } from './rpc/solanaProvidersSelector/solanaProvidersSelector.js';
@@ -12,3 +14,5 @@ export { SolanaWallet } from './wallet/SolanaWallet.js';
12
14
  export { isSolanaWallet } from './wallet/isSolanaWallet/isSolanaWallet.js';
13
15
  export { isLedgerSolanaWallet } from './wallet/isLedgerSolanaWallet/isLedgerSolanaWallet.js';
14
16
  export { SOLANA_GENESIS_HASH } from './constants.js';
17
+
18
+ assertPackageVersion('@dynamic-labs/solana-core', version);
@@ -9,14 +9,14 @@ rpcProviders.ChainRpcProviders.getSolanaProviderByChainId = (rpcProviders, chain
9
9
  const provider = (_a = rpcProviders['solana']) === null || _a === void 0 ? void 0 : _a.find((rpcProvider) => rpcProvider.chainId === chainId);
10
10
  return provider;
11
11
  };
12
- rpcProviders.ChainRpcProviders.registerSolanaProviders = () => {
12
+ rpcProviders.ChainRpcProviders.registerSolanaProviders = (connectionConfig) => {
13
13
  rpcProviders.ChainRpcProviders.registerChainProviders(rpcProviders.ProviderChain.SOLANA, (config) => {
14
14
  const rpcProviders = {};
15
15
  if (config === null || config === void 0 ? void 0 : config.solana) {
16
16
  rpcProviders.solana = config.solana.map((network) => {
17
17
  var _a;
18
18
  const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
19
- const provider = new web3_js.Connection(rpcUrl);
19
+ const provider = new web3_js.Connection(rpcUrl, connectionConfig);
20
20
  return {
21
21
  chainId: network.chainId.toString(),
22
22
  chainName: network.name,
@@ -1,4 +1,4 @@
1
- import { Connection } from '@solana/web3.js';
1
+ import { Connection, ConnectionConfig } from '@solana/web3.js';
2
2
  import { RpcProviders } from '@dynamic-labs/rpc-providers';
3
3
  type ISolanaRpcProvider = {
4
4
  chainId: string;
@@ -12,7 +12,7 @@ declare module '@dynamic-labs/rpc-providers' {
12
12
  }
13
13
  interface IChainRpcProviders {
14
14
  getSolanaProviderByChainId(rpcProviders: RpcProviders, chainId: string): SolanaRpcProvider | undefined;
15
- registerSolanaProviders(): void;
15
+ registerSolanaProviders(connectionConfig?: ConnectionConfig): void;
16
16
  }
17
17
  }
18
18
  export {};
@@ -7,14 +7,14 @@ ChainRpcProviders.getSolanaProviderByChainId = (rpcProviders, chainId) => {
7
7
  const provider = (_a = rpcProviders['solana']) === null || _a === void 0 ? void 0 : _a.find((rpcProvider) => rpcProvider.chainId === chainId);
8
8
  return provider;
9
9
  };
10
- ChainRpcProviders.registerSolanaProviders = () => {
10
+ ChainRpcProviders.registerSolanaProviders = (connectionConfig) => {
11
11
  ChainRpcProviders.registerChainProviders(ProviderChain.SOLANA, (config) => {
12
12
  const rpcProviders = {};
13
13
  if (config === null || config === void 0 ? void 0 : config.solana) {
14
14
  rpcProviders.solana = config.solana.map((network) => {
15
15
  var _a;
16
16
  const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
17
- const provider = new Connection(rpcUrl);
17
+ const provider = new Connection(rpcUrl, connectionConfig);
18
18
  return {
19
19
  chainId: network.chainId.toString(),
20
20
  chainName: network.name,
@@ -10,16 +10,64 @@ var utils = require('@dynamic-labs/utils');
10
10
 
11
11
  const LAMPORTS_PER_SOL = 1000000000;
12
12
  class SolanaUiTransaction {
13
- constructor({ onSubmit, from, connection, originalTransaction, }) {
13
+ constructor({ onSubmit, from, connection, multipleTransactions, }) {
14
14
  this.chain = 'SOL';
15
15
  this.data = undefined;
16
16
  this.fee = { gas: undefined };
17
- this.feeDeducted = false;
18
17
  this.formatNonNativeToken = (value, decimals) => (Number(value) / Number(Math.pow(10, decimals))).toString();
19
18
  this.from = from;
20
19
  this.onSubmit = onSubmit;
21
20
  this.connection = connection;
22
- this.originalTransaction = originalTransaction;
21
+ this.multipleTransactions = multipleTransactions;
22
+ }
23
+ fetchFee() {
24
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
25
+ if (this.fee.gas)
26
+ return;
27
+ let transactions = this.multipleTransactions;
28
+ // for send balance flow, create the transaction and then estimate it
29
+ if (!transactions) {
30
+ const tx = yield this.createTransactionSafe();
31
+ if (!tx)
32
+ return;
33
+ transactions = tx instanceof Array ? tx : [tx];
34
+ }
35
+ const compiledMessages = transactions.map((tx) => 'version' in tx ? tx.message : tx.compileMessage());
36
+ if (compiledMessages.some((msg) => !msg)) {
37
+ throw new Error('Invalid transaction');
38
+ }
39
+ const getFeeWithRetry = (message) => _tslib.__awaiter(this, void 0, void 0, function* () {
40
+ let res = yield this.connection.getFeeForMessage(message);
41
+ let retryCount = 0;
42
+ while (res.value === null && retryCount < 5) {
43
+ res = yield this.connection.getFeeForMessage(message);
44
+ retryCount++;
45
+ }
46
+ return res.value ? BigInt(res.value) : BigInt(0);
47
+ });
48
+ const fees = yield Promise.all(compiledMessages.map((message) => getFeeWithRetry(message)));
49
+ this.fee.gas = fees.reduce((acc, fee) => acc + fee, BigInt(0));
50
+ if (this.fee.gas === BigInt(0)) {
51
+ this.fee.gas = undefined;
52
+ }
53
+ });
54
+ }
55
+ // if one of the transactions is not sponsored,
56
+ // then the simulation will have a solana transfer in it if it was successful
57
+ isGasSponsored() {
58
+ var _a;
59
+ if (!((_a = this.multipleTransactions) === null || _a === void 0 ? void 0 : _a.length))
60
+ return false;
61
+ return this.multipleTransactions.every((tx) => {
62
+ var _a;
63
+ if ('version' in tx) {
64
+ return this.from !== tx.message.staticAccountKeys[0].toBase58();
65
+ }
66
+ if ('feePayer' in tx) {
67
+ return this.from !== ((_a = tx.feePayer) === null || _a === void 0 ? void 0 : _a.toBase58());
68
+ }
69
+ return false;
70
+ });
23
71
  }
24
72
  parse(input) {
25
73
  const floatValue = parseFloat(input);
@@ -40,7 +88,11 @@ class SolanaUiTransaction {
40
88
  }
41
89
  submit() {
42
90
  return _tslib.__awaiter(this, void 0, void 0, function* () {
43
- const sendTransaction = yield this.createTransaction();
91
+ if (this.multipleTransactions) {
92
+ return this.onSubmit();
93
+ }
94
+ // send balance modal transactions
95
+ const sendTransaction = (yield this.createTransaction());
44
96
  return this.onSubmit(sendTransaction);
45
97
  });
46
98
  }
@@ -57,41 +109,6 @@ class SolanaUiTransaction {
57
109
  }
58
110
  return /^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(address);
59
111
  }
60
- fetchFee() {
61
- return _tslib.__awaiter(this, void 0, void 0, function* () {
62
- if (this.fee.gas)
63
- return;
64
- const transaction = yield this.createTransactionSafe();
65
- if (!transaction) {
66
- return;
67
- }
68
- let compiledMessage;
69
- const { blockhash } = yield this.connection.getLatestBlockhash();
70
- if ('version' in transaction) {
71
- transaction.message.recentBlockhash = blockhash;
72
- compiledMessage = transaction.message;
73
- }
74
- else {
75
- transaction.recentBlockhash = blockhash;
76
- transaction.feePayer = new web3_js.PublicKey(this.from);
77
- compiledMessage = transaction.compileMessage();
78
- }
79
- if (!compiledMessage) {
80
- throw new Error('Invalid transaction');
81
- }
82
- let res = yield this.connection.getFeeForMessage(compiledMessage);
83
- let retryCount = 0;
84
- while (res.value === null && retryCount < 5) {
85
- res = yield this.connection.getFeeForMessage(compiledMessage);
86
- retryCount++;
87
- }
88
- this.fee.gas = res.value ? BigInt(res.value) : undefined;
89
- if (!this.feeDeducted && this.fee.gas && this.value) {
90
- this.value = this.value - this.fee.gas;
91
- this.feeDeducted = true;
92
- }
93
- });
94
- }
95
112
  createTransaction() {
96
113
  return _tslib.__awaiter(this, void 0, void 0, function* () {
97
114
  var _a;
@@ -99,8 +116,8 @@ class SolanaUiTransaction {
99
116
  if (!to) {
100
117
  throw new Error('Destination is required');
101
118
  }
102
- if (this.originalTransaction) {
103
- return this.originalTransaction;
119
+ if (this.multipleTransactions) {
120
+ return this.multipleTransactions;
104
121
  }
105
122
  const sendTransaction = new web3_js.Transaction();
106
123
  const fromPubkey = new web3_js.PublicKey(this.from);
@@ -134,6 +151,10 @@ class SolanaUiTransaction {
134
151
  toPubkey,
135
152
  }));
136
153
  }
154
+ // only set blockhash when we are creating the transaction, e.g send balance flow
155
+ const { blockhash } = yield this.connection.getLatestBlockhash();
156
+ sendTransaction.feePayer = new web3_js.PublicKey(this.from);
157
+ sendTransaction.recentBlockhash = blockhash;
137
158
  return sendTransaction;
138
159
  });
139
160
  }
@@ -4,11 +4,10 @@ export declare const LAMPORTS_PER_SOL = 1000000000;
4
4
  type SolanaUiTransactionProps = {
5
5
  from: string;
6
6
  connection: Connection;
7
- onSubmit: (transaction: Transaction | VersionedTransaction) => Promise<string>;
8
- originalTransaction?: Transaction | VersionedTransaction;
7
+ onSubmit: (transaction?: Transaction | VersionedTransaction) => Promise<any>;
8
+ multipleTransactions?: (Transaction | VersionedTransaction)[];
9
9
  };
10
10
  export declare class SolanaUiTransaction implements IUITransaction {
11
- notEnoughFundsError: boolean | undefined;
12
11
  to: string | undefined;
13
12
  from: string;
14
13
  value: bigint | undefined;
@@ -18,22 +17,23 @@ export declare class SolanaUiTransaction implements IUITransaction {
18
17
  fee: {
19
18
  gas: bigint | undefined;
20
19
  };
21
- originalTransaction: Transaction | VersionedTransaction | undefined;
22
- feeDeducted: boolean;
20
+ multipleTransactions?: (Transaction | VersionedTransaction)[];
23
21
  nonNativeAddress?: string;
24
22
  nonNativeDecimal?: number;
25
23
  nonNativeValue?: bigint;
26
24
  private onSubmit;
27
25
  private connection;
28
- constructor({ onSubmit, from, connection, originalTransaction, }: SolanaUiTransactionProps);
26
+ constructor({ onSubmit, from, connection, multipleTransactions, }: SolanaUiTransactionProps);
27
+ nativePrice?: number | undefined;
28
+ fetchFee(): Promise<void>;
29
+ isGasSponsored(): boolean;
29
30
  parse(input: string): bigint;
30
31
  parseNonNativeToken(input: string, decimals: number): bigint;
31
32
  formatNonNativeToken: (value: bigint, decimals: number) => string;
32
33
  format(value: bigint, { precision }?: IUITransactionFormatOptions): string;
33
- submit(): Promise<string>;
34
+ submit(): Promise<any>;
34
35
  getBalance(): Promise<bigint>;
35
36
  validateAddressFormat(address: string): boolean;
36
- fetchFee(): Promise<void>;
37
37
  private createTransaction;
38
38
  private createTransactionSafe;
39
39
  }
@@ -6,16 +6,64 @@ import { formatNumberText } from '@dynamic-labs/utils';
6
6
 
7
7
  const LAMPORTS_PER_SOL = 1000000000;
8
8
  class SolanaUiTransaction {
9
- constructor({ onSubmit, from, connection, originalTransaction, }) {
9
+ constructor({ onSubmit, from, connection, multipleTransactions, }) {
10
10
  this.chain = 'SOL';
11
11
  this.data = undefined;
12
12
  this.fee = { gas: undefined };
13
- this.feeDeducted = false;
14
13
  this.formatNonNativeToken = (value, decimals) => (Number(value) / Number(Math.pow(10, decimals))).toString();
15
14
  this.from = from;
16
15
  this.onSubmit = onSubmit;
17
16
  this.connection = connection;
18
- this.originalTransaction = originalTransaction;
17
+ this.multipleTransactions = multipleTransactions;
18
+ }
19
+ fetchFee() {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ if (this.fee.gas)
22
+ return;
23
+ let transactions = this.multipleTransactions;
24
+ // for send balance flow, create the transaction and then estimate it
25
+ if (!transactions) {
26
+ const tx = yield this.createTransactionSafe();
27
+ if (!tx)
28
+ return;
29
+ transactions = tx instanceof Array ? tx : [tx];
30
+ }
31
+ const compiledMessages = transactions.map((tx) => 'version' in tx ? tx.message : tx.compileMessage());
32
+ if (compiledMessages.some((msg) => !msg)) {
33
+ throw new Error('Invalid transaction');
34
+ }
35
+ const getFeeWithRetry = (message) => __awaiter(this, void 0, void 0, function* () {
36
+ let res = yield this.connection.getFeeForMessage(message);
37
+ let retryCount = 0;
38
+ while (res.value === null && retryCount < 5) {
39
+ res = yield this.connection.getFeeForMessage(message);
40
+ retryCount++;
41
+ }
42
+ return res.value ? BigInt(res.value) : BigInt(0);
43
+ });
44
+ const fees = yield Promise.all(compiledMessages.map((message) => getFeeWithRetry(message)));
45
+ this.fee.gas = fees.reduce((acc, fee) => acc + fee, BigInt(0));
46
+ if (this.fee.gas === BigInt(0)) {
47
+ this.fee.gas = undefined;
48
+ }
49
+ });
50
+ }
51
+ // if one of the transactions is not sponsored,
52
+ // then the simulation will have a solana transfer in it if it was successful
53
+ isGasSponsored() {
54
+ var _a;
55
+ if (!((_a = this.multipleTransactions) === null || _a === void 0 ? void 0 : _a.length))
56
+ return false;
57
+ return this.multipleTransactions.every((tx) => {
58
+ var _a;
59
+ if ('version' in tx) {
60
+ return this.from !== tx.message.staticAccountKeys[0].toBase58();
61
+ }
62
+ if ('feePayer' in tx) {
63
+ return this.from !== ((_a = tx.feePayer) === null || _a === void 0 ? void 0 : _a.toBase58());
64
+ }
65
+ return false;
66
+ });
19
67
  }
20
68
  parse(input) {
21
69
  const floatValue = parseFloat(input);
@@ -36,7 +84,11 @@ class SolanaUiTransaction {
36
84
  }
37
85
  submit() {
38
86
  return __awaiter(this, void 0, void 0, function* () {
39
- const sendTransaction = yield this.createTransaction();
87
+ if (this.multipleTransactions) {
88
+ return this.onSubmit();
89
+ }
90
+ // send balance modal transactions
91
+ const sendTransaction = (yield this.createTransaction());
40
92
  return this.onSubmit(sendTransaction);
41
93
  });
42
94
  }
@@ -53,41 +105,6 @@ class SolanaUiTransaction {
53
105
  }
54
106
  return /^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(address);
55
107
  }
56
- fetchFee() {
57
- return __awaiter(this, void 0, void 0, function* () {
58
- if (this.fee.gas)
59
- return;
60
- const transaction = yield this.createTransactionSafe();
61
- if (!transaction) {
62
- return;
63
- }
64
- let compiledMessage;
65
- const { blockhash } = yield this.connection.getLatestBlockhash();
66
- if ('version' in transaction) {
67
- transaction.message.recentBlockhash = blockhash;
68
- compiledMessage = transaction.message;
69
- }
70
- else {
71
- transaction.recentBlockhash = blockhash;
72
- transaction.feePayer = new PublicKey(this.from);
73
- compiledMessage = transaction.compileMessage();
74
- }
75
- if (!compiledMessage) {
76
- throw new Error('Invalid transaction');
77
- }
78
- let res = yield this.connection.getFeeForMessage(compiledMessage);
79
- let retryCount = 0;
80
- while (res.value === null && retryCount < 5) {
81
- res = yield this.connection.getFeeForMessage(compiledMessage);
82
- retryCount++;
83
- }
84
- this.fee.gas = res.value ? BigInt(res.value) : undefined;
85
- if (!this.feeDeducted && this.fee.gas && this.value) {
86
- this.value = this.value - this.fee.gas;
87
- this.feeDeducted = true;
88
- }
89
- });
90
- }
91
108
  createTransaction() {
92
109
  return __awaiter(this, void 0, void 0, function* () {
93
110
  var _a;
@@ -95,8 +112,8 @@ class SolanaUiTransaction {
95
112
  if (!to) {
96
113
  throw new Error('Destination is required');
97
114
  }
98
- if (this.originalTransaction) {
99
- return this.originalTransaction;
115
+ if (this.multipleTransactions) {
116
+ return this.multipleTransactions;
100
117
  }
101
118
  const sendTransaction = new Transaction();
102
119
  const fromPubkey = new PublicKey(this.from);
@@ -130,6 +147,10 @@ class SolanaUiTransaction {
130
147
  toPubkey,
131
148
  }));
132
149
  }
150
+ // only set blockhash when we are creating the transaction, e.g send balance flow
151
+ const { blockhash } = yield this.connection.getLatestBlockhash();
152
+ sendTransaction.feePayer = new PublicKey(this.from);
153
+ sendTransaction.recentBlockhash = blockhash;
133
154
  return sendTransaction;
134
155
  });
135
156
  }
@@ -1,8 +1,8 @@
1
1
  import { Connection } from '@solana/web3.js';
2
2
  import { Wallet } from '@dynamic-labs/wallet-connector-core';
3
- import { SolWalletConnector } from '../connector';
3
+ import { SolanaWalletConnector } from '../connector';
4
4
  import { ISolana } from '../types';
5
- export declare class SolanaWallet extends Wallet<SolWalletConnector> {
5
+ export declare class SolanaWallet extends Wallet<SolanaWalletConnector> {
6
6
  /**
7
7
  * Retrieves the RPC connection
8
8
  * @returns A promise that resolves to the RPC connection