UNPKG

@dbotx/conditional-order-mcp-server

Version:

Conditional Order MCP Server - Supports creating and managing conditional orders, automatically executing trades based on specific conditions

196 lines 6.26 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DbotClient = void 0; const axios_1 = __importDefault(require("axios")); class DbotClient { client; apiKey; baseUrl; constructor(apiKey, baseUrl = 'https://api-bot-v1.dbotx.com') { this.apiKey = apiKey || process.env.DBOT_API_KEY; if (!this.apiKey) { throw new Error('Please set the DBOT_API_KEY environment variable'); } this.baseUrl = baseUrl; this.client = axios_1.default.create({ baseURL: this.baseUrl, headers: { 'X-API-KEY': this.apiKey, 'Content-Type': 'application/json', }, timeout: 30000, }); } /** * Converts the sell-on-open order request data to the format required by the API. */ convertMigrateOrderData(request) { const data = { chain: request.chain, pairType: request.pairType, pair: request.pair, walletId: request.walletId, tradeType: request.tradeType, amountOrPercent: request.amountOrPercent, customFeeAndTip: request.customFeeAndTip, priorityFee: request.priorityFee, jitoEnabled: request.jitoEnabled, jitoTip: request.jitoTip, expireDelta: request.expireDelta, maxSlippage: request.maxSlippage, concurrentNodes: request.concurrentNodes, retries: request.retries, }; // If it's an update request, add the ID if ('id' in request) { data.id = request.id; } return data; } /** * Converts the follow-dev-sell order request data to the format required by the API. */ convertDevOrderData(request) { const data = { chain: request.chain, pairType: request.pairType, pair: request.pair, walletId: request.walletId, tradeType: request.tradeType, minDevSellPercent: request.minDevSellPercent, amountOrPercent: request.amountOrPercent, customFeeAndTip: request.customFeeAndTip, priorityFee: request.priorityFee, jitoEnabled: request.jitoEnabled, jitoTip: request.jitoTip, expireDelta: request.expireDelta, maxSlippage: request.maxSlippage, concurrentNodes: request.concurrentNodes, retries: request.retries, }; // If it's an update request, add the ID if ('id' in request) { data.id = request.id; } return data; } /** * Creates a sell-on-open task. */ async createMigrateOrder(request) { const url = '/automation/migrate_order'; const data = this.convertMigrateOrderData(request); const response = await this.client.post(url, data); return response.data; } /** * Creates a follow-dev-sell task. */ async createDevOrder(request) { const url = '/automation/dev_order'; const data = this.convertDevOrderData(request); const response = await this.client.post(url, data); return response.data; } /** * Edits a sell-on-open task. */ async updateMigrateOrder(request) { const url = '/automation/migrate_order'; const data = this.convertMigrateOrderData(request); const response = await this.client.patch(url, data); return response.data; } /** * Edits a follow-dev-sell task. */ async updateDevOrder(request) { const url = '/automation/dev_order'; const data = this.convertDevOrderData(request); const response = await this.client.patch(url, data); return response.data; } /** * Toggles a sell-on-open task on/off. */ async toggleMigrateOrder(request) { const url = '/automation/migrate_order'; const data = { id: request.id, enabled: request.enabled, }; const response = await this.client.patch(url, data); return response.data; } /** * Toggles a follow-dev-sell task on/off. */ async toggleDevOrder(request) { const url = '/automation/dev_order'; const data = { id: request.id, enabled: request.enabled, }; const response = await this.client.patch(url, data); return response.data; } /** * Deletes a sell-on-open task. */ async deleteMigrateOrder(orderId) { const url = `/automation/migrate_order/${orderId}`; const response = await this.client.delete(url); return response.data; } /** * Deletes a follow-dev-sell task. */ async deleteDevOrder(orderId) { const url = `/automation/dev_order/${orderId}`; const response = await this.client.delete(url); return response.data; } /** * Gets the list of sell-on-open tasks. */ async getMigrateOrders(page = 0, size = 20, chain = 'solana', state, source) { const url = '/automation/migrate_orders'; const params = { page, size, chain, }; if (state) { params.state = state; } if (source) { params.source = source; } const response = await this.client.get(url, { params }); return response.data; } /** * Gets the list of follow-dev-sell tasks. */ async getDevOrders(page = 0, size = 20, chain = 'solana', state, source) { const url = '/automation/dev_orders'; const params = { page, size, chain, }; if (state) { params.state = state; } if (source) { params.source = source; } const response = await this.client.get(url, { params }); return response.data; } } exports.DbotClient = DbotClient; //# sourceMappingURL=client.js.map