@folks-finance/xchain-sdk 0.0.43 → 0.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/utils/formulae.d.ts +1 -0
- package/dist/common/utils/formulae.js +1 -1
- package/dist/common/utils/formulae.js.map +1 -1
- package/dist/xchain/modules/folks-rewards.d.ts +2 -1
- package/dist/xchain/modules/folks-rewards.js +9 -2
- package/dist/xchain/modules/folks-rewards.js.map +1 -1
- package/package.json +1 -1
- package/src/common/utils/formulae.ts +1 -1
- package/src/xchain/modules/folks-rewards.ts +19 -2
|
@@ -9,6 +9,7 @@ export declare function calcRewardIndex(used: bigint, ma: bigint, rit1: Dnum, rs
|
|
|
9
9
|
export declare function calcAccruedRewards(amount: bigint, rit: Dnum, ritn1: Dnum): bigint;
|
|
10
10
|
export declare function toFAmount(underlyingAmount: bigint, diit: Dnum): bigint;
|
|
11
11
|
export declare function toUnderlyingAmount(fAmount: bigint, diit: Dnum): bigint;
|
|
12
|
+
export declare function calcAssetDollarValue(amount: bigint, tokenPrice: Dnum, tokenDecimals: number): Dnum;
|
|
12
13
|
export declare function calcCollateralAssetLoanValue(amount: bigint, tokenPrice: Dnum, tokenDecimals: number, collateralFactor: Dnum): Dnum;
|
|
13
14
|
export declare function calcBorrowAssetLoanValue(amount: bigint, tokenPrice: Dnum, tokenDecimals: number, borrowFactor: Dnum): Dnum;
|
|
14
15
|
export declare function calcBorrowBalance(bbtn1: bigint, biit: Dnum, biitn1: Dnum): bigint;
|
|
@@ -52,7 +52,7 @@ export function toUnderlyingAmount(fAmount, diit) {
|
|
|
52
52
|
const [underlyingAmount] = dn.mul([fAmount, 0], diit, { rounding: "ROUND_DOWN" });
|
|
53
53
|
return underlyingAmount;
|
|
54
54
|
}
|
|
55
|
-
function calcAssetDollarValue(amount, tokenPrice, tokenDecimals) {
|
|
55
|
+
export function calcAssetDollarValue(amount, tokenPrice, tokenDecimals) {
|
|
56
56
|
return dn.mul(tokenPrice, [amount, tokenDecimals], {
|
|
57
57
|
rounding: "ROUND_DOWN",
|
|
58
58
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formulae.js","sourceRoot":"","sources":["../../../src/common/utils/formulae.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"formulae.js","sourceRoot":"","sources":["../../../src/common/utils/formulae.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { PrepareUpdateUserPointsInLoans } from "../../chains/evm/common/types/index.js";
|
|
2
2
|
import type { LoanTypeInfo } from "../../chains/evm/hub/types/loan.js";
|
|
3
|
+
import type { OraclePrices } from "../../chains/evm/hub/types/oracle.js";
|
|
3
4
|
import type { PoolInfo } from "../../chains/evm/hub/types/pool.js";
|
|
4
5
|
import type { ActiveEpochs, ActiveEpochsInfo, Epochs, LastUpdatedPointsForRewards, PendingRewards, UserPoints } from "../../chains/evm/hub/types/rewards.js";
|
|
5
6
|
import type { AccountId, LoanId } from "../../common/types/lending.js";
|
|
@@ -23,6 +24,6 @@ export declare const read: {
|
|
|
23
24
|
lastUpdatedPointsForRewards(accountId: AccountId, activeEpochs: ActiveEpochs): Promise<LastUpdatedPointsForRewards>;
|
|
24
25
|
};
|
|
25
26
|
export declare const util: {
|
|
26
|
-
activeEpochsInfo(poolsInfo: Partial<Record<FolksTokenId, PoolInfo>>, activeEpochs: ActiveEpochs): ActiveEpochsInfo;
|
|
27
|
+
activeEpochsInfo(poolsInfo: Partial<Record<FolksTokenId, PoolInfo>>, activeEpochs: ActiveEpochs, oraclePrices: OraclePrices): ActiveEpochsInfo;
|
|
27
28
|
pendingRewards(loanTypesInfo: Partial<Record<LoanTypeId, LoanTypeInfo>>, activeEpochs: ActiveEpochs, userPoints: UserPoints, lastUpdatedPointsForRewards: LastUpdatedPointsForRewards): PendingRewards;
|
|
28
29
|
};
|
|
@@ -4,6 +4,7 @@ import { FolksHubRewards } from "../../chains/evm/hub/modules/index.js";
|
|
|
4
4
|
import { getHubChain, getHubTokensData } from "../../chains/evm/hub/utils/chain.js";
|
|
5
5
|
import { convertFromGenericAddress } from "../../common/utils/address.js";
|
|
6
6
|
import { assertHubChainSelected, getSignerGenericAddress } from "../../common/utils/chain.js";
|
|
7
|
+
import { calcAssetDollarValue } from "../../common/utils/formulae.js";
|
|
7
8
|
import { SECONDS_IN_YEAR, unixTime } from "../../common/utils/math-lib.js";
|
|
8
9
|
import { FolksCore } from "../core/folks-core.js";
|
|
9
10
|
export const prepare = {
|
|
@@ -77,9 +78,12 @@ export const read = {
|
|
|
77
78
|
},
|
|
78
79
|
};
|
|
79
80
|
export const util = {
|
|
80
|
-
activeEpochsInfo(poolsInfo, activeEpochs) {
|
|
81
|
+
activeEpochsInfo(poolsInfo, activeEpochs, oraclePrices) {
|
|
81
82
|
const activeEpochsInfo = {};
|
|
82
83
|
const currTimestamp = BigInt(unixTime());
|
|
84
|
+
const avaxPrice = oraclePrices.AVAX;
|
|
85
|
+
if (!avaxPrice)
|
|
86
|
+
throw Error("AVAX price unavailable");
|
|
83
87
|
for (const [folksTokenId, activeEpoch] of Object.entries(activeEpochs)) {
|
|
84
88
|
// calculations assumes reward rate is constant and consistent
|
|
85
89
|
const remainingTime = activeEpoch.endTimestamp - BigInt(currTimestamp);
|
|
@@ -90,7 +94,10 @@ export const util = {
|
|
|
90
94
|
const poolInfo = poolsInfo[folksTokenId];
|
|
91
95
|
if (!poolInfo)
|
|
92
96
|
throw new Error(`Unknown folks token id ${folksTokenId}`);
|
|
93
|
-
const
|
|
97
|
+
const tokenPrice = oraclePrices[folksTokenId];
|
|
98
|
+
if (!tokenPrice)
|
|
99
|
+
throw Error(`${tokenPrice} price unavailable`);
|
|
100
|
+
const rewardsApr = dn.mul(dn.div(calcAssetDollarValue(remainingRewards, avaxPrice.price, avaxPrice.decimals), calcAssetDollarValue(poolInfo.depositData.totalAmount, tokenPrice.price, tokenPrice.decimals), { decimals: 18 }), dn.div(SECONDS_IN_YEAR, remainingTime, { decimals: 18 }));
|
|
94
101
|
activeEpochsInfo[folksTokenId] = {
|
|
95
102
|
...activeEpoch,
|
|
96
103
|
remainingRewards,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folks-rewards.js","sourceRoot":"","sources":["../../../src/xchain/modules/folks-rewards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,MAAM,CAAC;AAE3B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"folks-rewards.js","sourceRoot":"","sources":["../../../src/xchain/modules/folks-rewards.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -106,7 +106,7 @@ export function toUnderlyingAmount(fAmount: bigint, diit: Dnum): bigint {
|
|
|
106
106
|
return underlyingAmount;
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
function calcAssetDollarValue(amount: bigint, tokenPrice: Dnum, tokenDecimals: number): Dnum {
|
|
109
|
+
export function calcAssetDollarValue(amount: bigint, tokenPrice: Dnum, tokenDecimals: number): Dnum {
|
|
110
110
|
return dn.mul(tokenPrice, [amount, tokenDecimals], {
|
|
111
111
|
rounding: "ROUND_DOWN",
|
|
112
112
|
});
|
|
@@ -9,11 +9,13 @@ import { FolksHubRewards } from "../../chains/evm/hub/modules/index.js";
|
|
|
9
9
|
import { getHubChain, getHubTokensData } from "../../chains/evm/hub/utils/chain.js";
|
|
10
10
|
import { convertFromGenericAddress } from "../../common/utils/address.js";
|
|
11
11
|
import { assertHubChainSelected, getSignerGenericAddress } from "../../common/utils/chain.js";
|
|
12
|
+
import { calcAssetDollarValue } from "../../common/utils/formulae.js";
|
|
12
13
|
import { SECONDS_IN_YEAR, unixTime } from "../../common/utils/math-lib.js";
|
|
13
14
|
import { FolksCore } from "../core/folks-core.js";
|
|
14
15
|
|
|
15
16
|
import type { PrepareUpdateUserPointsInLoans } from "../../chains/evm/common/types/index.js";
|
|
16
17
|
import type { LoanTypeInfo } from "../../chains/evm/hub/types/loan.js";
|
|
18
|
+
import type { OraclePrices } from "../../chains/evm/hub/types/oracle.js";
|
|
17
19
|
import type { PoolInfo } from "../../chains/evm/hub/types/pool.js";
|
|
18
20
|
import type {
|
|
19
21
|
ActiveEpochs,
|
|
@@ -179,10 +181,17 @@ export const read = {
|
|
|
179
181
|
};
|
|
180
182
|
|
|
181
183
|
export const util = {
|
|
182
|
-
activeEpochsInfo(
|
|
184
|
+
activeEpochsInfo(
|
|
185
|
+
poolsInfo: Partial<Record<FolksTokenId, PoolInfo>>,
|
|
186
|
+
activeEpochs: ActiveEpochs,
|
|
187
|
+
oraclePrices: OraclePrices,
|
|
188
|
+
): ActiveEpochsInfo {
|
|
183
189
|
const activeEpochsInfo: ActiveEpochsInfo = {};
|
|
184
190
|
const currTimestamp = BigInt(unixTime());
|
|
185
191
|
|
|
192
|
+
const avaxPrice = oraclePrices.AVAX;
|
|
193
|
+
if (!avaxPrice) throw Error("AVAX price unavailable");
|
|
194
|
+
|
|
186
195
|
for (const [folksTokenId, activeEpoch] of Object.entries(activeEpochs)) {
|
|
187
196
|
// calculations assumes reward rate is constant and consistent
|
|
188
197
|
const remainingTime = activeEpoch.endTimestamp - BigInt(currTimestamp);
|
|
@@ -194,8 +203,16 @@ export const util = {
|
|
|
194
203
|
// apr is total rewards over the total deposit, scaling by epoch length
|
|
195
204
|
const poolInfo = poolsInfo[folksTokenId as FolksTokenId];
|
|
196
205
|
if (!poolInfo) throw new Error(`Unknown folks token id ${folksTokenId}`);
|
|
206
|
+
|
|
207
|
+
const tokenPrice = oraclePrices[folksTokenId as FolksTokenId];
|
|
208
|
+
if (!tokenPrice) throw Error(`${tokenPrice} price unavailable`);
|
|
209
|
+
|
|
197
210
|
const rewardsApr = dn.mul(
|
|
198
|
-
dn.div(
|
|
211
|
+
dn.div(
|
|
212
|
+
calcAssetDollarValue(remainingRewards, avaxPrice.price, avaxPrice.decimals),
|
|
213
|
+
calcAssetDollarValue(poolInfo.depositData.totalAmount, tokenPrice.price, tokenPrice.decimals),
|
|
214
|
+
{ decimals: 18 },
|
|
215
|
+
),
|
|
199
216
|
dn.div(SECONDS_IN_YEAR, remainingTime, { decimals: 18 }),
|
|
200
217
|
);
|
|
201
218
|
|