UNPKG

laplace-api

Version:

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

104 lines (93 loc) 2.8 kB
import { Client } from './client'; import { Region } from './collections'; import { AssetClass, AssetType } from './stocks'; export interface StockDividend { date: Date; dividendAmount: number; dividendRatio: number; netDividendAmount: number; netDividendRatio: number; priceThen: 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; } 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/v1/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): 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); return this.sendRequest<TopMover[]>({ method: 'GET', url: url.toString(), }); } }