@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,388 @@
1
+ export const OracleManagerAbi = [
2
+ {
3
+ inputs: [
4
+ { internalType: "address", name: "admin", type: "address" },
5
+ { internalType: "address", name: "nodeManager", type: "address" },
6
+ ],
7
+ stateMutability: "nonpayable",
8
+ type: "constructor",
9
+ },
10
+ { inputs: [], name: "AccessControlBadConfirmation", type: "error" },
11
+ {
12
+ inputs: [{ internalType: "uint48", name: "schedule", type: "uint48" }],
13
+ name: "AccessControlEnforcedDefaultAdminDelay",
14
+ type: "error",
15
+ },
16
+ { inputs: [], name: "AccessControlEnforcedDefaultAdminRules", type: "error" },
17
+ {
18
+ inputs: [{ internalType: "address", name: "defaultAdmin", type: "address" }],
19
+ name: "AccessControlInvalidDefaultAdmin",
20
+ type: "error",
21
+ },
22
+ {
23
+ inputs: [
24
+ { internalType: "address", name: "account", type: "address" },
25
+ { internalType: "bytes32", name: "neededRole", type: "bytes32" },
26
+ ],
27
+ name: "AccessControlUnauthorizedAccount",
28
+ type: "error",
29
+ },
30
+ {
31
+ inputs: [{ internalType: "address", name: "nodeManager", type: "address" }],
32
+ name: "InvalidNodeManager",
33
+ type: "error",
34
+ },
35
+ {
36
+ inputs: [{ internalType: "uint8", name: "poolId", type: "uint8" }],
37
+ name: "NoNodeIdForPool",
38
+ type: "error",
39
+ },
40
+ {
41
+ inputs: [
42
+ { internalType: "uint8", name: "bits", type: "uint8" },
43
+ { internalType: "uint256", name: "value", type: "uint256" },
44
+ ],
45
+ name: "SafeCastOverflowedUintDowncast",
46
+ type: "error",
47
+ },
48
+ {
49
+ anonymous: false,
50
+ inputs: [],
51
+ name: "DefaultAdminDelayChangeCanceled",
52
+ type: "event",
53
+ },
54
+ {
55
+ anonymous: false,
56
+ inputs: [
57
+ {
58
+ indexed: false,
59
+ internalType: "uint48",
60
+ name: "newDelay",
61
+ type: "uint48",
62
+ },
63
+ {
64
+ indexed: false,
65
+ internalType: "uint48",
66
+ name: "effectSchedule",
67
+ type: "uint48",
68
+ },
69
+ ],
70
+ name: "DefaultAdminDelayChangeScheduled",
71
+ type: "event",
72
+ },
73
+ {
74
+ anonymous: false,
75
+ inputs: [],
76
+ name: "DefaultAdminTransferCanceled",
77
+ type: "event",
78
+ },
79
+ {
80
+ anonymous: false,
81
+ inputs: [
82
+ {
83
+ indexed: true,
84
+ internalType: "address",
85
+ name: "newAdmin",
86
+ type: "address",
87
+ },
88
+ {
89
+ indexed: false,
90
+ internalType: "uint48",
91
+ name: "acceptSchedule",
92
+ type: "uint48",
93
+ },
94
+ ],
95
+ name: "DefaultAdminTransferScheduled",
96
+ type: "event",
97
+ },
98
+ {
99
+ anonymous: false,
100
+ inputs: [
101
+ {
102
+ indexed: false,
103
+ internalType: "bytes32",
104
+ name: "nodeId",
105
+ type: "bytes32",
106
+ },
107
+ { indexed: false, internalType: "uint8", name: "poolId", type: "uint8" },
108
+ ],
109
+ name: "NodeIdSetForPool",
110
+ type: "event",
111
+ },
112
+ {
113
+ anonymous: false,
114
+ inputs: [
115
+ {
116
+ indexed: false,
117
+ internalType: "address",
118
+ name: "nodeManager",
119
+ type: "address",
120
+ },
121
+ ],
122
+ name: "NodeManagerSet",
123
+ type: "event",
124
+ },
125
+ {
126
+ anonymous: false,
127
+ inputs: [
128
+ { indexed: true, internalType: "bytes32", name: "role", type: "bytes32" },
129
+ {
130
+ indexed: true,
131
+ internalType: "bytes32",
132
+ name: "previousAdminRole",
133
+ type: "bytes32",
134
+ },
135
+ {
136
+ indexed: true,
137
+ internalType: "bytes32",
138
+ name: "newAdminRole",
139
+ type: "bytes32",
140
+ },
141
+ ],
142
+ name: "RoleAdminChanged",
143
+ type: "event",
144
+ },
145
+ {
146
+ anonymous: false,
147
+ inputs: [
148
+ { indexed: true, internalType: "bytes32", name: "role", type: "bytes32" },
149
+ {
150
+ indexed: true,
151
+ internalType: "address",
152
+ name: "account",
153
+ type: "address",
154
+ },
155
+ {
156
+ indexed: true,
157
+ internalType: "address",
158
+ name: "sender",
159
+ type: "address",
160
+ },
161
+ ],
162
+ name: "RoleGranted",
163
+ type: "event",
164
+ },
165
+ {
166
+ anonymous: false,
167
+ inputs: [
168
+ { indexed: true, internalType: "bytes32", name: "role", type: "bytes32" },
169
+ {
170
+ indexed: true,
171
+ internalType: "address",
172
+ name: "account",
173
+ type: "address",
174
+ },
175
+ {
176
+ indexed: true,
177
+ internalType: "address",
178
+ name: "sender",
179
+ type: "address",
180
+ },
181
+ ],
182
+ name: "RoleRevoked",
183
+ type: "event",
184
+ },
185
+ {
186
+ inputs: [],
187
+ name: "DEFAULT_ADMIN_ROLE",
188
+ outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
189
+ stateMutability: "view",
190
+ type: "function",
191
+ },
192
+ {
193
+ inputs: [],
194
+ name: "MANAGER_ROLE",
195
+ outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
196
+ stateMutability: "view",
197
+ type: "function",
198
+ },
199
+ {
200
+ inputs: [],
201
+ name: "acceptDefaultAdminTransfer",
202
+ outputs: [],
203
+ stateMutability: "nonpayable",
204
+ type: "function",
205
+ },
206
+ {
207
+ inputs: [{ internalType: "address", name: "newAdmin", type: "address" }],
208
+ name: "beginDefaultAdminTransfer",
209
+ outputs: [],
210
+ stateMutability: "nonpayable",
211
+ type: "function",
212
+ },
213
+ {
214
+ inputs: [],
215
+ name: "cancelDefaultAdminTransfer",
216
+ outputs: [],
217
+ stateMutability: "nonpayable",
218
+ type: "function",
219
+ },
220
+ {
221
+ inputs: [{ internalType: "uint48", name: "newDelay", type: "uint48" }],
222
+ name: "changeDefaultAdminDelay",
223
+ outputs: [],
224
+ stateMutability: "nonpayable",
225
+ type: "function",
226
+ },
227
+ {
228
+ inputs: [],
229
+ name: "defaultAdmin",
230
+ outputs: [{ internalType: "address", name: "", type: "address" }],
231
+ stateMutability: "view",
232
+ type: "function",
233
+ },
234
+ {
235
+ inputs: [],
236
+ name: "defaultAdminDelay",
237
+ outputs: [{ internalType: "uint48", name: "", type: "uint48" }],
238
+ stateMutability: "view",
239
+ type: "function",
240
+ },
241
+ {
242
+ inputs: [],
243
+ name: "defaultAdminDelayIncreaseWait",
244
+ outputs: [{ internalType: "uint48", name: "", type: "uint48" }],
245
+ stateMutability: "view",
246
+ type: "function",
247
+ },
248
+ {
249
+ inputs: [],
250
+ name: "getNodeManager",
251
+ outputs: [{ internalType: "address", name: "", type: "address" }],
252
+ stateMutability: "view",
253
+ type: "function",
254
+ },
255
+ {
256
+ inputs: [{ internalType: "bytes32", name: "role", type: "bytes32" }],
257
+ name: "getRoleAdmin",
258
+ outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
259
+ stateMutability: "view",
260
+ type: "function",
261
+ },
262
+ {
263
+ inputs: [
264
+ { internalType: "bytes32", name: "role", type: "bytes32" },
265
+ { internalType: "address", name: "account", type: "address" },
266
+ ],
267
+ name: "grantRole",
268
+ outputs: [],
269
+ stateMutability: "nonpayable",
270
+ type: "function",
271
+ },
272
+ {
273
+ inputs: [
274
+ { internalType: "bytes32", name: "role", type: "bytes32" },
275
+ { internalType: "address", name: "account", type: "address" },
276
+ ],
277
+ name: "hasRole",
278
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
279
+ stateMutability: "view",
280
+ type: "function",
281
+ },
282
+ {
283
+ inputs: [],
284
+ name: "owner",
285
+ outputs: [{ internalType: "address", name: "", type: "address" }],
286
+ stateMutability: "view",
287
+ type: "function",
288
+ },
289
+ {
290
+ inputs: [],
291
+ name: "pendingDefaultAdmin",
292
+ outputs: [
293
+ { internalType: "address", name: "newAdmin", type: "address" },
294
+ { internalType: "uint48", name: "schedule", type: "uint48" },
295
+ ],
296
+ stateMutability: "view",
297
+ type: "function",
298
+ },
299
+ {
300
+ inputs: [],
301
+ name: "pendingDefaultAdminDelay",
302
+ outputs: [
303
+ { internalType: "uint48", name: "newDelay", type: "uint48" },
304
+ { internalType: "uint48", name: "schedule", type: "uint48" },
305
+ ],
306
+ stateMutability: "view",
307
+ type: "function",
308
+ },
309
+ {
310
+ inputs: [{ internalType: "uint8", name: "poolId", type: "uint8" }],
311
+ name: "poolIdToNode",
312
+ outputs: [
313
+ { internalType: "bytes32", name: "nodeId", type: "bytes32" },
314
+ { internalType: "uint8", name: "decimals", type: "uint8" },
315
+ ],
316
+ stateMutability: "view",
317
+ type: "function",
318
+ },
319
+ {
320
+ inputs: [{ internalType: "uint8", name: "poolId", type: "uint8" }],
321
+ name: "processPriceFeed",
322
+ outputs: [
323
+ {
324
+ components: [
325
+ { internalType: "uint256", name: "price", type: "uint256" },
326
+ { internalType: "uint8", name: "decimals", type: "uint8" },
327
+ ],
328
+ internalType: "struct DataTypes.PriceFeed",
329
+ name: "priceFeed",
330
+ type: "tuple",
331
+ },
332
+ ],
333
+ stateMutability: "view",
334
+ type: "function",
335
+ },
336
+ {
337
+ inputs: [
338
+ { internalType: "bytes32", name: "role", type: "bytes32" },
339
+ { internalType: "address", name: "account", type: "address" },
340
+ ],
341
+ name: "renounceRole",
342
+ outputs: [],
343
+ stateMutability: "nonpayable",
344
+ type: "function",
345
+ },
346
+ {
347
+ inputs: [
348
+ { internalType: "bytes32", name: "role", type: "bytes32" },
349
+ { internalType: "address", name: "account", type: "address" },
350
+ ],
351
+ name: "revokeRole",
352
+ outputs: [],
353
+ stateMutability: "nonpayable",
354
+ type: "function",
355
+ },
356
+ {
357
+ inputs: [],
358
+ name: "rollbackDefaultAdminDelay",
359
+ outputs: [],
360
+ stateMutability: "nonpayable",
361
+ type: "function",
362
+ },
363
+ {
364
+ inputs: [
365
+ { internalType: "uint8", name: "poolId", type: "uint8" },
366
+ { internalType: "bytes32", name: "nodeId", type: "bytes32" },
367
+ { internalType: "uint8", name: "decimals", type: "uint8" },
368
+ ],
369
+ name: "setNodeId",
370
+ outputs: [],
371
+ stateMutability: "nonpayable",
372
+ type: "function",
373
+ },
374
+ {
375
+ inputs: [{ internalType: "address", name: "nodeManager", type: "address" }],
376
+ name: "setNodeManager",
377
+ outputs: [],
378
+ stateMutability: "nonpayable",
379
+ type: "function",
380
+ },
381
+ {
382
+ inputs: [{ internalType: "bytes4", name: "interfaceId", type: "bytes4" }],
383
+ name: "supportsInterface",
384
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
385
+ stateMutability: "view",
386
+ type: "function",
387
+ },
388
+ ] as const;
@@ -0,0 +1,130 @@
1
+ import { FOLKS_CHAIN_ID } from "../../../../common/constants/chain.js";
2
+ import { TESTNET_POOLS } from "../../../../common/constants/pool.js";
3
+ import { NetworkType, ChainType } from "../../../../common/types/chain.js";
4
+ import { AdapterType } from "../../../../common/types/message.js";
5
+ import { LoanTypeId } from "../../../../common/types/module.js";
6
+ import { FolksTokenId, TokenType } from "../../../../common/types/token.js";
7
+ import { convertToGenericAddress } from "../../../../common/utils/address.js";
8
+
9
+ import type { EvmAddress, GenericAddress } from "../../../../common/types/address.js";
10
+ import type { FolksChainId } from "../../../../common/types/chain.js";
11
+ import type { HubChain } from "../types/chain.js";
12
+
13
+ export const HUB_CHAIN: Record<NetworkType, HubChain> = {
14
+ [NetworkType.MAINNET]: {
15
+ folksChainId: 0 as FolksChainId,
16
+ hubAddress: "0x" as GenericAddress,
17
+ bridgeRouterAddress: "0x" as GenericAddress,
18
+ adapters: {
19
+ [AdapterType.HUB]: "0x" as GenericAddress,
20
+ [AdapterType.WORMHOLE_DATA]: "0x" as GenericAddress,
21
+ [AdapterType.WORMHOLE_CCTP]: "0x" as GenericAddress,
22
+ [AdapterType.CCIP_DATA]: "0x" as GenericAddress,
23
+ [AdapterType.CCIP_TOKEN]: "0x" as GenericAddress,
24
+ },
25
+ oracleManagerAddress: "0x" as GenericAddress,
26
+ spokeManagerAddress: "0x" as GenericAddress,
27
+ accountManagerAddress: "0x" as GenericAddress,
28
+ loanManagerAddress: "0x" as GenericAddress,
29
+ tokens: {},
30
+ },
31
+ [NetworkType.TESTNET]: {
32
+ folksChainId: FOLKS_CHAIN_ID.AVALANCHE_FUJI,
33
+ hubAddress: convertToGenericAddress("0xaE4C62510F4d930a5C8796dbfB8C4Bc7b9B62140" as EvmAddress, ChainType.EVM),
34
+ bridgeRouterAddress: convertToGenericAddress(
35
+ "0xa9491a1f4f058832e5742b76eE3f1F1fD7bb6837" as EvmAddress,
36
+ ChainType.EVM,
37
+ ),
38
+ adapters: {
39
+ [AdapterType.HUB]: convertToGenericAddress(
40
+ "0xf472ab58969709De9FfEFaeFFd24F9e90cf8DbF9" as EvmAddress,
41
+ ChainType.EVM,
42
+ ),
43
+ [AdapterType.WORMHOLE_DATA]: convertToGenericAddress(
44
+ "0x8F27355662D6de024FEE83b176dD8DB1F2CA1585" as EvmAddress,
45
+ ChainType.EVM,
46
+ ),
47
+ [AdapterType.WORMHOLE_CCTP]: convertToGenericAddress(
48
+ "0x8a81dbF6D6b6A8693181de7ad6Ff7F4c47a5B8bd" as EvmAddress,
49
+ ChainType.EVM,
50
+ ),
51
+ [AdapterType.CCIP_DATA]: convertToGenericAddress(
52
+ "0xE7F80b606614989209f2c36F6074bAfDe1565A19" as EvmAddress,
53
+ ChainType.EVM,
54
+ ),
55
+ [AdapterType.CCIP_TOKEN]: convertToGenericAddress(
56
+ "0x006A9A176662920306074bB00B57f5CA836e4200" as EvmAddress,
57
+ ChainType.EVM,
58
+ ),
59
+ },
60
+ oracleManagerAddress: convertToGenericAddress(
61
+ "0x46c425F4Ec43b25B6222bcc05De051e6D3845165" as EvmAddress,
62
+ ChainType.EVM,
63
+ ),
64
+ spokeManagerAddress: convertToGenericAddress(
65
+ "0xA5b9525a0A46d4D4bf6f588f565f0d15AffDB81d" as EvmAddress,
66
+ ChainType.EVM,
67
+ ),
68
+ accountManagerAddress: convertToGenericAddress(
69
+ "0x3324B5BF2b5C85999C6DAf2f77b5a29aB74197cc" as EvmAddress,
70
+ ChainType.EVM,
71
+ ),
72
+ loanManagerAddress: convertToGenericAddress(
73
+ "0x2cAa1315bd676FbecABFC3195000c642f503f1C9" as EvmAddress,
74
+ ChainType.EVM,
75
+ ),
76
+ tokens: {
77
+ [FolksTokenId.USDC]: {
78
+ token: {
79
+ type: TokenType.CIRCLE,
80
+ address: convertToGenericAddress("0x5425890298aed601595a70ab815c96711a31bc65" as EvmAddress, ChainType.EVM),
81
+ decimals: 6,
82
+ },
83
+ folksTokenId: FolksTokenId.USDC,
84
+ poolId: TESTNET_POOLS[FolksTokenId.USDC],
85
+ poolAddress: convertToGenericAddress("0x1968237f3a7D256D08BcAb212D7ae28fEda72c34" as EvmAddress, ChainType.EVM),
86
+ supportedLoanTypes: new Set([LoanTypeId.DEPOSIT, LoanTypeId.GENERAL]),
87
+ },
88
+ [FolksTokenId.AVAX]: {
89
+ token: {
90
+ type: TokenType.NATIVE,
91
+ decimals: 18,
92
+ },
93
+ folksTokenId: FolksTokenId.AVAX,
94
+ poolId: TESTNET_POOLS[FolksTokenId.AVAX],
95
+ poolAddress: convertToGenericAddress("0xd90B7614551E799Cdef87463143eCe2efd4054f9" as EvmAddress, ChainType.EVM),
96
+ supportedLoanTypes: new Set([LoanTypeId.DEPOSIT, LoanTypeId.GENERAL]),
97
+ },
98
+ [FolksTokenId.ETH_eth_sep]: {
99
+ token: {
100
+ type: TokenType.NATIVE,
101
+ decimals: 18,
102
+ },
103
+ folksTokenId: FolksTokenId.ETH_eth_sep,
104
+ poolId: TESTNET_POOLS[FolksTokenId.ETH_eth_sep],
105
+ poolAddress: convertToGenericAddress("0xecD328082035146d99fd621E809Bc9642cDd0BAd" as EvmAddress, ChainType.EVM),
106
+ supportedLoanTypes: new Set([LoanTypeId.DEPOSIT, LoanTypeId.GENERAL]),
107
+ },
108
+ [FolksTokenId.ETH_base_sep]: {
109
+ token: {
110
+ type: TokenType.NATIVE,
111
+ decimals: 18,
112
+ },
113
+ folksTokenId: FolksTokenId.ETH_base_sep,
114
+ poolId: TESTNET_POOLS[FolksTokenId.ETH_base_sep],
115
+ poolAddress: convertToGenericAddress("0x9E7dfcDFA94C007e868917ec3088107De0B8Dff8" as EvmAddress, ChainType.EVM),
116
+ supportedLoanTypes: new Set([LoanTypeId.DEPOSIT, LoanTypeId.GENERAL]),
117
+ },
118
+ [FolksTokenId.LINK_eth_sep]: {
119
+ token: {
120
+ type: TokenType.ERC20,
121
+ decimals: 18,
122
+ },
123
+ folksTokenId: FolksTokenId.LINK_eth_sep,
124
+ poolId: TESTNET_POOLS[FolksTokenId.LINK_eth_sep],
125
+ poolAddress: convertToGenericAddress("0xf66A38192A953fe22dCA4229d9429219aaeB09d8" as EvmAddress, ChainType.EVM),
126
+ supportedLoanTypes: new Set([LoanTypeId.DEPOSIT, LoanTypeId.GENERAL]),
127
+ },
128
+ },
129
+ },
130
+ };
@@ -0,0 +1,137 @@
1
+ import { multicall } from "viem/actions";
2
+
3
+ import { getFolksChainIdsByNetwork } from "../../../../common/utils/chain.js";
4
+ import { defaultEventParams } from "../../common/constants/contract.js";
5
+ import { extractRevertErrorName } from "../../common/utils/contract.js";
6
+ import { getHubChain } from "../utils/chain.js";
7
+ import { getAccountManagerContract } from "../utils/contract.js";
8
+ import { fetchInvitationByAddress } from "../utils/events.js";
9
+
10
+ import type { GenericAddress } from "../../../../common/types/address.js";
11
+ import type { FolksChainId, NetworkType } from "../../../../common/types/chain.js";
12
+ import type { AccountId } from "../../../../common/types/lending.js";
13
+ import type { AccountIdByAddress, AccountInfo } from "../types/account.js";
14
+ import type { Client } from "viem";
15
+
16
+ export async function getAccountInfo(
17
+ provider: Client,
18
+ network: NetworkType,
19
+ accountId: AccountId,
20
+ folksChainIds?: Array<FolksChainId>,
21
+ ): Promise<AccountInfo> {
22
+ const hubChain = getHubChain(network);
23
+ const accountManager = getAccountManagerContract(provider, hubChain.accountManagerAddress);
24
+
25
+ // get chain ids to check
26
+ folksChainIds = folksChainIds ? folksChainIds : getFolksChainIdsByNetwork(network);
27
+
28
+ // define return variable
29
+ const accountInfo: AccountInfo = {
30
+ registered: new Map<FolksChainId, GenericAddress>(),
31
+ invited: new Map<FolksChainId, GenericAddress>(),
32
+ };
33
+
34
+ // query for registered and invited addresses on each respective chain
35
+ const registeredAddresses = await multicall(provider, {
36
+ contracts: folksChainIds.map((folksChainId) => ({
37
+ address: accountManager.address,
38
+ abi: accountManager.abi,
39
+ functionName: "getAddressRegisteredToAccountOnChain",
40
+ args: [accountId, folksChainId],
41
+ })),
42
+ allowFailure: true,
43
+ });
44
+
45
+ const invitedAddresses = await multicall(provider, {
46
+ contracts: folksChainIds.map((folksChainId) => ({
47
+ address: accountManager.address,
48
+ abi: accountManager.abi,
49
+ functionName: "getAddressInvitedToAccountOnChain",
50
+ args: [accountId, folksChainId],
51
+ })),
52
+ allowFailure: true,
53
+ });
54
+
55
+ for (const [index, result] of registeredAddresses.entries()) {
56
+ const chainId = folksChainIds[index];
57
+ if (result.status === "success") accountInfo.registered.set(chainId, result.result as GenericAddress);
58
+ }
59
+ for (const [index, result] of invitedAddresses.entries()) {
60
+ const chainId = folksChainIds[index];
61
+ if (result.status === "success") accountInfo.invited.set(chainId, result.result as GenericAddress);
62
+ }
63
+
64
+ return accountInfo;
65
+ }
66
+
67
+ export async function getAccountIdByAddress(
68
+ provider: Client,
69
+ network: NetworkType,
70
+ address: GenericAddress,
71
+ folksChainIds?: Array<FolksChainId>,
72
+ ): Promise<AccountIdByAddress> {
73
+ const hubChain = getHubChain(network);
74
+ const accountManager = getAccountManagerContract(provider, hubChain.accountManagerAddress);
75
+
76
+ // get chain ids to check
77
+ folksChainIds = folksChainIds ? folksChainIds : getFolksChainIdsByNetwork(network);
78
+
79
+ const accountIds = await multicall(provider, {
80
+ contracts: folksChainIds.map((folksChainId) => ({
81
+ address: accountManager.address,
82
+ abi: accountManager.abi,
83
+ functionName: "getAccountIdOfAddressOnChain",
84
+ args: [address, folksChainId],
85
+ })),
86
+ allowFailure: true,
87
+ });
88
+
89
+ const accountIdByAddress: AccountIdByAddress = [];
90
+
91
+ for (const [index, result] of accountIds.entries()) {
92
+ const folksChainId = folksChainIds[index];
93
+ if (result.status === "success")
94
+ accountIdByAddress.push({
95
+ accountId: result.result as AccountId,
96
+ folksChainId,
97
+ });
98
+ }
99
+
100
+ return accountIdByAddress;
101
+ }
102
+
103
+ export async function getAccountIdByAddressOnChain(
104
+ provider: Client,
105
+ network: NetworkType,
106
+ address: GenericAddress,
107
+ folksChainId: FolksChainId,
108
+ ): Promise<AccountId | null> {
109
+ const hubChain = getHubChain(network);
110
+ const accountManager = getAccountManagerContract(provider, hubChain.accountManagerAddress);
111
+
112
+ try {
113
+ const accountId = await accountManager.read.getAccountIdOfAddressOnChain([address, folksChainId]);
114
+ return accountId as AccountId;
115
+ } catch (err: unknown) {
116
+ const errorName = extractRevertErrorName(err);
117
+ if (errorName === "NoAccountRegisteredTo") return null;
118
+ throw err;
119
+ }
120
+ }
121
+
122
+ export async function getInvitationByAddress(
123
+ provider: Client,
124
+ network: NetworkType,
125
+ address: GenericAddress,
126
+ folksChainId?: FolksChainId,
127
+ ) {
128
+ const hubChain = getHubChain(network);
129
+ const accountManager = getAccountManagerContract(provider, hubChain.accountManagerAddress);
130
+
131
+ return fetchInvitationByAddress({
132
+ accountManager,
133
+ address,
134
+ folksChainId,
135
+ eventParams: defaultEventParams,
136
+ });
137
+ }