@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,396 @@
1
+ import { multicall, waitForTransactionReceipt } from "viem/actions";
2
+ import { ChainType } from "../../../../common/types/chain.js";
3
+ import { TokenType } from "../../../../common/types/token.js";
4
+ import { convertFromGenericAddress } from "../../../../common/utils/address.js";
5
+ import { calcNextPeriodReset, calcPeriodNumber } from "../../../../common/utils/formulae.js";
6
+ import { getEvmSignerAccount } from "../../common/utils/chain.js";
7
+ import { sendERC20Approve } from "../../common/utils/contract.js";
8
+ import { getAllowanceStateOverride } from "../../common/utils/tokens.js";
9
+ import { getHubTokenData } from "../../hub/utils/chain.js";
10
+ import { getBridgeRouterSpokeContract, getSpokeCommonContract, getSpokeTokenContract } from "../utils/contract.js";
11
+ export const prepare = {
12
+ async createLoan(provider, sender, messageToSend, accountId, loanId, loanTypeId, loanName, spokeChain, transactionOptions = { account: sender }) {
13
+ const spokeCommonAddress = spokeChain.spokeCommonAddress;
14
+ const spokeCommon = getSpokeCommonContract(provider, spokeCommonAddress);
15
+ const bridgeRouter = getBridgeRouterSpokeContract(provider, spokeChain.bridgeRouterAddress);
16
+ // get adapter fees
17
+ const msgValue = await bridgeRouter.read.getSendFee([messageToSend]);
18
+ // get gas limits
19
+ const gasLimit = await spokeCommon.estimateGas.createLoan([messageToSend.params, accountId, loanId, loanTypeId, loanName], {
20
+ value: msgValue,
21
+ ...transactionOptions,
22
+ });
23
+ return {
24
+ msgValue,
25
+ gasLimit,
26
+ messageParams: messageToSend.params,
27
+ spokeCommonAddress,
28
+ };
29
+ },
30
+ async deleteLoan(provider, sender, messageToSend, accountId, loanId, spokeChain, transactionOptions = { account: sender }) {
31
+ const spokeCommonAddress = spokeChain.spokeCommonAddress;
32
+ const spokeCommon = getSpokeCommonContract(provider, spokeCommonAddress);
33
+ const bridgeRouter = getBridgeRouterSpokeContract(provider, spokeChain.bridgeRouterAddress);
34
+ // get adapter fees
35
+ const msgValue = await bridgeRouter.read.getSendFee([messageToSend]);
36
+ // get gas limits
37
+ const gasLimit = await spokeCommon.estimateGas.deleteLoan([messageToSend.params, accountId, loanId], {
38
+ value: msgValue,
39
+ ...transactionOptions,
40
+ });
41
+ return {
42
+ msgValue,
43
+ gasLimit,
44
+ messageParams: messageToSend.params,
45
+ spokeCommonAddress,
46
+ };
47
+ },
48
+ async createLoanAndDeposit(provider, sender, messageToSend, accountId, loanId, loanTypeId, loanName, amount, spokeChain, spokeTokenData, transactionOptions = { account: sender }) {
49
+ const spokeToken = getSpokeTokenContract(provider, spokeTokenData.spokeAddress);
50
+ const bridgeRouter = getBridgeRouterSpokeContract(provider, spokeChain.bridgeRouterAddress);
51
+ const spender = convertFromGenericAddress(spokeTokenData.spokeAddress, ChainType.EVM);
52
+ // get state override
53
+ let stateOverride;
54
+ if (spokeTokenData.token.type === TokenType.ERC20 || spokeTokenData.token.type === TokenType.CIRCLE) {
55
+ const erc20Address = convertFromGenericAddress(spokeTokenData.token.address, ChainType.EVM);
56
+ stateOverride = getAllowanceStateOverride([
57
+ {
58
+ erc20Address,
59
+ stateDiff: [
60
+ {
61
+ owner: sender,
62
+ spender,
63
+ folksChainId: spokeChain.folksChainId,
64
+ folksTokenId: spokeTokenData.folksTokenId,
65
+ tokenType: spokeTokenData.token.type,
66
+ amount,
67
+ },
68
+ ],
69
+ },
70
+ ]);
71
+ }
72
+ // get adapter fees
73
+ const adapterFees = await bridgeRouter.read.getSendFee([messageToSend]);
74
+ const value = spokeTokenData.token.type === TokenType.NATIVE ? amount : BigInt(0);
75
+ const msgValue = adapterFees + value;
76
+ // get gas limits
77
+ const gasLimit = await spokeToken.estimateGas.createLoanAndDeposit([messageToSend.params, accountId, loanId, amount, loanTypeId, loanName], {
78
+ value: msgValue,
79
+ ...transactionOptions,
80
+ stateOverride,
81
+ });
82
+ return {
83
+ msgValue,
84
+ gasLimit,
85
+ messageParams: messageToSend.params,
86
+ spokeTokenData: spokeTokenData,
87
+ };
88
+ },
89
+ async deposit(provider, sender, messageToSend, accountId, loanId, amount, spokeChain, spokeTokenData, transactionOptions = { account: sender }) {
90
+ const spokeToken = getSpokeTokenContract(provider, spokeTokenData.spokeAddress);
91
+ const bridgeRouter = getBridgeRouterSpokeContract(provider, spokeChain.bridgeRouterAddress);
92
+ const spender = convertFromGenericAddress(spokeTokenData.spokeAddress, ChainType.EVM);
93
+ // get state override
94
+ let stateOverride;
95
+ if (spokeTokenData.token.type === TokenType.ERC20 || spokeTokenData.token.type === TokenType.CIRCLE) {
96
+ const erc20Address = convertFromGenericAddress(spokeTokenData.token.address, ChainType.EVM);
97
+ stateOverride = getAllowanceStateOverride([
98
+ {
99
+ erc20Address,
100
+ stateDiff: [
101
+ {
102
+ owner: sender,
103
+ spender,
104
+ folksChainId: spokeChain.folksChainId,
105
+ folksTokenId: spokeTokenData.folksTokenId,
106
+ tokenType: spokeTokenData.token.type,
107
+ amount,
108
+ },
109
+ ],
110
+ },
111
+ ]);
112
+ }
113
+ // get adapter fees
114
+ const adapterFees = await bridgeRouter.read.getSendFee([messageToSend]);
115
+ const value = spokeTokenData.token.type === TokenType.NATIVE ? amount : BigInt(0);
116
+ const msgValue = adapterFees + value;
117
+ // get gas limits
118
+ const gasLimit = await spokeToken.estimateGas.deposit([messageToSend.params, accountId, loanId, amount], {
119
+ value: msgValue,
120
+ ...transactionOptions,
121
+ stateOverride,
122
+ });
123
+ return {
124
+ msgValue,
125
+ gasLimit,
126
+ messageParams: messageToSend.params,
127
+ spokeTokenData: spokeTokenData,
128
+ };
129
+ },
130
+ async withdraw(provider, sender, messageToSend, network, accountId, loanId, folksTokenId, amount, isFAmount, receiverFolksChainId, spokeChain, transactionOptions = { account: sender }) {
131
+ const hubTokenData = getHubTokenData(folksTokenId, network);
132
+ const spokeCommonAddress = spokeChain.spokeCommonAddress;
133
+ const spokeCommon = getSpokeCommonContract(provider, spokeCommonAddress);
134
+ const spokeBridgeRouter = getBridgeRouterSpokeContract(provider, spokeChain.bridgeRouterAddress);
135
+ // get adapter fee
136
+ const msgValue = await spokeBridgeRouter.read.getSendFee([messageToSend]);
137
+ // get gas limits
138
+ const gasLimit = await spokeCommon.estimateGas.withdraw([messageToSend.params, accountId, loanId, hubTokenData.poolId, receiverFolksChainId, amount, isFAmount], {
139
+ value: msgValue,
140
+ ...transactionOptions,
141
+ });
142
+ return {
143
+ msgValue,
144
+ gasLimit,
145
+ messageParams: messageToSend.params,
146
+ spokeCommonAddress,
147
+ };
148
+ },
149
+ async borrow(provider, sender, messageToSend, network, accountId, loanId, folksTokenId, amount, maxStableRate, receiverFolksChainId, spokeChain, transactionOptions = { account: sender }) {
150
+ const hubTokenData = getHubTokenData(folksTokenId, network);
151
+ const spokeCommonAddress = spokeChain.spokeCommonAddress;
152
+ const spokeCommon = getSpokeCommonContract(provider, spokeCommonAddress);
153
+ const spokeBridgeRouter = getBridgeRouterSpokeContract(provider, spokeChain.bridgeRouterAddress);
154
+ // get adapter fee
155
+ const msgValue = await spokeBridgeRouter.read.getSendFee([messageToSend]);
156
+ // get gas limits
157
+ const gasLimit = await spokeCommon.estimateGas.borrow([messageToSend.params, accountId, loanId, hubTokenData.poolId, receiverFolksChainId, amount, maxStableRate], {
158
+ value: msgValue,
159
+ ...transactionOptions,
160
+ });
161
+ return {
162
+ msgValue,
163
+ gasLimit,
164
+ messageParams: messageToSend.params,
165
+ spokeCommonAddress,
166
+ };
167
+ },
168
+ async repay(provider, sender, messageToSend, accountId, loanId, amount, maxOverRepayment, spokeChain, spokeTokenData, transactionOptions = { account: sender }) {
169
+ const spokeToken = getSpokeTokenContract(provider, spokeTokenData.spokeAddress);
170
+ const bridgeRouter = getBridgeRouterSpokeContract(provider, spokeChain.bridgeRouterAddress);
171
+ const spender = convertFromGenericAddress(spokeTokenData.spokeAddress, ChainType.EVM);
172
+ // get state override
173
+ let stateOverride;
174
+ if (spokeTokenData.token.type === TokenType.ERC20 || spokeTokenData.token.type === TokenType.CIRCLE) {
175
+ const erc20Address = convertFromGenericAddress(spokeTokenData.token.address, ChainType.EVM);
176
+ stateOverride = getAllowanceStateOverride([
177
+ {
178
+ erc20Address,
179
+ stateDiff: [
180
+ {
181
+ owner: sender,
182
+ spender,
183
+ folksChainId: spokeChain.folksChainId,
184
+ folksTokenId: spokeTokenData.folksTokenId,
185
+ tokenType: spokeTokenData.token.type,
186
+ amount,
187
+ },
188
+ ],
189
+ },
190
+ ]);
191
+ }
192
+ // get adapter fees
193
+ const msgValue = await bridgeRouter.read.getSendFee([messageToSend]);
194
+ // get gas limits
195
+ const gasLimit = await spokeToken.estimateGas.repay([messageToSend.params, accountId, loanId, amount, maxOverRepayment], {
196
+ value: msgValue,
197
+ ...transactionOptions,
198
+ stateOverride,
199
+ });
200
+ return {
201
+ msgValue,
202
+ gasLimit,
203
+ messageParams: messageToSend.params,
204
+ spokeTokenData: spokeTokenData,
205
+ };
206
+ },
207
+ async repayWithCollateral(provider, sender, messageToSend, network, accountId, loanId, folksTokenId, amount, spokeChain, transactionOptions = { account: sender }) {
208
+ const hubTokenData = getHubTokenData(folksTokenId, network);
209
+ const spokeCommonAddress = spokeChain.spokeCommonAddress;
210
+ const spokeCommon = getSpokeCommonContract(provider, spokeCommonAddress);
211
+ const bridgeRouter = getBridgeRouterSpokeContract(provider, spokeChain.bridgeRouterAddress);
212
+ // get adapter fees
213
+ const msgValue = await bridgeRouter.read.getSendFee([messageToSend]);
214
+ // get gas limits
215
+ const gasLimit = await spokeCommon.estimateGas.repayWithCollateral([messageToSend.params, accountId, loanId, hubTokenData.poolId, amount], {
216
+ value: msgValue,
217
+ ...transactionOptions,
218
+ });
219
+ return {
220
+ msgValue,
221
+ gasLimit,
222
+ messageParams: messageToSend.params,
223
+ spokeCommonAddress,
224
+ };
225
+ },
226
+ async switchBorrowType(provider, sender, messageToSend, network, accountId, loanId, folksTokenId, maxStableRate, spokeChain, transactionOptions = { account: sender }) {
227
+ const hubTokenData = getHubTokenData(folksTokenId, network);
228
+ const spokeCommonAddress = spokeChain.spokeCommonAddress;
229
+ const spokeCommon = getSpokeCommonContract(provider, spokeCommonAddress);
230
+ const bridgeRouter = getBridgeRouterSpokeContract(provider, spokeChain.bridgeRouterAddress);
231
+ // get adapter fees
232
+ const msgValue = await bridgeRouter.read.getSendFee([messageToSend]);
233
+ // get gas limits
234
+ const gasLimit = await spokeCommon.estimateGas.switchBorrowType([messageToSend.params, accountId, loanId, hubTokenData.poolId, maxStableRate], {
235
+ value: msgValue,
236
+ ...transactionOptions,
237
+ });
238
+ return {
239
+ msgValue,
240
+ gasLimit,
241
+ messageParams: messageToSend.params,
242
+ spokeCommonAddress,
243
+ };
244
+ },
245
+ };
246
+ export const write = {
247
+ async createLoan(provider, signer, accountId, loanId, loanTypeId, loanName, prepareCall) {
248
+ const { msgValue, gasLimit, messageParams, spokeCommonAddress } = prepareCall;
249
+ const spokeCommon = getSpokeCommonContract(provider, spokeCommonAddress, signer);
250
+ return await spokeCommon.write.createLoan([messageParams, accountId, loanId, loanTypeId, loanName], {
251
+ account: getEvmSignerAccount(signer),
252
+ chain: signer.chain,
253
+ gas: gasLimit,
254
+ value: msgValue,
255
+ });
256
+ },
257
+ async deleteLoan(provider, signer, accountId, loanId, prepareCall) {
258
+ const { msgValue, gasLimit, messageParams, spokeCommonAddress } = prepareCall;
259
+ const spokeCommon = getSpokeCommonContract(provider, spokeCommonAddress, signer);
260
+ return await spokeCommon.write.deleteLoan([messageParams, accountId, loanId], {
261
+ account: getEvmSignerAccount(signer),
262
+ chain: signer.chain,
263
+ gas: gasLimit,
264
+ value: msgValue,
265
+ });
266
+ },
267
+ async createLoanAndDeposit(provider, signer, accountId, loanId, loanTypeId, loanName, amount, includeApprove = true, prepareCall) {
268
+ const { msgValue, gasLimit, messageParams, spokeTokenData } = prepareCall;
269
+ const { token } = spokeTokenData;
270
+ const spokeToken = getSpokeTokenContract(provider, spokeTokenData.spokeAddress, signer);
271
+ if (includeApprove && (token.type === TokenType.CIRCLE || token.type === TokenType.ERC20)) {
272
+ const approveTxId = await sendERC20Approve(provider, token.address, signer, convertFromGenericAddress(spokeTokenData.spokeAddress, ChainType.EVM), amount);
273
+ if (approveTxId !== null)
274
+ await waitForTransactionReceipt(provider, { hash: approveTxId });
275
+ }
276
+ return await spokeToken.write.createLoanAndDeposit([messageParams, accountId, loanId, amount, loanTypeId, loanName], {
277
+ account: getEvmSignerAccount(signer),
278
+ chain: signer.chain,
279
+ gas: gasLimit,
280
+ value: msgValue,
281
+ });
282
+ },
283
+ async deposit(provider, signer, accountId, loanId, amount, includeApprove = true, prepareCall) {
284
+ const { msgValue, gasLimit, messageParams, spokeTokenData } = prepareCall;
285
+ const { token } = spokeTokenData;
286
+ const spokeToken = getSpokeTokenContract(provider, spokeTokenData.spokeAddress, signer);
287
+ if (includeApprove && (token.type === TokenType.CIRCLE || token.type === TokenType.ERC20)) {
288
+ const approveTxId = await sendERC20Approve(provider, token.address, signer, convertFromGenericAddress(spokeTokenData.spokeAddress, ChainType.EVM), amount);
289
+ if (approveTxId !== null)
290
+ await waitForTransactionReceipt(provider, { hash: approveTxId });
291
+ }
292
+ return await spokeToken.write.deposit([messageParams, accountId, loanId, amount], {
293
+ account: getEvmSignerAccount(signer),
294
+ chain: signer.chain,
295
+ gas: gasLimit,
296
+ value: msgValue,
297
+ });
298
+ },
299
+ async withdraw(provider, signer, accountId, loanId, poolId, amount, isFAmount, receiverChainId, prepareCall) {
300
+ const { msgValue, gasLimit, messageParams, spokeCommonAddress } = prepareCall;
301
+ const spokeCommon = getSpokeCommonContract(provider, spokeCommonAddress, signer);
302
+ return await spokeCommon.write.withdraw([messageParams, accountId, loanId, poolId, receiverChainId, amount, isFAmount], {
303
+ account: getEvmSignerAccount(signer),
304
+ chain: signer.chain,
305
+ gas: gasLimit,
306
+ value: msgValue,
307
+ });
308
+ },
309
+ async borrow(provider, signer, accountId, loanId, poolId, amount, maxStableRate, receiverChainId, prepareCall) {
310
+ const { msgValue, gasLimit, messageParams, spokeCommonAddress } = prepareCall;
311
+ const spokeCommon = getSpokeCommonContract(provider, spokeCommonAddress, signer);
312
+ return await spokeCommon.write.borrow([messageParams, accountId, loanId, poolId, receiverChainId, amount, maxStableRate], {
313
+ account: getEvmSignerAccount(signer),
314
+ chain: signer.chain,
315
+ gas: gasLimit,
316
+ value: msgValue,
317
+ });
318
+ },
319
+ async repay(provider, signer, accountId, loanId, amount, maxOverRepayment, includeApprove = true, prepareCall) {
320
+ const { msgValue, gasLimit, messageParams, spokeTokenData } = prepareCall;
321
+ const { token } = spokeTokenData;
322
+ const spokeToken = getSpokeTokenContract(provider, spokeTokenData.spokeAddress, signer);
323
+ if (includeApprove && (token.type === TokenType.CIRCLE || token.type === TokenType.ERC20)) {
324
+ const approveTxId = await sendERC20Approve(provider, token.address, signer, convertFromGenericAddress(spokeTokenData.spokeAddress, ChainType.EVM), amount);
325
+ if (approveTxId !== null)
326
+ await waitForTransactionReceipt(provider, { hash: approveTxId });
327
+ }
328
+ return await spokeToken.write.repay([messageParams, accountId, loanId, amount, maxOverRepayment], {
329
+ account: getEvmSignerAccount(signer),
330
+ chain: signer.chain,
331
+ gas: gasLimit,
332
+ value: msgValue,
333
+ });
334
+ },
335
+ async repayWithCollateral(provider, signer, accountId, loanId, poolId, amount, prepareCall) {
336
+ const { msgValue, gasLimit, messageParams, spokeCommonAddress } = prepareCall;
337
+ const spokeCommon = getSpokeCommonContract(provider, spokeCommonAddress, signer);
338
+ return await spokeCommon.write.repayWithCollateral([messageParams, accountId, loanId, poolId, amount], {
339
+ account: getEvmSignerAccount(signer),
340
+ chain: signer.chain,
341
+ gas: gasLimit,
342
+ value: msgValue,
343
+ });
344
+ },
345
+ async switchBorrowType(provider, signer, accountId, loanId, poolId, maxStableRate, prepareCall) {
346
+ const { msgValue, gasLimit, messageParams, spokeCommonAddress } = prepareCall;
347
+ const spokeCommon = getSpokeCommonContract(provider, spokeCommonAddress, signer);
348
+ return await spokeCommon.write.switchBorrowType([messageParams, accountId, loanId, poolId, maxStableRate], {
349
+ account: getEvmSignerAccount(signer),
350
+ chain: signer.chain,
351
+ gas: gasLimit,
352
+ value: msgValue,
353
+ });
354
+ },
355
+ };
356
+ export const read = {
357
+ async rateLimitInfo(provider, token) {
358
+ const spokeToken = getSpokeTokenContract(provider, token.spokeAddress);
359
+ // get rate limit data
360
+ const [bucketConfig, oldPeriodNumber, oldCurrentCapacity] = await multicall(provider, {
361
+ contracts: [
362
+ {
363
+ address: spokeToken.address,
364
+ abi: spokeToken.abi,
365
+ functionName: "bucketConfig",
366
+ },
367
+ {
368
+ address: spokeToken.address,
369
+ abi: spokeToken.abi,
370
+ functionName: "currentPeriodNumber",
371
+ },
372
+ {
373
+ address: spokeToken.address,
374
+ abi: spokeToken.abi,
375
+ functionName: "currentCapacity",
376
+ },
377
+ ],
378
+ allowFailure: false,
379
+ });
380
+ // TODO consider min limit
381
+ const [periodLength, periodOffset, periodLimit] = bucketConfig;
382
+ const newPeriodNumber = calcPeriodNumber(BigInt(periodOffset), BigInt(periodLength));
383
+ const isNewPeriod = newPeriodNumber !== BigInt(oldPeriodNumber);
384
+ const currentCapacity = isNewPeriod ? periodLimit : oldCurrentCapacity;
385
+ const nextPeriodReset = calcNextPeriodReset(newPeriodNumber, BigInt(periodOffset), BigInt(periodLength));
386
+ // build rate limit info
387
+ return {
388
+ periodLength: BigInt(periodLength),
389
+ periodOffset: BigInt(periodOffset),
390
+ periodLimit: BigInt(periodLimit),
391
+ currentCapacity,
392
+ nextPeriodReset,
393
+ };
394
+ },
395
+ };
396
+ //# sourceMappingURL=folks-evm-loan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folks-evm-loan.js","sourceRoot":"","sources":["../../../../../src/chains/evm/spoke/modules/folks-evm-loan.ts"],"names":[],"mappings":"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"}
@@ -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,4 @@
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";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/chains/evm/spoke/modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAC"}
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../../../../src/chains/evm/spoke/types/pool.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import { BridgeRouterSpokeAbi } from "../constants/abi/bridge-router-spoke-abi.js";
2
+ import { SpokeCommonAbi } from "../constants/abi/spoke-common-abi.js";
3
+ import { SpokeTokenAbi } from "../constants/abi/spoke-token-abi.js";
4
+ import type { GenericAddress } from "../../../../common/types/address.js";
5
+ import type { GetReadContractReturnType } from "../../common/types/contract.js";
6
+ import type { GetContractReturnType, Client, WalletClient } from "viem";
7
+ export declare function getSpokeCommonContract(provider: Client, address: GenericAddress): GetReadContractReturnType<typeof SpokeCommonAbi>;
8
+ export declare function getSpokeCommonContract(provider: Client, address: GenericAddress, signer: WalletClient): GetContractReturnType<typeof SpokeCommonAbi, Client>;
9
+ export declare function getBridgeRouterSpokeContract(provider: Client, address: GenericAddress): GetReadContractReturnType<typeof BridgeRouterSpokeAbi>;
10
+ export declare function getBridgeRouterSpokeContract(provider: Client, address: GenericAddress, signer: WalletClient): GetContractReturnType<typeof BridgeRouterSpokeAbi, Client>;
11
+ export declare function getSpokeTokenContract(provider: Client, address: GenericAddress): GetReadContractReturnType<typeof SpokeTokenAbi>;
12
+ export declare function getSpokeTokenContract(provider: Client, address: GenericAddress, signer: WalletClient): GetContractReturnType<typeof SpokeTokenAbi, Client>;
@@ -0,0 +1,28 @@
1
+ import { getContract } from "viem";
2
+ import { ChainType } from "../../../../common/types/chain.js";
3
+ import { convertFromGenericAddress } from "../../../../common/utils/address.js";
4
+ import { BridgeRouterSpokeAbi } from "../constants/abi/bridge-router-spoke-abi.js";
5
+ import { SpokeCommonAbi } from "../constants/abi/spoke-common-abi.js";
6
+ import { SpokeTokenAbi } from "../constants/abi/spoke-token-abi.js";
7
+ export function getSpokeCommonContract(provider, address, signer) {
8
+ return getContract({
9
+ abi: SpokeCommonAbi,
10
+ address: convertFromGenericAddress(address, ChainType.EVM),
11
+ client: { wallet: signer, public: provider },
12
+ });
13
+ }
14
+ export function getBridgeRouterSpokeContract(provider, address, signer) {
15
+ return getContract({
16
+ abi: BridgeRouterSpokeAbi,
17
+ address: convertFromGenericAddress(address, ChainType.EVM),
18
+ client: { wallet: signer, public: provider },
19
+ });
20
+ }
21
+ export function getSpokeTokenContract(provider, address, signer) {
22
+ return getContract({
23
+ abi: SpokeTokenAbi,
24
+ address: convertFromGenericAddress(address, ChainType.EVM),
25
+ client: { wallet: signer, public: provider },
26
+ });
27
+ }
28
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../../../src/chains/evm/spoke/utils/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAepE,MAAM,UAAU,sBAAsB,CACpC,QAAgB,EAChB,OAAuB,EACvB,MAAqB;IAErB,OAAO,WAAW,CAAC;QACjB,GAAG,EAAE,cAAc;QACnB,OAAO,EAAE,yBAAyB,CAAgB,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC;QACzE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;KAC7C,CAAC,CAAC;AACL,CAAC;AAWD,MAAM,UAAU,4BAA4B,CAC1C,QAAgB,EAChB,OAAuB,EACvB,MAAqB;IAErB,OAAO,WAAW,CAAC;QACjB,GAAG,EAAE,oBAAoB;QACzB,OAAO,EAAE,yBAAyB,CAAgB,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC;QACzE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;KAC7C,CAAC,CAAC;AACL,CAAC;AAWD,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,OAAuB,EACvB,MAAqB;IAErB,OAAO,WAAW,CAAC;QACjB,GAAG,EAAE,aAAa;QAClB,OAAO,EAAE,yBAAyB,CAAgB,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC;QACzE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;KAC7C,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { AdapterType } from "../types/message.js";
2
+ export declare const TOKEN_ADAPTERS: AdapterType[];
3
+ export declare const DATA_ADAPTERS: AdapterType[];
4
+ export declare const HUB_ADAPTERS: AdapterType[];
@@ -0,0 +1,5 @@
1
+ import { AdapterType } from "../types/message.js";
2
+ export const TOKEN_ADAPTERS = [AdapterType.WORMHOLE_CCTP, AdapterType.CCIP_TOKEN];
3
+ export const DATA_ADAPTERS = [AdapterType.WORMHOLE_DATA, AdapterType.CCIP_DATA];
4
+ export const HUB_ADAPTERS = [AdapterType.HUB];
5
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/common/constants/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;AAClF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const UINT8_LENGTH = 1;
2
+ export declare const UINT16_LENGTH = 2;
3
+ export declare const UINT256_LENGTH = 32;
4
+ export declare const BYTES32_LENGTH = 32;
5
+ export declare const EVM_ADDRESS_BYTES_LENGTH = 20;
@@ -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
+ export const EVM_ADDRESS_BYTES_LENGTH = 20;
6
+ //# sourceMappingURL=bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../../src/common/constants/bytes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAC/B,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { NetworkType } from "../types/chain.js";
2
+ import type { FolksChainId, FolksChain, SpokeChain } from "../types/chain.js";
3
+ export declare const MAINNET_FOLKS_CHAIN_ID: {};
4
+ export declare const TESTNET_FOLKS_CHAIN_ID: {
5
+ readonly AVALANCHE_FUJI: 1;
6
+ readonly ETHEREUM_SEPOLIA: 6;
7
+ readonly BASE_SEPOLIA: 7;
8
+ };
9
+ export declare const FOLKS_CHAIN_ID: {
10
+ readonly AVALANCHE_FUJI: 1;
11
+ readonly ETHEREUM_SEPOLIA: 6;
12
+ readonly BASE_SEPOLIA: 7;
13
+ };
14
+ export declare const FOLKS_CHAIN: Record<NetworkType, Partial<Record<FolksChainId, FolksChain>>>;
15
+ export declare const SPOKE_CHAIN: Record<NetworkType, Partial<Record<FolksChainId, SpokeChain>>>;