@continuumdao/ctm-mpc-defi 0.2.18 → 0.2.20
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 +185 -56
- package/dist/agent/catalog.cjs.map +1 -1
- package/dist/agent/catalog.d.ts +696 -633
- package/dist/agent/catalog.js +183 -57
- package/dist/agent/catalog.js.map +1 -1
- package/dist/agent/skills/hyperliquid/SKILL.md +24 -20
- package/dist/chains/evm/index.cjs +1 -1
- package/dist/chains/evm/index.cjs.map +1 -1
- package/dist/chains/evm/index.js +1 -1
- package/dist/chains/evm/index.js.map +1 -1
- package/dist/core/index.cjs +70 -1
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.ts +35 -2
- package/dist/core/index.js +69 -2
- package/dist/core/index.js.map +1 -1
- package/dist/index.cjs +69 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +69 -3
- package/dist/index.js.map +1 -1
- package/dist/protocols/evm/aave-v4/index.cjs +1 -1
- package/dist/protocols/evm/aave-v4/index.cjs.map +1 -1
- package/dist/protocols/evm/aave-v4/index.js +1 -1
- package/dist/protocols/evm/aave-v4/index.js.map +1 -1
- package/dist/protocols/evm/circle-cctp/index.cjs +1 -1
- package/dist/protocols/evm/circle-cctp/index.cjs.map +1 -1
- package/dist/protocols/evm/circle-cctp/index.js +1 -1
- package/dist/protocols/evm/circle-cctp/index.js.map +1 -1
- package/dist/protocols/evm/curve-dao/index.cjs +1 -1
- package/dist/protocols/evm/curve-dao/index.cjs.map +1 -1
- package/dist/protocols/evm/curve-dao/index.d.ts +1 -1
- package/dist/protocols/evm/curve-dao/index.js +1 -1
- package/dist/protocols/evm/curve-dao/index.js.map +1 -1
- package/dist/protocols/evm/ethena/index.cjs +1 -1
- package/dist/protocols/evm/ethena/index.cjs.map +1 -1
- package/dist/protocols/evm/ethena/index.js +1 -1
- package/dist/protocols/evm/ethena/index.js.map +1 -1
- package/dist/protocols/evm/euler-v2/index.cjs +1 -1
- package/dist/protocols/evm/euler-v2/index.cjs.map +1 -1
- package/dist/protocols/evm/euler-v2/index.js +1 -1
- package/dist/protocols/evm/euler-v2/index.js.map +1 -1
- package/dist/protocols/evm/gmx/index.cjs +50 -22
- package/dist/protocols/evm/gmx/index.cjs.map +1 -1
- package/dist/protocols/evm/gmx/index.d.ts +20 -6
- package/dist/protocols/evm/gmx/index.js +49 -23
- package/dist/protocols/evm/gmx/index.js.map +1 -1
- package/dist/protocols/evm/hyperliquid/index.cjs +462 -2
- package/dist/protocols/evm/hyperliquid/index.cjs.map +1 -1
- package/dist/protocols/evm/hyperliquid/index.d.ts +189 -2
- package/dist/protocols/evm/hyperliquid/index.js +442 -4
- package/dist/protocols/evm/hyperliquid/index.js.map +1 -1
- package/dist/protocols/evm/lido/index.cjs +1 -1
- package/dist/protocols/evm/lido/index.cjs.map +1 -1
- package/dist/protocols/evm/lido/index.js +1 -1
- package/dist/protocols/evm/lido/index.js.map +1 -1
- package/dist/protocols/evm/maple/index.cjs +1 -1
- package/dist/protocols/evm/maple/index.cjs.map +1 -1
- package/dist/protocols/evm/maple/index.js +1 -1
- package/dist/protocols/evm/maple/index.js.map +1 -1
- package/dist/protocols/evm/morpho/index.cjs +1 -1
- package/dist/protocols/evm/morpho/index.cjs.map +1 -1
- package/dist/protocols/evm/morpho/index.js +1 -1
- package/dist/protocols/evm/morpho/index.js.map +1 -1
- package/dist/protocols/evm/permit2/index.cjs +202 -0
- package/dist/protocols/evm/permit2/index.cjs.map +1 -0
- package/dist/protocols/evm/permit2/index.d.ts +43 -0
- package/dist/protocols/evm/permit2/index.js +199 -0
- package/dist/protocols/evm/permit2/index.js.map +1 -0
- package/dist/protocols/evm/sky/index.cjs +1 -1
- package/dist/protocols/evm/sky/index.cjs.map +1 -1
- package/dist/protocols/evm/sky/index.js +1 -1
- package/dist/protocols/evm/sky/index.js.map +1 -1
- package/dist/protocols/evm/uniswap-v4/index.cjs +1 -1
- package/dist/protocols/evm/uniswap-v4/index.cjs.map +1 -1
- package/dist/protocols/evm/uniswap-v4/index.js +1 -1
- package/dist/protocols/evm/uniswap-v4/index.js.map +1 -1
- package/package.json +7 -1
|
@@ -24,11 +24,15 @@ function isGmxChainSupported(chainId) {
|
|
|
24
24
|
}
|
|
25
25
|
var require2 = module$1.createRequire(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))));
|
|
26
26
|
var { GmxApiSdk } = require2("@gmx-io/sdk/v2");
|
|
27
|
+
var { getApiUrl, getApiFallbackUrls } = require2("@gmx-io/sdk/configs/api");
|
|
27
28
|
var GMX_HTTP_TIMEOUT_MS = 3e4;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
};
|
|
29
|
+
function gmxResolvedApiBaseUrls(chainId) {
|
|
30
|
+
const primary = getApiUrl(chainId);
|
|
31
|
+
if (!primary) {
|
|
32
|
+
throw new Error(`GMX API URLs are not configured for chain ${chainId}.`);
|
|
33
|
+
}
|
|
34
|
+
return [primary, ...getApiFallbackUrls(chainId)];
|
|
35
|
+
}
|
|
32
36
|
function buildGmxUrl(baseUrl, path, query) {
|
|
33
37
|
const base = baseUrl.replace(/\/$/, "");
|
|
34
38
|
if (!query) return `${base}${path}`;
|
|
@@ -93,10 +97,7 @@ async function gmxHttpPostJson(baseUrl, path, body, opts) {
|
|
|
93
97
|
}
|
|
94
98
|
}
|
|
95
99
|
function createIoFirstGmxHttpApi(chainId) {
|
|
96
|
-
const urls =
|
|
97
|
-
if (!urls) {
|
|
98
|
-
throw new Error(`GMX API URLs are not configured for chain ${chainId}.`);
|
|
99
|
-
}
|
|
100
|
+
const urls = gmxResolvedApiBaseUrls(chainId);
|
|
100
101
|
async function withIoFirstFallback(fn) {
|
|
101
102
|
let lastError;
|
|
102
103
|
for (const baseUrl of urls) {
|
|
@@ -581,7 +582,7 @@ function finalizeMultisign(input) {
|
|
|
581
582
|
batchMeta,
|
|
582
583
|
...input.extraJSON ?? {}
|
|
583
584
|
};
|
|
584
|
-
const extraJSON = JSON.stringify(extraPayload);
|
|
585
|
+
const extraJSON = JSON.stringify(extraPayload, (_, v) => typeof v === "bigint" ? v.toString() : v);
|
|
585
586
|
const bodyForSign = {
|
|
586
587
|
keyList,
|
|
587
588
|
pubKey: ph,
|
|
@@ -1315,7 +1316,9 @@ async function buildEvmMultisignBodyGmxIncreaseBatch(args) {
|
|
|
1315
1316
|
sizeUsdHuman: args.sizeUsdHuman,
|
|
1316
1317
|
collateralToken: collateralSymbol,
|
|
1317
1318
|
collateralAmountHuman: args.collateralAmountHuman,
|
|
1318
|
-
isNativeIn: Boolean(args.isNativeIn)
|
|
1319
|
+
isNativeIn: Boolean(args.isNativeIn),
|
|
1320
|
+
...args.orderType === "limit" && args.triggerPriceUsdHuman?.trim() ? { triggerPriceUsdHuman: args.triggerPriceUsdHuman.trim() } : {},
|
|
1321
|
+
...args.patternFailureUsdHuman?.trim() ? { pfE: args.patternFailureUsdHuman.trim() } : {}
|
|
1319
1322
|
},
|
|
1320
1323
|
prepSteps
|
|
1321
1324
|
);
|
|
@@ -2005,7 +2008,7 @@ async function gmxFetchGmLiquidityPositions(args) {
|
|
|
2005
2008
|
|
|
2006
2009
|
// src/protocols/evm/gmx/prices.ts
|
|
2007
2010
|
var GMX_OHLCV_TIMEFRAMES = ["1m", "5m", "15m", "1h", "4h", "1d", "1w", "1M"];
|
|
2008
|
-
var DEFAULT_OHLCV_LIMIT =
|
|
2011
|
+
var DEFAULT_OHLCV_LIMIT = 200;
|
|
2009
2012
|
function indexLabelFromMarketSymbol(symbol) {
|
|
2010
2013
|
const m = symbol.trim().match(/^([^/]+)\/USD/i);
|
|
2011
2014
|
return m?.[1]?.trim() || symbol.trim();
|
|
@@ -2062,18 +2065,21 @@ async function gmxFetchMarketPrices(args) {
|
|
|
2062
2065
|
if (!symbol) throw new Error("GMX market symbol is required.");
|
|
2063
2066
|
if (!collateralSymbol) throw new Error("Collateral symbol is required.");
|
|
2064
2067
|
const sdk = getGmxApiSdk(args.chainId);
|
|
2065
|
-
const
|
|
2066
|
-
sdk.fetchMarketsTickers({ symbols: [symbol] }),
|
|
2067
|
-
resolveGmxTokenBySymbol(args.chainId, collateralSymbol)
|
|
2068
|
-
]);
|
|
2068
|
+
const tickers = await sdk.fetchMarketsTickers({ symbols: [symbol] });
|
|
2069
2069
|
const ticker = tickers.find((t) => String(t.symbol ?? "") === symbol) ?? tickers[0];
|
|
2070
2070
|
const mark = asBigint3(ticker?.markPrice ?? ticker?.minPrice);
|
|
2071
2071
|
const indexMarkUsd = formatGmxUsd30(mark);
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2072
|
+
let collateralUsd = null;
|
|
2073
|
+
let indexPerCollateral = null;
|
|
2074
|
+
try {
|
|
2075
|
+
const collateralToken = await resolveGmxTokenBySymbol(args.chainId, collateralSymbol);
|
|
2076
|
+
const collateralPrice = asBigint3(
|
|
2077
|
+
collateralToken?.prices?.minPrice
|
|
2078
|
+
);
|
|
2079
|
+
collateralUsd = formatGmxUsd30(collateralPrice);
|
|
2080
|
+
indexPerCollateral = mark != null && collateralPrice != null ? formatIndexPerCollateral(mark, collateralPrice) : null;
|
|
2081
|
+
} catch {
|
|
2082
|
+
}
|
|
2077
2083
|
return {
|
|
2078
2084
|
symbol,
|
|
2079
2085
|
indexLabel: indexLabelFromMarketSymbol(symbol),
|
|
@@ -2084,18 +2090,38 @@ async function gmxFetchMarketPrices(args) {
|
|
|
2084
2090
|
fetchedAtMs: Date.now()
|
|
2085
2091
|
};
|
|
2086
2092
|
}
|
|
2093
|
+
function gmxOhlcvWindowFromCandles(candles) {
|
|
2094
|
+
if (candles.length === 0) {
|
|
2095
|
+
return { candleCount: 0 };
|
|
2096
|
+
}
|
|
2097
|
+
let startTimeMs = candles[0].timestampMs;
|
|
2098
|
+
let endTimeMs = candles[0].timestampMs;
|
|
2099
|
+
for (const candle of candles) {
|
|
2100
|
+
if (candle.timestampMs < startTimeMs) {
|
|
2101
|
+
startTimeMs = candle.timestampMs;
|
|
2102
|
+
}
|
|
2103
|
+
if (candle.timestampMs > endTimeMs) {
|
|
2104
|
+
endTimeMs = candle.timestampMs;
|
|
2105
|
+
}
|
|
2106
|
+
}
|
|
2107
|
+
return { startTimeMs, endTimeMs, candleCount: candles.length };
|
|
2108
|
+
}
|
|
2087
2109
|
async function gmxFetchOhlcv(args) {
|
|
2088
2110
|
const symbol = args.symbol.trim();
|
|
2089
2111
|
if (!symbol) throw new Error("GMX market symbol is required.");
|
|
2090
2112
|
const timeframe = assertGmxOhlcvTimeframe(args.timeframe ?? "15m");
|
|
2091
2113
|
const limit = args.limit ?? DEFAULT_OHLCV_LIMIT;
|
|
2092
|
-
const sort = args.sort ?? "
|
|
2114
|
+
const sort = args.sort ?? "asc";
|
|
2093
2115
|
const sdk = getGmxApiSdk(args.chainId);
|
|
2094
2116
|
const ohlcvRaw = await sdk.fetchOhlcv({ symbol, timeframe, limit });
|
|
2117
|
+
const candles = mapOhlcvRows(ohlcvRaw, sort).sort((a, b) => a.timestampMs - b.timestampMs);
|
|
2118
|
+
const window = gmxOhlcvWindowFromCandles(candles);
|
|
2095
2119
|
return {
|
|
2096
2120
|
symbol,
|
|
2097
2121
|
timeframe,
|
|
2098
|
-
|
|
2122
|
+
chainId: args.chainId,
|
|
2123
|
+
...window,
|
|
2124
|
+
candles
|
|
2099
2125
|
};
|
|
2100
2126
|
}
|
|
2101
2127
|
async function gmxFetchMarketSnapshot(args) {
|
|
@@ -2272,10 +2298,12 @@ exports.gmxMarketMaxLeverageBps = gmxMarketMaxLeverageBps;
|
|
|
2272
2298
|
exports.gmxMarketMaxLeverageLabel = gmxMarketMaxLeverageLabel;
|
|
2273
2299
|
exports.gmxMarketsForCollateralSymbol = gmxMarketsForCollateralSymbol;
|
|
2274
2300
|
exports.gmxNativeGasSymbolForChain = gmxNativeGasSymbolForChain;
|
|
2301
|
+
exports.gmxOhlcvWindowFromCandles = gmxOhlcvWindowFromCandles;
|
|
2275
2302
|
exports.gmxProtocolModule = gmxProtocolModule;
|
|
2276
2303
|
exports.gmxResolveMarketByGmTokenAddress = gmxResolveMarketByGmTokenAddress;
|
|
2277
2304
|
exports.gmxResolveMarketBySymbol = gmxResolveMarketBySymbol;
|
|
2278
2305
|
exports.gmxResolveTokenBySymbol = gmxResolveTokenBySymbol;
|
|
2306
|
+
exports.gmxResolvedApiBaseUrls = gmxResolvedApiBaseUrls;
|
|
2279
2307
|
exports.gmxWrappedNativeSymbolForChain = gmxWrappedNativeSymbolForChain;
|
|
2280
2308
|
exports.gmxZeroAddress = gmxZeroAddress;
|
|
2281
2309
|
exports.isGmxChainSupported = isGmxChainSupported;
|