@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,8 @@
1
+ import { WORMHOLE_DATA } from '../constants/gmp.js';
2
+
3
+ import type { TSChainId } from '../types/chain.js';
4
+ import type { CCIPData, WormholeData } from '../types/gmp.js';
5
+
6
+ export function getWormholeData(tsChainId: TSChainId): WormholeData {
7
+ return WORMHOLE_DATA[tsChainId];
8
+ }
@@ -0,0 +1,31 @@
1
+ import { concat, keccak256, pad, toHex } from 'viem';
2
+
3
+ import { BYTES32_LENGTH, UINT16_LENGTH } from '../constants/byte.js';
4
+
5
+ import { convertNumberToBytes } from './bytes.js';
6
+
7
+ import type { GenericAddress } from '../types/address.js';
8
+ import type { TSChainId } from '../types/chain.js';
9
+ import type { AccountId, LoanId, LoanName, Nonce } from '../types/lending.js';
10
+
11
+ export function isAccountId(accountId: AccountId): boolean {
12
+ return accountId.length === 64 + 2;
13
+ }
14
+
15
+ export function buildAccountId(
16
+ addr: GenericAddress,
17
+ chainId: TSChainId,
18
+ nonce: Nonce
19
+ ): AccountId {
20
+ return keccak256(
21
+ concat([addr, convertNumberToBytes(chainId, UINT16_LENGTH), nonce])
22
+ ) as AccountId;
23
+ }
24
+
25
+ export function buildLoanId(accountId: AccountId, nonce: Nonce): LoanId {
26
+ return keccak256(concat([accountId, nonce])) as LoanId;
27
+ }
28
+
29
+ export function convertStringToLoanName(name: string): LoanName {
30
+ return pad(toHex(name), { size: BYTES32_LENGTH }) as LoanName;
31
+ }
@@ -0,0 +1,50 @@
1
+ import * as dn from "dnum";
2
+
3
+ import type { Dnum } from "dnum";
4
+
5
+ export const SECONDS_IN_YEAR = BigInt(365 * 24 * 60 * 60);
6
+ export const HOURS_IN_YEAR = BigInt(365 * 24);
7
+
8
+ export function unixTime(): number {
9
+ return Math.floor(Date.now() / 1000);
10
+ }
11
+
12
+ export function expBySquaring(x: Dnum, n: bigint): Dnum {
13
+ const [, decimals] = x;
14
+ const one = dn.from(1, decimals);
15
+
16
+ if (n === BigInt(0)) return one;
17
+
18
+ let y = one;
19
+ while (n > BigInt(1)) {
20
+ if (n % BigInt(2)) {
21
+ y = dn.mul(x, y, { rounding: "ROUND_DOWN" });
22
+ n = (n - BigInt(1)) / BigInt(2);
23
+ } else {
24
+ n = n / BigInt(2);
25
+ }
26
+ x = dn.mul(x, x, { rounding: "ROUND_DOWN" });
27
+ }
28
+ return dn.mul(x, y, { rounding: "ROUND_DOWN" });
29
+ }
30
+
31
+ function compound(rate: Dnum, period: bigint): Dnum {
32
+ const [, decimals] = rate;
33
+ const one = dn.from(1, decimals);
34
+ return dn.sub(expBySquaring(dn.add(one, dn.div(rate, period)), period), one);
35
+ }
36
+
37
+ export function compoundEverySecond(rate: Dnum): Dnum {
38
+ return compound(rate, SECONDS_IN_YEAR);
39
+ }
40
+
41
+ export function compoundEveryHour(rate: Dnum): Dnum {
42
+ return compound(rate, HOURS_IN_YEAR);
43
+ }
44
+
45
+ export const bigIntMax = (...args: Array<bigint>) => args.reduce((m, e) => (e > m ? e : m));
46
+ export const bigIntMin = (...args: Array<bigint>) => args.reduce((m, e) => (e < m ? e : m));
47
+
48
+ export const increaseByPercent = (value: bigint, percent: number) => {
49
+ return value + (value * BigInt(10_000 * percent)) / BigInt(10_000);
50
+ };
@@ -0,0 +1,283 @@
1
+ import {
2
+ bytesToBigInt,
3
+ bytesToBool,
4
+ bytesToHex,
5
+ bytesToNumber,
6
+ hexToBytes,
7
+ hexToNumber,
8
+ parseEventLogs,
9
+ sliceHex,
10
+ } from 'viem';
11
+ import { getTransactionReceipt } from 'viem/actions';
12
+
13
+ import { WormholeDataAdapterAbi } from '../../chains/evm/common/constant/abi/wormhole-data-adapter-abi.js';
14
+ import { GAS_LIMIT_ESTIMATE_INCREASE } from '../../chains/evm/common/constant/contract.js';
15
+ import {
16
+ buildEvmMessageToSend,
17
+ estimateEvmWormholeDataGasLimit,
18
+ getSendTokenStateOverride,
19
+ } from '../../chains/evm/common/utils/message.js';
20
+ import { getHubChainAdapterAddress } from '../../chains/evm/hub/utils/chain.js';
21
+ import { exhaustiveCheck } from '../../utils/exhaustive-check.js';
22
+ import {
23
+ BYTES32_LENGTH,
24
+ BYTES4_LENGTH,
25
+ UINT16_LENGTH,
26
+ UINT256_LENGTH,
27
+ UINT8_LENGTH,
28
+ } from '../constants/byte.js';
29
+ import {
30
+ REVERSIBLE_HUB_ACTIONS,
31
+ SEND_TOKEN_ACTIONS,
32
+ } from '../constants/message.js';
33
+ import { ChainType } from '../types/chain.js';
34
+ import { MessageDirection } from '../types/gmp.js';
35
+ import { Action, AdapterType } from '../types/message.js';
36
+
37
+ import { convertFromGenericAddress } from './address.js';
38
+ import { getTsChain, getSpokeChainAdapterAddress } from './chain.js';
39
+ import { getWormholeData } from './gmp.js';
40
+ import { waitTransaction } from './transaction.js';
41
+
42
+ import type { GenericAddress } from '../types/address.js';
43
+ import type { TSChainId, NetworkType } from '../types/chain.js';
44
+ import type { TSProvider } from '../types/core.js';
45
+ import type { AccountId, LoanId, LoanName, Nonce } from '../types/lending.js';
46
+ import type {
47
+ MessageAdapters,
48
+ MessageBuilderParams,
49
+ MessageDataMap,
50
+ MessageToSend,
51
+ OptionalFeeParams,
52
+ Payload,
53
+ } from '../types/message.js';
54
+
55
+ import type { Client as EVMProvider, Hex, StateOverride } from 'viem';
56
+
57
+ export function buildMessageToSend(
58
+ chainType: ChainType,
59
+ messageToSendBuilderParams: MessageBuilderParams,
60
+ feeParams: OptionalFeeParams = {}
61
+ ): MessageToSend {
62
+ switch (chainType) {
63
+ case ChainType.EVM: {
64
+ return buildEvmMessageToSend(messageToSendBuilderParams, feeParams);
65
+ }
66
+ default:
67
+ return exhaustiveCheck(chainType);
68
+ }
69
+ }
70
+
71
+ function getAdapterId(
72
+ messageDirection: MessageDirection,
73
+ adapters: MessageAdapters
74
+ ): AdapterType {
75
+ if (messageDirection === MessageDirection.SpokeToHub)
76
+ return adapters.adapterId;
77
+ return adapters.returnAdapterId;
78
+ }
79
+
80
+ function getAdaptersAddresses(
81
+ messageDirection: MessageDirection,
82
+ sourceTSChainId: TSChainId,
83
+ destTSChainId: TSChainId,
84
+ network: NetworkType,
85
+ adapterId: AdapterType,
86
+ isRewards = false
87
+ ) {
88
+ if (messageDirection === MessageDirection.SpokeToHub)
89
+ return {
90
+ sourceAdapterAddress: getSpokeChainAdapterAddress(
91
+ sourceTSChainId,
92
+ network,
93
+ adapterId
94
+ ),
95
+ destAdapterAddress: getHubChainAdapterAddress(network, adapterId),
96
+ };
97
+ return {
98
+ sourceAdapterAddress: getHubChainAdapterAddress(network, adapterId),
99
+ destAdapterAddress: getSpokeChainAdapterAddress(
100
+ destTSChainId,
101
+ network,
102
+ adapterId
103
+ ),
104
+ };
105
+ }
106
+
107
+ export async function estimateAdapterReceiveGasLimit(
108
+ sourceTSChainId: TSChainId,
109
+ destTSChainId: TSChainId,
110
+ destTSChainProvider: TSProvider,
111
+ network: NetworkType,
112
+ messageDirection: MessageDirection,
113
+ messageBuilderParams: MessageBuilderParams,
114
+ receiverValue = BigInt(0),
115
+ returnGasLimit = BigInt(0),
116
+ isRewards = false
117
+ ) {
118
+ const destTsChain = getTsChain(destTSChainId, network);
119
+
120
+ const adapterId = getAdapterId(
121
+ messageDirection,
122
+ messageBuilderParams.adapters
123
+ );
124
+ const { sourceAdapterAddress, destAdapterAddress } = getAdaptersAddresses(
125
+ messageDirection,
126
+ sourceTSChainId,
127
+ destTSChainId,
128
+ network,
129
+ adapterId,
130
+ isRewards
131
+ );
132
+
133
+ switch (destTsChain.chainType) {
134
+ case ChainType.EVM: {
135
+ let stateOverride: StateOverride = [];
136
+ if (messageBuilderParams.action === Action.SendToken) {
137
+ stateOverride = stateOverride.concat(
138
+ getSendTokenStateOverride(
139
+ destTSChainId,
140
+ messageBuilderParams.overrideData
141
+ )
142
+ );
143
+ }
144
+ switch (adapterId) {
145
+ case AdapterType.HUB: {
146
+ return 500000n;
147
+ }
148
+ case AdapterType.WORMHOLE_DATA: {
149
+ const sourceWormholeChainId =
150
+ getWormholeData(sourceTSChainId).wormholeChainId;
151
+ const wormholeRelayer = convertFromGenericAddress(
152
+ getWormholeData(destTSChainId).wormholeRelayer,
153
+ ChainType.EVM
154
+ );
155
+
156
+ const gasLimitEstimation = await estimateEvmWormholeDataGasLimit(
157
+ // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style
158
+ destTSChainProvider as EVMProvider,
159
+ messageBuilderParams,
160
+ receiverValue,
161
+ returnGasLimit,
162
+ sourceWormholeChainId,
163
+ wormholeRelayer,
164
+ destAdapterAddress,
165
+ sourceAdapterAddress,
166
+ stateOverride
167
+ );
168
+ return gasLimitEstimation + GAS_LIMIT_ESTIMATE_INCREASE;
169
+ }
170
+
171
+ default:
172
+ return exhaustiveCheck(adapterId);
173
+ }
174
+ }
175
+ default:
176
+ return exhaustiveCheck(destTsChain.chainType);
177
+ }
178
+ }
179
+
180
+ export async function getOperationIdsByTransaction(
181
+ chainType: ChainType,
182
+ tsProvider: TSProvider,
183
+ txnHash: Hex
184
+ ) {
185
+ switch (chainType) {
186
+ case ChainType.EVM: {
187
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
188
+ const receipt = await getTransactionReceipt(tsProvider!, {
189
+ hash: txnHash,
190
+ });
191
+ const logs = parseEventLogs({
192
+ abi: WormholeDataAdapterAbi,
193
+ logs: receipt.logs,
194
+ eventName: 'SendMessage',
195
+ });
196
+ return logs.map((log) => log.args.operationId);
197
+ }
198
+ default:
199
+ return exhaustiveCheck(chainType);
200
+ }
201
+ }
202
+
203
+ export async function waitOperationIds(
204
+ chainType: ChainType,
205
+ tsProvider: TSProvider,
206
+ txnHash: Hex,
207
+ confirmations = 1
208
+ ) {
209
+ switch (chainType) {
210
+ case ChainType.EVM: {
211
+ const receipt = await waitTransaction(
212
+ chainType,
213
+ tsProvider,
214
+ txnHash,
215
+ confirmations
216
+ );
217
+ return await getOperationIdsByTransaction(
218
+ chainType,
219
+ tsProvider,
220
+ receipt.transactionHash
221
+ );
222
+ }
223
+ default:
224
+ return exhaustiveCheck(chainType);
225
+ }
226
+ }
227
+
228
+ export function isReversibleAction(
229
+ action: Action,
230
+ messageDirection: MessageDirection
231
+ ) {
232
+ return (
233
+ messageDirection === MessageDirection.HubToSpoke &&
234
+ REVERSIBLE_HUB_ACTIONS.includes(action as any)
235
+ );
236
+ }
237
+
238
+ export function assertReversibleAction(
239
+ action: Action,
240
+ messageDirection: MessageDirection
241
+ ) {
242
+ if (!isReversibleAction(action, messageDirection))
243
+ throw new Error(
244
+ `Action ${action} is not reversible for message direction ${messageDirection}`
245
+ );
246
+ }
247
+
248
+ export function isRetryableAction(
249
+ action: Action,
250
+ messageDirection: MessageDirection
251
+ ) {
252
+ return (
253
+ messageDirection === MessageDirection.HubToSpoke ||
254
+ SEND_TOKEN_ACTIONS.includes(action as any)
255
+ );
256
+ }
257
+
258
+ export function assertRetryableAction(
259
+ action: Action,
260
+ messageDirection: MessageDirection
261
+ ) {
262
+ if (!isRetryableAction(action, messageDirection))
263
+ throw new Error(
264
+ `Action ${action} is not retryable for message direction ${messageDirection}`
265
+ );
266
+ }
267
+
268
+ export function decodeMessagePayload(payload: Hex): Payload {
269
+ return {
270
+ action: hexToNumber(sliceHex(payload, 0, UINT16_LENGTH)) as Action,
271
+ accountId: sliceHex(
272
+ payload,
273
+ UINT16_LENGTH,
274
+ UINT16_LENGTH + BYTES32_LENGTH
275
+ ) as AccountId,
276
+ userAddr: sliceHex(
277
+ payload,
278
+ UINT16_LENGTH + BYTES32_LENGTH,
279
+ UINT16_LENGTH + BYTES32_LENGTH + BYTES32_LENGTH
280
+ ) as GenericAddress,
281
+ data: sliceHex(payload, UINT16_LENGTH + BYTES32_LENGTH + BYTES32_LENGTH),
282
+ };
283
+ }
@@ -0,0 +1,13 @@
1
+ import { TS_TOKEN_IDS_FROM_POOL_BY_NETWORK } from '../constants/pool.js';
2
+
3
+ import type { NetworkType } from '../types/chain.js';
4
+ import type { TSTokenId } from '../types/token.js';
5
+
6
+ export function getTSTokenIdFromPool(
7
+ poolId: number,
8
+ network: NetworkType
9
+ ): TSTokenId {
10
+ const tsTokenId = TS_TOKEN_IDS_FROM_POOL_BY_NETWORK[network][poolId];
11
+ if (!tsTokenId) throw new Error(`Unknown poolId: ${poolId}`);
12
+ return tsTokenId;
13
+ }
@@ -0,0 +1,27 @@
1
+ import { waitForTransactionReceipt } from 'viem/actions';
2
+
3
+ import { exhaustiveCheck } from '../../utils/exhaustive-check.js';
4
+ import { ChainType } from '../types/chain.js';
5
+
6
+ import type { TSProvider } from '../types/core.js';
7
+ import type { Hex, TransactionReceipt } from 'viem';
8
+
9
+ export async function waitTransaction(
10
+ chainType: ChainType,
11
+ tsProvider: TSProvider,
12
+ txnHash: Hex,
13
+ confirmations = 1
14
+ ): Promise<TransactionReceipt> {
15
+ switch (chainType) {
16
+ case ChainType.EVM: {
17
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
18
+ const receipt = await waitForTransactionReceipt(tsProvider!, {
19
+ hash: txnHash,
20
+ confirmations,
21
+ });
22
+ return receipt;
23
+ }
24
+ default:
25
+ return exhaustiveCheck(chainType);
26
+ }
27
+ }
package/src/index.ts ADDED
@@ -0,0 +1,73 @@
1
+ export { TSCore } from './lifeline/core/ts-core.js';
2
+
3
+ // === CORE ===
4
+
5
+ // === MODULES ===
6
+ export {
7
+ TSAccount,
8
+ TSLoan, //
9
+ TSOracle, //
10
+ TSPool, //
11
+ TSGmp,
12
+ } from './lifeline/modules/index.js';
13
+
14
+ // === COMMON ===
15
+ export * from './common/types/adapter.js';
16
+ export * from './common/types/address.js';
17
+ export * from './common/types/chain.js';
18
+ export * from './common/types/core.js';
19
+
20
+ export * from './common/types/lending.js';
21
+ export * from './common/types/message.js';
22
+ export * from './common/types/module.js';
23
+ export * from './common/types/token.js';
24
+ // ./common/constants/bytes.js
25
+ export * from './common/constants/byte.js';
26
+ export * from './common/constants/chain.js';
27
+ export * from './common/constants/gmp.js';
28
+ export * from './common/constants/message.js';
29
+ export * from './common/constants/pool.js';
30
+
31
+ // ./common/utils/adapter.js
32
+ export { getSupportedMessageAdapters } from './common/utils/adapter.js';
33
+ export {
34
+ convertFromGenericAddress,
35
+ convertToGenericAddress,
36
+ } from './common/utils/address.js';
37
+ export { getRandomBytes } from './common/utils/bytes.js';
38
+ export { getAdapterAddress } from './common/utils/chain.js';
39
+ export {
40
+ toFAmount,
41
+ toUnderlyingAmount,
42
+ calcAssetDollarValue,
43
+ } from './common/utils/formulae.js';
44
+ // ./common/utils/gmp.js
45
+ export { getWormholeData } from './common/utils/gmp.js';
46
+ export { buildAccountId, buildLoanId } from './common/utils/lending.js';
47
+
48
+ export { waitTransaction } from './common/utils/transaction.js';
49
+
50
+ // === HUB ===
51
+ export { isHubChain } from './chains/evm/hub/utils/chain.js';
52
+ export { HUB_CHAIN } from './chains/evm/hub/constants/chain.js';
53
+
54
+ // === CHAINS ===
55
+
56
+ // - EVM
57
+ export * from './chains/evm/common/constant/chain.js';
58
+
59
+ export * from './chains/evm/common/types/chain.js';
60
+
61
+ export { isEvmChainId } from './chains/evm/common/utils/chain.js';
62
+
63
+ // - EVM: HUB
64
+ export * from './chains/evm/hub/types/account.js';
65
+ export * from './chains/evm/hub/types/chain.js';
66
+ export * from './chains/evm/hub/types/loan.js';
67
+ export * from './chains/evm/hub/types/oracle.js';
68
+ export * from './chains/evm/hub/types/pool.js';
69
+
70
+ export * from './chains/evm/hub/types/token.js';
71
+
72
+ // - EVM: SPOKE
73
+ export * from './chains/evm/spoke/types/pool.js';
@@ -0,0 +1,136 @@
1
+ import { initProviders } from '../../chains/evm/common/utils/provider.js';
2
+ import { getHubChain } from '../../chains/evm/hub/utils/chain.js';
3
+ import { ChainType } from '../../common/types/chain.js';
4
+ import { getTsChain } from '../../common/utils/chain.js';
5
+ // ../../chains/evm/hub/utils/chain.js
6
+ import { exhaustiveCheck } from '../../utils/exhaustive-check.js';
7
+
8
+ import type {
9
+ TSChainId,
10
+ TSChain,
11
+ NetworkType,
12
+ } from '../../common/types/chain.js';
13
+ import type {
14
+ TSCoreProvider,
15
+ TSSigner,
16
+ TSCoreConfig,
17
+ TSProviderType,
18
+ TSSignerType,
19
+ TSProvider,
20
+ } from '../../common/types/core.js';
21
+ import type { Client as EVMProvider } from 'viem';
22
+
23
+ export class TSCore {
24
+ private static instance: TSCore | undefined;
25
+ private tsCoreProvider: TSCoreProvider;
26
+
27
+ private selectedNetwork: NetworkType;
28
+ private tsSigner?: TSSigner;
29
+
30
+ private constructor(tsCoreConfig: TSCoreConfig) {
31
+ this.selectedNetwork = tsCoreConfig.network;
32
+ this.tsCoreProvider = { evm: {} as Record<TSChainId, EVMProvider> };
33
+ this.tsCoreProvider.evm = initProviders(tsCoreConfig.provider.evm);
34
+ }
35
+
36
+ static init(tsCoreConfig: TSCoreConfig): TSCore {
37
+ if (TSCore.instance) throw new Error('TownsqCore is already initialized');
38
+ TSCore.instance = new TSCore(tsCoreConfig);
39
+ return TSCore.instance;
40
+ }
41
+
42
+ static isInitialized(): boolean {
43
+ return !!TSCore.instance;
44
+ }
45
+
46
+ static getInstance(): TSCore {
47
+ if (TSCore.instance) return TSCore.instance;
48
+ throw new Error('TSCore is not initialized');
49
+ }
50
+
51
+ static getProvider<T extends ChainType>(
52
+ tsChainId: TSChainId
53
+ ): TSProviderType<T> {
54
+ const tsChain = getTsChain(tsChainId, this.getSelectedNetwork());
55
+ switch (tsChain.chainType) {
56
+ case ChainType.EVM:
57
+ return TSCore.getEVMProvider(tsChainId) as TSProviderType<T>;
58
+ default:
59
+ return exhaustiveCheck(tsChain.chainType);
60
+ }
61
+ }
62
+
63
+ static getTSSigner() {
64
+ const instance = this.getInstance();
65
+ if (!instance.tsSigner) throw new Error('TSSigner is not initialized');
66
+
67
+ return instance.tsSigner;
68
+ }
69
+
70
+ static getSigner<T extends ChainType>(): TSSignerType<T> {
71
+ const { signer } = this.getTSSigner();
72
+
73
+ return signer as TSSignerType<T>;
74
+ }
75
+
76
+ static getSelectedTsChain(): TSChain {
77
+ const { tsChainId } = this.getTSSigner();
78
+
79
+ return getTsChain(tsChainId, this.getSelectedNetwork());
80
+ }
81
+
82
+ static getSelectedNetwork() {
83
+ const instance = this.getInstance();
84
+ return instance.selectedNetwork;
85
+ }
86
+
87
+ static getHubProvider(): EVMProvider {
88
+ const instance = this.getInstance();
89
+ const hubTsChainId = getHubChain(instance.selectedNetwork).tsChainId;
90
+
91
+ const hubProvider = instance.tsCoreProvider.evm[hubTsChainId];
92
+ if (!hubProvider) throw new Error(`Hub Provider has not been initialized`);
93
+
94
+ return hubProvider;
95
+ }
96
+
97
+ static setProvider(tsChainId: TSChainId, provider: TSProvider) {
98
+ const instance = this.getInstance();
99
+ const tsChain = getTsChain(tsChainId, this.getSelectedNetwork());
100
+ switch (tsChain.chainType) {
101
+ case ChainType.EVM:
102
+ // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style -- in the future TSProvider will contain more than just EVMProvider
103
+ instance.tsCoreProvider.evm[tsChainId] = provider as EVMProvider;
104
+ break;
105
+ default:
106
+ return exhaustiveCheck(tsChain.chainType);
107
+ }
108
+ }
109
+
110
+ static setNetwork(network: NetworkType) {
111
+ const instance = this.getInstance();
112
+ instance.selectedNetwork = network;
113
+ }
114
+
115
+ static setTSsSigner(tsSigner: TSSigner) {
116
+ const instance = this.getInstance();
117
+ const tsChain = getTsChain(tsSigner.tsChainId, this.getSelectedNetwork());
118
+
119
+ switch (tsChain.chainType) {
120
+ case ChainType.EVM:
121
+ instance.tsSigner = tsSigner;
122
+ break;
123
+ default:
124
+ return exhaustiveCheck(tsChain.chainType);
125
+ }
126
+ }
127
+
128
+ static getEVMProvider(tsChainId: TSChainId): EVMProvider {
129
+ const instance = this.getInstance();
130
+ const evmProvider = instance.tsCoreProvider.evm[tsChainId];
131
+ if (!evmProvider)
132
+ throw new Error(`EVM Provider not found for tsChainId: ${tsChainId}`);
133
+
134
+ return evmProvider;
135
+ }
136
+ }
@@ -0,0 +1,5 @@
1
+ export * as TSAccount from './ts-account.js';
2
+ export * as TSLoan from './ts-loan.js';
3
+ export * as TSOracle from './ts-oracle.js';
4
+ export * as TSPool from './ts-pool.js';
5
+ export * as TSGmp from './ts-gmp.js';