@dynamic-labs/starknet 4.0.0-alpha.8 → 4.0.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/CHANGELOG.md +496 -1
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +14 -12
- package/src/StarknetWalletConnector.cjs +232 -0
- package/src/StarknetWalletConnector.d.ts +58 -0
- package/src/StarknetWalletConnector.js +228 -0
- package/src/index.cjs +14 -12
- package/src/index.d.ts +16 -7
- package/src/index.js +12 -12
- package/src/types.d.ts +26 -11
- package/src/utils/convertors.cjs +1 -1
- package/src/utils/convertors.d.ts +1 -1
- package/src/utils/convertors.js +1 -1
- package/src/wallet/StarknetWallet.cjs +24 -3
- package/src/wallet/StarknetWallet.d.ts +14 -4
- package/src/wallet/StarknetWallet.js +24 -3
- package/src/wallets/argent/argentMobile/argentMobile.cjs +70 -0
- package/src/wallets/argent/argentMobile/argentMobile.d.ts +16 -0
- package/src/wallets/argent/argentMobile/argentMobile.js +66 -0
- package/src/wallets/argent/base.cjs +50 -0
- package/src/wallets/argent/base.d.ts +5 -0
- package/src/wallets/argent/base.js +46 -0
- package/src/wallets/argent/injected/argentx.cjs +33 -0
- package/src/wallets/argent/injected/argentx.d.ts +8 -0
- package/src/wallets/argent/injected/argentx.js +29 -0
- package/src/wallets/argent/webwallet/webwallet.cjs +37 -0
- package/src/wallets/argent/webwallet/webwallet.d.ts +10 -0
- package/src/wallets/argent/webwallet/webwallet.js +33 -0
- package/src/wallets/injected/braavos.cjs +31 -0
- package/src/wallets/injected/braavos.d.ts +13 -0
- package/src/wallets/injected/braavos.js +27 -0
- package/src/wallets/injected/fetchStarknetInjectedWalletConnectors.cjs +35 -0
- package/src/wallets/injected/fetchStarknetInjectedWalletConnectors.d.ts +5 -0
- package/src/wallets/injected/fetchStarknetInjectedWalletConnectors.js +31 -0
- package/src/wallets/injected/injected.cjs +141 -0
- package/src/wallets/injected/injected.d.ts +10 -0
- package/src/wallets/injected/injected.js +137 -0
- package/src/wallets/{metamask.cjs → injected/metamask.cjs} +19 -29
- package/src/wallets/{metamask.d.ts → injected/metamask.d.ts} +2 -4
- package/src/wallets/{metamask.js → injected/metamask.js} +15 -29
- package/src/starknetWalletConnector.cjs +0 -320
- package/src/starknetWalletConnector.d.ts +0 -127
- package/src/starknetWalletConnector.js +0 -314
- package/src/utils/starknetSnap.cjs +0 -92
- package/src/utils/starknetSnap.d.ts +0 -8
- package/src/utils/starknetSnap.js +0 -88
- package/src/wallets/argentx.cjs +0 -24
- package/src/wallets/argentx.d.ts +0 -8
- package/src/wallets/argentx.js +0 -20
- package/src/wallets/argentxBase.cjs +0 -50
- package/src/wallets/argentxBase.d.ts +0 -16
- package/src/wallets/argentxBase.js +0 -48
- package/src/wallets/argentxMobile.cjs +0 -100
- package/src/wallets/argentxMobile.d.ts +0 -13
- package/src/wallets/argentxMobile.js +0 -96
- package/src/wallets/argentxWeb.cjs +0 -57
- package/src/wallets/argentxWeb.d.ts +0 -8
- package/src/wallets/argentxWeb.js +0 -53
- package/src/wallets/bitget.cjs +0 -22
- package/src/wallets/bitget.d.ts +0 -7
- package/src/wallets/bitget.js +0 -18
- package/src/wallets/braavos.cjs +0 -37
- package/src/wallets/braavos.d.ts +0 -8
- package/src/wallets/braavos.js +0 -33
- package/src/wallets/okx.cjs +0 -15
- package/src/wallets/okx.d.ts +0 -6
- package/src/wallets/okx.js +0 -11
|
@@ -1,314 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import { __awaiter } from '../_virtual/_tslib.js';
|
|
3
|
-
import { getStarknet } from 'get-starknet-core';
|
|
4
|
-
import { Contract, cairo, constants } from 'starknet';
|
|
5
|
-
import { WalletConnectorBase, logger } from '@dynamic-labs/wallet-connector-core';
|
|
6
|
-
import { isMobile, template, DynamicError, retryableFn } from '@dynamic-labs/utils';
|
|
7
|
-
import { ETH_STARKNET_ADDRESS } from './constants.js';
|
|
8
|
-
import ETH_CONTRACT_ABI from './ethereumContractAbi.js';
|
|
9
|
-
import { formatTypedDataMessage } from './utils/convertors.js';
|
|
10
|
-
import { StarknetWallet } from './wallet/StarknetWallet.js';
|
|
11
|
-
|
|
12
|
-
const ACCOUNT_CHANGED_EVENT_LISTENER = 'accountsChanged';
|
|
13
|
-
const NETWORK_CHANGED_EVENT_LISTENER = 'networkChanged';
|
|
14
|
-
class StarknetWalletConnector extends WalletConnectorBase {
|
|
15
|
-
constructor(name, windowKey, opts) {
|
|
16
|
-
var _a;
|
|
17
|
-
super(opts);
|
|
18
|
-
this.STARKNET_VERSION = 'v5';
|
|
19
|
-
this.ChainWallet = StarknetWallet;
|
|
20
|
-
this.connectedChain = 'STARK';
|
|
21
|
-
this.supportedChains = ['STARK'];
|
|
22
|
-
this.switchNetworkOnlyFromWallet = true;
|
|
23
|
-
// required for metamask snap integration as MM snaps don't have event listeners
|
|
24
|
-
this.canSetEventListeners = true;
|
|
25
|
-
this.name = name;
|
|
26
|
-
this.windowKey = windowKey;
|
|
27
|
-
this.starknetNetworks = opts.starknetNetworks;
|
|
28
|
-
this.chainRpcProviders = opts.chainRpcProviders;
|
|
29
|
-
(_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerStarknetProviders();
|
|
30
|
-
}
|
|
31
|
-
get walletBookWallet() {
|
|
32
|
-
return this.walletBook.wallets[this.key];
|
|
33
|
-
}
|
|
34
|
-
// abstracting this method to a function due to some wallets (bitget)
|
|
35
|
-
// having non-standard use of the isConnected flag. This allows for us to use other flags to determine connectivity
|
|
36
|
-
isProviderConnected() {
|
|
37
|
-
var _a;
|
|
38
|
-
const wallet = this.getWallet();
|
|
39
|
-
return (_a = wallet === null || wallet === void 0 ? void 0 : wallet.isConnected) !== null && _a !== void 0 ? _a : false;
|
|
40
|
-
}
|
|
41
|
-
getPublicClient() {
|
|
42
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
-
var _a;
|
|
44
|
-
if (this.starknetNetworks === undefined ||
|
|
45
|
-
this.starknetNetworks.length === 0)
|
|
46
|
-
return;
|
|
47
|
-
const configurations = {
|
|
48
|
-
cosmos: [],
|
|
49
|
-
evm: undefined,
|
|
50
|
-
solana: undefined,
|
|
51
|
-
starknet: this.starknetNetworks,
|
|
52
|
-
};
|
|
53
|
-
const chainId = yield this.getNetwork();
|
|
54
|
-
const starknetRpcProvider = (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.getStarknetRpcProviderByChainId(configurations, chainId);
|
|
55
|
-
return starknetRpcProvider === null || starknetRpcProvider === void 0 ? void 0 : starknetRpcProvider.provider;
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* returns starknet wallet network id
|
|
60
|
-
*/
|
|
61
|
-
getNetwork() {
|
|
62
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
-
var _a;
|
|
64
|
-
const wallet = this.getWallet();
|
|
65
|
-
if (!wallet) {
|
|
66
|
-
return Promise.resolve(undefined);
|
|
67
|
-
}
|
|
68
|
-
if (!this.isProviderConnected()) {
|
|
69
|
-
yield wallet.enable({ starknetVersion: this.STARKNET_VERSION });
|
|
70
|
-
}
|
|
71
|
-
return Promise.resolve((_a = wallet.provider) === null || _a === void 0 ? void 0 : _a.getChainId());
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
connect() {
|
|
75
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
-
const wallet = this.getWallet();
|
|
77
|
-
try {
|
|
78
|
-
if (wallet && !this.isProviderConnected()) {
|
|
79
|
-
yield wallet.enable({ starknetVersion: this.STARKNET_VERSION });
|
|
80
|
-
localStorage.setItem('dynamic_should_have_wallet', 'true');
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
catch (err) {
|
|
84
|
-
logger.error(err);
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
getAddress() {
|
|
89
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
-
const wallet = this.getWallet();
|
|
91
|
-
if (!this.isInstalledOnBrowser() &&
|
|
92
|
-
isMobile() &&
|
|
93
|
-
this.walletBookWallet.mobile &&
|
|
94
|
-
this.walletBookWallet.mobile.inAppBrowser &&
|
|
95
|
-
this.mobileExperience === 'in-app-browser') {
|
|
96
|
-
const inAppBrowserCompiledTemplate = template(this.walletBookWallet.mobile.inAppBrowser);
|
|
97
|
-
const deepLink = inAppBrowserCompiledTemplate({
|
|
98
|
-
encodedDappURI: encodeURIComponent(window.location.toString()),
|
|
99
|
-
});
|
|
100
|
-
window.location.assign(deepLink);
|
|
101
|
-
}
|
|
102
|
-
if (wallet && !this.isProviderConnected()) {
|
|
103
|
-
yield (wallet === null || wallet === void 0 ? void 0 : wallet.isPreauthorized());
|
|
104
|
-
yield this.connect();
|
|
105
|
-
}
|
|
106
|
-
return Promise.resolve(wallet === null || wallet === void 0 ? void 0 : wallet.selectedAddress);
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
getWalletAccount() {
|
|
110
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
-
const wallet = this.getWallet();
|
|
112
|
-
return wallet === null || wallet === void 0 ? void 0 : wallet.account;
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
getProvider() {
|
|
116
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
117
|
-
const wallet = yield this.getWallet();
|
|
118
|
-
return wallet === null || wallet === void 0 ? void 0 : wallet.provider;
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
signMessage(messageToSign) {
|
|
122
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
-
// FetchPublicAddress also handles the connection to the wallet this is why we call it before getWallet.
|
|
124
|
-
const walletAddress = yield this.getAddress();
|
|
125
|
-
const wallet = this.getWallet();
|
|
126
|
-
if (!walletAddress || !wallet) {
|
|
127
|
-
logger.error('Could not fetch wallet address for signing message');
|
|
128
|
-
return undefined;
|
|
129
|
-
}
|
|
130
|
-
const encodedMessage = formatTypedDataMessage(messageToSign, (yield wallet.provider.getChainId()));
|
|
131
|
-
const signature = yield wallet.account.signMessage(encodedMessage);
|
|
132
|
-
return signature === null || signature === void 0 ? void 0 : signature.join(',');
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
getBalance(address) {
|
|
136
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
137
|
-
const provider = yield this.getProvider();
|
|
138
|
-
if (!provider) {
|
|
139
|
-
logger.error('Could not find provider for getting balance');
|
|
140
|
-
return undefined;
|
|
141
|
-
}
|
|
142
|
-
const contract = new Contract(ETH_CONTRACT_ABI, ETH_STARKNET_ADDRESS, provider);
|
|
143
|
-
try {
|
|
144
|
-
const { balance } = yield contract.balanceOf(address);
|
|
145
|
-
/**
|
|
146
|
-
* Dividing by 1e18 as the returned balance is a Gwei number.
|
|
147
|
-
* Read more here: https://www.investopedia.com/terms/g/gwei-ethereum.asp#toc-what-is-gwei
|
|
148
|
-
*/
|
|
149
|
-
return (Number(cairo.uint256(balance.low).low) / 1e18).toFixed(6);
|
|
150
|
-
}
|
|
151
|
-
catch (error) {
|
|
152
|
-
logger.error(error);
|
|
153
|
-
throw new DynamicError('Something went wrong');
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
endSession() {
|
|
158
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
159
|
-
localStorage.removeItem('dynamic_should_have_wallet');
|
|
160
|
-
getStarknet().disconnect({ clearLastWallet: true });
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
getWallet() {
|
|
164
|
-
let starknetWindowInstance = window[`starknet_${this.windowKey}`];
|
|
165
|
-
if (starknetWindowInstance !== undefined) {
|
|
166
|
-
return starknetWindowInstance;
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
starknetWindowInstance = window['starknet'];
|
|
170
|
-
if ((starknetWindowInstance === null || starknetWindowInstance === void 0 ? void 0 : starknetWindowInstance.name) === this.name) {
|
|
171
|
-
return starknetWindowInstance;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
return undefined;
|
|
175
|
-
}
|
|
176
|
-
isInstalledOnBrowser() {
|
|
177
|
-
return this.getWallet() !== undefined;
|
|
178
|
-
}
|
|
179
|
-
getConnectedAccounts() {
|
|
180
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
181
|
-
const wallet = this.getWallet();
|
|
182
|
-
if (!wallet) {
|
|
183
|
-
return [];
|
|
184
|
-
}
|
|
185
|
-
try {
|
|
186
|
-
yield this.reconnectIfNeeded(wallet);
|
|
187
|
-
}
|
|
188
|
-
catch (e) {
|
|
189
|
-
return [];
|
|
190
|
-
}
|
|
191
|
-
const getSelectedAddress = () => wallet.selectedAddress
|
|
192
|
-
? Promise.resolve([wallet.selectedAddress])
|
|
193
|
-
: Promise.reject();
|
|
194
|
-
return retryableFn(getSelectedAddress, {
|
|
195
|
-
fallbackValue: [],
|
|
196
|
-
retryIntervalMs: 100,
|
|
197
|
-
retryStrategy: 'timeout-and-rejection',
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
reconnectIfNeeded(wallet) {
|
|
202
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
203
|
-
const needsReconnection = !this.isProviderConnected() && (yield wallet.isPreauthorized());
|
|
204
|
-
if (needsReconnection) {
|
|
205
|
-
/**
|
|
206
|
-
* this is a hack for braavos
|
|
207
|
-
* it is needed because the wallet doesn't return any addresses or connected state
|
|
208
|
-
* without a reconnection, and when the wallet is locked, the connect call never resolves
|
|
209
|
-
*/
|
|
210
|
-
if (localStorage.getItem('dynamic_should_have_wallet') === 'true') {
|
|
211
|
-
try {
|
|
212
|
-
yield retryableFn(this.connect.bind(this), {
|
|
213
|
-
maxRetries: 0,
|
|
214
|
-
retryStrategy: 'timeout-only',
|
|
215
|
-
timeoutMs: 1000,
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
catch (_a) {
|
|
219
|
-
localStorage.removeItem('dynamic_should_have_wallet');
|
|
220
|
-
throw new Error('Could not reconnect');
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
yield this.connect();
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
setupEventListeners() {
|
|
230
|
-
if (!this.canSetEventListeners)
|
|
231
|
-
return;
|
|
232
|
-
const wallet = this.getWallet();
|
|
233
|
-
if (!wallet) {
|
|
234
|
-
return logger.error('Wallet has not been found');
|
|
235
|
-
}
|
|
236
|
-
this.handleAccountChange = (address) => __awaiter(this, void 0, void 0, function* () {
|
|
237
|
-
if (!address) {
|
|
238
|
-
this.emit('disconnect');
|
|
239
|
-
return;
|
|
240
|
-
}
|
|
241
|
-
if (address.toString()) {
|
|
242
|
-
this.emit('accountChange', { accounts: [address.toString()] });
|
|
243
|
-
}
|
|
244
|
-
});
|
|
245
|
-
this.handleNetworkChange = (network) => __awaiter(this, void 0, void 0, function* () {
|
|
246
|
-
if (!network) {
|
|
247
|
-
this.emit('disconnect');
|
|
248
|
-
return;
|
|
249
|
-
}
|
|
250
|
-
const chain = this.mapNetworkNameToChainId(network.toString());
|
|
251
|
-
if (chain) {
|
|
252
|
-
this.emit('chainChange', { chain });
|
|
253
|
-
}
|
|
254
|
-
});
|
|
255
|
-
wallet === null || wallet === void 0 ? void 0 : wallet.on(ACCOUNT_CHANGED_EVENT_LISTENER, this.handleAccountChange);
|
|
256
|
-
wallet === null || wallet === void 0 ? void 0 : wallet.on(NETWORK_CHANGED_EVENT_LISTENER, this.handleNetworkChange);
|
|
257
|
-
}
|
|
258
|
-
teardownEventListeners() {
|
|
259
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
260
|
-
if (!this.canSetEventListeners)
|
|
261
|
-
return;
|
|
262
|
-
const wallet = this.getWallet();
|
|
263
|
-
if (this.handleAccountChange) {
|
|
264
|
-
wallet === null || wallet === void 0 ? void 0 : wallet.off(ACCOUNT_CHANGED_EVENT_LISTENER, this.handleAccountChange);
|
|
265
|
-
this.handleAccountChange = undefined;
|
|
266
|
-
}
|
|
267
|
-
if (this.handleNetworkChange) {
|
|
268
|
-
wallet === null || wallet === void 0 ? void 0 : wallet.off(NETWORK_CHANGED_EVENT_LISTENER, this.handleNetworkChange);
|
|
269
|
-
this.handleNetworkChange = undefined;
|
|
270
|
-
}
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
mapNetworkNameToChainId(networkNameOrChainId) {
|
|
274
|
-
if (networkNameOrChainId === constants.NetworkName.SN_MAIN ||
|
|
275
|
-
networkNameOrChainId.includes('mainnet') ||
|
|
276
|
-
networkNameOrChainId === constants.StarknetChainId.SN_MAIN) {
|
|
277
|
-
return constants.StarknetChainId.SN_MAIN;
|
|
278
|
-
}
|
|
279
|
-
else if (networkNameOrChainId === constants.NetworkName.SN_GOERLI ||
|
|
280
|
-
networkNameOrChainId.includes('goerli') ||
|
|
281
|
-
networkNameOrChainId === constants.StarknetChainId.SN_GOERLI) {
|
|
282
|
-
return constants.StarknetChainId.SN_GOERLI;
|
|
283
|
-
}
|
|
284
|
-
else if (networkNameOrChainId === constants.NetworkName.SN_SEPOLIA ||
|
|
285
|
-
networkNameOrChainId.includes('sepolia') ||
|
|
286
|
-
networkNameOrChainId === constants.StarknetChainId.SN_SEPOLIA) {
|
|
287
|
-
return constants.StarknetChainId.SN_SEPOLIA;
|
|
288
|
-
}
|
|
289
|
-
else {
|
|
290
|
-
logger.error('Unknown networkName', networkNameOrChainId);
|
|
291
|
-
return undefined;
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
mapChainIdToNetworkName(chainIdOrNetworkName) {
|
|
295
|
-
if (chainIdOrNetworkName === constants.StarknetChainId.SN_MAIN ||
|
|
296
|
-
chainIdOrNetworkName === constants.NetworkName.SN_MAIN) {
|
|
297
|
-
return constants.NetworkName.SN_MAIN;
|
|
298
|
-
}
|
|
299
|
-
else if (chainIdOrNetworkName === constants.StarknetChainId.SN_GOERLI ||
|
|
300
|
-
chainIdOrNetworkName === constants.NetworkName.SN_GOERLI) {
|
|
301
|
-
return constants.NetworkName.SN_GOERLI;
|
|
302
|
-
}
|
|
303
|
-
else if (chainIdOrNetworkName === constants.StarknetChainId.SN_SEPOLIA ||
|
|
304
|
-
chainIdOrNetworkName === constants.NetworkName.SN_SEPOLIA) {
|
|
305
|
-
return constants.NetworkName.SN_SEPOLIA;
|
|
306
|
-
}
|
|
307
|
-
else {
|
|
308
|
-
logger.error('Unknown chainId', chainIdOrNetworkName);
|
|
309
|
-
return undefined;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
export { ACCOUNT_CHANGED_EVENT_LISTENER, NETWORK_CHANGED_EVENT_LISTENER, StarknetWalletConnector as default };
|
|
@@ -1,92 +0,0 @@
|
|
|
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
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* @param {IEthereum} provider the metamask window provider object
|
|
12
|
-
* @returns {StarknetWindowObject} the metamask provider wrapper formed into starknet window object
|
|
13
|
-
*/
|
|
14
|
-
const createMetaMaskProviderWrapper = (provider) => {
|
|
15
|
-
let metaMaskSnapWallet;
|
|
16
|
-
// using @module-federation to load the get-starknet remoteEntry, as recommended
|
|
17
|
-
// by the starknet team. this file is a small wrapper around the metamask snap api
|
|
18
|
-
// to communicate with starknet, which we then wrap into a starknet window object
|
|
19
|
-
// and use in our starknet connector, just like braavos and argent
|
|
20
|
-
const initMetaMaskSnapWallet = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
-
if (!metaMaskSnapWallet) {
|
|
22
|
-
index_cjs_js.init({
|
|
23
|
-
name: 'MetaMaskStarknetSnapWallet',
|
|
24
|
-
remotes: [
|
|
25
|
-
{
|
|
26
|
-
alias: 'MetaMaskStarknetSnapWallet',
|
|
27
|
-
entry: 'https://snaps.consensys.io/starknet/get-starknet/v1/remoteEntry.js',
|
|
28
|
-
name: 'MetaMaskStarknetSnapWallet',
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
});
|
|
32
|
-
const result = yield index_cjs_js.loadRemote('MetaMaskStarknetSnapWallet/index');
|
|
33
|
-
const { MetaMaskSnapWallet } = result;
|
|
34
|
-
metaMaskSnapWallet = new MetaMaskSnapWallet(provider, '*');
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
const metaMaskProviderWrapper = {
|
|
38
|
-
get account() {
|
|
39
|
-
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.account;
|
|
40
|
-
},
|
|
41
|
-
get chainId() {
|
|
42
|
-
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.chainId;
|
|
43
|
-
},
|
|
44
|
-
enable: () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
45
|
-
yield initMetaMaskSnapWallet();
|
|
46
|
-
if (!metaMaskSnapWallet) {
|
|
47
|
-
return [];
|
|
48
|
-
}
|
|
49
|
-
return metaMaskSnapWallet.enable();
|
|
50
|
-
}),
|
|
51
|
-
icon: '',
|
|
52
|
-
id: 'MetaMaskStarknetSnapWallet',
|
|
53
|
-
get isConnected() {
|
|
54
|
-
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isConnected;
|
|
55
|
-
},
|
|
56
|
-
isPreauthorized: () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
57
|
-
var _a;
|
|
58
|
-
yield initMetaMaskSnapWallet();
|
|
59
|
-
return (_a = (yield (metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isPreauthorized()))) !== null && _a !== void 0 ? _a : false;
|
|
60
|
-
}),
|
|
61
|
-
name: 'MetaMaskStarknetSnapWallet',
|
|
62
|
-
off: (
|
|
63
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
64
|
-
event,
|
|
65
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
66
|
-
handleEvent) => undefined,
|
|
67
|
-
on: (
|
|
68
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
69
|
-
event,
|
|
70
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
71
|
-
handleEvent) => undefined,
|
|
72
|
-
get provider() {
|
|
73
|
-
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.provider;
|
|
74
|
-
},
|
|
75
|
-
request: (call) => {
|
|
76
|
-
if (!metaMaskSnapWallet) {
|
|
77
|
-
throw new Error('Wallet not enabled');
|
|
78
|
-
}
|
|
79
|
-
return metaMaskSnapWallet.request(call);
|
|
80
|
-
},
|
|
81
|
-
get selectedAddress() {
|
|
82
|
-
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.selectedAddress;
|
|
83
|
-
},
|
|
84
|
-
get version() {
|
|
85
|
-
var _a;
|
|
86
|
-
return (_a = metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.version) !== null && _a !== void 0 ? _a : '0.0.0';
|
|
87
|
-
},
|
|
88
|
-
};
|
|
89
|
-
return metaMaskProviderWrapper;
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
exports.createMetaMaskProviderWrapper = createMetaMaskProviderWrapper;
|
|
@@ -1,8 +0,0 @@
|
|
|
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;
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import { __awaiter } from '../../_virtual/_tslib.js';
|
|
3
|
-
import { init, loadRemote } from '@module-federation/runtime/dist/index.cjs.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
*
|
|
7
|
-
* @param {IEthereum} provider the metamask window provider object
|
|
8
|
-
* @returns {StarknetWindowObject} the metamask provider wrapper formed into starknet window object
|
|
9
|
-
*/
|
|
10
|
-
const createMetaMaskProviderWrapper = (provider) => {
|
|
11
|
-
let metaMaskSnapWallet;
|
|
12
|
-
// using @module-federation to load the get-starknet remoteEntry, as recommended
|
|
13
|
-
// by the starknet team. this file is a small wrapper around the metamask snap api
|
|
14
|
-
// to communicate with starknet, which we then wrap into a starknet window object
|
|
15
|
-
// and use in our starknet connector, just like braavos and argent
|
|
16
|
-
const initMetaMaskSnapWallet = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
-
if (!metaMaskSnapWallet) {
|
|
18
|
-
init({
|
|
19
|
-
name: 'MetaMaskStarknetSnapWallet',
|
|
20
|
-
remotes: [
|
|
21
|
-
{
|
|
22
|
-
alias: 'MetaMaskStarknetSnapWallet',
|
|
23
|
-
entry: 'https://snaps.consensys.io/starknet/get-starknet/v1/remoteEntry.js',
|
|
24
|
-
name: 'MetaMaskStarknetSnapWallet',
|
|
25
|
-
},
|
|
26
|
-
],
|
|
27
|
-
});
|
|
28
|
-
const result = yield loadRemote('MetaMaskStarknetSnapWallet/index');
|
|
29
|
-
const { MetaMaskSnapWallet } = result;
|
|
30
|
-
metaMaskSnapWallet = new MetaMaskSnapWallet(provider, '*');
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
const metaMaskProviderWrapper = {
|
|
34
|
-
get account() {
|
|
35
|
-
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.account;
|
|
36
|
-
},
|
|
37
|
-
get chainId() {
|
|
38
|
-
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.chainId;
|
|
39
|
-
},
|
|
40
|
-
enable: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
-
yield initMetaMaskSnapWallet();
|
|
42
|
-
if (!metaMaskSnapWallet) {
|
|
43
|
-
return [];
|
|
44
|
-
}
|
|
45
|
-
return metaMaskSnapWallet.enable();
|
|
46
|
-
}),
|
|
47
|
-
icon: '',
|
|
48
|
-
id: 'MetaMaskStarknetSnapWallet',
|
|
49
|
-
get isConnected() {
|
|
50
|
-
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isConnected;
|
|
51
|
-
},
|
|
52
|
-
isPreauthorized: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
53
|
-
var _a;
|
|
54
|
-
yield initMetaMaskSnapWallet();
|
|
55
|
-
return (_a = (yield (metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isPreauthorized()))) !== null && _a !== void 0 ? _a : false;
|
|
56
|
-
}),
|
|
57
|
-
name: 'MetaMaskStarknetSnapWallet',
|
|
58
|
-
off: (
|
|
59
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
60
|
-
event,
|
|
61
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
62
|
-
handleEvent) => undefined,
|
|
63
|
-
on: (
|
|
64
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
65
|
-
event,
|
|
66
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
67
|
-
handleEvent) => undefined,
|
|
68
|
-
get provider() {
|
|
69
|
-
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.provider;
|
|
70
|
-
},
|
|
71
|
-
request: (call) => {
|
|
72
|
-
if (!metaMaskSnapWallet) {
|
|
73
|
-
throw new Error('Wallet not enabled');
|
|
74
|
-
}
|
|
75
|
-
return metaMaskSnapWallet.request(call);
|
|
76
|
-
},
|
|
77
|
-
get selectedAddress() {
|
|
78
|
-
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.selectedAddress;
|
|
79
|
-
},
|
|
80
|
-
get version() {
|
|
81
|
-
var _a;
|
|
82
|
-
return (_a = metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.version) !== null && _a !== void 0 ? _a : '0.0.0';
|
|
83
|
-
},
|
|
84
|
-
};
|
|
85
|
-
return metaMaskProviderWrapper;
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
export { createMetaMaskProviderWrapper };
|
package/src/wallets/argentx.cjs
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
-
|
|
6
|
-
var _tslib = require('../../_virtual/_tslib.cjs');
|
|
7
|
-
var starknetWalletConnector = require('../starknetWalletConnector.cjs');
|
|
8
|
-
|
|
9
|
-
class ArgentX extends starknetWalletConnector["default"] {
|
|
10
|
-
constructor(opts) {
|
|
11
|
-
super('Argent X', 'argentX', opts);
|
|
12
|
-
this.overrideKey = 'argentx';
|
|
13
|
-
}
|
|
14
|
-
getConnectedAccounts() {
|
|
15
|
-
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
16
|
-
const address = yield this.getAddress();
|
|
17
|
-
if (!address)
|
|
18
|
-
return [];
|
|
19
|
-
return [address];
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
exports.ArgentX = ArgentX;
|
package/src/wallets/argentx.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
|
|
2
|
-
import StarknetProvider from '../starknetWalletConnector';
|
|
3
|
-
export declare class ArgentX extends StarknetProvider implements WalletConnectorBase {
|
|
4
|
-
overrideKey: string;
|
|
5
|
-
constructor(opts: any);
|
|
6
|
-
getConnectedAccounts(): Promise<string[]>;
|
|
7
|
-
}
|
|
8
|
-
export type ArgentXWalletConnectorType = ArgentX;
|
package/src/wallets/argentx.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import { __awaiter } from '../../_virtual/_tslib.js';
|
|
3
|
-
import StarknetWalletConnector from '../starknetWalletConnector.js';
|
|
4
|
-
|
|
5
|
-
class ArgentX extends StarknetWalletConnector {
|
|
6
|
-
constructor(opts) {
|
|
7
|
-
super('Argent X', 'argentX', opts);
|
|
8
|
-
this.overrideKey = 'argentx';
|
|
9
|
-
}
|
|
10
|
-
getConnectedAccounts() {
|
|
11
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
12
|
-
const address = yield this.getAddress();
|
|
13
|
-
if (!address)
|
|
14
|
-
return [];
|
|
15
|
-
return [address];
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export { ArgentX };
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var _tslib = require('../../_virtual/_tslib.cjs');
|
|
5
|
-
var starknetkit = require('starknetkit');
|
|
6
|
-
var starknetWalletConnector = require('../starknetWalletConnector.cjs');
|
|
7
|
-
|
|
8
|
-
class ArgentXBase extends starknetWalletConnector["default"] {
|
|
9
|
-
constructor() {
|
|
10
|
-
super(...arguments);
|
|
11
|
-
this.canConnectViaCustodialService = true;
|
|
12
|
-
}
|
|
13
|
-
isInstalledOnBrowser() {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
getAddress() {
|
|
17
|
-
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
18
|
-
var _a;
|
|
19
|
-
yield this.connect();
|
|
20
|
-
return Promise.resolve((_a = this.getWallet()) === null || _a === void 0 ? void 0 : _a.selectedAddress);
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
endSession() {
|
|
24
|
-
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
25
|
-
yield starknetkit.disconnect();
|
|
26
|
-
this.wallet = undefined;
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
getWallet() {
|
|
30
|
-
return this.wallet;
|
|
31
|
-
}
|
|
32
|
-
getSelectedNodeUrl() {
|
|
33
|
-
var _a, _b, _c, _d;
|
|
34
|
-
if (!this.starknetNetworks || this.starknetNetworks.length !== 1) {
|
|
35
|
-
return undefined;
|
|
36
|
-
}
|
|
37
|
-
return (((_b = (_a = this.starknetNetworks) === null || _a === void 0 ? void 0 : _a[0].privateCustomerRpcUrls) === null || _b === void 0 ? void 0 : _b[0]) ||
|
|
38
|
-
((_d = (_c = this.starknetNetworks) === null || _c === void 0 ? void 0 : _c[0].rpcUrls) === null || _d === void 0 ? void 0 : _d[0]));
|
|
39
|
-
}
|
|
40
|
-
getSelectedNetworkName() {
|
|
41
|
-
var _a;
|
|
42
|
-
if (!this.starknetNetworks || this.starknetNetworks.length !== 1) {
|
|
43
|
-
return undefined;
|
|
44
|
-
}
|
|
45
|
-
const chainId = (_a = this.starknetNetworks) === null || _a === void 0 ? void 0 : _a[0].chainId;
|
|
46
|
-
return this.mapChainIdToNetworkName(chainId);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
module.exports = ArgentXBase;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { StarknetWindowObject } from 'get-starknet-core';
|
|
2
|
-
import { constants } from 'starknet';
|
|
3
|
-
import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
|
|
4
|
-
import StarknetProvider from '../starknetWalletConnector';
|
|
5
|
-
declare abstract class ArgentXBase extends StarknetProvider implements WalletConnectorBase {
|
|
6
|
-
canConnectViaCustodialService: boolean;
|
|
7
|
-
wallet: StarknetWindowObject | undefined;
|
|
8
|
-
abstract connect(): Promise<void>;
|
|
9
|
-
isInstalledOnBrowser(): boolean;
|
|
10
|
-
getAddress(): Promise<string | undefined>;
|
|
11
|
-
endSession(): Promise<void>;
|
|
12
|
-
getWallet(): StarknetWindowObject | undefined;
|
|
13
|
-
getSelectedNodeUrl(): string | undefined;
|
|
14
|
-
getSelectedNetworkName(): constants.NetworkName | undefined;
|
|
15
|
-
}
|
|
16
|
-
export default ArgentXBase;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import { __awaiter } from '../../_virtual/_tslib.js';
|
|
3
|
-
import { disconnect } from 'starknetkit';
|
|
4
|
-
import StarknetWalletConnector from '../starknetWalletConnector.js';
|
|
5
|
-
|
|
6
|
-
class ArgentXBase extends StarknetWalletConnector {
|
|
7
|
-
constructor() {
|
|
8
|
-
super(...arguments);
|
|
9
|
-
this.canConnectViaCustodialService = true;
|
|
10
|
-
}
|
|
11
|
-
isInstalledOnBrowser() {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
getAddress() {
|
|
15
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
-
var _a;
|
|
17
|
-
yield this.connect();
|
|
18
|
-
return Promise.resolve((_a = this.getWallet()) === null || _a === void 0 ? void 0 : _a.selectedAddress);
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
endSession() {
|
|
22
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
-
yield disconnect();
|
|
24
|
-
this.wallet = undefined;
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
getWallet() {
|
|
28
|
-
return this.wallet;
|
|
29
|
-
}
|
|
30
|
-
getSelectedNodeUrl() {
|
|
31
|
-
var _a, _b, _c, _d;
|
|
32
|
-
if (!this.starknetNetworks || this.starknetNetworks.length !== 1) {
|
|
33
|
-
return undefined;
|
|
34
|
-
}
|
|
35
|
-
return (((_b = (_a = this.starknetNetworks) === null || _a === void 0 ? void 0 : _a[0].privateCustomerRpcUrls) === null || _b === void 0 ? void 0 : _b[0]) ||
|
|
36
|
-
((_d = (_c = this.starknetNetworks) === null || _c === void 0 ? void 0 : _c[0].rpcUrls) === null || _d === void 0 ? void 0 : _d[0]));
|
|
37
|
-
}
|
|
38
|
-
getSelectedNetworkName() {
|
|
39
|
-
var _a;
|
|
40
|
-
if (!this.starknetNetworks || this.starknetNetworks.length !== 1) {
|
|
41
|
-
return undefined;
|
|
42
|
-
}
|
|
43
|
-
const chainId = (_a = this.starknetNetworks) === null || _a === void 0 ? void 0 : _a[0].chainId;
|
|
44
|
-
return this.mapChainIdToNetworkName(chainId);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export { ArgentXBase as default };
|