UNPKG

bybit-mcp-server

Version:
172 lines 5.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BybitClient = void 0; const bybit_api_1 = require("bybit-api"); class BybitClient { constructor(config) { this.config = config; const baseUrl = config.baseUrl || (config.environment === 'testnet' ? 'https://api-testnet.bybit.com' : 'https://api.bybit.com'); this.client = new bybit_api_1.RestClientV5({ key: config.apiKey, secret: config.apiSecret, testnet: config.environment === 'testnet', baseUrl: baseUrl, }); } async getPrice(symbol) { try { const response = await this.client.getTickers({ category: 'spot', symbol: symbol }); return response; } catch (error) { throw new Error(`Failed to get price for ${symbol}: ${error}`); } } async getOrderBook(symbol, limit = 25) { try { const response = await this.client.getOrderbook({ category: 'spot', symbol: symbol, limit: limit }); return response; } catch (error) { throw new Error(`Failed to get order book for ${symbol}: ${error}`); } } async getKlines(symbol, interval, limit = 200) { try { const response = await this.client.getKline({ category: 'spot', symbol: symbol, interval: interval, limit: limit }); return response; } catch (error) { throw new Error(`Failed to get klines for ${symbol}: ${error}`); } } async get24hrTicker(symbol) { try { const response = await this.client.getTickers({ category: 'spot', symbol: symbol }); return response; } catch (error) { throw new Error(`Failed to get 24hr ticker: ${error}`); } } async getAccountInfo() { try { const response = await this.client.getWalletBalance({ accountType: 'UNIFIED' }); return response; } catch (error) { throw new Error(`Failed to get account info: ${error}`); } } async getWalletBalance(accountType, coin) { try { const response = await this.client.getWalletBalance({ accountType: accountType, coin: coin }); return response; } catch (error) { throw new Error(`Failed to get wallet balance: ${error}`); } } async getOpenOrders(category, symbol, limit = 20) { try { const response = await this.client.getActiveOrders({ category: category, symbol: symbol, limit: limit }); return response; } catch (error) { throw new Error(`Failed to get open orders: ${error}`); } } async getOrderHistory(category, symbol, limit = 20) { try { const response = await this.client.getHistoricOrders({ category: category, symbol: symbol, limit: limit }); return response; } catch (error) { throw new Error(`Failed to get order history: ${error}`); } } async placeOrder(params) { try { if (this.config.environment === 'mainnet') { console.error('⚠️ WARNING: Placing order on MAINNET with real funds!'); } const response = await this.client.submitOrder({ category: params.category, symbol: params.symbol, side: params.side, orderType: params.orderType, qty: params.qty, price: params.price, timeInForce: params.timeInForce }); return response; } catch (error) { throw new Error(`Failed to place order: ${error}`); } } async cancelOrder(category, symbol, orderId, orderLinkId) { try { if (this.config.environment === 'mainnet') { console.error('⚠️ WARNING: Canceling order on MAINNET!'); } const response = await this.client.cancelOrder({ category: category, symbol: symbol, orderId: orderId, orderLinkId: orderLinkId }); return response; } catch (error) { throw new Error(`Failed to cancel order: ${error}`); } } async cancelAllOrders(category, symbol) { try { if (this.config.environment === 'mainnet') { console.error('⚠️ WARNING: Canceling ALL orders on MAINNET!'); } const response = await this.client.cancelAllOrders({ category: category, symbol: symbol }); return response; } catch (error) { throw new Error(`Failed to cancel all orders: ${error}`); } } } exports.BybitClient = BybitClient; //# sourceMappingURL=client.js.map