@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.
- package/dist/agent/catalog.cjs +303 -93
- package/dist/agent/catalog.cjs.map +1 -1
- package/dist/agent/catalog.d.ts +985 -709
- package/dist/agent/catalog.js +299 -94
- package/dist/agent/catalog.js.map +1 -1
- package/dist/agent/skills/hyperliquid/SKILL.md +24 -20
- package/dist/agent/skills/uniswap-v4/SKILL.md +58 -0
- package/dist/chains/evm/index.cjs +6 -2
- package/dist/chains/evm/index.cjs.map +1 -1
- package/dist/chains/evm/index.d.ts +4 -4
- package/dist/chains/evm/index.js +6 -2
- package/dist/chains/evm/index.js.map +1 -1
- package/dist/chains/near/index.d.ts +1 -1
- package/dist/chains/solana/index.d.ts +1 -1
- package/dist/core/index.cjs +95 -1
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.ts +44 -4
- package/dist/core/index.js +91 -2
- package/dist/core/index.js.map +1 -1
- package/dist/{envelope-CpBUh9eP.d.ts → envelope-C_bfuKab.d.ts} +3 -1
- package/dist/index.cjs +96 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +93 -4
- package/dist/index.js.map +1 -1
- package/dist/protocols/evm/aave-v4/index.cjs +6 -2
- package/dist/protocols/evm/aave-v4/index.cjs.map +1 -1
- package/dist/protocols/evm/aave-v4/index.d.ts +1 -1
- package/dist/protocols/evm/aave-v4/index.js +6 -2
- package/dist/protocols/evm/aave-v4/index.js.map +1 -1
- package/dist/protocols/evm/circle-cctp/index.cjs +6 -2
- package/dist/protocols/evm/circle-cctp/index.cjs.map +1 -1
- package/dist/protocols/evm/circle-cctp/index.d.ts +2 -2
- package/dist/protocols/evm/circle-cctp/index.js +6 -2
- package/dist/protocols/evm/circle-cctp/index.js.map +1 -1
- package/dist/protocols/evm/curve-dao/index.cjs +6 -2
- package/dist/protocols/evm/curve-dao/index.cjs.map +1 -1
- package/dist/protocols/evm/curve-dao/index.d.ts +2 -2
- package/dist/protocols/evm/curve-dao/index.js +6 -2
- package/dist/protocols/evm/curve-dao/index.js.map +1 -1
- package/dist/protocols/evm/ethena/index.cjs +6 -2
- package/dist/protocols/evm/ethena/index.cjs.map +1 -1
- package/dist/protocols/evm/ethena/index.d.ts +1 -1
- package/dist/protocols/evm/ethena/index.js +6 -2
- package/dist/protocols/evm/ethena/index.js.map +1 -1
- package/dist/protocols/evm/euler-v2/index.cjs +6 -2
- package/dist/protocols/evm/euler-v2/index.cjs.map +1 -1
- package/dist/protocols/evm/euler-v2/index.d.ts +1 -1
- package/dist/protocols/evm/euler-v2/index.js +6 -2
- package/dist/protocols/evm/euler-v2/index.js.map +1 -1
- package/dist/protocols/evm/gmx/index.cjs +54 -22
- package/dist/protocols/evm/gmx/index.cjs.map +1 -1
- package/dist/protocols/evm/gmx/index.d.ts +22 -8
- package/dist/protocols/evm/gmx/index.js +53 -23
- package/dist/protocols/evm/gmx/index.js.map +1 -1
- package/dist/protocols/evm/hyperliquid/index.cjs +467 -2
- package/dist/protocols/evm/hyperliquid/index.cjs.map +1 -1
- package/dist/protocols/evm/hyperliquid/index.d.ts +189 -3
- package/dist/protocols/evm/hyperliquid/index.js +447 -4
- package/dist/protocols/evm/hyperliquid/index.js.map +1 -1
- package/dist/protocols/evm/lido/index.cjs +6 -2
- package/dist/protocols/evm/lido/index.cjs.map +1 -1
- package/dist/protocols/evm/lido/index.d.ts +1 -1
- package/dist/protocols/evm/lido/index.js +6 -2
- package/dist/protocols/evm/lido/index.js.map +1 -1
- package/dist/protocols/evm/maple/index.cjs +6 -2
- package/dist/protocols/evm/maple/index.cjs.map +1 -1
- package/dist/protocols/evm/maple/index.d.ts +1 -1
- package/dist/protocols/evm/maple/index.js +6 -2
- package/dist/protocols/evm/maple/index.js.map +1 -1
- package/dist/protocols/evm/morpho/index.cjs +6 -2
- package/dist/protocols/evm/morpho/index.cjs.map +1 -1
- package/dist/protocols/evm/morpho/index.d.ts +1 -1
- package/dist/protocols/evm/morpho/index.js +6 -2
- package/dist/protocols/evm/morpho/index.js.map +1 -1
- package/dist/protocols/evm/permit2/index.cjs +206 -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 +203 -0
- package/dist/protocols/evm/permit2/index.js.map +1 -0
- package/dist/protocols/evm/sky/index.cjs +6 -2
- package/dist/protocols/evm/sky/index.cjs.map +1 -1
- package/dist/protocols/evm/sky/index.d.ts +1 -1
- package/dist/protocols/evm/sky/index.js +6 -2
- package/dist/protocols/evm/sky/index.js.map +1 -1
- package/dist/protocols/evm/uniswap-v4/index.cjs +685 -2
- package/dist/protocols/evm/uniswap-v4/index.cjs.map +1 -1
- package/dist/protocols/evm/uniswap-v4/index.d.ts +180 -3
- package/dist/protocols/evm/uniswap-v4/index.js +663 -3
- package/dist/protocols/evm/uniswap-v4/index.js.map +1 -1
- package/dist/{registry-Bv5o37_w.d.ts → registry-DxDSPQ-p.d.ts} +1 -1
- package/dist/{types-BfjWdw1j.d.ts → types-PZrvtjv8.d.ts} +2 -0
- package/dist/{types-DUeNJLr9.d.ts → types-RZWOTm8c.d.ts} +1 -1
- package/package.json +8 -2
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { b as KeyGenSubsetForPermit, M as MultisignBuildResult, e as ProtocolModule } from '../../../types-
|
|
1
|
+
import { b as KeyGenSubsetForPermit, M as MultisignBuildResult, e as ProtocolModule } from '../../../types-PZrvtjv8.js';
|
|
2
2
|
import { Address } from 'viem';
|
|
3
|
-
import { E as EvmChainDetail } from '../../../types-
|
|
3
|
+
import { E as EvmChainDetail } from '../../../types-RZWOTm8c.js';
|
|
4
4
|
|
|
5
5
|
/** GMX V2 production chains supported in Continuum multi-sign v1. */
|
|
6
6
|
declare const GMX_SUPPORTED_CHAIN_IDS: readonly [42161, 43114];
|
|
7
7
|
type GmxSupportedChainId = (typeof GMX_SUPPORTED_CHAIN_IDS)[number];
|
|
8
8
|
declare function isGmxChainSupported(chainId: number): chainId is GmxSupportedChainId;
|
|
9
9
|
|
|
10
|
+
/** Primary + fallback REST bases from @gmx-io/sdk (each includes `/v1`; SDK paths are e.g. `/tokens`). */
|
|
11
|
+
declare function gmxResolvedApiBaseUrls(chainId: number): readonly string[];
|
|
10
12
|
type GmxApiSdkInstance = {
|
|
11
13
|
fetchMarkets: () => Promise<GmxMarketRow[]>;
|
|
12
14
|
fetchMarketsTickers: (args?: {
|
|
@@ -237,6 +239,7 @@ type GmxIncreaseOrderArgs = GmxMultisignCommon & {
|
|
|
237
239
|
collateralToken: string;
|
|
238
240
|
collateralAmountHuman: string;
|
|
239
241
|
triggerPriceUsdHuman?: string;
|
|
242
|
+
patternFailureUsdHuman?: string;
|
|
240
243
|
slippageBps?: number;
|
|
241
244
|
executionFeeBufferBps?: number;
|
|
242
245
|
isNativeIn?: boolean;
|
|
@@ -448,17 +451,28 @@ declare function gmxFetchMarketPrices(args: {
|
|
|
448
451
|
symbol: string;
|
|
449
452
|
collateralSymbol: string;
|
|
450
453
|
}): Promise<GmxMarketPrices>;
|
|
454
|
+
type GmxOhlcvFetchResult = {
|
|
455
|
+
symbol: string;
|
|
456
|
+
timeframe: GmxOhlcvTimeframe;
|
|
457
|
+
chainId: number;
|
|
458
|
+
startTimeMs?: number;
|
|
459
|
+
endTimeMs?: number;
|
|
460
|
+
candleCount: number;
|
|
461
|
+
candles: GmxOhlcvCandleRow[];
|
|
462
|
+
};
|
|
463
|
+
/** Derive chart window metadata from vendor candle rows (ascending time bounds). */
|
|
464
|
+
declare function gmxOhlcvWindowFromCandles(candles: GmxOhlcvCandleRow[]): {
|
|
465
|
+
startTimeMs?: number;
|
|
466
|
+
endTimeMs?: number;
|
|
467
|
+
candleCount: number;
|
|
468
|
+
};
|
|
451
469
|
declare function gmxFetchOhlcv(args: {
|
|
452
470
|
chainId: number;
|
|
453
471
|
symbol: string;
|
|
454
472
|
timeframe?: string;
|
|
455
473
|
limit?: number;
|
|
456
474
|
sort?: 'asc' | 'desc';
|
|
457
|
-
}): Promise<
|
|
458
|
-
symbol: string;
|
|
459
|
-
timeframe: GmxOhlcvTimeframe;
|
|
460
|
-
candles: GmxOhlcvCandleRow[];
|
|
461
|
-
}>;
|
|
475
|
+
}): Promise<GmxOhlcvFetchResult>;
|
|
462
476
|
declare function gmxFetchMarketSnapshot(args: {
|
|
463
477
|
chainId: number;
|
|
464
478
|
symbol: string;
|
|
@@ -482,4 +496,4 @@ declare function gmxKeyForNodeAssetRow(args: {
|
|
|
482
496
|
declare const GMX_PROTOCOL_ID = "gmx";
|
|
483
497
|
declare const gmxProtocolModule: ProtocolModule;
|
|
484
498
|
|
|
485
|
-
export { GMX_NATIVE_GAS_SYMBOL_BY_CHAIN, GMX_OHLCV_TIMEFRAMES, GMX_PROTOCOL_ID, GMX_SUPPORTED_CHAIN_IDS, GMX_WRAPPED_NATIVE_SYMBOL_BY_CHAIN, type GmxApiSdkInstance, type GmxCancelOrderArgs, type GmxClosePositionCap, type GmxDecreaseOrderArgs, type GmxGmDepositArgs, type GmxGmLiquidityPositionRow, type GmxGmMarketSummaryRow, type GmxGmWithdrawArgs, type GmxIncreaseOrderArgs, type GmxMarketApySource, type GmxMarketPrices, type GmxMarketRow, type GmxMarketSnapshot, type GmxOhlcvCandleRow, type GmxOhlcvTimeframe, type GmxOrderRow, type GmxPositionDisplayRow, type GmxPositionRow, type GmxPrepareOrderResponse, type GmxStakeGmxArgs, type GmxSupportedChainId, type GmxTokenRow, type GmxTradeEstimate, type GmxUnstakeGmxArgs, assertGmxOhlcvTimeframe, buildEvmMultisignBodyGmxCancelBatch, buildEvmMultisignBodyGmxDecreaseBatch, buildEvmMultisignBodyGmxGmDepositBatch, buildEvmMultisignBodyGmxGmWithdrawBatch, buildEvmMultisignBodyGmxIncreaseBatch, buildEvmMultisignBodyGmxLimitDecreaseBatch, buildEvmMultisignBodyGmxLimitIncreaseBatch, buildEvmMultisignBodyGmxStakeGmxBatch, buildEvmMultisignBodyGmxUnstakeGmxBatch, formatGmxLeverageBps, formatGmxTokenAmountHuman, formatGmxUsd30, formatGmxUsd30HumanInput, getGmxApiSdk, gmxAssertIncreaseOrderWithinMaxLeverage, gmxContractAddress, gmxEnrichGmMarketRowWithApy, gmxEstimateDecreasePreview, gmxEstimateGmExecutionFee, gmxEstimateIncreasePreview, gmxFetchClosePositionCap, gmxFetchCollateralTokens, gmxFetchGmApy, gmxFetchGmLiquidityPositions, gmxFetchGmMarketForToken, gmxFetchGmMarkets, gmxFetchGmMarketsSummary, gmxFetchMarketPrices, gmxFetchMarketSnapshot, gmxFetchMarkets, gmxFetchMarketsSummary, gmxFetchOhlcv, gmxFetchOrdersForExecutor, gmxFetchOrdersSummary, gmxFetchPositionDisplayRows, gmxFetchPositionsForExecutor, gmxFetchStakingPower, gmxFetchTokens, gmxFindWrappedNativeToken, gmxFormatApyPercent, gmxFormatPositionsForDisplay, gmxGmxTokenAddress, gmxIsCloseSizeWithinPosition, gmxIsCollateralTokenSupported, gmxIsGmMarketTokenAddress, gmxIsGmxStakeTokenAddress, gmxKeyForNodeAssetRow, gmxLookupMarketApy, gmxMarketAcceptsCollateral, gmxMarketCollateralTokens, gmxMarketMaxLeverageBps, gmxMarketMaxLeverageLabel, gmxMarketsForCollateralSymbol, gmxNativeGasSymbolForChain, gmxProtocolModule, gmxResolveMarketByGmTokenAddress, gmxResolveMarketBySymbol, gmxResolveTokenBySymbol, gmxWrappedNativeSymbolForChain, gmxZeroAddress, isGmxChainSupported, parseGmxTokenAmount, parseGmxUsd30 };
|
|
499
|
+
export { GMX_NATIVE_GAS_SYMBOL_BY_CHAIN, GMX_OHLCV_TIMEFRAMES, GMX_PROTOCOL_ID, GMX_SUPPORTED_CHAIN_IDS, GMX_WRAPPED_NATIVE_SYMBOL_BY_CHAIN, type GmxApiSdkInstance, type GmxCancelOrderArgs, type GmxClosePositionCap, type GmxDecreaseOrderArgs, type GmxGmDepositArgs, type GmxGmLiquidityPositionRow, type GmxGmMarketSummaryRow, type GmxGmWithdrawArgs, type GmxIncreaseOrderArgs, type GmxMarketApySource, type GmxMarketPrices, type GmxMarketRow, type GmxMarketSnapshot, type GmxOhlcvCandleRow, type GmxOhlcvFetchResult, type GmxOhlcvTimeframe, type GmxOrderRow, type GmxPositionDisplayRow, type GmxPositionRow, type GmxPrepareOrderResponse, type GmxStakeGmxArgs, type GmxSupportedChainId, type GmxTokenRow, type GmxTradeEstimate, type GmxUnstakeGmxArgs, assertGmxOhlcvTimeframe, buildEvmMultisignBodyGmxCancelBatch, buildEvmMultisignBodyGmxDecreaseBatch, buildEvmMultisignBodyGmxGmDepositBatch, buildEvmMultisignBodyGmxGmWithdrawBatch, buildEvmMultisignBodyGmxIncreaseBatch, buildEvmMultisignBodyGmxLimitDecreaseBatch, buildEvmMultisignBodyGmxLimitIncreaseBatch, buildEvmMultisignBodyGmxStakeGmxBatch, buildEvmMultisignBodyGmxUnstakeGmxBatch, formatGmxLeverageBps, formatGmxTokenAmountHuman, formatGmxUsd30, formatGmxUsd30HumanInput, getGmxApiSdk, gmxAssertIncreaseOrderWithinMaxLeverage, gmxContractAddress, gmxEnrichGmMarketRowWithApy, gmxEstimateDecreasePreview, gmxEstimateGmExecutionFee, gmxEstimateIncreasePreview, gmxFetchClosePositionCap, gmxFetchCollateralTokens, gmxFetchGmApy, gmxFetchGmLiquidityPositions, gmxFetchGmMarketForToken, gmxFetchGmMarkets, gmxFetchGmMarketsSummary, gmxFetchMarketPrices, gmxFetchMarketSnapshot, gmxFetchMarkets, gmxFetchMarketsSummary, gmxFetchOhlcv, gmxFetchOrdersForExecutor, gmxFetchOrdersSummary, gmxFetchPositionDisplayRows, gmxFetchPositionsForExecutor, gmxFetchStakingPower, gmxFetchTokens, gmxFindWrappedNativeToken, gmxFormatApyPercent, gmxFormatPositionsForDisplay, gmxGmxTokenAddress, gmxIsCloseSizeWithinPosition, gmxIsCollateralTokenSupported, gmxIsGmMarketTokenAddress, gmxIsGmxStakeTokenAddress, gmxKeyForNodeAssetRow, gmxLookupMarketApy, gmxMarketAcceptsCollateral, gmxMarketCollateralTokens, gmxMarketMaxLeverageBps, gmxMarketMaxLeverageLabel, gmxMarketsForCollateralSymbol, gmxNativeGasSymbolForChain, gmxOhlcvWindowFromCandles, gmxProtocolModule, gmxResolveMarketByGmTokenAddress, gmxResolveMarketBySymbol, gmxResolveTokenBySymbol, gmxResolvedApiBaseUrls, gmxWrappedNativeSymbolForChain, gmxZeroAddress, isGmxChainSupported, parseGmxTokenAmount, parseGmxUsd30 };
|
|
@@ -21,11 +21,15 @@ function isGmxChainSupported(chainId) {
|
|
|
21
21
|
}
|
|
22
22
|
var require2 = createRequire(fileURLToPath(import.meta.url));
|
|
23
23
|
var { GmxApiSdk } = require2("@gmx-io/sdk/v2");
|
|
24
|
+
var { getApiUrl, getApiFallbackUrls } = require2("@gmx-io/sdk/configs/api");
|
|
24
25
|
var GMX_HTTP_TIMEOUT_MS = 3e4;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
};
|
|
26
|
+
function gmxResolvedApiBaseUrls(chainId) {
|
|
27
|
+
const primary = getApiUrl(chainId);
|
|
28
|
+
if (!primary) {
|
|
29
|
+
throw new Error(`GMX API URLs are not configured for chain ${chainId}.`);
|
|
30
|
+
}
|
|
31
|
+
return [primary, ...getApiFallbackUrls(chainId)];
|
|
32
|
+
}
|
|
29
33
|
function buildGmxUrl(baseUrl, path, query) {
|
|
30
34
|
const base = baseUrl.replace(/\/$/, "");
|
|
31
35
|
if (!query) return `${base}${path}`;
|
|
@@ -90,10 +94,7 @@ async function gmxHttpPostJson(baseUrl, path, body, opts) {
|
|
|
90
94
|
}
|
|
91
95
|
}
|
|
92
96
|
function createIoFirstGmxHttpApi(chainId) {
|
|
93
|
-
const urls =
|
|
94
|
-
if (!urls) {
|
|
95
|
-
throw new Error(`GMX API URLs are not configured for chain ${chainId}.`);
|
|
96
|
-
}
|
|
97
|
+
const urls = gmxResolvedApiBaseUrls(chainId);
|
|
97
98
|
async function withIoFirstFallback(fn) {
|
|
98
99
|
let lastError;
|
|
99
100
|
for (const baseUrl of urls) {
|
|
@@ -578,7 +579,7 @@ function finalizeMultisign(input) {
|
|
|
578
579
|
batchMeta,
|
|
579
580
|
...input.extraJSON ?? {}
|
|
580
581
|
};
|
|
581
|
-
const extraJSON = JSON.stringify(extraPayload);
|
|
582
|
+
const extraJSON = JSON.stringify(extraPayload, (_, v) => typeof v === "bigint" ? v.toString() : v);
|
|
582
583
|
const bodyForSign = {
|
|
583
584
|
keyList,
|
|
584
585
|
pubKey: ph,
|
|
@@ -603,6 +604,9 @@ function finalizeMultisign(input) {
|
|
|
603
604
|
bodyForSign.value = valueWei.toString();
|
|
604
605
|
}
|
|
605
606
|
if (clientId) bodyForSign.clientId = clientId;
|
|
607
|
+
if (input.expiryDate != null && input.expiryDate > 0) {
|
|
608
|
+
bodyForSign.expiryDate = Math.floor(input.expiryDate);
|
|
609
|
+
}
|
|
606
610
|
return { bodyForSign, messageToSign: JSON.stringify(bodyForSign) };
|
|
607
611
|
}
|
|
608
612
|
function routerSwapGasLimitFromEstimate(estimatedGas, chainGasLimit) {
|
|
@@ -766,7 +770,8 @@ async function buildEvmMultisignBatch(args) {
|
|
|
766
770
|
destinationChainID: String(chainId),
|
|
767
771
|
destinationAddress: args.destinationAddress ?? steps[0].to,
|
|
768
772
|
legs,
|
|
769
|
-
extraJSON: Object.keys(extraJSON).length > 0 ? extraJSON : void 0
|
|
773
|
+
extraJSON: Object.keys(extraJSON).length > 0 ? extraJSON : void 0,
|
|
774
|
+
expiryDate: context.expiryDate
|
|
770
775
|
});
|
|
771
776
|
const pv = args.payableValueWei;
|
|
772
777
|
if (pv != null && pv > 0n) {
|
|
@@ -1312,7 +1317,9 @@ async function buildEvmMultisignBodyGmxIncreaseBatch(args) {
|
|
|
1312
1317
|
sizeUsdHuman: args.sizeUsdHuman,
|
|
1313
1318
|
collateralToken: collateralSymbol,
|
|
1314
1319
|
collateralAmountHuman: args.collateralAmountHuman,
|
|
1315
|
-
isNativeIn: Boolean(args.isNativeIn)
|
|
1320
|
+
isNativeIn: Boolean(args.isNativeIn),
|
|
1321
|
+
...args.orderType === "limit" && args.triggerPriceUsdHuman?.trim() ? { triggerPriceUsdHuman: args.triggerPriceUsdHuman.trim() } : {},
|
|
1322
|
+
...args.patternFailureUsdHuman?.trim() ? { pfE: args.patternFailureUsdHuman.trim() } : {}
|
|
1316
1323
|
},
|
|
1317
1324
|
prepSteps
|
|
1318
1325
|
);
|
|
@@ -2059,18 +2066,21 @@ async function gmxFetchMarketPrices(args) {
|
|
|
2059
2066
|
if (!symbol) throw new Error("GMX market symbol is required.");
|
|
2060
2067
|
if (!collateralSymbol) throw new Error("Collateral symbol is required.");
|
|
2061
2068
|
const sdk = getGmxApiSdk(args.chainId);
|
|
2062
|
-
const
|
|
2063
|
-
sdk.fetchMarketsTickers({ symbols: [symbol] }),
|
|
2064
|
-
resolveGmxTokenBySymbol(args.chainId, collateralSymbol)
|
|
2065
|
-
]);
|
|
2069
|
+
const tickers = await sdk.fetchMarketsTickers({ symbols: [symbol] });
|
|
2066
2070
|
const ticker = tickers.find((t) => String(t.symbol ?? "") === symbol) ?? tickers[0];
|
|
2067
2071
|
const mark = asBigint3(ticker?.markPrice ?? ticker?.minPrice);
|
|
2068
2072
|
const indexMarkUsd = formatGmxUsd30(mark);
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2073
|
+
let collateralUsd = null;
|
|
2074
|
+
let indexPerCollateral = null;
|
|
2075
|
+
try {
|
|
2076
|
+
const collateralToken = await resolveGmxTokenBySymbol(args.chainId, collateralSymbol);
|
|
2077
|
+
const collateralPrice = asBigint3(
|
|
2078
|
+
collateralToken?.prices?.minPrice
|
|
2079
|
+
);
|
|
2080
|
+
collateralUsd = formatGmxUsd30(collateralPrice);
|
|
2081
|
+
indexPerCollateral = mark != null && collateralPrice != null ? formatIndexPerCollateral(mark, collateralPrice) : null;
|
|
2082
|
+
} catch {
|
|
2083
|
+
}
|
|
2074
2084
|
return {
|
|
2075
2085
|
symbol,
|
|
2076
2086
|
indexLabel: indexLabelFromMarketSymbol(symbol),
|
|
@@ -2081,18 +2091,38 @@ async function gmxFetchMarketPrices(args) {
|
|
|
2081
2091
|
fetchedAtMs: Date.now()
|
|
2082
2092
|
};
|
|
2083
2093
|
}
|
|
2094
|
+
function gmxOhlcvWindowFromCandles(candles) {
|
|
2095
|
+
if (candles.length === 0) {
|
|
2096
|
+
return { candleCount: 0 };
|
|
2097
|
+
}
|
|
2098
|
+
let startTimeMs = candles[0].timestampMs;
|
|
2099
|
+
let endTimeMs = candles[0].timestampMs;
|
|
2100
|
+
for (const candle of candles) {
|
|
2101
|
+
if (candle.timestampMs < startTimeMs) {
|
|
2102
|
+
startTimeMs = candle.timestampMs;
|
|
2103
|
+
}
|
|
2104
|
+
if (candle.timestampMs > endTimeMs) {
|
|
2105
|
+
endTimeMs = candle.timestampMs;
|
|
2106
|
+
}
|
|
2107
|
+
}
|
|
2108
|
+
return { startTimeMs, endTimeMs, candleCount: candles.length };
|
|
2109
|
+
}
|
|
2084
2110
|
async function gmxFetchOhlcv(args) {
|
|
2085
2111
|
const symbol = args.symbol.trim();
|
|
2086
2112
|
if (!symbol) throw new Error("GMX market symbol is required.");
|
|
2087
2113
|
const timeframe = assertGmxOhlcvTimeframe(args.timeframe ?? "15m");
|
|
2088
2114
|
const limit = args.limit ?? DEFAULT_OHLCV_LIMIT;
|
|
2089
|
-
const sort = args.sort ?? "
|
|
2115
|
+
const sort = args.sort ?? "asc";
|
|
2090
2116
|
const sdk = getGmxApiSdk(args.chainId);
|
|
2091
2117
|
const ohlcvRaw = await sdk.fetchOhlcv({ symbol, timeframe, limit });
|
|
2118
|
+
const candles = mapOhlcvRows(ohlcvRaw, sort).sort((a, b) => a.timestampMs - b.timestampMs);
|
|
2119
|
+
const window = gmxOhlcvWindowFromCandles(candles);
|
|
2092
2120
|
return {
|
|
2093
2121
|
symbol,
|
|
2094
2122
|
timeframe,
|
|
2095
|
-
|
|
2123
|
+
chainId: args.chainId,
|
|
2124
|
+
...window,
|
|
2125
|
+
candles
|
|
2096
2126
|
};
|
|
2097
2127
|
}
|
|
2098
2128
|
async function gmxFetchMarketSnapshot(args) {
|
|
@@ -2209,6 +2239,6 @@ var gmxProtocolModule = {
|
|
|
2209
2239
|
};
|
|
2210
2240
|
registerProtocolModule(gmxProtocolModule);
|
|
2211
2241
|
|
|
2212
|
-
export { GMX_NATIVE_GAS_SYMBOL_BY_CHAIN, GMX_OHLCV_TIMEFRAMES, GMX_PROTOCOL_ID, GMX_SUPPORTED_CHAIN_IDS, GMX_WRAPPED_NATIVE_SYMBOL_BY_CHAIN, assertGmxOhlcvTimeframe, buildEvmMultisignBodyGmxCancelBatch, buildEvmMultisignBodyGmxDecreaseBatch, buildEvmMultisignBodyGmxGmDepositBatch, buildEvmMultisignBodyGmxGmWithdrawBatch, buildEvmMultisignBodyGmxIncreaseBatch, buildEvmMultisignBodyGmxLimitDecreaseBatch, buildEvmMultisignBodyGmxLimitIncreaseBatch, buildEvmMultisignBodyGmxStakeGmxBatch, buildEvmMultisignBodyGmxUnstakeGmxBatch, formatGmxLeverageBps, formatGmxTokenAmountHuman, formatGmxUsd30, formatGmxUsd30HumanInput, getGmxApiSdk, gmxAssertIncreaseOrderWithinMaxLeverage, gmxContractAddress, gmxEnrichGmMarketRowWithApy, gmxEstimateDecreasePreview, gmxEstimateGmExecutionFee, gmxEstimateIncreasePreview, gmxFetchClosePositionCap, gmxFetchCollateralTokens, gmxFetchGmApy, gmxFetchGmLiquidityPositions, gmxFetchGmMarketForToken, gmxFetchGmMarkets, gmxFetchGmMarketsSummary, gmxFetchMarketPrices, gmxFetchMarketSnapshot, gmxFetchMarkets, gmxFetchMarketsSummary, gmxFetchOhlcv, gmxFetchOrdersForExecutor, gmxFetchOrdersSummary, gmxFetchPositionDisplayRows, gmxFetchPositionsForExecutor, gmxFetchStakingPower, gmxFetchTokens, gmxFindWrappedNativeToken, gmxFormatApyPercent, gmxFormatPositionsForDisplay, gmxGmxTokenAddress, gmxIsCloseSizeWithinPosition, gmxIsCollateralTokenSupported, gmxIsGmMarketTokenAddress, gmxIsGmxStakeTokenAddress, gmxKeyForNodeAssetRow, gmxLookupMarketApy, gmxMarketAcceptsCollateral, gmxMarketCollateralTokens, gmxMarketMaxLeverageBps, gmxMarketMaxLeverageLabel, gmxMarketsForCollateralSymbol, gmxNativeGasSymbolForChain, gmxProtocolModule, gmxResolveMarketByGmTokenAddress, gmxResolveMarketBySymbol, gmxResolveTokenBySymbol, gmxWrappedNativeSymbolForChain, gmxZeroAddress, isGmxChainSupported, parseGmxTokenAmount, parseGmxUsd30 };
|
|
2242
|
+
export { GMX_NATIVE_GAS_SYMBOL_BY_CHAIN, GMX_OHLCV_TIMEFRAMES, GMX_PROTOCOL_ID, GMX_SUPPORTED_CHAIN_IDS, GMX_WRAPPED_NATIVE_SYMBOL_BY_CHAIN, assertGmxOhlcvTimeframe, buildEvmMultisignBodyGmxCancelBatch, buildEvmMultisignBodyGmxDecreaseBatch, buildEvmMultisignBodyGmxGmDepositBatch, buildEvmMultisignBodyGmxGmWithdrawBatch, buildEvmMultisignBodyGmxIncreaseBatch, buildEvmMultisignBodyGmxLimitDecreaseBatch, buildEvmMultisignBodyGmxLimitIncreaseBatch, buildEvmMultisignBodyGmxStakeGmxBatch, buildEvmMultisignBodyGmxUnstakeGmxBatch, formatGmxLeverageBps, formatGmxTokenAmountHuman, formatGmxUsd30, formatGmxUsd30HumanInput, getGmxApiSdk, gmxAssertIncreaseOrderWithinMaxLeverage, gmxContractAddress, gmxEnrichGmMarketRowWithApy, gmxEstimateDecreasePreview, gmxEstimateGmExecutionFee, gmxEstimateIncreasePreview, gmxFetchClosePositionCap, gmxFetchCollateralTokens, gmxFetchGmApy, gmxFetchGmLiquidityPositions, gmxFetchGmMarketForToken, gmxFetchGmMarkets, gmxFetchGmMarketsSummary, gmxFetchMarketPrices, gmxFetchMarketSnapshot, gmxFetchMarkets, gmxFetchMarketsSummary, gmxFetchOhlcv, gmxFetchOrdersForExecutor, gmxFetchOrdersSummary, gmxFetchPositionDisplayRows, gmxFetchPositionsForExecutor, gmxFetchStakingPower, gmxFetchTokens, gmxFindWrappedNativeToken, gmxFormatApyPercent, gmxFormatPositionsForDisplay, gmxGmxTokenAddress, gmxIsCloseSizeWithinPosition, gmxIsCollateralTokenSupported, gmxIsGmMarketTokenAddress, gmxIsGmxStakeTokenAddress, gmxKeyForNodeAssetRow, gmxLookupMarketApy, gmxMarketAcceptsCollateral, gmxMarketCollateralTokens, gmxMarketMaxLeverageBps, gmxMarketMaxLeverageLabel, gmxMarketsForCollateralSymbol, gmxNativeGasSymbolForChain, gmxOhlcvWindowFromCandles, gmxProtocolModule, gmxResolveMarketByGmTokenAddress, gmxResolveMarketBySymbol, gmxResolveTokenBySymbol, gmxResolvedApiBaseUrls, gmxWrappedNativeSymbolForChain, gmxZeroAddress, isGmxChainSupported, parseGmxTokenAmount, parseGmxUsd30 };
|
|
2213
2243
|
//# sourceMappingURL=index.js.map
|
|
2214
2244
|
//# sourceMappingURL=index.js.map
|