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)