UIIncentivesService.ts
1 import { UiIncentiveDataProvider } from '@aave/contract-helpers'; 2 import { Provider } from '@ethersproject/providers'; 3 import { MarketDataType } from 'src/ui-config/marketsConfig'; 4 import invariant from 'tiny-invariant'; 5 6 export class UiIncentivesService { 7 constructor(private readonly getProvider: (chainId: number) => Provider) {} 8 9 private getUiIncentiveDataProvider(marketData: MarketDataType) { 10 const provider = this.getProvider(marketData.chainId); 11 invariant( 12 marketData.addresses.UI_INCENTIVE_DATA_PROVIDER, 13 'No UI incentive data provider address found for this market' 14 ); 15 return new UiIncentiveDataProvider({ 16 uiIncentiveDataProviderAddress: marketData.addresses.UI_INCENTIVE_DATA_PROVIDER, 17 provider, 18 chainId: marketData.chainId, 19 }); 20 } 21 22 async getReservesIncentivesDataHumanized(marketData: MarketDataType) { 23 if (!marketData.enabledFeatures?.incentives) return []; 24 25 const uiIncentiveDataProvider = this.getUiIncentiveDataProvider(marketData); 26 return uiIncentiveDataProvider.getReservesIncentivesDataHumanized({ 27 lendingPoolAddressProvider: marketData.addresses.LENDING_POOL_ADDRESS_PROVIDER, 28 }); 29 } 30 async getUserReservesIncentivesData(marketData: MarketDataType, user: string) { 31 if (!marketData.enabledFeatures?.incentives) return []; 32 const uiIncentiveDataProvider = this.getUiIncentiveDataProvider(marketData); 33 return uiIncentiveDataProvider.getUserReservesIncentivesDataHumanized({ 34 user, 35 lendingPoolAddressProvider: marketData.addresses.LENDING_POOL_ADDRESS_PROVIDER, 36 }); 37 } 38 }