@instadapp/interop-x 0.0.0-dev.38887dd → 0.0.0-dev.3d73c64

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 (420) hide show
  1. package/.github/workflows/ci.yml +19 -0
  2. package/dist/package.json +25 -14
  3. package/dist/src/abi/aaveV2Resolver.json +832 -0
  4. package/dist/src/abi/aaveV3Resolver.json +628 -0
  5. package/dist/src/abi/balanceResolver.json +211 -0
  6. package/dist/src/abi/connectors/index.js +36 -0
  7. package/dist/src/abi/connectors/v1/aave.js +148 -0
  8. package/dist/src/abi/connectors/v1/aave_claim.js +4 -0
  9. package/dist/src/abi/connectors/v1/aave_migrate.js +109 -0
  10. package/dist/src/abi/connectors/v1/aave_polygon_migrate.js +110 -0
  11. package/dist/src/abi/connectors/v1/aave_stake.js +4 -0
  12. package/dist/src/abi/connectors/v1/aave_v1_import.js +54 -0
  13. package/dist/src/abi/connectors/v1/aave_v2.js +230 -0
  14. package/dist/src/abi/connectors/v1/aave_v2_import.js +59 -0
  15. package/dist/src/abi/connectors/v1/authority.js +100 -0
  16. package/dist/src/abi/connectors/v1/basic.js +136 -0
  17. package/dist/src/abi/connectors/v1/chi.js +36 -0
  18. package/dist/src/abi/connectors/v1/comp.js +4 -0
  19. package/dist/src/abi/connectors/v1/compound.js +4 -0
  20. package/dist/src/abi/connectors/v1/compoundImport.js +69 -0
  21. package/dist/src/abi/connectors/v1/compoundImport_v2.js +4 -0
  22. package/dist/src/abi/connectors/v1/compound_old.js +448 -0
  23. package/dist/src/abi/connectors/v1/curve.js +140 -0
  24. package/dist/src/abi/connectors/v1/curve_claim.js +63 -0
  25. package/dist/src/abi/connectors/v1/curve_gauge.js +158 -0
  26. package/dist/src/abi/connectors/v1/curve_sbtc.js +140 -0
  27. package/dist/src/abi/connectors/v1/curve_susd.js +140 -0
  28. package/dist/src/abi/connectors/v1/curve_three.js +79 -0
  29. package/dist/src/abi/connectors/v1/curve_y.js +140 -0
  30. package/dist/src/abi/connectors/v1/dsa_migrate_v1_to_v2.js +4 -0
  31. package/dist/src/abi/connectors/v1/dydx.js +148 -0
  32. package/dist/src/abi/connectors/v1/dydx_flash.js +52 -0
  33. package/dist/src/abi/connectors/v1/fee.js +50 -0
  34. package/dist/src/abi/connectors/v1/gelato.js +1138 -0
  35. package/dist/src/abi/connectors/v1/index.js +58 -0
  36. package/dist/src/abi/connectors/v1/instapool.js +439 -0
  37. package/dist/src/abi/connectors/v1/instapool_v2.js +126 -0
  38. package/dist/src/abi/connectors/v1/kyber.js +117 -0
  39. package/dist/src/abi/connectors/v1/maker.js +480 -0
  40. package/dist/src/abi/connectors/v1/maker_old.js +300 -0
  41. package/dist/src/abi/connectors/v1/math.js +43 -0
  42. package/dist/src/abi/connectors/v1/migrate.js +46 -0
  43. package/dist/src/abi/connectors/v1/oasis.js +198 -0
  44. package/dist/src/abi/connectors/v1/oneInch.js +160 -0
  45. package/dist/src/abi/connectors/v1/polygon_bridge.js +4 -0
  46. package/dist/src/abi/connectors/v1/refinance.js +4 -0
  47. package/dist/src/abi/connectors/v1/staking.js +220 -0
  48. package/dist/src/abi/connectors/v1/swerve.js +179 -0
  49. package/dist/src/abi/connectors/v1/uniswap.js +297 -0
  50. package/dist/src/abi/connectors/v2/1INCH-A.js +42 -0
  51. package/dist/src/abi/connectors/v2/1INCH-B.js +4 -0
  52. package/dist/src/abi/connectors/v2/1INCH-V3-A.js +42 -0
  53. package/dist/src/abi/connectors/v2/1INCH-V4-A.js +42 -0
  54. package/dist/src/abi/connectors/v2/AAVE-CLAIM-A.js +4 -0
  55. package/dist/src/abi/connectors/v2/AAVE-CLAIM-B.js +166 -0
  56. package/dist/src/abi/connectors/v2/AAVE-IMPORT-V2-V3-A.js +57 -0
  57. package/dist/src/abi/connectors/v2/AAVE-STAKE-A.js +4 -0
  58. package/dist/src/abi/connectors/v2/AAVE-V1-A.js +130 -0
  59. package/dist/src/abi/connectors/v2/AAVE-V1-IMPORT-A.js +4 -0
  60. package/dist/src/abi/connectors/v2/AAVE-V2-A.js +188 -0
  61. package/dist/src/abi/connectors/v2/AAVE-V2-IMPORT-A.js +4 -0
  62. package/dist/src/abi/connectors/v2/AAVE-V2-IMPORT-B.js +225 -0
  63. package/dist/src/abi/connectors/v2/AAVE-V2-IMPORT-C.js +4 -0
  64. package/dist/src/abi/connectors/v2/AAVE-V3-A.js +322 -0
  65. package/dist/src/abi/connectors/v2/AAVE-V3-CLAIM-A.js +58 -0
  66. package/dist/src/abi/connectors/v2/AAVE-V3-IMPORT-A.js +59 -0
  67. package/dist/src/abi/connectors/v2/AAVE-V3-IMPORT-PERMIT-A.js +81 -0
  68. package/dist/src/abi/connectors/v2/AUTHORITY-A.js +100 -0
  69. package/dist/src/abi/connectors/v2/B-COMPOUND-A.js +4 -0
  70. package/dist/src/abi/connectors/v2/B-LIQUITY-A.js +4 -0
  71. package/dist/src/abi/connectors/v2/B-MAKERDAO-A.js +4 -0
  72. package/dist/src/abi/connectors/v2/BASIC-A.js +94 -0
  73. package/dist/src/abi/connectors/v2/BASIC-B.js +4 -0
  74. package/dist/src/abi/connectors/v2/BASIC-C.js +4 -0
  75. package/dist/src/abi/connectors/v2/BENQI-A.js +901 -0
  76. package/dist/src/abi/connectors/v2/COMP-A.js +4 -0
  77. package/dist/src/abi/connectors/v2/COMPOUND-A.js +4 -0
  78. package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-A.js +4 -0
  79. package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-B.js +195 -0
  80. package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-C.js +4 -0
  81. package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-D.js +27 -0
  82. package/dist/src/abi/connectors/v2/DSA-SPELL-A.js +60 -0
  83. package/dist/src/abi/connectors/v2/G-UNISWAP-A.js +4 -0
  84. package/dist/src/abi/connectors/v2/GELATO-AAVE-A.js +4 -0
  85. package/dist/src/abi/connectors/v2/HOP-A.js +41 -0
  86. package/dist/src/abi/connectors/v2/HOP-MAINNET-A.js +38 -0
  87. package/dist/src/abi/connectors/v2/INST-A.js +4 -0
  88. package/dist/src/abi/connectors/v2/INST-LM-A.js +4 -0
  89. package/dist/src/abi/connectors/v2/INST-STAKING-A.js +4 -0
  90. package/dist/src/abi/connectors/v2/INST-STAKING-B.js +4 -0
  91. package/dist/src/abi/connectors/v2/INSTA-DEX-SIMULATION-A.js +40 -0
  92. package/dist/src/abi/connectors/v2/INSTAPOOL-A.js +4 -0
  93. package/dist/src/abi/connectors/v2/INSTAPOOL-B.js +4 -0
  94. package/dist/src/abi/connectors/v2/INSTAPOOL-C.js +4 -0
  95. package/dist/src/abi/connectors/v2/INTEROP-A.js +4 -0
  96. package/dist/src/abi/connectors/v2/INTEROP-STAGING-A.js +4 -0
  97. package/dist/src/abi/connectors/v2/LIDO-STETH-A.js +36 -0
  98. package/dist/src/abi/connectors/v2/LIQUITY-A.js +4 -0
  99. package/dist/src/abi/connectors/v2/LITE-A.js +4 -0
  100. package/dist/src/abi/connectors/v2/MAKERDAO-A.js +4 -0
  101. package/dist/src/abi/connectors/v2/MAKERDAO-CLAIM-A.js +136 -0
  102. package/dist/src/abi/connectors/v2/MSTABLE-A.js +4 -0
  103. package/dist/src/abi/connectors/v2/NOTIONAL-V2-A.js +484 -0
  104. package/dist/src/abi/connectors/v2/PANGOLIN-A.js +136 -0
  105. package/dist/src/abi/connectors/v2/PANGOLIN-STAKE-A.js +227 -0
  106. package/dist/src/abi/connectors/v2/PARASWAP-A.js +29 -0
  107. package/dist/src/abi/connectors/v2/PARASWAP-V5-A.js +29 -0
  108. package/dist/src/abi/connectors/v2/POLYGON-BRIDGE-A.js +4 -0
  109. package/dist/src/abi/connectors/v2/POOLTOGETHER-A.js +4 -0
  110. package/dist/src/abi/connectors/v2/QI-A.js +4 -0
  111. package/dist/src/abi/connectors/v2/QUICKSWAP-A.js +136 -0
  112. package/dist/src/abi/connectors/v2/REFINANCE-A.js +4 -0
  113. package/dist/src/abi/connectors/v2/REFLEXER-A.js +4 -0
  114. package/dist/src/abi/connectors/v2/STAKE-ERC20-A.js +4 -0
  115. package/dist/src/abi/connectors/v2/SUSHISWAP-A.js +136 -0
  116. package/dist/src/abi/connectors/v2/SWAP-AGGREGATOR-A.js +25 -0
  117. package/dist/src/abi/connectors/v2/UBIQUITY-A.js +73 -0
  118. package/dist/src/abi/connectors/v2/UNISWAP-A.js +297 -0
  119. package/dist/src/abi/connectors/v2/UNISWAP-SELL-BETA.js +4 -0
  120. package/dist/src/abi/connectors/v2/UNISWAP-V2-A.js +4 -0
  121. package/dist/src/abi/connectors/v2/UNISWAP-V3-A.js +4 -0
  122. package/dist/src/abi/connectors/v2/UNISWAP-V3-ROUTER-A.js +4 -0
  123. package/dist/src/abi/connectors/v2/UNISWAP-V3-STAKE-A.js +4 -0
  124. package/dist/src/abi/connectors/v2/UNISWAP-V3-STAKER-B.js +193 -0
  125. package/dist/src/abi/connectors/v2/UNISWAP-V3-SWAP-A.js +74 -0
  126. package/dist/src/abi/connectors/v2/UNIVERSE-A.js +4 -0
  127. package/dist/src/abi/connectors/v2/WAVAX-A.js +4 -0
  128. package/dist/src/abi/connectors/v2/WETH-A.js +4 -0
  129. package/dist/src/abi/connectors/v2/WFTM-A.js +60 -0
  130. package/dist/src/abi/connectors/v2/WMATIC-A.js +4 -0
  131. package/dist/src/abi/connectors/v2/YEARN-VAULT-A.js +4 -0
  132. package/dist/src/abi/connectors/v2/ZEROX-A.js +29 -0
  133. package/dist/src/abi/connectors/v2/ZEROX-V4-A.js +29 -0
  134. package/dist/src/abi/connectors/v2/index.js +173 -0
  135. package/dist/src/abi/index.js +12 -4
  136. package/dist/src/abi/instList.json +232 -0
  137. package/dist/src/abi/interopX.json +1436 -0
  138. package/dist/src/alias.js +10 -0
  139. package/dist/src/api/index.js +13 -3
  140. package/dist/src/config/index.js +10 -1
  141. package/dist/src/constants/addresses.js +12 -7
  142. package/dist/src/constants/blockConfirmations.js +8 -0
  143. package/dist/src/constants/capPerChain.js +8 -0
  144. package/dist/src/constants/index.js +3 -1
  145. package/dist/src/constants/tokens.js +30 -7
  146. package/dist/src/constants/wrappedNativeToken.js +8 -0
  147. package/dist/src/crons/index.js +3 -0
  148. package/dist/src/crons/prices.js +16 -0
  149. package/dist/src/db/models/transaction.js +42 -16
  150. package/dist/src/errors/index.js +30 -0
  151. package/dist/src/gnosis/actions/aaveV2/index.js +11 -0
  152. package/dist/src/gnosis/actions/aaveV2/source.js +98 -0
  153. package/dist/src/gnosis/actions/aaveV2/target.js +100 -0
  154. package/dist/src/gnosis/actions/aaveV3/index.js +11 -0
  155. package/dist/src/gnosis/actions/aaveV3/source.js +83 -0
  156. package/dist/src/gnosis/actions/aaveV3/target.js +87 -0
  157. package/dist/src/gnosis/actions/index.js +11 -0
  158. package/dist/src/gnosis/index.js +20 -0
  159. package/dist/src/index.js +42 -24
  160. package/dist/src/net/peer/index.js +2 -1
  161. package/dist/src/net/pool/index.js +7 -2
  162. package/dist/src/net/protocol/dial/SignatureDialProtocol.js +9 -10
  163. package/dist/src/net/protocol/dial/TransactionStatusDialProtocol.js +30 -0
  164. package/dist/src/net/protocol/index.js +26 -5
  165. package/dist/src/providers/index.js +17 -0
  166. package/dist/src/providers/retry-provider.js +56 -0
  167. package/dist/src/services/Prices.js +74 -0
  168. package/dist/src/services/index.js +8 -0
  169. package/dist/src/tasks/AutoUpdateTask.js +43 -11
  170. package/dist/src/tasks/BaseTask.js +11 -3
  171. package/dist/src/tasks/InteropX/ProcessSubmitEvents.js +273 -0
  172. package/dist/src/tasks/InteropX/ProcessValidateEvents.js +203 -0
  173. package/dist/src/tasks/InteropX/SyncLogExecuteEvents.js +113 -0
  174. package/dist/src/tasks/InteropX/SyncLogSubmitEvents.js +88 -0
  175. package/dist/src/tasks/InteropX/SyncLogValidateEvents.js +106 -0
  176. package/dist/src/tasks/Transactions/SyncTransactionStatusTask.js +58 -0
  177. package/dist/src/tasks/index.js +20 -17
  178. package/dist/src/typechain/{InteropBridgeToken.js → AaveV2Resolver.js} +0 -0
  179. package/dist/src/typechain/{InteropXGateway.js → AaveV3Resolver.js} +0 -0
  180. package/dist/src/typechain/BalanceResolver.js +2 -0
  181. package/dist/src/typechain/InstList.js +2 -0
  182. package/dist/src/typechain/InteropX.js +2 -0
  183. package/dist/src/typechain/factories/AaveV2Resolver__factory.js +1191 -0
  184. package/dist/src/typechain/factories/AaveV3Resolver__factory.js +887 -0
  185. package/dist/src/typechain/factories/BalanceResolver__factory.js +228 -0
  186. package/dist/src/typechain/factories/InstList__factory.js +249 -0
  187. package/dist/src/typechain/factories/InteropX__factory.js +1928 -0
  188. package/dist/src/typechain/factories/index.js +11 -5
  189. package/dist/src/typechain/index.js +11 -5
  190. package/dist/src/utils/aave.js +252 -0
  191. package/dist/src/utils/async.js +18 -0
  192. package/dist/src/utils/dsa.js +36 -0
  193. package/dist/src/utils/formatting.js +67 -0
  194. package/dist/src/utils/gnosis.js +87 -0
  195. package/dist/src/utils/http.js +10 -0
  196. package/dist/src/utils/index.js +23 -225
  197. package/dist/src/utils/interop.js +16 -0
  198. package/dist/src/utils/tokens.js +22 -0
  199. package/dist/src/utils/validate.js +111 -0
  200. package/dist/src/utils/web3.js +106 -0
  201. package/package.json +25 -14
  202. package/src/abi/aaveV2Resolver.json +832 -0
  203. package/src/abi/aaveV3Resolver.json +628 -0
  204. package/src/abi/balanceResolver.json +211 -0
  205. package/src/abi/connectors/index.ts +14 -0
  206. package/src/abi/connectors/v1/aave.ts +147 -0
  207. package/src/abi/connectors/v1/aave_claim.ts +3 -0
  208. package/src/abi/connectors/v1/aave_migrate.ts +108 -0
  209. package/src/abi/connectors/v1/aave_polygon_migrate.ts +109 -0
  210. package/src/abi/connectors/v1/aave_stake.ts +3 -0
  211. package/src/abi/connectors/v1/aave_v1_import.ts +53 -0
  212. package/src/abi/connectors/v1/aave_v2.ts +229 -0
  213. package/src/abi/connectors/v1/aave_v2_import.ts +58 -0
  214. package/src/abi/connectors/v1/authority.ts +99 -0
  215. package/src/abi/connectors/v1/basic.ts +135 -0
  216. package/src/abi/connectors/v1/chi.ts +35 -0
  217. package/src/abi/connectors/v1/comp.ts +3 -0
  218. package/src/abi/connectors/v1/compound.ts +3 -0
  219. package/src/abi/connectors/v1/compoundImport.ts +68 -0
  220. package/src/abi/connectors/v1/compoundImport_v2.ts +3 -0
  221. package/src/abi/connectors/v1/compound_old.ts +447 -0
  222. package/src/abi/connectors/v1/curve.ts +139 -0
  223. package/src/abi/connectors/v1/curve_claim.ts +62 -0
  224. package/src/abi/connectors/v1/curve_gauge.ts +157 -0
  225. package/src/abi/connectors/v1/curve_sbtc.ts +139 -0
  226. package/src/abi/connectors/v1/curve_susd.ts +139 -0
  227. package/src/abi/connectors/v1/curve_three.ts +78 -0
  228. package/src/abi/connectors/v1/curve_y.ts +139 -0
  229. package/src/abi/connectors/v1/dsa_migrate_v1_to_v2.ts +3 -0
  230. package/src/abi/connectors/v1/dydx.ts +147 -0
  231. package/src/abi/connectors/v1/dydx_flash.ts +51 -0
  232. package/src/abi/connectors/v1/fee.ts +49 -0
  233. package/src/abi/connectors/v1/gelato.ts +1137 -0
  234. package/src/abi/connectors/v1/index.ts +42 -0
  235. package/src/abi/connectors/v1/instapool.ts +438 -0
  236. package/src/abi/connectors/v1/instapool_v2.ts +125 -0
  237. package/src/abi/connectors/v1/kyber.ts +116 -0
  238. package/src/abi/connectors/v1/maker.ts +479 -0
  239. package/src/abi/connectors/v1/maker_old.ts +299 -0
  240. package/src/abi/connectors/v1/math.ts +42 -0
  241. package/src/abi/connectors/v1/migrate.ts +45 -0
  242. package/src/abi/connectors/v1/oasis.ts +197 -0
  243. package/src/abi/connectors/v1/oneInch.ts +159 -0
  244. package/src/abi/connectors/v1/polygon_bridge.ts +3 -0
  245. package/src/abi/connectors/v1/refinance.ts +3 -0
  246. package/src/abi/connectors/v1/staking.ts +219 -0
  247. package/src/abi/connectors/v1/swerve.ts +178 -0
  248. package/src/abi/connectors/v1/uniswap.ts +297 -0
  249. package/src/abi/connectors/v2/1INCH-A.ts +41 -0
  250. package/src/abi/connectors/v2/1INCH-B.ts +3 -0
  251. package/src/abi/connectors/v2/1INCH-V3-A.ts +41 -0
  252. package/src/abi/connectors/v2/1INCH-V4-A.ts +41 -0
  253. package/src/abi/connectors/v2/AAVE-CLAIM-A.ts +3 -0
  254. package/src/abi/connectors/v2/AAVE-CLAIM-B.ts +165 -0
  255. package/src/abi/connectors/v2/AAVE-IMPORT-V2-V3-A.ts +56 -0
  256. package/src/abi/connectors/v2/AAVE-STAKE-A.ts +3 -0
  257. package/src/abi/connectors/v2/AAVE-V1-A.ts +130 -0
  258. package/src/abi/connectors/v2/AAVE-V1-IMPORT-A.ts +3 -0
  259. package/src/abi/connectors/v2/AAVE-V2-A.ts +187 -0
  260. package/src/abi/connectors/v2/AAVE-V2-IMPORT-A.ts +3 -0
  261. package/src/abi/connectors/v2/AAVE-V2-IMPORT-B.ts +224 -0
  262. package/src/abi/connectors/v2/AAVE-V2-IMPORT-C.ts +3 -0
  263. package/src/abi/connectors/v2/AAVE-V3-A.ts +321 -0
  264. package/src/abi/connectors/v2/AAVE-V3-CLAIM-A.ts +57 -0
  265. package/src/abi/connectors/v2/AAVE-V3-IMPORT-A.ts +58 -0
  266. package/src/abi/connectors/v2/AAVE-V3-IMPORT-PERMIT-A.ts +80 -0
  267. package/src/abi/connectors/v2/AUTHORITY-A.ts +99 -0
  268. package/src/abi/connectors/v2/B-COMPOUND-A.ts +3 -0
  269. package/src/abi/connectors/v2/B-LIQUITY-A.ts +3 -0
  270. package/src/abi/connectors/v2/B-MAKERDAO-A.ts +3 -0
  271. package/src/abi/connectors/v2/BASIC-A.ts +93 -0
  272. package/src/abi/connectors/v2/BASIC-B.ts +3 -0
  273. package/src/abi/connectors/v2/BASIC-C.ts +3 -0
  274. package/src/abi/connectors/v2/BENQI-A.ts +900 -0
  275. package/src/abi/connectors/v2/COMP-A.ts +3 -0
  276. package/src/abi/connectors/v2/COMPOUND-A.ts +3 -0
  277. package/src/abi/connectors/v2/COMPOUND-IMPORT-A.ts +3 -0
  278. package/src/abi/connectors/v2/COMPOUND-IMPORT-B.ts +194 -0
  279. package/src/abi/connectors/v2/COMPOUND-IMPORT-C.ts +3 -0
  280. package/src/abi/connectors/v2/COMPOUND-IMPORT-D.ts +26 -0
  281. package/src/abi/connectors/v2/DSA-SPELL-A.ts +59 -0
  282. package/src/abi/connectors/v2/G-UNISWAP-A.ts +3 -0
  283. package/src/abi/connectors/v2/GELATO-AAVE-A.ts +3 -0
  284. package/src/abi/connectors/v2/HOP-A.ts +40 -0
  285. package/src/abi/connectors/v2/HOP-MAINNET-A.ts +37 -0
  286. package/src/abi/connectors/v2/INST-A.ts +3 -0
  287. package/src/abi/connectors/v2/INST-LM-A.ts +3 -0
  288. package/src/abi/connectors/v2/INST-STAKING-A.ts +3 -0
  289. package/src/abi/connectors/v2/INST-STAKING-B.ts +3 -0
  290. package/src/abi/connectors/v2/INSTA-DEX-SIMULATION-A.ts +39 -0
  291. package/src/abi/connectors/v2/INSTAPOOL-A.ts +3 -0
  292. package/src/abi/connectors/v2/INSTAPOOL-B.ts +3 -0
  293. package/src/abi/connectors/v2/INSTAPOOL-C.ts +3 -0
  294. package/src/abi/connectors/v2/INTEROP-A.ts +3 -0
  295. package/src/abi/connectors/v2/INTEROP-STAGING-A.ts +3 -0
  296. package/src/abi/connectors/v2/LIDO-STETH-A.ts +35 -0
  297. package/src/abi/connectors/v2/LIQUITY-A.ts +3 -0
  298. package/src/abi/connectors/v2/LITE-A.ts +3 -0
  299. package/src/abi/connectors/v2/MAKERDAO-A.ts +3 -0
  300. package/src/abi/connectors/v2/MAKERDAO-CLAIM-A.ts +135 -0
  301. package/src/abi/connectors/v2/MSTABLE-A.ts +3 -0
  302. package/src/abi/connectors/v2/NOTIONAL-V2-A.ts +483 -0
  303. package/src/abi/connectors/v2/PANGOLIN-A.ts +135 -0
  304. package/src/abi/connectors/v2/PANGOLIN-STAKE-A.ts +226 -0
  305. package/src/abi/connectors/v2/PARASWAP-A.ts +28 -0
  306. package/src/abi/connectors/v2/PARASWAP-V5-A.ts +28 -0
  307. package/src/abi/connectors/v2/POLYGON-BRIDGE-A.ts +3 -0
  308. package/src/abi/connectors/v2/POOLTOGETHER-A.ts +3 -0
  309. package/src/abi/connectors/v2/QI-A.ts +3 -0
  310. package/src/abi/connectors/v2/QUICKSWAP-A.ts +135 -0
  311. package/src/abi/connectors/v2/REFINANCE-A.ts +3 -0
  312. package/src/abi/connectors/v2/REFLEXER-A.ts +3 -0
  313. package/src/abi/connectors/v2/STAKE-ERC20-A.ts +3 -0
  314. package/src/abi/connectors/v2/SUSHISWAP-A.ts +135 -0
  315. package/src/abi/connectors/v2/SWAP-AGGREGATOR-A.ts +24 -0
  316. package/src/abi/connectors/v2/UBIQUITY-A.ts +72 -0
  317. package/src/abi/connectors/v2/UNISWAP-A.ts +297 -0
  318. package/src/abi/connectors/v2/UNISWAP-SELL-BETA.ts +3 -0
  319. package/src/abi/connectors/v2/UNISWAP-V2-A.ts +3 -0
  320. package/src/abi/connectors/v2/UNISWAP-V3-A.ts +3 -0
  321. package/src/abi/connectors/v2/UNISWAP-V3-ROUTER-A.ts +3 -0
  322. package/src/abi/connectors/v2/UNISWAP-V3-STAKE-A.ts +3 -0
  323. package/src/abi/connectors/v2/UNISWAP-V3-STAKER-B.ts +192 -0
  324. package/src/abi/connectors/v2/UNISWAP-V3-SWAP-A.ts +73 -0
  325. package/src/abi/connectors/v2/UNIVERSE-A.ts +3 -0
  326. package/src/abi/connectors/v2/WAVAX-A.ts +3 -0
  327. package/src/abi/connectors/v2/WETH-A.ts +3 -0
  328. package/src/abi/connectors/v2/WFTM-A.ts +59 -0
  329. package/src/abi/connectors/v2/WMATIC-A.ts +3 -0
  330. package/src/abi/connectors/v2/YEARN-VAULT-A.ts +3 -0
  331. package/src/abi/connectors/v2/ZEROX-A.ts +28 -0
  332. package/src/abi/connectors/v2/ZEROX-V4-A.ts +28 -0
  333. package/src/abi/connectors/v2/index.ts +173 -0
  334. package/src/abi/index.ts +15 -7
  335. package/src/abi/instList.json +232 -0
  336. package/src/abi/interopX.json +1436 -0
  337. package/src/alias.ts +6 -0
  338. package/src/api/index.ts +13 -2
  339. package/src/config/index.ts +9 -1
  340. package/src/constants/addresses.ts +24 -8
  341. package/src/constants/blockConfirmations.ts +5 -0
  342. package/src/constants/capPerChain.ts +5 -0
  343. package/src/constants/index.ts +3 -1
  344. package/src/constants/tokens.ts +31 -8
  345. package/src/constants/wrappedNativeToken.ts +5 -0
  346. package/src/crons/index.ts +1 -0
  347. package/src/crons/prices.ts +12 -0
  348. package/src/db/models/transaction.ts +160 -66
  349. package/src/errors/index.ts +26 -0
  350. package/src/gnosis/actions/aaveV2/index.ts +9 -0
  351. package/src/gnosis/actions/aaveV2/source.ts +171 -0
  352. package/src/gnosis/actions/aaveV2/target.ts +160 -0
  353. package/src/gnosis/actions/aaveV3/index.ts +9 -0
  354. package/src/gnosis/actions/aaveV3/source.ts +131 -0
  355. package/src/gnosis/actions/aaveV3/target.ts +142 -0
  356. package/src/gnosis/actions/index.ts +7 -0
  357. package/src/gnosis/index.ts +19 -0
  358. package/src/index.ts +56 -26
  359. package/src/net/peer/index.ts +2 -1
  360. package/src/net/pool/index.ts +7 -3
  361. package/src/net/protocol/dial/SignatureDialProtocol.ts +12 -13
  362. package/src/net/protocol/dial/TransactionStatusDialProtocol.ts +33 -0
  363. package/src/net/protocol/index.ts +28 -6
  364. package/src/providers/index.ts +1 -0
  365. package/src/providers/retry-provider.ts +63 -0
  366. package/src/services/Prices.ts +89 -0
  367. package/src/services/index.ts +1 -0
  368. package/src/tasks/AutoUpdateTask.ts +51 -15
  369. package/src/tasks/BaseTask.ts +13 -3
  370. package/src/tasks/InteropX/ProcessSubmitEvents.ts +386 -0
  371. package/src/tasks/InteropX/ProcessValidateEvents.ts +297 -0
  372. package/src/tasks/InteropX/SyncLogExecuteEvents.ts +161 -0
  373. package/src/tasks/InteropX/SyncLogSubmitEvents.ts +138 -0
  374. package/src/tasks/InteropX/SyncLogValidateEvents.ts +151 -0
  375. package/src/tasks/Transactions/SyncTransactionStatusTask.ts +70 -0
  376. package/src/tasks/index.ts +25 -18
  377. package/src/typechain/AaveV2Resolver.ts +1017 -0
  378. package/src/typechain/AaveV3Resolver.ts +935 -0
  379. package/src/typechain/BalanceResolver.ts +266 -0
  380. package/src/typechain/InstList.ts +402 -0
  381. package/src/typechain/InteropX.ts +1216 -0
  382. package/src/typechain/factories/AaveV2Resolver__factory.ts +1198 -0
  383. package/src/typechain/factories/AaveV3Resolver__factory.ts +894 -0
  384. package/src/typechain/factories/BalanceResolver__factory.ts +235 -0
  385. package/src/typechain/factories/InstList__factory.ts +253 -0
  386. package/src/typechain/factories/InteropX__factory.ts +1932 -0
  387. package/src/typechain/factories/index.ts +5 -2
  388. package/src/typechain/index.ts +10 -4
  389. package/src/utils/aave.ts +355 -0
  390. package/src/utils/async.ts +22 -0
  391. package/src/utils/dsa.ts +56 -0
  392. package/src/utils/formatting.ts +68 -0
  393. package/src/utils/gnosis.ts +166 -0
  394. package/src/utils/http.ts +6 -0
  395. package/src/utils/index.ts +10 -307
  396. package/src/utils/interop.ts +28 -0
  397. package/src/utils/tokens.ts +21 -0
  398. package/src/utils/validate.ts +179 -0
  399. package/src/utils/web3.ts +145 -0
  400. package/tsconfig.json +7 -2
  401. package/dist/src/abi/interopBridgeToken.json +0 -286
  402. package/dist/src/abi/interopXGateway.json +0 -184
  403. package/dist/src/constants/itokens.js +0 -13
  404. package/dist/src/tasks/InteropBridge/ProcessWithdrawEvents.js +0 -147
  405. package/dist/src/tasks/InteropBridge/SyncWithdrawEvents.js +0 -70
  406. package/dist/src/tasks/InteropXGateway/ProcessDepositEvents.js +0 -150
  407. package/dist/src/tasks/InteropXGateway/SyncDepositEvents.js +0 -75
  408. package/dist/src/typechain/factories/InteropBridgeToken__factory.js +0 -459
  409. package/dist/src/typechain/factories/InteropXGateway__factory.js +0 -265
  410. package/src/abi/interopBridgeToken.json +0 -286
  411. package/src/abi/interopXGateway.json +0 -184
  412. package/src/constants/itokens.ts +0 -10
  413. package/src/tasks/InteropBridge/ProcessWithdrawEvents.ts +0 -233
  414. package/src/tasks/InteropBridge/SyncWithdrawEvents.ts +0 -121
  415. package/src/tasks/InteropXGateway/ProcessDepositEvents.ts +0 -245
  416. package/src/tasks/InteropXGateway/SyncDepositEvents.ts +0 -126
  417. package/src/typechain/InteropBridgeToken.ts +0 -686
  418. package/src/typechain/InteropXGateway.ts +0 -407
  419. package/src/typechain/factories/InteropBridgeToken__factory.ts +0 -466
  420. package/src/typechain/factories/InteropXGateway__factory.ts +0 -272
@@ -1,7 +1,10 @@
1
1
  /* Autogenerated file. Do not edit manually. */
2
2
  /* tslint:disable */
3
3
  /* eslint-disable */
4
+ export { AaveV2Resolver__factory } from "./AaveV2Resolver__factory";
5
+ export { AaveV3Resolver__factory } from "./AaveV3Resolver__factory";
6
+ export { BalanceResolver__factory } from "./BalanceResolver__factory";
4
7
  export { Erc20__factory } from "./Erc20__factory";
5
8
  export { GnosisSafe__factory } from "./GnosisSafe__factory";
6
- export { InteropBridgeToken__factory } from "./InteropBridgeToken__factory";
7
- export { InteropXGateway__factory } from "./InteropXGateway__factory";
9
+ export { InstList__factory } from "./InstList__factory";
10
+ export { InteropX__factory } from "./InteropX__factory";
@@ -1,12 +1,18 @@
1
1
  /* Autogenerated file. Do not edit manually. */
2
2
  /* tslint:disable */
3
3
  /* eslint-disable */
4
+ export type { AaveV2Resolver } from "./AaveV2Resolver";
5
+ export type { AaveV3Resolver } from "./AaveV3Resolver";
6
+ export type { BalanceResolver } from "./BalanceResolver";
4
7
  export type { Erc20 } from "./Erc20";
5
8
  export type { GnosisSafe } from "./GnosisSafe";
6
- export type { InteropBridgeToken } from "./InteropBridgeToken";
7
- export type { InteropXGateway } from "./InteropXGateway";
9
+ export type { InstList } from "./InstList";
10
+ export type { InteropX } from "./InteropX";
8
11
  export * as factories from "./factories";
12
+ export { AaveV2Resolver__factory } from "./factories/AaveV2Resolver__factory";
13
+ export { AaveV3Resolver__factory } from "./factories/AaveV3Resolver__factory";
14
+ export { BalanceResolver__factory } from "./factories/BalanceResolver__factory";
9
15
  export { Erc20__factory } from "./factories/Erc20__factory";
10
16
  export { GnosisSafe__factory } from "./factories/GnosisSafe__factory";
11
- export { InteropBridgeToken__factory } from "./factories/InteropBridgeToken__factory";
12
- export { InteropXGateway__factory } from "./factories/InteropXGateway__factory";
17
+ export { InstList__factory } from "./factories/InstList__factory";
18
+ export { InteropX__factory } from "./factories/InteropX__factory";
@@ -0,0 +1,355 @@
1
+ import {
2
+ BigNumber
3
+ } from "bignumber.js";
4
+ import { http } from "./http";
5
+ import { chainIdToNetwork } from "./web3";
6
+
7
+ const getIsolationApi = (network: string) =>
8
+ `https://api.instadapp.io/defi/${network}/aave/v3/isolated`;
9
+
10
+ const getEmodeApi = (network: string) =>
11
+ `https://api.instadapp.io/defi/${network}/aave/v3/emode`;
12
+
13
+ const getPositionApi = (network: string) =>
14
+ `https://api.instadapp.io/defi/${network}/aave/v3/position`;
15
+
16
+ const safeHF = 1.3;
17
+ const isolatedDebtCeilingSafeMargin = 0.8;
18
+
19
+ export const aaveV3ValidateCrossChainPosition = async ({ sourceAddress, targetAddress, sourceChainId, targetChainId, }) => {
20
+ let totalSupplySource = new BigNumber(0),
21
+ totalDebtSource = new BigNumber(0),
22
+ totalSupplyTarget = new BigNumber(0),
23
+ totalDebtTarget = new BigNumber(0),
24
+ totalDebtSourceInUsd = new BigNumber(0),
25
+ totalDebtTargetInUsd = new BigNumber(0);
26
+
27
+ const sourceNetwork = chainIdToNetwork(sourceChainId);
28
+ const targetNetwork = chainIdToNetwork(targetChainId);
29
+
30
+ //fetch user position
31
+ const { data: userSourcePosition } = await http.get(getPositionApi(sourceNetwork), {
32
+ params: {
33
+ user: sourceAddress,
34
+ },
35
+ })
36
+
37
+ const { data: userTargetPosition } = await http.get(getPositionApi(targetNetwork), {
38
+ params: {
39
+ user: targetAddress
40
+ },
41
+ })
42
+
43
+ const { data: targetEmode } = await http.get(getEmodeApi(targetNetwork), {
44
+ params: {
45
+ user: targetAddress
46
+ },
47
+ })
48
+
49
+
50
+ const { data: sourceIso } = await http.get(getIsolationApi(sourceNetwork), {
51
+ params: {
52
+ user: sourceAddress,
53
+ },
54
+ })
55
+
56
+ const { data: targetIso } = await http.get(getIsolationApi(targetNetwork), {
57
+ params: {
58
+ user: targetAddress
59
+ },
60
+ })
61
+
62
+
63
+ const sourceDeposits: any = [];
64
+ const sourceDebts: any = [];
65
+ const targetDeposits: any = [];
66
+ const targetDebts: any = [];
67
+
68
+ userSourcePosition.data.forEach((info: any) => {
69
+ if (info.supply > "0") sourceDeposits.push(info);
70
+ if (info.borrow > "0") sourceDebts.push(info);
71
+ });
72
+
73
+ userTargetPosition.data.forEach((info: any) => {
74
+ if (info.supply > "0") targetDeposits.push(info);
75
+ if (info.borrow > "0") targetDebts.push(info);
76
+ });
77
+
78
+ const sourceIsoAssets = sourceIso.isolatedAssets;
79
+ const targetIsoAssets = targetIso.isolatedAssets;
80
+
81
+ sourceDeposits.forEach((asset: any) => {
82
+ totalSupplySource = totalSupplySource.plus(
83
+ new BigNumber(asset.supply).multipliedBy(
84
+ new BigNumber(10).pow(new BigNumber(asset.aDecimals))
85
+ )
86
+ );
87
+ });
88
+
89
+ sourceDebts.forEach((asset: any) => {
90
+ totalDebtSource = totalDebtSource.plus(
91
+ new BigNumber(asset.borrow).multipliedBy(10 ** asset.aDecimals)
92
+ );
93
+
94
+ totalDebtSourceInUsd = totalDebtSourceInUsd.plus(
95
+ new BigNumber(asset.borrow).multipliedBy(asset.priceInUsd)
96
+ );
97
+ });
98
+
99
+ targetDeposits.forEach((asset: any) => {
100
+ totalSupplyTarget = totalSupplyTarget.plus(
101
+ new BigNumber(asset.supply).pow(10 ** asset.aDecimals)
102
+ );
103
+ });
104
+
105
+ targetDebts.forEach((asset: any) => {
106
+ totalDebtTarget = totalDebtTarget.plus(
107
+ new BigNumber(asset.borrow).pow(10 ** asset.aDecimals)
108
+ );
109
+
110
+ totalDebtTargetInUsd = totalDebtTargetInUsd.plus(
111
+ new BigNumber(asset.borrow).multipliedBy(asset.priceInUsd)
112
+ );
113
+ });
114
+
115
+ /**
116
+ * user deposit on source chain should be available on target chain
117
+ * user debts on source chain should be available on target chain
118
+ */
119
+ let bool = false;
120
+ sourceDebts.forEach((asset: any) => {
121
+ if (!userTargetPosition.data.find((x: any) => x.key === asset.key))
122
+ bool = true;
123
+ });
124
+
125
+ sourceDeposits.forEach((asset: any) => {
126
+ if (!userTargetPosition.data.find((x: any) => x.key === asset.key))
127
+ bool = true;
128
+ });
129
+ if (bool) throw "user asset on source chain not available on target chain";
130
+
131
+ /**
132
+ * checking conditions related to EMODE
133
+ */
134
+ if (
135
+ userSourcePosition.emodeId > "0" &&
136
+ userTargetPosition.emodeId !== userSourcePosition.emodeId
137
+ )
138
+ /**
139
+ * if user position on emode on source chain and not on target chain, can't migrate.
140
+ * as in source chain tvl and lt for position will be greater > tvl and lt for the same assets.
141
+ */
142
+ throw "User emode Id not same between respective chains";
143
+ else if (
144
+ userSourcePosition.emodeId === userTargetPosition.emodeId &&
145
+ userTargetPosition.emodeId > "0"
146
+ ) {
147
+ /**
148
+ * if the user emode Id is same on both chain
149
+ * @conditions user debt tokens on source chain must be present on the target chain emode Id.
150
+ */
151
+ sourceDebts.forEach((asset: any) => {
152
+ if (
153
+ !targetEmode[userTargetPosition.emodeId].find(
154
+ (x: any) => x.key === asset.aTokenKey
155
+ )
156
+ )
157
+ bool = true;
158
+ });
159
+ if (bool) throw "user source debt not a valid debt for target emode";
160
+
161
+ let liquidationThreshold = new BigNumber(0);
162
+
163
+ /**
164
+ * liquidation threshold = (∑Collateral amount * liquidation threshold) / ​∑collateral amount
165
+ */
166
+ sourceDeposits.forEach((asset: any) => {
167
+ const lt = userTargetPosition.data.find(
168
+ (x: any) => x.key === asset.key
169
+ ).eModeLiquidation;
170
+ liquidationThreshold.plus(
171
+ new BigNumber(asset.supply).pow(10 ** asset.aDecimals).multipliedBy(lt)
172
+ );
173
+ });
174
+
175
+ targetDeposits.forEach((asset: any) => {
176
+ liquidationThreshold.plus(
177
+ new BigNumber(asset.supply)
178
+ .pow(10 ** asset.aDecimals)
179
+ .multipliedBy(asset.eModeLiquidation)
180
+ );
181
+ });
182
+
183
+ liquidationThreshold = liquidationThreshold.dividedBy(
184
+ totalSupplySource.plus(totalSupplyTarget)
185
+ );
186
+
187
+ let hfAfterMigration = totalSupplySource
188
+ .plus(totalSupplyTarget)
189
+ .dividedBy(totalDebtSource.plus(totalDebtTarget))
190
+ .dividedBy(liquidationThreshold);
191
+
192
+ /**
193
+ * checking user HF on the target chain
194
+ * HF = (debt / collateral) / liquidation threshold
195
+ */
196
+ if (hfAfterMigration.lt(safeHF))
197
+ throw "position not safe to migrate on target chain";
198
+ } else if (userTargetPosition.emodeId > "0") {
199
+ /**
200
+ * if the user have emode on target chain
201
+ * @conditions user debt tokens on source chain must be present on the target chain emode Id.
202
+ */
203
+ sourceDebts.forEach((asset: any) => {
204
+ if (
205
+ !targetEmode[userTargetPosition.emodeId].find(
206
+ (x: any) => x.key === asset.aTokenKey
207
+ )
208
+ )
209
+ bool = true;
210
+ });
211
+ if (bool) throw "user source debt not a valid debt for target emode";
212
+
213
+ let liquidationThreshold = new BigNumber(0);
214
+
215
+ /**
216
+ * liquidation threshold = (∑Collateral amount * liquidation threshold) / ​∑collateral amount
217
+ */
218
+ sourceDeposits.forEach((asset: any) => {
219
+ const lt = userTargetPosition.data.find(
220
+ (x: any) => x.key === asset.key
221
+ ).eModeLiquidation;
222
+ liquidationThreshold.plus(
223
+ new BigNumber(asset.supply).pow(10 ** asset.aDecimals).multipliedBy(lt)
224
+ );
225
+ });
226
+
227
+ targetDeposits.forEach((asset: any) => {
228
+ liquidationThreshold.plus(
229
+ new BigNumber(asset.supply)
230
+ .pow(10 ** asset.aDecimals)
231
+ .multipliedBy(asset.eModeLiquidation)
232
+ );
233
+ });
234
+
235
+ liquidationThreshold = liquidationThreshold.dividedBy(
236
+ totalSupplySource.plus(totalSupplyTarget)
237
+ );
238
+
239
+ let hfAfterMigration = totalSupplySource
240
+ .plus(totalSupplyTarget)
241
+ .dividedBy(totalDebtSource.plus(totalDebtTarget))
242
+ .dividedBy(liquidationThreshold);
243
+
244
+ /**
245
+ * checking user HF on the target chain
246
+ * HF = (debt / collateral) / liquidation threshold
247
+ */
248
+ if (hfAfterMigration.lt(safeHF))
249
+ throw "position not safe to migrate on target chain";
250
+ }
251
+
252
+
253
+ // checking conditions related to ISOLATION MODE
254
+ let isSourceOnlyIsolatedAssetEnabledAsCollateral = true,
255
+ sourceIsolatedAssetAsCollateral: any = [];
256
+
257
+ let isTargetOnlyIsolatedAssetEnabledAsCollateral = true,
258
+ targteIsolatedAssetAsCollateral: any = [];
259
+
260
+ /**
261
+ * user should have enabled only isolated asset as collateral for supply
262
+ */
263
+ sourceDeposits.forEach((asset: any) => {
264
+ if (asset.isEnabledAsCollateral) {
265
+ const ele = sourceIsoAssets.find((x: any) => x.key === asset.aTokenKey);
266
+ if (!ele) isSourceOnlyIsolatedAssetEnabledAsCollateral = false;
267
+ sourceIsolatedAssetAsCollateral.push(asset);
268
+ }
269
+ });
270
+
271
+ if (sourceIsolatedAssetAsCollateral.length === 0)
272
+ isSourceOnlyIsolatedAssetEnabledAsCollateral = false;
273
+
274
+ targetDeposits.forEach((asset: any) => {
275
+ if (asset.isEnabledAsCollateral) {
276
+ const ele = targetIsoAssets.find((x: any) => x.key === asset.aTokenKey);
277
+ if (!ele) isTargetOnlyIsolatedAssetEnabledAsCollateral = false;
278
+ targteIsolatedAssetAsCollateral.push(asset);
279
+ }
280
+ });
281
+
282
+ if (targteIsolatedAssetAsCollateral.length === 0)
283
+ isTargetOnlyIsolatedAssetEnabledAsCollateral = false;
284
+
285
+ if (isSourceOnlyIsolatedAssetEnabledAsCollateral) {
286
+ const ele = targetIsoAssets.find(
287
+ (x: any) => x.key === sourceIsolatedAssetAsCollateral[0].aTokenKey
288
+ );
289
+
290
+ /**
291
+ * if user isolated asset on source chain is also isolated on target chain
292
+ */
293
+ if (ele)
294
+ if (isTargetOnlyIsolatedAssetEnabledAsCollateral) {
295
+ /**
296
+ * if the user is in isolation mode on both chain then.
297
+ * @conditions user total debt on source chain should be less than target chain isolated debt ceiling.
298
+ */
299
+ const maxDebtCeiling = new BigNumber(
300
+ targteIsolatedAssetAsCollateral[0].isolationDebtCeiling
301
+ ).multipliedBy(isolatedDebtCeilingSafeMargin);
302
+
303
+ if (
304
+ maxDebtCeiling.lt(totalDebtSourceInUsd.plus(totalDebtTargetInUsd))
305
+ ) {
306
+ throw "position not safe to migrate on target chain: target isolated debt ceiling will reach";
307
+ }
308
+
309
+ sourceDebts.forEach((asset: any) => {
310
+ if (
311
+ !targetIso.borrowableInIsolation.find(
312
+ (x: any) => x.key === asset.aTokenKey
313
+ )
314
+ ) {
315
+ throw "user source debt not isolated on target chain";
316
+ }
317
+ });
318
+ } else {
319
+ throw "can't migrate due to user on isolation mode on only one chain";
320
+ }
321
+ } else {
322
+ const tokenInfoSupply: any = [
323
+ [],
324
+ [],
325
+ []
326
+ ];
327
+ const tokenInfoBorrow: any = [
328
+ [],
329
+ [],
330
+ []
331
+ ];
332
+
333
+ sourceDeposits.forEach((asset: any) => {
334
+ tokenInfoSupply[0].push(asset.underlyingTokenAddress);
335
+ const ele = userTargetPosition.data.find((x: any) => x.key === asset.key);
336
+ tokenInfoSupply[1].push(ele.underlyingTokenAddress);
337
+ tokenInfoSupply[2].push(
338
+ new BigNumber(asset.supply)
339
+ .multipliedBy(10 ** asset.aDecimals)
340
+ .toString()
341
+ );
342
+ });
343
+
344
+ sourceDebts.forEach((asset: any) => {
345
+ tokenInfoBorrow[0].push(asset.underlyingTokenAddress);
346
+ const ele = userTargetPosition.data.find((x: any) => x.key === asset.key);
347
+ tokenInfoBorrow[1].push(ele.underlyingTokenAddress);
348
+ tokenInfoBorrow[2].push(
349
+ new BigNumber(asset.borrow)
350
+ .multipliedBy(10 ** asset.aDecimals)
351
+ .toString()
352
+ );
353
+ });
354
+ }
355
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Call an async function with a maximum time limit (in milliseconds) for the timeout
3
+ * Resolved promise for async function call, or an error if time limit reached
4
+ */
5
+ export const asyncCallWithTimeout = async <T>(
6
+ asyncPromise: Promise<T>,
7
+ timeout: number
8
+ ) => {
9
+ let timeoutHandle;
10
+
11
+ const timeoutPromise = new Promise((_resolve, reject) => {
12
+ timeoutHandle = setTimeout(
13
+ () => reject(new Error("Async call timeout limit reached")),
14
+ timeout
15
+ );
16
+ });
17
+
18
+ return Promise.race([asyncPromise, timeoutPromise]).then((result) => {
19
+ clearTimeout(timeoutHandle);
20
+ return result;
21
+ }) as Promise<T>;
22
+ };
@@ -0,0 +1,56 @@
1
+ import Web3EthAbi from "web3-eth-abi";
2
+ import { connectors } from "@/abi/connectors";
3
+ import { getContract, getRpcProviderUrl } from "./web3";
4
+ import { InstList } from "@/typechain";
5
+ import { addresses } from "@/constants";
6
+ import abi from "@/abi";
7
+ import { JsonRpcRetryProvider } from "@/providers";
8
+ import { ChainId } from "@/types";
9
+ import { ethers } from "ethers";
10
+
11
+ export const encodeConnectorMethod = (params: {
12
+ connector: string;
13
+ method: string;
14
+ args: string[];
15
+ }) => {
16
+ const connectorInterface = getInterface(
17
+ connectors.versions[2][params.connector],
18
+ params.method
19
+ );
20
+
21
+ if (!connectorInterface)
22
+ throw new Error(`ConnectorInterface '${params.method}' not found`);
23
+
24
+ //@ts-ignore
25
+ return Web3EthAbi.encodeFunctionCall(connectorInterface, params.args);
26
+ };
27
+
28
+ const getInterface = (abiItems: any[], method: string) => {
29
+ const abiItem = abiItems.find((abiItem) => abiItem.name === method);
30
+
31
+ if (!abiItem) {
32
+ console.error(`${method} is an invalid method.`);
33
+ return;
34
+ }
35
+
36
+ return abiItem;
37
+ };
38
+
39
+
40
+ export const getDsaAccountAddress = async ({
41
+ dsaId,
42
+ chainId,
43
+ provider = null as ethers.providers.Provider | null,
44
+ }) => {
45
+ if (!dsaId) throw new Error("DSA id is required");
46
+
47
+ provider = provider || new JsonRpcRetryProvider(getRpcProviderUrl(chainId));
48
+
49
+ const instListContract = getContract<InstList>(
50
+ addresses[chainId].instList,
51
+ abi.instList,
52
+ provider,
53
+ );
54
+
55
+ return await instListContract.accountAddr(dsaId)
56
+ }
@@ -0,0 +1,68 @@
1
+ const locale = "en-US";
2
+
3
+ export function formatUsd(value: any, fractionDigits = 0) {
4
+ const formatter = new Intl.NumberFormat(locale, {
5
+ style: "currency",
6
+ currency: "USD",
7
+ minimumFractionDigits: fractionDigits,
8
+ maximumFractionDigits: fractionDigits
9
+ });
10
+
11
+ return formatter.format(value);
12
+ }
13
+
14
+ export function shortenHash(hash: string, length: number = 4) {
15
+ if (!hash) return;
16
+
17
+ if (hash.length < 12) return hash;
18
+
19
+ const beginningChars = hash.startsWith("0x") ? length + 2 : length;
20
+
21
+ const shortened = hash.substr(0, beginningChars) + "…" + hash.substr(-length);
22
+
23
+ return shortened;
24
+ }
25
+
26
+ export function short(buffer: Buffer): string {
27
+ return buffer.toString("hex").slice(0, 8) + "...";
28
+ }
29
+
30
+ export const chainIdToName = (chainId: string | number) => {
31
+ switch (String(chainId)) {
32
+ case "1":
33
+ return "Mainnet";
34
+ case "137":
35
+ return "Polygon";
36
+ case "43114":
37
+ return "Avalanche";
38
+ default:
39
+ return "Mainnet";
40
+ }
41
+ };
42
+
43
+ export const getChainIdNativeSymbol = (chainId: string | number) => {
44
+ switch (String(chainId)) {
45
+ case "137":
46
+ return "MATIC";
47
+ case "43114":
48
+ return "AVAX";
49
+ case "1":
50
+ return "ETH";
51
+ default:
52
+ return "ETH";
53
+ }
54
+ };
55
+
56
+
57
+ export const getExplorerUrl = (chainId: string | number, suffix = '/') => {
58
+ switch (String(chainId)) {
59
+ case "1":
60
+ return `https://etherscan.io${suffix}`;
61
+ case "137":
62
+ return `https://polygonscan.com${suffix}`;
63
+ case "43114":
64
+ return `https://snowtrace.io${suffix}`;
65
+ default:
66
+ return `https://etherscan.io${suffix}`;
67
+ }
68
+ }