@dynamic-labs/starknet 3.0.0-alpha.2 → 3.0.0-alpha.20

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,235 @@
1
1
 
2
+ ## [3.0.0-alpha.20](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.19...v3.0.0-alpha.20) (2024-07-15)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * show/hide confirmation ui for aa session key wallets ([#6334](https://github.com/dynamic-labs/DynamicAuth/issues/6334)) ([6e17162](https://github.com/dynamic-labs/DynamicAuth/commit/6e17162e31915620b622f3ec5b4f8b7087f1728c))
8
+
9
+ ## [3.0.0-alpha.19](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.18...v3.0.0-alpha.19) (2024-07-13)
10
+
11
+ ## [3.0.0-alpha.18](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.17...v3.0.0-alpha.18) (2024-07-12)
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * hide confirmation ui triggers passkey creation ([#6322](https://github.com/dynamic-labs/DynamicAuth/issues/6322)) ([c66f282](https://github.com/dynamic-labs/DynamicAuth/commit/c66f282cf8d64f19d7f5a7355aaaec980afbe245))
17
+
18
+ ## [3.0.0-alpha.17](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.16...v3.0.0-alpha.17) (2024-07-11)
19
+
20
+
21
+ ### Features
22
+
23
+ * add new hook to select wallet option to connect ([#6301](https://github.com/dynamic-labs/DynamicAuth/issues/6301)) ([833d71d](https://github.com/dynamic-labs/DynamicAuth/commit/833d71de164c57bfa22898c3425641a83a12e135))
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * refresh session keys correctly for solana embedded wallets ([#6309](https://github.com/dynamic-labs/DynamicAuth/issues/6309)) ([4b28e8a](https://github.com/dynamic-labs/DynamicAuth/commit/4b28e8ae231567754b6cfd07a7d41e86f1c73daa))
29
+
30
+ ## [3.0.0-alpha.16](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.15...v3.0.0-alpha.16) (2024-07-11)
31
+
32
+
33
+ ### ⚠ BREAKING CHANGES
34
+
35
+ * remove isConnected prop from wallets and have it as a method instead (#6265)
36
+
37
+ ### Features
38
+
39
+ * add bundlerRpc and paymasterRpc parameters to zerodev ([#6304](https://github.com/dynamic-labs/DynamicAuth/issues/6304)) ([156469b](https://github.com/dynamic-labs/DynamicAuth/commit/156469bf703f0c7fa455a24b8e4e328d3a0c58fc))
40
+
41
+
42
+ ### Bug Fixes
43
+
44
+ * headless embedded wallet export session refresh ([#6307](https://github.com/dynamic-labs/DynamicAuth/issues/6307)) ([5423cc1](https://github.com/dynamic-labs/DynamicAuth/commit/5423cc14c370968acf718b7deff6ea8df9228189))
45
+
46
+
47
+ * remove isConnected prop from wallets and have it as a method instead ([#6265](https://github.com/dynamic-labs/DynamicAuth/issues/6265)) ([652dcc2](https://github.com/dynamic-labs/DynamicAuth/commit/652dcc2d34c9a9719238606c67f600e40621183b))
48
+
49
+ ## [3.0.0-alpha.15](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.14...v3.0.0-alpha.15) (2024-07-11)
50
+
51
+
52
+ ### Bug Fixes
53
+
54
+ * catch third party wallet construction errors ([#6268](https://github.com/dynamic-labs/DynamicAuth/issues/6268)) ([badef39](https://github.com/dynamic-labs/DynamicAuth/commit/badef39d753c7d29925c6c8680053027bd99b69b))
55
+ * decode all solana transactions ([#6294](https://github.com/dynamic-labs/DynamicAuth/issues/6294)) ([5220ab2](https://github.com/dynamic-labs/DynamicAuth/commit/5220ab29381f3a7f1afc7043332b5a018b47eb0a))
56
+ * passkey cta ([#6255](https://github.com/dynamic-labs/DynamicAuth/issues/6255)) ([1b1b152](https://github.com/dynamic-labs/DynamicAuth/commit/1b1b152a24b409c5d941a9c92a003daf0bbe48a1))
57
+
58
+ ## [3.0.0-alpha.14](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.13...v3.0.0-alpha.14) (2024-07-09)
59
+
60
+
61
+ ### ⚠ BREAKING CHANGES
62
+
63
+ * remove setPrimaryWallet in favor of useSwitchWallet (#6212)
64
+ * move getBalance method to wallet so it can be fetched for any wallet not just the active one (#6200)
65
+ * make Wallet a class instead of just a type (#6094)
66
+
67
+ ### Features
68
+
69
+ * add @dynamic-labs/solana-extension ([#6140](https://github.com/dynamic-labs/DynamicAuth/issues/6140)) ([c0e2a06](https://github.com/dynamic-labs/DynamicAuth/commit/c0e2a067dd83163094b58a15696df8654da47c65))
70
+ * add solana support for multi-asset ([#6222](https://github.com/dynamic-labs/DynamicAuth/issues/6222)) ([9660d79](https://github.com/dynamic-labs/DynamicAuth/commit/9660d7962f1fb01011d68397bb367fdfc5335ca9))
71
+
72
+
73
+ ### Bug Fixes
74
+
75
+ * allow closing re-connect wallet modal ([#6250](https://github.com/dynamic-labs/DynamicAuth/issues/6250)) ([55ba25b](https://github.com/dynamic-labs/DynamicAuth/commit/55ba25bd3e907629aaa26e788885bfa38f8fe350))
76
+ * move getBalance method to wallet so it can be fetched for any wallet not just the active one ([#6200](https://github.com/dynamic-labs/DynamicAuth/issues/6200)) ([ee94773](https://github.com/dynamic-labs/DynamicAuth/commit/ee94773df9b31462a325666760fcf1fc70dec68a))
77
+ * move getNameService method to wallet so name service data can be fetched for any wallet ([#6205](https://github.com/dynamic-labs/DynamicAuth/issues/6205)) ([6671ae9](https://github.com/dynamic-labs/DynamicAuth/commit/6671ae92532ffc1889e24519e75f47d336ac0da6))
78
+ * relax phone number length validation ([#6226](https://github.com/dynamic-labs/DynamicAuth/issues/6226)) ([f0969b4](https://github.com/dynamic-labs/DynamicAuth/commit/f0969b4fbdafde07125cddecb16b4bfd011ea65e))
79
+ * sdkHasLoaded flipping back to false with otp ([#6242](https://github.com/dynamic-labs/DynamicAuth/issues/6242)) ([32ad9dd](https://github.com/dynamic-labs/DynamicAuth/commit/32ad9dd2dae7775f494506773fb343fe1a249c65))
80
+ * send transaction demo undefined address/value ([#6248](https://github.com/dynamic-labs/DynamicAuth/issues/6248)) ([036a511](https://github.com/dynamic-labs/DynamicAuth/commit/036a511fb848ef461edd9b7a5d79d478b0f1cf23))
81
+ * set last active account on accountChange request ([#6218](https://github.com/dynamic-labs/DynamicAuth/issues/6218)) ([05797d2](https://github.com/dynamic-labs/DynamicAuth/commit/05797d292aab8b4de02555594d4d1bbd4c9543eb))
82
+ * show ledger toggle when linking wallet ([#6202](https://github.com/dynamic-labs/DynamicAuth/issues/6202)) ([a449c0b](https://github.com/dynamic-labs/DynamicAuth/commit/a449c0bfc4e3a75ccd7084b930c48fbd6c14f691))
83
+ * show user wallet in profile view on single wallet mode even if it's not primary ([#6187](https://github.com/dynamic-labs/DynamicAuth/issues/6187)) ([ffaaeb2](https://github.com/dynamic-labs/DynamicAuth/commit/ffaaeb2c6cbb2868a381d85451ae5574024156bb))
84
+ * stop auto-switching to connected secondary wallet if primary wallet is not connected ([#6196](https://github.com/dynamic-labs/DynamicAuth/issues/6196)) ([4e8bcd2](https://github.com/dynamic-labs/DynamicAuth/commit/4e8bcd2d02d3fca54a0ed29c45b386ae99266b84))
85
+ * stop coinbase and solflare popups when secondary ([#6225](https://github.com/dynamic-labs/DynamicAuth/issues/6225)) ([7e9c104](https://github.com/dynamic-labs/DynamicAuth/commit/7e9c1049a09c9fd513c9a2a746d6baac916f1bf4))
86
+ * stop sending double sign request on network switch ([e325709](https://github.com/dynamic-labs/DynamicAuth/commit/e325709bb5d2d1331fe16cc705398fc7b1cc292a))
87
+ * tunrkey solana signer accept uint8array message ([#6137](https://github.com/dynamic-labs/DynamicAuth/issues/6137)) ([70f89ce](https://github.com/dynamic-labs/DynamicAuth/commit/70f89ce0dafa4c99b318c9c5adce59083cd6d284))
88
+ * update formatting of phantom bitcoin publickey ([#6210](https://github.com/dynamic-labs/DynamicAuth/issues/6210)) ([f58cea9](https://github.com/dynamic-labs/DynamicAuth/commit/f58cea99333fd7c6af8f56f637ee32f1f7ce8d76))
89
+ * use white color in farcaster qr code when in dark mode ([#6245](https://github.com/dynamic-labs/DynamicAuth/issues/6245)) ([a91958d](https://github.com/dynamic-labs/DynamicAuth/commit/a91958d8773be138da8f54791c4c67866257bbad))
90
+
91
+
92
+ * make Wallet a class instead of just a type ([#6094](https://github.com/dynamic-labs/DynamicAuth/issues/6094)) ([6dc4672](https://github.com/dynamic-labs/DynamicAuth/commit/6dc4672951cfadc22a6c569e74eae3485bd472f3))
93
+ * remove setPrimaryWallet in favor of useSwitchWallet ([#6212](https://github.com/dynamic-labs/DynamicAuth/issues/6212)) ([de125e1](https://github.com/dynamic-labs/DynamicAuth/commit/de125e1ebbc20507e4ec07f337f5f5fd13aabcbe))
94
+
95
+ ## [3.0.0-alpha.13](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.12...v3.0.0-alpha.13) (2024-06-27)
96
+
97
+
98
+ ### Bug Fixes
99
+
100
+ * coinbase smart wallet better handling in iframes ([#6184](https://github.com/dynamic-labs/DynamicAuth/issues/6184)) ([2c4befe](https://github.com/dynamic-labs/DynamicAuth/commit/2c4befedd09e6a432139cb3d08ea61004c3896d5))
101
+ * show connected network name when icon url is missing ([#6191](https://github.com/dynamic-labs/DynamicAuth/issues/6191)) ([dafd9e3](https://github.com/dynamic-labs/DynamicAuth/commit/dafd9e323f47ca3d61556e9a8c84ba3bfd27af8f))
102
+ * use correct account when creating wallet client ([#6179](https://github.com/dynamic-labs/DynamicAuth/issues/6179)) ([4e45a15](https://github.com/dynamic-labs/DynamicAuth/commit/4e45a15b2d7221ec80df919aa93468a75a94bed3))
103
+
104
+ ## [3.0.0-alpha.12](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.11...v3.0.0-alpha.12) (2024-06-27)
105
+
106
+
107
+ ### ⚠ BREAKING CHANGES
108
+
109
+ * return Transaction type from signTransaction and update solana … (#6180)
110
+
111
+ ### Bug Fixes
112
+
113
+ * return Transaction type from signTransaction and update solana … ([#6180](https://github.com/dynamic-labs/DynamicAuth/issues/6180)) ([07798b2](https://github.com/dynamic-labs/DynamicAuth/commit/07798b241a13f35a62e4ca0172a57a8d0cd98cf9))
114
+
115
+ ## [3.0.0-alpha.11](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.10...v3.0.0-alpha.11) (2024-06-26)
116
+
117
+
118
+ ### Bug Fixes
119
+
120
+ * prevent unwanted magiceden solana popups ([#6158](https://github.com/dynamic-labs/DynamicAuth/issues/6158)) ([b3c8208](https://github.com/dynamic-labs/DynamicAuth/commit/b3c820887eb5ec2badcfce3b19ec4dd874e90811))
121
+ * status icon for embedded wallets ([#6149](https://github.com/dynamic-labs/DynamicAuth/issues/6149)) ([135fd72](https://github.com/dynamic-labs/DynamicAuth/commit/135fd7274f4a6b2dcab98248f7bfe34a09e79f01))
122
+
123
+ ## [3.0.0-alpha.10](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.9...v3.0.0-alpha.10) (2024-06-24)
124
+
125
+
126
+ ### Bug Fixes
127
+
128
+ * clear expiresAt from local storage on logout ([#6110](https://github.com/dynamic-labs/DynamicAuth/issues/6110)) ([cbda893](https://github.com/dynamic-labs/DynamicAuth/commit/cbda893441154b6880a5419ce62a353b80f05e55))
129
+ * show SOL amount for complex transactions and better error display ([#6068](https://github.com/dynamic-labs/DynamicAuth/issues/6068)) ([454a3a0](https://github.com/dynamic-labs/DynamicAuth/commit/454a3a0a50805b3d63f44c2ef8c1dc766617eb2b))
130
+
131
+ ## [3.0.0-alpha.9](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.8...v3.0.0-alpha.9) (2024-06-21)
132
+
133
+ ## [3.0.0-alpha.8](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.7...v3.0.0-alpha.8) (2024-06-21)
134
+
135
+
136
+ ### ⚠ BREAKING CHANGES
137
+
138
+ * break out turnkey package into 3 separate packages (#6015)
139
+
140
+ ### Features
141
+
142
+ * add reinitialize hook ([#6098](https://github.com/dynamic-labs/DynamicAuth/issues/6098)) ([d978baa](https://github.com/dynamic-labs/DynamicAuth/commit/d978baa404d34064c36cc549229b1fcea1f20df0))
143
+
144
+
145
+ ### Bug Fixes
146
+
147
+ * always reconnect the wallet provider when calling getAddress ([#6097](https://github.com/dynamic-labs/DynamicAuth/issues/6097)) ([0f3d497](https://github.com/dynamic-labs/DynamicAuth/commit/0f3d497cedb38239fa9ada2bb25c6b4eaa72d7b1))
148
+ * break out turnkey package into 3 separate packages ([#6015](https://github.com/dynamic-labs/DynamicAuth/issues/6015)) ([a86fbef](https://github.com/dynamic-labs/DynamicAuth/commit/a86fbefe97558363b085e6f752af32d2943f91fa)), closes [#6017](https://github.com/dynamic-labs/DynamicAuth/issues/6017) [#6059](https://github.com/dynamic-labs/DynamicAuth/issues/6059)
149
+ * set latest blockhash on solana transactions if tx confirmation ui is disabled ([#6102](https://github.com/dynamic-labs/DynamicAuth/issues/6102)) ([b8035a3](https://github.com/dynamic-labs/DynamicAuth/commit/b8035a328e47409bf0416d3a01b2f17914488748))
150
+ * silently query unisat accounts ([#6101](https://github.com/dynamic-labs/DynamicAuth/issues/6101)) ([#6104](https://github.com/dynamic-labs/DynamicAuth/issues/6104)) ([643e704](https://github.com/dynamic-labs/DynamicAuth/commit/643e7048ff8610b31e6397e10b160ad456a45d11))
151
+ * stop querying magiceden solana accounts ([#6103](https://github.com/dynamic-labs/DynamicAuth/issues/6103)) ([#6108](https://github.com/dynamic-labs/DynamicAuth/issues/6108)) ([3cfdbc3](https://github.com/dynamic-labs/DynamicAuth/commit/3cfdbc3bc82bfe9bf53bf4236f7892a5440fcb86))
152
+ * trigger sign when linking an already linked unknown wallet ([#6105](https://github.com/dynamic-labs/DynamicAuth/issues/6105)) ([9e9c03b](https://github.com/dynamic-labs/DynamicAuth/commit/9e9c03bf615991c4f1183bf85c4d75c9a7773c85))
153
+
154
+ ## [3.0.0-alpha.7](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.6...v3.0.0-alpha.7) (2024-06-19)
155
+
156
+
157
+ ### ⚠ BREAKING CHANGES
158
+
159
+ * add selectedTabIndex and helpers (#6040)
160
+
161
+ ### Features
162
+
163
+ * add selectedTabIndex and helpers ([#6040](https://github.com/dynamic-labs/DynamicAuth/issues/6040)) ([ae20b80](https://github.com/dynamic-labs/DynamicAuth/commit/ae20b8081376dce97b18fa69c81c9ab73c1ff317))
164
+ * add useRefreshUser to trigger a user state refresh ([#6079](https://github.com/dynamic-labs/DynamicAuth/issues/6079)) ([1236d35](https://github.com/dynamic-labs/DynamicAuth/commit/1236d35fe9fab44ed2114ad9f3c8c6dca7ec27be))
165
+
166
+
167
+ ### Bug Fixes
168
+
169
+ * always return userWallets when available ([#6080](https://github.com/dynamic-labs/DynamicAuth/issues/6080)) ([#6083](https://github.com/dynamic-labs/DynamicAuth/issues/6083)) ([11992d2](https://github.com/dynamic-labs/DynamicAuth/commit/11992d2af5a401ba4ff1dc6904e2a9f8ef5904ca))
170
+ * less solana rpc calls and improve fee fetching ([#6019](https://github.com/dynamic-labs/DynamicAuth/issues/6019)) ([e2609db](https://github.com/dynamic-labs/DynamicAuth/commit/e2609db962c7708ff5b127cb23260a25bc5032e3))
171
+ * make account change idemopotent ([#6061](https://github.com/dynamic-labs/DynamicAuth/issues/6061)) ([8c87513](https://github.com/dynamic-labs/DynamicAuth/commit/8c8751390ea14888c4889679895e2f06d75717b9))
172
+ * only run multi wallet prompt when user profile or auth flow are open ([#6073](https://github.com/dynamic-labs/DynamicAuth/issues/6073)) ([d48ca10](https://github.com/dynamic-labs/DynamicAuth/commit/d48ca105359018457a78588fd8d9aa8a91583a02))
173
+ * recompute multiwallet state after merging accounts ([#6078](https://github.com/dynamic-labs/DynamicAuth/issues/6078)) ([e08a274](https://github.com/dynamic-labs/DynamicAuth/commit/e08a274c4d848f2a8360be7106cfbfa00b9a8f9b))
174
+ * stop querying okx for accounts while locked ([#6081](https://github.com/dynamic-labs/DynamicAuth/issues/6081)) ([#6084](https://github.com/dynamic-labs/DynamicAuth/issues/6084)) ([34365ac](https://github.com/dynamic-labs/DynamicAuth/commit/34365ac1981fe020b03e666c24535a247645d2ad))
175
+ * update copy for primary wallet not connected modal ([#6069](https://github.com/dynamic-labs/DynamicAuth/issues/6069)) ([4a3f43c](https://github.com/dynamic-labs/DynamicAuth/commit/4a3f43ce5585983f7fea0c5b97e812c0ade80e2c))
176
+
177
+ ## [3.0.0-alpha.6](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.5...v3.0.0-alpha.6) (2024-06-18)
178
+
179
+
180
+ ### Features
181
+
182
+ * implement useExternalAuth hook to signin using external jwt auth ([#6039](https://github.com/dynamic-labs/DynamicAuth/issues/6039)) ([ba90908](https://github.com/dynamic-labs/DynamicAuth/commit/ba90908509ec21f708a4a0782a7f94861fc3b484))
183
+
184
+
185
+ ### Bug Fixes
186
+
187
+ * allow sign-in with different ME BTC wallet after initial connection ([a527b46](https://github.com/dynamic-labs/DynamicAuth/commit/a527b464f321b4fc27730f57c3812e996b5ed878))
188
+ * close sign modal when signing in with a wallet when embedded wallet is enabled ([#6013](https://github.com/dynamic-labs/DynamicAuth/issues/6013)) ([0f4f3c8](https://github.com/dynamic-labs/DynamicAuth/commit/0f4f3c83db162f7a1794a3549b60bbad6b03e2c0))
189
+ * custom network without a valid icon should still display its name in network picker ([#6018](https://github.com/dynamic-labs/DynamicAuth/issues/6018)) ([0b10df6](https://github.com/dynamic-labs/DynamicAuth/commit/0b10df68950bfc9b8492443158a6bb030dc1122c))
190
+ * e2e: remove page pause ([#6045](https://github.com/dynamic-labs/DynamicAuth/issues/6045)) ([55bba00](https://github.com/dynamic-labs/DynamicAuth/commit/55bba0034255055d6ae266b1296542f47ed48e2b))
191
+ * more fixes for connect starknet button ([#6046](https://github.com/dynamic-labs/DynamicAuth/issues/6046)) ([0fb570a](https://github.com/dynamic-labs/DynamicAuth/commit/0fb570a44e65f8dd6d4d2bf5edb2ee54985ec9d4))
192
+ * set verified credentials on embedded wallet creation ([#6044](https://github.com/dynamic-labs/DynamicAuth/issues/6044)) ([b52a96d](https://github.com/dynamic-labs/DynamicAuth/commit/b52a96d321e7efdb30dce9cdb3f6f176c24ceb81))
193
+
194
+ ## [3.0.0-alpha.5](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.4...v3.0.0-alpha.5) (2024-06-14)
195
+
196
+
197
+ ### ⚠ BREAKING CHANGES
198
+
199
+ * remove viem dependency from non-evm packages (#5508)
200
+ * move rpc providers into their own packages (#5981)
201
+
202
+ ### Features
203
+
204
+ * add in-app browser navigation support for sats-connect ([#5988](https://github.com/dynamic-labs/DynamicAuth/issues/5988)) ([be27d2d](https://github.com/dynamic-labs/DynamicAuth/commit/be27d2d4030bbe2157e879497d8e6a00b4a3e404))
205
+ * move rpc providers into their own packages ([#5981](https://github.com/dynamic-labs/DynamicAuth/issues/5981)) ([d7a62d6](https://github.com/dynamic-labs/DynamicAuth/commit/d7a62d60e79dfa6d6651b0fa103e90b6f8a9ccf3))
206
+
207
+
208
+ ### Bug Fixes
209
+
210
+ * embedded solana wallets can send SPL tokens and estimate gas ([#5982](https://github.com/dynamic-labs/DynamicAuth/issues/5982)) ([36623eb](https://github.com/dynamic-labs/DynamicAuth/commit/36623eb99d1d1dfebfd8b6f3194eeff31e7de2bf))
211
+ * improve logic related to turnkey and emailVerifcation ([#5946](https://github.com/dynamic-labs/DynamicAuth/issues/5946)) ([dd0b2dc](https://github.com/dynamic-labs/DynamicAuth/commit/dd0b2dc6d93a8bbbcb6eef88732e62b747005bb3))
212
+ * show linked wallets with unavailable providers in user wallets list ([#5992](https://github.com/dynamic-labs/DynamicAuth/issues/5992)) ([996079c](https://github.com/dynamic-labs/DynamicAuth/commit/996079ced360651c7b1eb5273548e0548f6f9f3a))
213
+ * switch network modal not closing after switching to a supported network ([#5979](https://github.com/dynamic-labs/DynamicAuth/issues/5979)) ([f239952](https://github.com/dynamic-labs/DynamicAuth/commit/f2399523dd82bb28046992cac4582688b688bdc0))
214
+
215
+
216
+ * remove viem dependency from non-evm packages ([#5508](https://github.com/dynamic-labs/DynamicAuth/issues/5508)) ([0299dc3](https://github.com/dynamic-labs/DynamicAuth/commit/0299dc3cbb611182d763e9a89d1270c2e2f32df5))
217
+
218
+ ## [3.0.0-alpha.4](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.3...v3.0.0-alpha.4) (2024-06-12)
219
+
220
+
221
+ ### Bug Fixes
222
+
223
+ * cache getGenesisHash call to prevent over calling ([#5966](https://github.com/dynamic-labs/DynamicAuth/issues/5966)) ([b4d542f](https://github.com/dynamic-labs/DynamicAuth/commit/b4d542f0a85f5ba8c5b8f02f287caee45b4b6feb))
224
+ * handle raw messages in embedded wallet sign message modal ([#5815](https://github.com/dynamic-labs/DynamicAuth/issues/5815)) ([9adc289](https://github.com/dynamic-labs/DynamicAuth/commit/9adc28993b57c1c7f03c4ce6d500288dcf60881e))
225
+
226
+ ## [3.0.0-alpha.3](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.2...v3.0.0-alpha.3) (2024-06-11)
227
+
228
+
229
+ ### Bug Fixes
230
+
231
+ * only navigate to mfa backup codes when needed ([#5965](https://github.com/dynamic-labs/DynamicAuth/issues/5965)) ([edc462f](https://github.com/dynamic-labs/DynamicAuth/commit/edc462f20768885db1883a2c8d005e07044092d5))
232
+
2
233
  ## [3.0.0-alpha.2](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.1...v3.0.0-alpha.2) (2024-06-11)
3
234
 
4
235
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/starknet",
3
- "version": "3.0.0-alpha.2",
3
+ "version": "3.0.0-alpha.20",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/dynamic-labs/dynamic-auth.git",
@@ -30,11 +30,12 @@
30
30
  "get-starknet-core": "3.2.0",
31
31
  "text-encoding": "0.7.0",
32
32
  "starknetkit": "1.1.3",
33
- "@dynamic-labs/sdk-api-core": "0.0.461",
34
- "@dynamic-labs/rpc-provider-starknet": "3.0.0-alpha.2",
35
- "@dynamic-labs/utils": "3.0.0-alpha.2",
36
- "@dynamic-labs/wallet-book": "3.0.0-alpha.2",
37
- "@dynamic-labs/wallet-connector-core": "3.0.0-alpha.2"
33
+ "@dynamic-labs/sdk-api-core": "0.0.470",
34
+ "@module-federation/runtime": "0.1.18",
35
+ "@dynamic-labs/rpc-provider-starknet": "3.0.0-alpha.20",
36
+ "@dynamic-labs/utils": "3.0.0-alpha.20",
37
+ "@dynamic-labs/wallet-book": "3.0.0-alpha.20",
38
+ "@dynamic-labs/wallet-connector-core": "3.0.0-alpha.20"
38
39
  },
39
40
  "peerDependencies": {}
40
41
  }
package/src/index.cjs CHANGED
@@ -9,6 +9,7 @@ var argentxMobile = require('./wallets/argentxMobile.cjs');
9
9
  var argentxWeb = require('./wallets/argentxWeb.cjs');
10
10
  var bitget = require('./wallets/bitget.cjs');
11
11
  var okx = require('./wallets/okx.cjs');
12
+ var metamask = require('./wallets/metamask.cjs');
12
13
  require('@dynamic-labs/rpc-provider-starknet');
13
14
 
14
15
  /* eslint-disable @typescript-eslint/no-unused-vars */
@@ -19,6 +20,7 @@ const StarknetWalletConnectors = (props) => [
19
20
  argentxWeb.ArgentXWeb,
20
21
  okx.Okx,
21
22
  bitget.Bitget,
23
+ metamask.MetaMask,
22
24
  ];
23
25
 
24
26
  exports.StarknetWalletConnectors = StarknetWalletConnectors;
package/src/index.js CHANGED
@@ -5,6 +5,7 @@ import { ArgentXMobile } from './wallets/argentxMobile.js';
5
5
  import { ArgentXWeb } from './wallets/argentxWeb.js';
6
6
  import { Bitget } from './wallets/bitget.js';
7
7
  import { Okx } from './wallets/okx.js';
8
+ import { MetaMask } from './wallets/metamask.js';
8
9
  import '@dynamic-labs/rpc-provider-starknet';
9
10
 
10
11
  /* eslint-disable @typescript-eslint/no-unused-vars */
@@ -15,6 +16,7 @@ const StarknetWalletConnectors = (props) => [
15
16
  ArgentXWeb,
16
17
  Okx,
17
18
  Bitget,
19
+ MetaMask,
18
20
  ];
19
21
 
20
22
  export { StarknetWalletConnectors };
@@ -22,6 +22,8 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
22
22
  this.connectedChain = 'STARK';
23
23
  this.supportedChains = ['STARK'];
24
24
  this.switchNetworkOnlyFromWallet = true;
25
+ // required for metamask snap integration as MM snaps don't have event listeners
26
+ this.canSetEventListeners = true;
25
27
  this.name = name;
26
28
  this.windowKey = windowKey;
27
29
  this.starknetNetworks = opts.starknetNetworks;
@@ -131,17 +133,16 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
131
133
  return signature === null || signature === void 0 ? void 0 : signature.join(',');
132
134
  });
133
135
  }
134
- getBalance() {
136
+ getBalance(address) {
135
137
  return _tslib.__awaiter(this, void 0, void 0, function* () {
136
- const walletAddress = yield this.getAddress();
137
138
  const provider = yield this.getWalletClient();
138
- if (!walletAddress || !provider) {
139
- walletConnectorCore.logger.error('Could not fetch wallet address for getting balance');
139
+ if (!provider) {
140
+ walletConnectorCore.logger.error('Could not find provider for getting balance');
140
141
  return undefined;
141
142
  }
142
143
  const contract = new starknet.Contract(ethereumContractAbi, constants.ETH_STARKNET_ADDRESS, provider);
143
144
  try {
144
- const { balance } = yield contract.balanceOf(walletAddress);
145
+ const { balance } = yield contract.balanceOf(address);
145
146
  /**
146
147
  * Dividing by 1e18 as the returned balance is a Gwei number.
147
148
  * Read more here: https://www.investopedia.com/terms/g/gwei-ethereum.asp#toc-what-is-gwei
@@ -182,6 +183,24 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
182
183
  if (!wallet) {
183
184
  return [];
184
185
  }
186
+ try {
187
+ yield this.reconnectIfNeeded(wallet);
188
+ }
189
+ catch (e) {
190
+ return [];
191
+ }
192
+ const getSelectedAddress = () => wallet.selectedAddress
193
+ ? Promise.resolve([wallet.selectedAddress])
194
+ : Promise.reject();
195
+ return utils.retryableFn(getSelectedAddress, {
196
+ fallbackValue: [],
197
+ retryIntervalMs: 100,
198
+ retryStrategy: 'timeout-and-rejection',
199
+ });
200
+ });
201
+ }
202
+ reconnectIfNeeded(wallet) {
203
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
185
204
  const needsReconnection = !this.isProviderConnected() && (yield wallet.isPreauthorized());
186
205
  if (needsReconnection) {
187
206
  /**
@@ -199,24 +218,18 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
199
218
  }
200
219
  catch (_a) {
201
220
  localStorage.removeItem('dynamic_should_have_wallet');
202
- return [];
221
+ throw new Error('Could not reconnect');
203
222
  }
204
223
  }
205
224
  else {
206
225
  yield this.connect();
207
226
  }
208
227
  }
209
- const getSelectedAddress = () => wallet.selectedAddress
210
- ? Promise.resolve([wallet.selectedAddress])
211
- : Promise.reject();
212
- return utils.retryableFn(getSelectedAddress, {
213
- fallbackValue: [],
214
- retryIntervalMs: 100,
215
- retryStrategy: 'timeout-and-rejection',
216
- });
217
228
  });
218
229
  }
219
230
  setupEventListeners() {
231
+ if (!this.canSetEventListeners)
232
+ return;
220
233
  const wallet = this.getWallet();
221
234
  if (!wallet) {
222
235
  return walletConnectorCore.logger.error('Wallet has not been found');
@@ -245,6 +258,8 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
245
258
  }
246
259
  teardownEventListeners() {
247
260
  return _tslib.__awaiter(this, void 0, void 0, function* () {
261
+ if (!this.canSetEventListeners)
262
+ return;
248
263
  const wallet = this.getWallet();
249
264
  if (this.handleAccountChange) {
250
265
  wallet === null || wallet === void 0 ? void 0 : wallet.off(ACCOUNT_CHANGED_EVENT_LISTENER, this.handleAccountChange);
@@ -23,6 +23,7 @@ declare abstract class StarknetWalletConnector extends WalletConnectorBase {
23
23
  handleNetworkChange: NetworkChangeEventHandler | undefined;
24
24
  switchNetworkOnlyFromWallet: boolean;
25
25
  starknetNetworks: NetworkConfiguration[];
26
+ canSetEventListeners: boolean;
26
27
  constructor(name: string, windowKey: StarknetWalletKey, opts: {
27
28
  chainRpcProviders: IChainRpcProviders;
28
29
  starknetNetworks: NetworkConfiguration[];
@@ -63,6 +64,10 @@ declare abstract class StarknetWalletConnector extends WalletConnectorBase {
63
64
  features: string[];
64
65
  name: string;
65
66
  } | undefined;
67
+ walletStandardLocators?: {
68
+ name: string;
69
+ locator: string;
70
+ }[] | undefined;
66
71
  windowLocations?: string[] | undefined;
67
72
  }[] | undefined;
68
73
  mobile?: {
@@ -81,6 +86,16 @@ declare abstract class StarknetWalletConnector extends WalletConnectorBase {
81
86
  sdks?: string[] | undefined;
82
87
  } | undefined;
83
88
  walletGroup?: string | undefined;
89
+ walletLimitations?: {
90
+ browserExtension?: {
91
+ unsupportedEvents?: string[] | undefined;
92
+ unsupportedMethods?: string[] | undefined;
93
+ } | undefined;
94
+ mobile?: {
95
+ unsupportedEvents?: string[] | undefined;
96
+ unsupportedMethods?: string[] | undefined;
97
+ } | undefined;
98
+ } | undefined;
84
99
  };
85
100
  isProviderConnected(): boolean;
86
101
  getPublicClient(): Promise<RpcProvider | undefined>;
@@ -93,11 +108,12 @@ declare abstract class StarknetWalletConnector extends WalletConnectorBase {
93
108
  getSigner(): Promise<AccountInterface | undefined>;
94
109
  getWalletClient(): Promise<ProviderInterface | undefined>;
95
110
  signMessage(messageToSign: string): Promise<string | undefined>;
96
- getBalance(): Promise<string | undefined>;
111
+ getBalance(address: string): Promise<string | undefined>;
97
112
  endSession(): Promise<void>;
98
113
  getWallet(): StarknetWindowObject | undefined;
99
114
  isInstalledOnBrowser(): boolean;
100
115
  getConnectedAccounts(): Promise<string[]>;
116
+ reconnectIfNeeded(wallet: StarknetWindowObject): Promise<Promise<Promise<void>>>;
101
117
  setupEventListeners(): void;
102
118
  teardownEventListeners(): Promise<void>;
103
119
  mapNetworkNameToChainId(networkNameOrChainId: string): constants.StarknetChainId | undefined;
@@ -18,6 +18,8 @@ class StarknetWalletConnector extends WalletConnectorBase {
18
18
  this.connectedChain = 'STARK';
19
19
  this.supportedChains = ['STARK'];
20
20
  this.switchNetworkOnlyFromWallet = true;
21
+ // required for metamask snap integration as MM snaps don't have event listeners
22
+ this.canSetEventListeners = true;
21
23
  this.name = name;
22
24
  this.windowKey = windowKey;
23
25
  this.starknetNetworks = opts.starknetNetworks;
@@ -127,17 +129,16 @@ class StarknetWalletConnector extends WalletConnectorBase {
127
129
  return signature === null || signature === void 0 ? void 0 : signature.join(',');
128
130
  });
129
131
  }
130
- getBalance() {
132
+ getBalance(address) {
131
133
  return __awaiter(this, void 0, void 0, function* () {
132
- const walletAddress = yield this.getAddress();
133
134
  const provider = yield this.getWalletClient();
134
- if (!walletAddress || !provider) {
135
- logger.error('Could not fetch wallet address for getting balance');
135
+ if (!provider) {
136
+ logger.error('Could not find provider for getting balance');
136
137
  return undefined;
137
138
  }
138
139
  const contract = new Contract(ETH_CONTRACT_ABI, ETH_STARKNET_ADDRESS, provider);
139
140
  try {
140
- const { balance } = yield contract.balanceOf(walletAddress);
141
+ const { balance } = yield contract.balanceOf(address);
141
142
  /**
142
143
  * Dividing by 1e18 as the returned balance is a Gwei number.
143
144
  * Read more here: https://www.investopedia.com/terms/g/gwei-ethereum.asp#toc-what-is-gwei
@@ -178,6 +179,24 @@ class StarknetWalletConnector extends WalletConnectorBase {
178
179
  if (!wallet) {
179
180
  return [];
180
181
  }
182
+ try {
183
+ yield this.reconnectIfNeeded(wallet);
184
+ }
185
+ catch (e) {
186
+ return [];
187
+ }
188
+ const getSelectedAddress = () => wallet.selectedAddress
189
+ ? Promise.resolve([wallet.selectedAddress])
190
+ : Promise.reject();
191
+ return retryableFn(getSelectedAddress, {
192
+ fallbackValue: [],
193
+ retryIntervalMs: 100,
194
+ retryStrategy: 'timeout-and-rejection',
195
+ });
196
+ });
197
+ }
198
+ reconnectIfNeeded(wallet) {
199
+ return __awaiter(this, void 0, void 0, function* () {
181
200
  const needsReconnection = !this.isProviderConnected() && (yield wallet.isPreauthorized());
182
201
  if (needsReconnection) {
183
202
  /**
@@ -195,24 +214,18 @@ class StarknetWalletConnector extends WalletConnectorBase {
195
214
  }
196
215
  catch (_a) {
197
216
  localStorage.removeItem('dynamic_should_have_wallet');
198
- return [];
217
+ throw new Error('Could not reconnect');
199
218
  }
200
219
  }
201
220
  else {
202
221
  yield this.connect();
203
222
  }
204
223
  }
205
- const getSelectedAddress = () => wallet.selectedAddress
206
- ? Promise.resolve([wallet.selectedAddress])
207
- : Promise.reject();
208
- return retryableFn(getSelectedAddress, {
209
- fallbackValue: [],
210
- retryIntervalMs: 100,
211
- retryStrategy: 'timeout-and-rejection',
212
- });
213
224
  });
214
225
  }
215
226
  setupEventListeners() {
227
+ if (!this.canSetEventListeners)
228
+ return;
216
229
  const wallet = this.getWallet();
217
230
  if (!wallet) {
218
231
  return logger.error('Wallet has not been found');
@@ -241,6 +254,8 @@ class StarknetWalletConnector extends WalletConnectorBase {
241
254
  }
242
255
  teardownEventListeners() {
243
256
  return __awaiter(this, void 0, void 0, function* () {
257
+ if (!this.canSetEventListeners)
258
+ return;
244
259
  const wallet = this.getWallet();
245
260
  if (this.handleAccountChange) {
246
261
  wallet === null || wallet === void 0 ? void 0 : wallet.off(ACCOUNT_CHANGED_EVENT_LISTENER, this.handleAccountChange);
package/src/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { StarknetWindowObject } from 'get-starknet-core';
2
- export type StarknetWalletKey = 'braavos' | 'argentX' | 'argentXMobile' | 'argentWebWallet' | 'okxwallet' | 'bitkeep';
2
+ export type StarknetWalletKey = 'braavos' | 'argentX' | 'argentXMobile' | 'argentWebWallet' | 'okxwallet' | 'bitkeep' | 'metamask_snap';
3
3
  export type StarknetWindowKey = `starknet_${StarknetWalletKey}` | 'starknet';
4
4
  type StarknetWindow = {
5
5
  [key in StarknetWindowKey]: StarknetWindowObject;
@@ -0,0 +1,81 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../_virtual/_tslib.cjs');
7
+ var index_cjs_js = require('@module-federation/runtime/dist/index.cjs.js');
8
+
9
+ let metaMaskSnapWallet;
10
+ /**
11
+ *
12
+ * @param {IEthereum} provider the metamask window provider object
13
+ * @returns {StarknetWindowObject} the metamask provider wrapper formed into starknet window object
14
+ */
15
+ const createMetaMaskProviderWrapper = (provider) => {
16
+ const metaMaskProviderWrapper = {
17
+ get account() {
18
+ return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.account;
19
+ },
20
+ get chainId() {
21
+ return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.chainId;
22
+ },
23
+ enable: () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
24
+ if (!metaMaskSnapWallet) {
25
+ yield index_cjs_js.init({
26
+ name: 'MetaMaskStarknetSnapWallet',
27
+ remotes: [
28
+ {
29
+ alias: 'MetaMaskStarknetSnapWallet',
30
+ entry: 'https://snaps.consensys.io/starknet/get-starknet/v1/remoteEntry.js',
31
+ name: 'MetaMaskStarknetSnapWallet',
32
+ },
33
+ ],
34
+ });
35
+ const result = yield index_cjs_js.loadRemote('MetaMaskStarknetSnapWallet/index');
36
+ const { MetaMaskSnapWallet } = result;
37
+ metaMaskSnapWallet = new MetaMaskSnapWallet(provider, '*');
38
+ }
39
+ if (!metaMaskSnapWallet) {
40
+ return [];
41
+ }
42
+ return metaMaskSnapWallet.enable();
43
+ }),
44
+ icon: '',
45
+ id: 'MetaMaskStarknetSnapWallet',
46
+ get isConnected() {
47
+ return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isConnected;
48
+ },
49
+ isPreauthorized: () => { var _a; return (_a = metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isPreauthorized()) !== null && _a !== void 0 ? _a : Promise.resolve(false); },
50
+ name: 'MetaMaskStarknetSnapWallet',
51
+ off: (
52
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
53
+ event,
54
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
55
+ handleEvent) => undefined,
56
+ on: (
57
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
58
+ event,
59
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
60
+ handleEvent) => undefined,
61
+ get provider() {
62
+ return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.provider;
63
+ },
64
+ request: (call) => {
65
+ if (!metaMaskSnapWallet) {
66
+ throw new Error('Wallet not enabled');
67
+ }
68
+ return metaMaskSnapWallet.request(call);
69
+ },
70
+ get selectedAddress() {
71
+ return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.selectedAddress;
72
+ },
73
+ get version() {
74
+ var _a;
75
+ return (_a = metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.version) !== null && _a !== void 0 ? _a : '0.0.0';
76
+ },
77
+ };
78
+ return metaMaskProviderWrapper;
79
+ };
80
+
81
+ exports.createMetaMaskProviderWrapper = createMetaMaskProviderWrapper;
@@ -0,0 +1,8 @@
1
+ import { StarknetWindowObject } from 'get-starknet-core';
2
+ import { IEthereum } from '@dynamic-labs/utils';
3
+ /**
4
+ *
5
+ * @param {IEthereum} provider the metamask window provider object
6
+ * @returns {StarknetWindowObject} the metamask provider wrapper formed into starknet window object
7
+ */
8
+ export declare const createMetaMaskProviderWrapper: (provider: IEthereum) => StarknetWindowObject;
@@ -0,0 +1,77 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../_virtual/_tslib.js';
3
+ import { init, loadRemote } from '@module-federation/runtime/dist/index.cjs.js';
4
+
5
+ let metaMaskSnapWallet;
6
+ /**
7
+ *
8
+ * @param {IEthereum} provider the metamask window provider object
9
+ * @returns {StarknetWindowObject} the metamask provider wrapper formed into starknet window object
10
+ */
11
+ const createMetaMaskProviderWrapper = (provider) => {
12
+ const metaMaskProviderWrapper = {
13
+ get account() {
14
+ return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.account;
15
+ },
16
+ get chainId() {
17
+ return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.chainId;
18
+ },
19
+ enable: () => __awaiter(void 0, void 0, void 0, function* () {
20
+ if (!metaMaskSnapWallet) {
21
+ yield init({
22
+ name: 'MetaMaskStarknetSnapWallet',
23
+ remotes: [
24
+ {
25
+ alias: 'MetaMaskStarknetSnapWallet',
26
+ entry: 'https://snaps.consensys.io/starknet/get-starknet/v1/remoteEntry.js',
27
+ name: 'MetaMaskStarknetSnapWallet',
28
+ },
29
+ ],
30
+ });
31
+ const result = yield loadRemote('MetaMaskStarknetSnapWallet/index');
32
+ const { MetaMaskSnapWallet } = result;
33
+ metaMaskSnapWallet = new MetaMaskSnapWallet(provider, '*');
34
+ }
35
+ if (!metaMaskSnapWallet) {
36
+ return [];
37
+ }
38
+ return metaMaskSnapWallet.enable();
39
+ }),
40
+ icon: '',
41
+ id: 'MetaMaskStarknetSnapWallet',
42
+ get isConnected() {
43
+ return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isConnected;
44
+ },
45
+ isPreauthorized: () => { var _a; return (_a = metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isPreauthorized()) !== null && _a !== void 0 ? _a : Promise.resolve(false); },
46
+ name: 'MetaMaskStarknetSnapWallet',
47
+ off: (
48
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
49
+ event,
50
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
51
+ handleEvent) => undefined,
52
+ on: (
53
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
54
+ event,
55
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
56
+ handleEvent) => undefined,
57
+ get provider() {
58
+ return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.provider;
59
+ },
60
+ request: (call) => {
61
+ if (!metaMaskSnapWallet) {
62
+ throw new Error('Wallet not enabled');
63
+ }
64
+ return metaMaskSnapWallet.request(call);
65
+ },
66
+ get selectedAddress() {
67
+ return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.selectedAddress;
68
+ },
69
+ get version() {
70
+ var _a;
71
+ return (_a = metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.version) !== null && _a !== void 0 ? _a : '0.0.0';
72
+ },
73
+ };
74
+ return metaMaskProviderWrapper;
75
+ };
76
+
77
+ export { createMetaMaskProviderWrapper };
@@ -0,0 +1,49 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../_virtual/_tslib.cjs');
7
+ var utils = require('@dynamic-labs/utils');
8
+ var starknetWalletConnector = require('../starknetWalletConnector.cjs');
9
+ var starknetSnap = require('../utils/starknetSnap.cjs');
10
+
11
+ class MetaMask extends starknetWalletConnector["default"] {
12
+ constructor(opts) {
13
+ super('MetaMask Starknet', 'metamask_snap', opts);
14
+ this.overrideKey = 'metamaskstarknet';
15
+ this.canSetEventListeners = false;
16
+ if (!window.starknet_metamask_snap) {
17
+ const { providers } = utils.Eip6963ProviderSingleton.get();
18
+ const metamaskProvider = providers.find((p) => ['io.metamask', 'io.metamask.flask'].includes(p.info.rdns));
19
+ if (metamaskProvider) {
20
+ window.starknet_metamask_snap = starknetSnap.createMetaMaskProviderWrapper(metamaskProvider.provider);
21
+ }
22
+ }
23
+ }
24
+ getConnectedAccounts() {
25
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
26
+ const wallet = this.getWallet();
27
+ if (!wallet) {
28
+ return [];
29
+ }
30
+ try {
31
+ yield this.reconnectIfNeeded(wallet);
32
+ }
33
+ catch (e) {
34
+ return [];
35
+ }
36
+ const getSelectedAddress = () => wallet.selectedAddress
37
+ ? Promise.resolve([wallet.selectedAddress])
38
+ : Promise.reject();
39
+ return utils.retryableFn(getSelectedAddress, {
40
+ fallbackValue: [],
41
+ maxRetries: 10,
42
+ retryIntervalMs: 750,
43
+ retryStrategy: 'timeout-and-rejection',
44
+ });
45
+ });
46
+ }
47
+ }
48
+
49
+ exports.MetaMask = MetaMask;
@@ -0,0 +1,8 @@
1
+ import { type WalletConnector } from '@dynamic-labs/wallet-connector-core';
2
+ import StarknetProvider from '../starknetWalletConnector';
3
+ export declare class MetaMask extends StarknetProvider implements WalletConnector {
4
+ overrideKey: string;
5
+ canSetEventListeners: boolean;
6
+ constructor(opts: any);
7
+ getConnectedAccounts(): Promise<string[]>;
8
+ }
@@ -0,0 +1,45 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../_virtual/_tslib.js';
3
+ import { Eip6963ProviderSingleton, retryableFn } from '@dynamic-labs/utils';
4
+ import StarknetWalletConnector from '../starknetWalletConnector.js';
5
+ import { createMetaMaskProviderWrapper } from '../utils/starknetSnap.js';
6
+
7
+ class MetaMask extends StarknetWalletConnector {
8
+ constructor(opts) {
9
+ super('MetaMask Starknet', 'metamask_snap', opts);
10
+ this.overrideKey = 'metamaskstarknet';
11
+ this.canSetEventListeners = false;
12
+ if (!window.starknet_metamask_snap) {
13
+ const { providers } = Eip6963ProviderSingleton.get();
14
+ const metamaskProvider = providers.find((p) => ['io.metamask', 'io.metamask.flask'].includes(p.info.rdns));
15
+ if (metamaskProvider) {
16
+ window.starknet_metamask_snap = createMetaMaskProviderWrapper(metamaskProvider.provider);
17
+ }
18
+ }
19
+ }
20
+ getConnectedAccounts() {
21
+ return __awaiter(this, void 0, void 0, function* () {
22
+ const wallet = this.getWallet();
23
+ if (!wallet) {
24
+ return [];
25
+ }
26
+ try {
27
+ yield this.reconnectIfNeeded(wallet);
28
+ }
29
+ catch (e) {
30
+ return [];
31
+ }
32
+ const getSelectedAddress = () => wallet.selectedAddress
33
+ ? Promise.resolve([wallet.selectedAddress])
34
+ : Promise.reject();
35
+ return retryableFn(getSelectedAddress, {
36
+ fallbackValue: [],
37
+ maxRetries: 10,
38
+ retryIntervalMs: 750,
39
+ retryStrategy: 'timeout-and-rejection',
40
+ });
41
+ });
42
+ }
43
+ }
44
+
45
+ export { MetaMask };