@dynamic-labs-sdk/starknet 0.0.0 → 0.6.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.
- package/README.md +15 -0
- package/dist/StarknetNetworkProvider.types.d.ts +8 -0
- package/dist/StarknetNetworkProvider.types.d.ts.map +1 -0
- package/dist/StarknetWalletAccount.types.d.ts +8 -0
- package/dist/StarknetWalletAccount.types.d.ts.map +1 -0
- package/dist/StarknetWalletProvider.types.d.ts +12 -0
- package/dist/StarknetWalletProvider.types.d.ts.map +1 -0
- package/dist/addStarknetExtension/addStarknetExtension.d.ts +10 -0
- package/dist/addStarknetExtension/addStarknetExtension.d.ts.map +1 -0
- package/dist/addStarknetExtension/index.d.ts +2 -0
- package/dist/addStarknetExtension/index.d.ts.map +1 -0
- package/dist/addStarknetInjectedWalletsExtension-CnzMRWdu.esm.js +513 -0
- package/dist/addStarknetInjectedWalletsExtension-CnzMRWdu.esm.js.map +1 -0
- package/dist/addStarknetInjectedWalletsExtension-Dfzz6tOd.cjs.js +582 -0
- package/dist/addStarknetInjectedWalletsExtension-Dfzz6tOd.cjs.js.map +1 -0
- package/dist/errors/NotStarknetProviderError/NotStarknetProviderError.d.ts +8 -0
- package/dist/errors/NotStarknetProviderError/NotStarknetProviderError.d.ts.map +1 -0
- package/dist/errors/NotStarknetProviderError/index.d.ts +2 -0
- package/dist/errors/NotStarknetProviderError/index.d.ts.map +1 -0
- package/dist/exports/index.d.ts +9 -0
- package/dist/exports/index.d.ts.map +1 -0
- package/dist/exports/injected.d.ts +2 -0
- package/dist/exports/injected.d.ts.map +1 -0
- package/dist/getStarknetAccount/getStarknetAccount.d.ts +9 -0
- package/dist/getStarknetAccount/getStarknetAccount.d.ts.map +1 -0
- package/dist/getStarknetAccount/index.d.ts +2 -0
- package/dist/getStarknetAccount/index.d.ts.map +1 -0
- package/dist/index.cjs.js +70 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.esm.js +63 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/injected/addStarknetInjectedWalletsExtension/addStarknetInjectedWalletsExtension.d.ts +10 -0
- package/dist/injected/addStarknetInjectedWalletsExtension/addStarknetInjectedWalletsExtension.d.ts.map +1 -0
- package/dist/injected/addStarknetInjectedWalletsExtension/index.d.ts +2 -0
- package/dist/injected/addStarknetInjectedWalletsExtension/index.d.ts.map +1 -0
- package/dist/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.d.ts +10 -0
- package/dist/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.d.ts.map +1 -0
- package/dist/injected/utils/createWalletProviderFromStarknetWallet/index.d.ts +2 -0
- package/dist/injected/utils/createWalletProviderFromStarknetWallet/index.d.ts.map +1 -0
- package/dist/injected.cjs.js +9 -0
- package/dist/injected.cjs.js.map +1 -0
- package/dist/injected.esm.js +9 -0
- package/dist/injected.esm.js.map +1 -0
- package/dist/isStarknetNetworkProvider/index.d.ts +2 -0
- package/dist/isStarknetNetworkProvider/index.d.ts.map +1 -0
- package/dist/isStarknetNetworkProvider/isStarknetNetworkProvider.d.ts +4 -0
- package/dist/isStarknetNetworkProvider/isStarknetNetworkProvider.d.ts.map +1 -0
- package/dist/isStarknetWalletAccount/index.d.ts +2 -0
- package/dist/isStarknetWalletAccount/index.d.ts.map +1 -0
- package/dist/isStarknetWalletAccount/isStarknetWalletAccount.d.ts +4 -0
- package/dist/isStarknetWalletAccount/isStarknetWalletAccount.d.ts.map +1 -0
- package/dist/isStarknetWalletProvider/index.d.ts +2 -0
- package/dist/isStarknetWalletProvider/index.d.ts.map +1 -0
- package/dist/isStarknetWalletProvider/isStarknetWalletProvider.d.ts +4 -0
- package/dist/isStarknetWalletProvider/isStarknetWalletProvider.d.ts.map +1 -0
- package/dist/registerStarknetNetworkProviderBuilder/index.d.ts +2 -0
- package/dist/registerStarknetNetworkProviderBuilder/index.d.ts.map +1 -0
- package/dist/registerStarknetNetworkProviderBuilder/registerStarknetNetworkProviderBuilder.d.ts +3 -0
- package/dist/registerStarknetNetworkProviderBuilder/registerStarknetNetworkProviderBuilder.d.ts.map +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/dist/utils/constants.d.ts +5 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/createStarknetNetworkProvider/createStarknetNetworkProvider.d.ts +4 -0
- package/dist/utils/createStarknetNetworkProvider/createStarknetNetworkProvider.d.ts.map +1 -0
- package/dist/utils/createStarknetNetworkProvider/index.d.ts +2 -0
- package/dist/utils/createStarknetNetworkProvider/index.d.ts.map +1 -0
- package/dist/utils/fetchStarknetBalance/fetchStarknetBalance.d.ts +8 -0
- package/dist/utils/fetchStarknetBalance/fetchStarknetBalance.d.ts.map +1 -0
- package/dist/utils/fetchStarknetBalance/index.d.ts +2 -0
- package/dist/utils/fetchStarknetBalance/index.d.ts.map +1 -0
- package/dist/utils/formatStarknetTypedDataMessage/formatStarknetTypedDataMessage.d.ts +8 -0
- package/dist/utils/formatStarknetTypedDataMessage/formatStarknetTypedDataMessage.d.ts.map +1 -0
- package/dist/utils/formatStarknetTypedDataMessage/index.d.ts +2 -0
- package/dist/utils/formatStarknetTypedDataMessage/index.d.ts.map +1 -0
- package/package.json +43 -1
|
@@ -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.6.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-Dfzz6tOd.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addStarknetInjectedWalletsExtension-Dfzz6tOd.cjs.js","names":["ETH_CONTRACT_ABI: Abi","Contract","RpcProvider","cairo","message: Record<string, unknown>","WalletProviderEnum","connect: StarknetWalletProvider['connect']","disconnect: StarknetWalletProvider['disconnect']","starknetCore","getActiveNetworkId: StarknetWalletProvider['getActiveNetworkId']","getConnectedAddresses: StarknetWalletProvider['getConnectedAddresses']","getStarknetAccount: StarknetWalletProvider['getStarknetAccount']","RpcProvider","WalletAccount","signMessage: StarknetWalletProvider['signMessage']","switchActiveNetwork: StarknetWalletProvider['switchActiveNetwork']","terminate: StarknetWalletProvider['terminate']","WalletProviderPriority"],"sources":["../package.json","../src/utils/constants.ts","../src/utils/fetchStarknetBalance/fetchStarknetBalance.ts","../src/utils/createStarknetNetworkProvider/createStarknetNetworkProvider.ts","../src/registerStarknetNetworkProviderBuilder/registerStarknetNetworkProviderBuilder.ts","../src/utils/formatStarknetTypedDataMessage/formatStarknetTypedDataMessage.ts","../src/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.ts","../src/injected/addStarknetInjectedWalletsExtension/addStarknetInjectedWalletsExtension.ts"],"sourcesContent":["","/* eslint-disable custom-rules/ban-ethereum-eth-terms */\n\nimport type { Abi } from 'starknet';\n\n// Starknet uses ETH as its native token: 1 ETH = 10^18 wei.\nexport const WEI_PER_ETH = 1e18;\n\nexport const ETH_STARKNET_ADDRESS =\n '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7';\n\nexport const ETH_CONTRACT_ABI: Abi = [\n {\n members: [\n {\n name: 'low',\n offset: 0,\n type: 'felt',\n },\n {\n name: 'high',\n offset: 1,\n type: 'felt',\n },\n ],\n name: 'Uint256',\n size: 2,\n type: 'struct',\n },\n {\n data: [\n {\n name: 'from_',\n type: 'felt',\n },\n {\n name: 'to',\n type: 'felt',\n },\n {\n name: 'value',\n type: 'Uint256',\n },\n ],\n keys: [],\n name: 'Transfer',\n type: 'event',\n },\n {\n data: [\n {\n name: 'owner',\n type: 'felt',\n },\n {\n name: 'spender',\n type: 'felt',\n },\n {\n name: 'value',\n type: 'Uint256',\n },\n ],\n keys: [],\n name: 'Approval',\n type: 'event',\n },\n {\n inputs: [],\n name: 'name',\n outputs: [\n {\n name: 'name',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'symbol',\n outputs: [\n {\n name: 'symbol',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalSupply',\n outputs: [\n {\n name: 'totalSupply',\n type: 'Uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'decimals',\n outputs: [\n {\n name: 'decimals',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'account',\n type: 'felt',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n name: 'balance',\n type: 'Uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'felt',\n },\n {\n name: 'spender',\n type: 'felt',\n },\n ],\n name: 'allowance',\n outputs: [\n {\n name: 'remaining',\n type: 'Uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'permittedMinter',\n outputs: [\n {\n name: 'minter',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'initialized',\n outputs: [\n {\n name: 'res',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'get_version',\n outputs: [\n {\n name: 'version',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'get_identity',\n outputs: [\n {\n name: 'identity',\n type: 'felt',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'init_vector_len',\n type: 'felt',\n },\n {\n name: 'init_vector',\n type: 'felt*',\n },\n ],\n name: 'initialize',\n outputs: [],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'recipient',\n type: 'felt',\n },\n {\n name: 'amount',\n type: 'Uint256',\n },\n ],\n name: 'transfer',\n outputs: [\n {\n name: 'success',\n type: 'felt',\n },\n ],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'sender',\n type: 'felt',\n },\n {\n name: 'recipient',\n type: 'felt',\n },\n {\n name: 'amount',\n type: 'Uint256',\n },\n ],\n name: 'transferFrom',\n outputs: [\n {\n name: 'success',\n type: 'felt',\n },\n ],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'spender',\n type: 'felt',\n },\n {\n name: 'amount',\n type: 'Uint256',\n },\n ],\n name: 'approve',\n outputs: [\n {\n name: 'success',\n type: 'felt',\n },\n ],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'spender',\n type: 'felt',\n },\n {\n name: 'added_value',\n type: 'Uint256',\n },\n ],\n name: 'increaseAllowance',\n outputs: [\n {\n name: 'success',\n type: 'felt',\n },\n ],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'spender',\n type: 'felt',\n },\n {\n name: 'subtracted_value',\n type: 'Uint256',\n },\n ],\n name: 'decreaseAllowance',\n outputs: [\n {\n name: 'success',\n type: 'felt',\n },\n ],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'recipient',\n type: 'felt',\n },\n {\n name: 'amount',\n type: 'Uint256',\n },\n ],\n name: 'permissionedMint',\n outputs: [],\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'account',\n type: 'felt',\n },\n {\n name: 'amount',\n type: 'Uint256',\n },\n ],\n name: 'permissionedBurn',\n outputs: [],\n type: 'function',\n },\n];\n","/* eslint-disable custom-rules/ban-ethereum-eth-terms */\nimport type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { Contract, RpcProvider, cairo } from 'starknet';\n\nimport {\n ETH_CONTRACT_ABI,\n ETH_STARKNET_ADDRESS,\n WEI_PER_ETH,\n} from '../constants';\n\ntype FetchStarknetBalanceParams = {\n address: string;\n networkData: NetworkData;\n};\n\nexport const fetchStarknetBalance = async ({\n address,\n networkData,\n}: FetchStarknetBalanceParams): Promise<string | null> => {\n const provider = new RpcProvider({\n nodeUrl: networkData.rpcUrls.http[0],\n });\n\n const contract = new Contract(\n ETH_CONTRACT_ABI,\n ETH_STARKNET_ADDRESS,\n provider\n );\n\n const { balance } = await contract.balanceOf(address);\n\n return (Number(cairo.uint256(balance.low).low) / WEI_PER_ETH).toFixed(6);\n};\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { createBaseNetworkProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { StarknetNetworkProvider } from '../../StarknetNetworkProvider.types';\nimport { fetchStarknetBalance } from '../fetchStarknetBalance';\n\nexport const createStarknetNetworkProvider = (\n networkData: NetworkData\n): StarknetNetworkProvider => ({\n ...createBaseNetworkProvider('STARK', networkData),\n getBalance: async ({ address }) => ({\n balance: await fetchStarknetBalance({\n address,\n networkData,\n }),\n }),\n});\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getNetworkProviderBuilderRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { createStarknetNetworkProvider } from '../utils/createStarknetNetworkProvider';\n\nexport const registerStarknetNetworkProviderBuilder = (\n client: DynamicClient\n): void => {\n const networkProviderBuilderRegistry =\n getNetworkProviderBuilderRegistry(client);\n\n // If the Starknet network provider builder is already registered, return.\n if (networkProviderBuilderRegistry.get().get('STARK')) {\n return;\n }\n\n networkProviderBuilderRegistry.register({\n builder: createStarknetNetworkProvider,\n chain: 'STARK',\n });\n};\n","import type { TypedData, constants } from 'starknet';\n\nconst defaultTypedData = {\n primaryType: 'Message',\n types: {\n Message: [\n {\n name: 'message',\n type: 'felt',\n },\n ],\n StarkNetDomain: [\n {\n name: 'name',\n type: 'felt',\n },\n {\n name: 'chainId',\n type: 'felt',\n },\n {\n name: 'version',\n type: 'felt',\n },\n ],\n },\n};\n\ntype FormatStarknetTypedDataMessageParams = {\n chainId: constants.StarknetChainId;\n inputMessage: string;\n};\n\nexport const formatStarknetTypedDataMessage = ({\n inputMessage,\n chainId,\n}: FormatStarknetTypedDataMessageParams): TypedData => {\n let nonce, domain;\n try {\n const { nonce: parsedNonce, domain: parsedDomain } =\n JSON.parse(inputMessage);\n nonce = parsedNonce;\n domain = parsedDomain;\n } catch {\n nonce = inputMessage;\n domain = 'domain';\n }\n\n // Starknet strings could be at most 31 chars long\n const message: Record<string, unknown> = {\n message: nonce.substring(0, 31),\n };\n\n return {\n ...defaultTypedData,\n domain: {\n chainId,\n name: domain.substring(0, 31),\n version: '0.0.1',\n },\n message,\n };\n};\n","import {\n type DynamicClient,\n assertWalletAccountSigningAvailability,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n createWalletProviderEventEmitter,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport type { StarknetWindowObject } from '@starknet-io/get-starknet-core';\nimport starknetCore from '@starknet-io/get-starknet-core';\nimport { RpcProvider, WalletAccount, type constants } from 'starknet';\n\nimport type { StarknetWalletProvider } from '../../../StarknetWalletProvider.types';\nimport { formatStarknetTypedDataMessage } from '../../../utils/formatStarknetTypedDataMessage';\n\ntype CreateWalletProviderFromStarknetWalletParams = {\n dynamicClient: DynamicClient;\n starknetWindowProvider: StarknetWindowObject;\n};\n\nexport const createWalletProviderFromStarknetWallet = ({\n dynamicClient,\n starknetWindowProvider,\n}: CreateWalletProviderFromStarknetWalletParams): StarknetWalletProvider => {\n const walletProviderType = WalletProviderEnum.BrowserExtension;\n\n const key = formatWalletProviderKey({\n chain: 'STARK',\n displayName: starknetWindowProvider.name,\n walletProviderType,\n });\n\n const connect: StarknetWalletProvider['connect'] = async () => {\n const accounts = await starknetWindowProvider.request({\n type: 'wallet_requestAccounts',\n });\n\n return {\n addresses: accounts.map((address) => ({\n address,\n })),\n };\n };\n\n const disconnect: StarknetWalletProvider['disconnect'] = async () => {\n try {\n await starknetWindowProvider.request({\n type: 'wallet_disconnect',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any);\n } catch {\n // Do nothing, wallet is missing `wallet_disconnect` method\n }\n await starknetCore.disconnect();\n };\n\n const getActiveNetworkId: StarknetWalletProvider['getActiveNetworkId'] =\n async () => {\n const chainId = await starknetWindowProvider.request({\n type: 'wallet_requestChainId',\n });\n\n return {\n networkId: chainId,\n };\n };\n\n const getConnectedAddresses: StarknetWalletProvider['getConnectedAddresses'] =\n async () => {\n const accounts = await starknetWindowProvider.request({\n params: {\n silent_mode: true,\n },\n type: 'wallet_requestAccounts',\n });\n\n return {\n addresses: accounts,\n };\n };\n\n const getStarknetAccount: StarknetWalletProvider['getStarknetAccount'] =\n async ({ walletAccount }) => {\n await assertWalletAccountSigningAvailability(\n { walletAccount },\n dynamicClient\n );\n\n const { networkData } = await getActiveNetworkData(\n { walletAccount },\n dynamicClient\n );\n\n assertDefined(networkData, 'No active network data found');\n\n const rpcProvider = new RpcProvider({\n nodeUrl: networkData.rpcUrls.http[0],\n });\n\n const account = await WalletAccount.connectSilent(\n rpcProvider,\n starknetWindowProvider\n );\n\n return { account };\n };\n\n const signMessage: StarknetWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account not found');\n\n await assertWalletAccountSigningAvailability(\n {\n walletAccount,\n },\n dynamicClient\n );\n\n const { networkId } = await getActiveNetworkId();\n\n const encodedMessage = formatStarknetTypedDataMessage({\n chainId: networkId as constants.StarknetChainId,\n inputMessage: message,\n });\n\n const signature = await starknetWindowProvider.request({\n params: encodedMessage,\n type: 'wallet_signTypedData',\n });\n\n return { signature: signature.join(',') };\n };\n\n const switchActiveNetwork: StarknetWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) => {\n await starknetWindowProvider.request({\n params: {\n chainId: networkId,\n },\n type: 'wallet_switchStarknetChain',\n });\n };\n\n const { getEventEmitter, cleanupEventEmitter } =\n createWalletProviderEventEmitter<{\n removeAccountChangeListener: VoidFunction;\n removeNetworkChangeListener: VoidFunction;\n }>({\n removeEventListeners: ({ setupReturnValue }) => {\n assertDefined(setupReturnValue, 'Setup return value not defined');\n\n setupReturnValue.removeNetworkChangeListener();\n setupReturnValue.removeAccountChangeListener();\n },\n\n setupEventListeners: ({\n handleAccountsChanged,\n handleNetworkChanged,\n }) => {\n const onAccountsChanged = (accounts: string[] | undefined) => {\n handleAccountsChanged({\n addresses: accounts ?? [],\n });\n };\n starknetWindowProvider.on('accountsChanged', onAccountsChanged);\n const removeAccountChangeListener = () => {\n starknetWindowProvider.off('accountsChanged', onAccountsChanged);\n };\n\n const onNetworkChanged = (network: string | undefined) => {\n if (!network) {\n return;\n }\n\n handleNetworkChanged({\n networkId: network.toString(),\n });\n };\n starknetWindowProvider.on('networkChanged', onNetworkChanged);\n const removeNetworkChangeListener = () => {\n starknetWindowProvider.off('networkChanged', onNetworkChanged);\n };\n\n return {\n removeAccountChangeListener,\n removeNetworkChangeListener,\n };\n },\n\n supportedEvents: ['accountsChanged', 'networkChanged'],\n });\n\n const terminate: StarknetWalletProvider['terminate'] = async () => {\n cleanupEventEmitter();\n };\n\n const walletProvider: StarknetWalletProvider = {\n chain: 'STARK',\n connect,\n disconnect,\n get events() {\n return getEventEmitter();\n },\n getActiveNetworkId,\n getConnectedAddresses,\n getStarknetAccount,\n groupKey: formatWalletProviderGroupKey(starknetWindowProvider.name),\n key,\n metadata: {\n displayName: starknetWindowProvider.name,\n icon:\n typeof starknetWindowProvider.icon === 'string'\n ? starknetWindowProvider.icon\n : starknetWindowProvider.icon.light,\n },\n signMessage,\n switchActiveNetwork,\n terminate,\n walletProviderType,\n };\n\n return walletProvider;\n};\n","import {\n WalletProviderPriority,\n getCore,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport starknetCore from '@starknet-io/get-starknet-core';\n\nimport { registerStarknetNetworkProviderBuilder } from '../../registerStarknetNetworkProviderBuilder';\nimport { createWalletProviderFromStarknetWallet } from '../utils/createWalletProviderFromStarknetWallet';\n\nexport const STARKNET_INJECTED_WALLETS_EXTENSION_KEY =\n 'starknetInjectedWallets';\n\n/**\n * Adds the Starknet Injected Wallets extension to the Dynamic client.\n *\n * This extension enables integration with many Starknet wallets, like Braavos, Ready and Xverse.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n */\nexport const addStarknetInjectedWalletsExtension = (\n client = getDefaultClient()\n): void => {\n if (\n hasExtension(\n { extensionKey: STARKNET_INJECTED_WALLETS_EXTENSION_KEY },\n client\n )\n ) {\n return;\n }\n\n registerExtension(\n { extensionKey: STARKNET_INJECTED_WALLETS_EXTENSION_KEY },\n client\n );\n\n registerStarknetNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n starknetCore\n .getAvailableWallets()\n .then((starknetWindowProviders) => {\n starknetWindowProviders.forEach((starknetWindowProvider) => {\n const walletProvider = createWalletProviderFromStarknetWallet({\n dynamicClient: client,\n starknetWindowProvider,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WINDOW_INJECT,\n walletProvider,\n });\n });\n })\n .catch((error) => {\n getCore(client).logger.error(\n 'Error getting available starknet wallets',\n error\n );\n });\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACKA,MAAa,cAAc;AAE3B,MAAa,uBACX;AAEF,MAAaA,mBAAwB;CACnC;EACE,SAAS,CACP;GACE,MAAM;GACN,QAAQ;GACR,MAAM;GACP,EACD;GACE,MAAM;GACN,QAAQ;GACR,MAAM;GACP,CACF;EACD,MAAM;EACN,MAAM;EACN,MAAM;EACP;CACD;EACE,MAAM;GACJ;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACF;EACD,MAAM,EAAE;EACR,MAAM;EACN,MAAM;EACP;CACD;EACE,MAAM;GACJ;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACF;EACD,MAAM,EAAE;EACR,MAAM;EACN,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,EACD;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,EAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,iBAAiB;EACjB,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,EACD;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,EAAE;EACX,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,EACD;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACP;CACD;EACE,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACD;IACE,MAAM;IACN,MAAM;IACP;GACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,EACD;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACP;CACD;EACE,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACP,EACD;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACP,CACF;EACD,MAAM;EACP;CACD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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseError } from '@dynamic-labs-sdk/client';
|
|
2
|
+
export declare class NotStarknetProviderError extends BaseError {
|
|
3
|
+
readonly providerKey: string;
|
|
4
|
+
constructor(params: {
|
|
5
|
+
providerKey: string;
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=NotStarknetProviderError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotStarknetProviderError.d.ts","sourceRoot":"","sources":["../../../src/errors/NotStarknetProviderError/NotStarknetProviderError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,qBAAa,wBAAyB,SAAQ,SAAS;IACrD,SAAgB,WAAW,EAAE,MAAM,CAAC;gBAExB,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE;CAW5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/errors/NotStarknetProviderError/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { addStarknetExtension } from '../addStarknetExtension';
|
|
2
|
+
export { NotStarknetProviderError } from '../errors/NotStarknetProviderError';
|
|
3
|
+
export { getStarknetAccount } from '../getStarknetAccount';
|
|
4
|
+
export { isStarknetNetworkProvider } from '../isStarknetNetworkProvider';
|
|
5
|
+
export { isStarknetWalletAccount } from '../isStarknetWalletAccount';
|
|
6
|
+
export type { StarknetNetworkProvider } from '../StarknetNetworkProvider.types';
|
|
7
|
+
export type { StarknetWalletAccount } from '../StarknetWalletAccount.types';
|
|
8
|
+
export { ETH_CONTRACT_ABI, ETH_STARKNET_ADDRESS, WEI_PER_ETH, } from '../utils/constants';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exports/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,YAAY,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAChF,YAAY,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,GACZ,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injected.d.ts","sourceRoot":"","sources":["../../src/exports/injected.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,mCAAmC,EAAE,MAAM,iDAAiD,CAAC"}
|