@3rd-eye-labs/openmm 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -0
  3. package/dist/cli/cli.d.ts +3 -0
  4. package/dist/cli/cli.d.ts.map +1 -0
  5. package/dist/cli/cli.js +43 -0
  6. package/dist/cli/cli.js.map +1 -0
  7. package/dist/cli/commands/balance.d.ts +3 -0
  8. package/dist/cli/commands/balance.d.ts.map +1 -0
  9. package/dist/cli/commands/balance.js +51 -0
  10. package/dist/cli/commands/balance.js.map +1 -0
  11. package/dist/cli/commands/orderbook.d.ts +3 -0
  12. package/dist/cli/commands/orderbook.d.ts.map +1 -0
  13. package/dist/cli/commands/orderbook.js +83 -0
  14. package/dist/cli/commands/orderbook.js.map +1 -0
  15. package/dist/cli/commands/orders.d.ts +3 -0
  16. package/dist/cli/commands/orders.d.ts.map +1 -0
  17. package/dist/cli/commands/orders.js +196 -0
  18. package/dist/cli/commands/orders.js.map +1 -0
  19. package/dist/cli/commands/pool-discovery.d.ts +3 -0
  20. package/dist/cli/commands/pool-discovery.d.ts.map +1 -0
  21. package/dist/cli/commands/pool-discovery.js +60 -0
  22. package/dist/cli/commands/pool-discovery.js.map +1 -0
  23. package/dist/cli/commands/ticker.d.ts +3 -0
  24. package/dist/cli/commands/ticker.d.ts.map +1 -0
  25. package/dist/cli/commands/ticker.js +51 -0
  26. package/dist/cli/commands/ticker.js.map +1 -0
  27. package/dist/cli/commands/trade.d.ts +3 -0
  28. package/dist/cli/commands/trade.d.ts.map +1 -0
  29. package/dist/cli/commands/trade.js +110 -0
  30. package/dist/cli/commands/trade.js.map +1 -0
  31. package/dist/cli/commands/trades.d.ts +3 -0
  32. package/dist/cli/commands/trades.d.ts.map +1 -0
  33. package/dist/cli/commands/trades.js +73 -0
  34. package/dist/cli/commands/trades.js.map +1 -0
  35. package/dist/cli/exchange-factory.d.ts +40 -0
  36. package/dist/cli/exchange-factory.d.ts.map +1 -0
  37. package/dist/cli/exchange-factory.js +77 -0
  38. package/dist/cli/exchange-factory.js.map +1 -0
  39. package/dist/cli/pool-discovery-core.d.ts +54 -0
  40. package/dist/cli/pool-discovery-core.d.ts.map +1 -0
  41. package/dist/cli/pool-discovery-core.js +193 -0
  42. package/dist/cli/pool-discovery-core.js.map +1 -0
  43. package/dist/cli/utils/error-handler.d.ts +40 -0
  44. package/dist/cli/utils/error-handler.d.ts.map +1 -0
  45. package/dist/cli/utils/error-handler.js +117 -0
  46. package/dist/cli/utils/error-handler.js.map +1 -0
  47. package/dist/cli/utils/validation.d.ts +45 -0
  48. package/dist/cli/utils/validation.d.ts.map +1 -0
  49. package/dist/cli/utils/validation.js +118 -0
  50. package/dist/cli/utils/validation.js.map +1 -0
  51. package/dist/config/environment.d.ts +25 -0
  52. package/dist/config/environment.d.ts.map +1 -0
  53. package/dist/config/environment.js +72 -0
  54. package/dist/config/environment.js.map +1 -0
  55. package/dist/config/index.d.ts +3 -0
  56. package/dist/config/index.d.ts.map +1 -0
  57. package/dist/config/index.js +21 -0
  58. package/dist/config/index.js.map +1 -0
  59. package/dist/config/launcher-config.d.ts +17 -0
  60. package/dist/config/launcher-config.d.ts.map +1 -0
  61. package/dist/config/launcher-config.js +14 -0
  62. package/dist/config/launcher-config.js.map +1 -0
  63. package/dist/config/price-aggregation.d.ts +49 -0
  64. package/dist/config/price-aggregation.d.ts.map +1 -0
  65. package/dist/config/price-aggregation.js +89 -0
  66. package/dist/config/price-aggregation.js.map +1 -0
  67. package/dist/core/exchange/base-exchange-connector.d.ts +45 -0
  68. package/dist/core/exchange/base-exchange-connector.d.ts.map +1 -0
  69. package/dist/core/exchange/base-exchange-connector.js +43 -0
  70. package/dist/core/exchange/base-exchange-connector.js.map +1 -0
  71. package/dist/core/exchange/base-exchange-data-mapper.d.ts +58 -0
  72. package/dist/core/exchange/base-exchange-data-mapper.d.ts.map +1 -0
  73. package/dist/core/exchange/base-exchange-data-mapper.js +60 -0
  74. package/dist/core/exchange/base-exchange-data-mapper.js.map +1 -0
  75. package/dist/core/price-aggregation/cardano-price-service.d.ts +31 -0
  76. package/dist/core/price-aggregation/cardano-price-service.d.ts.map +1 -0
  77. package/dist/core/price-aggregation/cardano-price-service.js +157 -0
  78. package/dist/core/price-aggregation/cardano-price-service.js.map +1 -0
  79. package/dist/core/price-aggregation/index.d.ts +11 -0
  80. package/dist/core/price-aggregation/index.d.ts.map +1 -0
  81. package/dist/core/price-aggregation/index.js +21 -0
  82. package/dist/core/price-aggregation/index.js.map +1 -0
  83. package/dist/core/price-aggregation/iris-api-client.d.ts +16 -0
  84. package/dist/core/price-aggregation/iris-api-client.d.ts.map +1 -0
  85. package/dist/core/price-aggregation/iris-api-client.js +62 -0
  86. package/dist/core/price-aggregation/iris-api-client.js.map +1 -0
  87. package/dist/core/price-aggregation/iris-pool-discovery.d.ts +37 -0
  88. package/dist/core/price-aggregation/iris-pool-discovery.d.ts.map +1 -0
  89. package/dist/core/price-aggregation/iris-pool-discovery.js +123 -0
  90. package/dist/core/price-aggregation/iris-pool-discovery.js.map +1 -0
  91. package/dist/core/price-aggregation/price-calculator.d.ts +27 -0
  92. package/dist/core/price-aggregation/price-calculator.d.ts.map +1 -0
  93. package/dist/core/price-aggregation/price-calculator.js +84 -0
  94. package/dist/core/price-aggregation/price-calculator.js.map +1 -0
  95. package/dist/core/risk-management/risk-manager.d.ts +14 -0
  96. package/dist/core/risk-management/risk-manager.d.ts.map +1 -0
  97. package/dist/core/risk-management/risk-manager.js +40 -0
  98. package/dist/core/risk-management/risk-manager.js.map +1 -0
  99. package/dist/core/strategy/base-strategy.d.ts +26 -0
  100. package/dist/core/strategy/base-strategy.d.ts.map +1 -0
  101. package/dist/core/strategy/base-strategy.js +46 -0
  102. package/dist/core/strategy/base-strategy.js.map +1 -0
  103. package/dist/core/strategy/strategy-factory.d.ts +7 -0
  104. package/dist/core/strategy/strategy-factory.d.ts.map +1 -0
  105. package/dist/core/strategy/strategy-factory.js +64 -0
  106. package/dist/core/strategy/strategy-factory.js.map +1 -0
  107. package/dist/exchanges/mexc/mexc-auth.d.ts +42 -0
  108. package/dist/exchanges/mexc/mexc-auth.d.ts.map +1 -0
  109. package/dist/exchanges/mexc/mexc-auth.js +122 -0
  110. package/dist/exchanges/mexc/mexc-auth.js.map +1 -0
  111. package/dist/exchanges/mexc/mexc-connector.d.ts +125 -0
  112. package/dist/exchanges/mexc/mexc-connector.d.ts.map +1 -0
  113. package/dist/exchanges/mexc/mexc-connector.js +422 -0
  114. package/dist/exchanges/mexc/mexc-connector.js.map +1 -0
  115. package/dist/exchanges/mexc/mexc-data-mapper.d.ts +50 -0
  116. package/dist/exchanges/mexc/mexc-data-mapper.d.ts.map +1 -0
  117. package/dist/exchanges/mexc/mexc-data-mapper.js +127 -0
  118. package/dist/exchanges/mexc/mexc-data-mapper.js.map +1 -0
  119. package/dist/exchanges/mexc/mexc-protobuf-decoder.d.ts +43 -0
  120. package/dist/exchanges/mexc/mexc-protobuf-decoder.d.ts.map +1 -0
  121. package/dist/exchanges/mexc/mexc-protobuf-decoder.js +235 -0
  122. package/dist/exchanges/mexc/mexc-protobuf-decoder.js.map +1 -0
  123. package/dist/exchanges/mexc/mexc-user-stream.d.ts +81 -0
  124. package/dist/exchanges/mexc/mexc-user-stream.d.ts.map +1 -0
  125. package/dist/exchanges/mexc/mexc-user-stream.js +253 -0
  126. package/dist/exchanges/mexc/mexc-user-stream.js.map +1 -0
  127. package/dist/exchanges/mexc/mexc-utils.d.ts +31 -0
  128. package/dist/exchanges/mexc/mexc-utils.d.ts.map +1 -0
  129. package/dist/exchanges/mexc/mexc-utils.js +186 -0
  130. package/dist/exchanges/mexc/mexc-utils.js.map +1 -0
  131. package/dist/exchanges/mexc/mexc-websocket.d.ts +124 -0
  132. package/dist/exchanges/mexc/mexc-websocket.d.ts.map +1 -0
  133. package/dist/exchanges/mexc/mexc-websocket.js +496 -0
  134. package/dist/exchanges/mexc/mexc-websocket.js.map +1 -0
  135. package/dist/index.d.ts +12 -0
  136. package/dist/index.d.ts.map +1 -0
  137. package/dist/index.js +42 -0
  138. package/dist/index.js.map +1 -0
  139. package/dist/strategies/grid/grid-calculator.d.ts +7 -0
  140. package/dist/strategies/grid/grid-calculator.d.ts.map +1 -0
  141. package/dist/strategies/grid/grid-calculator.js +34 -0
  142. package/dist/strategies/grid/grid-calculator.js.map +1 -0
  143. package/dist/strategies/grid/grid-order-manager.d.ts +23 -0
  144. package/dist/strategies/grid/grid-order-manager.d.ts.map +1 -0
  145. package/dist/strategies/grid/grid-order-manager.js +99 -0
  146. package/dist/strategies/grid/grid-order-manager.js.map +1 -0
  147. package/dist/strategies/grid/grid-strategy.d.ts +29 -0
  148. package/dist/strategies/grid/grid-strategy.d.ts.map +1 -0
  149. package/dist/strategies/grid/grid-strategy.js +185 -0
  150. package/dist/strategies/grid/grid-strategy.js.map +1 -0
  151. package/dist/types/account.d.ts +21 -0
  152. package/dist/types/account.d.ts.map +1 -0
  153. package/dist/types/account.js +3 -0
  154. package/dist/types/account.js.map +1 -0
  155. package/dist/types/exchange.d.ts +67 -0
  156. package/dist/types/exchange.d.ts.map +1 -0
  157. package/dist/types/exchange.js +3 -0
  158. package/dist/types/exchange.js.map +1 -0
  159. package/dist/types/grid.d.ts +10 -0
  160. package/dist/types/grid.d.ts.map +1 -0
  161. package/dist/types/grid.js +3 -0
  162. package/dist/types/grid.js.map +1 -0
  163. package/dist/types/index.d.ts +11 -0
  164. package/dist/types/index.d.ts.map +1 -0
  165. package/dist/types/index.js +27 -0
  166. package/dist/types/index.js.map +1 -0
  167. package/dist/types/iris.d.ts +58 -0
  168. package/dist/types/iris.d.ts.map +1 -0
  169. package/dist/types/iris.js +7 -0
  170. package/dist/types/iris.js.map +1 -0
  171. package/dist/types/market.d.ts +16 -0
  172. package/dist/types/market.d.ts.map +1 -0
  173. package/dist/types/market.js +3 -0
  174. package/dist/types/market.js.map +1 -0
  175. package/dist/types/mexc-raw.d.ts +87 -0
  176. package/dist/types/mexc-raw.d.ts.map +1 -0
  177. package/dist/types/mexc-raw.js +7 -0
  178. package/dist/types/mexc-raw.js.map +1 -0
  179. package/dist/types/mexc.d.ts +57 -0
  180. package/dist/types/mexc.d.ts.map +1 -0
  181. package/dist/types/mexc.js +8 -0
  182. package/dist/types/mexc.js.map +1 -0
  183. package/dist/types/price.d.ts +37 -0
  184. package/dist/types/price.d.ts.map +1 -0
  185. package/dist/types/price.js +7 -0
  186. package/dist/types/price.js.map +1 -0
  187. package/dist/types/risk.d.ts +22 -0
  188. package/dist/types/risk.d.ts.map +1 -0
  189. package/dist/types/risk.js +6 -0
  190. package/dist/types/risk.js.map +1 -0
  191. package/dist/types/strategy.d.ts +46 -0
  192. package/dist/types/strategy.d.ts.map +1 -0
  193. package/dist/types/strategy.js +3 -0
  194. package/dist/types/strategy.js.map +1 -0
  195. package/dist/utils/index.d.ts +2 -0
  196. package/dist/utils/index.d.ts.map +1 -0
  197. package/dist/utils/index.js +8 -0
  198. package/dist/utils/index.js.map +1 -0
  199. package/dist/utils/logger.d.ts +29 -0
  200. package/dist/utils/logger.d.ts.map +1 -0
  201. package/dist/utils/logger.js +108 -0
  202. package/dist/utils/logger.js.map +1 -0
  203. package/dist/utils/symbol-utils.d.ts +17 -0
  204. package/dist/utils/symbol-utils.d.ts.map +1 -0
  205. package/dist/utils/symbol-utils.js +41 -0
  206. package/dist/utils/symbol-utils.js.map +1 -0
  207. package/package.json +53 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cardano-price-service.js","sourceRoot":"","sources":["../../../src/core/price-aggregation/cardano-price-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Price Aggregation Module
3
+ * Exports all components for Cardano native token price aggregation
4
+ */
5
+ export { CardanoPriceService } from './cardano-price-service';
6
+ export { IrisPoolDiscovery } from './iris-pool-discovery';
7
+ export { IrisApiClient } from './iris-api-client';
8
+ export { getTokenConfig, isTokenSupported, getSupportedTokens, SUPPORTED_TOKENS, IRIS_CONFIG, CEX_API_CONFIG } from '../../config/price-aggregation';
9
+ export type { CardanoTokenConfig } from '../../types/price';
10
+ export type { LiquidityPool, IrisApiResponse, PriceCalculationResult } from '../../types/iris';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/price-aggregation/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACf,MAAM,gCAAgC,CAAC;AAExC,YAAY,EACV,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,aAAa,EACb,eAAe,EACf,sBAAsB,EACvB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /**
3
+ * Price Aggregation Module
4
+ * Exports all components for Cardano native token price aggregation
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.CEX_API_CONFIG = exports.IRIS_CONFIG = exports.SUPPORTED_TOKENS = exports.getSupportedTokens = exports.isTokenSupported = exports.getTokenConfig = exports.IrisApiClient = exports.IrisPoolDiscovery = exports.CardanoPriceService = void 0;
8
+ var cardano_price_service_1 = require("./cardano-price-service");
9
+ Object.defineProperty(exports, "CardanoPriceService", { enumerable: true, get: function () { return cardano_price_service_1.CardanoPriceService; } });
10
+ var iris_pool_discovery_1 = require("./iris-pool-discovery");
11
+ Object.defineProperty(exports, "IrisPoolDiscovery", { enumerable: true, get: function () { return iris_pool_discovery_1.IrisPoolDiscovery; } });
12
+ var iris_api_client_1 = require("./iris-api-client");
13
+ Object.defineProperty(exports, "IrisApiClient", { enumerable: true, get: function () { return iris_api_client_1.IrisApiClient; } });
14
+ var price_aggregation_1 = require("../../config/price-aggregation");
15
+ Object.defineProperty(exports, "getTokenConfig", { enumerable: true, get: function () { return price_aggregation_1.getTokenConfig; } });
16
+ Object.defineProperty(exports, "isTokenSupported", { enumerable: true, get: function () { return price_aggregation_1.isTokenSupported; } });
17
+ Object.defineProperty(exports, "getSupportedTokens", { enumerable: true, get: function () { return price_aggregation_1.getSupportedTokens; } });
18
+ Object.defineProperty(exports, "SUPPORTED_TOKENS", { enumerable: true, get: function () { return price_aggregation_1.SUPPORTED_TOKENS; } });
19
+ Object.defineProperty(exports, "IRIS_CONFIG", { enumerable: true, get: function () { return price_aggregation_1.IRIS_CONFIG; } });
20
+ Object.defineProperty(exports, "CEX_API_CONFIG", { enumerable: true, get: function () { return price_aggregation_1.CEX_API_CONFIG; } });
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/price-aggregation/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAC5B,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAC1B,qDAAkD;AAAzC,gHAAA,aAAa,OAAA;AACtB,oEAOwC;AANtC,mHAAA,cAAc,OAAA;AACd,qHAAA,gBAAgB,OAAA;AAChB,uHAAA,kBAAkB,OAAA;AAClB,qHAAA,gBAAgB,OAAA;AAChB,gHAAA,WAAW,OAAA;AACX,mHAAA,cAAc,OAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Iris API Client
3
+ * Centralized client for all Iris API interactions
4
+ */
5
+ export declare class IrisApiClient {
6
+ private readonly baseUrl;
7
+ /**
8
+ * Fetch prices from Iris prices API using pool identifiers
9
+ */
10
+ fetchPrices(identifiers: string[], userAgent?: string): Promise<number[]>;
11
+ /**
12
+ * Fetch all liquidity pools from Iris API
13
+ */
14
+ fetchLiquidityPools(userAgent?: string): Promise<any[]>;
15
+ }
16
+ //# sourceMappingURL=iris-api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iris-api-client.d.ts","sourceRoot":"","sources":["../../../src/core/price-aggregation/iris-api-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAEhD;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,MAAqC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiC7G;;OAEG;IACG,mBAAmB,CAAC,SAAS,GAAE,MAAqC,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;CAiB5F"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /**
3
+ * Iris API Client
4
+ * Centralized client for all Iris API interactions
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.IrisApiClient = void 0;
8
+ const price_aggregation_1 = require("../../config/price-aggregation");
9
+ class IrisApiClient {
10
+ constructor() {
11
+ this.baseUrl = price_aggregation_1.IRIS_CONFIG.BASE_URL;
12
+ }
13
+ /**
14
+ * Fetch prices from Iris prices API using pool identifiers
15
+ */
16
+ async fetchPrices(identifiers, userAgent = 'OpenMM-PriceAggregator/1.0') {
17
+ const url = `${this.baseUrl}/api/liquidity-pools/prices`;
18
+ const response = await fetch(url, {
19
+ method: 'POST',
20
+ headers: {
21
+ 'Content-Type': 'application/json',
22
+ 'User-Agent': userAgent
23
+ },
24
+ body: JSON.stringify({
25
+ identifiers: identifiers
26
+ })
27
+ });
28
+ if (!response.ok) {
29
+ throw new Error(`Iris prices API error: ${response.status} ${response.statusText}`);
30
+ }
31
+ const data = await response.json();
32
+ if (!Array.isArray(data) || data.length === 0) {
33
+ throw new Error('Invalid response format from Iris prices API');
34
+ }
35
+ return data.map(entry => {
36
+ const price = parseFloat(entry.price);
37
+ if (isNaN(price) || price <= 0) {
38
+ throw new Error(`Invalid price value: ${entry.price}`);
39
+ }
40
+ return price;
41
+ });
42
+ }
43
+ /**
44
+ * Fetch all liquidity pools from Iris API
45
+ */
46
+ async fetchLiquidityPools(userAgent = 'OpenMM-PriceAggregator/1.0') {
47
+ const url = `${this.baseUrl}/api/liquidity-pools`;
48
+ const response = await fetch(url, {
49
+ headers: {
50
+ 'Content-Type': 'application/json',
51
+ 'User-Agent': userAgent
52
+ }
53
+ });
54
+ if (!response.ok) {
55
+ throw new Error(`Iris API error: ${response.status} ${response.statusText}`);
56
+ }
57
+ const data = await response.json();
58
+ return data?.data || [];
59
+ }
60
+ }
61
+ exports.IrisApiClient = IrisApiClient;
62
+ //# sourceMappingURL=iris-api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iris-api-client.js","sourceRoot":"","sources":["../../../src/core/price-aggregation/iris-api-client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,sEAA6D;AAE7D,MAAa,aAAa;IAA1B;QACmB,YAAO,GAAG,+BAAW,CAAC,QAAQ,CAAC;IA0DlD,CAAC;IAxDC;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,WAAqB,EAAE,YAAoB,4BAA4B;QACvF,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,6BAA6B,CAAC;QAEzD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,SAAS;aACxB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,WAAW,EAAE,WAAW;aACzB,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACtB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,YAAoB,4BAA4B;QACxE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,sBAAsB,CAAC;QAElD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,SAAS;aACxB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;IAC1B,CAAC;CACF;AA3DD,sCA2DC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Iris Pool Discovery
3
+ * Handles automatic discovery and ranking of liquidity pools via Iris API
4
+ */
5
+ import { LiquidityPool } from '../../types/iris';
6
+ import { CardanoTokenConfig } from '../../types/price';
7
+ export declare class IrisPoolDiscovery {
8
+ private irisClient;
9
+ constructor();
10
+ /**
11
+ * Discover and rank pools for a given token pair
12
+ * Sort by liquidity (TVL)
13
+ */
14
+ discoverPools(baseAsset: string, tokenConfig: CardanoTokenConfig): Promise<LiquidityPool[]>;
15
+ /**
16
+ * Fetch liquidity pools from Iris API
17
+ * Updated to work with actual API format: /api/liquidity-pools
18
+ */
19
+ private fetchPoolsFromIris;
20
+ /**
21
+ * Filter pools to find those matching the specified token pair
22
+ */
23
+ private filterPoolsByToken;
24
+ /**
25
+ * Check if pool contains the target token
26
+ */
27
+ private poolContainsToken;
28
+ /**
29
+ * Check if pool contains the base asset (usually ADA/lovelace)
30
+ */
31
+ private poolContainsBaseAsset;
32
+ /**
33
+ * Convert Iris API pool format to our LiquidityPool interface
34
+ */
35
+ private convertToLiquidityPool;
36
+ }
37
+ //# sourceMappingURL=iris-pool-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iris-pool-discovery.d.ts","sourceRoot":"","sources":["../../../src/core/price-aggregation/iris-pool-discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AAGrD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAgB;;IAMlC;;;OAGG;IACG,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC,aAAa,EAAE,CAAC;IA+B3B;;;OAGG;YACW,kBAAkB;IAQhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsB1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CA8B/B"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ /**
3
+ * Iris Pool Discovery
4
+ * Handles automatic discovery and ranking of liquidity pools via Iris API
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.IrisPoolDiscovery = void 0;
8
+ const iris_api_client_1 = require("./iris-api-client");
9
+ class IrisPoolDiscovery {
10
+ constructor() {
11
+ this.irisClient = new iris_api_client_1.IrisApiClient();
12
+ }
13
+ /**
14
+ * Discover and rank pools for a given token pair
15
+ * Sort by liquidity (TVL)
16
+ */
17
+ async discoverPools(baseAsset, tokenConfig) {
18
+ try {
19
+ const pools = await this.fetchPoolsFromIris(baseAsset, tokenConfig);
20
+ if (pools.length === 0) {
21
+ throw new Error(`No liquidity pools found for ${tokenConfig.symbol}`);
22
+ }
23
+ const sortedPools = pools.sort((a, b) => Number(b.state?.tvl ?? 0) - Number(a.state?.tvl ?? 0));
24
+ const filteredPools = tokenConfig.minLiquidityThreshold
25
+ ? sortedPools.filter(pool => Number(pool.state?.tvl ?? 0) >= tokenConfig.minLiquidityThreshold)
26
+ : sortedPools;
27
+ if (filteredPools.length === 0) {
28
+ throw new Error(`No pools meet minimum liquidity threshold for ${tokenConfig.symbol} ` +
29
+ `(minimum: ${tokenConfig.minLiquidityThreshold})`);
30
+ }
31
+ return filteredPools;
32
+ }
33
+ catch (error) {
34
+ throw new Error(`Pool discovery failed for ${tokenConfig.symbol}: ${error}`);
35
+ }
36
+ }
37
+ /**
38
+ * Fetch liquidity pools from Iris API
39
+ * Updated to work with actual API format: /api/liquidity-pools
40
+ */
41
+ async fetchPoolsFromIris(baseAsset, tokenConfig) {
42
+ const allPools = await this.irisClient.fetchLiquidityPools();
43
+ return this.filterPoolsByToken(allPools, baseAsset, tokenConfig);
44
+ }
45
+ /**
46
+ * Filter pools to find those matching the specified token pair
47
+ */
48
+ filterPoolsByToken(pools, baseAsset, tokenConfig) {
49
+ const matchingPools = [];
50
+ for (const pool of pools) {
51
+ const hasTargetToken = this.poolContainsToken(pool, tokenConfig);
52
+ const hasBaseAsset = this.poolContainsBaseAsset(pool, baseAsset);
53
+ if (hasTargetToken && hasBaseAsset) {
54
+ const liquidityPool = this.convertToLiquidityPool(pool);
55
+ if (liquidityPool) {
56
+ matchingPools.push(liquidityPool);
57
+ }
58
+ }
59
+ }
60
+ return matchingPools;
61
+ }
62
+ /**
63
+ * Check if pool contains the target token
64
+ */
65
+ poolContainsToken(pool, tokenConfig) {
66
+ if (pool.tokenB && pool.tokenB.policyId === tokenConfig.policyId) {
67
+ const nameHex = pool.tokenB.nameHex?.toLowerCase();
68
+ const targetNameHex = tokenConfig.assetName.toLowerCase();
69
+ return nameHex === targetNameHex;
70
+ }
71
+ if (pool.tokenA && pool.tokenA.policyId === tokenConfig.policyId) {
72
+ const nameHex = pool.tokenA.nameHex?.toLowerCase();
73
+ const targetNameHex = tokenConfig.assetName.toLowerCase();
74
+ return nameHex === targetNameHex;
75
+ }
76
+ return false;
77
+ }
78
+ /**
79
+ * Check if pool contains the base asset (usually ADA/lovelace)
80
+ */
81
+ poolContainsBaseAsset(pool, baseAsset) {
82
+ if (baseAsset === 'lovelace') {
83
+ return pool.tokenA === null;
84
+ }
85
+ return ((pool.tokenA && pool.tokenA.policyId === baseAsset) ||
86
+ (pool.tokenB && pool.tokenB.policyId === baseAsset));
87
+ }
88
+ /**
89
+ * Convert Iris API pool format to our LiquidityPool interface
90
+ */
91
+ convertToLiquidityPool(pool) {
92
+ try {
93
+ const tvl = pool.state?.tvl || 0;
94
+ const reserveA = pool.state?.reserveA || 0;
95
+ const reserveB = pool.state?.reserveB || 0;
96
+ return {
97
+ identifier: pool.identifier || '',
98
+ dex: pool.dex || 'unknown',
99
+ address: pool.address || '',
100
+ pair: {
101
+ tokenA: pool.tokenA || { symbol: 'ADA', policyId: null },
102
+ tokenB: pool.tokenB || { symbol: 'Unknown', policyId: null }
103
+ },
104
+ state: {
105
+ tvl,
106
+ reserveA,
107
+ reserveB,
108
+ price: reserveB > 0 && reserveA > 0 ? reserveA / reserveB : 0,
109
+ liquidityProvider: pool.state?.liquidityProvider || 'unknown'
110
+ },
111
+ createdSlot: pool.createdSlot || 0,
112
+ lastUpdated: new Date(),
113
+ isActive: tvl > 0 && reserveA > 0 && reserveB > 0
114
+ };
115
+ }
116
+ catch (error) {
117
+ console.warn('Failed to convert pool:', pool, error);
118
+ return null;
119
+ }
120
+ }
121
+ }
122
+ exports.IrisPoolDiscovery = IrisPoolDiscovery;
123
+ //# sourceMappingURL=iris-pool-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iris-pool-discovery.js","sourceRoot":"","sources":["../../../src/core/price-aggregation/iris-pool-discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Price Calculator
3
+ * Handles liquidity-weighted price calculations following buyback bot patterns
4
+ */
5
+ import { LiquidityPool, PriceCalculationResult } from '../../types';
6
+ export declare class PriceCalculator {
7
+ /**
8
+ * Calculate liquidity-weighted price (exactly like buyback bot)
9
+ * Weights each pool's price by its TVL relative to total liquidity
10
+ */
11
+ calculateLiquidityWeightedPrice(pools: LiquidityPool[], priceOverrides?: number[]): PriceCalculationResult;
12
+ /**
13
+ * Calculate price from individual pool reserves
14
+ * Returns ADA per TOKEN (reserveB / reserveA)
15
+ * reserveA = Token reserves, reserveB = ADA reserves
16
+ */
17
+ private calculatePoolPrice;
18
+ /**
19
+ * Calculate confidence score based on pool distribution and liquidity
20
+ */
21
+ private calculateConfidence;
22
+ /**
23
+ * Validate pool has required data for price calculation
24
+ */
25
+ private isValidPool;
26
+ }
27
+ //# sourceMappingURL=price-calculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"price-calculator.d.ts","sourceRoot":"","sources":["../../../src/core/price-aggregation/price-calculator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,aAAa,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAElE,qBAAa,eAAe;IAC1B;;;OAGG;IACH,+BAA+B,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,sBAAsB;IAmC1G;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,WAAW;CAWpB"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ /**
3
+ * Price Calculator
4
+ * Handles liquidity-weighted price calculations following buyback bot patterns
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.PriceCalculator = void 0;
8
+ class PriceCalculator {
9
+ /**
10
+ * Calculate liquidity-weighted price (exactly like buyback bot)
11
+ * Weights each pool's price by its TVL relative to total liquidity
12
+ */
13
+ calculateLiquidityWeightedPrice(pools, priceOverrides) {
14
+ if (pools.length === 0) {
15
+ throw new Error('No pools provided for price calculation');
16
+ }
17
+ const validPools = pools.filter(pool => this.isValidPool(pool));
18
+ if (validPools.length === 0) {
19
+ throw new Error('No valid pools found for price calculation');
20
+ }
21
+ const totalTvl = validPools.reduce((sum, pool) => sum + Number(pool.state?.tvl ?? 0), 0);
22
+ if (totalTvl === 0) {
23
+ throw new Error('No liquidity available for price calculation');
24
+ }
25
+ const weightedPrice = validPools.reduce((weightedSum, pool, index) => {
26
+ const weight = Number(pool.state?.tvl ?? 0) / totalTvl;
27
+ const poolPrice = priceOverrides ? priceOverrides[index] : this.calculatePoolPrice(pool);
28
+ return weightedSum + (poolPrice * weight);
29
+ }, 0);
30
+ const confidence = this.calculateConfidence(validPools, totalTvl);
31
+ return {
32
+ price: weightedPrice,
33
+ confidence,
34
+ poolsUsed: validPools.length,
35
+ totalLiquidity: totalTvl,
36
+ timestamp: new Date()
37
+ };
38
+ }
39
+ /**
40
+ * Calculate price from individual pool reserves
41
+ * Returns ADA per TOKEN (reserveB / reserveA)
42
+ * reserveA = Token reserves, reserveB = ADA reserves
43
+ */
44
+ calculatePoolPrice(pool) {
45
+ const { reserveA, reserveB } = pool.state;
46
+ if (!reserveA || !reserveB || reserveA === 0) {
47
+ throw new Error(`Invalid pool reserves for ${pool.identifier}: A=${reserveA}, B=${reserveB}`);
48
+ }
49
+ return reserveB / reserveA;
50
+ }
51
+ /**
52
+ * Calculate confidence score based on pool distribution and liquidity
53
+ */
54
+ calculateConfidence(pools, totalTvl) {
55
+ if (pools.length === 0)
56
+ return 0;
57
+ if (pools.length === 1)
58
+ return 0.7;
59
+ let confidence = Math.min(0.9, 0.5 + (pools.length * 0.1));
60
+ const topPoolTvl = Number(pools[0].state?.tvl ?? 0);
61
+ const concentration = topPoolTvl / totalTvl;
62
+ if (concentration > 0.8) {
63
+ confidence *= 0.8;
64
+ }
65
+ else if (concentration > 0.6) {
66
+ confidence *= 0.9;
67
+ }
68
+ return Math.max(confidence, 0.5);
69
+ }
70
+ /**
71
+ * Validate pool has required data for price calculation
72
+ */
73
+ isValidPool(pool) {
74
+ return !!(pool.state &&
75
+ pool.state.tvl > 0 &&
76
+ pool.state.reserveA > 0 &&
77
+ pool.state.reserveB > 0 &&
78
+ isFinite(pool.state.reserveA) &&
79
+ isFinite(pool.state.reserveB) &&
80
+ isFinite(pool.state.tvl));
81
+ }
82
+ }
83
+ exports.PriceCalculator = PriceCalculator;
84
+ //# sourceMappingURL=price-calculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"price-calculator.js","sourceRoot":"","sources":["../../../src/core/price-aggregation/price-calculator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Order, Balance, AggregatedPrice, RiskManagerConfig } from '../../types';
2
+ export declare class RiskManager {
3
+ private config;
4
+ constructor(config: RiskManagerConfig);
5
+ validatePosition(newOrder: Order, balance: Balance): boolean;
6
+ checkPriceConfidence(aggregatedPrice: AggregatedPrice): boolean;
7
+ calculateAvailableBalance(balance: Balance): number;
8
+ private getCurrentExposure;
9
+ validateTrade(order: Order, balance: Balance, aggregatedPrice: AggregatedPrice): {
10
+ valid: boolean;
11
+ reason?: string;
12
+ };
13
+ }
14
+ //# sourceMappingURL=risk-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"risk-manager.d.ts","sourceRoot":"","sources":["../../../src/core/risk-management/risk-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEjF,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAoB;gBAEtB,MAAM,EAAE,iBAAiB;IAIrC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAQ5D,oBAAoB,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO;IAI/D,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAInD,OAAO,CAAC,kBAAkB;IAI1B,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,GAAG;QAC/E,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;CAiBF"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RiskManager = void 0;
4
+ class RiskManager {
5
+ constructor(config) {
6
+ this.config = config;
7
+ }
8
+ validatePosition(newOrder, balance) {
9
+ const currentExposure = this.getCurrentExposure(balance);
10
+ const orderValue = newOrder.amount * (newOrder.price || 0);
11
+ const totalExposure = currentExposure + orderValue;
12
+ return totalExposure <= balance.total * this.config.maxPositionSize;
13
+ }
14
+ checkPriceConfidence(aggregatedPrice) {
15
+ return aggregatedPrice.confidence >= this.config.minConfidence;
16
+ }
17
+ calculateAvailableBalance(balance) {
18
+ return balance.total * (1 - this.config.safetyReservePercentage);
19
+ }
20
+ getCurrentExposure(balance) {
21
+ return balance.used;
22
+ }
23
+ validateTrade(order, balance, aggregatedPrice) {
24
+ if (!this.checkPriceConfidence(aggregatedPrice)) {
25
+ return {
26
+ valid: false,
27
+ reason: `Price confidence too low: ${aggregatedPrice.confidence} < ${this.config.minConfidence}`
28
+ };
29
+ }
30
+ if (!this.validatePosition(order, balance)) {
31
+ return {
32
+ valid: false,
33
+ reason: `Position size would exceed ${this.config.maxPositionSize * 100}% limit`
34
+ };
35
+ }
36
+ return { valid: true };
37
+ }
38
+ }
39
+ exports.RiskManager = RiskManager;
40
+ //# sourceMappingURL=risk-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"risk-manager.js","sourceRoot":"","sources":["../../../src/core/risk-management/risk-manager.ts"],"names":[],"mappings":";;;AAEA,MAAa,WAAW;IAGtB,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,gBAAgB,CAAC,QAAe,EAAE,OAAgB;QAChD,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,eAAe,GAAG,UAAU,CAAC;QAEnD,OAAO,aAAa,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;IACtE,CAAC;IAED,oBAAoB,CAAC,eAAgC;QACnD,OAAO,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACjE,CAAC;IAED,yBAAyB,CAAC,OAAgB;QACxC,OAAO,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACnE,CAAC;IAEO,kBAAkB,CAAC,OAAgB;QACzC,OAAO,OAAO,CAAC,IAAI,CAAC;IACtB,CAAC;IAED,aAAa,CAAC,KAAY,EAAE,OAAgB,EAAE,eAAgC;QAI5E,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,EAAE,CAAC;YAChD,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,6BAA6B,eAAe,CAAC,UAAU,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;aACjG,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YAC3C,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,8BAA8B,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,GAAG,SAAS;aACjF,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;CACF;AA/CD,kCA+CC"}
@@ -0,0 +1,26 @@
1
+ import { Order } from '../../types';
2
+ import { StrategyType, StrategyStatus, StrategyConfig } from '../../types';
3
+ /**
4
+ * Abstract base class for all trading strategies
5
+ * Provides common functionality and defines the interface that all strategies must implement
6
+ */
7
+ export declare abstract class BaseStrategy {
8
+ protected readonly strategyId: string;
9
+ protected readonly strategyType: StrategyType;
10
+ protected status: StrategyStatus;
11
+ protected config?: StrategyConfig;
12
+ constructor(id: string, type: StrategyType);
13
+ get id(): string;
14
+ get type(): StrategyType;
15
+ get currentStatus(): StrategyStatus;
16
+ abstract initialize(config: StrategyConfig): Promise<void>;
17
+ abstract start(): Promise<void>;
18
+ abstract stop(): Promise<void>;
19
+ abstract onPriceUpdate(symbol: string, price: number): Promise<void>;
20
+ abstract onOrderUpdate(order: Order): Promise<void>;
21
+ protected setStatus(status: StrategyStatus): void;
22
+ protected getConfig(): StrategyConfig;
23
+ protected validateConfig(config: StrategyConfig): void;
24
+ protected handleError(error: any, operation: string): void;
25
+ }
26
+ //# sourceMappingURL=base-strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-strategy.d.ts","sourceRoot":"","sources":["../../../src/core/strategy/base-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3E;;;GAGG;AACH,8BAAsB,YAAY;IAChC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,MAAM,EAAE,cAAc,CAAU;IAC1C,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;gBAEtB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY;IAK1C,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,IAAI,IAAI,YAAY,CAEvB;IAED,IAAI,aAAa,IAAI,cAAc,CAElC;IAED,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1D,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACpE,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAGnD,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAIjD,SAAS,CAAC,SAAS,IAAI,cAAc;IAOrC,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAOtD,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;CAK3D"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseStrategy = void 0;
4
+ /**
5
+ * Abstract base class for all trading strategies
6
+ * Provides common functionality and defines the interface that all strategies must implement
7
+ */
8
+ class BaseStrategy {
9
+ constructor(id, type) {
10
+ this.status = 'idle';
11
+ this.strategyId = id;
12
+ this.strategyType = type;
13
+ }
14
+ get id() {
15
+ return this.strategyId;
16
+ }
17
+ get type() {
18
+ return this.strategyType;
19
+ }
20
+ get currentStatus() {
21
+ return this.status;
22
+ }
23
+ // Common utility methods
24
+ setStatus(status) {
25
+ this.status = status;
26
+ }
27
+ getConfig() {
28
+ if (!this.config) {
29
+ throw new Error(`Strategy ${this.strategyId} not initialized`);
30
+ }
31
+ return this.config;
32
+ }
33
+ validateConfig(config) {
34
+ if (!config.id || !config.type || !config.symbol || !config.exchange) {
35
+ throw new Error('Invalid strategy configuration');
36
+ }
37
+ }
38
+ // Error handling helper
39
+ handleError(error, operation) {
40
+ const message = error?.message || error?.toString() || 'Unknown error';
41
+ this.setStatus('error');
42
+ throw new Error(`Strategy ${this.strategyId} ${operation} failed: ${message}`);
43
+ }
44
+ }
45
+ exports.BaseStrategy = BaseStrategy;
46
+ //# sourceMappingURL=base-strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-strategy.js","sourceRoot":"","sources":["../../../src/core/strategy/base-strategy.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,MAAsB,YAAY;IAMhC,YAAY,EAAU,EAAE,IAAkB;QAHhC,WAAM,GAAmB,MAAM,CAAC;QAIxC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IASD,yBAAyB;IACf,SAAS,CAAC,MAAsB;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,UAAU,kBAAkB,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAES,cAAc,CAAC,MAAsB;QAC7C,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,wBAAwB;IACd,WAAW,CAAC,KAAU,EAAE,SAAiB;QACjD,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,QAAQ,EAAE,IAAI,eAAe,CAAC;QACvE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,UAAU,IAAI,SAAS,YAAY,OAAO,EAAE,CAAC,CAAC;IACjF,CAAC;CACF;AAtDD,oCAsDC"}
@@ -0,0 +1,7 @@
1
+ import { BaseStrategy } from './base-strategy';
2
+ import { LauncherConfig, GridLauncherParams } from '../../config/launcher-config';
3
+ export declare class StrategyFactory {
4
+ static create(config: LauncherConfig, params?: GridLauncherParams): Promise<BaseStrategy>;
5
+ private static createGridStrategy;
6
+ }
7
+ //# sourceMappingURL=strategy-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy-factory.d.ts","sourceRoot":"","sources":["../../../src/core/strategy/strategy-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAuB,MAAM,8BAA8B,CAAC;AAIvG,qBAAa,eAAe;WACb,MAAM,CACjB,MAAM,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;mBAgBH,kBAAkB;CAkDxC"}