@3rd-eye-labs/openmm 0.1.1 → 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 +34 -1
- package/dist/cli/cli.js +55 -36
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/commands/ohlcv.d.ts +3 -0
- package/dist/cli/commands/ohlcv.d.ts.map +1 -0
- package/dist/cli/commands/ohlcv.js +115 -0
- package/dist/cli/commands/ohlcv.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +3 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +253 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/wallet.d.ts +7 -0
- package/dist/cli/commands/wallet.d.ts.map +1 -0
- package/dist/cli/commands/wallet.js +271 -0
- package/dist/cli/commands/wallet.js.map +1 -0
- package/dist/core/exchange/base-exchange-connector.d.ts +2 -1
- package/dist/core/exchange/base-exchange-connector.d.ts.map +1 -1
- package/dist/core/exchange/base-exchange-connector.js.map +1 -1
- package/dist/exchanges/bitget/bitget-connector.d.ts +11 -1
- package/dist/exchanges/bitget/bitget-connector.d.ts.map +1 -1
- package/dist/exchanges/bitget/bitget-connector.js +52 -0
- package/dist/exchanges/bitget/bitget-connector.js.map +1 -1
- package/dist/exchanges/gateio/gateio-connector.d.ts +11 -1
- package/dist/exchanges/gateio/gateio-connector.d.ts.map +1 -1
- package/dist/exchanges/gateio/gateio-connector.js +54 -0
- package/dist/exchanges/gateio/gateio-connector.js.map +1 -1
- package/dist/exchanges/kraken/kraken-connector.d.ts +6 -1
- package/dist/exchanges/kraken/kraken-connector.d.ts.map +1 -1
- package/dist/exchanges/kraken/kraken-connector.js +44 -0
- package/dist/exchanges/kraken/kraken-connector.js.map +1 -1
- package/dist/exchanges/mexc/mexc-auth.d.ts +1 -0
- package/dist/exchanges/mexc/mexc-auth.d.ts.map +1 -1
- package/dist/exchanges/mexc/mexc-auth.js +4 -1
- package/dist/exchanges/mexc/mexc-auth.js.map +1 -1
- package/dist/exchanges/mexc/mexc-connector.d.ts +6 -1
- package/dist/exchanges/mexc/mexc-connector.d.ts.map +1 -1
- package/dist/exchanges/mexc/mexc-connector.js +37 -0
- package/dist/exchanges/mexc/mexc-connector.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -1
- package/dist/index.js.map +1 -1
- package/dist/types/market.d.ts +15 -0
- package/dist/types/market.d.ts.map +1 -1
- package/dist/x402/crypto.d.ts +79 -0
- package/dist/x402/crypto.d.ts.map +1 -0
- package/dist/x402/crypto.js +300 -0
- package/dist/x402/crypto.js.map +1 -0
- package/dist/x402/evm.d.ts +41 -0
- package/dist/x402/evm.d.ts.map +1 -0
- package/dist/x402/evm.js +229 -0
- package/dist/x402/evm.js.map +1 -0
- package/dist/x402/handler.d.ts +53 -0
- package/dist/x402/handler.d.ts.map +1 -0
- package/dist/x402/handler.js +233 -0
- package/dist/x402/handler.js.map +1 -0
- package/dist/x402/index.d.ts +29 -0
- package/dist/x402/index.d.ts.map +1 -0
- package/dist/x402/index.js +67 -0
- package/dist/x402/index.js.map +1 -0
- package/dist/x402/types.d.ts +185 -0
- package/dist/x402/types.d.ts.map +1 -0
- package/dist/x402/types.js +7 -0
- package/dist/x402/types.js.map +1 -0
- package/dist/x402/wallet.d.ts +65 -0
- package/dist/x402/wallet.d.ts.map +1 -0
- package/dist/x402/wallet.js +282 -0
- package/dist/x402/wallet.js.map +1 -0
- package/package.json +1 -1
- package/dist/cli/commands/grid.d.ts +0 -3
- package/dist/cli/commands/grid.d.ts.map +0 -1
- package/dist/cli/commands/grid.js +0 -103
- package/dist/cli/commands/grid.js.map +0 -1
- package/dist/cli/commands/multi-trade.d.ts +0 -3
- package/dist/cli/commands/multi-trade.d.ts.map +0 -1
- package/dist/cli/commands/multi-trade.js +0 -175
- package/dist/cli/commands/multi-trade.js.map +0 -1
- package/dist/cli/pool-discovery.d.ts +0 -56
- package/dist/cli/pool-discovery.d.ts.map +0 -1
- package/dist/cli/pool-discovery.js +0 -283
- package/dist/cli/pool-discovery.js.map +0 -1
- package/dist/core/price-aggregation/price-cache.d.ts +0 -55
- package/dist/core/price-aggregation/price-cache.d.ts.map +0 -1
- package/dist/core/price-aggregation/price-cache.js +0 -152
- package/dist/core/price-aggregation/price-cache.js.map +0 -1
- package/dist/examples/mexc-connector-comprehensive-test.d.ts +0 -15
- package/dist/examples/mexc-connector-comprehensive-test.d.ts.map +0 -1
- package/dist/examples/mexc-connector-comprehensive-test.js +0 -514
- package/dist/examples/mexc-connector-comprehensive-test.js.map +0 -1
- package/dist/examples/mexc-order-update-test.d.ts +0 -4
- package/dist/examples/mexc-order-update-test.d.ts.map +0 -1
- package/dist/examples/mexc-order-update-test.js +0 -186
- package/dist/examples/mexc-order-update-test.js.map +0 -1
- package/dist/examples/mexc-test.d.ts +0 -9
- package/dist/examples/mexc-test.d.ts.map +0 -1
- package/dist/examples/mexc-test.js +0 -218
- package/dist/examples/mexc-test.js.map +0 -1
- package/dist/examples/mexc-trades-debug.d.ts +0 -2
- package/dist/examples/mexc-trades-debug.d.ts.map +0 -1
- package/dist/examples/mexc-trades-debug.js +0 -101
- package/dist/examples/mexc-trades-debug.js.map +0 -1
- package/dist/examples/mexc-trades-subscription-debug.d.ts +0 -2
- package/dist/examples/mexc-trades-subscription-debug.d.ts.map +0 -1
- package/dist/examples/mexc-trades-subscription-debug.js +0 -150
- package/dist/examples/mexc-trades-subscription-debug.js.map +0 -1
- package/dist/examples/mexc-websocket-test.d.ts +0 -8
- package/dist/examples/mexc-websocket-test.d.ts.map +0 -1
- package/dist/examples/mexc-websocket-test.js +0 -115
- package/dist/examples/mexc-websocket-test.js.map +0 -1
- package/dist/examples/test-protobuf-status-detection.d.ts +0 -9
- package/dist/examples/test-protobuf-status-detection.d.ts.map +0 -1
- package/dist/examples/test-protobuf-status-detection.js +0 -83
- package/dist/examples/test-protobuf-status-detection.js.map +0 -1
- package/dist/exchanges/base-exchange-connector.d.ts +0 -33
- package/dist/exchanges/base-exchange-connector.d.ts.map +0 -1
- package/dist/exchanges/base-exchange-connector.js +0 -55
- package/dist/exchanges/base-exchange-connector.js.map +0 -1
- package/dist/exchanges/kraken/test-kraken-websocket.d.ts +0 -19
- package/dist/exchanges/kraken/test-kraken-websocket.d.ts.map +0 -1
- package/dist/exchanges/kraken/test-kraken-websocket.js +0 -413
- package/dist/exchanges/kraken/test-kraken-websocket.js.map +0 -1
- package/dist/mcp/resources/index.d.ts +0 -3
- package/dist/mcp/resources/index.d.ts.map +0 -1
- package/dist/mcp/resources/index.js +0 -11
- package/dist/mcp/resources/index.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -4
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -29
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/tools/index.d.ts +0 -3
- package/dist/mcp/tools/index.d.ts.map +0 -1
- package/dist/mcp/tools/index.js +0 -12
- package/dist/mcp/tools/index.js.map +0 -1
- package/dist/tests/fixtures/test-helpers.d.ts +0 -5
- package/dist/tests/fixtures/test-helpers.d.ts.map +0 -1
- package/dist/tests/fixtures/test-helpers.js +0 -8
- package/dist/tests/fixtures/test-helpers.js.map +0 -1
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts +0 -2
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts.map +0 -1
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js +0 -237
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js.map +0 -1
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts +0 -2
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts.map +0 -1
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.js +0 -57
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.js.map +0 -1
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts +0 -2
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts.map +0 -1
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js +0 -141
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js.map +0 -1
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts +0 -2
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts.map +0 -1
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js +0 -375
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js.map +0 -1
- package/dist/tests/unit/cli/exchange-factory.test.d.ts +0 -2
- package/dist/tests/unit/cli/exchange-factory.test.d.ts.map +0 -1
- package/dist/tests/unit/cli/exchange-factory.test.js +0 -148
- package/dist/tests/unit/cli/exchange-factory.test.js.map +0 -1
- package/dist/tests/unit/config/environment.test.d.ts +0 -2
- package/dist/tests/unit/config/environment.test.d.ts.map +0 -1
- package/dist/tests/unit/config/environment.test.js +0 -158
- package/dist/tests/unit/config/environment.test.js.map +0 -1
- package/dist/tests/unit/config/launcher-config.test.d.ts +0 -2
- package/dist/tests/unit/config/launcher-config.test.d.ts.map +0 -1
- package/dist/tests/unit/config/launcher-config.test.js +0 -117
- package/dist/tests/unit/config/launcher-config.test.js.map +0 -1
- package/dist/tests/unit/config/price-aggregation.test.d.ts +0 -2
- package/dist/tests/unit/config/price-aggregation.test.d.ts.map +0 -1
- package/dist/tests/unit/config/price-aggregation.test.js +0 -144
- package/dist/tests/unit/config/price-aggregation.test.js.map +0 -1
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts +0 -2
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts.map +0 -1
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.js +0 -191
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.js.map +0 -1
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts +0 -2
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts.map +0 -1
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js +0 -324
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js.map +0 -1
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts +0 -2
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts.map +0 -1
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js +0 -177
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js.map +0 -1
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts +0 -2
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts.map +0 -1
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js +0 -168
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js.map +0 -1
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts +0 -2
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts.map +0 -1
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js +0 -217
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js.map +0 -1
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts +0 -2
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts.map +0 -1
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.js +0 -229
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.js.map +0 -1
- package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts +0 -2
- package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts.map +0 -1
- package/dist/tests/unit/core/risk-management/risk-manager.test.js +0 -194
- package/dist/tests/unit/core/risk-management/risk-manager.test.js.map +0 -1
- package/dist/tests/unit/core/strategy/base-strategy.test.d.ts +0 -2
- package/dist/tests/unit/core/strategy/base-strategy.test.d.ts.map +0 -1
- package/dist/tests/unit/core/strategy/base-strategy.test.js +0 -254
- package/dist/tests/unit/core/strategy/base-strategy.test.js.map +0 -1
- package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts +0 -2
- package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts.map +0 -1
- package/dist/tests/unit/core/strategy/strategy-factory.test.js +0 -213
- package/dist/tests/unit/core/strategy/strategy-factory.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js +0 -452
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js +0 -1419
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js +0 -435
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js +0 -314
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js +0 -178
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js +0 -502
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js +0 -317
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js +0 -843
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts +0 -2
- package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-calculator.test.js +0 -67
- package/dist/tests/unit/strategies/grid/grid-calculator.test.js.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts +0 -2
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.js +0 -211
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.js.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts +0 -2
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js +0 -197
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts +0 -2
- package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-strategy.test.js +0 -429
- package/dist/tests/unit/strategies/grid/grid-strategy.test.js.map +0 -1
- package/dist/tests/unit/utils/logger.test.d.ts +0 -2
- package/dist/tests/unit/utils/logger.test.d.ts.map +0 -1
- package/dist/tests/unit/utils/logger.test.js +0 -260
- package/dist/tests/unit/utils/logger.test.js.map +0 -1
- package/dist/tests/unit/utils/symbol-utils.test.d.ts +0 -2
- package/dist/tests/unit/utils/symbol-utils.test.d.ts.map +0 -1
- package/dist/tests/unit/utils/symbol-utils.test.js +0 -178
- package/dist/tests/unit/utils/symbol-utils.test.js.map +0 -1
- package/dist/types/price-aggregation.d.ts +0 -31
- package/dist/types/price-aggregation.d.ts.map +0 -1
- package/dist/types/price-aggregation.js +0 -6
- package/dist/types/price-aggregation.js.map +0 -1
- package/dist/utils/crypto.d.ts +0 -15
- package/dist/utils/crypto.d.ts.map +0 -1
- package/dist/utils/crypto.js +0 -50
- package/dist/utils/crypto.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -36
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -174
- package/dist/utils/validation.js.map +0 -1
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Pool Discovery CLI
|
|
4
|
-
* Command-line tool to discover Cardano liquidity pool identifiers and metrics
|
|
5
|
-
* for any native token to be used in Market Making strategies
|
|
6
|
-
*/
|
|
7
|
-
import { CardanoTokenConfig } from '../types/price';
|
|
8
|
-
interface PoolInfo {
|
|
9
|
-
identifier: string;
|
|
10
|
-
dex: string;
|
|
11
|
-
tvl: number;
|
|
12
|
-
reserveA: number;
|
|
13
|
-
reserveB: number;
|
|
14
|
-
address: string;
|
|
15
|
-
isActive: boolean;
|
|
16
|
-
}
|
|
17
|
-
interface DiscoveryResult {
|
|
18
|
-
token: string;
|
|
19
|
-
policyId: string;
|
|
20
|
-
assetName: string;
|
|
21
|
-
totalPools: number;
|
|
22
|
-
totalLiquidity: number;
|
|
23
|
-
pools: PoolInfo[];
|
|
24
|
-
recommendedIdentifiers: string[];
|
|
25
|
-
}
|
|
26
|
-
declare class PoolDiscoveryCLI {
|
|
27
|
-
private poolDiscovery;
|
|
28
|
-
private irisClient;
|
|
29
|
-
constructor();
|
|
30
|
-
/**
|
|
31
|
-
* Main discovery function for any Cardano native token
|
|
32
|
-
*/
|
|
33
|
-
discoverTokenPools(tokenSymbol: string, options?: {
|
|
34
|
-
limit?: number;
|
|
35
|
-
minLiquidity?: number;
|
|
36
|
-
showAll?: boolean;
|
|
37
|
-
}): Promise<DiscoveryResult>;
|
|
38
|
-
/**
|
|
39
|
-
* Display discovery results in a formatted table
|
|
40
|
-
*/
|
|
41
|
-
displayResults(result: DiscoveryResult): void;
|
|
42
|
-
/**
|
|
43
|
-
* Get live price information for discovered pools
|
|
44
|
-
*/
|
|
45
|
-
getPoolPrices(identifiers: string[]): Promise<void>;
|
|
46
|
-
/**
|
|
47
|
-
* Format currency with K/M suffixes
|
|
48
|
-
*/
|
|
49
|
-
private formatCurrency;
|
|
50
|
-
/**
|
|
51
|
-
* Add a new token configuration (for advanced users)
|
|
52
|
-
*/
|
|
53
|
-
suggestTokenConfig(policyId: string, assetNameHex: string, symbol: string): CardanoTokenConfig;
|
|
54
|
-
}
|
|
55
|
-
export { PoolDiscoveryCLI, DiscoveryResult, PoolInfo };
|
|
56
|
-
//# sourceMappingURL=pool-discovery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pool-discovery.d.ts","sourceRoot":"","sources":["../../src/cli/pool-discovery.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAKH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,UAAU,QAAQ;IAChB,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,UAAU,eAAe;IACvB,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,cAAM,gBAAgB;IACpB,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,UAAU,CAAgB;;IAOlC;;OAEG;IACG,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE;QACrD,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;KACd,GAAG,OAAO,CAAC,eAAe,CAAC;IAgEjC;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAkD7C;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BzD;;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;AAiHD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -1,283 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
/**
|
|
4
|
-
* Pool Discovery CLI
|
|
5
|
-
* Command-line tool to discover Cardano liquidity pool identifiers and metrics
|
|
6
|
-
* for any native token to be used in Market Making strategies
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.PoolDiscoveryCLI = void 0;
|
|
10
|
-
const iris_pool_discovery_1 = require("../core/price-aggregation/iris-pool-discovery");
|
|
11
|
-
const iris_api_client_1 = require("../core/price-aggregation/iris-api-client");
|
|
12
|
-
const price_aggregation_1 = require("../config/price-aggregation");
|
|
13
|
-
class PoolDiscoveryCLI {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.poolDiscovery = new iris_pool_discovery_1.IrisPoolDiscovery();
|
|
16
|
-
this.irisClient = new iris_api_client_1.IrisApiClient();
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Main discovery function for any Cardano native token
|
|
20
|
-
*/
|
|
21
|
-
async discoverTokenPools(tokenSymbol, options = {}) {
|
|
22
|
-
const symbol = tokenSymbol.toUpperCase();
|
|
23
|
-
if (!(0, price_aggregation_1.isTokenSupported)(symbol)) {
|
|
24
|
-
throw new Error(`Unsupported token: ${symbol}. Supported tokens: ${(0, price_aggregation_1.getSupportedTokens)().join(', ')}`);
|
|
25
|
-
}
|
|
26
|
-
const tokenConfig = (0, price_aggregation_1.getTokenConfig)(symbol);
|
|
27
|
-
const { limit = 10, minLiquidity, showAll = false } = options;
|
|
28
|
-
console.log(`🔍 Discovering liquidity pools for ${symbol} token...`);
|
|
29
|
-
console.log(`Policy ID: ${tokenConfig.policyId}`);
|
|
30
|
-
console.log(`Asset Name (hex): ${tokenConfig.assetName}`);
|
|
31
|
-
console.log('─'.repeat(80));
|
|
32
|
-
try {
|
|
33
|
-
// Discover all pools for the token
|
|
34
|
-
const pools = await this.poolDiscovery.discoverPools('lovelace', tokenConfig);
|
|
35
|
-
// Filter by minimum liquidity if specified
|
|
36
|
-
const filteredPools = minLiquidity
|
|
37
|
-
? pools.filter(pool => Number(pool.state?.tvl || 0) >= minLiquidity)
|
|
38
|
-
: pools;
|
|
39
|
-
// Sort by TVL (highest first) and apply limit
|
|
40
|
-
const sortedPools = filteredPools
|
|
41
|
-
.sort((a, b) => Number(b.state?.tvl || 0) - Number(a.state?.tvl || 0))
|
|
42
|
-
.slice(0, showAll ? filteredPools.length : limit);
|
|
43
|
-
const totalLiquidity = pools.reduce((sum, pool) => sum + Number(pool.state?.tvl || 0), 0);
|
|
44
|
-
// Convert to CLI-friendly format
|
|
45
|
-
const poolInfos = sortedPools.map(pool => ({
|
|
46
|
-
identifier: pool.identifier || 'N/A',
|
|
47
|
-
dex: pool.dex || 'Unknown',
|
|
48
|
-
tvl: Number(pool.state?.tvl || 0),
|
|
49
|
-
reserveA: Number(pool.state?.reserveA || 0),
|
|
50
|
-
reserveB: Number(pool.state?.reserveB || 0),
|
|
51
|
-
address: pool.address || 'N/A',
|
|
52
|
-
isActive: pool.isActive || false
|
|
53
|
-
}));
|
|
54
|
-
// Get recommended identifiers (top 3 by TVL)
|
|
55
|
-
const recommendedIdentifiers = poolInfos
|
|
56
|
-
.slice(0, 3)
|
|
57
|
-
.filter(pool => pool.isActive)
|
|
58
|
-
.map(pool => pool.identifier);
|
|
59
|
-
return {
|
|
60
|
-
token: symbol,
|
|
61
|
-
policyId: tokenConfig.policyId,
|
|
62
|
-
assetName: tokenConfig.assetName,
|
|
63
|
-
totalPools: pools.length,
|
|
64
|
-
totalLiquidity,
|
|
65
|
-
pools: poolInfos,
|
|
66
|
-
recommendedIdentifiers
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
catch (error) {
|
|
70
|
-
throw new Error(`Pool discovery failed for ${symbol}: ${error}`);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Display discovery results in a formatted table
|
|
75
|
-
*/
|
|
76
|
-
displayResults(result) {
|
|
77
|
-
console.log(`\n📊 ${result.token} Liquidity Pool Discovery Results`);
|
|
78
|
-
console.log('═'.repeat(80));
|
|
79
|
-
console.log(`Total Pools Found: ${result.totalPools}`);
|
|
80
|
-
console.log(`Total Liquidity: ${this.formatCurrency(result.totalLiquidity)}`);
|
|
81
|
-
console.log(`Token Policy ID: ${result.policyId}`);
|
|
82
|
-
console.log(`Asset Name (hex): ${result.assetName}`);
|
|
83
|
-
if (result.pools.length === 0) {
|
|
84
|
-
console.log('\n❌ No liquidity pools found for this token.');
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
console.log('\n🏊 Pool Details:');
|
|
88
|
-
console.log('─'.repeat(80));
|
|
89
|
-
console.log('Rank | DEX | TVL | Identifier | Active');
|
|
90
|
-
console.log('─'.repeat(80));
|
|
91
|
-
result.pools.forEach((pool, index) => {
|
|
92
|
-
const rank = `${index + 1}`.padStart(4);
|
|
93
|
-
const dex = pool.dex.substring(0, 12).padEnd(12);
|
|
94
|
-
const tvl = this.formatCurrency(pool.tvl).padStart(12);
|
|
95
|
-
const identifier = pool.identifier.substring(0, 29).padEnd(29);
|
|
96
|
-
const status = pool.isActive ? '✅' : '❌';
|
|
97
|
-
console.log(`${rank} | ${dex} | ${tvl} | ${identifier} | ${status}`);
|
|
98
|
-
});
|
|
99
|
-
console.log('\n🎯 Recommended Pool Identifiers for Market Making:');
|
|
100
|
-
console.log('─'.repeat(60));
|
|
101
|
-
if (result.recommendedIdentifiers.length === 0) {
|
|
102
|
-
console.log('❌ No active pools with sufficient liquidity found.');
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
result.recommendedIdentifiers.forEach((id, index) => {
|
|
106
|
-
const pool = result.pools.find(p => p.identifier === id);
|
|
107
|
-
console.log(`${index + 1}. ${id}`);
|
|
108
|
-
console.log(` DEX: ${pool?.dex}, TVL: ${this.formatCurrency(pool?.tvl || 0)}`);
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
console.log('\n💡 Usage Instructions:');
|
|
112
|
-
console.log('─'.repeat(40));
|
|
113
|
-
console.log('1. Use the recommended pool identifiers in your market making strategy');
|
|
114
|
-
console.log('2. Higher TVL pools typically offer better price stability');
|
|
115
|
-
console.log('3. Monitor multiple pools for price aggregation and arbitrage opportunities');
|
|
116
|
-
console.log(`4. Current minimum liquidity threshold: ${this.formatCurrency((0, price_aggregation_1.getTokenConfig)(result.token).minLiquidityThreshold || 0)}`);
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Get live price information for discovered pools
|
|
120
|
-
*/
|
|
121
|
-
async getPoolPrices(identifiers) {
|
|
122
|
-
if (identifiers.length === 0) {
|
|
123
|
-
console.log('❌ No pool identifiers provided');
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
console.log('\n💰 Getting live prices from Iris API...');
|
|
127
|
-
try {
|
|
128
|
-
const prices = await this.irisClient.fetchPrices(identifiers, 'OpenMM-PoolDiscovery/1.0');
|
|
129
|
-
console.log('─'.repeat(50));
|
|
130
|
-
console.log('Pool ID | Price (ADA)');
|
|
131
|
-
console.log('─'.repeat(50));
|
|
132
|
-
identifiers.forEach((id, index) => {
|
|
133
|
-
const price = prices[index] || 0;
|
|
134
|
-
const shortId = id.substring(0, 33).padEnd(33);
|
|
135
|
-
console.log(`${shortId} | ${price.toFixed(8)}`);
|
|
136
|
-
});
|
|
137
|
-
const avgPrice = prices.reduce((sum, p) => sum + p, 0) / prices.length;
|
|
138
|
-
console.log('─'.repeat(50));
|
|
139
|
-
console.log(`Average Price: ${avgPrice.toFixed(8)} ADA per token`);
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
console.log(`❌ Failed to fetch prices: ${error}`);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Format currency with K/M suffixes
|
|
147
|
-
*/
|
|
148
|
-
formatCurrency(amount) {
|
|
149
|
-
if (amount === 0)
|
|
150
|
-
return '$0';
|
|
151
|
-
if (amount >= 1000000) {
|
|
152
|
-
return `$${(amount / 1000000).toFixed(1)}M`;
|
|
153
|
-
}
|
|
154
|
-
if (amount >= 1000) {
|
|
155
|
-
return `$${(amount / 1000).toFixed(1)}K`;
|
|
156
|
-
}
|
|
157
|
-
return `$${amount.toFixed(0)}`;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Add a new token configuration (for advanced users)
|
|
161
|
-
*/
|
|
162
|
-
suggestTokenConfig(policyId, assetNameHex, symbol) {
|
|
163
|
-
console.log('\n🔧 Token Configuration for Custom Token:');
|
|
164
|
-
console.log('─'.repeat(50));
|
|
165
|
-
console.log(`Symbol: ${symbol.toUpperCase()}`);
|
|
166
|
-
console.log(`Policy ID: ${policyId}`);
|
|
167
|
-
console.log(`Asset Name (hex): ${assetNameHex}`);
|
|
168
|
-
console.log('\nAdd this to your src/config/price-aggregation.ts:');
|
|
169
|
-
console.log('─'.repeat(50));
|
|
170
|
-
console.log(`'${symbol.toUpperCase()}': {`);
|
|
171
|
-
console.log(` symbol: '${symbol.toUpperCase()}',`);
|
|
172
|
-
console.log(` policyId: '${policyId}',`);
|
|
173
|
-
console.log(` assetName: '${assetNameHex}',`);
|
|
174
|
-
console.log(` minLiquidityThreshold: 25000 // Adjust as needed`);
|
|
175
|
-
console.log(`}`);
|
|
176
|
-
return {
|
|
177
|
-
symbol: symbol.toUpperCase(),
|
|
178
|
-
policyId,
|
|
179
|
-
assetName: assetNameHex,
|
|
180
|
-
minLiquidityThreshold: 25000
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
exports.PoolDiscoveryCLI = PoolDiscoveryCLI;
|
|
185
|
-
/**
|
|
186
|
-
* CLI Entry Point
|
|
187
|
-
*/
|
|
188
|
-
async function main() {
|
|
189
|
-
const args = process.argv.slice(2);
|
|
190
|
-
const cli = new PoolDiscoveryCLI();
|
|
191
|
-
if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
|
|
192
|
-
console.log('🔍 OpenMM Pool Discovery CLI');
|
|
193
|
-
console.log('═'.repeat(40));
|
|
194
|
-
console.log('Usage: npm run pool-discovery <command> [options]');
|
|
195
|
-
console.log('\nCommands:');
|
|
196
|
-
console.log(' discover <TOKEN> Discover pools for a supported token');
|
|
197
|
-
console.log(' supported List all supported tokens');
|
|
198
|
-
console.log(' prices <TOKEN> Get live prices for token pools');
|
|
199
|
-
console.log(' custom <POLICY> <HEX> <SYMBOL> Generate config for custom token');
|
|
200
|
-
console.log('\nOptions:');
|
|
201
|
-
console.log(' --limit <N> Limit number of pools shown (default: 10)');
|
|
202
|
-
console.log(' --min-liquidity <N> Filter pools by minimum TVL');
|
|
203
|
-
console.log(' --show-all Show all pools (ignore limit)');
|
|
204
|
-
console.log('\nExamples:');
|
|
205
|
-
console.log(' npm run pool-discovery discover NIGHT');
|
|
206
|
-
console.log(' npm run pool-discovery discover SNEK --limit 5');
|
|
207
|
-
console.log(' npm run pool-discovery discover INDY --min-liquidity 100000');
|
|
208
|
-
console.log(' npm run pool-discovery prices NIGHT');
|
|
209
|
-
console.log(' npm run pool-discovery supported');
|
|
210
|
-
return;
|
|
211
|
-
}
|
|
212
|
-
const command = args[0];
|
|
213
|
-
try {
|
|
214
|
-
switch (command) {
|
|
215
|
-
case 'discover': {
|
|
216
|
-
if (args.length < 2) {
|
|
217
|
-
console.log('❌ Token symbol required. Usage: npm run pool-discovery discover <TOKEN>');
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
const token = args[1];
|
|
221
|
-
const options = {};
|
|
222
|
-
// Parse options
|
|
223
|
-
for (let i = 2; i < args.length; i += 2) {
|
|
224
|
-
switch (args[i]) {
|
|
225
|
-
case '--limit':
|
|
226
|
-
options.limit = parseInt(args[i + 1]);
|
|
227
|
-
break;
|
|
228
|
-
case '--min-liquidity':
|
|
229
|
-
options.minLiquidity = parseInt(args[i + 1]);
|
|
230
|
-
break;
|
|
231
|
-
case '--show-all':
|
|
232
|
-
options.showAll = true;
|
|
233
|
-
i--; // No value to consume
|
|
234
|
-
break;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
const result = await cli.discoverTokenPools(token, options);
|
|
238
|
-
cli.displayResults(result);
|
|
239
|
-
break;
|
|
240
|
-
}
|
|
241
|
-
case 'supported': {
|
|
242
|
-
console.log('🎯 Supported Tokens:');
|
|
243
|
-
console.log('─'.repeat(20));
|
|
244
|
-
(0, price_aggregation_1.getSupportedTokens)().forEach(token => {
|
|
245
|
-
const config = (0, price_aggregation_1.getTokenConfig)(token);
|
|
246
|
-
console.log(`${token} (Min Liquidity: ${cli['formatCurrency'](config.minLiquidityThreshold || 0)})`);
|
|
247
|
-
});
|
|
248
|
-
break;
|
|
249
|
-
}
|
|
250
|
-
case 'prices': {
|
|
251
|
-
if (args.length < 2) {
|
|
252
|
-
console.log('❌ Token symbol required. Usage: npm run pool-discovery prices <TOKEN>');
|
|
253
|
-
return;
|
|
254
|
-
}
|
|
255
|
-
const token = args[1];
|
|
256
|
-
const result = await cli.discoverTokenPools(token, { limit: 3 });
|
|
257
|
-
await cli.getPoolPrices(result.recommendedIdentifiers);
|
|
258
|
-
break;
|
|
259
|
-
}
|
|
260
|
-
case 'custom': {
|
|
261
|
-
if (args.length < 4) {
|
|
262
|
-
console.log('❌ Usage: npm run pool-discovery custom <POLICY_ID> <ASSET_NAME_HEX> <SYMBOL>');
|
|
263
|
-
return;
|
|
264
|
-
}
|
|
265
|
-
const [, policyId, assetNameHex, symbol] = args;
|
|
266
|
-
cli.suggestTokenConfig(policyId, assetNameHex, symbol);
|
|
267
|
-
break;
|
|
268
|
-
}
|
|
269
|
-
default:
|
|
270
|
-
console.log(`❌ Unknown command: ${command}`);
|
|
271
|
-
console.log('Run "npm run pool-discovery --help" for usage information.');
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
catch (error) {
|
|
275
|
-
console.error('❌ Error:', error.message);
|
|
276
|
-
process.exit(1);
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
// Run CLI if this file is executed directly
|
|
280
|
-
if (require.main === module) {
|
|
281
|
-
main().catch(console.error);
|
|
282
|
-
}
|
|
283
|
-
//# sourceMappingURL=pool-discovery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pool-discovery.js","sourceRoot":"","sources":["../../src/cli/pool-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Price Cache
|
|
3
|
-
* Manages price caching with 1-minute TTL and fallback strategies
|
|
4
|
-
*/
|
|
5
|
-
export declare class PriceCache {
|
|
6
|
-
private cache;
|
|
7
|
-
private fallbackCache;
|
|
8
|
-
/**
|
|
9
|
-
* Cache price with TTL (1 minute as requested)
|
|
10
|
-
*/
|
|
11
|
-
cachePrice(symbol: string, price: number, ttl?: number): void;
|
|
12
|
-
/**
|
|
13
|
-
* Get cached price if still valid
|
|
14
|
-
*/
|
|
15
|
-
getCachedPrice(symbol: string): number | null;
|
|
16
|
-
/**
|
|
17
|
-
* Get fallback price (last known good price, even if stale)
|
|
18
|
-
* Used when Iris API fails
|
|
19
|
-
*/
|
|
20
|
-
getFallbackPrice(symbol: string): number | null;
|
|
21
|
-
/**
|
|
22
|
-
* Check if cached price object is valid
|
|
23
|
-
*/
|
|
24
|
-
private isCacheValid;
|
|
25
|
-
/**
|
|
26
|
-
* Get cache statistics for monitoring
|
|
27
|
-
*/
|
|
28
|
-
getCacheStats(): {
|
|
29
|
-
activeEntries: number;
|
|
30
|
-
fallbackEntries: number;
|
|
31
|
-
hitRate: number;
|
|
32
|
-
oldestEntry: Date | null;
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* Get age of cached price in seconds
|
|
36
|
-
*/
|
|
37
|
-
getCacheAge(symbol: string): number | null;
|
|
38
|
-
/**
|
|
39
|
-
* Clear all caches
|
|
40
|
-
*/
|
|
41
|
-
clearCache(): void;
|
|
42
|
-
/**
|
|
43
|
-
* Clear expired entries from cache
|
|
44
|
-
*/
|
|
45
|
-
private cleanupCache;
|
|
46
|
-
/**
|
|
47
|
-
* Get oldest cache entry timestamp
|
|
48
|
-
*/
|
|
49
|
-
private getOldestCacheEntry;
|
|
50
|
-
/**
|
|
51
|
-
* Get key of oldest cache entry
|
|
52
|
-
*/
|
|
53
|
-
private getOldestCacheKey;
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=price-cache.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"price-cache.d.ts","sourceRoot":"","sources":["../../../src/core/price-aggregation/price-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,aAAa,CAAuC;IAE5D;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAiC,GAAG,IAAI;IAkBvF;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAa7C;;;OAGG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAa/C;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,aAAa,IAAI;QACf,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;KAC1B;IAoBD;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAO1C;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACH,OAAO,CAAC,YAAY;IAyBpB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAa1B"}
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Price Cache
|
|
4
|
-
* Manages price caching with 1-minute TTL and fallback strategies
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.PriceCache = void 0;
|
|
8
|
-
const price_aggregation_1 = require("../../config/price-aggregation");
|
|
9
|
-
class PriceCache {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.cache = new Map();
|
|
12
|
-
this.fallbackCache = new Map();
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Cache price with TTL (1 minute as requested)
|
|
16
|
-
*/
|
|
17
|
-
cachePrice(symbol, price, ttl = price_aggregation_1.CACHE_CONFIG.DEFAULT_TTL) {
|
|
18
|
-
const cached = {
|
|
19
|
-
price,
|
|
20
|
-
timestamp: new Date(),
|
|
21
|
-
ttl
|
|
22
|
-
};
|
|
23
|
-
this.cache.set(symbol, cached);
|
|
24
|
-
// Also store in fallback cache (longer retention)
|
|
25
|
-
this.fallbackCache.set(symbol, {
|
|
26
|
-
...cached,
|
|
27
|
-
ttl: price_aggregation_1.CACHE_CONFIG.STALE_THRESHOLD
|
|
28
|
-
});
|
|
29
|
-
this.cleanupCache();
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Get cached price if still valid
|
|
33
|
-
*/
|
|
34
|
-
getCachedPrice(symbol) {
|
|
35
|
-
const cached = this.cache.get(symbol);
|
|
36
|
-
if (!cached)
|
|
37
|
-
return null;
|
|
38
|
-
if (this.isCacheValid(cached)) {
|
|
39
|
-
return cached.price;
|
|
40
|
-
}
|
|
41
|
-
// Remove expired cache entry
|
|
42
|
-
this.cache.delete(symbol);
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Get fallback price (last known good price, even if stale)
|
|
47
|
-
* Used when Iris API fails
|
|
48
|
-
*/
|
|
49
|
-
getFallbackPrice(symbol) {
|
|
50
|
-
const cached = this.fallbackCache.get(symbol);
|
|
51
|
-
if (!cached)
|
|
52
|
-
return null;
|
|
53
|
-
const age = Date.now() - cached.timestamp.getTime();
|
|
54
|
-
if (age > price_aggregation_1.CACHE_CONFIG.STALE_THRESHOLD) {
|
|
55
|
-
this.fallbackCache.delete(symbol);
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
return cached.price;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Check if cached price object is valid
|
|
62
|
-
*/
|
|
63
|
-
isCacheValid(cached) {
|
|
64
|
-
const age = Date.now() - cached.timestamp.getTime();
|
|
65
|
-
return age < cached.ttl;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Get cache statistics for monitoring
|
|
69
|
-
*/
|
|
70
|
-
getCacheStats() {
|
|
71
|
-
const activeEntries = Array.from(this.cache.values()).filter(cached => this.isCacheValid(cached)).length;
|
|
72
|
-
const fallbackEntries = this.fallbackCache.size;
|
|
73
|
-
// Simple hit rate calculation (would need proper tracking in production)
|
|
74
|
-
const hitRate = this.cache.size > 0 ? activeEntries / this.cache.size : 0;
|
|
75
|
-
const oldestEntry = this.getOldestCacheEntry();
|
|
76
|
-
return {
|
|
77
|
-
activeEntries,
|
|
78
|
-
fallbackEntries,
|
|
79
|
-
hitRate,
|
|
80
|
-
oldestEntry
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Get age of cached price in seconds
|
|
85
|
-
*/
|
|
86
|
-
getCacheAge(symbol) {
|
|
87
|
-
const cached = this.cache.get(symbol);
|
|
88
|
-
if (!cached)
|
|
89
|
-
return null;
|
|
90
|
-
return (Date.now() - cached.timestamp.getTime()) / 1000;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Clear all caches
|
|
94
|
-
*/
|
|
95
|
-
clearCache() {
|
|
96
|
-
this.cache.clear();
|
|
97
|
-
this.fallbackCache.clear();
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Clear expired entries from cache
|
|
101
|
-
*/
|
|
102
|
-
cleanupCache() {
|
|
103
|
-
// Cleanup main cache
|
|
104
|
-
for (const [symbol, cached] of this.cache.entries()) {
|
|
105
|
-
if (!this.isCacheValid(cached)) {
|
|
106
|
-
this.cache.delete(symbol);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
// Cleanup fallback cache
|
|
110
|
-
for (const [symbol, cached] of this.fallbackCache.entries()) {
|
|
111
|
-
const age = Date.now() - cached.timestamp.getTime();
|
|
112
|
-
if (age > price_aggregation_1.CACHE_CONFIG.STALE_THRESHOLD) {
|
|
113
|
-
this.fallbackCache.delete(symbol);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
// Size-based cleanup if cache is too large
|
|
117
|
-
if (this.cache.size > price_aggregation_1.CACHE_CONFIG.MAX_CACHE_SIZE) {
|
|
118
|
-
const oldestKey = this.getOldestCacheKey();
|
|
119
|
-
if (oldestKey) {
|
|
120
|
-
this.cache.delete(oldestKey);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Get oldest cache entry timestamp
|
|
126
|
-
*/
|
|
127
|
-
getOldestCacheEntry() {
|
|
128
|
-
let oldest = null;
|
|
129
|
-
for (const cached of this.cache.values()) {
|
|
130
|
-
if (!oldest || cached.timestamp < oldest) {
|
|
131
|
-
oldest = cached.timestamp;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
return oldest;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Get key of oldest cache entry
|
|
138
|
-
*/
|
|
139
|
-
getOldestCacheKey() {
|
|
140
|
-
let oldestKey = null;
|
|
141
|
-
let oldestTime = Date.now();
|
|
142
|
-
for (const [key, cached] of this.cache.entries()) {
|
|
143
|
-
if (cached.timestamp.getTime() < oldestTime) {
|
|
144
|
-
oldestTime = cached.timestamp.getTime();
|
|
145
|
-
oldestKey = key;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
return oldestKey;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
exports.PriceCache = PriceCache;
|
|
152
|
-
//# sourceMappingURL=price-cache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"price-cache.js","sourceRoot":"","sources":["../../../src/core/price-aggregation/price-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MEXC Connector Comprehensive Test Suite
|
|
3
|
-
*
|
|
4
|
-
* Tests every method in MexcConnector to ensure they work as intended.
|
|
5
|
-
* This single test file validates the complete base SDK architecture implementation.
|
|
6
|
-
*
|
|
7
|
-
* Coverage:
|
|
8
|
-
* - Connection Management
|
|
9
|
-
* - REST API Methods (Balance, Orders, Market Data)
|
|
10
|
-
* - WebSocket Methods (Real-time Market Data with Direct Protobuf Processing)
|
|
11
|
-
* - User Data Stream Methods (Real-time Account Updates)
|
|
12
|
-
* - Error Handling and Edge Cases
|
|
13
|
-
*/
|
|
14
|
-
import 'dotenv/config';
|
|
15
|
-
//# sourceMappingURL=mexc-connector-comprehensive-test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mexc-connector-comprehensive-test.d.ts","sourceRoot":"","sources":["../../src/examples/mexc-connector-comprehensive-test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,eAAe,CAAC"}
|