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

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/README.md CHANGED
@@ -17,7 +17,40 @@ Traditional market-making services are expensive and fragmented, making it diffi
17
17
 
18
18
  This toolkit aims to improve liquidity for Cardano projects, reduce trading spreads, and potentially become the standard liquidity infrastructure for the Cardano ecosystem.
19
19
 
20
- ## Getting Started
20
+ ## Quick Start
21
+
22
+ ### CLI Tool
23
+
24
+ ```bash
25
+ # 1. Install & Setup OpenMM
26
+ npm install -g openmm
27
+ npx openmm setup
28
+ ```
29
+
30
+ The setup wizard will:
31
+ - Let you select exchanges (MEXC, Gate.io, Kraken, Bitget)
32
+ - Prompt for API credentials
33
+ - Create a `.env` file with your credentials
34
+
35
+ ### MCP Server — For AI Agents
36
+
37
+ ```bash
38
+ # 2. Install & Setup OpenMM MCP (13 tools)
39
+ npm install -g @qbtlabs/openmm-mcp
40
+ npx @qbtlabs/openmm-mcp setup
41
+ ```
42
+
43
+ Configures Claude Desktop, Claude Code, Cursor, or Windsurf to use OpenMM tools.
44
+
45
+ ### Verify Installation
46
+
47
+ ```bash
48
+ openmm balance --exchange mexc
49
+ ```
50
+
51
+ Or ask your AI agent: *"What is my balance on MEXC?"*
52
+
53
+ ## Getting Started (Development)
21
54
 
22
55
  ### Prerequisites
23
56
 
package/dist/cli/cli.js CHANGED
@@ -1,46 +1,61 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
3
  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 ohlcv_1 = require("./commands/ohlcv");
15
- const pool_discovery_1 = require("./commands/pool-discovery");
16
- const trade_1 = require("./commands/trade");
17
- const price_comparison_1 = require("./commands/price-comparison");
18
- const wallet_1 = require("./commands/wallet");
19
- const program = new commander_1.Command();
20
- program.name('openmm').description('OpenMM - Universal Market Making Toolkit').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(ohlcv_1.ohlcvCommand);
27
- program.addCommand(pool_discovery_1.poolDiscoveryCommand);
28
- program.addCommand(trade_1.tradeCommand);
29
- program.addCommand(price_comparison_1.priceComparisonCommand);
30
- program.addCommand(wallet_1.walletCommand);
31
- program.exitOverride(err => {
32
- if (err.code === 'commander.unknownCommand') {
33
- console.error(chalk_1.default.red(`Unknown command: ${err.message}`));
34
- console.log(chalk_1.default.yellow('Run "openmm --help" to see available commands'));
35
- process.exit(1);
36
- }
37
- if (err.code === 'commander.helpDisplayed') {
38
- process.exit(0);
4
+ // Handle setup command before importing modules that require credentials
5
+ if (process.argv[2] === 'setup') {
6
+ import('./commands/setup.js').then(({ setupCommand }) => {
7
+ const { Command } = require('commander');
8
+ const program = new Command();
9
+ program.name('openmm').description('OpenMM - Universal Market Making Toolkit').version('1.0.0');
10
+ program.addCommand(setupCommand);
11
+ program.parse(process.argv);
12
+ });
13
+ }
14
+ else {
15
+ // Normal CLI with all commands
16
+ runCli();
17
+ }
18
+ async function runCli() {
19
+ const { Command } = await import('commander');
20
+ const chalk = (await import('chalk')).default;
21
+ const { balanceCommand } = await import('./commands/balance.js');
22
+ const { ordersCommand } = await import('./commands/orders.js');
23
+ const { tickerCommand } = await import('./commands/ticker.js');
24
+ const { orderbookCommand } = await import('./commands/orderbook.js');
25
+ const { tradesCommand } = await import('./commands/trades.js');
26
+ const { ohlcvCommand } = await import('./commands/ohlcv.js');
27
+ const { poolDiscoveryCommand } = await import('./commands/pool-discovery.js');
28
+ const { tradeCommand } = await import('./commands/trade.js');
29
+ const { priceComparisonCommand } = await import('./commands/price-comparison.js');
30
+ const { walletCommand } = await import('./commands/wallet.js');
31
+ const { setupCommand } = await import('./commands/setup.js');
32
+ const program = new Command();
33
+ program.name('openmm').description('OpenMM - Universal Market Making Toolkit').version('1.0.0');
34
+ program.addCommand(setupCommand);
35
+ program.addCommand(balanceCommand);
36
+ program.addCommand(ordersCommand);
37
+ program.addCommand(tickerCommand);
38
+ program.addCommand(orderbookCommand);
39
+ program.addCommand(tradesCommand);
40
+ program.addCommand(ohlcvCommand);
41
+ program.addCommand(poolDiscoveryCommand);
42
+ program.addCommand(tradeCommand);
43
+ program.addCommand(priceComparisonCommand);
44
+ program.addCommand(walletCommand);
45
+ program.exitOverride(err => {
46
+ if (err.code === 'commander.unknownCommand') {
47
+ console.error(chalk.red(`Unknown command: ${err.message}`));
48
+ console.log(chalk.yellow('Run "openmm --help" to see available commands'));
49
+ process.exit(1);
50
+ }
51
+ if (err.code === 'commander.helpDisplayed') {
52
+ process.exit(0);
53
+ }
54
+ throw err;
55
+ });
56
+ program.parse(process.argv);
57
+ if (process.argv.length === 2) {
58
+ program.help();
39
59
  }
40
- throw err;
41
- });
42
- program.parse(process.argv);
43
- if (process.argv.length === 2) {
44
- program.help();
45
60
  }
46
61
  //# sourceMappingURL=cli.js.map
@@ -1 +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,4CAAgD;AAChD,8DAAiE;AACjE,4CAAgD;AAChD,kEAAqE;AACrE,8CAAkD;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhG,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,oBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,qCAAoB,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,yCAAsB,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAElC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;IACzB,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"}
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 setupCommand: Command;
3
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmPpC,eAAO,MAAM,YAAY,SAIrB,CAAC"}
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.setupCommand = void 0;
40
+ const commander_1 = require("commander");
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const readline = __importStar(require("readline"));
44
+ const chalk_1 = __importDefault(require("chalk"));
45
+ const EXCHANGES = [
46
+ {
47
+ id: 'mexc',
48
+ name: 'MEXC',
49
+ fields: [
50
+ { key: 'MEXC_API_KEY', label: 'API Key' },
51
+ { key: 'MEXC_SECRET', label: 'Secret Key' },
52
+ ],
53
+ docsUrl: 'https://www.mexc.com/api',
54
+ },
55
+ {
56
+ id: 'gateio',
57
+ name: 'Gate.io',
58
+ fields: [
59
+ { key: 'GATEIO_API_KEY', label: 'API Key' },
60
+ { key: 'GATEIO_SECRET', label: 'Secret Key' },
61
+ ],
62
+ docsUrl: 'https://www.gate.io/myaccount/api_key_manage',
63
+ },
64
+ {
65
+ id: 'kraken',
66
+ name: 'Kraken',
67
+ fields: [
68
+ { key: 'KRAKEN_API_KEY', label: 'API Key' },
69
+ { key: 'KRAKEN_SECRET', label: 'Private Key' },
70
+ ],
71
+ docsUrl: 'https://www.kraken.com/u/security/api',
72
+ },
73
+ {
74
+ id: 'bitget',
75
+ name: 'Bitget',
76
+ fields: [
77
+ { key: 'BITGET_API_KEY', label: 'API Key' },
78
+ { key: 'BITGET_SECRET', label: 'Secret Key' },
79
+ { key: 'BITGET_PASSPHRASE', label: 'Passphrase' },
80
+ ],
81
+ docsUrl: 'https://www.bitget.com/account/newapi',
82
+ },
83
+ ];
84
+ const BANNER = `
85
+ ${chalk_1.default.cyan('╔═══════════════════════════════════════════════════════════════╗')}
86
+ ${chalk_1.default.cyan('║')} ${chalk_1.default.cyan('║')}
87
+ ${chalk_1.default.cyan('║')} ${chalk_1.default.bold.white('██████╗ ██████╗ ███████╗███╗ ██╗███╗ ███╗███╗ ███╗')} ${chalk_1.default.cyan('║')}
88
+ ${chalk_1.default.cyan('║')} ${chalk_1.default.bold.white('██╔═══██╗██╔══██╗██╔════╝████╗ ██║████╗ ████║████╗ ████║')} ${chalk_1.default.cyan('║')}
89
+ ${chalk_1.default.cyan('║')} ${chalk_1.default.bold.white('██║ ██║██████╔╝█████╗ ██╔██╗ ██║██╔████╔██║██╔████╔██║')} ${chalk_1.default.cyan('║')}
90
+ ${chalk_1.default.cyan('║')} ${chalk_1.default.bold.white('██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║██║╚██╔╝██║██║╚██╔╝██║')} ${chalk_1.default.cyan('║')}
91
+ ${chalk_1.default.cyan('║')} ${chalk_1.default.bold.white('╚██████╔╝██║ ███████╗██║ ╚████║██║ ╚═╝ ██║██║ ╚═╝ ██║')} ${chalk_1.default.cyan('║')}
92
+ ${chalk_1.default.cyan('║')} ${chalk_1.default.bold.white('╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ ╚═╝')} ${chalk_1.default.cyan('║')}
93
+ ${chalk_1.default.cyan('║')} ${chalk_1.default.cyan('║')}
94
+ ${chalk_1.default.cyan('║')} ${chalk_1.default.gray('AI-Native Market Making Infrastructure')} ${chalk_1.default.cyan('║')}
95
+ ${chalk_1.default.cyan('║')} ${chalk_1.default.gray('Configure your exchange API credentials')} ${chalk_1.default.cyan('║')}
96
+ ${chalk_1.default.cyan('║')} ${chalk_1.default.cyan('║')}
97
+ ${chalk_1.default.cyan('╚═══════════════════════════════════════════════════════════════╝')}
98
+ `;
99
+ function createReadlineInterface() {
100
+ return readline.createInterface({
101
+ input: process.stdin,
102
+ output: process.stdout,
103
+ });
104
+ }
105
+ function question(rl, prompt) {
106
+ return new Promise(resolve => {
107
+ rl.question(prompt, answer => {
108
+ resolve(answer.trim());
109
+ });
110
+ });
111
+ }
112
+ function selectMultiple(rl, prompt, options) {
113
+ return new Promise(resolve => {
114
+ console.log(`\n${chalk_1.default.bold(prompt)}`);
115
+ options.forEach((opt, i) => console.log(` ${chalk_1.default.cyan(i + 1)}. ${opt.name}`));
116
+ console.log(`\n ${chalk_1.default.gray('Enter numbers separated by commas (e.g., 1,2,3)')}`);
117
+ console.log(` ${chalk_1.default.gray('Or press Enter for all exchanges')}`);
118
+ rl.question(`\n${chalk_1.default.yellow('Your selection:')} `, answer => {
119
+ if (!answer.trim()) {
120
+ resolve(options.map(o => o.id));
121
+ return;
122
+ }
123
+ const indices = answer
124
+ .split(',')
125
+ .map(s => parseInt(s.trim()) - 1)
126
+ .filter(i => i >= 0 && i < options.length);
127
+ if (indices.length === 0) {
128
+ resolve(options.map(o => o.id));
129
+ }
130
+ else {
131
+ resolve(indices.map(i => options[i].id));
132
+ }
133
+ });
134
+ });
135
+ }
136
+ function readEnvFile(envPath) {
137
+ const env = {};
138
+ try {
139
+ if (fs.existsSync(envPath)) {
140
+ const content = fs.readFileSync(envPath, 'utf-8');
141
+ content.split('\n').forEach(line => {
142
+ const trimmed = line.trim();
143
+ if (trimmed && !trimmed.startsWith('#')) {
144
+ const [key, ...valueParts] = trimmed.split('=');
145
+ if (key) {
146
+ env[key.trim()] = valueParts.join('=').trim();
147
+ }
148
+ }
149
+ });
150
+ }
151
+ }
152
+ catch {
153
+ // File doesn't exist or is unreadable
154
+ }
155
+ return env;
156
+ }
157
+ function writeEnvFile(envPath, env) {
158
+ const lines = [
159
+ '# OpenMM Exchange Credentials',
160
+ '# Generated by OpenMM Setup Wizard',
161
+ '',
162
+ ];
163
+ // Group by exchange
164
+ const exchangeKeys = {
165
+ MEXC: ['MEXC_API_KEY', 'MEXC_SECRET', 'MEXC_UID'],
166
+ GATEIO: ['GATEIO_API_KEY', 'GATEIO_SECRET'],
167
+ KRAKEN: ['KRAKEN_API_KEY', 'KRAKEN_SECRET'],
168
+ BITGET: ['BITGET_API_KEY', 'BITGET_SECRET', 'BITGET_PASSPHRASE'],
169
+ };
170
+ const usedKeys = new Set();
171
+ for (const [exchange, keys] of Object.entries(exchangeKeys)) {
172
+ const hasAny = keys.some(k => env[k]);
173
+ if (hasAny) {
174
+ lines.push(`# ${exchange}`);
175
+ for (const key of keys) {
176
+ if (env[key]) {
177
+ lines.push(`${key}=${env[key]}`);
178
+ usedKeys.add(key);
179
+ }
180
+ }
181
+ lines.push('');
182
+ }
183
+ }
184
+ // Add any remaining keys
185
+ for (const [key, value] of Object.entries(env)) {
186
+ if (!usedKeys.has(key) && value) {
187
+ lines.push(`${key}=${value}`);
188
+ }
189
+ }
190
+ fs.writeFileSync(envPath, lines.join('\n'));
191
+ }
192
+ async function runSetup() {
193
+ console.log(BANNER);
194
+ const rl = createReadlineInterface();
195
+ const envPath = path.join(process.cwd(), '.env');
196
+ try {
197
+ // Read existing .env
198
+ const existingEnv = readEnvFile(envPath);
199
+ // Select exchanges
200
+ const exchangeOptions = EXCHANGES.map(e => ({ id: e.id, name: e.name }));
201
+ const selectedExchangeIds = await selectMultiple(rl, 'Which exchanges do you want to configure?', exchangeOptions);
202
+ const selectedExchanges = EXCHANGES.filter(e => selectedExchangeIds.includes(e.id));
203
+ if (selectedExchanges.length === 0) {
204
+ console.log(chalk_1.default.yellow('\n⚠️ No exchanges selected. Exiting.'));
205
+ process.exit(0);
206
+ }
207
+ // Collect credentials
208
+ const newEnv = {};
209
+ for (const exchange of selectedExchanges) {
210
+ console.log(`\n${chalk_1.default.cyan('🔐')} ${chalk_1.default.bold(exchange.name)} credentials`);
211
+ console.log(` ${chalk_1.default.gray(`Get your API key at: ${exchange.docsUrl}`)}`);
212
+ for (const field of exchange.fields) {
213
+ const existingValue = existingEnv[field.key];
214
+ const hint = existingValue ? chalk_1.default.gray(` (current: ${existingValue.slice(0, 8)}...)`) : '';
215
+ const value = await question(rl, ` ${field.label}${hint}: `);
216
+ if (value) {
217
+ newEnv[field.key] = value;
218
+ }
219
+ else if (existingValue) {
220
+ newEnv[field.key] = existingValue;
221
+ }
222
+ }
223
+ }
224
+ // Merge with existing env
225
+ const mergedEnv = { ...existingEnv, ...newEnv };
226
+ // Write .env file
227
+ writeEnvFile(envPath, mergedEnv);
228
+ console.log(`\n${chalk_1.default.green('✅')} Credentials saved to ${chalk_1.default.cyan('.env')}`);
229
+ // Show configured exchanges
230
+ const configuredExchanges = [];
231
+ if (mergedEnv.MEXC_API_KEY)
232
+ configuredExchanges.push('MEXC');
233
+ if (mergedEnv.GATEIO_API_KEY)
234
+ configuredExchanges.push('Gate.io');
235
+ if (mergedEnv.KRAKEN_API_KEY)
236
+ configuredExchanges.push('Kraken');
237
+ if (mergedEnv.BITGET_API_KEY)
238
+ configuredExchanges.push('Bitget');
239
+ if (configuredExchanges.length > 0) {
240
+ console.log(`\n${chalk_1.default.cyan('📊')} Configured exchanges: ${chalk_1.default.bold(configuredExchanges.join(', '))}`);
241
+ }
242
+ console.log(`\n${chalk_1.default.yellow('💡')} Try running: ${chalk_1.default.cyan('openmm balance --exchange mexc')}\n`);
243
+ }
244
+ finally {
245
+ rl.close();
246
+ }
247
+ }
248
+ exports.setupCommand = new commander_1.Command('setup')
249
+ .description('Interactive setup wizard for exchange API credentials')
250
+ .action(async () => {
251
+ await runSetup();
252
+ });
253
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,uCAAyB;AACzB,2CAA6B;AAC7B,mDAAqC;AACrC,kDAA0B;AAS1B,MAAM,SAAS,GAAe;IAC5B;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE;YACN,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE;YACzC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE;SAC5C;QACD,OAAO,EAAE,0BAA0B;KACpC;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,SAAS;QACf,MAAM,EAAE;YACN,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE;YAC3C,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE;SAC9C;QACD,OAAO,EAAE,8CAA8C;KACxD;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE;YACN,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE;YAC3C,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE;SAC/C;QACD,OAAO,EAAE,uCAAuC;KACjD;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE;YACN,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE;YAC3C,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE;YAC7C,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,YAAY,EAAE;SAClD;QACD,OAAO,EAAE,uCAAuC;KACjD;CACF,CAAC;AAEF,MAAM,MAAM,GAAG;EACb,eAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC;EAC/E,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,kEAAkE,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC;EAChG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,0DAA0D,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC;EACvH,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,2DAA2D,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC;EACvH,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,2DAA2D,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC;EACvH,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,2DAA2D,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC;EACvH,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,2DAA2D,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC;EACvH,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,0DAA0D,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC;EACvH,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,kEAAkE,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC;EAChG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,yBAAyB,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC;EACjH,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,wBAAwB,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC;EACjH,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,kEAAkE,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC;EAChG,eAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC;CAChF,CAAC;AAEF,SAAS,uBAAuB;IAC9B,OAAO,QAAQ,CAAC,eAAe,CAAC;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,EAAsB,EAAE,MAAc;IACtD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;YAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CACrB,EAAsB,EACtB,MAAc,EACd,OAAuC;IAEvC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;QACnE,EAAE,CAAC,QAAQ,CAAC,KAAK,eAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;YAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAG,MAAM;iBACnB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;iBAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxC,MAAM,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,GAAG,EAAE,CAAC;wBACR,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,GAA2B;IAChE,MAAM,KAAK,GAAa;QACtB,+BAA+B;QAC/B,oCAAoC;QACpC,EAAE;KACH,CAAC;IAEF,oBAAoB;IACpB,MAAM,YAAY,GAA6B;QAC7C,IAAI,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,UAAU,CAAC;QACjD,MAAM,EAAE,CAAC,gBAAgB,EAAE,eAAe,CAAC;QAC3C,MAAM,EAAE,CAAC,gBAAgB,EAAE,eAAe,CAAC;QAC3C,MAAM,EAAE,CAAC,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,CAAC;KACjE,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;YAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACb,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACjC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,QAAQ;IACrB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEpB,MAAM,EAAE,GAAG,uBAAuB,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,qBAAqB;QACrB,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAEzC,mBAAmB;QACnB,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,mBAAmB,GAAG,MAAM,cAAc,CAC9C,EAAE,EACF,2CAA2C,EAC3C,eAAe,CAChB,CAAC;QAEF,MAAM,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,sBAAsB;QACtB,MAAM,MAAM,GAA2B,EAAE,CAAC;QAE1C,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,wBAAwB,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;YAE5E,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpC,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7C,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5F,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC;gBAC/D,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC5B,CAAC;qBAAM,IAAI,aAAa,EAAE,CAAC;oBACzB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,GAAG,EAAE,GAAG,WAAW,EAAE,GAAG,MAAM,EAAE,CAAC;QAEhD,kBAAkB;QAClB,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAEjC,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEhF,4BAA4B;QAC5B,MAAM,mBAAmB,GAAa,EAAE,CAAC;QACzC,IAAI,SAAS,CAAC,YAAY;YAAE,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,SAAS,CAAC,cAAc;YAAE,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClE,IAAI,SAAS,CAAC,cAAc;YAAE,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAI,SAAS,CAAC,cAAc;YAAE,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjE,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,eAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3G,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC;IACxG,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAEY,QAAA,YAAY,GAAG,IAAI,mBAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,QAAQ,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3rd-eye-labs/openmm",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Universal Market Making Toolkit",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",