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
text/typescript
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(),
});
}
}