@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.d.cts +46 -31
- package/dist/index.d.ts +46 -31
- package/dist/index.js +358 -406
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +339 -384
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
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
|
|
51
|
+
var import_warps11 = require("@vleap/warps");
|
|
52
52
|
|
|
53
53
|
// src/WarpEvmDataLoader.ts
|
|
54
|
-
var
|
|
54
|
+
var import_warps7 = require("@vleap/warps");
|
|
55
55
|
var import_ethers = require("ethers");
|
|
56
56
|
|
|
57
|
-
// src/
|
|
58
|
-
var
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
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
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
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
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
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
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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
|
-
|
|
136
|
+
this.cache.set(cacheKey, bridgeInfo, import_warps.CacheTtl.OneHour);
|
|
137
|
+
return bridgeInfo;
|
|
190
138
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
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
|
-
|
|
218
|
-
|
|
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
|
-
|
|
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
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
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 = (
|
|
352
|
-
const chainTokens = KnownTokens[
|
|
353
|
-
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;
|
|
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,
|
|
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.
|
|
376
|
+
name: tokenBalance.name,
|
|
377
|
+
symbol: tokenBalance.symbol,
|
|
394
378
|
amount: tokenBalance.balance,
|
|
395
|
-
decimals: tokenBalance.
|
|
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
|
-
|
|
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
|
|
456
|
-
const
|
|
457
|
-
const
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
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
|
|
497
|
-
if (
|
|
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(() =>
|
|
508
|
-
contract.symbol().catch(() =>
|
|
509
|
-
contract.decimals().catch(() =>
|
|
486
|
+
contract.name().catch(() => "Unknown Token"),
|
|
487
|
+
contract.symbol().catch(() => "UNKNOWN"),
|
|
488
|
+
contract.decimals().catch(() => 18)
|
|
510
489
|
]);
|
|
511
490
|
return {
|
|
512
|
-
name: name ||
|
|
513
|
-
symbol: symbol ||
|
|
514
|
-
decimals: decimals ||
|
|
515
|
-
logoUrl:
|
|
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
|
|
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
|
|
579
|
+
var import_warps9 = require("@vleap/warps");
|
|
628
580
|
var import_ethers3 = require("ethers");
|
|
629
581
|
|
|
630
582
|
// src/WarpEvmSerializer.ts
|
|
631
|
-
var
|
|
583
|
+
var import_warps8 = require("@vleap/warps");
|
|
632
584
|
var import_ethers2 = require("ethers");
|
|
633
|
-
var SplitParamsRegex = new RegExp(`${
|
|
585
|
+
var SplitParamsRegex = new RegExp(`${import_warps8.WarpConstants.ArgParamsSeparator}(.*)`);
|
|
634
586
|
var WarpEvmSerializer = class {
|
|
635
587
|
constructor() {
|
|
636
|
-
this.coreSerializer = new
|
|
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(
|
|
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(
|
|
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(
|
|
678
|
-
const nativeValue = valueParts.join(
|
|
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(
|
|
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,
|
|
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,
|
|
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(
|
|
843
|
-
const currentActionIndex = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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:
|
|
1213
|
+
chain: import_warps11.WarpChainName.Arbitrum,
|
|
1265
1214
|
identifier: "ARB",
|
|
1266
|
-
|
|
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(
|
|
1220
|
+
var getArbitrumAdapter = createEvmAdapter(import_warps11.WarpChainName.Arbitrum, "arb", {
|
|
1271
1221
|
mainnet: {
|
|
1272
|
-
name:
|
|
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:
|
|
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:
|
|
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
|
|
1251
|
+
var import_warps12 = require("@vleap/warps");
|
|
1302
1252
|
var NativeTokenBase = {
|
|
1303
|
-
chain:
|
|
1253
|
+
chain: import_warps12.WarpChainName.Base,
|
|
1304
1254
|
identifier: "ETH",
|
|
1305
|
-
name: "
|
|
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(
|
|
1260
|
+
var getBaseAdapter = createEvmAdapter(import_warps12.WarpChainName.Base, "base", {
|
|
1310
1261
|
mainnet: {
|
|
1311
|
-
name:
|
|
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:
|
|
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:
|
|
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
|
|
1291
|
+
var import_warps14 = require("@vleap/warps");
|
|
1341
1292
|
|
|
1342
1293
|
// src/chains/ethereum.ts
|
|
1343
|
-
var
|
|
1294
|
+
var import_warps13 = require("@vleap/warps");
|
|
1344
1295
|
var NativeTokenEth = {
|
|
1345
|
-
chain:
|
|
1296
|
+
chain: import_warps13.WarpChainName.Ethereum,
|
|
1346
1297
|
identifier: "ETH",
|
|
1347
|
-
|
|
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(
|
|
1303
|
+
var getEthereumAdapter = createEvmAdapter(import_warps13.WarpChainName.Ethereum, "eth", {
|
|
1352
1304
|
mainnet: {
|
|
1353
|
-
name:
|
|
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:
|
|
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:
|
|
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 = () => [
|
|
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,
|