@instadapp/interop-x 0.0.0-dev.59f84ce → 0.0.0-dev.5a90c8d

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