@3rd-eye-labs/openmm 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/cli.js +4 -0
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/commands/ohlcv.d.ts +3 -0
- package/dist/cli/commands/ohlcv.d.ts.map +1 -0
- package/dist/cli/commands/ohlcv.js +115 -0
- package/dist/cli/commands/ohlcv.js.map +1 -0
- package/dist/cli/commands/wallet.d.ts +7 -0
- package/dist/cli/commands/wallet.d.ts.map +1 -0
- package/dist/cli/commands/wallet.js +271 -0
- package/dist/cli/commands/wallet.js.map +1 -0
- package/dist/core/exchange/base-exchange-connector.d.ts +2 -1
- package/dist/core/exchange/base-exchange-connector.d.ts.map +1 -1
- package/dist/core/exchange/base-exchange-connector.js.map +1 -1
- package/dist/exchanges/bitget/bitget-connector.d.ts +11 -1
- package/dist/exchanges/bitget/bitget-connector.d.ts.map +1 -1
- package/dist/exchanges/bitget/bitget-connector.js +52 -0
- package/dist/exchanges/bitget/bitget-connector.js.map +1 -1
- package/dist/exchanges/gateio/gateio-connector.d.ts +11 -1
- package/dist/exchanges/gateio/gateio-connector.d.ts.map +1 -1
- package/dist/exchanges/gateio/gateio-connector.js +54 -0
- package/dist/exchanges/gateio/gateio-connector.js.map +1 -1
- package/dist/exchanges/kraken/kraken-connector.d.ts +6 -1
- package/dist/exchanges/kraken/kraken-connector.d.ts.map +1 -1
- package/dist/exchanges/kraken/kraken-connector.js +44 -0
- package/dist/exchanges/kraken/kraken-connector.js.map +1 -1
- package/dist/exchanges/mexc/mexc-auth.d.ts +1 -0
- package/dist/exchanges/mexc/mexc-auth.d.ts.map +1 -1
- package/dist/exchanges/mexc/mexc-auth.js +4 -1
- package/dist/exchanges/mexc/mexc-auth.js.map +1 -1
- package/dist/exchanges/mexc/mexc-connector.d.ts +6 -1
- package/dist/exchanges/mexc/mexc-connector.d.ts.map +1 -1
- package/dist/exchanges/mexc/mexc-connector.js +37 -0
- package/dist/exchanges/mexc/mexc-connector.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -1
- package/dist/index.js.map +1 -1
- package/dist/types/market.d.ts +15 -0
- package/dist/types/market.d.ts.map +1 -1
- package/dist/x402/crypto.d.ts +79 -0
- package/dist/x402/crypto.d.ts.map +1 -0
- package/dist/x402/crypto.js +300 -0
- package/dist/x402/crypto.js.map +1 -0
- package/dist/x402/evm.d.ts +41 -0
- package/dist/x402/evm.d.ts.map +1 -0
- package/dist/x402/evm.js +229 -0
- package/dist/x402/evm.js.map +1 -0
- package/dist/x402/handler.d.ts +53 -0
- package/dist/x402/handler.d.ts.map +1 -0
- package/dist/x402/handler.js +233 -0
- package/dist/x402/handler.js.map +1 -0
- package/dist/x402/index.d.ts +29 -0
- package/dist/x402/index.d.ts.map +1 -0
- package/dist/x402/index.js +67 -0
- package/dist/x402/index.js.map +1 -0
- package/dist/x402/types.d.ts +185 -0
- package/dist/x402/types.d.ts.map +1 -0
- package/dist/x402/types.js +7 -0
- package/dist/x402/types.js.map +1 -0
- package/dist/x402/wallet.d.ts +65 -0
- package/dist/x402/wallet.d.ts.map +1 -0
- package/dist/x402/wallet.js +282 -0
- package/dist/x402/wallet.js.map +1 -0
- package/package.json +1 -1
- package/dist/cli/commands/grid.d.ts +0 -3
- package/dist/cli/commands/grid.d.ts.map +0 -1
- package/dist/cli/commands/grid.js +0 -103
- package/dist/cli/commands/grid.js.map +0 -1
- package/dist/cli/commands/multi-trade.d.ts +0 -3
- package/dist/cli/commands/multi-trade.d.ts.map +0 -1
- package/dist/cli/commands/multi-trade.js +0 -175
- package/dist/cli/commands/multi-trade.js.map +0 -1
- package/dist/cli/pool-discovery.d.ts +0 -56
- package/dist/cli/pool-discovery.d.ts.map +0 -1
- package/dist/cli/pool-discovery.js +0 -283
- package/dist/cli/pool-discovery.js.map +0 -1
- package/dist/core/price-aggregation/price-cache.d.ts +0 -55
- package/dist/core/price-aggregation/price-cache.d.ts.map +0 -1
- package/dist/core/price-aggregation/price-cache.js +0 -152
- package/dist/core/price-aggregation/price-cache.js.map +0 -1
- package/dist/examples/mexc-connector-comprehensive-test.d.ts +0 -15
- package/dist/examples/mexc-connector-comprehensive-test.d.ts.map +0 -1
- package/dist/examples/mexc-connector-comprehensive-test.js +0 -514
- package/dist/examples/mexc-connector-comprehensive-test.js.map +0 -1
- package/dist/examples/mexc-order-update-test.d.ts +0 -4
- package/dist/examples/mexc-order-update-test.d.ts.map +0 -1
- package/dist/examples/mexc-order-update-test.js +0 -186
- package/dist/examples/mexc-order-update-test.js.map +0 -1
- package/dist/examples/mexc-test.d.ts +0 -9
- package/dist/examples/mexc-test.d.ts.map +0 -1
- package/dist/examples/mexc-test.js +0 -218
- package/dist/examples/mexc-test.js.map +0 -1
- package/dist/examples/mexc-trades-debug.d.ts +0 -2
- package/dist/examples/mexc-trades-debug.d.ts.map +0 -1
- package/dist/examples/mexc-trades-debug.js +0 -101
- package/dist/examples/mexc-trades-debug.js.map +0 -1
- package/dist/examples/mexc-trades-subscription-debug.d.ts +0 -2
- package/dist/examples/mexc-trades-subscription-debug.d.ts.map +0 -1
- package/dist/examples/mexc-trades-subscription-debug.js +0 -150
- package/dist/examples/mexc-trades-subscription-debug.js.map +0 -1
- package/dist/examples/mexc-websocket-test.d.ts +0 -8
- package/dist/examples/mexc-websocket-test.d.ts.map +0 -1
- package/dist/examples/mexc-websocket-test.js +0 -115
- package/dist/examples/mexc-websocket-test.js.map +0 -1
- package/dist/examples/test-protobuf-status-detection.d.ts +0 -9
- package/dist/examples/test-protobuf-status-detection.d.ts.map +0 -1
- package/dist/examples/test-protobuf-status-detection.js +0 -83
- package/dist/examples/test-protobuf-status-detection.js.map +0 -1
- package/dist/exchanges/base-exchange-connector.d.ts +0 -33
- package/dist/exchanges/base-exchange-connector.d.ts.map +0 -1
- package/dist/exchanges/base-exchange-connector.js +0 -55
- package/dist/exchanges/base-exchange-connector.js.map +0 -1
- package/dist/exchanges/kraken/test-kraken-websocket.d.ts +0 -19
- package/dist/exchanges/kraken/test-kraken-websocket.d.ts.map +0 -1
- package/dist/exchanges/kraken/test-kraken-websocket.js +0 -413
- package/dist/exchanges/kraken/test-kraken-websocket.js.map +0 -1
- package/dist/mcp/resources/index.d.ts +0 -3
- package/dist/mcp/resources/index.d.ts.map +0 -1
- package/dist/mcp/resources/index.js +0 -11
- package/dist/mcp/resources/index.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -4
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -29
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/tools/index.d.ts +0 -3
- package/dist/mcp/tools/index.d.ts.map +0 -1
- package/dist/mcp/tools/index.js +0 -12
- package/dist/mcp/tools/index.js.map +0 -1
- package/dist/tests/fixtures/test-helpers.d.ts +0 -5
- package/dist/tests/fixtures/test-helpers.d.ts.map +0 -1
- package/dist/tests/fixtures/test-helpers.js +0 -8
- package/dist/tests/fixtures/test-helpers.js.map +0 -1
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts +0 -2
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts.map +0 -1
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js +0 -237
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js.map +0 -1
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts +0 -2
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts.map +0 -1
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.js +0 -57
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.js.map +0 -1
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts +0 -2
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts.map +0 -1
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js +0 -141
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js.map +0 -1
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts +0 -2
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts.map +0 -1
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js +0 -375
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js.map +0 -1
- package/dist/tests/unit/cli/exchange-factory.test.d.ts +0 -2
- package/dist/tests/unit/cli/exchange-factory.test.d.ts.map +0 -1
- package/dist/tests/unit/cli/exchange-factory.test.js +0 -148
- package/dist/tests/unit/cli/exchange-factory.test.js.map +0 -1
- package/dist/tests/unit/config/environment.test.d.ts +0 -2
- package/dist/tests/unit/config/environment.test.d.ts.map +0 -1
- package/dist/tests/unit/config/environment.test.js +0 -158
- package/dist/tests/unit/config/environment.test.js.map +0 -1
- package/dist/tests/unit/config/launcher-config.test.d.ts +0 -2
- package/dist/tests/unit/config/launcher-config.test.d.ts.map +0 -1
- package/dist/tests/unit/config/launcher-config.test.js +0 -117
- package/dist/tests/unit/config/launcher-config.test.js.map +0 -1
- package/dist/tests/unit/config/price-aggregation.test.d.ts +0 -2
- package/dist/tests/unit/config/price-aggregation.test.d.ts.map +0 -1
- package/dist/tests/unit/config/price-aggregation.test.js +0 -144
- package/dist/tests/unit/config/price-aggregation.test.js.map +0 -1
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts +0 -2
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts.map +0 -1
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.js +0 -191
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.js.map +0 -1
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts +0 -2
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts.map +0 -1
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js +0 -324
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js.map +0 -1
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts +0 -2
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts.map +0 -1
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js +0 -177
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js.map +0 -1
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts +0 -2
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts.map +0 -1
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js +0 -168
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js.map +0 -1
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts +0 -2
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts.map +0 -1
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js +0 -217
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js.map +0 -1
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts +0 -2
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts.map +0 -1
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.js +0 -229
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.js.map +0 -1
- package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts +0 -2
- package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts.map +0 -1
- package/dist/tests/unit/core/risk-management/risk-manager.test.js +0 -194
- package/dist/tests/unit/core/risk-management/risk-manager.test.js.map +0 -1
- package/dist/tests/unit/core/strategy/base-strategy.test.d.ts +0 -2
- package/dist/tests/unit/core/strategy/base-strategy.test.d.ts.map +0 -1
- package/dist/tests/unit/core/strategy/base-strategy.test.js +0 -254
- package/dist/tests/unit/core/strategy/base-strategy.test.js.map +0 -1
- package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts +0 -2
- package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts.map +0 -1
- package/dist/tests/unit/core/strategy/strategy-factory.test.js +0 -213
- package/dist/tests/unit/core/strategy/strategy-factory.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js +0 -452
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js +0 -1419
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js +0 -435
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js +0 -314
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js +0 -178
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js +0 -502
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js +0 -317
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js +0 -843
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts +0 -2
- package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-calculator.test.js +0 -67
- package/dist/tests/unit/strategies/grid/grid-calculator.test.js.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts +0 -2
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.js +0 -211
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.js.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts +0 -2
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js +0 -197
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts +0 -2
- package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-strategy.test.js +0 -429
- package/dist/tests/unit/strategies/grid/grid-strategy.test.js.map +0 -1
- package/dist/tests/unit/utils/logger.test.d.ts +0 -2
- package/dist/tests/unit/utils/logger.test.d.ts.map +0 -1
- package/dist/tests/unit/utils/logger.test.js +0 -260
- package/dist/tests/unit/utils/logger.test.js.map +0 -1
- package/dist/tests/unit/utils/symbol-utils.test.d.ts +0 -2
- package/dist/tests/unit/utils/symbol-utils.test.d.ts.map +0 -1
- package/dist/tests/unit/utils/symbol-utils.test.js +0 -178
- package/dist/tests/unit/utils/symbol-utils.test.js.map +0 -1
- package/dist/types/price-aggregation.d.ts +0 -31
- package/dist/types/price-aggregation.d.ts.map +0 -1
- package/dist/types/price-aggregation.js +0 -6
- package/dist/types/price-aggregation.js.map +0 -1
- package/dist/utils/crypto.d.ts +0 -15
- package/dist/utils/crypto.d.ts.map +0 -1
- package/dist/utils/crypto.js +0 -50
- package/dist/utils/crypto.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -36
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -174
- package/dist/utils/validation.js.map +0 -1
|
@@ -1,413 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.testKrakenWebSocket = testKrakenWebSocket;
|
|
7
|
-
exports.testPublicWebSocket = testPublicWebSocket;
|
|
8
|
-
exports.testUserDataStream = testUserDataStream;
|
|
9
|
-
exports.testOrderFillUpdates = testOrderFillUpdates;
|
|
10
|
-
const kraken_connector_1 = require("./kraken-connector");
|
|
11
|
-
const utils_1 = require("../../utils");
|
|
12
|
-
const environment_1 = __importDefault(require("../../config/environment"));
|
|
13
|
-
const logger = (0, utils_1.createLogger)('kraken-ws-test');
|
|
14
|
-
/**
|
|
15
|
-
* Test Kraken WebSocket public market data streams
|
|
16
|
-
*/
|
|
17
|
-
async function testPublicWebSocket(kraken) {
|
|
18
|
-
logger.info('🚀 Testing Kraken Public WebSocket Streams');
|
|
19
|
-
const subscriptions = [];
|
|
20
|
-
try {
|
|
21
|
-
// Connect to WebSocket
|
|
22
|
-
await kraken.connectWebSocket();
|
|
23
|
-
logger.info('✅ Connected to Kraken WebSocket');
|
|
24
|
-
// Test ticker subscription
|
|
25
|
-
const tickerSubscriptionId = await kraken.subscribeTicker('BTC/USDT', (ticker) => {
|
|
26
|
-
logger.info('📊 Ticker update:', {
|
|
27
|
-
symbol: ticker.symbol,
|
|
28
|
-
bid: ticker.bid,
|
|
29
|
-
ask: ticker.ask,
|
|
30
|
-
last: ticker.last,
|
|
31
|
-
volume: ticker.baseVolume,
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
subscriptions.push(tickerSubscriptionId);
|
|
35
|
-
logger.info('✅ Subscribed to BTC/USDT ticker:', { subscriptionId: tickerSubscriptionId });
|
|
36
|
-
// Test order book subscription
|
|
37
|
-
const orderBookSubscriptionId = await kraken.subscribeOrderBook('ETH/USDT', (orderBook) => {
|
|
38
|
-
logger.info('📚 Order book update:', {
|
|
39
|
-
symbol: orderBook.symbol,
|
|
40
|
-
topBid: orderBook.bids[0]?.price,
|
|
41
|
-
topAsk: orderBook.asks[0]?.price,
|
|
42
|
-
bidCount: orderBook.bids.length,
|
|
43
|
-
askCount: orderBook.asks.length,
|
|
44
|
-
spread: orderBook.asks[0]?.price - orderBook.bids[0]?.price,
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
subscriptions.push(orderBookSubscriptionId);
|
|
48
|
-
logger.info('✅ Subscribed to ETH/USDT order book:', {
|
|
49
|
-
subscriptionId: orderBookSubscriptionId,
|
|
50
|
-
});
|
|
51
|
-
// Test trades subscription
|
|
52
|
-
const tradesSubscriptionId = await kraken.subscribeTrades('BTC/USDT', (trade) => {
|
|
53
|
-
logger.info('💹 Trade update:', {
|
|
54
|
-
id: trade.id,
|
|
55
|
-
symbol: trade.symbol,
|
|
56
|
-
price: trade.price,
|
|
57
|
-
amount: trade.amount,
|
|
58
|
-
side: trade.side,
|
|
59
|
-
timestamp: new Date(trade.timestamp).toISOString(),
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
subscriptions.push(tradesSubscriptionId);
|
|
63
|
-
logger.info('✅ Subscribed to BTC/USDT trades:', { subscriptionId: tradesSubscriptionId });
|
|
64
|
-
// Let it run for some time to receive data
|
|
65
|
-
logger.info('⏳ Waiting 20 seconds to receive WebSocket data...');
|
|
66
|
-
await new Promise(resolve => setTimeout(resolve, 20000));
|
|
67
|
-
// Unsubscribe from all
|
|
68
|
-
logger.info('🔕 Unsubscribing from all public streams...');
|
|
69
|
-
for (const subId of subscriptions) {
|
|
70
|
-
await kraken.unsubscribe(subId);
|
|
71
|
-
}
|
|
72
|
-
// Check WebSocket status
|
|
73
|
-
const isConnected = kraken.isWebSocketConnected();
|
|
74
|
-
const status = kraken.getWebSocketStatus();
|
|
75
|
-
logger.info('📡 WebSocket status after unsubscribe:', { isConnected, status });
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
logger.error('❌ Public WebSocket test failed:', {
|
|
79
|
-
error: error instanceof Error ? error.message : error,
|
|
80
|
-
});
|
|
81
|
-
throw error;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Test Kraken order fills via WebSocket
|
|
86
|
-
*/
|
|
87
|
-
async function testOrderFillUpdates(kraken) {
|
|
88
|
-
logger.info('🚀 Testing Kraken Order Fill Updates via WebSocket');
|
|
89
|
-
let userOrdersSubscription;
|
|
90
|
-
let userTradesSubscription;
|
|
91
|
-
let orderUpdates = [];
|
|
92
|
-
let tradeUpdates = [];
|
|
93
|
-
try {
|
|
94
|
-
await kraken.connect();
|
|
95
|
-
await kraken.connectUserDataStream();
|
|
96
|
-
logger.info('✅ Connected to Kraken private WebSocket');
|
|
97
|
-
// Subscribe to order and trade updates
|
|
98
|
-
userOrdersSubscription = await kraken.subscribeUserOrders((order) => {
|
|
99
|
-
orderUpdates.push(order);
|
|
100
|
-
logger.info('🎯 ORDER FILL UPDATE:', {
|
|
101
|
-
id: order.id,
|
|
102
|
-
symbol: order.symbol,
|
|
103
|
-
status: order.status,
|
|
104
|
-
filled: order.filled,
|
|
105
|
-
remaining: order.remaining,
|
|
106
|
-
price: order.price,
|
|
107
|
-
timestamp: new Date(order.timestamp).toISOString(),
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
userTradesSubscription = await kraken.subscribeUserTrades((trade) => {
|
|
111
|
-
tradeUpdates.push(trade);
|
|
112
|
-
logger.info('🎯 TRADE EXECUTION:', {
|
|
113
|
-
id: trade.id,
|
|
114
|
-
symbol: trade.symbol,
|
|
115
|
-
price: trade.price,
|
|
116
|
-
amount: trade.amount,
|
|
117
|
-
side: trade.side,
|
|
118
|
-
timestamp: new Date(trade.timestamp).toISOString(),
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
logger.info('✅ Subscribed to order and trade updates');
|
|
122
|
-
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
123
|
-
// Get current market price
|
|
124
|
-
const ticker = await kraken.getTicker('ADA/EUR');
|
|
125
|
-
logger.info('📊 Current ADA/EUR market:', {
|
|
126
|
-
bid: ticker.bid,
|
|
127
|
-
ask: ticker.ask,
|
|
128
|
-
spread: (ticker.ask - ticker.bid).toFixed(6),
|
|
129
|
-
});
|
|
130
|
-
// Calculate minimum order amount for 5 EUR minimum
|
|
131
|
-
const marketPrice = ticker.ask; // Buy at ask price for immediate fill
|
|
132
|
-
const minOrderValue = 5.0;
|
|
133
|
-
const orderAmount = Math.ceil((minOrderValue / marketPrice) * 100) / 100; // Round up to 2 decimals
|
|
134
|
-
logger.info('💰 Creating MARKET BUY order (should fill immediately):', {
|
|
135
|
-
symbol: 'ADA/EUR',
|
|
136
|
-
type: 'market',
|
|
137
|
-
side: 'buy',
|
|
138
|
-
amount: orderAmount,
|
|
139
|
-
expectedCost: (orderAmount * marketPrice).toFixed(2) + ' EUR',
|
|
140
|
-
});
|
|
141
|
-
// Clear previous updates
|
|
142
|
-
orderUpdates = [];
|
|
143
|
-
tradeUpdates = [];
|
|
144
|
-
// Create market order that should fill immediately
|
|
145
|
-
const marketOrder = await kraken.createOrder('ADA/EUR', 'market', 'buy', orderAmount);
|
|
146
|
-
logger.info('✅ Market order submitted:', {
|
|
147
|
-
id: marketOrder.id,
|
|
148
|
-
status: marketOrder.status,
|
|
149
|
-
filled: marketOrder.filled,
|
|
150
|
-
});
|
|
151
|
-
// Wait for WebSocket updates
|
|
152
|
-
logger.info('⏳ Waiting 10 seconds for WebSocket fill updates...');
|
|
153
|
-
await new Promise(resolve => setTimeout(resolve, 10000));
|
|
154
|
-
// Analyze the updates we received
|
|
155
|
-
logger.info('📊 WebSocket Updates Summary:', {
|
|
156
|
-
orderUpdatesReceived: orderUpdates.length,
|
|
157
|
-
tradeUpdatesReceived: tradeUpdates.length,
|
|
158
|
-
orderStatuses: orderUpdates.map(o => o.status),
|
|
159
|
-
totalFilled: orderUpdates[orderUpdates.length - 1]?.filled || 0,
|
|
160
|
-
});
|
|
161
|
-
if (orderUpdates.length > 0) {
|
|
162
|
-
logger.info('🎉 SUCCESS: Received order fill updates via WebSocket!');
|
|
163
|
-
const finalOrder = orderUpdates[orderUpdates.length - 1];
|
|
164
|
-
logger.info('📈 Final order state:', {
|
|
165
|
-
status: finalOrder.status,
|
|
166
|
-
filled: finalOrder.filled,
|
|
167
|
-
remaining: finalOrder.remaining,
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
logger.warn('⚠️ No order updates received via WebSocket');
|
|
172
|
-
}
|
|
173
|
-
if (tradeUpdates.length > 0) {
|
|
174
|
-
logger.info('🎉 SUCCESS: Received trade execution updates via WebSocket!');
|
|
175
|
-
tradeUpdates.forEach((trade, i) => {
|
|
176
|
-
logger.info(` Trade ${i + 1}: ${trade.amount} ADA at ${trade.price} EUR`);
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
logger.warn('⚠️ No trade execution updates received via WebSocket');
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
catch (error) {
|
|
184
|
-
logger.error('❌ Order fill test failed:', {
|
|
185
|
-
error: error instanceof Error ? error.message : error,
|
|
186
|
-
});
|
|
187
|
-
throw error;
|
|
188
|
-
}
|
|
189
|
-
finally {
|
|
190
|
-
if (userOrdersSubscription) {
|
|
191
|
-
await kraken.unsubscribe(userOrdersSubscription);
|
|
192
|
-
}
|
|
193
|
-
if (userTradesSubscription) {
|
|
194
|
-
await kraken.unsubscribe(userTradesSubscription);
|
|
195
|
-
}
|
|
196
|
-
await kraken.disconnectUserDataStream();
|
|
197
|
-
logger.info('🔌 Disconnected from user data stream');
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Test Kraken user data stream with REST order creation
|
|
202
|
-
*/
|
|
203
|
-
async function testUserDataStream(kraken) {
|
|
204
|
-
logger.info('🚀 Testing Kraken User Data Stream');
|
|
205
|
-
let userOrdersSubscription;
|
|
206
|
-
let userTradesSubscription;
|
|
207
|
-
let testOrderId;
|
|
208
|
-
try {
|
|
209
|
-
// First ensure we're connected to REST API
|
|
210
|
-
await kraken.connect();
|
|
211
|
-
logger.info('✅ Connected to Kraken REST API');
|
|
212
|
-
// Get account balance
|
|
213
|
-
const balances = await kraken.getBalance();
|
|
214
|
-
logger.info('💰 Account balances:', {
|
|
215
|
-
balanceCount: Object.keys(balances).length,
|
|
216
|
-
sampleBalances: Object.entries(balances)
|
|
217
|
-
.slice(0, 3)
|
|
218
|
-
.map(([asset, balance]) => ({
|
|
219
|
-
asset,
|
|
220
|
-
available: balance.available,
|
|
221
|
-
total: balance.total,
|
|
222
|
-
})),
|
|
223
|
-
});
|
|
224
|
-
// Connect to user data stream
|
|
225
|
-
await kraken.connectUserDataStream();
|
|
226
|
-
logger.info('✅ Connected to Kraken private WebSocket');
|
|
227
|
-
// Subscribe to user orders
|
|
228
|
-
userOrdersSubscription = await kraken.subscribeUserOrders((order) => {
|
|
229
|
-
logger.info('👤 User order update:', {
|
|
230
|
-
id: order.id,
|
|
231
|
-
symbol: order.symbol,
|
|
232
|
-
type: order.type,
|
|
233
|
-
side: order.side,
|
|
234
|
-
status: order.status,
|
|
235
|
-
price: order.price,
|
|
236
|
-
amount: order.amount,
|
|
237
|
-
filled: order.filled,
|
|
238
|
-
remaining: order.remaining,
|
|
239
|
-
});
|
|
240
|
-
});
|
|
241
|
-
logger.info('✅ Subscribed to user orders');
|
|
242
|
-
// Subscribe to user trades
|
|
243
|
-
userTradesSubscription = await kraken.subscribeUserTrades((trade) => {
|
|
244
|
-
logger.info('👤 User trade update:', {
|
|
245
|
-
id: trade.id,
|
|
246
|
-
symbol: trade.symbol,
|
|
247
|
-
price: trade.price,
|
|
248
|
-
amount: trade.amount,
|
|
249
|
-
side: trade.side,
|
|
250
|
-
timestamp: new Date(trade.timestamp).toISOString(),
|
|
251
|
-
});
|
|
252
|
-
});
|
|
253
|
-
logger.info('✅ Subscribed to user trades');
|
|
254
|
-
// Wait a moment for subscriptions to be ready
|
|
255
|
-
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
256
|
-
// Get current ticker price for creating a safe limit order
|
|
257
|
-
// Using EUR pair since USDT trading may be restricted
|
|
258
|
-
const ticker = await kraken.getTicker('ADA/EUR');
|
|
259
|
-
logger.info('📊 Current ADA/EUR ticker:', {
|
|
260
|
-
bid: ticker.bid,
|
|
261
|
-
ask: ticker.ask,
|
|
262
|
-
last: ticker.last,
|
|
263
|
-
});
|
|
264
|
-
// Create a limit buy order well below market price (won't fill immediately)
|
|
265
|
-
const orderPrice = parseFloat((ticker.bid * 0.5).toFixed(6)); // 50% below current bid, 6 decimal precision
|
|
266
|
-
// Calculate amount to meet minimum order value (5 EUR)
|
|
267
|
-
const minOrderValue = 5.0;
|
|
268
|
-
const orderAmount = Math.ceil(minOrderValue / orderPrice); // Ensure we meet minimum
|
|
269
|
-
logger.info('📝 Creating test limit order:', {
|
|
270
|
-
symbol: 'ADA/EUR',
|
|
271
|
-
side: 'buy',
|
|
272
|
-
type: 'limit',
|
|
273
|
-
price: orderPrice,
|
|
274
|
-
amount: orderAmount,
|
|
275
|
-
});
|
|
276
|
-
const createdOrder = await kraken.createOrder('ADA/EUR', 'limit', 'buy', orderAmount, orderPrice);
|
|
277
|
-
testOrderId = createdOrder.id;
|
|
278
|
-
logger.info('✅ Order created:', {
|
|
279
|
-
id: createdOrder.id,
|
|
280
|
-
status: createdOrder.status,
|
|
281
|
-
price: createdOrder.price,
|
|
282
|
-
amount: createdOrder.amount,
|
|
283
|
-
});
|
|
284
|
-
// Wait for order update via WebSocket
|
|
285
|
-
logger.info('⏳ Waiting 5 seconds for WebSocket order updates...');
|
|
286
|
-
await new Promise(resolve => setTimeout(resolve, 5000));
|
|
287
|
-
// Get order status via REST
|
|
288
|
-
const orderStatus = await kraken.getOrder(testOrderId, 'ADA/EUR');
|
|
289
|
-
logger.info('📋 Order status from REST:', {
|
|
290
|
-
id: orderStatus.id,
|
|
291
|
-
status: orderStatus.status,
|
|
292
|
-
filled: orderStatus.filled,
|
|
293
|
-
remaining: orderStatus.remaining,
|
|
294
|
-
});
|
|
295
|
-
// Cancel the order
|
|
296
|
-
logger.info('❌ Canceling test order...');
|
|
297
|
-
await kraken.cancelOrder(testOrderId, 'ADA/EUR');
|
|
298
|
-
// Wait for cancellation update via WebSocket
|
|
299
|
-
logger.info('⏳ Waiting 5 seconds for cancellation update...');
|
|
300
|
-
await new Promise(resolve => setTimeout(resolve, 5000));
|
|
301
|
-
// Check open orders
|
|
302
|
-
const openOrders = await kraken.getOpenOrders();
|
|
303
|
-
logger.info('📋 Open orders after cancellation:', {
|
|
304
|
-
count: openOrders.length,
|
|
305
|
-
orders: openOrders.map(o => ({
|
|
306
|
-
id: o.id,
|
|
307
|
-
symbol: o.symbol,
|
|
308
|
-
status: o.status,
|
|
309
|
-
})),
|
|
310
|
-
});
|
|
311
|
-
}
|
|
312
|
-
catch (error) {
|
|
313
|
-
logger.error('❌ User data stream test failed:', {
|
|
314
|
-
error: error instanceof Error ? error.message : error,
|
|
315
|
-
});
|
|
316
|
-
// Try to clean up the test order if it exists
|
|
317
|
-
if (testOrderId) {
|
|
318
|
-
try {
|
|
319
|
-
logger.info('🧹 Attempting to clean up test order...');
|
|
320
|
-
await kraken.cancelOrder(testOrderId, 'ADA/EUR');
|
|
321
|
-
logger.info('✅ Test order cleaned up');
|
|
322
|
-
}
|
|
323
|
-
catch (cleanupError) {
|
|
324
|
-
logger.warn('⚠️ Could not clean up test order:', {
|
|
325
|
-
error: cleanupError instanceof Error ? cleanupError.message : cleanupError,
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
throw error;
|
|
330
|
-
}
|
|
331
|
-
finally {
|
|
332
|
-
// Clean up subscriptions
|
|
333
|
-
if (userOrdersSubscription) {
|
|
334
|
-
await kraken.unsubscribe(userOrdersSubscription);
|
|
335
|
-
}
|
|
336
|
-
if (userTradesSubscription) {
|
|
337
|
-
await kraken.unsubscribe(userTradesSubscription);
|
|
338
|
-
}
|
|
339
|
-
// Disconnect user data stream
|
|
340
|
-
await kraken.disconnectUserDataStream();
|
|
341
|
-
logger.info('🔌 Disconnected from user data stream');
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
/**
|
|
345
|
-
* Main test function
|
|
346
|
-
*/
|
|
347
|
-
async function testKrakenWebSocket() {
|
|
348
|
-
const kraken = new kraken_connector_1.KrakenConnector();
|
|
349
|
-
try {
|
|
350
|
-
logger.info('🚀 Starting Kraken WebSocket comprehensive test');
|
|
351
|
-
logger.info('📝 Using credentials from config:', {
|
|
352
|
-
hasApiKey: !!environment_1.default.kraken?.apiKey,
|
|
353
|
-
hasSecret: !!environment_1.default.kraken?.secret,
|
|
354
|
-
});
|
|
355
|
-
// Test public WebSocket streams
|
|
356
|
-
await testPublicWebSocket(kraken);
|
|
357
|
-
logger.info('✅ Public WebSocket test completed');
|
|
358
|
-
// Only test user data if credentials are available
|
|
359
|
-
if (environment_1.default.kraken?.apiKey && environment_1.default.kraken?.secret) {
|
|
360
|
-
// Wait a bit before testing user data stream
|
|
361
|
-
logger.info('⏳ Waiting 5 seconds before user data stream test...');
|
|
362
|
-
await new Promise(resolve => setTimeout(resolve, 5000));
|
|
363
|
-
// Test order fill updates with market order
|
|
364
|
-
await testOrderFillUpdates(kraken);
|
|
365
|
-
logger.info('✅ Order fill test completed');
|
|
366
|
-
// Wait before next test
|
|
367
|
-
logger.info('⏳ Waiting 5 seconds before limit order test...');
|
|
368
|
-
await new Promise(resolve => setTimeout(resolve, 5000));
|
|
369
|
-
// Test user data stream with limit order
|
|
370
|
-
await testUserDataStream(kraken);
|
|
371
|
-
logger.info('✅ User data stream test completed');
|
|
372
|
-
}
|
|
373
|
-
else {
|
|
374
|
-
logger.warn('⚠️ Skipping user data stream tests - no credentials configured');
|
|
375
|
-
}
|
|
376
|
-
// Final cleanup
|
|
377
|
-
await kraken.disconnectWebSocket();
|
|
378
|
-
await kraken.disconnect();
|
|
379
|
-
logger.info('🎉 All Kraken WebSocket tests completed successfully!');
|
|
380
|
-
}
|
|
381
|
-
catch (error) {
|
|
382
|
-
logger.error('❌ Test suite failed:', {
|
|
383
|
-
error: error instanceof Error ? error.message : error,
|
|
384
|
-
});
|
|
385
|
-
// Ensure cleanup
|
|
386
|
-
try {
|
|
387
|
-
await kraken.disconnectWebSocket();
|
|
388
|
-
await kraken.disconnectUserDataStream();
|
|
389
|
-
await kraken.disconnect();
|
|
390
|
-
}
|
|
391
|
-
catch (cleanupError) {
|
|
392
|
-
logger.error('Error during cleanup:', {
|
|
393
|
-
error: cleanupError instanceof Error ? cleanupError.message : cleanupError,
|
|
394
|
-
});
|
|
395
|
-
}
|
|
396
|
-
throw error;
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
// Run the test if this file is executed directly
|
|
400
|
-
if (require.main === module) {
|
|
401
|
-
testKrakenWebSocket()
|
|
402
|
-
.then(() => {
|
|
403
|
-
logger.info('✅ Test execution completed');
|
|
404
|
-
process.exit(0);
|
|
405
|
-
})
|
|
406
|
-
.catch(error => {
|
|
407
|
-
logger.error('Fatal error:', {
|
|
408
|
-
error: error instanceof Error ? error.message : error,
|
|
409
|
-
});
|
|
410
|
-
process.exit(1);
|
|
411
|
-
});
|
|
412
|
-
}
|
|
413
|
-
//# sourceMappingURL=test-kraken-websocket.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-kraken-websocket.js","sourceRoot":"","sources":["../../../src/exchanges/kraken/test-kraken-websocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAMzD"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.registerResources = registerResources;
|
|
4
|
-
function registerResources(server) {
|
|
5
|
-
// Resources will be registered here by subsequent tasks:
|
|
6
|
-
// - Supported exchanges list
|
|
7
|
-
// - Grid strategy documentation
|
|
8
|
-
// - Grid profile templates
|
|
9
|
-
// - Cardano token configuration
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/resources/index.ts"],"names":[],"mappings":";;AAEA,8CAMC;AAND,SAAgB,iBAAiB,CAAC,MAAiB;IACjD,yDAAyD;IACzD,6BAA6B;IAC7B,gCAAgC;IAChC,2BAA2B;IAC3B,gCAAgC;AAClC,CAAC"}
|
package/dist/mcp/server.d.ts
DELETED
package/dist/mcp/server.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE,wBAAgB,YAAY,IAAI,SAAS,CAUxC"}
|
package/dist/mcp/server.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.createServer = createServer;
|
|
5
|
-
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
6
|
-
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
7
|
-
const index_1 = require("./tools/index");
|
|
8
|
-
const index_2 = require("./resources/index");
|
|
9
|
-
const SERVER_NAME = 'openmm';
|
|
10
|
-
const SERVER_VERSION = '0.0.1';
|
|
11
|
-
function createServer() {
|
|
12
|
-
const server = new mcp_js_1.McpServer({
|
|
13
|
-
name: SERVER_NAME,
|
|
14
|
-
version: SERVER_VERSION,
|
|
15
|
-
});
|
|
16
|
-
(0, index_1.registerTools)(server);
|
|
17
|
-
(0, index_2.registerResources)(server);
|
|
18
|
-
return server;
|
|
19
|
-
}
|
|
20
|
-
async function main() {
|
|
21
|
-
const server = createServer();
|
|
22
|
-
const transport = new stdio_js_1.StdioServerTransport();
|
|
23
|
-
await server.connect(transport);
|
|
24
|
-
}
|
|
25
|
-
main().catch((error) => {
|
|
26
|
-
process.stderr.write(`OpenMM MCP server error: ${error}\n`);
|
|
27
|
-
process.exit(1);
|
|
28
|
-
});
|
|
29
|
-
//# sourceMappingURL=server.js.map
|
package/dist/mcp/server.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";;;AAUA,oCAUC;AAlBD,oEAAoE;AACpE,wEAAiF;AACjF,yCAA8C;AAC9C,6CAAsD;AAEtD,MAAM,WAAW,GAAG,QAAQ,CAAC;AAC7B,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B,SAAgB,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,kBAAS,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IAEH,IAAA,qBAAa,EAAC,MAAM,CAAC,CAAC;IACtB,IAAA,yBAAiB,EAAC,MAAM,CAAC,CAAC;IAE1B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,KAAK,IAAI,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAOrD"}
|
package/dist/mcp/tools/index.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.registerTools = registerTools;
|
|
4
|
-
function registerTools(server) {
|
|
5
|
-
// Tools will be registered here by subsequent tasks:
|
|
6
|
-
// - Market data tools (get_ticker, get_orderbook, get_trades)
|
|
7
|
-
// - Balance & account tools (get_balance, list_orders)
|
|
8
|
-
// - Cardano price aggregation tools (get_cardano_price, discover_pools)
|
|
9
|
-
// - Order management tools (place_order, cancel_order)
|
|
10
|
-
// - Grid strategy tools (start_grid_strategy, stop_strategy, get_strategy_status)
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":";;AAEA,sCAOC;AAPD,SAAgB,aAAa,CAAC,MAAiB;IAC7C,qDAAqD;IACrD,8DAA8D;IAC9D,uDAAuD;IACvD,wEAAwE;IACxE,uDAAuD;IACvD,kFAAkF;AACpF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../src/tests/fixtures/test-helpers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;CAG3B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../../src/tests/fixtures/test-helpers.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG;IAC7B,MAAM,EAAE,kBAAkB;IAC1B,SAAS,EAAE,qBAAqB;CACjC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mexc-integration.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/integration/exchanges/mexc/mexc-integration.test.ts"],"names":[],"mappings":""}
|