@instadapp/interop-x 0.0.0-dev.eb2b141 → 0.0.0-dev.ef38dfb

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 (290) hide show
  1. package/.github/workflows/ci.yml +19 -0
  2. package/dist/package.json +20 -15
  3. package/dist/src/abi/connectors/index.js +36 -0
  4. package/dist/src/abi/connectors/v1/aave.js +148 -0
  5. package/dist/src/abi/connectors/v1/aave_claim.js +4 -0
  6. package/dist/src/abi/connectors/v1/aave_migrate.js +109 -0
  7. package/dist/src/abi/connectors/v1/aave_polygon_migrate.js +110 -0
  8. package/dist/src/abi/connectors/v1/aave_stake.js +4 -0
  9. package/dist/src/abi/connectors/v1/aave_v1_import.js +54 -0
  10. package/dist/src/abi/connectors/v1/aave_v2.js +230 -0
  11. package/dist/src/abi/connectors/v1/aave_v2_import.js +59 -0
  12. package/dist/src/abi/connectors/v1/authority.js +100 -0
  13. package/dist/src/abi/connectors/v1/basic.js +136 -0
  14. package/dist/src/abi/connectors/v1/chi.js +36 -0
  15. package/dist/src/abi/connectors/v1/comp.js +4 -0
  16. package/dist/src/abi/connectors/v1/compound.js +4 -0
  17. package/dist/src/abi/connectors/v1/compoundImport.js +69 -0
  18. package/dist/src/abi/connectors/v1/compoundImport_v2.js +4 -0
  19. package/dist/src/abi/connectors/v1/compound_old.js +448 -0
  20. package/dist/src/abi/connectors/v1/curve.js +140 -0
  21. package/dist/src/abi/connectors/v1/curve_claim.js +63 -0
  22. package/dist/src/abi/connectors/v1/curve_gauge.js +158 -0
  23. package/dist/src/abi/connectors/v1/curve_sbtc.js +140 -0
  24. package/dist/src/abi/connectors/v1/curve_susd.js +140 -0
  25. package/dist/src/abi/connectors/v1/curve_three.js +79 -0
  26. package/dist/src/abi/connectors/v1/curve_y.js +140 -0
  27. package/dist/src/abi/connectors/v1/dsa_migrate_v1_to_v2.js +4 -0
  28. package/dist/src/abi/connectors/v1/dydx.js +148 -0
  29. package/dist/src/abi/connectors/v1/dydx_flash.js +52 -0
  30. package/dist/src/abi/connectors/v1/fee.js +50 -0
  31. package/dist/src/abi/connectors/v1/gelato.js +1138 -0
  32. package/dist/src/abi/connectors/v1/index.js +58 -0
  33. package/dist/src/abi/connectors/v1/instapool.js +439 -0
  34. package/dist/src/abi/connectors/v1/instapool_v2.js +126 -0
  35. package/dist/src/abi/connectors/v1/kyber.js +117 -0
  36. package/dist/src/abi/connectors/v1/maker.js +480 -0
  37. package/dist/src/abi/connectors/v1/maker_old.js +300 -0
  38. package/dist/src/abi/connectors/v1/math.js +43 -0
  39. package/dist/src/abi/connectors/v1/migrate.js +46 -0
  40. package/dist/src/abi/connectors/v1/oasis.js +198 -0
  41. package/dist/src/abi/connectors/v1/oneInch.js +160 -0
  42. package/dist/src/abi/connectors/v1/polygon_bridge.js +4 -0
  43. package/dist/src/abi/connectors/v1/refinance.js +4 -0
  44. package/dist/src/abi/connectors/v1/staking.js +220 -0
  45. package/dist/src/abi/connectors/v1/swerve.js +179 -0
  46. package/dist/src/abi/connectors/v1/uniswap.js +297 -0
  47. package/dist/src/abi/connectors/v2/1INCH-A.js +4 -0
  48. package/dist/src/abi/connectors/v2/1INCH-B.js +4 -0
  49. package/dist/src/abi/connectors/v2/AAVE-CLAIM-A.js +4 -0
  50. package/dist/src/abi/connectors/v2/AAVE-CLAIM-B.js +166 -0
  51. package/dist/src/abi/connectors/v2/AAVE-STAKE-A.js +4 -0
  52. package/dist/src/abi/connectors/v2/AAVE-V1-A.js +130 -0
  53. package/dist/src/abi/connectors/v2/AAVE-V1-IMPORT-A.js +4 -0
  54. package/dist/src/abi/connectors/v2/AAVE-V2-A.js +230 -0
  55. package/dist/src/abi/connectors/v2/AAVE-V2-IMPORT-A.js +4 -0
  56. package/dist/src/abi/connectors/v2/AAVE-V2-IMPORT-B.js +225 -0
  57. package/dist/src/abi/connectors/v2/AUTHORITY-A.js +100 -0
  58. package/dist/src/abi/connectors/v2/B-COMPOUND-A.js +4 -0
  59. package/dist/src/abi/connectors/v2/B-LIQUITY-A.js +4 -0
  60. package/dist/src/abi/connectors/v2/B-MAKERDAO-A.js +4 -0
  61. package/dist/src/abi/connectors/v2/BASIC-A.js +136 -0
  62. package/dist/src/abi/connectors/v2/BASIC-B.js +4 -0
  63. package/dist/src/abi/connectors/v2/BASIC-C.js +4 -0
  64. package/dist/src/abi/connectors/v2/COMP-A.js +4 -0
  65. package/dist/src/abi/connectors/v2/COMPOUND-A.js +4 -0
  66. package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-A.js +4 -0
  67. package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-B.js +195 -0
  68. package/dist/src/abi/connectors/v2/G-UNISWAP-A.js +4 -0
  69. package/dist/src/abi/connectors/v2/GELATO-AAVE-A.js +4 -0
  70. package/dist/src/abi/connectors/v2/INST-A.js +4 -0
  71. package/dist/src/abi/connectors/v2/INST-LM-A.js +4 -0
  72. package/dist/src/abi/connectors/v2/INST-STAKING-A.js +4 -0
  73. package/dist/src/abi/connectors/v2/INST-STAKING-B.js +4 -0
  74. package/dist/src/abi/connectors/v2/INSTAPOOL-A.js +4 -0
  75. package/dist/src/abi/connectors/v2/LIQUITY-A.js +4 -0
  76. package/dist/src/abi/connectors/v2/MAKERDAO-A.js +4 -0
  77. package/dist/src/abi/connectors/v2/MAKERDAO-CLAIM-A.js +136 -0
  78. package/dist/src/abi/connectors/v2/PARASWAP-A.js +4 -0
  79. package/dist/src/abi/connectors/v2/POLYGON-BRIDGE-A.js +4 -0
  80. package/dist/src/abi/connectors/v2/REFINANCE-A.js +4 -0
  81. package/dist/src/abi/connectors/v2/REFLEXER-A.js +4 -0
  82. package/dist/src/abi/connectors/v2/STAKE-ERC20-A.js +4 -0
  83. package/dist/src/abi/connectors/v2/UNISWAP-A.js +297 -0
  84. package/dist/src/abi/connectors/v2/UNISWAP-V2-A.js +4 -0
  85. package/dist/src/abi/connectors/v2/UNISWAP-V3-A.js +4 -0
  86. package/dist/src/abi/connectors/v2/UNISWAP-V3-STAKE-A.js +4 -0
  87. package/dist/src/abi/connectors/v2/WETH-A.js +4 -0
  88. package/dist/src/abi/connectors/v2/YEARN-VAULT-A.js +4 -0
  89. package/dist/src/abi/connectors/v2/index.js +89 -0
  90. package/dist/src/abi/index.js +6 -4
  91. package/dist/src/abi/instList.json +232 -0
  92. package/dist/src/abi/interopX.json +1436 -0
  93. package/dist/src/alias.js +10 -0
  94. package/dist/src/api/index.js +13 -3
  95. package/dist/src/config/index.js +11 -1
  96. package/dist/src/constants/addresses.js +6 -7
  97. package/dist/src/constants/blockConfirmations.js +8 -0
  98. package/dist/src/constants/index.js +1 -1
  99. package/dist/src/constants/tokens.js +62 -39
  100. package/dist/src/db/models/transaction.js +41 -15
  101. package/dist/src/errors/index.js +10 -0
  102. package/dist/src/gnosis/actions/aaveV2/index.js +11 -0
  103. package/dist/src/gnosis/actions/aaveV2/source.js +73 -0
  104. package/dist/src/gnosis/actions/aaveV2/target.js +86 -0
  105. package/dist/src/gnosis/actions/index.js +9 -0
  106. package/dist/src/gnosis/index.js +20 -0
  107. package/dist/src/index.js +45 -23
  108. package/dist/src/net/peer/index.js +2 -1
  109. package/dist/src/net/pool/index.js +7 -2
  110. package/dist/src/net/protocol/dial/SignatureDialProtocol.js +9 -10
  111. package/dist/src/net/protocol/dial/TransactionStatusDialProtocol.js +30 -0
  112. package/dist/src/net/protocol/index.js +26 -5
  113. package/dist/src/tasks/AutoUpdateTask.js +70 -0
  114. package/dist/src/tasks/BaseTask.js +11 -3
  115. package/dist/src/tasks/InteropX/ProcessSubmitSubmitEvents.js +180 -0
  116. package/dist/src/tasks/InteropX/ProcessValidateEvents.js +184 -0
  117. package/dist/src/tasks/InteropX/SyncLogExecuteEvents.js +112 -0
  118. package/dist/src/tasks/InteropX/SyncLogSubmitEvents.js +87 -0
  119. package/dist/src/tasks/InteropX/SyncLogValidateEvents.js +105 -0
  120. package/dist/src/tasks/Transactions/SyncTransactionStatusTask.js +58 -0
  121. package/dist/src/tasks/index.js +23 -17
  122. package/dist/src/typechain/{InteropBridgeToken.js → InstList.js} +0 -0
  123. package/dist/src/typechain/{InteropXGateway.js → InteropX.js} +0 -0
  124. package/dist/src/typechain/factories/InstList__factory.js +249 -0
  125. package/dist/src/typechain/factories/InteropX__factory.js +1928 -0
  126. package/dist/src/typechain/factories/index.js +5 -5
  127. package/dist/src/typechain/index.js +5 -5
  128. package/dist/src/utils/async.js +18 -0
  129. package/dist/src/utils/dsa.js +24 -0
  130. package/dist/src/utils/formatting.js +17 -0
  131. package/dist/src/utils/gnosis.js +62 -0
  132. package/dist/src/utils/http.js +10 -0
  133. package/dist/src/utils/index.js +20 -225
  134. package/dist/src/utils/interop.js +16 -0
  135. package/dist/src/utils/web3.js +92 -0
  136. package/package.json +20 -15
  137. package/src/abi/connectors/index.ts +14 -0
  138. package/src/abi/connectors/v1/aave.ts +147 -0
  139. package/src/abi/connectors/v1/aave_claim.ts +3 -0
  140. package/src/abi/connectors/v1/aave_migrate.ts +108 -0
  141. package/src/abi/connectors/v1/aave_polygon_migrate.ts +109 -0
  142. package/src/abi/connectors/v1/aave_stake.ts +3 -0
  143. package/src/abi/connectors/v1/aave_v1_import.ts +53 -0
  144. package/src/abi/connectors/v1/aave_v2.ts +229 -0
  145. package/src/abi/connectors/v1/aave_v2_import.ts +58 -0
  146. package/src/abi/connectors/v1/authority.ts +99 -0
  147. package/src/abi/connectors/v1/basic.ts +135 -0
  148. package/src/abi/connectors/v1/chi.ts +35 -0
  149. package/src/abi/connectors/v1/comp.ts +3 -0
  150. package/src/abi/connectors/v1/compound.ts +3 -0
  151. package/src/abi/connectors/v1/compoundImport.ts +68 -0
  152. package/src/abi/connectors/v1/compoundImport_v2.ts +3 -0
  153. package/src/abi/connectors/v1/compound_old.ts +447 -0
  154. package/src/abi/connectors/v1/curve.ts +139 -0
  155. package/src/abi/connectors/v1/curve_claim.ts +62 -0
  156. package/src/abi/connectors/v1/curve_gauge.ts +157 -0
  157. package/src/abi/connectors/v1/curve_sbtc.ts +139 -0
  158. package/src/abi/connectors/v1/curve_susd.ts +139 -0
  159. package/src/abi/connectors/v1/curve_three.ts +78 -0
  160. package/src/abi/connectors/v1/curve_y.ts +139 -0
  161. package/src/abi/connectors/v1/dsa_migrate_v1_to_v2.ts +3 -0
  162. package/src/abi/connectors/v1/dydx.ts +147 -0
  163. package/src/abi/connectors/v1/dydx_flash.ts +51 -0
  164. package/src/abi/connectors/v1/fee.ts +49 -0
  165. package/src/abi/connectors/v1/gelato.ts +1137 -0
  166. package/src/abi/connectors/v1/index.ts +42 -0
  167. package/src/abi/connectors/v1/instapool.ts +438 -0
  168. package/src/abi/connectors/v1/instapool_v2.ts +125 -0
  169. package/src/abi/connectors/v1/kyber.ts +116 -0
  170. package/src/abi/connectors/v1/maker.ts +479 -0
  171. package/src/abi/connectors/v1/maker_old.ts +299 -0
  172. package/src/abi/connectors/v1/math.ts +42 -0
  173. package/src/abi/connectors/v1/migrate.ts +45 -0
  174. package/src/abi/connectors/v1/oasis.ts +197 -0
  175. package/src/abi/connectors/v1/oneInch.ts +159 -0
  176. package/src/abi/connectors/v1/polygon_bridge.ts +3 -0
  177. package/src/abi/connectors/v1/refinance.ts +3 -0
  178. package/src/abi/connectors/v1/staking.ts +219 -0
  179. package/src/abi/connectors/v1/swerve.ts +178 -0
  180. package/src/abi/connectors/v1/uniswap.ts +297 -0
  181. package/src/abi/connectors/v2/1INCH-A.ts +3 -0
  182. package/src/abi/connectors/v2/1INCH-B.ts +3 -0
  183. package/src/abi/connectors/v2/AAVE-CLAIM-A.ts +3 -0
  184. package/src/abi/connectors/v2/AAVE-CLAIM-B.ts +165 -0
  185. package/src/abi/connectors/v2/AAVE-STAKE-A.ts +3 -0
  186. package/src/abi/connectors/v2/AAVE-V1-A.ts +130 -0
  187. package/src/abi/connectors/v2/AAVE-V1-IMPORT-A.ts +3 -0
  188. package/src/abi/connectors/v2/AAVE-V2-A.ts +229 -0
  189. package/src/abi/connectors/v2/AAVE-V2-IMPORT-A.ts +3 -0
  190. package/src/abi/connectors/v2/AAVE-V2-IMPORT-B.ts +224 -0
  191. package/src/abi/connectors/v2/AUTHORITY-A.ts +99 -0
  192. package/src/abi/connectors/v2/B-COMPOUND-A.ts +3 -0
  193. package/src/abi/connectors/v2/B-LIQUITY-A.ts +3 -0
  194. package/src/abi/connectors/v2/B-MAKERDAO-A.ts +3 -0
  195. package/src/abi/connectors/v2/BASIC-A.ts +135 -0
  196. package/src/abi/connectors/v2/BASIC-B.ts +3 -0
  197. package/src/abi/connectors/v2/BASIC-C.ts +3 -0
  198. package/src/abi/connectors/v2/COMP-A.ts +3 -0
  199. package/src/abi/connectors/v2/COMPOUND-A.ts +3 -0
  200. package/src/abi/connectors/v2/COMPOUND-IMPORT-A.ts +3 -0
  201. package/src/abi/connectors/v2/COMPOUND-IMPORT-B.ts +194 -0
  202. package/src/abi/connectors/v2/G-UNISWAP-A.ts +3 -0
  203. package/src/abi/connectors/v2/GELATO-AAVE-A.ts +3 -0
  204. package/src/abi/connectors/v2/INST-A.ts +3 -0
  205. package/src/abi/connectors/v2/INST-LM-A.ts +3 -0
  206. package/src/abi/connectors/v2/INST-STAKING-A.ts +3 -0
  207. package/src/abi/connectors/v2/INST-STAKING-B.ts +3 -0
  208. package/src/abi/connectors/v2/INSTAPOOL-A.ts +3 -0
  209. package/src/abi/connectors/v2/LIQUITY-A.ts +3 -0
  210. package/src/abi/connectors/v2/MAKERDAO-A.ts +3 -0
  211. package/src/abi/connectors/v2/MAKERDAO-CLAIM-A.ts +135 -0
  212. package/src/abi/connectors/v2/PARASWAP-A.ts +3 -0
  213. package/src/abi/connectors/v2/POLYGON-BRIDGE-A.ts +3 -0
  214. package/src/abi/connectors/v2/REFINANCE-A.ts +3 -0
  215. package/src/abi/connectors/v2/REFLEXER-A.ts +3 -0
  216. package/src/abi/connectors/v2/STAKE-ERC20-A.ts +3 -0
  217. package/src/abi/connectors/v2/UNISWAP-A.ts +297 -0
  218. package/src/abi/connectors/v2/UNISWAP-V2-A.ts +3 -0
  219. package/src/abi/connectors/v2/UNISWAP-V3-A.ts +3 -0
  220. package/src/abi/connectors/v2/UNISWAP-V3-STAKE-A.ts +3 -0
  221. package/src/abi/connectors/v2/WETH-A.ts +3 -0
  222. package/src/abi/connectors/v2/YEARN-VAULT-A.ts +3 -0
  223. package/src/abi/connectors/v2/index.ts +87 -0
  224. package/src/abi/index.ts +9 -7
  225. package/src/abi/instList.json +232 -0
  226. package/src/abi/interopX.json +1436 -0
  227. package/src/alias.ts +6 -0
  228. package/src/api/index.ts +13 -2
  229. package/src/config/index.ts +11 -1
  230. package/src/constants/addresses.ts +7 -8
  231. package/src/constants/blockConfirmations.ts +5 -0
  232. package/src/constants/index.ts +1 -1
  233. package/src/constants/tokens.ts +63 -40
  234. package/src/db/models/transaction.ts +159 -65
  235. package/src/errors/index.ts +6 -0
  236. package/src/gnosis/actions/aaveV2/index.ts +9 -0
  237. package/src/gnosis/actions/aaveV2/source.ts +118 -0
  238. package/src/gnosis/actions/aaveV2/target.ts +141 -0
  239. package/src/gnosis/actions/index.ts +5 -0
  240. package/src/gnosis/index.ts +19 -0
  241. package/src/index.ts +59 -25
  242. package/src/net/peer/index.ts +2 -1
  243. package/src/net/pool/index.ts +7 -3
  244. package/src/net/protocol/dial/SignatureDialProtocol.ts +12 -13
  245. package/src/net/protocol/dial/TransactionStatusDialProtocol.ts +33 -0
  246. package/src/net/protocol/index.ts +28 -6
  247. package/src/tasks/AutoUpdateTask.ts +82 -0
  248. package/src/tasks/BaseTask.ts +13 -3
  249. package/src/tasks/InteropX/ProcessSubmitSubmitEvents.ts +269 -0
  250. package/src/tasks/InteropX/ProcessValidateEvents.ts +274 -0
  251. package/src/tasks/InteropX/SyncLogExecuteEvents.ts +162 -0
  252. package/src/tasks/InteropX/SyncLogSubmitEvents.ts +139 -0
  253. package/src/tasks/InteropX/SyncLogValidateEvents.ts +152 -0
  254. package/src/tasks/Transactions/SyncTransactionStatusTask.ts +70 -0
  255. package/src/tasks/index.ts +32 -21
  256. package/src/typechain/InstList.ts +402 -0
  257. package/src/typechain/InteropX.ts +1216 -0
  258. package/src/typechain/factories/InstList__factory.ts +253 -0
  259. package/src/typechain/factories/InteropX__factory.ts +1932 -0
  260. package/src/typechain/factories/index.ts +2 -2
  261. package/src/typechain/index.ts +4 -4
  262. package/src/utils/async.ts +22 -0
  263. package/src/utils/dsa.ts +30 -0
  264. package/src/utils/formatting.ts +15 -0
  265. package/src/utils/gnosis.ts +123 -0
  266. package/src/utils/http.ts +6 -0
  267. package/src/utils/index.ts +7 -307
  268. package/src/utils/interop.ts +28 -0
  269. package/src/utils/web3.ts +131 -0
  270. package/tsconfig.json +7 -2
  271. package/dist/src/abi/interopBridgeToken.json +0 -286
  272. package/dist/src/abi/interopXGateway.json +0 -184
  273. package/dist/src/constants/itokens.js +0 -13
  274. package/dist/src/tasks/InteropBridge/ProcessWithdrawEvents.js +0 -147
  275. package/dist/src/tasks/InteropBridge/SyncWithdrawEvents.js +0 -70
  276. package/dist/src/tasks/InteropXGateway/ProcessDepositEvents.js +0 -150
  277. package/dist/src/tasks/InteropXGateway/SyncDepositEvents.js +0 -75
  278. package/dist/src/typechain/factories/InteropBridgeToken__factory.js +0 -459
  279. package/dist/src/typechain/factories/InteropXGateway__factory.js +0 -265
  280. package/src/abi/interopBridgeToken.json +0 -286
  281. package/src/abi/interopXGateway.json +0 -184
  282. package/src/constants/itokens.ts +0 -10
  283. package/src/tasks/InteropBridge/ProcessWithdrawEvents.ts +0 -233
  284. package/src/tasks/InteropBridge/SyncWithdrawEvents.ts +0 -121
  285. package/src/tasks/InteropXGateway/ProcessDepositEvents.ts +0 -245
  286. package/src/tasks/InteropXGateway/SyncDepositEvents.ts +0 -126
  287. package/src/typechain/InteropBridgeToken.ts +0 -686
  288. package/src/typechain/InteropXGateway.ts +0 -407
  289. package/src/typechain/factories/InteropBridgeToken__factory.ts +0 -466
  290. package/src/typechain/factories/InteropXGateway__factory.ts +0 -272
package/src/alias.ts ADDED
@@ -0,0 +1,6 @@
1
+ import moduleAlias from 'module-alias';
2
+ moduleAlias.addAliases({
3
+ "@": __dirname,
4
+ })
5
+
6
+ moduleAlias();
package/src/api/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import fastify from "fastify"
2
- import cors from 'fastify-cors'
2
+ import cors from '@fastify/cors'
3
3
  import Logger from "@/logger"
4
4
  import { Transaction } from "@/db";
5
5
 
@@ -20,6 +20,17 @@ export const startApiServer = async () => {
20
20
  return await Transaction.findAndCountAll({
21
21
  limit: 20,
22
22
  offset: 0,
23
+ order: [
24
+ ['updatedAt', 'DESC']
25
+ ]
26
+ })
27
+ })
28
+
29
+ server.get('/transactions/:transaction', async (req) => {
30
+ return await Transaction.findOne({
31
+ where: {
32
+ transactionHash: (req.params as any).transaction
33
+ }
23
34
  })
24
35
  })
25
36
 
@@ -27,7 +38,7 @@ export const startApiServer = async () => {
27
38
 
28
39
  logger.log(`RPC Server listening at http://${HOST}:${PORT}`)
29
40
  } catch (err) {
30
- logger.error(err)
41
+ logger.error(err.message)
31
42
  process.exit(1)
32
43
  }
33
44
  }
@@ -1,5 +1,7 @@
1
1
  import { ethers, Wallet } from "ethers"
2
2
  import { EventBus, EventBusType } from "@/types"
3
+ import fs from 'fs-extra'
4
+ import expandHomeDir from "expand-home-dir";
3
5
 
4
6
  class Config {
5
7
  public readonly events: EventBusType
@@ -8,14 +10,18 @@ class Config {
8
10
  public readonly privateKey: string
9
11
  public readonly wallet: Wallet
10
12
  public readonly staging: boolean
13
+ public readonly autoUpdate: boolean
14
+ public readonly baseConfigPath: string
11
15
 
12
16
  constructor() {
13
17
  this.events = new EventBus() as EventBusType
14
- this.maxPeers = 10
18
+ this.maxPeers = 20
15
19
  this.privateKey = process.env.PRIVATE_KEY as string;
16
20
  this.staging = !! process.env.STAGING && process.env.STAGING === 'true';
21
+ this.autoUpdate = !! process.env.AUTO_UPDATE && process.env.AUTO_UPDATE === 'true';
17
22
  this.wallet = new Wallet(this.privateKey);
18
23
  this.leadNodeAddress = '0x910E413DBF3F6276Fe8213fF656726bDc142E08E'
24
+ this.baseConfigPath = expandHomeDir(`~/.interop-x`);
19
25
  }
20
26
 
21
27
  get publicAddress(){
@@ -25,6 +31,10 @@ class Config {
25
31
  isLeadNode() {
26
32
  return ethers.utils.getAddress(this.leadNodeAddress) === ethers.utils.getAddress(this.wallet.address)
27
33
  }
34
+
35
+ isMaintenanceMode(){
36
+ return fs.existsSync(this.baseConfigPath + '/maintenance')
37
+ }
28
38
  }
29
39
 
30
40
  export default new Config()
@@ -1,17 +1,16 @@
1
1
  export const addresses = {
2
- 1: {
3
- gnosisSafe: '0x811Bff6eF88dAAA0aD6438386B534A81cE3F160F',
4
- multisend: '0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761',
5
- interopXGateway: '',
6
- },
7
2
  137: {
8
3
  gnosisSafe: '0x5635d2910e51da33d9DC0422c893CF4F28B69A25',
9
4
  multisend: '0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761',
10
- interopXGateway: '',
5
+ interopX: '0xDB6083df37C5F224a3dF84A4B5f9fB60b6c8670a',
6
+ dsaAddress: '0x9Fbd453a8e7a158510fBae5D9935958507cf4b19',
7
+ instList: "0x839c2D3aDe63DF5b0b8F3E57D5e145057Ab41556",
11
8
  },
12
9
  43114: {
13
10
  gnosisSafe: '0x31d7a5194Fe60AC209Cf1Ce2d539C9A60662Ed6b',
14
11
  multisend: '0x998739BFdAAdde7C933B942a68053933098f9EDa',
15
- interopXGateway: '0x8D27758751BA488690974B6Ccfcda771D462945f',
12
+ interopX: '0xA82A87096709E3D8648c9d9a22f31133bC4B6d32',
13
+ dsaAddress: '0x995e67a652d2be45a8bff438b3dfac66dfff1c46',
14
+ instList: "0x9926955e0Dd681Dc303370C52f4Ad0a4dd061687",
16
15
  }
17
- }
16
+ } as Record<number, { gnosisSafe: string, multisend: string, interopX: string, dsaAddress: string, instList: string }>
@@ -0,0 +1,5 @@
1
+ export const blockConfirmations = {
2
+ "1": 12,
3
+ "137": 32,
4
+ "43114": 12,
5
+ };
@@ -1,3 +1,3 @@
1
1
  export * from './addresses';
2
2
  export * from './tokens';
3
- export * from './itokens';
3
+ export * from './blockConfirmations';
@@ -1,104 +1,127 @@
1
1
  export const tokens = {
2
- 1: [
3
- {
4
- symbol: "ETH",
5
- name: "Ethereum",
6
- address: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
7
- decimals: 18,
8
- },
9
- {
10
- symbol: "DAI",
11
- name: "DAI Stable",
12
- address: "0x6B175474E89094C44Da98b954EedeAC495271d0F",
13
- decimals: 18,
14
- },
15
- {
16
- symbol: "USDC",
17
- name: "USD Coin",
18
- address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
19
- decimals: 6,
20
- },
21
- {
22
- symbol: "USDT",
23
- name: "Tether USD Coin",
24
- address: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
25
- decimals: 6,
26
- },
27
- {
28
- symbol: "WBTC",
29
- name: "Wrapped BTC",
30
- address: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
31
- decimals: 8,
32
- },
33
- ],
2
+ // 1: [
3
+ // {
4
+ // aliases: ['eth'],
5
+ // symbol: "ETH",
6
+ // name: "Ethereum",
7
+ // address: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
8
+ // decimals: 18,
9
+ // },
10
+ // {
11
+ // aliases: ['weth'],
12
+ // symbol: "WETH",
13
+ // name: "Wrapped Ethereum",
14
+ // address: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
15
+ // decimals: 18,
16
+ // },
17
+ // {
18
+ // aliases: ['dai'],
19
+ // symbol: "DAI",
20
+ // name: "DAI Stable",
21
+ // address: "0x6B175474E89094C44Da98b954EedeAC495271d0F",
22
+ // decimals: 18,
23
+ // },
24
+ // {
25
+ // aliases: ['usdc'],
26
+ // symbol: "USDC",
27
+ // name: "USD Coin",
28
+ // address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
29
+ // decimals: 6,
30
+ // },
31
+ // {
32
+ // aliases: ['usdt'],
33
+ // symbol: "USDT",
34
+ // name: "Tether USD Coin",
35
+ // address: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
36
+ // decimals: 6,
37
+ // },
38
+ // {
39
+ // aliases: ['wbtc'],
40
+ // symbol: "WBTC",
41
+ // name: "Wrapped BTC",
42
+ // address: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
43
+ // decimals: 8,
44
+ // },
45
+ // ],
34
46
  137: [
35
47
  {
48
+ aliases: ['eth', 'weth'],
36
49
  symbol: "ETH",
37
50
  name: "Ethereum",
38
51
  address: "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619",
39
52
  decimals: 18,
40
53
  },
41
54
  {
55
+ aliases: ['dai'],
42
56
  symbol: "DAI",
43
57
  name: "DAI Stable",
44
58
  address: "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063",
45
59
  decimals: 18,
46
60
  },
47
61
  {
62
+ aliases: ['usdc'],
48
63
  symbol: "USDC",
49
64
  name: "USD Coin",
50
65
  address: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
51
66
  decimals: 6,
52
67
  },
53
68
  {
69
+ aliases: ['usdt'],
54
70
  symbol: "USDT",
55
71
  name: "Tether USD Coin",
56
72
  address: "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",
57
73
  decimals: 6,
58
74
  },
59
75
  {
76
+ aliases: ['wbtc'],
60
77
  symbol: "WBTC",
61
78
  name: "Wrapped BTC",
62
79
  address: "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6",
63
80
  decimals: 8,
64
81
  },
65
- {
66
- symbol: "AVAX",
67
- name: "Avalanche Token",
68
- address: "0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b",
69
- decimals: 18,
70
- },
71
82
  ],
72
83
  43114: [
73
84
  {
85
+ aliases: ['eth', 'weth'],
74
86
  symbol: "ETH",
75
87
  name: "Ethereum",
76
88
  address: "0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB",
77
89
  decimals: 18,
78
90
  },
79
91
  {
92
+ aliases: ['dai'],
80
93
  symbol: "DAI",
81
94
  name: "DAI Stable",
82
95
  address: "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70",
83
96
  decimals: 18,
84
97
  },
85
98
  {
99
+ aliases: ['usdc'],
86
100
  symbol: "USDC",
87
101
  name: "USD Coin",
88
102
  address: "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664",
89
103
  decimals: 6,
90
104
  },
91
105
  {
92
- symbol: "USDT",
106
+ aliases: ['usdt'],
107
+ symbol: "USDt",
93
108
  name: "Tether USD Coin",
109
+ address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
110
+ decimals: 6,
111
+ },
112
+ {
113
+ aliases: ['usdt'],
114
+ symbol: "USDT.e",
115
+ name: "Tether USD",
94
116
  address: "0xc7198437980c041c805A1EDcbA50c1Ce5db95118",
95
117
  decimals: 6,
96
118
  },
97
119
  {
120
+ aliases: ["wbtc"],
98
121
  symbol: "WBTC",
99
122
  name: "Wrapped BTC",
100
123
  address: "0x50b7545627a5162F82A992c33b87aDc75187B218",
101
124
  decimals: 8,
102
125
  },
103
126
  ],
104
- };
127
+ } as Record<number, { aliases: string[], symbol: string, name: string, address: string, decimals: number }[]>;
@@ -1,96 +1,190 @@
1
- import { sequelize } from '@/db/sequelize'
2
- import { CreationOptional, InferAttributes, InferCreationAttributes, Model, DataTypes } from 'sequelize';
3
-
4
- export class Transaction extends Model<InferAttributes<Transaction>, InferCreationAttributes<Transaction>> {
5
- declare id: CreationOptional<number>;
6
-
7
- declare transactionHash: string;
8
- declare action: string;
9
- declare from: string;
10
- declare to: string;
11
-
12
- declare submitTransactionHash: string;
13
- declare submitBlockNumber: number;
14
-
15
- declare sourceChainId: number;
16
- declare sourceTransactionHash: CreationOptional<string>;
17
- declare sourceBlockNumber: CreationOptional<number>;
18
- declare sourceStatus: string;
19
- declare sourceErrors: CreationOptional<string[]>;
20
- declare sourceCreatedAt: CreationOptional<Date>;
21
- declare sourceDelayUntil: CreationOptional<Date>;
22
-
23
- declare targetChainId: number;
24
- declare targetTransactionHash: CreationOptional<string>;
25
- declare targetBlockNumber: CreationOptional<number>;
26
- declare targetStatus: string;
27
- declare targetErrors: CreationOptional<string[]>;
28
- declare targetCreatedAt: CreationOptional<Date>;
29
- declare targetDelayUntil: CreationOptional<Date>;
30
-
31
- declare submitEvent: any;
32
- declare sourceEvent: CreationOptional<any>;
33
- declare targetEvent: CreationOptional<any>;
34
-
35
- declare metadata: CreationOptional<any>;
36
-
37
- declare status: string;
38
-
39
- declare createdAt: CreationOptional<Date>;
40
- declare updatedAt: CreationOptional<Date>;
1
+ import { sequelize } from "@/db/sequelize";
2
+ import {
3
+ CreationOptional,
4
+ InferAttributes,
5
+ InferCreationAttributes,
6
+ Model,
7
+ DataTypes,
8
+ } from "sequelize";
9
+
10
+ export interface IPositionTokenInfo {
11
+ amount: string;
12
+ sourceToken: string;
13
+ targetToken: string;
41
14
  }
42
15
 
43
- Transaction.init({
16
+ export interface IPosition {
17
+ supply: IPositionTokenInfo[];
18
+ withdraw: IPositionTokenInfo[];
19
+ }
20
+
21
+ export class Transaction extends Model<
22
+ InferAttributes<Transaction>,
23
+ InferCreationAttributes<Transaction>
24
+ > {
25
+ declare id: CreationOptional<number>;
26
+
27
+ declare transactionHash: string;
28
+ declare vnonce: string;
29
+ declare actionId: string;
30
+ declare sourceSender: string;
31
+
32
+ declare submitChainId: number;
33
+ declare submitTransactionHash: string;
34
+ declare submitBlockNumber: number;
35
+ declare submitCreatedAt: Date;
36
+
37
+ declare sourceChainId: number;
38
+ declare sourceDsaId: string;
39
+ declare sourceTransactionHash: CreationOptional<string>;
40
+ declare sourceBlockNumber: CreationOptional<number>;
41
+ declare sourceStatus: CreationOptional<string>;
42
+ declare sourceErrors: CreationOptional<string[]>;
43
+ declare sourceLogs: CreationOptional<any[]>;
44
+ declare sourceCreatedAt: CreationOptional<Date>;
45
+ declare sourceDelayUntil: CreationOptional<Date>;
46
+
47
+ declare targetChainId: number;
48
+ declare targetDsaId: string;
49
+ declare targetTransactionHash: CreationOptional<string>;
50
+ declare targetBlockNumber: CreationOptional<number>;
51
+ declare targetStatus: CreationOptional<string>;
52
+ declare targetErrors: CreationOptional<string[]>;
53
+ declare targetLogs: CreationOptional<any[]>;
54
+ declare targetCreatedAt: CreationOptional<Date>;
55
+ declare targetDelayUntil: CreationOptional<Date>;
56
+
57
+ declare submitEvent: {
58
+ position: IPosition;
59
+ actionId: string;
60
+ actionIdHashHash: string;
61
+ actionIdHash: string;
62
+ sourceSender: string;
63
+ sourceDsaId: string;
64
+ targetDsaId: string;
65
+ sourceChainId: number;
66
+ targetChainId: number;
67
+ vnonce: string;
68
+ metadata: string;
69
+ };
70
+
71
+ declare validateEvent: CreationOptional<{
72
+ sourceSpells: Array<{ connector: string; data: string }>;
73
+ position: IPosition;
74
+ actionId: string;
75
+ actionIdHashHash: string;
76
+ actionIdHash: string;
77
+ sourceSender: string;
78
+ sourceDsaId: string;
79
+ targetDsaId: string;
80
+ sourceChainId: number;
81
+ targetChainId: number;
82
+ vnonce: string;
83
+ metadata: string;
84
+ }>;
85
+
86
+ declare executeEvent: CreationOptional<{
87
+ sourceSpells: Array<{ connector: string; data: string }>;
88
+ targetSpells: Array<{ connector: string; data: string }>;
89
+ position: IPosition;
90
+ actionId: string;
91
+ actionIdHashHash: string;
92
+ actionIdHash: string;
93
+ sourceSender: string;
94
+ sourceDsaId: string;
95
+ targetDsaId: string;
96
+ sourceChainId: number;
97
+ targetChainId: number;
98
+ vnonce: string;
99
+ metadata: string;
100
+ }>;
101
+
102
+ declare status: CreationOptional<string>;
103
+
104
+ declare createdAt: CreationOptional<Date>;
105
+ declare updatedAt: CreationOptional<Date>;
106
+ }
107
+
108
+ Transaction.init(
109
+ {
44
110
  id: {
45
- type: DataTypes.INTEGER,
46
- autoIncrement: true,
47
- primaryKey: true
111
+ type: DataTypes.INTEGER,
112
+ autoIncrement: true,
113
+ primaryKey: true,
48
114
  },
49
115
 
50
- submitTransactionHash: DataTypes.NUMBER,
51
- submitBlockNumber: DataTypes.NUMBER,
52
-
53
116
  transactionHash: DataTypes.STRING,
54
- action: DataTypes.STRING,
117
+ actionId: DataTypes.STRING,
118
+ vnonce: DataTypes.STRING,
119
+ sourceSender: DataTypes.STRING,
55
120
 
56
- from: DataTypes.STRING,
57
- to: DataTypes.STRING,
121
+ submitChainId: DataTypes.NUMBER,
122
+ submitTransactionHash: DataTypes.STRING,
123
+ submitBlockNumber: DataTypes.NUMBER,
124
+ submitCreatedAt: DataTypes.DATE,
58
125
 
59
126
  sourceChainId: DataTypes.NUMBER,
127
+ sourceDsaId: DataTypes.STRING,
60
128
  sourceTransactionHash: DataTypes.STRING,
61
129
  sourceBlockNumber: DataTypes.NUMBER,
62
- sourceStatus: DataTypes.STRING,
130
+ sourceStatus: {
131
+ type: DataTypes.STRING,
132
+ defaultValue: "pending",
133
+ },
63
134
  sourceErrors: {
64
- type: DataTypes.JSON,
65
- // defaultValue: [],
135
+ type: DataTypes.JSON,
136
+ // defaultValue: [],
137
+ },
138
+ sourceLogs: {
139
+ type: DataTypes.JSON,
140
+ // defaultValue: [],
66
141
  },
67
142
  sourceCreatedAt: {
68
- type: DataTypes.DATE,
69
- defaultValue: Date.now()
143
+ type: DataTypes.DATE,
144
+ defaultValue: Date.now(),
70
145
  },
71
146
  sourceDelayUntil: DataTypes.STRING,
72
147
 
73
148
  targetChainId: DataTypes.NUMBER,
149
+ targetDsaId: DataTypes.STRING,
74
150
  targetTransactionHash: DataTypes.STRING,
75
151
  targetBlockNumber: DataTypes.NUMBER,
76
- targetStatus: DataTypes.STRING,
152
+ targetStatus: {
153
+ type: DataTypes.STRING,
154
+ defaultValue: "pending",
155
+ },
77
156
  targetErrors: {
78
- type: DataTypes.JSON,
79
- // defaultValue: [],
157
+ type: DataTypes.JSON,
158
+ // defaultValue: [],
159
+ },
160
+ targetLogs: {
161
+ type: DataTypes.JSON,
162
+ // defaultValue: [],
80
163
  },
81
164
  targetCreatedAt: DataTypes.DATE,
82
165
  targetDelayUntil: DataTypes.DATE,
83
166
 
84
- submitEvent: DataTypes.JSON,
85
- sourceEvent: DataTypes.JSON,
86
- targetEvent: DataTypes.JSON,
167
+ submitEvent: {
168
+ type: DataTypes.JSON,
169
+ allowNull: false,
170
+ },
87
171
 
88
- metadata: DataTypes.JSON,
172
+ validateEvent: {
173
+ type: DataTypes.JSON,
174
+ allowNull: true,
175
+ },
176
+
177
+ executeEvent: {
178
+ type: DataTypes.JSON,
179
+ allowNull: true,
180
+ },
89
181
 
90
182
  status: {
91
- type: DataTypes.STRING,
92
- defaultValue: 'pending'
183
+ type: DataTypes.STRING,
184
+ defaultValue: "pending",
93
185
  },
94
186
  createdAt: DataTypes.DATE,
95
187
  updatedAt: DataTypes.DATE,
96
- }, { sequelize, tableName: 'transactions' });
188
+ },
189
+ { sequelize, tableName: "transactions" }
190
+ );
@@ -0,0 +1,6 @@
1
+ export class LiquidityError extends Error {
2
+ constructor(message?: string) {
3
+ super(message || "Not enough liquidity");
4
+ Object.setPrototypeOf(this, new.target.prototype);
5
+ }
6
+ }
@@ -0,0 +1,9 @@
1
+ import { Transaction } from "@/db";
2
+ import source from "./source";
3
+ import target from "./target";
4
+
5
+
6
+
7
+ export default async function (transaction: Transaction, type: 'source' | 'target') {
8
+ return type === 'source' ? source(transaction) : target(transaction);
9
+ }
@@ -0,0 +1,118 @@
1
+ import abi from "@/abi";
2
+ import config from "@/config";
3
+ import { addresses } from "@/constants";
4
+ import { Transaction } from "@/db";
5
+ import { InteropX } from "@/typechain";
6
+ import { ChainId } from "@/types";
7
+ import { encodeConnectorMethod, getContract, getRpcProviderUrl } from "@/utils";
8
+ import { ethers } from "ethers";
9
+ import { MetaTransaction, OperationType } from "ethers-multisend";
10
+
11
+ export default async function (transaction: Transaction) {
12
+ const transactions: MetaTransaction[] = [];
13
+ const logs: any[] = [];
14
+
15
+ const {
16
+ position,
17
+ actionId,
18
+ actionIdHashHash,
19
+ sourceSender,
20
+ sourceDsaId,
21
+ targetDsaId,
22
+ sourceChainId,
23
+ targetChainId,
24
+ vnonce,
25
+ metadata,
26
+ } = transaction.submitEvent;
27
+
28
+ const sourceChainProvider = new ethers.providers.JsonRpcProvider(
29
+ getRpcProviderUrl(sourceChainId as ChainId)
30
+ );
31
+ const sourceWallet = new ethers.Wallet(
32
+ config.privateKey,
33
+ sourceChainProvider
34
+ );
35
+ const dsaAddress = addresses[sourceChainId].dsaAddress;
36
+ const sourceUserAddress =
37
+ Number(sourceDsaId) == 0 ? sourceSender : dsaAddress;
38
+ const interopAddress = addresses[sourceChainId].interopX;
39
+ const contract = getContract<InteropX>(
40
+ interopAddress,
41
+ abi.interopX,
42
+ sourceWallet
43
+ );
44
+
45
+ const sourceSpells: any[] = [];
46
+ const commonSpells: any[] = [];
47
+
48
+ for (const withdraw of position.withdraw) {
49
+ let spellData = {
50
+ connector: "AAVE-V2-A",
51
+ method: "payback",
52
+ args: [withdraw.sourceToken, withdraw.amount, "2", "0", "0"],
53
+ };
54
+
55
+ sourceSpells.push({
56
+ connector: spellData.connector,
57
+ data: encodeConnectorMethod(spellData),
58
+ });
59
+
60
+ let spellDataBasicWithdraw = {
61
+ connector: "BASIC-A",
62
+ method: "withdraw",
63
+ args: [withdraw.sourceToken, withdraw.amount, sourceUserAddress, "0", "0"],
64
+ };
65
+
66
+ commonSpells.push({
67
+ connector: spellDataBasicWithdraw.connector,
68
+ data: encodeConnectorMethod(spellDataBasicWithdraw),
69
+ });
70
+ }
71
+
72
+ for (const supply of position.supply) {
73
+ let spellDataWithdraw = {
74
+ connector: "AAVE-V2-A",
75
+ method: "withdraw",
76
+ args: [supply.sourceToken, supply.amount, "0", "0"],
77
+ };
78
+
79
+ sourceSpells.push({
80
+ connector: spellDataWithdraw.connector,
81
+ data: encodeConnectorMethod(spellDataWithdraw),
82
+ });
83
+
84
+ let spellDataBasicWithdraw = {
85
+ connector: "BASIC-A",
86
+ method: "withdraw",
87
+ args: [supply.sourceToken, supply.amount, dsaAddress, "0", "0"],
88
+ };
89
+
90
+ sourceSpells.push({
91
+ connector: spellDataBasicWithdraw.connector,
92
+ data: encodeConnectorMethod(spellDataBasicWithdraw),
93
+ });
94
+ }
95
+
96
+ const { data } = await contract.populateTransaction.sourceAction(
97
+ sourceSpells,
98
+ commonSpells,
99
+ position,
100
+ actionId,
101
+ sourceSender,
102
+ sourceDsaId,
103
+ targetDsaId,
104
+ sourceChainId,
105
+ targetChainId,
106
+ vnonce,
107
+ metadata
108
+ );
109
+
110
+ transactions.push({
111
+ to: interopAddress,
112
+ data: data!,
113
+ value: "0",
114
+ operation: OperationType.Call,
115
+ });
116
+
117
+ return { transactions, logs };
118
+ }