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

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 (351) 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 +83 -0
  5. package/dist/src/abi/aaveV2Resolver.json +832 -0
  6. package/dist/src/abi/aaveV3Resolver.json +628 -0
  7. package/dist/src/abi/balanceResolver.json +211 -0
  8. package/dist/src/abi/connectors/index.js +36 -0
  9. package/dist/src/abi/connectors/v1/aave.js +148 -0
  10. package/dist/src/abi/connectors/v1/aave_claim.js +4 -0
  11. package/dist/src/abi/connectors/v1/aave_migrate.js +109 -0
  12. package/dist/src/abi/connectors/v1/aave_polygon_migrate.js +110 -0
  13. package/dist/src/abi/connectors/v1/aave_stake.js +4 -0
  14. package/dist/src/abi/connectors/v1/aave_v1_import.js +54 -0
  15. package/dist/src/abi/connectors/v1/aave_v2.js +230 -0
  16. package/dist/src/abi/connectors/v1/aave_v2_import.js +59 -0
  17. package/dist/src/abi/connectors/v1/authority.js +100 -0
  18. package/dist/src/abi/connectors/v1/basic.js +136 -0
  19. package/dist/src/abi/connectors/v1/chi.js +36 -0
  20. package/dist/src/abi/connectors/v1/comp.js +4 -0
  21. package/dist/src/abi/connectors/v1/compound.js +4 -0
  22. package/dist/src/abi/connectors/v1/compoundImport.js +69 -0
  23. package/dist/src/abi/connectors/v1/compoundImport_v2.js +4 -0
  24. package/dist/src/abi/connectors/v1/compound_old.js +448 -0
  25. package/dist/src/abi/connectors/v1/curve.js +140 -0
  26. package/dist/src/abi/connectors/v1/curve_claim.js +63 -0
  27. package/dist/src/abi/connectors/v1/curve_gauge.js +158 -0
  28. package/dist/src/abi/connectors/v1/curve_sbtc.js +140 -0
  29. package/dist/src/abi/connectors/v1/curve_susd.js +140 -0
  30. package/dist/src/abi/connectors/v1/curve_three.js +79 -0
  31. package/dist/src/abi/connectors/v1/curve_y.js +140 -0
  32. package/dist/src/abi/connectors/v1/dsa_migrate_v1_to_v2.js +4 -0
  33. package/dist/src/abi/connectors/v1/dydx.js +148 -0
  34. package/dist/src/abi/connectors/v1/dydx_flash.js +52 -0
  35. package/dist/src/abi/connectors/v1/fee.js +50 -0
  36. package/dist/src/abi/connectors/v1/gelato.js +1138 -0
  37. package/dist/src/abi/connectors/v1/index.js +58 -0
  38. package/dist/src/abi/connectors/v1/instapool.js +439 -0
  39. package/dist/src/abi/connectors/v1/instapool_v2.js +126 -0
  40. package/dist/src/abi/connectors/v1/kyber.js +117 -0
  41. package/dist/src/abi/connectors/v1/maker.js +480 -0
  42. package/dist/src/abi/connectors/v1/maker_old.js +300 -0
  43. package/dist/src/abi/connectors/v1/math.js +43 -0
  44. package/dist/src/abi/connectors/v1/migrate.js +46 -0
  45. package/dist/src/abi/connectors/v1/oasis.js +198 -0
  46. package/dist/src/abi/connectors/v1/oneInch.js +160 -0
  47. package/dist/src/abi/connectors/v1/polygon_bridge.js +4 -0
  48. package/dist/src/abi/connectors/v1/refinance.js +4 -0
  49. package/dist/src/abi/connectors/v1/staking.js +220 -0
  50. package/dist/src/abi/connectors/v1/swerve.js +179 -0
  51. package/dist/src/abi/connectors/v1/uniswap.js +297 -0
  52. package/dist/src/abi/connectors/v2/1INCH-A.js +4 -0
  53. package/dist/src/abi/connectors/v2/1INCH-B.js +4 -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-STAKE-A.js +4 -0
  57. package/dist/src/abi/connectors/v2/AAVE-V1-A.js +130 -0
  58. package/dist/src/abi/connectors/v2/AAVE-V1-IMPORT-A.js +4 -0
  59. package/dist/src/abi/connectors/v2/AAVE-V2-A.js +230 -0
  60. package/dist/src/abi/connectors/v2/AAVE-V2-IMPORT-A.js +4 -0
  61. package/dist/src/abi/connectors/v2/AAVE-V2-IMPORT-B.js +225 -0
  62. package/dist/src/abi/connectors/v2/AUTHORITY-A.js +100 -0
  63. package/dist/src/abi/connectors/v2/B-COMPOUND-A.js +4 -0
  64. package/dist/src/abi/connectors/v2/B-LIQUITY-A.js +4 -0
  65. package/dist/src/abi/connectors/v2/B-MAKERDAO-A.js +4 -0
  66. package/dist/src/abi/connectors/v2/BASIC-A.js +136 -0
  67. package/dist/src/abi/connectors/v2/BASIC-B.js +4 -0
  68. package/dist/src/abi/connectors/v2/BASIC-C.js +4 -0
  69. package/dist/src/abi/connectors/v2/COMP-A.js +4 -0
  70. package/dist/src/abi/connectors/v2/COMPOUND-A.js +4 -0
  71. package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-A.js +4 -0
  72. package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-B.js +195 -0
  73. package/dist/src/abi/connectors/v2/G-UNISWAP-A.js +4 -0
  74. package/dist/src/abi/connectors/v2/GELATO-AAVE-A.js +4 -0
  75. package/dist/src/abi/connectors/v2/INST-A.js +4 -0
  76. package/dist/src/abi/connectors/v2/INST-LM-A.js +4 -0
  77. package/dist/src/abi/connectors/v2/INST-STAKING-A.js +4 -0
  78. package/dist/src/abi/connectors/v2/INST-STAKING-B.js +4 -0
  79. package/dist/src/abi/connectors/v2/INSTAPOOL-A.js +4 -0
  80. package/dist/src/abi/connectors/v2/LIQUITY-A.js +4 -0
  81. package/dist/src/abi/connectors/v2/MAKERDAO-A.js +4 -0
  82. package/dist/src/abi/connectors/v2/MAKERDAO-CLAIM-A.js +136 -0
  83. package/dist/src/abi/connectors/v2/PARASWAP-A.js +4 -0
  84. package/dist/src/abi/connectors/v2/POLYGON-BRIDGE-A.js +4 -0
  85. package/dist/src/abi/connectors/v2/REFINANCE-A.js +4 -0
  86. package/dist/src/abi/connectors/v2/REFLEXER-A.js +4 -0
  87. package/dist/src/abi/connectors/v2/STAKE-ERC20-A.js +4 -0
  88. package/dist/src/abi/connectors/v2/UNISWAP-A.js +297 -0
  89. package/dist/src/abi/connectors/v2/UNISWAP-V2-A.js +4 -0
  90. package/dist/src/abi/connectors/v2/UNISWAP-V3-A.js +4 -0
  91. package/dist/src/abi/connectors/v2/UNISWAP-V3-STAKE-A.js +4 -0
  92. package/dist/src/abi/connectors/v2/WETH-A.js +4 -0
  93. package/dist/src/abi/connectors/v2/YEARN-VAULT-A.js +4 -0
  94. package/dist/src/abi/connectors/v2/index.js +89 -0
  95. package/dist/{abi → src/abi}/erc20.json +0 -0
  96. package/dist/{abi → src/abi}/gnosisSafe.json +0 -0
  97. package/dist/src/abi/index.js +23 -0
  98. package/dist/src/abi/instList.json +232 -0
  99. package/dist/src/abi/interopX.json +1436 -0
  100. package/dist/src/alias.js +10 -0
  101. package/dist/src/api/index.js +43 -0
  102. package/dist/src/config/index.js +31 -0
  103. package/dist/src/constants/addresses.js +25 -0
  104. package/dist/src/constants/blockConfirmations.js +8 -0
  105. package/dist/src/constants/capPerChain.js +8 -0
  106. package/dist/src/constants/index.js +21 -0
  107. package/dist/src/constants/tokens.js +130 -0
  108. package/dist/src/constants/wrappedNativeToken.js +8 -0
  109. package/dist/src/crons/index.js +3 -0
  110. package/dist/src/crons/prices.js +16 -0
  111. package/dist/{db → src/db}/index.js +0 -0
  112. package/dist/{db → src/db}/models/index.js +0 -0
  113. package/dist/{db → src/db}/models/transaction.js +41 -13
  114. package/dist/{db → src/db}/sequelize.js +2 -1
  115. package/dist/src/errors/index.js +30 -0
  116. package/dist/src/gnosis/actions/aaveV2/index.js +11 -0
  117. package/dist/src/gnosis/actions/aaveV2/source.js +98 -0
  118. package/dist/src/gnosis/actions/aaveV2/target.js +101 -0
  119. package/dist/src/gnosis/actions/aaveV3/index.js +11 -0
  120. package/dist/src/gnosis/actions/aaveV3/source.js +74 -0
  121. package/dist/src/gnosis/actions/aaveV3/target.js +87 -0
  122. package/dist/src/gnosis/actions/index.js +11 -0
  123. package/dist/src/gnosis/index.js +20 -0
  124. package/dist/src/index.js +120 -0
  125. package/dist/{logger → src/logger}/index.js +0 -0
  126. package/dist/{net → src/net}/index.js +0 -0
  127. package/dist/{net → src/net}/peer/index.js +8 -3
  128. package/dist/{net → src/net}/pool/index.js +32 -9
  129. package/dist/{net → src/net}/protocol/dial/BaseDialProtocol.js +0 -0
  130. package/dist/{net → src/net}/protocol/dial/SignatureDialProtocol.js +21 -12
  131. package/dist/src/net/protocol/dial/TransactionStatusDialProtocol.js +30 -0
  132. package/dist/{net → src/net}/protocol/index.js +51 -1
  133. package/dist/{constants → src/providers}/index.js +1 -1
  134. package/dist/src/providers/retry-provider.js +45 -0
  135. package/dist/src/services/Prices.js +74 -0
  136. package/dist/src/services/index.js +8 -0
  137. package/dist/src/tasks/AutoUpdateTask.js +70 -0
  138. package/dist/{tasks → src/tasks}/BaseTask.js +12 -4
  139. package/dist/src/tasks/InteropX/ProcessSubmitEvents.js +271 -0
  140. package/dist/src/tasks/InteropX/ProcessValidateEvents.js +203 -0
  141. package/dist/src/tasks/InteropX/SyncLogExecuteEvents.js +113 -0
  142. package/dist/src/tasks/InteropX/SyncLogSubmitEvents.js +88 -0
  143. package/dist/src/tasks/InteropX/SyncLogValidateEvents.js +106 -0
  144. package/dist/src/tasks/Transactions/SyncTransactionStatusTask.js +58 -0
  145. package/dist/src/tasks/index.js +45 -0
  146. package/dist/{typechain/Erc20.js → src/typechain/AaveV2Resolver.js} +0 -0
  147. package/dist/{typechain/GnosisSafe.js → src/typechain/AaveV3Resolver.js} +0 -0
  148. package/dist/{typechain/InteropBridgeToken.js → src/typechain/BalanceResolver.js} +0 -0
  149. package/dist/{typechain/InteropXGateway.js → src/typechain/Erc20.js} +0 -0
  150. package/dist/{typechain/common.js → src/typechain/GnosisSafe.js} +0 -0
  151. package/dist/src/typechain/InstList.js +2 -0
  152. package/dist/src/typechain/InteropX.js +2 -0
  153. package/dist/src/typechain/common.js +2 -0
  154. package/dist/src/typechain/factories/AaveV2Resolver__factory.js +1191 -0
  155. package/dist/src/typechain/factories/AaveV3Resolver__factory.js +887 -0
  156. package/dist/src/typechain/factories/BalanceResolver__factory.js +228 -0
  157. package/dist/{typechain → src/typechain}/factories/Erc20__factory.js +0 -0
  158. package/dist/{typechain → src/typechain}/factories/GnosisSafe__factory.js +0 -0
  159. package/dist/src/typechain/factories/InstList__factory.js +249 -0
  160. package/dist/src/typechain/factories/InteropX__factory.js +1928 -0
  161. package/dist/src/typechain/factories/index.js +20 -0
  162. package/dist/{typechain → src/typechain}/index.js +11 -5
  163. package/dist/{types.js → src/types.js} +0 -0
  164. package/dist/src/utils/async.js +18 -0
  165. package/dist/src/utils/dsa.js +24 -0
  166. package/dist/src/utils/formatting.js +67 -0
  167. package/dist/src/utils/gnosis.js +87 -0
  168. package/dist/src/utils/http.js +10 -0
  169. package/dist/src/utils/index.js +25 -0
  170. package/dist/src/utils/interop.js +16 -0
  171. package/dist/src/utils/tokens.js +22 -0
  172. package/dist/src/utils/validate.js +111 -0
  173. package/dist/src/utils/web3.js +93 -0
  174. package/package.json +32 -28
  175. package/patches/@ethersproject+properties+5.6.0.patch +13 -0
  176. package/src/abi/aaveV2Resolver.json +832 -0
  177. package/src/abi/aaveV3Resolver.json +628 -0
  178. package/src/abi/balanceResolver.json +211 -0
  179. package/src/abi/connectors/index.ts +14 -0
  180. package/src/abi/connectors/v1/aave.ts +147 -0
  181. package/src/abi/connectors/v1/aave_claim.ts +3 -0
  182. package/src/abi/connectors/v1/aave_migrate.ts +108 -0
  183. package/src/abi/connectors/v1/aave_polygon_migrate.ts +109 -0
  184. package/src/abi/connectors/v1/aave_stake.ts +3 -0
  185. package/src/abi/connectors/v1/aave_v1_import.ts +53 -0
  186. package/src/abi/connectors/v1/aave_v2.ts +229 -0
  187. package/src/abi/connectors/v1/aave_v2_import.ts +58 -0
  188. package/src/abi/connectors/v1/authority.ts +99 -0
  189. package/src/abi/connectors/v1/basic.ts +135 -0
  190. package/src/abi/connectors/v1/chi.ts +35 -0
  191. package/src/abi/connectors/v1/comp.ts +3 -0
  192. package/src/abi/connectors/v1/compound.ts +3 -0
  193. package/src/abi/connectors/v1/compoundImport.ts +68 -0
  194. package/src/abi/connectors/v1/compoundImport_v2.ts +3 -0
  195. package/src/abi/connectors/v1/compound_old.ts +447 -0
  196. package/src/abi/connectors/v1/curve.ts +139 -0
  197. package/src/abi/connectors/v1/curve_claim.ts +62 -0
  198. package/src/abi/connectors/v1/curve_gauge.ts +157 -0
  199. package/src/abi/connectors/v1/curve_sbtc.ts +139 -0
  200. package/src/abi/connectors/v1/curve_susd.ts +139 -0
  201. package/src/abi/connectors/v1/curve_three.ts +78 -0
  202. package/src/abi/connectors/v1/curve_y.ts +139 -0
  203. package/src/abi/connectors/v1/dsa_migrate_v1_to_v2.ts +3 -0
  204. package/src/abi/connectors/v1/dydx.ts +147 -0
  205. package/src/abi/connectors/v1/dydx_flash.ts +51 -0
  206. package/src/abi/connectors/v1/fee.ts +49 -0
  207. package/src/abi/connectors/v1/gelato.ts +1137 -0
  208. package/src/abi/connectors/v1/index.ts +42 -0
  209. package/src/abi/connectors/v1/instapool.ts +438 -0
  210. package/src/abi/connectors/v1/instapool_v2.ts +125 -0
  211. package/src/abi/connectors/v1/kyber.ts +116 -0
  212. package/src/abi/connectors/v1/maker.ts +479 -0
  213. package/src/abi/connectors/v1/maker_old.ts +299 -0
  214. package/src/abi/connectors/v1/math.ts +42 -0
  215. package/src/abi/connectors/v1/migrate.ts +45 -0
  216. package/src/abi/connectors/v1/oasis.ts +197 -0
  217. package/src/abi/connectors/v1/oneInch.ts +159 -0
  218. package/src/abi/connectors/v1/polygon_bridge.ts +3 -0
  219. package/src/abi/connectors/v1/refinance.ts +3 -0
  220. package/src/abi/connectors/v1/staking.ts +219 -0
  221. package/src/abi/connectors/v1/swerve.ts +178 -0
  222. package/src/abi/connectors/v1/uniswap.ts +297 -0
  223. package/src/abi/connectors/v2/1INCH-A.ts +3 -0
  224. package/src/abi/connectors/v2/1INCH-B.ts +3 -0
  225. package/src/abi/connectors/v2/AAVE-CLAIM-A.ts +3 -0
  226. package/src/abi/connectors/v2/AAVE-CLAIM-B.ts +165 -0
  227. package/src/abi/connectors/v2/AAVE-STAKE-A.ts +3 -0
  228. package/src/abi/connectors/v2/AAVE-V1-A.ts +130 -0
  229. package/src/abi/connectors/v2/AAVE-V1-IMPORT-A.ts +3 -0
  230. package/src/abi/connectors/v2/AAVE-V2-A.ts +229 -0
  231. package/src/abi/connectors/v2/AAVE-V2-IMPORT-A.ts +3 -0
  232. package/src/abi/connectors/v2/AAVE-V2-IMPORT-B.ts +224 -0
  233. package/src/abi/connectors/v2/AUTHORITY-A.ts +99 -0
  234. package/src/abi/connectors/v2/B-COMPOUND-A.ts +3 -0
  235. package/src/abi/connectors/v2/B-LIQUITY-A.ts +3 -0
  236. package/src/abi/connectors/v2/B-MAKERDAO-A.ts +3 -0
  237. package/src/abi/connectors/v2/BASIC-A.ts +135 -0
  238. package/src/abi/connectors/v2/BASIC-B.ts +3 -0
  239. package/src/abi/connectors/v2/BASIC-C.ts +3 -0
  240. package/src/abi/connectors/v2/COMP-A.ts +3 -0
  241. package/src/abi/connectors/v2/COMPOUND-A.ts +3 -0
  242. package/src/abi/connectors/v2/COMPOUND-IMPORT-A.ts +3 -0
  243. package/src/abi/connectors/v2/COMPOUND-IMPORT-B.ts +194 -0
  244. package/src/abi/connectors/v2/G-UNISWAP-A.ts +3 -0
  245. package/src/abi/connectors/v2/GELATO-AAVE-A.ts +3 -0
  246. package/src/abi/connectors/v2/INST-A.ts +3 -0
  247. package/src/abi/connectors/v2/INST-LM-A.ts +3 -0
  248. package/src/abi/connectors/v2/INST-STAKING-A.ts +3 -0
  249. package/src/abi/connectors/v2/INST-STAKING-B.ts +3 -0
  250. package/src/abi/connectors/v2/INSTAPOOL-A.ts +3 -0
  251. package/src/abi/connectors/v2/LIQUITY-A.ts +3 -0
  252. package/src/abi/connectors/v2/MAKERDAO-A.ts +3 -0
  253. package/src/abi/connectors/v2/MAKERDAO-CLAIM-A.ts +135 -0
  254. package/src/abi/connectors/v2/PARASWAP-A.ts +3 -0
  255. package/src/abi/connectors/v2/POLYGON-BRIDGE-A.ts +3 -0
  256. package/src/abi/connectors/v2/REFINANCE-A.ts +3 -0
  257. package/src/abi/connectors/v2/REFLEXER-A.ts +3 -0
  258. package/src/abi/connectors/v2/STAKE-ERC20-A.ts +3 -0
  259. package/src/abi/connectors/v2/UNISWAP-A.ts +297 -0
  260. package/src/abi/connectors/v2/UNISWAP-V2-A.ts +3 -0
  261. package/src/abi/connectors/v2/UNISWAP-V3-A.ts +3 -0
  262. package/src/abi/connectors/v2/UNISWAP-V3-STAKE-A.ts +3 -0
  263. package/src/abi/connectors/v2/WETH-A.ts +3 -0
  264. package/src/abi/connectors/v2/YEARN-VAULT-A.ts +3 -0
  265. package/src/abi/connectors/v2/index.ts +87 -0
  266. package/src/abi/index.ts +15 -7
  267. package/src/abi/instList.json +232 -0
  268. package/src/abi/interopX.json +1436 -0
  269. package/src/alias.ts +6 -0
  270. package/src/api/index.ts +44 -0
  271. package/src/config/index.ts +17 -1
  272. package/src/constants/addresses.ts +24 -16
  273. package/src/constants/blockConfirmations.ts +5 -0
  274. package/src/constants/capPerChain.ts +5 -0
  275. package/src/constants/index.ts +4 -0
  276. package/src/constants/tokens.ts +127 -0
  277. package/src/constants/wrappedNativeToken.ts +5 -0
  278. package/src/crons/index.ts +1 -0
  279. package/src/crons/prices.ts +12 -0
  280. package/src/db/models/transaction.ts +157 -59
  281. package/src/db/sequelize.ts +2 -1
  282. package/src/errors/index.ts +26 -0
  283. package/src/gnosis/actions/aaveV2/index.ts +9 -0
  284. package/src/gnosis/actions/aaveV2/source.ts +174 -0
  285. package/src/gnosis/actions/aaveV2/target.ts +168 -0
  286. package/src/gnosis/actions/aaveV3/index.ts +9 -0
  287. package/src/gnosis/actions/aaveV3/source.ts +119 -0
  288. package/src/gnosis/actions/aaveV3/target.ts +142 -0
  289. package/src/gnosis/actions/index.ts +7 -0
  290. package/src/gnosis/index.ts +19 -0
  291. package/src/index.ts +108 -7
  292. package/src/net/peer/index.ts +9 -7
  293. package/src/net/pool/index.ts +41 -11
  294. package/src/net/protocol/dial/SignatureDialProtocol.ts +24 -13
  295. package/src/net/protocol/dial/TransactionStatusDialProtocol.ts +33 -0
  296. package/src/net/protocol/index.ts +67 -1
  297. package/src/providers/index.ts +1 -0
  298. package/src/providers/retry-provider.ts +51 -0
  299. package/src/services/Prices.ts +89 -0
  300. package/src/services/index.ts +1 -0
  301. package/src/tasks/AutoUpdateTask.ts +82 -0
  302. package/src/tasks/BaseTask.ts +14 -4
  303. package/src/tasks/InteropX/ProcessSubmitEvents.ts +382 -0
  304. package/src/tasks/InteropX/ProcessValidateEvents.ts +297 -0
  305. package/src/tasks/InteropX/SyncLogExecuteEvents.ts +161 -0
  306. package/src/tasks/InteropX/SyncLogSubmitEvents.ts +138 -0
  307. package/src/tasks/InteropX/SyncLogValidateEvents.ts +151 -0
  308. package/src/tasks/Transactions/SyncTransactionStatusTask.ts +70 -0
  309. package/src/tasks/index.ts +32 -5
  310. package/src/typechain/AaveV2Resolver.ts +1017 -0
  311. package/src/typechain/AaveV3Resolver.ts +935 -0
  312. package/src/typechain/BalanceResolver.ts +266 -0
  313. package/src/typechain/InstList.ts +402 -0
  314. package/src/typechain/InteropX.ts +1216 -0
  315. package/src/typechain/factories/AaveV2Resolver__factory.ts +1198 -0
  316. package/src/typechain/factories/AaveV3Resolver__factory.ts +894 -0
  317. package/src/typechain/factories/BalanceResolver__factory.ts +235 -0
  318. package/src/typechain/factories/InstList__factory.ts +253 -0
  319. package/src/typechain/factories/InteropX__factory.ts +1932 -0
  320. package/src/typechain/factories/index.ts +5 -2
  321. package/src/typechain/index.ts +10 -4
  322. package/src/utils/async.ts +22 -0
  323. package/src/utils/dsa.ts +30 -0
  324. package/src/utils/formatting.ts +68 -0
  325. package/src/utils/gnosis.ts +166 -0
  326. package/src/utils/http.ts +6 -0
  327. package/src/utils/index.ts +9 -129
  328. package/src/utils/interop.ts +28 -0
  329. package/src/utils/tokens.ts +21 -0
  330. package/src/utils/validate.ts +174 -0
  331. package/src/utils/web3.ts +132 -0
  332. package/tsconfig.json +7 -2
  333. package/dist/abi/index.js +0 -15
  334. package/dist/abi/interopBridgeToken.json +0 -286
  335. package/dist/abi/interopXGateway.json +0 -184
  336. package/dist/config/index.js +0 -17
  337. package/dist/constants/addresses.js +0 -28
  338. package/dist/index.js +0 -43
  339. package/dist/tasks/InteropXGateway/SyncDepositEvents.js +0 -79
  340. package/dist/tasks/index.js +0 -27
  341. package/dist/typechain/factories/InteropBridgeToken__factory.js +0 -459
  342. package/dist/typechain/factories/InteropXGateway__factory.js +0 -265
  343. package/dist/typechain/factories/index.js +0 -14
  344. package/dist/utils/index.js +0 -101
  345. package/src/abi/interopBridgeToken.json +0 -286
  346. package/src/abi/interopXGateway.json +0 -184
  347. package/src/tasks/InteropXGateway/SyncDepositEvents.ts +0 -114
  348. package/src/typechain/InteropBridgeToken.ts +0 -686
  349. package/src/typechain/InteropXGateway.ts +0 -407
  350. package/src/typechain/factories/InteropBridgeToken__factory.ts +0 -466
  351. 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,44 @@
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
+ server.get('/transactions/:transaction', async (req) => {
30
+ return await Transaction.findOne({
31
+ where: {
32
+ transactionHash: (req.params as any).transaction
33
+ }
34
+ })
35
+ })
36
+
37
+ await server.listen(PORT, HOST)
38
+
39
+ logger.log(`RPC Server listening at http://${HOST}:${PORT}`)
40
+ } catch (err) {
41
+ logger.error(err.message)
42
+ process.exit(1)
43
+ }
44
+ }
@@ -1,5 +1,7 @@
1
1
  import { ethers, Wallet } from "ethers"
2
2
  import { EventBus, EventBusType } from "@/types"
3
+ import fs from 'fs-extra'
4
+ import expandHomeDir from "expand-home-dir";
3
5
 
4
6
  class Config {
5
7
  public readonly events: EventBusType
@@ -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,33 @@
1
+ export type NetworkAddresses = {
2
+ gnosisSafe: string
3
+ multisend: string
4
+ interopX: string
5
+ dsaAddress: string
6
+ instList: string
7
+ aaveV2Resolver: string
8
+ aaveV3Resolver: string
9
+ balanceResolver: string
10
+ }
11
+
1
12
  export const addresses = {
2
- 1: {
3
- gnosisSafe: '0x811Bff6eF88dAAA0aD6438386B534A81cE3F160F',
4
- multisend: '0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761',
5
- interopXGateway: '',
6
- interopBridgeTokens: [],
7
- },
8
13
  137: {
9
14
  gnosisSafe: '0x5635d2910e51da33d9DC0422c893CF4F28B69A25',
10
15
  multisend: '0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761',
11
- interopXGateway: '',
12
- interopBridgeTokens: [
13
- {
14
- address: '0x6c20F03598d5ABF729348E2868b0ff5e8A48aB1F',
15
- symbol : 'USDC',
16
- }
17
- ],
16
+ interopX: '0xDB6083df37C5F224a3dF84A4B5f9fB60b6c8670a',
17
+ dsaAddress: '0x9Fbd453a8e7a158510fBae5D9935958507cf4b19',
18
+ instList: "0x839c2D3aDe63DF5b0b8F3E57D5e145057Ab41556",
19
+ aaveV2Resolver: "0x0731c1d0154C2bE74d50e2083Df10aa531AAbb10",
20
+ aaveV3Resolver: "0x1bD311bd5aD4DCfE18bCb55d42F0a3c714E2bfDe",
21
+ balanceResolver: "0xecc3991846bB21717B95A593Fd86C5930A491F95",
18
22
  },
19
23
  43114: {
20
24
  gnosisSafe: '0x31d7a5194Fe60AC209Cf1Ce2d539C9A60662Ed6b',
21
25
  multisend: '0x998739BFdAAdde7C933B942a68053933098f9EDa',
22
- interopXGateway: '0x8D27758751BA488690974B6Ccfcda771D462945f',
23
- interopBridgeTokens: [],
26
+ interopX: '0xA82A87096709E3D8648c9d9a22f31133bC4B6d32',
27
+ dsaAddress: '0x995e67a652d2be45a8bff438b3dfac66dfff1c46',
28
+ instList: "0x9926955e0Dd681Dc303370C52f4Ad0a4dd061687",
29
+ aaveV2Resolver: "0x7C5C59944263311a1e350E3B871B0d1d8E9A513E",
30
+ aaveV3Resolver: "0xB0862d7dB941698A0A92F8dF6672F4B56A5F5b02",
31
+ balanceResolver: "0xD45dFA34cEeAB567208041331F5ed9916C23b1E8",
24
32
  }
25
- }
33
+ } as Record<number, NetworkAddresses>
@@ -0,0 +1,5 @@
1
+ export const blockConfirmations = {
2
+ "1": 12,
3
+ "137": 32,
4
+ "43114": 12,
5
+ };
@@ -0,0 +1,5 @@
1
+ export const capPerChain = {
2
+ "1": 100_000_000,
3
+ "137": 100_000_000,
4
+ "43114": 100_000_000,
5
+ };
@@ -1 +1,5 @@
1
1
  export * from './addresses';
2
+ export * from './tokens';
3
+ export * from './blockConfirmations';
4
+ export * from './wrappedNativeToken';
5
+ export * from './capPerChain';
@@ -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 }[]>;
@@ -0,0 +1,5 @@
1
+ export const wrappedNativeToken = {
2
+ "1": '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
3
+ "137": '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270',
4
+ "43114": '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7'
5
+ };
@@ -0,0 +1 @@
1
+ import "./prices"
@@ -0,0 +1,12 @@
1
+ import { Prices } from "@/services";
2
+ import cron from "node-cron";
3
+
4
+ Prices.fetch().catch(console.log);
5
+
6
+ cron.schedule(`* * * * *`, async () => {
7
+ try {
8
+ await Prices.fetch();
9
+ } catch (error) {
10
+ console.log("Prices: ", error.message);
11
+ }
12
+ });
@@ -1,92 +1,190 @@
1
- import { sequelize } from '@/db/sequelize'
2
- import { CreationOptional, InferAttributes, InferCreationAttributes, Model, DataTypes } from 'sequelize';
3
-
4
- export class Transaction extends Model<InferAttributes<Transaction>, InferCreationAttributes<Transaction>> {
5
- declare id: CreationOptional<number>;
6
-
7
- declare transactionHash: string;
8
- declare type: string;
9
- declare from: string;
10
- declare to: string;
11
-
12
-
13
- declare sourceChainId: number;
14
- declare sourceTransactionHash: string;
15
- declare sourceBlockNumber: number;
16
- declare sourceStatus: string;
17
- declare sourceErrors: CreationOptional<string[]>;
18
- declare sourceCreatedAt: CreationOptional<Date>;
19
- declare sourceDelayUntil: CreationOptional<Date>;
20
-
21
- declare targetChainId: number;
22
- declare targetTransactionHash: CreationOptional<string>;
23
- declare targetBlockNumber: CreationOptional<number>;
24
- declare targetStatus: string;
25
- declare targetErrors: CreationOptional<string[]>;
26
- declare targetCreatedAt: CreationOptional<Date>;
27
- declare targetDelayUntil: CreationOptional<Date>;
28
-
29
- declare submitEvent: any;
30
- declare sourceEvent: CreationOptional<any>;
31
- declare targetEvent: CreationOptional<any>;
32
-
33
- declare metadata: CreationOptional<any>;
1
+ import { sequelize } from "@/db/sequelize";
2
+ import {
3
+ CreationOptional,
4
+ InferAttributes,
5
+ InferCreationAttributes,
6
+ Model,
7
+ DataTypes,
8
+ } from "sequelize";
9
+
10
+ export interface IPositionTokenInfo {
11
+ amount: string;
12
+ sourceToken: string;
13
+ targetToken: string;
14
+ }
34
15
 
35
- declare status: string;
16
+ export interface IPosition {
17
+ supply: IPositionTokenInfo[];
18
+ withdraw: IPositionTokenInfo[];
19
+ }
36
20
 
37
- declare createdAt: CreationOptional<Date>;
38
- declare updatedAt: CreationOptional<Date>;
21
+ export class Transaction extends Model<
22
+ InferAttributes<Transaction>,
23
+ InferCreationAttributes<Transaction>
24
+ > {
25
+ declare id: CreationOptional<number>;
26
+
27
+ declare transactionHash: string;
28
+ declare vnonce: string;
29
+ declare actionId: string;
30
+ declare sourceSender: string;
31
+
32
+ declare submitChainId: number;
33
+ declare submitTransactionHash: string;
34
+ declare submitBlockNumber: number;
35
+ declare submitCreatedAt: Date;
36
+
37
+ declare sourceChainId: number;
38
+ declare sourceDsaId: string;
39
+ declare sourceTransactionHash: CreationOptional<string>;
40
+ declare sourceBlockNumber: CreationOptional<number>;
41
+ declare sourceStatus: CreationOptional<string>;
42
+ declare sourceErrors: CreationOptional<string[]>;
43
+ declare sourceLogs: CreationOptional<any[]>;
44
+ declare sourceCreatedAt: CreationOptional<Date>;
45
+ declare sourceDelayUntil: CreationOptional<Date>;
46
+
47
+ declare targetChainId: number;
48
+ declare targetDsaId: string;
49
+ declare targetTransactionHash: CreationOptional<string>;
50
+ declare targetBlockNumber: CreationOptional<number>;
51
+ declare targetStatus: CreationOptional<string>;
52
+ declare targetErrors: CreationOptional<string[]>;
53
+ declare targetLogs: CreationOptional<any[]>;
54
+ declare targetCreatedAt: CreationOptional<Date>;
55
+ declare targetDelayUntil: CreationOptional<Date>;
56
+
57
+ declare submitEvent: {
58
+ position: IPosition;
59
+ actionId: string;
60
+ actionIdHashHash: string;
61
+ actionIdHash: string;
62
+ sourceSender: string;
63
+ sourceDsaId: string;
64
+ targetDsaId: string;
65
+ sourceChainId: number;
66
+ targetChainId: number;
67
+ vnonce: string;
68
+ metadata: string;
69
+ };
70
+
71
+ declare validateEvent: CreationOptional<{
72
+ sourceSpells: Array<{ connector: string; data: string }>;
73
+ position: IPosition;
74
+ actionId: string;
75
+ actionIdHashHash: string;
76
+ actionIdHash: string;
77
+ sourceSender: string;
78
+ sourceDsaId: string;
79
+ targetDsaId: string;
80
+ sourceChainId: number;
81
+ targetChainId: number;
82
+ vnonce: string;
83
+ metadata: string;
84
+ }>;
85
+
86
+ declare executeEvent: CreationOptional<{
87
+ sourceSpells: Array<{ connector: string; data: string }>;
88
+ targetSpells: Array<{ connector: string; data: string }>;
89
+ position: IPosition;
90
+ actionId: string;
91
+ actionIdHashHash: string;
92
+ actionIdHash: string;
93
+ sourceSender: string;
94
+ sourceDsaId: string;
95
+ targetDsaId: string;
96
+ sourceChainId: number;
97
+ targetChainId: number;
98
+ vnonce: string;
99
+ metadata: string;
100
+ }>;
101
+
102
+ declare status: CreationOptional<string>;
103
+
104
+ declare createdAt: CreationOptional<Date>;
105
+ declare updatedAt: CreationOptional<Date>;
39
106
  }
40
107
 
41
- Transaction.init({
108
+ Transaction.init(
109
+ {
42
110
  id: {
43
- type: DataTypes.INTEGER,
44
- autoIncrement: true,
45
- primaryKey: true
111
+ type: DataTypes.INTEGER,
112
+ autoIncrement: true,
113
+ primaryKey: true,
46
114
  },
47
115
 
48
-
49
116
  transactionHash: DataTypes.STRING,
50
- type: DataTypes.STRING,
117
+ actionId: DataTypes.STRING,
118
+ vnonce: DataTypes.STRING,
119
+ sourceSender: DataTypes.STRING,
51
120
 
52
- from: DataTypes.STRING,
53
- to: DataTypes.STRING,
121
+ submitChainId: DataTypes.NUMBER,
122
+ submitTransactionHash: DataTypes.STRING,
123
+ submitBlockNumber: DataTypes.NUMBER,
124
+ submitCreatedAt: DataTypes.DATE,
54
125
 
55
126
  sourceChainId: DataTypes.NUMBER,
127
+ sourceDsaId: DataTypes.STRING,
56
128
  sourceTransactionHash: DataTypes.STRING,
57
129
  sourceBlockNumber: DataTypes.NUMBER,
58
- sourceStatus: DataTypes.STRING,
130
+ sourceStatus: {
131
+ type: DataTypes.STRING,
132
+ defaultValue: "pending",
133
+ },
59
134
  sourceErrors: {
60
- type: DataTypes.JSON,
61
- // defaultValue: [],
135
+ type: DataTypes.JSON,
136
+ // defaultValue: [],
137
+ },
138
+ sourceLogs: {
139
+ type: DataTypes.JSON,
140
+ // defaultValue: [],
62
141
  },
63
142
  sourceCreatedAt: {
64
- type: DataTypes.DATE,
65
- defaultValue: Date.now()
143
+ type: DataTypes.DATE,
144
+ defaultValue: Date.now(),
66
145
  },
67
146
  sourceDelayUntil: DataTypes.STRING,
68
147
 
69
148
  targetChainId: DataTypes.NUMBER,
149
+ targetDsaId: DataTypes.STRING,
70
150
  targetTransactionHash: DataTypes.STRING,
71
151
  targetBlockNumber: DataTypes.NUMBER,
72
- targetStatus: DataTypes.STRING,
152
+ targetStatus: {
153
+ type: DataTypes.STRING,
154
+ defaultValue: "pending",
155
+ },
73
156
  targetErrors: {
74
- type: DataTypes.JSON,
75
- // defaultValue: [],
157
+ type: DataTypes.JSON,
158
+ // defaultValue: [],
159
+ },
160
+ targetLogs: {
161
+ type: DataTypes.JSON,
162
+ // defaultValue: [],
76
163
  },
77
164
  targetCreatedAt: DataTypes.DATE,
78
165
  targetDelayUntil: DataTypes.DATE,
79
166
 
80
- submitEvent: DataTypes.JSON,
81
- sourceEvent: DataTypes.JSON,
82
- targetEvent: DataTypes.JSON,
167
+ submitEvent: {
168
+ type: DataTypes.JSON,
169
+ allowNull: false,
170
+ },
171
+
172
+ validateEvent: {
173
+ type: DataTypes.JSON,
174
+ allowNull: true,
175
+ },
83
176
 
84
- metadata: DataTypes.JSON,
177
+ executeEvent: {
178
+ type: DataTypes.JSON,
179
+ allowNull: true,
180
+ },
85
181
 
86
182
  status: {
87
- type: DataTypes.STRING,
88
- defaultValue: 'pending'
183
+ type: DataTypes.STRING,
184
+ defaultValue: "pending",
89
185
  },
90
186
  createdAt: DataTypes.DATE,
91
187
  updatedAt: DataTypes.DATE,
92
- }, { sequelize, tableName: 'transactions' });
188
+ },
189
+ { sequelize, tableName: "transactions" }
190
+ );
@@ -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,26 @@
1
+ export class UnsupportedChaindIdError extends Error {
2
+ constructor(chainId: any) {
3
+ super(`Unsupported chainId: ${chainId}`);
4
+ }
5
+ }
6
+
7
+ export class LiquidityError extends Error {
8
+ constructor(message?: string) {
9
+ super(message || "Not enough liquidity");
10
+ Object.setPrototypeOf(this, new.target.prototype);
11
+ }
12
+ }
13
+
14
+ export class InvalidChaindIdError extends Error {
15
+ constructor(message?: string) {
16
+ super(message || "Invalid chain id");
17
+ Object.setPrototypeOf(this, new.target.prototype);
18
+ }
19
+ }
20
+
21
+ export class LowLiquidityError extends Error {
22
+ constructor(message?: string) {
23
+ super(message || "Low liquidity");
24
+ Object.setPrototypeOf(this, new.target.prototype);
25
+ }
26
+ }
@@ -0,0 +1,9 @@
1
+ import { Transaction } from "@/db";
2
+ import source from "./source";
3
+ import target from "./target";
4
+
5
+
6
+
7
+ export default async function (transaction: Transaction, type: 'source' | 'target') {
8
+ return type === 'source' ? source(transaction) : target(transaction);
9
+ }