@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,3 @@
1
+ export * as FolksEvmAccount from "./folks-evm-account.js";
2
+ export * as FolksEvmGmp from "./folks-evm-gmp.js";
3
+ export * as FolksEvmLoan from "./folks-evm-loan.js";
@@ -0,0 +1,7 @@
1
+ export type TokenRateLimit = {
2
+ periodLength: bigint;
3
+ periodOffset: bigint;
4
+ periodLimit: bigint;
5
+ currentCapacity: bigint;
6
+ nextPeriodReset: bigint;
7
+ };
@@ -0,0 +1,74 @@
1
+ import { getContract } from "viem";
2
+
3
+ import { ChainType } from "../../../../common/types/chain.js";
4
+ import { convertFromGenericAddress } from "../../../../common/utils/address.js";
5
+ import { BridgeRouterSpokeAbi } from "../constants/abi/bridge-router-spoke-abi.js";
6
+ import { SpokeCommonAbi } from "../constants/abi/spoke-common-abi.js";
7
+ import { SpokeTokenAbi } from "../constants/abi/spoke-token-abi.js";
8
+
9
+ import type { GenericAddress } from "../../../../common/types/address.js";
10
+ import type { GetReadContractReturnType } from "../../common/types/contract.js";
11
+ import type { GetContractReturnType, Client, WalletClient } from "viem";
12
+
13
+ export function getSpokeCommonContract(
14
+ provider: Client,
15
+ address: GenericAddress,
16
+ ): GetReadContractReturnType<typeof SpokeCommonAbi>;
17
+ export function getSpokeCommonContract(
18
+ provider: Client,
19
+ address: GenericAddress,
20
+ signer: WalletClient,
21
+ ): GetContractReturnType<typeof SpokeCommonAbi, Client>;
22
+ export function getSpokeCommonContract(
23
+ provider: Client,
24
+ address: GenericAddress,
25
+ signer?: WalletClient,
26
+ ): GetReadContractReturnType<typeof SpokeCommonAbi> | GetContractReturnType<typeof SpokeCommonAbi, Client> {
27
+ return getContract({
28
+ abi: SpokeCommonAbi,
29
+ address: convertFromGenericAddress<ChainType.EVM>(address, ChainType.EVM),
30
+ client: { wallet: signer, public: provider },
31
+ });
32
+ }
33
+
34
+ export function getBridgeRouterSpokeContract(
35
+ provider: Client,
36
+ address: GenericAddress,
37
+ ): GetReadContractReturnType<typeof BridgeRouterSpokeAbi>;
38
+ export function getBridgeRouterSpokeContract(
39
+ provider: Client,
40
+ address: GenericAddress,
41
+ signer: WalletClient,
42
+ ): GetContractReturnType<typeof BridgeRouterSpokeAbi, Client>;
43
+ export function getBridgeRouterSpokeContract(
44
+ provider: Client,
45
+ address: GenericAddress,
46
+ signer?: WalletClient,
47
+ ): GetReadContractReturnType<typeof BridgeRouterSpokeAbi> {
48
+ return getContract({
49
+ abi: BridgeRouterSpokeAbi,
50
+ address: convertFromGenericAddress<ChainType.EVM>(address, ChainType.EVM),
51
+ client: { wallet: signer, public: provider },
52
+ });
53
+ }
54
+
55
+ export function getSpokeTokenContract(
56
+ provider: Client,
57
+ address: GenericAddress,
58
+ ): GetReadContractReturnType<typeof SpokeTokenAbi>;
59
+ export function getSpokeTokenContract(
60
+ provider: Client,
61
+ address: GenericAddress,
62
+ signer: WalletClient,
63
+ ): GetContractReturnType<typeof SpokeTokenAbi, Client>;
64
+ export function getSpokeTokenContract(
65
+ provider: Client,
66
+ address: GenericAddress,
67
+ signer?: WalletClient,
68
+ ): GetReadContractReturnType<typeof SpokeTokenAbi> | GetContractReturnType<typeof SpokeTokenAbi, Client> {
69
+ return getContract({
70
+ abi: SpokeTokenAbi,
71
+ address: convertFromGenericAddress<ChainType.EVM>(address, ChainType.EVM),
72
+ client: { wallet: signer, public: provider },
73
+ });
74
+ }
@@ -0,0 +1,5 @@
1
+ import { AdapterType } from "../types/message.js";
2
+
3
+ export const TOKEN_ADAPTERS = [AdapterType.WORMHOLE_CCTP, AdapterType.CCIP_TOKEN];
4
+ export const DATA_ADAPTERS = [AdapterType.WORMHOLE_DATA, AdapterType.CCIP_DATA];
5
+ export const HUB_ADAPTERS = [AdapterType.HUB];
@@ -0,0 +1,6 @@
1
+ export const UINT8_LENGTH = 1;
2
+ export const UINT16_LENGTH = 2;
3
+ export const UINT256_LENGTH = 32;
4
+ export const BYTES32_LENGTH = 32;
5
+
6
+ export const EVM_ADDRESS_BYTES_LENGTH = 20;
@@ -0,0 +1,227 @@
1
+ import { avalancheFuji, baseSepolia, sepolia } from "viem/chains";
2
+
3
+ import { MAINNET_EVM_FOLKS_CHAIN_ID, TESTNET_EVM_FOLKS_CHAIN_ID } from "../../chains/evm/common/constants/chain.js";
4
+ import { NetworkType, ChainType } from "../types/chain.js";
5
+ import { AdapterType } from "../types/message.js";
6
+ import { FolksTokenId, TokenType } from "../types/token.js";
7
+ import { convertToGenericAddress } from "../utils/address.js";
8
+
9
+ import { TESTNET_POOLS } from "./pool.js";
10
+
11
+ import type { EvmAddress } from "../types/address.js";
12
+ import type { FolksChainId, FolksChain, SpokeChain, FolksChainName } from "../types/chain.js";
13
+
14
+ export const MAINNET_FOLKS_CHAIN_ID = {
15
+ ...MAINNET_EVM_FOLKS_CHAIN_ID,
16
+ } as const;
17
+
18
+ export const TESTNET_FOLKS_CHAIN_ID = {
19
+ ...TESTNET_EVM_FOLKS_CHAIN_ID,
20
+ } as const;
21
+
22
+ export const FOLKS_CHAIN_ID = {
23
+ ...MAINNET_FOLKS_CHAIN_ID,
24
+ ...TESTNET_FOLKS_CHAIN_ID,
25
+ } as const satisfies Record<FolksChainName, number>;
26
+
27
+ export const FOLKS_CHAIN: Record<NetworkType, Partial<Record<FolksChainId, FolksChain>>> = {
28
+ [NetworkType.MAINNET]: {},
29
+ [NetworkType.TESTNET]: {
30
+ [FOLKS_CHAIN_ID.AVALANCHE_FUJI]: {
31
+ chainType: ChainType.EVM,
32
+ folksChainId: FOLKS_CHAIN_ID.AVALANCHE_FUJI,
33
+ chainName: avalancheFuji.name,
34
+ chainId: avalancheFuji.id,
35
+ network: NetworkType.TESTNET,
36
+ },
37
+ [FOLKS_CHAIN_ID.ETHEREUM_SEPOLIA]: {
38
+ chainType: ChainType.EVM,
39
+ folksChainId: FOLKS_CHAIN_ID.ETHEREUM_SEPOLIA,
40
+ chainName: sepolia.name,
41
+ chainId: sepolia.id,
42
+ network: NetworkType.TESTNET,
43
+ },
44
+ [FOLKS_CHAIN_ID.BASE_SEPOLIA]: {
45
+ chainType: ChainType.EVM,
46
+ folksChainId: FOLKS_CHAIN_ID.BASE_SEPOLIA,
47
+ chainName: baseSepolia.name,
48
+ chainId: baseSepolia.id,
49
+ network: NetworkType.TESTNET,
50
+ },
51
+ },
52
+ } as const;
53
+
54
+ export const SPOKE_CHAIN: Record<NetworkType, Partial<Record<FolksChainId, SpokeChain>>> = {
55
+ [NetworkType.MAINNET]: {},
56
+ [NetworkType.TESTNET]: {
57
+ [FOLKS_CHAIN_ID.AVALANCHE_FUJI]: {
58
+ folksChainId: FOLKS_CHAIN_ID.AVALANCHE_FUJI,
59
+ spokeCommonAddress: convertToGenericAddress(
60
+ "0x6628cE08b54e9C8358bE94f716D93AdDcca45b00" as EvmAddress,
61
+ ChainType.EVM,
62
+ ),
63
+ bridgeRouterAddress: convertToGenericAddress(
64
+ "0x0f91d914E058d0588Cc1bf35FA3736A627C3Ba81" as EvmAddress,
65
+ ChainType.EVM,
66
+ ),
67
+ adapters: {
68
+ [AdapterType.HUB]: convertToGenericAddress(
69
+ "0xf472ab58969709De9FfEFaeFFd24F9e90cf8DbF9" as EvmAddress,
70
+ ChainType.EVM,
71
+ ),
72
+ },
73
+ tokens: {
74
+ [FolksTokenId.USDC]: {
75
+ token: {
76
+ type: TokenType.CIRCLE,
77
+ address: convertToGenericAddress("0x5425890298aed601595a70ab815c96711a31bc65" as EvmAddress, ChainType.EVM),
78
+ decimals: 6,
79
+ },
80
+ folksTokenId: FolksTokenId.USDC,
81
+ poolId: TESTNET_POOLS[FolksTokenId.USDC],
82
+ spokeAddress: convertToGenericAddress(
83
+ "0x89df7db4af48Ec7A84DE09F755ade9AF1940420b" as EvmAddress,
84
+ ChainType.EVM,
85
+ ),
86
+ },
87
+ [FolksTokenId.AVAX]: {
88
+ token: {
89
+ type: TokenType.NATIVE,
90
+ decimals: 18,
91
+ },
92
+ folksTokenId: FolksTokenId.AVAX,
93
+ poolId: TESTNET_POOLS[FolksTokenId.AVAX],
94
+ spokeAddress: convertToGenericAddress(
95
+ "0xBFf8b4e5f92eDD0A5f72b4b0E23cCa2Cc476ce2a" as EvmAddress,
96
+ ChainType.EVM,
97
+ ),
98
+ },
99
+ },
100
+ },
101
+ [FOLKS_CHAIN_ID.ETHEREUM_SEPOLIA]: {
102
+ folksChainId: FOLKS_CHAIN_ID.ETHEREUM_SEPOLIA,
103
+ spokeCommonAddress: convertToGenericAddress(
104
+ "0x16Eecb8CeB2CE4Ec542634d7525191dfce587C85" as EvmAddress,
105
+ ChainType.EVM,
106
+ ),
107
+ bridgeRouterAddress: convertToGenericAddress(
108
+ "0xBeF7aB7C5e6CeFF384cde460dd20C862047CDFa5" as EvmAddress,
109
+ ChainType.EVM,
110
+ ),
111
+ adapters: {
112
+ [AdapterType.WORMHOLE_DATA]: convertToGenericAddress(
113
+ "0xC0CFfA934598E655DC8D25Cd1774F249FFCF5e59" as EvmAddress,
114
+ ChainType.EVM,
115
+ ),
116
+ [AdapterType.WORMHOLE_CCTP]: convertToGenericAddress(
117
+ "0x7cdB014Bc73C74Da5b3830eDE6a4494ec52C3738" as EvmAddress,
118
+ ChainType.EVM,
119
+ ),
120
+ [AdapterType.CCIP_DATA]: convertToGenericAddress(
121
+ "0xa51cA34831CEB2F8BafE4ADEf032286E067EF2ad" as EvmAddress,
122
+ ChainType.EVM,
123
+ ),
124
+ [AdapterType.CCIP_TOKEN]: convertToGenericAddress(
125
+ "0x0100F7f027EC3B4B4Fd8bB739efd8BDDBa3bF847" as EvmAddress,
126
+ ChainType.EVM,
127
+ ),
128
+ },
129
+ tokens: {
130
+ [FolksTokenId.USDC]: {
131
+ token: {
132
+ type: TokenType.CIRCLE,
133
+ address: convertToGenericAddress("0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238" as EvmAddress, ChainType.EVM),
134
+ decimals: 6,
135
+ },
136
+ folksTokenId: FolksTokenId.USDC,
137
+ poolId: TESTNET_POOLS[FolksTokenId.USDC],
138
+ spokeAddress: convertToGenericAddress(
139
+ "0x40C77F8cc70DF8F6D7A91ebb5291d38d42540455" as EvmAddress,
140
+ ChainType.EVM,
141
+ ),
142
+ },
143
+ [FolksTokenId.ETH_eth_sep]: {
144
+ token: {
145
+ type: TokenType.NATIVE,
146
+ decimals: 18,
147
+ },
148
+ folksTokenId: FolksTokenId.ETH_eth_sep,
149
+ poolId: TESTNET_POOLS[FolksTokenId.ETH_eth_sep],
150
+ spokeAddress: convertToGenericAddress(
151
+ "0x9ecfD854F4F8BD2275930Cc51d45d7817EF6CeE3" as EvmAddress,
152
+ ChainType.EVM,
153
+ ),
154
+ },
155
+ [FolksTokenId.LINK_eth_sep]: {
156
+ token: {
157
+ type: TokenType.ERC20,
158
+ address: convertToGenericAddress("0x779877A7B0D9E8603169DdbD7836e478b4624789" as EvmAddress, ChainType.EVM),
159
+ decimals: 18,
160
+ },
161
+ folksTokenId: FolksTokenId.LINK_eth_sep,
162
+ poolId: TESTNET_POOLS[FolksTokenId.LINK_eth_sep],
163
+ spokeAddress: convertToGenericAddress(
164
+ "0x8Aac7fA5B2d0c7Ca4f1610bB43CF0d62A670Fa14" as EvmAddress,
165
+ ChainType.EVM,
166
+ ),
167
+ },
168
+ },
169
+ },
170
+ [FOLKS_CHAIN_ID.BASE_SEPOLIA]: {
171
+ folksChainId: FOLKS_CHAIN_ID.BASE_SEPOLIA,
172
+ spokeCommonAddress: convertToGenericAddress(
173
+ "0x993C9a918B145B90E69A8D22B7e3b6d3413e3755" as EvmAddress,
174
+ ChainType.EVM,
175
+ ),
176
+ bridgeRouterAddress: convertToGenericAddress(
177
+ "0x92051Ad708C4e5FCcC7322c111F63440D638312e" as EvmAddress,
178
+ ChainType.EVM,
179
+ ),
180
+ adapters: {
181
+ [AdapterType.WORMHOLE_DATA]: convertToGenericAddress(
182
+ "0x56d9a6e25E9e31080A3Ab1bd4a6f7bd0B4C884Da" as EvmAddress,
183
+ ChainType.EVM,
184
+ ),
185
+ [AdapterType.WORMHOLE_CCTP]: convertToGenericAddress(
186
+ "0x8c8E4Eb83138D2625a14F0517E0106D26F9c23f3" as EvmAddress,
187
+ ChainType.EVM,
188
+ ),
189
+ [AdapterType.CCIP_DATA]: convertToGenericAddress(
190
+ "0x08447025BB3D7249cb6566E579b1d309679c7720" as EvmAddress,
191
+ ChainType.EVM,
192
+ ),
193
+ [AdapterType.CCIP_TOKEN]: convertToGenericAddress(
194
+ "0x22644D46e5aE39Fa6b9d9706AaA1d398E5EB8aBc" as EvmAddress,
195
+ ChainType.EVM,
196
+ ),
197
+ },
198
+ tokens: {
199
+ [FolksTokenId.USDC]: {
200
+ token: {
201
+ type: TokenType.CIRCLE,
202
+ address: convertToGenericAddress("0x036CbD53842c5426634e7929541eC2318f3dCF7e" as EvmAddress, ChainType.EVM),
203
+ decimals: 6,
204
+ },
205
+ folksTokenId: FolksTokenId.USDC,
206
+ poolId: TESTNET_POOLS[FolksTokenId.USDC],
207
+ spokeAddress: convertToGenericAddress(
208
+ "0x7cdB014Bc73C74Da5b3830eDE6a4494ec52C3738" as EvmAddress,
209
+ ChainType.EVM,
210
+ ),
211
+ },
212
+ [FolksTokenId.ETH_base_sep]: {
213
+ token: {
214
+ type: TokenType.NATIVE,
215
+ decimals: 18,
216
+ },
217
+ folksTokenId: FolksTokenId.ETH_base_sep,
218
+ poolId: TESTNET_POOLS[FolksTokenId.ETH_base_sep],
219
+ spokeAddress: convertToGenericAddress(
220
+ "0xa51cA34831CEB2F8BafE4ADEf032286E067EF2ad" as EvmAddress,
221
+ ChainType.EVM,
222
+ ),
223
+ },
224
+ },
225
+ },
226
+ },
227
+ };
@@ -0,0 +1,38 @@
1
+ import { ChainType } from "../types/chain.js";
2
+ import { convertToGenericAddress } from "../utils/address.js";
3
+
4
+ import { FOLKS_CHAIN_ID } from "./chain.js";
5
+
6
+ import type { EvmAddress } from "../types/address.js";
7
+ import type { FolksChainId } from "../types/chain.js";
8
+ import type { CCIPData, WormholeData } from "../types/gmp.js";
9
+
10
+ export const WORMHOLE_DATA: Partial<Record<FolksChainId, WormholeData>> = {
11
+ [FOLKS_CHAIN_ID.AVALANCHE_FUJI]: {
12
+ wormholeChainId: 6,
13
+ wormholeRelayer: convertToGenericAddress("0xA3cF45939bD6260bcFe3D66bc73d60f19e49a8BB" as EvmAddress, ChainType.EVM),
14
+ },
15
+ [FOLKS_CHAIN_ID.ETHEREUM_SEPOLIA]: {
16
+ wormholeChainId: 10002,
17
+ wormholeRelayer: convertToGenericAddress("0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470" as EvmAddress, ChainType.EVM),
18
+ },
19
+ [FOLKS_CHAIN_ID.BASE_SEPOLIA]: {
20
+ wormholeChainId: 10004,
21
+ wormholeRelayer: convertToGenericAddress("0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE" as EvmAddress, ChainType.EVM),
22
+ },
23
+ };
24
+
25
+ export const CCIP_DATA: Partial<Record<FolksChainId, CCIPData>> = {
26
+ [FOLKS_CHAIN_ID.AVALANCHE_FUJI]: {
27
+ ccipChainId: BigInt("14767482510784806043"),
28
+ ccipRouter: convertToGenericAddress("0xF694E193200268f9a4868e4Aa017A0118C9a8177" as EvmAddress, ChainType.EVM),
29
+ },
30
+ [FOLKS_CHAIN_ID.ETHEREUM_SEPOLIA]: {
31
+ ccipChainId: BigInt("16015286601757825753"),
32
+ ccipRouter: convertToGenericAddress("0x0BF3dE8c5D3e8A2B34D2BEeB17ABfCeBaf363A59" as EvmAddress, ChainType.EVM),
33
+ },
34
+ [FOLKS_CHAIN_ID.BASE_SEPOLIA]: {
35
+ ccipChainId: BigInt("10344971235874465080"),
36
+ ccipRouter: convertToGenericAddress("0xD3b06cEbF099CE7DA4AcCf578aaebFDBd6e88a93" as EvmAddress, ChainType.EVM),
37
+ },
38
+ };
@@ -0,0 +1,3 @@
1
+ import { getAccountIdBytes } from "../utils/bytes.js";
2
+
3
+ export const NULL_ACCOUNT_ID = getAccountIdBytes("");
@@ -0,0 +1,4 @@
1
+ export const FINALITY = {
2
+ IMMEDIATE: BigInt(0),
3
+ FINALISED: BigInt(1),
4
+ } as const;
@@ -0,0 +1,11 @@
1
+ import { FolksTokenId } from "../types/token.js";
2
+
3
+ export const MAINNET_POOLS = {} as const satisfies Partial<Record<FolksTokenId, number>>;
4
+
5
+ export const TESTNET_POOLS = {
6
+ [FolksTokenId.USDC]: 128,
7
+ [FolksTokenId.AVAX]: 129,
8
+ [FolksTokenId.ETH_eth_sep]: 130,
9
+ [FolksTokenId.ETH_base_sep]: 131,
10
+ [FolksTokenId.LINK_eth_sep]: 132,
11
+ } as const satisfies Partial<Record<FolksTokenId, number>>;
@@ -0,0 +1,3 @@
1
+ import { FolksTokenId } from "../types/token.js";
2
+
3
+ export const CIRCLE_FOLKS_TOKEN_ID = [FolksTokenId.USDC];
@@ -0,0 +1,38 @@
1
+ import type { FolksChainId, NetworkType } from "./chain.js";
2
+ import type { DataAction, ReceiveTokenAction, SendTokenAction } from "./message.js";
3
+ import type { FolksTokenId } from "./token.js";
4
+
5
+ export enum MessageAdapterParamsType {
6
+ SendToken,
7
+ ReceiveToken,
8
+ Data,
9
+ }
10
+
11
+ export type SendTokenMessageAdapterParams = {
12
+ messageAdapterParamType: MessageAdapterParamsType.SendToken;
13
+ action: SendTokenAction;
14
+ network: NetworkType;
15
+ sourceFolksChainId: FolksChainId;
16
+ folksTokenId: FolksTokenId;
17
+ };
18
+
19
+ export type ReceiveTokenMessageAdapterParams = {
20
+ messageAdapterParamType: MessageAdapterParamsType.ReceiveToken;
21
+ action: ReceiveTokenAction;
22
+ network: NetworkType;
23
+ sourceFolksChainId: FolksChainId;
24
+ destFolksChainId: FolksChainId;
25
+ folksTokenId: FolksTokenId;
26
+ };
27
+
28
+ export type DataMessageAdapterParams = {
29
+ messageAdapterParamType: MessageAdapterParamsType.Data;
30
+ action: DataAction;
31
+ network: NetworkType;
32
+ sourceFolksChainId: FolksChainId;
33
+ };
34
+
35
+ export type MessageAdapterParams =
36
+ | SendTokenMessageAdapterParams
37
+ | ReceiveTokenMessageAdapterParams
38
+ | DataMessageAdapterParams;
@@ -0,0 +1,11 @@
1
+ import type { Branded } from "./brand.js";
2
+ import type { ChainType } from "./chain.js";
3
+
4
+ export type GenericAddress = Branded<`0x${string}`, "GenericAddress">;
5
+ export type EvmAddress = Branded<`0x${string}`, "EvmAddress">;
6
+
7
+ type AddressTypeMap = {
8
+ [ChainType.EVM]: EvmAddress;
9
+ };
10
+
11
+ export type AddressType<T extends ChainType> = AddressTypeMap[T];
@@ -0,0 +1,3 @@
1
+ declare const __brand: unique symbol;
2
+ type Brand<B> = { [__brand]: B };
3
+ export type Branded<T, B> = T & Brand<B>;
@@ -0,0 +1,35 @@
1
+ import type { GenericAddress } from "./address.js";
2
+ import type { AdapterType } from "./message.js";
3
+ import type { FolksTokenId, SpokeTokenData } from "./token.js";
4
+ import type { EvmChainName } from "../../chains/evm/common/types/chain.js";
5
+ import type { FOLKS_CHAIN_ID } from "../constants/chain.js";
6
+
7
+ export enum ChainType {
8
+ EVM = "EVM",
9
+ }
10
+
11
+ export enum NetworkType {
12
+ MAINNET = "MAINNET",
13
+ TESTNET = "TESTNET",
14
+ }
15
+
16
+ export type FolksChainName = EvmChainName;
17
+ export type FolksChainId = (typeof FOLKS_CHAIN_ID)[keyof typeof FOLKS_CHAIN_ID];
18
+
19
+ export type IFolksChain = {
20
+ folksChainId: FolksChainId;
21
+ };
22
+
23
+ export type FolksChain = {
24
+ chainName: string;
25
+ chainType: ChainType;
26
+ chainId: number | string | undefined;
27
+ network: NetworkType;
28
+ } & IFolksChain;
29
+
30
+ export type SpokeChain = {
31
+ spokeCommonAddress: GenericAddress;
32
+ bridgeRouterAddress: GenericAddress;
33
+ adapters: Partial<Record<AdapterType, GenericAddress>>;
34
+ tokens: Partial<Record<FolksTokenId, SpokeTokenData>>;
35
+ } & IFolksChain;
@@ -0,0 +1,31 @@
1
+ import type { ChainType, NetworkType, FolksChainId } from "./chain.js";
2
+ import type { Client as EVMProvider, WalletClient as EVMSigner } from "viem";
3
+
4
+ type FolksProviderTypeMap = {
5
+ [ChainType.EVM]: EVMProvider;
6
+ };
7
+
8
+ type FolksSignerTypeMap = {
9
+ [ChainType.EVM]: EVMSigner;
10
+ };
11
+
12
+ export type FolksProviderType<T extends ChainType> = FolksProviderTypeMap[T];
13
+ export type FolksSignerType<T extends ChainType> = FolksSignerTypeMap[T];
14
+
15
+ export type FolksProvider = EVMProvider | null;
16
+ export type FolksSigner = { signer: EVMSigner; folksChainId: FolksChainId };
17
+
18
+ export type FolksCoreProvider = {
19
+ evm: Partial<Record<FolksChainId, EVMProvider>>;
20
+ };
21
+ export type FolksCoreConfig = {
22
+ network: NetworkType;
23
+ provider: FolksCoreProvider;
24
+ };
25
+
26
+ export type FolksEvmSigner = {
27
+ signer: EVMSigner;
28
+ chainType: ChainType.EVM;
29
+ };
30
+
31
+ export type FolksChainSigner = FolksEvmSigner;
@@ -0,0 +1,22 @@
1
+ import type { GenericAddress } from "./address.js";
2
+ import type { Branded } from "./brand.js";
3
+ import type { AccountId } from "./lending.js";
4
+
5
+ export enum MessageDirection {
6
+ SpokeToHub,
7
+ HubToSpoke,
8
+ }
9
+
10
+ export type WormholeData = {
11
+ wormholeChainId: number;
12
+ wormholeRelayer: GenericAddress;
13
+ };
14
+
15
+ export type CCIPData = {
16
+ ccipChainId: bigint;
17
+ ccipRouter: GenericAddress;
18
+ };
19
+
20
+ export type MessageId = Branded<`0x${string}`, "MessageId">;
21
+
22
+ export type ReverseMessageExtraAgrs = "0x" | AccountId;
@@ -0,0 +1,5 @@
1
+ import type { Branded } from "./brand.js";
2
+
3
+ export type AccountId = Branded<`0x${string}`, "AccountId">;
4
+ export type LoanId = Branded<`0x${string}`, "LoanId">;
5
+ export type LoanName = Branded<`0x${string}`, "LoanName">;