@instadapp/interop-x 0.0.0-dev.0b0cc3f → 0.0.0-dev.107fdbd

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