@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
@@ -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-V2-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-V2-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: spellData.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,5 @@
1
- import withdraw from "./withdraw"
1
+ import aaveV2 from "./aaveV2"
2
2
 
3
3
  export default {
4
- withdraw,
4
+ 'A:AAVE-V2:AAVE-V2': aaveV2,
5
5
  }
@@ -2,12 +2,12 @@ import { Transaction } from "@/db";
2
2
  import { encodeMulti } from "ethers-multisend";
3
3
  import actions from "./actions";
4
4
 
5
- export const buildGnosisAction = async (transaction: Transaction, type?: 'source' | 'target') => {
6
- type = type || transaction.sourceStatus === 'pending' ? 'source' : 'target';
5
+ export const buildGnosisAction = async (transaction: Transaction, type: 'source' | 'target') => {
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
 
@@ -89,7 +90,9 @@ async function main() {
89
90
 
90
91
  const tasks = new Tasks()
91
92
 
92
- tasks.start();
93
+ setTimeout(() => {
94
+ tasks.start();
95
+ }, 10000)
93
96
 
94
97
  startApiServer()
95
98
 
@@ -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,
@@ -26,6 +27,10 @@ export class SignatureDialProtocol extends BaseDialProtocol<ISignatureRequest, I
26
27
  }
27
28
 
28
29
  async response(data: ISignatureRequest): Promise<ISignatureResponse> {
30
+ console.log({
31
+ tag: 'SignatureDialProtocol',
32
+ data
33
+ })
29
34
  const signer = config.wallet;
30
35
 
31
36
  let transaction: Transaction | null;
@@ -50,9 +55,9 @@ export class SignatureDialProtocol extends BaseDialProtocol<ISignatureRequest, I
50
55
  const { data: gnosisData } = await buildGnosisAction(transaction, data.type);
51
56
 
52
57
  const signedData = await signGnosisSafeTx({
53
- to: addresses[transaction.targetChainId].multisend,
58
+ to: addresses[data.chainId].multisend,
54
59
  data: gnosisData,
55
- chainId: transaction.targetChainId as ChainId,
60
+ chainId: data.chainId as ChainId,
56
61
  safeTxGas: data.safeTxGas,
57
62
  nonce: data.safeNonce,
58
63
  }, { signer });
@@ -0,0 +1 @@
1
+ export * from './retry-provider';
@@ -0,0 +1,51 @@
1
+ import { ethers } from "ethers";
2
+ import wait from "waait";
3
+ import Bluebird from "bluebird";
4
+
5
+ export interface RetryOptions {
6
+ delay?: number;
7
+ timeouts: number[];
8
+ }
9
+
10
+ export function promiseTimeout<T>(ms: number, promise: Promise<T>): Promise<T> {
11
+ return Bluebird.resolve(promise).timeout(ms);
12
+ }
13
+
14
+ export function retryOperation(
15
+ retriesLeft: number,
16
+ operation: () => Promise<any>,
17
+ options: RetryOptions
18
+ ) {
19
+ return new Promise((resolve, reject) => {
20
+ const { timeouts } = options;
21
+ // Find the timeout for this specific iteration
22
+ const timeout = timeouts[timeouts.length - retriesLeft];
23
+
24
+ // Wrap the original operation in a timeout
25
+ const execution = promiseTimeout(timeout, operation());
26
+
27
+ // If the promise is successful, resolve it and bubble the result up
28
+ return execution.then(resolve).catch((reason: any) => {
29
+ // If there are any retries left, we call the same retryOperation function again,
30
+ // but decrementing the number of retries left by 1
31
+ if (retriesLeft - 1 > 0) {
32
+ // Delay the new attempt slightly
33
+ return wait(options.delay || 50)
34
+ .then(retryOperation.bind(null, retriesLeft - 1, operation, options))
35
+ .then(resolve)
36
+ .catch(reject);
37
+ }
38
+ // Reject (and bubble the result up) if there are no more retries
39
+ return reject(reason);
40
+ });
41
+ });
42
+ }
43
+
44
+ export class JsonRpcRetryProvider extends ethers.providers.JsonRpcProvider {
45
+ public perform(method: string, params: any): Promise<any> {
46
+ const timeouts = [5_000, 10_000];
47
+ const operation = () => super.perform(method, params);
48
+
49
+ return retryOperation(2, operation, { timeouts, delay: 50 });
50
+ }
51
+ }
@@ -0,0 +1,89 @@
1
+ import Web3Utils from "web3-utils";
2
+ import path from "path";
3
+ import fs from "fs";
4
+ import { tokens } from "@/constants";
5
+ import expandHomeDir from "expand-home-dir";
6
+ import config from "@/config";
7
+ import { http } from "@/utils";
8
+
9
+ const basePath = expandHomeDir(`~/.interop-x/data/${config.publicAddress}/${config.staging ? 'staging' : ''}`);
10
+ const mainnetPricesFilePath = path.resolve(basePath, "./mainnetPrices.json");
11
+ const networkTokenPricesFilePath = path.resolve(basePath, "./networkTokenPrices.json");
12
+
13
+ class Prices {
14
+ private static mainnetPrices = {};
15
+
16
+ private static networkTokenPrices = {};
17
+
18
+ static async fetch() {
19
+
20
+ if (!fs.existsSync(mainnetPricesFilePath)) {
21
+ fs.writeFileSync(mainnetPricesFilePath, JSON.stringify({}));
22
+ }
23
+
24
+ if (!fs.existsSync(networkTokenPricesFilePath)) {
25
+ fs.writeFileSync(networkTokenPricesFilePath, JSON.stringify({}));
26
+ }
27
+
28
+ this.mainnetPrices = JSON.parse(fs.readFileSync(mainnetPricesFilePath, "utf8"));
29
+ this.networkTokenPrices = JSON.parse(fs.readFileSync(networkTokenPricesFilePath, "utf8"));
30
+
31
+ try {
32
+ const path = tokens["1"]
33
+ .filter((a) => a.symbol !== "ETH")
34
+ .map((token) => token.address)
35
+ .join(",");
36
+
37
+ const [response, ethResponse, avaxResponse, polygonResponse] =
38
+ await Promise.all([
39
+ http.get(
40
+ "https://api.coingecko.com/api/v3/simple/token_price/ethereum",
41
+ {
42
+ params: { contract_addresses: path, vs_currencies: "usd" },
43
+ }
44
+ ),
45
+ http.get("https://api.coingecko.com/api/v3/simple/price", {
46
+ params: { ids: "ethereum", vs_currencies: "usd" },
47
+ }),
48
+ http.get("https://api.coingecko.com/api/v3/simple/price", {
49
+ params: { ids: "avalanche-2", vs_currencies: "usd" },
50
+ }),
51
+ http.get("https://api.coingecko.com/api/v3/simple/price", {
52
+ params: { ids: "matic-network", vs_currencies: "usd" },
53
+ }),
54
+ ]);
55
+
56
+ this.networkTokenPrices = {
57
+ "1": ethResponse.data.ethereum.usd.toString(),
58
+ "137": polygonResponse.data["matic-network"].usd.toString(),
59
+ "43114": avaxResponse.data["avalanche-2"].usd.toString(),
60
+ };
61
+
62
+ const data = response.data;
63
+
64
+ for (const key in data) {
65
+ const _key = Web3Utils.toChecksumAddress(key);
66
+ if (!data[key].usd) continue;
67
+ this.mainnetPrices[_key] = data[key].usd.toString();
68
+ }
69
+
70
+ this.mainnetPrices["0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"] =
71
+ ethResponse.data.ethereum.usd.toString();
72
+ } catch (error) { }
73
+
74
+ fs.writeFileSync(mainnetPricesFilePath, JSON.stringify(this.mainnetPrices));
75
+ fs.writeFileSync(networkTokenPricesFilePath, JSON.stringify(this.networkTokenPrices));
76
+
77
+ return this.mainnetPrices;
78
+ }
79
+
80
+ static getMainnetPrices() {
81
+ return this.mainnetPrices;
82
+ }
83
+
84
+ static getNetworkTokenPrices() {
85
+ return this.networkTokenPrices;
86
+ }
87
+ }
88
+
89
+ export default Prices;
@@ -0,0 +1 @@
1
+ export { default as Prices } from './Prices';