@instadapp/interop-x 0.0.0-dev.0bace53 → 0.0.0-dev.0ca1aa1

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 (395) 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/aaveV3Resolver.json +628 -0
  5. package/dist/src/abi/balanceResolver.json +211 -0
  6. package/dist/src/abi/connectors/index.js +36 -0
  7. package/dist/src/abi/connectors/v1/aave.js +148 -0
  8. package/dist/src/abi/connectors/v1/aave_claim.js +4 -0
  9. package/dist/src/abi/connectors/v1/aave_migrate.js +109 -0
  10. package/dist/src/abi/connectors/v1/aave_polygon_migrate.js +110 -0
  11. package/dist/src/abi/connectors/v1/aave_stake.js +4 -0
  12. package/dist/src/abi/connectors/v1/aave_v1_import.js +54 -0
  13. package/dist/src/abi/connectors/v1/aave_v2.js +230 -0
  14. package/dist/src/abi/connectors/v1/aave_v2_import.js +59 -0
  15. package/dist/src/abi/connectors/v1/authority.js +100 -0
  16. package/dist/src/abi/connectors/v1/basic.js +136 -0
  17. package/dist/src/abi/connectors/v1/chi.js +36 -0
  18. package/dist/src/abi/connectors/v1/comp.js +4 -0
  19. package/dist/src/abi/connectors/v1/compound.js +4 -0
  20. package/dist/src/abi/connectors/v1/compoundImport.js +69 -0
  21. package/dist/src/abi/connectors/v1/compoundImport_v2.js +4 -0
  22. package/dist/src/abi/connectors/v1/compound_old.js +448 -0
  23. package/dist/src/abi/connectors/v1/curve.js +140 -0
  24. package/dist/src/abi/connectors/v1/curve_claim.js +63 -0
  25. package/dist/src/abi/connectors/v1/curve_gauge.js +158 -0
  26. package/dist/src/abi/connectors/v1/curve_sbtc.js +140 -0
  27. package/dist/src/abi/connectors/v1/curve_susd.js +140 -0
  28. package/dist/src/abi/connectors/v1/curve_three.js +79 -0
  29. package/dist/src/abi/connectors/v1/curve_y.js +140 -0
  30. package/dist/src/abi/connectors/v1/dsa_migrate_v1_to_v2.js +4 -0
  31. package/dist/src/abi/connectors/v1/dydx.js +148 -0
  32. package/dist/src/abi/connectors/v1/dydx_flash.js +52 -0
  33. package/dist/src/abi/connectors/v1/fee.js +50 -0
  34. package/dist/src/abi/connectors/v1/gelato.js +1138 -0
  35. package/dist/src/abi/connectors/v1/index.js +58 -0
  36. package/dist/src/abi/connectors/v1/instapool.js +439 -0
  37. package/dist/src/abi/connectors/v1/instapool_v2.js +126 -0
  38. package/dist/src/abi/connectors/v1/kyber.js +117 -0
  39. package/dist/src/abi/connectors/v1/maker.js +480 -0
  40. package/dist/src/abi/connectors/v1/maker_old.js +300 -0
  41. package/dist/src/abi/connectors/v1/math.js +43 -0
  42. package/dist/src/abi/connectors/v1/migrate.js +46 -0
  43. package/dist/src/abi/connectors/v1/oasis.js +198 -0
  44. package/dist/src/abi/connectors/v1/oneInch.js +160 -0
  45. package/dist/src/abi/connectors/v1/polygon_bridge.js +4 -0
  46. package/dist/src/abi/connectors/v1/refinance.js +4 -0
  47. package/dist/src/abi/connectors/v1/staking.js +220 -0
  48. package/dist/src/abi/connectors/v1/swerve.js +179 -0
  49. package/dist/src/abi/connectors/v1/uniswap.js +297 -0
  50. package/dist/src/abi/connectors/v2/1INCH-A.js +42 -0
  51. package/dist/src/abi/connectors/v2/1INCH-B.js +4 -0
  52. package/dist/src/abi/connectors/v2/1INCH-V3-A.js +42 -0
  53. package/dist/src/abi/connectors/v2/1INCH-V4-A.js +42 -0
  54. package/dist/src/abi/connectors/v2/AAVE-CLAIM-A.js +4 -0
  55. package/dist/src/abi/connectors/v2/AAVE-CLAIM-B.js +166 -0
  56. package/dist/src/abi/connectors/v2/AAVE-IMPORT-V2-V3-A.js +57 -0
  57. package/dist/src/abi/connectors/v2/AAVE-STAKE-A.js +4 -0
  58. package/dist/src/abi/connectors/v2/AAVE-V1-A.js +130 -0
  59. package/dist/src/abi/connectors/v2/AAVE-V1-IMPORT-A.js +4 -0
  60. package/dist/src/abi/connectors/v2/AAVE-V2-A.js +188 -0
  61. package/dist/src/abi/connectors/v2/AAVE-V2-IMPORT-A.js +4 -0
  62. package/dist/src/abi/connectors/v2/AAVE-V2-IMPORT-B.js +225 -0
  63. package/dist/src/abi/connectors/v2/AAVE-V2-IMPORT-C.js +4 -0
  64. package/dist/src/abi/connectors/v2/AAVE-V3-A.js +322 -0
  65. package/dist/src/abi/connectors/v2/AAVE-V3-CLAIM-A.js +58 -0
  66. package/dist/src/abi/connectors/v2/AAVE-V3-IMPORT-A.js +59 -0
  67. package/dist/src/abi/connectors/v2/AAVE-V3-IMPORT-PERMIT-A.js +81 -0
  68. package/dist/src/abi/connectors/v2/AUTHORITY-A.js +100 -0
  69. package/dist/src/abi/connectors/v2/B-COMPOUND-A.js +4 -0
  70. package/dist/src/abi/connectors/v2/B-LIQUITY-A.js +4 -0
  71. package/dist/src/abi/connectors/v2/B-MAKERDAO-A.js +4 -0
  72. package/dist/src/abi/connectors/v2/BASIC-A.js +94 -0
  73. package/dist/src/abi/connectors/v2/BASIC-B.js +4 -0
  74. package/dist/src/abi/connectors/v2/BASIC-C.js +4 -0
  75. package/dist/src/abi/connectors/v2/BENQI-A.js +901 -0
  76. package/dist/src/abi/connectors/v2/COMP-A.js +4 -0
  77. package/dist/src/abi/connectors/v2/COMPOUND-A.js +4 -0
  78. package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-A.js +4 -0
  79. package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-B.js +195 -0
  80. package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-C.js +4 -0
  81. package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-D.js +27 -0
  82. package/dist/src/abi/connectors/v2/DSA-SPELL-A.js +60 -0
  83. package/dist/src/abi/connectors/v2/G-UNISWAP-A.js +4 -0
  84. package/dist/src/abi/connectors/v2/GELATO-AAVE-A.js +4 -0
  85. package/dist/src/abi/connectors/v2/HOP-A.js +41 -0
  86. package/dist/src/abi/connectors/v2/HOP-MAINNET-A.js +38 -0
  87. package/dist/src/abi/connectors/v2/INST-A.js +4 -0
  88. package/dist/src/abi/connectors/v2/INST-LM-A.js +4 -0
  89. package/dist/src/abi/connectors/v2/INST-STAKING-A.js +4 -0
  90. package/dist/src/abi/connectors/v2/INST-STAKING-B.js +4 -0
  91. package/dist/src/abi/connectors/v2/INSTA-DEX-SIMULATION-A.js +40 -0
  92. package/dist/src/abi/connectors/v2/INSTAPOOL-A.js +4 -0
  93. package/dist/src/abi/connectors/v2/INSTAPOOL-B.js +4 -0
  94. package/dist/src/abi/connectors/v2/INSTAPOOL-C.js +4 -0
  95. package/dist/src/abi/connectors/v2/INTEROP-A.js +4 -0
  96. package/dist/src/abi/connectors/v2/INTEROP-STAGING-A.js +4 -0
  97. package/dist/src/abi/connectors/v2/LIDO-STETH-A.js +36 -0
  98. package/dist/src/abi/connectors/v2/LIQUITY-A.js +4 -0
  99. package/dist/src/abi/connectors/v2/LITE-A.js +4 -0
  100. package/dist/src/abi/connectors/v2/MAKERDAO-A.js +4 -0
  101. package/dist/src/abi/connectors/v2/MAKERDAO-CLAIM-A.js +136 -0
  102. package/dist/src/abi/connectors/v2/MSTABLE-A.js +4 -0
  103. package/dist/src/abi/connectors/v2/NOTIONAL-V2-A.js +484 -0
  104. package/dist/src/abi/connectors/v2/PANGOLIN-A.js +136 -0
  105. package/dist/src/abi/connectors/v2/PANGOLIN-STAKE-A.js +227 -0
  106. package/dist/src/abi/connectors/v2/PARASWAP-A.js +29 -0
  107. package/dist/src/abi/connectors/v2/PARASWAP-V5-A.js +29 -0
  108. package/dist/src/abi/connectors/v2/POLYGON-BRIDGE-A.js +4 -0
  109. package/dist/src/abi/connectors/v2/POOLTOGETHER-A.js +4 -0
  110. package/dist/src/abi/connectors/v2/QI-A.js +4 -0
  111. package/dist/src/abi/connectors/v2/QUICKSWAP-A.js +136 -0
  112. package/dist/src/abi/connectors/v2/REFINANCE-A.js +4 -0
  113. package/dist/src/abi/connectors/v2/REFLEXER-A.js +4 -0
  114. package/dist/src/abi/connectors/v2/STAKE-ERC20-A.js +4 -0
  115. package/dist/src/abi/connectors/v2/SUSHISWAP-A.js +136 -0
  116. package/dist/src/abi/connectors/v2/SWAP-AGGREGATOR-A.js +25 -0
  117. package/dist/src/abi/connectors/v2/UBIQUITY-A.js +73 -0
  118. package/dist/src/abi/connectors/v2/UNISWAP-A.js +297 -0
  119. package/dist/src/abi/connectors/v2/UNISWAP-SELL-BETA.js +4 -0
  120. package/dist/src/abi/connectors/v2/UNISWAP-V2-A.js +4 -0
  121. package/dist/src/abi/connectors/v2/UNISWAP-V3-A.js +4 -0
  122. package/dist/src/abi/connectors/v2/UNISWAP-V3-ROUTER-A.js +4 -0
  123. package/dist/src/abi/connectors/v2/UNISWAP-V3-STAKE-A.js +4 -0
  124. package/dist/src/abi/connectors/v2/UNISWAP-V3-STAKER-B.js +193 -0
  125. package/dist/src/abi/connectors/v2/UNISWAP-V3-SWAP-A.js +74 -0
  126. package/dist/src/abi/connectors/v2/UNIVERSE-A.js +4 -0
  127. package/dist/src/abi/connectors/v2/WAVAX-A.js +4 -0
  128. package/dist/src/abi/connectors/v2/WETH-A.js +4 -0
  129. package/dist/src/abi/connectors/v2/WFTM-A.js +60 -0
  130. package/dist/src/abi/connectors/v2/WMATIC-A.js +4 -0
  131. package/dist/src/abi/connectors/v2/YEARN-VAULT-A.js +4 -0
  132. package/dist/src/abi/connectors/v2/ZEROX-A.js +29 -0
  133. package/dist/src/abi/connectors/v2/ZEROX-V4-A.js +29 -0
  134. package/dist/src/abi/connectors/v2/index.js +173 -0
  135. package/dist/src/abi/index.js +12 -2
  136. package/dist/src/abi/instList.json +232 -0
  137. package/dist/src/abi/interopX.json +1436 -0
  138. package/dist/src/api/index.js +8 -1
  139. package/dist/src/constants/addresses.js +12 -7
  140. package/dist/src/constants/blockConfirmations.js +8 -0
  141. package/dist/src/constants/capPerChain.js +8 -0
  142. package/dist/src/constants/index.js +3 -0
  143. package/dist/src/constants/tokens.js +30 -7
  144. package/dist/src/constants/wrappedNativeToken.js +8 -0
  145. package/dist/src/crons/index.js +3 -0
  146. package/dist/src/crons/prices.js +16 -0
  147. package/dist/src/db/models/transaction.js +26 -16
  148. package/dist/src/errors/index.js +30 -0
  149. package/dist/src/gnosis/actions/aaveV2/index.js +11 -0
  150. package/dist/src/gnosis/actions/aaveV2/source.js +98 -0
  151. package/dist/src/gnosis/actions/aaveV2/target.js +100 -0
  152. package/dist/src/gnosis/actions/aaveV3/index.js +11 -0
  153. package/dist/src/gnosis/actions/aaveV3/source.js +83 -0
  154. package/dist/src/gnosis/actions/aaveV3/target.js +87 -0
  155. package/dist/src/gnosis/actions/index.js +4 -2
  156. package/dist/src/gnosis/index.js +3 -3
  157. package/dist/src/index.js +2 -1
  158. package/dist/src/net/protocol/dial/SignatureDialProtocol.js +2 -2
  159. package/dist/src/providers/index.js +17 -0
  160. package/dist/src/providers/retry-provider.js +56 -0
  161. package/dist/src/services/Prices.js +74 -0
  162. package/dist/src/services/index.js +8 -0
  163. package/dist/src/tasks/InteropX/ProcessSubmitEvents.js +273 -0
  164. package/dist/src/tasks/InteropX/ProcessValidateEvents.js +203 -0
  165. package/dist/src/tasks/InteropX/SyncLogExecuteEvents.js +113 -0
  166. package/dist/src/tasks/{InteropXContract/SyncBridgeRequestEvents.js → InteropX/SyncLogSubmitEvents.js} +28 -17
  167. package/dist/src/tasks/{InteropXContract/SyncBridgeRequestSentEvents.js → InteropX/SyncLogValidateEvents.js} +44 -27
  168. package/dist/src/tasks/Transactions/SyncTransactionStatusTask.js +6 -3
  169. package/dist/src/tasks/index.js +19 -12
  170. package/dist/src/typechain/{InteropXContract.js → AaveV2Resolver.js} +0 -0
  171. package/dist/src/typechain/AaveV3Resolver.js +2 -0
  172. package/dist/src/typechain/BalanceResolver.js +2 -0
  173. package/dist/src/typechain/InstList.js +2 -0
  174. package/dist/src/typechain/InteropX.js +2 -0
  175. package/dist/src/typechain/factories/AaveV2Resolver__factory.js +1191 -0
  176. package/dist/src/typechain/factories/AaveV3Resolver__factory.js +887 -0
  177. package/dist/src/typechain/factories/BalanceResolver__factory.js +228 -0
  178. package/dist/src/typechain/factories/InstList__factory.js +249 -0
  179. package/dist/src/typechain/factories/InteropX__factory.js +1928 -0
  180. package/dist/src/typechain/factories/index.js +11 -3
  181. package/dist/src/typechain/index.js +11 -3
  182. package/dist/src/utils/aave.js +252 -0
  183. package/dist/src/utils/async.js +18 -0
  184. package/dist/src/utils/dsa.js +36 -0
  185. package/dist/src/utils/formatting.js +67 -0
  186. package/dist/src/utils/gnosis.js +87 -0
  187. package/dist/src/utils/http.js +10 -0
  188. package/dist/src/utils/index.js +23 -165
  189. package/dist/src/utils/interop.js +16 -0
  190. package/dist/src/utils/tokens.js +22 -0
  191. package/dist/src/utils/validate.js +111 -0
  192. package/dist/src/utils/web3.js +106 -0
  193. package/package.json +22 -12
  194. package/src/abi/aaveV2Resolver.json +832 -0
  195. package/src/abi/aaveV3Resolver.json +628 -0
  196. package/src/abi/balanceResolver.json +211 -0
  197. package/src/abi/connectors/index.ts +14 -0
  198. package/src/abi/connectors/v1/aave.ts +147 -0
  199. package/src/abi/connectors/v1/aave_claim.ts +3 -0
  200. package/src/abi/connectors/v1/aave_migrate.ts +108 -0
  201. package/src/abi/connectors/v1/aave_polygon_migrate.ts +109 -0
  202. package/src/abi/connectors/v1/aave_stake.ts +3 -0
  203. package/src/abi/connectors/v1/aave_v1_import.ts +53 -0
  204. package/src/abi/connectors/v1/aave_v2.ts +229 -0
  205. package/src/abi/connectors/v1/aave_v2_import.ts +58 -0
  206. package/src/abi/connectors/v1/authority.ts +99 -0
  207. package/src/abi/connectors/v1/basic.ts +135 -0
  208. package/src/abi/connectors/v1/chi.ts +35 -0
  209. package/src/abi/connectors/v1/comp.ts +3 -0
  210. package/src/abi/connectors/v1/compound.ts +3 -0
  211. package/src/abi/connectors/v1/compoundImport.ts +68 -0
  212. package/src/abi/connectors/v1/compoundImport_v2.ts +3 -0
  213. package/src/abi/connectors/v1/compound_old.ts +447 -0
  214. package/src/abi/connectors/v1/curve.ts +139 -0
  215. package/src/abi/connectors/v1/curve_claim.ts +62 -0
  216. package/src/abi/connectors/v1/curve_gauge.ts +157 -0
  217. package/src/abi/connectors/v1/curve_sbtc.ts +139 -0
  218. package/src/abi/connectors/v1/curve_susd.ts +139 -0
  219. package/src/abi/connectors/v1/curve_three.ts +78 -0
  220. package/src/abi/connectors/v1/curve_y.ts +139 -0
  221. package/src/abi/connectors/v1/dsa_migrate_v1_to_v2.ts +3 -0
  222. package/src/abi/connectors/v1/dydx.ts +147 -0
  223. package/src/abi/connectors/v1/dydx_flash.ts +51 -0
  224. package/src/abi/connectors/v1/fee.ts +49 -0
  225. package/src/abi/connectors/v1/gelato.ts +1137 -0
  226. package/src/abi/connectors/v1/index.ts +42 -0
  227. package/src/abi/connectors/v1/instapool.ts +438 -0
  228. package/src/abi/connectors/v1/instapool_v2.ts +125 -0
  229. package/src/abi/connectors/v1/kyber.ts +116 -0
  230. package/src/abi/connectors/v1/maker.ts +479 -0
  231. package/src/abi/connectors/v1/maker_old.ts +299 -0
  232. package/src/abi/connectors/v1/math.ts +42 -0
  233. package/src/abi/connectors/v1/migrate.ts +45 -0
  234. package/src/abi/connectors/v1/oasis.ts +197 -0
  235. package/src/abi/connectors/v1/oneInch.ts +159 -0
  236. package/src/abi/connectors/v1/polygon_bridge.ts +3 -0
  237. package/src/abi/connectors/v1/refinance.ts +3 -0
  238. package/src/abi/connectors/v1/staking.ts +219 -0
  239. package/src/abi/connectors/v1/swerve.ts +178 -0
  240. package/src/abi/connectors/v1/uniswap.ts +297 -0
  241. package/src/abi/connectors/v2/1INCH-A.ts +41 -0
  242. package/src/abi/connectors/v2/1INCH-B.ts +3 -0
  243. package/src/abi/connectors/v2/1INCH-V3-A.ts +41 -0
  244. package/src/abi/connectors/v2/1INCH-V4-A.ts +41 -0
  245. package/src/abi/connectors/v2/AAVE-CLAIM-A.ts +3 -0
  246. package/src/abi/connectors/v2/AAVE-CLAIM-B.ts +165 -0
  247. package/src/abi/connectors/v2/AAVE-IMPORT-V2-V3-A.ts +56 -0
  248. package/src/abi/connectors/v2/AAVE-STAKE-A.ts +3 -0
  249. package/src/abi/connectors/v2/AAVE-V1-A.ts +130 -0
  250. package/src/abi/connectors/v2/AAVE-V1-IMPORT-A.ts +3 -0
  251. package/src/abi/connectors/v2/AAVE-V2-A.ts +187 -0
  252. package/src/abi/connectors/v2/AAVE-V2-IMPORT-A.ts +3 -0
  253. package/src/abi/connectors/v2/AAVE-V2-IMPORT-B.ts +224 -0
  254. package/src/abi/connectors/v2/AAVE-V2-IMPORT-C.ts +3 -0
  255. package/src/abi/connectors/v2/AAVE-V3-A.ts +321 -0
  256. package/src/abi/connectors/v2/AAVE-V3-CLAIM-A.ts +57 -0
  257. package/src/abi/connectors/v2/AAVE-V3-IMPORT-A.ts +58 -0
  258. package/src/abi/connectors/v2/AAVE-V3-IMPORT-PERMIT-A.ts +80 -0
  259. package/src/abi/connectors/v2/AUTHORITY-A.ts +99 -0
  260. package/src/abi/connectors/v2/B-COMPOUND-A.ts +3 -0
  261. package/src/abi/connectors/v2/B-LIQUITY-A.ts +3 -0
  262. package/src/abi/connectors/v2/B-MAKERDAO-A.ts +3 -0
  263. package/src/abi/connectors/v2/BASIC-A.ts +93 -0
  264. package/src/abi/connectors/v2/BASIC-B.ts +3 -0
  265. package/src/abi/connectors/v2/BASIC-C.ts +3 -0
  266. package/src/abi/connectors/v2/BENQI-A.ts +900 -0
  267. package/src/abi/connectors/v2/COMP-A.ts +3 -0
  268. package/src/abi/connectors/v2/COMPOUND-A.ts +3 -0
  269. package/src/abi/connectors/v2/COMPOUND-IMPORT-A.ts +3 -0
  270. package/src/abi/connectors/v2/COMPOUND-IMPORT-B.ts +194 -0
  271. package/src/abi/connectors/v2/COMPOUND-IMPORT-C.ts +3 -0
  272. package/src/abi/connectors/v2/COMPOUND-IMPORT-D.ts +26 -0
  273. package/src/abi/connectors/v2/DSA-SPELL-A.ts +59 -0
  274. package/src/abi/connectors/v2/G-UNISWAP-A.ts +3 -0
  275. package/src/abi/connectors/v2/GELATO-AAVE-A.ts +3 -0
  276. package/src/abi/connectors/v2/HOP-A.ts +40 -0
  277. package/src/abi/connectors/v2/HOP-MAINNET-A.ts +37 -0
  278. package/src/abi/connectors/v2/INST-A.ts +3 -0
  279. package/src/abi/connectors/v2/INST-LM-A.ts +3 -0
  280. package/src/abi/connectors/v2/INST-STAKING-A.ts +3 -0
  281. package/src/abi/connectors/v2/INST-STAKING-B.ts +3 -0
  282. package/src/abi/connectors/v2/INSTA-DEX-SIMULATION-A.ts +39 -0
  283. package/src/abi/connectors/v2/INSTAPOOL-A.ts +3 -0
  284. package/src/abi/connectors/v2/INSTAPOOL-B.ts +3 -0
  285. package/src/abi/connectors/v2/INSTAPOOL-C.ts +3 -0
  286. package/src/abi/connectors/v2/INTEROP-A.ts +3 -0
  287. package/src/abi/connectors/v2/INTEROP-STAGING-A.ts +3 -0
  288. package/src/abi/connectors/v2/LIDO-STETH-A.ts +35 -0
  289. package/src/abi/connectors/v2/LIQUITY-A.ts +3 -0
  290. package/src/abi/connectors/v2/LITE-A.ts +3 -0
  291. package/src/abi/connectors/v2/MAKERDAO-A.ts +3 -0
  292. package/src/abi/connectors/v2/MAKERDAO-CLAIM-A.ts +135 -0
  293. package/src/abi/connectors/v2/MSTABLE-A.ts +3 -0
  294. package/src/abi/connectors/v2/NOTIONAL-V2-A.ts +483 -0
  295. package/src/abi/connectors/v2/PANGOLIN-A.ts +135 -0
  296. package/src/abi/connectors/v2/PANGOLIN-STAKE-A.ts +226 -0
  297. package/src/abi/connectors/v2/PARASWAP-A.ts +28 -0
  298. package/src/abi/connectors/v2/PARASWAP-V5-A.ts +28 -0
  299. package/src/abi/connectors/v2/POLYGON-BRIDGE-A.ts +3 -0
  300. package/src/abi/connectors/v2/POOLTOGETHER-A.ts +3 -0
  301. package/src/abi/connectors/v2/QI-A.ts +3 -0
  302. package/src/abi/connectors/v2/QUICKSWAP-A.ts +135 -0
  303. package/src/abi/connectors/v2/REFINANCE-A.ts +3 -0
  304. package/src/abi/connectors/v2/REFLEXER-A.ts +3 -0
  305. package/src/abi/connectors/v2/STAKE-ERC20-A.ts +3 -0
  306. package/src/abi/connectors/v2/SUSHISWAP-A.ts +135 -0
  307. package/src/abi/connectors/v2/SWAP-AGGREGATOR-A.ts +24 -0
  308. package/src/abi/connectors/v2/UBIQUITY-A.ts +72 -0
  309. package/src/abi/connectors/v2/UNISWAP-A.ts +297 -0
  310. package/src/abi/connectors/v2/UNISWAP-SELL-BETA.ts +3 -0
  311. package/src/abi/connectors/v2/UNISWAP-V2-A.ts +3 -0
  312. package/src/abi/connectors/v2/UNISWAP-V3-A.ts +3 -0
  313. package/src/abi/connectors/v2/UNISWAP-V3-ROUTER-A.ts +3 -0
  314. package/src/abi/connectors/v2/UNISWAP-V3-STAKE-A.ts +3 -0
  315. package/src/abi/connectors/v2/UNISWAP-V3-STAKER-B.ts +192 -0
  316. package/src/abi/connectors/v2/UNISWAP-V3-SWAP-A.ts +73 -0
  317. package/src/abi/connectors/v2/UNIVERSE-A.ts +3 -0
  318. package/src/abi/connectors/v2/WAVAX-A.ts +3 -0
  319. package/src/abi/connectors/v2/WETH-A.ts +3 -0
  320. package/src/abi/connectors/v2/WFTM-A.ts +59 -0
  321. package/src/abi/connectors/v2/WMATIC-A.ts +3 -0
  322. package/src/abi/connectors/v2/YEARN-VAULT-A.ts +3 -0
  323. package/src/abi/connectors/v2/ZEROX-A.ts +28 -0
  324. package/src/abi/connectors/v2/ZEROX-V4-A.ts +28 -0
  325. package/src/abi/connectors/v2/index.ts +173 -0
  326. package/src/abi/index.ts +15 -5
  327. package/src/abi/instList.json +232 -0
  328. package/src/abi/interopX.json +1436 -0
  329. package/src/api/index.ts +9 -1
  330. package/src/constants/addresses.ts +24 -8
  331. package/src/constants/blockConfirmations.ts +5 -0
  332. package/src/constants/capPerChain.ts +5 -0
  333. package/src/constants/index.ts +3 -0
  334. package/src/constants/tokens.ts +31 -8
  335. package/src/constants/wrappedNativeToken.ts +5 -0
  336. package/src/crons/index.ts +1 -0
  337. package/src/crons/prices.ts +12 -0
  338. package/src/db/models/transaction.ts +148 -93
  339. package/src/errors/index.ts +26 -0
  340. package/src/gnosis/actions/aaveV2/index.ts +9 -0
  341. package/src/gnosis/actions/aaveV2/source.ts +171 -0
  342. package/src/gnosis/actions/aaveV2/target.ts +160 -0
  343. package/src/gnosis/actions/aaveV3/index.ts +9 -0
  344. package/src/gnosis/actions/aaveV3/source.ts +131 -0
  345. package/src/gnosis/actions/aaveV3/target.ts +142 -0
  346. package/src/gnosis/actions/index.ts +4 -2
  347. package/src/gnosis/index.ts +3 -3
  348. package/src/index.ts +1 -0
  349. package/src/net/protocol/dial/SignatureDialProtocol.ts +3 -2
  350. package/src/providers/index.ts +1 -0
  351. package/src/providers/retry-provider.ts +63 -0
  352. package/src/services/Prices.ts +89 -0
  353. package/src/services/index.ts +1 -0
  354. package/src/tasks/InteropX/ProcessSubmitEvents.ts +386 -0
  355. package/src/tasks/InteropX/ProcessValidateEvents.ts +297 -0
  356. package/src/tasks/InteropX/SyncLogExecuteEvents.ts +161 -0
  357. package/src/tasks/InteropX/SyncLogSubmitEvents.ts +138 -0
  358. package/src/tasks/InteropX/SyncLogValidateEvents.ts +151 -0
  359. package/src/tasks/Transactions/SyncTransactionStatusTask.ts +6 -3
  360. package/src/tasks/index.ts +20 -12
  361. package/src/typechain/AaveV2Resolver.ts +1017 -0
  362. package/src/typechain/AaveV3Resolver.ts +935 -0
  363. package/src/typechain/BalanceResolver.ts +266 -0
  364. package/src/typechain/InstList.ts +402 -0
  365. package/src/typechain/InteropX.ts +1216 -0
  366. package/src/typechain/factories/AaveV2Resolver__factory.ts +1198 -0
  367. package/src/typechain/factories/AaveV3Resolver__factory.ts +894 -0
  368. package/src/typechain/factories/BalanceResolver__factory.ts +235 -0
  369. package/src/typechain/factories/InstList__factory.ts +253 -0
  370. package/src/typechain/factories/InteropX__factory.ts +1932 -0
  371. package/src/typechain/factories/index.ts +5 -1
  372. package/src/typechain/index.ts +10 -2
  373. package/src/utils/aave.ts +355 -0
  374. package/src/utils/async.ts +22 -0
  375. package/src/utils/dsa.ts +56 -0
  376. package/src/utils/formatting.ts +68 -0
  377. package/src/utils/gnosis.ts +166 -0
  378. package/src/utils/http.ts +6 -0
  379. package/src/utils/index.ts +10 -240
  380. package/src/utils/interop.ts +28 -0
  381. package/src/utils/tokens.ts +21 -0
  382. package/src/utils/validate.ts +179 -0
  383. package/src/utils/web3.ts +145 -0
  384. package/tests/aaveV3ValidateCrossChainPosition.ts +15 -0
  385. package/dist/src/abi/interopXContract.json +0 -391
  386. package/dist/src/gnosis/actions/withdraw/index.js +0 -41
  387. package/dist/src/tasks/InteropXContract/ProcessBridgeRequestEvents.js +0 -152
  388. package/dist/src/typechain/factories/InteropXContract__factory.js +0 -526
  389. package/src/abi/interopXContract.json +0 -391
  390. package/src/gnosis/actions/withdraw/index.ts +0 -56
  391. package/src/tasks/InteropXContract/ProcessBridgeRequestEvents.ts +0 -216
  392. package/src/tasks/InteropXContract/SyncBridgeRequestEvents.ts +0 -114
  393. package/src/tasks/InteropXContract/SyncBridgeRequestSentEvents.ts +0 -120
  394. package/src/typechain/InteropXContract.ts +0 -524
  395. package/src/typechain/factories/InteropXContract__factory.ts +0 -533
@@ -0,0 +1,171 @@
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 { AaveV2Resolver, InteropX } from "@/typechain";
7
+ import { ChainId } from "@/types";
8
+ import { encodeConnectorMethod, getContract, getDsaAccountAddress, getRpcProviderUrl } from "@/utils";
9
+ import { ethers } from "ethers";
10
+ import { MetaTransaction, OperationType } from "ethers-multisend";
11
+
12
+ const safeUserRatioGap = "800000000000000000"
13
+
14
+ export default async function (transaction: Transaction) {
15
+ const transactions: MetaTransaction[] = [];
16
+ const logs: any[] = [];
17
+
18
+ const {
19
+ position,
20
+ actionId,
21
+ actionIdHashHash,
22
+ sourceSender,
23
+ sourceDsaId,
24
+ targetDsaId,
25
+ sourceChainId,
26
+ targetChainId,
27
+ vnonce,
28
+ metadata,
29
+ } = transaction.submitEvent;
30
+
31
+ const sourceChainProvider = new JsonRpcRetryProvider(
32
+ getRpcProviderUrl(sourceChainId as ChainId)
33
+ );
34
+ const sourceWallet = new ethers.Wallet(
35
+ config.privateKey,
36
+ sourceChainProvider
37
+ );
38
+ const targetChainProvider = new JsonRpcRetryProvider(
39
+ getRpcProviderUrl(targetChainId as ChainId)
40
+ );
41
+ const targetWallet = new ethers.Wallet(
42
+ config.privateKey,
43
+ targetChainProvider
44
+ );
45
+ const dsaAddress = addresses[sourceChainId].dsaAddress;
46
+ const sourceUserAddress =
47
+ Number(sourceDsaId) == 0 ? sourceSender : dsaAddress;
48
+ const interopAddress = addresses[sourceChainId].interopX;
49
+ const contract = getContract<InteropX>(
50
+ interopAddress,
51
+ abi.interopX,
52
+ sourceWallet
53
+ );
54
+
55
+ const sourceResolverContract = getContract<AaveV2Resolver>(
56
+ addresses[sourceChainId].aaveV2Resolver,
57
+ abi.aaveV2Resolver,
58
+ sourceWallet
59
+ );
60
+
61
+ const targetResolverContract = getContract<AaveV2Resolver>(
62
+ addresses[targetChainId].aaveV2Resolver,
63
+ abi.aaveV2Resolver,
64
+ targetWallet
65
+ );
66
+
67
+
68
+ const sourceDsaAddress = await getDsaAccountAddress({ dsaId: sourceDsaId, chainId: sourceChainId, provider: sourceChainProvider });
69
+
70
+ const sourceAavePosition = await sourceResolverContract.checkAavePosition(sourceDsaAddress, position, safeUserRatioGap, false)
71
+
72
+ const userSourceAaveIsOk = sourceAavePosition.isOk;
73
+
74
+ if (!userSourceAaveIsOk) {
75
+ throw new Error("Source chain aave position is not safe to migrate.");
76
+ }
77
+
78
+ const targetDsaAddress = await getDsaAccountAddress({ dsaId: targetDsaId, chainId: targetChainId, provider: targetChainProvider });
79
+
80
+ const targetAavePosition = await targetResolverContract
81
+ .checkAavePosition(targetDsaAddress, position, safeUserRatioGap, true)
82
+
83
+ const userTargetAaveIsOk = targetAavePosition.isOk;
84
+
85
+ if (!userTargetAaveIsOk) {
86
+ throw new Error("Target chain aave position will not be safe after migration.");
87
+ }
88
+
89
+ const targetAavePositionWithFee = await targetResolverContract
90
+ .checkAavePosition(targetDsaAddress, position, safeUserRatioGap, true);
91
+
92
+ const userTargetAaveIsOkWithFee = targetAavePositionWithFee.isOk;
93
+
94
+ if (!userTargetAaveIsOkWithFee) {
95
+ throw new Error("Target chain aave position will not be safe after migration due to minimum fee.");
96
+ }
97
+
98
+ const sourceSpells: any[] = [];
99
+ const commonSpells: any[] = [];
100
+
101
+ for (const withdraw of position.withdraw) {
102
+ let spellData = {
103
+ connector: "AAVE-V2-A",
104
+ method: "payback",
105
+ args: [withdraw.sourceToken, withdraw.amount, "2", "0", "0"],
106
+ };
107
+
108
+ sourceSpells.push({
109
+ connector: spellData.connector,
110
+ data: encodeConnectorMethod(spellData),
111
+ });
112
+
113
+ let spellDataBasicWithdraw = {
114
+ connector: "BASIC-A",
115
+ method: "withdraw",
116
+ args: [withdraw.sourceToken, withdraw.amount, sourceUserAddress, "0", "0"],
117
+ };
118
+
119
+ commonSpells.push({
120
+ connector: spellDataBasicWithdraw.connector,
121
+ data: encodeConnectorMethod(spellDataBasicWithdraw),
122
+ });
123
+ }
124
+
125
+ for (const supply of position.supply) {
126
+ let spellDataWithdraw = {
127
+ connector: "AAVE-V2-A",
128
+ method: "withdraw",
129
+ args: [supply.sourceToken, supply.amount, "0", "0"],
130
+ };
131
+
132
+ sourceSpells.push({
133
+ connector: spellDataWithdraw.connector,
134
+ data: encodeConnectorMethod(spellDataWithdraw),
135
+ });
136
+
137
+ let spellDataBasicWithdraw = {
138
+ connector: "BASIC-A",
139
+ method: "withdraw",
140
+ args: [supply.sourceToken, supply.amount, dsaAddress, "0", "0"],
141
+ };
142
+
143
+ sourceSpells.push({
144
+ connector: spellDataBasicWithdraw.connector,
145
+ data: encodeConnectorMethod(spellDataBasicWithdraw),
146
+ });
147
+ }
148
+
149
+ const { data } = await contract.populateTransaction.sourceAction(
150
+ sourceSpells,
151
+ commonSpells,
152
+ position,
153
+ actionId,
154
+ sourceSender,
155
+ sourceDsaId,
156
+ targetDsaId,
157
+ sourceChainId,
158
+ targetChainId,
159
+ vnonce,
160
+ metadata
161
+ );
162
+
163
+ transactions.push({
164
+ to: interopAddress,
165
+ data: data!,
166
+ value: "0",
167
+ operation: OperationType.Call,
168
+ });
169
+
170
+ return { transactions, logs };
171
+ }
@@ -0,0 +1,160 @@
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 { AaveV2Resolver, InteropX } from "@/typechain";
7
+ import { ChainId } from "@/types";
8
+ import { encodeConnectorMethod, getContract, getDsaAccountAddress, getRpcProviderUrl } from "@/utils";
9
+ import { ethers } from "ethers";
10
+ import { MetaTransaction, OperationType } from "ethers-multisend";
11
+
12
+ const safeUserRatioGap = "800000000000000000"
13
+
14
+ export default async function (transaction: Transaction) {
15
+ const transactions: MetaTransaction[] = [];
16
+ const logs: any[] = [];
17
+
18
+ const {
19
+ sourceSpells,
20
+ position,
21
+ actionId,
22
+ sourceSender,
23
+ sourceDsaId,
24
+ targetDsaId,
25
+ sourceChainId,
26
+ targetChainId,
27
+ vnonce,
28
+ metadata,
29
+ } = transaction.validateEvent;
30
+
31
+ const targetChainProvider = new JsonRpcRetryProvider(
32
+ getRpcProviderUrl(targetChainId as ChainId)
33
+ );
34
+ const targetWallet = new ethers.Wallet(
35
+ config.privateKey,
36
+ targetChainProvider
37
+ );
38
+
39
+ const targetResolverContract = getContract<AaveV2Resolver>(
40
+ addresses[targetChainId].aaveV2Resolver,
41
+ abi.aaveV2Resolver,
42
+ targetWallet
43
+ );
44
+
45
+ const targetDsaAddress = await getDsaAccountAddress({ dsaId: targetDsaId, chainId: targetChainId, provider: targetChainProvider });
46
+
47
+ const targetAavePosition = await targetResolverContract
48
+ .checkAavePosition(targetDsaAddress, position, safeUserRatioGap, true)
49
+
50
+ const userTargetAaveIsOk = targetAavePosition.isOk;
51
+
52
+ if (!userTargetAaveIsOk) {
53
+ throw new Error("Target chain aave position will not be safe after migration.");
54
+ }
55
+
56
+ const targetAavePositionWithFee = await targetResolverContract
57
+ .checkAavePosition(targetDsaAddress, position, safeUserRatioGap, true);
58
+
59
+ const userTargetAaveIsOkWithFee = targetAavePositionWithFee.isOk;
60
+
61
+ if (!userTargetAaveIsOkWithFee) {
62
+ throw new Error("Target chain aave position will not be safe after migration due to minimum fee.");
63
+ }
64
+
65
+ const dsaAddress = addresses[targetChainId].dsaAddress;
66
+ const interopAddress = addresses[targetChainId].interopX;
67
+ const contract = getContract<InteropX>(
68
+ interopAddress,
69
+ abi.interopX,
70
+ targetWallet
71
+ );
72
+
73
+ const targetSpells: any[] = [];
74
+ const commonSpells: any[] = [];
75
+
76
+ for (const supplyToken of position.supply) {
77
+ let spellData = {
78
+ connector: "AAVE-V2-A",
79
+ method: "deposit",
80
+ args: [supplyToken.targetToken, supplyToken.amount, "0", "0"],
81
+ };
82
+
83
+ targetSpells.push({
84
+ connector: spellData.connector,
85
+ data: encodeConnectorMethod(spellData),
86
+ });
87
+
88
+ let spellDataBasicWithdraw = {
89
+ connector: "BASIC-A",
90
+ method: "withdraw",
91
+ args: [supplyToken.targetToken, supplyToken.amount, targetDsaAddress, "0", "0"],
92
+ };
93
+
94
+ commonSpells.push({
95
+ connector: spellDataBasicWithdraw.connector,
96
+ data: encodeConnectorMethod(spellDataBasicWithdraw),
97
+ });
98
+ }
99
+
100
+ for (const withdrawToken of position.withdraw) {
101
+
102
+ let spellData = {
103
+ connector: "AAVE-V2-A",
104
+ method: "borrow",
105
+ args: [
106
+ withdrawToken.targetToken,
107
+ withdrawToken.amount,
108
+ "2",
109
+ "0",
110
+ "0",
111
+ ],
112
+ };
113
+
114
+ targetSpells.push({
115
+ connector: spellData.connector,
116
+ data: encodeConnectorMethod(spellData),
117
+ });
118
+
119
+ let spellData2 = {
120
+ connector: "BASIC-A",
121
+ method: "withdraw",
122
+ args: [
123
+ withdrawToken.targetToken,
124
+ withdrawToken.amount,
125
+ dsaAddress,
126
+ "0",
127
+ "0",
128
+ ],
129
+ };
130
+
131
+ targetSpells.push({
132
+ connector: spellData2.connector,
133
+ data: encodeConnectorMethod(spellData2),
134
+ });
135
+ }
136
+
137
+ const { data } = await contract.populateTransaction.targetAction(
138
+ sourceSpells,
139
+ targetSpells,
140
+ commonSpells,
141
+ position,
142
+ actionId,
143
+ sourceSender,
144
+ sourceDsaId,
145
+ targetDsaId,
146
+ sourceChainId,
147
+ targetChainId,
148
+ vnonce,
149
+ metadata
150
+ );
151
+
152
+ transactions.push({
153
+ to: interopAddress,
154
+ data: data!,
155
+ value: "0",
156
+ operation: OperationType.Call,
157
+ });
158
+
159
+ return { transactions, logs }
160
+ }
@@ -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,131 @@
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 { aaveV3ValidateCrossChainPosition, encodeConnectorMethod, getContract, getDsaAccountAddress, 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 targetChainProvider = new JsonRpcRetryProvider(
33
+ getRpcProviderUrl(targetChainId as ChainId)
34
+ );
35
+ const sourceWallet = new ethers.Wallet(
36
+ config.privateKey,
37
+ sourceChainProvider
38
+ );
39
+ const dsaAddress = addresses[sourceChainId].dsaAddress;
40
+ const sourceUserAddress =
41
+ Number(sourceDsaId) == 0 ? sourceSender : dsaAddress;
42
+ const interopAddress = addresses[sourceChainId].interopX;
43
+ const contract = getContract<InteropX>(
44
+ interopAddress,
45
+ abi.interopX,
46
+ sourceWallet
47
+ );
48
+ const sourceDsaAddress = await getDsaAccountAddress({ dsaId: sourceDsaId, chainId: sourceChainId, provider: sourceChainProvider });
49
+ const targetDsaAddress = await getDsaAccountAddress({ dsaId: targetDsaId, chainId: targetChainId, provider: targetChainProvider });
50
+
51
+ await aaveV3ValidateCrossChainPosition({
52
+ sourceAddress: sourceDsaAddress,
53
+ targetAddress: targetDsaAddress,
54
+ sourceChainId,
55
+ targetChainId,
56
+ })
57
+
58
+ const sourceSpells: any[] = [];
59
+ const commonSpells: any[] = [];
60
+
61
+ for (const withdraw of position.withdraw) {
62
+ let spellData = {
63
+ connector: "AAVE-V3-A",
64
+ method: "payback",
65
+ args: [withdraw.sourceToken, withdraw.amount, "2", "0", "0"],
66
+ };
67
+
68
+ sourceSpells.push({
69
+ connector: spellData.connector,
70
+ data: encodeConnectorMethod(spellData),
71
+ });
72
+
73
+ let spellDataBasicWithdraw = {
74
+ connector: "BASIC-A",
75
+ method: "withdraw",
76
+ args: [withdraw.sourceToken, withdraw.amount, sourceUserAddress, "0", "0"],
77
+ };
78
+
79
+ commonSpells.push({
80
+ connector: spellDataBasicWithdraw.connector,
81
+ data: encodeConnectorMethod(spellDataBasicWithdraw),
82
+ });
83
+ }
84
+
85
+ for (const supply of position.supply) {
86
+ let spellDataWithdraw = {
87
+ connector: "AAVE-V3-A",
88
+ method: "withdraw",
89
+ args: [supply.sourceToken, supply.amount, "0", "0"],
90
+ };
91
+
92
+ sourceSpells.push({
93
+ connector: spellDataWithdraw.connector,
94
+ data: encodeConnectorMethod(spellDataWithdraw),
95
+ });
96
+
97
+ let spellDataBasicWithdraw = {
98
+ connector: "BASIC-A",
99
+ method: "withdraw",
100
+ args: [supply.sourceToken, supply.amount, dsaAddress, "0", "0"],
101
+ };
102
+
103
+ sourceSpells.push({
104
+ connector: spellDataBasicWithdraw.connector,
105
+ data: encodeConnectorMethod(spellDataBasicWithdraw),
106
+ });
107
+ }
108
+
109
+ const { data } = await contract.populateTransaction.sourceAction(
110
+ sourceSpells,
111
+ commonSpells,
112
+ position,
113
+ actionId,
114
+ sourceSender,
115
+ sourceDsaId,
116
+ targetDsaId,
117
+ sourceChainId,
118
+ targetChainId,
119
+ vnonce,
120
+ metadata
121
+ );
122
+
123
+ transactions.push({
124
+ to: interopAddress,
125
+ data: data!,
126
+ value: "0",
127
+ operation: OperationType.Call,
128
+ });
129
+
130
+ return { transactions, logs };
131
+ }
@@ -0,0 +1,142 @@
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 { InstList } from "@/typechain/InstList";
8
+ import { ChainId } from "@/types";
9
+ import { encodeConnectorMethod, getContract, getRpcProviderUrl } from "@/utils";
10
+ import { ethers } from "ethers";
11
+ import { MetaTransaction, OperationType } from "ethers-multisend";
12
+
13
+
14
+ export default async function (transaction: Transaction) {
15
+ const transactions: MetaTransaction[] = [];
16
+ const logs: any[] = [];
17
+
18
+ const {
19
+ sourceSpells,
20
+ position,
21
+ actionId,
22
+ sourceSender,
23
+ sourceDsaId,
24
+ targetDsaId,
25
+ sourceChainId,
26
+ targetChainId,
27
+ vnonce,
28
+ metadata,
29
+ } = transaction.validateEvent;
30
+
31
+ const targetChainProvider = new JsonRpcRetryProvider(
32
+ getRpcProviderUrl(targetChainId as ChainId)
33
+ );
34
+ const targetWallet = new ethers.Wallet(
35
+ config.privateKey,
36
+ targetChainProvider
37
+ );
38
+
39
+
40
+ const targetInstListContract = getContract<InstList>(
41
+ addresses[targetChainId].instList,
42
+ abi.instList,
43
+ targetChainProvider,
44
+ );
45
+
46
+ const targetDsaAddress = await targetInstListContract.accountAddr(targetDsaId)
47
+ const dsaAddress = addresses[targetChainId].dsaAddress;
48
+ const interopAddress = addresses[targetChainId].interopX;
49
+ const contract = getContract<InteropX>(
50
+ interopAddress,
51
+ abi.interopX,
52
+ targetWallet
53
+ );
54
+
55
+ const targetSpells: any[] = [];
56
+ const commonSpells: any[] = [];
57
+
58
+ for (const supplyToken of position.supply) {
59
+ let spellData = {
60
+ connector: "AAVE-V3-A",
61
+ method: "deposit",
62
+ args: [supplyToken.targetToken, supplyToken.amount, "0", "0"],
63
+ };
64
+
65
+ targetSpells.push({
66
+ connector: spellData.connector,
67
+ data: encodeConnectorMethod(spellData),
68
+ });
69
+
70
+ let spellDataBasicWithdraw = {
71
+ connector: "BASIC-A",
72
+ method: "withdraw",
73
+ args: [supplyToken.targetToken, supplyToken.amount, targetDsaAddress, "0", "0"],
74
+ };
75
+
76
+ commonSpells.push({
77
+ connector: spellDataBasicWithdraw.connector,
78
+ data: encodeConnectorMethod(spellDataBasicWithdraw),
79
+ });
80
+ }
81
+
82
+ for (const withdrawToken of position.withdraw) {
83
+
84
+ let spellData = {
85
+ connector: "AAVE-V3-A",
86
+ method: "borrow",
87
+ args: [
88
+ withdrawToken.targetToken,
89
+ withdrawToken.amount,
90
+ "2",
91
+ "0",
92
+ "0",
93
+ ],
94
+ };
95
+
96
+ targetSpells.push({
97
+ connector: spellData.connector,
98
+ data: encodeConnectorMethod(spellData),
99
+ });
100
+
101
+ let spellData2 = {
102
+ connector: "BASIC-A",
103
+ method: "withdraw",
104
+ args: [
105
+ withdrawToken.targetToken,
106
+ withdrawToken.amount,
107
+ dsaAddress,
108
+ "0",
109
+ "0",
110
+ ],
111
+ };
112
+
113
+ targetSpells.push({
114
+ connector: spellData2.connector,
115
+ data: encodeConnectorMethod(spellData2),
116
+ });
117
+ }
118
+
119
+ const { data } = await contract.populateTransaction.targetAction(
120
+ sourceSpells,
121
+ targetSpells,
122
+ commonSpells,
123
+ position,
124
+ actionId,
125
+ sourceSender,
126
+ sourceDsaId,
127
+ targetDsaId,
128
+ sourceChainId,
129
+ targetChainId,
130
+ vnonce,
131
+ metadata
132
+ );
133
+
134
+ transactions.push({
135
+ to: interopAddress,
136
+ data: data!,
137
+ value: "0",
138
+ operation: OperationType.Call,
139
+ });
140
+
141
+ return { transactions, logs }
142
+ }
@@ -1,5 +1,7 @@
1
- import withdraw from "./withdraw"
1
+ import aaveV2 from "./aaveV2"
2
+ import aaveV3 from "./aaveV3"
2
3
 
3
4
  export default {
4
- withdraw,
5
+ 'A:AAVE-V2:AAVE-V2': aaveV2,
6
+ 'A:AAVE-V3:AAVE-V3': aaveV3,
5
7
  }
@@ -5,9 +5,9 @@ import actions from "./actions";
5
5
  export const buildGnosisAction = async (transaction: Transaction, type: 'source' | 'target') => {
6
6
  // type = type || (transaction.sourceStatus === 'success' ? 'target' : 'source')
7
7
 
8
- if (actions.hasOwnProperty(transaction.action)) {
8
+ if (actions.hasOwnProperty(transaction.actionId)) {
9
9
 
10
- const { transactions, logs } = await actions[transaction.action](transaction, type);
10
+ const { transactions, logs } = await actions[transaction.actionId](transaction, type);
11
11
 
12
12
  return {
13
13
  data: encodeMulti(transactions).data,
@@ -15,5 +15,5 @@ export const buildGnosisAction = async (transaction: Transaction, type: 'source'
15
15
  };
16
16
  }
17
17
 
18
- throw new Error(`Unknown action: ${transaction.action}`);
18
+ throw new Error(`Unknown action: ${transaction.actionId}`);
19
19
  }
package/src/index.ts CHANGED
@@ -82,6 +82,7 @@ import { startPeer, protocol, peerPool } from "@/net";
82
82
  import { startApiServer } from '@/api';
83
83
  import { Transaction } from './db';
84
84
  import { shortenHash } from './utils';
85
+ import './crons';
85
86
 
86
87
  async function main() {
87
88
 
@@ -12,6 +12,7 @@ export interface ISignatureRequest {
12
12
  transactionHash: string
13
13
  safeTxGas: string
14
14
  safeNonce: string
15
+ chainId: number
15
16
  }
16
17
  export interface ISignatureResponse {
17
18
  signer: string,
@@ -54,9 +55,9 @@ export class SignatureDialProtocol extends BaseDialProtocol<ISignatureRequest, I
54
55
  const { data: gnosisData } = await buildGnosisAction(transaction, data.type);
55
56
 
56
57
  const signedData = await signGnosisSafeTx({
57
- to: addresses[transaction.sourceChainId].multisend,
58
+ to: addresses[data.chainId].multisend,
58
59
  data: gnosisData,
59
- chainId: transaction.sourceChainId as ChainId,
60
+ chainId: data.chainId as ChainId,
60
61
  safeTxGas: data.safeTxGas,
61
62
  nonce: data.safeNonce,
62
63
  }, { signer });
@@ -0,0 +1 @@
1
+ export * from './retry-provider';