TypeScript SDK
Type Reference
Complete TypeScript type definitions and interfaces for the LX SDK
Type Reference
Complete reference of all TypeScript types, interfaces, and enums exported by @luxfi/trading.
Enumerations
OrderType
enum OrderType {
/** Order at specific price */
LIMIT = 0,
/** Execute at best available price */
MARKET = 1,
/** Trigger when price reaches stop */
STOP = 2,
/** Stop that becomes limit order */
STOP_LIMIT = 3,
/** Hidden quantity order */
ICEBERG = 4,
/** Pegged to best bid/ask */
PEG = 5
}OrderSide
enum OrderSide {
/** Buy order */
BUY = 0,
/** Sell order */
SELL = 1
}OrderStatus
enum OrderStatus {
/** Order is active in the book */
OPEN = 'open',
/** Order is partially filled */
PARTIAL = 'partial',
/** Order is completely filled */
FILLED = 'filled',
/** Order was cancelled */
CANCELLED = 'cancelled',
/** Order was rejected */
REJECTED = 'rejected'
}TimeInForce
enum TimeInForce {
/** Good Till Cancelled - remains until filled or cancelled */
GTC = 'GTC',
/** Immediate Or Cancel - fill what you can, cancel rest */
IOC = 'IOC',
/** Fill Or Kill - fill entirely or cancel entirely */
FOK = 'FOK',
/** Day Order - expires at end of trading day */
DAY = 'DAY'
}Core Interfaces
Order
interface Order {
/** Unique order identifier (assigned by exchange) */
orderId?: number;
/** Trading pair symbol (e.g., "BTC-USD") */
symbol: string;
/** Order type */
type: OrderType;
/** Buy or sell */
side: OrderSide;
/** Order price (required for limit orders) */
price: number;
/** Order size in base currency */
size: number;
/** User identifier */
userID?: string;
/** Client-assigned order ID */
clientID?: string;
/** Time in force option */
timeInForce?: TimeInForce;
/** Only add liquidity (maker only) */
postOnly?: boolean;
/** Only reduce existing position */
reduceOnly?: boolean;
/** Current order status */
status?: OrderStatus;
/** Filled quantity */
filled?: number;
/** Remaining quantity */
remaining?: number;
/** Order creation timestamp (Unix ms) */
timestamp?: number;
}Trade
interface Trade {
/** Unique trade identifier */
tradeId: number;
/** Trading pair symbol */
symbol: string;
/** Execution price */
price: number;
/** Trade size */
size: number;
/** Taker side (who aggressed) */
side: OrderSide;
/** Buy order ID */
buyOrderId: number;
/** Sell order ID */
sellOrderId: number;
/** Buyer user ID */
buyerId: string;
/** Seller user ID */
sellerId: string;
/** Trade timestamp (Unix ms) */
timestamp: number;
}OrderBookLevel
interface OrderBookLevel {
/** Price level */
price: number;
/** Total size at this price */
size: number;
/** Number of orders at this level (optional) */
count?: number;
}OrderBook
interface OrderBook {
/** Trading pair symbol */
symbol: string;
/** Buy orders (highest price first) */
bids: OrderBookLevel[];
/** Sell orders (lowest price first) */
asks: OrderBookLevel[];
/** Snapshot timestamp (Unix ms) */
timestamp: number;
}NodeInfo
interface NodeInfo {
/** Node software version */
version: string;
/** Network identifier */
network: string;
/** Total orders processed */
orderCount: number;
/** Total trades executed */
tradeCount: number;
/** Current timestamp (Unix ms) */
timestamp: number;
}Configuration Types
ClientConfig
interface ClientConfig {
/** JSON-RPC endpoint URL */
jsonRpcUrl?: string;
/** WebSocket endpoint URL */
wsUrl?: string;
/** gRPC endpoint URL */
grpcUrl?: string;
/** API key for authentication */
apiKey?: string;
/** API secret for request signing */
apiSecret?: string;
/** Request timeout in milliseconds */
timeout?: number;
/** Retry configuration */
retry?: RetryConfig;
}RetryConfig
interface RetryConfig {
/** Maximum number of retry attempts */
maxRetries: number;
/** Base delay between retries (ms) */
backoffMs: number;
}Market Data Types
MarketDataSource
interface MarketDataSource {
/** Source name */
name: string;
/** Trading pair symbol */
symbol: string;
/** Current price */
price: number;
/** Best bid price */
bid: number;
/** Best ask price */
ask: number;
/** Trading volume */
volume: number;
/** Data latency in nanoseconds */
latencyNs: number;
/** Data provider name */
provider: string;
}MarketStats
interface MarketStats {
/** Trading pair symbol */
symbol: string;
/** 24-hour trading volume */
volume24h: number;
/** 24-hour high price */
high24h: number;
/** 24-hour low price */
low24h: number;
/** 24-hour price change (absolute) */
priceChange24h: number;
/** 24-hour price change (percentage) */
priceChangePercent24h: number;
/** Open interest */
openInterest: number;
/** Current funding rate */
fundingRate: number;
/** Next funding time */
nextFundingTime: Date;
}Account Types
MarginInfo
interface MarginInfo {
/** User identifier */
userId: string;
/** Initial margin requirement */
initialMargin: number;
/** Maintenance margin requirement */
maintenanceMargin: number;
/** Current margin ratio */
marginRatio: number;
/** Available margin for new positions */
freeMargin: number;
/** Margin level (equity / maintenance) */
marginLevel: number;
}LiquidationInfo
interface LiquidationInfo {
/** User identifier */
userId: string;
/** Position identifier */
positionId: string;
/** Trading pair symbol */
symbol: string;
/** Position size */
size: number;
/** Liquidation trigger price */
liquidationPrice: number;
/** Mark price at liquidation */
markPrice: number;
/** Liquidation status */
status: string;
/** Liquidation timestamp */
timestamp: Date;
}LiquidationRisk
interface LiquidationRisk {
/** User identifier */
userId: string;
/** Risk level assessment */
riskLevel: 'low' | 'medium' | 'high' | 'critical';
/** Current margin level */
marginLevel: number;
/** Price at which liquidation would occur */
liquidationPrice: number;
/** Estimated time to liquidation (ms, null if not imminent) */
timeToLiquidation: number | null;
/** Risk mitigation recommendations */
recommendations: string[];
}SettlementBatch
interface SettlementBatch {
/** Batch identifier */
batchId: number;
/** Order IDs in this batch */
orderIds: number[];
/** Settlement status */
status: string;
/** On-chain transaction hash (if settled) */
txHash?: string;
/** Gas used for settlement */
gasUsed?: number;
/** Settlement timestamp */
timestamp: Date;
}InsuranceFundStatus
interface InsuranceFundStatus {
/** Total fund balance */
totalFund: number;
/** Available for claims */
availableFund: number;
/** Currently used/reserved */
usedFund: number;
/** Number of pending claims */
pendingClaims: number;
/** Last update timestamp */
lastUpdate: Date;
}Response Types
PlaceOrderResponse
interface PlaceOrderResponse {
/** Assigned order ID */
orderId: number;
/** Order status after placement */
status: string;
}CancelOrderResponse
interface CancelOrderResponse {
/** Whether cancellation succeeded */
success: boolean;
/** Status message */
message: string;
}Callback Types
OrderBookCallback
type OrderBookCallback = (book: OrderBook) => void;TradeCallback
type TradeCallback = (trade: Trade) => void;LiquidationCallback
type LiquidationCallback = (liquidation: LiquidationInfo) => void;SettlementCallback
type SettlementCallback = (settlement: SettlementBatch) => void;MarginCallCallback
type MarginCallCallback = (event: MarginCallEvent) => void;Utility Types
MarginCallEvent
interface MarginCallEvent {
/** User identifier */
userId: string;
/** Current margin level */
marginLevel: number;
/** Required action */
requiredAction: string;
/** Deadline for action */
deadline: Date;
}DepthPoint
interface DepthPoint {
/** Price level */
price: number;
/** Cumulative size up to this price */
cumulativeSize: number;
/** Which side of the book */
side: 'bid' | 'ask';
}CandleData
interface CandleData {
/** Open price */
open: number;
/** High price */
high: number;
/** Low price */
low: number;
/** Close price */
close: number;
/** Volume */
volume: number;
/** Candle start timestamp */
timestamp: number;
}Constants
MarketDataProviders
const MarketDataProviders = {
ALPACA: 'alpaca',
NYSE_ARCA: 'nyse_arca',
IEX_CLOUD: 'iex',
POLYGON: 'polygon',
CME_GROUP: 'cme',
REFINITIV: 'refinitiv',
ICE_DATA: 'ice',
BLOOMBERG: 'bloomberg',
NASDAQ_TOTALVIEW: 'nasdaq',
COINBASE_PRO: 'coinbase'
} as const;
type MarketDataProvider = typeof MarketDataProviders[keyof typeof MarketDataProviders];Class Exports
Client
Main client class for interacting with LX.
class Client {
/** Market data sub-client */
marketData: MarketDataClient;
/** Liquidation monitoring sub-client */
liquidationMonitor: LiquidationMonitor;
constructor(config?: ClientConfig);
// Connection
connect(): Promise<void>;
disconnect(): void;
// Orders
placeOrder(order: Partial<Order>): Promise<PlaceOrderResponse>;
cancelOrder(orderId: number): Promise<CancelOrderResponse>;
getOrder(orderId: number): Promise<Order>;
// Market Data
getOrderBook(symbol?: string, depth?: number): Promise<OrderBook>;
getBestBid(symbol?: string): Promise<number>;
getBestAsk(symbol?: string): Promise<number>;
getTrades(symbol?: string, limit?: number): Promise<Trade[]>;
// Node Info
getInfo(): Promise<NodeInfo>;
ping(): Promise<string>;
// Subscriptions
subscribe(channel: string, callback: Function): void;
unsubscribe(channel: string, callback?: Function): void;
subscribeOrderBook(symbol: string, callback: OrderBookCallback): void;
subscribeTrades(symbol: string, callback: TradeCallback): void;
// Utilities
static formatPrice(price: number, decimals?: number): string;
static formatSize(size: number, decimals?: number): string;
static calculateTotal(price: number, size: number): number;
}MarketDataClient
Sub-client for market data operations.
class MarketDataClient {
constructor(jsonRpcClient: any);
getMarketData(symbol: string, source: string): Promise<MarketDataSource>;
getAggregatedMarketData(symbol: string): Promise<MarketDataSource[]>;
getLiquidations(symbol: string, limit?: number): Promise<LiquidationInfo[]>;
getSettlementBatch(batchId: number): Promise<SettlementBatch>;
getMarginInfo(userId: string): Promise<MarginInfo>;
checkLiquidationRisk(userId: string): Promise<LiquidationRisk>;
getInsuranceFundStatus(): Promise<InsuranceFundStatus>;
getMarketDataSources(): Promise<string[]>;
getMarketStats(symbol: string): Promise<MarketStats>;
}LiquidationMonitor
Sub-client for liquidation monitoring.
class LiquidationMonitor {
constructor(wsConnection: WebSocket | null);
setWebSocket(ws: WebSocket): void;
subscribeLiquidations(callback: LiquidationCallback): void;
subscribeSettlements(callback: SettlementCallback): void;
subscribeMarginCalls(userId: string, callback: MarginCallCallback): void;
unsubscribe(channel: string): void;
handleMessage(channel: string, data: any): void;
}Module Exports
// Main export
export { Client };
export default Client;
// Enums
export { OrderType, OrderSide, OrderStatus, TimeInForce };
// Interfaces
export {
Order,
Trade,
OrderBook,
OrderBookLevel,
NodeInfo,
ClientConfig,
MarketDataSource,
MarketStats,
MarginInfo,
LiquidationInfo,
LiquidationRisk,
SettlementBatch,
InsuranceFundStatus
};
// Sub-clients
export { MarketDataClient, LiquidationMonitor };
// Constants
export { MarketDataProviders };
// Types
export type { MarketDataProvider };Type Guards
isOrder
function isOrder(value: unknown): value is Order {
return (
typeof value === 'object' &&
value !== null &&
'symbol' in value &&
'type' in value &&
'side' in value &&
'size' in value
);
}isTrade
function isTrade(value: unknown): value is Trade {
return (
typeof value === 'object' &&
value !== null &&
'tradeId' in value &&
'symbol' in value &&
'price' in value &&
'size' in value &&
'timestamp' in value
);
}isOrderBook
function isOrderBook(value: unknown): value is OrderBook {
return (
typeof value === 'object' &&
value !== null &&
'symbol' in value &&
'bids' in value &&
'asks' in value &&
Array.isArray((value as OrderBook).bids) &&
Array.isArray((value as OrderBook).asks)
);
}Generic Types
Result Type
type Result<T, E = Error> =
| { success: true; data: T }
| { success: false; error: E };
// Usage
async function safePlaceOrder(
client: Client,
order: Partial<Order>
): Promise<Result<PlaceOrderResponse>> {
try {
const data = await client.placeOrder(order);
return { success: true, data };
} catch (error) {
return {
success: false,
error: error instanceof Error ? error : new Error('Unknown error')
};
}
}AsyncResult Type
type AsyncResult<T> = Promise<Result<T>>;See Also
- Client Configuration - Client setup and options
- Order Management - Working with orders
- WebSocket Guide - Real-time connections