@lunch-money/ethereum-to-lunch-money 1.3.0 → 2.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/README.md +84 -10
- package/dist/cjs/src/client.d.ts +36 -5
- package/dist/cjs/src/client.js +347 -15
- package/dist/cjs/src/client.js.map +1 -1
- package/dist/cjs/src/ethereum_init.d.ts +34 -0
- package/dist/cjs/src/ethereum_init.js +359 -0
- package/dist/cjs/src/ethereum_init.js.map +1 -0
- package/dist/cjs/src/main.d.ts +2 -0
- package/dist/cjs/src/main.js +9 -55
- package/dist/cjs/src/main.js.map +1 -1
- package/dist/cjs/src/types.d.ts +3 -3
- package/dist/cjs/src/types.js.map +1 -1
- package/dist/mjs/src/client.d.ts +36 -5
- package/dist/mjs/src/client.js +338 -13
- package/dist/mjs/src/client.js.map +1 -1
- package/dist/mjs/src/ethereum_init.d.ts +34 -0
- package/dist/mjs/src/ethereum_init.js +340 -0
- package/dist/mjs/src/ethereum_init.js.map +1 -0
- package/dist/mjs/src/main.d.ts +2 -0
- package/dist/mjs/src/main.js +3 -29
- package/dist/mjs/src/main.js.map +1 -1
- package/dist/mjs/src/types.d.ts +3 -3
- package/dist/mjs/src/types.js.map +1 -1
- package/package.json +11 -4
package/dist/mjs/src/client.js
CHANGED
|
@@ -1,24 +1,349 @@
|
|
|
1
1
|
import * as ethscan from '@mycrypto/eth-scan';
|
|
2
|
+
import { ethers } from 'ethers';
|
|
2
3
|
import tokenList1inch from '../fixtures/1inch.json';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
// Use node-fetch for Node.js compatibility
|
|
5
|
+
import fetch from 'node-fetch';
|
|
6
|
+
/**
|
|
7
|
+
* Debug function that logs to console.log if DEBUG_ETHEREUM environment variable is set
|
|
8
|
+
*/
|
|
9
|
+
export const debug = (...args) => {
|
|
10
|
+
if (process.env.DEBUG_ETHEREUM) {
|
|
11
|
+
const timestamp = new Date().toISOString();
|
|
12
|
+
console.log(`[DEBUG_ETHEREUM] [${timestamp}]`, ...args);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
export class EtherscanProvider {
|
|
16
|
+
apiKey;
|
|
17
|
+
baseUrl = 'https://api.etherscan.io/v2/api';
|
|
18
|
+
constructor(apiKey) {
|
|
19
|
+
this.apiKey = apiKey;
|
|
20
|
+
}
|
|
21
|
+
async discoverTokensForWallet(address, chainId) {
|
|
22
|
+
// Use chainId from provider, default to Ethereum mainnet (1)
|
|
23
|
+
const targetChainId = chainId ? Number(chainId) : 1;
|
|
24
|
+
const response = await fetch(`${this.baseUrl}?chainid=${targetChainId}&module=account&action=tokentx&address=${address}&startblock=0&endblock=99999999&sort=desc&apikey=${this.apiKey}`);
|
|
25
|
+
const data = await response.json();
|
|
26
|
+
// Handle valid "no transactions" response
|
|
27
|
+
if (data.status === '0' && data.message === 'No transactions found') {
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
// Handle API errors
|
|
31
|
+
if (data.status === '0' && data.message === 'NOTOK') {
|
|
32
|
+
throw new Error(`Etherscan V2 API error: ${data.result}`);
|
|
33
|
+
}
|
|
34
|
+
if (data.status !== '1') {
|
|
35
|
+
throw new Error(`Etherscan V2 API error: ${data.message}`);
|
|
36
|
+
}
|
|
37
|
+
// Extract unique token contract addresses from transfer events
|
|
38
|
+
const uniqueTokens = new Set();
|
|
39
|
+
for (const tx of data.result) {
|
|
40
|
+
uniqueTokens.add(tx.contractAddress);
|
|
41
|
+
}
|
|
42
|
+
return Array.from(uniqueTokens);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export class MoralisProvider {
|
|
46
|
+
apiKey;
|
|
47
|
+
baseUrl = 'https://deep-index.moralis.io/api/v2';
|
|
48
|
+
constructor(apiKey) {
|
|
49
|
+
this.apiKey = apiKey;
|
|
50
|
+
}
|
|
51
|
+
async discoverTokensForWallet(address, chainId) {
|
|
52
|
+
// Map chainId to Moralis chain format (only supports specific enum values)
|
|
53
|
+
let chainFormat;
|
|
54
|
+
if (chainId) {
|
|
55
|
+
switch (Number(chainId)) {
|
|
56
|
+
case 1:
|
|
57
|
+
chainFormat = 'eth';
|
|
58
|
+
break; // Ethereum mainnet
|
|
59
|
+
case 137:
|
|
60
|
+
chainFormat = 'polygon';
|
|
61
|
+
break; // Polygon
|
|
62
|
+
case 56:
|
|
63
|
+
chainFormat = 'bsc';
|
|
64
|
+
break; // BSC
|
|
65
|
+
case 42161:
|
|
66
|
+
chainFormat = 'arbitrum';
|
|
67
|
+
break; // Arbitrum
|
|
68
|
+
case 10:
|
|
69
|
+
chainFormat = 'optimism';
|
|
70
|
+
break; // Optimism
|
|
71
|
+
case 43114:
|
|
72
|
+
chainFormat = 'avalanche';
|
|
73
|
+
break; // Avalanche
|
|
74
|
+
case 250:
|
|
75
|
+
chainFormat = 'fantom';
|
|
76
|
+
break; // Fantom
|
|
77
|
+
default:
|
|
78
|
+
chainFormat = 'eth';
|
|
79
|
+
break; // Default to Ethereum
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
chainFormat = 'eth'; // Default to Ethereum mainnet
|
|
11
84
|
}
|
|
85
|
+
const response = await fetch(`${this.baseUrl}/${address}/erc20?chain=${chainFormat}`, {
|
|
86
|
+
headers: {
|
|
87
|
+
'X-API-Key': this.apiKey,
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
if (!response.ok) {
|
|
91
|
+
const errorData = await response.json().catch(() => ({}));
|
|
92
|
+
if (errorData.message && errorData.message.includes('over 2000 tokens')) {
|
|
93
|
+
throw new Error(`Moralis API error: Wallet has too many tokens (>2000) - ${errorData.message}`);
|
|
94
|
+
}
|
|
95
|
+
throw new Error(`Moralis API error: ${response.status} ${response.statusText}`);
|
|
96
|
+
}
|
|
97
|
+
const data = await response.json();
|
|
98
|
+
// Extract unique token contract addresses from balance data
|
|
99
|
+
const uniqueTokens = new Set();
|
|
100
|
+
for (const item of data) {
|
|
101
|
+
if (item.token_address && item.balance !== '0') {
|
|
102
|
+
uniqueTokens.add(item.token_address);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return Array.from(uniqueTokens);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export const createEthereumWalletClient = (serviceProviderInfo = [], walletAPIProviderInfo = []) => {
|
|
109
|
+
let providers = [];
|
|
110
|
+
let etherscanProvider = null;
|
|
111
|
+
let moralisProvider = null;
|
|
112
|
+
try {
|
|
113
|
+
// Initialize the custom provider(s) for ethscan to use the ethers client correctly.
|
|
114
|
+
// A custom ethscan provider implementation is needed to map `call` to `send` for ethscan to use the ethers client correctly.
|
|
115
|
+
// This is a temporary solution until the ethscan library is updated to support ethers v6.
|
|
116
|
+
if (serviceProviderInfo.length) {
|
|
117
|
+
providers = Object.freeze(serviceProviderInfo.map((providerInfo) => {
|
|
118
|
+
if (providerInfo.type === 'Service Provider' && providerInfo.provider) {
|
|
119
|
+
return {
|
|
120
|
+
...providerInfo,
|
|
121
|
+
customProvider: {
|
|
122
|
+
send(method, params) {
|
|
123
|
+
// Type pulled from: https://github.com/MyCryptoHQ/eth-scan/blob/master/src/providers/provider.ts#L32
|
|
124
|
+
const typedParams = params;
|
|
125
|
+
return providerInfo.provider?.call({
|
|
126
|
+
to: typedParams[0].to,
|
|
127
|
+
data: typedParams[0].data,
|
|
128
|
+
});
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
throw new Error(`Invalid service provider: ${providerInfo.name} passed to createEthereumWalletClient`);
|
|
135
|
+
}
|
|
136
|
+
}));
|
|
137
|
+
// Initialize any wallet API providers
|
|
138
|
+
for (const walletKeyInfo of walletAPIProviderInfo) {
|
|
139
|
+
if (walletKeyInfo.type === 'API Provider') {
|
|
140
|
+
if (walletKeyInfo.name === 'Etherscan' && walletKeyInfo.apiKey) {
|
|
141
|
+
etherscanProvider = new EtherscanProvider(walletKeyInfo.apiKey);
|
|
142
|
+
}
|
|
143
|
+
else if (walletKeyInfo.name === 'Moralis' && walletKeyInfo.apiKey) {
|
|
144
|
+
moralisProvider = new MoralisProvider(walletKeyInfo.apiKey);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
throw new Error(`Invalid wallet API provider: ${walletKeyInfo.name} passed to createEthereumWalletClient`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
// Create a wallet using the quorum of free service providers
|
|
154
|
+
const publicProvider = ethers.getDefaultProvider();
|
|
155
|
+
providers = Object.freeze([
|
|
156
|
+
...providers,
|
|
157
|
+
{
|
|
158
|
+
type: 'Service Provider',
|
|
159
|
+
name: 'Public Provider',
|
|
160
|
+
provider: publicProvider,
|
|
161
|
+
status: 'SUCCESS',
|
|
162
|
+
customProvider: {
|
|
163
|
+
send(method, params) {
|
|
164
|
+
const typedParams = params;
|
|
165
|
+
return publicProvider?.call({ to: typedParams[0].to, data: typedParams[0].data });
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
]);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
throw new Error(`Error creating Ethereum wallet client: ${error instanceof Error ? error.message : String(error)}`);
|
|
174
|
+
}
|
|
175
|
+
const internalGetBalances = async (client, walletAddress, negligibleBalanceThreshold, provider, customProvider, obscuredWalletAddress) => {
|
|
176
|
+
let timeoutId;
|
|
177
|
+
const timeoutDuration = process.env.ETHEREUM_BALANCE_TIMEOUT_MSECS
|
|
178
|
+
? parseInt(process.env.ETHEREUM_BALANCE_TIMEOUT_MSECS)
|
|
179
|
+
: 60000;
|
|
180
|
+
const timeout = new Promise((_, reject) => {
|
|
181
|
+
timeoutId = setTimeout(() => {
|
|
182
|
+
reject(new Error(`Ethereum connector getBalances timed out after ${timeoutDuration} milliseconds.`));
|
|
183
|
+
}, timeoutDuration);
|
|
184
|
+
});
|
|
185
|
+
const result = await Promise.race([
|
|
186
|
+
(async () => {
|
|
187
|
+
try {
|
|
188
|
+
const weiBalance = await client.getWeiBalance(walletAddress, provider);
|
|
189
|
+
const chainId = await client.getChainId(provider);
|
|
190
|
+
let filteredTokens = [];
|
|
191
|
+
try {
|
|
192
|
+
let discoveredTokens = [];
|
|
193
|
+
if (moralisProvider || etherscanProvider) {
|
|
194
|
+
discoveredTokens = await client.discoverTokensHybrid(walletAddress, chainId);
|
|
195
|
+
if (discoveredTokens.length > 0) {
|
|
196
|
+
filteredTokens = await loadTokenList().then((tokens) => tokens.filter((t) => discoveredTokens.includes(t.address) && BigInt(t.chainId) === BigInt(chainId)));
|
|
197
|
+
debug(`Wallet ${obscuredWalletAddress}: Filtered to ${filteredTokens.length} tokens on chain ${chainId}`);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
debug(`Wallet ${obscuredWalletAddress}: No tokens discovered, using empty token list`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
debug(`Wallet ${obscuredWalletAddress}: No discovery APIs available, using full token list`);
|
|
205
|
+
filteredTokens = (await loadTokenList()).filter((t) => BigInt(t.chainId) === BigInt(chainId));
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
debug(`Wallet ${obscuredWalletAddress}: Token discovery failed, falling back to full token list:`, error);
|
|
210
|
+
filteredTokens = (await loadTokenList()).filter((t) => BigInt(t.chainId) === BigInt(chainId));
|
|
211
|
+
}
|
|
212
|
+
debug(`Wallet ${obscuredWalletAddress}: Checking balances for ETH and ${filteredTokens.length} other tokens`);
|
|
213
|
+
const map = await ethscan.getTokensBalance(customProvider, walletAddress, filteredTokens.map((t) => t.address));
|
|
214
|
+
return { weiBalance, chainId, map, filteredTokens };
|
|
215
|
+
}
|
|
216
|
+
finally {
|
|
217
|
+
if (timeoutId) {
|
|
218
|
+
clearTimeout(timeoutId);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
})(),
|
|
222
|
+
timeout,
|
|
223
|
+
]);
|
|
224
|
+
const { weiBalance, chainId, map, filteredTokens } = result;
|
|
225
|
+
debug('ethers.getTokensBalance returned for wallet address:', obscuredWalletAddress);
|
|
226
|
+
const balances = Object.entries(map)
|
|
227
|
+
.map(([address, balance]) => {
|
|
228
|
+
const token = filteredTokens.find((t) => t.address === address);
|
|
229
|
+
if (!token) {
|
|
230
|
+
throw new Error(`Token ${address} not found in discovered token list for chainId ${chainId}`);
|
|
231
|
+
}
|
|
232
|
+
return {
|
|
233
|
+
asset: token.symbol,
|
|
234
|
+
undivisedAmount: balance,
|
|
235
|
+
decimals: token.decimals,
|
|
236
|
+
};
|
|
237
|
+
})
|
|
238
|
+
.concat({ asset: 'ETH', undivisedAmount: weiBalance, decimals: 18 })
|
|
239
|
+
.map(({ asset, undivisedAmount, decimals }) => ({ asset, amount: ethers.formatUnits(undivisedAmount, decimals) }))
|
|
240
|
+
.filter((b) => ethers.parseUnits(b.amount, 18) > negligibleBalanceThreshold)
|
|
241
|
+
.map((b) => ({ asset: b.asset, amount: String(b.amount) }))
|
|
242
|
+
.sort((a, b) => a.asset.localeCompare(b.asset));
|
|
243
|
+
debug(`Returning from getBalances for ${obscuredWalletAddress}:`, balances);
|
|
244
|
+
const balanceResult = {
|
|
245
|
+
providerName: 'wallet_ethereum',
|
|
246
|
+
balances,
|
|
247
|
+
};
|
|
248
|
+
return balanceResult;
|
|
12
249
|
};
|
|
13
250
|
return {
|
|
14
|
-
async getChainId() {
|
|
251
|
+
async getChainId(provider) {
|
|
15
252
|
return (await provider.getNetwork()).chainId;
|
|
16
253
|
},
|
|
17
|
-
async getWeiBalance(walletAddress) {
|
|
18
|
-
return
|
|
254
|
+
async getWeiBalance(walletAddress, provider) {
|
|
255
|
+
return await provider.getBalance(walletAddress);
|
|
256
|
+
},
|
|
257
|
+
async getBalances(walletAddress, negligibleBalanceThreshold) {
|
|
258
|
+
const obscuredWalletAddress = `0x..${walletAddress.slice(-6)}`;
|
|
259
|
+
debug('getBalances called for wallet address:', obscuredWalletAddress);
|
|
260
|
+
let result = {
|
|
261
|
+
providerName: 'wallet_ethereum',
|
|
262
|
+
balances: [],
|
|
263
|
+
};
|
|
264
|
+
if (providers.length === 0) {
|
|
265
|
+
throw new Error('No Ethereum providers available');
|
|
266
|
+
}
|
|
267
|
+
let providerIndex = 0;
|
|
268
|
+
let provider = providers[0].provider;
|
|
269
|
+
let customProvider = providers[0].customProvider;
|
|
270
|
+
let providerName = providers[0].name;
|
|
271
|
+
debug(`Attempting lookup using primary provider: ${providerName}`);
|
|
272
|
+
while (result.balances.length === 0) {
|
|
273
|
+
try {
|
|
274
|
+
result = await internalGetBalances(this, walletAddress, negligibleBalanceThreshold, provider, customProvider, obscuredWalletAddress);
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
278
|
+
debug(`Error getting balances using provider ${providerName}: ${errorMessage}`);
|
|
279
|
+
if (errorMessage.includes('unconfigured name') || errorMessage.includes('bad address checksum')) {
|
|
280
|
+
throw new Error(`Invalid wallet address. Account needs to be relinked.`);
|
|
281
|
+
}
|
|
282
|
+
else if (providerIndex === providers.length - 1) {
|
|
283
|
+
throw error;
|
|
284
|
+
}
|
|
285
|
+
providerIndex = providerIndex + 1;
|
|
286
|
+
providerName = providers[providerIndex].name;
|
|
287
|
+
provider = providers[providerIndex].provider;
|
|
288
|
+
customProvider = providers[providerIndex].customProvider;
|
|
289
|
+
debug(`Retrying lookup using provider: ${providerName}`);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return result;
|
|
293
|
+
},
|
|
294
|
+
async getTokensBalance(walletAddress, tokenContractAddresses, providerInfo) {
|
|
295
|
+
if (providerInfo.customProvider) {
|
|
296
|
+
return ethscan.getTokensBalance(providerInfo.customProvider, walletAddress, tokenContractAddresses);
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
throw new Error(`No ethscan compatible provider found for ${providerInfo.name}`);
|
|
300
|
+
}
|
|
19
301
|
},
|
|
20
|
-
async
|
|
21
|
-
|
|
302
|
+
async discoverTokensHybrid(walletAddress, chainId) {
|
|
303
|
+
const allTokens = new Set();
|
|
304
|
+
// 1. Moralis Discovery (PRIMARY)
|
|
305
|
+
if (moralisProvider) {
|
|
306
|
+
try {
|
|
307
|
+
const moralisTokens = await moralisProvider.discoverTokensForWallet(walletAddress, chainId);
|
|
308
|
+
debug(`Moralis: Discovered ${moralisTokens.length} tokens`);
|
|
309
|
+
moralisTokens.forEach((t) => allTokens.add(t));
|
|
310
|
+
}
|
|
311
|
+
catch (error) {
|
|
312
|
+
debug(`Moralis: Failed - ${error instanceof Error ? error.message : String(error)}`);
|
|
313
|
+
// 2. Etherscan Discovery (FALLBACK ONLY)
|
|
314
|
+
if (etherscanProvider) {
|
|
315
|
+
try {
|
|
316
|
+
const etherscanTokens = await etherscanProvider.discoverTokensForWallet(walletAddress, chainId);
|
|
317
|
+
debug(`Etherscan (fallback): Discovered ${etherscanTokens.length} tokens`);
|
|
318
|
+
etherscanTokens.forEach((t) => allTokens.add(t));
|
|
319
|
+
}
|
|
320
|
+
catch (fallbackError) {
|
|
321
|
+
debug(`Etherscan (fallback): Failed - ${fallbackError instanceof Error ? fallbackError.message : String(fallbackError)}`);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
debug('Etherscan: No API key provided for fallback');
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
debug('Moralis: No API key provided');
|
|
331
|
+
// 3. Etherscan Discovery (PRIMARY if no Moralis)
|
|
332
|
+
if (etherscanProvider) {
|
|
333
|
+
try {
|
|
334
|
+
const etherscanTokens = await etherscanProvider.discoverTokensForWallet(walletAddress, chainId);
|
|
335
|
+
debug(`Etherscan: Discovered ${etherscanTokens.length} tokens`);
|
|
336
|
+
etherscanTokens.forEach((t) => allTokens.add(t));
|
|
337
|
+
}
|
|
338
|
+
catch (error) {
|
|
339
|
+
debug(`Etherscan: Failed - ${error instanceof Error ? error.message : String(error)}`);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
debug('Etherscan: No API key provided');
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return Array.from(allTokens);
|
|
22
347
|
},
|
|
23
348
|
};
|
|
24
349
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAG9C,OAAO,cAAc,MAAM,wBAAwB,CAAC;AASpD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,QAAiC,EAAwB,EAAE;IAEpG,6HAA6H;IAC7H,0FAA0F;IAC1F,MAAM,cAAc,GAAwB;QAC1C,IAAI,CAAS,MAAc,EAAE,MAA2B;YAEtD,qGAAqG;YACrG,MAAM,WAAW,GAAG,MAA8C,CAAC;YAEnE,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAC,CAAoB,CAAA;QAC7F,CAAC;KACF,CAAA;IAED,OAAO;QACL,KAAK,CAAC,UAAU;YACd,OAAO,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC;QAC/C,CAAC;QACD,KAAK,CAAC,aAAa,CAAC,aAAa;YAC/B,OAAO,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,KAAK,CAAC,gBAAgB,CAAC,aAAa,EAAE,sBAAsB;YAC1D,OAAO,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,aAAa,EAAE,sBAAsB,CAAC,CAAC;QACzF,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAWF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,IAAsB,EAAE;IACxD,OAAO,cAAc,CAAC,MAAM,CAAC;AAC/B,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ProviderInfo, EthereumWalletClient } from './client.js';
|
|
2
|
+
export interface EthereumIntegrationType {
|
|
3
|
+
initialized: boolean;
|
|
4
|
+
walletClient: EthereumWalletClient;
|
|
5
|
+
serviceProviderInfo: ProviderInfo[];
|
|
6
|
+
walletProviderInfo: ProviderInfo[];
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
}
|
|
9
|
+
export interface INTEGRATIONS {
|
|
10
|
+
ethereum: EthereumIntegrationType;
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
}
|
|
13
|
+
declare class EthereumInitializationService {
|
|
14
|
+
private integrations;
|
|
15
|
+
private logDebug;
|
|
16
|
+
private initialized;
|
|
17
|
+
private ethereumIntegration;
|
|
18
|
+
constructor(integrations: INTEGRATIONS, logDebug: (message: string) => void);
|
|
19
|
+
initialize(): Promise<EthereumIntegrationType>;
|
|
20
|
+
private validateAPIKeys;
|
|
21
|
+
private processResults;
|
|
22
|
+
private handleError;
|
|
23
|
+
private testProvider;
|
|
24
|
+
private testApiKey;
|
|
25
|
+
private getCleanErrorMessage;
|
|
26
|
+
private maskKey;
|
|
27
|
+
private warnAboutLegacyKeys;
|
|
28
|
+
private getPrivateProviders;
|
|
29
|
+
private getWalletTokenApiKeyTestInfo;
|
|
30
|
+
private handleMoralisResponse;
|
|
31
|
+
private handleEtherscanResponse;
|
|
32
|
+
private getErrorMessage;
|
|
33
|
+
}
|
|
34
|
+
export default EthereumInitializationService;
|