@@ -244,17 +244,24 @@ def _fetch_and_process_pool_fee_data(self) -> list[PoolFeeData]:
244244
245245 pools_data = []
246246
247- core_pools_to_process = (
247+ core_pools_list = (
248248 [(pool_id , label ) for pool_id , label in self .core_pools_list .items ()]
249249 if self .core_pools_list is not None
250250 else self .bal_pools_gauges .core_pools
251251 )
252252
253- for pool_id , label in core_pools_to_process :
253+ v3_pools = [(p , l ) for p , l in core_pools_list if len (p ) == 42 ]
254+ v2_pools = [x for x in core_pools_list if x not in v3_pools ]
255+
256+ for pool_id , label in v3_pools :
257+ pool_fee_data = self ._fetch_twap_prices_and_init_pool_fee_data_v3 (pool_id , label , pool_to_gauge )
258+ pools_data .append (pool_fee_data )
259+
260+ for pool_id , label in v2_pools :
254261 start_snap = self ._get_latest_snapshot (start_snaps , pool_id )
255262 end_snap = self ._get_latest_snapshot (end_snaps , pool_id )
256- if self ._should_add_pool (pool_id , start_snap , end_snap ):
257- pool_fee_data = self ._fetch_twap_prices_and_init_pool_fee_data (pool_id , label , pool_to_gauge , start_snap , end_snap )
263+ if self ._should_add_pool (pool_id , start_snap , end_snap , pool_to_gauge ):
264+ pool_fee_data = self ._fetch_twap_prices_and_init_pool_fee_data_v2 (pool_id , label , pool_to_gauge , start_snap , end_snap )
258265 pools_data .append (pool_fee_data )
259266
260267 return pools_data
@@ -274,14 +281,15 @@ def _create_pool_to_gauge_mapping(self, pools: list[Pool]) -> Dict[str, str]:
274281 return pool_to_gauge
275282
276283 def _should_add_pool (
277- self , pool_id : str , start_snap : PoolSnapshot , end_snap : PoolSnapshot
284+ self , pool_id : str , start_snap : PoolSnapshot , end_snap : PoolSnapshot , pool_to_gauge : Dict [ str , str ]
278285 ) -> bool :
279286 return (
280287 start_snap and end_snap
281288 and self .bal_pools_gauges .has_alive_preferential_gauge (pool_id )
289+ and pool_to_gauge .get (pool_id )
282290 )
283291
284- def _fetch_twap_prices_and_init_pool_fee_data (
292+ def _fetch_twap_prices_and_init_pool_fee_data_v2 (
285293 self ,
286294 pool_id : str ,
287295 label : str ,
@@ -312,6 +320,31 @@ def _fetch_twap_prices_and_init_pool_fee_data(
312320 end_pool_snapshot = end_snap ,
313321 last_join_exit_ts = last_join_exit_ts ,
314322 )
323+
324+ def _fetch_twap_prices_and_init_pool_fee_data_v3 (
325+ self ,
326+ pool_id : str ,
327+ label : str ,
328+ pool_to_gauge : Dict [str , str ],
329+ ) -> PoolFeeData :
330+ logger .info (f"fetching twap prices for { label } on { self .name } " )
331+
332+ try :
333+ last_join_exit_ts = self .bal_pools_gauges .get_last_join_exit (pool_id )
334+ except NoResultError :
335+ last_join_exit_ts = 0
336+
337+ return PoolFeeData (
338+ pool_id = pool_id ,
339+ address = pool_id ,
340+ symbol = label ,
341+ tokens_price = None ,
342+ gauge_address = pool_to_gauge [pool_id ],
343+ start_pool_snapshot = None ,
344+ end_pool_snapshot = None ,
345+ last_join_exit_ts = last_join_exit_ts ,
346+ total_earned_fees_usd_twap = self .subgraph .get_v3_protocol_fees (pool_id , self .name , self .chains .date_range ),
347+ )
315348
316349 @staticmethod
317350 def _get_latest_snapshot (
0 commit comments