@continuumdao/ctm-mpc-defi 0.2.42 → 0.2.44

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.
Files changed (36) hide show
  1. package/dist/agent/catalog.cjs +352 -36
  2. package/dist/agent/catalog.cjs.map +1 -1
  3. package/dist/agent/catalog.d.ts +1542 -236
  4. package/dist/agent/catalog.js +343 -37
  5. package/dist/agent/catalog.js.map +1 -1
  6. package/dist/agent/skills/aave-v4/SKILL.md +9 -1
  7. package/dist/agent/skills/aerodrome/SKILL.md +1 -1
  8. package/dist/agent/skills/arcus/SKILL.md +1 -1
  9. package/dist/agent/skills/euler-v2/SKILL.md +9 -0
  10. package/dist/agent/skills/morpho/SKILL.md +39 -6
  11. package/dist/agent/skills/yield-compare/SKILL.md +6 -2
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/merklDistributor-CdqtZC9N.d.ts +65 -0
  15. package/dist/multisign-Dr0j9fHm.d.ts +489 -0
  16. package/dist/protocols/evm/aave-v4/index.cjs +207 -2
  17. package/dist/protocols/evm/aave-v4/index.cjs.map +1 -1
  18. package/dist/protocols/evm/aave-v4/index.d.ts +12 -467
  19. package/dist/protocols/evm/aave-v4/index.js +192 -3
  20. package/dist/protocols/evm/aave-v4/index.js.map +1 -1
  21. package/dist/protocols/evm/aerodrome/index.cjs +67 -48
  22. package/dist/protocols/evm/aerodrome/index.cjs.map +1 -1
  23. package/dist/protocols/evm/aerodrome/index.d.ts +8 -8
  24. package/dist/protocols/evm/aerodrome/index.js +82 -63
  25. package/dist/protocols/evm/aerodrome/index.js.map +1 -1
  26. package/dist/protocols/evm/euler-v2/index.cjs +209 -1
  27. package/dist/protocols/evm/euler-v2/index.cjs.map +1 -1
  28. package/dist/protocols/evm/euler-v2/index.d.ts +9 -1
  29. package/dist/protocols/evm/euler-v2/index.js +208 -2
  30. package/dist/protocols/evm/euler-v2/index.js.map +1 -1
  31. package/dist/protocols/evm/morpho/index.cjs +610 -56
  32. package/dist/protocols/evm/morpho/index.cjs.map +1 -1
  33. package/dist/protocols/evm/morpho/index.d.ts +131 -2
  34. package/dist/protocols/evm/morpho/index.js +573 -58
  35. package/dist/protocols/evm/morpho/index.js.map +1 -1
  36. package/package.json +1 -1
@@ -72,9 +72,8 @@ declare function aerodromeClSwapRouterForFactory(addrs: AerodromeAddresses, fact
72
72
  /**
73
73
  * Seed of Coinbase B20 tokenized stocks on Base.
74
74
  * Official table: https://docs.base.org/base-chain/asset-issuance/tokenized-stocks-on-base
75
- * New names are merged at runtime from that page + Sugar tokens with the B20 ASSET prefix.
76
75
  */
77
- declare const AERODROME_COINBASE_STOCK_TOKENS: readonly [{
76
+ declare const COINBASE_B20_STOCK_TOKENS: readonly [{
78
77
  readonly symbol: "AAPLc";
79
78
  readonly name: "Apple Inc.";
80
79
  readonly address: "0xb200000000000000000000C2e324d24d7eEcd1fb";
@@ -127,9 +126,13 @@ declare const AERODROME_COINBASE_STOCK_TOKENS: readonly [{
127
126
  readonly name: "Space Exploration Technologies Corp.";
128
127
  readonly address: "0xb2000000000000000000007b9fcbd005511aCBd5";
129
128
  }];
130
- declare const AERODROME_COINBASE_STOCK_DECIMALS: 8;
129
+ declare const COINBASE_B20_STOCK_DECIMALS: 8;
131
130
  /** B20 ASSET variant addresses: `[10-byte 0xb200…][variant 0x00][9-byte hash]`. */
132
- declare const AERODROME_B20_ASSET_PREFIX = "0xb200000000000000000000";
131
+ declare const COINBASE_B20_ASSET_PREFIX = "0xb200000000000000000000";
132
+ declare function isCoinbaseB20AssetToken(address: string): boolean;
133
+ declare function looksLikeCoinbaseStockSymbol(symbol: string): boolean;
134
+
135
+ declare function isAerodromeCoinbaseStockToken(address: string): boolean;
133
136
  type AerodromeStockTokenRow = {
134
137
  address: Address;
135
138
  symbol: string;
@@ -137,9 +140,6 @@ type AerodromeStockTokenRow = {
137
140
  decimals: number;
138
141
  issued: boolean;
139
142
  };
140
- declare function isAerodromeB20AssetToken(address: string): boolean;
141
- declare function isAerodromeCoinbaseStockToken(address: string): boolean;
142
- declare function looksLikeCoinbaseStockSymbol(symbol: string): boolean;
143
143
  type AerodromeKnownToken = {
144
144
  address: Address;
145
145
  symbol: string;
@@ -856,4 +856,4 @@ declare function aerodromePositionKey(row: {
856
856
 
857
857
  declare const aerodromeProtocolModule: ProtocolModule;
858
858
 
859
- export { AERODROME_B20_ASSET_PREFIX, AERODROME_BASE_ADDRESSES_FALLBACK, AERODROME_CHAIN_ID, AERODROME_CL_FACTORY_NEWEST_BIT, AERODROME_CL_FACTORY_OLDEST_BIT, AERODROME_COINBASE_STOCK_DECIMALS, AERODROME_COINBASE_STOCK_TOKENS, AERODROME_IMPORTANT_POOL_CAP, AERODROME_NATIVE_PLACEHOLDER, AERODROME_PROTOCOL_ID, AERODROME_STABLE_FILLER, AERODROME_USDC_BASE, AERODROME_VOLATILE_FILLER, AERODROME_WETH_BASE, type AerodromeAddLiquidityQuote, type AerodromeAddresses, type AerodromeClDepositQuote, type AerodromeKnownToken, type AerodromeListedToken, type AerodromeLpRow, type AerodromeLpYieldRow, type AerodromePositionRow, type AerodromePositionWithPool, type AerodromeQuoteResult, type AerodromeRouteHop, type AerodromeStockTokenRow, type AerodromeSwapPool, aerodromeClFactoryList, aerodromeClSwapRouterForFactory, aerodromeCoinbaseStockAddresses, aerodromeDiscoverConnectorPools, aerodromeDiscoverConnectorPoolsLoaded, aerodromeDiscoverDirectPools, aerodromeDiscoverPoolsSummary, aerodromeFallbackAddresses, aerodromeFetchImportantPoolsSummary, aerodromeFetchListedTokens, aerodromeFetchListedTokensSummary, aerodromeFetchLpYieldsForPair, aerodromeFetchLpYieldsForPools, aerodromeFetchLpYieldsSummary, aerodromeFetchPools, aerodromeFetchPoolsByAddress, aerodromeFetchPoolsSummary, aerodromeFetchPositions, aerodromeFetchPositionsSummary, aerodromeFetchPositionsWithPools, aerodromeFetchStockLpYieldsSummary, aerodromeFetchSwapPools, aerodromeMixedPathFiller, aerodromeOnChainDeadlineUnix, aerodromePositionKey, aerodromePositionLabel, aerodromeProbeAmountIn, aerodromeProtocolModule, aerodromeQuote, aerodromeQuoteAddLiquidity, aerodromeQuoteClDeposit, aerodromeResolveStockTokens, aerodromeUnissuedStockMessage, assertAerodromeStockIssued, buildAerodromeLiquidityPurposePrefill, buildAerodromeRewardsPurposePrefill, buildAerodromeSwapPurposePrefill, buildEvmMultisignBodyAerodromeAddLiquidityBatch, buildEvmMultisignBodyAerodromeClBurnBatch, buildEvmMultisignBodyAerodromeClCollectBatch, buildEvmMultisignBodyAerodromeClDecreaseBatch, buildEvmMultisignBodyAerodromeClIncreaseBatch, buildEvmMultisignBodyAerodromeClMintBatch, buildEvmMultisignBodyAerodromeClaimEmissionsBatch, buildEvmMultisignBodyAerodromeClaimFeesBatch, buildEvmMultisignBodyAerodromeGaugeStakeBatch, buildEvmMultisignBodyAerodromeGaugeUnstakeBatch, buildEvmMultisignBodyAerodromeRemoveLiquidityBatch, buildEvmMultisignBodyAerodromeSwapBatch, computeAerodromePriceImpactPercent, encodeAerodromeMixedPath, fetchOfficialBaseTokenizedStocks, findAerodromePaths, formatAerodromeLpYieldLabel, formatAerodromePriceImpact, isAerodromeB20AssetToken, isAerodromeChainSupported, isAerodromeCoinbaseStockToken, isAerodromeNativeToken, loadAerodromeAddresses, looksLikeCoinbaseStockSymbol, lookupAerodromeKnownToken, parseBaseTokenizedStockDocs, parseSecurityMdxAddresses, parseSugarBaseEnv, quoteAerodromeHopsAmountOut, requireAerodromeRpcUrl, resetAerodromeAddressCache, resolveAerodromeErc20OrWeth, tryAerodromeSdkQuote, tryAerodromeSdkUnsignedSwap };
859
+ export { COINBASE_B20_ASSET_PREFIX as AERODROME_B20_ASSET_PREFIX, AERODROME_BASE_ADDRESSES_FALLBACK, AERODROME_CHAIN_ID, AERODROME_CL_FACTORY_NEWEST_BIT, AERODROME_CL_FACTORY_OLDEST_BIT, COINBASE_B20_STOCK_DECIMALS as AERODROME_COINBASE_STOCK_DECIMALS, COINBASE_B20_STOCK_TOKENS as AERODROME_COINBASE_STOCK_TOKENS, AERODROME_IMPORTANT_POOL_CAP, AERODROME_NATIVE_PLACEHOLDER, AERODROME_PROTOCOL_ID, AERODROME_STABLE_FILLER, AERODROME_USDC_BASE, AERODROME_VOLATILE_FILLER, AERODROME_WETH_BASE, type AerodromeAddLiquidityQuote, type AerodromeAddresses, type AerodromeClDepositQuote, type AerodromeKnownToken, type AerodromeListedToken, type AerodromeLpRow, type AerodromeLpYieldRow, type AerodromePositionRow, type AerodromePositionWithPool, type AerodromeQuoteResult, type AerodromeRouteHop, type AerodromeStockTokenRow, type AerodromeSwapPool, aerodromeClFactoryList, aerodromeClSwapRouterForFactory, aerodromeCoinbaseStockAddresses, aerodromeDiscoverConnectorPools, aerodromeDiscoverConnectorPoolsLoaded, aerodromeDiscoverDirectPools, aerodromeDiscoverPoolsSummary, aerodromeFallbackAddresses, aerodromeFetchImportantPoolsSummary, aerodromeFetchListedTokens, aerodromeFetchListedTokensSummary, aerodromeFetchLpYieldsForPair, aerodromeFetchLpYieldsForPools, aerodromeFetchLpYieldsSummary, aerodromeFetchPools, aerodromeFetchPoolsByAddress, aerodromeFetchPoolsSummary, aerodromeFetchPositions, aerodromeFetchPositionsSummary, aerodromeFetchPositionsWithPools, aerodromeFetchStockLpYieldsSummary, aerodromeFetchSwapPools, aerodromeMixedPathFiller, aerodromeOnChainDeadlineUnix, aerodromePositionKey, aerodromePositionLabel, aerodromeProbeAmountIn, aerodromeProtocolModule, aerodromeQuote, aerodromeQuoteAddLiquidity, aerodromeQuoteClDeposit, aerodromeResolveStockTokens, aerodromeUnissuedStockMessage, assertAerodromeStockIssued, buildAerodromeLiquidityPurposePrefill, buildAerodromeRewardsPurposePrefill, buildAerodromeSwapPurposePrefill, buildEvmMultisignBodyAerodromeAddLiquidityBatch, buildEvmMultisignBodyAerodromeClBurnBatch, buildEvmMultisignBodyAerodromeClCollectBatch, buildEvmMultisignBodyAerodromeClDecreaseBatch, buildEvmMultisignBodyAerodromeClIncreaseBatch, buildEvmMultisignBodyAerodromeClMintBatch, buildEvmMultisignBodyAerodromeClaimEmissionsBatch, buildEvmMultisignBodyAerodromeClaimFeesBatch, buildEvmMultisignBodyAerodromeGaugeStakeBatch, buildEvmMultisignBodyAerodromeGaugeUnstakeBatch, buildEvmMultisignBodyAerodromeRemoveLiquidityBatch, buildEvmMultisignBodyAerodromeSwapBatch, computeAerodromePriceImpactPercent, encodeAerodromeMixedPath, fetchOfficialBaseTokenizedStocks, findAerodromePaths, formatAerodromeLpYieldLabel, formatAerodromePriceImpact, isCoinbaseB20AssetToken as isAerodromeB20AssetToken, isAerodromeChainSupported, isAerodromeCoinbaseStockToken, isAerodromeNativeToken, loadAerodromeAddresses, looksLikeCoinbaseStockSymbol, lookupAerodromeKnownToken, parseBaseTokenizedStockDocs, parseSecurityMdxAddresses, parseSugarBaseEnv, quoteAerodromeHopsAmountOut, requireAerodromeRpcUrl, resetAerodromeAddressCache, resolveAerodromeErc20OrWeth, tryAerodromeSdkQuote, tryAerodromeSdkUnsignedSwap };
@@ -204,6 +204,60 @@ var init_addresses = __esm({
204
204
  cache = null;
205
205
  }
206
206
  });
207
+ function isCoinbaseB20AssetToken(address) {
208
+ try {
209
+ return getAddress(address).toLowerCase().startsWith(COINBASE_B20_ASSET_PREFIX);
210
+ } catch {
211
+ return false;
212
+ }
213
+ }
214
+ function looksLikeCoinbaseStockSymbol(symbol) {
215
+ return /^[A-Za-z][A-Za-z0-9]{0,10}c$/.test((symbol ?? "").trim());
216
+ }
217
+ function lookupCoinbaseB20StockToken(token) {
218
+ const key = (token ?? "").trim();
219
+ if (!key) return null;
220
+ const lower = key.toLowerCase();
221
+ const bySymbol = COINBASE_B20_STOCK_TOKENS.find((t) => t.symbol.toLowerCase() === lower);
222
+ if (bySymbol) {
223
+ return {
224
+ address: getAddress(bySymbol.address),
225
+ symbol: bySymbol.symbol,
226
+ decimals: COINBASE_B20_STOCK_DECIMALS
227
+ };
228
+ }
229
+ try {
230
+ const address = getAddress(key);
231
+ const byAddr = COINBASE_B20_STOCK_TOKENS.find((t) => getAddress(t.address).toLowerCase() === address.toLowerCase());
232
+ if (byAddr) {
233
+ return { address, symbol: byAddr.symbol, decimals: COINBASE_B20_STOCK_DECIMALS };
234
+ }
235
+ } catch {
236
+ }
237
+ return null;
238
+ }
239
+ var COINBASE_B20_STOCK_TOKENS, COINBASE_B20_STOCK_DECIMALS, COINBASE_B20_ASSET_PREFIX;
240
+ var init_coinbaseB20 = __esm({
241
+ "src/protocols/evm/shared/coinbaseB20.ts"() {
242
+ COINBASE_B20_STOCK_TOKENS = [
243
+ { symbol: "AAPLc", name: "Apple Inc.", address: "0xb200000000000000000000C2e324d24d7eEcd1fb" },
244
+ { symbol: "NVDAc", name: "NVIDIA Corporation", address: "0xb20000000000000000000078ee7ce2fE4908108C" },
245
+ { symbol: "METAc", name: "Meta Platforms Inc.", address: "0xb2000000000000000000008bC8786B856E61707C" },
246
+ { symbol: "GOOGLc", name: "Alphabet Inc.", address: "0xb2000000000000000000002D0BA3164cc74f58B7" },
247
+ { symbol: "AMZNc", name: "Amazon.com Inc.", address: "0xb200000000000000000000d9192b6B456483C2E8" },
248
+ { symbol: "TSLAc", name: "Tesla Inc.", address: "0xb2000000000000000000001e800a7f5189430cD0" },
249
+ { symbol: "MSFTc", name: "Microsoft Corporation", address: "0xB200000000000000000000Ab99cFa739E253872B" },
250
+ { symbol: "COINc", name: "Coinbase Global Inc.", address: "0xb200000000000000000000c85a31389D71F3ecfb" },
251
+ { symbol: "MSTRc", name: "Strategy Inc.", address: "0xb2000000000000000000004884b426556b92883d" },
252
+ { symbol: "CRCLc", name: "Circle Internet Group Inc.", address: "0xB20000000000000000000019f6E7C675b73C2e4D" },
253
+ { symbol: "INTCc", name: "Intel Corporation", address: "0xB2000000000000000000004AFF16039bA04bdFBc" },
254
+ { symbol: "SNDKc", name: "Sandisk Corporation", address: "0xb200000000000000000000397293Cb8cda9a10c5" },
255
+ { symbol: "SPCXc", name: "Space Exploration Technologies Corp.", address: "0xb2000000000000000000007b9fcbd005511aCBd5" }
256
+ ];
257
+ COINBASE_B20_STOCK_DECIMALS = 8;
258
+ COINBASE_B20_ASSET_PREFIX = "0xb200000000000000000000";
259
+ }
260
+ });
207
261
 
208
262
  // src/protocols/evm/aerodrome/abi.ts
209
263
  var lpSugarAbi, routerAbi, mixedQuoterAbi, mixedQuoterV3Abi, v2PoolFactoryAbi, clPoolFactoryAbi, clPoolAbi, sugarHelperAbi, nfpmAbi, clSwapRouterAbi, poolClaimFeesAbi, gaugeAbi, clGaugeAbi, aerodromePoolMetaAbi, aerodromeVoterAbi, erc20Abi;
@@ -1011,18 +1065,8 @@ var init_client = __esm({
1011
1065
  init_support();
1012
1066
  }
1013
1067
  });
1014
- function isAerodromeB20AssetToken(address) {
1015
- try {
1016
- return getAddress(address).toLowerCase().startsWith(AERODROME_B20_ASSET_PREFIX);
1017
- } catch {
1018
- return false;
1019
- }
1020
- }
1021
1068
  function isAerodromeCoinbaseStockToken(address) {
1022
- return isAerodromeB20AssetToken(address);
1023
- }
1024
- function looksLikeCoinbaseStockSymbol(symbol) {
1025
- return /^[A-Za-z][A-Za-z0-9]{0,10}c$/.test((symbol ?? "").trim());
1069
+ return isCoinbaseB20AssetToken(address);
1026
1070
  }
1027
1071
  function lookupAerodromeKnownToken(token) {
1028
1072
  const key = (token ?? "").trim();
@@ -1037,14 +1081,8 @@ function lookupAerodromeKnownToken(token) {
1037
1081
  if (lower === "aero") {
1038
1082
  return { address: getAddress(AERODROME_BASE_ADDRESSES_FALLBACK.aero), symbol: "AERO", decimals: 18 };
1039
1083
  }
1040
- const stock = AERODROME_COINBASE_STOCK_TOKENS.find((t) => t.symbol.toLowerCase() === lower);
1041
- if (stock) {
1042
- return {
1043
- address: getAddress(stock.address),
1044
- symbol: stock.symbol,
1045
- decimals: AERODROME_COINBASE_STOCK_DECIMALS
1046
- };
1047
- }
1084
+ const stock = lookupCoinbaseB20StockToken(key);
1085
+ if (stock) return stock;
1048
1086
  try {
1049
1087
  const address = getAddress(key);
1050
1088
  const want = address.toLowerCase();
@@ -1057,10 +1095,6 @@ function lookupAerodromeKnownToken(token) {
1057
1095
  if (want === getAddress(AERODROME_BASE_ADDRESSES_FALLBACK.aero).toLowerCase()) {
1058
1096
  return { address, symbol: "AERO", decimals: 18 };
1059
1097
  }
1060
- const byAddr = AERODROME_COINBASE_STOCK_TOKENS.find((t) => getAddress(t.address).toLowerCase() === want);
1061
- if (byAddr) {
1062
- return { address, symbol: byAddr.symbol, decimals: AERODROME_COINBASE_STOCK_DECIMALS };
1063
- }
1064
1098
  } catch {
1065
1099
  }
1066
1100
  return null;
@@ -1098,7 +1132,7 @@ async function assertAerodromeStockIssued(args) {
1098
1132
  }
1099
1133
  }
1100
1134
  function aerodromeCoinbaseStockAddresses() {
1101
- return AERODROME_COINBASE_STOCK_TOKENS.map((t) => getAddress(t.address));
1135
+ return COINBASE_B20_STOCK_TOKENS.map((t) => getAddress(t.address));
1102
1136
  }
1103
1137
  function parseBaseTokenizedStockDocs(text) {
1104
1138
  try {
@@ -1121,7 +1155,7 @@ function parseBaseTokenizedStockDocs(text) {
1121
1155
  } catch {
1122
1156
  continue;
1123
1157
  }
1124
- if (!isAerodromeB20AssetToken(address)) continue;
1158
+ if (!isCoinbaseB20AssetToken(address)) continue;
1125
1159
  const key = address.toLowerCase();
1126
1160
  if (seen.has(key)) continue;
1127
1161
  seen.add(key);
@@ -1148,18 +1182,18 @@ async function fetchOfficialBaseTokenizedStocks() {
1148
1182
  }
1149
1183
  function seedName(address) {
1150
1184
  const want = address.toLowerCase();
1151
- return AERODROME_COINBASE_STOCK_TOKENS.find((t) => getAddress(t.address).toLowerCase() === want)?.name;
1185
+ return COINBASE_B20_STOCK_TOKENS.find((t) => getAddress(t.address).toLowerCase() === want)?.name;
1152
1186
  }
1153
1187
  function seedSymbol(address) {
1154
1188
  const want = address.toLowerCase();
1155
- return AERODROME_COINBASE_STOCK_TOKENS.find((t) => getAddress(t.address).toLowerCase() === want)?.symbol;
1189
+ return COINBASE_B20_STOCK_TOKENS.find((t) => getAddress(t.address).toLowerCase() === want)?.symbol;
1156
1190
  }
1157
1191
  function seedStockRows() {
1158
- return AERODROME_COINBASE_STOCK_TOKENS.map((t) => ({
1192
+ return COINBASE_B20_STOCK_TOKENS.map((t) => ({
1159
1193
  address: getAddress(t.address),
1160
1194
  symbol: t.symbol,
1161
1195
  name: t.name,
1162
- decimals: AERODROME_COINBASE_STOCK_DECIMALS,
1196
+ decimals: COINBASE_B20_STOCK_DECIMALS,
1163
1197
  issued: false
1164
1198
  }));
1165
1199
  }
@@ -1172,7 +1206,7 @@ async function aerodromeResolveStockTokens(args) {
1172
1206
  }
1173
1207
  const candidates = /* @__PURE__ */ new Map();
1174
1208
  const add = (addressRaw, meta) => {
1175
- if (!isAerodromeB20AssetToken(addressRaw)) return;
1209
+ if (!isCoinbaseB20AssetToken(addressRaw)) return;
1176
1210
  const address = getAddress(addressRaw);
1177
1211
  const key = address.toLowerCase();
1178
1212
  const prev = candidates.get(key);
@@ -1183,14 +1217,14 @@ async function aerodromeResolveStockTokens(args) {
1183
1217
  decimals: meta?.decimals ?? prev?.decimals
1184
1218
  });
1185
1219
  };
1186
- for (const t of AERODROME_COINBASE_STOCK_TOKENS) {
1187
- add(t.address, { symbol: t.symbol, name: t.name, decimals: AERODROME_COINBASE_STOCK_DECIMALS });
1220
+ for (const t of COINBASE_B20_STOCK_TOKENS) {
1221
+ add(t.address, { symbol: t.symbol, name: t.name, decimals: COINBASE_B20_STOCK_DECIMALS });
1188
1222
  }
1189
1223
  for (const t of official) {
1190
- add(t.address, { symbol: t.symbol, decimals: AERODROME_COINBASE_STOCK_DECIMALS });
1224
+ add(t.address, { symbol: t.symbol, decimals: COINBASE_B20_STOCK_DECIMALS });
1191
1225
  }
1192
1226
  for (const t of args.knownTokens ?? []) {
1193
- if (!isAerodromeB20AssetToken(t.address)) continue;
1227
+ if (!isCoinbaseB20AssetToken(t.address)) continue;
1194
1228
  const symbol = (t.symbol ?? "").trim();
1195
1229
  const seeded = Boolean(seedSymbol(getAddress(t.address)));
1196
1230
  if (!seeded && symbol && !looksLikeCoinbaseStockSymbol(symbol)) continue;
@@ -1219,7 +1253,7 @@ async function aerodromeResolveStockTokens(args) {
1219
1253
  address: row.address,
1220
1254
  symbol: onchainSymbol || row.symbol || seedSymbol(row.address) || row.address.slice(0, 8),
1221
1255
  name: seedName(row.address) || onchainName || onchainSymbol || row.symbol || "",
1222
- decimals: Number.isFinite(onchainDecimals) ? onchainDecimals : row.decimals ?? AERODROME_COINBASE_STOCK_DECIMALS,
1256
+ decimals: Number.isFinite(onchainDecimals) ? onchainDecimals : row.decimals ?? COINBASE_B20_STOCK_DECIMALS,
1223
1257
  issued: supply > 0n
1224
1258
  };
1225
1259
  });
@@ -1227,30 +1261,15 @@ async function aerodromeResolveStockTokens(args) {
1227
1261
  return seedStockRows();
1228
1262
  }
1229
1263
  }
1230
- var AERODROME_COINBASE_STOCK_TOKENS, AERODROME_COINBASE_STOCK_DECIMALS, AERODROME_B20_ASSET_PREFIX, BASE_STOCKS_DOCS_URLS, MAX_DOCS_CHARS, MAX_OFFICIAL_STOCKS;
1264
+ var BASE_STOCKS_DOCS_URLS, MAX_DOCS_CHARS, MAX_OFFICIAL_STOCKS;
1231
1265
  var init_stockTokens = __esm({
1232
1266
  "src/protocols/evm/aerodrome/stockTokens.ts"() {
1267
+ init_coinbaseB20();
1233
1268
  init_addresses();
1234
1269
  init_abi();
1235
1270
  init_client();
1236
1271
  init_support();
1237
- AERODROME_COINBASE_STOCK_TOKENS = [
1238
- { symbol: "AAPLc", name: "Apple Inc.", address: "0xb200000000000000000000C2e324d24d7eEcd1fb" },
1239
- { symbol: "NVDAc", name: "NVIDIA Corporation", address: "0xb20000000000000000000078ee7ce2fE4908108C" },
1240
- { symbol: "METAc", name: "Meta Platforms Inc.", address: "0xb2000000000000000000008bC8786B856E61707C" },
1241
- { symbol: "GOOGLc", name: "Alphabet Inc.", address: "0xb2000000000000000000002D0BA3164cc74f58B7" },
1242
- { symbol: "AMZNc", name: "Amazon.com Inc.", address: "0xb200000000000000000000d9192b6B456483C2E8" },
1243
- { symbol: "TSLAc", name: "Tesla Inc.", address: "0xb2000000000000000000001e800a7f5189430cD0" },
1244
- { symbol: "MSFTc", name: "Microsoft Corporation", address: "0xB200000000000000000000Ab99cFa739E253872B" },
1245
- { symbol: "COINc", name: "Coinbase Global Inc.", address: "0xb200000000000000000000c85a31389D71F3ecfb" },
1246
- { symbol: "MSTRc", name: "Strategy Inc.", address: "0xb2000000000000000000004884b426556b92883d" },
1247
- { symbol: "CRCLc", name: "Circle Internet Group Inc.", address: "0xB20000000000000000000019f6E7C675b73C2e4D" },
1248
- { symbol: "INTCc", name: "Intel Corporation", address: "0xB2000000000000000000004AFF16039bA04bdFBc" },
1249
- { symbol: "SNDKc", name: "Sandisk Corporation", address: "0xb200000000000000000000397293Cb8cda9a10c5" },
1250
- { symbol: "SPCXc", name: "Space Exploration Technologies Corp.", address: "0xb2000000000000000000007b9fcbd005511aCBd5" }
1251
- ];
1252
- AERODROME_COINBASE_STOCK_DECIMALS = 8;
1253
- AERODROME_B20_ASSET_PREFIX = "0xb200000000000000000000";
1272
+ init_coinbaseB20();
1254
1273
  BASE_STOCKS_DOCS_URLS = [
1255
1274
  "https://docs.base.org/base-chain/asset-issuance/tokenized-stocks-on-base.md",
1256
1275
  "https://docs.base.org/base-chain/asset-issuance/tokenized-stocks-on-base"
@@ -1746,7 +1765,7 @@ async function aerodromeFetchStockLpYieldsSummary(args) {
1746
1765
  const addrs = await loadAerodromeAddresses();
1747
1766
  const scanned = await scanSugarTop(args.rpcUrl);
1748
1767
  const aeroUsd = aeroUsdPriceFromRows(scanned, addrs.aero);
1749
- const stock = scanned.filter((r) => isAerodromeB20AssetToken(r.token0) || isAerodromeB20AssetToken(r.token1));
1768
+ const stock = scanned.filter((r) => isCoinbaseB20AssetToken(r.token0) || isCoinbaseB20AssetToken(r.token1));
1750
1769
  const pools = rankAndCap(stock.map((r) => toYieldRow(r, aeroUsd)), args.query);
1751
1770
  return {
1752
1771
  chainId: AERODROME_CHAIN_ID,
@@ -2332,7 +2351,7 @@ async function quoteAerodromeHopsAmountOut(args) {
2332
2351
  }
2333
2352
  async function readTokenDecimals(rpcUrl, token, isNative) {
2334
2353
  if (isNative) return 18;
2335
- if (isAerodromeCoinbaseStockToken(token)) return AERODROME_COINBASE_STOCK_DECIMALS;
2354
+ if (isAerodromeCoinbaseStockToken(token)) return COINBASE_B20_STOCK_DECIMALS;
2336
2355
  if (token.toLowerCase() === AERODROME_USDC_BASE.toLowerCase()) return 6;
2337
2356
  const client = aerodromePublicClient(rpcUrl);
2338
2357
  return Number(
@@ -2361,7 +2380,7 @@ async function aerodromeQuote(args) {
2361
2380
  }
2362
2381
  let decimals = args.tokenInDecimals;
2363
2382
  if (isAerodromeCoinbaseStockToken(tokenIn)) {
2364
- decimals = AERODROME_COINBASE_STOCK_DECIMALS;
2383
+ decimals = COINBASE_B20_STOCK_DECIMALS;
2365
2384
  } else if (decimals == null) {
2366
2385
  decimals = await readTokenDecimals(rpcUrl, tokenIn, isNativeIn);
2367
2386
  }
@@ -3095,13 +3114,13 @@ function pairTokenLabel(address, isNative) {
3095
3114
  if (isNative) return "ETH";
3096
3115
  if (address.toLowerCase() === AERODROME_WETH_BASE.toLowerCase()) return "WETH";
3097
3116
  if (address.toLowerCase() === AERODROME_USDC_BASE.toLowerCase()) return "USDC";
3098
- const stock = AERODROME_COINBASE_STOCK_TOKENS.find((t) => t.address.toLowerCase() === address.toLowerCase());
3117
+ const stock = COINBASE_B20_STOCK_TOKENS.find((t) => t.address.toLowerCase() === address.toLowerCase());
3099
3118
  return stock?.symbol || `${address.slice(0, 6)}\u2026${address.slice(-4)}`;
3100
3119
  }
3101
3120
  function noDirectPoolHint(args) {
3102
3121
  const a = pairTokenLabel(args.tokenA, args.isNativeA);
3103
3122
  const b = pairTokenLabel(args.tokenB, args.isNativeB);
3104
- const stockAddr = isAerodromeB20AssetToken(args.tokenB) ? args.tokenB : isAerodromeB20AssetToken(args.tokenA) ? args.tokenA : null;
3123
+ const stockAddr = isCoinbaseB20AssetToken(args.tokenB) ? args.tokenB : isCoinbaseB20AssetToken(args.tokenA) ? args.tokenA : null;
3105
3124
  if (stockAddr) {
3106
3125
  const sym = pairTokenLabel(stockAddr, false);
3107
3126
  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.`;
@@ -3143,8 +3162,8 @@ async function aerodromeQuoteAddLiquidity(args) {
3143
3162
  const rawA = (args.amountAHuman ?? "").trim().replace(/,/g, "");
3144
3163
  const rawB = (args.amountBHuman ?? "").trim().replace(/,/g, "");
3145
3164
  if (!rawA && !rawB) throw new Error("Enter amount A or amount B.");
3146
- const decA = isAerodromeCoinbaseStockToken(tokenA) ? AERODROME_COINBASE_STOCK_DECIMALS : args.tokenADecimals ?? (isNativeA ? 18 : Number(await client.readContract({ address: tokenA, abi: erc20Abi, functionName: "decimals" })));
3147
- const decB = isAerodromeCoinbaseStockToken(tokenB) ? AERODROME_COINBASE_STOCK_DECIMALS : args.tokenBDecimals ?? (isNativeB ? 18 : Number(await client.readContract({ address: tokenB, abi: erc20Abi, functionName: "decimals" })));
3165
+ const decA = isAerodromeCoinbaseStockToken(tokenA) ? COINBASE_B20_STOCK_DECIMALS : args.tokenADecimals ?? (isNativeA ? 18 : Number(await client.readContract({ address: tokenA, abi: erc20Abi, functionName: "decimals" })));
3166
+ const decB = isAerodromeCoinbaseStockToken(tokenB) ? COINBASE_B20_STOCK_DECIMALS : args.tokenBDecimals ?? (isNativeB ? 18 : Number(await client.readContract({ address: tokenB, abi: erc20Abi, functionName: "decimals" })));
3148
3167
  const pool = await client.readContract({
3149
3168
  address: addrs.router,
3150
3169
  abi: routerAbi,
@@ -4051,7 +4070,7 @@ function mergeStocksIntoListed(tokens, stocks) {
4051
4070
  byAddr.set(key, {
4052
4071
  address: stock.address,
4053
4072
  symbol: stock.symbol || prev?.symbol || "",
4054
- decimals: stock.decimals || prev?.decimals || AERODROME_COINBASE_STOCK_DECIMALS,
4073
+ decimals: stock.decimals || prev?.decimals || COINBASE_B20_STOCK_DECIMALS,
4055
4074
  listed: prev?.listed ?? true,
4056
4075
  emerging: prev?.emerging ?? false,
4057
4076
  accountBalance: prev?.accountBalance ?? "0",
@@ -4060,7 +4079,7 @@ function mergeStocksIntoListed(tokens, stocks) {
4060
4079
  });
4061
4080
  }
4062
4081
  const stocksFirst = stocks.map((s) => byAddr.get(s.address.toLowerCase())).filter(Boolean);
4063
- const rest = [...byAddr.values()].filter((t) => !isAerodromeB20AssetToken(t.address));
4082
+ const rest = [...byAddr.values()].filter((t) => !isCoinbaseB20AssetToken(t.address));
4064
4083
  return [...stocksFirst, ...rest];
4065
4084
  }
4066
4085
  async function aerodromeFetchListedTokensSummary(args) {
@@ -4260,6 +4279,6 @@ var aerodromeProtocolModule = {
4260
4279
  };
4261
4280
  registerProtocolModule(aerodromeProtocolModule);
4262
4281
 
4263
- export { AERODROME_B20_ASSET_PREFIX, AERODROME_BASE_ADDRESSES_FALLBACK, AERODROME_CHAIN_ID, AERODROME_CL_FACTORY_NEWEST_BIT, AERODROME_CL_FACTORY_OLDEST_BIT, AERODROME_COINBASE_STOCK_DECIMALS, AERODROME_COINBASE_STOCK_TOKENS, AERODROME_IMPORTANT_POOL_CAP, AERODROME_NATIVE_PLACEHOLDER, AERODROME_PROTOCOL_ID, AERODROME_STABLE_FILLER, AERODROME_USDC_BASE, AERODROME_VOLATILE_FILLER, AERODROME_WETH_BASE, aerodromeClFactoryList, aerodromeClSwapRouterForFactory, aerodromeCoinbaseStockAddresses, aerodromeDiscoverConnectorPools, aerodromeDiscoverConnectorPoolsLoaded, aerodromeDiscoverDirectPools, aerodromeDiscoverPoolsSummary, aerodromeFallbackAddresses, aerodromeFetchImportantPoolsSummary, aerodromeFetchListedTokens, aerodromeFetchListedTokensSummary, aerodromeFetchLpYieldsForPair, aerodromeFetchLpYieldsForPools, aerodromeFetchLpYieldsSummary, aerodromeFetchPools, aerodromeFetchPoolsByAddress, aerodromeFetchPoolsSummary, aerodromeFetchPositions, aerodromeFetchPositionsSummary, aerodromeFetchPositionsWithPools, aerodromeFetchStockLpYieldsSummary, aerodromeFetchSwapPools, aerodromeMixedPathFiller, aerodromeOnChainDeadlineUnix, aerodromePositionKey, aerodromePositionLabel, aerodromeProbeAmountIn, aerodromeProtocolModule, aerodromeQuote, aerodromeQuoteAddLiquidity, aerodromeQuoteClDeposit, aerodromeResolveStockTokens, aerodromeUnissuedStockMessage, assertAerodromeStockIssued, buildAerodromeLiquidityPurposePrefill, buildAerodromeRewardsPurposePrefill, buildAerodromeSwapPurposePrefill, buildEvmMultisignBodyAerodromeAddLiquidityBatch, buildEvmMultisignBodyAerodromeClBurnBatch, buildEvmMultisignBodyAerodromeClCollectBatch, buildEvmMultisignBodyAerodromeClDecreaseBatch, buildEvmMultisignBodyAerodromeClIncreaseBatch, buildEvmMultisignBodyAerodromeClMintBatch, buildEvmMultisignBodyAerodromeClaimEmissionsBatch, buildEvmMultisignBodyAerodromeClaimFeesBatch, buildEvmMultisignBodyAerodromeGaugeStakeBatch, buildEvmMultisignBodyAerodromeGaugeUnstakeBatch, buildEvmMultisignBodyAerodromeRemoveLiquidityBatch, buildEvmMultisignBodyAerodromeSwapBatch, computeAerodromePriceImpactPercent, encodeAerodromeMixedPath, fetchOfficialBaseTokenizedStocks, findAerodromePaths, formatAerodromeLpYieldLabel, formatAerodromePriceImpact, isAerodromeB20AssetToken, isAerodromeChainSupported, isAerodromeCoinbaseStockToken, isAerodromeNativeToken, loadAerodromeAddresses, looksLikeCoinbaseStockSymbol, lookupAerodromeKnownToken, parseBaseTokenizedStockDocs, parseSecurityMdxAddresses, parseSugarBaseEnv, quoteAerodromeHopsAmountOut, requireAerodromeRpcUrl, resetAerodromeAddressCache, resolveAerodromeErc20OrWeth, tryAerodromeSdkQuote, tryAerodromeSdkUnsignedSwap };
4282
+ export { COINBASE_B20_ASSET_PREFIX as AERODROME_B20_ASSET_PREFIX, AERODROME_BASE_ADDRESSES_FALLBACK, AERODROME_CHAIN_ID, AERODROME_CL_FACTORY_NEWEST_BIT, AERODROME_CL_FACTORY_OLDEST_BIT, COINBASE_B20_STOCK_DECIMALS as AERODROME_COINBASE_STOCK_DECIMALS, COINBASE_B20_STOCK_TOKENS as AERODROME_COINBASE_STOCK_TOKENS, AERODROME_IMPORTANT_POOL_CAP, AERODROME_NATIVE_PLACEHOLDER, AERODROME_PROTOCOL_ID, AERODROME_STABLE_FILLER, AERODROME_USDC_BASE, AERODROME_VOLATILE_FILLER, AERODROME_WETH_BASE, aerodromeClFactoryList, aerodromeClSwapRouterForFactory, aerodromeCoinbaseStockAddresses, aerodromeDiscoverConnectorPools, aerodromeDiscoverConnectorPoolsLoaded, aerodromeDiscoverDirectPools, aerodromeDiscoverPoolsSummary, aerodromeFallbackAddresses, aerodromeFetchImportantPoolsSummary, aerodromeFetchListedTokens, aerodromeFetchListedTokensSummary, aerodromeFetchLpYieldsForPair, aerodromeFetchLpYieldsForPools, aerodromeFetchLpYieldsSummary, aerodromeFetchPools, aerodromeFetchPoolsByAddress, aerodromeFetchPoolsSummary, aerodromeFetchPositions, aerodromeFetchPositionsSummary, aerodromeFetchPositionsWithPools, aerodromeFetchStockLpYieldsSummary, aerodromeFetchSwapPools, aerodromeMixedPathFiller, aerodromeOnChainDeadlineUnix, aerodromePositionKey, aerodromePositionLabel, aerodromeProbeAmountIn, aerodromeProtocolModule, aerodromeQuote, aerodromeQuoteAddLiquidity, aerodromeQuoteClDeposit, aerodromeResolveStockTokens, aerodromeUnissuedStockMessage, assertAerodromeStockIssued, buildAerodromeLiquidityPurposePrefill, buildAerodromeRewardsPurposePrefill, buildAerodromeSwapPurposePrefill, buildEvmMultisignBodyAerodromeAddLiquidityBatch, buildEvmMultisignBodyAerodromeClBurnBatch, buildEvmMultisignBodyAerodromeClCollectBatch, buildEvmMultisignBodyAerodromeClDecreaseBatch, buildEvmMultisignBodyAerodromeClIncreaseBatch, buildEvmMultisignBodyAerodromeClMintBatch, buildEvmMultisignBodyAerodromeClaimEmissionsBatch, buildEvmMultisignBodyAerodromeClaimFeesBatch, buildEvmMultisignBodyAerodromeGaugeStakeBatch, buildEvmMultisignBodyAerodromeGaugeUnstakeBatch, buildEvmMultisignBodyAerodromeRemoveLiquidityBatch, buildEvmMultisignBodyAerodromeSwapBatch, computeAerodromePriceImpactPercent, encodeAerodromeMixedPath, fetchOfficialBaseTokenizedStocks, findAerodromePaths, formatAerodromeLpYieldLabel, formatAerodromePriceImpact, isCoinbaseB20AssetToken as isAerodromeB20AssetToken, isAerodromeChainSupported, isAerodromeCoinbaseStockToken, isAerodromeNativeToken, loadAerodromeAddresses, looksLikeCoinbaseStockSymbol, lookupAerodromeKnownToken, parseBaseTokenizedStockDocs, parseSecurityMdxAddresses, parseSugarBaseEnv, quoteAerodromeHopsAmountOut, requireAerodromeRpcUrl, resetAerodromeAddressCache, resolveAerodromeErc20OrWeth, tryAerodromeSdkQuote, tryAerodromeSdkUnsignedSwap };
4264
4283
  //# sourceMappingURL=index.js.map
4265
4284
  //# sourceMappingURL=index.js.map