import { Asset } from './Asset.js'; interface EtfData { ticker?: string; currentPrice?: number; expenseRatio?: string | number; totalAssets?: string | number; yield?: string | number; volume?: string | number; fiveYearReturn?: string | number; [key: string]: unknown; } export interface EtfMetrics { expenseRatio: number; totalAssets: number; yield: number; volume: number; fiveYearReturn: number; } export class Etf extends Asset { metrics: EtfMetrics; constructor(data: EtfData) { super(data); this.metrics = { expenseRatio: parseFloat(String(data.expenseRatio)) || 0, totalAssets: parseFloat(String(data.totalAssets)) || 0, yield: parseFloat(String(data.yield)) || 0, volume: parseFloat(String(data.volume)) || 0, fiveYearReturn: parseFloat(String(data.fiveYearReturn)) || 0, }; } getDisplayMetrics(): Record { return { Ticker: this.ticker, Type: 'ETF', Price: this.formatCurrency(this.currentPrice), 'Exp Ratio%': `${this.metrics.expenseRatio.toFixed(2)}%`, 'Yield%': `${this.metrics.yield.toFixed(2)}%`, AUM: this.formatLargeNumber(this.metrics.totalAssets), '5Y Return%': `${this.metrics.fiveYearReturn.toFixed(1)}%`, }; } }