@3rd-eye-labs/openmm 0.1.4 → 0.1.6

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.
Files changed (67) hide show
  1. package/README.md +5 -3
  2. package/dist/api/index.d.ts +3 -0
  3. package/dist/api/index.d.ts.map +1 -0
  4. package/dist/api/index.js +9 -0
  5. package/dist/api/index.js.map +1 -0
  6. package/dist/api/openapi.d.ts +3 -0
  7. package/dist/api/openapi.d.ts.map +1 -0
  8. package/dist/api/openapi.js +214 -0
  9. package/dist/api/openapi.js.map +1 -0
  10. package/dist/api/routes/balance.d.ts +3 -0
  11. package/dist/api/routes/balance.d.ts.map +1 -0
  12. package/dist/api/routes/balance.js +101 -0
  13. package/dist/api/routes/balance.js.map +1 -0
  14. package/dist/api/routes/cardano.d.ts +3 -0
  15. package/dist/api/routes/cardano.d.ts.map +1 -0
  16. package/dist/api/routes/cardano.js +177 -0
  17. package/dist/api/routes/cardano.js.map +1 -0
  18. package/dist/api/routes/health.d.ts +3 -0
  19. package/dist/api/routes/health.d.ts.map +1 -0
  20. package/dist/api/routes/health.js +115 -0
  21. package/dist/api/routes/health.js.map +1 -0
  22. package/dist/api/routes/index.d.ts +3 -0
  23. package/dist/api/routes/index.d.ts.map +1 -0
  24. package/dist/api/routes/index.js +39 -0
  25. package/dist/api/routes/index.js.map +1 -0
  26. package/dist/api/routes/orderbook.d.ts +3 -0
  27. package/dist/api/routes/orderbook.d.ts.map +1 -0
  28. package/dist/api/routes/orderbook.js +123 -0
  29. package/dist/api/routes/orderbook.js.map +1 -0
  30. package/dist/api/routes/orders.d.ts +3 -0
  31. package/dist/api/routes/orders.d.ts.map +1 -0
  32. package/dist/api/routes/orders.js +214 -0
  33. package/dist/api/routes/orders.js.map +1 -0
  34. package/dist/api/routes/price.d.ts +3 -0
  35. package/dist/api/routes/price.d.ts.map +1 -0
  36. package/dist/api/routes/price.js +124 -0
  37. package/dist/api/routes/price.js.map +1 -0
  38. package/dist/api/routes/strategy.d.ts +3 -0
  39. package/dist/api/routes/strategy.d.ts.map +1 -0
  40. package/dist/api/routes/strategy.js +345 -0
  41. package/dist/api/routes/strategy.js.map +1 -0
  42. package/dist/api/routes/ticker.d.ts +3 -0
  43. package/dist/api/routes/ticker.d.ts.map +1 -0
  44. package/dist/api/routes/ticker.js +91 -0
  45. package/dist/api/routes/ticker.js.map +1 -0
  46. package/dist/api/routes/trades.d.ts +3 -0
  47. package/dist/api/routes/trades.d.ts.map +1 -0
  48. package/dist/api/routes/trades.js +129 -0
  49. package/dist/api/routes/trades.js.map +1 -0
  50. package/dist/api/server.d.ts +11 -0
  51. package/dist/api/server.d.ts.map +1 -0
  52. package/dist/api/server.js +65 -0
  53. package/dist/api/server.js.map +1 -0
  54. package/dist/cli/cli.js +3 -1
  55. package/dist/cli/cli.js.map +1 -1
  56. package/dist/cli/commands/serve.d.ts +3 -0
  57. package/dist/cli/commands/serve.d.ts.map +1 -0
  58. package/dist/cli/commands/serve.js +53 -0
  59. package/dist/cli/commands/serve.js.map +1 -0
  60. package/dist/config/environment.d.ts.map +1 -1
  61. package/dist/config/environment.js +8 -1
  62. package/dist/config/environment.js.map +1 -1
  63. package/dist/index.d.ts +1 -0
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +2 -0
  66. package/dist/index.js.map +1 -1
  67. package/package.json +6 -2
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tradesRoutes = tradesRoutes;
4
+ const exchange_factory_1 = require("../../cli/exchange-factory");
5
+ async function tradesRoutes(app) {
6
+ app.get('/trades', {
7
+ schema: {
8
+ tags: ['Market Data'],
9
+ summary: 'Get recent trades',
10
+ description: 'Returns recent trades for a trading pair with buy/sell breakdown.',
11
+ querystring: {
12
+ type: 'object',
13
+ required: ['exchange', 'symbol'],
14
+ properties: {
15
+ exchange: {
16
+ type: 'string',
17
+ enum: ['mexc', 'gateio', 'bitget', 'kraken'],
18
+ description: 'Exchange to query',
19
+ },
20
+ symbol: {
21
+ type: 'string',
22
+ description: 'Trading pair (e.g., BTC/USDT)',
23
+ example: 'BTC/USDT',
24
+ },
25
+ limit: {
26
+ type: 'integer',
27
+ minimum: 1,
28
+ maximum: 500,
29
+ default: 50,
30
+ description: 'Number of trades to return (max 500)',
31
+ },
32
+ },
33
+ },
34
+ response: {
35
+ 200: {
36
+ type: 'object',
37
+ properties: {
38
+ exchange: { type: 'string' },
39
+ symbol: { type: 'string' },
40
+ trades: {
41
+ type: 'array',
42
+ items: {
43
+ type: 'object',
44
+ properties: {
45
+ id: { type: 'string' },
46
+ symbol: { type: 'string' },
47
+ side: { type: 'string', enum: ['buy', 'sell'] },
48
+ price: { type: 'number' },
49
+ amount: { type: 'number' },
50
+ cost: { type: 'number', description: 'price * amount' },
51
+ timestamp: { type: 'number' },
52
+ },
53
+ },
54
+ },
55
+ summary: {
56
+ type: 'object',
57
+ properties: {
58
+ totalTrades: { type: 'number' },
59
+ buyCount: { type: 'number' },
60
+ sellCount: { type: 'number' },
61
+ buyVolume: { type: 'number' },
62
+ sellVolume: { type: 'number' },
63
+ avgPrice: { type: 'number' },
64
+ },
65
+ },
66
+ },
67
+ },
68
+ 400: {
69
+ type: 'object',
70
+ properties: { error: { type: 'string' } },
71
+ },
72
+ 500: {
73
+ type: 'object',
74
+ properties: { error: { type: 'string' } },
75
+ },
76
+ },
77
+ },
78
+ }, async (request, reply) => {
79
+ const { exchange, symbol, limit = 50 } = request.query;
80
+ if (!exchange || !symbol) {
81
+ return reply.status(400).send({ error: 'Missing required parameters: exchange and symbol' });
82
+ }
83
+ const validExchanges = ['mexc', 'gateio', 'bitget', 'kraken'];
84
+ if (!validExchanges.includes(exchange)) {
85
+ return reply.status(400).send({ error: `Invalid exchange. Must be one of: ${validExchanges.join(', ')}` });
86
+ }
87
+ try {
88
+ const connector = await exchange_factory_1.ExchangeFactory.getExchange(exchange);
89
+ const rawTrades = await connector.getRecentTrades(symbol);
90
+ // Limit and transform trades
91
+ const trades = rawTrades.slice(0, limit).map((trade) => ({
92
+ id: trade.id,
93
+ symbol: trade.symbol,
94
+ side: trade.side,
95
+ price: trade.price,
96
+ amount: trade.amount,
97
+ cost: trade.price * trade.amount,
98
+ timestamp: trade.timestamp,
99
+ }));
100
+ // Calculate summary
101
+ const buyTrades = trades.filter(t => t.side === 'buy');
102
+ const sellTrades = trades.filter(t => t.side === 'sell');
103
+ const buyVolume = buyTrades.reduce((sum, t) => sum + t.amount, 0);
104
+ const sellVolume = sellTrades.reduce((sum, t) => sum + t.amount, 0);
105
+ const totalVolume = buyVolume + sellVolume;
106
+ const avgPrice = totalVolume > 0
107
+ ? trades.reduce((sum, t) => sum + t.price * t.amount, 0) / totalVolume
108
+ : 0;
109
+ return {
110
+ exchange,
111
+ symbol,
112
+ trades,
113
+ summary: {
114
+ totalTrades: trades.length,
115
+ buyCount: buyTrades.length,
116
+ sellCount: sellTrades.length,
117
+ buyVolume,
118
+ sellVolume,
119
+ avgPrice: Math.round(avgPrice * 100000000) / 100000000, // 8 decimal places
120
+ },
121
+ };
122
+ }
123
+ catch (error) {
124
+ const message = error instanceof Error ? error.message : 'Unknown error';
125
+ return reply.status(500).send({ error: `Failed to fetch trades: ${message}` });
126
+ }
127
+ });
128
+ }
129
+ //# sourceMappingURL=trades.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trades.js","sourceRoot":"","sources":["../../../src/api/routes/trades.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { FastifyInstance } from 'fastify';
2
+ export interface ApiServerOptions {
3
+ host?: string;
4
+ port?: number;
5
+ enableSwagger?: boolean;
6
+ enableCors?: boolean;
7
+ }
8
+ export declare function createApiServer(options?: ApiServerOptions): Promise<FastifyInstance>;
9
+ export declare function startApiServer(options?: ApiServerOptions): Promise<FastifyInstance>;
10
+ export { FastifyInstance };
11
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/api/server.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAUnD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CA6C9F;AAED,wBAAsB,cAAc,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAc7F;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,65 @@
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.createApiServer = createApiServer;
7
+ exports.startApiServer = startApiServer;
8
+ const fastify_1 = __importDefault(require("fastify"));
9
+ const cors_1 = __importDefault(require("@fastify/cors"));
10
+ const swagger_1 = __importDefault(require("@fastify/swagger"));
11
+ const swagger_ui_1 = __importDefault(require("@fastify/swagger-ui"));
12
+ const utils_1 = require("../utils");
13
+ const routes_1 = require("./routes");
14
+ const openapi_1 = require("./openapi");
15
+ const logger = (0, utils_1.createLogger)('api-server', './logs/api.log');
16
+ async function createApiServer(options = {}) {
17
+ const { host = '0.0.0.0', port = 3000, enableSwagger = true, enableCors = true, } = options;
18
+ const app = (0, fastify_1.default)({
19
+ logger: false, // We use our own logger
20
+ ajv: {
21
+ customOptions: {
22
+ strict: 'log', // Allow unknown keywords like 'example'
23
+ keywords: ['example'], // Explicitly allow 'example' keyword
24
+ },
25
+ },
26
+ });
27
+ // CORS
28
+ if (enableCors) {
29
+ await app.register(cors_1.default, {
30
+ origin: true,
31
+ methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],
32
+ });
33
+ }
34
+ // OpenAPI / Swagger
35
+ if (enableSwagger) {
36
+ await app.register(swagger_1.default, openapi_1.openApiConfig);
37
+ await app.register(swagger_ui_1.default, {
38
+ routePrefix: '/docs',
39
+ uiConfig: {
40
+ docExpansion: 'list',
41
+ deepLinking: true,
42
+ },
43
+ });
44
+ }
45
+ // Register all routes
46
+ await (0, routes_1.registerRoutes)(app);
47
+ // Store options for later use
48
+ app.decorate('apiOptions', { host, port });
49
+ return app;
50
+ }
51
+ async function startApiServer(options = {}) {
52
+ const { host = '0.0.0.0', port = 3000 } = options;
53
+ const app = await createApiServer(options);
54
+ try {
55
+ await app.listen({ host, port });
56
+ logger.info(`OpenMM API server running at http://${host}:${port}`);
57
+ logger.info(`OpenAPI docs available at http://${host}:${port}/docs`);
58
+ return app;
59
+ }
60
+ catch (err) {
61
+ logger.error('Failed to start API server: ' + (err instanceof Error ? err.message : String(err)));
62
+ throw err;
63
+ }
64
+ }
65
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/api/server.ts"],"names":[],"mappings":";;;;;AAiBA,0CA6CC;AAED,wCAcC;AA9ED,sDAAmD;AACnD,yDAAiC;AACjC,+DAAuC;AACvC,qEAA4C;AAC5C,oCAAwC;AACxC,qCAA0C;AAC1C,uCAA0C;AAE1C,MAAM,MAAM,GAAG,IAAA,oBAAY,EAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;AASrD,KAAK,UAAU,eAAe,CAAC,UAA4B,EAAE;IAClE,MAAM,EACJ,IAAI,GAAG,SAAS,EAChB,IAAI,GAAG,IAAI,EACX,aAAa,GAAG,IAAI,EACpB,UAAU,GAAG,IAAI,GAClB,GAAG,OAAO,CAAC;IAEZ,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC;QAClB,MAAM,EAAE,KAAK,EAAE,wBAAwB;QACvC,GAAG,EAAE;YACH,aAAa,EAAE;gBACb,MAAM,EAAE,KAAK,EAAE,wCAAwC;gBACvD,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,qCAAqC;aAC7D;SACF;KACF,CAAC,CAAC;IAEH,OAAO;IACP,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,GAAG,CAAC,QAAQ,CAAC,cAAI,EAAE;YACvB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC;SACnD,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;IACpB,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,GAAG,CAAC,QAAQ,CAAC,iBAAO,EAAE,uBAAa,CAAC,CAAC;QAC3C,MAAM,GAAG,CAAC,QAAQ,CAAC,oBAAS,EAAE;YAC5B,WAAW,EAAE,OAAO;YACpB,QAAQ,EAAE;gBACR,YAAY,EAAE,MAAM;gBACpB,WAAW,EAAE,IAAI;aAClB;SACF,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB;IACtB,MAAM,IAAA,uBAAc,EAAC,GAAG,CAAC,CAAC;IAE1B,8BAA8B;IAC9B,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,OAAO,GAAG,CAAC;AACb,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,UAA4B,EAAE;IACjE,MAAM,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAElD,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,uCAAuC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,oCAAoC,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;QACrE,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClG,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
package/dist/cli/cli.js CHANGED
@@ -29,6 +29,7 @@ async function runCli() {
29
29
  const { priceComparisonCommand } = await import('./commands/price-comparison.js');
30
30
  const { walletCommand } = await import('./commands/wallet.js');
31
31
  const { setupCommand } = await import('./commands/setup.js');
32
+ const { serveCommand } = await import('./commands/serve.js');
32
33
  const program = new Command();
33
34
  program.name('openmm').description('OpenMM - Universal Market Making Toolkit').version('1.0.0');
34
35
  program.addCommand(setupCommand);
@@ -42,13 +43,14 @@ async function runCli() {
42
43
  program.addCommand(tradeCommand);
43
44
  program.addCommand(priceComparisonCommand);
44
45
  program.addCommand(walletCommand);
46
+ program.addCommand(serveCommand);
45
47
  program.exitOverride(err => {
46
48
  if (err.code === 'commander.unknownCommand') {
47
49
  console.error(chalk.red(`Unknown command: ${err.message}`));
48
50
  console.log(chalk.yellow('Run "openmm --help" to see available commands'));
49
51
  process.exit(1);
50
52
  }
51
- if (err.code === 'commander.helpDisplayed') {
53
+ if (err.code === 'commander.helpDisplayed' || err.code === 'commander.version') {
52
54
  process.exit(0);
53
55
  }
54
56
  throw err;
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";;;AAEA,yEAAyE;AACzE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;IAChC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;QACtD,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,+BAA+B;IAC/B,MAAM,EAAE,CAAC;AACX,CAAC;AAED,KAAK,UAAU,MAAM;IACnB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACjE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACrE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC7D,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;IAC9E,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC7D,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;IAClF,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACjC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACrC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACjC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACjC,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAElC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;QACzB,IAAI,GAAG,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const serveCommand: Command;
3
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,YAAY,SA8CrB,CAAC"}
@@ -0,0 +1,53 @@
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.serveCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const api_1 = require("../../api");
10
+ exports.serveCommand = new commander_1.Command('serve')
11
+ .description('Start the OpenMM REST API server')
12
+ .option('-p, --port <port>', 'Port to listen on', '3000')
13
+ .option('-h, --host <host>', 'Host to bind to', '0.0.0.0')
14
+ .option('--no-swagger', 'Disable Swagger/OpenAPI docs')
15
+ .option('--no-cors', 'Disable CORS')
16
+ .action(async (options) => {
17
+ const port = parseInt(options.port, 10);
18
+ const host = options.host;
19
+ console.log(chalk_1.default.cyan('šŸš€ Starting OpenMM API Server...'));
20
+ console.log(chalk_1.default.gray(` Host: ${host}`));
21
+ console.log(chalk_1.default.gray(` Port: ${port}`));
22
+ console.log(chalk_1.default.gray(` Swagger: ${options.swagger ? 'enabled' : 'disabled'}`));
23
+ console.log(chalk_1.default.gray(` CORS: ${options.cors ? 'enabled' : 'disabled'}`));
24
+ console.log();
25
+ try {
26
+ await (0, api_1.startApiServer)({
27
+ host,
28
+ port,
29
+ enableSwagger: options.swagger,
30
+ enableCors: options.cors,
31
+ });
32
+ console.log(chalk_1.default.green(`āœ“ API server running at http://${host}:${port}`));
33
+ if (options.swagger) {
34
+ console.log(chalk_1.default.blue(`šŸ“š OpenAPI docs: http://${host}:${port}/docs`));
35
+ }
36
+ console.log();
37
+ console.log(chalk_1.default.gray('Press Ctrl+C to stop'));
38
+ // Keep process running
39
+ process.on('SIGINT', () => {
40
+ console.log(chalk_1.default.yellow('\nšŸ‘‹ Shutting down...'));
41
+ process.exit(0);
42
+ });
43
+ process.on('SIGTERM', () => {
44
+ console.log(chalk_1.default.yellow('\nšŸ‘‹ Shutting down...'));
45
+ process.exit(0);
46
+ });
47
+ }
48
+ catch (error) {
49
+ console.error(chalk_1.default.red('Failed to start server:'), error);
50
+ process.exit(1);
51
+ }
52
+ });
53
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,mCAA2C;AAE9B,QAAA,YAAY,GAAG,IAAI,mBAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC;KACxD,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,SAAS,CAAC;KACzD,MAAM,CAAC,cAAc,EAAE,8BAA8B,CAAC;KACtD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC;KACnC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,CAAC;QACH,MAAM,IAAA,oBAAc,EAAC;YACnB,IAAI;YACJ,IAAI;YACJ,aAAa,EAAE,OAAO,CAAC,OAAO;YAC9B,UAAU,EAAE,OAAO,CAAC,IAAI;SACzB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kCAAkC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3E,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAEhD,uBAAuB;QACvB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACzB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/config/environment.ts"],"names":[],"mappings":"AAOA,UAAU,iBAAiB;IACzB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IAEF,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAyED,eAAO,MAAM,MAAM,mBAAkC,CAAC;AACtD,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/config/environment.ts"],"names":[],"mappings":"AAOA,UAAU,iBAAiB;IACzB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IAEF,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AA8ED,eAAO,MAAM,MAAM,mBAEgB,CAAC;AACpC,eAAe,MAAM,CAAC"}
@@ -61,6 +61,10 @@ class EnvironmentValidator {
61
61
  return config;
62
62
  }
63
63
  catch (error) {
64
+ // In test environment, don't exit - just throw
65
+ if (process.env.NODE_ENV === 'test') {
66
+ throw error;
67
+ }
64
68
  const errorMessage = error instanceof Error ? error.message : String(error);
65
69
  logger.error('Environment validation failed', { error: errorMessage });
66
70
  logger.error('Please check your .env file and ensure all required variables are set');
@@ -69,6 +73,9 @@ class EnvironmentValidator {
69
73
  }
70
74
  }
71
75
  }
72
- exports.config = EnvironmentValidator.validate();
76
+ // Skip validation in test environment
77
+ exports.config = process.env.NODE_ENV === 'test'
78
+ ? {}
79
+ : EnvironmentValidator.validate();
73
80
  exports.default = exports.config;
74
81
  //# sourceMappingURL=environment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/config/environment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/config/environment.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export { BitgetConnector } from './exchanges/bitget/bitget-connector';
7
7
  export { KrakenConnector } from './exchanges/kraken/kraken-connector';
8
8
  export { ExchangeFactory, SupportedExchange } from './cli/exchange-factory';
9
9
  export * as x402 from './x402';
10
+ export * from './api';
10
11
  export declare class OpenMM {
11
12
  private logger;
12
13
  constructor();
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAQ,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAGvE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG5E,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAG/B,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAA+C;;IAMtD,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;CAGpB;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAQ,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAGvE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG5E,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAG/B,cAAc,OAAO,CAAC;AAGtB,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAA+C;;IAMtD,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;CAGpB;AAED,eAAe,MAAM,CAAC"}
package/dist/index.js CHANGED
@@ -57,6 +57,8 @@ var exchange_factory_1 = require("./cli/exchange-factory");
57
57
  Object.defineProperty(exports, "ExchangeFactory", { enumerable: true, get: function () { return exchange_factory_1.ExchangeFactory; } });
58
58
  // x402 Payment Support
59
59
  exports.x402 = __importStar(require("./x402"));
60
+ // REST API Server
61
+ __exportStar(require("./api"), exports);
60
62
  const utils_1 = require("./utils");
61
63
  class OpenMM {
62
64
  constructor() {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAwB;AAExB,kBAAkB;AAClB,mFAAgF;AAAvE,gIAAA,qBAAqB,OAAA;AAC9B,+DAA6D;AAApD,6GAAA,YAAY,OAAA;AAErB,sBAAsB;AACtB,kEAAgE;AAAvD,+GAAA,aAAa,OAAA;AACtB,wEAAsE;AAA7D,mHAAA,eAAe,OAAA;AACxB,wEAAsE;AAA7D,mHAAA,eAAe,OAAA;AACxB,wEAAuE;AAA7D,mHAAA,eAAe,OAAA;AAEzB,mBAAmB;AACnB,2DAA4E;AAAnE,mHAAA,eAAe,OAAA;AAExB,uBAAuB;AACvB,+CAA+B;AAC/B,mCAAuC;AAEvC,MAAa,MAAM;IAGjB;QAFQ,WAAM,GAAG,IAAA,oBAAY,EAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAG3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACzE,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IAC5D,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IAC5D,CAAC;CACF;AAdD,wBAcC;AAED,kBAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAwB;AAExB,kBAAkB;AAClB,mFAAgF;AAAvE,gIAAA,qBAAqB,OAAA;AAC9B,+DAA6D;AAApD,6GAAA,YAAY,OAAA;AAErB,sBAAsB;AACtB,kEAAgE;AAAvD,+GAAA,aAAa,OAAA;AACtB,wEAAsE;AAA7D,mHAAA,eAAe,OAAA;AACxB,wEAAsE;AAA7D,mHAAA,eAAe,OAAA;AACxB,wEAAuE;AAA7D,mHAAA,eAAe,OAAA;AAEzB,mBAAmB;AACnB,2DAA4E;AAAnE,mHAAA,eAAe,OAAA;AAExB,uBAAuB;AACvB,+CAA+B;AAE/B,kBAAkB;AAClB,wCAAsB;AACtB,mCAAuC;AAEvC,MAAa,MAAM;IAGjB;QAFQ,WAAM,GAAG,IAAA,oBAAY,EAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAG3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACzE,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IAC5D,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IAC5D,CAAC;CACF;AAdD,wBAcC;AAED,kBAAe,MAAM,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3rd-eye-labs/openmm",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Universal Market Making Toolkit",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -35,9 +35,13 @@
35
35
  "author": "",
36
36
  "license": "MIT",
37
37
  "dependencies": {
38
+ "@fastify/cors": "^11.2.0",
39
+ "@fastify/swagger": "^9.7.0",
40
+ "@fastify/swagger-ui": "^5.2.5",
38
41
  "chalk": "^4.1.2",
39
42
  "commander": "^14.0.2",
40
43
  "dotenv": "^16.6.1",
44
+ "fastify": "^5.8.2",
41
45
  "winston": "^3.11.0",
42
46
  "ws": "^8.14.2"
43
47
  },
@@ -45,7 +49,7 @@
45
49
  "@eslint/js": "^9.39.1",
46
50
  "@types/commander": "^2.12.0",
47
51
  "@types/jest": "^30.0.0",
48
- "@types/node": "^20.0.0",
52
+ "@types/node": "^20.19.37",
49
53
  "@types/ws": "^8.5.0",
50
54
  "@typescript-eslint/eslint-plugin": "^8.48.0",
51
55
  "@typescript-eslint/parser": "^8.48.0",