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