PoolSnapshot could be added as a derived reference on the Pool object, this would make it easy to get all the snapshots in context.
JoinExit and Swap objects could refer to PoolHistoricalLiquidity objects so that trade sizes relative to the pool could be calculated.