UNPKG

laplace-api

Version:

Client library for Laplace API for the US stock market and BIST (Istanbul stock market) fundamental financial data.

115 lines (104 loc) 3.09 kB
import { Client } from './client'; import { Region } from './collections'; import { AssetClass, AssetType } from './stocks'; export interface StockDividend { date: string; netAmount: number; netRatio: number; grossAmount: number; grossRatio: number; priceThen: number; stoppageRatio: number; stoppageAmount: number; } export interface StockStats { previousClose?: number; marketCap?: number; peRatio?: number; pbRatio?: number; yearLow?: number; yearHigh?: number; weeklyReturn?: number; monthlyReturn?: number; "3MonthReturn"?: number; ytdReturn?: number; yearlyReturn?: number; "3YearReturn"?: number; "5YearReturn"?: number; symbol: string; latestPrice?: number; dailyChange?: number; dayLow?: number; dayHigh?: number; lowerPriceLimit?: number; upperPriceLimit?: number; dayOpen?: number; eps?: number; } export enum StockStatsKey { PreviousClose = 'previous_close', MarketCap = 'market_cap', FK = 'fk', PDDD = 'pddd', DayLow = 'day_low', DayHigh = 'day_high', YearLow = 'year_low', YearHigh = 'year_high', DailyChange = 'daily_change', WeeklyReturn = 'weekly_return', MonthlyReturn = 'monthly_return', ThreeMonthReturn = '3_month_return', YtdReturn = 'ytd_return', YearlyReturn = 'yearly_return', ThreeYearReturn = '3_year_return', FiveYearReturn = '5_year_return', LatestPrice = 'latest_price' } export interface TopMover { symbol: string; change: number; assetClass?: AssetClass; assetType?: AssetType; } export enum TopMoverDirection { Gainers = "gainers", Losers = "losers" } export class FinancialFundamentalsClient extends Client { async getStockDividends( symbol: string, region: Region ): Promise<StockDividend[]> { const url = new URL(`${this["baseUrl"]}/api/v2/stock/dividends`); url.searchParams.append("symbol", symbol); url.searchParams.append("region", region); return this.sendRequest<StockDividend[]>({ method: 'GET', url: url.toString(), }); } async getStockStats(symbols: string[], region: Region): Promise<StockStats[]> { const url = new URL(`${this['baseUrl']}/api/v2/stock/stats`); url.searchParams.append('symbols', symbols.join(',')); url.searchParams.append('region', region); return this.sendRequest<StockStats[]>({ method: 'GET', url: url.toString(), }); } async getTopMovers(region: Region, page: number, pageSize: number, direction: TopMoverDirection, assetType?: AssetType, assetClass?: AssetClass ): Promise<TopMover[]> { const url = new URL(`${this['baseUrl']}/api/v2/stock/top-movers`); url.searchParams.append('region', region); url.searchParams.append('page', page.toString()); url.searchParams.append('pageSize', pageSize.toString()); url.searchParams.append('direction', direction); if (assetType) url.searchParams.append('assetType', assetType); if (assetClass) url.searchParams.append("assetClass", assetClass); return this.sendRequest<TopMover[]>({ method: 'GET', url: url.toString(), }); } }