@townsq/mm-sdk 1.0.1

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.
Files changed (390) hide show
  1. package/README.md +95 -0
  2. package/dist/chains/evm/common/constant/abi/arbitrum-node-interface-abi.d.ts +25 -0
  3. package/dist/chains/evm/common/constant/abi/arbitrum-node-interface-abi.js +18 -0
  4. package/dist/chains/evm/common/constant/abi/arbitrum-node-interface-abi.js.map +1 -0
  5. package/dist/chains/evm/common/constant/abi/bridge-router-abi.d.ts +1030 -0
  6. package/dist/chains/evm/common/constant/abi/bridge-router-abi.js +794 -0
  7. package/dist/chains/evm/common/constant/abi/bridge-router-abi.js.map +1 -0
  8. package/dist/chains/evm/common/constant/abi/ccip-data-adapter-abi.d.ts +796 -0
  9. package/dist/chains/evm/common/constant/abi/ccip-data-adapter-abi.js +622 -0
  10. package/dist/chains/evm/common/constant/abi/ccip-data-adapter-abi.js.map +1 -0
  11. package/dist/chains/evm/common/constant/abi/erc-20-abi.d.ts +235 -0
  12. package/dist/chains/evm/common/constant/abi/erc-20-abi.js +157 -0
  13. package/dist/chains/evm/common/constant/abi/erc-20-abi.js.map +1 -0
  14. package/dist/chains/evm/common/constant/abi/wormhole-data-adapter-abi.d.ts +821 -0
  15. package/dist/chains/evm/common/constant/abi/wormhole-data-adapter-abi.js +645 -0
  16. package/dist/chains/evm/common/constant/abi/wormhole-data-adapter-abi.js.map +1 -0
  17. package/dist/chains/evm/common/constant/abi/wormhole-relayer-abi.d.ts +783 -0
  18. package/dist/chains/evm/common/constant/abi/wormhole-relayer-abi.js +501 -0
  19. package/dist/chains/evm/common/constant/abi/wormhole-relayer-abi.js.map +1 -0
  20. package/dist/chains/evm/common/constant/chain.d.ts +128 -0
  21. package/dist/chains/evm/common/constant/chain.js +62 -0
  22. package/dist/chains/evm/common/constant/chain.js.map +1 -0
  23. package/dist/chains/evm/common/constant/contract.d.ts +9 -0
  24. package/dist/chains/evm/common/constant/contract.js +13 -0
  25. package/dist/chains/evm/common/constant/contract.js.map +1 -0
  26. package/dist/chains/evm/common/constant/tokens.d.ts +6 -0
  27. package/dist/chains/evm/common/constant/tokens.js +21 -0
  28. package/dist/chains/evm/common/constant/tokens.js.map +1 -0
  29. package/dist/chains/evm/common/types/chain.d.ts +9 -0
  30. package/dist/chains/evm/common/types/chain.js +2 -0
  31. package/dist/chains/evm/common/types/chain.js.map +1 -0
  32. package/dist/chains/evm/common/types/contract.d.ts +8 -0
  33. package/dist/chains/evm/common/types/contract.js +2 -0
  34. package/dist/chains/evm/common/types/contract.js.map +1 -0
  35. package/dist/chains/evm/common/types/gmp.d.ts +37 -0
  36. package/dist/chains/evm/common/types/gmp.js +2 -0
  37. package/dist/chains/evm/common/types/gmp.js.map +1 -0
  38. package/dist/chains/evm/common/types/module.d.ts +90 -0
  39. package/dist/chains/evm/common/types/module.js +2 -0
  40. package/dist/chains/evm/common/types/module.js.map +1 -0
  41. package/dist/chains/evm/common/types/token.d.ts +28 -0
  42. package/dist/chains/evm/common/types/token.js +2 -0
  43. package/dist/chains/evm/common/types/token.js.map +1 -0
  44. package/dist/chains/evm/common/utils/chain.d.ts +7 -0
  45. package/dist/chains/evm/common/utils/chain.js +24 -0
  46. package/dist/chains/evm/common/utils/chain.js.map +1 -0
  47. package/dist/chains/evm/common/utils/contract.d.ts +7387 -0
  48. package/dist/chains/evm/common/utils/contract.js +67 -0
  49. package/dist/chains/evm/common/utils/contract.js.map +1 -0
  50. package/dist/chains/evm/common/utils/gmp.d.ts +7 -0
  51. package/dist/chains/evm/common/utils/gmp.js +32 -0
  52. package/dist/chains/evm/common/utils/gmp.js.map +1 -0
  53. package/dist/chains/evm/common/utils/message.d.ts +21 -0
  54. package/dist/chains/evm/common/utils/message.js +426 -0
  55. package/dist/chains/evm/common/utils/message.js.map +1 -0
  56. package/dist/chains/evm/common/utils/provider.d.ts +5 -0
  57. package/dist/chains/evm/common/utils/provider.js +24 -0
  58. package/dist/chains/evm/common/utils/provider.js.map +1 -0
  59. package/dist/chains/evm/common/utils/tokens.d.ts +11 -0
  60. package/dist/chains/evm/common/utils/tokens.js +58 -0
  61. package/dist/chains/evm/common/utils/tokens.js.map +1 -0
  62. package/dist/chains/evm/hub/constants/abi/account-manager-abi.d.ts +945 -0
  63. package/dist/chains/evm/hub/constants/abi/account-manager-abi.js +709 -0
  64. package/dist/chains/evm/hub/constants/abi/account-manager-abi.js.map +1 -0
  65. package/dist/chains/evm/hub/constants/abi/bridge-router-hub-abi.d.ts +1062 -0
  66. package/dist/chains/evm/hub/constants/abi/bridge-router-hub-abi.js +816 -0
  67. package/dist/chains/evm/hub/constants/abi/bridge-router-hub-abi.js.map +1 -0
  68. package/dist/chains/evm/hub/constants/abi/hub-abi.d.ts +344 -0
  69. package/dist/chains/evm/hub/constants/abi/hub-abi.js +229 -0
  70. package/dist/chains/evm/hub/constants/abi/hub-abi.js.map +1 -0
  71. package/dist/chains/evm/hub/constants/abi/hub-pool-abi.d.ts +1999 -0
  72. package/dist/chains/evm/hub/constants/abi/hub-pool-abi.js +1558 -0
  73. package/dist/chains/evm/hub/constants/abi/hub-pool-abi.js.map +1 -0
  74. package/dist/chains/evm/hub/constants/abi/hub-rewards-v1-abi.d.ts +850 -0
  75. package/dist/chains/evm/hub/constants/abi/hub-rewards-v1-abi.js +649 -0
  76. package/dist/chains/evm/hub/constants/abi/hub-rewards-v1-abi.js.map +1 -0
  77. package/dist/chains/evm/hub/constants/abi/hub-rewards-v2-abi.d.ts +1213 -0
  78. package/dist/chains/evm/hub/constants/abi/hub-rewards-v2-abi.js +890 -0
  79. package/dist/chains/evm/hub/constants/abi/hub-rewards-v2-abi.js.map +1 -0
  80. package/dist/chains/evm/hub/constants/abi/loan-manager-abi.d.ts +1573 -0
  81. package/dist/chains/evm/hub/constants/abi/loan-manager-abi.js +1055 -0
  82. package/dist/chains/evm/hub/constants/abi/loan-manager-abi.js.map +1 -0
  83. package/dist/chains/evm/hub/constants/abi/node-manager-abi.d.ts +269 -0
  84. package/dist/chains/evm/hub/constants/abi/node-manager-abi.js +228 -0
  85. package/dist/chains/evm/hub/constants/abi/node-manager-abi.js.map +1 -0
  86. package/dist/chains/evm/hub/constants/abi/oracle-manager-abi.d.ts +495 -0
  87. package/dist/chains/evm/hub/constants/abi/oracle-manager-abi.js +391 -0
  88. package/dist/chains/evm/hub/constants/abi/oracle-manager-abi.js.map +1 -0
  89. package/dist/chains/evm/hub/constants/chain.d.ts +3 -0
  90. package/dist/chains/evm/hub/constants/chain.js +242 -0
  91. package/dist/chains/evm/hub/constants/chain.js.map +1 -0
  92. package/dist/chains/evm/hub/modules/index.d.ts +5 -0
  93. package/dist/chains/evm/hub/modules/index.js +6 -0
  94. package/dist/chains/evm/hub/modules/index.js.map +1 -0
  95. package/dist/chains/evm/hub/modules/ts-hub-account.d.ts +8 -0
  96. package/dist/chains/evm/hub/modules/ts-hub-account.js +75 -0
  97. package/dist/chains/evm/hub/modules/ts-hub-account.js.map +1 -0
  98. package/dist/chains/evm/hub/modules/ts-hub-gmp.d.ts +18 -0
  99. package/dist/chains/evm/hub/modules/ts-hub-gmp.js +98 -0
  100. package/dist/chains/evm/hub/modules/ts-hub-gmp.js.map +1 -0
  101. package/dist/chains/evm/hub/modules/ts-hub-loan.d.ts +27 -0
  102. package/dist/chains/evm/hub/modules/ts-hub-loan.js +484 -0
  103. package/dist/chains/evm/hub/modules/ts-hub-loan.js.map +1 -0
  104. package/dist/chains/evm/hub/modules/ts-hub-oracle.d.ts +8 -0
  105. package/dist/chains/evm/hub/modules/ts-hub-oracle.js +58 -0
  106. package/dist/chains/evm/hub/modules/ts-hub-oracle.js.map +1 -0
  107. package/dist/chains/evm/hub/modules/ts-hub-pool.d.ts +5 -0
  108. package/dist/chains/evm/hub/modules/ts-hub-pool.js +138 -0
  109. package/dist/chains/evm/hub/modules/ts-hub-pool.js.map +1 -0
  110. package/dist/chains/evm/hub/types/account.d.ts +23 -0
  111. package/dist/chains/evm/hub/types/account.js +2 -0
  112. package/dist/chains/evm/hub/types/account.js.map +1 -0
  113. package/dist/chains/evm/hub/types/chain.d.ts +20 -0
  114. package/dist/chains/evm/hub/types/chain.js +2 -0
  115. package/dist/chains/evm/hub/types/chain.js.map +1 -0
  116. package/dist/chains/evm/hub/types/loan.d.ts +148 -0
  117. package/dist/chains/evm/hub/types/loan.js +9 -0
  118. package/dist/chains/evm/hub/types/loan.js.map +1 -0
  119. package/dist/chains/evm/hub/types/oracle.d.ts +19 -0
  120. package/dist/chains/evm/hub/types/oracle.js +2 -0
  121. package/dist/chains/evm/hub/types/oracle.js.map +1 -0
  122. package/dist/chains/evm/hub/types/pool.d.ts +66 -0
  123. package/dist/chains/evm/hub/types/pool.js +2 -0
  124. package/dist/chains/evm/hub/types/pool.js.map +1 -0
  125. package/dist/chains/evm/hub/types/token.d.ts +9 -0
  126. package/dist/chains/evm/hub/types/token.js +2 -0
  127. package/dist/chains/evm/hub/types/token.js.map +1 -0
  128. package/dist/chains/evm/hub/utils/chain.d.ts +15 -0
  129. package/dist/chains/evm/hub/utils/chain.js +37 -0
  130. package/dist/chains/evm/hub/utils/chain.js.map +1 -0
  131. package/dist/chains/evm/hub/utils/contract.d.ts +26 -0
  132. package/dist/chains/evm/hub/utils/contract.js +76 -0
  133. package/dist/chains/evm/hub/utils/contract.js.map +1 -0
  134. package/dist/chains/evm/hub/utils/events.d.ts +23 -0
  135. package/dist/chains/evm/hub/utils/events.js +100 -0
  136. package/dist/chains/evm/hub/utils/events.js.map +1 -0
  137. package/dist/chains/evm/hub/utils/loan.d.ts +4 -0
  138. package/dist/chains/evm/hub/utils/loan.js +37 -0
  139. package/dist/chains/evm/hub/utils/loan.js.map +1 -0
  140. package/dist/chains/evm/spoke/constants/abi/bridge-router-spoke-abi.d.ts +1044 -0
  141. package/dist/chains/evm/spoke/constants/abi/bridge-router-spoke-abi.js +806 -0
  142. package/dist/chains/evm/spoke/constants/abi/bridge-router-spoke-abi.js.map +1 -0
  143. package/dist/chains/evm/spoke/constants/abi/spoke-common-abi.d.ts +1152 -0
  144. package/dist/chains/evm/spoke/constants/abi/spoke-common-abi.js +735 -0
  145. package/dist/chains/evm/spoke/constants/abi/spoke-common-abi.js.map +1 -0
  146. package/dist/chains/evm/spoke/constants/abi/spoke-rewards-v2-common-abi.d.ts +697 -0
  147. package/dist/chains/evm/spoke/constants/abi/spoke-rewards-v2-common-abi.js +501 -0
  148. package/dist/chains/evm/spoke/constants/abi/spoke-rewards-v2-common-abi.js.map +1 -0
  149. package/dist/chains/evm/spoke/constants/abi/spoke-token-abi.d.ts +986 -0
  150. package/dist/chains/evm/spoke/constants/abi/spoke-token-abi.js +705 -0
  151. package/dist/chains/evm/spoke/constants/abi/spoke-token-abi.js.map +1 -0
  152. package/dist/chains/evm/spoke/modules/index.d.ts +3 -0
  153. package/dist/chains/evm/spoke/modules/index.js +4 -0
  154. package/dist/chains/evm/spoke/modules/index.js.map +1 -0
  155. package/dist/chains/evm/spoke/modules/ts-evm-account.d.ts +18 -0
  156. package/dist/chains/evm/spoke/modules/ts-evm-account.js +141 -0
  157. package/dist/chains/evm/spoke/modules/ts-evm-account.js.map +1 -0
  158. package/dist/chains/evm/spoke/modules/ts-evm-gmp.d.ts +20 -0
  159. package/dist/chains/evm/spoke/modules/ts-evm-gmp.js +163 -0
  160. package/dist/chains/evm/spoke/modules/ts-evm-gmp.js.map +1 -0
  161. package/dist/chains/evm/spoke/modules/ts-evm-loan.d.ts +38 -0
  162. package/dist/chains/evm/spoke/modules/ts-evm-loan.js +461 -0
  163. package/dist/chains/evm/spoke/modules/ts-evm-loan.js.map +1 -0
  164. package/dist/chains/evm/spoke/types/pool.d.ts +7 -0
  165. package/dist/chains/evm/spoke/types/pool.js +2 -0
  166. package/dist/chains/evm/spoke/types/pool.js.map +1 -0
  167. package/dist/chains/evm/spoke/utils/contract.d.ts +18 -0
  168. package/dist/chains/evm/spoke/utils/contract.js +46 -0
  169. package/dist/chains/evm/spoke/utils/contract.js.map +1 -0
  170. package/dist/common/constants/adapter.d.ts +2 -0
  171. package/dist/common/constants/adapter.js +6 -0
  172. package/dist/common/constants/adapter.js.map +1 -0
  173. package/dist/common/constants/byte.d.ts +6 -0
  174. package/dist/common/constants/byte.js +7 -0
  175. package/dist/common/constants/byte.js.map +1 -0
  176. package/dist/common/constants/chain.d.ts +10 -0
  177. package/dist/common/constants/chain.js +224 -0
  178. package/dist/common/constants/chain.js.map +1 -0
  179. package/dist/common/constants/gmp.d.ts +3 -0
  180. package/dist/common/constants/gmp.js +10 -0
  181. package/dist/common/constants/gmp.js.map +1 -0
  182. package/dist/common/constants/lending.d.ts +2 -0
  183. package/dist/common/constants/lending.js +4 -0
  184. package/dist/common/constants/lending.js.map +1 -0
  185. package/dist/common/constants/message.d.ts +9 -0
  186. package/dist/common/constants/message.js +23 -0
  187. package/dist/common/constants/message.js.map +1 -0
  188. package/dist/common/constants/pool.d.ts +14 -0
  189. package/dist/common/constants/pool.js +24 -0
  190. package/dist/common/constants/pool.js.map +1 -0
  191. package/dist/common/types/adapter.d.ts +30 -0
  192. package/dist/common/types/adapter.js +7 -0
  193. package/dist/common/types/adapter.js.map +1 -0
  194. package/dist/common/types/address.d.ts +9 -0
  195. package/dist/common/types/address.js +2 -0
  196. package/dist/common/types/address.js.map +1 -0
  197. package/dist/common/types/brand.d.ts +6 -0
  198. package/dist/common/types/brand.js +2 -0
  199. package/dist/common/types/brand.js.map +1 -0
  200. package/dist/common/types/chain.d.ts +29 -0
  201. package/dist/common/types/chain.js +9 -0
  202. package/dist/common/types/chain.js.map +1 -0
  203. package/dist/common/types/core.d.ts +28 -0
  204. package/dist/common/types/core.js +2 -0
  205. package/dist/common/types/core.js.map +1 -0
  206. package/dist/common/types/gmp.d.ts +15 -0
  207. package/dist/common/types/gmp.js +6 -0
  208. package/dist/common/types/gmp.js.map +1 -0
  209. package/dist/common/types/lending.d.ts +20 -0
  210. package/dist/common/types/lending.js +13 -0
  211. package/dist/common/types/lending.js.map +1 -0
  212. package/dist/common/types/message.d.ts +280 -0
  213. package/dist/common/types/message.js +32 -0
  214. package/dist/common/types/message.js.map +1 -0
  215. package/dist/common/types/module.d.ts +20 -0
  216. package/dist/common/types/module.js +2 -0
  217. package/dist/common/types/module.js.map +1 -0
  218. package/dist/common/types/token.d.ts +49 -0
  219. package/dist/common/types/token.js +24 -0
  220. package/dist/common/types/token.js.map +1 -0
  221. package/dist/common/utils/adapter.d.ts +17 -0
  222. package/dist/common/utils/adapter.js +98 -0
  223. package/dist/common/utils/adapter.js.map +1 -0
  224. package/dist/common/utils/address.d.ts +6 -0
  225. package/dist/common/utils/address.js +32 -0
  226. package/dist/common/utils/address.js.map +1 -0
  227. package/dist/common/utils/bytes.d.ts +6 -0
  228. package/dist/common/utils/bytes.js +25 -0
  229. package/dist/common/utils/bytes.js.map +1 -0
  230. package/dist/common/utils/chain.d.ts +20 -0
  231. package/dist/common/utils/chain.js +79 -0
  232. package/dist/common/utils/chain.js.map +1 -0
  233. package/dist/common/utils/formulae.d.ts +19 -0
  234. package/dist/common/utils/formulae.js +118 -0
  235. package/dist/common/utils/formulae.js.map +1 -0
  236. package/dist/common/utils/gmp.d.ts +3 -0
  237. package/dist/common/utils/gmp.js +5 -0
  238. package/dist/common/utils/gmp.js.map +1 -0
  239. package/dist/common/utils/lending.d.ts +7 -0
  240. package/dist/common/utils/lending.js +16 -0
  241. package/dist/common/utils/lending.js.map +1 -0
  242. package/dist/common/utils/math-lib.d.ts +10 -0
  243. package/dist/common/utils/math-lib.js +41 -0
  244. package/dist/common/utils/math-lib.js.map +1 -0
  245. package/dist/common/utils/messages.d.ts +16 -0
  246. package/dist/common/utils/messages.js +124 -0
  247. package/dist/common/utils/messages.js.map +1 -0
  248. package/dist/common/utils/token.d.ts +3 -0
  249. package/dist/common/utils/token.js +8 -0
  250. package/dist/common/utils/token.js.map +1 -0
  251. package/dist/common/utils/transaction.d.ts +4 -0
  252. package/dist/common/utils/transaction.js +18 -0
  253. package/dist/common/utils/transaction.js.map +1 -0
  254. package/dist/index.d.ts +38 -0
  255. package/dist/index.js +50 -0
  256. package/dist/index.js.map +1 -0
  257. package/dist/lifeline/core/ts-core.d.ts +24 -0
  258. package/dist/lifeline/core/ts-core.js +101 -0
  259. package/dist/lifeline/core/ts-core.js.map +1 -0
  260. package/dist/lifeline/modules/index.d.ts +5 -0
  261. package/dist/lifeline/modules/index.js +6 -0
  262. package/dist/lifeline/modules/index.js.map +1 -0
  263. package/dist/lifeline/modules/ts-account.d.ts +23 -0
  264. package/dist/lifeline/modules/ts-account.js +205 -0
  265. package/dist/lifeline/modules/ts-account.js.map +1 -0
  266. package/dist/lifeline/modules/ts-gmp.d.ts +3 -0
  267. package/dist/lifeline/modules/ts-gmp.js +4 -0
  268. package/dist/lifeline/modules/ts-gmp.js.map +1 -0
  269. package/dist/lifeline/modules/ts-loan.d.ts +48 -0
  270. package/dist/lifeline/modules/ts-loan.js +580 -0
  271. package/dist/lifeline/modules/ts-loan.js.map +1 -0
  272. package/dist/lifeline/modules/ts-oracle.d.ts +8 -0
  273. package/dist/lifeline/modules/ts-oracle.js +27 -0
  274. package/dist/lifeline/modules/ts-oracle.js.map +1 -0
  275. package/dist/lifeline/modules/ts-pool.d.ts +5 -0
  276. package/dist/lifeline/modules/ts-pool.js +8 -0
  277. package/dist/lifeline/modules/ts-pool.js.map +1 -0
  278. package/dist/types/generics.d.ts +1 -0
  279. package/dist/types/generics.js +2 -0
  280. package/dist/types/generics.js.map +1 -0
  281. package/dist/utils/address.d.ts +1 -0
  282. package/dist/utils/address.js +2 -0
  283. package/dist/utils/address.js.map +1 -0
  284. package/dist/utils/array.d.ts +3 -0
  285. package/dist/utils/array.js +7 -0
  286. package/dist/utils/array.js.map +1 -0
  287. package/dist/utils/exhaustive-check.d.ts +1 -0
  288. package/dist/utils/exhaustive-check.js +4 -0
  289. package/dist/utils/exhaustive-check.js.map +1 -0
  290. package/dist/utils/random.d.ts +1 -0
  291. package/dist/utils/random.js +4 -0
  292. package/dist/utils/random.js.map +1 -0
  293. package/package.json +56 -0
  294. package/src/chains/evm/common/constant/abi/arbitrum-node-interface-abi.ts +17 -0
  295. package/src/chains/evm/common/constant/abi/bridge-router-abi.ts +793 -0
  296. package/src/chains/evm/common/constant/abi/ccip-data-adapter-abi.ts +621 -0
  297. package/src/chains/evm/common/constant/abi/erc-20-abi.ts +156 -0
  298. package/src/chains/evm/common/constant/abi/wormhole-data-adapter-abi.ts +644 -0
  299. package/src/chains/evm/common/constant/abi/wormhole-relayer-abi.ts +500 -0
  300. package/src/chains/evm/common/constant/chain.ts +88 -0
  301. package/src/chains/evm/common/constant/contract.ts +15 -0
  302. package/src/chains/evm/common/constant/tokens.ts +33 -0
  303. package/src/chains/evm/common/types/chain.ts +26 -0
  304. package/src/chains/evm/common/types/contract.ts +17 -0
  305. package/src/chains/evm/common/types/gmp.ts +43 -0
  306. package/src/chains/evm/common/types/module.ts +115 -0
  307. package/src/chains/evm/common/types/token.ts +35 -0
  308. package/src/chains/evm/common/utils/chain.ts +33 -0
  309. package/src/chains/evm/common/utils/contract.ts +120 -0
  310. package/src/chains/evm/common/utils/gmp.ts +54 -0
  311. package/src/chains/evm/common/utils/message.ts +648 -0
  312. package/src/chains/evm/common/utils/provider.ts +38 -0
  313. package/src/chains/evm/common/utils/tokens.ts +102 -0
  314. package/src/chains/evm/hub/constants/abi/account-manager-abi.ts +708 -0
  315. package/src/chains/evm/hub/constants/abi/bridge-router-hub-abi.ts +815 -0
  316. package/src/chains/evm/hub/constants/abi/hub-abi.ts +228 -0
  317. package/src/chains/evm/hub/constants/abi/hub-pool-abi.ts +1557 -0
  318. package/src/chains/evm/hub/constants/abi/hub-rewards-v1-abi.ts +648 -0
  319. package/src/chains/evm/hub/constants/abi/hub-rewards-v2-abi.ts +889 -0
  320. package/src/chains/evm/hub/constants/abi/loan-manager-abi.ts +1054 -0
  321. package/src/chains/evm/hub/constants/abi/node-manager-abi.ts +227 -0
  322. package/src/chains/evm/hub/constants/abi/oracle-manager-abi.ts +390 -0
  323. package/src/chains/evm/hub/constants/chain.ts +305 -0
  324. package/src/chains/evm/hub/modules/index.ts +5 -0
  325. package/src/chains/evm/hub/modules/ts-hub-account.ts +117 -0
  326. package/src/chains/evm/hub/modules/ts-hub-gmp.ts +231 -0
  327. package/src/chains/evm/hub/modules/ts-hub-loan.ts +915 -0
  328. package/src/chains/evm/hub/modules/ts-hub-oracle.ts +131 -0
  329. package/src/chains/evm/hub/modules/ts-hub-pool.ts +241 -0
  330. package/src/chains/evm/hub/types/account.ts +30 -0
  331. package/src/chains/evm/hub/types/chain.ts +22 -0
  332. package/src/chains/evm/hub/types/loan.ts +188 -0
  333. package/src/chains/evm/hub/types/oracle.ts +25 -0
  334. package/src/chains/evm/hub/types/pool.ts +75 -0
  335. package/src/chains/evm/hub/types/token.ts +10 -0
  336. package/src/chains/evm/hub/utils/chain.ts +78 -0
  337. package/src/chains/evm/hub/utils/contract.ts +178 -0
  338. package/src/chains/evm/hub/utils/events.ts +160 -0
  339. package/src/chains/evm/hub/utils/loan.ts +72 -0
  340. package/src/chains/evm/spoke/constants/abi/bridge-router-spoke-abi.ts +805 -0
  341. package/src/chains/evm/spoke/constants/abi/spoke-common-abi.ts +734 -0
  342. package/src/chains/evm/spoke/constants/abi/spoke-rewards-v2-common-abi.ts +500 -0
  343. package/src/chains/evm/spoke/constants/abi/spoke-token-abi.ts +704 -0
  344. package/src/chains/evm/spoke/modules/index.ts +3 -0
  345. package/src/chains/evm/spoke/modules/ts-evm-account.ts +341 -0
  346. package/src/chains/evm/spoke/modules/ts-evm-gmp.ts +353 -0
  347. package/src/chains/evm/spoke/modules/ts-evm-loan.ts +1032 -0
  348. package/src/chains/evm/spoke/types/pool.ts +7 -0
  349. package/src/chains/evm/spoke/utils/contract.ts +123 -0
  350. package/src/common/constants/adapter.ts +6 -0
  351. package/src/common/constants/byte.ts +7 -0
  352. package/src/common/constants/chain.ts +319 -0
  353. package/src/common/constants/gmp.ts +19 -0
  354. package/src/common/constants/lending.ts +9 -0
  355. package/src/common/constants/message.ts +25 -0
  356. package/src/common/constants/pool.ts +30 -0
  357. package/src/common/types/adapter.ts +44 -0
  358. package/src/common/types/address.ts +11 -0
  359. package/src/common/types/brand.ts +3 -0
  360. package/src/common/types/chain.ts +42 -0
  361. package/src/common/types/core.ts +31 -0
  362. package/src/common/types/gmp.ts +19 -0
  363. package/src/common/types/lending.ts +26 -0
  364. package/src/common/types/message.ts +401 -0
  365. package/src/common/types/module.ts +46 -0
  366. package/src/common/types/token.ts +72 -0
  367. package/src/common/utils/adapter.ts +197 -0
  368. package/src/common/utils/address.ts +50 -0
  369. package/src/common/utils/bytes.ts +36 -0
  370. package/src/common/utils/chain.ts +163 -0
  371. package/src/common/utils/formulae.ts +270 -0
  372. package/src/common/utils/gmp.ts +8 -0
  373. package/src/common/utils/lending.ts +31 -0
  374. package/src/common/utils/math-lib.ts +50 -0
  375. package/src/common/utils/messages.ts +283 -0
  376. package/src/common/utils/token.ts +13 -0
  377. package/src/common/utils/transaction.ts +27 -0
  378. package/src/index.ts +73 -0
  379. package/src/lifeline/core/ts-core.ts +136 -0
  380. package/src/lifeline/modules/index.ts +5 -0
  381. package/src/lifeline/modules/ts-account.ts +420 -0
  382. package/src/lifeline/modules/ts-gmp.ts +5 -0
  383. package/src/lifeline/modules/ts-loan.ts +1268 -0
  384. package/src/lifeline/modules/ts-oracle.ts +68 -0
  385. package/src/lifeline/modules/ts-pool.ts +19 -0
  386. package/src/types/generics.ts +1 -0
  387. package/src/utils/address.ts +0 -0
  388. package/src/utils/array.ts +11 -0
  389. package/src/utils/exhaustive-check.ts +3 -0
  390. package/src/utils/random.ts +3 -0
@@ -0,0 +1,10 @@
1
+ import type { GenericAddress } from "../../../../common/types/address.js";
2
+ import type { LoanTypeId } from "../../../../common/types/lending.js";
3
+ import type { TsHubTokenType, ITokenData } from "../../../../common/types/token.js";
4
+
5
+ export type HubTokenData = {
6
+ poolId: number;
7
+ poolAddress: GenericAddress;
8
+ token: TsHubTokenType;
9
+ supportedLoanTypes: Set<LoanTypeId>;
10
+ } & ITokenData;
@@ -0,0 +1,78 @@
1
+ import { HUB_CHAIN } from '../constants/chain.js';
2
+
3
+ import type { GenericAddress } from '../../../../common/types/address.js';
4
+ import type { TSChainId, NetworkType } from '../../../../common/types/chain.js';
5
+ import type { LoanTypeId } from '../../../../common/types/lending.js';
6
+ import type { AdapterType } from '../../../../common/types/message.js';
7
+
8
+ import type { TSTokenId } from '../../../../common/types/token.js';
9
+ import type { HubChain } from '../types/chain.js';
10
+ import type { HubTokenData } from '../types/token.js';
11
+
12
+ export function isHubChain(
13
+ tsChainId: TSChainId,
14
+ network: NetworkType
15
+ ): boolean {
16
+ return HUB_CHAIN[network].tsChainId === tsChainId;
17
+ }
18
+
19
+ export function getHubChain(network: NetworkType): HubChain {
20
+ return HUB_CHAIN[network];
21
+ }
22
+
23
+ export function getHubTokensData(
24
+ network: NetworkType
25
+ ): Partial<Record<TSTokenId, HubTokenData>> {
26
+ return HUB_CHAIN[network].tokens;
27
+ }
28
+
29
+ export function getHubTokenData(
30
+ tsTokenId: TSTokenId,
31
+ network: NetworkType
32
+ ): HubTokenData {
33
+ const token = HUB_CHAIN[network].tokens[tsTokenId];
34
+ if (!token)
35
+ throw new Error(`Hub token not found for tsTokenId: ${tsTokenId}`);
36
+ return token;
37
+ }
38
+
39
+ export function isLoanTypeSupported(
40
+ loanType: LoanTypeId,
41
+ tsTokenId: TSTokenId,
42
+ network: NetworkType
43
+ ): boolean {
44
+ const token = getHubTokenData(tsTokenId, network);
45
+ return token.supportedLoanTypes.has(loanType);
46
+ }
47
+
48
+ export function assertLoanTypeSupported(
49
+ loanType: LoanTypeId,
50
+ tsTokenId: TSTokenId,
51
+ network: NetworkType
52
+ ): void {
53
+ if (!isLoanTypeSupported(loanType, tsTokenId, network))
54
+ throw new Error(
55
+ `Loan type ${loanType} is not supported for tsTokenId: ${tsTokenId}`
56
+ );
57
+ }
58
+
59
+ export function getHubChainAdapterAddress(
60
+ network: NetworkType,
61
+ adapterType: AdapterType
62
+ ) {
63
+ const hubChain = getHubChain(network);
64
+ const { adapters } = hubChain;
65
+ const adapterAddress = adapters[adapterType];
66
+ if (adapterAddress) return adapterAddress;
67
+ throw new Error(
68
+ `Adapter ${adapterType} not found for hub chain ${hubChain.tsChainId}`
69
+ );
70
+ }
71
+
72
+ export function getHubChainBridgeRouterAddress(
73
+ hubChain: HubChain,
74
+ isRewards = false
75
+ ) {
76
+ const { hubMessageDispatcher } = hubChain;
77
+ return hubMessageDispatcher;
78
+ }
@@ -0,0 +1,178 @@
1
+ import { getContract } from 'viem';
2
+
3
+ import { ChainType } from '../../../../common/types/chain.js';
4
+ import { convertFromGenericAddress } from '../../../../common/utils/address.js';
5
+ import { AccountControllerAbi } from '../constants/abi/account-manager-abi.js';
6
+ import { BridgeRouterHubAbi } from '../constants/abi/bridge-router-hub-abi.js';
7
+ import { HubAbi } from '../constants/abi/hub-abi.js';
8
+ import { HubPoolAbi } from '../constants/abi/hub-pool-abi.js';
9
+ import { HubRewardsV1Abi } from '../constants/abi/hub-rewards-v1-abi.js';
10
+ import { HubRewardsV2Abi } from '../constants/abi/hub-rewards-v2-abi.js';
11
+ import { LoanControllerAbi } from '../constants/abi/loan-manager-abi.js';
12
+ import { NodeManagerAbi } from '../constants/abi/node-manager-abi.js';
13
+ import { PriceFeedControllerAbi } from '../constants/abi/oracle-manager-abi.js';
14
+
15
+ import type { GenericAddress } from '../../../../common/types/address.js';
16
+ import type { GetReadContractReturnType } from '../../common/types/contract.js';
17
+ import type { Client, GetContractReturnType, WalletClient } from 'viem';
18
+
19
+ export function getAccountControllerContract(
20
+ provider: Client,
21
+ address: GenericAddress,
22
+ signer?: WalletClient
23
+ ): GetReadContractReturnType<typeof AccountControllerAbi> {
24
+ return getContract({
25
+ abi: AccountControllerAbi,
26
+ address: convertFromGenericAddress<ChainType.EVM>(address, ChainType.EVM),
27
+ client: { wallet: signer, public: provider },
28
+ });
29
+ }
30
+
31
+ export function getBridgeRouterHubContract(
32
+ provider: Client,
33
+ address: GenericAddress
34
+ ): GetReadContractReturnType<typeof BridgeRouterHubAbi>;
35
+ export function getBridgeRouterHubContract(
36
+ provider: Client,
37
+ address: GenericAddress,
38
+ signer: WalletClient
39
+ ): GetContractReturnType<typeof BridgeRouterHubAbi, Client>;
40
+ export function getBridgeRouterHubContract(
41
+ provider: Client,
42
+ address: GenericAddress,
43
+ signer?: WalletClient
44
+ ):
45
+ | GetReadContractReturnType<typeof BridgeRouterHubAbi>
46
+ | GetContractReturnType<typeof BridgeRouterHubAbi, Client> {
47
+ return getContract({
48
+ abi: BridgeRouterHubAbi,
49
+ address: convertFromGenericAddress<ChainType.EVM>(address, ChainType.EVM),
50
+ client: { wallet: signer, public: provider },
51
+ });
52
+ }
53
+
54
+ export function getHubPoolContract(
55
+ provider: Client,
56
+ address: GenericAddress
57
+ ): GetReadContractReturnType<typeof HubPoolAbi> {
58
+ return getContract({
59
+ abi: HubPoolAbi,
60
+ address: convertFromGenericAddress<ChainType.EVM>(address, ChainType.EVM),
61
+ client: { public: provider },
62
+ });
63
+ }
64
+
65
+ export function getLoanControllerContract(
66
+ provider: Client,
67
+ address: GenericAddress
68
+ ): GetReadContractReturnType<typeof LoanControllerAbi>;
69
+
70
+ export function getLoanControllerContract(
71
+ provider: Client,
72
+ address: GenericAddress,
73
+ signer: WalletClient
74
+ ): GetContractReturnType<typeof LoanControllerAbi, Client>;
75
+ export function getLoanControllerContract(
76
+ provider: Client,
77
+ address: GenericAddress,
78
+ signer?: WalletClient
79
+ ):
80
+ | GetReadContractReturnType<typeof LoanControllerAbi>
81
+ | GetContractReturnType<typeof LoanControllerAbi, Client> {
82
+ return getContract({
83
+ abi: LoanControllerAbi,
84
+ address: convertFromGenericAddress<ChainType.EVM>(address, ChainType.EVM),
85
+ client: { wallet: signer, public: provider },
86
+ });
87
+ }
88
+
89
+ export function getPriceFeedControllerContract(
90
+ provider: Client,
91
+ address: GenericAddress
92
+ ): GetReadContractReturnType<typeof PriceFeedControllerAbi> {
93
+ return getContract({
94
+ abi: PriceFeedControllerAbi,
95
+ address: convertFromGenericAddress<ChainType.EVM>(address, ChainType.EVM),
96
+ client: { public: provider },
97
+ });
98
+ }
99
+
100
+ export function getNodeManagerContract(
101
+ provider: Client,
102
+ address: GenericAddress
103
+ ): GetReadContractReturnType<typeof NodeManagerAbi> {
104
+ return getContract({
105
+ abi: NodeManagerAbi,
106
+ address: convertFromGenericAddress<ChainType.EVM>(address, ChainType.EVM),
107
+ client: { public: provider },
108
+ });
109
+ }
110
+
111
+ export function getHubRewardsV1Contract(
112
+ provider: Client,
113
+ address: GenericAddress
114
+ ): GetReadContractReturnType<typeof HubRewardsV1Abi>;
115
+ export function getHubRewardsV1Contract(
116
+ provider: Client,
117
+ address: GenericAddress,
118
+ signer: WalletClient
119
+ ): GetContractReturnType<typeof HubRewardsV1Abi, Client>;
120
+ export function getHubRewardsV1Contract(
121
+ provider: Client,
122
+ address: GenericAddress,
123
+ signer?: WalletClient
124
+ ):
125
+ | GetReadContractReturnType<typeof HubRewardsV1Abi>
126
+ | GetContractReturnType<typeof HubRewardsV1Abi, Client> {
127
+ return getContract({
128
+ abi: HubRewardsV1Abi,
129
+ address: convertFromGenericAddress<ChainType.EVM>(address, ChainType.EVM),
130
+ client: { wallet: signer, public: provider },
131
+ });
132
+ }
133
+
134
+ export function getHubRewardsV2Contract(
135
+ provider: Client,
136
+ address: GenericAddress
137
+ ): GetReadContractReturnType<typeof HubRewardsV2Abi>;
138
+ export function getHubRewardsV2Contract(
139
+ provider: Client,
140
+ address: GenericAddress,
141
+ signer: WalletClient
142
+ ): GetContractReturnType<typeof HubRewardsV2Abi, Client>;
143
+ export function getHubRewardsV2Contract(
144
+ provider: Client,
145
+ address: GenericAddress,
146
+ signer?: WalletClient
147
+ ):
148
+ | GetReadContractReturnType<typeof HubRewardsV2Abi>
149
+ | GetContractReturnType<typeof HubRewardsV2Abi, Client> {
150
+ return getContract({
151
+ abi: HubRewardsV2Abi,
152
+ address: convertFromGenericAddress<ChainType.EVM>(address, ChainType.EVM),
153
+ client: { wallet: signer, public: provider },
154
+ });
155
+ }
156
+
157
+ export function getHubContract(
158
+ provider: Client,
159
+ address: GenericAddress
160
+ ): GetReadContractReturnType<typeof HubAbi>;
161
+ export function getHubContract(
162
+ provider: Client,
163
+ address: GenericAddress,
164
+ signer: WalletClient
165
+ ): GetContractReturnType<typeof HubAbi, Client>;
166
+ export function getHubContract(
167
+ provider: Client,
168
+ address: GenericAddress,
169
+ signer?: WalletClient
170
+ ):
171
+ | GetReadContractReturnType<typeof HubAbi>
172
+ | GetContractReturnType<typeof HubAbi, Client> {
173
+ return getContract({
174
+ abi: HubAbi,
175
+ address: convertFromGenericAddress<ChainType.EVM>(address, ChainType.EVM),
176
+ client: { wallet: signer, public: provider },
177
+ });
178
+ }
@@ -0,0 +1,160 @@
1
+ import type { TSChainId } from '../../../../common/types/chain.js';
2
+ import type {
3
+ AccountId,
4
+ LoanId,
5
+ LoanTypeId,
6
+ } from '../../../../common/types/lending.js';
7
+ import type {
8
+ AcceptInviteAddressEventParams,
9
+ InviteAddressEventParams,
10
+ } from '../types/account.js';
11
+ import type {
12
+ CreateUserLoanEventParams,
13
+ DeleteUserLoanEventParams,
14
+ } from '../types/loan.js';
15
+
16
+ export async function fetchCreateUserLoanEvents(
17
+ params: CreateUserLoanEventParams
18
+ ) {
19
+ const { loanController, accountId, loanTypeIds, eventParams } = params;
20
+ const logs = await loanController.getEvents.InitiateLoanAccount(
21
+ { accountId },
22
+ eventParams
23
+ );
24
+
25
+ return logs
26
+ .filter(
27
+ (log) =>
28
+ loanTypeIds === undefined ||
29
+ (log.args.loanTypeId &&
30
+ loanTypeIds.includes(log.args.loanTypeId as LoanTypeId))
31
+ )
32
+ .map((log) => ({
33
+ blockNumber: log.blockNumber,
34
+ loanId: log.args.loanId as LoanId,
35
+ accountId,
36
+ loanTypeId: log.args.loanTypeId as LoanTypeId,
37
+ }));
38
+ }
39
+
40
+ export async function fetchDeleteUserLoanEvents(
41
+ params: DeleteUserLoanEventParams
42
+ ) {
43
+ const { loanController, accountId, eventParams } = params;
44
+ const logs = await loanController.getEvents.DeleteUserLoanAccount(
45
+ { accountId },
46
+ eventParams
47
+ );
48
+ return logs.map((log) => ({
49
+ blockNumber: log.blockNumber,
50
+ loanId: log.args.loanId,
51
+ accountId,
52
+ }));
53
+ }
54
+
55
+ export async function fetchUserLoanIds(
56
+ params: CreateUserLoanEventParams
57
+ ): Promise<Map<LoanTypeId, Array<LoanId>>> {
58
+ const createdUserLoans = await fetchCreateUserLoanEvents(params);
59
+ const deletedUserLoans = await fetchDeleteUserLoanEvents(params);
60
+
61
+ // add created and remove deleted through counting
62
+ const loanIdsMap = new Map<
63
+ LoanId,
64
+ { loanTypeId: LoanTypeId; count: number }
65
+ >();
66
+ for (const userLoan of createdUserLoans) {
67
+ const loanId = userLoan.loanId;
68
+ const loanIdCount = loanIdsMap.get(loanId);
69
+ if (!loanIdCount)
70
+ loanIdsMap.set(loanId, { loanTypeId: userLoan.loanTypeId, count: 1 });
71
+ else loanIdCount.count++;
72
+ }
73
+ for (const userLoan of deletedUserLoans) {
74
+ const loanId = userLoan.loanId as LoanId;
75
+ const loanIdCount = loanIdsMap.get(loanId);
76
+ if (loanIdCount)
77
+ if (loanIdCount.count === 1) loanIdsMap.delete(loanId);
78
+ else loanIdCount.count--;
79
+ }
80
+
81
+ const loanTypeMap = new Map<LoanTypeId, Array<LoanId>>();
82
+
83
+ for (const [loanId, { loanTypeId }] of loanIdsMap.entries()) {
84
+ const loanTypeIds = loanTypeMap.get(loanTypeId);
85
+ if (!loanTypeIds) loanTypeMap.set(loanTypeId, [loanId]);
86
+ else loanTypeIds.push(loanId);
87
+ }
88
+
89
+ return loanTypeMap;
90
+ }
91
+
92
+ async function fetchReceivedInvitationEventByAddress(
93
+ params: InviteAddressEventParams
94
+ ) {
95
+ const { eventParams, accountController, address, tsChainId } = params;
96
+
97
+ const logs = await accountController.getEvents.InviteAddress(
98
+ { inviteeAddr: address, inviteeChainId: tsChainId },
99
+ eventParams
100
+ );
101
+ return logs.map((log) => ({
102
+ blockNumber: log.blockNumber,
103
+ accountId: log.args.accountId,
104
+ tsChainId: log.args.inviteeChainId,
105
+ id: `${log.args.accountId ?? ''}${log.args.inviteeChainId ?? ''}`,
106
+ }));
107
+ }
108
+
109
+ async function fetchAcceptedInvitationEventByAddress(
110
+ params: AcceptInviteAddressEventParams
111
+ ) {
112
+ const { eventParams, accountController, address, tsChainId } = params;
113
+
114
+ const logs = await accountController.getEvents.AcceptInviteAddress(
115
+ eventParams
116
+ );
117
+ return logs
118
+ .filter(
119
+ (log) =>
120
+ log.args.addr === address &&
121
+ (tsChainId ? log.args.chainId === tsChainId : true)
122
+ )
123
+ .map((log) => ({
124
+ blockNumber: log.blockNumber,
125
+ accountId: log.args.accountId,
126
+ tsChainId: log.args.chainId,
127
+ id: `${log.args.accountId ?? ''}${log.args.chainId ?? ''}`,
128
+ }));
129
+ }
130
+
131
+ export async function fetchInvitationByAddress(
132
+ params: InviteAddressEventParams
133
+ ) {
134
+ const receivedInvitations = await fetchReceivedInvitationEventByAddress(
135
+ params
136
+ );
137
+ const acceptedInvitations = await fetchAcceptedInvitationEventByAddress(
138
+ params
139
+ );
140
+
141
+ const allEvents = [...receivedInvitations, ...acceptedInvitations];
142
+ allEvents.sort((a, b) => Number(a.blockNumber) - Number(b.blockNumber));
143
+
144
+ const accountStatus = new Map();
145
+
146
+ for (const event of allEvents)
147
+ if (receivedInvitations.includes(event)) accountStatus.set(event.id, true);
148
+ else if (acceptedInvitations.includes(event))
149
+ accountStatus.set(event.id, false);
150
+
151
+ return {
152
+ address: params.address,
153
+ invitations: allEvents
154
+ .filter((log) => accountStatus.get(log.id))
155
+ .map((log) => ({
156
+ accountId: log.accountId as AccountId,
157
+ tsChainId: log.tsChainId as TSChainId,
158
+ })),
159
+ };
160
+ }
@@ -0,0 +1,72 @@
1
+ import {
2
+ calcBorrowBalance,
3
+ calcBorrowInterestIndex,
4
+ calcStableInterestRate,
5
+ } from '../../../../common/utils/formulae.js';
6
+ import { unixTime } from '../../../../common/utils/math-lib.js';
7
+
8
+ import type { LoanControllerUserLoanBorrow } from '../types/loan.js';
9
+ import type { PoolInfo } from '../types/pool.js';
10
+
11
+ export function initLoanBorrowInterests(
12
+ isStable: boolean,
13
+ poolInfo: PoolInfo
14
+ ): LoanControllerUserLoanBorrow {
15
+ const lastInterestIndex = isStable
16
+ ? BigInt(1e18)
17
+ : poolInfo.variableBorrowData.interestIndex[0];
18
+ const stableInterestRate = isStable
19
+ ? poolInfo.stableBorrowData.interestRate[0]
20
+ : 0n;
21
+ const lastStableUpdateTimestamp = isStable ? BigInt(unixTime()) : 0n;
22
+ return {
23
+ amount: 0n,
24
+ balance: 0n,
25
+ lastInterestIndex,
26
+ stableInterestRate,
27
+ lastStableUpdateTimestamp,
28
+ rewardIndex: 0n,
29
+ };
30
+ }
31
+
32
+ export function updateLoanBorrowInterests(
33
+ borrow: LoanControllerUserLoanBorrow,
34
+ amount: bigint,
35
+ poolInfo: PoolInfo,
36
+ isStableInterestRateToUpdate: boolean
37
+ ): LoanControllerUserLoanBorrow {
38
+ if (borrow.lastStableUpdateTimestamp > 0) {
39
+ const oldInterestIndex = borrow.lastInterestIndex;
40
+ const oldStableInterestRate = borrow.stableInterestRate;
41
+ borrow.lastInterestIndex = calcBorrowInterestIndex(
42
+ [oldStableInterestRate, 18],
43
+ [oldInterestIndex, 18],
44
+ borrow.lastStableUpdateTimestamp
45
+ )[0];
46
+ borrow.lastStableUpdateTimestamp = BigInt(unixTime());
47
+
48
+ borrow.balance = calcBorrowBalance(
49
+ borrow.balance,
50
+ [borrow.lastInterestIndex, 18],
51
+ [oldInterestIndex, 18]
52
+ );
53
+
54
+ if (isStableInterestRateToUpdate) {
55
+ borrow.stableInterestRate = calcStableInterestRate(
56
+ borrow.balance,
57
+ amount,
58
+ [oldStableInterestRate, 18],
59
+ poolInfo.stableBorrowData.interestRate
60
+ )[0];
61
+ }
62
+ } else {
63
+ borrow.balance = calcBorrowBalance(
64
+ borrow.balance,
65
+ poolInfo.variableBorrowData.interestIndex,
66
+ [borrow.lastInterestIndex, 18]
67
+ );
68
+ borrow.lastInterestIndex = poolInfo.variableBorrowData.interestIndex[0];
69
+ }
70
+
71
+ return borrow;
72
+ }