@dynamic-labs/starknet 0.18.0 → 0.18.100-viem.1
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 +0 -24
- package/package.json +3 -3
- package/src/constants.cjs +6 -6
- package/src/constants.d.ts +3 -3
- package/src/constants.js +6 -6
- package/src/index.cjs +1 -1
- package/src/index.d.ts +5 -5
- package/src/index.js +1 -1
- package/src/starknetWalletConnector.cjs +197 -197
- package/src/starknetWalletConnector.d.ts +44 -44
- package/src/starknetWalletConnector.js +197 -197
- package/src/types.d.ts +11 -11
- package/src/utils/convertors.cjs +27 -27
- package/src/utils/convertors.d.ts +2 -2
- package/src/utils/convertors.js +27 -27
- package/src/wallets/argentx.cjs +12 -12
- package/src/wallets/argentx.d.ts +7 -7
- package/src/wallets/argentx.js +12 -12
- package/src/wallets/braavos.cjs +24 -24
- package/src/wallets/braavos.d.ts +7 -7
- package/src/wallets/braavos.js +24 -24
|
@@ -7,203 +7,203 @@ import { ETH_STARKNET_ADDRESS } from './constants.js';
|
|
|
7
7
|
import ETH_CONTRACT_ABI from './ethereumContractAbi.js';
|
|
8
8
|
import { formatTypedDataMessage } from './utils/convertors.js';
|
|
9
9
|
|
|
10
|
-
const ACCOUNT_CHANGED_EVENT_LISTENER = 'accountsChanged';
|
|
11
|
-
const NETWORK_CHANGED_EVENT_LISTENER = 'networkChanged';
|
|
12
|
-
class StarknetWalletConnector extends WalletConnectorBase {
|
|
13
|
-
constructor(name, windowKey, starknetNetworks) {
|
|
14
|
-
super();
|
|
15
|
-
this.connectedChain = 'STARK';
|
|
16
|
-
this.supportedChains = ['STARK'];
|
|
17
|
-
this.switchNetworkOnlyFromWallet = true;
|
|
18
|
-
this.name = name;
|
|
19
|
-
this.windowKey = windowKey;
|
|
20
|
-
this.starknetNetworks = starknetNetworks;
|
|
21
|
-
}
|
|
22
|
-
getRpcProvider() {
|
|
23
|
-
var _a, _b;
|
|
24
|
-
const nodeUrl = (_b = (_a = this.starknetNetworks) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.rpcUrls[0];
|
|
25
|
-
if (!nodeUrl) {
|
|
26
|
-
throw new DynamicError('RPC URL has not been found.');
|
|
27
|
-
}
|
|
28
|
-
return Promise.resolve(new RpcProvider({ nodeUrl }));
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* returns stakrnet wallet network id
|
|
32
|
-
*/
|
|
33
|
-
getNetwork() {
|
|
34
|
-
var _a;
|
|
35
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
-
const wallet = yield this.getWallet();
|
|
37
|
-
if (!wallet) {
|
|
38
|
-
return Promise.resolve(undefined);
|
|
39
|
-
}
|
|
40
|
-
if (!wallet.isConnected) {
|
|
41
|
-
yield wallet.enable();
|
|
42
|
-
}
|
|
43
|
-
return Promise.resolve((_a = wallet.provider) === null || _a === void 0 ? void 0 : _a.chainId);
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
connect() {
|
|
47
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
-
const wallet = yield this.getWallet();
|
|
49
|
-
try {
|
|
50
|
-
if (wallet && !wallet.isConnected) {
|
|
51
|
-
yield wallet.enable();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
catch (err) {
|
|
55
|
-
logger.error(err);
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
fetchPublicAddress() {
|
|
60
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
-
const wallet = yield this.getWallet();
|
|
62
|
-
/**
|
|
63
|
-
* Fetches public address. Uses `isPreauthorized` as a temporary solution to ensure
|
|
64
|
-
* the wallets store's data is read. Without it, an empty string may be returned due
|
|
65
|
-
* to a possible reliance on its side-effects for data refreshing.
|
|
66
|
-
*/
|
|
67
|
-
yield (wallet === null || wallet === void 0 ? void 0 : wallet.isPreauthorized());
|
|
68
|
-
yield this.connect();
|
|
69
|
-
return Promise.resolve(wallet === null || wallet === void 0 ? void 0 : wallet.selectedAddress);
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
getSigner() {
|
|
73
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
-
const wallet = yield this.getWallet();
|
|
75
|
-
return wallet === null || wallet === void 0 ? void 0 : wallet.account;
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
getWallet() {
|
|
79
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
-
if (!this.wallet) {
|
|
81
|
-
const providers = yield getStarknet().getAvailableWallets();
|
|
82
|
-
this.wallet = providers.find((provider) => provider.name === this.name);
|
|
83
|
-
}
|
|
84
|
-
return this.wallet;
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
getWeb3Provider() {
|
|
88
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
-
const wallet = yield this.getWallet();
|
|
90
|
-
return wallet === null || wallet === void 0 ? void 0 : wallet.provider;
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
signMessage(messageToSign) {
|
|
94
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
-
const wallet = yield this.getWallet();
|
|
96
|
-
const walletAddress = yield this.fetchPublicAddress();
|
|
97
|
-
if (!walletAddress || !wallet) {
|
|
98
|
-
logger.error('Could not fetch wallet address for signing message');
|
|
99
|
-
return undefined;
|
|
100
|
-
}
|
|
101
|
-
const { provider: { chainId }, } = wallet;
|
|
102
|
-
const encodedMessage = formatTypedDataMessage(messageToSign, chainId);
|
|
103
|
-
const signature = yield wallet.account.signMessage(encodedMessage);
|
|
104
|
-
return signature === null || signature === void 0 ? void 0 : signature.join(',');
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
getBalance() {
|
|
108
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
109
|
-
const walletAddress = yield this.fetchPublicAddress();
|
|
110
|
-
const provider = yield this.getWeb3Provider();
|
|
111
|
-
if (!walletAddress || !provider) {
|
|
112
|
-
logger.error('Could not fetch wallet address for getting balance');
|
|
113
|
-
return undefined;
|
|
114
|
-
}
|
|
115
|
-
const contract = new Contract(ETH_CONTRACT_ABI, ETH_STARKNET_ADDRESS, provider);
|
|
116
|
-
try {
|
|
117
|
-
const { balance } = yield contract.balanceOf(walletAddress);
|
|
118
|
-
const gweiBalance = parseInt(uint256.uint256ToBN(balance).toString(10));
|
|
119
|
-
/**
|
|
120
|
-
* Dividing by 1e18 as the returned balance is a Gwei number.
|
|
121
|
-
* Read more here: https://www.investopedia.com/terms/g/gwei-ethereum.asp#toc-what-is-gwei
|
|
122
|
-
*/
|
|
123
|
-
return (gweiBalance / 1e18).toFixed(6);
|
|
124
|
-
}
|
|
125
|
-
catch (error) {
|
|
126
|
-
throw new DynamicError('Something went wrong');
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
endSession() {
|
|
131
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
132
|
-
getStarknet().disconnect({ clearLastWallet: true });
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
getStarknetWindowObject() {
|
|
136
|
-
const starknetWindowInstance = window[`starknet_${this.windowKey}`] || window['starknet'];
|
|
137
|
-
if ((starknetWindowInstance === null || starknetWindowInstance === void 0 ? void 0 : starknetWindowInstance.name) === this.name) {
|
|
138
|
-
return starknetWindowInstance;
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
return undefined;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
isInstalledOnBrowser() {
|
|
145
|
-
var _a;
|
|
146
|
-
const starknetWindowInstance = (_a = window[`starknet_${this.windowKey}`]) !== null && _a !== void 0 ? _a : window['starknet'];
|
|
147
|
-
return (starknetWindowInstance === null || starknetWindowInstance === void 0 ? void 0 : starknetWindowInstance.name) === this.name;
|
|
148
|
-
}
|
|
149
|
-
getConnectedAccounts() {
|
|
150
|
-
var _a;
|
|
151
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
152
|
-
const wallet = yield this.getWallet();
|
|
153
|
-
return ((_a = wallet === null || wallet === void 0 ? void 0 : wallet.account) === null || _a === void 0 ? void 0 : _a.address) ? [wallet.account.address] : [];
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
setupEventListeners(listeners) {
|
|
157
|
-
const wallet = this.getStarknetWindowObject();
|
|
158
|
-
if (!wallet) {
|
|
159
|
-
return logger.error('Wallet has not been found');
|
|
160
|
-
}
|
|
161
|
-
this.handleAccountChange = (address) => __awaiter(this, void 0, void 0, function* () {
|
|
162
|
-
var _a, _b;
|
|
163
|
-
if (!address) {
|
|
164
|
-
yield ((_a = listeners.onDisconnect) === null || _a === void 0 ? void 0 : _a.call(listeners));
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
if (address.toString()) {
|
|
168
|
-
yield ((_b = listeners.onAccountChange) === null || _b === void 0 ? void 0 : _b.call(listeners, [address.toString()]));
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
this.handleNetworkChange = (network) => __awaiter(this, void 0, void 0, function* () {
|
|
172
|
-
var _c, _d;
|
|
173
|
-
if (!network) {
|
|
174
|
-
yield ((_c = listeners.onDisconnect) === null || _c === void 0 ? void 0 : _c.call(listeners));
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
const chainId = this.mapChainUrlToChainId(network.toString());
|
|
178
|
-
if (chainId) {
|
|
179
|
-
yield ((_d = listeners.onChainChange) === null || _d === void 0 ? void 0 : _d.call(listeners, chainId));
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
wallet === null || wallet === void 0 ? void 0 : wallet.on(ACCOUNT_CHANGED_EVENT_LISTENER, this.handleAccountChange);
|
|
183
|
-
wallet === null || wallet === void 0 ? void 0 : wallet.on(NETWORK_CHANGED_EVENT_LISTENER, this.handleNetworkChange);
|
|
184
|
-
}
|
|
185
|
-
teardownEventListeners() {
|
|
186
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
187
|
-
const wallet = yield this.getWallet();
|
|
188
|
-
if (this.handleAccountChange) {
|
|
189
|
-
wallet === null || wallet === void 0 ? void 0 : wallet.off(ACCOUNT_CHANGED_EVENT_LISTENER, this.handleAccountChange);
|
|
190
|
-
this.handleAccountChange = undefined;
|
|
191
|
-
}
|
|
192
|
-
if (this.handleNetworkChange) {
|
|
193
|
-
wallet === null || wallet === void 0 ? void 0 : wallet.off(NETWORK_CHANGED_EVENT_LISTENER, this.handleNetworkChange);
|
|
194
|
-
this.handleNetworkChange = undefined;
|
|
195
|
-
}
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
mapChainUrlToChainId(baseUrl) {
|
|
199
|
-
if (baseUrl.includes('mainnet')) {
|
|
200
|
-
return constants.StarknetChainId.SN_MAIN;
|
|
201
|
-
}
|
|
202
|
-
else if (baseUrl.includes('goerli')) {
|
|
203
|
-
return constants.StarknetChainId.SN_GOERLI;
|
|
204
|
-
}
|
|
205
|
-
return undefined;
|
|
206
|
-
}
|
|
10
|
+
const ACCOUNT_CHANGED_EVENT_LISTENER = 'accountsChanged';
|
|
11
|
+
const NETWORK_CHANGED_EVENT_LISTENER = 'networkChanged';
|
|
12
|
+
class StarknetWalletConnector extends WalletConnectorBase {
|
|
13
|
+
constructor(name, windowKey, starknetNetworks) {
|
|
14
|
+
super();
|
|
15
|
+
this.connectedChain = 'STARK';
|
|
16
|
+
this.supportedChains = ['STARK'];
|
|
17
|
+
this.switchNetworkOnlyFromWallet = true;
|
|
18
|
+
this.name = name;
|
|
19
|
+
this.windowKey = windowKey;
|
|
20
|
+
this.starknetNetworks = starknetNetworks;
|
|
21
|
+
}
|
|
22
|
+
getRpcProvider() {
|
|
23
|
+
var _a, _b;
|
|
24
|
+
const nodeUrl = (_b = (_a = this.starknetNetworks) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.rpcUrls[0];
|
|
25
|
+
if (!nodeUrl) {
|
|
26
|
+
throw new DynamicError('RPC URL has not been found.');
|
|
27
|
+
}
|
|
28
|
+
return Promise.resolve(new RpcProvider({ nodeUrl }));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* returns stakrnet wallet network id
|
|
32
|
+
*/
|
|
33
|
+
getNetwork() {
|
|
34
|
+
var _a;
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
const wallet = yield this.getWallet();
|
|
37
|
+
if (!wallet) {
|
|
38
|
+
return Promise.resolve(undefined);
|
|
39
|
+
}
|
|
40
|
+
if (!wallet.isConnected) {
|
|
41
|
+
yield wallet.enable();
|
|
42
|
+
}
|
|
43
|
+
return Promise.resolve((_a = wallet.provider) === null || _a === void 0 ? void 0 : _a.chainId);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
connect() {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
const wallet = yield this.getWallet();
|
|
49
|
+
try {
|
|
50
|
+
if (wallet && !wallet.isConnected) {
|
|
51
|
+
yield wallet.enable();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
logger.error(err);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
fetchPublicAddress() {
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
const wallet = yield this.getWallet();
|
|
62
|
+
/**
|
|
63
|
+
* Fetches public address. Uses `isPreauthorized` as a temporary solution to ensure
|
|
64
|
+
* the wallets store's data is read. Without it, an empty string may be returned due
|
|
65
|
+
* to a possible reliance on its side-effects for data refreshing.
|
|
66
|
+
*/
|
|
67
|
+
yield (wallet === null || wallet === void 0 ? void 0 : wallet.isPreauthorized());
|
|
68
|
+
yield this.connect();
|
|
69
|
+
return Promise.resolve(wallet === null || wallet === void 0 ? void 0 : wallet.selectedAddress);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
getSigner() {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
const wallet = yield this.getWallet();
|
|
75
|
+
return wallet === null || wallet === void 0 ? void 0 : wallet.account;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
getWallet() {
|
|
79
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
+
if (!this.wallet) {
|
|
81
|
+
const providers = yield getStarknet().getAvailableWallets();
|
|
82
|
+
this.wallet = providers.find((provider) => provider.name === this.name);
|
|
83
|
+
}
|
|
84
|
+
return this.wallet;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
getWeb3Provider() {
|
|
88
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
const wallet = yield this.getWallet();
|
|
90
|
+
return wallet === null || wallet === void 0 ? void 0 : wallet.provider;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
signMessage(messageToSign) {
|
|
94
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
const wallet = yield this.getWallet();
|
|
96
|
+
const walletAddress = yield this.fetchPublicAddress();
|
|
97
|
+
if (!walletAddress || !wallet) {
|
|
98
|
+
logger.error('Could not fetch wallet address for signing message');
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
const { provider: { chainId }, } = wallet;
|
|
102
|
+
const encodedMessage = formatTypedDataMessage(messageToSign, chainId);
|
|
103
|
+
const signature = yield wallet.account.signMessage(encodedMessage);
|
|
104
|
+
return signature === null || signature === void 0 ? void 0 : signature.join(',');
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
getBalance() {
|
|
108
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
109
|
+
const walletAddress = yield this.fetchPublicAddress();
|
|
110
|
+
const provider = yield this.getWeb3Provider();
|
|
111
|
+
if (!walletAddress || !provider) {
|
|
112
|
+
logger.error('Could not fetch wallet address for getting balance');
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
const contract = new Contract(ETH_CONTRACT_ABI, ETH_STARKNET_ADDRESS, provider);
|
|
116
|
+
try {
|
|
117
|
+
const { balance } = yield contract.balanceOf(walletAddress);
|
|
118
|
+
const gweiBalance = parseInt(uint256.uint256ToBN(balance).toString(10));
|
|
119
|
+
/**
|
|
120
|
+
* Dividing by 1e18 as the returned balance is a Gwei number.
|
|
121
|
+
* Read more here: https://www.investopedia.com/terms/g/gwei-ethereum.asp#toc-what-is-gwei
|
|
122
|
+
*/
|
|
123
|
+
return (gweiBalance / 1e18).toFixed(6);
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
throw new DynamicError('Something went wrong');
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
endSession() {
|
|
131
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
132
|
+
getStarknet().disconnect({ clearLastWallet: true });
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
getStarknetWindowObject() {
|
|
136
|
+
const starknetWindowInstance = window[`starknet_${this.windowKey}`] || window['starknet'];
|
|
137
|
+
if ((starknetWindowInstance === null || starknetWindowInstance === void 0 ? void 0 : starknetWindowInstance.name) === this.name) {
|
|
138
|
+
return starknetWindowInstance;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
isInstalledOnBrowser() {
|
|
145
|
+
var _a;
|
|
146
|
+
const starknetWindowInstance = (_a = window[`starknet_${this.windowKey}`]) !== null && _a !== void 0 ? _a : window['starknet'];
|
|
147
|
+
return (starknetWindowInstance === null || starknetWindowInstance === void 0 ? void 0 : starknetWindowInstance.name) === this.name;
|
|
148
|
+
}
|
|
149
|
+
getConnectedAccounts() {
|
|
150
|
+
var _a;
|
|
151
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
152
|
+
const wallet = yield this.getWallet();
|
|
153
|
+
return ((_a = wallet === null || wallet === void 0 ? void 0 : wallet.account) === null || _a === void 0 ? void 0 : _a.address) ? [wallet.account.address] : [];
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
setupEventListeners(listeners) {
|
|
157
|
+
const wallet = this.getStarknetWindowObject();
|
|
158
|
+
if (!wallet) {
|
|
159
|
+
return logger.error('Wallet has not been found');
|
|
160
|
+
}
|
|
161
|
+
this.handleAccountChange = (address) => __awaiter(this, void 0, void 0, function* () {
|
|
162
|
+
var _a, _b;
|
|
163
|
+
if (!address) {
|
|
164
|
+
yield ((_a = listeners.onDisconnect) === null || _a === void 0 ? void 0 : _a.call(listeners));
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
if (address.toString()) {
|
|
168
|
+
yield ((_b = listeners.onAccountChange) === null || _b === void 0 ? void 0 : _b.call(listeners, [address.toString()]));
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
this.handleNetworkChange = (network) => __awaiter(this, void 0, void 0, function* () {
|
|
172
|
+
var _c, _d;
|
|
173
|
+
if (!network) {
|
|
174
|
+
yield ((_c = listeners.onDisconnect) === null || _c === void 0 ? void 0 : _c.call(listeners));
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const chainId = this.mapChainUrlToChainId(network.toString());
|
|
178
|
+
if (chainId) {
|
|
179
|
+
yield ((_d = listeners.onChainChange) === null || _d === void 0 ? void 0 : _d.call(listeners, chainId));
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
wallet === null || wallet === void 0 ? void 0 : wallet.on(ACCOUNT_CHANGED_EVENT_LISTENER, this.handleAccountChange);
|
|
183
|
+
wallet === null || wallet === void 0 ? void 0 : wallet.on(NETWORK_CHANGED_EVENT_LISTENER, this.handleNetworkChange);
|
|
184
|
+
}
|
|
185
|
+
teardownEventListeners() {
|
|
186
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
187
|
+
const wallet = yield this.getWallet();
|
|
188
|
+
if (this.handleAccountChange) {
|
|
189
|
+
wallet === null || wallet === void 0 ? void 0 : wallet.off(ACCOUNT_CHANGED_EVENT_LISTENER, this.handleAccountChange);
|
|
190
|
+
this.handleAccountChange = undefined;
|
|
191
|
+
}
|
|
192
|
+
if (this.handleNetworkChange) {
|
|
193
|
+
wallet === null || wallet === void 0 ? void 0 : wallet.off(NETWORK_CHANGED_EVENT_LISTENER, this.handleNetworkChange);
|
|
194
|
+
this.handleNetworkChange = undefined;
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
mapChainUrlToChainId(baseUrl) {
|
|
199
|
+
if (baseUrl.includes('mainnet')) {
|
|
200
|
+
return constants.StarknetChainId.SN_MAIN;
|
|
201
|
+
}
|
|
202
|
+
else if (baseUrl.includes('goerli')) {
|
|
203
|
+
return constants.StarknetChainId.SN_GOERLI;
|
|
204
|
+
}
|
|
205
|
+
return undefined;
|
|
206
|
+
}
|
|
207
207
|
}
|
|
208
208
|
|
|
209
209
|
export { StarknetWalletConnector as default };
|
package/src/types.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { StarknetWindowObject } from 'get-starknet-core';
|
|
2
|
-
export type StarknetWalletKey = 'braavos' | 'argentX';
|
|
3
|
-
export type StarknetWindowKey = `starknet_${StarknetWalletKey}` | 'starknet';
|
|
4
|
-
type StarknetWindow = {
|
|
5
|
-
[key in StarknetWindowKey]: StarknetWindowObject;
|
|
6
|
-
};
|
|
7
|
-
declare global {
|
|
8
|
-
interface Window extends StarknetWindow {
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
export {};
|
|
1
|
+
import type { StarknetWindowObject } from 'get-starknet-core';
|
|
2
|
+
export type StarknetWalletKey = 'braavos' | 'argentX';
|
|
3
|
+
export type StarknetWindowKey = `starknet_${StarknetWalletKey}` | 'starknet';
|
|
4
|
+
type StarknetWindow = {
|
|
5
|
+
[key in StarknetWindowKey]: StarknetWindowObject;
|
|
6
|
+
};
|
|
7
|
+
declare global {
|
|
8
|
+
interface Window extends StarknetWindow {
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export {};
|
package/src/utils/convertors.cjs
CHANGED
|
@@ -5,33 +5,33 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var starknet = require('starknet');
|
|
6
6
|
var constants = require('../constants.cjs');
|
|
7
7
|
|
|
8
|
-
const defaultTypedData = Object.assign(Object.assign({}, constants.DEFAULT_STARKNET_TYPED_DATA_DOMAIN), { primaryType: 'Message', types: {
|
|
9
|
-
Message: [
|
|
10
|
-
{
|
|
11
|
-
name: 'message',
|
|
12
|
-
type: 'felt',
|
|
13
|
-
},
|
|
14
|
-
],
|
|
15
|
-
StarkNetDomain: [
|
|
16
|
-
{
|
|
17
|
-
name: 'name',
|
|
18
|
-
type: 'felt',
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
name: 'chainId',
|
|
22
|
-
type: 'felt',
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
name: 'version',
|
|
26
|
-
type: 'felt',
|
|
27
|
-
},
|
|
28
|
-
],
|
|
29
|
-
} });
|
|
30
|
-
const formatTypedDataMessage = (inputMessage, chainId = starknet.constants.NetworkName.SN_MAIN) => {
|
|
31
|
-
const message = {
|
|
32
|
-
message: inputMessage.substring(0, 31),
|
|
33
|
-
};
|
|
34
|
-
return Object.assign(Object.assign({}, defaultTypedData), { domain: Object.assign(Object.assign({}, defaultTypedData.domain), { chainId }), message });
|
|
8
|
+
const defaultTypedData = Object.assign(Object.assign({}, constants.DEFAULT_STARKNET_TYPED_DATA_DOMAIN), { primaryType: 'Message', types: {
|
|
9
|
+
Message: [
|
|
10
|
+
{
|
|
11
|
+
name: 'message',
|
|
12
|
+
type: 'felt',
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
StarkNetDomain: [
|
|
16
|
+
{
|
|
17
|
+
name: 'name',
|
|
18
|
+
type: 'felt',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: 'chainId',
|
|
22
|
+
type: 'felt',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'version',
|
|
26
|
+
type: 'felt',
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
} });
|
|
30
|
+
const formatTypedDataMessage = (inputMessage, chainId = starknet.constants.NetworkName.SN_MAIN) => {
|
|
31
|
+
const message = {
|
|
32
|
+
message: inputMessage.substring(0, 31),
|
|
33
|
+
};
|
|
34
|
+
return Object.assign(Object.assign({}, defaultTypedData), { domain: Object.assign(Object.assign({}, defaultTypedData.domain), { chainId }), message });
|
|
35
35
|
};
|
|
36
36
|
|
|
37
37
|
exports.formatTypedDataMessage = formatTypedDataMessage;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { TypedData, constants } from 'starknet';
|
|
2
|
-
export declare const formatTypedDataMessage: (inputMessage: string, chainId?: constants.NetworkName) => TypedData;
|
|
1
|
+
import { TypedData, constants } from 'starknet';
|
|
2
|
+
export declare const formatTypedDataMessage: (inputMessage: string, chainId?: constants.NetworkName) => TypedData;
|
package/src/utils/convertors.js
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
import { constants } from 'starknet';
|
|
2
2
|
import { DEFAULT_STARKNET_TYPED_DATA_DOMAIN } from '../constants.js';
|
|
3
3
|
|
|
4
|
-
const defaultTypedData = Object.assign(Object.assign({}, DEFAULT_STARKNET_TYPED_DATA_DOMAIN), { primaryType: 'Message', types: {
|
|
5
|
-
Message: [
|
|
6
|
-
{
|
|
7
|
-
name: 'message',
|
|
8
|
-
type: 'felt',
|
|
9
|
-
},
|
|
10
|
-
],
|
|
11
|
-
StarkNetDomain: [
|
|
12
|
-
{
|
|
13
|
-
name: 'name',
|
|
14
|
-
type: 'felt',
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
name: 'chainId',
|
|
18
|
-
type: 'felt',
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
name: 'version',
|
|
22
|
-
type: 'felt',
|
|
23
|
-
},
|
|
24
|
-
],
|
|
25
|
-
} });
|
|
26
|
-
const formatTypedDataMessage = (inputMessage, chainId = constants.NetworkName.SN_MAIN) => {
|
|
27
|
-
const message = {
|
|
28
|
-
message: inputMessage.substring(0, 31),
|
|
29
|
-
};
|
|
30
|
-
return Object.assign(Object.assign({}, defaultTypedData), { domain: Object.assign(Object.assign({}, defaultTypedData.domain), { chainId }), message });
|
|
4
|
+
const defaultTypedData = Object.assign(Object.assign({}, DEFAULT_STARKNET_TYPED_DATA_DOMAIN), { primaryType: 'Message', types: {
|
|
5
|
+
Message: [
|
|
6
|
+
{
|
|
7
|
+
name: 'message',
|
|
8
|
+
type: 'felt',
|
|
9
|
+
},
|
|
10
|
+
],
|
|
11
|
+
StarkNetDomain: [
|
|
12
|
+
{
|
|
13
|
+
name: 'name',
|
|
14
|
+
type: 'felt',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'chainId',
|
|
18
|
+
type: 'felt',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: 'version',
|
|
22
|
+
type: 'felt',
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
} });
|
|
26
|
+
const formatTypedDataMessage = (inputMessage, chainId = constants.NetworkName.SN_MAIN) => {
|
|
27
|
+
const message = {
|
|
28
|
+
message: inputMessage.substring(0, 31),
|
|
29
|
+
};
|
|
30
|
+
return Object.assign(Object.assign({}, defaultTypedData), { domain: Object.assign(Object.assign({}, defaultTypedData.domain), { chainId }), message });
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
export { formatTypedDataMessage };
|
package/src/wallets/argentx.cjs
CHANGED
|
@@ -5,18 +5,18 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var _tslib = require('../../_virtual/_tslib.cjs');
|
|
6
6
|
var starknetWalletConnector = require('../starknetWalletConnector.cjs');
|
|
7
7
|
|
|
8
|
-
class ArgentX extends starknetWalletConnector {
|
|
9
|
-
constructor({ starknetNetworks }) {
|
|
10
|
-
super('Argent X', 'argentX', starknetNetworks);
|
|
11
|
-
}
|
|
12
|
-
getConnectedAccounts() {
|
|
13
|
-
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
14
|
-
const address = yield this.fetchPublicAddress();
|
|
15
|
-
if (!address)
|
|
16
|
-
return [];
|
|
17
|
-
return [address];
|
|
18
|
-
});
|
|
19
|
-
}
|
|
8
|
+
class ArgentX extends starknetWalletConnector {
|
|
9
|
+
constructor({ starknetNetworks }) {
|
|
10
|
+
super('Argent X', 'argentX', starknetNetworks);
|
|
11
|
+
}
|
|
12
|
+
getConnectedAccounts() {
|
|
13
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
14
|
+
const address = yield this.fetchPublicAddress();
|
|
15
|
+
if (!address)
|
|
16
|
+
return [];
|
|
17
|
+
return [address];
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
exports.ArgentX = ArgentX;
|
package/src/wallets/argentx.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { WalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
2
|
-
import StarknetProvider from '../starknetWalletConnector';
|
|
3
|
-
export declare class ArgentX extends StarknetProvider implements WalletConnector {
|
|
4
|
-
constructor({ starknetNetworks }: any);
|
|
5
|
-
getConnectedAccounts(): Promise<string[]>;
|
|
6
|
-
}
|
|
7
|
-
export type ArgentXWalletConnectorType = ArgentX;
|
|
1
|
+
import { WalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
2
|
+
import StarknetProvider from '../starknetWalletConnector';
|
|
3
|
+
export declare class ArgentX extends StarknetProvider implements WalletConnector {
|
|
4
|
+
constructor({ starknetNetworks }: any);
|
|
5
|
+
getConnectedAccounts(): Promise<string[]>;
|
|
6
|
+
}
|
|
7
|
+
export type ArgentXWalletConnectorType = ArgentX;
|
package/src/wallets/argentx.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { __awaiter } from '../../_virtual/_tslib.js';
|
|
2
2
|
import StarknetWalletConnector from '../starknetWalletConnector.js';
|
|
3
3
|
|
|
4
|
-
class ArgentX extends StarknetWalletConnector {
|
|
5
|
-
constructor({ starknetNetworks }) {
|
|
6
|
-
super('Argent X', 'argentX', starknetNetworks);
|
|
7
|
-
}
|
|
8
|
-
getConnectedAccounts() {
|
|
9
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10
|
-
const address = yield this.fetchPublicAddress();
|
|
11
|
-
if (!address)
|
|
12
|
-
return [];
|
|
13
|
-
return [address];
|
|
14
|
-
});
|
|
15
|
-
}
|
|
4
|
+
class ArgentX extends StarknetWalletConnector {
|
|
5
|
+
constructor({ starknetNetworks }) {
|
|
6
|
+
super('Argent X', 'argentX', starknetNetworks);
|
|
7
|
+
}
|
|
8
|
+
getConnectedAccounts() {
|
|
9
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
10
|
+
const address = yield this.fetchPublicAddress();
|
|
11
|
+
if (!address)
|
|
12
|
+
return [];
|
|
13
|
+
return [address];
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export { ArgentX };
|