@folks-finance/xchain-sdk 0.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 (346) hide show
  1. package/README.md +1 -0
  2. package/dist/chains/evm/common/constants/abi/ccip-data-adapter-abi.d.ts +796 -0
  3. package/dist/chains/evm/common/constants/abi/ccip-data-adapter-abi.js +614 -0
  4. package/dist/chains/evm/common/constants/abi/ccip-data-adapter-abi.js.map +1 -0
  5. package/dist/chains/evm/common/constants/abi/erc-20-abi.d.ts +235 -0
  6. package/dist/chains/evm/common/constants/abi/erc-20-abi.js +157 -0
  7. package/dist/chains/evm/common/constants/abi/erc-20-abi.js.map +1 -0
  8. package/dist/chains/evm/common/constants/abi/wormhole-data-adapter-abi.d.ts +807 -0
  9. package/dist/chains/evm/common/constants/abi/wormhole-data-adapter-abi.js +621 -0
  10. package/dist/chains/evm/common/constants/abi/wormhole-data-adapter-abi.js.map +1 -0
  11. package/dist/chains/evm/common/constants/chain.d.ts +2349 -0
  12. package/dist/chains/evm/common/constants/chain.js +45 -0
  13. package/dist/chains/evm/common/constants/chain.js.map +1 -0
  14. package/dist/chains/evm/common/constants/contract.d.ts +2 -0
  15. package/dist/chains/evm/common/constants/contract.js +6 -0
  16. package/dist/chains/evm/common/constants/contract.js.map +1 -0
  17. package/dist/chains/evm/common/constants/tokens.d.ts +6 -0
  18. package/dist/chains/evm/common/constants/tokens.js +33 -0
  19. package/dist/chains/evm/common/constants/tokens.js.map +1 -0
  20. package/dist/chains/evm/common/types/chain.d.ts +10 -0
  21. package/dist/chains/evm/common/types/chain.js +2 -0
  22. package/dist/chains/evm/common/types/chain.js.map +1 -0
  23. package/dist/chains/evm/common/types/contract.d.ts +8 -0
  24. package/dist/chains/evm/common/types/contract.js +2 -0
  25. package/dist/chains/evm/common/types/contract.js.map +1 -0
  26. package/dist/chains/evm/common/types/gmp.d.ts +14 -0
  27. package/dist/chains/evm/common/types/gmp.js +2 -0
  28. package/dist/chains/evm/common/types/gmp.js.map +1 -0
  29. package/dist/chains/evm/common/types/index.d.ts +3 -0
  30. package/dist/chains/evm/common/types/index.js +4 -0
  31. package/dist/chains/evm/common/types/index.js.map +1 -0
  32. package/dist/chains/evm/common/types/module.d.ts +66 -0
  33. package/dist/chains/evm/common/types/module.js +2 -0
  34. package/dist/chains/evm/common/types/module.js.map +1 -0
  35. package/dist/chains/evm/common/types/tokens.d.ts +28 -0
  36. package/dist/chains/evm/common/types/tokens.js +2 -0
  37. package/dist/chains/evm/common/types/tokens.js.map +1 -0
  38. package/dist/chains/evm/common/utils/chain.d.ts +6 -0
  39. package/dist/chains/evm/common/utils/chain.js +16 -0
  40. package/dist/chains/evm/common/utils/chain.js.map +1 -0
  41. package/dist/chains/evm/common/utils/contract.d.ts +6006 -0
  42. package/dist/chains/evm/common/utils/contract.js +54 -0
  43. package/dist/chains/evm/common/utils/contract.js.map +1 -0
  44. package/dist/chains/evm/common/utils/gmp.d.ts +4 -0
  45. package/dist/chains/evm/common/utils/gmp.js +13 -0
  46. package/dist/chains/evm/common/utils/gmp.js.map +1 -0
  47. package/dist/chains/evm/common/utils/message.d.ts +22 -0
  48. package/dist/chains/evm/common/utils/message.js +398 -0
  49. package/dist/chains/evm/common/utils/message.js.map +1 -0
  50. package/dist/chains/evm/common/utils/provider.d.ts +5 -0
  51. package/dist/chains/evm/common/utils/provider.js +24 -0
  52. package/dist/chains/evm/common/utils/provider.js.map +1 -0
  53. package/dist/chains/evm/common/utils/tokens.d.ts +10 -0
  54. package/dist/chains/evm/common/utils/tokens.js +37 -0
  55. package/dist/chains/evm/common/utils/tokens.js.map +1 -0
  56. package/dist/chains/evm/hub/constants/abi/account-manager-abi.d.ts +907 -0
  57. package/dist/chains/evm/hub/constants/abi/account-manager-abi.js +686 -0
  58. package/dist/chains/evm/hub/constants/abi/account-manager-abi.js.map +1 -0
  59. package/dist/chains/evm/hub/constants/abi/bridge-router-hub-abi.d.ts +969 -0
  60. package/dist/chains/evm/hub/constants/abi/bridge-router-hub-abi.js +764 -0
  61. package/dist/chains/evm/hub/constants/abi/bridge-router-hub-abi.js.map +1 -0
  62. package/dist/chains/evm/hub/constants/abi/hub-abi.d.ts +285 -0
  63. package/dist/chains/evm/hub/constants/abi/hub-abi.js +187 -0
  64. package/dist/chains/evm/hub/constants/abi/hub-abi.js.map +1 -0
  65. package/dist/chains/evm/hub/constants/abi/hub-pool-abi.d.ts +1742 -0
  66. package/dist/chains/evm/hub/constants/abi/hub-pool-abi.js +1346 -0
  67. package/dist/chains/evm/hub/constants/abi/hub-pool-abi.js.map +1 -0
  68. package/dist/chains/evm/hub/constants/abi/loan-manager-abi.d.ts +1559 -0
  69. package/dist/chains/evm/hub/constants/abi/loan-manager-abi.js +1040 -0
  70. package/dist/chains/evm/hub/constants/abi/loan-manager-abi.js.map +1 -0
  71. package/dist/chains/evm/hub/constants/abi/oracle-manager-abi.d.ts +495 -0
  72. package/dist/chains/evm/hub/constants/abi/oracle-manager-abi.js +389 -0
  73. package/dist/chains/evm/hub/constants/abi/oracle-manager-abi.js.map +1 -0
  74. package/dist/chains/evm/hub/constants/chain.d.ts +3 -0
  75. package/dist/chains/evm/hub/constants/chain.js +96 -0
  76. package/dist/chains/evm/hub/constants/chain.js.map +1 -0
  77. package/dist/chains/evm/hub/modules/folks-hub-account.d.ts +15 -0
  78. package/dist/chains/evm/hub/modules/folks-hub-account.js +98 -0
  79. package/dist/chains/evm/hub/modules/folks-hub-account.js.map +1 -0
  80. package/dist/chains/evm/hub/modules/folks-hub-gmp.d.ts +14 -0
  81. package/dist/chains/evm/hub/modules/folks-hub-gmp.js +57 -0
  82. package/dist/chains/evm/hub/modules/folks-hub-gmp.js.map +1 -0
  83. package/dist/chains/evm/hub/modules/folks-hub-loan.d.ts +25 -0
  84. package/dist/chains/evm/hub/modules/folks-hub-loan.js +397 -0
  85. package/dist/chains/evm/hub/modules/folks-hub-loan.js.map +1 -0
  86. package/dist/chains/evm/hub/modules/folks-hub-oracle.d.ts +5 -0
  87. package/dist/chains/evm/hub/modules/folks-hub-oracle.js +24 -0
  88. package/dist/chains/evm/hub/modules/folks-hub-oracle.js.map +1 -0
  89. package/dist/chains/evm/hub/modules/folks-hub-pool.d.ts +5 -0
  90. package/dist/chains/evm/hub/modules/folks-hub-pool.js +114 -0
  91. package/dist/chains/evm/hub/modules/folks-hub-pool.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/types/account.d.ts +23 -0
  96. package/dist/chains/evm/hub/types/account.js +2 -0
  97. package/dist/chains/evm/hub/types/account.js.map +1 -0
  98. package/dist/chains/evm/hub/types/chain.d.ts +15 -0
  99. package/dist/chains/evm/hub/types/chain.js +2 -0
  100. package/dist/chains/evm/hub/types/chain.js.map +1 -0
  101. package/dist/chains/evm/hub/types/loan.d.ts +126 -0
  102. package/dist/chains/evm/hub/types/loan.js +9 -0
  103. package/dist/chains/evm/hub/types/loan.js.map +1 -0
  104. package/dist/chains/evm/hub/types/oracle.d.ts +4 -0
  105. package/dist/chains/evm/hub/types/oracle.js +2 -0
  106. package/dist/chains/evm/hub/types/oracle.js.map +1 -0
  107. package/dist/chains/evm/hub/types/pool.d.ts +60 -0
  108. package/dist/chains/evm/hub/types/pool.js +2 -0
  109. package/dist/chains/evm/hub/types/pool.js.map +1 -0
  110. package/dist/chains/evm/hub/types/token.d.ts +9 -0
  111. package/dist/chains/evm/hub/types/token.js +2 -0
  112. package/dist/chains/evm/hub/types/token.js.map +1 -0
  113. package/dist/chains/evm/hub/utils/chain.d.ts +13 -0
  114. package/dist/chains/evm/hub/utils/chain.js +29 -0
  115. package/dist/chains/evm/hub/utils/chain.js.map +1 -0
  116. package/dist/chains/evm/hub/utils/contract.d.ts +17 -0
  117. package/dist/chains/evm/hub/utils/contract.js +52 -0
  118. package/dist/chains/evm/hub/utils/contract.js.map +1 -0
  119. package/dist/chains/evm/hub/utils/events.d.ts +24 -0
  120. package/dist/chains/evm/hub/utils/events.js +97 -0
  121. package/dist/chains/evm/hub/utils/events.js.map +1 -0
  122. package/dist/chains/evm/hub/utils/loan.d.ts +4 -0
  123. package/dist/chains/evm/hub/utils/loan.js +36 -0
  124. package/dist/chains/evm/hub/utils/loan.js.map +1 -0
  125. package/dist/chains/evm/spoke/constants/abi/bridge-router-spoke-abi.d.ts +951 -0
  126. package/dist/chains/evm/spoke/constants/abi/bridge-router-spoke-abi.js +754 -0
  127. package/dist/chains/evm/spoke/constants/abi/bridge-router-spoke-abi.js.map +1 -0
  128. package/dist/chains/evm/spoke/constants/abi/spoke-common-abi.d.ts +1101 -0
  129. package/dist/chains/evm/spoke/constants/abi/spoke-common-abi.js +710 -0
  130. package/dist/chains/evm/spoke/constants/abi/spoke-common-abi.js.map +1 -0
  131. package/dist/chains/evm/spoke/constants/abi/spoke-token-abi.d.ts +882 -0
  132. package/dist/chains/evm/spoke/constants/abi/spoke-token-abi.js +643 -0
  133. package/dist/chains/evm/spoke/constants/abi/spoke-token-abi.js.map +1 -0
  134. package/dist/chains/evm/spoke/modules/folks-evm-account.d.ts +18 -0
  135. package/dist/chains/evm/spoke/modules/folks-evm-account.js +119 -0
  136. package/dist/chains/evm/spoke/modules/folks-evm-account.js.map +1 -0
  137. package/dist/chains/evm/spoke/modules/folks-evm-gmp.d.ts +14 -0
  138. package/dist/chains/evm/spoke/modules/folks-evm-gmp.js +57 -0
  139. package/dist/chains/evm/spoke/modules/folks-evm-gmp.js.map +1 -0
  140. package/dist/chains/evm/spoke/modules/folks-evm-loan.d.ts +39 -0
  141. package/dist/chains/evm/spoke/modules/folks-evm-loan.js +396 -0
  142. package/dist/chains/evm/spoke/modules/folks-evm-loan.js.map +1 -0
  143. package/dist/chains/evm/spoke/modules/index.d.ts +3 -0
  144. package/dist/chains/evm/spoke/modules/index.js +4 -0
  145. package/dist/chains/evm/spoke/modules/index.js.map +1 -0
  146. package/dist/chains/evm/spoke/types/pool.d.ts +7 -0
  147. package/dist/chains/evm/spoke/types/pool.js +2 -0
  148. package/dist/chains/evm/spoke/types/pool.js.map +1 -0
  149. package/dist/chains/evm/spoke/utils/contract.d.ts +12 -0
  150. package/dist/chains/evm/spoke/utils/contract.js +28 -0
  151. package/dist/chains/evm/spoke/utils/contract.js.map +1 -0
  152. package/dist/common/constants/adapter.d.ts +4 -0
  153. package/dist/common/constants/adapter.js +5 -0
  154. package/dist/common/constants/adapter.js.map +1 -0
  155. package/dist/common/constants/bytes.d.ts +5 -0
  156. package/dist/common/constants/bytes.js +6 -0
  157. package/dist/common/constants/bytes.js.map +1 -0
  158. package/dist/common/constants/chain.d.ts +15 -0
  159. package/dist/common/constants/chain.js +152 -0
  160. package/dist/common/constants/chain.js.map +1 -0
  161. package/dist/common/constants/gmp.d.ts +4 -0
  162. package/dist/common/constants/gmp.js +32 -0
  163. package/dist/common/constants/gmp.js.map +1 -0
  164. package/dist/common/constants/lending.d.ts +1 -0
  165. package/dist/common/constants/lending.js +3 -0
  166. package/dist/common/constants/lending.js.map +1 -0
  167. package/dist/common/constants/message.d.ts +4 -0
  168. package/dist/common/constants/message.js +5 -0
  169. package/dist/common/constants/message.js.map +1 -0
  170. package/dist/common/constants/pool.d.ts +8 -0
  171. package/dist/common/constants/pool.js +10 -0
  172. package/dist/common/constants/pool.js.map +1 -0
  173. package/dist/common/constants/token.d.ts +2 -0
  174. package/dist/common/constants/token.js +3 -0
  175. package/dist/common/constants/token.js.map +1 -0
  176. package/dist/common/types/adapter.d.ts +30 -0
  177. package/dist/common/types/adapter.js +7 -0
  178. package/dist/common/types/adapter.js.map +1 -0
  179. package/dist/common/types/address.d.ts +9 -0
  180. package/dist/common/types/address.js +2 -0
  181. package/dist/common/types/address.js.map +1 -0
  182. package/dist/common/types/brand.d.ts +6 -0
  183. package/dist/common/types/brand.js +2 -0
  184. package/dist/common/types/brand.js.map +1 -0
  185. package/dist/common/types/chain.d.ts +29 -0
  186. package/dist/common/types/chain.js +10 -0
  187. package/dist/common/types/chain.js.map +1 -0
  188. package/dist/common/types/core.d.ts +28 -0
  189. package/dist/common/types/core.js +2 -0
  190. package/dist/common/types/core.js.map +1 -0
  191. package/dist/common/types/gmp.d.ts +17 -0
  192. package/dist/common/types/gmp.js +6 -0
  193. package/dist/common/types/gmp.js.map +1 -0
  194. package/dist/common/types/lending.d.ts +4 -0
  195. package/dist/common/types/lending.js +2 -0
  196. package/dist/common/types/lending.js.map +1 -0
  197. package/dist/common/types/message.d.ts +239 -0
  198. package/dist/common/types/message.js +33 -0
  199. package/dist/common/types/message.js.map +1 -0
  200. package/dist/common/types/module.d.ts +21 -0
  201. package/dist/common/types/module.js +6 -0
  202. package/dist/common/types/module.js.map +1 -0
  203. package/dist/common/types/token.d.ts +42 -0
  204. package/dist/common/types/token.js +15 -0
  205. package/dist/common/types/token.js.map +1 -0
  206. package/dist/common/utils/adapter.d.ts +11 -0
  207. package/dist/common/utils/adapter.js +63 -0
  208. package/dist/common/utils/adapter.js.map +1 -0
  209. package/dist/common/utils/address.d.ts +8 -0
  210. package/dist/common/utils/address.js +35 -0
  211. package/dist/common/utils/address.js.map +1 -0
  212. package/dist/common/utils/bytes.d.ts +9 -0
  213. package/dist/common/utils/bytes.js +34 -0
  214. package/dist/common/utils/bytes.js.map +1 -0
  215. package/dist/common/utils/chain.d.ts +19 -0
  216. package/dist/common/utils/chain.js +74 -0
  217. package/dist/common/utils/chain.js.map +1 -0
  218. package/dist/common/utils/formulae.d.ts +15 -0
  219. package/dist/common/utils/formulae.js +77 -0
  220. package/dist/common/utils/formulae.js.map +1 -0
  221. package/dist/common/utils/gmp.d.ts +4 -0
  222. package/dist/common/utils/gmp.js +14 -0
  223. package/dist/common/utils/gmp.js.map +1 -0
  224. package/dist/common/utils/math-lib.d.ts +9 -0
  225. package/dist/common/utils/math-lib.js +38 -0
  226. package/dist/common/utils/math-lib.js.map +1 -0
  227. package/dist/common/utils/messages.d.ts +7 -0
  228. package/dist/common/utils/messages.js +93 -0
  229. package/dist/common/utils/messages.js.map +1 -0
  230. package/dist/common/utils/token.d.ts +2 -0
  231. package/dist/common/utils/token.js +5 -0
  232. package/dist/common/utils/token.js.map +1 -0
  233. package/dist/index.d.ts +30 -0
  234. package/dist/index.js +38 -0
  235. package/dist/index.js.map +1 -0
  236. package/dist/utils/exhaustive-check.d.ts +1 -0
  237. package/dist/utils/exhaustive-check.js +4 -0
  238. package/dist/utils/exhaustive-check.js.map +1 -0
  239. package/dist/xchain/core/folks-core.d.ts +24 -0
  240. package/dist/xchain/core/folks-core.js +100 -0
  241. package/dist/xchain/core/folks-core.js.map +1 -0
  242. package/dist/xchain/modules/folks-account.d.ts +30 -0
  243. package/dist/xchain/modules/folks-account.js +205 -0
  244. package/dist/xchain/modules/folks-account.js.map +1 -0
  245. package/dist/xchain/modules/folks-gmp.d.ts +12 -0
  246. package/dist/xchain/modules/folks-gmp.js +53 -0
  247. package/dist/xchain/modules/folks-gmp.js.map +1 -0
  248. package/dist/xchain/modules/folks-loan.d.ts +68 -0
  249. package/dist/xchain/modules/folks-loan.js +598 -0
  250. package/dist/xchain/modules/folks-loan.js.map +1 -0
  251. package/dist/xchain/modules/folks-oracle.d.ts +4 -0
  252. package/dist/xchain/modules/folks-oracle.js +11 -0
  253. package/dist/xchain/modules/folks-oracle.js.map +1 -0
  254. package/dist/xchain/modules/folks-pool.d.ts +5 -0
  255. package/dist/xchain/modules/folks-pool.js +8 -0
  256. package/dist/xchain/modules/folks-pool.js.map +1 -0
  257. package/dist/xchain/modules/index.d.ts +5 -0
  258. package/dist/xchain/modules/index.js +6 -0
  259. package/dist/xchain/modules/index.js.map +1 -0
  260. package/package.json +79 -0
  261. package/src/chains/evm/common/constants/abi/ccip-data-adapter-abi.ts +613 -0
  262. package/src/chains/evm/common/constants/abi/erc-20-abi.ts +156 -0
  263. package/src/chains/evm/common/constants/abi/wormhole-data-adapter-abi.ts +620 -0
  264. package/src/chains/evm/common/constants/chain.ts +56 -0
  265. package/src/chains/evm/common/constants/contract.ts +7 -0
  266. package/src/chains/evm/common/constants/tokens.ts +39 -0
  267. package/src/chains/evm/common/types/chain.ts +23 -0
  268. package/src/chains/evm/common/types/contract.ts +7 -0
  269. package/src/chains/evm/common/types/gmp.ts +15 -0
  270. package/src/chains/evm/common/types/index.ts +3 -0
  271. package/src/chains/evm/common/types/module.ts +85 -0
  272. package/src/chains/evm/common/types/tokens.ts +31 -0
  273. package/src/chains/evm/common/utils/chain.ts +20 -0
  274. package/src/chains/evm/common/utils/contract.ts +84 -0
  275. package/src/chains/evm/common/utils/gmp.ts +24 -0
  276. package/src/chains/evm/common/utils/message.ts +496 -0
  277. package/src/chains/evm/common/utils/provider.ts +32 -0
  278. package/src/chains/evm/common/utils/tokens.ts +52 -0
  279. package/src/chains/evm/hub/constants/abi/account-manager-abi.ts +685 -0
  280. package/src/chains/evm/hub/constants/abi/bridge-router-hub-abi.ts +763 -0
  281. package/src/chains/evm/hub/constants/abi/hub-abi.ts +186 -0
  282. package/src/chains/evm/hub/constants/abi/hub-pool-abi.ts +1345 -0
  283. package/src/chains/evm/hub/constants/abi/loan-manager-abi.ts +1039 -0
  284. package/src/chains/evm/hub/constants/abi/oracle-manager-abi.ts +388 -0
  285. package/src/chains/evm/hub/constants/chain.ts +130 -0
  286. package/src/chains/evm/hub/modules/folks-hub-account.ts +137 -0
  287. package/src/chains/evm/hub/modules/folks-hub-gmp.ts +105 -0
  288. package/src/chains/evm/hub/modules/folks-hub-loan.ts +603 -0
  289. package/src/chains/evm/hub/modules/folks-hub-oracle.ts +38 -0
  290. package/src/chains/evm/hub/modules/folks-hub-pool.ts +171 -0
  291. package/src/chains/evm/hub/modules/index.ts +5 -0
  292. package/src/chains/evm/hub/types/account.ts +27 -0
  293. package/src/chains/evm/hub/types/chain.ts +16 -0
  294. package/src/chains/evm/hub/types/loan.ts +147 -0
  295. package/src/chains/evm/hub/types/oracle.ts +6 -0
  296. package/src/chains/evm/hub/types/pool.ts +66 -0
  297. package/src/chains/evm/hub/types/token.ts +10 -0
  298. package/src/chains/evm/hub/utils/chain.ts +41 -0
  299. package/src/chains/evm/hub/utils/contract.ts +98 -0
  300. package/src/chains/evm/hub/utils/events.ts +112 -0
  301. package/src/chains/evm/hub/utils/loan.ts +60 -0
  302. package/src/chains/evm/spoke/constants/abi/bridge-router-spoke-abi.ts +753 -0
  303. package/src/chains/evm/spoke/constants/abi/spoke-common-abi.ts +709 -0
  304. package/src/chains/evm/spoke/constants/abi/spoke-token-abi.ts +642 -0
  305. package/src/chains/evm/spoke/modules/folks-evm-account.ts +228 -0
  306. package/src/chains/evm/spoke/modules/folks-evm-gmp.ts +105 -0
  307. package/src/chains/evm/spoke/modules/folks-evm-loan.ts +721 -0
  308. package/src/chains/evm/spoke/modules/index.ts +3 -0
  309. package/src/chains/evm/spoke/types/pool.ts +7 -0
  310. package/src/chains/evm/spoke/utils/contract.ts +74 -0
  311. package/src/common/constants/adapter.ts +5 -0
  312. package/src/common/constants/bytes.ts +6 -0
  313. package/src/common/constants/chain.ts +227 -0
  314. package/src/common/constants/gmp.ts +38 -0
  315. package/src/common/constants/lending.ts +3 -0
  316. package/src/common/constants/message.ts +4 -0
  317. package/src/common/constants/pool.ts +11 -0
  318. package/src/common/constants/token.ts +3 -0
  319. package/src/common/types/adapter.ts +38 -0
  320. package/src/common/types/address.ts +11 -0
  321. package/src/common/types/brand.ts +3 -0
  322. package/src/common/types/chain.ts +35 -0
  323. package/src/common/types/core.ts +31 -0
  324. package/src/common/types/gmp.ts +22 -0
  325. package/src/common/types/lending.ts +5 -0
  326. package/src/common/types/message.ts +330 -0
  327. package/src/common/types/module.ts +42 -0
  328. package/src/common/types/token.ts +50 -0
  329. package/src/common/utils/adapter.ts +75 -0
  330. package/src/common/utils/address.ts +49 -0
  331. package/src/common/utils/bytes.ts +46 -0
  332. package/src/common/utils/chain.ts +103 -0
  333. package/src/common/utils/formulae.ts +124 -0
  334. package/src/common/utils/gmp.ts +16 -0
  335. package/src/common/utils/math-lib.ts +46 -0
  336. package/src/common/utils/messages.ts +192 -0
  337. package/src/common/utils/token.ts +7 -0
  338. package/src/index.ts +47 -0
  339. package/src/utils/exhaustive-check.ts +3 -0
  340. package/src/xchain/core/folks-core.ts +128 -0
  341. package/src/xchain/modules/folks-account.ts +385 -0
  342. package/src/xchain/modules/folks-gmp.ts +129 -0
  343. package/src/xchain/modules/folks-loan.ts +1175 -0
  344. package/src/xchain/modules/folks-oracle.ts +15 -0
  345. package/src/xchain/modules/folks-pool.ts +11 -0
  346. package/src/xchain/modules/index.ts +5 -0
@@ -0,0 +1,239 @@
1
+ import type { GenericAddress } from "./address.js";
2
+ import type { FolksChainId } from "./chain.js";
3
+ import type { AccountId, LoanId, LoanName } from "./lending.js";
4
+ import type { LoanTypeId } from "./module.js";
5
+ import type { FolksTokenId, FolksSpokeTokenType } from "./token.js";
6
+ import type { FINALITY } from "../constants/message.js";
7
+ import type { Hex } from "viem";
8
+ export declare enum AdapterType {
9
+ HUB = 1,
10
+ WORMHOLE_DATA = 2,
11
+ WORMHOLE_CCTP = 3,
12
+ CCIP_DATA = 4,
13
+ CCIP_TOKEN = 5
14
+ }
15
+ export declare enum Action {
16
+ CreateAccount = 0,
17
+ InviteAddress = 1,
18
+ AcceptInviteAddress = 2,
19
+ UnregisterAddress = 3,
20
+ AddDelegate = 4,
21
+ RemoveDelegate = 5,
22
+ CreateLoan = 6,
23
+ DeleteLoan = 7,
24
+ CreateLoanAndDeposit = 8,
25
+ Deposit = 9,
26
+ DepositFToken = 10,
27
+ Withdraw = 11,
28
+ WithdrawFToken = 12,
29
+ Borrow = 13,
30
+ Repay = 14,
31
+ RepayWithCollateral = 15,
32
+ Liquidate = 16,
33
+ SwitchBorrowType = 17,
34
+ SendToken = 18
35
+ }
36
+ export type SendTokenAction = Extract<Action, Action.Deposit | Action.Repay>;
37
+ export type ReceiveTokenAction = Extract<Action, Action.Withdraw | Action.Borrow>;
38
+ export type HubAction = Extract<Action, Action.DepositFToken | Action.WithdrawFToken | Action.Liquidate | Action.SendToken>;
39
+ export type DataAction = Extract<Action, Action.CreateAccount | Action.InviteAddress | Action.AcceptInviteAddress | Action.UnregisterAddress | Action.AddDelegate | Action.RemoveDelegate | Action.CreateLoan | Action.DeleteLoan | Action.RepayWithCollateral | Action.SwitchBorrowType>;
40
+ export type Finality = (typeof FINALITY)[keyof typeof FINALITY];
41
+ export type MessageAdapters = {
42
+ adapterId: AdapterType;
43
+ returnAdapterId: AdapterType;
44
+ };
45
+ export type SupportedMessageAdapters = {
46
+ adapterId: Array<AdapterType>;
47
+ returnAdapterId: Array<AdapterType>;
48
+ };
49
+ export type FeeParams = {
50
+ receiverValue: bigint;
51
+ gasLimit: bigint;
52
+ returnGasLimit: bigint;
53
+ };
54
+ export type MessageParams = FeeParams & MessageAdapters;
55
+ export type OptionalFeeParams = Partial<FeeParams>;
56
+ export type MessageToSend = {
57
+ params: MessageParams;
58
+ sender: GenericAddress;
59
+ destinationChainId: number;
60
+ handler: GenericAddress;
61
+ payload: Hex;
62
+ finalityLevel: Finality;
63
+ extraArgs: Hex;
64
+ };
65
+ export type DefaultMessageData = "0x";
66
+ export type CreateAccountMessageData = {
67
+ refAccountId: AccountId;
68
+ };
69
+ export type InviteAddressMessageData = {
70
+ folksChainIdToInvite: FolksChainId;
71
+ addressToInvite: GenericAddress;
72
+ refAccountId: AccountId;
73
+ };
74
+ export type UnregisterAddressMessageData = {
75
+ folksChainIdToUnregister: FolksChainId;
76
+ };
77
+ export type CreateLoanMessageData = {
78
+ loanId: LoanId;
79
+ loanTypeId: LoanTypeId;
80
+ loanName: LoanName;
81
+ };
82
+ export type DeleteLoanMessageData = {
83
+ accountId: AccountId;
84
+ loanId: LoanId;
85
+ };
86
+ export type CreateLoanAndDepositMessageData = {
87
+ loanId: LoanId;
88
+ poolId: number;
89
+ amount: bigint;
90
+ loanTypeId: LoanTypeId;
91
+ loanName: LoanName;
92
+ };
93
+ export type DepositMessageData = {
94
+ loanId: LoanId;
95
+ poolId: number;
96
+ amount: bigint;
97
+ };
98
+ export type WithdrawMessageData = {
99
+ loanId: LoanId;
100
+ poolId: number;
101
+ receiverFolksChainId: FolksChainId;
102
+ amount: bigint;
103
+ isFAmount: boolean;
104
+ };
105
+ export type BorrowMessageData = {
106
+ loanId: LoanId;
107
+ poolId: number;
108
+ receiverFolksChainId: FolksChainId;
109
+ amount: bigint;
110
+ maxStableRate: bigint;
111
+ };
112
+ export type RepayMessageData = {
113
+ loanId: LoanId;
114
+ poolId: number;
115
+ amount: bigint;
116
+ maxOverRepayment: bigint;
117
+ };
118
+ export type RepayWithCollateralMessageData = {
119
+ loanId: LoanId;
120
+ poolId: number;
121
+ amount: bigint;
122
+ };
123
+ export type SwitchBorrowTypeMessageData = {
124
+ loanId: LoanId;
125
+ poolId: number;
126
+ maxStableRate: bigint;
127
+ };
128
+ export type LiquidateMessageData = {
129
+ violatorLoanId: LoanId;
130
+ liquidatorLoanId: LoanId;
131
+ colPoolId: number;
132
+ borPoolId: number;
133
+ repayingAmount: bigint;
134
+ minSeizedAmount: bigint;
135
+ };
136
+ export type SendTokenMessageData = {
137
+ folksTokenId: FolksTokenId;
138
+ amount: bigint;
139
+ };
140
+ export type DefaultExtraArgs = "0x";
141
+ export type DepositExtraArgs = {
142
+ token: FolksSpokeTokenType;
143
+ recipient: GenericAddress;
144
+ amount: bigint;
145
+ };
146
+ export type RepayExtraArgs = {
147
+ token: FolksSpokeTokenType;
148
+ recipient: GenericAddress;
149
+ amount: bigint;
150
+ };
151
+ export type SendTokenExtraArgs = {
152
+ token: FolksSpokeTokenType;
153
+ recipient: GenericAddress;
154
+ amount: bigint;
155
+ };
156
+ export type DefaultMessageDataParams = {
157
+ action: Action.AcceptInviteAddress | Action.AddDelegate | Action.RemoveDelegate | Action.DepositFToken | Action.WithdrawFToken;
158
+ data: DefaultMessageData;
159
+ extraArgs: DefaultExtraArgs;
160
+ };
161
+ export type CreateAccountMessageDataParams = {
162
+ action: Action.CreateAccount;
163
+ data: CreateAccountMessageData;
164
+ extraArgs: DefaultExtraArgs;
165
+ };
166
+ export type InviteAddressMessageDataParams = {
167
+ action: Action.InviteAddress;
168
+ data: InviteAddressMessageData;
169
+ extraArgs: DefaultExtraArgs;
170
+ };
171
+ export type UnregisterAddressMessageDataParams = {
172
+ action: Action.UnregisterAddress;
173
+ data: UnregisterAddressMessageData;
174
+ extraArgs: DefaultExtraArgs;
175
+ };
176
+ export type CreateLoanMessageDataParams = {
177
+ action: Action.CreateLoan;
178
+ data: CreateLoanMessageData;
179
+ extraArgs: DefaultExtraArgs;
180
+ };
181
+ export type DeleteLoanMessageDataParams = {
182
+ action: Action.DeleteLoan;
183
+ data: DeleteLoanMessageData;
184
+ extraArgs: DefaultExtraArgs;
185
+ };
186
+ export type CreateLoanAndDepositMessageDataParams = {
187
+ action: Action.CreateLoanAndDeposit;
188
+ data: CreateLoanAndDepositMessageData;
189
+ extraArgs: DepositExtraArgs;
190
+ };
191
+ export type DepositMessageDataParams = {
192
+ action: Action.Deposit;
193
+ data: DepositMessageData;
194
+ extraArgs: DepositExtraArgs;
195
+ };
196
+ export type WithdrawMessageDataParams = {
197
+ action: Action.Withdraw;
198
+ data: WithdrawMessageData;
199
+ extraArgs: DefaultExtraArgs;
200
+ };
201
+ export type BorrowMessageDataParams = {
202
+ action: Action.Borrow;
203
+ data: BorrowMessageData;
204
+ extraArgs: DefaultExtraArgs;
205
+ };
206
+ export type RepayMessageDataParams = {
207
+ action: Action.Repay;
208
+ data: RepayMessageData;
209
+ extraArgs: RepayExtraArgs;
210
+ };
211
+ export type RepayWithCollateralMessageDataParams = {
212
+ action: Action.RepayWithCollateral;
213
+ data: RepayWithCollateralMessageData;
214
+ extraArgs: DefaultExtraArgs;
215
+ };
216
+ export type SwitchBorrowTypeMessageDataParams = {
217
+ action: Action.SwitchBorrowType;
218
+ data: SwitchBorrowTypeMessageData;
219
+ extraArgs: DefaultExtraArgs;
220
+ };
221
+ export type LiquidateMessageDataParams = {
222
+ action: Action.Liquidate;
223
+ data: LiquidateMessageData;
224
+ extraArgs: DefaultExtraArgs;
225
+ };
226
+ export type SendTokenMessageDataParams = {
227
+ action: Action.SendToken;
228
+ data: SendTokenMessageData;
229
+ extraArgs: SendTokenExtraArgs;
230
+ };
231
+ export type MessageDataParams = DefaultMessageDataParams | CreateAccountMessageDataParams | InviteAddressMessageDataParams | UnregisterAddressMessageDataParams | CreateLoanMessageDataParams | DeleteLoanMessageDataParams | CreateLoanAndDepositMessageDataParams | DepositMessageDataParams | WithdrawMessageDataParams | BorrowMessageDataParams | RepayMessageDataParams | RepayWithCollateralMessageDataParams | SwitchBorrowTypeMessageDataParams | LiquidateMessageDataParams | SendTokenMessageDataParams;
232
+ export type MessageBuilderParams = {
233
+ userAddress: GenericAddress;
234
+ accountId: AccountId;
235
+ adapters: MessageAdapters;
236
+ sender: GenericAddress;
237
+ destinationChainId: FolksChainId;
238
+ handler: GenericAddress;
239
+ } & MessageDataParams;
@@ -0,0 +1,33 @@
1
+ export var AdapterType;
2
+ (function (AdapterType) {
3
+ AdapterType[AdapterType["HUB"] = 1] = "HUB";
4
+ AdapterType[AdapterType["WORMHOLE_DATA"] = 2] = "WORMHOLE_DATA";
5
+ AdapterType[AdapterType["WORMHOLE_CCTP"] = 3] = "WORMHOLE_CCTP";
6
+ AdapterType[AdapterType["CCIP_DATA"] = 4] = "CCIP_DATA";
7
+ AdapterType[AdapterType["CCIP_TOKEN"] = 5] = "CCIP_TOKEN";
8
+ })(AdapterType || (AdapterType = {}));
9
+ export var Action;
10
+ (function (Action) {
11
+ // SPOKE -> HUB
12
+ Action[Action["CreateAccount"] = 0] = "CreateAccount";
13
+ Action[Action["InviteAddress"] = 1] = "InviteAddress";
14
+ Action[Action["AcceptInviteAddress"] = 2] = "AcceptInviteAddress";
15
+ Action[Action["UnregisterAddress"] = 3] = "UnregisterAddress";
16
+ Action[Action["AddDelegate"] = 4] = "AddDelegate";
17
+ Action[Action["RemoveDelegate"] = 5] = "RemoveDelegate";
18
+ Action[Action["CreateLoan"] = 6] = "CreateLoan";
19
+ Action[Action["DeleteLoan"] = 7] = "DeleteLoan";
20
+ Action[Action["CreateLoanAndDeposit"] = 8] = "CreateLoanAndDeposit";
21
+ Action[Action["Deposit"] = 9] = "Deposit";
22
+ Action[Action["DepositFToken"] = 10] = "DepositFToken";
23
+ Action[Action["Withdraw"] = 11] = "Withdraw";
24
+ Action[Action["WithdrawFToken"] = 12] = "WithdrawFToken";
25
+ Action[Action["Borrow"] = 13] = "Borrow";
26
+ Action[Action["Repay"] = 14] = "Repay";
27
+ Action[Action["RepayWithCollateral"] = 15] = "RepayWithCollateral";
28
+ Action[Action["Liquidate"] = 16] = "Liquidate";
29
+ Action[Action["SwitchBorrowType"] = 17] = "SwitchBorrowType";
30
+ // HUB -> SPOKE
31
+ Action[Action["SendToken"] = 18] = "SendToken";
32
+ })(Action || (Action = {}));
33
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/common/types/message.ts"],"names":[],"mappings":"AAQA,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,2CAAO,CAAA;IACP,+DAAiB,CAAA;IACjB,+DAAiB,CAAA;IACjB,uDAAa,CAAA;IACb,yDAAc,CAAA;AAChB,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AAED,MAAM,CAAN,IAAY,MAsBX;AAtBD,WAAY,MAAM;IAChB,eAAe;IACf,qDAAa,CAAA;IACb,qDAAa,CAAA;IACb,iEAAmB,CAAA;IACnB,6DAAiB,CAAA;IACjB,iDAAW,CAAA;IACX,uDAAc,CAAA;IACd,+CAAU,CAAA;IACV,+CAAU,CAAA;IACV,mEAAoB,CAAA;IACpB,yCAAO,CAAA;IACP,sDAAa,CAAA;IACb,4CAAQ,CAAA;IACR,wDAAc,CAAA;IACd,wCAAM,CAAA;IACN,sCAAK,CAAA;IACL,kEAAmB,CAAA;IACnB,8CAAS,CAAA;IACT,4DAAgB,CAAA;IAChB,eAAe;IACf,8CAAS,CAAA;AACX,CAAC,EAtBW,MAAM,KAAN,MAAM,QAsBjB"}
@@ -0,0 +1,21 @@
1
+ import type { PrepareCreateAccountCall as PrepareCreateAccountEVMCall, PrepareInviteAddressCall as PrepareInviteAddressEVMCall, PrepareAcceptInviteAddressCall as PrepareAcceptInviteAddressEVMCall, PrepareUnregisterAddressCall as PrepareUnregisterAddressEVMCall, PrepareCreateLoanCall as PrepareCreateLoanEVMCall, PrepareDeleteLoanCall as PrepareDeleteLoanEVMCall, PrepareCreateLoanAndDepositCall as PrepareCreateLoanAndDepositEVMCall, PrepareDepositCall as PrepareDepositEVMCall, PrepareWithdrawCall as PrepareWithdrawEVMCall, PrepareCall as PrepareEVMCall, PrepareBorrowCall as PrepareBorrowEVMCall, PrepareRepayCall as PrepareRepayEVMCall, PrepareRepayWithCollateralCall as PrepareRepayWithCollateralEVMCall, PrepareSwitchBorrowTypeCall as PrepareSwitchBorrowTypeEVMCall, PrepareLiquidateCall as PrepareLiquidateEVMCall, PrepareRetryMessageCall as PrepareRetryMessageEVMCall } from "../../chains/evm/common/types/module.js";
2
+ export declare enum LoanTypeId {
3
+ DEPOSIT = 1,// no support for borrows
4
+ GENERAL = 2
5
+ }
6
+ export type PrepareCall = PrepareEVMCall;
7
+ export type PrepareCreateAccountCall = PrepareCreateAccountEVMCall;
8
+ export type PrepareInviteAddressCall = PrepareInviteAddressEVMCall;
9
+ export type PrepareAcceptInviteAddressCall = PrepareAcceptInviteAddressEVMCall;
10
+ export type PrepareUnregisterAddressCall = PrepareUnregisterAddressEVMCall;
11
+ export type PrepareCreateLoanCall = PrepareCreateLoanEVMCall;
12
+ export type PrepareDeleteLoanCall = PrepareDeleteLoanEVMCall;
13
+ export type PrepareCreateLoanAndDepositCall = PrepareCreateLoanAndDepositEVMCall;
14
+ export type PrepareDepositCall = PrepareDepositEVMCall;
15
+ export type PrepareWithdrawCall = PrepareWithdrawEVMCall;
16
+ export type PrepareBorrowCall = PrepareBorrowEVMCall;
17
+ export type PrepareRepayCall = PrepareRepayEVMCall;
18
+ export type PrepareRepayWithCollateralCall = PrepareRepayWithCollateralEVMCall;
19
+ export type PrepareSwitchBorrowTypeCall = PrepareSwitchBorrowTypeEVMCall;
20
+ export type PrepareLiquidateCall = PrepareLiquidateEVMCall;
21
+ export type PrepareRetryMessageCall = PrepareRetryMessageEVMCall;
@@ -0,0 +1,6 @@
1
+ export var LoanTypeId;
2
+ (function (LoanTypeId) {
3
+ LoanTypeId[LoanTypeId["DEPOSIT"] = 1] = "DEPOSIT";
4
+ LoanTypeId[LoanTypeId["GENERAL"] = 2] = "GENERAL";
5
+ })(LoanTypeId || (LoanTypeId = {}));
6
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../src/common/types/module.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,iDAAW,CAAA;IACX,iDAAW,CAAA;AACb,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB"}
@@ -0,0 +1,42 @@
1
+ import type { GenericAddress } from "./address.js";
2
+ export declare enum FolksTokenId {
3
+ USDC = "USDC",
4
+ AVAX = "AVAX",
5
+ ETH_eth_sep = "ETH_eth_sep",
6
+ ETH_base_sep = "ETH_base_sep",
7
+ LINK_eth_sep = "LINK_eth_sep"
8
+ }
9
+ export declare enum TokenType {
10
+ NATIVE = "NATIVE",
11
+ ERC20 = "ERC20",
12
+ CIRCLE = "CIRCLE"
13
+ }
14
+ export type ITokenData = {
15
+ folksTokenId: FolksTokenId;
16
+ };
17
+ type Erc20SpokeTokenType = {
18
+ type: TokenType.ERC20;
19
+ address: GenericAddress;
20
+ decimals: number;
21
+ };
22
+ type Erc20HubTokenType = {
23
+ type: TokenType.ERC20;
24
+ decimals: number;
25
+ };
26
+ type CircleTokenType = {
27
+ type: TokenType.CIRCLE;
28
+ address: GenericAddress;
29
+ decimals: number;
30
+ };
31
+ type NativeTokenType = {
32
+ type: TokenType.NATIVE;
33
+ decimals: number;
34
+ };
35
+ export type FolksSpokeTokenType = Erc20SpokeTokenType | CircleTokenType | NativeTokenType;
36
+ export type FolksHubTokenType = Erc20HubTokenType | CircleTokenType | NativeTokenType;
37
+ export type SpokeTokenData = {
38
+ poolId: number;
39
+ spokeAddress: GenericAddress;
40
+ token: FolksSpokeTokenType;
41
+ } & ITokenData;
42
+ export {};
@@ -0,0 +1,15 @@
1
+ export var FolksTokenId;
2
+ (function (FolksTokenId) {
3
+ FolksTokenId["USDC"] = "USDC";
4
+ FolksTokenId["AVAX"] = "AVAX";
5
+ FolksTokenId["ETH_eth_sep"] = "ETH_eth_sep";
6
+ FolksTokenId["ETH_base_sep"] = "ETH_base_sep";
7
+ FolksTokenId["LINK_eth_sep"] = "LINK_eth_sep";
8
+ })(FolksTokenId || (FolksTokenId = {}));
9
+ export var TokenType;
10
+ (function (TokenType) {
11
+ TokenType["NATIVE"] = "NATIVE";
12
+ TokenType["ERC20"] = "ERC20";
13
+ TokenType["CIRCLE"] = "CIRCLE";
14
+ })(TokenType || (TokenType = {}));
15
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/common/types/token.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,2CAA2B,CAAA;IAC3B,6CAA6B,CAAA;IAC7B,6CAA6B,CAAA;AAC/B,CAAC,EANW,YAAY,KAAZ,YAAY,QAMvB;AAED,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,8BAAiB,CAAA;IACjB,4BAAe,CAAA;IACf,8BAAiB,CAAA;AACnB,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB"}
@@ -0,0 +1,11 @@
1
+ import { AdapterType } from "../types/message.js";
2
+ import type { MessageAdapterParams } from "../types/adapter.js";
3
+ import type { FolksChainId } from "../types/chain.js";
4
+ export declare function doesAdapterSupportDataMessage(folksChainId: FolksChainId, adapterId: AdapterType): boolean;
5
+ export declare function assertAdapterSupportsDataMessage(folksChainId: FolksChainId, adapterId: AdapterType): void;
6
+ export declare function doesAdapterSupportTokenMessage(folksChainId: FolksChainId, adapterId: AdapterType): boolean;
7
+ export declare function assertAdapterSupportsTokenMessage(folksChainId: FolksChainId, adapterId: AdapterType): void;
8
+ export declare function getSupportedMessageAdapters(params: MessageAdapterParams): {
9
+ adapterIds: AdapterType[];
10
+ returnAdapterIds: AdapterType[];
11
+ };
@@ -0,0 +1,63 @@
1
+ import { isHubChain } from "../../chains/evm/hub/utils/chain.js";
2
+ import { exhaustiveCheck } from "../../utils/exhaustive-check.js";
3
+ import { FolksCore } from "../../xchain/core/folks-core.js";
4
+ import { DATA_ADAPTERS, HUB_ADAPTERS, TOKEN_ADAPTERS } from "../constants/adapter.js";
5
+ import { MessageAdapterParamsType } from "../types/adapter.js";
6
+ import { AdapterType } from "../types/message.js";
7
+ import { isCircleToken } from "./token.js";
8
+ export function doesAdapterSupportDataMessage(folksChainId, adapterId) {
9
+ const isHub = isHubChain(folksChainId, FolksCore.getSelectedNetwork());
10
+ return ((isHub && adapterId === AdapterType.HUB) ||
11
+ (!isHub && (adapterId === AdapterType.WORMHOLE_DATA || adapterId === AdapterType.CCIP_DATA)));
12
+ }
13
+ export function assertAdapterSupportsDataMessage(folksChainId, adapterId) {
14
+ if (!doesAdapterSupportDataMessage(folksChainId, adapterId))
15
+ throw Error(`Adapter ${adapterId} does not support data message for folksChainId: ${folksChainId}`);
16
+ }
17
+ export function doesAdapterSupportTokenMessage(folksChainId, adapterId) {
18
+ const isHub = isHubChain(folksChainId, FolksCore.getSelectedNetwork());
19
+ return ((isHub && adapterId === AdapterType.HUB) ||
20
+ (!isHub && (adapterId === AdapterType.WORMHOLE_CCTP || adapterId === AdapterType.CCIP_TOKEN)));
21
+ }
22
+ export function assertAdapterSupportsTokenMessage(folksChainId, adapterId) {
23
+ if (!doesAdapterSupportTokenMessage(folksChainId, adapterId))
24
+ throw Error(`Adapter ${adapterId} does not support token message for folksChainId: ${folksChainId}`);
25
+ }
26
+ function getAdapterIds(messageAdapterParams) {
27
+ const { sourceFolksChainId, network, messageAdapterParamType } = messageAdapterParams;
28
+ if (isHubChain(sourceFolksChainId, network))
29
+ return HUB_ADAPTERS;
30
+ if (messageAdapterParamType == MessageAdapterParamsType.SendToken && isCircleToken(messageAdapterParams.folksTokenId))
31
+ return TOKEN_ADAPTERS;
32
+ return DATA_ADAPTERS;
33
+ }
34
+ function getReturnAdapterIds({ folksTokenId, destFolksChainId, network }) {
35
+ if (isHubChain(destFolksChainId, network))
36
+ return HUB_ADAPTERS;
37
+ if (isCircleToken(folksTokenId))
38
+ return TOKEN_ADAPTERS;
39
+ return DATA_ADAPTERS;
40
+ }
41
+ export function getSupportedMessageAdapters(params) {
42
+ const { messageAdapterParamType } = params;
43
+ switch (messageAdapterParamType) {
44
+ case MessageAdapterParamsType.SendToken:
45
+ return {
46
+ adapterIds: getAdapterIds(params),
47
+ returnAdapterIds: [AdapterType.HUB],
48
+ };
49
+ case MessageAdapterParamsType.ReceiveToken:
50
+ return {
51
+ adapterIds: getAdapterIds(params),
52
+ returnAdapterIds: getReturnAdapterIds(params),
53
+ };
54
+ case MessageAdapterParamsType.Data:
55
+ return {
56
+ adapterIds: getAdapterIds(params),
57
+ returnAdapterIds: [AdapterType.HUB],
58
+ };
59
+ default:
60
+ return exhaustiveCheck(messageAdapterParamType);
61
+ }
62
+ }
63
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/common/utils/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ChainType } from "../types/chain.js";
2
+ import type { AddressType, GenericAddress } from "../types/address.js";
3
+ import type { AccountId } from "../types/lending.js";
4
+ export declare function getRandomGenericAddress(): GenericAddress;
5
+ export declare function isGenericAddress(address: GenericAddress): boolean;
6
+ export declare function isAccountId(accountId: AccountId): boolean;
7
+ export declare function convertToGenericAddress<T extends ChainType>(address: AddressType<T>, fromChainType: ChainType): GenericAddress;
8
+ export declare function convertFromGenericAddress<T extends ChainType>(address: GenericAddress, toChainType: ChainType): AddressType<T>;
@@ -0,0 +1,35 @@
1
+ import { getAddress, pad, sliceHex } from "viem";
2
+ import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
3
+ import { exhaustiveCheck } from "../../utils/exhaustive-check.js";
4
+ import { BYTES32_LENGTH, EVM_ADDRESS_BYTES_LENGTH } from "../constants/bytes.js";
5
+ import { ChainType } from "../types/chain.js";
6
+ export function getRandomGenericAddress() {
7
+ return pad(privateKeyToAccount(generatePrivateKey()).address, {
8
+ size: BYTES32_LENGTH,
9
+ }).toLowerCase();
10
+ }
11
+ export function isGenericAddress(address) {
12
+ return address.length === 64 + 2;
13
+ }
14
+ export function isAccountId(accountId) {
15
+ return accountId.length === 64 + 2;
16
+ }
17
+ export function convertToGenericAddress(address, fromChainType) {
18
+ switch (fromChainType) {
19
+ case ChainType.EVM:
20
+ return pad(address, {
21
+ size: BYTES32_LENGTH,
22
+ }).toLowerCase();
23
+ default:
24
+ return exhaustiveCheck(fromChainType);
25
+ }
26
+ }
27
+ export function convertFromGenericAddress(address, toChainType) {
28
+ switch (toChainType) {
29
+ case ChainType.EVM:
30
+ return getAddress(sliceHex(address, BYTES32_LENGTH - EVM_ADDRESS_BYTES_LENGTH));
31
+ default:
32
+ return exhaustiveCheck(toChainType);
33
+ }
34
+ }
35
+ //# sourceMappingURL=address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/common/utils/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAExE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAK9C,MAAM,UAAU,uBAAuB;IACrC,OAAO,GAAG,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE;QAC5D,IAAI,EAAE,cAAc;KACrB,CAAC,CAAC,WAAW,EAAoB,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAuB;IACtD,OAAO,OAAO,CAAC,MAAM,KAAK,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,SAAoB;IAC9C,OAAO,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,OAAuB,EACvB,aAAwB;IAExB,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,SAAS,CAAC,GAAG;YAChB,OAAO,GAAG,CAAC,OAAqB,EAAE;gBAChC,IAAI,EAAE,cAAc;aACrB,CAAC,CAAC,WAAW,EAAoB,CAAC;QACrC;YACE,OAAO,eAAe,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,OAAuB,EACvB,WAAsB;IAEtB,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,SAAS,CAAC,GAAG;YAChB,OAAO,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,wBAAwB,CAAC,CAAe,CAAC;QAChG;YACE,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { AccountId, LoanId } from "../types/lending.js";
2
+ import type { Hex } from "viem";
3
+ export declare function getEmptyBytes(length: number): string;
4
+ export declare function getAccountIdBytes(accountId: string): AccountId;
5
+ export declare function convertNumberToBytes(num: number | bigint, length: number): Hex;
6
+ export declare function convertStringToBytes(str: string): Hex;
7
+ export declare function convertBooleanToByte(bool: boolean): Hex;
8
+ export declare function getRandomBytes(length: number): Hex;
9
+ export declare function generateLoanId(): LoanId;
@@ -0,0 +1,34 @@
1
+ import { bytesToHex, pad, toHex } from "viem";
2
+ import { BYTES32_LENGTH } from "../constants/bytes.js";
3
+ export function getEmptyBytes(length) {
4
+ return pad("0x", { size: length });
5
+ }
6
+ export function getAccountIdBytes(accountId) {
7
+ return pad(toHex(Buffer.from(accountId)), {
8
+ size: BYTES32_LENGTH,
9
+ });
10
+ }
11
+ export function convertNumberToBytes(num, length) {
12
+ // insert 0s at the beginning if data is smaller than length bytes
13
+ const buf = Buffer.alloc(length, 0);
14
+ // convert num to bytes
15
+ const hex = num.toString(16);
16
+ const isEven = hex.length % 2 === 0;
17
+ const bytes = Buffer.from(isEven ? hex : "0" + hex, "hex");
18
+ // write bytes to fixed length buf
19
+ bytes.copy(buf, buf.length - bytes.length);
20
+ return toHex(buf);
21
+ }
22
+ export function convertStringToBytes(str) {
23
+ return toHex("0x" + Buffer.from(str).toString("hex"));
24
+ }
25
+ export function convertBooleanToByte(bool) {
26
+ return bool ? "0x01" : "0x00";
27
+ }
28
+ export function getRandomBytes(length) {
29
+ return bytesToHex(crypto.getRandomValues(new Uint8Array(length)));
30
+ }
31
+ export function generateLoanId() {
32
+ return getRandomBytes(BYTES32_LENGTH);
33
+ }
34
+ //# sourceMappingURL=bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../../src/common/utils/bytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;QACxC,IAAI,EAAE,cAAc;KACrB,CAAc,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAoB,EAAE,MAAc;IACvE,kEAAkE;IAClE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAEpC,uBAAuB;IACvB,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;IAE3D,kCAAkC;IAClC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAa;IAChD,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,cAAc,CAAC,cAAc,CAAW,CAAC;AAClD,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { GenericAddress } from "../types/address.js";
2
+ import type { FolksChain, FolksChainId, NetworkType, SpokeChain } from "../types/chain.js";
3
+ import type { FolksChainSigner } from "../types/core.js";
4
+ import type { AdapterType } from "../types/message.js";
5
+ import type { FolksTokenId, SpokeTokenData } from "../types/token.js";
6
+ export declare function getFolksChain(folksChainId: FolksChainId, network: NetworkType): FolksChain;
7
+ export declare function getFolksChainsByNetwork(network: NetworkType): Array<FolksChain>;
8
+ export declare function getFolksChainIdsByNetwork(networkType: NetworkType): Array<FolksChainId>;
9
+ export declare function isSpokeChainSupported(folksChainId: FolksChainId, network: NetworkType): boolean;
10
+ export declare function assertSpokeChainSupported(folksChainId: FolksChainId, network: NetworkType): void;
11
+ export declare function getSpokeChain(folksChainId: FolksChainId, network: NetworkType): SpokeChain;
12
+ export declare function doesSpokeSupportFolksToken(spokeChain: SpokeChain, folksTokenId: FolksTokenId): boolean;
13
+ export declare function getSpokeTokenData(spokeChain: SpokeChain, folksTokenId: FolksTokenId): SpokeTokenData;
14
+ export declare function isFolksTokenSupported(folksTokenId: FolksTokenId, folksChainId: FolksChainId, network: NetworkType): boolean;
15
+ export declare function assertSpokeChainSupportFolksToken(folksChainId: FolksChainId, folksTokenId: FolksTokenId, network: NetworkType): void;
16
+ export declare function getSpokeChainAdapterAddress(folksChainId: FolksChainId, network: NetworkType, adapterType: AdapterType): GenericAddress;
17
+ export declare function getAdapterAddress(folksChainId: FolksChainId, network: NetworkType, adapterType: AdapterType): GenericAddress;
18
+ export declare function getSignerGenericAddress(folksChainSigner: FolksChainSigner): GenericAddress;
19
+ export declare function assertHubChainSelected(folksChainId: FolksChainId, network: NetworkType): void;
@@ -0,0 +1,74 @@
1
+ import { getEvmSignerAddress } from "../../chains/evm/common/utils/chain.js";
2
+ import { getHubChainAdapterAddress, isHubChain } from "../../chains/evm/hub/utils/chain.js";
3
+ import { exhaustiveCheck } from "../../utils/exhaustive-check.js";
4
+ import { FOLKS_CHAIN, SPOKE_CHAIN } from "../constants/chain.js";
5
+ import { ChainType } from "../types/chain.js";
6
+ import { convertToGenericAddress } from "./address.js";
7
+ export function getFolksChain(folksChainId, network) {
8
+ const folksChain = FOLKS_CHAIN[network][folksChainId];
9
+ if (!folksChain)
10
+ throw new Error(`Folks Chain not found for folksChainId: ${folksChainId}`);
11
+ return folksChain;
12
+ }
13
+ export function getFolksChainsByNetwork(network) {
14
+ return Object.values(FOLKS_CHAIN[network]);
15
+ }
16
+ export function getFolksChainIdsByNetwork(networkType) {
17
+ return getFolksChainsByNetwork(networkType).map((folksChain) => folksChain.folksChainId);
18
+ }
19
+ export function isSpokeChainSupported(folksChainId, network) {
20
+ return SPOKE_CHAIN[network][folksChainId] !== undefined;
21
+ }
22
+ export function assertSpokeChainSupported(folksChainId, network) {
23
+ if (!isSpokeChainSupported(folksChainId, network))
24
+ throw new Error(`Spoke chain is not supported for folksChainId: ${folksChainId}`);
25
+ }
26
+ export function getSpokeChain(folksChainId, network) {
27
+ const spokeChain = SPOKE_CHAIN[network][folksChainId];
28
+ if (!spokeChain)
29
+ throw new Error(`Spoke chain not found for folksChainId: ${folksChainId}`);
30
+ return spokeChain;
31
+ }
32
+ export function doesSpokeSupportFolksToken(spokeChain, folksTokenId) {
33
+ return spokeChain.tokens[folksTokenId] !== undefined;
34
+ }
35
+ export function getSpokeTokenData(spokeChain, folksTokenId) {
36
+ const tokenData = spokeChain.tokens[folksTokenId];
37
+ if (!tokenData)
38
+ throw new Error(`Spoke Token not found for folksTokenId: ${folksTokenId}`);
39
+ return tokenData;
40
+ }
41
+ export function isFolksTokenSupported(folksTokenId, folksChainId, network) {
42
+ const spokeChain = getSpokeChain(folksChainId, network);
43
+ return doesSpokeSupportFolksToken(spokeChain, folksTokenId);
44
+ }
45
+ export function assertSpokeChainSupportFolksToken(folksChainId, folksTokenId, network) {
46
+ if (!isFolksTokenSupported(folksTokenId, folksChainId, network))
47
+ throw new Error(`Folks Token ${folksTokenId} is not supported on Folks Chain ${folksChainId}`);
48
+ }
49
+ export function getSpokeChainAdapterAddress(folksChainId, network, adapterType) {
50
+ const spokeChain = getSpokeChain(folksChainId, network);
51
+ const adapterAddress = spokeChain.adapters[adapterType];
52
+ if (adapterAddress)
53
+ return adapterAddress;
54
+ throw new Error(`Adapter ${adapterType} not found for spoke chain ${folksChainId}`);
55
+ }
56
+ export function getAdapterAddress(folksChainId, network, adapterType) {
57
+ if (isHubChain(folksChainId, network))
58
+ return getHubChainAdapterAddress(network, adapterType);
59
+ return getSpokeChainAdapterAddress(folksChainId, network, adapterType);
60
+ }
61
+ export function getSignerGenericAddress(folksChainSigner) {
62
+ const chainType = folksChainSigner.chainType;
63
+ switch (chainType) {
64
+ case ChainType.EVM:
65
+ return convertToGenericAddress(getEvmSignerAddress(folksChainSigner.signer), chainType);
66
+ default:
67
+ return exhaustiveCheck(chainType);
68
+ }
69
+ }
70
+ export function assertHubChainSelected(folksChainId, network) {
71
+ if (!isHubChain(folksChainId, network))
72
+ throw new Error(`Wrong chain selected: ${folksChainId}. Expected Hub chain`);
73
+ }
74
+ //# sourceMappingURL=chain.js.map