UNPKG

@bbigu0898/fast-swap-mcp

Version:

Fast Swap MCP Server - Supports quickly initiating token buy/sell tasks, querying transaction results, and managing take-profit/stop-loss tasks.

132 lines 8.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CreateLimitOrdersRequestSchema = exports.LimitOrderSettingSchema = exports.TriggerDirectionSchema = exports.CreateFastSwapsRequestSchema = exports.CreateFastSwapRequestSchema = exports.PnlCustomConfigSchema = exports.PnlGroupSchema = exports.TradeTypeSchema = exports.ChainSchema = void 0; exports.getEnvDefault = getEnvDefault; const zod_1 = require("zod"); // 从环境变量获取默认值的辅助函数 function getEnvDefault(envKey, defaultValue, transform) { const envValue = process.env[envKey]; if (envValue === undefined) { return defaultValue; } if (transform) { try { return transform(envValue); } catch (e) { console.warn(`Warning: Invalid value for ${envKey}, using default value`); return defaultValue; } } return envValue; } // 基础类型定义 exports.ChainSchema = zod_1.z.enum(['solana', 'ethereum', 'base', 'bsc', 'tron']); exports.TradeTypeSchema = zod_1.z.enum(['buy', 'sell']); // 止盈止损分组 exports.PnlGroupSchema = zod_1.z.object({ pricePercent: zod_1.z.number().min(0).max(10), // 价格涨跌百分比 amountPercent: zod_1.z.number().min(0).max(1), // 卖出比例 }); // 自定义止盈止损配置 exports.PnlCustomConfigSchema = zod_1.z.object({ customFeeAndTip: zod_1.z.boolean().default(getEnvDefault('DBOT_CUSTOM_FEE_AND_TIP', false, (v) => v === 'true')), priorityFee: zod_1.z.string().default(getEnvDefault('DBOT_PRIORITY_FEE', '0.0001')), gasFeeDelta: zod_1.z.number().int().min(0).default(getEnvDefault('DBOT_GAS_FEE_DELTA', 5, Number)), maxFeePerGas: zod_1.z.number().int().min(0).default(getEnvDefault('DBOT_MAX_FEE_PER_GAS', 100, Number)), jitoEnabled: zod_1.z.boolean().default(getEnvDefault('DBOT_JITO_ENABLED', true, (v) => v === 'true')), jitoTip: zod_1.z.number().min(0).default(getEnvDefault('DBOT_JITO_TIP', 0.001, Number)), maxSlippage: zod_1.z.number().min(0).max(1).default(getEnvDefault('DBOT_MAX_SLIPPAGE', 0.1, Number)), concurrentNodes: zod_1.z.number().int().min(1).max(3).default(getEnvDefault('DBOT_CONCURRENT_NODES', 2, Number)), retries: zod_1.z.number().int().min(0).max(10).default(getEnvDefault('DBOT_RETRIES', 1, Number)), }); // 快速交易请求 exports.CreateFastSwapRequestSchema = zod_1.z.object({ chain: exports.ChainSchema.default(getEnvDefault('DBOT_CHAIN', 'solana')), pair: zod_1.z.string().min(1), walletId: zod_1.z.string().min(1), type: exports.TradeTypeSchema, customFeeAndTip: zod_1.z.boolean().default(getEnvDefault('DBOT_CUSTOM_FEE_AND_TIP', false, (v) => v === 'true')), priorityFee: zod_1.z.string().default(getEnvDefault('DBOT_PRIORITY_FEE', '0.0001')), gasFeeDelta: zod_1.z.number().int().min(0).default(getEnvDefault('DBOT_GAS_FEE_DELTA', 5, Number)), maxFeePerGas: zod_1.z.number().int().min(0).default(getEnvDefault('DBOT_MAX_FEE_PER_GAS', 100, Number)), jitoEnabled: zod_1.z.boolean().default(getEnvDefault('DBOT_JITO_ENABLED', true, (v) => v === 'true')), jitoTip: zod_1.z.number().min(0).default(getEnvDefault('DBOT_JITO_TIP', 0.001, Number)), maxSlippage: zod_1.z.number().min(0).max(1).default(getEnvDefault('DBOT_MAX_SLIPPAGE', 0.1, Number)), concurrentNodes: zod_1.z.number().int().min(1).max(3).default(getEnvDefault('DBOT_CONCURRENT_NODES', 2, Number)), retries: zod_1.z.number().int().min(0).max(10).default(getEnvDefault('DBOT_RETRIES', 1, Number)), amountOrPercent: zod_1.z.number().min(0).default(getEnvDefault('DBOT_AMOUNT_OR_PERCENT', 0.001, Number)), migrateSellPercent: zod_1.z.number().min(0).max(1).default(getEnvDefault('DBOT_MIGRATE_SELL_PERCENT', 1.0, Number)), minDevSellPercent: zod_1.z.number().min(0).max(1).default(getEnvDefault('DBOT_MIN_DEV_SELL_PERCENT', 0.5, Number)), devSellPercent: zod_1.z.number().min(0).max(1).default(getEnvDefault('DBOT_DEV_SELL_PERCENT', 1.0, Number)), stopEarnPercent: zod_1.z.number().min(0).optional(), stopLossPercent: zod_1.z.number().min(0).max(1).optional(), stopEarnGroup: zod_1.z.array(exports.PnlGroupSchema).max(6).optional(), stopLossGroup: zod_1.z.array(exports.PnlGroupSchema).max(6).optional(), trailingStopGroup: zod_1.z.array(exports.PnlGroupSchema).max(1).optional(), pnlOrderExpireDelta: zod_1.z.number().int().min(0).max(432000000).default(getEnvDefault('DBOT_PNL_ORDER_EXPIRE_DELTA', 43200000, Number)), pnlOrderExpireExecute: zod_1.z.boolean().default(getEnvDefault('DBOT_PNL_ORDER_EXPIRE_EXECUTE', false, (v) => v === 'true')), pnlOrderUseMidPrice: zod_1.z.boolean().default(getEnvDefault('DBOT_PNL_ORDER_USE_MID_PRICE', false, (v) => v === 'true')), pnlCustomConfigEnabled: zod_1.z.boolean().default(getEnvDefault('DBOT_PNL_CUSTOM_CONFIG_ENABLED', true, (v) => v === 'true')), pnlCustomConfig: exports.PnlCustomConfigSchema.optional(), }); // 批量快速交易请求 exports.CreateFastSwapsRequestSchema = zod_1.z.object({ chain: exports.ChainSchema.default('solana'), pair: zod_1.z.string().min(1), walletIdList: zod_1.z.array(zod_1.z.string()).max(5).min(1), type: exports.TradeTypeSchema, customFeeAndTip: zod_1.z.boolean().default(false), priorityFee: zod_1.z.string().default(''), gasFeeDelta: zod_1.z.number().int().min(0).default(5), maxFeePerGas: zod_1.z.number().int().min(0).default(100), jitoEnabled: zod_1.z.boolean().default(false), jitoTip: zod_1.z.number().min(0).default(0.001), maxSlippage: zod_1.z.number().min(0).max(1).default(0.1), concurrentNodes: zod_1.z.number().int().min(1).max(3).default(2), retries: zod_1.z.number().int().min(0).max(10).default(1), minAmount: zod_1.z.number().min(0).optional(), maxAmount: zod_1.z.number().min(0).optional(), sellPercent: zod_1.z.number().min(0).max(1).default(1.0), stopEarnPercent: zod_1.z.number().min(0).optional(), stopLossPercent: zod_1.z.number().min(0).max(1).optional(), stopEarnGroup: zod_1.z.array(exports.PnlGroupSchema).max(6).optional(), stopLossGroup: zod_1.z.array(exports.PnlGroupSchema).max(6).optional(), trailingStopGroup: zod_1.z.array(exports.PnlGroupSchema).max(1).optional(), pnlOrderExpireDelta: zod_1.z.number().int().min(0).max(432000000).default(43200000), pnlOrderExpireExecute: zod_1.z.boolean().default(false), pnlOrderUseMidPrice: zod_1.z.boolean().default(false), pnlCustomConfigEnabled: zod_1.z.boolean().default(true), pnlCustomConfig: exports.PnlCustomConfigSchema.optional(), }); // --- 限价单类型 --- exports.TriggerDirectionSchema = zod_1.z.enum(['up', 'down']); // 限价单设置的Schema定义 exports.LimitOrderSettingSchema = zod_1.z.object({ enabled: zod_1.z.boolean().default(true), tradeType: exports.TradeTypeSchema, triggerPriceUsd: zod_1.z.string(), triggerDirection: exports.TriggerDirectionSchema, currencyAmountUI: zod_1.z.union([zod_1.z.string(), zod_1.z.number()]), customFeeAndTip: zod_1.z.boolean().default(getEnvDefault('DBOT_CUSTOM_FEE_AND_TIP', false, (v) => v === 'true')), priorityFee: zod_1.z.string().default(getEnvDefault('DBOT_PRIORITY_FEE', '0.0001')), gasFeeDelta: zod_1.z.number().int().min(0).default(getEnvDefault('DBOT_GAS_FEE_DELTA', 5, Number)), maxFeePerGas: zod_1.z.number().int().min(0).default(getEnvDefault('DBOT_MAX_FEE_PER_GAS', 100, Number)), jitoEnabled: zod_1.z.boolean().default(getEnvDefault('DBOT_JITO_ENABLED', true, (v) => v === 'true')), jitoTip: zod_1.z.number().min(0).default(getEnvDefault('DBOT_JITO_TIP', 0.001, Number)), expireDelta: zod_1.z.number().int().min(0).max(432000000).default(getEnvDefault('DBOT_PNL_ORDER_EXPIRE_DELTA', 360000000, Number)), expireExecute: zod_1.z.boolean().default(getEnvDefault('DBOT_PNL_ORDER_EXPIRE_EXECUTE', false, (v) => v === 'true')), useMidPrice: zod_1.z.boolean().default(getEnvDefault('DBOT_PNL_ORDER_USE_MID_PRICE', false, (v) => v === 'true')), maxSlippage: zod_1.z.number().min(0).max(1).default(getEnvDefault('DBOT_MAX_SLIPPAGE', 0.1, Number)), concurrentNodes: zod_1.z.number().int().min(1).max(3).default(getEnvDefault('DBOT_CONCURRENT_NODES', 2, Number)), retries: zod_1.z.number().int().min(0).max(10).default(getEnvDefault('DBOT_RETRIES', 1, Number)) }); // 创建限价单请求的Schema定义 exports.CreateLimitOrdersRequestSchema = zod_1.z.object({ chain: exports.ChainSchema.default(getEnvDefault('DBOT_CHAIN', 'solana')), pair: zod_1.z.string().min(1), walletId: zod_1.z.string().min(1).optional(), groupId: zod_1.z.string(), settings: zod_1.z.array(exports.LimitOrderSettingSchema) }); //# sourceMappingURL=types.js.map