@continuumdao/ctm-mpc-defi 0.2.19 → 0.2.22

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 (94) hide show
  1. package/dist/agent/catalog.cjs +303 -93
  2. package/dist/agent/catalog.cjs.map +1 -1
  3. package/dist/agent/catalog.d.ts +985 -709
  4. package/dist/agent/catalog.js +299 -94
  5. package/dist/agent/catalog.js.map +1 -1
  6. package/dist/agent/skills/hyperliquid/SKILL.md +24 -20
  7. package/dist/agent/skills/uniswap-v4/SKILL.md +58 -0
  8. package/dist/chains/evm/index.cjs +6 -2
  9. package/dist/chains/evm/index.cjs.map +1 -1
  10. package/dist/chains/evm/index.d.ts +4 -4
  11. package/dist/chains/evm/index.js +6 -2
  12. package/dist/chains/evm/index.js.map +1 -1
  13. package/dist/chains/near/index.d.ts +1 -1
  14. package/dist/chains/solana/index.d.ts +1 -1
  15. package/dist/core/index.cjs +95 -1
  16. package/dist/core/index.cjs.map +1 -1
  17. package/dist/core/index.d.ts +44 -4
  18. package/dist/core/index.js +91 -2
  19. package/dist/core/index.js.map +1 -1
  20. package/dist/{envelope-CpBUh9eP.d.ts → envelope-C_bfuKab.d.ts} +3 -1
  21. package/dist/index.cjs +96 -2
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.ts +5 -5
  24. package/dist/index.js +93 -4
  25. package/dist/index.js.map +1 -1
  26. package/dist/protocols/evm/aave-v4/index.cjs +6 -2
  27. package/dist/protocols/evm/aave-v4/index.cjs.map +1 -1
  28. package/dist/protocols/evm/aave-v4/index.d.ts +1 -1
  29. package/dist/protocols/evm/aave-v4/index.js +6 -2
  30. package/dist/protocols/evm/aave-v4/index.js.map +1 -1
  31. package/dist/protocols/evm/circle-cctp/index.cjs +6 -2
  32. package/dist/protocols/evm/circle-cctp/index.cjs.map +1 -1
  33. package/dist/protocols/evm/circle-cctp/index.d.ts +2 -2
  34. package/dist/protocols/evm/circle-cctp/index.js +6 -2
  35. package/dist/protocols/evm/circle-cctp/index.js.map +1 -1
  36. package/dist/protocols/evm/curve-dao/index.cjs +6 -2
  37. package/dist/protocols/evm/curve-dao/index.cjs.map +1 -1
  38. package/dist/protocols/evm/curve-dao/index.d.ts +2 -2
  39. package/dist/protocols/evm/curve-dao/index.js +6 -2
  40. package/dist/protocols/evm/curve-dao/index.js.map +1 -1
  41. package/dist/protocols/evm/ethena/index.cjs +6 -2
  42. package/dist/protocols/evm/ethena/index.cjs.map +1 -1
  43. package/dist/protocols/evm/ethena/index.d.ts +1 -1
  44. package/dist/protocols/evm/ethena/index.js +6 -2
  45. package/dist/protocols/evm/ethena/index.js.map +1 -1
  46. package/dist/protocols/evm/euler-v2/index.cjs +6 -2
  47. package/dist/protocols/evm/euler-v2/index.cjs.map +1 -1
  48. package/dist/protocols/evm/euler-v2/index.d.ts +1 -1
  49. package/dist/protocols/evm/euler-v2/index.js +6 -2
  50. package/dist/protocols/evm/euler-v2/index.js.map +1 -1
  51. package/dist/protocols/evm/gmx/index.cjs +54 -22
  52. package/dist/protocols/evm/gmx/index.cjs.map +1 -1
  53. package/dist/protocols/evm/gmx/index.d.ts +22 -8
  54. package/dist/protocols/evm/gmx/index.js +53 -23
  55. package/dist/protocols/evm/gmx/index.js.map +1 -1
  56. package/dist/protocols/evm/hyperliquid/index.cjs +467 -2
  57. package/dist/protocols/evm/hyperliquid/index.cjs.map +1 -1
  58. package/dist/protocols/evm/hyperliquid/index.d.ts +189 -3
  59. package/dist/protocols/evm/hyperliquid/index.js +447 -4
  60. package/dist/protocols/evm/hyperliquid/index.js.map +1 -1
  61. package/dist/protocols/evm/lido/index.cjs +6 -2
  62. package/dist/protocols/evm/lido/index.cjs.map +1 -1
  63. package/dist/protocols/evm/lido/index.d.ts +1 -1
  64. package/dist/protocols/evm/lido/index.js +6 -2
  65. package/dist/protocols/evm/lido/index.js.map +1 -1
  66. package/dist/protocols/evm/maple/index.cjs +6 -2
  67. package/dist/protocols/evm/maple/index.cjs.map +1 -1
  68. package/dist/protocols/evm/maple/index.d.ts +1 -1
  69. package/dist/protocols/evm/maple/index.js +6 -2
  70. package/dist/protocols/evm/maple/index.js.map +1 -1
  71. package/dist/protocols/evm/morpho/index.cjs +6 -2
  72. package/dist/protocols/evm/morpho/index.cjs.map +1 -1
  73. package/dist/protocols/evm/morpho/index.d.ts +1 -1
  74. package/dist/protocols/evm/morpho/index.js +6 -2
  75. package/dist/protocols/evm/morpho/index.js.map +1 -1
  76. package/dist/protocols/evm/permit2/index.cjs +206 -0
  77. package/dist/protocols/evm/permit2/index.cjs.map +1 -0
  78. package/dist/protocols/evm/permit2/index.d.ts +43 -0
  79. package/dist/protocols/evm/permit2/index.js +203 -0
  80. package/dist/protocols/evm/permit2/index.js.map +1 -0
  81. package/dist/protocols/evm/sky/index.cjs +6 -2
  82. package/dist/protocols/evm/sky/index.cjs.map +1 -1
  83. package/dist/protocols/evm/sky/index.d.ts +1 -1
  84. package/dist/protocols/evm/sky/index.js +6 -2
  85. package/dist/protocols/evm/sky/index.js.map +1 -1
  86. package/dist/protocols/evm/uniswap-v4/index.cjs +685 -2
  87. package/dist/protocols/evm/uniswap-v4/index.cjs.map +1 -1
  88. package/dist/protocols/evm/uniswap-v4/index.d.ts +180 -3
  89. package/dist/protocols/evm/uniswap-v4/index.js +663 -3
  90. package/dist/protocols/evm/uniswap-v4/index.js.map +1 -1
  91. package/dist/{registry-Bv5o37_w.d.ts → registry-DxDSPQ-p.d.ts} +1 -1
  92. package/dist/{types-BfjWdw1j.d.ts → types-PZrvtjv8.d.ts} +2 -0
  93. package/dist/{types-DUeNJLr9.d.ts → types-RZWOTm8c.d.ts} +1 -1
  94. package/package.json +8 -2
@@ -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
- var GMX_API_BASE_URLS = {
29
- 42161: ["https://arbitrum.gmxapi.io", "https://arbitrum.gmxapi.ai"],
30
- 43114: ["https://avalanche.gmxapi.io", "https://avalanche.gmxapi.ai"]
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 = GMX_API_BASE_URLS[chainId];
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,
@@ -606,6 +607,9 @@ function finalizeMultisign(input) {
606
607
  bodyForSign.value = valueWei.toString();
607
608
  }
608
609
  if (clientId) bodyForSign.clientId = clientId;
610
+ if (input.expiryDate != null && input.expiryDate > 0) {
611
+ bodyForSign.expiryDate = Math.floor(input.expiryDate);
612
+ }
609
613
  return { bodyForSign, messageToSign: JSON.stringify(bodyForSign) };
610
614
  }
611
615
  function routerSwapGasLimitFromEstimate(estimatedGas, chainGasLimit) {
@@ -769,7 +773,8 @@ async function buildEvmMultisignBatch(args) {
769
773
  destinationChainID: String(chainId),
770
774
  destinationAddress: args.destinationAddress ?? steps[0].to,
771
775
  legs,
772
- extraJSON: Object.keys(extraJSON).length > 0 ? extraJSON : void 0
776
+ extraJSON: Object.keys(extraJSON).length > 0 ? extraJSON : void 0,
777
+ expiryDate: context.expiryDate
773
778
  });
774
779
  const pv = args.payableValueWei;
775
780
  if (pv != null && pv > 0n) {
@@ -1315,7 +1320,9 @@ async function buildEvmMultisignBodyGmxIncreaseBatch(args) {
1315
1320
  sizeUsdHuman: args.sizeUsdHuman,
1316
1321
  collateralToken: collateralSymbol,
1317
1322
  collateralAmountHuman: args.collateralAmountHuman,
1318
- isNativeIn: Boolean(args.isNativeIn)
1323
+ isNativeIn: Boolean(args.isNativeIn),
1324
+ ...args.orderType === "limit" && args.triggerPriceUsdHuman?.trim() ? { triggerPriceUsdHuman: args.triggerPriceUsdHuman.trim() } : {},
1325
+ ...args.patternFailureUsdHuman?.trim() ? { pfE: args.patternFailureUsdHuman.trim() } : {}
1319
1326
  },
1320
1327
  prepSteps
1321
1328
  );
@@ -2062,18 +2069,21 @@ async function gmxFetchMarketPrices(args) {
2062
2069
  if (!symbol) throw new Error("GMX market symbol is required.");
2063
2070
  if (!collateralSymbol) throw new Error("Collateral symbol is required.");
2064
2071
  const sdk = getGmxApiSdk(args.chainId);
2065
- const [tickers, collateralToken] = await Promise.all([
2066
- sdk.fetchMarketsTickers({ symbols: [symbol] }),
2067
- resolveGmxTokenBySymbol(args.chainId, collateralSymbol)
2068
- ]);
2072
+ const tickers = await sdk.fetchMarketsTickers({ symbols: [symbol] });
2069
2073
  const ticker = tickers.find((t) => String(t.symbol ?? "") === symbol) ?? tickers[0];
2070
2074
  const mark = asBigint3(ticker?.markPrice ?? ticker?.minPrice);
2071
2075
  const indexMarkUsd = formatGmxUsd30(mark);
2072
- const collateralPrice = asBigint3(
2073
- collateralToken?.prices?.minPrice
2074
- );
2075
- const collateralUsd = formatGmxUsd30(collateralPrice);
2076
- const indexPerCollateral = mark != null && collateralPrice != null ? formatIndexPerCollateral(mark, collateralPrice) : null;
2076
+ let collateralUsd = null;
2077
+ let indexPerCollateral = null;
2078
+ try {
2079
+ const collateralToken = await resolveGmxTokenBySymbol(args.chainId, collateralSymbol);
2080
+ const collateralPrice = asBigint3(
2081
+ collateralToken?.prices?.minPrice
2082
+ );
2083
+ collateralUsd = formatGmxUsd30(collateralPrice);
2084
+ indexPerCollateral = mark != null && collateralPrice != null ? formatIndexPerCollateral(mark, collateralPrice) : null;
2085
+ } catch {
2086
+ }
2077
2087
  return {
2078
2088
  symbol,
2079
2089
  indexLabel: indexLabelFromMarketSymbol(symbol),
@@ -2084,18 +2094,38 @@ async function gmxFetchMarketPrices(args) {
2084
2094
  fetchedAtMs: Date.now()
2085
2095
  };
2086
2096
  }
2097
+ function gmxOhlcvWindowFromCandles(candles) {
2098
+ if (candles.length === 0) {
2099
+ return { candleCount: 0 };
2100
+ }
2101
+ let startTimeMs = candles[0].timestampMs;
2102
+ let endTimeMs = candles[0].timestampMs;
2103
+ for (const candle of candles) {
2104
+ if (candle.timestampMs < startTimeMs) {
2105
+ startTimeMs = candle.timestampMs;
2106
+ }
2107
+ if (candle.timestampMs > endTimeMs) {
2108
+ endTimeMs = candle.timestampMs;
2109
+ }
2110
+ }
2111
+ return { startTimeMs, endTimeMs, candleCount: candles.length };
2112
+ }
2087
2113
  async function gmxFetchOhlcv(args) {
2088
2114
  const symbol = args.symbol.trim();
2089
2115
  if (!symbol) throw new Error("GMX market symbol is required.");
2090
2116
  const timeframe = assertGmxOhlcvTimeframe(args.timeframe ?? "15m");
2091
2117
  const limit = args.limit ?? DEFAULT_OHLCV_LIMIT;
2092
- const sort = args.sort ?? "desc";
2118
+ const sort = args.sort ?? "asc";
2093
2119
  const sdk = getGmxApiSdk(args.chainId);
2094
2120
  const ohlcvRaw = await sdk.fetchOhlcv({ symbol, timeframe, limit });
2121
+ const candles = mapOhlcvRows(ohlcvRaw, sort).sort((a, b) => a.timestampMs - b.timestampMs);
2122
+ const window = gmxOhlcvWindowFromCandles(candles);
2095
2123
  return {
2096
2124
  symbol,
2097
2125
  timeframe,
2098
- candles: mapOhlcvRows(ohlcvRaw, sort)
2126
+ chainId: args.chainId,
2127
+ ...window,
2128
+ candles
2099
2129
  };
2100
2130
  }
2101
2131
  async function gmxFetchMarketSnapshot(args) {
@@ -2272,10 +2302,12 @@ exports.gmxMarketMaxLeverageBps = gmxMarketMaxLeverageBps;
2272
2302
  exports.gmxMarketMaxLeverageLabel = gmxMarketMaxLeverageLabel;
2273
2303
  exports.gmxMarketsForCollateralSymbol = gmxMarketsForCollateralSymbol;
2274
2304
  exports.gmxNativeGasSymbolForChain = gmxNativeGasSymbolForChain;
2305
+ exports.gmxOhlcvWindowFromCandles = gmxOhlcvWindowFromCandles;
2275
2306
  exports.gmxProtocolModule = gmxProtocolModule;
2276
2307
  exports.gmxResolveMarketByGmTokenAddress = gmxResolveMarketByGmTokenAddress;
2277
2308
  exports.gmxResolveMarketBySymbol = gmxResolveMarketBySymbol;
2278
2309
  exports.gmxResolveTokenBySymbol = gmxResolveTokenBySymbol;
2310
+ exports.gmxResolvedApiBaseUrls = gmxResolvedApiBaseUrls;
2279
2311
  exports.gmxWrappedNativeSymbolForChain = gmxWrappedNativeSymbolForChain;
2280
2312
  exports.gmxZeroAddress = gmxZeroAddress;
2281
2313
  exports.isGmxChainSupported = isGmxChainSupported;