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