@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.d.cts +46 -20
- package/dist/index.d.ts +46 -20
- package/dist/index.js +366 -408
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +343 -385
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
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
|
|
51
|
+
var import_warps11 = require("@vleap/warps");
|
|
49
52
|
|
|
50
53
|
// src/WarpEvmDataLoader.ts
|
|
51
|
-
var
|
|
54
|
+
var import_warps7 = require("@vleap/warps");
|
|
52
55
|
var import_ethers = require("ethers");
|
|
53
56
|
|
|
54
|
-
// src/
|
|
55
|
-
var
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
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
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
-
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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
|
-
|
|
163
|
-
|
|
164
|
-
|
|
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
|
-
|
|
136
|
+
this.cache.set(cacheKey, bridgeInfo, import_warps.CacheTtl.OneHour);
|
|
137
|
+
return bridgeInfo;
|
|
187
138
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
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
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
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
|
-
|
|
215
|
-
|
|
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
|
-
|
|
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
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
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 = (
|
|
349
|
-
const chainTokens = KnownTokens[
|
|
350
|
-
return chainTokens.find((token) => token.
|
|
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,
|
|
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.
|
|
376
|
+
name: tokenBalance.name,
|
|
377
|
+
symbol: tokenBalance.symbol,
|
|
391
378
|
amount: tokenBalance.balance,
|
|
392
|
-
decimals: tokenBalance.
|
|
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
|
-
|
|
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
|
|
453
|
-
const
|
|
454
|
-
const
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
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
|
|
494
|
-
if (
|
|
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(() =>
|
|
505
|
-
contract.symbol().catch(() =>
|
|
506
|
-
contract.decimals().catch(() =>
|
|
486
|
+
contract.name().catch(() => "Unknown Token"),
|
|
487
|
+
contract.symbol().catch(() => "UNKNOWN"),
|
|
488
|
+
contract.decimals().catch(() => 18)
|
|
507
489
|
]);
|
|
508
490
|
return {
|
|
509
|
-
name: name ||
|
|
510
|
-
symbol: symbol ||
|
|
511
|
-
decimals: decimals ||
|
|
512
|
-
logoUrl:
|
|
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
|
|
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
|
|
579
|
+
var import_warps9 = require("@vleap/warps");
|
|
625
580
|
var import_ethers3 = require("ethers");
|
|
626
581
|
|
|
627
582
|
// src/WarpEvmSerializer.ts
|
|
628
|
-
var
|
|
583
|
+
var import_warps8 = require("@vleap/warps");
|
|
629
584
|
var import_ethers2 = require("ethers");
|
|
630
|
-
var SplitParamsRegex = new RegExp(`${
|
|
585
|
+
var SplitParamsRegex = new RegExp(`${import_warps8.WarpConstants.ArgParamsSeparator}(.*)`);
|
|
631
586
|
var WarpEvmSerializer = class {
|
|
632
587
|
constructor() {
|
|
633
|
-
this.coreSerializer = new
|
|
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(
|
|
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(
|
|
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(
|
|
675
|
-
const nativeValue = valueParts.join(
|
|
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(
|
|
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,
|
|
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,
|
|
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(
|
|
840
|
-
const currentActionIndex = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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:
|
|
1213
|
+
chain: import_warps11.WarpChainName.Arbitrum,
|
|
1262
1214
|
identifier: "ARB",
|
|
1263
|
-
|
|
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(
|
|
1220
|
+
var getArbitrumAdapter = createEvmAdapter(import_warps11.WarpChainName.Arbitrum, "arb", {
|
|
1268
1221
|
mainnet: {
|
|
1269
|
-
name:
|
|
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:
|
|
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:
|
|
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
|
|
1251
|
+
var import_warps12 = require("@vleap/warps");
|
|
1299
1252
|
var NativeTokenBase = {
|
|
1300
|
-
chain:
|
|
1253
|
+
chain: import_warps12.WarpChainName.Base,
|
|
1301
1254
|
identifier: "ETH",
|
|
1302
|
-
name: "
|
|
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(
|
|
1260
|
+
var getBaseAdapter = createEvmAdapter(import_warps12.WarpChainName.Base, "base", {
|
|
1307
1261
|
mainnet: {
|
|
1308
|
-
name:
|
|
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:
|
|
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:
|
|
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
|
|
1291
|
+
var import_warps14 = require("@vleap/warps");
|
|
1338
1292
|
|
|
1339
1293
|
// src/chains/ethereum.ts
|
|
1340
|
-
var
|
|
1294
|
+
var import_warps13 = require("@vleap/warps");
|
|
1341
1295
|
var NativeTokenEth = {
|
|
1342
|
-
chain:
|
|
1296
|
+
chain: import_warps13.WarpChainName.Ethereum,
|
|
1343
1297
|
identifier: "ETH",
|
|
1344
|
-
|
|
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(
|
|
1303
|
+
var getEthereumAdapter = createEvmAdapter(import_warps13.WarpChainName.Ethereum, "eth", {
|
|
1349
1304
|
mainnet: {
|
|
1350
|
-
name:
|
|
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:
|
|
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:
|
|
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 = () => [
|
|
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
|