@@ -97,10 +97,12 @@ export interface FarmInfo {
9797 symbol : SupportedToken ;
9898}
9999
100- type PoolsWithExtraRewardsList = Record < NetworkType , Array < SupportedToken > > ;
100+ type PoolsWithExtraRewardsList = Record < NetworkType , Array < Address > > ;
101101
102102const DEFAULT_POOLS_WITH_EXTRA_REWARDS : PoolsWithExtraRewardsList = {
103- Mainnet : [ "dtBTCV3" ] ,
103+ Mainnet : [
104+ "0x7354EC6E852108411e681D13E11185c3a2567981" , // dtBTCV3
105+ ] ,
104106 Arbitrum : [ ] ,
105107 Optimism : [ ] ,
106108 Base : [ ] ,
@@ -110,7 +112,6 @@ type ReportHandler = (e: unknown, description?: string) => void;
110112
111113export interface GetLmRewardsInfoProps {
112114 pools : Record < Address , PoolData > ;
113- currentTokenData : Record < SupportedToken , Address > ;
114115 tokensList : Record < Address , TokenData > ;
115116 provider : PublicClient ;
116117
@@ -151,7 +152,6 @@ export interface ClaimLmRewardsV3Props {
151152export class GearboxRewardsApi {
152153 static async getLmRewardsInfo ( {
153154 pools,
154- currentTokenData,
155155 provider,
156156 multicallAddress,
157157 tokensList,
@@ -160,7 +160,7 @@ export class GearboxRewardsApi {
160160 network,
161161 reportError,
162162 } : GetLmRewardsInfoProps ) {
163- const poolByStakedToken = Object . values ( pools ) . reduce <
163+ const poolByStakedDiesel = Object . values ( pools ) . reduce <
164164 Record < Address , Address >
165165 > ( ( acc , p ) => {
166166 p . stakedDieselToken . forEach ( t => {
@@ -173,36 +173,48 @@ export class GearboxRewardsApi {
173173 return acc ;
174174 } , { } ) ;
175175
176- const poolTokens = TypedObjectUtils . keys ( poolByStakedToken ) ;
176+ const poolByDiesel = Object . values ( pools ) . reduce < Record < Address , Address > > (
177+ ( acc , p ) => {
178+ acc [ p . dieselToken ] = p . address ;
179+
180+ return acc ;
181+ } ,
182+ { } ,
183+ ) ;
184+
185+ const poolByItsToken = { ...poolByStakedDiesel , ...poolByDiesel } ;
186+
187+ const poolStakedTokens = TypedObjectUtils . keys ( poolByStakedDiesel ) ;
188+ const allPoolTokens = TypedObjectUtils . keys ( poolByItsToken ) ;
177189
178190 const chainId = CHAINS [ network ] ;
179191 const poolTokensWithExtraReward = (
180192 poolsWithExtraRewards [ network ] || [ ]
181- ) . filter ( symbol => {
182- const addr = currentTokenData [ symbol ] ;
193+ ) . filter ( p => {
194+ const token = tokensList [ p . toLowerCase ( ) as Address ] ;
183195
184- if ( ! addr ) {
185- console . error ( `Pool staked token not found ${ symbol } ` ) ;
196+ if ( ! token ) {
197+ console . error ( `Pool token not found ${ p } ` ) ;
186198 return false ;
187199 }
188200 return true ;
189201 } ) ;
190202
191- const farmInfoCalls = poolTokens . map ( address => ( {
203+ const farmInfoCalls = poolStakedTokens . map ( address => ( {
192204 address,
193205 abi : iFarmingPoolAbi ,
194206 functionName : "farmInfo" ,
195207 args : [ ] ,
196208 } ) ) ;
197209
198- const farmSupplyCalls = poolTokens . map ( address => ( {
210+ const farmSupplyCalls = allPoolTokens . map ( address => ( {
199211 address,
200212 abi : iFarmingPoolAbi ,
201213 functionName : "totalSupply" ,
202214 args : [ ] ,
203215 } ) ) ;
204216
205- const rewardTokenCalls = poolTokens . map ( address => ( {
217+ const rewardTokenCalls = poolStakedTokens . map ( address => ( {
206218 address,
207219 abi : POOL_REWARDS_ABI ,
208220 functionName : "rewardsToken" ,
@@ -227,14 +239,12 @@ export class GearboxRewardsApi {
227239 ] ,
228240 } ) ,
229241
230- ...poolTokensWithExtraReward . map ( symbol => {
231- const addr = currentTokenData [ symbol ] ;
232-
242+ ...poolTokensWithExtraReward . map ( t => {
233243 return axios . get < MerkleXYZRewardsCampaignsResponse > (
234244 MerkleXYZApi . getRewardsCampaignsUrl ( {
235245 params : {
236246 chainId,
237- mainParameter : getAddress ( addr ) ,
247+ mainParameter : getAddress ( t ) ,
238248 } ,
239249 } ) ,
240250 ) ;
@@ -264,14 +274,38 @@ export class GearboxRewardsApi {
264274 rewardTokenCallsEnd ,
265275 ) as Array < Address > ;
266276
277+ const infoByPool = poolStakedTokens . reduce < Record < Address , FarmInfoOutput > > (
278+ ( acc , p , index ) => {
279+ const info = farmInfo [ index ] ;
280+
281+ if ( info ) acc [ p ] = info ;
282+
283+ return acc ;
284+ } ,
285+ { } ,
286+ ) ;
287+
288+ const rewardTokenPool = poolStakedTokens . reduce < Record < Address , Address > > (
289+ ( acc , p , index ) => {
290+ const token = rewardTokens [ index ] ;
291+
292+ if ( token ) {
293+ acc [ p ] = token . toLowerCase ( ) as Address ;
294+ }
295+
296+ return acc ;
297+ } ,
298+ { } ,
299+ ) ;
300+
267301 const extraRewards = extra . reduce < Record < string , Array < FarmInfo > > > (
268302 ( acc , r , index ) => {
269- const stakedSymbol = poolTokensWithExtraReward [ index ] ;
303+ const p = poolTokensWithExtraReward [ index ] . toLowerCase ( ) as Address ;
270304
271305 const safeResp = this . extractFulfilled (
272306 r ,
273307 reportError ,
274- `merkleCampaign: ${ stakedSymbol } ` ,
308+ `merkleCampaign: ${ p } ` ,
275309 ) ;
276310
277311 const l = safeResp ?. data . reduce < Array < FarmInfo > > ( ( infos , d ) => {
@@ -290,7 +324,7 @@ export class GearboxRewardsApi {
290324
291325 if ( rewardTokenData && reward > 0 ) {
292326 infos . push ( {
293- pool : poolByStakedToken [ currentTokenData [ stakedSymbol ] ] ,
327+ pool : poolByItsToken [ p ] ,
294328 duration : toBigInt ( d . endTimestamp - d . startTimestamp ) ,
295329 finished,
296330 reward,
@@ -304,49 +338,48 @@ export class GearboxRewardsApi {
304338 } , [ ] ) ;
305339
306340 if ( l ) {
307- acc [ currentTokenData [ stakedSymbol ] ] = l ;
341+ acc [ p ] = l ;
308342 }
309343
310344 return acc ;
311345 } ,
312346 { } ,
313347 ) ;
314348
315- const rewardPoolsInfo = poolTokens . reduce < {
349+ const stakedTokenRewards = allPoolTokens . reduce < {
316350 base : Record < string , FarmInfo > ;
317351 extra : Record < string , Array < FarmInfo > > ;
318352 all : Record < string , Array < FarmInfo > > ;
319353 } > (
320- ( acc , address , i ) => {
321- const currentInfo = farmInfo [ i ] ;
322- const poolBaseRewardTokenLc = (
323- rewardTokens [ i ] || ""
324- ) . toLowerCase ( ) as Address ;
325- const tokenData = tokensList [ poolBaseRewardTokenLc ] ;
326-
327- if ( tokenData ) {
328- const baseReward : FarmInfo = {
329- pool : poolByStakedToken [ address ] ,
330- duration : BigInt ( currentInfo . duration ) ,
331- finished : BigInt ( currentInfo . finished ) ,
332- reward : currentInfo . reward ,
333- balance : currentInfo . balance ,
334- symbol : tokenData . symbol ,
335- } ;
336-
337- const extra = extraRewards [ address ] || [ ] ;
338-
339- acc . base [ address ] = baseReward ;
340- acc . extra [ address ] = extra ;
341- acc . all [ address ] = [ baseReward , ...extra ] ;
342- }
354+ ( acc , pool ) => {
355+ const info = infoByPool [ pool ] ;
356+ const token = rewardTokenPool [ pool ] ;
357+ const tokenData = tokensList [ token ] ;
358+
359+ const baseReward : FarmInfo | undefined =
360+ info && tokenData
361+ ? {
362+ pool : poolByItsToken [ pool ] ,
363+ duration : BigInt ( info . duration ) ,
364+ finished : BigInt ( info . finished ) ,
365+ reward : info . reward ,
366+ balance : info . balance ,
367+ symbol : tokenData . symbol ,
368+ }
369+ : undefined ;
370+
371+ const extra = extraRewards [ pool ] || [ ] ;
372+
373+ if ( baseReward ) acc . base [ pool ] = baseReward ;
374+ acc . extra [ pool ] = extra ;
375+ acc . all [ pool ] = [ ...( baseReward ? [ baseReward ] : [ ] ) , ...extra ] ;
343376
344377 return acc ;
345378 } ,
346379 { base : { } , extra : { } , all : { } } ,
347380 ) ;
348381
349- const rewardPoolsSupply = poolTokens . reduce < Record < string , bigint > > (
382+ const rewardPoolsSupply = allPoolTokens . reduce < Record < string , bigint > > (
350383 ( acc , address , i ) => {
351384 acc [ address ] = farmSupply [ i ] || 0n ;
352385
@@ -356,9 +389,9 @@ export class GearboxRewardsApi {
356389 ) ;
357390
358391 return {
359- rewardPoolsInfo : rewardPoolsInfo . all ,
360- baseRewardPoolsInfo : rewardPoolsInfo . base ,
361- extraRewardPoolsInfo : rewardPoolsInfo . extra ,
392+ rewardPoolsInfo : stakedTokenRewards . all ,
393+ baseRewardPoolsInfo : stakedTokenRewards . base ,
394+ extraRewardPoolsInfo : stakedTokenRewards . extra ,
362395 rewardPoolsSupply,
363396 } ;
364397 }
0 commit comments