@continuumdao/continuum-node-sdk 1.3.30 → 1.3.32

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 (222) hide show
  1. package/dist/agent-host-catalog.json +7 -0
  2. package/dist/core/chart/analysis/analysis-agent-view.d.ts.map +1 -1
  3. package/dist/core/chart/analysis/analysis-agent-view.js +48 -7
  4. package/dist/core/chart/analysis/analysis-agent-view.js.map +1 -1
  5. package/dist/core/chart/analysis/analysis-catalog.d.ts +19 -13
  6. package/dist/core/chart/analysis/analysis-catalog.d.ts.map +1 -1
  7. package/dist/core/chart/analysis/analysis-catalog.js +132 -106
  8. package/dist/core/chart/analysis/analysis-catalog.js.map +1 -1
  9. package/dist/core/chart/analysis/elliott-wave-drawings-tools.d.ts +31 -0
  10. package/dist/core/chart/analysis/elliott-wave-drawings-tools.d.ts.map +1 -0
  11. package/dist/core/chart/analysis/elliott-wave-drawings-tools.js +301 -0
  12. package/dist/core/chart/analysis/elliott-wave-drawings-tools.js.map +1 -0
  13. package/dist/core/chart/analysis/elliott-waves-analyze-tools.d.ts +161 -0
  14. package/dist/core/chart/analysis/elliott-waves-analyze-tools.d.ts.map +1 -0
  15. package/dist/core/chart/analysis/elliott-waves-analyze-tools.js +139 -0
  16. package/dist/core/chart/analysis/elliott-waves-analyze-tools.js.map +1 -0
  17. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.d.ts +10 -0
  18. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.d.ts.map +1 -0
  19. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.js +123 -0
  20. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.js.map +1 -0
  21. package/dist/core/chart/analysis/trade-setups/build-trade.d.ts +29 -1
  22. package/dist/core/chart/analysis/trade-setups/build-trade.d.ts.map +1 -1
  23. package/dist/core/chart/analysis/trade-setups/build-trade.js +267 -8
  24. package/dist/core/chart/analysis/trade-setups/build-trade.js.map +1 -1
  25. package/dist/core/chart/analysis/trade-setups/elliott-waves-trade-setup.d.ts +50 -0
  26. package/dist/core/chart/analysis/trade-setups/elliott-waves-trade-setup.d.ts.map +1 -0
  27. package/dist/core/chart/analysis/trade-setups/elliott-waves-trade-setup.js +116 -0
  28. package/dist/core/chart/analysis/trade-setups/elliott-waves-trade-setup.js.map +1 -0
  29. package/dist/core/chart/analysis/trade-setups/shared.d.ts +1 -1
  30. package/dist/core/chart/analysis/trade-setups/shared.d.ts.map +1 -1
  31. package/dist/core/chart/analysis/trade-setups/shared.js +2 -0
  32. package/dist/core/chart/analysis/trade-setups/shared.js.map +1 -1
  33. package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.d.ts +13 -1
  34. package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.d.ts.map +1 -1
  35. package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.js +11 -0
  36. package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.js.map +1 -1
  37. package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts +2 -0
  38. package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts.map +1 -1
  39. package/dist/core/chart/analysis/trade-setups/trade-idea-list.js +38 -3
  40. package/dist/core/chart/analysis/trade-setups/trade-idea-list.js.map +1 -1
  41. package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts +4 -0
  42. package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts.map +1 -1
  43. package/dist/core/chart/analysis/trade-setups/trade-idea.js +4 -0
  44. package/dist/core/chart/analysis/trade-setups/trade-idea.js.map +1 -1
  45. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts +2 -0
  46. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts.map +1 -1
  47. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js +6 -0
  48. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js.map +1 -1
  49. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.d.ts +8 -1
  50. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.d.ts.map +1 -1
  51. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.js +13 -0
  52. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.js.map +1 -1
  53. package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.d.ts +20 -0
  54. package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.d.ts.map +1 -1
  55. package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.js +54 -0
  56. package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.js.map +1 -1
  57. package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.d.ts +41 -0
  58. package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.d.ts.map +1 -0
  59. package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.js +80 -0
  60. package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.js.map +1 -0
  61. package/dist/core/chart/fetch-agent-view.d.ts +17 -0
  62. package/dist/core/chart/fetch-agent-view.d.ts.map +1 -0
  63. package/dist/core/chart/fetch-agent-view.js +39 -0
  64. package/dist/core/chart/fetch-agent-view.js.map +1 -0
  65. package/dist/core/chart/live/binding-extract.d.ts.map +1 -1
  66. package/dist/core/chart/live/binding-extract.js +34 -2
  67. package/dist/core/chart/live/binding-extract.js.map +1 -1
  68. package/dist/core/chart/live/fetch-tick.d.ts.map +1 -1
  69. package/dist/core/chart/live/fetch-tick.js +25 -1
  70. package/dist/core/chart/live/fetch-tick.js.map +1 -1
  71. package/dist/core/chart/live/index.d.ts +1 -1
  72. package/dist/core/chart/live/index.d.ts.map +1 -1
  73. package/dist/core/chart/live/index.js +1 -1
  74. package/dist/core/chart/live/index.js.map +1 -1
  75. package/dist/core/chart/live/schemas.d.ts +1 -0
  76. package/dist/core/chart/live/schemas.d.ts.map +1 -1
  77. package/dist/core/chart/live/schemas.js +1 -0
  78. package/dist/core/chart/live/schemas.js.map +1 -1
  79. package/dist/core/chart/overlay-schemas.d.ts +241 -0
  80. package/dist/core/chart/overlay-schemas.d.ts.map +1 -1
  81. package/dist/core/chart/overlay-schemas.js +63 -0
  82. package/dist/core/chart/overlay-schemas.js.map +1 -1
  83. package/dist/core/chart/overlays.d.ts.map +1 -1
  84. package/dist/core/chart/overlays.js +72 -1
  85. package/dist/core/chart/overlays.js.map +1 -1
  86. package/dist/core/chart/prepare-from-rows.d.ts +60 -0
  87. package/dist/core/chart/prepare-from-rows.d.ts.map +1 -1
  88. package/dist/core/chart/schemas.d.ts +240 -0
  89. package/dist/core/chart/schemas.d.ts.map +1 -1
  90. package/dist/core/coinmarketcap/schemas.d.ts +2 -2
  91. package/dist/core/elliott-waves/analyze.d.ts +38 -0
  92. package/dist/core/elliott-waves/analyze.d.ts.map +1 -0
  93. package/dist/core/elliott-waves/analyze.js +276 -0
  94. package/dist/core/elliott-waves/analyze.js.map +1 -0
  95. package/dist/core/elliott-waves/constants.d.ts +24 -0
  96. package/dist/core/elliott-waves/constants.d.ts.map +1 -0
  97. package/dist/core/elliott-waves/constants.js +24 -0
  98. package/dist/core/elliott-waves/constants.js.map +1 -0
  99. package/dist/core/elliott-waves/data-requirements.d.ts +22 -0
  100. package/dist/core/elliott-waves/data-requirements.d.ts.map +1 -0
  101. package/dist/core/elliott-waves/data-requirements.js +105 -0
  102. package/dist/core/elliott-waves/data-requirements.js.map +1 -0
  103. package/dist/core/elliott-waves/fibonacci-projector.d.ts +7 -0
  104. package/dist/core/elliott-waves/fibonacci-projector.d.ts.map +1 -0
  105. package/dist/core/elliott-waves/fibonacci-projector.js +20 -0
  106. package/dist/core/elliott-waves/fibonacci-projector.js.map +1 -0
  107. package/dist/core/elliott-waves/impulse-detector.d.ts +11 -0
  108. package/dist/core/elliott-waves/impulse-detector.d.ts.map +1 -0
  109. package/dist/core/elliott-waves/impulse-detector.js +294 -0
  110. package/dist/core/elliott-waves/impulse-detector.js.map +1 -0
  111. package/dist/core/elliott-waves/index.d.ts +10 -0
  112. package/dist/core/elliott-waves/index.d.ts.map +1 -0
  113. package/dist/core/elliott-waves/index.js +10 -0
  114. package/dist/core/elliott-waves/index.js.map +1 -0
  115. package/dist/core/elliott-waves/pivot-scanner.d.ts +40 -0
  116. package/dist/core/elliott-waves/pivot-scanner.d.ts.map +1 -0
  117. package/dist/core/elliott-waves/pivot-scanner.js +121 -0
  118. package/dist/core/elliott-waves/pivot-scanner.js.map +1 -0
  119. package/dist/core/elliott-waves/projection-builder.d.ts +32 -0
  120. package/dist/core/elliott-waves/projection-builder.d.ts.map +1 -0
  121. package/dist/core/elliott-waves/projection-builder.js +153 -0
  122. package/dist/core/elliott-waves/projection-builder.js.map +1 -0
  123. package/dist/core/elliott-waves/types.d.ts +117 -0
  124. package/dist/core/elliott-waves/types.d.ts.map +1 -0
  125. package/dist/core/elliott-waves/types.js +6 -0
  126. package/dist/core/elliott-waves/types.js.map +1 -0
  127. package/dist/core/elliott-waves/wave-labeler.d.ts +34 -0
  128. package/dist/core/elliott-waves/wave-labeler.d.ts.map +1 -0
  129. package/dist/core/elliott-waves/wave-labeler.js +95 -0
  130. package/dist/core/elliott-waves/wave-labeler.js.map +1 -0
  131. package/dist/core/elliott-waves/wave-math.d.ts +10 -0
  132. package/dist/core/elliott-waves/wave-math.d.ts.map +1 -0
  133. package/dist/core/elliott-waves/wave-math.js +61 -0
  134. package/dist/core/elliott-waves/wave-math.js.map +1 -0
  135. package/dist/core/mpc/broadcast-sign-result.d.ts +1 -0
  136. package/dist/core/mpc/broadcast-sign-result.d.ts.map +1 -1
  137. package/dist/core/mpc/broadcast-sign-result.js +129 -0
  138. package/dist/core/mpc/broadcast-sign-result.js.map +1 -1
  139. package/dist/core/mpc/deliver-arcus-exchange.d.ts +17 -0
  140. package/dist/core/mpc/deliver-arcus-exchange.d.ts.map +1 -0
  141. package/dist/core/mpc/deliver-arcus-exchange.js +380 -0
  142. package/dist/core/mpc/deliver-arcus-exchange.js.map +1 -0
  143. package/dist/core/mpc/deliver-hyperliquid-exchange.d.ts +13 -0
  144. package/dist/core/mpc/deliver-hyperliquid-exchange.d.ts.map +1 -0
  145. package/dist/core/mpc/deliver-hyperliquid-exchange.js +93 -0
  146. package/dist/core/mpc/deliver-hyperliquid-exchange.js.map +1 -0
  147. package/dist/core/mpc/deliver-personal-sign.d.ts +13 -0
  148. package/dist/core/mpc/deliver-personal-sign.d.ts.map +1 -0
  149. package/dist/core/mpc/deliver-personal-sign.js +17 -0
  150. package/dist/core/mpc/deliver-personal-sign.js.map +1 -0
  151. package/dist/core/mpc/deliver-uniswapx-limit-order.d.ts +6 -0
  152. package/dist/core/mpc/deliver-uniswapx-limit-order.d.ts.map +1 -0
  153. package/dist/core/mpc/deliver-uniswapx-limit-order.js +59 -0
  154. package/dist/core/mpc/deliver-uniswapx-limit-order.js.map +1 -0
  155. package/dist/core/mpc/eip712-sign-request.d.ts +8 -0
  156. package/dist/core/mpc/eip712-sign-request.d.ts.map +1 -0
  157. package/dist/core/mpc/eip712-sign-request.js +65 -0
  158. package/dist/core/mpc/eip712-sign-request.js.map +1 -0
  159. package/dist/core/mpc/trigger-sign-result.d.ts.map +1 -1
  160. package/dist/core/mpc/trigger-sign-result.js +15 -1
  161. package/dist/core/mpc/trigger-sign-result.js.map +1 -1
  162. package/dist/mcp/agent-host-catalog.d.ts +1 -1
  163. package/dist/mcp/agent-host-catalog.d.ts.map +1 -1
  164. package/dist/mcp/agent-host-catalog.js +2 -1
  165. package/dist/mcp/agent-host-catalog.js.map +1 -1
  166. package/dist/mcp/chart.d.ts.map +1 -1
  167. package/dist/mcp/chart.js +33 -4
  168. package/dist/mcp/chart.js.map +1 -1
  169. package/dist/mcp/deferred/tool-group-map.d.ts.map +1 -1
  170. package/dist/mcp/deferred/tool-group-map.js +7 -0
  171. package/dist/mcp/deferred/tool-group-map.js.map +1 -1
  172. package/dist/mcp/defi/bitquery-api-key.d.ts +16 -0
  173. package/dist/mcp/defi/bitquery-api-key.d.ts.map +1 -0
  174. package/dist/mcp/defi/bitquery-api-key.js +86 -0
  175. package/dist/mcp/defi/bitquery-api-key.js.map +1 -0
  176. package/dist/mcp/defi/catalog-adapter.d.ts +3 -2
  177. package/dist/mcp/defi/catalog-adapter.d.ts.map +1 -1
  178. package/dist/mcp/defi/catalog-adapter.js +7 -2
  179. package/dist/mcp/defi/catalog-adapter.js.map +1 -1
  180. package/dist/mcp/defi/defi-protocol-fetch-meta.d.ts.map +1 -1
  181. package/dist/mcp/defi/defi-protocol-fetch-meta.js +8 -4
  182. package/dist/mcp/defi/defi-protocol-fetch-meta.js.map +1 -1
  183. package/dist/mcp/defi/eip712-multisign.d.ts +26 -0
  184. package/dist/mcp/defi/eip712-multisign.d.ts.map +1 -0
  185. package/dist/mcp/defi/eip712-multisign.js +74 -0
  186. package/dist/mcp/defi/eip712-multisign.js.map +1 -0
  187. package/dist/mcp/defi/handler.d.ts.map +1 -1
  188. package/dist/mcp/defi/handler.js +46 -29
  189. package/dist/mcp/defi/handler.js.map +1 -1
  190. package/dist/mcp/defi/ohlcv-chart-workflow.d.ts +4 -2
  191. package/dist/mcp/defi/ohlcv-chart-workflow.d.ts.map +1 -1
  192. package/dist/mcp/defi/ohlcv-chart-workflow.js +20 -8
  193. package/dist/mcp/defi/ohlcv-chart-workflow.js.map +1 -1
  194. package/dist/mcp/defi/register-protocol-tools.d.ts.map +1 -1
  195. package/dist/mcp/defi/register-protocol-tools.js +36 -5
  196. package/dist/mcp/defi/register-protocol-tools.js.map +1 -1
  197. package/dist/mcp/defi/tool-schemas.d.ts +1 -3
  198. package/dist/mcp/defi/tool-schemas.d.ts.map +1 -1
  199. package/dist/mcp/defi/uniswap-api-key.d.ts.map +1 -1
  200. package/dist/mcp/defi/uniswap-api-key.js +3 -0
  201. package/dist/mcp/defi/uniswap-api-key.js.map +1 -1
  202. package/dist/mcp/defi/uniswap-limit-order-input.d.ts +10 -0
  203. package/dist/mcp/defi/uniswap-limit-order-input.d.ts.map +1 -0
  204. package/dist/mcp/defi/uniswap-limit-order-input.js +39 -0
  205. package/dist/mcp/defi/uniswap-limit-order-input.js.map +1 -0
  206. package/dist/mcp/defi/uniswap-quote-input.d.ts.map +1 -1
  207. package/dist/mcp/defi/uniswap-quote-input.js +45 -26
  208. package/dist/mcp/defi/uniswap-quote-input.js.map +1 -1
  209. package/dist/mcp/defi/uniswap-v4-ohlcv-chains.d.ts +2 -2
  210. package/dist/mcp/defi/uniswap-v4-ohlcv-chains.js +3 -3
  211. package/dist/mcp/defi/uniswap-v4-ohlcv-chains.js.map +1 -1
  212. package/dist/mcp/ohlcv-session-wrapper.d.ts.map +1 -1
  213. package/dist/mcp/ohlcv-session-wrapper.js +56 -2
  214. package/dist/mcp/ohlcv-session-wrapper.js.map +1 -1
  215. package/dist/mcp/resources/agent-cron-jobs.md +22 -1
  216. package/dist/mcp/resources/chart-analysis.md +37 -3
  217. package/dist/mcp/resources/chart.md +5 -2
  218. package/dist/mcp/resources/uniswap-tpsl-monitor-cron.example.md +27 -0
  219. package/dist/mcp/trade-tools.d.ts.map +1 -1
  220. package/dist/mcp/trade-tools.js +192 -4
  221. package/dist/mcp/trade-tools.js.map +1 -1
  222. package/package.json +2 -2
@@ -0,0 +1,294 @@
1
+ import { FIB_EXT_C, THRESHOLDS } from './constants.js';
2
+ import { buildExtensionProjection, buildRetracementProjection, buildW5Projection, makeJustification, w2RetraceLevels, w3ExtensionLevels, w4RetraceLevels, } from './projection-builder.js';
3
+ import { findAbsoluteExtreme, findConfirmedExtreme, findFibExtensionPivot, findFibRetracementPivot, findWave1, hasRecovery, } from './pivot-scanner.js';
4
+ import { exceedsInDirection, logDistance, logPrice } from './wave-math.js';
5
+ import { createCorrectiveWaves, createImpulseWaves, createInProgressWave, } from './wave-labeler.js';
6
+ function findW0(bars) {
7
+ const absLow = findAbsoluteExtreme(bars, false);
8
+ const absHigh = findAbsoluteExtreme(bars, true);
9
+ if (absLow.index <= absHigh.index) {
10
+ return { w0: absLow, isUptrend: true };
11
+ }
12
+ if (absHigh.index > 0) {
13
+ const w0 = findAbsoluteExtreme(bars, false, 0, absHigh.index);
14
+ return { w0, isUptrend: true };
15
+ }
16
+ return { w0: absHigh, isUptrend: false };
17
+ }
18
+ function hasSignificantReversal(bars, extreme, priorPoint, isUptrend, threshold = THRESHOLDS.defaultRecoveryThreshold) {
19
+ if (extreme.index >= bars.length - 1) {
20
+ return false;
21
+ }
22
+ const logExtreme = logPrice(extreme.price);
23
+ const logPrior = logPrice(priorPoint.price);
24
+ const move = Math.abs(logExtreme - logPrior);
25
+ return hasRecovery(bars, extreme.index, bars.length - 1, logExtreme, move, isUptrend, threshold);
26
+ }
27
+ function buildW2InProgress(w0, w1, degree) {
28
+ const w2Projection = buildRetracementProjection(w0.price, w1.price, w2RetraceLevels(), w0.price);
29
+ return createImpulseWaves({
30
+ pivots: [w0, w1],
31
+ justifications: [null],
32
+ degree,
33
+ inProgressLabel: 'Two',
34
+ inProgressProjection: w2Projection,
35
+ inProgressStart: w1,
36
+ });
37
+ }
38
+ function buildCorrectiveFromMorph(w0, w1, w2, bars, degree) {
39
+ const pivots = [w0, w1, w2];
40
+ const lastClose = bars[bars.length - 1].close;
41
+ const cProjection = buildExtensionProjection({
42
+ waveStart: w0.price,
43
+ waveEnd: w1.price,
44
+ extensionBase: w2.price,
45
+ levels: FIB_EXT_C,
46
+ invalidation: w0.price,
47
+ currentPrice: lastClose,
48
+ });
49
+ return createCorrectiveWaves({
50
+ pivots,
51
+ justifications: [null, null],
52
+ degree,
53
+ patternType: 'ZigZag',
54
+ inProgressLabel: 'C',
55
+ inProgressProjection: cProjection,
56
+ inProgressStart: w2,
57
+ });
58
+ }
59
+ function findW1(bars, w0, isUptrend) {
60
+ const result = findWave1(bars, w0, isUptrend);
61
+ if (result) {
62
+ return result.w1;
63
+ }
64
+ const ath = findAbsoluteExtreme(bars, isUptrend, w0.index + 1);
65
+ return ath.index < bars.length - 1 ? ath : null;
66
+ }
67
+ function isDiagonalOverlap(w4, w1, isUptrend) {
68
+ return isUptrend ? w4.price <= w1.price : w4.price >= w1.price;
69
+ }
70
+ export function detectImpulseWaves(bars, degree) {
71
+ if (bars.length < 2) {
72
+ const w0 = findAbsoluteExtreme(bars, true);
73
+ return {
74
+ waves: [createInProgressWave({
75
+ start: w0,
76
+ label: 'One',
77
+ degree,
78
+ projection: { targets: [], invalidationPoint: null },
79
+ })],
80
+ trendDirection: 'up',
81
+ patternType: 'impulse',
82
+ confirmedWaveCount: 0,
83
+ inProgressWave: 'One',
84
+ w0,
85
+ };
86
+ }
87
+ const { w0, isUptrend } = findW0(bars);
88
+ const trendDirection = isUptrend ? 'up' : 'down';
89
+ const isIntermediate = degree === 'minor' || degree === 'intermediate';
90
+ const lastClose = bars[bars.length - 1].close;
91
+ const w1 = findW1(bars, w0, isUptrend);
92
+ if (!w1) {
93
+ return {
94
+ waves: [createInProgressWave({
95
+ start: w0,
96
+ label: 'One',
97
+ degree,
98
+ projection: { targets: [], invalidationPoint: null },
99
+ })],
100
+ trendDirection,
101
+ patternType: 'impulse',
102
+ confirmedWaveCount: 0,
103
+ inProgressWave: 'One',
104
+ w0,
105
+ };
106
+ }
107
+ const w2Match = findFibRetracementPivot({
108
+ bars,
109
+ waveStart: w0,
110
+ waveEnd: w1,
111
+ levels: w2RetraceLevels(),
112
+ isUptrend,
113
+ fromIndex: w1.index + 1,
114
+ });
115
+ const w2 = w2Match?.pivot ??
116
+ findConfirmedExtreme(bars, w1, !isUptrend);
117
+ if (!w2) {
118
+ const waves = buildW2InProgress(w0, w1, degree);
119
+ return {
120
+ waves,
121
+ trendDirection,
122
+ patternType: 'impulse',
123
+ confirmedWaveCount: 1,
124
+ inProgressWave: 'Two',
125
+ w0,
126
+ };
127
+ }
128
+ if (isUptrend ? w2.price <= w0.price : w2.price >= w0.price) {
129
+ const waves = buildCorrectiveFromMorph(w0, w1, w2, bars, degree);
130
+ return {
131
+ waves,
132
+ trendDirection,
133
+ patternType: 'corrective',
134
+ confirmedWaveCount: 2,
135
+ inProgressWave: 'C',
136
+ w0,
137
+ };
138
+ }
139
+ const w2Just = w2Match
140
+ ? makeJustification({
141
+ fibLevel: w2Match.fibLevel,
142
+ deviation: w2Match.deviation,
143
+ type: 'Retracement',
144
+ description: `${(w2Match.fibLevel * 100).toFixed(1)}% retrace of W0→W1`,
145
+ })
146
+ : null;
147
+ const w3Match = findFibExtensionPivot({
148
+ bars,
149
+ waveStart: w0.price,
150
+ waveEnd: w1.price,
151
+ extensionBase: w2,
152
+ levels: w3ExtensionLevels(isIntermediate),
153
+ isUptrend,
154
+ fromIndex: w2.index + 1,
155
+ });
156
+ let w3 = w3Match?.pivot ?? findAbsoluteExtreme(bars, isUptrend, w2.index + 1);
157
+ const w3ExceedsW1 = exceedsInDirection(w3.price, w1.price, isUptrend);
158
+ const w1LogLen = logDistance(w0.price, w1.price);
159
+ const w3LogLen = logDistance(w2.price, w3.price);
160
+ const w3LengthOk = w3LogLen >= w1LogLen * THRESHOLDS.w3LengthTolerance;
161
+ const w3Confirmed = w3ExceedsW1 && w3LengthOk && hasSignificantReversal(bars, w3, w2, isUptrend);
162
+ if (!w3ExceedsW1 || !w3LengthOk || !w3Confirmed) {
163
+ const w2Completed = w3ExceedsW1;
164
+ if (w2Completed) {
165
+ const w3Projection = buildExtensionProjection({
166
+ waveStart: w0.price,
167
+ waveEnd: w1.price,
168
+ extensionBase: w2.price,
169
+ levels: w3ExtensionLevels(isIntermediate),
170
+ invalidation: w0.price,
171
+ isW3: true,
172
+ isIntermediate,
173
+ currentPrice: lastClose,
174
+ });
175
+ const waves = createImpulseWaves({
176
+ pivots: [w0, w1, w2],
177
+ justifications: [null, w2Just],
178
+ degree,
179
+ inProgressLabel: 'Three',
180
+ inProgressProjection: w3Projection,
181
+ inProgressStart: w2,
182
+ });
183
+ return {
184
+ waves,
185
+ trendDirection,
186
+ patternType: 'impulse',
187
+ confirmedWaveCount: 2,
188
+ inProgressWave: 'Three',
189
+ w0,
190
+ };
191
+ }
192
+ const waves = buildW2InProgress(w0, w1, degree);
193
+ return {
194
+ waves,
195
+ trendDirection,
196
+ patternType: 'impulse',
197
+ confirmedWaveCount: 1,
198
+ inProgressWave: 'Two',
199
+ w0,
200
+ };
201
+ }
202
+ const w3Just = w3Match
203
+ ? makeJustification({
204
+ fibLevel: w3Match.fibLevel,
205
+ deviation: w3Match.deviation,
206
+ type: 'Extension',
207
+ description: `${w3Match.fibLevel}× extension of W1 from W2`,
208
+ })
209
+ : null;
210
+ const w4Match = findFibRetracementPivot({
211
+ bars,
212
+ waveStart: w2,
213
+ waveEnd: w3,
214
+ levels: w4RetraceLevels(),
215
+ isUptrend,
216
+ fromIndex: w3.index + 1,
217
+ });
218
+ const w4 = w4Match?.pivot ?? findConfirmedExtreme(bars, w3, !isUptrend);
219
+ if (!w4) {
220
+ const w4Projection = buildRetracementProjection(w2.price, w3.price, w4RetraceLevels(), w0.price);
221
+ const waves = createImpulseWaves({
222
+ pivots: [w0, w1, w2, w3],
223
+ justifications: [null, w2Just, w3Just],
224
+ degree,
225
+ inProgressLabel: 'Four',
226
+ inProgressProjection: w4Projection,
227
+ inProgressStart: w3,
228
+ });
229
+ return {
230
+ waves,
231
+ trendDirection,
232
+ patternType: 'impulse',
233
+ confirmedWaveCount: 3,
234
+ inProgressWave: 'Four',
235
+ w0,
236
+ };
237
+ }
238
+ if (isUptrend ? w4.price <= w0.price : w4.price >= w0.price) {
239
+ const waves = buildCorrectiveFromMorph(w0, w1, w2, bars, degree);
240
+ return {
241
+ waves,
242
+ trendDirection,
243
+ patternType: 'corrective',
244
+ confirmedWaveCount: 2,
245
+ inProgressWave: 'C',
246
+ w0,
247
+ };
248
+ }
249
+ const isDiagonal = isDiagonalOverlap(w4, w1, isUptrend);
250
+ const w4Just = w4Match
251
+ ? makeJustification({
252
+ fibLevel: w4Match.fibLevel,
253
+ deviation: w4Match.deviation,
254
+ type: 'Retracement',
255
+ description: `${(w4Match.fibLevel * 100).toFixed(1)}% retrace of W2→W3`,
256
+ })
257
+ : null;
258
+ const w5Projection = buildW5Projection(w0, w1, w4, w3.price);
259
+ const waves = createImpulseWaves({
260
+ pivots: [w0, w1, w2, w3, w4],
261
+ justifications: [null, w2Just, w3Just, w4Just],
262
+ degree,
263
+ isDiagonal,
264
+ inProgressLabel: 'Five',
265
+ inProgressProjection: w5Projection,
266
+ inProgressStart: w4,
267
+ });
268
+ return {
269
+ waves,
270
+ trendDirection,
271
+ patternType: isDiagonal ? 'diagonal' : 'impulse',
272
+ confirmedWaveCount: 4,
273
+ inProgressWave: 'Five',
274
+ w0,
275
+ };
276
+ }
277
+ export function analysisFromWaves(waves) {
278
+ const inProgress = waves.find(w => w.isInProgress);
279
+ const confirmed = waves.filter(w => !w.isInProgress).length;
280
+ const firstPattern = waves[0]?.patternType;
281
+ let patternType = 'impulse';
282
+ if (firstPattern === 'ZigZag' || firstPattern === 'Flat' || firstPattern === 'Triangle') {
283
+ patternType = 'corrective';
284
+ }
285
+ else if (firstPattern === 'Diagonal' || waves.some(w => w.patternType === 'Diagonal')) {
286
+ patternType = 'diagonal';
287
+ }
288
+ return {
289
+ patternType,
290
+ confirmedWaveCount: confirmed,
291
+ inProgressWave: inProgress?.label,
292
+ };
293
+ }
294
+ //# sourceMappingURL=impulse-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impulse-detector.js","sourceRoot":"","sources":["../../../src/core/elliott-waves/impulse-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export * from './types.js';
2
+ export * from './constants.js';
3
+ export * from './wave-math.js';
4
+ export * from './fibonacci-projector.js';
5
+ export * from './pivot-scanner.js';
6
+ export * from './wave-labeler.js';
7
+ export * from './impulse-detector.js';
8
+ export * from './data-requirements.js';
9
+ export * from './analyze.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/elliott-waves/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ export * from './types.js';
2
+ export * from './constants.js';
3
+ export * from './wave-math.js';
4
+ export * from './fibonacci-projector.js';
5
+ export * from './pivot-scanner.js';
6
+ export * from './wave-labeler.js';
7
+ export * from './impulse-detector.js';
8
+ export * from './data-requirements.js';
9
+ export * from './analyze.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/elliott-waves/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { OhlcvBar, PivotPoint } from './types.js';
2
+ export declare function findAbsoluteExtreme(bars: OhlcvBar[], findHigh: boolean, fromIndex?: number, toIndex?: number): PivotPoint;
3
+ export declare function hasRecovery(bars: OhlcvBar[], fromIndex: number, toIndex: number, logExtreme: number, move: number, extremeIsHigh: boolean, threshold: number): boolean;
4
+ export declare function findWave1(bars: OhlcvBar[], w0: PivotPoint, isUptrend: boolean, maxIndex?: number, retraceThreshold?: 0.5, minGap?: number, minLogMove?: number): {
5
+ w1: PivotPoint;
6
+ retracePoint: PivotPoint;
7
+ } | null;
8
+ /** Find countertrend pivot nearest a Fibonacci retracement level (most extreme level first). */
9
+ export declare function findFibRetracementPivot(input: {
10
+ bars: OhlcvBar[];
11
+ waveStart: PivotPoint;
12
+ waveEnd: PivotPoint;
13
+ levels: readonly number[];
14
+ isUptrend: boolean;
15
+ fromIndex: number;
16
+ toIndex?: number;
17
+ toleranceLog?: number;
18
+ }): {
19
+ pivot: PivotPoint;
20
+ fibLevel: number;
21
+ deviation: number;
22
+ } | null;
23
+ /** Find trend-direction pivot nearest a Fibonacci extension level (most extreme first). */
24
+ export declare function findFibExtensionPivot(input: {
25
+ bars: OhlcvBar[];
26
+ waveStart: number;
27
+ waveEnd: number;
28
+ extensionBase: PivotPoint;
29
+ levels: readonly number[];
30
+ isUptrend: boolean;
31
+ fromIndex: number;
32
+ toIndex?: number;
33
+ toleranceLog?: number;
34
+ }): {
35
+ pivot: PivotPoint;
36
+ fibLevel: number;
37
+ deviation: number;
38
+ } | null;
39
+ export declare function findConfirmedExtreme(bars: OhlcvBar[], fromPoint: PivotPoint, findHigh: boolean, recoveryThreshold?: 0.1): PivotPoint | null;
40
+ //# sourceMappingURL=pivot-scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pivot-scanner.d.ts","sourceRoot":"","sources":["../../../src/core/elliott-waves/pivot-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAE,UAAU,EAAY,MAAM,YAAY,CAAC;AAmBhE,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,QAAQ,EAAE,EAChB,QAAQ,EAAE,OAAO,EACjB,SAAS,SAAI,EACb,OAAO,SAAK,GACV,UAAU,CAYZ;AAED,wBAAgB,WAAW,CAC1B,IAAI,EAAE,QAAQ,EAAE,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,OAAO,EACtB,SAAS,EAAE,MAAM,GACf,OAAO,CAST;AAED,wBAAgB,SAAS,CACxB,IAAI,EAAE,QAAQ,EAAE,EAChB,EAAE,EAAE,UAAU,EACd,SAAS,EAAE,OAAO,EAClB,QAAQ,SAAK,EACb,gBAAgB,MAAmC,EACnD,MAAM,SAAI,EACV,UAAU,SAAI,GACZ;IAAC,EAAE,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,UAAU,CAAA;CAAC,GAAG,IAAI,CA6BnD;AAED,gGAAgG;AAChG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC9C,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,UAAU,CAAC;IACpB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CAqBlE;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC5C,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,UAAU,CAAC;IAC1B,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CA0BlE;AAED,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,QAAQ,EAAE,EAChB,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,OAAO,EACjB,iBAAiB,MAAsC,GACrD,UAAU,GAAG,IAAI,CAyBnB"}
@@ -0,0 +1,121 @@
1
+ import { projectExtensions, projectRetracements } from './fibonacci-projector.js';
2
+ import { logPrice } from './wave-math.js';
3
+ import { THRESHOLDS } from './constants.js';
4
+ function createPivot(index, bars, price, pointType) {
5
+ return {
6
+ index,
7
+ timeSec: bars[index].timeSec,
8
+ price,
9
+ pointType,
10
+ };
11
+ }
12
+ export function findAbsoluteExtreme(bars, findHigh, fromIndex = 0, toIndex = -1) {
13
+ const end = toIndex < 0 ? bars.length - 1 : toIndex;
14
+ let bestIdx = fromIndex;
15
+ let bestPrice = findHigh ? bars[fromIndex].high : bars[fromIndex].low;
16
+ for (let i = fromIndex + 1; i <= end; i++) {
17
+ const price = findHigh ? bars[i].high : bars[i].low;
18
+ if (findHigh ? price > bestPrice : price < bestPrice) {
19
+ bestPrice = price;
20
+ bestIdx = i;
21
+ }
22
+ }
23
+ return createPivot(bestIdx, bars, bestPrice, findHigh ? 'High' : 'Low');
24
+ }
25
+ export function hasRecovery(bars, fromIndex, toIndex, logExtreme, move, extremeIsHigh, threshold) {
26
+ for (let i = fromIndex + 1; i <= toIndex; i++) {
27
+ const recoveryPrice = extremeIsHigh ? bars[i].low : bars[i].high;
28
+ const recovery = Math.abs(logPrice(recoveryPrice) - logExtreme);
29
+ if (move > 0 && recovery / move >= threshold) {
30
+ return true;
31
+ }
32
+ }
33
+ return false;
34
+ }
35
+ export function findWave1(bars, w0, isUptrend, maxIndex = -1, retraceThreshold = THRESHOLDS.w1ConfirmationRetrace, minGap = 0, minLogMove = 0) {
36
+ const end = maxIndex < 0 ? bars.length - 1 : maxIndex;
37
+ let runningExtreme = w0.price;
38
+ let runningExtremeIdx = w0.index;
39
+ const logW0 = logPrice(w0.price);
40
+ for (let i = w0.index + 1; i <= end; i++) {
41
+ const trendPrice = isUptrend ? bars[i].high : bars[i].low;
42
+ const retracePrice = isUptrend ? bars[i].low : bars[i].high;
43
+ if (isUptrend ? trendPrice > runningExtreme : trendPrice < runningExtreme) {
44
+ runningExtreme = trendPrice;
45
+ runningExtremeIdx = i;
46
+ }
47
+ if (runningExtremeIdx > w0.index && i > runningExtremeIdx + minGap) {
48
+ const logExtreme = logPrice(runningExtreme);
49
+ const logRetrace = logPrice(retracePrice);
50
+ const move = Math.abs(logExtreme - logW0);
51
+ const retrace = Math.abs(logExtreme - logRetrace);
52
+ if (move >= minLogMove && move > 0 && retrace / move > retraceThreshold) {
53
+ const w1 = findAbsoluteExtreme(bars, isUptrend, w0.index, i);
54
+ const retracePoint = createPivot(i, bars, retracePrice, isUptrend ? 'Low' : 'High');
55
+ return { w1, retracePoint };
56
+ }
57
+ }
58
+ }
59
+ return null;
60
+ }
61
+ /** Find countertrend pivot nearest a Fibonacci retracement level (most extreme level first). */
62
+ export function findFibRetracementPivot(input) {
63
+ const end = input.toIndex ?? input.bars.length - 1;
64
+ const targets = projectRetracements(input.waveStart.price, input.waveEnd.price, input.levels);
65
+ const tolerance = input.toleranceLog ?? THRESHOLDS.fibToleranceLog;
66
+ for (const target of targets) {
67
+ let best = null;
68
+ let bestDev = Infinity;
69
+ for (let i = input.fromIndex; i <= end; i++) {
70
+ const price = input.isUptrend ? input.bars[i].low : input.bars[i].high;
71
+ const dev = Math.abs(logPrice(price) - logPrice(target.price));
72
+ if (dev <= tolerance && dev < bestDev) {
73
+ best = createPivot(i, input.bars, price, input.isUptrend ? 'Low' : 'High');
74
+ bestDev = dev;
75
+ }
76
+ }
77
+ if (best) {
78
+ return { pivot: best, fibLevel: target.fibLevel, deviation: bestDev };
79
+ }
80
+ }
81
+ return null;
82
+ }
83
+ /** Find trend-direction pivot nearest a Fibonacci extension level (most extreme first). */
84
+ export function findFibExtensionPivot(input) {
85
+ const end = input.toIndex ?? input.bars.length - 1;
86
+ const targets = projectExtensions(input.waveStart, input.waveEnd, input.extensionBase.price, input.levels);
87
+ const tolerance = input.toleranceLog ?? THRESHOLDS.fibToleranceLog;
88
+ for (const target of targets) {
89
+ let best = null;
90
+ let bestDev = Infinity;
91
+ for (let i = input.fromIndex; i <= end; i++) {
92
+ const price = input.isUptrend ? input.bars[i].high : input.bars[i].low;
93
+ const dev = Math.abs(logPrice(price) - logPrice(target.price));
94
+ if (dev <= tolerance && dev < bestDev) {
95
+ best = createPivot(i, input.bars, price, input.isUptrend ? 'High' : 'Low');
96
+ bestDev = dev;
97
+ }
98
+ }
99
+ if (best) {
100
+ return { pivot: best, fibLevel: target.fibLevel, deviation: bestDev };
101
+ }
102
+ }
103
+ return null;
104
+ }
105
+ export function findConfirmedExtreme(bars, fromPoint, findHigh, recoveryThreshold = THRESHOLDS.defaultRecoveryThreshold) {
106
+ if (fromPoint.index >= bars.length - 2) {
107
+ return null;
108
+ }
109
+ const extreme = findAbsoluteExtreme(bars, findHigh, fromPoint.index + 1);
110
+ if (extreme.index >= bars.length - 1) {
111
+ return null;
112
+ }
113
+ const logFrom = logPrice(fromPoint.price);
114
+ const logExtreme = logPrice(extreme.price);
115
+ const move = Math.abs(logExtreme - logFrom);
116
+ if (!hasRecovery(bars, extreme.index, bars.length - 1, logExtreme, move, findHigh, recoveryThreshold)) {
117
+ return null;
118
+ }
119
+ return extreme;
120
+ }
121
+ //# sourceMappingURL=pivot-scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pivot-scanner.js","sourceRoot":"","sources":["../../../src/core/elliott-waves/pivot-scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { PivotPoint, WaveProjection } from './types.js';
2
+ import type { FibonacciJustification } from './types.js';
3
+ import { FIB_W5, FIB_EXT_C, FIB_EXT_W3, FIB_EXT_W3_INTERMEDIATE, FIB_RETRACE_W2, FIB_RETRACE_W4 } from './constants.js';
4
+ export type ProjectionTarget = {
5
+ price: number;
6
+ fibonacciLevel: number;
7
+ probability: number;
8
+ };
9
+ export declare function buildRetracementProjection(waveStart: number, waveEnd: number, levels: readonly number[], invalidation: number | null): WaveProjection;
10
+ export declare function buildExtensionProjection(input: {
11
+ waveStart: number;
12
+ waveEnd: number;
13
+ extensionBase: number;
14
+ levels: readonly number[];
15
+ invalidation: number | null;
16
+ isW3?: boolean;
17
+ isIntermediate?: boolean;
18
+ currentPrice?: number;
19
+ }): WaveProjection;
20
+ export declare function buildW5Projection(w0: PivotPoint, w1: PivotPoint, w4: PivotPoint, invalidation: number | null): WaveProjection;
21
+ export declare function w2RetraceLevels(): readonly number[];
22
+ export declare function w4RetraceLevels(): readonly number[];
23
+ export declare function w3ExtensionLevels(isIntermediate: boolean): readonly number[];
24
+ export declare function cExtensionLevels(): readonly number[];
25
+ export declare function makeJustification(input: {
26
+ fibLevel: number;
27
+ deviation: number;
28
+ type: 'Retracement' | 'Extension';
29
+ description: string;
30
+ }): FibonacciJustification;
31
+ export { FIB_RETRACE_W2, FIB_RETRACE_W4, FIB_EXT_W3, FIB_EXT_W3_INTERMEDIATE, FIB_W5, FIB_EXT_C };
32
+ //# sourceMappingURL=projection-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection-builder.d.ts","sourceRoot":"","sources":["../../../src/core/elliott-waves/projection-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAc,cAAc,EAAmC,MAAM,YAAY,CAAC;AACzG,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,YAAY,CAAC;AACvD,OAAO,EAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,uBAAuB,EAAE,cAAc,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAGtH,MAAM,MAAM,gBAAgB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACpB,CAAC;AAqFF,wBAAgB,0BAA0B,CACzC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,YAAY,EAAE,MAAM,GAAG,IAAI,GACzB,cAAc,CAQhB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,cAAc,CAkDjB;AAED,wBAAgB,iBAAiB,CAChC,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,UAAU,EACd,YAAY,EAAE,MAAM,GAAG,IAAI,GACzB,cAAc,CAQhB;AAED,wBAAgB,eAAe,IAAI,SAAS,MAAM,EAAE,CAEnD;AAED,wBAAgB,eAAe,IAAI,SAAS,MAAM,EAAE,CAEnD;AAED,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAE5E;AAED,wBAAgB,gBAAgB,IAAI,SAAS,MAAM,EAAE,CAEpD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,GAAG,WAAW,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;CACpB,GAAG,sBAAsB,CAOzB;AAED,OAAO,EAAC,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,EAAE,SAAS,EAAC,CAAC"}