@continuumdao/ctm-mpc-defi 0.2.42 → 0.2.43
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/agent/catalog.cjs +207 -26
- package/dist/agent/catalog.cjs.map +1 -1
- package/dist/agent/catalog.d.ts +914 -197
- package/dist/agent/catalog.js +202 -27
- package/dist/agent/catalog.js.map +1 -1
- package/dist/agent/skills/aerodrome/SKILL.md +1 -1
- package/dist/agent/skills/arcus/SKILL.md +1 -1
- package/dist/agent/skills/morpho/SKILL.md +32 -5
- package/dist/agent/skills/yield-compare/SKILL.md +6 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/protocols/evm/aerodrome/index.cjs +67 -48
- package/dist/protocols/evm/aerodrome/index.cjs.map +1 -1
- package/dist/protocols/evm/aerodrome/index.d.ts +8 -8
- package/dist/protocols/evm/aerodrome/index.js +82 -63
- package/dist/protocols/evm/aerodrome/index.js.map +1 -1
- package/dist/protocols/evm/morpho/index.cjs +441 -55
- package/dist/protocols/evm/morpho/index.cjs.map +1 -1
- package/dist/protocols/evm/morpho/index.d.ts +123 -2
- package/dist/protocols/evm/morpho/index.js +419 -57
- package/dist/protocols/evm/morpho/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -206,6 +206,60 @@ var init_addresses = __esm({
|
|
|
206
206
|
cache = null;
|
|
207
207
|
}
|
|
208
208
|
});
|
|
209
|
+
function isCoinbaseB20AssetToken(address) {
|
|
210
|
+
try {
|
|
211
|
+
return viem.getAddress(address).toLowerCase().startsWith(exports.AERODROME_B20_ASSET_PREFIX);
|
|
212
|
+
} catch {
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
function looksLikeCoinbaseStockSymbol(symbol) {
|
|
217
|
+
return /^[A-Za-z][A-Za-z0-9]{0,10}c$/.test((symbol ?? "").trim());
|
|
218
|
+
}
|
|
219
|
+
function lookupCoinbaseB20StockToken(token) {
|
|
220
|
+
const key = (token ?? "").trim();
|
|
221
|
+
if (!key) return null;
|
|
222
|
+
const lower = key.toLowerCase();
|
|
223
|
+
const bySymbol = exports.AERODROME_COINBASE_STOCK_TOKENS.find((t) => t.symbol.toLowerCase() === lower);
|
|
224
|
+
if (bySymbol) {
|
|
225
|
+
return {
|
|
226
|
+
address: viem.getAddress(bySymbol.address),
|
|
227
|
+
symbol: bySymbol.symbol,
|
|
228
|
+
decimals: exports.AERODROME_COINBASE_STOCK_DECIMALS
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
try {
|
|
232
|
+
const address = viem.getAddress(key);
|
|
233
|
+
const byAddr = exports.AERODROME_COINBASE_STOCK_TOKENS.find((t) => viem.getAddress(t.address).toLowerCase() === address.toLowerCase());
|
|
234
|
+
if (byAddr) {
|
|
235
|
+
return { address, symbol: byAddr.symbol, decimals: exports.AERODROME_COINBASE_STOCK_DECIMALS };
|
|
236
|
+
}
|
|
237
|
+
} catch {
|
|
238
|
+
}
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
exports.AERODROME_COINBASE_STOCK_TOKENS = void 0; exports.AERODROME_COINBASE_STOCK_DECIMALS = void 0; exports.AERODROME_B20_ASSET_PREFIX = void 0;
|
|
242
|
+
var init_coinbaseB20 = __esm({
|
|
243
|
+
"src/protocols/evm/shared/coinbaseB20.ts"() {
|
|
244
|
+
exports.AERODROME_COINBASE_STOCK_TOKENS = [
|
|
245
|
+
{ symbol: "AAPLc", name: "Apple Inc.", address: "0xb200000000000000000000C2e324d24d7eEcd1fb" },
|
|
246
|
+
{ symbol: "NVDAc", name: "NVIDIA Corporation", address: "0xb20000000000000000000078ee7ce2fE4908108C" },
|
|
247
|
+
{ symbol: "METAc", name: "Meta Platforms Inc.", address: "0xb2000000000000000000008bC8786B856E61707C" },
|
|
248
|
+
{ symbol: "GOOGLc", name: "Alphabet Inc.", address: "0xb2000000000000000000002D0BA3164cc74f58B7" },
|
|
249
|
+
{ symbol: "AMZNc", name: "Amazon.com Inc.", address: "0xb200000000000000000000d9192b6B456483C2E8" },
|
|
250
|
+
{ symbol: "TSLAc", name: "Tesla Inc.", address: "0xb2000000000000000000001e800a7f5189430cD0" },
|
|
251
|
+
{ symbol: "MSFTc", name: "Microsoft Corporation", address: "0xB200000000000000000000Ab99cFa739E253872B" },
|
|
252
|
+
{ symbol: "COINc", name: "Coinbase Global Inc.", address: "0xb200000000000000000000c85a31389D71F3ecfb" },
|
|
253
|
+
{ symbol: "MSTRc", name: "Strategy Inc.", address: "0xb2000000000000000000004884b426556b92883d" },
|
|
254
|
+
{ symbol: "CRCLc", name: "Circle Internet Group Inc.", address: "0xB20000000000000000000019f6E7C675b73C2e4D" },
|
|
255
|
+
{ symbol: "INTCc", name: "Intel Corporation", address: "0xB2000000000000000000004AFF16039bA04bdFBc" },
|
|
256
|
+
{ symbol: "SNDKc", name: "Sandisk Corporation", address: "0xb200000000000000000000397293Cb8cda9a10c5" },
|
|
257
|
+
{ symbol: "SPCXc", name: "Space Exploration Technologies Corp.", address: "0xb2000000000000000000007b9fcbd005511aCBd5" }
|
|
258
|
+
];
|
|
259
|
+
exports.AERODROME_COINBASE_STOCK_DECIMALS = 8;
|
|
260
|
+
exports.AERODROME_B20_ASSET_PREFIX = "0xb200000000000000000000";
|
|
261
|
+
}
|
|
262
|
+
});
|
|
209
263
|
|
|
210
264
|
// src/protocols/evm/aerodrome/abi.ts
|
|
211
265
|
var lpSugarAbi, routerAbi, mixedQuoterAbi, mixedQuoterV3Abi, v2PoolFactoryAbi, clPoolFactoryAbi, clPoolAbi, sugarHelperAbi, nfpmAbi, clSwapRouterAbi, poolClaimFeesAbi, gaugeAbi, clGaugeAbi, aerodromePoolMetaAbi, aerodromeVoterAbi, erc20Abi;
|
|
@@ -1013,18 +1067,8 @@ var init_client = __esm({
|
|
|
1013
1067
|
init_support();
|
|
1014
1068
|
}
|
|
1015
1069
|
});
|
|
1016
|
-
function isAerodromeB20AssetToken(address) {
|
|
1017
|
-
try {
|
|
1018
|
-
return viem.getAddress(address).toLowerCase().startsWith(exports.AERODROME_B20_ASSET_PREFIX);
|
|
1019
|
-
} catch {
|
|
1020
|
-
return false;
|
|
1021
|
-
}
|
|
1022
|
-
}
|
|
1023
1070
|
function isAerodromeCoinbaseStockToken(address) {
|
|
1024
|
-
return
|
|
1025
|
-
}
|
|
1026
|
-
function looksLikeCoinbaseStockSymbol(symbol) {
|
|
1027
|
-
return /^[A-Za-z][A-Za-z0-9]{0,10}c$/.test((symbol ?? "").trim());
|
|
1071
|
+
return isCoinbaseB20AssetToken(address);
|
|
1028
1072
|
}
|
|
1029
1073
|
function lookupAerodromeKnownToken(token) {
|
|
1030
1074
|
const key = (token ?? "").trim();
|
|
@@ -1039,14 +1083,8 @@ function lookupAerodromeKnownToken(token) {
|
|
|
1039
1083
|
if (lower === "aero") {
|
|
1040
1084
|
return { address: viem.getAddress(exports.AERODROME_BASE_ADDRESSES_FALLBACK.aero), symbol: "AERO", decimals: 18 };
|
|
1041
1085
|
}
|
|
1042
|
-
const stock =
|
|
1043
|
-
if (stock)
|
|
1044
|
-
return {
|
|
1045
|
-
address: viem.getAddress(stock.address),
|
|
1046
|
-
symbol: stock.symbol,
|
|
1047
|
-
decimals: exports.AERODROME_COINBASE_STOCK_DECIMALS
|
|
1048
|
-
};
|
|
1049
|
-
}
|
|
1086
|
+
const stock = lookupCoinbaseB20StockToken(key);
|
|
1087
|
+
if (stock) return stock;
|
|
1050
1088
|
try {
|
|
1051
1089
|
const address = viem.getAddress(key);
|
|
1052
1090
|
const want = address.toLowerCase();
|
|
@@ -1059,10 +1097,6 @@ function lookupAerodromeKnownToken(token) {
|
|
|
1059
1097
|
if (want === viem.getAddress(exports.AERODROME_BASE_ADDRESSES_FALLBACK.aero).toLowerCase()) {
|
|
1060
1098
|
return { address, symbol: "AERO", decimals: 18 };
|
|
1061
1099
|
}
|
|
1062
|
-
const byAddr = exports.AERODROME_COINBASE_STOCK_TOKENS.find((t) => viem.getAddress(t.address).toLowerCase() === want);
|
|
1063
|
-
if (byAddr) {
|
|
1064
|
-
return { address, symbol: byAddr.symbol, decimals: exports.AERODROME_COINBASE_STOCK_DECIMALS };
|
|
1065
|
-
}
|
|
1066
1100
|
} catch {
|
|
1067
1101
|
}
|
|
1068
1102
|
return null;
|
|
@@ -1123,7 +1157,7 @@ function parseBaseTokenizedStockDocs(text) {
|
|
|
1123
1157
|
} catch {
|
|
1124
1158
|
continue;
|
|
1125
1159
|
}
|
|
1126
|
-
if (!
|
|
1160
|
+
if (!isCoinbaseB20AssetToken(address)) continue;
|
|
1127
1161
|
const key = address.toLowerCase();
|
|
1128
1162
|
if (seen.has(key)) continue;
|
|
1129
1163
|
seen.add(key);
|
|
@@ -1174,7 +1208,7 @@ async function aerodromeResolveStockTokens(args) {
|
|
|
1174
1208
|
}
|
|
1175
1209
|
const candidates = /* @__PURE__ */ new Map();
|
|
1176
1210
|
const add = (addressRaw, meta) => {
|
|
1177
|
-
if (!
|
|
1211
|
+
if (!isCoinbaseB20AssetToken(addressRaw)) return;
|
|
1178
1212
|
const address = viem.getAddress(addressRaw);
|
|
1179
1213
|
const key = address.toLowerCase();
|
|
1180
1214
|
const prev = candidates.get(key);
|
|
@@ -1192,7 +1226,7 @@ async function aerodromeResolveStockTokens(args) {
|
|
|
1192
1226
|
add(t.address, { symbol: t.symbol, decimals: exports.AERODROME_COINBASE_STOCK_DECIMALS });
|
|
1193
1227
|
}
|
|
1194
1228
|
for (const t of args.knownTokens ?? []) {
|
|
1195
|
-
if (!
|
|
1229
|
+
if (!isCoinbaseB20AssetToken(t.address)) continue;
|
|
1196
1230
|
const symbol = (t.symbol ?? "").trim();
|
|
1197
1231
|
const seeded = Boolean(seedSymbol(viem.getAddress(t.address)));
|
|
1198
1232
|
if (!seeded && symbol && !looksLikeCoinbaseStockSymbol(symbol)) continue;
|
|
@@ -1229,30 +1263,15 @@ async function aerodromeResolveStockTokens(args) {
|
|
|
1229
1263
|
return seedStockRows();
|
|
1230
1264
|
}
|
|
1231
1265
|
}
|
|
1232
|
-
|
|
1266
|
+
var BASE_STOCKS_DOCS_URLS, MAX_DOCS_CHARS, MAX_OFFICIAL_STOCKS;
|
|
1233
1267
|
var init_stockTokens = __esm({
|
|
1234
1268
|
"src/protocols/evm/aerodrome/stockTokens.ts"() {
|
|
1269
|
+
init_coinbaseB20();
|
|
1235
1270
|
init_addresses();
|
|
1236
1271
|
init_abi();
|
|
1237
1272
|
init_client();
|
|
1238
1273
|
init_support();
|
|
1239
|
-
|
|
1240
|
-
{ symbol: "AAPLc", name: "Apple Inc.", address: "0xb200000000000000000000C2e324d24d7eEcd1fb" },
|
|
1241
|
-
{ symbol: "NVDAc", name: "NVIDIA Corporation", address: "0xb20000000000000000000078ee7ce2fE4908108C" },
|
|
1242
|
-
{ symbol: "METAc", name: "Meta Platforms Inc.", address: "0xb2000000000000000000008bC8786B856E61707C" },
|
|
1243
|
-
{ symbol: "GOOGLc", name: "Alphabet Inc.", address: "0xb2000000000000000000002D0BA3164cc74f58B7" },
|
|
1244
|
-
{ symbol: "AMZNc", name: "Amazon.com Inc.", address: "0xb200000000000000000000d9192b6B456483C2E8" },
|
|
1245
|
-
{ symbol: "TSLAc", name: "Tesla Inc.", address: "0xb2000000000000000000001e800a7f5189430cD0" },
|
|
1246
|
-
{ symbol: "MSFTc", name: "Microsoft Corporation", address: "0xB200000000000000000000Ab99cFa739E253872B" },
|
|
1247
|
-
{ symbol: "COINc", name: "Coinbase Global Inc.", address: "0xb200000000000000000000c85a31389D71F3ecfb" },
|
|
1248
|
-
{ symbol: "MSTRc", name: "Strategy Inc.", address: "0xb2000000000000000000004884b426556b92883d" },
|
|
1249
|
-
{ symbol: "CRCLc", name: "Circle Internet Group Inc.", address: "0xB20000000000000000000019f6E7C675b73C2e4D" },
|
|
1250
|
-
{ symbol: "INTCc", name: "Intel Corporation", address: "0xB2000000000000000000004AFF16039bA04bdFBc" },
|
|
1251
|
-
{ symbol: "SNDKc", name: "Sandisk Corporation", address: "0xb200000000000000000000397293Cb8cda9a10c5" },
|
|
1252
|
-
{ symbol: "SPCXc", name: "Space Exploration Technologies Corp.", address: "0xb2000000000000000000007b9fcbd005511aCBd5" }
|
|
1253
|
-
];
|
|
1254
|
-
exports.AERODROME_COINBASE_STOCK_DECIMALS = 8;
|
|
1255
|
-
exports.AERODROME_B20_ASSET_PREFIX = "0xb200000000000000000000";
|
|
1274
|
+
init_coinbaseB20();
|
|
1256
1275
|
BASE_STOCKS_DOCS_URLS = [
|
|
1257
1276
|
"https://docs.base.org/base-chain/asset-issuance/tokenized-stocks-on-base.md",
|
|
1258
1277
|
"https://docs.base.org/base-chain/asset-issuance/tokenized-stocks-on-base"
|
|
@@ -1748,7 +1767,7 @@ async function aerodromeFetchStockLpYieldsSummary(args) {
|
|
|
1748
1767
|
const addrs = await loadAerodromeAddresses();
|
|
1749
1768
|
const scanned = await scanSugarTop(args.rpcUrl);
|
|
1750
1769
|
const aeroUsd = aeroUsdPriceFromRows(scanned, addrs.aero);
|
|
1751
|
-
const stock = scanned.filter((r) =>
|
|
1770
|
+
const stock = scanned.filter((r) => isCoinbaseB20AssetToken(r.token0) || isCoinbaseB20AssetToken(r.token1));
|
|
1752
1771
|
const pools = rankAndCap(stock.map((r) => toYieldRow(r, aeroUsd)), args.query);
|
|
1753
1772
|
return {
|
|
1754
1773
|
chainId: exports.AERODROME_CHAIN_ID,
|
|
@@ -3103,7 +3122,7 @@ function pairTokenLabel(address, isNative) {
|
|
|
3103
3122
|
function noDirectPoolHint(args) {
|
|
3104
3123
|
const a = pairTokenLabel(args.tokenA, args.isNativeA);
|
|
3105
3124
|
const b = pairTokenLabel(args.tokenB, args.isNativeB);
|
|
3106
|
-
const stockAddr =
|
|
3125
|
+
const stockAddr = isCoinbaseB20AssetToken(args.tokenB) ? args.tokenB : isCoinbaseB20AssetToken(args.tokenA) ? args.tokenA : null;
|
|
3107
3126
|
if (stockAddr) {
|
|
3108
3127
|
const sym = pairTokenLabel(stockAddr, false);
|
|
3109
3128
|
return `No ${a}/${b} pool on Aerodrome. ${sym} liquidity is on Slipstream vs USDC (swaps hop through USDC). Pick USDC as the pair token to add ${sym}/USDC liquidity.`;
|
|
@@ -4062,7 +4081,7 @@ function mergeStocksIntoListed(tokens, stocks) {
|
|
|
4062
4081
|
});
|
|
4063
4082
|
}
|
|
4064
4083
|
const stocksFirst = stocks.map((s) => byAddr.get(s.address.toLowerCase())).filter(Boolean);
|
|
4065
|
-
const rest = [...byAddr.values()].filter((t) => !
|
|
4084
|
+
const rest = [...byAddr.values()].filter((t) => !isCoinbaseB20AssetToken(t.address));
|
|
4066
4085
|
return [...stocksFirst, ...rest];
|
|
4067
4086
|
}
|
|
4068
4087
|
async function aerodromeFetchListedTokensSummary(args) {
|
|
@@ -4321,7 +4340,7 @@ exports.fetchOfficialBaseTokenizedStocks = fetchOfficialBaseTokenizedStocks;
|
|
|
4321
4340
|
exports.findAerodromePaths = findAerodromePaths;
|
|
4322
4341
|
exports.formatAerodromeLpYieldLabel = formatAerodromeLpYieldLabel;
|
|
4323
4342
|
exports.formatAerodromePriceImpact = formatAerodromePriceImpact;
|
|
4324
|
-
exports.isAerodromeB20AssetToken =
|
|
4343
|
+
exports.isAerodromeB20AssetToken = isCoinbaseB20AssetToken;
|
|
4325
4344
|
exports.isAerodromeChainSupported = isAerodromeChainSupported;
|
|
4326
4345
|
exports.isAerodromeCoinbaseStockToken = isAerodromeCoinbaseStockToken;
|
|
4327
4346
|
exports.isAerodromeNativeToken = isAerodromeNativeToken;
|