@cfxlabsinc/b2b-services
    Preparing search index...
    CachedBankBalanceTimeseriesItem: Omit<
        BankBalanceTimeseriesItem,
        "timestamp"
        | "balance",
    > & { balance: string; timestamp: string }

    L2 round-trips through JSON, so timestamp (Date) arrives as a string and balance (BigNumber) loses its runtime shape on cross-process / post-L1 reads. Store a JSON-safe projection and rehydrate it on read.