@3rd-eye-labs/openmm 0.1.0 → 0.1.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/README.md +6 -1
- package/dist/cli/commands/pool-discovery.d.ts.map +1 -1
- package/dist/cli/commands/pool-discovery.js +13 -4
- package/dist/cli/commands/pool-discovery.js.map +1 -1
- package/dist/cli/pool-discovery-core.d.ts +2 -1
- package/dist/cli/pool-discovery-core.d.ts.map +1 -1
- package/dist/cli/pool-discovery-core.js +66 -30
- package/dist/cli/pool-discovery-core.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
# OpenMM - Cardano's Universal Market Making Toolkit
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@3rd-eye-labs/openmm)
|
|
4
|
+
[](https://www.npmjs.com/package/@3rd-eye-labs/openmm)
|
|
5
|
+
[](https://github.com/3rd-Eye-Labs/OpenMM/blob/main/LICENSE)
|
|
6
|
+
[](https://deepwiki.com/3rd-Eye-Labs/OpenMM)
|
|
7
|
+
|
|
3
8
|
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
9
|
|
|
5
10
|
## What is OpenMM?
|
|
6
11
|
|
|
7
12
|
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
13
|
|
|
9
|
-
- **Multi-Exchange Support**:
|
|
14
|
+
- **Multi-Exchange Support**: 13 tools that work across 4 exchanges (MEXC, Gate.io, Bitget, Kraken) for any trading pair — one interface, unlimited assets
|
|
10
15
|
- **Advanced Strategies**: Grid trading, liquidity provision, and dynamic rebalancing
|
|
11
16
|
- **Complete CNT Integration**: Full support for Cardano Native Tokens
|
|
12
17
|
|
|
@@ -1 +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,
|
|
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,SAkE9B,CAAC"}
|
|
@@ -13,6 +13,7 @@ exports.poolDiscoveryCommand = new commander_1.Command('pool-discovery')
|
|
|
13
13
|
.option('--limit <number>', 'Limit number of pools shown', '10')
|
|
14
14
|
.option('--min-liquidity <number>', 'Filter pools by minimum TVL')
|
|
15
15
|
.option('--show-all', 'Show all pools (ignore limit)')
|
|
16
|
+
.option('--json', 'Output in JSON format')
|
|
16
17
|
.action(async (token, options) => {
|
|
17
18
|
await (0, error_handler_1.executeCommand)(async () => {
|
|
18
19
|
const cli = new pool_discovery_core_1.PoolDiscoveryCLI();
|
|
@@ -20,9 +21,15 @@ exports.poolDiscoveryCommand = new commander_1.Command('pool-discovery')
|
|
|
20
21
|
limit: parseInt(options.limit),
|
|
21
22
|
minLiquidity: options.minLiquidity ? parseInt(options.minLiquidity) : undefined,
|
|
22
23
|
showAll: options.showAll || false,
|
|
24
|
+
json: options.json || false,
|
|
23
25
|
};
|
|
24
26
|
const result = await cli.discoverTokenPools(token, discoverOptions);
|
|
25
|
-
|
|
27
|
+
if (options.json) {
|
|
28
|
+
console.log(JSON.stringify(result, null, 2));
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
cli.displayResults(result);
|
|
32
|
+
}
|
|
26
33
|
}, 'pool-discovery discover');
|
|
27
34
|
}))
|
|
28
35
|
.addCommand(new commander_1.Command('supported').description('List all supported tokens').action(async () => {
|
|
@@ -37,11 +44,13 @@ exports.poolDiscoveryCommand = new commander_1.Command('pool-discovery')
|
|
|
37
44
|
.addCommand(new commander_1.Command('prices')
|
|
38
45
|
.description('Get live prices for token pools')
|
|
39
46
|
.argument('<token>', 'Token symbol')
|
|
40
|
-
.
|
|
47
|
+
.option('--json', 'Output in JSON format')
|
|
48
|
+
.action(async (token, options) => {
|
|
41
49
|
await (0, error_handler_1.executeCommand)(async () => {
|
|
42
50
|
const cli = new pool_discovery_core_1.PoolDiscoveryCLI();
|
|
43
|
-
const
|
|
44
|
-
await cli.
|
|
51
|
+
const json = options.json || false;
|
|
52
|
+
const result = await cli.discoverTokenPools(token, { limit: 3, json });
|
|
53
|
+
await cli.getPoolPrices(result.recommendedIdentifiers, token, json);
|
|
45
54
|
}, 'pool-discovery prices');
|
|
46
55
|
}))
|
|
47
56
|
.addCommand(new commander_1.Command('custom')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool-discovery.js","sourceRoot":"","sources":["../../../src/cli/commands/pool-discovery.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,gEAA0D;AAC1D,0DAAwD;AACxD,sEAAoE;AAEvD,QAAA,oBAAoB,GAAG,IAAI,mBAAO,CAAC,gBAAgB,CAAC;KAC9D,WAAW,CAAC,oDAAoD,CAAC;KACjE,UAAU,CACT,IAAI,mBAAO,CAAC,UAAU,CAAC;KACpB,WAAW,CAAC,sCAAsC,CAAC;KACnD,QAAQ,CAAC,SAAS,EAAE,wCAAwC,CAAC;KAC7D,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,EAAE,IAAI,CAAC;KAC/D,MAAM,CAAC,0BAA0B,EAAE,6BAA6B,CAAC;KACjE,MAAM,CAAC,YAAY,EAAE,+BAA+B,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAC/B,MAAM,IAAA,8BAAc,EAAC,KAAK,IAAI,EAAE;QAC9B,MAAM,GAAG,GAAG,IAAI,sCAAgB,EAAE,CAAC;QACnC,MAAM,eAAe,GAAG;YACtB,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;YAC9B,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;YAC/E,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;
|
|
1
|
+
{"version":3,"file":"pool-discovery.js","sourceRoot":"","sources":["../../../src/cli/commands/pool-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,7 @@ export declare class PoolDiscoveryCLI {
|
|
|
33
33
|
limit?: number;
|
|
34
34
|
minLiquidity?: number;
|
|
35
35
|
showAll?: boolean;
|
|
36
|
+
json?: boolean;
|
|
36
37
|
}): Promise<DiscoveryResult>;
|
|
37
38
|
/**
|
|
38
39
|
* Display discovery results in a formatted table
|
|
@@ -41,7 +42,7 @@ export declare class PoolDiscoveryCLI {
|
|
|
41
42
|
/**
|
|
42
43
|
* Get live price information for discovered pools
|
|
43
44
|
*/
|
|
44
|
-
getPoolPrices(identifiers: string[], tokenSymbol: string): Promise<void>;
|
|
45
|
+
getPoolPrices(identifiers: string[], tokenSymbol: string, json?: boolean): Promise<void>;
|
|
45
46
|
/**
|
|
46
47
|
* Format currency with K/M suffixes
|
|
47
48
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool-discovery-core.d.ts","sourceRoot":"","sources":["../../src/cli/pool-discovery-core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,sBAAsB,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,YAAY,CAAsB;;IAQ1C;;OAEG;IACG,kBAAkB,CACtB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"pool-discovery-core.d.ts","sourceRoot":"","sources":["../../src/cli/pool-discovery-core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,sBAAsB,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,YAAY,CAAsB;;IAQ1C;;OAEG;IACG,kBAAkB,CACtB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,IAAI,CAAC,EAAE,OAAO,CAAC;KACX,GACL,OAAO,CAAC,eAAe,CAAC;IA6D3B;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IA2C7C;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA2E5F;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB;CAsB/F"}
|
|
@@ -24,11 +24,13 @@ class PoolDiscoveryCLI {
|
|
|
24
24
|
throw new Error(`Unsupported token: ${symbol}. Supported tokens: ${(0, price_aggregation_4.getSupportedTokens)().join(', ')}`);
|
|
25
25
|
}
|
|
26
26
|
const tokenConfig = (0, price_aggregation_4.getTokenConfig)(symbol);
|
|
27
|
-
const { limit = 10, minLiquidity, showAll = false } = options;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
const { limit = 10, minLiquidity, showAll = false, json = false } = options;
|
|
28
|
+
if (!json) {
|
|
29
|
+
console.log(`🔍 Discovering liquidity pools for ${symbol} token...`);
|
|
30
|
+
console.log(`Policy ID: ${tokenConfig.policyId}`);
|
|
31
|
+
console.log(`Asset Name (hex): ${tokenConfig.assetName}`);
|
|
32
|
+
console.log('─'.repeat(80));
|
|
33
|
+
}
|
|
32
34
|
try {
|
|
33
35
|
const pools = await this.poolDiscovery.discoverPools('lovelace', tokenConfig);
|
|
34
36
|
const filteredPools = minLiquidity
|
|
@@ -107,41 +109,75 @@ class PoolDiscoveryCLI {
|
|
|
107
109
|
/**
|
|
108
110
|
* Get live price information for discovered pools
|
|
109
111
|
*/
|
|
110
|
-
async getPoolPrices(identifiers, tokenSymbol) {
|
|
112
|
+
async getPoolPrices(identifiers, tokenSymbol, json = false) {
|
|
111
113
|
if (identifiers.length === 0) {
|
|
112
|
-
|
|
114
|
+
if (json) {
|
|
115
|
+
console.log(JSON.stringify({ error: 'No pool identifiers provided' }, null, 2));
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
console.log('❌ No pool identifiers provided');
|
|
119
|
+
}
|
|
113
120
|
return;
|
|
114
121
|
}
|
|
115
|
-
|
|
122
|
+
if (!json)
|
|
123
|
+
console.log('\n💰 Getting live prices from Iris API...');
|
|
116
124
|
try {
|
|
117
125
|
const prices = await this.irisClient.fetchPrices(identifiers, 'OpenMM-PoolDiscovery/1.0');
|
|
118
|
-
console.log('─'.repeat(60));
|
|
119
|
-
console.log('Pool ID | Price (ADA)');
|
|
120
|
-
console.log('─'.repeat(60));
|
|
121
|
-
identifiers.forEach((id, index) => {
|
|
122
|
-
const price = prices[index] || 0;
|
|
123
|
-
const shortId = id.substring(0, 33).padEnd(33);
|
|
124
|
-
console.log(`${shortId} | ${price.toFixed(8)}`);
|
|
125
|
-
});
|
|
126
126
|
const avgAdaPrice = prices.reduce((sum, p) => sum + p, 0) / prices.length;
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
127
|
+
if (json) {
|
|
128
|
+
const result = {
|
|
129
|
+
symbol: tokenSymbol,
|
|
130
|
+
pools: identifiers.map((id, i) => ({
|
|
131
|
+
identifier: id,
|
|
132
|
+
priceAda: prices[i] || 0,
|
|
133
|
+
})),
|
|
134
|
+
averagePriceAda: avgAdaPrice,
|
|
135
|
+
};
|
|
136
|
+
try {
|
|
137
|
+
const aggregatedPrice = await this.priceService.getTokenPrice(tokenSymbol);
|
|
138
|
+
result.priceUsdt = aggregatedPrice.price;
|
|
139
|
+
result.confidence = aggregatedPrice.confidence;
|
|
140
|
+
result.sources = aggregatedPrice.sources.map(s => s.name);
|
|
141
|
+
result.timestamp = aggregatedPrice.timestamp.toISOString();
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// USDT price unavailable — ADA price still included
|
|
145
|
+
}
|
|
146
|
+
console.log(JSON.stringify(result, null, 2));
|
|
137
147
|
}
|
|
138
|
-
|
|
139
|
-
console.log(
|
|
140
|
-
console.log(
|
|
148
|
+
else {
|
|
149
|
+
console.log('─'.repeat(60));
|
|
150
|
+
console.log('Pool ID | Price (ADA)');
|
|
151
|
+
console.log('─'.repeat(60));
|
|
152
|
+
identifiers.forEach((id, index) => {
|
|
153
|
+
const price = prices[index] || 0;
|
|
154
|
+
const shortId = id.substring(0, 33).padEnd(33);
|
|
155
|
+
console.log(`${shortId} | ${price.toFixed(8)}`);
|
|
156
|
+
});
|
|
157
|
+
console.log('─'.repeat(60));
|
|
158
|
+
console.log(`Average Price: ${avgAdaPrice.toFixed(8)} ADA per ${tokenSymbol}`);
|
|
159
|
+
try {
|
|
160
|
+
console.log('\n💵 Getting full market price...');
|
|
161
|
+
const aggregatedPrice = await this.priceService.getTokenPrice(tokenSymbol);
|
|
162
|
+
console.log('─'.repeat(60));
|
|
163
|
+
console.log(`${tokenSymbol}/USDT Price: $${aggregatedPrice.price.toFixed(8)}`);
|
|
164
|
+
console.log(`Confidence: ${(aggregatedPrice.confidence * 100).toFixed(1)}%`);
|
|
165
|
+
console.log(`Sources: ${aggregatedPrice.sources.map(s => s.name).join(', ')}`);
|
|
166
|
+
console.log(`Updated: ${aggregatedPrice.timestamp.toLocaleString()}`);
|
|
167
|
+
}
|
|
168
|
+
catch (usdtError) {
|
|
169
|
+
console.log(`❌ Failed to get USDT price: ${usdtError}`);
|
|
170
|
+
console.log(`✅ ADA price available: ${avgAdaPrice.toFixed(8)} ADA per ${tokenSymbol}`);
|
|
171
|
+
}
|
|
141
172
|
}
|
|
142
173
|
}
|
|
143
174
|
catch (error) {
|
|
144
|
-
|
|
175
|
+
if (json) {
|
|
176
|
+
console.log(JSON.stringify({ error: `Failed to fetch prices: ${error}` }, null, 2));
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
console.log(`❌ Failed to fetch prices: ${error}`);
|
|
180
|
+
}
|
|
145
181
|
}
|
|
146
182
|
}
|
|
147
183
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool-discovery-core.js","sourceRoot":"","sources":["../../src/cli/pool-discovery-core.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,iEAA8D;AAC9D,iEAA0D;AAC1D,iEAAgE;AAChE,mEAAmG;AAuBnG,MAAa,gBAAgB;IAK3B;QACE,IAAI,CAAC,aAAa,GAAG,IAAI,qCAAiB,EAAE,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,iCAAa,EAAE,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,IAAI,uCAAmB,EAAE,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,WAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"pool-discovery-core.js","sourceRoot":"","sources":["../../src/cli/pool-discovery-core.ts"],"names":[],"mappings":"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"}
|