Stonks/overview/brokerage_types.py

50 lines
1.1 KiB
Python

from dataclasses import dataclass, field
from datetime import datetime
@dataclass(frozen=True)
class BrokerageAccountPayload:
external_id: str
name: str
number: str
balance: int
@dataclass(frozen=True)
class BrokerageAssetPayload:
external_id: str
ticker: str
price: float
@dataclass(frozen=True)
class BrokerageHoldingPayload:
external_id: str
account_external_id: str
asset_external_id: str
ticker: str
amount: float
cost_basis: float
purchase_date: datetime
@dataclass(frozen=True)
class BrokerageTransactionPayload:
external_id: str
account_external_id: str
asset_external_id: str | None
transaction_type: str
date: datetime
value: float
name: str
quantity: float | None = None
realized_gain: float | None = None
@dataclass(frozen=True)
class BrokerageSnapshot:
accounts: list[BrokerageAccountPayload] = field(default_factory=list)
assets: list[BrokerageAssetPayload] = field(default_factory=list)
holdings: list[BrokerageHoldingPayload] = field(default_factory=list)
transactions: list[BrokerageTransactionPayload] = field(default_factory=list)