@3rd-eye-labs/openmm 0.0.1
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/LICENSE +21 -0
- package/README.md +70 -0
- package/dist/cli/cli.d.ts +3 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +43 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/commands/balance.d.ts +3 -0
- package/dist/cli/commands/balance.d.ts.map +1 -0
- package/dist/cli/commands/balance.js +51 -0
- package/dist/cli/commands/balance.js.map +1 -0
- package/dist/cli/commands/orderbook.d.ts +3 -0
- package/dist/cli/commands/orderbook.d.ts.map +1 -0
- package/dist/cli/commands/orderbook.js +83 -0
- package/dist/cli/commands/orderbook.js.map +1 -0
- package/dist/cli/commands/orders.d.ts +3 -0
- package/dist/cli/commands/orders.d.ts.map +1 -0
- package/dist/cli/commands/orders.js +196 -0
- package/dist/cli/commands/orders.js.map +1 -0
- package/dist/cli/commands/pool-discovery.d.ts +3 -0
- package/dist/cli/commands/pool-discovery.d.ts.map +1 -0
- package/dist/cli/commands/pool-discovery.js +60 -0
- package/dist/cli/commands/pool-discovery.js.map +1 -0
- package/dist/cli/commands/ticker.d.ts +3 -0
- package/dist/cli/commands/ticker.d.ts.map +1 -0
- package/dist/cli/commands/ticker.js +51 -0
- package/dist/cli/commands/ticker.js.map +1 -0
- package/dist/cli/commands/trade.d.ts +3 -0
- package/dist/cli/commands/trade.d.ts.map +1 -0
- package/dist/cli/commands/trade.js +110 -0
- package/dist/cli/commands/trade.js.map +1 -0
- package/dist/cli/commands/trades.d.ts +3 -0
- package/dist/cli/commands/trades.d.ts.map +1 -0
- package/dist/cli/commands/trades.js +73 -0
- package/dist/cli/commands/trades.js.map +1 -0
- package/dist/cli/exchange-factory.d.ts +40 -0
- package/dist/cli/exchange-factory.d.ts.map +1 -0
- package/dist/cli/exchange-factory.js +77 -0
- package/dist/cli/exchange-factory.js.map +1 -0
- package/dist/cli/pool-discovery-core.d.ts +54 -0
- package/dist/cli/pool-discovery-core.d.ts.map +1 -0
- package/dist/cli/pool-discovery-core.js +193 -0
- package/dist/cli/pool-discovery-core.js.map +1 -0
- package/dist/cli/utils/error-handler.d.ts +40 -0
- package/dist/cli/utils/error-handler.d.ts.map +1 -0
- package/dist/cli/utils/error-handler.js +117 -0
- package/dist/cli/utils/error-handler.js.map +1 -0
- package/dist/cli/utils/validation.d.ts +45 -0
- package/dist/cli/utils/validation.d.ts.map +1 -0
- package/dist/cli/utils/validation.js +118 -0
- package/dist/cli/utils/validation.js.map +1 -0
- package/dist/config/environment.d.ts +25 -0
- package/dist/config/environment.d.ts.map +1 -0
- package/dist/config/environment.js +72 -0
- package/dist/config/environment.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +21 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/launcher-config.d.ts +17 -0
- package/dist/config/launcher-config.d.ts.map +1 -0
- package/dist/config/launcher-config.js +14 -0
- package/dist/config/launcher-config.js.map +1 -0
- package/dist/config/price-aggregation.d.ts +49 -0
- package/dist/config/price-aggregation.d.ts.map +1 -0
- package/dist/config/price-aggregation.js +89 -0
- package/dist/config/price-aggregation.js.map +1 -0
- package/dist/core/exchange/base-exchange-connector.d.ts +45 -0
- package/dist/core/exchange/base-exchange-connector.d.ts.map +1 -0
- package/dist/core/exchange/base-exchange-connector.js +43 -0
- package/dist/core/exchange/base-exchange-connector.js.map +1 -0
- package/dist/core/exchange/base-exchange-data-mapper.d.ts +58 -0
- package/dist/core/exchange/base-exchange-data-mapper.d.ts.map +1 -0
- package/dist/core/exchange/base-exchange-data-mapper.js +60 -0
- package/dist/core/exchange/base-exchange-data-mapper.js.map +1 -0
- package/dist/core/price-aggregation/cardano-price-service.d.ts +31 -0
- package/dist/core/price-aggregation/cardano-price-service.d.ts.map +1 -0
- package/dist/core/price-aggregation/cardano-price-service.js +157 -0
- package/dist/core/price-aggregation/cardano-price-service.js.map +1 -0
- package/dist/core/price-aggregation/index.d.ts +11 -0
- package/dist/core/price-aggregation/index.d.ts.map +1 -0
- package/dist/core/price-aggregation/index.js +21 -0
- package/dist/core/price-aggregation/index.js.map +1 -0
- package/dist/core/price-aggregation/iris-api-client.d.ts +16 -0
- package/dist/core/price-aggregation/iris-api-client.d.ts.map +1 -0
- package/dist/core/price-aggregation/iris-api-client.js +62 -0
- package/dist/core/price-aggregation/iris-api-client.js.map +1 -0
- package/dist/core/price-aggregation/iris-pool-discovery.d.ts +37 -0
- package/dist/core/price-aggregation/iris-pool-discovery.d.ts.map +1 -0
- package/dist/core/price-aggregation/iris-pool-discovery.js +123 -0
- package/dist/core/price-aggregation/iris-pool-discovery.js.map +1 -0
- package/dist/core/price-aggregation/price-calculator.d.ts +27 -0
- package/dist/core/price-aggregation/price-calculator.d.ts.map +1 -0
- package/dist/core/price-aggregation/price-calculator.js +84 -0
- package/dist/core/price-aggregation/price-calculator.js.map +1 -0
- package/dist/core/risk-management/risk-manager.d.ts +14 -0
- package/dist/core/risk-management/risk-manager.d.ts.map +1 -0
- package/dist/core/risk-management/risk-manager.js +40 -0
- package/dist/core/risk-management/risk-manager.js.map +1 -0
- package/dist/core/strategy/base-strategy.d.ts +26 -0
- package/dist/core/strategy/base-strategy.d.ts.map +1 -0
- package/dist/core/strategy/base-strategy.js +46 -0
- package/dist/core/strategy/base-strategy.js.map +1 -0
- package/dist/core/strategy/strategy-factory.d.ts +7 -0
- package/dist/core/strategy/strategy-factory.d.ts.map +1 -0
- package/dist/core/strategy/strategy-factory.js +64 -0
- package/dist/core/strategy/strategy-factory.js.map +1 -0
- package/dist/exchanges/mexc/mexc-auth.d.ts +42 -0
- package/dist/exchanges/mexc/mexc-auth.d.ts.map +1 -0
- package/dist/exchanges/mexc/mexc-auth.js +122 -0
- package/dist/exchanges/mexc/mexc-auth.js.map +1 -0
- package/dist/exchanges/mexc/mexc-connector.d.ts +125 -0
- package/dist/exchanges/mexc/mexc-connector.d.ts.map +1 -0
- package/dist/exchanges/mexc/mexc-connector.js +422 -0
- package/dist/exchanges/mexc/mexc-connector.js.map +1 -0
- package/dist/exchanges/mexc/mexc-data-mapper.d.ts +50 -0
- package/dist/exchanges/mexc/mexc-data-mapper.d.ts.map +1 -0
- package/dist/exchanges/mexc/mexc-data-mapper.js +127 -0
- package/dist/exchanges/mexc/mexc-data-mapper.js.map +1 -0
- package/dist/exchanges/mexc/mexc-protobuf-decoder.d.ts +43 -0
- package/dist/exchanges/mexc/mexc-protobuf-decoder.d.ts.map +1 -0
- package/dist/exchanges/mexc/mexc-protobuf-decoder.js +235 -0
- package/dist/exchanges/mexc/mexc-protobuf-decoder.js.map +1 -0
- package/dist/exchanges/mexc/mexc-user-stream.d.ts +81 -0
- package/dist/exchanges/mexc/mexc-user-stream.d.ts.map +1 -0
- package/dist/exchanges/mexc/mexc-user-stream.js +253 -0
- package/dist/exchanges/mexc/mexc-user-stream.js.map +1 -0
- package/dist/exchanges/mexc/mexc-utils.d.ts +31 -0
- package/dist/exchanges/mexc/mexc-utils.d.ts.map +1 -0
- package/dist/exchanges/mexc/mexc-utils.js +186 -0
- package/dist/exchanges/mexc/mexc-utils.js.map +1 -0
- package/dist/exchanges/mexc/mexc-websocket.d.ts +124 -0
- package/dist/exchanges/mexc/mexc-websocket.d.ts.map +1 -0
- package/dist/exchanges/mexc/mexc-websocket.js +496 -0
- package/dist/exchanges/mexc/mexc-websocket.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/strategies/grid/grid-calculator.d.ts +7 -0
- package/dist/strategies/grid/grid-calculator.d.ts.map +1 -0
- package/dist/strategies/grid/grid-calculator.js +34 -0
- package/dist/strategies/grid/grid-calculator.js.map +1 -0
- package/dist/strategies/grid/grid-order-manager.d.ts +23 -0
- package/dist/strategies/grid/grid-order-manager.d.ts.map +1 -0
- package/dist/strategies/grid/grid-order-manager.js +99 -0
- package/dist/strategies/grid/grid-order-manager.js.map +1 -0
- package/dist/strategies/grid/grid-strategy.d.ts +29 -0
- package/dist/strategies/grid/grid-strategy.d.ts.map +1 -0
- package/dist/strategies/grid/grid-strategy.js +185 -0
- package/dist/strategies/grid/grid-strategy.js.map +1 -0
- package/dist/types/account.d.ts +21 -0
- package/dist/types/account.d.ts.map +1 -0
- package/dist/types/account.js +3 -0
- package/dist/types/account.js.map +1 -0
- package/dist/types/exchange.d.ts +67 -0
- package/dist/types/exchange.d.ts.map +1 -0
- package/dist/types/exchange.js +3 -0
- package/dist/types/exchange.js.map +1 -0
- package/dist/types/grid.d.ts +10 -0
- package/dist/types/grid.d.ts.map +1 -0
- package/dist/types/grid.js +3 -0
- package/dist/types/grid.js.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +27 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/iris.d.ts +58 -0
- package/dist/types/iris.d.ts.map +1 -0
- package/dist/types/iris.js +7 -0
- package/dist/types/iris.js.map +1 -0
- package/dist/types/market.d.ts +16 -0
- package/dist/types/market.d.ts.map +1 -0
- package/dist/types/market.js +3 -0
- package/dist/types/market.js.map +1 -0
- package/dist/types/mexc-raw.d.ts +87 -0
- package/dist/types/mexc-raw.d.ts.map +1 -0
- package/dist/types/mexc-raw.js +7 -0
- package/dist/types/mexc-raw.js.map +1 -0
- package/dist/types/mexc.d.ts +57 -0
- package/dist/types/mexc.d.ts.map +1 -0
- package/dist/types/mexc.js +8 -0
- package/dist/types/mexc.js.map +1 -0
- package/dist/types/price.d.ts +37 -0
- package/dist/types/price.d.ts.map +1 -0
- package/dist/types/price.js +7 -0
- package/dist/types/price.js.map +1 -0
- package/dist/types/risk.d.ts +22 -0
- package/dist/types/risk.d.ts.map +1 -0
- package/dist/types/risk.js +6 -0
- package/dist/types/risk.js.map +1 -0
- package/dist/types/strategy.d.ts +46 -0
- package/dist/types/strategy.d.ts.map +1 -0
- package/dist/types/strategy.js +3 -0
- package/dist/types/strategy.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +29 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +108 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/symbol-utils.d.ts +17 -0
- package/dist/utils/symbol-utils.d.ts.map +1 -0
- package/dist/utils/symbol-utils.js +41 -0
- package/dist/utils/symbol-utils.js.map +1 -0
- package/package.json +53 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 OpenMM
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# OpenMM - Cardano's Universal Market Making Toolkit
|
|
2
|
+
|
|
3
|
+
OpenMM is an open-source SDK designed to democratize market-making for Cardano projects. It provides a unified interface for trading Cardano Native Tokens (CNTs) across multiple centralized exchanges.
|
|
4
|
+
|
|
5
|
+
## What is OpenMM?
|
|
6
|
+
|
|
7
|
+
Traditional market-making services are expensive and fragmented, making it difficult for smaller Cardano projects to maintain healthy liquidity. OpenMM solves this by offering:
|
|
8
|
+
|
|
9
|
+
- **Multi-Exchange Support**: Trade on MEXC, Gate.io, Bitget, Kraken and more through a single interface
|
|
10
|
+
- **Advanced Strategies**: Grid trading, liquidity provision, and dynamic rebalancing
|
|
11
|
+
- **Complete CNT Integration**: Full support for Cardano Native Tokens
|
|
12
|
+
|
|
13
|
+
This toolkit aims to improve liquidity for Cardano projects, reduce trading spreads, and potentially become the standard liquidity infrastructure for the Cardano ecosystem.
|
|
14
|
+
|
|
15
|
+
## Getting Started
|
|
16
|
+
|
|
17
|
+
### Prerequisites
|
|
18
|
+
|
|
19
|
+
- Node.js 20.x LTS or higher
|
|
20
|
+
- npm or yarn
|
|
21
|
+
|
|
22
|
+
### Installation
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Development
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm run dev
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Build
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm run build
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Testing
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npm test
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Linting
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npm run lint
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Running Trading Strategies
|
|
53
|
+
|
|
54
|
+
OpenMM includes automated trading strategies for market making:
|
|
55
|
+
|
|
56
|
+
- **CLI Commands**: See [CLI.md](docs/CLI.md) for all available commands
|
|
57
|
+
- **Grid Strategy**: See [GRID_STRATEGY.md](docs/guides/GRID_STRATEGY.md) for grid trading setup and examples
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Example: Start grid trading on MEXC
|
|
61
|
+
openmm trade --strategy grid --exchange mexc --symbol INDY/USDT
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## License
|
|
65
|
+
|
|
66
|
+
MIT License - see [LICENSE](./LICENSE) file for details.
|
|
67
|
+
|
|
68
|
+
## Contributing
|
|
69
|
+
|
|
70
|
+
Please read our contributing guidelines before submitting pull requests.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli/cli.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const balance_1 = require("./commands/balance");
|
|
10
|
+
const orders_1 = require("./commands/orders");
|
|
11
|
+
const ticker_1 = require("./commands/ticker");
|
|
12
|
+
const orderbook_1 = require("./commands/orderbook");
|
|
13
|
+
const trades_1 = require("./commands/trades");
|
|
14
|
+
const pool_discovery_1 = require("./commands/pool-discovery");
|
|
15
|
+
const trade_1 = require("./commands/trade");
|
|
16
|
+
const program = new commander_1.Command();
|
|
17
|
+
program
|
|
18
|
+
.name('openmm')
|
|
19
|
+
.description('OpenMM - Universal Market Making Toolkit')
|
|
20
|
+
.version('1.0.0');
|
|
21
|
+
program.addCommand(balance_1.balanceCommand);
|
|
22
|
+
program.addCommand(orders_1.ordersCommand);
|
|
23
|
+
program.addCommand(ticker_1.tickerCommand);
|
|
24
|
+
program.addCommand(orderbook_1.orderbookCommand);
|
|
25
|
+
program.addCommand(trades_1.tradesCommand);
|
|
26
|
+
program.addCommand(pool_discovery_1.poolDiscoveryCommand);
|
|
27
|
+
program.addCommand(trade_1.tradeCommand);
|
|
28
|
+
program.exitOverride((err) => {
|
|
29
|
+
if (err.code === 'commander.unknownCommand') {
|
|
30
|
+
console.error(chalk_1.default.red(`Unknown command: ${err.message}`));
|
|
31
|
+
console.log(chalk_1.default.yellow('Run "openmm --help" to see available commands'));
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
if (err.code === 'commander.helpDisplayed') {
|
|
35
|
+
process.exit(0);
|
|
36
|
+
}
|
|
37
|
+
throw err;
|
|
38
|
+
});
|
|
39
|
+
program.parse(process.argv);
|
|
40
|
+
if (process.argv.length === 2) {
|
|
41
|
+
program.help();
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,gDAAoD;AACpD,8CAAkD;AAClD,8CAAkD;AAClD,oDAAwD;AACxD,8CAAkD;AAClD,8DAAiE;AACjE,4CAAgD;AAEhD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,0CAA0C,CAAC;KACvD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,wBAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,4BAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,qCAAoB,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AAEjC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE;IAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,GAAG,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC9B,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/balance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,cAAc,SAsCvB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.balanceCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const exchange_factory_1 = require("../exchange-factory");
|
|
6
|
+
const validation_1 = require("../utils/validation");
|
|
7
|
+
const error_handler_1 = require("../utils/error-handler");
|
|
8
|
+
exports.balanceCommand = new commander_1.Command('balance')
|
|
9
|
+
.description('Get account balance from specified exchange')
|
|
10
|
+
.requiredOption('-e, --exchange <exchange>', 'Exchange to query (mexc, gateio, bitget, kraken)')
|
|
11
|
+
.option('-a, --asset <asset>', 'Specific asset to query (e.g., BTC, USDT)')
|
|
12
|
+
.option('--json', 'Output in JSON format')
|
|
13
|
+
.action(async (options) => {
|
|
14
|
+
await (0, error_handler_1.executeCommand)(async () => {
|
|
15
|
+
const exchange = (0, validation_1.validateExchange)(options.exchange);
|
|
16
|
+
try {
|
|
17
|
+
const connector = await exchange_factory_1.ExchangeFactory.getExchange(exchange);
|
|
18
|
+
const allBalances = await connector.getBalance();
|
|
19
|
+
let balance;
|
|
20
|
+
if (options.asset) {
|
|
21
|
+
const asset = options.asset.toUpperCase();
|
|
22
|
+
balance = allBalances[asset] || {
|
|
23
|
+
asset,
|
|
24
|
+
free: 0,
|
|
25
|
+
used: 0,
|
|
26
|
+
total: 0,
|
|
27
|
+
available: 0
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
balance = allBalances;
|
|
32
|
+
}
|
|
33
|
+
if (options.json) {
|
|
34
|
+
console.log(JSON.stringify(balance, null, 2));
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
(0, error_handler_1.displayBalance)(balance, options.asset?.toUpperCase());
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
(0, error_handler_1.handleError)(error, 'Balance Query');
|
|
42
|
+
}
|
|
43
|
+
}, 'balance command');
|
|
44
|
+
});
|
|
45
|
+
exports.balanceCommand.addHelpText('after', `
|
|
46
|
+
Examples:
|
|
47
|
+
$ openmm balance --exchange mexc # Get all balances
|
|
48
|
+
$ openmm balance --exchange mexc --asset BTC # Get BTC balance only
|
|
49
|
+
$ openmm balance --exchange mexc --json # Output as JSON
|
|
50
|
+
`);
|
|
51
|
+
//# sourceMappingURL=balance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../src/cli/commands/balance.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,0DAAsD;AACtD,oDAAuD;AACvD,0DAAqF;AAExE,QAAA,cAAc,GAAG,IAAI,mBAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CAAC,6CAA6C,CAAC;KAC1D,cAAc,CAAC,2BAA2B,EAAE,kDAAkD,CAAC;KAC/F,MAAM,CAAC,qBAAqB,EAAE,2CAA2C,CAAC;KAC1E,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAA,8BAAc,EAAC,KAAK,IAAI,EAAE;QAC9B,MAAM,QAAQ,GAAG,IAAA,6BAAgB,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEpD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,kCAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAE9D,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;YACjD,IAAI,OAAO,CAAC;YAEZ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC1C,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI;oBAC9B,KAAK;oBACL,IAAI,EAAE,CAAC;oBACP,IAAI,EAAE,CAAC;oBACP,KAAK,EAAE,CAAC;oBACR,SAAS,EAAE,CAAC;iBACb,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,WAAW,CAAC;YACxB,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,IAAA,8BAAc,EAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACxD,CAAC;QAEH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,2BAAW,EAAC,KAAc,EAAE,eAAe,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,EAAE,iBAAiB,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,sBAAc,CAAC,WAAW,CAAC,OAAO,EAAE;;;;;CAKnC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orderbook.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/orderbook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,gBAAgB,SAsEzB,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
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.orderbookCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const exchange_factory_1 = require("../exchange-factory");
|
|
10
|
+
const validation_1 = require("../utils/validation");
|
|
11
|
+
const error_handler_1 = require("../utils/error-handler");
|
|
12
|
+
exports.orderbookCommand = new commander_1.Command('orderbook')
|
|
13
|
+
.description('Get order book data for a trading pair')
|
|
14
|
+
.alias('book')
|
|
15
|
+
.requiredOption('-e, --exchange <exchange>', 'Exchange to query')
|
|
16
|
+
.requiredOption('-s, --symbol <symbol>', 'Trading pair symbol (e.g., BTC/USDT)')
|
|
17
|
+
.option('-l, --limit <limit>', 'Number of bid/ask levels to display (default: 10)', '10')
|
|
18
|
+
.option('--json', 'Output in JSON format')
|
|
19
|
+
.action(async (options) => {
|
|
20
|
+
await (0, error_handler_1.executeCommand)(async () => {
|
|
21
|
+
const exchange = (0, validation_1.validateExchange)(options.exchange);
|
|
22
|
+
const symbol = (0, validation_1.validateSymbol)(options.symbol);
|
|
23
|
+
const limit = parseInt(options.limit);
|
|
24
|
+
if (isNaN(limit) || limit <= 0) {
|
|
25
|
+
console.error(chalk_1.default.red('❌ Limit must be a positive number'));
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
const connector = await exchange_factory_1.ExchangeFactory.getExchange(exchange);
|
|
30
|
+
const orderbook = await connector.getOrderBook(symbol);
|
|
31
|
+
if (options.json) {
|
|
32
|
+
const limitedOrderbook = {
|
|
33
|
+
...orderbook,
|
|
34
|
+
bids: orderbook.bids.slice(0, limit),
|
|
35
|
+
asks: orderbook.asks.slice(0, limit)
|
|
36
|
+
};
|
|
37
|
+
console.log(JSON.stringify(limitedOrderbook, null, 2));
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
console.log(`\n${chalk_1.default.bold.cyan(`${orderbook.symbol} Order Book`)}:`);
|
|
41
|
+
console.log(`Updated: ${new Date(orderbook.timestamp).toLocaleString()}\n`);
|
|
42
|
+
// Display asks (highest to lowest price)
|
|
43
|
+
const asks = orderbook.asks.slice(0, limit).reverse();
|
|
44
|
+
console.log(chalk_1.default.bold.red(' ASKS (Sell Orders)'));
|
|
45
|
+
console.log(chalk_1.default.gray(' Price │ Amount │ Total'));
|
|
46
|
+
console.log(chalk_1.default.gray(' ─────────────┼──────────────┼──────────────'));
|
|
47
|
+
asks.forEach(ask => {
|
|
48
|
+
const price = ask.price.toFixed(8).padStart(12);
|
|
49
|
+
const amount = ask.amount.toFixed(8).padStart(12);
|
|
50
|
+
const total = (ask.price * ask.amount).toFixed(8).padStart(12);
|
|
51
|
+
console.log(chalk_1.default.red(` ${price} │ ${amount} │ ${total}`));
|
|
52
|
+
});
|
|
53
|
+
// Spread
|
|
54
|
+
if (orderbook.asks.length > 0 && orderbook.bids.length > 0) {
|
|
55
|
+
const spread = orderbook.asks[0].price - orderbook.bids[0].price;
|
|
56
|
+
const spreadPercent = ((spread / orderbook.asks[0].price) * 100).toFixed(4);
|
|
57
|
+
console.log(chalk_1.default.yellow(`\n Spread: $${spread.toFixed(8)} (${spreadPercent}%)\n`));
|
|
58
|
+
}
|
|
59
|
+
// Display bids (highest to lowest price)
|
|
60
|
+
const bids = orderbook.bids.slice(0, limit);
|
|
61
|
+
console.log(chalk_1.default.bold.green(' BIDS (Buy Orders)'));
|
|
62
|
+
console.log(chalk_1.default.gray(' Price │ Amount │ Total'));
|
|
63
|
+
console.log(chalk_1.default.gray(' ─────────────┼──────────────┼──────────────'));
|
|
64
|
+
bids.forEach(bid => {
|
|
65
|
+
const price = bid.price.toFixed(8).padStart(12);
|
|
66
|
+
const amount = bid.amount.toFixed(8).padStart(12);
|
|
67
|
+
const total = (bid.price * bid.amount).toFixed(8).padStart(12);
|
|
68
|
+
console.log(chalk_1.default.green(` ${price} │ ${amount} │ ${total}`));
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
(0, error_handler_1.handleError)(error, 'Order Book Query');
|
|
74
|
+
}
|
|
75
|
+
}, 'orderbook command');
|
|
76
|
+
});
|
|
77
|
+
exports.orderbookCommand.addHelpText('after', `
|
|
78
|
+
Examples:
|
|
79
|
+
$ openmm orderbook --exchange mexc --symbol BTC/USDT # Get order book with 10 levels
|
|
80
|
+
$ openmm orderbook --exchange mexc --symbol BTC/USDT --limit 5 # Get order book with 5 levels
|
|
81
|
+
$ openmm book --exchange mexc --symbol ETH/USDT --json # Get order book in JSON format
|
|
82
|
+
`);
|
|
83
|
+
//# sourceMappingURL=orderbook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orderbook.js","sourceRoot":"","sources":["../../../src/cli/commands/orderbook.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,0DAAsD;AACtD,oDAAuE;AACvE,0DAAqE;AAExD,QAAA,gBAAgB,GAAG,IAAI,mBAAO,CAAC,WAAW,CAAC;KACrD,WAAW,CAAC,wCAAwC,CAAC;KACrD,KAAK,CAAC,MAAM,CAAC;KACb,cAAc,CAAC,2BAA2B,EAAE,mBAAmB,CAAC;KAChE,cAAc,CAAC,uBAAuB,EAAE,sCAAsC,CAAC;KAC/E,MAAM,CAAC,qBAAqB,EAAE,mDAAmD,EAAE,IAAI,CAAC;KACxF,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAA,8BAAc,EAAC,KAAK,IAAI,EAAE;QAC9B,MAAM,QAAQ,GAAG,IAAA,6BAAgB,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAA,2BAAc,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,kCAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC9D,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAEvD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,gBAAgB,GAAG;oBACvB,GAAG,SAAS;oBACZ,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;oBACpC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;iBACrC,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;gBACvE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;gBAE5E,yCAAyC;gBACzC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;gBAEzE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACjB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAChD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAClD,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC/D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC9D,CAAC,CAAC,CAAC;gBAEH,SAAS;gBACT,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;oBACjE,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC5E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gBAAgB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,aAAa,MAAM,CAAC,CAAC,CAAC;gBACvF,CAAC;gBAED,yCAAyC;gBACzC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;gBAEzE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACjB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAChD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAClD,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC/D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,2BAAW,EAAC,KAAc,EAAE,kBAAkB,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,wBAAgB,CAAC,WAAW,CAAC,OAAO,EAAE;;;;;CAKrC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/orders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,aAAa,SAC2B,CAAC"}
|
|
@@ -0,0 +1,196 @@
|
|
|
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.ordersCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const exchange_factory_1 = require("../exchange-factory");
|
|
10
|
+
const validation_1 = require("../utils/validation");
|
|
11
|
+
const error_handler_1 = require("../utils/error-handler");
|
|
12
|
+
exports.ordersCommand = new commander_1.Command('orders')
|
|
13
|
+
.description('Manage orders on specified exchange');
|
|
14
|
+
exports.ordersCommand
|
|
15
|
+
.command('list')
|
|
16
|
+
.description('List orders')
|
|
17
|
+
.requiredOption('-e, --exchange <exchange>', 'Exchange to query')
|
|
18
|
+
.option('-s, --symbol <symbol>', 'Filter by trading pair (e.g., BTC/USDT)')
|
|
19
|
+
.option('-l, --limit <limit>', 'Number of orders to display (default: all)', 'all')
|
|
20
|
+
.option('--json', 'Output in JSON format')
|
|
21
|
+
.action(async (options) => {
|
|
22
|
+
await (0, error_handler_1.executeCommand)(async () => {
|
|
23
|
+
const exchange = (0, validation_1.validateExchange)(options.exchange);
|
|
24
|
+
const symbol = options.symbol ? (0, validation_1.validateSymbol)(options.symbol) : undefined;
|
|
25
|
+
let limit;
|
|
26
|
+
if (options.limit !== 'all') {
|
|
27
|
+
limit = parseInt(options.limit);
|
|
28
|
+
if (isNaN(limit) || limit <= 0) {
|
|
29
|
+
console.error(chalk_1.default.red('❌ Limit must be a positive number or "all"'));
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const connector = await exchange_factory_1.ExchangeFactory.getExchange(exchange);
|
|
35
|
+
let orders = await connector.getOpenOrders(symbol);
|
|
36
|
+
if (limit) {
|
|
37
|
+
orders = orders.slice(0, limit);
|
|
38
|
+
}
|
|
39
|
+
if (options.json) {
|
|
40
|
+
console.log(JSON.stringify(orders, null, 2));
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
if (orders.length === 0) {
|
|
44
|
+
console.log(chalk_1.default.yellow('No open orders found'));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const orderData = orders.map(order => ({
|
|
48
|
+
ID: order.id,
|
|
49
|
+
Symbol: order.symbol,
|
|
50
|
+
Side: order.side.toUpperCase(),
|
|
51
|
+
Type: order.type.toUpperCase(),
|
|
52
|
+
Amount: order.amount.toFixed(8),
|
|
53
|
+
Price: order.price ? order.price.toFixed(8) : 'Market',
|
|
54
|
+
Filled: order.filled.toFixed(8),
|
|
55
|
+
Status: order.status.toUpperCase()
|
|
56
|
+
}));
|
|
57
|
+
const limitText = limit ? ` (showing ${Math.min(limit, orders.length)})` : '';
|
|
58
|
+
console.log(`\n${chalk_1.default.bold.cyan('Open Orders')}${symbol ? ` for ${symbol}` : ''}${limitText}:`);
|
|
59
|
+
(0, error_handler_1.displayTable)(orderData);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
(0, error_handler_1.handleError)(error, 'List Orders');
|
|
64
|
+
}
|
|
65
|
+
}, 'list orders');
|
|
66
|
+
});
|
|
67
|
+
exports.ordersCommand
|
|
68
|
+
.command('get')
|
|
69
|
+
.description('Get specific order details')
|
|
70
|
+
.requiredOption('-e, --exchange <exchange>', 'Exchange to query')
|
|
71
|
+
.requiredOption('-i, --id <orderId>', 'Order ID')
|
|
72
|
+
.requiredOption('-s, --symbol <symbol>', 'Trading pair symbol')
|
|
73
|
+
.option('--json', 'Output in JSON format')
|
|
74
|
+
.action(async (options) => {
|
|
75
|
+
await (0, error_handler_1.executeCommand)(async () => {
|
|
76
|
+
const exchange = (0, validation_1.validateExchange)(options.exchange);
|
|
77
|
+
const orderId = (0, validation_1.validateOrderId)(options.id);
|
|
78
|
+
const symbol = (0, validation_1.validateSymbol)(options.symbol);
|
|
79
|
+
try {
|
|
80
|
+
const connector = await exchange_factory_1.ExchangeFactory.getExchange(exchange);
|
|
81
|
+
const order = await connector.getOrder(orderId, symbol);
|
|
82
|
+
if (options.json) {
|
|
83
|
+
console.log(JSON.stringify(order, null, 2));
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
console.log(`\n${chalk_1.default.bold.cyan('Order Details')}:`);
|
|
87
|
+
console.log(` ID: ${order.id}`);
|
|
88
|
+
console.log(` Symbol: ${order.symbol}`);
|
|
89
|
+
console.log(` Side: ${chalk_1.default.bold(order.side.toUpperCase())}`);
|
|
90
|
+
console.log(` Type: ${order.type.toUpperCase()}`);
|
|
91
|
+
console.log(` Amount: ${order.amount.toFixed(8)}`);
|
|
92
|
+
console.log(` Price: ${order.price ? order.price.toFixed(8) : 'Market'}`);
|
|
93
|
+
console.log(` Filled: ${chalk_1.default.green(order.filled.toFixed(8))}`);
|
|
94
|
+
console.log(` Remaining: ${chalk_1.default.yellow(order.remaining.toFixed(8))}`);
|
|
95
|
+
console.log(` Status: ${chalk_1.default.bold(order.status.toUpperCase())}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
(0, error_handler_1.handleError)(error, 'Get Order');
|
|
100
|
+
}
|
|
101
|
+
}, 'get order');
|
|
102
|
+
});
|
|
103
|
+
exports.ordersCommand
|
|
104
|
+
.command('create')
|
|
105
|
+
.description('Create a new order')
|
|
106
|
+
.requiredOption('-e, --exchange <exchange>', 'Exchange to use')
|
|
107
|
+
.requiredOption('-s, --symbol <symbol>', 'Trading pair (e.g., BTC/USDT)')
|
|
108
|
+
.requiredOption('--side <side>', 'Order side (buy/sell)')
|
|
109
|
+
.requiredOption('--type <type>', 'Order type (market/limit)')
|
|
110
|
+
.requiredOption('--amount <amount>', 'Order amount')
|
|
111
|
+
.option('--price <price>', 'Order price (required for limit orders)')
|
|
112
|
+
.option('--json', 'Output in JSON format')
|
|
113
|
+
.action(async (options) => {
|
|
114
|
+
await (0, error_handler_1.executeCommand)(async () => {
|
|
115
|
+
const exchange = (0, validation_1.validateExchange)(options.exchange);
|
|
116
|
+
const symbol = (0, validation_1.validateSymbol)(options.symbol);
|
|
117
|
+
const side = (0, validation_1.validateOrderSide)(options.side);
|
|
118
|
+
const type = (0, validation_1.validateOrderType)(options.type);
|
|
119
|
+
const amount = (0, validation_1.validatePositiveNumber)(options.amount, 'Amount');
|
|
120
|
+
let price;
|
|
121
|
+
if (type === 'limit') {
|
|
122
|
+
if (!options.price) {
|
|
123
|
+
console.error(chalk_1.default.red('❌ Price is required for limit orders'));
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
price = (0, validation_1.validatePositiveNumber)(options.price, 'Price');
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
const connector = await exchange_factory_1.ExchangeFactory.getExchange(exchange);
|
|
130
|
+
const order = await connector.createOrder(symbol, type, side, amount, price);
|
|
131
|
+
if (options.json) {
|
|
132
|
+
console.log(JSON.stringify(order, null, 2));
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
(0, error_handler_1.showSuccess)(`Order created successfully!`);
|
|
136
|
+
console.log(` Order ID: ${chalk_1.default.bold(order.id)}`);
|
|
137
|
+
console.log(` Symbol: ${order.symbol}`);
|
|
138
|
+
console.log(` Side: ${chalk_1.default.bold(side.toUpperCase())}`);
|
|
139
|
+
console.log(` Type: ${type.toUpperCase()}`);
|
|
140
|
+
console.log(` Amount: ${amount.toFixed(8)}`);
|
|
141
|
+
if (price) {
|
|
142
|
+
console.log(` Price: ${price.toFixed(8)}`);
|
|
143
|
+
}
|
|
144
|
+
console.log(` Status: ${chalk_1.default.green(order.status.toUpperCase())}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
(0, error_handler_1.handleError)(error, 'Create Order');
|
|
149
|
+
}
|
|
150
|
+
}, 'create order');
|
|
151
|
+
});
|
|
152
|
+
exports.ordersCommand
|
|
153
|
+
.command('cancel')
|
|
154
|
+
.description('Cancel a specific order')
|
|
155
|
+
.requiredOption('-e, --exchange <exchange>', 'Exchange to use')
|
|
156
|
+
.requiredOption('-i, --id <orderId>', 'Order ID to cancel')
|
|
157
|
+
.requiredOption('-s, --symbol <symbol>', 'Trading pair symbol')
|
|
158
|
+
.option('--json', 'Output in JSON format')
|
|
159
|
+
.action(async (options) => {
|
|
160
|
+
await (0, error_handler_1.executeCommand)(async () => {
|
|
161
|
+
const exchange = (0, validation_1.validateExchange)(options.exchange);
|
|
162
|
+
const orderId = (0, validation_1.validateOrderId)(options.id);
|
|
163
|
+
const symbol = (0, validation_1.validateSymbol)(options.symbol);
|
|
164
|
+
try {
|
|
165
|
+
const connector = await exchange_factory_1.ExchangeFactory.getExchange(exchange);
|
|
166
|
+
await connector.cancelOrder(orderId, symbol);
|
|
167
|
+
if (options.json) {
|
|
168
|
+
console.log(JSON.stringify({
|
|
169
|
+
success: true,
|
|
170
|
+
orderId,
|
|
171
|
+
symbol,
|
|
172
|
+
message: 'Order cancelled successfully'
|
|
173
|
+
}, null, 2));
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
(0, error_handler_1.showSuccess)(`Order cancelled successfully!`);
|
|
177
|
+
console.log(` Order ID: ${chalk_1.default.bold(orderId)}`);
|
|
178
|
+
console.log(` Symbol: ${symbol}`);
|
|
179
|
+
console.log(` Status: ${chalk_1.default.red('CANCELLED')}`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
(0, error_handler_1.handleError)(error, 'Cancel Order');
|
|
184
|
+
}
|
|
185
|
+
}, 'cancel order');
|
|
186
|
+
});
|
|
187
|
+
exports.ordersCommand.addHelpText('after', `
|
|
188
|
+
Examples:
|
|
189
|
+
$ openmm orders list --exchange mexc # List all open orders
|
|
190
|
+
$ openmm orders list --exchange mexc --limit 5 # List only 5 orders
|
|
191
|
+
$ openmm orders list --exchange mexc --symbol BTC/USDT # List orders for BTC/USDT
|
|
192
|
+
$ openmm orders get --exchange mexc --id 12345 --symbol BTC/USDT # Get specific order
|
|
193
|
+
$ openmm orders create --exchange mexc --symbol BTC/USDT --side buy --type limit --amount 0.001 --price 50000
|
|
194
|
+
$ openmm orders cancel --exchange mexc --id 12345 --symbol BTC/USDT # Cancel specific order
|
|
195
|
+
`);
|
|
196
|
+
//# sourceMappingURL=orders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orders.js","sourceRoot":"","sources":["../../../src/cli/commands/orders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool-discovery.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pool-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,oBAAoB,SA4D9B,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.poolDiscoveryCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const pool_discovery_core_1 = require("../pool-discovery-core");
|
|
6
|
+
const error_handler_1 = require("../utils/error-handler");
|
|
7
|
+
const price_aggregation_1 = require("../../config/price-aggregation");
|
|
8
|
+
exports.poolDiscoveryCommand = new commander_1.Command('pool-discovery')
|
|
9
|
+
.description('Discover Cardano liquidity pools for native tokens')
|
|
10
|
+
.addCommand(new commander_1.Command('discover')
|
|
11
|
+
.description('Discover pools for a supported token')
|
|
12
|
+
.argument('<token>', 'Token symbol (e.g., NIGHT, SNEK, INDY)')
|
|
13
|
+
.option('--limit <number>', 'Limit number of pools shown', '10')
|
|
14
|
+
.option('--min-liquidity <number>', 'Filter pools by minimum TVL')
|
|
15
|
+
.option('--show-all', 'Show all pools (ignore limit)')
|
|
16
|
+
.action(async (token, options) => {
|
|
17
|
+
await (0, error_handler_1.executeCommand)(async () => {
|
|
18
|
+
const cli = new pool_discovery_core_1.PoolDiscoveryCLI();
|
|
19
|
+
const discoverOptions = {
|
|
20
|
+
limit: parseInt(options.limit),
|
|
21
|
+
minLiquidity: options.minLiquidity ? parseInt(options.minLiquidity) : undefined,
|
|
22
|
+
showAll: options.showAll || false
|
|
23
|
+
};
|
|
24
|
+
const result = await cli.discoverTokenPools(token, discoverOptions);
|
|
25
|
+
cli.displayResults(result);
|
|
26
|
+
}, 'pool-discovery discover');
|
|
27
|
+
}))
|
|
28
|
+
.addCommand(new commander_1.Command('supported')
|
|
29
|
+
.description('List all supported tokens')
|
|
30
|
+
.action(async () => {
|
|
31
|
+
await (0, error_handler_1.executeCommand)(async () => {
|
|
32
|
+
console.log('🎯 Supported Tokens:');
|
|
33
|
+
console.log('─'.repeat(20));
|
|
34
|
+
(0, price_aggregation_1.getSupportedTokens)().forEach(token => {
|
|
35
|
+
console.log(`• ${token}`);
|
|
36
|
+
});
|
|
37
|
+
}, 'pool-discovery supported');
|
|
38
|
+
}))
|
|
39
|
+
.addCommand(new commander_1.Command('prices')
|
|
40
|
+
.description('Get live prices for token pools')
|
|
41
|
+
.argument('<token>', 'Token symbol')
|
|
42
|
+
.action(async (token) => {
|
|
43
|
+
await (0, error_handler_1.executeCommand)(async () => {
|
|
44
|
+
const cli = new pool_discovery_core_1.PoolDiscoveryCLI();
|
|
45
|
+
const result = await cli.discoverTokenPools(token, { limit: 3 });
|
|
46
|
+
await cli.getPoolPrices(result.recommendedIdentifiers, token);
|
|
47
|
+
}, 'pool-discovery prices');
|
|
48
|
+
}))
|
|
49
|
+
.addCommand(new commander_1.Command('custom')
|
|
50
|
+
.description('Generate configuration for custom token')
|
|
51
|
+
.argument('<policyId>', 'Cardano policy ID')
|
|
52
|
+
.argument('<assetNameHex>', 'Asset name in hex format')
|
|
53
|
+
.argument('<symbol>', 'Token symbol')
|
|
54
|
+
.action(async (policyId, assetNameHex, symbol) => {
|
|
55
|
+
await (0, error_handler_1.executeCommand)(async () => {
|
|
56
|
+
const cli = new pool_discovery_core_1.PoolDiscoveryCLI();
|
|
57
|
+
cli.suggestTokenConfig(policyId, assetNameHex, symbol);
|
|
58
|
+
}, 'pool-discovery custom');
|
|
59
|
+
}));
|
|
60
|
+
//# sourceMappingURL=pool-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool-discovery.js","sourceRoot":"","sources":["../../../src/cli/commands/pool-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ticker.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ticker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,aAAa,SAiCtB,CAAC"}
|