@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,305 @@
1
+ import { TS_CHAIN_ID } from '../../../../common/constants/chain.js';
2
+ import { MAINNET_POOLS } from '../../../../common/constants/pool.js';
3
+ import { ChainType, NetworkType } from '../../../../common/types/chain.js';
4
+ import { MAINNET_LOAN_TYPE_ID } from '../../../../common/types/lending.js';
5
+ import { AdapterType } from '../../../../common/types/message.js';
6
+ import {
7
+ MAINNET_TS_TOKEN_ID,
8
+ TokenType,
9
+ } from '../../../../common/types/token.js';
10
+ import { convertToGenericAddress } from '../../../../common/utils/address.js';
11
+
12
+ import type { EvmAddress } from '../../../../common/types/address.js';
13
+ import type { MainnetTsTokenId } from '../../../../common/types/token.js';
14
+ import type { HubChain } from '../types/chain.js';
15
+ import type { NodeId } from '../types/oracle.js';
16
+ import type { HubTokenData } from '../types/token.js';
17
+
18
+ export const HUB_CHAIN: Record<NetworkType.MAINNET, HubChain> = {
19
+ [NetworkType.MAINNET]: {
20
+ tsChainId: TS_CHAIN_ID.MONAD,
21
+ hubAddress: convertToGenericAddress(
22
+ '0x2dfdb4bf6c910b5bbbb0d07ec5f088e294628189' as EvmAddress,
23
+ ChainType.EVM
24
+ ),
25
+ hubMessageDispatcher: convertToGenericAddress(
26
+ '0xed84c02a0787d56d0b53efe64dd60a1ae20e4e31' as EvmAddress,
27
+ ChainType.EVM
28
+ ),
29
+ adapters: {
30
+ [AdapterType.HUB]: convertToGenericAddress(
31
+ '0x2970fde6064178d51d961689cb5b64226ab11fc2' as EvmAddress,
32
+ ChainType.EVM
33
+ ),
34
+ // [AdapterType.WORMHOLE_DATA]: convertToGenericAddress(
35
+ // '' as EvmAddress,
36
+ // ChainType.EVM
37
+ // ),
38
+ },
39
+ nodeManagerAddress: convertToGenericAddress(
40
+ '0x2bddd0e17d806d6ec521addb3f921879d1f6c0e8' as EvmAddress,
41
+ ChainType.EVM
42
+ ),
43
+ priceFeedControllerAddress: convertToGenericAddress(
44
+ '0x428cfa65310c70bc9e65bddb26c65fe4ca490376' as EvmAddress,
45
+ ChainType.EVM
46
+ ),
47
+ spokeControllerAddress: convertToGenericAddress(
48
+ '0x8f8a0ed366439576b7db220678ed1259743239e3' as EvmAddress,
49
+ ChainType.EVM
50
+ ),
51
+ accountControllerAddress: convertToGenericAddress(
52
+ '0xc2df24203ab3a4f3857d649757a99e18de059a16' as EvmAddress,
53
+ ChainType.EVM
54
+ ),
55
+ loanControllerAddress: convertToGenericAddress(
56
+ '0xc4c20efbefa4bde14091a3040d112cf981d8b2db' as EvmAddress,
57
+ ChainType.EVM
58
+ ),
59
+ tokens: {
60
+ [MAINNET_TS_TOKEN_ID.USDC]: {
61
+ token: {
62
+ type: TokenType.ERC20,
63
+ decimals: 6,
64
+ },
65
+ TsTokenId: MAINNET_TS_TOKEN_ID.USDC,
66
+ poolId: MAINNET_POOLS[MAINNET_TS_TOKEN_ID.USDC],
67
+ poolAddress: convertToGenericAddress(
68
+ '0xdb4e67f878289a820046f46f6304fd6ee1449281' as EvmAddress,
69
+ ChainType.EVM
70
+ ),
71
+ supportedLoanTypes: new Set([
72
+ MAINNET_LOAN_TYPE_ID.GENERAL,
73
+ MAINNET_LOAN_TYPE_ID.DEPOSIT,
74
+ MAINNET_LOAN_TYPE_ID.STABLE_EFFICIENCY,
75
+ ]),
76
+ },
77
+ [MAINNET_TS_TOKEN_ID.MON]: {
78
+ token: {
79
+ type: TokenType.NATIVE,
80
+ decimals: 18,
81
+ },
82
+
83
+ TsTokenId: MAINNET_TS_TOKEN_ID.MON,
84
+ poolId: MAINNET_POOLS[MAINNET_TS_TOKEN_ID.MON],
85
+ poolAddress: convertToGenericAddress(
86
+ '0x106d0e2bff74b39d09636bdcd5d4189f24d91433' as EvmAddress,
87
+ ChainType.EVM
88
+ ),
89
+ supportedLoanTypes: new Set([
90
+ MAINNET_LOAN_TYPE_ID.GENERAL,
91
+ MAINNET_LOAN_TYPE_ID.DEPOSIT,
92
+ MAINNET_LOAN_TYPE_ID.MON_EFFICIENCY,
93
+ ]),
94
+ },
95
+
96
+ [MAINNET_TS_TOKEN_ID.wMON]: {
97
+ token: {
98
+ type: TokenType.ERC20,
99
+ decimals: 18,
100
+ },
101
+ TsTokenId: MAINNET_TS_TOKEN_ID.wMON,
102
+ poolId: MAINNET_POOLS[MAINNET_TS_TOKEN_ID.wMON],
103
+ poolAddress: convertToGenericAddress(
104
+ '0xf358f9e4ba7d210fde8c9a30522bb0063e15c4bb' as EvmAddress,
105
+ ChainType.EVM
106
+ ),
107
+ supportedLoanTypes: new Set([
108
+ MAINNET_LOAN_TYPE_ID.GENERAL,
109
+ MAINNET_LOAN_TYPE_ID.DEPOSIT,
110
+ MAINNET_LOAN_TYPE_ID.MON_EFFICIENCY,
111
+ ]),
112
+ },
113
+
114
+ [MAINNET_TS_TOKEN_ID.AZND]: {
115
+ token: {
116
+ type: TokenType.ERC20,
117
+ decimals: 18,
118
+ },
119
+ TsTokenId: MAINNET_TS_TOKEN_ID.AZND,
120
+ poolId: MAINNET_POOLS[MAINNET_TS_TOKEN_ID.AZND],
121
+ poolAddress: convertToGenericAddress(
122
+ '0xaa3f243731d724f2195271a9c3f5c744f0d0b948' as EvmAddress,
123
+ ChainType.EVM
124
+ ),
125
+ supportedLoanTypes: new Set([
126
+ MAINNET_LOAN_TYPE_ID.GENERAL,
127
+ MAINNET_LOAN_TYPE_ID.DEPOSIT,
128
+ ]),
129
+ },
130
+ [MAINNET_TS_TOKEN_ID.muBOND]: {
131
+ token: {
132
+ type: TokenType.ERC20,
133
+ decimals: 18,
134
+ },
135
+ TsTokenId: MAINNET_TS_TOKEN_ID.muBOND,
136
+ poolId: MAINNET_POOLS[MAINNET_TS_TOKEN_ID.muBOND],
137
+ poolAddress: convertToGenericAddress(
138
+ '0x09cd0233ad57bac4f916ca7aa08321b96effbaf2' as EvmAddress,
139
+ ChainType.EVM
140
+ ),
141
+ supportedLoanTypes: new Set([
142
+ MAINNET_LOAN_TYPE_ID.GENERAL,
143
+ MAINNET_LOAN_TYPE_ID.DEPOSIT,
144
+ ]),
145
+ },
146
+ [MAINNET_TS_TOKEN_ID.AUSD]: {
147
+ token: {
148
+ type: TokenType.ERC20,
149
+ decimals: 6,
150
+ },
151
+ TsTokenId: MAINNET_TS_TOKEN_ID.AUSD,
152
+ poolId: MAINNET_POOLS[MAINNET_TS_TOKEN_ID.AUSD],
153
+ poolAddress: convertToGenericAddress(
154
+ '0x7f5996865e952bd7892366712d319de59b9ecc6b' as EvmAddress,
155
+ ChainType.EVM
156
+ ),
157
+ supportedLoanTypes: new Set([
158
+ MAINNET_LOAN_TYPE_ID.GENERAL,
159
+ MAINNET_LOAN_TYPE_ID.DEPOSIT,
160
+ ]),
161
+ },
162
+ // [MAINNET_TS_TOKEN_ID.earnAUSD]: {
163
+ // token: {
164
+ // type: TokenType.ERC20,
165
+ // decimals: 6,
166
+ // },
167
+ // TsTokenId: MAINNET_TS_TOKEN_ID.earnAUSD,
168
+ // poolId: MAINNET_POOLS[MAINNET_TS_TOKEN_ID.earnAUSD],
169
+ // poolAddress: convertToGenericAddress(
170
+ // '0x7d99267be583d46273803b2b1c5edb98bff6538d' as EvmAddress,
171
+ // ChainType.EVM
172
+ // ),
173
+ // supportedLoanTypes: new Set([
174
+ // MAINNET_LOAN_TYPE_ID.GENERAL,
175
+ // MAINNET_LOAN_TYPE_ID.DEPOSIT,
176
+ // ]),
177
+ // },
178
+ // [MAINNET_TS_TOKEN_ID.IoAZND]: {
179
+ // token: {
180
+ // type: TokenType.ERC20,
181
+ // decimals: 18,
182
+ // },
183
+ // TsTokenId: MAINNET_TS_TOKEN_ID.IoAZND,
184
+ // poolId: MAINNET_POOLS[MAINNET_TS_TOKEN_ID.IoAZND],
185
+ // poolAddress: convertToGenericAddress(
186
+ // '0x1122a5444ce12bba9f63f523e2f5155ebf046e92' as EvmAddress,
187
+ // ChainType.EVM
188
+ // ),
189
+ // supportedLoanTypes: new Set([
190
+ // MAINNET_LOAN_TYPE_ID.GENERAL,
191
+ // MAINNET_LOAN_TYPE_ID.DEPOSIT,
192
+ // ]),
193
+ // },
194
+ [MAINNET_TS_TOKEN_ID.USD1]: {
195
+ token: {
196
+ type: TokenType.ERC20,
197
+ decimals: 6,
198
+ },
199
+ TsTokenId: MAINNET_TS_TOKEN_ID.USD1,
200
+ poolId: MAINNET_POOLS[MAINNET_TS_TOKEN_ID.USD1],
201
+ poolAddress: convertToGenericAddress(
202
+ '0x3249df5ca0b825e7c3e7d84a4bb11c2eacd8c0f6' as EvmAddress,
203
+ ChainType.EVM
204
+ ),
205
+ supportedLoanTypes: new Set([
206
+ MAINNET_LOAN_TYPE_ID.GENERAL,
207
+ MAINNET_LOAN_TYPE_ID.DEPOSIT,
208
+ ]),
209
+ },
210
+ [MAINNET_TS_TOKEN_ID.WETH]: {
211
+ token: {
212
+ type: TokenType.ERC20,
213
+ decimals: 18,
214
+ },
215
+ TsTokenId: MAINNET_TS_TOKEN_ID.WETH,
216
+ poolId: MAINNET_POOLS[MAINNET_TS_TOKEN_ID.WETH],
217
+ poolAddress: convertToGenericAddress(
218
+ '0x0394728ef18258ca21f782ce37ebf1a16799d7ef' as EvmAddress,
219
+ ChainType.EVM
220
+ ),
221
+ supportedLoanTypes: new Set([
222
+ MAINNET_LOAN_TYPE_ID.GENERAL,
223
+ MAINNET_LOAN_TYPE_ID.DEPOSIT,
224
+ ]),
225
+ },
226
+ [MAINNET_TS_TOKEN_ID.WBTC]: {
227
+ token: {
228
+ type: TokenType.ERC20,
229
+ decimals: 8,
230
+ },
231
+ TsTokenId: MAINNET_TS_TOKEN_ID.WBTC,
232
+ poolId: MAINNET_POOLS[MAINNET_TS_TOKEN_ID.WBTC],
233
+ poolAddress: convertToGenericAddress(
234
+ '0xd636d6ab7072483de6ddc067f9147f8c1e512f18' as EvmAddress,
235
+ ChainType.EVM
236
+ ),
237
+ supportedLoanTypes: new Set([
238
+ MAINNET_LOAN_TYPE_ID.GENERAL,
239
+ MAINNET_LOAN_TYPE_ID.DEPOSIT,
240
+ ]),
241
+ },
242
+ // [MAINNET_TS_TOKEN_ID.sMON]: {
243
+ // token: {
244
+ // type: TokenType.ERC20,
245
+ // decimals: 18,
246
+ // },
247
+ // TsTokenId: MAINNET_TS_TOKEN_ID.sMON,
248
+ // poolId: MAINNET_POOLS[MAINNET_TS_TOKEN_ID.sMON],
249
+ // poolAddress: convertToGenericAddress(
250
+ // '0xc0fda7f80e772ac3f85735f66ecb1ac964a033f2' as EvmAddress,
251
+ // ChainType.EVM
252
+ // ),
253
+ // supportedLoanTypes: new Set([
254
+ // MAINNET_LOAN_TYPE_ID.GENERAL,
255
+ // MAINNET_LOAN_TYPE_ID.DEPOSIT,
256
+ // ]),
257
+ // },
258
+ // [MAINNET_TS_TOKEN_ID.shMON]: {
259
+ // token: {
260
+ // type: TokenType.ERC20,
261
+ // decimals: 18,
262
+ // },
263
+ // TsTokenId: MAINNET_TS_TOKEN_ID.shMON,
264
+ // poolId: MAINNET_POOLS[MAINNET_TS_TOKEN_ID.shMON],
265
+ // poolAddress: convertToGenericAddress(
266
+ // '0xd2108dec68089646c3d4d95f01ea42ee1142e7f4' as EvmAddress,
267
+ // ChainType.EVM
268
+ // ),
269
+ // supportedLoanTypes: new Set([
270
+ // MAINNET_LOAN_TYPE_ID.GENERAL,
271
+ // MAINNET_LOAN_TYPE_ID.DEPOSIT,
272
+ // ]),
273
+ // },
274
+ // [MAINNET_TS_TOKEN_ID.gMON]: {
275
+ // token: {
276
+ // type: TokenType.ERC20,
277
+ // decimals: 18,
278
+ // },
279
+ // TsTokenId: MAINNET_TS_TOKEN_ID.gMON,
280
+ // poolId: MAINNET_POOLS[MAINNET_TS_TOKEN_ID.gMON],
281
+ // poolAddress: convertToGenericAddress(
282
+ // '0x428bebf994c970656854eb66586583fe682cc1d3' as EvmAddress,
283
+ // ChainType.EVM
284
+ // ),
285
+ // supportedLoanTypes: new Set([MAINNET_LOAN_TYPE_ID.GENERAL]),
286
+ // },
287
+ // [MAINNET_TS_TOKEN_ID.aprMON]: {
288
+ // token: {
289
+ // type: TokenType.ERC20,
290
+ // decimals: 18,
291
+ // },
292
+ // TsTokenId: MAINNET_TS_TOKEN_ID.aprMON,
293
+ // poolId: MAINNET_POOLS[MAINNET_TS_TOKEN_ID.aprMON],
294
+ // poolAddress: convertToGenericAddress(
295
+ // '0xfdd72592a657775249da1b013ac1371ccd45d885' as EvmAddress,
296
+ // ChainType.EVM
297
+ // ),
298
+ // supportedLoanTypes: new Set([
299
+ // MAINNET_LOAN_TYPE_ID.GENERAL,
300
+ // MAINNET_LOAN_TYPE_ID.DEPOSIT,
301
+ // ]),
302
+ // },
303
+ } satisfies Record<MainnetTsTokenId, HubTokenData>,
304
+ },
305
+ };
@@ -0,0 +1,5 @@
1
+ export * as TsHubLoan from './ts-hub-loan.js';
2
+ export * as TSHubOracle from './ts-hub-oracle.js';
3
+ export * as TSHubPool from './ts-hub-pool.js';
4
+ export * as TSHubGmp from './ts-hub-gmp.js';
5
+ export * as TSHubAccount from './ts-hub-account.js';
@@ -0,0 +1,117 @@
1
+ import { Client } from 'viem';
2
+ import { NetworkType, TSChainId } from '../../../../common/types/chain.js';
3
+ import { GenericAddress } from '../../../../common/types/address.js';
4
+ import type { AccountIdByAddress, AccountInfo } from '../types/account.js';
5
+ import { getHubChain } from '../utils/chain.js';
6
+ import { getAccountControllerContract } from '../utils/contract.js';
7
+ import { getTsChainIdsByNetwork } from '../../../../common/utils/chain.js';
8
+ import { multicall } from 'viem/actions';
9
+ import { AccountId } from '../../../../common/types/lending.js';
10
+ import { defaultEventParams } from '../../common/constant/contract.js';
11
+ export async function getAccountIdByAddress(
12
+ provider: Client,
13
+ network: NetworkType,
14
+ address: GenericAddress,
15
+ tsChainIds?: Array<TSChainId>
16
+ ): Promise<AccountIdByAddress> {
17
+ const hubChain = getHubChain(network);
18
+ const accountController = getAccountControllerContract(
19
+ provider,
20
+ hubChain.accountControllerAddress
21
+ );
22
+ tsChainIds = tsChainIds ? tsChainIds : getTsChainIdsByNetwork(network);
23
+
24
+ const accountIds = await multicall(provider, {
25
+ contracts: tsChainIds.map((tsChainIds) => ({
26
+ address: accountController.address,
27
+ abi: accountController.abi,
28
+ functionName: 'getAccountIdOfAddressOnChain',
29
+ args: [address, tsChainIds],
30
+ })),
31
+ allowFailure: true,
32
+ });
33
+
34
+ const accountIdByAddress: AccountIdByAddress = [];
35
+
36
+ for (const [index, result] of accountIds.entries()) {
37
+ const tsChainId = tsChainIds[index];
38
+ if (result.status === 'success')
39
+ accountIdByAddress.push({
40
+ accountId: result.result as AccountId,
41
+ tsChainId,
42
+ });
43
+ }
44
+
45
+ return accountIdByAddress;
46
+ }
47
+
48
+ export async function isAccountCreated(
49
+ provider: Client,
50
+ network: NetworkType,
51
+ accountId: AccountId
52
+ ): Promise<boolean> {
53
+ const hubChain = getHubChain(network);
54
+ const accountController = getAccountControllerContract(
55
+ provider,
56
+ hubChain.accountControllerAddress
57
+ );
58
+
59
+ return await accountController.read.isAccountCreated([accountId]);
60
+ }
61
+
62
+ export async function getAccountInfo(
63
+ provider: Client,
64
+ network: NetworkType,
65
+ accountId: AccountId,
66
+ tsChainIds?: Array<TSChainId>
67
+ ): Promise<AccountInfo> {
68
+ const hubChain = getHubChain(network);
69
+
70
+ const accountController = getAccountControllerContract(
71
+ provider,
72
+ hubChain.accountControllerAddress
73
+ );
74
+
75
+ // get chain ids to check
76
+ tsChainIds = tsChainIds ? tsChainIds : getTsChainIdsByNetwork(network);
77
+
78
+ // define return variable
79
+ const accountInfo: AccountInfo = {
80
+ registered: new Map<TSChainId, GenericAddress>(),
81
+ invited: new Map<TSChainId, GenericAddress>(),
82
+ };
83
+
84
+ // query for registered and invited addresses on each respective chain
85
+ const registeredAddresses = await multicall(provider, {
86
+ contracts: tsChainIds.map((tsChainId) => ({
87
+ address: accountController.address,
88
+ abi: accountController.abi,
89
+ functionName: 'getAddressRegisteredToAccountOnChain',
90
+ args: [accountId, tsChainId],
91
+ })),
92
+ allowFailure: true,
93
+ });
94
+
95
+ const invitedAddresses = await multicall(provider, {
96
+ contracts: tsChainIds.map((tsChainId) => ({
97
+ address: accountController.address,
98
+ abi: accountController.abi,
99
+ functionName: 'getAddressInvitedToAccountOnChain',
100
+ args: [accountId, tsChainId],
101
+ })),
102
+ allowFailure: true,
103
+ });
104
+
105
+ for (const [index, result] of registeredAddresses.entries()) {
106
+ const chainId = tsChainIds[index];
107
+ if (result.status === 'success')
108
+ accountInfo.registered.set(chainId, result.result as GenericAddress);
109
+ }
110
+ for (const [index, result] of invitedAddresses.entries()) {
111
+ const chainId = tsChainIds[index];
112
+ if (result.status === 'success')
113
+ accountInfo.invited.set(chainId, result.result as GenericAddress);
114
+ }
115
+
116
+ return accountInfo;
117
+ }
@@ -0,0 +1,231 @@
1
+ import { FINALITY } from '../../../../common/constants/message.js';
2
+ import { getRandomGenericAddress } from '../../../../common/utils/address.js';
3
+ import { getRandomBytes } from '../../../../common/utils/bytes.js';
4
+ import { increaseByPercent } from '../../../../common/utils/math-lib.js';
5
+ import { RETRY_REVERSE_GAS_LIMIT_SLIPPAGE } from '../../common/constant/contract.js';
6
+ import { getEvmSignerAccount } from '../../common/utils/chain.js';
7
+ import {
8
+ buildMessageParams,
9
+ buildSendTokenExtraArgsWhenRemoving,
10
+ } from '../../common/utils/message.js';
11
+ import { getHubChainBridgeRouterAddress } from '../utils/chain.js';
12
+ import { getBridgeRouterHubContract } from '../utils/contract.js';
13
+
14
+ import type { EvmAddress } from '../../../../common/types/address.js';
15
+ import type { TSChainId } from '../../../../common/types/chain.js';
16
+ import type { MessageId } from '../../../../common/types/gmp.js';
17
+ import type {
18
+ AdapterType,
19
+ MessageToSend,
20
+ } from '../../../../common/types/message.js';
21
+ import type { MessageReceived } from '../../common/types/gmp.js';
22
+ import type {
23
+ PrepareRetryMessageCall,
24
+ PrepareReverseMessageCall,
25
+ } from '../../common/types/module.js';
26
+ import type { HubChain } from '../types/chain.js';
27
+ import type { HubTokenData } from '../types/token.js';
28
+ import type { Client, EstimateGasParameters, Hex, WalletClient } from 'viem';
29
+
30
+ export const prepare = {
31
+ async retryMessage(
32
+ provider: Client,
33
+ sender: EvmAddress,
34
+ adapterId: AdapterType,
35
+ messageId: MessageId,
36
+ message: MessageReceived,
37
+ extraArgs: Hex,
38
+ value: bigint,
39
+ hubChain: HubChain,
40
+ isRewards = false,
41
+ transactionOptions: EstimateGasParameters = {
42
+ account: sender,
43
+ }
44
+ ): Promise<PrepareRetryMessageCall> {
45
+ const bridgeRouterAddress = getHubChainBridgeRouterAddress(
46
+ hubChain,
47
+ isRewards
48
+ );
49
+ const bridgeRouter = getBridgeRouterHubContract(
50
+ provider,
51
+ bridgeRouterAddress
52
+ );
53
+
54
+ const gasLimit = await bridgeRouter.estimateGas.retryMessage(
55
+ [adapterId, messageId, message, extraArgs],
56
+ {
57
+ ...transactionOptions,
58
+ value,
59
+ }
60
+ );
61
+
62
+ return {
63
+ gasLimit: increaseByPercent(gasLimit, RETRY_REVERSE_GAS_LIMIT_SLIPPAGE),
64
+ msgValue: value,
65
+ isHub: true,
66
+ message,
67
+ extraArgs,
68
+ bridgeRouterAddress: hubChain.hubMessageDispatcher,
69
+ };
70
+ },
71
+
72
+ async reverseMessage(
73
+ provider: Client,
74
+ sender: EvmAddress,
75
+ adapterId: AdapterType,
76
+ messageId: MessageId,
77
+ message: MessageReceived,
78
+ extraArgs: Hex,
79
+ value: bigint,
80
+ hubChain: HubChain,
81
+ isRewards = false,
82
+ transactionOptions: EstimateGasParameters = {
83
+ account: sender,
84
+ }
85
+ ): Promise<PrepareRetryMessageCall> {
86
+ const bridgeRouterAddress = getHubChainBridgeRouterAddress(
87
+ hubChain,
88
+ isRewards
89
+ );
90
+ const bridgeRouter = getBridgeRouterHubContract(
91
+ provider,
92
+ bridgeRouterAddress
93
+ );
94
+
95
+ const gasLimit = await bridgeRouter.estimateGas.reverseMessage(
96
+ [adapterId, messageId, message, extraArgs],
97
+ {
98
+ ...transactionOptions,
99
+ value,
100
+ }
101
+ );
102
+
103
+ return {
104
+ gasLimit: increaseByPercent(gasLimit, RETRY_REVERSE_GAS_LIMIT_SLIPPAGE),
105
+ msgValue: value,
106
+ isHub: true,
107
+ message,
108
+ extraArgs,
109
+ bridgeRouterAddress: hubChain.hubMessageDispatcher,
110
+ };
111
+ },
112
+ };
113
+
114
+ export const write = {
115
+ async retryMessage(
116
+ provider: Client,
117
+ signer: WalletClient,
118
+ adapterId: AdapterType,
119
+ messageId: MessageId,
120
+ prepareCall: PrepareRetryMessageCall
121
+ ) {
122
+ const {
123
+ gasLimit,
124
+ maxFeePerGas,
125
+ maxPriorityFeePerGas,
126
+ msgValue,
127
+ message,
128
+ extraArgs,
129
+ bridgeRouterAddress,
130
+ } = prepareCall;
131
+
132
+ const bridgeRouter = getBridgeRouterHubContract(
133
+ provider,
134
+ bridgeRouterAddress,
135
+ signer
136
+ );
137
+
138
+ return await bridgeRouter.write.retryMessage(
139
+ [adapterId, messageId, message, extraArgs],
140
+ {
141
+ account: getEvmSignerAccount(signer),
142
+ chain: signer.chain,
143
+ gas: gasLimit,
144
+ maxFeePerGas,
145
+ maxPriorityFeePerGas,
146
+ value: msgValue,
147
+ }
148
+ );
149
+ },
150
+
151
+ async reverseMessage(
152
+ provider: Client,
153
+ signer: WalletClient,
154
+ adapterId: AdapterType,
155
+ messageId: MessageId,
156
+ prepareCall: PrepareReverseMessageCall
157
+ ) {
158
+ const {
159
+ gasLimit,
160
+ maxFeePerGas,
161
+ maxPriorityFeePerGas,
162
+ msgValue,
163
+ message,
164
+ extraArgs,
165
+ bridgeRouterAddress,
166
+ } = prepareCall;
167
+
168
+ const bridgeRouter = getBridgeRouterHubContract(
169
+ provider,
170
+ bridgeRouterAddress,
171
+ signer
172
+ );
173
+
174
+ return await bridgeRouter.write.reverseMessage(
175
+ [adapterId, messageId, message, extraArgs],
176
+ {
177
+ account: getEvmSignerAccount(signer),
178
+ chain: signer.chain,
179
+ gas: gasLimit,
180
+ maxFeePerGas,
181
+ maxPriorityFeePerGas,
182
+ value: msgValue,
183
+ }
184
+ );
185
+ },
186
+ };
187
+
188
+ export async function getSendMessageFee(
189
+ provider: Client,
190
+ toTsChainId: TSChainId,
191
+ adapterId: AdapterType,
192
+ gasLimit: bigint,
193
+ hubChain: HubChain,
194
+ hubTokenData?: HubTokenData,
195
+ isRewards = false
196
+ ): Promise<bigint> {
197
+ const bridgeRouterAddress = getHubChainBridgeRouterAddress(
198
+ hubChain,
199
+ isRewards
200
+ );
201
+ const hubBridgeRouter = getBridgeRouterHubContract(
202
+ provider,
203
+ bridgeRouterAddress
204
+ );
205
+
206
+ // construct return message
207
+ const message: MessageToSend = {
208
+ params: buildMessageParams({
209
+ adapters: {
210
+ adapterId,
211
+ returnAdapterId: 0 as AdapterType,
212
+ },
213
+ gasLimit,
214
+ }),
215
+ sender: hubChain.hubAddress,
216
+ destinationChainId: toTsChainId,
217
+ handler: getRandomGenericAddress(),
218
+ payload: getRandomBytes(256),
219
+ finalityLevel: FINALITY.FINALISED,
220
+ extraArgs: hubTokenData
221
+ ? buildSendTokenExtraArgsWhenRemoving(
222
+ getRandomGenericAddress(),
223
+ hubTokenData.token,
224
+ 1n
225
+ )
226
+ : '0x',
227
+ };
228
+
229
+ // get return adapter fee
230
+ return await hubBridgeRouter.read.getSendFee([message]);
231
+ }