@continuumdao/ctm-mpc-defi 0.2.55 → 0.2.57
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 +692 -310
- package/dist/agent/catalog.cjs.map +1 -1
- package/dist/agent/catalog.d.ts +279 -99
- package/dist/agent/catalog.js +687 -312
- package/dist/agent/catalog.js.map +1 -1
- package/dist/agent/skills/aave-v4/SKILL.md +26 -3
- package/dist/agent/skills/aerodrome/SKILL.md +3 -1
- package/dist/agent/skills/circle-cctp/SKILL.md +5 -4
- package/dist/agent/skills/continuum-dao-marketplace/SKILL.md +4 -4
- package/dist/agent/skills/curve-dao/SKILL.md +2 -2
- package/dist/agent/skills/uniswap-v4/SKILL.md +2 -2
- package/dist/index.cjs +165 -19
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +166 -20
- package/dist/index.js.map +1 -1
- package/dist/protocols/evm/aave-v4/index.cjs +198 -15
- package/dist/protocols/evm/aave-v4/index.cjs.map +1 -1
- package/dist/protocols/evm/aave-v4/index.d.ts +62 -7
- package/dist/protocols/evm/aave-v4/index.js +189 -16
- package/dist/protocols/evm/aave-v4/index.js.map +1 -1
- package/dist/protocols/evm/aerodrome/index.cjs +152 -63
- package/dist/protocols/evm/aerodrome/index.cjs.map +1 -1
- package/dist/protocols/evm/aerodrome/index.d.ts +30 -58
- package/dist/protocols/evm/aerodrome/index.js +151 -64
- package/dist/protocols/evm/aerodrome/index.js.map +1 -1
- package/dist/protocols/evm/circle-cctp/index.cjs +77 -19
- package/dist/protocols/evm/circle-cctp/index.cjs.map +1 -1
- package/dist/protocols/evm/circle-cctp/index.d.ts +53 -3
- package/dist/protocols/evm/circle-cctp/index.js +76 -20
- package/dist/protocols/evm/circle-cctp/index.js.map +1 -1
- package/dist/protocols/evm/compound-v3/index.cjs +115 -2
- package/dist/protocols/evm/compound-v3/index.cjs.map +1 -1
- package/dist/protocols/evm/compound-v3/index.js +116 -3
- package/dist/protocols/evm/compound-v3/index.js.map +1 -1
- package/dist/protocols/evm/continuum-dao/index.cjs +288 -32
- package/dist/protocols/evm/continuum-dao/index.cjs.map +1 -1
- package/dist/protocols/evm/continuum-dao/index.d.ts +14 -1
- package/dist/protocols/evm/continuum-dao/index.js +287 -33
- package/dist/protocols/evm/continuum-dao/index.js.map +1 -1
- package/dist/protocols/evm/curve-dao/index.cjs +120 -5
- package/dist/protocols/evm/curve-dao/index.cjs.map +1 -1
- package/dist/protocols/evm/curve-dao/index.js +120 -5
- package/dist/protocols/evm/curve-dao/index.js.map +1 -1
- package/dist/protocols/evm/euler-v2/index.cjs +121 -6
- package/dist/protocols/evm/euler-v2/index.cjs.map +1 -1
- package/dist/protocols/evm/euler-v2/index.js +121 -6
- package/dist/protocols/evm/euler-v2/index.js.map +1 -1
- package/dist/protocols/evm/morpho/index.cjs +129 -57
- package/dist/protocols/evm/morpho/index.cjs.map +1 -1
- package/dist/protocols/evm/morpho/index.d.ts +2 -1
- package/dist/protocols/evm/morpho/index.js +129 -58
- package/dist/protocols/evm/morpho/index.js.map +1 -1
- package/dist/protocols/evm/pendle/index.cjs +129 -10
- package/dist/protocols/evm/pendle/index.cjs.map +1 -1
- package/dist/protocols/evm/pendle/index.js +129 -10
- package/dist/protocols/evm/pendle/index.js.map +1 -1
- package/dist/protocols/evm/uniswap-v4/index.cjs +164 -17
- package/dist/protocols/evm/uniswap-v4/index.cjs.map +1 -1
- package/dist/protocols/evm/uniswap-v4/index.js +165 -18
- package/dist/protocols/evm/uniswap-v4/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -64,7 +64,12 @@ type KeyGenSubset = {
|
|
|
64
64
|
type KeyGenSubsetForPermit = KeyGenSubset;
|
|
65
65
|
|
|
66
66
|
declare const AERODROME_PROTOCOL_ID: "aerodrome";
|
|
67
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* Live Aerodrome deployment. Aero (the rename) is scheduled for 2026-10-22T00:00:00Z
|
|
69
|
+
* on Base, Ethereum, OP Mainnet, Arc, Ink, Robinhood Chain, and Arbitrum, but those
|
|
70
|
+
* contract addresses are not published yet. Do not add chains until the official
|
|
71
|
+
* sugar/security docs list them. Coinbase tokenized stocks stay on Base.
|
|
72
|
+
*/
|
|
68
73
|
declare const AERODROME_CHAIN_ID: 8453;
|
|
69
74
|
/** Native ETH placeholder used by the app and MCP (Uniswap-style). */
|
|
70
75
|
declare const AERODROME_NATIVE_PLACEHOLDER: "0x0000000000000000000000000000000000000000";
|
|
@@ -128,67 +133,26 @@ declare function aerodromeClFactoryList(addrs: AerodromeAddresses): Address[];
|
|
|
128
133
|
declare function aerodromeClSwapRouterForFactory(addrs: AerodromeAddresses, factory: Address): Address;
|
|
129
134
|
|
|
130
135
|
/**
|
|
131
|
-
*
|
|
132
|
-
*
|
|
136
|
+
* Coinbase B20 tokenized stocks on Base. Addresses come from
|
|
137
|
+
* https://api.coinbase.com/v1/tokenized-stocks — there is no baked-in token list.
|
|
133
138
|
*/
|
|
134
|
-
declare const COINBASE_B20_STOCK_TOKENS: readonly [{
|
|
135
|
-
readonly symbol: "AAPLc";
|
|
136
|
-
readonly name: "Apple Inc.";
|
|
137
|
-
readonly address: "0xb200000000000000000000C2e324d24d7eEcd1fb";
|
|
138
|
-
}, {
|
|
139
|
-
readonly symbol: "NVDAc";
|
|
140
|
-
readonly name: "NVIDIA Corporation";
|
|
141
|
-
readonly address: "0xb20000000000000000000078ee7ce2fE4908108C";
|
|
142
|
-
}, {
|
|
143
|
-
readonly symbol: "METAc";
|
|
144
|
-
readonly name: "Meta Platforms Inc.";
|
|
145
|
-
readonly address: "0xb2000000000000000000008bC8786B856E61707C";
|
|
146
|
-
}, {
|
|
147
|
-
readonly symbol: "GOOGLc";
|
|
148
|
-
readonly name: "Alphabet Inc.";
|
|
149
|
-
readonly address: "0xb2000000000000000000002D0BA3164cc74f58B7";
|
|
150
|
-
}, {
|
|
151
|
-
readonly symbol: "AMZNc";
|
|
152
|
-
readonly name: "Amazon.com Inc.";
|
|
153
|
-
readonly address: "0xb200000000000000000000d9192b6B456483C2E8";
|
|
154
|
-
}, {
|
|
155
|
-
readonly symbol: "TSLAc";
|
|
156
|
-
readonly name: "Tesla Inc.";
|
|
157
|
-
readonly address: "0xb2000000000000000000001e800a7f5189430cD0";
|
|
158
|
-
}, {
|
|
159
|
-
readonly symbol: "MSFTc";
|
|
160
|
-
readonly name: "Microsoft Corporation";
|
|
161
|
-
readonly address: "0xB200000000000000000000Ab99cFa739E253872B";
|
|
162
|
-
}, {
|
|
163
|
-
readonly symbol: "COINc";
|
|
164
|
-
readonly name: "Coinbase Global Inc.";
|
|
165
|
-
readonly address: "0xb200000000000000000000c85a31389D71F3ecfb";
|
|
166
|
-
}, {
|
|
167
|
-
readonly symbol: "MSTRc";
|
|
168
|
-
readonly name: "Strategy Inc.";
|
|
169
|
-
readonly address: "0xb2000000000000000000004884b426556b92883d";
|
|
170
|
-
}, {
|
|
171
|
-
readonly symbol: "CRCLc";
|
|
172
|
-
readonly name: "Circle Internet Group Inc.";
|
|
173
|
-
readonly address: "0xB20000000000000000000019f6E7C675b73C2e4D";
|
|
174
|
-
}, {
|
|
175
|
-
readonly symbol: "INTCc";
|
|
176
|
-
readonly name: "Intel Corporation";
|
|
177
|
-
readonly address: "0xB2000000000000000000004AFF16039bA04bdFBc";
|
|
178
|
-
}, {
|
|
179
|
-
readonly symbol: "SNDKc";
|
|
180
|
-
readonly name: "Sandisk Corporation";
|
|
181
|
-
readonly address: "0xb200000000000000000000397293Cb8cda9a10c5";
|
|
182
|
-
}, {
|
|
183
|
-
readonly symbol: "SPCXc";
|
|
184
|
-
readonly name: "Space Exploration Technologies Corp.";
|
|
185
|
-
readonly address: "0xb2000000000000000000007b9fcbd005511aCBd5";
|
|
186
|
-
}];
|
|
187
139
|
declare const COINBASE_B20_STOCK_DECIMALS: 8;
|
|
188
140
|
/** B20 ASSET variant addresses: `[10-byte 0xb200…][variant 0x00][9-byte hash]`. */
|
|
189
141
|
declare const COINBASE_B20_ASSET_PREFIX = "0xb200000000000000000000";
|
|
142
|
+
type CoinbaseB20KnownToken = {
|
|
143
|
+
address: Address;
|
|
144
|
+
symbol: string;
|
|
145
|
+
decimals: number;
|
|
146
|
+
name?: string;
|
|
147
|
+
iconUrl?: string;
|
|
148
|
+
};
|
|
190
149
|
declare function isCoinbaseB20AssetToken(address: string): boolean;
|
|
150
|
+
/** Tickers such as AAPLc and BRK.Bc. Rejects WETH, USDC, and AERO. */
|
|
191
151
|
declare function looksLikeCoinbaseStockSymbol(symbol: string): boolean;
|
|
152
|
+
type CoinbaseB20CatalogToken = CoinbaseB20KnownToken & {
|
|
153
|
+
name: string;
|
|
154
|
+
};
|
|
155
|
+
declare function coinbaseB20CatalogTokens(): readonly CoinbaseB20CatalogToken[];
|
|
192
156
|
|
|
193
157
|
declare function isAerodromeCoinbaseStockToken(address: string): boolean;
|
|
194
158
|
type AerodromeStockTokenRow = {
|
|
@@ -197,6 +161,7 @@ type AerodromeStockTokenRow = {
|
|
|
197
161
|
name: string;
|
|
198
162
|
decimals: number;
|
|
199
163
|
issued: boolean;
|
|
164
|
+
iconUrl?: string;
|
|
200
165
|
};
|
|
201
166
|
type AerodromeKnownToken = {
|
|
202
167
|
address: Address;
|
|
@@ -205,6 +170,8 @@ type AerodromeKnownToken = {
|
|
|
205
170
|
};
|
|
206
171
|
/** Tickers the MCP quote/swap tools accept without a 0x address. */
|
|
207
172
|
declare function lookupAerodromeKnownToken(token: string): AerodromeKnownToken | null;
|
|
173
|
+
/** Load the Coinbase catalog when a ticker is not already in the seed (PYPLc, AMDc, …). */
|
|
174
|
+
declare function ensureAerodromeStockTickers(tokens: string[]): Promise<void>;
|
|
208
175
|
declare function resolveAerodromeErc20OrWeth(token: string, weth: Address): Address;
|
|
209
176
|
declare function aerodromeUnissuedStockMessage(symbolOrAddress: string): string;
|
|
210
177
|
/** Same gate the Multi-Sign dialog uses: skip quote RPC when totalSupply is 0. */
|
|
@@ -220,11 +187,15 @@ declare function parseBaseTokenizedStockDocs(text: string): Array<{
|
|
|
220
187
|
symbol: string;
|
|
221
188
|
address: Address;
|
|
222
189
|
}>;
|
|
223
|
-
/** Optional enrichment only. Never throws — empty list if the
|
|
190
|
+
/** Optional enrichment only. Never throws — empty list if the API and docs are unusable. */
|
|
224
191
|
declare function fetchOfficialBaseTokenizedStocks(): Promise<Array<{
|
|
225
192
|
symbol: string;
|
|
226
193
|
address: Address;
|
|
227
194
|
}>>;
|
|
195
|
+
/**
|
|
196
|
+
* Live Coinbase catalog + Sugar B20 ASSET tokens that look like Coinbase stocks (`*c`).
|
|
197
|
+
* `issued` is `totalSupply() > 0`.
|
|
198
|
+
*/
|
|
228
199
|
declare function aerodromeResolveStockTokens(args: {
|
|
229
200
|
rpcUrl: string;
|
|
230
201
|
official?: Array<{
|
|
@@ -247,6 +218,7 @@ type AerodromeListedToken = {
|
|
|
247
218
|
accountBalance: string;
|
|
248
219
|
name?: string;
|
|
249
220
|
issued?: boolean;
|
|
221
|
+
iconUrl?: string;
|
|
250
222
|
};
|
|
251
223
|
type AerodromeSwapPool = {
|
|
252
224
|
lp: Address;
|
|
@@ -976,4 +948,4 @@ declare function aerodromePositionKey(row: {
|
|
|
976
948
|
|
|
977
949
|
declare const aerodromeProtocolModule: ProtocolModule;
|
|
978
950
|
|
|
979
|
-
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,
|
|
951
|
+
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, 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, coinbaseB20CatalogTokens as aerodromeCoinbaseStockCatalog, 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, ensureAerodromeStockTickers, fetchOfficialBaseTokenizedStocks, findAerodromePaths, formatAerodromeLpYieldLabel, formatAerodromePriceImpact, isCoinbaseB20AssetToken as isAerodromeB20AssetToken, isAerodromeChainSupported, isAerodromeCoinbaseStockToken, isAerodromeNativeToken, loadAerodromeAddresses, looksLikeCoinbaseStockSymbol, lookupAerodromeKnownToken, parseBaseTokenizedStockDocs, parseSecurityMdxAddresses, parseSugarBaseEnv, quoteAerodromeHopsAmountOut, requireAerodromeRpcUrl, resetAerodromeAddressCache, resolveAerodromeErc20OrWeth, tryAerodromeSdkQuote, tryAerodromeSdkUnsignedSwap };
|
|
@@ -212,50 +212,118 @@ function isCoinbaseB20AssetToken(address) {
|
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
214
|
function looksLikeCoinbaseStockSymbol(symbol) {
|
|
215
|
-
return /^[A-Za-z][A-Za-z0-9]{0,
|
|
215
|
+
return /^[A-Za-z][A-Za-z0-9]{0,8}(?:\.[A-Za-z][A-Za-z0-9]{0,4})?c$/.test((symbol ?? "").trim());
|
|
216
|
+
}
|
|
217
|
+
function coinbaseB20StockAddresses() {
|
|
218
|
+
return coinbaseB20CatalogTokens().map((t) => t.address);
|
|
219
|
+
}
|
|
220
|
+
function indexCatalog(rows) {
|
|
221
|
+
catalogRows = rows;
|
|
222
|
+
catalogAt = Date.now();
|
|
223
|
+
catalogBySymbol.clear();
|
|
224
|
+
catalogByAddress.clear();
|
|
225
|
+
for (const row of rows) {
|
|
226
|
+
catalogBySymbol.set(row.symbol.toLowerCase(), row);
|
|
227
|
+
catalogByAddress.set(row.address.toLowerCase(), row);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
function coinbaseB20CatalogTokens() {
|
|
231
|
+
return catalogRows ?? [];
|
|
232
|
+
}
|
|
233
|
+
function parseCoinbaseTokenizedStocksPayload(payload) {
|
|
234
|
+
const tokens = Array.isArray(payload) ? payload : payload && typeof payload === "object" && Array.isArray(payload.tokens) ? payload.tokens : [];
|
|
235
|
+
const out = [];
|
|
236
|
+
const seen = /* @__PURE__ */ new Set();
|
|
237
|
+
for (const row of tokens) {
|
|
238
|
+
if (!row || typeof row !== "object") continue;
|
|
239
|
+
const rec = row;
|
|
240
|
+
const symbol = typeof rec.symbol === "string" ? rec.symbol.trim() : "";
|
|
241
|
+
const addressRaw = typeof rec.contract_address === "string" ? rec.contract_address.trim() : "";
|
|
242
|
+
if (!looksLikeCoinbaseStockSymbol(symbol) || !isCoinbaseB20AssetToken(addressRaw)) continue;
|
|
243
|
+
const address = getAddress(addressRaw);
|
|
244
|
+
const key = address.toLowerCase();
|
|
245
|
+
if (seen.has(key)) continue;
|
|
246
|
+
seen.add(key);
|
|
247
|
+
const name = typeof rec.name === "string" && rec.name.trim() ? rec.name.trim() : symbol;
|
|
248
|
+
const iconUrl = typeof rec.icon_url === "string" && rec.icon_url.trim() ? rec.icon_url.trim() : void 0;
|
|
249
|
+
const decimals = typeof rec.decimals === "number" && Number.isInteger(rec.decimals) && rec.decimals >= 0 && rec.decimals <= 18 ? rec.decimals : COINBASE_B20_STOCK_DECIMALS;
|
|
250
|
+
out.push({ address, symbol, name, decimals, iconUrl });
|
|
251
|
+
if (out.length >= CATALOG_MAX) break;
|
|
252
|
+
}
|
|
253
|
+
return out;
|
|
254
|
+
}
|
|
255
|
+
async function fetchCoinbaseB20StockCatalog() {
|
|
256
|
+
const merged = [];
|
|
257
|
+
const seen = /* @__PURE__ */ new Set();
|
|
258
|
+
let pageToken = "";
|
|
259
|
+
for (let page = 0; page < 4; page++) {
|
|
260
|
+
const url = new URL(COINBASE_TOKENIZED_STOCKS_API_URL);
|
|
261
|
+
url.searchParams.set("page_size", "500");
|
|
262
|
+
if (pageToken) url.searchParams.set("page_token", pageToken);
|
|
263
|
+
const res = await fetch(url, { cache: "no-store", signal: AbortSignal.timeout(8e3) });
|
|
264
|
+
if (!res.ok) break;
|
|
265
|
+
const json = await res.json();
|
|
266
|
+
for (const row of parseCoinbaseTokenizedStocksPayload(json)) {
|
|
267
|
+
const key = row.address.toLowerCase();
|
|
268
|
+
if (seen.has(key)) continue;
|
|
269
|
+
seen.add(key);
|
|
270
|
+
merged.push(row);
|
|
271
|
+
if (merged.length >= CATALOG_MAX) break;
|
|
272
|
+
}
|
|
273
|
+
pageToken = typeof json.next_page_token === "string" ? json.next_page_token.trim() : "";
|
|
274
|
+
if (!pageToken || merged.length >= CATALOG_MAX) break;
|
|
275
|
+
}
|
|
276
|
+
if (merged.length > 0) indexCatalog(merged);
|
|
277
|
+
return catalogRows ?? [];
|
|
278
|
+
}
|
|
279
|
+
async function ensureCoinbaseB20StockCatalog() {
|
|
280
|
+
if (catalogRows && catalogRows.length > 0 && Date.now() - catalogAt < CATALOG_TTL_MS) return catalogRows;
|
|
281
|
+
if (!catalogInflight) {
|
|
282
|
+
catalogInflight = fetchCoinbaseB20StockCatalog().finally(() => {
|
|
283
|
+
catalogInflight = null;
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
try {
|
|
287
|
+
return await catalogInflight;
|
|
288
|
+
} catch {
|
|
289
|
+
return catalogRows ?? [];
|
|
290
|
+
}
|
|
216
291
|
}
|
|
217
292
|
function lookupCoinbaseB20StockToken(token) {
|
|
218
293
|
const key = (token ?? "").trim();
|
|
219
294
|
if (!key) return null;
|
|
220
|
-
const
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
return
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
decimals: COINBASE_B20_STOCK_DECIMALS
|
|
227
|
-
};
|
|
295
|
+
const fromCatalog = catalogBySymbol.get(key.toLowerCase());
|
|
296
|
+
if (fromCatalog) return fromCatalog;
|
|
297
|
+
try {
|
|
298
|
+
return catalogByAddress.get(getAddress(key).toLowerCase()) ?? null;
|
|
299
|
+
} catch {
|
|
300
|
+
return null;
|
|
228
301
|
}
|
|
302
|
+
}
|
|
303
|
+
function coinbaseB20CatalogName(addressOrSymbol) {
|
|
304
|
+
const key = (addressOrSymbol ?? "").trim();
|
|
305
|
+
if (!key) return void 0;
|
|
306
|
+
const bySymbol = catalogBySymbol.get(key.toLowerCase());
|
|
307
|
+
if (bySymbol?.name) return bySymbol.name;
|
|
229
308
|
try {
|
|
230
|
-
|
|
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
|
-
}
|
|
309
|
+
return catalogByAddress.get(getAddress(key).toLowerCase())?.name;
|
|
235
310
|
} catch {
|
|
311
|
+
return void 0;
|
|
236
312
|
}
|
|
237
|
-
return null;
|
|
238
313
|
}
|
|
239
|
-
var
|
|
314
|
+
var COINBASE_B20_STOCK_DECIMALS, COINBASE_B20_ASSET_PREFIX, COINBASE_TOKENIZED_STOCKS_API_URL, CATALOG_TTL_MS, CATALOG_MAX, catalogRows, catalogAt, catalogInflight, catalogBySymbol, catalogByAddress;
|
|
240
315
|
var init_coinbaseB20 = __esm({
|
|
241
316
|
"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
317
|
COINBASE_B20_STOCK_DECIMALS = 8;
|
|
258
318
|
COINBASE_B20_ASSET_PREFIX = "0xb200000000000000000000";
|
|
319
|
+
COINBASE_TOKENIZED_STOCKS_API_URL = "https://api.coinbase.com/v1/tokenized-stocks";
|
|
320
|
+
CATALOG_TTL_MS = 15 * 60 * 1e3;
|
|
321
|
+
CATALOG_MAX = 500;
|
|
322
|
+
catalogRows = null;
|
|
323
|
+
catalogAt = 0;
|
|
324
|
+
catalogInflight = null;
|
|
325
|
+
catalogBySymbol = /* @__PURE__ */ new Map();
|
|
326
|
+
catalogByAddress = /* @__PURE__ */ new Map();
|
|
259
327
|
}
|
|
260
328
|
});
|
|
261
329
|
|
|
@@ -1099,6 +1167,16 @@ function lookupAerodromeKnownToken(token) {
|
|
|
1099
1167
|
}
|
|
1100
1168
|
return null;
|
|
1101
1169
|
}
|
|
1170
|
+
async function ensureAerodromeStockTickers(tokens) {
|
|
1171
|
+
const needsCatalog = tokens.some((token) => {
|
|
1172
|
+
const raw = (token ?? "").trim();
|
|
1173
|
+
if (!raw || isAerodromeNativeToken(raw)) return false;
|
|
1174
|
+
if (lookupAerodromeKnownToken(raw)) return false;
|
|
1175
|
+
if (/^0x[a-fA-F0-9]{40}$/.test(raw)) return false;
|
|
1176
|
+
return looksLikeCoinbaseStockSymbol(raw);
|
|
1177
|
+
});
|
|
1178
|
+
if (needsCatalog) await ensureCoinbaseB20StockCatalog();
|
|
1179
|
+
}
|
|
1102
1180
|
function resolveAerodromeErc20OrWeth(token, weth) {
|
|
1103
1181
|
const raw = (token ?? "").trim();
|
|
1104
1182
|
if (!raw) throw new Error("Token is required.");
|
|
@@ -1109,7 +1187,7 @@ function resolveAerodromeErc20OrWeth(token, weth) {
|
|
|
1109
1187
|
return getAddress(raw);
|
|
1110
1188
|
} catch {
|
|
1111
1189
|
throw new Error(
|
|
1112
|
-
`Unknown Aerodrome token "${raw}". Pass a 0x address or a
|
|
1190
|
+
`Unknown Aerodrome token "${raw}". Pass a 0x address or a ticker (ETH, WETH, USDC, AERO, AAPLc, \u2026). Coinbase B20 tickers come from the live tokenized-stocks catalog.`
|
|
1113
1191
|
);
|
|
1114
1192
|
}
|
|
1115
1193
|
}
|
|
@@ -1132,7 +1210,7 @@ async function assertAerodromeStockIssued(args) {
|
|
|
1132
1210
|
}
|
|
1133
1211
|
}
|
|
1134
1212
|
function aerodromeCoinbaseStockAddresses() {
|
|
1135
|
-
return
|
|
1213
|
+
return coinbaseB20StockAddresses();
|
|
1136
1214
|
}
|
|
1137
1215
|
function parseBaseTokenizedStockDocs(text) {
|
|
1138
1216
|
try {
|
|
@@ -1169,6 +1247,11 @@ function parseBaseTokenizedStockDocs(text) {
|
|
|
1169
1247
|
}
|
|
1170
1248
|
}
|
|
1171
1249
|
async function fetchOfficialBaseTokenizedStocks() {
|
|
1250
|
+
try {
|
|
1251
|
+
const live = await ensureCoinbaseB20StockCatalog();
|
|
1252
|
+
if (live.length > 0) return live.map((t) => ({ symbol: t.symbol, address: t.address }));
|
|
1253
|
+
} catch {
|
|
1254
|
+
}
|
|
1172
1255
|
for (const url of BASE_STOCKS_DOCS_URLS) {
|
|
1173
1256
|
try {
|
|
1174
1257
|
const res = await fetch(url, { cache: "no-store", signal: AbortSignal.timeout(8e3) });
|
|
@@ -1180,22 +1263,11 @@ async function fetchOfficialBaseTokenizedStocks() {
|
|
|
1180
1263
|
}
|
|
1181
1264
|
return [];
|
|
1182
1265
|
}
|
|
1183
|
-
function
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
const want = address.toLowerCase();
|
|
1189
|
-
return COINBASE_B20_STOCK_TOKENS.find((t) => getAddress(t.address).toLowerCase() === want)?.symbol;
|
|
1190
|
-
}
|
|
1191
|
-
function seedStockRows() {
|
|
1192
|
-
return COINBASE_B20_STOCK_TOKENS.map((t) => ({
|
|
1193
|
-
address: getAddress(t.address),
|
|
1194
|
-
symbol: t.symbol,
|
|
1195
|
-
name: t.name,
|
|
1196
|
-
decimals: COINBASE_B20_STOCK_DECIMALS,
|
|
1197
|
-
issued: false
|
|
1198
|
-
}));
|
|
1266
|
+
function catalogName(address) {
|
|
1267
|
+
return coinbaseB20CatalogName(address);
|
|
1268
|
+
}
|
|
1269
|
+
function catalogSymbol(address) {
|
|
1270
|
+
return lookupCoinbaseB20StockToken(address)?.symbol;
|
|
1199
1271
|
}
|
|
1200
1272
|
async function aerodromeResolveStockTokens(args) {
|
|
1201
1273
|
let official = [];
|
|
@@ -1217,21 +1289,18 @@ async function aerodromeResolveStockTokens(args) {
|
|
|
1217
1289
|
decimals: meta?.decimals ?? prev?.decimals
|
|
1218
1290
|
});
|
|
1219
1291
|
};
|
|
1220
|
-
for (const t of COINBASE_B20_STOCK_TOKENS) {
|
|
1221
|
-
add(t.address, { symbol: t.symbol, name: t.name, decimals: COINBASE_B20_STOCK_DECIMALS });
|
|
1222
|
-
}
|
|
1223
1292
|
for (const t of official) {
|
|
1224
1293
|
add(t.address, { symbol: t.symbol, decimals: COINBASE_B20_STOCK_DECIMALS });
|
|
1225
1294
|
}
|
|
1226
1295
|
for (const t of args.knownTokens ?? []) {
|
|
1227
1296
|
if (!isCoinbaseB20AssetToken(t.address)) continue;
|
|
1228
1297
|
const symbol = (t.symbol ?? "").trim();
|
|
1229
|
-
const
|
|
1230
|
-
if (!
|
|
1298
|
+
const known = Boolean(catalogSymbol(getAddress(t.address)));
|
|
1299
|
+
if (!known && symbol && !looksLikeCoinbaseStockSymbol(symbol)) continue;
|
|
1231
1300
|
add(t.address, { symbol, decimals: t.decimals });
|
|
1232
1301
|
}
|
|
1233
1302
|
const rows = [...candidates.values()];
|
|
1234
|
-
if (rows.length === 0) return
|
|
1303
|
+
if (rows.length === 0) return [];
|
|
1235
1304
|
try {
|
|
1236
1305
|
const client = aerodromePublicClient(args.rpcUrl);
|
|
1237
1306
|
const meta = await client.multicall({
|
|
@@ -1251,14 +1320,22 @@ async function aerodromeResolveStockTokens(args) {
|
|
|
1251
1320
|
const supply = meta[base + 3]?.status === "success" ? meta[base + 3].result : 0n;
|
|
1252
1321
|
return {
|
|
1253
1322
|
address: row.address,
|
|
1254
|
-
symbol: onchainSymbol || row.symbol ||
|
|
1255
|
-
name:
|
|
1323
|
+
symbol: onchainSymbol || row.symbol || catalogSymbol(row.address) || row.address.slice(0, 8),
|
|
1324
|
+
name: catalogName(row.address) || onchainName || onchainSymbol || row.symbol || "",
|
|
1256
1325
|
decimals: Number.isFinite(onchainDecimals) ? onchainDecimals : row.decimals ?? COINBASE_B20_STOCK_DECIMALS,
|
|
1257
|
-
issued: supply > 0n
|
|
1326
|
+
issued: supply > 0n,
|
|
1327
|
+
iconUrl: lookupCoinbaseB20StockToken(row.address)?.iconUrl
|
|
1258
1328
|
};
|
|
1259
1329
|
});
|
|
1260
1330
|
} catch {
|
|
1261
|
-
return
|
|
1331
|
+
return rows.map((row) => ({
|
|
1332
|
+
address: row.address,
|
|
1333
|
+
symbol: row.symbol || catalogSymbol(row.address) || row.address.slice(0, 8),
|
|
1334
|
+
name: row.name || catalogName(row.address) || row.symbol || "",
|
|
1335
|
+
decimals: row.decimals ?? COINBASE_B20_STOCK_DECIMALS,
|
|
1336
|
+
issued: false,
|
|
1337
|
+
iconUrl: lookupCoinbaseB20StockToken(row.address)?.iconUrl
|
|
1338
|
+
}));
|
|
1262
1339
|
}
|
|
1263
1340
|
}
|
|
1264
1341
|
var BASE_STOCKS_DOCS_URLS, MAX_DOCS_CHARS, MAX_OFFICIAL_STOCKS;
|
|
@@ -1473,6 +1550,7 @@ async function aerodromeDiscoverPoolsSummary(args) {
|
|
|
1473
1550
|
}
|
|
1474
1551
|
const rpcUrl = requireAerodromeRpcUrl(args.rpcUrl);
|
|
1475
1552
|
const addrs = await loadAerodromeAddresses();
|
|
1553
|
+
await ensureAerodromeStockTickers([args.token, args.tokenOut ?? ""]);
|
|
1476
1554
|
const isNative = isAerodromeNativeToken(args.token);
|
|
1477
1555
|
const token = resolveAerodromeErc20OrWeth(args.token, addrs.weth);
|
|
1478
1556
|
await assertAerodromeStockIssued({ rpcUrl, token, isNative, label: args.token });
|
|
@@ -1824,6 +1902,7 @@ init_abi();
|
|
|
1824
1902
|
init_addresses();
|
|
1825
1903
|
init_client();
|
|
1826
1904
|
init_support();
|
|
1905
|
+
init_coinbaseB20();
|
|
1827
1906
|
init_stockTokens();
|
|
1828
1907
|
function poolKind(type) {
|
|
1829
1908
|
if (type === 0) return "stable";
|
|
@@ -1844,6 +1923,7 @@ async function aerodromeFetchListedTokens(args) {
|
|
|
1844
1923
|
throw new Error(`Aerodrome is Base-only (chainId ${AERODROME_CHAIN_ID}).`);
|
|
1845
1924
|
}
|
|
1846
1925
|
const addrs = await loadAerodromeAddresses();
|
|
1926
|
+
await ensureCoinbaseB20StockCatalog().catch(() => []);
|
|
1847
1927
|
const client = aerodromePublicClient(args.rpcUrl);
|
|
1848
1928
|
const account = args.account?.trim() ? getAddress(args.account) : zeroAddress;
|
|
1849
1929
|
const extra = [...aerodromeCoinbaseStockAddresses(), ...args.extraAddresses ?? []].map((a) => {
|
|
@@ -2214,7 +2294,6 @@ init_client();
|
|
|
2214
2294
|
init_discover();
|
|
2215
2295
|
init_stockTokens();
|
|
2216
2296
|
init_support();
|
|
2217
|
-
init_stockTokens();
|
|
2218
2297
|
var AERODROME_STABLE_FILLER = 2097152;
|
|
2219
2298
|
var AERODROME_VOLATILE_FILLER = 4194304;
|
|
2220
2299
|
var AERODROME_CL_FACTORY_OLDEST_BIT = 1048576;
|
|
@@ -2371,6 +2450,7 @@ async function aerodromeQuote(args) {
|
|
|
2371
2450
|
}
|
|
2372
2451
|
const rpcUrl = requireAerodromeRpcUrl(args.rpcUrl);
|
|
2373
2452
|
const addrs = await loadAerodromeAddresses();
|
|
2453
|
+
await ensureAerodromeStockTickers([args.tokenIn, args.tokenOut]);
|
|
2374
2454
|
const isNativeIn = isAerodromeNativeToken(args.tokenIn);
|
|
2375
2455
|
const isNativeOut = isAerodromeNativeToken(args.tokenOut);
|
|
2376
2456
|
const tokenIn = resolveAerodromeErc20OrWeth(args.tokenIn, addrs.weth);
|
|
@@ -3114,8 +3194,7 @@ function pairTokenLabel(address, isNative) {
|
|
|
3114
3194
|
if (isNative) return "ETH";
|
|
3115
3195
|
if (address.toLowerCase() === AERODROME_WETH_BASE.toLowerCase()) return "WETH";
|
|
3116
3196
|
if (address.toLowerCase() === AERODROME_USDC_BASE.toLowerCase()) return "USDC";
|
|
3117
|
-
|
|
3118
|
-
return stock?.symbol || `${address.slice(0, 6)}\u2026${address.slice(-4)}`;
|
|
3197
|
+
return lookupAerodromeKnownToken(address)?.symbol || `${address.slice(0, 6)}\u2026${address.slice(-4)}`;
|
|
3119
3198
|
}
|
|
3120
3199
|
function noDirectPoolHint(args) {
|
|
3121
3200
|
const a = pairTokenLabel(args.tokenA, args.isNativeA);
|
|
@@ -3143,6 +3222,7 @@ async function aerodromeQuoteAddLiquidity(args) {
|
|
|
3143
3222
|
}
|
|
3144
3223
|
const addrs = await loadAerodromeAddresses();
|
|
3145
3224
|
const client = aerodromePublicClient(args.rpcUrl);
|
|
3225
|
+
await ensureAerodromeStockTickers([args.tokenA, args.tokenB]);
|
|
3146
3226
|
const isNativeA = isAerodromeNativeToken(args.tokenA);
|
|
3147
3227
|
const isNativeB = isAerodromeNativeToken(args.tokenB);
|
|
3148
3228
|
const tokenA = resolveAerodromeErc20OrWeth(args.tokenA, addrs.weth);
|
|
@@ -3333,6 +3413,7 @@ async function estimateClOtherSide(client, helper, amount, sqrtP, amountIs0) {
|
|
|
3333
3413
|
init_abi();
|
|
3334
3414
|
init_addresses();
|
|
3335
3415
|
init_client();
|
|
3416
|
+
init_stockTokens();
|
|
3336
3417
|
init_support();
|
|
3337
3418
|
function minAfterSlippage(amount, slippagePercent) {
|
|
3338
3419
|
if (!Number.isFinite(slippagePercent) || slippagePercent <= 0 || slippagePercent >= 100) {
|
|
@@ -3453,6 +3534,7 @@ async function buildEvmMultisignBodyAerodromeRemoveLiquidityBatch(args) {
|
|
|
3453
3534
|
const lp = getAddress(args.lpToken);
|
|
3454
3535
|
const dec = args.lpDecimals ?? Number(await client.readContract({ address: lp, abi: erc20Abi, functionName: "decimals" }));
|
|
3455
3536
|
const liquidity = parseUnits(args.liquidityHuman.trim(), dec);
|
|
3537
|
+
await ensureAerodromeStockTickers([args.tokenA, args.tokenB]);
|
|
3456
3538
|
const tokenA = resolveAerodromeErc20OrWeth(args.tokenA, addrs.weth);
|
|
3457
3539
|
const tokenB = resolveAerodromeErc20OrWeth(args.tokenB, addrs.weth);
|
|
3458
3540
|
const isNativeA = isAerodromeNativeToken(args.tokenA);
|
|
@@ -3517,6 +3599,7 @@ async function buildEvmMultisignBodyAerodromeRemoveLiquidityBatch(args) {
|
|
|
3517
3599
|
init_abi();
|
|
3518
3600
|
init_addresses();
|
|
3519
3601
|
init_client();
|
|
3602
|
+
init_stockTokens();
|
|
3520
3603
|
init_support();
|
|
3521
3604
|
async function aerodromeQuoteClDeposit(args) {
|
|
3522
3605
|
if (!isAerodromeChainSupported(args.chainId)) {
|
|
@@ -3524,6 +3607,7 @@ async function aerodromeQuoteClDeposit(args) {
|
|
|
3524
3607
|
}
|
|
3525
3608
|
const addrs = await loadAerodromeAddresses();
|
|
3526
3609
|
const client = aerodromePublicClient(args.rpcUrl);
|
|
3610
|
+
await ensureAerodromeStockTickers([args.token0, args.token1]);
|
|
3527
3611
|
const token0 = resolveAerodromeErc20OrWeth(args.token0, addrs.weth);
|
|
3528
3612
|
const token1 = resolveAerodromeErc20OrWeth(args.token1, addrs.weth);
|
|
3529
3613
|
const dec0 = args.token0Decimals ?? (isAerodromeNativeToken(args.token0) ? 18 : Number(await client.readContract({ address: token0, abi: erc20Abi, functionName: "decimals" })));
|
|
@@ -3568,6 +3652,7 @@ async function aerodromeQuoteClDeposit(args) {
|
|
|
3568
3652
|
// src/protocols/evm/aerodrome/liquidityClMultisign.ts
|
|
3569
3653
|
init_abi();
|
|
3570
3654
|
init_addresses();
|
|
3655
|
+
init_stockTokens();
|
|
3571
3656
|
init_support();
|
|
3572
3657
|
function minAfterSlippage2(amount, slippagePercent) {
|
|
3573
3658
|
if (!Number.isFinite(slippagePercent) || slippagePercent <= 0 || slippagePercent >= 100) {
|
|
@@ -3668,6 +3753,7 @@ async function buildEvmMultisignBodyAerodromeClIncreaseBatch(args) {
|
|
|
3668
3753
|
const addrs = await loadAerodromeAddresses();
|
|
3669
3754
|
const amount0 = BigInt(args.amount0Wei);
|
|
3670
3755
|
const amount1 = BigInt(args.amount1Wei);
|
|
3756
|
+
await ensureAerodromeStockTickers([args.token0, args.token1]);
|
|
3671
3757
|
const token0 = resolveAerodromeErc20OrWeth(args.token0, addrs.weth);
|
|
3672
3758
|
const token1 = resolveAerodromeErc20OrWeth(args.token1, addrs.weth);
|
|
3673
3759
|
const steps = [];
|
|
@@ -4075,7 +4161,8 @@ function mergeStocksIntoListed(tokens, stocks) {
|
|
|
4075
4161
|
emerging: prev?.emerging ?? false,
|
|
4076
4162
|
accountBalance: prev?.accountBalance ?? "0",
|
|
4077
4163
|
name: stock.name,
|
|
4078
|
-
issued: stock.issued
|
|
4164
|
+
issued: stock.issued,
|
|
4165
|
+
iconUrl: stock.iconUrl
|
|
4079
4166
|
});
|
|
4080
4167
|
}
|
|
4081
4168
|
const stocksFirst = stocks.map((s) => byAddr.get(s.address.toLowerCase())).filter(Boolean);
|
|
@@ -4279,6 +4366,6 @@ var aerodromeProtocolModule = {
|
|
|
4279
4366
|
};
|
|
4280
4367
|
registerProtocolModule(aerodromeProtocolModule);
|
|
4281
4368
|
|
|
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,
|
|
4369
|
+
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, 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, coinbaseB20CatalogTokens as aerodromeCoinbaseStockCatalog, 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, ensureAerodromeStockTickers, fetchOfficialBaseTokenizedStocks, findAerodromePaths, formatAerodromeLpYieldLabel, formatAerodromePriceImpact, isCoinbaseB20AssetToken as isAerodromeB20AssetToken, isAerodromeChainSupported, isAerodromeCoinbaseStockToken, isAerodromeNativeToken, loadAerodromeAddresses, looksLikeCoinbaseStockSymbol, lookupAerodromeKnownToken, parseBaseTokenizedStockDocs, parseSecurityMdxAddresses, parseSugarBaseEnv, quoteAerodromeHopsAmountOut, requireAerodromeRpcUrl, resetAerodromeAddressCache, resolveAerodromeErc20OrWeth, tryAerodromeSdkQuote, tryAerodromeSdkUnsignedSwap };
|
|
4283
4370
|
//# sourceMappingURL=index.js.map
|
|
4284
4371
|
//# sourceMappingURL=index.js.map
|