dequanto 0.0.1

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 (477) hide show
  1. package/.vscode/settings.json +11 -0
  2. package/actions/gen.act.ts +38 -0
  3. package/actions/tokens.act.ts +12 -0
  4. package/configs/dequanto.yml +51 -0
  5. package/contracts/abi/erc20.abi.json +222 -0
  6. package/contracts/gen/amm/AmmFactoryV2ContractBase.ts +66 -0
  7. package/contracts/gen/amm/AmmMasterChefV2ContractBase.ts +158 -0
  8. package/contracts/gen/amm/AmmPairContractV2Base.ts +158 -0
  9. package/contracts/gen/amm/AmmPairContractV3Base.ts +125 -0
  10. package/contracts/gen/amm/AmmRouterV2ContractBase.ts +124 -0
  11. package/contracts/gen/amm/AmmVaultV2ContractBase.ts +214 -0
  12. package/contracts/gen/base/ERC20Base.ts +90 -0
  13. package/contracts/gen/bsc/OneInchRouterV3Base.ts +57 -0
  14. package/contracts/gen/eth/WETHBase/WETHBase.sol +756 -0
  15. package/contracts/gen/eth/WETHBase.ts +136 -0
  16. package/contracts/gen/polygon/ERC20PolygonBase.ts +305 -0
  17. package/contracts/gen/polygon/WormholeBridgeContractBase/Address.sol +216 -0
  18. package/contracts/gen/polygon/WormholeBridgeContractBase/BeaconProxy.sol +61 -0
  19. package/contracts/gen/polygon/WormholeBridgeContractBase/Bridge.sol +437 -0
  20. package/contracts/gen/polygon/WormholeBridgeContractBase/BridgeGetters.sol +70 -0
  21. package/contracts/gen/polygon/WormholeBridgeContractBase/BridgeGovernance.sol +142 -0
  22. package/contracts/gen/polygon/WormholeBridgeContractBase/BridgeImplementation.sol +34 -0
  23. package/contracts/gen/polygon/WormholeBridgeContractBase/BridgeSetters.sol +57 -0
  24. package/contracts/gen/polygon/WormholeBridgeContractBase/BridgeState.sol +52 -0
  25. package/contracts/gen/polygon/WormholeBridgeContractBase/BridgeStructs.sol +66 -0
  26. package/contracts/gen/polygon/WormholeBridgeContractBase/BytesLib.sol +510 -0
  27. package/contracts/gen/polygon/WormholeBridgeContractBase/Context.sol +23 -0
  28. package/contracts/gen/polygon/WormholeBridgeContractBase/ERC1967Proxy.sol +32 -0
  29. package/contracts/gen/polygon/WormholeBridgeContractBase/ERC1967Upgrade.sol +193 -0
  30. package/contracts/gen/polygon/WormholeBridgeContractBase/IBeacon.sol +15 -0
  31. package/contracts/gen/polygon/WormholeBridgeContractBase/IERC20.sol +81 -0
  32. package/contracts/gen/polygon/WormholeBridgeContractBase/IWormhole.sol +42 -0
  33. package/contracts/gen/polygon/WormholeBridgeContractBase/Ownable.sol +71 -0
  34. package/contracts/gen/polygon/WormholeBridgeContractBase/Proxy.sol +85 -0
  35. package/contracts/gen/polygon/WormholeBridgeContractBase/SafeERC20.sol +98 -0
  36. package/contracts/gen/polygon/WormholeBridgeContractBase/StorageSlot.sol +83 -0
  37. package/contracts/gen/polygon/WormholeBridgeContractBase/Structs.sol +40 -0
  38. package/contracts/gen/polygon/WormholeBridgeContractBase/Token.sol +12 -0
  39. package/contracts/gen/polygon/WormholeBridgeContractBase/TokenBridge.sol +15 -0
  40. package/contracts/gen/polygon/WormholeBridgeContractBase/TokenImplementation.sol +177 -0
  41. package/contracts/gen/polygon/WormholeBridgeContractBase/TokenState.sol +31 -0
  42. package/contracts/gen/polygon/WormholeBridgeContractBase.ts +231 -0
  43. package/contracts/gen/xdai/WXDaiTokenContractBase.ts +136 -0
  44. package/data/cex/eth.csv +356 -0
  45. package/data/tokens/1inch.json +16557 -0
  46. package/data/tokens/arbitrum.json +1 -0
  47. package/data/tokens/sushi.json +56388 -0
  48. package/dist/contracts/gen/amm/AmmFactoryV2ContractBase.js +53 -0
  49. package/dist/contracts/gen/amm/AmmMasterChefV2ContractBase.js +122 -0
  50. package/dist/contracts/gen/amm/AmmPairContractV2Base.js +122 -0
  51. package/dist/contracts/gen/amm/AmmPairContractV3Base.js +98 -0
  52. package/dist/contracts/gen/amm/AmmRouterV2ContractBase.js +95 -0
  53. package/dist/contracts/gen/amm/AmmVaultV2ContractBase.js +164 -0
  54. package/dist/contracts/gen/base/ERC20Base.js +64 -0
  55. package/dist/contracts/gen/bsc/OneInchRouterV3Base.js +47 -0
  56. package/dist/contracts/gen/eth/WETHBase.js +96 -0
  57. package/dist/contracts/gen/polygon/ERC20PolygonBase.js +233 -0
  58. package/dist/contracts/gen/polygon/WormholeBridgeContractBase.js +172 -0
  59. package/dist/contracts/gen/xdai/WXDaiTokenContractBase.js +96 -0
  60. package/dist/src/BlockchainExplorer/BlockChainExplorerFactory.js +227 -0
  61. package/dist/src/BlockchainExplorer/BlockChainExplorerProvider.js +32 -0
  62. package/dist/src/BlockchainExplorer/BlockNumberCache.js +33 -0
  63. package/dist/src/BlockchainExplorer/Bscscan.js +27 -0
  64. package/dist/src/BlockchainExplorer/Etherscan.js +27 -0
  65. package/dist/src/BlockchainExplorer/IAbiProvider.js +2 -0
  66. package/dist/src/BlockchainExplorer/IBlockChainExplorer.js +2 -0
  67. package/dist/src/BlockchainExplorer/Polyscan.js +27 -0
  68. package/dist/src/ChainAccounts.js +69 -0
  69. package/dist/src/ChainAccountsService.js +75 -0
  70. package/dist/src/Config.js +7 -0
  71. package/dist/src/blocks/BlockDateResolver.js +125 -0
  72. package/dist/src/bridges/BridgeFactory.js +19 -0
  73. package/dist/src/bridges/hop/HopAddresses.js +520 -0
  74. package/dist/src/bridges/hop/HopBridge.js +327 -0
  75. package/dist/src/bridges/hop/contracts/gen.act.js +43 -0
  76. package/dist/src/bridges/hop/contracts/polygon/Dai_l2AmmWrapperContract.js +52 -0
  77. package/dist/src/bridges/hop/contracts/polygon/Dai_l2BridgeContract.js +319 -0
  78. package/dist/src/bridges/hop/contracts/polygon/Dai_l2SaddleSwapContract.js +178 -0
  79. package/dist/src/bridges/hop/contracts/polygon/Eth_l2AmmWrapperContract.js +52 -0
  80. package/dist/src/bridges/hop/contracts/polygon/Eth_l2BridgeContract.js +319 -0
  81. package/dist/src/bridges/hop/contracts/polygon/Eth_l2SaddleSwapContract.js +178 -0
  82. package/dist/src/bridges/hop/contracts/polygon/Matic_l2AmmWrapperContract.js +52 -0
  83. package/dist/src/bridges/hop/contracts/polygon/Matic_l2BridgeContract.js +319 -0
  84. package/dist/src/bridges/hop/contracts/polygon/Matic_l2SaddleSwapContract.js +178 -0
  85. package/dist/src/bridges/hop/contracts/polygon/Usdc_l2AmmWrapperContract.js +52 -0
  86. package/dist/src/bridges/hop/contracts/polygon/Usdc_l2BridgeContract.js +319 -0
  87. package/dist/src/bridges/hop/contracts/polygon/Usdc_l2SaddleSwapContract.js +178 -0
  88. package/dist/src/bridges/hop/contracts/polygon/Usdt_l2AmmWrapperContract.js +52 -0
  89. package/dist/src/bridges/hop/contracts/polygon/Usdt_l2BridgeContract.js +319 -0
  90. package/dist/src/bridges/hop/contracts/polygon/Usdt_l2SaddleSwapContract.js +178 -0
  91. package/dist/src/bridges/hop/contracts/polygon/Wbtc_l2AmmWrapperContract.js +52 -0
  92. package/dist/src/bridges/hop/contracts/polygon/Wbtc_l2BridgeContract.js +319 -0
  93. package/dist/src/bridges/hop/contracts/polygon/Wbtc_l2SaddleSwapContract.js +178 -0
  94. package/dist/src/bridges/models/IBridge.js +2 -0
  95. package/dist/src/bridges/wormhole/contracts/WormholeBridgeContract.js +15 -0
  96. package/dist/src/chains/PlatformFactory.js +42 -0
  97. package/dist/src/chains/arbitrum/ArbTokenProvider.js +40 -0
  98. package/dist/src/chains/arbitrum/ArbWeb3Client.js +39 -0
  99. package/dist/src/chains/arbitrum/Arbiscan.js +27 -0
  100. package/dist/src/chains/boba/BobaWeb3Client.js +47 -0
  101. package/dist/src/chains/boba/Bobascan.js +28 -0
  102. package/dist/src/chains/xdai/XDaiWeb3Client.js +87 -0
  103. package/dist/src/chains/xdai/XDaiscan.js +27 -0
  104. package/dist/src/chains/xdai/tokens/WXDaiTokenContract.js +15 -0
  105. package/dist/src/clients/BscWeb3Client.js +38 -0
  106. package/dist/src/clients/ClientEventsStream.js +34 -0
  107. package/dist/src/clients/ClientPool.js +560 -0
  108. package/dist/src/clients/ClientPoolStats.js +52 -0
  109. package/dist/src/clients/EthWeb3Client.js +35 -0
  110. package/dist/src/clients/HardhatWeb3Client.js +56 -0
  111. package/dist/src/clients/PolyWeb3Client.js +77 -0
  112. package/dist/src/clients/Web3Client.js +186 -0
  113. package/dist/src/clients/Web3ClientFactory.js +32 -0
  114. package/dist/src/clients/interfaces/IWeb3Client.js +2 -0
  115. package/dist/src/clients/interfaces/IWeb3ClientStatus.js +2 -0
  116. package/dist/src/clients/interfaces/IWeb3EndpointOptions.js +2 -0
  117. package/dist/src/clients/model/ClientStatus.js +9 -0
  118. package/dist/src/clients/model/PromiEventWrap.js +52 -0
  119. package/dist/src/clients/model/SubscriptionWrap.js +42 -0
  120. package/dist/src/clients/utils/ClientEndpoints.js +27 -0
  121. package/dist/src/clients/utils/ClientErrorUtil.js +30 -0
  122. package/dist/src/clients/utils/TxFactory.js +14 -0
  123. package/dist/src/contracts/BscContract.js +30 -0
  124. package/dist/src/contracts/Contract.js +90 -0
  125. package/dist/src/contracts/ContractBase.js +139 -0
  126. package/dist/src/contracts/ContractFactory.js +17 -0
  127. package/dist/src/contracts/ContractProvider.js +40 -0
  128. package/dist/src/contracts/ContractReader.js +76 -0
  129. package/dist/src/contracts/ContractStream.js +20 -0
  130. package/dist/src/contracts/ContractWriter.js +62 -0
  131. package/dist/src/contracts/EthContract.js +31 -0
  132. package/dist/src/contracts/TxContract.js +37 -0
  133. package/dist/src/contracts/common/ERC20.js +14 -0
  134. package/dist/src/contracts/common/ERC20Polygon.js +14 -0
  135. package/dist/src/contracts/common/PoolPair.js +23 -0
  136. package/dist/src/contracts/utils/AbiDeserializer.js +89 -0
  137. package/dist/src/contracts/utils/ConvertUtils.js +21 -0
  138. package/dist/src/contracts/utils/InputDataUtils.js +87 -0
  139. package/dist/src/contracts/utils/TypeUtils.js +24 -0
  140. package/dist/src/defi/OneInch/OneInchRouter.js +14 -0
  141. package/dist/src/env/BigIntSerializer.js +19 -0
  142. package/dist/src/gen/Ast.js +12 -0
  143. package/dist/src/gen/ContractTemplate.js +27 -0
  144. package/dist/src/gen/Generator.js +180 -0
  145. package/dist/src/gen/GeneratorFromAbi.js +361 -0
  146. package/dist/src/handlers/TokenHandler.js +69 -0
  147. package/dist/src/indexer/BlocksTxIndexer.js +52 -0
  148. package/dist/src/indexer/PendingTxIndexer.js +96 -0
  149. package/dist/src/indexer/handlers/BlocksWalker.js +306 -0
  150. package/dist/src/indexer/handlers/TxQueueLoader.js +117 -0
  151. package/dist/src/json/JsonArrayStore.js +296 -0
  152. package/dist/src/json/JsonObjectStore.js +214 -0
  153. package/dist/src/json/JsonStore.spec.js +83 -0
  154. package/dist/src/loggers/ILogger.js +2 -0
  155. package/dist/src/loggers/LoggerService.js +34 -0
  156. package/dist/src/loggers/TxLoggerService.js +122 -0
  157. package/dist/src/models/IContractDetails.js +2 -0
  158. package/dist/src/models/IToken.js +2 -0
  159. package/dist/src/models/ITokenGlob.js +6 -0
  160. package/dist/src/models/ITransactionDetails.js +2 -0
  161. package/dist/src/models/TAddress.js +2 -0
  162. package/dist/src/models/TBufferLike.js +2 -0
  163. package/dist/src/models/THex.js +2 -0
  164. package/dist/src/models/TPlatform.js +2 -0
  165. package/dist/src/models/TResult.js +2 -0
  166. package/dist/src/ns/NameService.js +19 -0
  167. package/dist/src/ns/providers/EnsProvider.js +41 -0
  168. package/dist/src/ns/providers/INsProvider.js +2 -0
  169. package/dist/src/ns/providers/UDProvider.js +39 -0
  170. package/dist/src/ns/utils/$ns.js +17 -0
  171. package/dist/src/structs/PackedRanges.js +186 -0
  172. package/dist/src/structs/PackedRanges.spec.js +30 -0
  173. package/dist/src/tokens/TokenExchangeService.js +110 -0
  174. package/dist/src/tokens/TokenExchanges/AmmBase/AmmUtilts.js +17 -0
  175. package/dist/src/tokens/TokenExchanges/AmmBase/V2/AmmFactoryV2Contract.js +15 -0
  176. package/dist/src/tokens/TokenExchanges/AmmBase/V2/AmmMasterChefV2Contract.js +15 -0
  177. package/dist/src/tokens/TokenExchanges/AmmBase/V2/AmmPairV2Contract.js +16 -0
  178. package/dist/src/tokens/TokenExchanges/AmmBase/V2/AmmPairV2Service.js +144 -0
  179. package/dist/src/tokens/TokenExchanges/AmmBase/V2/AmmRouterV2Contract.js +15 -0
  180. package/dist/src/tokens/TokenExchanges/AmmBase/V2/AmmVaultV2Contract.js +15 -0
  181. package/dist/src/tokens/TokenExchanges/AmmBase/V3/AmmPairV3Contract.js +22 -0
  182. package/dist/src/tokens/TokenExchanges/AmmV2ExchangeBase.js +194 -0
  183. package/dist/src/tokens/TokenExchanges/OneInchExchange.js +92 -0
  184. package/dist/src/tokens/TokenExchanges/PancakeswapExchange.js +28 -0
  185. package/dist/src/tokens/TokenExchanges/SushiswapPolygonExchange.js +28 -0
  186. package/dist/src/tokens/TokenExchanges/UniswapExchange.js +28 -0
  187. package/dist/src/tokens/TokenOracles/AmmPriceV2Oracle.js +319 -0
  188. package/dist/src/tokens/TokenOracles/TokenPriceStore.js +108 -0
  189. package/dist/src/tokens/TokenPriceService.js +196 -0
  190. package/dist/src/tokens/TokenPriceServiceProvider.js +31 -0
  191. package/dist/src/tokens/TokenProviders/ATokenProvider.js +38 -0
  192. package/dist/src/tokens/TokenProviders/ITokenProvider.js +2 -0
  193. package/dist/src/tokens/TokenProviders/TPChain.js +35 -0
  194. package/dist/src/tokens/TokenProviders/TPCoinmarketcap.js +63 -0
  195. package/dist/src/tokens/TokenProviders/TPOneInch.js +65 -0
  196. package/dist/src/tokens/TokenProviders/TPSushiswap.js +89 -0
  197. package/dist/src/tokens/TokenProviders/TPUniswap.js +84 -0
  198. package/dist/src/tokens/TokenService.js +115 -0
  199. package/dist/src/tokens/TokenSwapService.js +37 -0
  200. package/dist/src/tokens/TokenTransferService.js +189 -0
  201. package/dist/src/tokens/TokensService.js +236 -0
  202. package/dist/src/tokens/TokensServiceBsc.js +18 -0
  203. package/dist/src/tokens/TokensServiceEth.js +15 -0
  204. package/dist/src/tokens/TokensServiceFactory.js +29 -0
  205. package/dist/src/tokens/TokensServicePolygon.js +18 -0
  206. package/dist/src/tokens/TokensServiceXDai.js +24 -0
  207. package/dist/src/tokens/defi/ISwapService.js +2 -0
  208. package/dist/src/tokens/defi/paraswap/Paraswap.js +135 -0
  209. package/dist/src/tokens/erc20/eth/WETH.js +14 -0
  210. package/dist/src/tokens/utils/TokenUtils.js +66 -0
  211. package/dist/src/txs/ITxConfig.js +2 -0
  212. package/dist/src/txs/TxDataBuilder.js +159 -0
  213. package/dist/src/txs/TxLogger.js +119 -0
  214. package/dist/src/txs/TxProvider.js +73 -0
  215. package/dist/src/txs/TxService.js +19 -0
  216. package/dist/src/txs/TxWriter.js +287 -0
  217. package/dist/src/txs/conditional/GasWatcherLogger.js +61 -0
  218. package/dist/src/txs/conditional/GasWatcherService.js +103 -0
  219. package/dist/src/txs/conditional/GasWatcherStore.js +25 -0
  220. package/dist/src/txs/conditional/GasWatcherTx.js +126 -0
  221. package/dist/src/txs/receipt/ITxLogItem.js +2 -0
  222. package/dist/src/txs/receipt/TxLogParser.js +27 -0
  223. package/dist/src/txs/receipt/TxLogsTransfer.js +50 -0
  224. package/dist/src/txs/receipt/TxTopicInMemoryProvider.js +41 -0
  225. package/dist/src/txs/receipt/TxTopicProvider.js +25 -0
  226. package/dist/src/utils/$abiParser.js +159 -0
  227. package/dist/src/utils/$abiType.js +77 -0
  228. package/dist/src/utils/$abiUtils.js +43 -0
  229. package/dist/src/utils/$address.js +41 -0
  230. package/dist/src/utils/$array.js +60 -0
  231. package/dist/src/utils/$bigint.js +130 -0
  232. package/dist/src/utils/$block.js +10 -0
  233. package/dist/src/utils/$class.js +13 -0
  234. package/dist/src/utils/$config.js +18 -0
  235. package/dist/src/utils/$contract.js +67 -0
  236. package/dist/src/utils/$csv.js +79 -0
  237. package/dist/src/utils/$date.js +496 -0
  238. package/dist/src/utils/$fn.js +117 -0
  239. package/dist/src/utils/$is.js +40 -0
  240. package/dist/src/utils/$logger.js +15 -0
  241. package/dist/src/utils/$number.js +95 -0
  242. package/dist/src/utils/$object.js +82 -0
  243. package/dist/src/utils/$path.js +33 -0
  244. package/dist/src/utils/$promise.js +13 -0
  245. package/dist/src/utils/$require.js +127 -0
  246. package/dist/src/utils/$sign.js +35 -0
  247. package/dist/src/utils/$signSerializer.js +264 -0
  248. package/dist/src/utils/$wallet.js +13 -0
  249. package/dist/src/utils/types.js +2 -0
  250. package/dist/src/wallets/Wallet.js +26 -0
  251. package/dist/src/wallets/WalletBsc.js +17 -0
  252. package/dist/src/wallets/WalletService.js +35 -0
  253. package/dist/src/www/utils/BlockChainExplorerFormatter.js +15 -0
  254. package/hardhat.config.js +6 -0
  255. package/package.json +52 -0
  256. package/readme.md +76 -0
  257. package/src/BlockchainExplorer/BlockChainExplorerFactory.ts +273 -0
  258. package/src/BlockchainExplorer/BlockChainExplorerProvider.ts +26 -0
  259. package/src/BlockchainExplorer/BlockNumberCache.ts +46 -0
  260. package/src/BlockchainExplorer/Bscscan.ts +23 -0
  261. package/src/BlockchainExplorer/Etherscan.ts +25 -0
  262. package/src/BlockchainExplorer/IAbiProvider.ts +5 -0
  263. package/src/BlockchainExplorer/IBlockChainExplorer.ts +37 -0
  264. package/src/BlockchainExplorer/Polyscan.ts +23 -0
  265. package/src/ChainAccounts.ts +72 -0
  266. package/src/ChainAccountsService.ts +74 -0
  267. package/src/Config.ts +34 -0
  268. package/src/blocks/BlockDateResolver.ts +149 -0
  269. package/src/bridges/BridgeFactory.ts +16 -0
  270. package/src/bridges/hop/HopAddresses.ts +518 -0
  271. package/src/bridges/hop/HopBridge.ts +430 -0
  272. package/src/bridges/hop/contracts/gen.act.ts +50 -0
  273. package/src/bridges/hop/contracts/polygon/Dai_l2AmmWrapperContract.ts +69 -0
  274. package/src/bridges/hop/contracts/polygon/Dai_l2BridgeContract.ts +453 -0
  275. package/src/bridges/hop/contracts/polygon/Dai_l2SaddleSwapContract.ts +264 -0
  276. package/src/bridges/hop/contracts/polygon/Eth_l2AmmWrapperContract.ts +69 -0
  277. package/src/bridges/hop/contracts/polygon/Eth_l2BridgeContract.ts +453 -0
  278. package/src/bridges/hop/contracts/polygon/Eth_l2SaddleSwapContract.ts +264 -0
  279. package/src/bridges/hop/contracts/polygon/Matic_l2AmmWrapperContract.ts +69 -0
  280. package/src/bridges/hop/contracts/polygon/Matic_l2BridgeContract.ts +453 -0
  281. package/src/bridges/hop/contracts/polygon/Matic_l2SaddleSwapContract.ts +264 -0
  282. package/src/bridges/hop/contracts/polygon/Usdc_l2AmmWrapperContract.ts +69 -0
  283. package/src/bridges/hop/contracts/polygon/Usdc_l2BridgeContract.ts +453 -0
  284. package/src/bridges/hop/contracts/polygon/Usdc_l2SaddleSwapContract.ts +264 -0
  285. package/src/bridges/hop/contracts/polygon/Usdt_l2AmmWrapperContract.ts +69 -0
  286. package/src/bridges/hop/contracts/polygon/Usdt_l2BridgeContract.ts +453 -0
  287. package/src/bridges/hop/contracts/polygon/Usdt_l2SaddleSwapContract.ts +264 -0
  288. package/src/bridges/hop/contracts/polygon/Wbtc_l2AmmWrapperContract.ts +69 -0
  289. package/src/bridges/hop/contracts/polygon/Wbtc_l2BridgeContract.ts +453 -0
  290. package/src/bridges/hop/contracts/polygon/Wbtc_l2SaddleSwapContract.ts +264 -0
  291. package/src/bridges/models/IBridge.ts +43 -0
  292. package/src/bridges/wormhole/contracts/WormholeBridgeContract.ts +14 -0
  293. package/src/chains/PlatformFactory.ts +45 -0
  294. package/src/chains/arbitrum/ArbTokenProvider.ts +39 -0
  295. package/src/chains/arbitrum/ArbWeb3Client.ts +39 -0
  296. package/src/chains/arbitrum/Arbiscan.ts +24 -0
  297. package/src/chains/boba/BobaWeb3Client.ts +49 -0
  298. package/src/chains/boba/Bobascan.ts +25 -0
  299. package/src/chains/xdai/XDaiWeb3Client.ts +82 -0
  300. package/src/chains/xdai/XDaiscan.ts +24 -0
  301. package/src/chains/xdai/tokens/WXDaiTokenContract.json +279 -0
  302. package/src/chains/xdai/tokens/WXDaiTokenContract.ts +14 -0
  303. package/src/clients/BscWeb3Client.ts +38 -0
  304. package/src/clients/ClientEventsStream.ts +33 -0
  305. package/src/clients/ClientPool.ts +673 -0
  306. package/src/clients/ClientPoolStats.ts +64 -0
  307. package/src/clients/EthWeb3Client.ts +36 -0
  308. package/src/clients/HardhatWeb3Client.ts +60 -0
  309. package/src/clients/PolyWeb3Client.ts +91 -0
  310. package/src/clients/Web3Client.ts +228 -0
  311. package/src/clients/Web3ClientFactory.ts +28 -0
  312. package/src/clients/interfaces/IWeb3Client.ts +14 -0
  313. package/src/clients/interfaces/IWeb3ClientStatus.ts +23 -0
  314. package/src/clients/interfaces/IWeb3EndpointOptions.ts +9 -0
  315. package/src/clients/model/ClientStatus.ts +5 -0
  316. package/src/clients/model/PromiEventWrap.ts +61 -0
  317. package/src/clients/model/SubscriptionWrap.ts +53 -0
  318. package/src/clients/utils/ClientEndpoints.ts +26 -0
  319. package/src/clients/utils/ClientErrorUtil.ts +26 -0
  320. package/src/clients/utils/TxFactory.ts +17 -0
  321. package/src/contracts/BscContract.ts +28 -0
  322. package/src/contracts/Contract.ts +126 -0
  323. package/src/contracts/ContractBase.ts +158 -0
  324. package/src/contracts/ContractFactory.ts +19 -0
  325. package/src/contracts/ContractProvider.ts +55 -0
  326. package/src/contracts/ContractReader.ts +87 -0
  327. package/src/contracts/ContractStream.ts +18 -0
  328. package/src/contracts/ContractWriter.ts +97 -0
  329. package/src/contracts/EthContract.ts +29 -0
  330. package/src/contracts/TxContract.ts +43 -0
  331. package/src/contracts/common/ERC20.ts +13 -0
  332. package/src/contracts/common/ERC20Polygon.ts +13 -0
  333. package/src/contracts/common/PoolPair.ts +22 -0
  334. package/src/contracts/utils/AbiDeserializer.ts +98 -0
  335. package/src/contracts/utils/ConvertUtils.ts +16 -0
  336. package/src/contracts/utils/InputDataUtils.ts +93 -0
  337. package/src/contracts/utils/TypeUtils.ts +21 -0
  338. package/src/defi/OneInch/OneInchRouter.ts +13 -0
  339. package/src/env/BigIntSerializer.ts +18 -0
  340. package/src/gen/Ast.ts +12 -0
  341. package/src/gen/ContractTemplate.ts +36 -0
  342. package/src/gen/Generator.ts +227 -0
  343. package/src/gen/GeneratorFromAbi.ts +402 -0
  344. package/src/handlers/TokenHandler.ts +78 -0
  345. package/src/indexer/BlocksTxIndexer.ts +69 -0
  346. package/src/indexer/PendingTxIndexer.ts +124 -0
  347. package/src/indexer/handlers/BlocksWalker.ts +390 -0
  348. package/src/indexer/handlers/TxQueueLoader.ts +143 -0
  349. package/src/json/JsonArrayStore.ts +310 -0
  350. package/src/json/JsonObjectStore.ts +239 -0
  351. package/src/json/JsonStore.spec.ts +98 -0
  352. package/src/loggers/ILogger.ts +3 -0
  353. package/src/loggers/LoggerService.ts +39 -0
  354. package/src/loggers/TxLoggerService.ts +146 -0
  355. package/src/models/IContractDetails.ts +8 -0
  356. package/src/models/IToken.ts +11 -0
  357. package/src/models/ITokenGlob.ts +14 -0
  358. package/src/models/ITransactionDetails.ts +11 -0
  359. package/src/models/TAddress.ts +1 -0
  360. package/src/models/TBufferLike.ts +2 -0
  361. package/src/models/THex.ts +1 -0
  362. package/src/models/TPlatform.ts +1 -0
  363. package/src/models/TResult.ts +6 -0
  364. package/src/ns/NameService.ts +21 -0
  365. package/src/ns/providers/EnsProvider.ts +45 -0
  366. package/src/ns/providers/INsProvider.ts +6 -0
  367. package/src/ns/providers/UDProvider.ts +49 -0
  368. package/src/ns/utils/$ns.ts +15 -0
  369. package/src/structs/PackedRanges.spec.ts +38 -0
  370. package/src/structs/PackedRanges.ts +207 -0
  371. package/src/tokens/TokenExchangeService.ts +126 -0
  372. package/src/tokens/TokenExchanges/AmmBase/AmmUtilts.ts +16 -0
  373. package/src/tokens/TokenExchanges/AmmBase/V2/AmmFactoryV2Contract.ts +15 -0
  374. package/src/tokens/TokenExchanges/AmmBase/V2/AmmMasterChefV2Contract.ts +15 -0
  375. package/src/tokens/TokenExchanges/AmmBase/V2/AmmPairV2Contract.ts +17 -0
  376. package/src/tokens/TokenExchanges/AmmBase/V2/AmmPairV2Service.ts +208 -0
  377. package/src/tokens/TokenExchanges/AmmBase/V2/AmmRouterV2Contract.ts +15 -0
  378. package/src/tokens/TokenExchanges/AmmBase/V2/AmmVaultV2Contract.ts +15 -0
  379. package/src/tokens/TokenExchanges/AmmBase/V3/AmmPairV3Contract.ts +24 -0
  380. package/src/tokens/TokenExchanges/AmmV2ExchangeBase.ts +242 -0
  381. package/src/tokens/TokenExchanges/OneInchExchange.ts +111 -0
  382. package/src/tokens/TokenExchanges/PancakeswapExchange.ts +30 -0
  383. package/src/tokens/TokenExchanges/SushiswapPolygonExchange.ts +30 -0
  384. package/src/tokens/TokenExchanges/UniswapExchange.ts +31 -0
  385. package/src/tokens/TokenOracles/AmmPriceV2Oracle.ts +440 -0
  386. package/src/tokens/TokenOracles/TokenPriceStore.ts +129 -0
  387. package/src/tokens/TokenPriceService.ts +276 -0
  388. package/src/tokens/TokenPriceServiceProvider.ts +36 -0
  389. package/src/tokens/TokenProviders/ATokenProvider.ts +42 -0
  390. package/src/tokens/TokenProviders/ITokenProvider.ts +9 -0
  391. package/src/tokens/TokenProviders/TPChain.ts +41 -0
  392. package/src/tokens/TokenProviders/TPCoinmarketcap.ts +82 -0
  393. package/src/tokens/TokenProviders/TPOneInch.ts +71 -0
  394. package/src/tokens/TokenProviders/TPSushiswap.ts +96 -0
  395. package/src/tokens/TokenProviders/TPUniswap.ts +85 -0
  396. package/src/tokens/TokenService.ts +128 -0
  397. package/src/tokens/TokenSwapService.ts +47 -0
  398. package/src/tokens/TokenTransferService.ts +216 -0
  399. package/src/tokens/TokensService.ts +252 -0
  400. package/src/tokens/TokensServiceBsc.ts +17 -0
  401. package/src/tokens/TokensServiceEth.ts +9 -0
  402. package/src/tokens/TokensServiceFactory.ts +24 -0
  403. package/src/tokens/TokensServicePolygon.ts +17 -0
  404. package/src/tokens/TokensServiceXDai.ts +26 -0
  405. package/src/tokens/defi/ISwapService.ts +12 -0
  406. package/src/tokens/defi/paraswap/Paraswap.ts +244 -0
  407. package/src/tokens/erc20/eth/WETH.ts +13 -0
  408. package/src/tokens/utils/TokenUtils.ts +63 -0
  409. package/src/txs/ITxConfig.ts +27 -0
  410. package/src/txs/TxDataBuilder.ts +207 -0
  411. package/src/txs/TxLogger.ts +121 -0
  412. package/src/txs/TxProvider.ts +68 -0
  413. package/src/txs/TxService.ts +19 -0
  414. package/src/txs/TxWriter.ts +370 -0
  415. package/src/txs/conditional/GasWatcherLogger.ts +57 -0
  416. package/src/txs/conditional/GasWatcherService.ts +117 -0
  417. package/src/txs/conditional/GasWatcherStore.ts +40 -0
  418. package/src/txs/conditional/GasWatcherTx.ts +143 -0
  419. package/src/txs/receipt/ITxLogItem.ts +25 -0
  420. package/src/txs/receipt/TxLogParser.ts +29 -0
  421. package/src/txs/receipt/TxLogsTransfer.ts +61 -0
  422. package/src/txs/receipt/TxTopicInMemoryProvider.ts +45 -0
  423. package/src/txs/receipt/TxTopicProvider.ts +29 -0
  424. package/src/utils/$abiParser.ts +179 -0
  425. package/src/utils/$abiType.ts +85 -0
  426. package/src/utils/$abiUtils.ts +38 -0
  427. package/src/utils/$address.ts +37 -0
  428. package/src/utils/$array.ts +57 -0
  429. package/src/utils/$bigint.ts +127 -0
  430. package/src/utils/$block.ts +7 -0
  431. package/src/utils/$class.ts +8 -0
  432. package/src/utils/$config.ts +17 -0
  433. package/src/utils/$contract.ts +67 -0
  434. package/src/utils/$csv.ts +54 -0
  435. package/src/utils/$date.ts +473 -0
  436. package/src/utils/$fn.ts +134 -0
  437. package/src/utils/$is.ts +37 -0
  438. package/src/utils/$logger.ts +10 -0
  439. package/src/utils/$number.ts +89 -0
  440. package/src/utils/$object.ts +95 -0
  441. package/src/utils/$path.ts +32 -0
  442. package/src/utils/$promise.ts +7 -0
  443. package/src/utils/$require.ts +118 -0
  444. package/src/utils/$sign.ts +36 -0
  445. package/src/utils/$signSerializer.ts +339 -0
  446. package/src/utils/$wallet.ts +10 -0
  447. package/src/utils/types.ts +29 -0
  448. package/src/wallets/Wallet.ts +33 -0
  449. package/src/wallets/WalletBsc.ts +13 -0
  450. package/src/wallets/WalletService.ts +43 -0
  451. package/src/www/utils/BlockChainExplorerFormatter.ts +13 -0
  452. package/test/ChainAccount.spec.ts +9 -0
  453. package/test/client.spec.ts +59 -0
  454. package/test/fixtures/DaiTokenContract.ts +13 -0
  455. package/test/fixtures/receipts/swap.json +94 -0
  456. package/test/generate/class.spec.ts +27 -0
  457. package/test/hardhat/TestNode.ts +61 -0
  458. package/test/ns.spec.ts +30 -0
  459. package/test/receipt.spec.ts +27 -0
  460. package/test/utils/abi-parser.spec.ts +117 -0
  461. package/test/utils/bigint.spec.ts +40 -0
  462. package/test/utils/date.spec.ts +8 -0
  463. package/test/utils/fn.spec.ts +39 -0
  464. package/test/utils/number.spec.ts +41 -0
  465. package/test/utils/sign.spec.ts +22 -0
  466. package/tsconfig-build.json +24 -0
  467. package/tsconfig-src.json +36 -0
  468. package/tsconfig.json +27 -0
  469. package/typings/globals/assertion/index.d.ts +159 -0
  470. package/typings/globals/assertion/typings.json +10 -0
  471. package/typings/globals/atma-utest/index.d.ts +53 -0
  472. package/typings/globals/atma-utest/typings.json +10 -0
  473. package/typings/globals/axios/index.d.ts +6 -0
  474. package/typings/globals/mask/index.d.ts +6 -0
  475. package/typings/globals/mask/typings.json +9 -0
  476. package/typings/index.d.ts +6 -0
  477. package/typings.json +6 -0
@@ -0,0 +1,83 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity ^0.8.0;
4
+
5
+ /**
6
+ * @dev Library for reading and writing primitive types to specific storage slots.
7
+ *
8
+ * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.
9
+ * This library helps with reading and writing to such slots without the need for inline assembly.
10
+ *
11
+ * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.
12
+ *
13
+ * Example usage to set ERC1967 implementation slot:
14
+ * ```
15
+ * contract ERC1967 {
16
+ * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
17
+ *
18
+ * function _getImplementation() internal view returns (address) {
19
+ * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
20
+ * }
21
+ *
22
+ * function _setImplementation(address newImplementation) internal {
23
+ * require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
24
+ * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
25
+ * }
26
+ * }
27
+ * ```
28
+ *
29
+ * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._
30
+ */
31
+ library StorageSlot {
32
+ struct AddressSlot {
33
+ address value;
34
+ }
35
+
36
+ struct BooleanSlot {
37
+ bool value;
38
+ }
39
+
40
+ struct Bytes32Slot {
41
+ bytes32 value;
42
+ }
43
+
44
+ struct Uint256Slot {
45
+ uint256 value;
46
+ }
47
+
48
+ /**
49
+ * @dev Returns an `AddressSlot` with member `value` located at `slot`.
50
+ */
51
+ function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
52
+ assembly {
53
+ r.slot := slot
54
+ }
55
+ }
56
+
57
+ /**
58
+ * @dev Returns an `BooleanSlot` with member `value` located at `slot`.
59
+ */
60
+ function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
61
+ assembly {
62
+ r.slot := slot
63
+ }
64
+ }
65
+
66
+ /**
67
+ * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.
68
+ */
69
+ function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
70
+ assembly {
71
+ r.slot := slot
72
+ }
73
+ }
74
+
75
+ /**
76
+ * @dev Returns an `Uint256Slot` with member `value` located at `slot`.
77
+ */
78
+ function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
79
+ assembly {
80
+ r.slot := slot
81
+ }
82
+ }
83
+ }
@@ -0,0 +1,40 @@
1
+ // contracts/Structs.sol
2
+ // SPDX-License-Identifier: Apache 2
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ interface Structs {
7
+ struct Provider {
8
+ uint16 chainId;
9
+ uint16 governanceChainId;
10
+ bytes32 governanceContract;
11
+ }
12
+
13
+ struct GuardianSet {
14
+ address[] keys;
15
+ uint32 expirationTime;
16
+ }
17
+
18
+ struct Signature {
19
+ bytes32 r;
20
+ bytes32 s;
21
+ uint8 v;
22
+ uint8 guardianIndex;
23
+ }
24
+
25
+ struct VM {
26
+ uint8 version;
27
+ uint32 timestamp;
28
+ uint32 nonce;
29
+ uint16 emitterChainId;
30
+ bytes32 emitterAddress;
31
+ uint64 sequence;
32
+ uint8 consistencyLevel;
33
+ bytes payload;
34
+
35
+ uint32 guardianSetIndex;
36
+ Signature[] signatures;
37
+
38
+ bytes32 hash;
39
+ }
40
+ }
@@ -0,0 +1,12 @@
1
+ // contracts/Structs.sol
2
+ // SPDX-License-Identifier: Apache 2
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol";
7
+
8
+ contract BridgeToken is BeaconProxy {
9
+ constructor(address beacon, bytes memory data) BeaconProxy(beacon, data) {
10
+
11
+ }
12
+ }
@@ -0,0 +1,15 @@
1
+ // contracts/Wormhole.sol
2
+ // SPDX-License-Identifier: Apache 2
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
7
+
8
+ contract TokenBridge is ERC1967Proxy {
9
+ constructor (address implementation, bytes memory initData)
10
+ ERC1967Proxy(
11
+ implementation,
12
+ initData
13
+ )
14
+ {}
15
+ }
@@ -0,0 +1,177 @@
1
+ // contracts/TokenImplementation.sol
2
+ // SPDX-License-Identifier: Apache 2
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import "./TokenState.sol";
7
+ import "@openzeppelin/contracts/access/Ownable.sol";
8
+ import "@openzeppelin/contracts/utils/Context.sol";
9
+ import "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol";
10
+
11
+ // Based on the OpenZepplin ERC20 implementation, licensed under MIT
12
+ contract TokenImplementation is TokenState, Context {
13
+ event Transfer(address indexed from, address indexed to, uint256 value);
14
+ event Approval(address indexed owner, address indexed spender, uint256 value);
15
+
16
+ function initialize(
17
+ string memory name_,
18
+ string memory symbol_,
19
+ uint8 decimals_,
20
+ uint64 sequence_,
21
+
22
+ address owner_,
23
+
24
+ uint16 chainId_,
25
+ bytes32 nativeContract_
26
+ ) initializer public {
27
+ _state.name = name_;
28
+ _state.symbol = symbol_;
29
+ _state.decimals = decimals_;
30
+ _state.metaLastUpdatedSequence = sequence_;
31
+
32
+ _state.owner = owner_;
33
+
34
+ _state.chainId = chainId_;
35
+ _state.nativeContract = nativeContract_;
36
+ }
37
+
38
+ function name() public view returns (string memory) {
39
+ return string(abi.encodePacked(_state.name, " (Wormhole)"));
40
+ }
41
+
42
+ function symbol() public view returns (string memory) {
43
+ return _state.symbol;
44
+ }
45
+
46
+ function owner() public view returns (address) {
47
+ return _state.owner;
48
+ }
49
+
50
+ function decimals() public view returns (uint8) {
51
+ return _state.decimals;
52
+ }
53
+
54
+ function totalSupply() public view returns (uint256) {
55
+ return _state.totalSupply;
56
+ }
57
+
58
+ function chainId() public view returns (uint16) {
59
+ return _state.chainId;
60
+ }
61
+
62
+ function nativeContract() public view returns (bytes32) {
63
+ return _state.nativeContract;
64
+ }
65
+
66
+ function balanceOf(address account_) public view returns (uint256) {
67
+ return _state.balances[account_];
68
+ }
69
+
70
+ function transfer(address recipient_, uint256 amount_) public returns (bool) {
71
+ _transfer(_msgSender(), recipient_, amount_);
72
+ return true;
73
+ }
74
+
75
+ function allowance(address owner_, address spender_) public view returns (uint256) {
76
+ return _state.allowances[owner_][spender_];
77
+ }
78
+
79
+ function approve(address spender_, uint256 amount_) public returns (bool) {
80
+ _approve(_msgSender(), spender_, amount_);
81
+ return true;
82
+ }
83
+
84
+ function transferFrom(address sender_, address recipient_, uint256 amount_) public returns (bool) {
85
+ _transfer(sender_, recipient_, amount_);
86
+
87
+ uint256 currentAllowance = _state.allowances[sender_][_msgSender()];
88
+ require(currentAllowance >= amount_, "ERC20: transfer amount exceeds allowance");
89
+ _approve(sender_, _msgSender(), currentAllowance - amount_);
90
+
91
+ return true;
92
+ }
93
+
94
+ function increaseAllowance(address spender_, uint256 addedValue_) public returns (bool) {
95
+ _approve(_msgSender(), spender_, _state.allowances[_msgSender()][spender_] + addedValue_);
96
+ return true;
97
+ }
98
+
99
+ function decreaseAllowance(address spender_, uint256 subtractedValue_) public returns (bool) {
100
+ uint256 currentAllowance = _state.allowances[_msgSender()][spender_];
101
+ require(currentAllowance >= subtractedValue_, "ERC20: decreased allowance below zero");
102
+ _approve(_msgSender(), spender_, currentAllowance - subtractedValue_);
103
+
104
+ return true;
105
+ }
106
+
107
+ function _transfer(address sender_, address recipient_, uint256 amount_) internal {
108
+ require(sender_ != address(0), "ERC20: transfer from the zero address");
109
+ require(recipient_ != address(0), "ERC20: transfer to the zero address");
110
+
111
+ uint256 senderBalance = _state.balances[sender_];
112
+ require(senderBalance >= amount_, "ERC20: transfer amount exceeds balance");
113
+ _state.balances[sender_] = senderBalance - amount_;
114
+ _state.balances[recipient_] += amount_;
115
+
116
+ emit Transfer(sender_, recipient_, amount_);
117
+ }
118
+
119
+ function mint(address account_, uint256 amount_) public onlyOwner {
120
+ _mint(account_, amount_);
121
+ }
122
+
123
+ function _mint(address account_, uint256 amount_) internal {
124
+ require(account_ != address(0), "ERC20: mint to the zero address");
125
+
126
+ _state.totalSupply += amount_;
127
+ _state.balances[account_] += amount_;
128
+ emit Transfer(address(0), account_, amount_);
129
+ }
130
+
131
+ function burn(address account_, uint256 amount_) public onlyOwner {
132
+ _burn(account_, amount_);
133
+ }
134
+
135
+ function _burn(address account_, uint256 amount_) internal {
136
+ require(account_ != address(0), "ERC20: burn from the zero address");
137
+
138
+ uint256 accountBalance = _state.balances[account_];
139
+ require(accountBalance >= amount_, "ERC20: burn amount exceeds balance");
140
+ _state.balances[account_] = accountBalance - amount_;
141
+ _state.totalSupply -= amount_;
142
+
143
+ emit Transfer(account_, address(0), amount_);
144
+ }
145
+
146
+ function _approve(address owner_, address spender_, uint256 amount_) internal virtual {
147
+ require(owner_ != address(0), "ERC20: approve from the zero address");
148
+ require(spender_ != address(0), "ERC20: approve to the zero address");
149
+
150
+ _state.allowances[owner_][spender_] = amount_;
151
+ emit Approval(owner_, spender_, amount_);
152
+ }
153
+
154
+ function updateDetails(string memory name_, string memory symbol_, uint64 sequence_) public onlyOwner {
155
+ require(_state.metaLastUpdatedSequence < sequence_, "current metadata is up to date");
156
+
157
+ _state.name = name_;
158
+ _state.symbol = symbol_;
159
+ _state.metaLastUpdatedSequence = sequence_;
160
+ }
161
+
162
+ modifier onlyOwner() {
163
+ require(owner() == _msgSender(), "caller is not the owner");
164
+ _;
165
+ }
166
+
167
+ modifier initializer() {
168
+ require(
169
+ !_state.initialized,
170
+ "Already initialized"
171
+ );
172
+
173
+ _state.initialized = true;
174
+
175
+ _;
176
+ }
177
+ }
@@ -0,0 +1,31 @@
1
+ // contracts/State.sol
2
+ // SPDX-License-Identifier: Apache 2
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ contract TokenStorage {
7
+ struct State {
8
+ string name;
9
+ string symbol;
10
+
11
+ uint64 metaLastUpdatedSequence;
12
+
13
+ uint256 totalSupply;
14
+ uint8 decimals;
15
+
16
+ mapping(address => uint256) balances;
17
+
18
+ mapping(address => mapping(address => uint256)) allowances;
19
+
20
+ address owner;
21
+
22
+ bool initialized;
23
+
24
+ uint16 chainId;
25
+ bytes32 nativeContract;
26
+ }
27
+ }
28
+
29
+ contract TokenState {
30
+ TokenStorage.State _state;
31
+ }
@@ -0,0 +1,231 @@
1
+ /**
2
+ * AUTO-Generated Class: 2022-01-26 09:40
3
+ * Implementation: https://polygonscan.com/address/0x449c258f75bef9b6840e9252706d1644a9b4983c#code
4
+ */
5
+ import di from 'a-di';
6
+ import { TAddress } from '@dequanto/models/TAddress';
7
+ import { ClientEventsStream } from '@dequanto/clients/ClientEventsStream';
8
+ import { ContractBase } from '@dequanto/contracts/ContractBase';
9
+ import { AbiItem } from 'web3-utils';
10
+ import { TransactionReceipt } from 'web3-core';
11
+ import { EventData } from 'web3-eth-contract';
12
+ import { TxWriter } from '@dequanto/txs/TxWriter';
13
+ import { Web3Client } from '@dequanto/clients/Web3Client';
14
+ import { IBlockChainExplorer } from '@dequanto/BlockchainExplorer/IBlockChainExplorer';
15
+
16
+ import { Polyscan } from '@dequanto/BlockchainExplorer/Polyscan'
17
+ import { PolyWeb3Client } from '@dequanto/clients/PolyWeb3Client'
18
+ export class WormholeBridgeContractBase extends ContractBase {
19
+ constructor(
20
+ public address: TAddress = '0x5a58505a96d1dbf8df91cb21b54419fc36e93fde',
21
+ public client: Web3Client = di.resolve(PolyWeb3Client),
22
+ public explorer: IBlockChainExplorer = di.resolve(Polyscan)
23
+ ) {
24
+ super(address, client, explorer)
25
+ }
26
+
27
+ // 0xad5c4648
28
+ async WETH (): Promise<TAddress> {
29
+ return this.$read('function WETH() returns address');
30
+ }
31
+
32
+ // 0xc48fa115
33
+ async attestToken (eoa: {address: TAddress, key: string, value?: string | number | bigint }, tokenAddress: TAddress, nonce: number): Promise<TxWriter> {
34
+ return this.$write(this.$getAbiItem('function', 'attestToken'), eoa, tokenAddress, nonce);
35
+ }
36
+
37
+ // 0xad66a5f1
38
+ async bridgeContracts (chainId_: number): Promise<Buffer | string> {
39
+ return this.$read('function bridgeContracts(uint16) returns bytes32', chainId_);
40
+ }
41
+
42
+ // 0x9a8a0592
43
+ async chainId (): Promise<number> {
44
+ return this.$read('function chainId() returns uint16');
45
+ }
46
+
47
+ // 0xc6878519
48
+ async completeTransfer (eoa: {address: TAddress, key: string, value?: string | number | bigint }, encodedVm: Buffer | string): Promise<TxWriter> {
49
+ return this.$write(this.$getAbiItem('function', 'completeTransfer'), eoa, encodedVm);
50
+ }
51
+
52
+ // 0xff200cde
53
+ async completeTransferAndUnwrapETH (eoa: {address: TAddress, key: string, value?: string | number | bigint }, encodedVm: Buffer | string): Promise<TxWriter> {
54
+ return this.$write(this.$getAbiItem('function', 'completeTransferAndUnwrapETH'), eoa, encodedVm);
55
+ }
56
+
57
+ // 0xe8059810
58
+ async createWrapped (eoa: {address: TAddress, key: string, value?: string | number | bigint }, encodedVm: Buffer | string): Promise<TxWriter> {
59
+ return this.$write(this.$getAbiItem('function', 'createWrapped'), eoa, encodedVm);
60
+ }
61
+
62
+ // 0xb046223b
63
+ async encodeAssetMeta (meta: { payloadID: number, tokenAddress: Buffer | string, tokenChain: number, decimals: number, symbol: Buffer | string, name: Buffer | string }): Promise<Buffer | string> {
64
+ return this.$read('function encodeAssetMeta(tuple) returns bytes', meta);
65
+ }
66
+
67
+ // 0x5f854266
68
+ async encodeTransfer (transfer: { payloadID: number, amount: bigint, tokenAddress: Buffer | string, tokenChain: number, to: Buffer | string, toChain: number, fee: bigint }): Promise<Buffer | string> {
69
+ return this.$read('function encodeTransfer(tuple) returns bytes', transfer);
70
+ }
71
+
72
+ // 0x2c3c02a4
73
+ async governanceActionIsConsumed (hash: Buffer | string): Promise<boolean> {
74
+ return this.$read('function governanceActionIsConsumed(bytes32) returns bool', hash);
75
+ }
76
+
77
+ // 0xfbe3c2cd
78
+ async governanceChainId (): Promise<number> {
79
+ return this.$read('function governanceChainId() returns uint16');
80
+ }
81
+
82
+ // 0xb172b222
83
+ async governanceContract (): Promise<Buffer | string> {
84
+ return this.$read('function governanceContract() returns bytes32');
85
+ }
86
+
87
+ // 0x5c60da1b
88
+ async implementation (): Promise<TAddress> {
89
+ return this.$read('function implementation() returns address');
90
+ }
91
+
92
+ // 0x8129fc1c
93
+ async initialize (eoa: {address: TAddress, key: string, value?: string | number | bigint }, ): Promise<TxWriter> {
94
+ return this.$write(this.$getAbiItem('function', 'initialize'), eoa);
95
+ }
96
+
97
+ // 0xd60b347f
98
+ async isInitialized (impl: TAddress): Promise<boolean> {
99
+ return this.$read('function isInitialized(address) returns bool', impl);
100
+ }
101
+
102
+ // 0xaa4efa5b
103
+ async isTransferCompleted (hash: Buffer | string): Promise<boolean> {
104
+ return this.$read('function isTransferCompleted(bytes32) returns bool', hash);
105
+ }
106
+
107
+ // 0x1a2be4da
108
+ async isWrappedAsset (token: TAddress): Promise<boolean> {
109
+ return this.$read('function isWrappedAsset(address) returns bool', token);
110
+ }
111
+
112
+ // 0xb96c7e4d
113
+ async outstandingBridged (token: TAddress): Promise<bigint> {
114
+ return this.$read('function outstandingBridged(address) returns uint256', token);
115
+ }
116
+
117
+ // 0x07dfd8fb
118
+ async parseAssetMeta (encoded: Buffer | string): Promise<{ payloadID: number, tokenAddress: Buffer | string, tokenChain: number, decimals: number, symbol: Buffer | string, name: Buffer | string }> {
119
+ return this.$read('function parseAssetMeta(bytes) returns [uint8,bytes32,uint16,uint8,bytes32,bytes32]', encoded);
120
+ }
121
+
122
+ // 0x01f53255
123
+ async parseRegisterChain (encoded: Buffer | string): Promise<{ module: Buffer | string, action: number, chainId: number, emitterChainID: number, emitterAddress: Buffer | string }> {
124
+ return this.$read('function parseRegisterChain(bytes) returns [bytes32,uint8,uint16,uint16,bytes32]', encoded);
125
+ }
126
+
127
+ // 0x2b511375
128
+ async parseTransfer (encoded: Buffer | string): Promise<{ payloadID: number, amount: bigint, tokenAddress: Buffer | string, tokenChain: number, to: Buffer | string, toChain: number, fee: bigint }> {
129
+ return this.$read('function parseTransfer(bytes) returns [uint8,uint256,bytes32,uint16,bytes32,uint16,uint256]', encoded);
130
+ }
131
+
132
+ // 0xfbeeacd9
133
+ async parseUpgrade (encoded: Buffer | string): Promise<{ module: Buffer | string, action: number, chainId: number, newContract: Buffer | string }> {
134
+ return this.$read('function parseUpgrade(bytes) returns [bytes32,uint8,uint16,bytes32]', encoded);
135
+ }
136
+
137
+ // 0xa5799f93
138
+ async registerChain (eoa: {address: TAddress, key: string, value?: string | number | bigint }, encodedVM: Buffer | string): Promise<TxWriter> {
139
+ return this.$write(this.$getAbiItem('function', 'registerChain'), eoa, encodedVM);
140
+ }
141
+
142
+ // 0x2f3a3d5d
143
+ async tokenImplementation (): Promise<TAddress> {
144
+ return this.$read('function tokenImplementation() returns address');
145
+ }
146
+
147
+ // 0x0f5287b0
148
+ async transferTokens (eoa: {address: TAddress, key: string, value?: string | number | bigint }, token: TAddress, amount: bigint, recipientChain: number, recipient: Buffer | string, arbiterFee: bigint, nonce: number): Promise<TxWriter> {
149
+ return this.$write(this.$getAbiItem('function', 'transferTokens'), eoa, token, amount, recipientChain, recipient, arbiterFee, nonce);
150
+ }
151
+
152
+ // 0xf768441f
153
+ async updateWrapped (eoa: {address: TAddress, key: string, value?: string | number | bigint }, encodedVm: Buffer | string): Promise<TxWriter> {
154
+ return this.$write(this.$getAbiItem('function', 'updateWrapped'), eoa, encodedVm);
155
+ }
156
+
157
+ // 0x25394645
158
+ async upgrade (eoa: {address: TAddress, key: string, value?: string | number | bigint }, encodedVM: Buffer | string): Promise<TxWriter> {
159
+ return this.$write(this.$getAbiItem('function', 'upgrade'), eoa, encodedVM);
160
+ }
161
+
162
+ // 0x84acd1bb
163
+ async wormhole (): Promise<TAddress> {
164
+ return this.$read('function wormhole() returns address');
165
+ }
166
+
167
+ // 0x9981509f
168
+ async wrapAndTransferETH (eoa: {address: TAddress, key: string, value?: string | number | bigint }, recipientChain: number, recipient: Buffer | string, arbiterFee: bigint, nonce: number): Promise<TxWriter> {
169
+ return this.$write(this.$getAbiItem('function', 'wrapAndTransferETH'), eoa, recipientChain, recipient, arbiterFee, nonce);
170
+ }
171
+
172
+ // 0x1ff1e286
173
+ async wrappedAsset (tokenChainId: number, tokenAddress: Buffer | string): Promise<TAddress> {
174
+ return this.$read('function wrappedAsset(uint16, bytes32) returns address', tokenChainId, tokenAddress);
175
+ }
176
+
177
+ onAdminChanged (fn: (event: EventData, previousAdmin: TAddress, newAdmin: TAddress) => void): ClientEventsStream<any> {
178
+ return this.$on('AdminChanged', fn);
179
+ }
180
+
181
+ onBeaconUpgraded (fn: (event: EventData, beacon: TAddress) => void): ClientEventsStream<any> {
182
+ return this.$on('BeaconUpgraded', fn);
183
+ }
184
+
185
+ onContractUpgraded (fn: (event: EventData, oldContract: TAddress, newContract: TAddress) => void): ClientEventsStream<any> {
186
+ return this.$on('ContractUpgraded', fn);
187
+ }
188
+
189
+ onUpgraded (fn: (event: EventData, implementation: TAddress) => void): ClientEventsStream<any> {
190
+ return this.$on('Upgraded', fn);
191
+ }
192
+
193
+ extractLogsAdminChanged (tx: TransactionReceipt): TLogAdminChanged[] {
194
+ let abi = this.$getAbiItem('event', 'AdminChanged');
195
+ return this.$extractLogs(tx, abi) as any as TLogAdminChanged[];
196
+ }
197
+
198
+ extractLogsBeaconUpgraded (tx: TransactionReceipt): TLogBeaconUpgraded[] {
199
+ let abi = this.$getAbiItem('event', 'BeaconUpgraded');
200
+ return this.$extractLogs(tx, abi) as any as TLogBeaconUpgraded[];
201
+ }
202
+
203
+ extractLogsContractUpgraded (tx: TransactionReceipt): TLogContractUpgraded[] {
204
+ let abi = this.$getAbiItem('event', 'ContractUpgraded');
205
+ return this.$extractLogs(tx, abi) as any as TLogContractUpgraded[];
206
+ }
207
+
208
+ extractLogsUpgraded (tx: TransactionReceipt): TLogUpgraded[] {
209
+ let abi = this.$getAbiItem('event', 'Upgraded');
210
+ return this.$extractLogs(tx, abi) as any as TLogUpgraded[];
211
+ }
212
+
213
+ abi = [{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldContract","type":"address"},{"indexed":true,"internalType":"address","name":"newContract","type":"address"}],"name":"ContractUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint32","name":"nonce","type":"uint32"}],"name":"attestToken","outputs":[{"internalType":"uint64","name":"sequence","type":"uint64"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint16","name":"chainId_","type":"uint16"}],"name":"bridgeContracts","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chainId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"encodedVm","type":"bytes"}],"name":"completeTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"encodedVm","type":"bytes"}],"name":"completeTransferAndUnwrapETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"encodedVm","type":"bytes"}],"name":"createWrapped","outputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint8","name":"payloadID","type":"uint8"},{"internalType":"bytes32","name":"tokenAddress","type":"bytes32"},{"internalType":"uint16","name":"tokenChain","type":"uint16"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"bytes32","name":"symbol","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"internalType":"struct BridgeStructs.AssetMeta","name":"meta","type":"tuple"}],"name":"encodeAssetMeta","outputs":[{"internalType":"bytes","name":"encoded","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint8","name":"payloadID","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"tokenAddress","type":"bytes32"},{"internalType":"uint16","name":"tokenChain","type":"uint16"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint16","name":"toChain","type":"uint16"},{"internalType":"uint256","name":"fee","type":"uint256"}],"internalType":"struct BridgeStructs.Transfer","name":"transfer","type":"tuple"}],"name":"encodeTransfer","outputs":[{"internalType":"bytes","name":"encoded","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"governanceActionIsConsumed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governanceChainId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governanceContract","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"impl","type":"address"}],"name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"isTransferCompleted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"isWrappedAsset","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"outstandingBridged","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"encoded","type":"bytes"}],"name":"parseAssetMeta","outputs":[{"components":[{"internalType":"uint8","name":"payloadID","type":"uint8"},{"internalType":"bytes32","name":"tokenAddress","type":"bytes32"},{"internalType":"uint16","name":"tokenChain","type":"uint16"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"bytes32","name":"symbol","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"internalType":"struct BridgeStructs.AssetMeta","name":"meta","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"encoded","type":"bytes"}],"name":"parseRegisterChain","outputs":[{"components":[{"internalType":"bytes32","name":"module","type":"bytes32"},{"internalType":"uint8","name":"action","type":"uint8"},{"internalType":"uint16","name":"chainId","type":"uint16"},{"internalType":"uint16","name":"emitterChainID","type":"uint16"},{"internalType":"bytes32","name":"emitterAddress","type":"bytes32"}],"internalType":"struct BridgeStructs.RegisterChain","name":"chain","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"encoded","type":"bytes"}],"name":"parseTransfer","outputs":[{"components":[{"internalType":"uint8","name":"payloadID","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"tokenAddress","type":"bytes32"},{"internalType":"uint16","name":"tokenChain","type":"uint16"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint16","name":"toChain","type":"uint16"},{"internalType":"uint256","name":"fee","type":"uint256"}],"internalType":"struct BridgeStructs.Transfer","name":"transfer","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"encoded","type":"bytes"}],"name":"parseUpgrade","outputs":[{"components":[{"internalType":"bytes32","name":"module","type":"bytes32"},{"internalType":"uint8","name":"action","type":"uint8"},{"internalType":"uint16","name":"chainId","type":"uint16"},{"internalType":"bytes32","name":"newContract","type":"bytes32"}],"internalType":"struct BridgeStructs.UpgradeContract","name":"chain","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"encodedVM","type":"bytes"}],"name":"registerChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint16","name":"recipientChain","type":"uint16"},{"internalType":"bytes32","name":"recipient","type":"bytes32"},{"internalType":"uint256","name":"arbiterFee","type":"uint256"},{"internalType":"uint32","name":"nonce","type":"uint32"}],"name":"transferTokens","outputs":[{"internalType":"uint64","name":"sequence","type":"uint64"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"encodedVm","type":"bytes"}],"name":"updateWrapped","outputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"encodedVM","type":"bytes"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wormhole","outputs":[{"internalType":"contract IWormhole","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"recipientChain","type":"uint16"},{"internalType":"bytes32","name":"recipient","type":"bytes32"},{"internalType":"uint256","name":"arbiterFee","type":"uint256"},{"internalType":"uint32","name":"nonce","type":"uint32"}],"name":"wrapAndTransferETH","outputs":[{"internalType":"uint64","name":"sequence","type":"uint64"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint16","name":"tokenChainId","type":"uint16"},{"internalType":"bytes32","name":"tokenAddress","type":"bytes32"}],"name":"wrappedAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
214
+ }
215
+
216
+ type TLogAdminChanged = {
217
+ contract: TAddress,
218
+ previousAdmin: TAddress, newAdmin: TAddress
219
+ }
220
+ type TLogBeaconUpgraded = {
221
+ contract: TAddress,
222
+ beacon: TAddress
223
+ }
224
+ type TLogContractUpgraded = {
225
+ contract: TAddress,
226
+ oldContract: TAddress, newContract: TAddress
227
+ }
228
+ type TLogUpgraded = {
229
+ contract: TAddress,
230
+ implementation: TAddress
231
+ }