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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/README.md +0 -2
  2. package/dist/cli/commands/grid.d.ts +3 -0
  3. package/dist/cli/commands/grid.d.ts.map +1 -0
  4. package/dist/cli/commands/grid.js +103 -0
  5. package/dist/cli/commands/grid.js.map +1 -0
  6. package/dist/cli/commands/multi-trade.d.ts +3 -0
  7. package/dist/cli/commands/multi-trade.d.ts.map +1 -0
  8. package/dist/cli/commands/multi-trade.js +175 -0
  9. package/dist/cli/commands/multi-trade.js.map +1 -0
  10. package/dist/cli/pool-discovery.d.ts +56 -0
  11. package/dist/cli/pool-discovery.d.ts.map +1 -0
  12. package/dist/cli/pool-discovery.js +283 -0
  13. package/dist/cli/pool-discovery.js.map +1 -0
  14. package/dist/config/environment.d.ts +19 -0
  15. package/dist/config/environment.d.ts.map +1 -1
  16. package/dist/config/environment.js +87 -58
  17. package/dist/config/environment.js.map +1 -1
  18. package/dist/core/price-aggregation/price-cache.d.ts +55 -0
  19. package/dist/core/price-aggregation/price-cache.d.ts.map +1 -0
  20. package/dist/core/price-aggregation/price-cache.js +152 -0
  21. package/dist/core/price-aggregation/price-cache.js.map +1 -0
  22. package/dist/examples/mexc-connector-comprehensive-test.d.ts +15 -0
  23. package/dist/examples/mexc-connector-comprehensive-test.d.ts.map +1 -0
  24. package/dist/examples/mexc-connector-comprehensive-test.js +514 -0
  25. package/dist/examples/mexc-connector-comprehensive-test.js.map +1 -0
  26. package/dist/examples/mexc-order-update-test.d.ts +4 -0
  27. package/dist/examples/mexc-order-update-test.d.ts.map +1 -0
  28. package/dist/examples/mexc-order-update-test.js +186 -0
  29. package/dist/examples/mexc-order-update-test.js.map +1 -0
  30. package/dist/examples/mexc-test.d.ts +9 -0
  31. package/dist/examples/mexc-test.d.ts.map +1 -0
  32. package/dist/examples/mexc-test.js +218 -0
  33. package/dist/examples/mexc-test.js.map +1 -0
  34. package/dist/examples/mexc-trades-debug.d.ts +2 -0
  35. package/dist/examples/mexc-trades-debug.d.ts.map +1 -0
  36. package/dist/examples/mexc-trades-debug.js +101 -0
  37. package/dist/examples/mexc-trades-debug.js.map +1 -0
  38. package/dist/examples/mexc-trades-subscription-debug.d.ts +2 -0
  39. package/dist/examples/mexc-trades-subscription-debug.d.ts.map +1 -0
  40. package/dist/examples/mexc-trades-subscription-debug.js +150 -0
  41. package/dist/examples/mexc-trades-subscription-debug.js.map +1 -0
  42. package/dist/examples/mexc-websocket-test.d.ts +8 -0
  43. package/dist/examples/mexc-websocket-test.d.ts.map +1 -0
  44. package/dist/examples/mexc-websocket-test.js +115 -0
  45. package/dist/examples/mexc-websocket-test.js.map +1 -0
  46. package/dist/examples/test-protobuf-status-detection.d.ts +9 -0
  47. package/dist/examples/test-protobuf-status-detection.d.ts.map +1 -0
  48. package/dist/examples/test-protobuf-status-detection.js +83 -0
  49. package/dist/examples/test-protobuf-status-detection.js.map +1 -0
  50. package/dist/exchanges/base-exchange-connector.d.ts +33 -0
  51. package/dist/exchanges/base-exchange-connector.d.ts.map +1 -0
  52. package/dist/exchanges/base-exchange-connector.js +55 -0
  53. package/dist/exchanges/base-exchange-connector.js.map +1 -0
  54. package/dist/exchanges/kraken/test-kraken-websocket.d.ts +19 -0
  55. package/dist/exchanges/kraken/test-kraken-websocket.d.ts.map +1 -0
  56. package/dist/exchanges/kraken/test-kraken-websocket.js +413 -0
  57. package/dist/exchanges/kraken/test-kraken-websocket.js.map +1 -0
  58. package/dist/mcp/resources/index.d.ts +3 -0
  59. package/dist/mcp/resources/index.d.ts.map +1 -0
  60. package/dist/mcp/resources/index.js +11 -0
  61. package/dist/mcp/resources/index.js.map +1 -0
  62. package/dist/mcp/server.d.ts +4 -0
  63. package/dist/mcp/server.d.ts.map +1 -0
  64. package/dist/mcp/server.js +29 -0
  65. package/dist/mcp/server.js.map +1 -0
  66. package/dist/mcp/tools/index.d.ts +3 -0
  67. package/dist/mcp/tools/index.d.ts.map +1 -0
  68. package/dist/mcp/tools/index.js +12 -0
  69. package/dist/mcp/tools/index.js.map +1 -0
  70. package/dist/tests/fixtures/test-helpers.d.ts +5 -0
  71. package/dist/tests/fixtures/test-helpers.d.ts.map +1 -0
  72. package/dist/tests/fixtures/test-helpers.js +8 -0
  73. package/dist/tests/fixtures/test-helpers.js.map +1 -0
  74. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts +2 -0
  75. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts.map +1 -0
  76. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js +237 -0
  77. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js.map +1 -0
  78. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts +2 -0
  79. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
  80. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js +57 -0
  81. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js.map +1 -0
  82. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts +2 -0
  83. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts.map +1 -0
  84. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js +141 -0
  85. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js.map +1 -0
  86. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts +2 -0
  87. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts.map +1 -0
  88. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js +375 -0
  89. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js.map +1 -0
  90. package/dist/tests/unit/cli/exchange-factory.test.d.ts +2 -0
  91. package/dist/tests/unit/cli/exchange-factory.test.d.ts.map +1 -0
  92. package/dist/tests/unit/cli/exchange-factory.test.js +148 -0
  93. package/dist/tests/unit/cli/exchange-factory.test.js.map +1 -0
  94. package/dist/tests/unit/config/environment.test.d.ts +2 -0
  95. package/dist/tests/unit/config/environment.test.d.ts.map +1 -0
  96. package/dist/tests/unit/config/environment.test.js +158 -0
  97. package/dist/tests/unit/config/environment.test.js.map +1 -0
  98. package/dist/tests/unit/config/launcher-config.test.d.ts +2 -0
  99. package/dist/tests/unit/config/launcher-config.test.d.ts.map +1 -0
  100. package/dist/tests/unit/config/launcher-config.test.js +117 -0
  101. package/dist/tests/unit/config/launcher-config.test.js.map +1 -0
  102. package/dist/tests/unit/config/price-aggregation.test.d.ts +2 -0
  103. package/dist/tests/unit/config/price-aggregation.test.d.ts.map +1 -0
  104. package/dist/tests/unit/config/price-aggregation.test.js +144 -0
  105. package/dist/tests/unit/config/price-aggregation.test.js.map +1 -0
  106. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts +2 -0
  107. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts.map +1 -0
  108. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js +191 -0
  109. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js.map +1 -0
  110. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts +2 -0
  111. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts.map +1 -0
  112. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js +324 -0
  113. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js.map +1 -0
  114. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts +2 -0
  115. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
  116. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js +177 -0
  117. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js.map +1 -0
  118. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts +2 -0
  119. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts.map +1 -0
  120. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js +168 -0
  121. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js.map +1 -0
  122. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts +2 -0
  123. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts.map +1 -0
  124. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js +217 -0
  125. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js.map +1 -0
  126. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts +2 -0
  127. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts.map +1 -0
  128. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js +229 -0
  129. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js.map +1 -0
  130. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts +2 -0
  131. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts.map +1 -0
  132. package/dist/tests/unit/core/risk-management/risk-manager.test.js +194 -0
  133. package/dist/tests/unit/core/risk-management/risk-manager.test.js.map +1 -0
  134. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts +2 -0
  135. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts.map +1 -0
  136. package/dist/tests/unit/core/strategy/base-strategy.test.js +254 -0
  137. package/dist/tests/unit/core/strategy/base-strategy.test.js.map +1 -0
  138. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts +2 -0
  139. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts.map +1 -0
  140. package/dist/tests/unit/core/strategy/strategy-factory.test.js +213 -0
  141. package/dist/tests/unit/core/strategy/strategy-factory.test.js.map +1 -0
  142. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts +2 -0
  143. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts.map +1 -0
  144. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js +452 -0
  145. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js.map +1 -0
  146. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts +2 -0
  147. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts.map +1 -0
  148. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js +1419 -0
  149. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js.map +1 -0
  150. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts +2 -0
  151. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts.map +1 -0
  152. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js +435 -0
  153. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js.map +1 -0
  154. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts +2 -0
  155. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts.map +1 -0
  156. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js +314 -0
  157. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js.map +1 -0
  158. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts +2 -0
  159. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts.map +1 -0
  160. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js +178 -0
  161. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js.map +1 -0
  162. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts +2 -0
  163. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts.map +1 -0
  164. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js +502 -0
  165. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js.map +1 -0
  166. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts +2 -0
  167. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts.map +1 -0
  168. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js +317 -0
  169. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js.map +1 -0
  170. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts +2 -0
  171. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts.map +1 -0
  172. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js +843 -0
  173. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js.map +1 -0
  174. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts +2 -0
  175. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts.map +1 -0
  176. package/dist/tests/unit/strategies/grid/grid-calculator.test.js +67 -0
  177. package/dist/tests/unit/strategies/grid/grid-calculator.test.js.map +1 -0
  178. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts +2 -0
  179. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts.map +1 -0
  180. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js +211 -0
  181. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js.map +1 -0
  182. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts +2 -0
  183. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts.map +1 -0
  184. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js +197 -0
  185. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js.map +1 -0
  186. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts +2 -0
  187. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts.map +1 -0
  188. package/dist/tests/unit/strategies/grid/grid-strategy.test.js +429 -0
  189. package/dist/tests/unit/strategies/grid/grid-strategy.test.js.map +1 -0
  190. package/dist/tests/unit/utils/logger.test.d.ts +2 -0
  191. package/dist/tests/unit/utils/logger.test.d.ts.map +1 -0
  192. package/dist/tests/unit/utils/logger.test.js +260 -0
  193. package/dist/tests/unit/utils/logger.test.js.map +1 -0
  194. package/dist/tests/unit/utils/symbol-utils.test.d.ts +2 -0
  195. package/dist/tests/unit/utils/symbol-utils.test.d.ts.map +1 -0
  196. package/dist/tests/unit/utils/symbol-utils.test.js +178 -0
  197. package/dist/tests/unit/utils/symbol-utils.test.js.map +1 -0
  198. package/dist/types/price-aggregation.d.ts +31 -0
  199. package/dist/types/price-aggregation.d.ts.map +1 -0
  200. package/dist/types/price-aggregation.js +6 -0
  201. package/dist/types/price-aggregation.js.map +1 -0
  202. package/dist/utils/crypto.d.ts +15 -0
  203. package/dist/utils/crypto.d.ts.map +1 -0
  204. package/dist/utils/crypto.js +50 -0
  205. package/dist/utils/crypto.js.map +1 -0
  206. package/dist/utils/validation.d.ts +36 -0
  207. package/dist/utils/validation.d.ts.map +1 -0
  208. package/dist/utils/validation.js +174 -0
  209. package/dist/utils/validation.js.map +1 -0
  210. package/package.json +1 -1
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const price_calculator_1 = require("../../../../core/price-aggregation/price-calculator");
4
+ describe('PriceCalculator', () => {
5
+ let calculator;
6
+ beforeEach(() => {
7
+ calculator = new price_calculator_1.PriceCalculator();
8
+ });
9
+ describe('calculateLiquidityWeightedPrice', () => {
10
+ it('should calculate correct weighted price for multiple pools', () => {
11
+ const pools = [
12
+ {
13
+ dex: 'MinswapV2',
14
+ identifier: 'pool1',
15
+ state: {
16
+ tvl: 1000000,
17
+ reserveA: 1000000,
18
+ reserveB: 500000
19
+ },
20
+ isActive: true
21
+ },
22
+ {
23
+ dex: 'SundaeSwap',
24
+ identifier: 'pool2',
25
+ state: {
26
+ tvl: 500000,
27
+ reserveA: 500000,
28
+ reserveB: 300000
29
+ },
30
+ isActive: true
31
+ }
32
+ ];
33
+ const result = calculator.calculateLiquidityWeightedPrice(pools);
34
+ expect(result.price).toBeCloseTo(0.533, 3);
35
+ expect(result.confidence).toBeGreaterThan(0.5);
36
+ expect(result.poolsUsed).toBe(2);
37
+ expect(result.totalLiquidity).toBe(1500000);
38
+ expect(result.timestamp).toBeInstanceOf(Date);
39
+ });
40
+ it('should handle single pool correctly', () => {
41
+ const pools = [
42
+ {
43
+ dex: 'MinswapV2',
44
+ identifier: 'pool1',
45
+ state: {
46
+ tvl: 2000000,
47
+ reserveA: 1000000,
48
+ reserveB: 750000 // price = 0.75 ADA/token
49
+ },
50
+ isActive: true
51
+ }
52
+ ];
53
+ const result = calculator.calculateLiquidityWeightedPrice(pools);
54
+ expect(result.price).toBeCloseTo(0.75, 3);
55
+ expect(result.confidence).toBe(0.7); // Single pool confidence
56
+ expect(result.poolsUsed).toBe(1);
57
+ expect(result.totalLiquidity).toBe(2000000);
58
+ });
59
+ it('should filter out invalid pools', () => {
60
+ const pools = [
61
+ {
62
+ dex: 'ValidPool',
63
+ identifier: 'pool1',
64
+ state: {
65
+ tvl: 1000000,
66
+ reserveA: 1000000,
67
+ reserveB: 500000
68
+ },
69
+ isActive: true
70
+ },
71
+ {
72
+ dex: 'InvalidPool',
73
+ identifier: 'pool2',
74
+ state: {
75
+ tvl: 0,
76
+ reserveA: 0,
77
+ reserveB: 0
78
+ },
79
+ isActive: true
80
+ },
81
+ {
82
+ dex: 'AnotherInvalid',
83
+ identifier: 'pool3'
84
+ }
85
+ ];
86
+ const result = calculator.calculateLiquidityWeightedPrice(pools);
87
+ expect(result.poolsUsed).toBe(1);
88
+ expect(result.price).toBe(0.5);
89
+ });
90
+ it('should throw error for empty pools array', () => {
91
+ expect(() => {
92
+ calculator.calculateLiquidityWeightedPrice([]);
93
+ }).toThrow('No pools provided for price calculation');
94
+ });
95
+ it('should throw error when no valid pools found', () => {
96
+ const invalidPools = [
97
+ {
98
+ dex: 'InvalidPool',
99
+ identifier: 'pool1',
100
+ state: {
101
+ tvl: 0,
102
+ reserveA: 0,
103
+ reserveB: 0
104
+ }
105
+ }
106
+ ];
107
+ expect(() => {
108
+ calculator.calculateLiquidityWeightedPrice(invalidPools);
109
+ }).toThrow('No valid pools found for price calculation');
110
+ });
111
+ it('should throw error when total liquidity is zero', () => {
112
+ const pools = [
113
+ {
114
+ dex: 'ZeroLiquidity',
115
+ identifier: 'pool1',
116
+ state: {
117
+ tvl: 0,
118
+ reserveA: 1000000,
119
+ reserveB: 500000
120
+ }
121
+ }
122
+ ];
123
+ expect(() => {
124
+ calculator.calculateLiquidityWeightedPrice(pools);
125
+ }).toThrow('No valid pools found for price calculation');
126
+ });
127
+ it('should calculate higher confidence for more diverse pools', () => {
128
+ const singlePool = [
129
+ {
130
+ dex: 'MinswapV2',
131
+ identifier: 'pool1',
132
+ state: { tvl: 1000000, reserveA: 1000000, reserveB: 500000 }
133
+ }
134
+ ];
135
+ const multiplePools = [
136
+ {
137
+ dex: 'MinswapV2',
138
+ identifier: 'pool1',
139
+ state: { tvl: 600000, reserveA: 1000000, reserveB: 500000 }
140
+ },
141
+ {
142
+ dex: 'SundaeSwap',
143
+ identifier: 'pool2',
144
+ state: { tvl: 400000, reserveA: 500000, reserveB: 250000 }
145
+ }
146
+ ];
147
+ const singleResult = calculator.calculateLiquidityWeightedPrice(singlePool);
148
+ const multipleResult = calculator.calculateLiquidityWeightedPrice(multiplePools);
149
+ expect(multipleResult.confidence).toBeGreaterThanOrEqual(singleResult.confidence);
150
+ });
151
+ it('should reduce confidence for high concentration pools', () => {
152
+ const highConcentration = [
153
+ {
154
+ dex: 'DominantPool',
155
+ identifier: 'pool1',
156
+ state: { tvl: 9000000, reserveA: 1000000, reserveB: 500000 }
157
+ },
158
+ {
159
+ dex: 'SmallPool',
160
+ identifier: 'pool2',
161
+ state: { tvl: 1000000, reserveA: 500000, reserveB: 250000 }
162
+ }
163
+ ];
164
+ const balanced = [
165
+ {
166
+ dex: 'Pool1',
167
+ identifier: 'pool1',
168
+ state: { tvl: 5000000, reserveA: 1000000, reserveB: 500000 }
169
+ },
170
+ {
171
+ dex: 'Pool2',
172
+ identifier: 'pool2',
173
+ state: { tvl: 5000000, reserveA: 500000, reserveB: 250000 }
174
+ }
175
+ ];
176
+ const concentratedResult = calculator.calculateLiquidityWeightedPrice(highConcentration);
177
+ const balancedResult = calculator.calculateLiquidityWeightedPrice(balanced);
178
+ expect(balancedResult.confidence).toBeGreaterThan(concentratedResult.confidence);
179
+ });
180
+ });
181
+ describe('private method validation', () => {
182
+ it('should validate pool data correctly', () => {
183
+ const validPool = {
184
+ dex: 'MinswapV2',
185
+ identifier: 'pool1',
186
+ state: {
187
+ tvl: 1000000,
188
+ reserveA: 1000000,
189
+ reserveB: 500000
190
+ }
191
+ };
192
+ const invalidPools = [
193
+ {
194
+ dex: 'NoState',
195
+ identifier: 'pool1'
196
+ },
197
+ {
198
+ dex: 'ZeroTVL',
199
+ identifier: 'pool2',
200
+ state: { tvl: 0, reserveA: 1000000, reserveB: 500000 }
201
+ },
202
+ {
203
+ dex: 'ZeroReserveA',
204
+ identifier: 'pool3',
205
+ state: { tvl: 1000000, reserveA: 0, reserveB: 500000 }
206
+ },
207
+ {
208
+ dex: 'ZeroReserveB',
209
+ identifier: 'pool4',
210
+ state: { tvl: 1000000, reserveA: 1000000, reserveB: 0 }
211
+ },
212
+ {
213
+ dex: 'InfiniteReserve',
214
+ identifier: 'pool5',
215
+ state: { tvl: 1000000, reserveA: Infinity, reserveB: 500000 }
216
+ }
217
+ ];
218
+ expect(() => {
219
+ calculator.calculateLiquidityWeightedPrice([validPool]);
220
+ }).not.toThrow();
221
+ invalidPools.forEach(pool => {
222
+ expect(() => {
223
+ calculator.calculateLiquidityWeightedPrice([pool]);
224
+ }).toThrow();
225
+ });
226
+ });
227
+ });
228
+ });
229
+ //# sourceMappingURL=price-calculator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"price-calculator.test.js","sourceRoot":"","sources":["../../../../../src/tests/unit/core/price-aggregation/price-calculator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=risk-manager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"risk-manager.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/unit/core/risk-management/risk-manager.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const risk_manager_1 = require("../../../../core/risk-management/risk-manager");
4
+ describe('RiskManager', () => {
5
+ let riskManager;
6
+ beforeEach(() => {
7
+ riskManager = new risk_manager_1.RiskManager({
8
+ maxPositionSize: 0.8,
9
+ safetyReservePercentage: 0.2,
10
+ minConfidence: 0.6
11
+ });
12
+ });
13
+ describe('validatePosition', () => {
14
+ it('should allow orders within 80% position limit', () => {
15
+ const order = {
16
+ id: 'test-order',
17
+ symbol: 'INDY/USDT',
18
+ type: 'limit',
19
+ side: 'buy',
20
+ amount: 100,
21
+ price: 0.42,
22
+ filled: 0,
23
+ remaining: 100,
24
+ status: 'open',
25
+ timestamp: Date.now()
26
+ };
27
+ const balance = {
28
+ asset: 'USDT',
29
+ free: 600,
30
+ used: 200,
31
+ total: 1000,
32
+ available: 600
33
+ };
34
+ const isValid = riskManager.validatePosition(order, balance);
35
+ expect(isValid).toBe(true);
36
+ });
37
+ it('should reject orders exceeding 80% position limit', () => {
38
+ const order = {
39
+ id: 'test-order',
40
+ symbol: 'INDY/USDT',
41
+ type: 'limit',
42
+ side: 'buy',
43
+ amount: 1000,
44
+ price: 0.42,
45
+ filled: 0,
46
+ remaining: 1000,
47
+ status: 'open',
48
+ timestamp: Date.now()
49
+ };
50
+ const balance = {
51
+ asset: 'USDT',
52
+ free: 200,
53
+ used: 400,
54
+ total: 1000,
55
+ available: 200
56
+ };
57
+ const isValid = riskManager.validatePosition(order, balance);
58
+ expect(isValid).toBe(false);
59
+ });
60
+ });
61
+ describe('checkPriceConfidence', () => {
62
+ it('should accept price confidence above threshold', () => {
63
+ const aggregatedPrice = {
64
+ symbol: 'INDY/USDT',
65
+ price: 0.42,
66
+ confidence: 0.8,
67
+ timestamp: new Date(),
68
+ sources: []
69
+ };
70
+ const isValid = riskManager.checkPriceConfidence(aggregatedPrice);
71
+ expect(isValid).toBe(true);
72
+ });
73
+ it('should reject price confidence below threshold', () => {
74
+ const aggregatedPrice = {
75
+ symbol: 'INDY/USDT',
76
+ price: 0.42,
77
+ confidence: 0.4,
78
+ timestamp: new Date(),
79
+ sources: []
80
+ };
81
+ const isValid = riskManager.checkPriceConfidence(aggregatedPrice);
82
+ expect(isValid).toBe(false);
83
+ });
84
+ });
85
+ describe('calculateAvailableBalance', () => {
86
+ it('should calculate 80% of total balance as available', () => {
87
+ const balance = {
88
+ asset: 'USDT',
89
+ free: 800,
90
+ used: 200,
91
+ total: 1000,
92
+ available: 800
93
+ };
94
+ const available = riskManager.calculateAvailableBalance(balance);
95
+ expect(available).toBe(800);
96
+ });
97
+ });
98
+ describe('validateTrade', () => {
99
+ it('should validate trade with good confidence and position size', () => {
100
+ const order = {
101
+ id: 'test-order',
102
+ symbol: 'INDY/USDT',
103
+ type: 'limit',
104
+ side: 'buy',
105
+ amount: 100,
106
+ price: 0.42,
107
+ filled: 0,
108
+ remaining: 100,
109
+ status: 'open',
110
+ timestamp: Date.now()
111
+ };
112
+ const balance = {
113
+ asset: 'USDT',
114
+ free: 600,
115
+ used: 200,
116
+ total: 1000,
117
+ available: 600
118
+ };
119
+ const aggregatedPrice = {
120
+ symbol: 'INDY/USDT',
121
+ price: 0.42,
122
+ confidence: 0.8,
123
+ timestamp: new Date(),
124
+ sources: []
125
+ };
126
+ const result = riskManager.validateTrade(order, balance, aggregatedPrice);
127
+ expect(result.valid).toBe(true);
128
+ expect(result.reason).toBeUndefined();
129
+ });
130
+ it('should reject trade with low confidence', () => {
131
+ const order = {
132
+ id: 'test-order',
133
+ symbol: 'INDY/USDT',
134
+ type: 'limit',
135
+ side: 'buy',
136
+ amount: 100,
137
+ price: 0.42,
138
+ filled: 0,
139
+ remaining: 100,
140
+ status: 'open',
141
+ timestamp: Date.now()
142
+ };
143
+ const balance = {
144
+ asset: 'USDT',
145
+ free: 600,
146
+ used: 200,
147
+ total: 1000,
148
+ available: 600
149
+ };
150
+ const aggregatedPrice = {
151
+ symbol: 'INDY/USDT',
152
+ price: 0.42,
153
+ confidence: 0.4,
154
+ timestamp: new Date(),
155
+ sources: []
156
+ };
157
+ const result = riskManager.validateTrade(order, balance, aggregatedPrice);
158
+ expect(result.valid).toBe(false);
159
+ expect(result.reason).toContain('Price confidence too low');
160
+ });
161
+ it('should reject trade exceeding position limit', () => {
162
+ const order = {
163
+ id: 'test-order',
164
+ symbol: 'INDY/USDT',
165
+ type: 'limit',
166
+ side: 'buy',
167
+ amount: 2000,
168
+ price: 0.42,
169
+ filled: 0,
170
+ remaining: 2000,
171
+ status: 'open',
172
+ timestamp: Date.now()
173
+ };
174
+ const balance = {
175
+ asset: 'USDT',
176
+ free: 200,
177
+ used: 600,
178
+ total: 1000,
179
+ available: 200
180
+ };
181
+ const aggregatedPrice = {
182
+ symbol: 'INDY/USDT',
183
+ price: 0.42,
184
+ confidence: 0.8,
185
+ timestamp: new Date(),
186
+ sources: []
187
+ };
188
+ const result = riskManager.validateTrade(order, balance, aggregatedPrice);
189
+ expect(result.valid).toBe(false);
190
+ expect(result.reason).toContain('Position size would exceed 80% limit');
191
+ });
192
+ });
193
+ });
194
+ //# sourceMappingURL=risk-manager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"risk-manager.test.js","sourceRoot":"","sources":["../../../../../src/tests/unit/core/risk-management/risk-manager.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=base-strategy.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-strategy.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/unit/core/strategy/base-strategy.test.ts"],"names":[],"mappings":""}