@barfinex/types
Version:
Core TypeScript type definitions and shared interfaces for the Barfinex ecosystem. Provides strongly-typed contracts for modules, services, and plugins.
841 lines • 41.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.EXCHANGE_CATALOG = exports.EXCHANGE_STATUS_LABELS = exports.ExchangeConnectorStatus = exports.EXCHANGE_SEGMENT_LABELS = exports.ExchangeSegment = void 0;
exports.getExchangeCatalogEntry = getExchangeCatalogEntry;
exports.getExchangesBySegment = getExchangesBySegment;
const connector_interface_1 = require("./connector.interface");
// ─── Exchange market segments ───
var ExchangeSegment;
(function (ExchangeSegment) {
ExchangeSegment["CRYPTO_MAJOR"] = "crypto_major";
ExchangeSegment["CRYPTO_DERIVATIVES"] = "crypto_derivatives";
ExchangeSegment["CRYPTO_OTHER"] = "crypto_other";
ExchangeSegment["US_BROKER"] = "us_broker";
ExchangeSegment["EU_BROKER"] = "eu_broker";
ExchangeSegment["APAC_BROKER"] = "apac_broker";
ExchangeSegment["CIS_BROKER"] = "cis_broker";
ExchangeSegment["KZ_BROKER"] = "kz_broker";
ExchangeSegment["FOREX"] = "forex";
ExchangeSegment["FUTURES_DERIVATIVES"] = "futures_derivatives";
ExchangeSegment["OTC_INSTITUTIONAL"] = "otc_institutional";
ExchangeSegment["MARKET_DATA"] = "market_data";
ExchangeSegment["DEX"] = "dex";
})(ExchangeSegment || (exports.ExchangeSegment = ExchangeSegment = {}));
exports.EXCHANGE_SEGMENT_LABELS = {
[ExchangeSegment.CRYPTO_MAJOR]: 'Crypto — Major Exchanges',
[ExchangeSegment.CRYPTO_DERIVATIVES]: 'Crypto — Derivatives',
[ExchangeSegment.CRYPTO_OTHER]: 'Crypto — Other',
[ExchangeSegment.US_BROKER]: 'US Brokers',
[ExchangeSegment.EU_BROKER]: 'European Brokers',
[ExchangeSegment.APAC_BROKER]: 'Asia-Pacific Brokers',
[ExchangeSegment.CIS_BROKER]: 'CIS Brokers',
[ExchangeSegment.KZ_BROKER]: 'Kazakhstan Brokers',
[ExchangeSegment.FOREX]: 'Forex Brokers',
[ExchangeSegment.FUTURES_DERIVATIVES]: 'Futures & Derivatives',
[ExchangeSegment.OTC_INSTITUTIONAL]: 'OTC / Institutional',
[ExchangeSegment.MARKET_DATA]: 'Market Data Providers',
[ExchangeSegment.DEX]: 'Decentralized Exchanges',
};
// ─── Exchange connector status ───
var ExchangeConnectorStatus;
(function (ExchangeConnectorStatus) {
/** Connector is running and streaming data */
ExchangeConnectorStatus["ACTIVE"] = "active";
/** Connector is registered but not started (no credentials or user-paused) */
ExchangeConnectorStatus["INACTIVE"] = "inactive";
/** Connector is currently initializing (loading pairs, opening WS) */
ExchangeConnectorStatus["CONNECTING"] = "connecting";
/** Connector lost connection, will auto-retry */
ExchangeConnectorStatus["RECONNECTING"] = "reconnecting";
/** Connector encountered a fatal error (bad credentials, banned IP, etc.) */
ExchangeConnectorStatus["ERROR"] = "error";
/** Connector is gracefully shutting down */
ExchangeConnectorStatus["STOPPING"] = "stopping";
})(ExchangeConnectorStatus || (exports.ExchangeConnectorStatus = ExchangeConnectorStatus = {}));
exports.EXCHANGE_STATUS_LABELS = {
[ExchangeConnectorStatus.ACTIVE]: 'Active',
[ExchangeConnectorStatus.INACTIVE]: 'Inactive',
[ExchangeConnectorStatus.CONNECTING]: 'Connecting…',
[ExchangeConnectorStatus.RECONNECTING]: 'Reconnecting…',
[ExchangeConnectorStatus.ERROR]: 'Error',
[ExchangeConnectorStatus.STOPPING]: 'Stopping…',
};
// ─── Full catalog (static, build-time) ───
exports.EXCHANGE_CATALOG = [
// ═══════════════════════════════════════════════════════════════
// CRYPTO — MAJOR
// ═══════════════════════════════════════════════════════════════
{
connectorType: connector_interface_1.ConnectorType.binance,
displayName: 'Binance',
segment: ExchangeSegment.CRYPTO_MAJOR,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.futures],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true, placeholder: 'Enter Binance API Key' },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true, placeholder: 'Enter Binance API Secret' },
],
website: 'https://www.binance.com',
description: 'World\'s largest crypto exchange by volume',
logoSlug: 'binance',
},
{
connectorType: connector_interface_1.ConnectorType.kraken,
displayName: 'Kraken',
segment: ExchangeSegment.CRYPTO_MAJOR,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.futures, connector_interface_1.MarketType.margin],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true, placeholder: 'Enter Kraken API Key' },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true, placeholder: 'Enter Kraken API Secret' },
],
website: 'https://www.kraken.com',
description: 'US-based crypto exchange, strong security track record',
logoSlug: 'kraken',
},
{
connectorType: connector_interface_1.ConnectorType.coinbase,
displayName: 'Coinbase',
segment: ExchangeSegment.CRYPTO_MAJOR,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.coinbase.com',
description: 'Publicly-listed US crypto exchange',
logoSlug: 'coinbase',
},
{
connectorType: connector_interface_1.ConnectorType.bybit,
displayName: 'Bybit',
segment: ExchangeSegment.CRYPTO_MAJOR,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.futures],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.bybit.com',
description: 'Major crypto derivatives exchange',
logoSlug: 'bybit',
},
{
connectorType: connector_interface_1.ConnectorType.okx,
displayName: 'OKX',
segment: ExchangeSegment.CRYPTO_MAJOR,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.futures],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
{ key: 'passphrase', label: 'Passphrase', type: 'password', required: true },
],
website: 'https://www.okx.com',
description: 'Global crypto exchange with derivatives',
logoSlug: 'okx',
},
{
connectorType: connector_interface_1.ConnectorType.kucoin,
displayName: 'KuCoin',
segment: ExchangeSegment.CRYPTO_MAJOR,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.futures],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
{ key: 'passphrase', label: 'Passphrase', type: 'password', required: true },
],
website: 'https://www.kucoin.com',
description: 'Global crypto exchange with wide altcoin selection',
logoSlug: 'kucoin',
},
{
connectorType: connector_interface_1.ConnectorType.gate,
displayName: 'Gate.io',
segment: ExchangeSegment.CRYPTO_MAJOR,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.futures],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.gate.io',
logoSlug: 'gate',
},
{
connectorType: connector_interface_1.ConnectorType.htx,
displayName: 'HTX (Huobi)',
segment: ExchangeSegment.CRYPTO_MAJOR,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.futures],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.htx.com',
logoSlug: 'htx',
},
{
connectorType: connector_interface_1.ConnectorType.mexc,
displayName: 'MEXC',
segment: ExchangeSegment.CRYPTO_MAJOR,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.futures],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.mexc.com',
logoSlug: 'mexc',
},
// ═══════════════════════════════════════════════════════════════
// CRYPTO — DERIVATIVES
// ═══════════════════════════════════════════════════════════════
{
connectorType: connector_interface_1.ConnectorType.bitget,
displayName: 'Bitget',
segment: ExchangeSegment.CRYPTO_DERIVATIVES,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.futures],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
{ key: 'passphrase', label: 'Passphrase', type: 'password', required: true },
],
website: 'https://www.bitget.com',
logoSlug: 'bitget',
},
{
connectorType: connector_interface_1.ConnectorType.phemex,
displayName: 'Phemex',
segment: ExchangeSegment.CRYPTO_DERIVATIVES,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.futures],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.phemex.com',
logoSlug: 'phemex',
},
{
connectorType: connector_interface_1.ConnectorType.bingx,
displayName: 'BingX',
segment: ExchangeSegment.CRYPTO_DERIVATIVES,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.futures],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.bingx.com',
logoSlug: 'bingx',
},
{
connectorType: connector_interface_1.ConnectorType.deribit,
displayName: 'Deribit',
segment: ExchangeSegment.CRYPTO_DERIVATIVES,
supportedMarkets: [connector_interface_1.MarketType.futures],
credentials: [
{ key: 'clientId', label: 'Client ID', type: 'text', required: true },
{ key: 'clientSecret', label: 'Client Secret', type: 'password', required: true },
],
website: 'https://www.deribit.com',
description: 'Leading crypto options & futures exchange',
logoSlug: 'deribit',
},
// ═══════════════════════════════════════════════════════════════
// CRYPTO — OTHER
// ═══════════════════════════════════════════════════════════════
{
connectorType: connector_interface_1.ConnectorType.bitstamp,
displayName: 'Bitstamp',
segment: ExchangeSegment.CRYPTO_OTHER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.bitstamp.net',
logoSlug: 'bitstamp',
},
{
connectorType: connector_interface_1.ConnectorType.gemini,
displayName: 'Gemini',
segment: ExchangeSegment.CRYPTO_OTHER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.gemini.com',
logoSlug: 'gemini',
},
{
connectorType: connector_interface_1.ConnectorType.cryptocom,
displayName: 'Crypto.com',
segment: ExchangeSegment.CRYPTO_OTHER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://crypto.com',
logoSlug: 'cryptocom',
},
{
connectorType: connector_interface_1.ConnectorType.testnetBinanceFutures,
displayName: 'Binance Futures Testnet',
segment: ExchangeSegment.CRYPTO_OTHER,
supportedMarkets: [connector_interface_1.MarketType.futures],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
description: 'Binance Futures testnet for paper trading',
logoSlug: 'binance',
},
// ═══════════════════════════════════════════════════════════════
// US BROKERS
// ═══════════════════════════════════════════════════════════════
{
connectorType: connector_interface_1.ConnectorType.alpaca,
displayName: 'Alpaca',
segment: ExchangeSegment.US_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key ID', type: 'text', required: true },
{ key: 'apiSecret', label: 'Secret Key', type: 'password', required: true },
{ key: 'paper', label: 'Paper Trading', type: 'select', required: false, options: ['true', 'false'] },
],
website: 'https://alpaca.markets',
description: 'Commission-free stock trading API',
logoSlug: 'alpaca',
},
{
connectorType: connector_interface_1.ConnectorType.ib,
displayName: 'Interactive Brokers',
segment: ExchangeSegment.US_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.futures, connector_interface_1.MarketType.margin],
credentials: [
{ key: 'host', label: 'TWS/Gateway Host', type: 'text', required: true, placeholder: '127.0.0.1' },
{ key: 'port', label: 'TWS/Gateway Port', type: 'text', required: true, placeholder: '7497' },
{ key: 'clientId', label: 'Client ID', type: 'text', required: false, placeholder: '1' },
],
website: 'https://www.interactivebrokers.com',
description: 'Multi-asset broker for professionals',
logoSlug: 'ib',
},
{
connectorType: connector_interface_1.ConnectorType.tradier,
displayName: 'Tradier',
segment: ExchangeSegment.US_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'accessToken', label: 'Access Token', type: 'password', required: true },
{ key: 'accountId', label: 'Account ID', type: 'text', required: true },
],
website: 'https://tradier.com',
logoSlug: 'tradier',
},
{
connectorType: connector_interface_1.ConnectorType.robinhood,
displayName: 'Robinhood',
segment: ExchangeSegment.US_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'username', label: 'Username', type: 'text', required: true },
{ key: 'password', label: 'Password', type: 'password', required: true },
{ key: 'mfaCode', label: 'MFA Code', type: 'text', required: false },
],
website: 'https://robinhood.com',
logoSlug: 'robinhood',
},
{
connectorType: connector_interface_1.ConnectorType.etrade,
displayName: 'E*TRADE',
segment: ExchangeSegment.US_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'consumerKey', label: 'Consumer Key', type: 'text', required: true },
{ key: 'consumerSecret', label: 'Consumer Secret', type: 'password', required: true },
],
website: 'https://us.etrade.com',
logoSlug: 'etrade',
},
{
connectorType: connector_interface_1.ConnectorType.charles_schwab,
displayName: 'Charles Schwab',
segment: ExchangeSegment.US_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'appKey', label: 'App Key', type: 'text', required: true },
{ key: 'appSecret', label: 'App Secret', type: 'password', required: true },
],
website: 'https://www.schwab.com',
logoSlug: 'charles_schwab',
},
{
connectorType: connector_interface_1.ConnectorType.fidelity,
displayName: 'Fidelity',
segment: ExchangeSegment.US_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'username', label: 'Username', type: 'text', required: true },
{ key: 'password', label: 'Password', type: 'password', required: true },
],
website: 'https://www.fidelity.com',
logoSlug: 'fidelity',
},
// ═══════════════════════════════════════════════════════════════
// EUROPEAN BROKERS
// ═══════════════════════════════════════════════════════════════
{
connectorType: connector_interface_1.ConnectorType.etoro,
displayName: 'eToro',
segment: ExchangeSegment.EU_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.etoro.com',
logoSlug: 'etoro',
},
{
connectorType: connector_interface_1.ConnectorType.trading212,
displayName: 'Trading 212',
segment: ExchangeSegment.EU_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'password', required: true },
],
website: 'https://www.trading212.com',
logoSlug: 'trading212',
},
{
connectorType: connector_interface_1.ConnectorType.ig_group,
displayName: 'IG Group',
segment: ExchangeSegment.EU_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.futures],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'username', label: 'Username', type: 'text', required: true },
{ key: 'password', label: 'Password', type: 'password', required: true },
],
website: 'https://www.ig.com',
logoSlug: 'ig_group',
},
{
connectorType: connector_interface_1.ConnectorType.degiro,
displayName: 'DEGIRO',
segment: ExchangeSegment.EU_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'username', label: 'Username', type: 'text', required: true },
{ key: 'password', label: 'Password', type: 'password', required: true },
],
website: 'https://www.degiro.com',
logoSlug: 'degiro',
},
{
connectorType: connector_interface_1.ConnectorType.hargreaves_lansdown,
displayName: 'Hargreaves Lansdown',
segment: ExchangeSegment.EU_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'username', label: 'Username', type: 'text', required: true },
{ key: 'password', label: 'Password', type: 'password', required: true },
],
website: 'https://www.hl.co.uk',
logoSlug: 'hargreaves_lansdown',
},
{
connectorType: connector_interface_1.ConnectorType.saxo_bank,
displayName: 'Saxo Bank',
segment: ExchangeSegment.EU_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.futures, connector_interface_1.MarketType.margin],
credentials: [
{ key: 'appKey', label: 'App Key', type: 'text', required: true },
{ key: 'appSecret', label: 'App Secret', type: 'password', required: true },
{ key: 'accessToken', label: 'Access Token', type: 'password', required: true },
],
website: 'https://www.home.saxo',
logoSlug: 'saxo_bank',
},
// ═══════════════════════════════════════════════════════════════
// ASIA-PACIFIC BROKERS
// ═══════════════════════════════════════════════════════════════
{
connectorType: connector_interface_1.ConnectorType.tiger_brokers,
displayName: 'Tiger Brokers',
segment: ExchangeSegment.APAC_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'tigerId', label: 'Tiger ID', type: 'text', required: true },
{ key: 'privateKey', label: 'Private Key', type: 'password', required: true },
],
website: 'https://www.tigerbrokers.com',
logoSlug: 'tiger_brokers',
},
{
connectorType: connector_interface_1.ConnectorType.futu,
displayName: 'Futu (moomoo)',
segment: ExchangeSegment.APAC_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'host', label: 'OpenD Host', type: 'text', required: true, placeholder: '127.0.0.1' },
{ key: 'port', label: 'OpenD Port', type: 'text', required: true, placeholder: '11111' },
],
website: 'https://www.futunn.com',
logoSlug: 'futu',
},
{
connectorType: connector_interface_1.ConnectorType.rakuten_securities,
displayName: 'Rakuten Securities',
segment: ExchangeSegment.APAC_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.rakuten-sec.co.jp',
logoSlug: 'rakuten_securities',
},
// ═══════════════════════════════════════════════════════════════
// CIS BROKERS
// ═══════════════════════════════════════════════════════════════
{
connectorType: connector_interface_1.ConnectorType.tinkoff,
displayName: 'Tinkoff Investments',
segment: ExchangeSegment.CIS_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'token', label: 'API Token', type: 'password', required: true },
],
website: 'https://www.tinkoff.ru/invest',
logoSlug: 'tinkoff',
},
// ═══════════════════════════════════════════════════════════════
// KAZAKHSTAN BROKERS
// ═══════════════════════════════════════════════════════════════
{
connectorType: connector_interface_1.ConnectorType.kase,
displayName: 'KASE',
segment: ExchangeSegment.KZ_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://kase.kz',
description: 'Kazakhstan Stock Exchange',
logoSlug: 'kase',
},
{
connectorType: connector_interface_1.ConnectorType.aix,
displayName: 'AIX (Astana International Exchange)',
segment: ExchangeSegment.KZ_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.aix.kz',
logoSlug: 'aix',
},
{
connectorType: connector_interface_1.ConnectorType.freedom_finance,
displayName: 'Freedom Finance',
segment: ExchangeSegment.KZ_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://freedom24.com',
logoSlug: 'freedom_finance',
},
{
connectorType: connector_interface_1.ConnectorType.halyk_finance,
displayName: 'Halyk Finance',
segment: ExchangeSegment.KZ_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.halykfinance.kz',
logoSlug: 'halyk_finance',
},
{
connectorType: connector_interface_1.ConnectorType.bcc_invest,
displayName: 'BCC Invest',
segment: ExchangeSegment.KZ_BROKER,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.bcc-invest.kz',
logoSlug: 'bcc_invest',
},
// ═══════════════════════════════════════════════════════════════
// FOREX
// ═══════════════════════════════════════════════════════════════
{
connectorType: connector_interface_1.ConnectorType.oanda,
displayName: 'OANDA',
segment: ExchangeSegment.FOREX,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.margin],
credentials: [
{ key: 'apiKey', label: 'API Token', type: 'password', required: true },
{ key: 'accountId', label: 'Account ID', type: 'text', required: true },
],
website: 'https://www.oanda.com',
logoSlug: 'oanda',
},
{
connectorType: connector_interface_1.ConnectorType.forex_com,
displayName: 'FOREX.com',
segment: ExchangeSegment.FOREX,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.margin],
credentials: [
{ key: 'username', label: 'Username', type: 'text', required: true },
{ key: 'password', label: 'Password', type: 'password', required: true },
{ key: 'accountId', label: 'Account ID', type: 'text', required: true },
],
website: 'https://www.forex.com',
logoSlug: 'forex_com',
},
{
connectorType: connector_interface_1.ConnectorType.ig_markets,
displayName: 'IG Markets',
segment: ExchangeSegment.FOREX,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.margin],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'username', label: 'Username', type: 'text', required: true },
{ key: 'password', label: 'Password', type: 'password', required: true },
],
website: 'https://www.ig.com',
logoSlug: 'ig_markets',
},
{
connectorType: connector_interface_1.ConnectorType.pepperstone,
displayName: 'Pepperstone',
segment: ExchangeSegment.FOREX,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.margin],
credentials: [
{ key: 'login', label: 'MT4/MT5 Login', type: 'text', required: true },
{ key: 'password', label: 'Password', type: 'password', required: true },
{ key: 'server', label: 'Server', type: 'text', required: true },
],
website: 'https://www.pepperstone.com',
logoSlug: 'pepperstone',
},
{
connectorType: connector_interface_1.ConnectorType.xm,
displayName: 'XM',
segment: ExchangeSegment.FOREX,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.margin],
credentials: [
{ key: 'login', label: 'MT4/MT5 Login', type: 'text', required: true },
{ key: 'password', label: 'Password', type: 'password', required: true },
{ key: 'server', label: 'Server', type: 'text', required: true },
],
website: 'https://www.xm.com',
logoSlug: 'xm',
},
// ═══════════════════════════════════════════════════════════════
// FUTURES & DERIVATIVES
// ═══════════════════════════════════════════════════════════════
{
connectorType: connector_interface_1.ConnectorType.cme_group,
displayName: 'CME Group',
segment: ExchangeSegment.FUTURES_DERIVATIVES,
supportedMarkets: [connector_interface_1.MarketType.futures],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.cmegroup.com',
logoSlug: 'cme_group',
},
{
connectorType: connector_interface_1.ConnectorType.ice,
displayName: 'ICE',
segment: ExchangeSegment.FUTURES_DERIVATIVES,
supportedMarkets: [connector_interface_1.MarketType.futures],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.ice.com',
logoSlug: 'ice',
},
{
connectorType: connector_interface_1.ConnectorType.tradovate,
displayName: 'Tradovate',
segment: ExchangeSegment.FUTURES_DERIVATIVES,
supportedMarkets: [connector_interface_1.MarketType.futures],
credentials: [
{ key: 'username', label: 'Username', type: 'text', required: true },
{ key: 'password', label: 'Password', type: 'password', required: true },
{ key: 'cid', label: 'CID', type: 'text', required: false },
],
website: 'https://www.tradovate.com',
logoSlug: 'tradovate',
},
{
connectorType: connector_interface_1.ConnectorType.ninjatrader,
displayName: 'NinjaTrader',
segment: ExchangeSegment.FUTURES_DERIVATIVES,
supportedMarkets: [connector_interface_1.MarketType.futures],
credentials: [
{ key: 'username', label: 'Username', type: 'text', required: true },
{ key: 'password', label: 'Password', type: 'password', required: true },
],
website: 'https://ninjatrader.com',
logoSlug: 'ninjatrader',
},
// ═══════════════════════════════════════════════════════════════
// OTC / INSTITUTIONAL
// ═══════════════════════════════════════════════════════════════
{
connectorType: connector_interface_1.ConnectorType.wintermute,
displayName: 'Wintermute',
segment: ExchangeSegment.OTC_INSTITUTIONAL,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://www.wintermute.com',
logoSlug: 'wintermute',
},
{
connectorType: connector_interface_1.ConnectorType.jump_trading,
displayName: 'Jump Trading',
segment: ExchangeSegment.OTC_INSTITUTIONAL,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
logoSlug: 'jump_trading',
},
{
connectorType: connector_interface_1.ConnectorType.cumberland,
displayName: 'Cumberland',
segment: ExchangeSegment.OTC_INSTITUTIONAL,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
logoSlug: 'cumberland',
},
{
connectorType: connector_interface_1.ConnectorType.falconx,
displayName: 'FalconX',
segment: ExchangeSegment.OTC_INSTITUTIONAL,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
{ key: 'apiSecret', label: 'API Secret', type: 'password', required: true },
],
website: 'https://falconx.io',
logoSlug: 'falconx',
},
// ═══════════════════════════════════════════════════════════════
// MARKET DATA PROVIDERS
// ═══════════════════════════════════════════════════════════════
{
connectorType: connector_interface_1.ConnectorType.polygon,
displayName: 'Polygon.io',
segment: ExchangeSegment.MARKET_DATA,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'text', required: true },
],
website: 'https://polygon.io',
description: 'Real-time & historical market data for stocks, options, forex, crypto',
logoSlug: 'polygon',
},
{
connectorType: connector_interface_1.ConnectorType.tiingo,
displayName: 'Tiingo',
segment: ExchangeSegment.MARKET_DATA,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Token', type: 'password', required: true },
],
website: 'https://www.tiingo.com',
logoSlug: 'tiingo',
},
{
connectorType: connector_interface_1.ConnectorType.glassnode,
displayName: 'Glassnode',
segment: ExchangeSegment.MARKET_DATA,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'password', required: true },
],
website: 'https://glassnode.com',
description: 'On-chain market intelligence',
logoSlug: 'glassnode',
},
{
connectorType: connector_interface_1.ConnectorType.coinglass,
displayName: 'Coinglass',
segment: ExchangeSegment.MARKET_DATA,
supportedMarkets: [connector_interface_1.MarketType.spot, connector_interface_1.MarketType.futures],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'password', required: true },
],
website: 'https://www.coinglass.com',
logoSlug: 'coinglass',
},
{
connectorType: connector_interface_1.ConnectorType.kaiko,
displayName: 'Kaiko',
segment: ExchangeSegment.MARKET_DATA,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'password', required: true },
],
website: 'https://www.kaiko.com',
description: 'Institutional-grade crypto market data',
logoSlug: 'kaiko',
},
{
connectorType: connector_interface_1.ConnectorType.messari,
displayName: 'Messari',
segment: ExchangeSegment.MARKET_DATA,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'apiKey', label: 'API Key', type: 'password', required: true },
],
website: 'https://messari.io',
logoSlug: 'messari',
},
// ═══════════════════════════════════════════════════════════════
// DEX
// ═══════════════════════════════════════════════════════════════
{
connectorType: connector_interface_1.ConnectorType.dex,
displayName: 'DEX Aggregator',
segment: ExchangeSegment.DEX,
supportedMarkets: [connector_interface_1.MarketType.spot],
credentials: [
{ key: 'walletAddress', label: 'Wallet Address', type: 'text', required: true },
{ key: 'privateKey', label: 'Private Key', type: 'password', required: false, placeholder: 'Only needed for trading' },
{ key: 'rpcUrl', label: 'RPC URL', type: 'text', required: true, placeholder: 'https://mainnet.infura.io/v3/...' },
],
description: 'Aggregated DEX liquidity (Uniswap, SushiSwap, etc.)',
logoSlug: 'dex',
},
];
// ─── Lookup helpers ───
function getExchangeCatalogEntry(connectorType) {
return exports.EXCHANGE_CATALOG.find((e) => e.connectorType === connectorType);
}
function getExchangesBySegment() {
const result = {};
for (const segment of Object.values(ExchangeSegment)) {
result[segment] = exports.EXCHANGE_CATALOG.filter((e) => e.segment === segment);
}
return result;
}
//# sourceMappingURL=exchange-catalog.interface.js.map