@@ -89,10 +89,12 @@ export interface FarmInfo {
8989 symbol : SupportedToken ;
9090}
9191
92- type PoolsWithExtraRewardsList = Record < NetworkType , Array < SupportedToken > > ;
92+ type PoolsWithExtraRewardsList = Record < NetworkType , Array < Address > > ;
9393
9494const DEFAULT_POOLS_WITH_EXTRA_REWARDS : PoolsWithExtraRewardsList = {
95- Mainnet : [ "dtBTCV3" ] ,
95+ Mainnet : [
96+ "0x7354EC6E852108411e681D13E11185c3a2567981" , // dtBTCV3
97+ ] ,
9698 Arbitrum : [ ] ,
9799 Optimism : [ ] ,
98100 Base : [ ] ,
@@ -102,7 +104,6 @@ type ReportHandler = (e: unknown, description?: string) => void;
102104
103105export interface GetLmRewardsInfoProps {
104106 pools : Record < Address , PoolData_Legacy > ;
105- currentTokenData : Record < SupportedToken , Address > ;
106107 tokensList : Record < Address , TokenData > ;
107108 provider : PublicClient ;
108109
@@ -143,7 +144,6 @@ export interface ClaimLmRewardsV3Props {
143144export class GearboxRewardsApi {
144145 static async getLmRewardsInfo ( {
145146 pools,
146- currentTokenData,
147147 provider,
148148 multicallAddress,
149149 tokensList,
@@ -152,7 +152,7 @@ export class GearboxRewardsApi {
152152 network,
153153 reportError,
154154 } : GetLmRewardsInfoProps ) {
155- const poolByStakedToken = Object . values ( pools ) . reduce <
155+ const poolByStakedDiesel = Object . values ( pools ) . reduce <
156156 Record < Address , Address >
157157 > ( ( acc , p ) => {
158158 p . stakedDieselToken . forEach ( t => {
@@ -165,36 +165,48 @@ export class GearboxRewardsApi {
165165 return acc ;
166166 } , { } ) ;
167167
168- const poolTokens = TypedObjectUtils . keys ( poolByStakedToken ) ;
168+ const poolByDiesel = Object . values ( pools ) . reduce < Record < Address , Address > > (
169+ ( acc , p ) => {
170+ acc [ p . dieselToken ] = p . address ;
171+
172+ return acc ;
173+ } ,
174+ { } ,
175+ ) ;
176+
177+ const poolByItsToken = { ...poolByStakedDiesel , ...poolByDiesel } ;
178+
179+ const poolStakedTokens = TypedObjectUtils . keys ( poolByStakedDiesel ) ;
180+ const allPoolTokens = TypedObjectUtils . keys ( poolByItsToken ) ;
169181
170- const chain = chains [ network ] ;
182+ const chainId = chains [ network ] . id ;
171183 const poolTokensWithExtraReward = (
172184 poolsWithExtraRewards [ network ] || [ ]
173- ) . filter ( symbol => {
174- const addr = currentTokenData [ symbol ] ;
185+ ) . filter ( p => {
186+ const token = tokensList [ p . toLowerCase ( ) as Address ] ;
175187
176- if ( ! addr ) {
177- console . error ( `Pool staked token not found ${ symbol } ` ) ;
188+ if ( ! token ) {
189+ console . error ( `Pool token not found ${ p } ` ) ;
178190 return false ;
179191 }
180192 return true ;
181193 } ) ;
182194
183- const farmInfoCalls = poolTokens . map ( address => ( {
195+ const farmInfoCalls = poolStakedTokens . map ( address => ( {
184196 address,
185197 abi : iFarmingPoolAbi ,
186198 functionName : "farmInfo" ,
187199 args : [ ] ,
188200 } ) ) ;
189201
190- const farmSupplyCalls = poolTokens . map ( address => ( {
202+ const farmSupplyCalls = allPoolTokens . map ( address => ( {
191203 address,
192204 abi : iFarmingPoolAbi ,
193205 functionName : "totalSupply" ,
194206 args : [ ] ,
195207 } ) ) ;
196208
197- const rewardTokenCalls = poolTokens . map ( address => ( {
209+ const rewardTokenCalls = poolStakedTokens . map ( address => ( {
198210 address,
199211 abi : POOL_REWARDS_ABI ,
200212 functionName : "rewardsToken" ,
@@ -219,14 +231,12 @@ export class GearboxRewardsApi {
219231 ] ,
220232 } ) ,
221233
222- ...poolTokensWithExtraReward . map ( symbol => {
223- const addr = currentTokenData [ symbol ] ;
224-
234+ ...poolTokensWithExtraReward . map ( t => {
225235 return axios . get < MerkleXYZRewardsCampaignsResponse > (
226236 MerkleXYZApi . getRewardsCampaignsUrl ( {
227237 params : {
228- chainId : chain . id ,
229- mainParameter : getAddress ( addr ) ,
238+ chainId,
239+ mainParameter : getAddress ( t ) ,
230240 } ,
231241 } ) ,
232242 ) ;
@@ -256,14 +266,38 @@ export class GearboxRewardsApi {
256266 rewardTokenCallsEnd ,
257267 ) as Array < Address > ;
258268
269+ const infoByPool = poolStakedTokens . reduce < Record < Address , FarmInfoOutput > > (
270+ ( acc , p , index ) => {
271+ const info = farmInfo [ index ] ;
272+
273+ if ( info ) acc [ p ] = info ;
274+
275+ return acc ;
276+ } ,
277+ { } ,
278+ ) ;
279+
280+ const rewardTokenPool = poolStakedTokens . reduce < Record < Address , Address > > (
281+ ( acc , p , index ) => {
282+ const token = rewardTokens [ index ] ;
283+
284+ if ( token ) {
285+ acc [ p ] = token . toLowerCase ( ) as Address ;
286+ }
287+
288+ return acc ;
289+ } ,
290+ { } ,
291+ ) ;
292+
259293 const extraRewards = extra . reduce < Record < string , Array < FarmInfo > > > (
260294 ( acc , r , index ) => {
261- const stakedSymbol = poolTokensWithExtraReward [ index ] ;
295+ const p = poolTokensWithExtraReward [ index ] . toLowerCase ( ) as Address ;
262296
263297 const safeResp = this . extractFulfilled (
264298 r ,
265299 reportError ,
266- `merkleCampaign: ${ stakedSymbol } ` ,
300+ `merkleCampaign: ${ p } ` ,
267301 ) ;
268302
269303 const l = safeResp ?. data . reduce < Array < FarmInfo > > ( ( infos , d ) => {
@@ -282,7 +316,7 @@ export class GearboxRewardsApi {
282316
283317 if ( rewardTokenData && reward > 0 ) {
284318 infos . push ( {
285- pool : poolByStakedToken [ currentTokenData [ stakedSymbol ] ] ,
319+ pool : poolByItsToken [ p ] ,
286320 duration : toBigInt ( d . endTimestamp - d . startTimestamp ) ,
287321 finished,
288322 reward,
@@ -296,49 +330,48 @@ export class GearboxRewardsApi {
296330 } , [ ] ) ;
297331
298332 if ( l ) {
299- acc [ currentTokenData [ stakedSymbol ] ] = l ;
333+ acc [ p ] = l ;
300334 }
301335
302336 return acc ;
303337 } ,
304338 { } ,
305339 ) ;
306340
307- const rewardPoolsInfo = poolTokens . reduce < {
341+ const stakedTokenRewards = allPoolTokens . reduce < {
308342 base : Record < string , FarmInfo > ;
309343 extra : Record < string , Array < FarmInfo > > ;
310344 all : Record < string , Array < FarmInfo > > ;
311345 } > (
312- ( acc , address , i ) => {
313- const currentInfo = farmInfo [ i ] ;
314- const poolBaseRewardTokenLc = (
315- rewardTokens [ i ] || ""
316- ) . toLowerCase ( ) as Address ;
317- const tokenData = tokensList [ poolBaseRewardTokenLc ] ;
318-
319- if ( tokenData ) {
320- const baseReward : FarmInfo = {
321- pool : poolByStakedToken [ address ] ,
322- duration : BigInt ( currentInfo . duration ) ,
323- finished : BigInt ( currentInfo . finished ) ,
324- reward : currentInfo . reward ,
325- balance : currentInfo . balance ,
326- symbol : tokenData . symbol ,
327- } ;
328-
329- const extra = extraRewards [ address ] || [ ] ;
330-
331- acc . base [ address ] = baseReward ;
332- acc . extra [ address ] = extra ;
333- acc . all [ address ] = [ baseReward , ...extra ] ;
334- }
346+ ( acc , pool ) => {
347+ const info = infoByPool [ pool ] ;
348+ const token = rewardTokenPool [ pool ] ;
349+ const tokenData = tokensList [ token ] ;
350+
351+ const baseReward : FarmInfo | undefined =
352+ info && tokenData
353+ ? {
354+ pool : poolByItsToken [ pool ] ,
355+ duration : BigInt ( info . duration ) ,
356+ finished : BigInt ( info . finished ) ,
357+ reward : info . reward ,
358+ balance : info . balance ,
359+ symbol : tokenData . symbol ,
360+ }
361+ : undefined ;
362+
363+ const extra = extraRewards [ pool ] || [ ] ;
364+
365+ if ( baseReward ) acc . base [ pool ] = baseReward ;
366+ acc . extra [ pool ] = extra ;
367+ acc . all [ pool ] = [ ...( baseReward ? [ baseReward ] : [ ] ) , ...extra ] ;
335368
336369 return acc ;
337370 } ,
338371 { base : { } , extra : { } , all : { } } ,
339372 ) ;
340373
341- const rewardPoolsSupply = poolTokens . reduce < Record < string , bigint > > (
374+ const rewardPoolsSupply = allPoolTokens . reduce < Record < string , bigint > > (
342375 ( acc , address , i ) => {
343376 acc [ address ] = farmSupply [ i ] || 0n ;
344377
@@ -348,9 +381,9 @@ export class GearboxRewardsApi {
348381 ) ;
349382
350383 return {
351- rewardPoolsInfo : rewardPoolsInfo . all ,
352- baseRewardPoolsInfo : rewardPoolsInfo . base ,
353- extraRewardPoolsInfo : rewardPoolsInfo . extra ,
384+ rewardPoolsInfo : stakedTokenRewards . all ,
385+ baseRewardPoolsInfo : stakedTokenRewards . base ,
386+ extraRewardPoolsInfo : stakedTokenRewards . extra ,
354387 rewardPoolsSupply,
355388 } ;
356389 }
0 commit comments