From b42d974c562410f512e0a17ce05db555685d59d3 Mon Sep 17 00:00:00 2001 From: Carter Bertolini Date: Fri, 6 Oct 2023 16:21:31 -0400 Subject: [PATCH] Setup basic portfolio interface --- src/exchange.ts | 9 --------- src/index.ts | 14 ++++++++++++-- src/interface/account.ts | 4 +++- src/interface/portfolio.ts | 38 ++++++++++++++++++++++++++------------ src/interface/quote.ts | 4 +++- 5 files changed, 44 insertions(+), 25 deletions(-) delete mode 100644 src/exchange.ts diff --git a/src/exchange.ts b/src/exchange.ts deleted file mode 100644 index c53e963..0000000 --- a/src/exchange.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Account } from "./interface/account"; -import {Quote} from "./interface/quote" - -interface Exchange { - name: string; - - fetchAccounts: () => Account[]; - fetchQuote: (symbol: string) => Quote; -} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 87a110b..195fd0e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,14 @@ import { createLogger, transports, format } from "winston"; +import { Account } from "./interface/account"; +import { Quote } from "./interface/quote" + +export interface Exchange { + name: string; + + fetchAccounts: () => Account[]; + fetchQuote: (symbol: string) => Quote; +} + const logger = createLogger({ transports: [new transports.Console()], @@ -10,5 +20,5 @@ const logger = createLogger({ }) ), }); - -logger.info("Hello world!"); \ No newline at end of file + +logger.info("Hello world!"); diff --git a/src/interface/account.ts b/src/interface/account.ts index 97e3ea6..06d7357 100644 --- a/src/interface/account.ts +++ b/src/interface/account.ts @@ -1,3 +1,5 @@ +import { Portfolio } from "./portfolio"; + export interface Account { fetchPortfolio: () => Portfolio; -} \ No newline at end of file +} diff --git a/src/interface/portfolio.ts b/src/interface/portfolio.ts index 15706e9..3750f1d 100644 --- a/src/interface/portfolio.ts +++ b/src/interface/portfolio.ts @@ -1,17 +1,31 @@ -export interface Position { +export class Position { + readonly lastTrade: number; + readonly lastTradeTime: Date; + + readonly change: number; + readonly changePercent: number; + + readonly earningsPerShare: number; + + readonly marketCap: number; + readonly symbol: string; - readonly quantity: number; - - readonly dateAcquired: Date; - - readonly pricePaid: number; - readonly price: number; - - readonly change: number; - readonly changePct: number; + constructor(lastTrade: number, lastTradeTime: Date, change: number, changePercent: number, earningsPerShare: number, marketCap: number, symbol: string) { + this.lastTrade = lastTrade; + this.lastTradeTime = lastTradeTime; + this.change = change; + this.changePercent = changePercent; + this.earningsPerShare = earningsPerShare; + this.marketCap = marketCap; + this.symbol = symbol; + } } -export interface Portfolio { +export class Portfolio { readonly positions: Position[]; -} \ No newline at end of file + + constructor(positions: Position[]) { + this.positions = positions; + } +} diff --git a/src/interface/quote.ts b/src/interface/quote.ts index fd84a23..afbf7db 100644 --- a/src/interface/quote.ts +++ b/src/interface/quote.ts @@ -1,3 +1,5 @@ export class Quote { -} \ No newline at end of file +} + +