@dynamic-labs-sdk/starknet 0.0.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +15 -0
  2. package/dist/StarknetNetworkProvider.types.d.ts +8 -0
  3. package/dist/StarknetNetworkProvider.types.d.ts.map +1 -0
  4. package/dist/StarknetWalletAccount.types.d.ts +8 -0
  5. package/dist/StarknetWalletAccount.types.d.ts.map +1 -0
  6. package/dist/StarknetWalletProvider.types.d.ts +12 -0
  7. package/dist/StarknetWalletProvider.types.d.ts.map +1 -0
  8. package/dist/addStarknetExtension/addStarknetExtension.d.ts +10 -0
  9. package/dist/addStarknetExtension/addStarknetExtension.d.ts.map +1 -0
  10. package/dist/addStarknetExtension/index.d.ts +2 -0
  11. package/dist/addStarknetExtension/index.d.ts.map +1 -0
  12. package/dist/addStarknetInjectedWalletsExtension-Bn4EkQTD.cjs.js +582 -0
  13. package/dist/addStarknetInjectedWalletsExtension-Bn4EkQTD.cjs.js.map +1 -0
  14. package/dist/addStarknetInjectedWalletsExtension-MvZK-pn0.esm.js +513 -0
  15. package/dist/addStarknetInjectedWalletsExtension-MvZK-pn0.esm.js.map +1 -0
  16. package/dist/errors/NotStarknetProviderError/NotStarknetProviderError.d.ts +8 -0
  17. package/dist/errors/NotStarknetProviderError/NotStarknetProviderError.d.ts.map +1 -0
  18. package/dist/errors/NotStarknetProviderError/index.d.ts +2 -0
  19. package/dist/errors/NotStarknetProviderError/index.d.ts.map +1 -0
  20. package/dist/exports/index.d.ts +9 -0
  21. package/dist/exports/index.d.ts.map +1 -0
  22. package/dist/exports/injected.d.ts +2 -0
  23. package/dist/exports/injected.d.ts.map +1 -0
  24. package/dist/getStarknetAccount/getStarknetAccount.d.ts +9 -0
  25. package/dist/getStarknetAccount/getStarknetAccount.d.ts.map +1 -0
  26. package/dist/getStarknetAccount/index.d.ts +2 -0
  27. package/dist/getStarknetAccount/index.d.ts.map +1 -0
  28. package/dist/index.cjs.js +70 -0
  29. package/dist/index.cjs.js.map +1 -0
  30. package/dist/index.esm.js +63 -0
  31. package/dist/index.esm.js.map +1 -0
  32. package/dist/injected/addStarknetInjectedWalletsExtension/addStarknetInjectedWalletsExtension.d.ts +10 -0
  33. package/dist/injected/addStarknetInjectedWalletsExtension/addStarknetInjectedWalletsExtension.d.ts.map +1 -0
  34. package/dist/injected/addStarknetInjectedWalletsExtension/index.d.ts +2 -0
  35. package/dist/injected/addStarknetInjectedWalletsExtension/index.d.ts.map +1 -0
  36. package/dist/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.d.ts +10 -0
  37. package/dist/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.d.ts.map +1 -0
  38. package/dist/injected/utils/createWalletProviderFromStarknetWallet/index.d.ts +2 -0
  39. package/dist/injected/utils/createWalletProviderFromStarknetWallet/index.d.ts.map +1 -0
  40. package/dist/injected.cjs.js +9 -0
  41. package/dist/injected.cjs.js.map +1 -0
  42. package/dist/injected.esm.js +9 -0
  43. package/dist/injected.esm.js.map +1 -0
  44. package/dist/isStarknetNetworkProvider/index.d.ts +2 -0
  45. package/dist/isStarknetNetworkProvider/index.d.ts.map +1 -0
  46. package/dist/isStarknetNetworkProvider/isStarknetNetworkProvider.d.ts +4 -0
  47. package/dist/isStarknetNetworkProvider/isStarknetNetworkProvider.d.ts.map +1 -0
  48. package/dist/isStarknetWalletAccount/index.d.ts +2 -0
  49. package/dist/isStarknetWalletAccount/index.d.ts.map +1 -0
  50. package/dist/isStarknetWalletAccount/isStarknetWalletAccount.d.ts +4 -0
  51. package/dist/isStarknetWalletAccount/isStarknetWalletAccount.d.ts.map +1 -0
  52. package/dist/isStarknetWalletProvider/index.d.ts +2 -0
  53. package/dist/isStarknetWalletProvider/index.d.ts.map +1 -0
  54. package/dist/isStarknetWalletProvider/isStarknetWalletProvider.d.ts +4 -0
  55. package/dist/isStarknetWalletProvider/isStarknetWalletProvider.d.ts.map +1 -0
  56. package/dist/registerStarknetNetworkProviderBuilder/index.d.ts +2 -0
  57. package/dist/registerStarknetNetworkProviderBuilder/index.d.ts.map +1 -0
  58. package/dist/registerStarknetNetworkProviderBuilder/registerStarknetNetworkProviderBuilder.d.ts +3 -0
  59. package/dist/registerStarknetNetworkProviderBuilder/registerStarknetNetworkProviderBuilder.d.ts.map +1 -0
  60. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  61. package/dist/utils/constants.d.ts +5 -0
  62. package/dist/utils/constants.d.ts.map +1 -0
  63. package/dist/utils/createStarknetNetworkProvider/createStarknetNetworkProvider.d.ts +4 -0
  64. package/dist/utils/createStarknetNetworkProvider/createStarknetNetworkProvider.d.ts.map +1 -0
  65. package/dist/utils/createStarknetNetworkProvider/index.d.ts +2 -0
  66. package/dist/utils/createStarknetNetworkProvider/index.d.ts.map +1 -0
  67. package/dist/utils/fetchStarknetBalance/fetchStarknetBalance.d.ts +8 -0
  68. package/dist/utils/fetchStarknetBalance/fetchStarknetBalance.d.ts.map +1 -0
  69. package/dist/utils/fetchStarknetBalance/index.d.ts +2 -0
  70. package/dist/utils/fetchStarknetBalance/index.d.ts.map +1 -0
  71. package/dist/utils/formatStarknetTypedDataMessage/formatStarknetTypedDataMessage.d.ts +8 -0
  72. package/dist/utils/formatStarknetTypedDataMessage/formatStarknetTypedDataMessage.d.ts.map +1 -0
  73. package/dist/utils/formatStarknetTypedDataMessage/index.d.ts +2 -0
  74. package/dist/utils/formatStarknetTypedDataMessage/index.d.ts.map +1 -0
  75. package/package.json +43 -1
package/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # @dynamic-labs-sdk/starknet
2
+
3
+ This package contains the Starknet integration for the Dynamic SDK.
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ import { addStarknetExtension } from '@dynamic-labs-sdk/starknet';
9
+ import { createDynamicClient } from '@dynamic-labs-sdk/client';
10
+
11
+ const dynamicClient = createDynamicClient({
12
+ environmentId: '123',
13
+ });
14
+ addStarknetExtension(dynamicClient);
15
+ ```
@@ -0,0 +1,8 @@
1
+ import type { BaseNetworkProvider } from '@dynamic-labs-sdk/client/core';
2
+ export type StarknetNetworkProvider = BaseNetworkProvider<'STARK'>;
3
+ declare global {
4
+ interface NetworkProviderMap {
5
+ STARK: StarknetNetworkProvider;
6
+ }
7
+ }
8
+ //# sourceMappingURL=StarknetNetworkProvider.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StarknetNetworkProvider.types.d.ts","sourceRoot":"","sources":["../src/StarknetNetworkProvider.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,MAAM,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAEnE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,kBAAkB;QAC1B,KAAK,EAAE,uBAAuB,CAAC;KAChC;CACF"}
@@ -0,0 +1,8 @@
1
+ import type { BaseWalletAccount } from '@dynamic-labs-sdk/client/core';
2
+ export type StarknetWalletAccount = BaseWalletAccount<'STARK'>;
3
+ declare global {
4
+ interface WalletAccountMap {
5
+ STARK: StarknetWalletAccount;
6
+ }
7
+ }
8
+ //# sourceMappingURL=StarknetWalletAccount.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StarknetWalletAccount.types.d.ts","sourceRoot":"","sources":["../src/StarknetWalletAccount.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAE/D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,gBAAgB;QACxB,KAAK,EAAE,qBAAqB,CAAC;KAC9B;CACF"}
@@ -0,0 +1,12 @@
1
+ import type { WalletProvider } from '@dynamic-labs-sdk/client/core';
2
+ import type { WalletAccount } from 'starknet';
3
+ import type { StarknetWalletAccount } from './StarknetWalletAccount.types';
4
+ export type StarknetWalletProvider = WalletProvider & {
5
+ chain: 'STARK';
6
+ getStarknetAccount: (args: {
7
+ walletAccount: StarknetWalletAccount;
8
+ }) => Promise<{
9
+ account: WalletAccount;
10
+ }>;
11
+ };
12
+ //# sourceMappingURL=StarknetWalletProvider.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StarknetWalletProvider.types.d.ts","sourceRoot":"","sources":["../src/StarknetWalletProvider.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG;IACpD,KAAK,EAAE,OAAO,CAAC;IACf,kBAAkB,EAAE,CAAC,IAAI,EAAE;QACzB,aAAa,EAAE,qBAAqB,CAAC;KACtC,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;CAC3C,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Adds the Starknet extension to the Dynamic client.
3
+ *
4
+ * This is a convenience function that adds support for a variety of Starknet wallets,
5
+ * like Braavos, Ready and more.
6
+ *
7
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
8
+ */
9
+ export declare const addStarknetExtension: (client?: import("@dynamic-labs-sdk/client").DynamicClient) => void;
10
+ //# sourceMappingURL=addStarknetExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addStarknetExtension.d.ts","sourceRoot":"","sources":["../../src/addStarknetExtension/addStarknetExtension.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,eAAO,MAAM,oBAAoB,iEAAkC,IAElE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { addStarknetExtension } from './addStarknetExtension';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/addStarknetExtension/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,582 @@
1
+ //#region rolldown:runtime
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
+ key = keys[i];
12
+ if (!__hasOwnProp.call(to, key) && key !== except) {
13
+ __defProp(to, key, {
14
+ get: ((k) => from[k]).bind(null, key),
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ }
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
+ value: mod,
24
+ enumerable: true
25
+ }) : target, mod));
26
+
27
+ //#endregion
28
+ let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
29
+ let _starknet_io_get_starknet_core = require("@starknet-io/get-starknet-core");
30
+ _starknet_io_get_starknet_core = __toESM(_starknet_io_get_starknet_core);
31
+ let starknet = require("starknet");
32
+ let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
33
+ let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
34
+
35
+ //#region package.json
36
+ var name = "@dynamic-labs-sdk/starknet";
37
+ var version = "0.5.0";
38
+
39
+ //#endregion
40
+ //#region src/utils/constants.ts
41
+ const WEI_PER_ETH = 0xde0b6b3a7640000;
42
+ const ETH_STARKNET_ADDRESS = "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7";
43
+ const ETH_CONTRACT_ABI = [
44
+ {
45
+ members: [{
46
+ name: "low",
47
+ offset: 0,
48
+ type: "felt"
49
+ }, {
50
+ name: "high",
51
+ offset: 1,
52
+ type: "felt"
53
+ }],
54
+ name: "Uint256",
55
+ size: 2,
56
+ type: "struct"
57
+ },
58
+ {
59
+ data: [
60
+ {
61
+ name: "from_",
62
+ type: "felt"
63
+ },
64
+ {
65
+ name: "to",
66
+ type: "felt"
67
+ },
68
+ {
69
+ name: "value",
70
+ type: "Uint256"
71
+ }
72
+ ],
73
+ keys: [],
74
+ name: "Transfer",
75
+ type: "event"
76
+ },
77
+ {
78
+ data: [
79
+ {
80
+ name: "owner",
81
+ type: "felt"
82
+ },
83
+ {
84
+ name: "spender",
85
+ type: "felt"
86
+ },
87
+ {
88
+ name: "value",
89
+ type: "Uint256"
90
+ }
91
+ ],
92
+ keys: [],
93
+ name: "Approval",
94
+ type: "event"
95
+ },
96
+ {
97
+ inputs: [],
98
+ name: "name",
99
+ outputs: [{
100
+ name: "name",
101
+ type: "felt"
102
+ }],
103
+ stateMutability: "view",
104
+ type: "function"
105
+ },
106
+ {
107
+ inputs: [],
108
+ name: "symbol",
109
+ outputs: [{
110
+ name: "symbol",
111
+ type: "felt"
112
+ }],
113
+ stateMutability: "view",
114
+ type: "function"
115
+ },
116
+ {
117
+ inputs: [],
118
+ name: "totalSupply",
119
+ outputs: [{
120
+ name: "totalSupply",
121
+ type: "Uint256"
122
+ }],
123
+ stateMutability: "view",
124
+ type: "function"
125
+ },
126
+ {
127
+ inputs: [],
128
+ name: "decimals",
129
+ outputs: [{
130
+ name: "decimals",
131
+ type: "felt"
132
+ }],
133
+ stateMutability: "view",
134
+ type: "function"
135
+ },
136
+ {
137
+ inputs: [{
138
+ name: "account",
139
+ type: "felt"
140
+ }],
141
+ name: "balanceOf",
142
+ outputs: [{
143
+ name: "balance",
144
+ type: "Uint256"
145
+ }],
146
+ stateMutability: "view",
147
+ type: "function"
148
+ },
149
+ {
150
+ inputs: [{
151
+ name: "owner",
152
+ type: "felt"
153
+ }, {
154
+ name: "spender",
155
+ type: "felt"
156
+ }],
157
+ name: "allowance",
158
+ outputs: [{
159
+ name: "remaining",
160
+ type: "Uint256"
161
+ }],
162
+ stateMutability: "view",
163
+ type: "function"
164
+ },
165
+ {
166
+ inputs: [],
167
+ name: "permittedMinter",
168
+ outputs: [{
169
+ name: "minter",
170
+ type: "felt"
171
+ }],
172
+ stateMutability: "view",
173
+ type: "function"
174
+ },
175
+ {
176
+ inputs: [],
177
+ name: "initialized",
178
+ outputs: [{
179
+ name: "res",
180
+ type: "felt"
181
+ }],
182
+ stateMutability: "view",
183
+ type: "function"
184
+ },
185
+ {
186
+ inputs: [],
187
+ name: "get_version",
188
+ outputs: [{
189
+ name: "version",
190
+ type: "felt"
191
+ }],
192
+ stateMutability: "view",
193
+ type: "function"
194
+ },
195
+ {
196
+ inputs: [],
197
+ name: "get_identity",
198
+ outputs: [{
199
+ name: "identity",
200
+ type: "felt"
201
+ }],
202
+ stateMutability: "view",
203
+ type: "function"
204
+ },
205
+ {
206
+ inputs: [{
207
+ name: "init_vector_len",
208
+ type: "felt"
209
+ }, {
210
+ name: "init_vector",
211
+ type: "felt*"
212
+ }],
213
+ name: "initialize",
214
+ outputs: [],
215
+ type: "function"
216
+ },
217
+ {
218
+ inputs: [{
219
+ name: "recipient",
220
+ type: "felt"
221
+ }, {
222
+ name: "amount",
223
+ type: "Uint256"
224
+ }],
225
+ name: "transfer",
226
+ outputs: [{
227
+ name: "success",
228
+ type: "felt"
229
+ }],
230
+ type: "function"
231
+ },
232
+ {
233
+ inputs: [
234
+ {
235
+ name: "sender",
236
+ type: "felt"
237
+ },
238
+ {
239
+ name: "recipient",
240
+ type: "felt"
241
+ },
242
+ {
243
+ name: "amount",
244
+ type: "Uint256"
245
+ }
246
+ ],
247
+ name: "transferFrom",
248
+ outputs: [{
249
+ name: "success",
250
+ type: "felt"
251
+ }],
252
+ type: "function"
253
+ },
254
+ {
255
+ inputs: [{
256
+ name: "spender",
257
+ type: "felt"
258
+ }, {
259
+ name: "amount",
260
+ type: "Uint256"
261
+ }],
262
+ name: "approve",
263
+ outputs: [{
264
+ name: "success",
265
+ type: "felt"
266
+ }],
267
+ type: "function"
268
+ },
269
+ {
270
+ inputs: [{
271
+ name: "spender",
272
+ type: "felt"
273
+ }, {
274
+ name: "added_value",
275
+ type: "Uint256"
276
+ }],
277
+ name: "increaseAllowance",
278
+ outputs: [{
279
+ name: "success",
280
+ type: "felt"
281
+ }],
282
+ type: "function"
283
+ },
284
+ {
285
+ inputs: [{
286
+ name: "spender",
287
+ type: "felt"
288
+ }, {
289
+ name: "subtracted_value",
290
+ type: "Uint256"
291
+ }],
292
+ name: "decreaseAllowance",
293
+ outputs: [{
294
+ name: "success",
295
+ type: "felt"
296
+ }],
297
+ type: "function"
298
+ },
299
+ {
300
+ inputs: [{
301
+ name: "recipient",
302
+ type: "felt"
303
+ }, {
304
+ name: "amount",
305
+ type: "Uint256"
306
+ }],
307
+ name: "permissionedMint",
308
+ outputs: [],
309
+ type: "function"
310
+ },
311
+ {
312
+ inputs: [{
313
+ name: "account",
314
+ type: "felt"
315
+ }, {
316
+ name: "amount",
317
+ type: "Uint256"
318
+ }],
319
+ name: "permissionedBurn",
320
+ outputs: [],
321
+ type: "function"
322
+ }
323
+ ];
324
+
325
+ //#endregion
326
+ //#region src/utils/fetchStarknetBalance/fetchStarknetBalance.ts
327
+ const fetchStarknetBalance = async ({ address, networkData }) => {
328
+ const { balance } = await new starknet.Contract(ETH_CONTRACT_ABI, ETH_STARKNET_ADDRESS, new starknet.RpcProvider({ nodeUrl: networkData.rpcUrls.http[0] })).balanceOf(address);
329
+ return (Number(starknet.cairo.uint256(balance.low).low) / WEI_PER_ETH).toFixed(6);
330
+ };
331
+
332
+ //#endregion
333
+ //#region src/utils/createStarknetNetworkProvider/createStarknetNetworkProvider.ts
334
+ const createStarknetNetworkProvider = (networkData) => ({
335
+ ...(0, _dynamic_labs_sdk_client_core.createBaseNetworkProvider)("STARK", networkData),
336
+ getBalance: async ({ address }) => ({ balance: await fetchStarknetBalance({
337
+ address,
338
+ networkData
339
+ }) })
340
+ });
341
+
342
+ //#endregion
343
+ //#region src/registerStarknetNetworkProviderBuilder/registerStarknetNetworkProviderBuilder.ts
344
+ const registerStarknetNetworkProviderBuilder = (client) => {
345
+ const networkProviderBuilderRegistry = (0, _dynamic_labs_sdk_client_core.getNetworkProviderBuilderRegistry)(client);
346
+ if (networkProviderBuilderRegistry.get().get("STARK")) return;
347
+ networkProviderBuilderRegistry.register({
348
+ builder: createStarknetNetworkProvider,
349
+ chain: "STARK"
350
+ });
351
+ };
352
+
353
+ //#endregion
354
+ //#region src/utils/formatStarknetTypedDataMessage/formatStarknetTypedDataMessage.ts
355
+ const defaultTypedData = {
356
+ primaryType: "Message",
357
+ types: {
358
+ Message: [{
359
+ name: "message",
360
+ type: "felt"
361
+ }],
362
+ StarkNetDomain: [
363
+ {
364
+ name: "name",
365
+ type: "felt"
366
+ },
367
+ {
368
+ name: "chainId",
369
+ type: "felt"
370
+ },
371
+ {
372
+ name: "version",
373
+ type: "felt"
374
+ }
375
+ ]
376
+ }
377
+ };
378
+ const formatStarknetTypedDataMessage = ({ inputMessage, chainId }) => {
379
+ let nonce, domain;
380
+ try {
381
+ const { nonce: parsedNonce, domain: parsedDomain } = JSON.parse(inputMessage);
382
+ nonce = parsedNonce;
383
+ domain = parsedDomain;
384
+ } catch {
385
+ nonce = inputMessage;
386
+ domain = "domain";
387
+ }
388
+ const message = { message: nonce.substring(0, 31) };
389
+ return {
390
+ ...defaultTypedData,
391
+ domain: {
392
+ chainId,
393
+ name: domain.substring(0, 31),
394
+ version: "0.0.1"
395
+ },
396
+ message
397
+ };
398
+ };
399
+
400
+ //#endregion
401
+ //#region src/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.ts
402
+ const createWalletProviderFromStarknetWallet = ({ dynamicClient, starknetWindowProvider }) => {
403
+ const walletProviderType = _dynamic_labs_sdk_api_core.WalletProviderEnum.BrowserExtension;
404
+ const key = (0, _dynamic_labs_sdk_client_core.formatWalletProviderKey)({
405
+ chain: "STARK",
406
+ displayName: starknetWindowProvider.name,
407
+ walletProviderType
408
+ });
409
+ const connect = async () => {
410
+ return { addresses: (await starknetWindowProvider.request({ type: "wallet_requestAccounts" })).map((address) => ({ address })) };
411
+ };
412
+ const disconnect = async () => {
413
+ try {
414
+ await starknetWindowProvider.request({ type: "wallet_disconnect" });
415
+ } catch {}
416
+ await _starknet_io_get_starknet_core.default.disconnect();
417
+ };
418
+ const getActiveNetworkId = async () => {
419
+ return { networkId: await starknetWindowProvider.request({ type: "wallet_requestChainId" }) };
420
+ };
421
+ const getConnectedAddresses = async () => {
422
+ return { addresses: await starknetWindowProvider.request({
423
+ params: { silent_mode: true },
424
+ type: "wallet_requestAccounts"
425
+ }) };
426
+ };
427
+ const getStarknetAccount = async ({ walletAccount }) => {
428
+ await (0, _dynamic_labs_sdk_client.assertWalletAccountSigningAvailability)({ walletAccount }, dynamicClient);
429
+ const { networkData } = await (0, _dynamic_labs_sdk_client.getActiveNetworkData)({ walletAccount }, dynamicClient);
430
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(networkData, "No active network data found");
431
+ const rpcProvider = new starknet.RpcProvider({ nodeUrl: networkData.rpcUrls.http[0] });
432
+ return { account: await starknet.WalletAccount.connectSilent(rpcProvider, starknetWindowProvider) };
433
+ };
434
+ const signMessage = async ({ message, walletAccount }) => {
435
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(walletAccount, "Wallet account not found");
436
+ await (0, _dynamic_labs_sdk_client.assertWalletAccountSigningAvailability)({ walletAccount }, dynamicClient);
437
+ const { networkId } = await getActiveNetworkId();
438
+ const encodedMessage = formatStarknetTypedDataMessage({
439
+ chainId: networkId,
440
+ inputMessage: message
441
+ });
442
+ return { signature: (await starknetWindowProvider.request({
443
+ params: encodedMessage,
444
+ type: "wallet_signTypedData"
445
+ })).join(",") };
446
+ };
447
+ const switchActiveNetwork = async ({ networkId }) => {
448
+ await starknetWindowProvider.request({
449
+ params: { chainId: networkId },
450
+ type: "wallet_switchStarknetChain"
451
+ });
452
+ };
453
+ const { getEventEmitter, cleanupEventEmitter } = (0, _dynamic_labs_sdk_client_core.createWalletProviderEventEmitter)({
454
+ removeEventListeners: ({ setupReturnValue }) => {
455
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(setupReturnValue, "Setup return value not defined");
456
+ setupReturnValue.removeNetworkChangeListener();
457
+ setupReturnValue.removeAccountChangeListener();
458
+ },
459
+ setupEventListeners: ({ handleAccountsChanged, handleNetworkChanged }) => {
460
+ const onAccountsChanged = (accounts) => {
461
+ handleAccountsChanged({ addresses: accounts ?? [] });
462
+ };
463
+ starknetWindowProvider.on("accountsChanged", onAccountsChanged);
464
+ const removeAccountChangeListener = () => {
465
+ starknetWindowProvider.off("accountsChanged", onAccountsChanged);
466
+ };
467
+ const onNetworkChanged = (network) => {
468
+ if (!network) return;
469
+ handleNetworkChanged({ networkId: network.toString() });
470
+ };
471
+ starknetWindowProvider.on("networkChanged", onNetworkChanged);
472
+ const removeNetworkChangeListener = () => {
473
+ starknetWindowProvider.off("networkChanged", onNetworkChanged);
474
+ };
475
+ return {
476
+ removeAccountChangeListener,
477
+ removeNetworkChangeListener
478
+ };
479
+ },
480
+ supportedEvents: ["accountsChanged", "networkChanged"]
481
+ });
482
+ const terminate = async () => {
483
+ cleanupEventEmitter();
484
+ };
485
+ return {
486
+ chain: "STARK",
487
+ connect,
488
+ disconnect,
489
+ get events() {
490
+ return getEventEmitter();
491
+ },
492
+ getActiveNetworkId,
493
+ getConnectedAddresses,
494
+ getStarknetAccount,
495
+ groupKey: (0, _dynamic_labs_sdk_client_core.formatWalletProviderGroupKey)(starknetWindowProvider.name),
496
+ key,
497
+ metadata: {
498
+ displayName: starknetWindowProvider.name,
499
+ icon: typeof starknetWindowProvider.icon === "string" ? starknetWindowProvider.icon : starknetWindowProvider.icon.light
500
+ },
501
+ signMessage,
502
+ switchActiveNetwork,
503
+ terminate,
504
+ walletProviderType
505
+ };
506
+ };
507
+
508
+ //#endregion
509
+ //#region src/injected/addStarknetInjectedWalletsExtension/addStarknetInjectedWalletsExtension.ts
510
+ const STARKNET_INJECTED_WALLETS_EXTENSION_KEY = "starknetInjectedWallets";
511
+ /**
512
+ * Adds the Starknet Injected Wallets extension to the Dynamic client.
513
+ *
514
+ * This extension enables integration with many Starknet wallets, like Braavos, Ready and Xverse.
515
+ *
516
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
517
+ */
518
+ const addStarknetInjectedWalletsExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
519
+ if ((0, _dynamic_labs_sdk_client_core.hasExtension)({ extensionKey: STARKNET_INJECTED_WALLETS_EXTENSION_KEY }, client)) return;
520
+ (0, _dynamic_labs_sdk_client_core.registerExtension)({ extensionKey: STARKNET_INJECTED_WALLETS_EXTENSION_KEY }, client);
521
+ registerStarknetNetworkProviderBuilder(client);
522
+ const walletProviderRegistry = (0, _dynamic_labs_sdk_client_core.getWalletProviderRegistry)(client);
523
+ _starknet_io_get_starknet_core.default.getAvailableWallets().then((starknetWindowProviders) => {
524
+ starknetWindowProviders.forEach((starknetWindowProvider) => {
525
+ const walletProvider = createWalletProviderFromStarknetWallet({
526
+ dynamicClient: client,
527
+ starknetWindowProvider
528
+ });
529
+ walletProviderRegistry.register({
530
+ priority: _dynamic_labs_sdk_client_core.WalletProviderPriority.WINDOW_INJECT,
531
+ walletProvider
532
+ });
533
+ });
534
+ }).catch((error) => {
535
+ (0, _dynamic_labs_sdk_client_core.getCore)(client).logger.error("Error getting available starknet wallets", error);
536
+ });
537
+ };
538
+
539
+ //#endregion
540
+ Object.defineProperty(exports, 'ETH_CONTRACT_ABI', {
541
+ enumerable: true,
542
+ get: function () {
543
+ return ETH_CONTRACT_ABI;
544
+ }
545
+ });
546
+ Object.defineProperty(exports, 'ETH_STARKNET_ADDRESS', {
547
+ enumerable: true,
548
+ get: function () {
549
+ return ETH_STARKNET_ADDRESS;
550
+ }
551
+ });
552
+ Object.defineProperty(exports, 'WEI_PER_ETH', {
553
+ enumerable: true,
554
+ get: function () {
555
+ return WEI_PER_ETH;
556
+ }
557
+ });
558
+ Object.defineProperty(exports, '__toESM', {
559
+ enumerable: true,
560
+ get: function () {
561
+ return __toESM;
562
+ }
563
+ });
564
+ Object.defineProperty(exports, 'addStarknetInjectedWalletsExtension', {
565
+ enumerable: true,
566
+ get: function () {
567
+ return addStarknetInjectedWalletsExtension;
568
+ }
569
+ });
570
+ Object.defineProperty(exports, 'name', {
571
+ enumerable: true,
572
+ get: function () {
573
+ return name;
574
+ }
575
+ });
576
+ Object.defineProperty(exports, 'version', {
577
+ enumerable: true,
578
+ get: function () {
579
+ return version;
580
+ }
581
+ });
582
+ //# sourceMappingURL=addStarknetInjectedWalletsExtension-Bn4EkQTD.cjs.js.map