@folks-finance/xchain-sdk 0.0.32 → 0.0.34

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.
@@ -3,3 +3,4 @@ export declare const defaultEventParams: EventParams;
3
3
  export declare const GAS_LIMIT_ESTIMATE_INCREASE = 10000n;
4
4
  export declare const SEND_TOKEN_ACTION_RETURN_GAS_LIMIT = 500000n;
5
5
  export declare const RECEIVER_VALUE_SLIPPAGE = 0.01;
6
+ export declare const RETRY_REVERSE_GAS_LIMIT_SLIPPAGE = 0.05;
@@ -6,4 +6,5 @@ export const defaultEventParams = {
6
6
  export const GAS_LIMIT_ESTIMATE_INCREASE = 10000n;
7
7
  export const SEND_TOKEN_ACTION_RETURN_GAS_LIMIT = 500000n;
8
8
  export const RECEIVER_VALUE_SLIPPAGE = 0.01;
9
+ export const RETRY_REVERSE_GAS_LIMIT_SLIPPAGE = 0.05;
9
10
  //# sourceMappingURL=contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../../../src/chains/evm/common/constants/contract.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAgB;IAC7C,SAAS,EAAE,UAAU;IACrB,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAO,CAAC;AACnD,MAAM,CAAC,MAAM,kCAAkC,GAAG,OAAQ,CAAC;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../../../src/chains/evm/common/constants/contract.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAgB;IAC7C,SAAS,EAAE,UAAU;IACrB,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAO,CAAC;AACnD,MAAM,CAAC,MAAM,kCAAkC,GAAG,OAAQ,CAAC;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAC5C,MAAM,CAAC,MAAM,gCAAgC,GAAG,IAAI,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import { FINALITY } from "../../../../common/constants/message.js";
2
2
  import { getRandomGenericAddress } from "../../../../common/utils/address.js";
3
3
  import { getRandomBytes } from "../../../../common/utils/bytes.js";
4
- import { GAS_LIMIT_ESTIMATE_INCREASE } from "../../common/constants/contract.js";
4
+ import { increaseByPercent } from "../../../../common/utils/math-lib.js";
5
+ import { RETRY_REVERSE_GAS_LIMIT_SLIPPAGE } from "../../common/constants/contract.js";
5
6
  import { getEvmSignerAccount } from "../../common/utils/chain.js";
6
7
  import { buildMessageParams, buildSendTokenExtraArgsWhenRemoving } from "../../common/utils/message.js";
7
8
  import { getBridgeRouterHubContract } from "../utils/contract.js";
@@ -15,7 +16,7 @@ export const prepare = {
15
16
  value,
16
17
  });
17
18
  return {
18
- gasLimit: gasLimit + GAS_LIMIT_ESTIMATE_INCREASE,
19
+ gasLimit: increaseByPercent(gasLimit, RETRY_REVERSE_GAS_LIMIT_SLIPPAGE),
19
20
  msgValue: value,
20
21
  isHub: true,
21
22
  message,
@@ -32,7 +33,7 @@ export const prepare = {
32
33
  value,
33
34
  });
34
35
  return {
35
- gasLimit: gasLimit + GAS_LIMIT_ESTIMATE_INCREASE,
36
+ gasLimit: increaseByPercent(gasLimit, RETRY_REVERSE_GAS_LIMIT_SLIPPAGE),
36
37
  msgValue: value,
37
38
  isHub: true,
38
39
  message,
@@ -1 +1 @@
1
- {"version":3,"file":"folks-hub-gmp.js","sourceRoot":"","sources":["../../../../../src/chains/evm/hub/modules/folks-hub-gmp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"folks-hub-gmp.js","sourceRoot":"","sources":["../../../../../src/chains/evm/hub/modules/folks-hub-gmp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,mCAAmC,EAAE,MAAM,+BAA+B,CAAC;AACxG,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAYlE,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,KAAK,CAAC,YAAY,CAChB,QAAgB,EAChB,MAAkB,EAClB,SAAsB,EACtB,SAAoB,EACpB,OAAwB,EACxB,SAAc,EACd,KAAa,EACb,QAAkB,EAClB,qBAA4C;QAC1C,OAAO,EAAE,MAAM;KAChB;QAED,MAAM,YAAY,GAAG,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAExF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE;YACvG,GAAG,kBAAkB;YACrB,KAAK;SACN,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE,gCAAgC,CAAC;YACvE,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,IAAI;YACX,OAAO;YACP,SAAS;YACT,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;SAClD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,MAAkB,EAClB,SAAsB,EACtB,SAAoB,EACpB,OAAwB,EACxB,SAAc,EACd,KAAa,EACb,QAAkB,EAClB,qBAA4C;QAC1C,OAAO,EAAE,MAAM;KAChB;QAED,MAAM,YAAY,GAAG,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAExF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE;YACzG,GAAG,kBAAkB;YACrB,KAAK;SACN,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE,gCAAgC,CAAC;YACvE,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,IAAI;YACX,OAAO;YACP,SAAS;YACT,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;SAClD,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,KAAK,CAAC,YAAY,CAChB,QAAgB,EAChB,MAAoB,EACpB,SAAsB,EACtB,SAAoB,EACpB,WAAoC;QAEpC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,GAAG,WAAW,CAAC;QAEpF,MAAM,YAAY,GAAG,0BAA0B,CAAC,QAAQ,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;QAEvF,OAAO,MAAM,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE;YACvF,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC;YACpC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,MAAoB,EACpB,SAAsB,EACtB,SAAoB,EACpB,WAAsC;QAEtC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,GAAG,WAAW,CAAC;QAEpF,MAAM,YAAY,GAAG,0BAA0B,CAAC,QAAQ,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;QAEvF,OAAO,MAAM,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE;YACzF,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC;YACpC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,cAA4B,EAC5B,SAAsB,EACtB,QAAgB,EAChB,QAAkB,EAClB,YAA0B;IAE1B,MAAM,eAAe,GAAG,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAE3F,2BAA2B;IAC3B,MAAM,OAAO,GAAkB;QAC7B,MAAM,EAAE,kBAAkB,CAAC;YACzB,QAAQ,EAAE;gBACR,SAAS;gBACT,eAAe,EAAE,CAAgB;aAClC;YACD,QAAQ;SACT,CAAC;QACF,MAAM,EAAE,QAAQ,CAAC,UAAU;QAC3B,kBAAkB,EAAE,cAAc;QAClC,OAAO,EAAE,uBAAuB,EAAE;QAClC,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC;QAC5B,aAAa,EAAE,QAAQ,CAAC,SAAS;QACjC,SAAS,EAAE,mCAAmC,CAAC,uBAAuB,EAAE,EAAE,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;KAClG,CAAC;IAEF,yBAAyB;IACzB,OAAO,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1D,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { multicall } from "viem/actions";
2
- import { calcBorrowInterestIndex, calcDepositInterestIndex } from "../../../../common/utils/formulae.js";
2
+ import { calcBorrowInterestIndex, calcDepositInterestIndex, calcOverallBorrowInterestRate, calcRetention, } from "../../../../common/utils/formulae.js";
3
3
  import { compoundEveryHour, compoundEverySecond } from "../../../../common/utils/math-lib.js";
4
4
  import { getHubTokenData } from "../utils/chain.js";
5
5
  import { getHubPoolContract } from "../utils/contract.js";
@@ -7,7 +7,7 @@ export async function getPoolInfo(provider, network, folksTokenId) {
7
7
  const { poolAddress, token: { decimals: tokenDecimals }, } = getHubTokenData(folksTokenId, network);
8
8
  const hubPool = getHubPoolContract(provider, poolAddress);
9
9
  // get pool data
10
- const [poolId, lastUpdateTimestamp, feeData, depositData, variableBorrowData, stableBorrowData, capsData, configData,] = await multicall(provider, {
10
+ const [poolId, lastUpdateTimestamp, feeData, depositData, variableBorrowData, stableBorrowData, capsData, configData, fTokenCirculatingSupply,] = await multicall(provider, {
11
11
  contracts: [
12
12
  {
13
13
  address: hubPool.address,
@@ -49,10 +49,15 @@ export async function getPoolInfo(provider, network, folksTokenId) {
49
49
  abi: hubPool.abi,
50
50
  functionName: "getConfigData",
51
51
  },
52
+ {
53
+ address: hubPool.address,
54
+ abi: hubPool.abi,
55
+ functionName: "totalSupply",
56
+ },
52
57
  ],
53
58
  allowFailure: false,
54
59
  });
55
- const { flashLoanFee, retentionRate, fTokenFeeRecipient, tokenFeeClaimer, totalRetainedAmount, tokenFeeRecipient } = feeData;
60
+ const { flashLoanFee, retentionRate, fTokenFeeRecipient, tokenFeeClaimer, totalRetainedAmount: actualRetained, tokenFeeRecipient, } = feeData;
56
61
  const { optimalUtilisationRatio, totalAmount: depositTotalAmount, interestRate: depositInterestRate, interestIndex: oldDepositInterestIndex, } = depositData;
57
62
  const { vr0, vr1, vr2, totalAmount: variableBorrowTotalAmount, interestRate: variableBorrowInterestRate, interestIndex: oldVariableBorrowInterestsIndex, } = variableBorrowData;
58
63
  const { sr0, sr1, sr2, sr3, optimalStableToTotalDebtRatio, rebalanceUpUtilisationRatio, rebalanceUpDepositInterestRate, rebalanceDownDelta, totalAmount: stableBorrowTotalAmount, interestRate: stableBorrowInterestRate, averageInterestRate: stableBorrowAverageInterestRate, } = stableBorrowData;
@@ -66,7 +71,7 @@ export async function getPoolInfo(provider, network, folksTokenId) {
66
71
  feeData: {
67
72
  flashLoanFee: [BigInt(flashLoanFee), 6],
68
73
  retentionRate: [BigInt(retentionRate), 6],
69
- totalRetainedAmount,
74
+ totalRetainedAmount: calcRetention(actualRetained, variableBorrowTotalAmount + stableBorrowTotalAmount, calcOverallBorrowInterestRate(variableBorrowTotalAmount, stableBorrowTotalAmount, [variableBorrowInterestRate, 18], [stableBorrowAverageInterestRate, 18]), [BigInt(retentionRate), 6], lastUpdateTimestamp),
70
75
  fTokenFeeRecipient: fTokenFeeRecipient,
71
76
  tokenFeeClaimer: tokenFeeClaimer,
72
77
  tokenFeeRecipient: tokenFeeRecipient,
@@ -113,6 +118,7 @@ export async function getPoolInfo(provider, network, folksTokenId) {
113
118
  canMintFToken,
114
119
  flashLoanSupported,
115
120
  },
121
+ fTokenCirculatingSupply,
116
122
  };
117
123
  }
118
124
  //# sourceMappingURL=folks-hub-pool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"folks-hub-pool.js","sourceRoot":"","sources":["../../../../../src/chains/evm/hub/modules/folks-hub-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"folks-hub-pool.js","sourceRoot":"","sources":["../../../../../src/chains/evm/hub/modules/folks-hub-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,EAC7B,aAAa,GACd,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQ1D,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,OAAoB,EACpB,YAA0B;IAE1B,MAAM,EACJ,WAAW,EACX,KAAK,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,GACnC,GAAG,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAE1D,gBAAgB;IAChB,MAAM,CACJ,MAAM,EACN,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,uBAAuB,EACxB,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE;QAC5B,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,YAAY,EAAE,WAAW;aAC1B;YACD;gBACE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,YAAY,EAAE,wBAAwB;aACvC;YACD;gBACE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,YAAY,EAAE,YAAY;aAC3B;YACD;gBACE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,YAAY,EAAE,gBAAgB;aAC/B;YACD;gBACE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,YAAY,EAAE,uBAAuB;aACtC;YACD;gBACE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,YAAY,EAAE,qBAAqB;aACpC;YACD;gBACE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,YAAY,EAAE,aAAa;aAC5B;YACD;gBACE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,YAAY,EAAE,eAAe;aAC9B;YACD;gBACE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,YAAY,EAAE,aAAa;aAC5B;SACF;QACD,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IAEH,MAAM,EACJ,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EAAE,cAAc,EACnC,iBAAiB,GAClB,GAAG,OAAO,CAAC;IACZ,MAAM,EACJ,uBAAuB,EACvB,WAAW,EAAE,kBAAkB,EAC/B,YAAY,EAAE,mBAAmB,EACjC,aAAa,EAAE,uBAAuB,GACvC,GAAG,WAAW,CAAC;IAChB,MAAM,EACJ,GAAG,EACH,GAAG,EACH,GAAG,EACH,WAAW,EAAE,yBAAyB,EACtC,YAAY,EAAE,0BAA0B,EACxC,aAAa,EAAE,+BAA+B,GAC/C,GAAG,kBAAkB,CAAC;IACvB,MAAM,EACJ,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,6BAA6B,EAC7B,2BAA2B,EAC3B,8BAA8B,EAC9B,kBAAkB,EAClB,WAAW,EAAE,uBAAuB,EACpC,YAAY,EAAE,wBAAwB,EACtC,mBAAmB,EAAE,+BAA+B,GACrD,GAAG,gBAAgB,CAAC;IACrB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,GAAG,QAAQ,CAAC;IAC/G,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,UAAU,CAAC;IAE5F,kBAAkB;IAClB,OAAO;QACL,YAAY;QACZ,MAAM;QACN,aAAa;QACb,OAAO,EAAE;YACP,YAAY,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACvC,aAAa,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACzC,mBAAmB,EAAE,aAAa,CAChC,cAAc,EACd,yBAAyB,GAAG,uBAAuB,EACnD,6BAA6B,CAC3B,yBAAyB,EACzB,uBAAuB,EACvB,CAAC,0BAA0B,EAAE,EAAE,CAAC,EAChC,CAAC,+BAA+B,EAAE,EAAE,CAAC,CACtC,EACD,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,EAC1B,mBAAmB,CACpB;YACD,kBAAkB,EAAE,kBAAgC;YACpD,eAAe,EAAE,eAA6B;YAC9C,iBAAiB,EAAE,iBAAmC;SACvD;QACD,WAAW,EAAE;YACX,uBAAuB,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;YAC7D,WAAW,EAAE,kBAAkB;YAC/B,YAAY,EAAE,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACvC,aAAa,EAAE,iBAAiB,CAAC,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAC3D,aAAa,EAAE,wBAAwB,CACrC,CAAC,mBAAmB,EAAE,EAAE,CAAC,EACzB,CAAC,uBAAuB,EAAE,EAAE,CAAC,EAC7B,mBAAmB,CACpB;SACF;QACD,kBAAkB,EAAE;YAClB,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrB,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrB,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrB,WAAW,EAAE,yBAAyB;YACtC,YAAY,EAAE,CAAC,0BAA0B,EAAE,EAAE,CAAC;YAC9C,aAAa,EAAE,mBAAmB,CAAC,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;YACpE,aAAa,EAAE,uBAAuB,CACpC,CAAC,0BAA0B,EAAE,EAAE,CAAC,EAChC,CAAC,+BAA+B,EAAE,EAAE,CAAC,EACrC,mBAAmB,CACpB;SACF;QACD,gBAAgB,EAAE;YAChB,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrB,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrB,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrB,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrB,6BAA6B,EAAE,CAAC,MAAM,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;YACzE,2BAA2B,EAAE,CAAC,MAAM,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;YACrE,8BAA8B,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;YAC3E,kBAAkB,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACnD,WAAW,EAAE,uBAAuB;YACpC,YAAY,EAAE,CAAC,wBAAwB,EAAE,EAAE,CAAC;YAC5C,aAAa,EAAE,mBAAmB,CAAC,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;YAClE,mBAAmB,EAAE,CAAC,+BAA+B,EAAE,EAAE,CAAC;YAC1D,oBAAoB,EAAE,mBAAmB,CAAC,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;SACjF;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC;YAC3B,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC;YACzB,sBAAsB,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,EAAE,CAAC;SAChE;QACD,UAAU,EAAE;YACV,UAAU;YACV,qBAAqB;YACrB,aAAa;YACb,kBAAkB;SACnB;QACD,uBAAuB;KACxB,CAAC;AACJ,CAAC"}
@@ -61,5 +61,6 @@ export type PoolInfo = {
61
61
  stableBorrowData: StableBorrowData;
62
62
  capsData: CapsData;
63
63
  configData: ConfigData;
64
+ fTokenCirculatingSupply: bigint;
64
65
  };
65
66
  export {};
@@ -1,8 +1,10 @@
1
1
  import type { Dnum } from "dnum";
2
2
  export declare function calcPeriodNumber(offset: bigint, length: bigint): bigint;
3
3
  export declare function calcNextPeriodReset(periodNumber: bigint, offset: bigint, length: bigint): bigint;
4
+ export declare function calcOverallBorrowInterestRate(totalVarDebt: bigint, totalStableDebt: bigint, variableBorInterestRate: Dnum, avgStableBorInterestRate: Dnum): Dnum;
4
5
  export declare function calcDepositInterestIndex(dirt1: Dnum, diit1: Dnum, latestUpdate: bigint): Dnum;
5
6
  export declare function calcBorrowInterestIndex(birt1: Dnum, biit1: Dnum, latestUpdate: bigint): Dnum;
7
+ export declare function calcRetention(actualRetained: bigint, totalDebt: bigint, overallBorrowInterestRate: Dnum, retentionRate: Dnum, latestUpdate: bigint): bigint;
6
8
  export declare function calcRewardIndex(used: bigint, ma: bigint, rit1: Dnum, rs: Dnum, latestUpdate: bigint): Dnum;
7
9
  export declare function calcAccruedRewards(amount: bigint, rit: Dnum, ritn1: Dnum): bigint;
8
10
  export declare function toFAmount(underlyingAmount: bigint, diit: Dnum): bigint;
@@ -6,6 +6,12 @@ export function calcPeriodNumber(offset, length) {
6
6
  export function calcNextPeriodReset(periodNumber, offset, length) {
7
7
  return (periodNumber + BigInt(1)) * length - offset;
8
8
  }
9
+ export function calcOverallBorrowInterestRate(totalVarDebt, totalStableDebt, variableBorInterestRate, avgStableBorInterestRate) {
10
+ const totalDebt = totalVarDebt + totalStableDebt;
11
+ if (totalDebt === 0n)
12
+ return dn.from(0, 18);
13
+ return dn.div(dn.add(dn.mul(totalVarDebt, variableBorInterestRate, { rounding: "ROUND_DOWN", decimals: 0 }), dn.mul(totalStableDebt, avgStableBorInterestRate, { rounding: "ROUND_DOWN", decimals: 0 })), totalDebt, { rounding: "ROUND_DOWN", decimals: 18 });
14
+ }
9
15
  export function calcDepositInterestIndex(dirt1, diit1, latestUpdate) {
10
16
  const dt = BigInt(unixTime()) - latestUpdate;
11
17
  return dn.mul(diit1, dn.add(dn.from(1, 18), dn.div(dn.mul(dirt1, dt, { rounding: "ROUND_DOWN" }), SECONDS_IN_YEAR, {
@@ -16,6 +22,16 @@ export function calcBorrowInterestIndex(birt1, biit1, latestUpdate) {
16
22
  const dt = BigInt(unixTime()) - latestUpdate;
17
23
  return dn.mul(biit1, expBySquaring(dn.add(dn.from(1, 18), dn.div(birt1, SECONDS_IN_YEAR, { rounding: "ROUND_DOWN" })), dt), { rounding: "ROUND_DOWN" });
18
24
  }
25
+ export function calcRetention(actualRetained, totalDebt, overallBorrowInterestRate, retentionRate, latestUpdate) {
26
+ const dt = BigInt(unixTime()) - latestUpdate;
27
+ const [retainedDelta] = dn.div(dn.mul(dn.mul(dn.mul(totalDebt, overallBorrowInterestRate, { rounding: "ROUND_DOWN", decimals: 0 }), retentionRate, {
28
+ rounding: "ROUND_DOWN",
29
+ decimals: 0,
30
+ }), dt, { rounding: "ROUND_DOWN" }), SECONDS_IN_YEAR, {
31
+ rounding: "ROUND_DOWN",
32
+ });
33
+ return actualRetained + retainedDelta;
34
+ }
19
35
  export function calcRewardIndex(used, ma, rit1, rs, latestUpdate) {
20
36
  if (used <= ma)
21
37
  return rit1;
@@ -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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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@folks-finance/xchain-sdk",
3
3
  "description": "The official JavaScript SDK for the Folks Finance Cross-Chain Lending Protocol",
4
- "version": "0.0.32",
4
+ "version": "0.0.34",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -9,3 +9,4 @@ export const defaultEventParams: EventParams = {
9
9
  export const GAS_LIMIT_ESTIMATE_INCREASE = 10_000n;
10
10
  export const SEND_TOKEN_ACTION_RETURN_GAS_LIMIT = 500_000n;
11
11
  export const RECEIVER_VALUE_SLIPPAGE = 0.01;
12
+ export const RETRY_REVERSE_GAS_LIMIT_SLIPPAGE = 0.05;
@@ -1,7 +1,8 @@
1
1
  import { FINALITY } from "../../../../common/constants/message.js";
2
2
  import { getRandomGenericAddress } from "../../../../common/utils/address.js";
3
3
  import { getRandomBytes } from "../../../../common/utils/bytes.js";
4
- import { GAS_LIMIT_ESTIMATE_INCREASE } from "../../common/constants/contract.js";
4
+ import { increaseByPercent } from "../../../../common/utils/math-lib.js";
5
+ import { RETRY_REVERSE_GAS_LIMIT_SLIPPAGE } from "../../common/constants/contract.js";
5
6
  import { getEvmSignerAccount } from "../../common/utils/chain.js";
6
7
  import { buildMessageParams, buildSendTokenExtraArgsWhenRemoving } from "../../common/utils/message.js";
7
8
  import { getBridgeRouterHubContract } from "../utils/contract.js";
@@ -38,7 +39,7 @@ export const prepare = {
38
39
  });
39
40
 
40
41
  return {
41
- gasLimit: gasLimit + GAS_LIMIT_ESTIMATE_INCREASE,
42
+ gasLimit: increaseByPercent(gasLimit, RETRY_REVERSE_GAS_LIMIT_SLIPPAGE),
42
43
  msgValue: value,
43
44
  isHub: true,
44
45
  message,
@@ -68,7 +69,7 @@ export const prepare = {
68
69
  });
69
70
 
70
71
  return {
71
- gasLimit: gasLimit + GAS_LIMIT_ESTIMATE_INCREASE,
72
+ gasLimit: increaseByPercent(gasLimit, RETRY_REVERSE_GAS_LIMIT_SLIPPAGE),
72
73
  msgValue: value,
73
74
  isHub: true,
74
75
  message,
@@ -1,6 +1,11 @@
1
1
  import { multicall } from "viem/actions";
2
2
 
3
- import { calcBorrowInterestIndex, calcDepositInterestIndex } from "../../../../common/utils/formulae.js";
3
+ import {
4
+ calcBorrowInterestIndex,
5
+ calcDepositInterestIndex,
6
+ calcOverallBorrowInterestRate,
7
+ calcRetention,
8
+ } from "../../../../common/utils/formulae.js";
4
9
  import { compoundEveryHour, compoundEverySecond } from "../../../../common/utils/math-lib.js";
5
10
  import { getHubTokenData } from "../utils/chain.js";
6
11
  import { getHubPoolContract } from "../utils/contract.js";
@@ -32,6 +37,7 @@ export async function getPoolInfo(
32
37
  stableBorrowData,
33
38
  capsData,
34
39
  configData,
40
+ fTokenCirculatingSupply,
35
41
  ] = await multicall(provider, {
36
42
  contracts: [
37
43
  {
@@ -74,12 +80,23 @@ export async function getPoolInfo(
74
80
  abi: hubPool.abi,
75
81
  functionName: "getConfigData",
76
82
  },
83
+ {
84
+ address: hubPool.address,
85
+ abi: hubPool.abi,
86
+ functionName: "totalSupply",
87
+ },
77
88
  ],
78
89
  allowFailure: false,
79
90
  });
80
91
 
81
- const { flashLoanFee, retentionRate, fTokenFeeRecipient, tokenFeeClaimer, totalRetainedAmount, tokenFeeRecipient } =
82
- feeData;
92
+ const {
93
+ flashLoanFee,
94
+ retentionRate,
95
+ fTokenFeeRecipient,
96
+ tokenFeeClaimer,
97
+ totalRetainedAmount: actualRetained,
98
+ tokenFeeRecipient,
99
+ } = feeData;
83
100
  const {
84
101
  optimalUtilisationRatio,
85
102
  totalAmount: depositTotalAmount,
@@ -118,7 +135,18 @@ export async function getPoolInfo(
118
135
  feeData: {
119
136
  flashLoanFee: [BigInt(flashLoanFee), 6],
120
137
  retentionRate: [BigInt(retentionRate), 6],
121
- totalRetainedAmount,
138
+ totalRetainedAmount: calcRetention(
139
+ actualRetained,
140
+ variableBorrowTotalAmount + stableBorrowTotalAmount,
141
+ calcOverallBorrowInterestRate(
142
+ variableBorrowTotalAmount,
143
+ stableBorrowTotalAmount,
144
+ [variableBorrowInterestRate, 18],
145
+ [stableBorrowAverageInterestRate, 18],
146
+ ),
147
+ [BigInt(retentionRate), 6],
148
+ lastUpdateTimestamp,
149
+ ),
122
150
  fTokenFeeRecipient: fTokenFeeRecipient as EvmAddress,
123
151
  tokenFeeClaimer: tokenFeeClaimer as EvmAddress,
124
152
  tokenFeeRecipient: tokenFeeRecipient as GenericAddress,
@@ -173,5 +201,6 @@ export async function getPoolInfo(
173
201
  canMintFToken,
174
202
  flashLoanSupported,
175
203
  },
204
+ fTokenCirculatingSupply,
176
205
  };
177
206
  }
@@ -68,4 +68,5 @@ export type PoolInfo = {
68
68
  stableBorrowData: StableBorrowData;
69
69
  capsData: CapsData;
70
70
  configData: ConfigData;
71
+ fTokenCirculatingSupply: bigint;
71
72
  };
@@ -12,6 +12,25 @@ export function calcNextPeriodReset(periodNumber: bigint, offset: bigint, length
12
12
  return (periodNumber + BigInt(1)) * length - offset;
13
13
  }
14
14
 
15
+ export function calcOverallBorrowInterestRate(
16
+ totalVarDebt: bigint,
17
+ totalStableDebt: bigint,
18
+ variableBorInterestRate: Dnum,
19
+ avgStableBorInterestRate: Dnum,
20
+ ): Dnum {
21
+ const totalDebt = totalVarDebt + totalStableDebt;
22
+ if (totalDebt === 0n) return dn.from(0, 18);
23
+
24
+ return dn.div(
25
+ dn.add(
26
+ dn.mul(totalVarDebt, variableBorInterestRate, { rounding: "ROUND_DOWN", decimals: 0 }),
27
+ dn.mul(totalStableDebt, avgStableBorInterestRate, { rounding: "ROUND_DOWN", decimals: 0 }),
28
+ ),
29
+ totalDebt,
30
+ { rounding: "ROUND_DOWN", decimals: 18 },
31
+ );
32
+ }
33
+
15
34
  export function calcDepositInterestIndex(dirt1: Dnum, diit1: Dnum, latestUpdate: bigint): Dnum {
16
35
  const dt = BigInt(unixTime()) - latestUpdate;
17
36
  return dn.mul(
@@ -35,6 +54,32 @@ export function calcBorrowInterestIndex(birt1: Dnum, biit1: Dnum, latestUpdate:
35
54
  );
36
55
  }
37
56
 
57
+ export function calcRetention(
58
+ actualRetained: bigint,
59
+ totalDebt: bigint,
60
+ overallBorrowInterestRate: Dnum,
61
+ retentionRate: Dnum,
62
+ latestUpdate: bigint,
63
+ ): bigint {
64
+ const dt = BigInt(unixTime()) - latestUpdate;
65
+
66
+ const [retainedDelta] = dn.div(
67
+ dn.mul(
68
+ dn.mul(dn.mul(totalDebt, overallBorrowInterestRate, { rounding: "ROUND_DOWN", decimals: 0 }), retentionRate, {
69
+ rounding: "ROUND_DOWN",
70
+ decimals: 0,
71
+ }),
72
+ dt,
73
+ { rounding: "ROUND_DOWN" },
74
+ ),
75
+ SECONDS_IN_YEAR,
76
+ {
77
+ rounding: "ROUND_DOWN",
78
+ },
79
+ );
80
+ return actualRetained + retainedDelta;
81
+ }
82
+
38
83
  export function calcRewardIndex(used: bigint, ma: bigint, rit1: Dnum, rs: Dnum, latestUpdate: bigint): Dnum {
39
84
  if (used <= ma) return rit1;
40
85
  const dt = BigInt(unixTime()) - latestUpdate;