markets
This module provides market configuration data for the GMX protocol across different blockchain networks. It contains predefined market configurations including token addresses and swap limits for trading pairs on supported chains.
Types
The markets module exports the following TypeScript types.
MarketConfig
Configuration for a single market, keyed by market token address in the MARKETS map.
type MarketConfig = {
marketTokenAddress: string;
indexTokenAddress: string;
longTokenAddress: string;
shortTokenAddress: string;
};
MarketsConfigMap
A mapping from market token address to MarketConfig.
type MarketsConfigMap = Record<string, MarketConfig>;
MarketLabel
A template literal type for market label strings in the format "SYMBOL/USD [LONG-SHORT]".
type MarketLabel = `${string}/USD [${string}-${string}]`;
import type { MarketLabel } from "@gmx-io/sdk/configs/markets";
const label: MarketLabel = "BTC/USD [WBTC.e-USDC]";
Constants
SWAP_GRAPH_MAX_MARKETS_PER_TOKEN
SWAP_GRAPH_MAX_MARKETS_PER_TOKEN: number
Maximum number of markets per token considered when building the swap graph. Value: 5.
import { SWAP_GRAPH_MAX_MARKETS_PER_TOKEN } from "@gmx-io/sdk/configs/markets";
console.log(SWAP_GRAPH_MAX_MARKETS_PER_TOKEN); // 5
MARKETS
MARKETS: Record<ContractsChainId, MarketsConfigMap>
Complete market configuration mapping for all supported chains, keyed first by chain ID and then by market token address.
import { MARKETS, ARBITRUM } from "@gmx-io/sdk/configs/markets";
// Get all markets for Arbitrum
const arbitrumMarkets = MARKETS[ARBITRUM];
// Get a specific market configuration
const btcUsdMarket = MARKETS[ARBITRUM]["0x47c031236e19d024b42f8AE6780E44A573170703"];
console.log(btcUsdMarket.indexTokenAddress); // BTC index token address
Methods
The markets module exports the following functions for looking up market configuration by chain, address, or label.
getMarketsByChainId
getMarketsByChainId(chainId: ContractsChainId): Record<string, MarketConfig>
Returns all market configs for a chain. Throws if the chain ID has no configured markets.
import { getMarketsByChainId, ARBITRUM } from "@gmx-io/sdk/configs/markets";
const markets = getMarketsByChainId(ARBITRUM);
for (const [address, config] of Object.entries(markets)) {
console.log(address, config.indexTokenAddress);
}
getMarketByLabel
getMarketByLabel(chainId: ContractsChainId, label: MarketLabel): MarketConfig
Retrieves a market configuration by its human-readable label. Throws if the label is invalid or no matching market is found.
import { getMarketByLabel, ARBITRUM } from "@gmx-io/sdk/configs/markets";
const market = getMarketByLabel(ARBITRUM, "BTC/USD [WBTC.e-USDC]");
console.log(market.marketTokenAddress);
fixTokenSymbolFromMarketLabel
fixTokenSymbolFromMarketLabel(chainId: ContractsChainId, symbol: string): string
Normalizes a raw token symbol extracted from a market label to match the token configuration format. For example, on Arbitrum "WBTC" maps to "BTC" and "ETH" maps to "WETH".
import { fixTokenSymbolFromMarketLabel, ARBITRUM } from "@gmx-io/sdk/configs/markets";
console.log(fixTokenSymbolFromMarketLabel(ARBITRUM, "WBTC")); // "BTC"
console.log(fixTokenSymbolFromMarketLabel(ARBITRUM, "ETH")); // "WETH"
isMarketTokenAddress
isMarketTokenAddress(chainId: number, marketTokenAddress: string): boolean
Returns true if the given address is a known market token address on the specified chain.
import { isMarketTokenAddress, ARBITRUM } from "@gmx-io/sdk/configs/markets";
isMarketTokenAddress(ARBITRUM, "0x47c031236e19d024b42f8AE6780E44A573170703"); // true
isMarketTokenAddress(ARBITRUM, "0x0000000000000000000000000000000000000000"); // false
getTokenAddressByMarket
getTokenAddressByMarket(chainId: number, marketTokenAddress: string, tokenType: "long" | "short" | "index"): string
Returns the address of the long, short, or index token for a market. For "index", returns the native token address where applicable.
import { getTokenAddressByMarket, ARBITRUM } from "@gmx-io/sdk/configs/markets";
const longTokenAddress = getTokenAddressByMarket(ARBITRUM, "0x47c031236e19d024b42f8AE6780E44A573170703", "long");
getMarketIndexToken
getMarketIndexToken(chainId: number, marketTokenAddress: string): Token
Returns the Token object for a market's index token.
getTokenSymbolByMarket
getTokenSymbolByMarket(chainId: number, marketTokenAddress: string, tokenType: "long" | "short" | "index"): string
Returns the symbol of the long, short, or index token for a market.
getIsSpotOnlyMarket
getIsSpotOnlyMarket(chainId: number, marketTokenAddress: string): boolean
Returns true if the market is a spot-only market (index token address is zeroAddress, meaning no perpetuals).
getMarketIsSameCollaterals
getMarketIsSameCollaterals(chainId: number, marketTokenAddress: string): boolean
Returns true if the market uses the same token for both long and short collateral (single-sided collateral market).