diff --git a/package.json b/package.json index 59c35163e..3fcfaeade 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@interlay/interbtc-api", - "version": "2.3.4", + "version": "2.3.5", "description": "JavaScript library to interact with interBTC", "main": "build/src/index.js", "typings": "build/src/index.d.ts", diff --git a/src/parachain/amm.ts b/src/parachain/amm.ts index ded6308fe..2bad12081 100644 --- a/src/parachain/amm.ts +++ b/src/parachain/amm.ts @@ -594,22 +594,35 @@ export class DefaultAMMAPI implements AMMAPI { return { extrinsic: swapExtrinsic, event: this.api.events.dexStable.CurrencyExchange }; } + private async _getFarmingRewardCurrencyIds( + lpTokenCurrencyId: InterbtcPrimitivesCurrencyId + ): Promise> { + const rewardCurrenciesRaw = await this.api.query.farmingRewards.rewardCurrencies(lpTokenCurrencyId); + + const rewardCurrencies = Array.from(rewardCurrenciesRaw.values()); + + return rewardCurrencies; + } + private async _getClaimableFarmingRewardsByPool( accountId: AccountId, - lpToken: LpCurrency, - pool: LiquidityPool + lpToken: LpCurrency ): Promise>> { const lpTokenCurrencyId = newCurrencyId(this.api, lpToken); - const rewardCurrencyIds = pool.rewardAmountsYearly.map(({ currency: rewardCurrency }) => - newCurrencyId(this.api, rewardCurrency) - ); + + const rewardCurrencyIds = await this._getFarmingRewardCurrencyIds(lpTokenCurrencyId); + const farmingRewards = await Promise.all( rewardCurrencyIds.map((rewardCurrencyId) => this.api.rpc.reward.computeFarmingReward(accountId, lpTokenCurrencyId, rewardCurrencyId) ) ); - const rewardAmounts = pool.rewardAmountsYearly.map(({ currency: rewardCurrency }, index) => - newMonetaryAmount(farmingRewards[index].amount.toString(), rewardCurrency) + + const rewardAmounts = Promise.all( + rewardCurrencyIds.map(async (currencyId, index) => { + const currency = await currencyIdToMonetaryCurrency(this.api, currencyId); + return newMonetaryAmount(farmingRewards[index].amount.toString(), currency); + }) ); return rewardAmounts; @@ -627,7 +640,7 @@ export class DefaultAMMAPI implements AMMAPI { // Return empty array for pools without liquidity. return []; } - return this._getClaimableFarmingRewardsByPool(accountId, currency, pool); + return this._getClaimableFarmingRewardsByPool(accountId, currency); }) );