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 BrokerageSnapshot: accounts: list[BrokerageAccountPayload] = field(default_factory=list) assets: list[BrokerageAssetPayload] = field(default_factory=list) holdings: list[BrokerageHoldingPayload] = field(default_factory=list)