50 lines
1.1 KiB
Python
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)
|