UNPKG

@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
"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