@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.
@@ -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 isAerodromeB20AssetToken(address);
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 = exports.AERODROME_COINBASE_STOCK_TOKENS.find((t) => t.symbol.toLowerCase() === lower);
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 (!isAerodromeB20AssetToken(address)) continue;
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 (!isAerodromeB20AssetToken(addressRaw)) return;
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 (!isAerodromeB20AssetToken(t.address)) continue;
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
- exports.AERODROME_COINBASE_STOCK_TOKENS = void 0; exports.AERODROME_COINBASE_STOCK_DECIMALS = void 0; exports.AERODROME_B20_ASSET_PREFIX = void 0; var BASE_STOCKS_DOCS_URLS, MAX_DOCS_CHARS, MAX_OFFICIAL_STOCKS;
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
- exports.AERODROME_COINBASE_STOCK_TOKENS = [
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) => isAerodromeB20AssetToken(r.token0) || isAerodromeB20AssetToken(r.token1));
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 = isAerodromeB20AssetToken(args.tokenB) ? args.tokenB : isAerodromeB20AssetToken(args.tokenA) ? args.tokenA : null;
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) => !isAerodromeB20AssetToken(t.address));
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 = isAerodromeB20AssetToken;
4343
+ exports.isAerodromeB20AssetToken = isCoinbaseB20AssetToken;
4325
4344
  exports.isAerodromeChainSupported = isAerodromeChainSupported;
4326
4345
  exports.isAerodromeCoinbaseStockToken = isAerodromeCoinbaseStockToken;
4327
4346
  exports.isAerodromeNativeToken = isAerodromeNativeToken;