@jellyos/agent 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +9 -9
  2. package/dist/api/Registry.js +3 -1
  3. package/dist/api/Registry.js.map +1 -1
  4. package/dist/cli.js +10 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/index.d.ts +10 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +7 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/models/CostTracker.d.ts +66 -0
  11. package/dist/models/CostTracker.d.ts.map +1 -0
  12. package/dist/models/CostTracker.js +148 -0
  13. package/dist/models/CostTracker.js.map +1 -0
  14. package/dist/models/ModelRegistry.d.ts +146 -0
  15. package/dist/models/ModelRegistry.d.ts.map +1 -0
  16. package/dist/models/ModelRegistry.js +400 -0
  17. package/dist/models/ModelRegistry.js.map +1 -0
  18. package/dist/models/index.d.ts +5 -0
  19. package/dist/models/index.d.ts.map +1 -0
  20. package/dist/models/index.js +3 -0
  21. package/dist/models/index.js.map +1 -0
  22. package/dist/runner/AgentRunner.d.ts +5 -1
  23. package/dist/runner/AgentRunner.d.ts.map +1 -1
  24. package/dist/runner/AgentRunner.js +18 -8
  25. package/dist/runner/AgentRunner.js.map +1 -1
  26. package/dist/runner/ModelClient.d.ts +16 -5
  27. package/dist/runner/ModelClient.d.ts.map +1 -1
  28. package/dist/runner/ModelClient.js +69 -23
  29. package/dist/runner/ModelClient.js.map +1 -1
  30. package/dist/runner/SwarmRouter.d.ts +4 -1
  31. package/dist/runner/SwarmRouter.d.ts.map +1 -1
  32. package/dist/runner/SwarmRouter.js +15 -7
  33. package/dist/runner/SwarmRouter.js.map +1 -1
  34. package/dist/session/SessionManager.d.ts +2 -2
  35. package/dist/session/SessionManager.js +3 -3
  36. package/dist/session/SessionManager.js.map +1 -1
  37. package/dist/tools/NewsSentiment.d.ts +67 -0
  38. package/dist/tools/NewsSentiment.d.ts.map +1 -0
  39. package/dist/tools/NewsSentiment.js +199 -0
  40. package/dist/tools/NewsSentiment.js.map +1 -0
  41. package/dist/tools/PriceFeed.d.ts +103 -0
  42. package/dist/tools/PriceFeed.d.ts.map +1 -0
  43. package/dist/tools/PriceFeed.js +230 -0
  44. package/dist/tools/PriceFeed.js.map +1 -0
  45. package/dist/tools/TechnicalAnalysis.d.ts +73 -0
  46. package/dist/tools/TechnicalAnalysis.d.ts.map +1 -0
  47. package/dist/tools/TechnicalAnalysis.js +272 -0
  48. package/dist/tools/TechnicalAnalysis.js.map +1 -0
  49. package/dist/tools/index.d.ts +7 -0
  50. package/dist/tools/index.d.ts.map +1 -0
  51. package/dist/tools/index.js +4 -0
  52. package/dist/tools/index.js.map +1 -0
  53. package/dist/tui/App.d.ts +7 -5
  54. package/dist/tui/App.d.ts.map +1 -1
  55. package/dist/tui/App.js +178 -56
  56. package/dist/tui/App.js.map +1 -1
  57. package/dist/tui/StatusBar.js +1 -1
  58. package/dist/tui/StatusBar.js.map +1 -1
  59. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NewsSentiment.js","sourceRoot":"","sources":["../../src/tools/NewsSentiment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * PriceFeed — real-time price aggregation from CoinGecko and Binance.
3
+ *
4
+ * Provides:
5
+ * - Background polling with configurable intervals
6
+ * - Multi-source aggregation (prioritises Binance for precision, CG for breadth)
7
+ * - 24h change, volume, and market cap tracking
8
+ * - In-memory price cache for tool lookups
9
+ * - Exposed as tools for the AI to query
10
+ */
11
+ import { type Static } from "@sinclair/typebox";
12
+ import { EventEmitter } from "node:events";
13
+ export interface PriceTick {
14
+ symbol: string;
15
+ price: number;
16
+ change24h: number;
17
+ volume24h: number;
18
+ marketCap: number;
19
+ high24h: number;
20
+ low24h: number;
21
+ source: "coingecko" | "binance";
22
+ timestamp: number;
23
+ }
24
+ export interface CoinGeckoCoin {
25
+ id: string;
26
+ symbol: string;
27
+ name: string;
28
+ current_price: number;
29
+ price_change_percentage_24h: number;
30
+ market_cap: number;
31
+ total_volume: number;
32
+ high_24h: number;
33
+ low_24h: number;
34
+ }
35
+ export declare class PriceFeed extends EventEmitter {
36
+ private prices;
37
+ private pollInterval;
38
+ private timer?;
39
+ private tracking;
40
+ constructor(pollIntervalMs?: number);
41
+ start(): void;
42
+ stop(): void;
43
+ /** Add symbols to track. IDs are auto-resolved from the symbol map. */
44
+ track(...symbols: string[]): void;
45
+ fetchAll(): Promise<void>;
46
+ get(symbol: string): PriceTick | undefined;
47
+ getMultiple(symbols: string[]): PriceTick[];
48
+ getAll(): PriceTick[];
49
+ getTopMovers(limit?: number): PriceTick[];
50
+ formatPrice(tick: PriceTick): string;
51
+ /** Compact ticker line for the status bar. */
52
+ tickerLine(maxSymbols?: number): string;
53
+ }
54
+ export declare const priceFeed: PriceFeed;
55
+ export declare const getPricesParams: import("@sinclair/typebox").TObject<{
56
+ symbols: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
57
+ }>;
58
+ export declare function getPricesTool(_id: string, params: Static<typeof getPricesParams>): Promise<{
59
+ content: {
60
+ type: "text";
61
+ text: string;
62
+ }[];
63
+ details: Record<string, unknown>;
64
+ }>;
65
+ export declare const topMoversParams: import("@sinclair/typebox").TObject<{
66
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
67
+ }>;
68
+ export declare function topMoversTool(_id: string, params: Static<typeof topMoversParams>): Promise<{
69
+ content: {
70
+ type: "text";
71
+ text: string;
72
+ }[];
73
+ details: {
74
+ count: number;
75
+ };
76
+ }>;
77
+ export declare const marketOverviewParams: import("@sinclair/typebox").TObject<{}>;
78
+ export declare function marketOverviewTool(): Promise<{
79
+ content: {
80
+ type: "text";
81
+ text: string;
82
+ }[];
83
+ details: {
84
+ totalMarketCap?: undefined;
85
+ avgChange24h?: undefined;
86
+ gainers?: undefined;
87
+ losers?: undefined;
88
+ assets?: undefined;
89
+ };
90
+ } | {
91
+ content: {
92
+ type: "text";
93
+ text: string;
94
+ }[];
95
+ details: {
96
+ totalMarketCap: number;
97
+ avgChange24h: number;
98
+ gainers: number;
99
+ losers: number;
100
+ assets: number;
101
+ };
102
+ }>;
103
+ //# sourceMappingURL=PriceFeed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PriceFeed.d.ts","sourceRoot":"","sources":["../../src/tools/PriceFeed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,MAAM,WAAW,SAAS;IACxB,MAAM,EAAM,MAAM,CAAC;IACnB,KAAK,EAAO,MAAM,CAAC;IACnB,SAAS,EAAG,MAAM,CAAC;IACnB,SAAS,EAAG,MAAM,CAAC;IACnB,SAAS,EAAG,MAAM,CAAC;IACnB,OAAO,EAAK,MAAM,CAAC;IACnB,MAAM,EAAM,MAAM,CAAC;IACnB,MAAM,EAAM,WAAW,GAAG,SAAS,CAAC;IACpC,SAAS,EAAG,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAa,MAAM,CAAC;IACtB,MAAM,EAAS,MAAM,CAAC;IACtB,IAAI,EAAW,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,UAAU,EAAK,MAAM,CAAC;IACtB,YAAY,EAAG,MAAM,CAAC;IACtB,QAAQ,EAAO,MAAM,CAAC;IACtB,OAAO,EAAQ,MAAM,CAAC;CACvB;AAiDD,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAwC;IACtD,OAAO,CAAC,QAAQ,CAAyF;gBAE7F,cAAc,SAAS;IAOnC,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,IAAI;IAIZ,uEAAuE;IACvE,KAAK,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAM3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC/B,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI1C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE;IAI3C,MAAM,IAAI,SAAS,EAAE;IAIrB,YAAY,CAAC,KAAK,SAAI,GAAG,SAAS,EAAE;IAMpC,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAYpC,8CAA8C;IAC9C,UAAU,CAAC,UAAU,SAAI,GAAG,MAAM;CAUnC;AAID,eAAO,MAAM,SAAS,WAAkB,CAAC;AAIzC,eAAO,MAAM,eAAe;;EAE1B,CAAC;AAEH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,eAAe,CAAC;;;;;;GA2BtF;AAID,eAAO,MAAM,eAAe;;EAE1B,CAAC;AAEH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,eAAe,CAAC;;;;;;;;GAOtF;AAID,eAAO,MAAM,oBAAoB,yCAAkB,CAAC;AAEpD,wBAAsB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;GAiCvC"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * PriceFeed — real-time price aggregation from CoinGecko and Binance.
3
+ *
4
+ * Provides:
5
+ * - Background polling with configurable intervals
6
+ * - Multi-source aggregation (prioritises Binance for precision, CG for breadth)
7
+ * - 24h change, volume, and market cap tracking
8
+ * - In-memory price cache for tool lookups
9
+ * - Exposed as tools for the AI to query
10
+ */
11
+ import { Type } from "@sinclair/typebox";
12
+ import { EventEmitter } from "node:events";
13
+ // ── CoinGecko ID map (common symbols) ────────────────────────────────────────
14
+ const SYMBOL_TO_ID = {
15
+ btc: "bitcoin",
16
+ eth: "ethereum",
17
+ sol: "solana",
18
+ bnb: "binancecoin",
19
+ xrp: "ripple",
20
+ ada: "cardano",
21
+ doge: "dogecoin",
22
+ dot: "polkadot",
23
+ matic: "matic-network",
24
+ avax: "avalanche-2",
25
+ link: "chainlink",
26
+ uni: "uniswap",
27
+ atom: "cosmos",
28
+ arb: "arbitrum",
29
+ op: "optimism",
30
+ near: "near",
31
+ apt: "aptos",
32
+ sui: "sui",
33
+ sei: "sei-network",
34
+ inj: "injective-protocol",
35
+ tia: "celestia",
36
+ wld: "worldcoin-wld",
37
+ pepe: "pepe",
38
+ wif: "dogwifcoin",
39
+ bonk: "bonk",
40
+ floki: "floki",
41
+ shib: "shiba-inu",
42
+ aave: "aave",
43
+ mkr: "maker",
44
+ ldo: "lido-dao",
45
+ ens: "ethereum-name-service",
46
+ pendle: "pendle",
47
+ ltc: "litecoin",
48
+ bch: "bitcoin-cash",
49
+ etc: "ethereum-classic",
50
+ fil: "filecoin",
51
+ trx: "tron",
52
+ usdc: "usd-coin",
53
+ usdt: "tether",
54
+ dai: "dai",
55
+ };
56
+ // ── PriceFeed class ──────────────────────────────────────────────────────────
57
+ export class PriceFeed extends EventEmitter {
58
+ prices = new Map();
59
+ pollInterval;
60
+ timer;
61
+ tracking = new Set(["btc", "eth", "sol", "bnb", "matic", "arb", "op", "avax"]);
62
+ constructor(pollIntervalMs = 60_000) {
63
+ super();
64
+ this.pollInterval = pollIntervalMs;
65
+ }
66
+ // ── Lifecycle ────────────────────────────────────────────────────────────
67
+ start() {
68
+ this.fetchAll();
69
+ this.timer = setInterval(() => this.fetchAll(), this.pollInterval);
70
+ }
71
+ stop() {
72
+ if (this.timer) {
73
+ clearInterval(this.timer);
74
+ this.timer = undefined;
75
+ }
76
+ }
77
+ /** Add symbols to track. IDs are auto-resolved from the symbol map. */
78
+ track(...symbols) {
79
+ for (const s of symbols)
80
+ this.tracking.add(s.toLowerCase());
81
+ }
82
+ // ── Fetch ────────────────────────────────────────────────────────────────
83
+ async fetchAll() {
84
+ const ids = [...this.tracking]
85
+ .map(s => SYMBOL_TO_ID[s])
86
+ .filter(Boolean)
87
+ .join(",");
88
+ if (!ids)
89
+ return;
90
+ try {
91
+ const res = await fetch(`https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=${ids}&order=market_cap_desc&sparkline=false`, { signal: AbortSignal.timeout(10_000), headers: { "User-Agent": "JellyOS/1.0" } });
92
+ if (!res.ok)
93
+ return;
94
+ const data = (await res.json());
95
+ for (const coin of data) {
96
+ const symbol = coin.symbol.toUpperCase();
97
+ const tick = {
98
+ symbol,
99
+ price: coin.current_price,
100
+ change24h: coin.price_change_percentage_24h ?? 0,
101
+ volume24h: coin.total_volume ?? 0,
102
+ marketCap: coin.market_cap ?? 0,
103
+ high24h: coin.high_24h ?? 0,
104
+ low24h: coin.low_24h ?? 0,
105
+ source: "coingecko",
106
+ timestamp: Date.now(),
107
+ };
108
+ this.prices.set(symbol.toLowerCase(), tick);
109
+ }
110
+ this.emit("prices", [...this.prices.values()]);
111
+ }
112
+ catch {
113
+ // Silent — will retry next interval
114
+ }
115
+ }
116
+ // ── Query ─────────────────────────────────────────────────────────────────
117
+ get(symbol) {
118
+ return this.prices.get(symbol.toLowerCase());
119
+ }
120
+ getMultiple(symbols) {
121
+ return symbols.map(s => this.get(s)).filter(Boolean);
122
+ }
123
+ getAll() {
124
+ return [...this.prices.values()];
125
+ }
126
+ getTopMovers(limit = 5) {
127
+ return [...this.prices.values()]
128
+ .sort((a, b) => Math.abs(b.change24h) - Math.abs(a.change24h))
129
+ .slice(0, limit);
130
+ }
131
+ formatPrice(tick) {
132
+ const changeStr = tick.change24h >= 0
133
+ ? `+${tick.change24h.toFixed(2)}%`
134
+ : `${tick.change24h.toFixed(2)}%`;
135
+ const priceStr = tick.price < 1
136
+ ? `$${tick.price.toFixed(6)}`
137
+ : tick.price < 100
138
+ ? `$${tick.price.toFixed(2)}`
139
+ : `$${tick.price.toLocaleString()}`;
140
+ return `${tick.symbol.padEnd(6)} ${priceStr} ${changeStr}`;
141
+ }
142
+ /** Compact ticker line for the status bar. */
143
+ tickerLine(maxSymbols = 5) {
144
+ return [...this.prices.values()]
145
+ .slice(0, maxSymbols)
146
+ .map(t => {
147
+ const sign = t.change24h >= 0 ? "▲" : "▼";
148
+ const p = t.price < 1 ? t.price.toFixed(4) : t.price.toFixed(0);
149
+ return `${t.symbol} $${p} ${sign}${Math.abs(t.change24h).toFixed(1)}%`;
150
+ })
151
+ .join(" · ");
152
+ }
153
+ }
154
+ // ── Singleton ─────────────────────────────────────────────────────────────────
155
+ export const priceFeed = new PriceFeed();
156
+ // ── Tool: get_prices ─────────────────────────────────────────────────────────
157
+ export const getPricesParams = Type.Object({
158
+ symbols: Type.Array(Type.String(), { description: "Symbols to fetch (e.g. btc, eth, sol)" }),
159
+ });
160
+ export async function getPricesTool(_id, params) {
161
+ const ticks = priceFeed.getAll();
162
+ if (ticks.length === 0) {
163
+ return {
164
+ content: [{ type: "text", text: "No price data available yet. Please wait for the first price update." }],
165
+ details: {},
166
+ };
167
+ }
168
+ const requested = params.symbols.map(s => s.toLowerCase());
169
+ const results = ticks.filter(t => requested.includes(t.symbol.toLowerCase()));
170
+ if (results.length === 0) {
171
+ return {
172
+ content: [{ type: "text", text: `No data for: ${params.symbols.join(", ")}. Available: ${ticks.map(t => t.symbol).join(", ")}` }],
173
+ details: {},
174
+ };
175
+ }
176
+ const text = results.map(t => priceFeed.formatPrice(t)).join("\n");
177
+ return {
178
+ content: [{ type: "text", text }],
179
+ details: results.reduce((acc, t) => {
180
+ acc[t.symbol] = { price: t.price, change24h: t.change24h, volume24h: t.volume24h, marketCap: t.marketCap, source: t.source };
181
+ return acc;
182
+ }, {}),
183
+ };
184
+ }
185
+ // ── Tool: get_top_movers ─────────────────────────────────────────────────────
186
+ export const topMoversParams = Type.Object({
187
+ limit: Type.Optional(Type.Number({ default: 5, description: "Number of top movers to show" })),
188
+ });
189
+ export async function topMoversTool(_id, params) {
190
+ const movers = priceFeed.getTopMovers(params.limit ?? 5);
191
+ const text = movers.map(t => priceFeed.formatPrice(t)).join("\n");
192
+ return {
193
+ content: [{ type: "text", text: text || "No data available" }],
194
+ details: { count: movers.length },
195
+ };
196
+ }
197
+ // ── Tool: get_market_overview ────────────────────────────────────────────────
198
+ export const marketOverviewParams = Type.Object({});
199
+ export async function marketOverviewTool() {
200
+ const ticks = priceFeed.getAll();
201
+ if (ticks.length === 0) {
202
+ return {
203
+ content: [{ type: "text", text: "No market data available yet." }],
204
+ details: {},
205
+ };
206
+ }
207
+ const totalCap = ticks.reduce((s, t) => s + t.marketCap, 0);
208
+ const avgChange = ticks.reduce((s, t) => s + t.change24h, 0) / ticks.length;
209
+ const gainers = ticks.filter(t => t.change24h > 0).length;
210
+ const losers = ticks.filter(t => t.change24h < 0).length;
211
+ const text = [
212
+ `Market Overview (${ticks.length} assets tracked)`,
213
+ `Total Market Cap: $${(totalCap / 1e9).toFixed(1)}B`,
214
+ `Avg 24h Change: ${avgChange >= 0 ? "+" : ""}${avgChange.toFixed(2)}%`,
215
+ `Gainers: ${gainers} | Losers: ${losers}`,
216
+ `---`,
217
+ ...ticks.slice(0, 10).map(t => priceFeed.formatPrice(t)),
218
+ ].join("\n");
219
+ return {
220
+ content: [{ type: "text", text }],
221
+ details: {
222
+ totalMarketCap: totalCap,
223
+ avgChange24h: avgChange,
224
+ gainers,
225
+ losers,
226
+ assets: ticks.length,
227
+ },
228
+ };
229
+ }
230
+ //# sourceMappingURL=PriceFeed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PriceFeed.js","sourceRoot":"","sources":["../../src/tools/PriceFeed.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Technical Analysis Toolkit — RSI, MACD, EMA, Bollinger Bands,
3
+ * moving averages, volume profile, and signal detection.
4
+ *
5
+ * All calculations are pure math on price arrays — no external API needed.
6
+ * Designed to be exposed as tools the AI can call autonomously.
7
+ */
8
+ export interface OHLCV {
9
+ timestamp: number;
10
+ open: number;
11
+ high: number;
12
+ low: number;
13
+ close: number;
14
+ volume: number;
15
+ }
16
+ export interface AnalysisResult {
17
+ indicator: string;
18
+ value: number | number[];
19
+ signal?: "bullish" | "bearish" | "neutral";
20
+ metadata?: Record<string, unknown>;
21
+ }
22
+ export declare function sma(prices: number[], period: number): number[];
23
+ export declare function ema(prices: number[], period: number): number[];
24
+ export declare function rsi(prices: number[], period?: number): number[];
25
+ export declare function macd(prices: number[], fast?: number, slow?: number, signal?: number): {
26
+ macd: number[];
27
+ signal: number[];
28
+ histogram: number[];
29
+ };
30
+ export declare function bollingerBands(prices: number[], period?: number, deviations?: number): {
31
+ upper: number[];
32
+ middle: number[];
33
+ lower: number[];
34
+ width: number[];
35
+ };
36
+ export declare function atr(highs: number[], lows: number[], closes: number[], period?: number): number[];
37
+ export declare function volumeProfile(volumes: number[], prices: number[], levels?: number): {
38
+ priceRange: string;
39
+ volume: number;
40
+ pct: number;
41
+ }[];
42
+ export declare function detectCrossovers(fast: number[], slow: number[]): {
43
+ type: "golden_cross" | "death_cross" | null;
44
+ index: number;
45
+ };
46
+ export declare function rsiSignal(rsiValues: number[]): AnalysisResult;
47
+ export declare function bollingerSignal(price: number, bands: {
48
+ upper: number[];
49
+ lower: number[];
50
+ }): AnalysisResult;
51
+ export declare function macdSignal(macdData: {
52
+ macd: number[];
53
+ signal: number[];
54
+ histogram: number[];
55
+ }): AnalysisResult;
56
+ export declare function fullAnalysis(ohlcv: OHLCV[]): AnalysisResult[];
57
+ export declare const analyzeTAParams: import("@sinclair/typebox").TObject<{
58
+ prices: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>;
59
+ highs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
60
+ lows: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
61
+ volumes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
62
+ }>;
63
+ export declare const rsiParams: import("@sinclair/typebox").TObject<{
64
+ prices: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>;
65
+ period: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
66
+ }>;
67
+ export declare const macdParams: import("@sinclair/typebox").TObject<{
68
+ prices: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>;
69
+ fast: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
70
+ slow: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
71
+ signal: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
72
+ }>;
73
+ //# sourceMappingURL=TechnicalAnalysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TechnicalAnalysis.d.ts","sourceRoot":"","sources":["../../src/tools/TechnicalAnalysis.ts"],"names":[],"mappings":"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"}