@autonomaai/agent-core 1.0.2

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 (62) hide show
  1. package/dist/base-agent.d.ts +112 -0
  2. package/dist/base-agent.d.ts.map +1 -0
  3. package/dist/base-agent.js +173 -0
  4. package/dist/base-agent.js.map +1 -0
  5. package/dist/core.d.ts +81 -0
  6. package/dist/core.d.ts.map +1 -0
  7. package/dist/core.js +633 -0
  8. package/dist/core.js.map +1 -0
  9. package/dist/error-handler.d.ts +78 -0
  10. package/dist/error-handler.d.ts.map +1 -0
  11. package/dist/error-handler.js +129 -0
  12. package/dist/error-handler.js.map +1 -0
  13. package/dist/factory.d.ts +60 -0
  14. package/dist/factory.d.ts.map +1 -0
  15. package/dist/factory.js +621 -0
  16. package/dist/factory.js.map +1 -0
  17. package/dist/index.d.ts +13 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +19 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/streaming.d.ts +24 -0
  22. package/dist/streaming.d.ts.map +1 -0
  23. package/dist/streaming.js +36 -0
  24. package/dist/streaming.js.map +1 -0
  25. package/dist/trading/formatters.d.ts +167 -0
  26. package/dist/trading/formatters.d.ts.map +1 -0
  27. package/dist/trading/formatters.js +271 -0
  28. package/dist/trading/formatters.js.map +1 -0
  29. package/dist/trading/index.d.ts +9 -0
  30. package/dist/trading/index.d.ts.map +1 -0
  31. package/dist/trading/index.js +10 -0
  32. package/dist/trading/index.js.map +1 -0
  33. package/dist/trading/types.d.ts +205 -0
  34. package/dist/trading/types.d.ts.map +1 -0
  35. package/dist/trading/types.js +7 -0
  36. package/dist/trading/types.js.map +1 -0
  37. package/dist/trading/utils.d.ts +120 -0
  38. package/dist/trading/utils.d.ts.map +1 -0
  39. package/dist/trading/utils.js +291 -0
  40. package/dist/trading/utils.js.map +1 -0
  41. package/dist/trading/validation.d.ts +40 -0
  42. package/dist/trading/validation.d.ts.map +1 -0
  43. package/dist/trading/validation.js +247 -0
  44. package/dist/trading/validation.js.map +1 -0
  45. package/dist/types.d.ts +282 -0
  46. package/dist/types.d.ts.map +1 -0
  47. package/dist/types.js +21 -0
  48. package/dist/types.js.map +1 -0
  49. package/package.json +57 -0
  50. package/src/base-agent.ts +263 -0
  51. package/src/core.ts +792 -0
  52. package/src/error-handler.ts +166 -0
  53. package/src/factory.ts +687 -0
  54. package/src/global.d.ts +12 -0
  55. package/src/index.ts +24 -0
  56. package/src/streaming.ts +50 -0
  57. package/src/trading/formatters.ts +363 -0
  58. package/src/trading/index.ts +10 -0
  59. package/src/trading/types.ts +263 -0
  60. package/src/trading/utils.ts +355 -0
  61. package/src/trading/validation.ts +321 -0
  62. package/src/types.ts +402 -0
@@ -0,0 +1,205 @@
1
+ /**
2
+ * Trading Types for autonoma Agent Core
3
+ *
4
+ * Standardized trading types used across all trading agents.
5
+ */
6
+ export interface TokenPrice {
7
+ symbol: string;
8
+ price: number;
9
+ change24h: number;
10
+ volume24h: number;
11
+ marketCap?: number;
12
+ timestamp: Date;
13
+ source: string;
14
+ }
15
+ export interface OHLCV {
16
+ open: number;
17
+ high: number;
18
+ low: number;
19
+ close: number;
20
+ volume: number;
21
+ timestamp: Date;
22
+ }
23
+ export interface OrderBook {
24
+ symbol: string;
25
+ bids: OrderBookLevel[];
26
+ asks: OrderBookLevel[];
27
+ timestamp: Date;
28
+ }
29
+ export interface OrderBookLevel {
30
+ price: number;
31
+ quantity: number;
32
+ }
33
+ export type OrderSide = 'buy' | 'sell';
34
+ export type OrderType = 'market' | 'limit' | 'stop' | 'stop-limit';
35
+ export type OrderStatus = 'pending' | 'open' | 'filled' | 'canceled' | 'rejected';
36
+ export type TimeInForce = 'GTC' | 'IOC' | 'FOK' | 'DAY';
37
+ export interface Order {
38
+ id: string;
39
+ symbol: string;
40
+ side: OrderSide;
41
+ type: OrderType;
42
+ quantity: number;
43
+ price?: number;
44
+ stopPrice?: number;
45
+ timeInForce: TimeInForce;
46
+ status: OrderStatus;
47
+ filledQuantity: number;
48
+ averagePrice?: number;
49
+ createdAt: Date;
50
+ updatedAt: Date;
51
+ exchange: string;
52
+ }
53
+ export interface OrderRequest {
54
+ symbol: string;
55
+ side: OrderSide;
56
+ type: OrderType;
57
+ quantity: number;
58
+ price?: number;
59
+ stopPrice?: number;
60
+ timeInForce?: TimeInForce;
61
+ }
62
+ export interface Position {
63
+ symbol: string;
64
+ quantity: number;
65
+ averagePrice: number;
66
+ marketValue: number;
67
+ unrealizedPnL: number;
68
+ realizedPnL: number;
69
+ costBasis: number;
70
+ exchange: string;
71
+ lastUpdate: Date;
72
+ }
73
+ export interface Portfolio {
74
+ id: string;
75
+ totalValue: number;
76
+ cash: number;
77
+ positions: Position[];
78
+ totalPnL: number;
79
+ dayPnL: number;
80
+ lastUpdate: Date;
81
+ }
82
+ export interface YieldOpportunity {
83
+ protocol: string;
84
+ pool: string;
85
+ token: string;
86
+ apy: number;
87
+ tvl: number;
88
+ risk: 'low' | 'medium' | 'high';
89
+ blockchain: string;
90
+ category: 'lending' | 'liquidity' | 'staking' | 'farming';
91
+ minimumDeposit?: number;
92
+ lockPeriod?: number;
93
+ }
94
+ export interface LiquidityPool {
95
+ id: string;
96
+ protocol: string;
97
+ tokens: string[];
98
+ reserves: number[];
99
+ fee: number;
100
+ apy: number;
101
+ volume24h: number;
102
+ tvl: number;
103
+ }
104
+ export interface StakingPosition {
105
+ protocol: string;
106
+ token: string;
107
+ amount: number;
108
+ apy: number;
109
+ claimableRewards: number;
110
+ lockEndDate?: Date;
111
+ autoCompound: boolean;
112
+ }
113
+ export interface RiskLimits {
114
+ maxPositionSize: number;
115
+ maxDailyLoss: number;
116
+ maxDrawdown: number;
117
+ maxLeverage: number;
118
+ blacklistedSymbols: string[];
119
+ allowedExchanges: string[];
120
+ }
121
+ export interface RiskMetrics {
122
+ portfolioVar: number;
123
+ sharpeRatio: number;
124
+ maxDrawdown: number;
125
+ volatility: number;
126
+ beta: number;
127
+ alpha: number;
128
+ positionConcentration: number;
129
+ }
130
+ export interface StrategyConfig {
131
+ name: string;
132
+ type: 'market_making' | 'arbitrage' | 'yield_farming' | 'momentum' | 'mean_reversion';
133
+ enabled: boolean;
134
+ parameters: Record<string, any>;
135
+ riskLimits: RiskLimits;
136
+ targetAllocation: number;
137
+ }
138
+ export interface StrategyPerformance {
139
+ strategyName: string;
140
+ totalTrades: number;
141
+ winRate: number;
142
+ totalPnL: number;
143
+ sharpeRatio: number;
144
+ maxDrawdown: number;
145
+ averageHoldTime: number;
146
+ lastExecuted: Date;
147
+ }
148
+ export interface ExchangeConfig {
149
+ name: string;
150
+ apiKey: string;
151
+ apiSecret: string;
152
+ passphrase?: string;
153
+ sandbox: boolean;
154
+ rateLimit: number;
155
+ }
156
+ export interface ExchangeStatus {
157
+ name: string;
158
+ connected: boolean;
159
+ lastHeartbeat: Date;
160
+ latency: number;
161
+ orderCount24h: number;
162
+ rateLimitRemaining: number;
163
+ }
164
+ export interface MarketMakingConfig {
165
+ symbol: string;
166
+ bidSpread: number;
167
+ askSpread: number;
168
+ orderAmount: number;
169
+ maxInventory: number;
170
+ skewFactor: number;
171
+ minOrderGap: number;
172
+ }
173
+ export interface SpreadAnalysis {
174
+ symbol: string;
175
+ currentSpread: number;
176
+ averageSpread24h: number;
177
+ spreadVolatility: number;
178
+ optimalSpread: number;
179
+ competitorAnalysis: {
180
+ topBid: number;
181
+ topAsk: number;
182
+ bidDepth: number;
183
+ askDepth: number;
184
+ };
185
+ }
186
+ export interface TimeFrame {
187
+ value: number;
188
+ unit: 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month';
189
+ }
190
+ export interface PriceRange {
191
+ min: number;
192
+ max: number;
193
+ current: number;
194
+ }
195
+ export interface TradingSession {
196
+ id: string;
197
+ startTime: Date;
198
+ endTime?: Date;
199
+ initialBalance: number;
200
+ currentBalance: number;
201
+ totalTrades: number;
202
+ pnl: number;
203
+ strategies: string[];
204
+ }
205
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/trading/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Trading Types for autonoma Agent Core
3
+ *
4
+ * Standardized trading types used across all trading agents.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/trading/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Trading Utilities for autonoma Agent Core
3
+ *
4
+ * Common utility functions for trading calculations and operations.
5
+ */
6
+ import { Order, Position, Portfolio, OrderSide, YieldOpportunity, TimeFrame, PriceRange, OHLCV } from './types.js';
7
+ /**
8
+ * Calculate percentage change between two prices
9
+ */
10
+ export declare function calculatePriceChange(oldPrice: number, newPrice: number): number;
11
+ /**
12
+ * Calculate simple moving average
13
+ */
14
+ export declare function calculateSMA(prices: number[], period: number): number;
15
+ /**
16
+ * Calculate exponential moving average
17
+ */
18
+ export declare function calculateEMA(prices: number[], period: number): number;
19
+ /**
20
+ * Calculate volatility (standard deviation) of price returns
21
+ */
22
+ export declare function calculateVolatility(prices: number[]): number;
23
+ /**
24
+ * Calculate support and resistance levels
25
+ */
26
+ export declare function findSupportResistance(ohlcv: OHLCV[], lookback?: number): {
27
+ support: number;
28
+ resistance: number;
29
+ };
30
+ /**
31
+ * Calculate portfolio total value
32
+ */
33
+ export declare function calculatePortfolioValue(portfolio: Portfolio): number;
34
+ /**
35
+ * Calculate position size as percentage of portfolio
36
+ */
37
+ export declare function calculatePositionWeight(position: Position, portfolioValue: number): number;
38
+ /**
39
+ * Calculate unrealized P&L for a position
40
+ */
41
+ export declare function calculateUnrealizedPnL(position: Position, currentPrice: number): number;
42
+ /**
43
+ * Calculate Sharpe ratio
44
+ */
45
+ export declare function calculateSharpeRatio(returns: number[], riskFreeRate?: number): number;
46
+ /**
47
+ * Calculate maximum drawdown
48
+ */
49
+ export declare function calculateMaxDrawdown(portfolioValues: number[]): number;
50
+ /**
51
+ * Calculate Value at Risk (VaR) using historical simulation
52
+ */
53
+ export declare function calculateVaR(returns: number[], confidence?: number): number;
54
+ /**
55
+ * Calculate order fill ratio
56
+ */
57
+ export declare function calculateFillRatio(order: Order): number;
58
+ /**
59
+ * Calculate slippage
60
+ */
61
+ export declare function calculateSlippage(expectedPrice: number, executedPrice: number, side: OrderSide): number;
62
+ /**
63
+ * Calculate optimal order size based on market impact
64
+ */
65
+ export declare function calculateOptimalOrderSize(availableLiquidity: number, targetSize: number, maxMarketImpact?: number): number;
66
+ /**
67
+ * Calculate APY from APR
68
+ */
69
+ export declare function aprToApy(apr: number, compoundingPeriods?: number): number;
70
+ /**
71
+ * Calculate yield farming returns
72
+ */
73
+ export declare function calculateYieldFarmingReturns(principal: number, apy: number, days: number, compounding?: boolean): {
74
+ totalReturn: number;
75
+ profit: number;
76
+ };
77
+ /**
78
+ * Calculate impermanent loss for liquidity provision
79
+ */
80
+ export declare function calculateImpermanentLoss(initialPrice1: number, initialPrice2: number, currentPrice1: number, currentPrice2: number): number;
81
+ /**
82
+ * Compare yield opportunities
83
+ */
84
+ export declare function rankYieldOpportunities(opportunities: YieldOpportunity[]): YieldOpportunity[];
85
+ /**
86
+ * Convert timeframe to milliseconds
87
+ */
88
+ export declare function timeFrameToMs(timeFrame: TimeFrame): number;
89
+ /**
90
+ * Format currency with appropriate decimal places
91
+ */
92
+ export declare function formatCurrency(amount: number, decimals?: number): string;
93
+ /**
94
+ * Format percentage with sign
95
+ */
96
+ export declare function formatPercentage(value: number, decimals?: number): string;
97
+ /**
98
+ * Check if price is within range
99
+ */
100
+ export declare function isPriceInRange(price: number, range: PriceRange): boolean;
101
+ /**
102
+ * Calculate distance from price to range bounds
103
+ */
104
+ export declare function distanceToRange(price: number, range: PriceRange): {
105
+ toMin: number;
106
+ toMax: number;
107
+ };
108
+ /**
109
+ * Generate trading session ID
110
+ */
111
+ export declare function generateSessionId(): string;
112
+ /**
113
+ * Validate trading symbol format
114
+ */
115
+ export declare function isValidSymbol(symbol: string): boolean;
116
+ /**
117
+ * Normalize symbol format
118
+ */
119
+ export declare function normalizeSymbol(symbol: string): string;
120
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/trading/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,291 @@
1
+ /**
2
+ * Trading Utilities for autonoma Agent Core
3
+ *
4
+ * Common utility functions for trading calculations and operations.
5
+ */
6
+ // =============================================================================
7
+ // Price & Market Calculations
8
+ // =============================================================================
9
+ /**
10
+ * Calculate percentage change between two prices
11
+ */
12
+ export function calculatePriceChange(oldPrice, newPrice) {
13
+ if (oldPrice === 0)
14
+ return 0;
15
+ return ((newPrice - oldPrice) / oldPrice) * 100;
16
+ }
17
+ /**
18
+ * Calculate simple moving average
19
+ */
20
+ export function calculateSMA(prices, period) {
21
+ if (prices.length < period)
22
+ return 0;
23
+ const sum = prices.slice(-period).reduce((acc, price) => acc + price, 0);
24
+ return sum / period;
25
+ }
26
+ /**
27
+ * Calculate exponential moving average
28
+ */
29
+ export function calculateEMA(prices, period) {
30
+ if (prices.length === 0)
31
+ return 0;
32
+ if (prices.length === 1)
33
+ return prices[0];
34
+ const multiplier = 2 / (period + 1);
35
+ let ema = prices[0];
36
+ for (let i = 1; i < prices.length; i++) {
37
+ const price = prices[i];
38
+ if (price !== undefined) {
39
+ ema = (price * multiplier) + (ema * (1 - multiplier));
40
+ }
41
+ }
42
+ return ema;
43
+ }
44
+ /**
45
+ * Calculate volatility (standard deviation) of price returns
46
+ */
47
+ export function calculateVolatility(prices) {
48
+ if (prices.length < 2)
49
+ return 0;
50
+ const returns = [];
51
+ for (let i = 1; i < prices.length; i++) {
52
+ const current = prices[i];
53
+ const previous = prices[i - 1];
54
+ if (current !== undefined && previous !== undefined && previous !== 0) {
55
+ returns.push((current - previous) / previous);
56
+ }
57
+ }
58
+ const mean = returns.reduce((sum, ret) => sum + ret, 0) / returns.length;
59
+ const variance = returns.reduce((sum, ret) => sum + Math.pow(ret - mean, 2), 0) / returns.length;
60
+ return Math.sqrt(variance) * Math.sqrt(252); // Annualized volatility
61
+ }
62
+ /**
63
+ * Calculate support and resistance levels
64
+ */
65
+ export function findSupportResistance(ohlcv, lookback = 20) {
66
+ if (ohlcv.length < lookback)
67
+ return { support: 0, resistance: 0 };
68
+ const recent = ohlcv.slice(-lookback);
69
+ const highs = recent.map(candle => candle.high);
70
+ const lows = recent.map(candle => candle.low);
71
+ const support = lows.reduce((min, low) => Math.min(min, low), lows[0] ?? 0);
72
+ const resistance = highs.reduce((max, high) => Math.max(max, high), highs[0] ?? 0);
73
+ return { support, resistance };
74
+ }
75
+ // =============================================================================
76
+ // Portfolio & Risk Calculations
77
+ // =============================================================================
78
+ /**
79
+ * Calculate portfolio total value
80
+ */
81
+ export function calculatePortfolioValue(portfolio) {
82
+ const positionsValue = portfolio.positions.reduce((total, position) => {
83
+ return total + position.marketValue;
84
+ }, 0);
85
+ return portfolio.cash + positionsValue;
86
+ }
87
+ /**
88
+ * Calculate position size as percentage of portfolio
89
+ */
90
+ export function calculatePositionWeight(position, portfolioValue) {
91
+ if (portfolioValue === 0)
92
+ return 0;
93
+ return (position.marketValue / portfolioValue) * 100;
94
+ }
95
+ /**
96
+ * Calculate unrealized P&L for a position
97
+ */
98
+ export function calculateUnrealizedPnL(position, currentPrice) {
99
+ return (currentPrice - position.averagePrice) * position.quantity;
100
+ }
101
+ /**
102
+ * Calculate Sharpe ratio
103
+ */
104
+ export function calculateSharpeRatio(returns, riskFreeRate = 0.02) {
105
+ if (returns.length === 0)
106
+ return 0;
107
+ const avgReturn = returns.reduce((sum, ret) => sum + ret, 0) / returns.length;
108
+ const variance = returns.reduce((sum, ret) => sum + Math.pow(ret - avgReturn, 2), 0) / returns.length;
109
+ const stdDev = Math.sqrt(variance);
110
+ if (stdDev === 0)
111
+ return 0;
112
+ return (avgReturn - riskFreeRate) / stdDev;
113
+ }
114
+ /**
115
+ * Calculate maximum drawdown
116
+ */
117
+ export function calculateMaxDrawdown(portfolioValues) {
118
+ if (portfolioValues.length < 2)
119
+ return 0;
120
+ let maxDrawdown = 0;
121
+ let peak = portfolioValues[0] ?? 0;
122
+ for (let i = 1; i < portfolioValues.length; i++) {
123
+ const value = portfolioValues[i];
124
+ if (value !== undefined) {
125
+ if (value > peak) {
126
+ peak = value;
127
+ }
128
+ else if (peak > 0) {
129
+ const drawdown = (peak - value) / peak;
130
+ maxDrawdown = Math.max(maxDrawdown, drawdown);
131
+ }
132
+ }
133
+ }
134
+ return maxDrawdown * 100; // Return as percentage
135
+ }
136
+ /**
137
+ * Calculate Value at Risk (VaR) using historical simulation
138
+ */
139
+ export function calculateVaR(returns, confidence = 0.05) {
140
+ if (returns.length === 0)
141
+ return 0;
142
+ const sortedReturns = [...returns].sort((a, b) => a - b);
143
+ const index = Math.floor(returns.length * confidence);
144
+ return Math.abs(sortedReturns[index] || 0);
145
+ }
146
+ // =============================================================================
147
+ // Order & Trading Calculations
148
+ // =============================================================================
149
+ /**
150
+ * Calculate order fill ratio
151
+ */
152
+ export function calculateFillRatio(order) {
153
+ if (order.quantity === 0)
154
+ return 0;
155
+ return (order.filledQuantity / order.quantity) * 100;
156
+ }
157
+ /**
158
+ * Calculate slippage
159
+ */
160
+ export function calculateSlippage(expectedPrice, executedPrice, side) {
161
+ if (expectedPrice === 0)
162
+ return 0;
163
+ const diff = side === 'buy'
164
+ ? executedPrice - expectedPrice
165
+ : expectedPrice - executedPrice;
166
+ return (diff / expectedPrice) * 100;
167
+ }
168
+ /**
169
+ * Calculate optimal order size based on market impact
170
+ */
171
+ export function calculateOptimalOrderSize(availableLiquidity, targetSize, maxMarketImpact = 0.5 // 0.5% max impact
172
+ ) {
173
+ const maxSafeSize = availableLiquidity * (maxMarketImpact / 100);
174
+ return Math.min(targetSize, maxSafeSize);
175
+ }
176
+ // =============================================================================
177
+ // DeFi Calculations
178
+ // =============================================================================
179
+ /**
180
+ * Calculate APY from APR
181
+ */
182
+ export function aprToApy(apr, compoundingPeriods = 365) {
183
+ return (Math.pow(1 + (apr / compoundingPeriods), compoundingPeriods) - 1) * 100;
184
+ }
185
+ /**
186
+ * Calculate yield farming returns
187
+ */
188
+ export function calculateYieldFarmingReturns(principal, apy, days, compounding = true) {
189
+ const periods = compounding ? days : 1;
190
+ const rate = apy / 100 / (compounding ? 365 : 1);
191
+ const totalReturn = compounding
192
+ ? principal * Math.pow(1 + rate, periods)
193
+ : principal + (principal * rate * days);
194
+ return {
195
+ totalReturn,
196
+ profit: totalReturn - principal
197
+ };
198
+ }
199
+ /**
200
+ * Calculate impermanent loss for liquidity provision
201
+ */
202
+ export function calculateImpermanentLoss(initialPrice1, initialPrice2, currentPrice1, currentPrice2) {
203
+ const priceRatio = (currentPrice1 / currentPrice2) / (initialPrice1 / initialPrice2);
204
+ const impermanentLoss = (2 * Math.sqrt(priceRatio)) / (1 + priceRatio) - 1;
205
+ return Math.abs(impermanentLoss) * 100;
206
+ }
207
+ /**
208
+ * Compare yield opportunities
209
+ */
210
+ export function rankYieldOpportunities(opportunities) {
211
+ return opportunities.sort((a, b) => {
212
+ // Risk-adjusted APY calculation (simple risk penalty)
213
+ const riskPenalty = { low: 1, medium: 0.8, high: 0.6 };
214
+ const adjustedApyA = a.apy * riskPenalty[a.risk];
215
+ const adjustedApyB = b.apy * riskPenalty[b.risk];
216
+ return adjustedApyB - adjustedApyA;
217
+ });
218
+ }
219
+ // =============================================================================
220
+ // Utility Functions
221
+ // =============================================================================
222
+ /**
223
+ * Convert timeframe to milliseconds
224
+ */
225
+ export function timeFrameToMs(timeFrame) {
226
+ const units = {
227
+ second: 1000,
228
+ minute: 60 * 1000,
229
+ hour: 60 * 60 * 1000,
230
+ day: 24 * 60 * 60 * 1000,
231
+ week: 7 * 24 * 60 * 60 * 1000,
232
+ month: 30 * 24 * 60 * 60 * 1000
233
+ };
234
+ return timeFrame.value * units[timeFrame.unit];
235
+ }
236
+ /**
237
+ * Format currency with appropriate decimal places
238
+ */
239
+ export function formatCurrency(amount, decimals = 2) {
240
+ return new Intl.NumberFormat('en-US', {
241
+ style: 'currency',
242
+ currency: 'USD',
243
+ minimumFractionDigits: decimals,
244
+ maximumFractionDigits: decimals
245
+ }).format(amount);
246
+ }
247
+ /**
248
+ * Format percentage with sign
249
+ */
250
+ export function formatPercentage(value, decimals = 2) {
251
+ const sign = value >= 0 ? '+' : '';
252
+ return `${sign}${value.toFixed(decimals)}%`;
253
+ }
254
+ /**
255
+ * Check if price is within range
256
+ */
257
+ export function isPriceInRange(price, range) {
258
+ return price >= range.min && price <= range.max;
259
+ }
260
+ /**
261
+ * Calculate distance from price to range bounds
262
+ */
263
+ export function distanceToRange(price, range) {
264
+ return {
265
+ toMin: Math.abs(price - range.min),
266
+ toMax: Math.abs(price - range.max)
267
+ };
268
+ }
269
+ /**
270
+ * Generate trading session ID
271
+ */
272
+ export function generateSessionId() {
273
+ const timestamp = Date.now().toString(36);
274
+ const random = Math.random().toString(36).substr(2, 5);
275
+ return `${timestamp}-${random}`;
276
+ }
277
+ /**
278
+ * Validate trading symbol format
279
+ */
280
+ export function isValidSymbol(symbol) {
281
+ // Basic validation for crypto trading pairs
282
+ const regex = /^[A-Z]{2,10}[\/\-][A-Z]{2,10}$/;
283
+ return regex.test(symbol);
284
+ }
285
+ /**
286
+ * Normalize symbol format
287
+ */
288
+ export function normalizeSymbol(symbol) {
289
+ return symbol.toUpperCase().replace('-', '/');
290
+ }
291
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/trading/utils.ts"],"names":[],"mappings":"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"}