@baguskto/saham
Version:
MCP Server untuk data saham Indonesia (IDX) - Implementasi Node.js/TypeScript
166 lines • 3.75 kB
TypeScript
/**
* Type definitions for IDX MCP Server
*/
export interface StockInfo {
ticker: string;
name: string;
currentPrice: number;
priceChange: number;
priceChangePercent: number;
dayHigh: number;
dayLow: number;
volume: number;
marketCap?: number | undefined;
peRatio?: number | undefined;
week52High?: number | undefined;
week52Low?: number | undefined;
lastUpdated: Date;
}
export interface MarketOverview {
ihsgValue: number;
ihsgChange: number;
ihsgChangePercent: number;
tradingVolume: number;
tradingValue: number;
marketStatus: 'open' | 'closed' | 'pre-market';
topGainers: StockSummary[];
topLosers: StockSummary[];
foreignNetFlow?: number | undefined;
lastUpdated: Date;
}
export interface StockSummary {
ticker: string;
name: string;
price: number;
changePercent: number;
}
export interface HistoricalDataPoint {
date: string;
open: number;
high: number;
low: number;
close: number;
volume: number;
adjustedClose?: number;
}
export interface HistoricalData {
ticker: string;
period: string;
dataPoints: HistoricalDataPoint[];
totalPoints: number;
startDate: string;
endDate: string;
source?: string;
lastUpdated: string;
}
export interface SectorData {
performance: number;
count: number;
tickers: string[];
}
export interface SectorPerformance {
sectors: Record<string, SectorData>;
bestSector: string;
worstSector: string;
lastUpdated: Date;
}
export interface SearchResult {
ticker: string;
name: string;
sector?: string;
market?: string;
currentPrice?: number | undefined;
changePercent?: number | undefined;
}
export interface ServerStats {
server: {
name: string;
version: string;
status: string;
timestamp: string;
};
dataSources: Record<string, any>;
cache: {
hits: number;
misses: number;
keys: number;
};
settings: {
cacheType: string;
debugMode: boolean;
logLevel: string;
};
}
export interface MCPResponse<T = any> {
success: boolean;
data?: T;
error?: string;
source?: 'cache' | 'live';
responseTime: number;
}
export interface CacheConfig {
type: 'memory' | 'redis';
url?: string | undefined;
ttl: {
marketOverview: number;
stockInfo: number;
historical: number;
sector: number;
static: number;
};
}
export interface DataSourceConfig {
yahooFinance: {
timeout: number;
maxRetries: number;
retryDelay: number;
};
webScraping: {
timeout: number;
maxRetries: number;
retryDelay: number;
};
rateLimiting: {
requestsPerMinute: number;
burstLimit: number;
};
}
export interface AppConfig {
server: {
name: string;
version: string;
debug: boolean;
};
cache: CacheConfig;
dataSources: DataSourceConfig;
logging: {
level: string;
file?: string | undefined;
};
data: {
stockListFile: string;
sectorMappingFile: string;
};
}
export type Period = '1d' | '1w' | '1m' | '3m' | '6m' | '1y' | '2y' | '5y';
export declare enum DataSourcePriority {
LOW = 1,
MEDIUM = 2,
HIGH = 3
}
export interface DataSourceStats {
name: string;
priority: DataSourcePriority;
lastRequest?: Date;
successCount: number;
errorCount: number;
averageResponseTime: number;
isHealthy: boolean;
}
export interface StockListItem {
ticker: string;
name: string;
sector: string;
marketCapBillion: number;
}
//# sourceMappingURL=index.d.ts.map