@vleap/warps-adapter-evm 0.2.0-alpha.23 → 0.2.0-alpha.25

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/dist/index.js CHANGED
@@ -24,11 +24,12 @@ __export(index_exports, {
24
24
  BaseExplorers: () => BaseExplorers,
25
25
  EthereumExplorers: () => EthereumExplorers,
26
26
  EvmExplorers: () => EvmExplorers,
27
- EvmLogoService: () => EvmLogoService,
28
27
  ExplorerUrls: () => ExplorerUrls,
28
+ KnownTokens: () => KnownTokens,
29
29
  NativeTokenArb: () => NativeTokenArb,
30
30
  NativeTokenBase: () => NativeTokenBase,
31
31
  NativeTokenEth: () => NativeTokenEth,
32
+ UniswapService: () => UniswapService,
32
33
  WarpEvmConstants: () => WarpEvmConstants,
33
34
  WarpEvmDataLoader: () => WarpEvmDataLoader,
34
35
  WarpEvmExecutor: () => WarpEvmExecutor,
@@ -36,318 +37,302 @@ __export(index_exports, {
36
37
  WarpEvmResults: () => WarpEvmResults,
37
38
  WarpEvmSerializer: () => WarpEvmSerializer,
38
39
  createEvmAdapter: () => createEvmAdapter,
40
+ findKnownTokenById: () => findKnownTokenById,
39
41
  getAllEvmAdapters: () => getAllEvmAdapters,
40
42
  getAllEvmChainNames: () => getAllEvmChainNames,
41
43
  getArbitrumAdapter: () => getArbitrumAdapter,
42
44
  getBaseAdapter: () => getBaseAdapter,
43
- getEthereumAdapter: () => getEthereumAdapter
45
+ getEthereumAdapter: () => getEthereumAdapter,
46
+ getKnownTokensForChain: () => getKnownTokensForChain
44
47
  });
45
48
  module.exports = __toCommonJS(index_exports);
46
49
 
47
50
  // src/chains/arbitrum.ts
48
- var import_warps5 = require("@vleap/warps");
51
+ var import_warps11 = require("@vleap/warps");
49
52
 
50
53
  // src/WarpEvmDataLoader.ts
51
- var import_warps = require("@vleap/warps");
54
+ var import_warps7 = require("@vleap/warps");
52
55
  var import_ethers = require("ethers");
53
56
 
54
- // src/LogoService.ts
55
- var CHAIN_IDS = {
56
- ethereum: 1,
57
- arbitrum: 42161,
58
- base: 8453
59
- };
60
- var FALLBACK_LOGOS = {
61
- ethereum: {
62
- "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png",
63
- "0xdAC17F958D2ee523a2206206994597C13D831ec7": "https://assets.coingecko.com/coins/images/325/small/Tether.png",
64
- "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599": "https://assets.coingecko.com/coins/images/7598/small/wrapped_bitcoin_wbtc.png",
65
- "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2": "https://assets.coingecko.com/coins/images/2518/small/weth.png",
66
- "0x6B175474E89094C44Da98b954EedeAC495271d0F": "https://assets.coingecko.com/coins/images/9956/small/4943.png"
67
- },
68
- arbitrum: {
69
- "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8": "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png",
70
- "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9": "https://assets.coingecko.com/coins/images/325/small/Tether.png",
71
- "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1": "https://assets.coingecko.com/coins/images/2518/small/weth.png"
72
- },
73
- base: {
74
- "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913": "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png",
75
- "0x4200000000000000000000000000000000000006": "https://assets.coingecko.com/coins/images/2518/small/weth.png",
76
- "0x036CbD53842c5426634e7929541eC2318f3dCF7e": "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png",
77
- "0x808456652fdb597867f38412077A9182bf77359F": "https://assets.coingecko.com/coins/images/26045/standard/euro.png",
78
- "0xcbB7C0006F23900c38EB856149F799620fcb8A4a": "https://assets.coingecko.com/coins/images/7598/small/wrapped_bitcoin_wbtc.png"
57
+ // src/providers/UniswapService.ts
58
+ var import_warps = require("@vleap/warps");
59
+ var _UniswapService = class _UniswapService {
60
+ constructor(cache, chainId) {
61
+ this.cache = cache;
62
+ this.chainId = chainId;
79
63
  }
80
- };
81
- var TOKEN_LISTS = [
82
- "https://tokens.uniswap.org",
83
- "https://raw.githubusercontent.com/compound-finance/token-list/master/compound.tokenlist.json",
84
- "https://tokens.1inch.io"
85
- ];
86
- var logoCache = /* @__PURE__ */ new Map();
87
- var tokenInfoCache = /* @__PURE__ */ new Map();
88
- var tokenListCache = /* @__PURE__ */ new Map();
89
- var EvmLogoService = class {
90
- static async getTokenInfo(chainName, tokenAddress) {
91
- const cacheKey = `${chainName}:${tokenAddress.toLowerCase()}`;
92
- if (tokenInfoCache.has(cacheKey)) {
93
- return tokenInfoCache.get(cacheKey);
94
- }
95
- let tokenInfo = {};
64
+ async getTokenList() {
96
65
  try {
97
- tokenInfo = await this.fetchFromTokenLists(chainName, tokenAddress);
66
+ const response = await fetch(_UniswapService.UNISWAP_TOKEN_LIST_URL);
67
+ if (!response.ok) {
68
+ throw new Error(`Failed to fetch Uniswap token list: ${response.status}`);
69
+ }
70
+ const tokenList = await response.json();
71
+ return tokenList;
98
72
  } catch (error) {
73
+ throw new Error(`Failed to fetch Uniswap token list: ${error}`);
99
74
  }
100
- if (!tokenInfo.logoURI) {
101
- try {
102
- tokenInfo = { ...tokenInfo, ...await this.fetchFromDefiLlama(chainName, tokenAddress) };
103
- } catch (error) {
75
+ }
76
+ async findToken(address) {
77
+ const normalizedAddress = address.toLowerCase();
78
+ const cacheKey = `uniswap:token:${this.chainId}:${normalizedAddress}`;
79
+ const cachedToken = this.cache.get(cacheKey);
80
+ if (cachedToken) {
81
+ return cachedToken;
82
+ }
83
+ try {
84
+ const tokenList = await this.getTokenList();
85
+ const token = tokenList.tokens.find((token2) => token2.address.toLowerCase() === normalizedAddress) || null;
86
+ if (token && token.chainId !== this.chainId) {
87
+ return null;
88
+ }
89
+ if (token) {
90
+ this.cache.set(cacheKey, token, import_warps.CacheTtl.OneHour);
91
+ } else {
92
+ this.cache.set(cacheKey, null, import_warps.CacheTtl.OneMinute * 5);
104
93
  }
94
+ return token;
95
+ } catch (error) {
96
+ return null;
105
97
  }
106
- tokenInfoCache.set(cacheKey, tokenInfo);
107
- return tokenInfo;
108
98
  }
109
- static async getLogoUrl(chainName, tokenAddress, tokenName, tokenSymbol) {
110
- const cacheKey = `${chainName}:${tokenAddress.toLowerCase()}`;
111
- if (logoCache.has(cacheKey)) {
112
- return logoCache.get(cacheKey);
99
+ async getTokenMetadata(address) {
100
+ const normalizedAddress = address.toLowerCase();
101
+ const cacheKey = `uniswap:metadata:${this.chainId}:${normalizedAddress}`;
102
+ const cachedMetadata = this.cache.get(cacheKey);
103
+ if (cachedMetadata !== null) {
104
+ return cachedMetadata;
113
105
  }
114
- let logoUrl = "";
115
- const fallbackLogos = FALLBACK_LOGOS[chainName];
116
- if (fallbackLogos && fallbackLogos[tokenAddress]) {
117
- logoUrl = fallbackLogos[tokenAddress];
118
- } else {
119
- const tokenInfo = await this.getTokenInfo(chainName, tokenAddress);
120
- logoUrl = tokenInfo.logoURI || "";
121
- if (!logoUrl && (tokenSymbol || tokenName)) {
122
- try {
123
- logoUrl = await this.fetchFromTrustWallet(chainName, tokenAddress);
124
- } catch (error) {
125
- }
126
- }
106
+ const token = await this.findToken(address);
107
+ if (!token) {
108
+ this.cache.set(cacheKey, null, import_warps.CacheTtl.OneMinute * 5);
109
+ return null;
127
110
  }
128
- logoCache.set(cacheKey, logoUrl);
129
- return logoUrl;
130
- }
131
- static async fetchFromTokenLists(chainName, tokenAddress) {
132
- const chainId = CHAIN_IDS[chainName];
133
- if (!chainId) return {};
134
- const normalizedAddress = tokenAddress.toLowerCase();
135
- if (tokenListCache.has(`${chainId}:${normalizedAddress}`)) {
136
- return tokenListCache.get(`${chainId}:${normalizedAddress}`) || {};
111
+ const metadata = {
112
+ name: token.name,
113
+ symbol: token.symbol,
114
+ decimals: token.decimals,
115
+ logoUrl: token.logoURI
116
+ };
117
+ this.cache.set(cacheKey, metadata, import_warps.CacheTtl.OneHour);
118
+ return metadata;
119
+ }
120
+ async getBridgeInfo(address) {
121
+ const normalizedAddress = address.toLowerCase();
122
+ const cacheKey = `uniswap:bridge:${this.chainId}:${normalizedAddress}`;
123
+ const cachedBridgeInfo = this.cache.get(cacheKey);
124
+ if (cachedBridgeInfo !== null) {
125
+ return cachedBridgeInfo;
137
126
  }
138
- for (const tokenListUrl of TOKEN_LISTS) {
139
- try {
140
- const response = await fetch(tokenListUrl, {
141
- headers: { Accept: "application/json" },
142
- signal: AbortSignal.timeout(5e3)
143
- });
144
- if (response.ok) {
145
- const data = await response.json();
146
- const token = data.tokens.find((t) => t.chainId === chainId && t.address.toLowerCase() === normalizedAddress);
147
- if (token) {
148
- const tokenInfo = {
149
- name: token.name,
150
- symbol: token.symbol,
151
- decimals: token.decimals,
152
- logoURI: token.logoURI
153
- };
154
- tokenListCache.set(`${chainId}:${normalizedAddress}`, tokenInfo);
155
- return tokenInfo;
156
- }
157
- }
158
- } catch (error) {
159
- continue;
160
- }
127
+ const token = await this.findToken(address);
128
+ if (!token?.extensions?.bridgeInfo) {
129
+ this.cache.set(cacheKey, null, import_warps.CacheTtl.OneMinute * 5);
130
+ return null;
161
131
  }
162
- return {};
163
- }
164
- static async fetchFromDefiLlama(chainName, tokenAddress) {
165
- try {
166
- const chainMapping = {
167
- ethereum: "ethereum",
168
- arbitrum: "arbitrum",
169
- base: "base"
170
- };
171
- const chain = chainMapping[chainName];
172
- if (!chain) return {};
173
- const response = await fetch(`https://coins.llama.fi/prices/current/${chain}:${tokenAddress}`, { signal: AbortSignal.timeout(5e3) });
174
- if (response.ok) {
175
- const data = await response.json();
176
- const coinData = data.coins?.[`${chain}:${tokenAddress}`];
177
- if (coinData) {
178
- return {
179
- symbol: coinData.symbol,
180
- logoURI: coinData.logoURI
181
- };
182
- }
183
- }
184
- } catch (error) {
132
+ const bridgeInfo = {};
133
+ for (const [chainId, info] of Object.entries(token.extensions.bridgeInfo)) {
134
+ bridgeInfo[chainId] = info.tokenAddress;
185
135
  }
186
- return {};
136
+ this.cache.set(cacheKey, bridgeInfo, import_warps.CacheTtl.OneHour);
137
+ return bridgeInfo;
187
138
  }
188
- static async fetchFromTrustWallet(chainName, tokenAddress) {
189
- try {
190
- const chainMapping = {
191
- ethereum: "ethereum",
192
- arbitrum: "arbitrum",
193
- base: "base"
194
- };
195
- const chain = chainMapping[chainName];
196
- if (!chain) return "";
197
- const logoUrl = `https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/${chain}/assets/${tokenAddress}/logo.png`;
198
- const response = await fetch(logoUrl, {
199
- method: "HEAD",
200
- signal: AbortSignal.timeout(3e3)
201
- });
202
- if (response.ok) {
203
- return logoUrl;
204
- }
205
- } catch (error) {
206
- }
207
- return "";
139
+ };
140
+ _UniswapService.UNISWAP_TOKEN_LIST_URL = "https://tokens.uniswap.org";
141
+ var UniswapService = _UniswapService;
142
+
143
+ // src/tokens/arbitrum.ts
144
+ var import_warps2 = require("@vleap/warps");
145
+ var ArbitrumChain = import_warps2.WarpChainName.Arbitrum;
146
+ var ArbitrumTokens = [
147
+ {
148
+ chain: ArbitrumChain,
149
+ identifier: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8",
150
+ name: "USD Coin",
151
+ symbol: "USDC",
152
+ decimals: 6,
153
+ logoUrl: "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png"
154
+ },
155
+ {
156
+ chain: ArbitrumChain,
157
+ identifier: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
158
+ name: "Tether USD",
159
+ symbol: "USDT",
160
+ decimals: 6,
161
+ logoUrl: "https://assets.coingecko.com/coins/images/325/small/Tether.png"
162
+ },
163
+ {
164
+ chain: ArbitrumChain,
165
+ identifier: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
166
+ name: "Wrapped Ether",
167
+ symbol: "WETH",
168
+ decimals: 18,
169
+ logoUrl: "https://assets.coingecko.com/coins/images/2518/small/weth.png"
170
+ }
171
+ ];
172
+
173
+ // src/tokens/base.ts
174
+ var import_warps3 = require("@vleap/warps");
175
+ var BaseChain = import_warps3.WarpChainName.Base;
176
+ var BaseTokens = [
177
+ {
178
+ chain: BaseChain,
179
+ identifier: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
180
+ name: "USD Coin",
181
+ symbol: "USDC",
182
+ decimals: 6,
183
+ logoUrl: "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png"
184
+ },
185
+ {
186
+ chain: BaseChain,
187
+ identifier: "0x4200000000000000000000000000000000000006",
188
+ name: "Wrapped Ether",
189
+ symbol: "WETH",
190
+ decimals: 18,
191
+ logoUrl: "https://assets.coingecko.com/coins/images/2518/small/weth.png"
192
+ },
193
+ {
194
+ chain: BaseChain,
195
+ identifier: "0x808456652fdb597867f38412077A9182bf77359F",
196
+ name: "Euro",
197
+ symbol: "EURC",
198
+ decimals: 6,
199
+ logoUrl: "https://assets.coingecko.com/coins/images/26045/standard/euro.png"
200
+ },
201
+ {
202
+ chain: BaseChain,
203
+ fidentifier: "0xcbB7C0006F23900c38EB856149F799620fcb8A4a",
204
+ name: "Coinbase Wrapped BTC",
205
+ symbol: "CBETH",
206
+ decimals: 8,
207
+ logoUrl: "https://assets.coingecko.com/coins/images/7598/small/wrapped_bitcoin_wbtc.png"
208
+ }
209
+ ];
210
+
211
+ // src/tokens/base-sepolia.ts
212
+ var import_warps4 = require("@vleap/warps");
213
+ var BaseChain2 = import_warps4.WarpChainName.Base;
214
+ var BaseSepoliaTokens = [
215
+ {
216
+ chain: BaseChain2,
217
+ identifier: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
218
+ name: "USD",
219
+ symbol: "USDC",
220
+ decimals: 6,
221
+ logoUrl: "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png"
222
+ },
223
+ {
224
+ chain: BaseChain2,
225
+ identifier: "0x808456652fdb597867f38412077A9182bf77359F",
226
+ name: "Euro",
227
+ symbol: "EURC",
228
+ decimals: 6,
229
+ logoUrl: "https://assets.coingecko.com/coins/images/26045/thumb/euro-coin.png?1655394420"
230
+ },
231
+ {
232
+ chain: BaseChain2,
233
+ identifier: "0xcbB7C0006F23900c38EB856149F799620fcb8A4a",
234
+ name: "Wrapped Bitcoin",
235
+ symbol: "WBTC",
236
+ decimals: 8,
237
+ logoUrl: "https://assets.coingecko.com/coins/images/7598/small/wrapped_bitcoin_wbtc.png"
208
238
  }
209
- static clearCache() {
210
- logoCache.clear();
211
- tokenInfoCache.clear();
212
- tokenListCache.clear();
239
+ ];
240
+
241
+ // src/tokens/ethereum.ts
242
+ var import_warps5 = require("@vleap/warps");
243
+ var EthereumChain = import_warps5.WarpChainName.Ethereum;
244
+ var EthereumTokens = [
245
+ {
246
+ chain: EthereumChain,
247
+ identifier: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
248
+ name: "USD Coin",
249
+ symbol: "USDC",
250
+ decimals: 6,
251
+ logoUrl: "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png"
252
+ },
253
+ {
254
+ chain: EthereumChain,
255
+ identifier: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
256
+ name: "Tether USD",
257
+ symbol: "USDT",
258
+ decimals: 6,
259
+ logoUrl: "https://assets.coingecko.com/coins/images/325/small/Tether.png"
260
+ },
261
+ {
262
+ chain: EthereumChain,
263
+ identifier: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
264
+ name: "Wrapped Bitcoin",
265
+ symbol: "WBTC",
266
+ decimals: 8,
267
+ logoUrl: "https://assets.coingecko.com/coins/images/7598/small/wrapped_bitcoin_wbtc.png"
268
+ },
269
+ {
270
+ chain: EthereumChain,
271
+ identifier: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
272
+ name: "Wrapped Ether",
273
+ symbol: "WETH",
274
+ decimals: 18,
275
+ logoUrl: "https://assets.coingecko.com/coins/images/2518/small/weth.png"
276
+ },
277
+ {
278
+ chain: EthereumChain,
279
+ identifier: "0x6B175474E89094C44Da98b954EedeAC495271d0F",
280
+ name: "Dai Stablecoin",
281
+ symbol: "DAI",
282
+ decimals: 18,
283
+ logoUrl: "https://assets.coingecko.com/coins/images/9956/small/4943.png"
213
284
  }
214
- static getCacheSize() {
215
- return logoCache.size + tokenInfoCache.size + tokenListCache.size;
285
+ ];
286
+
287
+ // src/tokens/ethereum-sepolia.ts
288
+ var import_warps6 = require("@vleap/warps");
289
+ var EthereumChain2 = import_warps6.WarpChainName.Ethereum;
290
+ var EthereumSepoliaTokens = [
291
+ {
292
+ chain: EthereumChain2,
293
+ identifier: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",
294
+ name: "USD Coin",
295
+ symbol: "USDC",
296
+ decimals: 6,
297
+ logoUrl: "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png"
298
+ },
299
+ {
300
+ chain: EthereumChain2,
301
+ identifier: "0x7169D38820dfd117C3FA1f22a697dBA58d90BA06",
302
+ name: "Tether USD",
303
+ symbol: "USDT",
304
+ decimals: 6,
305
+ logoUrl: "https://assets.coingecko.com/coins/images/325/small/Tether.png"
306
+ },
307
+ {
308
+ chain: EthereumChain2,
309
+ identifier: "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9",
310
+ name: "Wrapped Ether",
311
+ symbol: "WETH",
312
+ decimals: 18,
313
+ logoUrl: "https://assets.coingecko.com/coins/images/2518/small/weth.png"
216
314
  }
217
- };
315
+ ];
218
316
 
219
317
  // src/tokens.ts
220
318
  var KnownTokens = {
221
319
  ethereum: {
222
- mainnet: [
223
- {
224
- id: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
225
- name: "USD Coin",
226
- symbol: "USDC",
227
- decimals: 6,
228
- logoUrl: "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png"
229
- },
230
- {
231
- id: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
232
- name: "Tether USD",
233
- symbol: "USDT",
234
- decimals: 6,
235
- logoUrl: "https://assets.coingecko.com/coins/images/325/small/Tether.png"
236
- },
237
- {
238
- id: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
239
- name: "Wrapped Bitcoin",
240
- symbol: "WBTC",
241
- decimals: 8,
242
- logoUrl: "https://assets.coingecko.com/coins/images/7598/small/wrapped_bitcoin_wbtc.png"
243
- },
244
- {
245
- id: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
246
- name: "Wrapped Ether",
247
- symbol: "WETH",
248
- decimals: 18,
249
- logoUrl: "https://assets.coingecko.com/coins/images/2518/small/weth.png"
250
- },
251
- {
252
- id: "0x6B175474E89094C44Da98b954EedeAC495271d0F",
253
- name: "Dai Stablecoin",
254
- symbol: "DAI",
255
- decimals: 18,
256
- logoUrl: "https://assets.coingecko.com/coins/images/9956/small/4943.png"
257
- }
258
- ],
259
- testnet: [
260
- {
261
- id: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",
262
- name: "USD Coin",
263
- symbol: "USDC",
264
- decimals: 6,
265
- logoUrl: "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png"
266
- },
267
- {
268
- id: "0x7169D38820dfd117C3FA1f22a697dBA58d90BA06",
269
- name: "Tether USD",
270
- symbol: "USDT",
271
- decimals: 6,
272
- logoUrl: "https://assets.coingecko.com/coins/images/325/small/Tether.png"
273
- },
274
- {
275
- id: "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9",
276
- name: "Wrapped Ether",
277
- symbol: "WETH",
278
- decimals: 18,
279
- logoUrl: "https://assets.coingecko.com/coins/images/2518/small/weth.png"
280
- }
281
- ]
282
- },
283
- arbitrum: {
284
- mainnet: [
285
- {
286
- id: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8",
287
- name: "USD Coin",
288
- symbol: "USDC",
289
- decimals: 6,
290
- logoUrl: "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png"
291
- },
292
- {
293
- id: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
294
- name: "Tether USD",
295
- symbol: "USDT",
296
- decimals: 6,
297
- logoUrl: "https://assets.coingecko.com/coins/images/325/small/Tether.png"
298
- },
299
- {
300
- id: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
301
- name: "Wrapped Ether",
302
- symbol: "WETH",
303
- decimals: 18,
304
- logoUrl: "https://assets.coingecko.com/coins/images/2518/small/weth.png"
305
- }
306
- ]
320
+ mainnet: EthereumTokens,
321
+ testnet: EthereumSepoliaTokens,
322
+ devnet: EthereumSepoliaTokens
307
323
  },
308
324
  base: {
309
- mainnet: [
310
- {
311
- id: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
312
- name: "USD Coin",
313
- symbol: "USDC",
314
- decimals: 6,
315
- logoUrl: "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png"
316
- },
317
- {
318
- id: "0x4200000000000000000000000000000000000006",
319
- name: "Wrapped Ether",
320
- symbol: "WETH",
321
- decimals: 18,
322
- logoUrl: "https://assets.coingecko.com/coins/images/2518/small/weth.png"
323
- },
324
- {
325
- id: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
326
- name: "USD Coin",
327
- symbol: "USDC",
328
- decimals: 6,
329
- logoUrl: "https://assets.coingecko.com/coins/images/6319/small/USD_Coin_icon.png"
330
- },
331
- {
332
- id: "0x808456652fdb597867f38412077A9182bf77359F",
333
- name: "Euro Coin",
334
- symbol: "EURC",
335
- decimals: 6,
336
- logoUrl: "https://assets.coingecko.com/coins/images/26045/standard/euro.png"
337
- },
338
- {
339
- id: "0xcbB7C0006F23900c38EB856149F799620fcb8A4a",
340
- name: "Coinbase Wrapped BTC",
341
- symbol: "CBETH",
342
- decimals: 8,
343
- logoUrl: "https://assets.coingecko.com/coins/images/7598/small/wrapped_bitcoin_wbtc.png"
344
- }
345
- ]
325
+ mainnet: BaseTokens,
326
+ testnet: BaseSepoliaTokens,
327
+ devnet: BaseSepoliaTokens
328
+ },
329
+ arbitrum: {
330
+ mainnet: ArbitrumTokens
346
331
  }
347
332
  };
348
- var findKnownTokenById = (chainName, id, env = "mainnet") => {
349
- const chainTokens = KnownTokens[chainName]?.[env] || [];
350
- return chainTokens.find((token) => token.id === id) || null;
333
+ var findKnownTokenById = (chain, env, id) => {
334
+ const chainTokens = KnownTokens[chain]?.[env] || [];
335
+ return chainTokens.find((token) => token.identifier === id) || null;
351
336
  };
352
337
  var getKnownTokensForChain = (chainName, env = "mainnet") => {
353
338
  return KnownTokens[chainName]?.[env] || [];
@@ -365,9 +350,11 @@ var WarpEvmDataLoader = class {
365
350
  constructor(config, chain) {
366
351
  this.config = config;
367
352
  this.chain = chain;
368
- const apiUrl = (0, import_warps.getProviderUrl)(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl);
353
+ const apiUrl = (0, import_warps7.getProviderUrl)(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl);
369
354
  const network = new import_ethers.ethers.Network(this.chain.name, parseInt(this.chain.chainId));
370
355
  this.provider = new import_ethers.ethers.JsonRpcProvider(apiUrl, network);
356
+ this.cache = new import_warps7.WarpCache(config.cache?.type);
357
+ this.uniswapService = new UniswapService(this.cache, parseInt(this.chain.chainId));
371
358
  }
372
359
  async getAccount(address) {
373
360
  const balance = await this.provider.getBalance(address);
@@ -383,14 +370,14 @@ var WarpEvmDataLoader = class {
383
370
  let assets = account.balance > 0 ? [{ ...this.chain.nativeToken, amount: account.balance }] : [];
384
371
  for (const tokenBalance of tokenBalances) {
385
372
  if (tokenBalance.balance > 0n) {
386
- const logoUrl = tokenBalance.metadata.logoUrl || await this.getLogoUrl(tokenBalance);
387
373
  assets.push({
388
374
  chain: this.chain.name,
389
375
  identifier: tokenBalance.tokenAddress,
390
- name: tokenBalance.metadata.name,
376
+ name: tokenBalance.name,
377
+ symbol: tokenBalance.symbol,
391
378
  amount: tokenBalance.balance,
392
- decimals: tokenBalance.metadata.decimals,
393
- logoUrl: logoUrl || ""
379
+ decimals: tokenBalance.decimals,
380
+ logoUrl: tokenBalance.logoUrl || ""
394
381
  });
395
382
  }
396
383
  }
@@ -398,16 +385,38 @@ var WarpEvmDataLoader = class {
398
385
  }
399
386
  async getAsset(identifier) {
400
387
  try {
388
+ if (identifier === this.chain.nativeToken.identifier) {
389
+ return this.chain.nativeToken;
390
+ }
391
+ const cacheKey = import_warps7.WarpCacheKey.Asset(this.config.env, this.chain.name, identifier);
392
+ const cachedAsset = this.cache.get(cacheKey);
393
+ if (cachedAsset) {
394
+ return cachedAsset;
395
+ }
396
+ const knownToken = findKnownTokenById(this.chain.name, this.config.env, identifier);
397
+ if (knownToken) {
398
+ return {
399
+ chain: this.chain.name,
400
+ identifier,
401
+ name: knownToken.name,
402
+ symbol: knownToken.symbol,
403
+ amount: 0n,
404
+ decimals: knownToken.decimals,
405
+ logoUrl: knownToken.logoUrl
406
+ };
407
+ }
401
408
  const metadata = await this.getTokenMetadata(identifier);
402
- if (!metadata) return null;
403
- return {
409
+ const asset = {
404
410
  chain: this.chain.name,
405
411
  identifier,
406
412
  name: metadata.name,
413
+ symbol: metadata.symbol,
407
414
  amount: 0n,
408
415
  decimals: metadata.decimals,
409
416
  logoUrl: metadata.logoUrl || ""
410
417
  };
418
+ this.cache.set(cacheKey, asset, import_warps7.CacheTtl.OneHour);
419
+ return asset;
411
420
  } catch (error) {
412
421
  return null;
413
422
  }
@@ -449,40 +458,18 @@ var WarpEvmDataLoader = class {
449
458
  return [];
450
459
  }
451
460
  async getERC20TokenBalances(address) {
452
- const tokenBalances = [];
453
- const env = this.config.env === "devnet" ? "testnet" : this.config.env;
454
- const knownTokens = getKnownTokensForChain(this.chain.name, env);
455
- for (const token of knownTokens) {
456
- try {
457
- const balance = await this.getTokenBalance(address, token.id);
458
- if (balance > 0n) {
459
- tokenBalances.push({
460
- tokenAddress: token.id,
461
- balance,
462
- metadata: token
463
- });
464
- }
465
- } catch (error) {
466
- }
467
- }
468
- const additionalTokens = await this.detectTokensFromEvents(address);
469
- for (const tokenAddress of additionalTokens) {
470
- if (!findKnownTokenById(this.chain.name, tokenAddress, env)) {
471
- try {
472
- const metadata = await this.getTokenMetadata(tokenAddress);
473
- const balance = await this.getTokenBalance(address, tokenAddress);
474
- if (balance > 0n) {
475
- tokenBalances.push({
476
- tokenAddress,
477
- balance,
478
- metadata
479
- });
480
- }
481
- } catch (error) {
482
- }
483
- }
484
- }
485
- return tokenBalances;
461
+ const env = this.config.env === "mainnet" ? "mainnet" : "testnet";
462
+ const tokens = getKnownTokensForChain(this.chain.name, env);
463
+ const balanceReqs = tokens.map((token) => this.getTokenBalance(address, token.identifier).catch(() => 0n));
464
+ const balances = await Promise.all(balanceReqs);
465
+ return balances.map((balance, index) => ({ balance, token: tokens[index] })).filter(({ balance }) => balance > 0n).map(({ balance, token }) => ({
466
+ tokenAddress: token.identifier,
467
+ balance,
468
+ name: token.name,
469
+ symbol: token.symbol,
470
+ decimals: token.decimals || 18,
471
+ logoUrl: token.logoUrl || ""
472
+ }));
486
473
  }
487
474
  async getTokenBalance(address, tokenAddress) {
488
475
  const contract = new import_ethers.ethers.Contract(tokenAddress, ERC20_ABI, this.provider);
@@ -490,59 +477,27 @@ var WarpEvmDataLoader = class {
490
477
  return balance;
491
478
  }
492
479
  async getTokenMetadata(tokenAddress) {
493
- const tokenInfo = await EvmLogoService.getTokenInfo(this.chain.name, tokenAddress);
494
- if (tokenInfo.name && tokenInfo.symbol && tokenInfo.decimals !== void 0) {
495
- return {
496
- name: tokenInfo.name,
497
- symbol: tokenInfo.symbol,
498
- decimals: tokenInfo.decimals,
499
- logoUrl: tokenInfo.logoURI
500
- };
480
+ const uniswapMetadata = await this.uniswapService.getTokenMetadata(tokenAddress);
481
+ if (uniswapMetadata) {
482
+ return uniswapMetadata;
501
483
  }
502
484
  const contract = new import_ethers.ethers.Contract(tokenAddress, ERC20_ABI, this.provider);
503
485
  const [name, symbol, decimals] = await Promise.all([
504
- contract.name().catch(() => tokenInfo.name || "Unknown Token"),
505
- contract.symbol().catch(() => tokenInfo.symbol || "UNKNOWN"),
506
- contract.decimals().catch(() => tokenInfo.decimals || 18)
486
+ contract.name().catch(() => "Unknown Token"),
487
+ contract.symbol().catch(() => "UNKNOWN"),
488
+ contract.decimals().catch(() => 18)
507
489
  ]);
508
490
  return {
509
- name: name || tokenInfo.name || "Unknown Token",
510
- symbol: symbol || tokenInfo.symbol || "UNKNOWN",
511
- decimals: decimals || tokenInfo.decimals || 18,
512
- logoUrl: tokenInfo.logoURI
491
+ name: name || "Unknown Token",
492
+ symbol: symbol || "UNKNOWN",
493
+ decimals: decimals || 18,
494
+ logoUrl: ""
513
495
  };
514
496
  }
515
- async detectTokensFromEvents(address) {
516
- try {
517
- const currentBlock = await this.provider.getBlockNumber();
518
- const fromBlock = Math.max(0, currentBlock - 1e4);
519
- const filter = {
520
- fromBlock,
521
- toBlock: currentBlock,
522
- topics: [import_ethers.ethers.id("Transfer(address,address,uint256)"), null, import_ethers.ethers.zeroPadValue(address, 32)]
523
- };
524
- const logs = await this.provider.getLogs(filter);
525
- const tokenAddresses = /* @__PURE__ */ new Set();
526
- for (const log of logs) {
527
- tokenAddresses.add(log.address);
528
- }
529
- return Array.from(tokenAddresses);
530
- } catch (error) {
531
- return [];
532
- }
533
- }
534
- async getLogoUrl(tokenBalance) {
535
- return await EvmLogoService.getLogoUrl(
536
- this.chain.name,
537
- tokenBalance.tokenAddress,
538
- tokenBalance.metadata.name,
539
- tokenBalance.metadata.symbol
540
- );
541
- }
542
497
  };
543
498
 
544
499
  // src/WarpEvmExecutor.ts
545
- var import_warps4 = require("@vleap/warps");
500
+ var import_warps10 = require("@vleap/warps");
546
501
  var import_ethers4 = require("ethers");
547
502
 
548
503
  // src/constants.ts
@@ -621,16 +576,16 @@ var ExplorerUrls = {
621
576
  };
622
577
 
623
578
  // src/WarpEvmResults.ts
624
- var import_warps3 = require("@vleap/warps");
579
+ var import_warps9 = require("@vleap/warps");
625
580
  var import_ethers3 = require("ethers");
626
581
 
627
582
  // src/WarpEvmSerializer.ts
628
- var import_warps2 = require("@vleap/warps");
583
+ var import_warps8 = require("@vleap/warps");
629
584
  var import_ethers2 = require("ethers");
630
- var SplitParamsRegex = new RegExp(`${import_warps2.WarpConstants.ArgParamsSeparator}(.*)`);
585
+ var SplitParamsRegex = new RegExp(`${import_warps8.WarpConstants.ArgParamsSeparator}(.*)`);
631
586
  var WarpEvmSerializer = class {
632
587
  constructor() {
633
- this.coreSerializer = new import_warps2.WarpSerializer();
588
+ this.coreSerializer = new import_warps8.WarpSerializer();
634
589
  }
635
590
  typedToString(value) {
636
591
  if (typeof value === "string") {
@@ -659,9 +614,9 @@ var WarpEvmSerializer = class {
659
614
  }
660
615
  if (Array.isArray(value)) {
661
616
  if (value.length === 0) return `list:string:`;
662
- const types = value.map((item) => this.typedToString(item).split(import_warps2.WarpConstants.ArgParamsSeparator)[0]);
617
+ const types = value.map((item) => this.typedToString(item).split(import_warps8.WarpConstants.ArgParamsSeparator)[0]);
663
618
  const type = types[0];
664
- const values = value.map((item) => this.typedToString(item).split(import_warps2.WarpConstants.ArgParamsSeparator)[1]);
619
+ const values = value.map((item) => this.typedToString(item).split(import_warps8.WarpConstants.ArgParamsSeparator)[1]);
665
620
  return `list:${type}:${values.join(",")}`;
666
621
  }
667
622
  if (value === null || value === void 0) {
@@ -671,8 +626,8 @@ var WarpEvmSerializer = class {
671
626
  }
672
627
  typedToNative(value) {
673
628
  const stringValue = this.typedToString(value);
674
- const [type, ...valueParts] = stringValue.split(import_warps2.WarpConstants.ArgParamsSeparator);
675
- const nativeValue = valueParts.join(import_warps2.WarpConstants.ArgParamsSeparator);
629
+ const [type, ...valueParts] = stringValue.split(import_warps8.WarpConstants.ArgParamsSeparator);
630
+ const nativeValue = valueParts.join(import_warps8.WarpConstants.ArgParamsSeparator);
676
631
  return [type, this.parseNativeValue(type, nativeValue)];
677
632
  }
678
633
  nativeToTyped(type, value) {
@@ -723,7 +678,7 @@ var WarpEvmSerializer = class {
723
678
  }
724
679
  }
725
680
  stringToTyped(value) {
726
- const parts = value.split(import_warps2.WarpConstants.ArgParamsSeparator, 2);
681
+ const parts = value.split(import_warps8.WarpConstants.ArgParamsSeparator, 2);
727
682
  if (parts.length < 2) {
728
683
  return value;
729
684
  }
@@ -783,11 +738,11 @@ var WarpEvmResults = class {
783
738
  this.chain = chain;
784
739
  this.serializer = new WarpEvmSerializer();
785
740
  if (this.chain) {
786
- const apiUrl = (0, import_warps3.getProviderUrl)(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl);
741
+ const apiUrl = (0, import_warps9.getProviderUrl)(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl);
787
742
  const network = new import_ethers3.ethers.Network(this.chain.name, parseInt(this.chain.chainId));
788
743
  this.provider = new import_ethers3.ethers.JsonRpcProvider(apiUrl, network);
789
744
  } else {
790
- const apiUrl = (0, import_warps3.getProviderUrl)(this.config, "ethereum", this.config.env, "https://ethereum-rpc.publicnode.com");
745
+ const apiUrl = (0, import_warps9.getProviderUrl)(this.config, "ethereum", this.config.env, "https://ethereum-rpc.publicnode.com");
791
746
  const network = new import_ethers3.ethers.Network("ethereum", 1);
792
747
  this.provider = new import_ethers3.ethers.JsonRpcProvider(apiUrl, network);
793
748
  }
@@ -836,8 +791,8 @@ var WarpEvmResults = class {
836
791
  return value;
837
792
  };
838
793
  for (const [key, path] of Object.entries(warp.results)) {
839
- if (path.startsWith(import_warps3.WarpConstants.Transform.Prefix)) continue;
840
- const currentActionIndex = (0, import_warps3.parseResultsOutIndex)(path);
794
+ if (path.startsWith(import_warps9.WarpConstants.Transform.Prefix)) continue;
795
+ const currentActionIndex = (0, import_warps9.parseResultsOutIndex)(path);
841
796
  if (currentActionIndex !== null && currentActionIndex !== actionIndex) {
842
797
  results[key] = null;
843
798
  continue;
@@ -848,7 +803,7 @@ var WarpEvmResults = class {
848
803
  results[key] = path;
849
804
  }
850
805
  }
851
- return { values, valuesRaw, results: await (0, import_warps3.evaluateResultsCommon)(warp, results, actionIndex, inputs) };
806
+ return { values, valuesRaw, results: await (0, import_warps9.evaluateResultsCommon)(warp, results, actionIndex, inputs) };
852
807
  }
853
808
  async getTransactionStatus(txHash) {
854
809
  try {
@@ -880,13 +835,13 @@ var WarpEvmExecutor = class {
880
835
  this.config = config;
881
836
  this.chain = chain;
882
837
  this.serializer = new WarpEvmSerializer();
883
- const apiUrl = (0, import_warps4.getProviderUrl)(this.config, chain.name, this.config.env, this.chain.defaultApiUrl);
838
+ const apiUrl = (0, import_warps10.getProviderUrl)(this.config, chain.name, this.config.env, this.chain.defaultApiUrl);
884
839
  const network = new import_ethers4.ethers.Network(this.chain.name, parseInt(this.chain.chainId));
885
840
  this.provider = new import_ethers4.ethers.JsonRpcProvider(apiUrl, network);
886
841
  this.results = new WarpEvmResults(config, this.chain);
887
842
  }
888
843
  async createTransaction(executable) {
889
- const action = (0, import_warps4.getWarpActionByIndex)(executable.warp, executable.action);
844
+ const action = (0, import_warps10.getWarpActionByIndex)(executable.warp, executable.action);
890
845
  let tx = null;
891
846
  if (action.type === "transfer") {
892
847
  tx = await this.createTransferTransaction(executable);
@@ -919,7 +874,7 @@ var WarpEvmExecutor = class {
919
874
  async createContractCallTransaction(executable) {
920
875
  const userWallet = this.config.user?.wallets?.[executable.chain.name];
921
876
  if (!userWallet) throw new Error("WarpEvmExecutor: createContractCall - user address not set");
922
- const action = (0, import_warps4.getWarpActionByIndex)(executable.warp, executable.action);
877
+ const action = (0, import_warps10.getWarpActionByIndex)(executable.warp, executable.action);
923
878
  if (!action || !("func" in action) || !action.func) {
924
879
  throw new Error("WarpEvmExecutor: Contract action must have a function name");
925
880
  }
@@ -984,7 +939,7 @@ var WarpEvmExecutor = class {
984
939
  return this.estimateGasAndSetDefaults(tx, userWallet);
985
940
  }
986
941
  async executeQuery(executable) {
987
- const action = (0, import_warps4.getWarpActionByIndex)(executable.warp, executable.action);
942
+ const action = (0, import_warps10.getWarpActionByIndex)(executable.warp, executable.action);
988
943
  if (action.type !== "query") {
989
944
  throw new Error(`WarpEvmExecutor: Invalid action type for executeQuery: ${action.type}`);
990
945
  }
@@ -1009,7 +964,7 @@ var WarpEvmExecutor = class {
1009
964
  executable.action,
1010
965
  executable.resolvedInputs
1011
966
  );
1012
- const next = (0, import_warps4.getNextInfo)(this.config, [], executable.warp, executable.action, results);
967
+ const next = (0, import_warps10.getNextInfo)(this.config, [], executable.warp, executable.action, results);
1013
968
  return {
1014
969
  success: isSuccess,
1015
970
  warp: executable.warp,
@@ -1021,7 +976,7 @@ var WarpEvmExecutor = class {
1021
976
  values,
1022
977
  valuesRaw,
1023
978
  results,
1024
- messages: (0, import_warps4.applyResultsToMessages)(executable.warp, results)
979
+ messages: (0, import_warps10.applyResultsToMessages)(executable.warp, results)
1025
980
  };
1026
981
  } catch (error) {
1027
982
  return {
@@ -1039,9 +994,6 @@ var WarpEvmExecutor = class {
1039
994
  };
1040
995
  }
1041
996
  }
1042
- async preprocessInput(chain, input, type, value) {
1043
- return input;
1044
- }
1045
997
  async estimateGasAndSetDefaults(tx, from) {
1046
998
  try {
1047
999
  const gasEstimate = await this.provider.estimateGas({
@@ -1258,15 +1210,16 @@ var createEvmAdapter = (chainName, chainPrefix, chainInfos) => {
1258
1210
 
1259
1211
  // src/chains/arbitrum.ts
1260
1212
  var NativeTokenArb = {
1261
- chain: import_warps5.WarpChainName.Arbitrum,
1213
+ chain: import_warps11.WarpChainName.Arbitrum,
1262
1214
  identifier: "ARB",
1263
- name: "ARB",
1215
+ symbol: "ARB",
1216
+ name: "Arbitrum",
1264
1217
  decimals: 18,
1265
1218
  logoUrl: "https://vleap.ai/images/tokens/arb.svg"
1266
1219
  };
1267
- var getArbitrumAdapter = createEvmAdapter(import_warps5.WarpChainName.Arbitrum, "arb", {
1220
+ var getArbitrumAdapter = createEvmAdapter(import_warps11.WarpChainName.Arbitrum, "arb", {
1268
1221
  mainnet: {
1269
- name: import_warps5.WarpChainName.Arbitrum,
1222
+ name: import_warps11.WarpChainName.Arbitrum,
1270
1223
  displayName: "Arbitrum",
1271
1224
  chainId: "42161",
1272
1225
  blockTime: 1e3,
@@ -1275,7 +1228,7 @@ var getArbitrumAdapter = createEvmAdapter(import_warps5.WarpChainName.Arbitrum,
1275
1228
  nativeToken: NativeTokenArb
1276
1229
  },
1277
1230
  testnet: {
1278
- name: import_warps5.WarpChainName.Arbitrum,
1231
+ name: import_warps11.WarpChainName.Arbitrum,
1279
1232
  displayName: "Arbitrum Sepolia",
1280
1233
  chainId: "421614",
1281
1234
  blockTime: 1e3,
@@ -1284,7 +1237,7 @@ var getArbitrumAdapter = createEvmAdapter(import_warps5.WarpChainName.Arbitrum,
1284
1237
  nativeToken: NativeTokenArb
1285
1238
  },
1286
1239
  devnet: {
1287
- name: import_warps5.WarpChainName.Arbitrum,
1240
+ name: import_warps11.WarpChainName.Arbitrum,
1288
1241
  displayName: "Arbitrum Sepolia",
1289
1242
  chainId: "421614",
1290
1243
  blockTime: 1e3,
@@ -1295,17 +1248,18 @@ var getArbitrumAdapter = createEvmAdapter(import_warps5.WarpChainName.Arbitrum,
1295
1248
  });
1296
1249
 
1297
1250
  // src/chains/base.ts
1298
- var import_warps6 = require("@vleap/warps");
1251
+ var import_warps12 = require("@vleap/warps");
1299
1252
  var NativeTokenBase = {
1300
- chain: import_warps6.WarpChainName.Base,
1253
+ chain: import_warps12.WarpChainName.Base,
1301
1254
  identifier: "ETH",
1302
- name: "ETH",
1255
+ name: "Ether",
1256
+ symbol: "ETH",
1303
1257
  decimals: 18,
1304
1258
  logoUrl: "https://vleap.ai/images/tokens/eth.svg"
1305
1259
  };
1306
- var getBaseAdapter = createEvmAdapter(import_warps6.WarpChainName.Base, "base", {
1260
+ var getBaseAdapter = createEvmAdapter(import_warps12.WarpChainName.Base, "base", {
1307
1261
  mainnet: {
1308
- name: import_warps6.WarpChainName.Base,
1262
+ name: import_warps12.WarpChainName.Base,
1309
1263
  displayName: "Base",
1310
1264
  chainId: "8453",
1311
1265
  blockTime: 2e3,
@@ -1314,7 +1268,7 @@ var getBaseAdapter = createEvmAdapter(import_warps6.WarpChainName.Base, "base",
1314
1268
  nativeToken: NativeTokenBase
1315
1269
  },
1316
1270
  testnet: {
1317
- name: import_warps6.WarpChainName.Base,
1271
+ name: import_warps12.WarpChainName.Base,
1318
1272
  displayName: "Base Sepolia",
1319
1273
  chainId: "84532",
1320
1274
  blockTime: 2e3,
@@ -1323,7 +1277,7 @@ var getBaseAdapter = createEvmAdapter(import_warps6.WarpChainName.Base, "base",
1323
1277
  nativeToken: NativeTokenBase
1324
1278
  },
1325
1279
  devnet: {
1326
- name: import_warps6.WarpChainName.Base,
1280
+ name: import_warps12.WarpChainName.Base,
1327
1281
  displayName: "Base Sepolia",
1328
1282
  chainId: "84532",
1329
1283
  blockTime: 2e3,
@@ -1334,20 +1288,21 @@ var getBaseAdapter = createEvmAdapter(import_warps6.WarpChainName.Base, "base",
1334
1288
  });
1335
1289
 
1336
1290
  // src/chains/combined.ts
1337
- var import_warps8 = require("@vleap/warps");
1291
+ var import_warps14 = require("@vleap/warps");
1338
1292
 
1339
1293
  // src/chains/ethereum.ts
1340
- var import_warps7 = require("@vleap/warps");
1294
+ var import_warps13 = require("@vleap/warps");
1341
1295
  var NativeTokenEth = {
1342
- chain: import_warps7.WarpChainName.Ethereum,
1296
+ chain: import_warps13.WarpChainName.Ethereum,
1343
1297
  identifier: "ETH",
1344
- name: "ETH",
1298
+ symbol: "ETH",
1299
+ name: "Ether",
1345
1300
  decimals: 18,
1346
1301
  logoUrl: "https://vleap.ai/images/tokens/eth.svg"
1347
1302
  };
1348
- var getEthereumAdapter = createEvmAdapter(import_warps7.WarpChainName.Ethereum, "eth", {
1303
+ var getEthereumAdapter = createEvmAdapter(import_warps13.WarpChainName.Ethereum, "eth", {
1349
1304
  mainnet: {
1350
- name: import_warps7.WarpChainName.Ethereum,
1305
+ name: import_warps13.WarpChainName.Ethereum,
1351
1306
  displayName: "Ethereum Mainnet",
1352
1307
  chainId: "1",
1353
1308
  blockTime: 12e3,
@@ -1356,7 +1311,7 @@ var getEthereumAdapter = createEvmAdapter(import_warps7.WarpChainName.Ethereum,
1356
1311
  nativeToken: NativeTokenEth
1357
1312
  },
1358
1313
  testnet: {
1359
- name: import_warps7.WarpChainName.Ethereum,
1314
+ name: import_warps13.WarpChainName.Ethereum,
1360
1315
  displayName: "Ethereum Sepolia",
1361
1316
  chainId: "11155111",
1362
1317
  blockTime: 12e3,
@@ -1365,7 +1320,7 @@ var getEthereumAdapter = createEvmAdapter(import_warps7.WarpChainName.Ethereum,
1365
1320
  nativeToken: NativeTokenEth
1366
1321
  },
1367
1322
  devnet: {
1368
- name: import_warps7.WarpChainName.Ethereum,
1323
+ name: import_warps13.WarpChainName.Ethereum,
1369
1324
  displayName: "Ethereum Sepolia",
1370
1325
  chainId: "11155111",
1371
1326
  blockTime: 12e3,
@@ -1381,18 +1336,19 @@ var getAllEvmAdapters = (config, fallback) => [
1381
1336
  getArbitrumAdapter(config, fallback),
1382
1337
  getBaseAdapter(config, fallback)
1383
1338
  ];
1384
- var getAllEvmChainNames = () => [import_warps8.WarpChainName.Ethereum, import_warps8.WarpChainName.Base, import_warps8.WarpChainName.Arbitrum];
1339
+ var getAllEvmChainNames = () => [import_warps14.WarpChainName.Ethereum, import_warps14.WarpChainName.Base, import_warps14.WarpChainName.Arbitrum];
1385
1340
  // Annotate the CommonJS export names for ESM import in node:
1386
1341
  0 && (module.exports = {
1387
1342
  ArbitrumExplorers,
1388
1343
  BaseExplorers,
1389
1344
  EthereumExplorers,
1390
1345
  EvmExplorers,
1391
- EvmLogoService,
1392
1346
  ExplorerUrls,
1347
+ KnownTokens,
1393
1348
  NativeTokenArb,
1394
1349
  NativeTokenBase,
1395
1350
  NativeTokenEth,
1351
+ UniswapService,
1396
1352
  WarpEvmConstants,
1397
1353
  WarpEvmDataLoader,
1398
1354
  WarpEvmExecutor,
@@ -1400,10 +1356,12 @@ var getAllEvmChainNames = () => [import_warps8.WarpChainName.Ethereum, import_wa
1400
1356
  WarpEvmResults,
1401
1357
  WarpEvmSerializer,
1402
1358
  createEvmAdapter,
1359
+ findKnownTokenById,
1403
1360
  getAllEvmAdapters,
1404
1361
  getAllEvmChainNames,
1405
1362
  getArbitrumAdapter,
1406
1363
  getBaseAdapter,
1407
- getEthereumAdapter
1364
+ getEthereumAdapter,
1365
+ getKnownTokensForChain
1408
1366
  });
1409
1367
  //# sourceMappingURL=index.js.map