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,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.$number = void 0;
4
+ const _require_1 = require("./$require");
5
+ var $number;
6
+ (function ($number) {
7
+ function div(a, b, digits = 5) {
8
+ let r = 10 ** digits;
9
+ return Math.round(a * r / b) / r;
10
+ }
11
+ $number.div = div;
12
+ /**
13
+ * [min, max)
14
+ * @param min: includes
15
+ * @param max: excludes
16
+ */
17
+ function random(min, max) {
18
+ _require_1.$require.True(min < max, `Random Int expects max to be greater then min: ${min}..${max}`);
19
+ return Math.random() * (max - min) + min;
20
+ }
21
+ $number.random = random;
22
+ /**
23
+ * [min, max)
24
+ * @param min: includes
25
+ * @param max: excludes
26
+ */
27
+ function randomInt(min, max) {
28
+ _require_1.$require.True(min < max, `Random Int expects max to be greater then min: ${min}..${max}`);
29
+ return Math.floor(Math.random() * (max - min)) + min;
30
+ }
31
+ $number.randomInt = randomInt;
32
+ /**
33
+ * [min, max)
34
+ * @param min: includes
35
+ * @param max: excludes
36
+ */
37
+ function randomFloat(min, max, decimals = 0) {
38
+ let decimalsFromNumber = 0;
39
+ while (min * 10 ** decimalsFromNumber % 1 > 0 || max * 10 ** decimalsFromNumber % 1 > 0) {
40
+ decimalsFromNumber++;
41
+ }
42
+ let val = 10 ** Math.max(decimals, decimalsFromNumber);
43
+ return randomInt(min * val, max * val) / val;
44
+ }
45
+ $number.randomFloat = randomFloat;
46
+ function parse(mix) {
47
+ if (!mix)
48
+ return 0;
49
+ if (typeof mix === 'number') {
50
+ return mix;
51
+ }
52
+ return parseFloat(mix.replace(/,+/g, '.'));
53
+ }
54
+ $number.parse = parse;
55
+ function round(mix, digits = 0, round = 'round') {
56
+ let number = typeof mix === 'string' ? Number(mix) : mix;
57
+ if (isNaN(number)) {
58
+ return number;
59
+ }
60
+ let factor = Math.pow(10, digits);
61
+ let val = number * factor;
62
+ let e = val - (val | 0);
63
+ if (e < 0) {
64
+ e *= -1;
65
+ }
66
+ if (e < .0001) {
67
+ val = val | 0;
68
+ }
69
+ return Math[round](val) / factor;
70
+ }
71
+ $number.round = round;
72
+ function parseOptional(mix, default_ = null) {
73
+ if (mix == null) {
74
+ return default_;
75
+ }
76
+ if (typeof mix === 'number') {
77
+ return mix;
78
+ }
79
+ if (typeof mix === 'string') {
80
+ switch (mix.toLowerCase()) {
81
+ case 'einweg':
82
+ return 0.25;
83
+ case 'mehrweg':
84
+ return 0.15;
85
+ }
86
+ let num = parseFloat(mix.replace(/,+/g, '.'));
87
+ if (Number.isFinite(num) === false) {
88
+ return default_;
89
+ }
90
+ return num;
91
+ }
92
+ throw new Error('Unsupported type to convert to number ' + typeof mix);
93
+ }
94
+ $number.parseOptional = parseOptional;
95
+ })($number = exports.$number || (exports.$number = {}));
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.$object = void 0;
4
+ const atma_utils_1 = require("atma-utils");
5
+ var $object;
6
+ (function ($object) {
7
+ function clean(json, opts = {
8
+ removePrivate: false,
9
+ skipProperties: null,
10
+ removeEmptyArrays: false,
11
+ removeFalsy: false
12
+ }) {
13
+ if (json == null || typeof json !== 'object') {
14
+ return json;
15
+ }
16
+ if ((0, atma_utils_1.is_ArrayLike)(json)) {
17
+ let arr = json;
18
+ let i = 0;
19
+ let notNullIndex = -1;
20
+ for (; i < arr.length; i++) {
21
+ let val = arr[i];
22
+ if (val != null) {
23
+ notNullIndex = i;
24
+ }
25
+ $object.clean(val, opts);
26
+ }
27
+ // clean all last nullable values
28
+ if (notNullIndex + 1 < arr.length) {
29
+ arr.splice(notNullIndex + 1);
30
+ }
31
+ return json;
32
+ }
33
+ if ((0, atma_utils_1.is_Object)(json)) {
34
+ for (let key in json) {
35
+ if (opts.skipProperties != null && key in opts.skipProperties) {
36
+ delete json[key];
37
+ continue;
38
+ }
39
+ if (opts.ignoreProperties != null && key in opts.ignoreProperties) {
40
+ continue;
41
+ }
42
+ if (opts.removePrivate === true && key[0] === '_') {
43
+ delete json[key];
44
+ continue;
45
+ }
46
+ let val = json[key];
47
+ if (opts.shouldRemove?.(key, val)) {
48
+ delete json[key];
49
+ continue;
50
+ }
51
+ if (isDefault(val, opts)) {
52
+ if (opts.strictProperties != null && key in opts.strictProperties && val != null) {
53
+ continue;
54
+ }
55
+ delete json[key];
56
+ continue;
57
+ }
58
+ if (opts.deep !== false) {
59
+ $object.clean(val, opts);
60
+ }
61
+ if (opts.removeEmptyArrays && (0, atma_utils_1.is_ArrayLike)(val) && val.length === 0) {
62
+ delete json[key];
63
+ }
64
+ }
65
+ return json;
66
+ }
67
+ return json;
68
+ }
69
+ $object.clean = clean;
70
+ function isDefault(x, opts) {
71
+ if (x == null) {
72
+ return true;
73
+ }
74
+ if (opts.removeFalsy && (x === '' || x === false)) {
75
+ return true;
76
+ }
77
+ if (opts.removeEmptyArrays && (0, atma_utils_1.is_ArrayLike)(x) && x.length === 0) {
78
+ return true;
79
+ }
80
+ return false;
81
+ }
82
+ })($object = exports.$object || (exports.$object = {}));
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.$path = void 0;
4
+ const atma_utils_1 = require("atma-utils");
5
+ var $path;
6
+ (function ($path) {
7
+ let root = null;
8
+ function resolve(path) {
9
+ return atma_utils_1.class_Uri.combine(root ?? (root = getRoot()), path);
10
+ }
11
+ $path.resolve = resolve;
12
+ function getRoot() {
13
+ let uri = new atma_utils_1.class_Uri('file://' + __dirname + '/');
14
+ while (true) {
15
+ let dir = getDirName(uri.path);
16
+ if (!dir || dir === '/') {
17
+ throw new Error(`Root path not resolved: ${__dirname}`);
18
+ }
19
+ if (dir === 'lib' || dir === 'src') {
20
+ uri = uri.cdUp();
21
+ let path = uri.toString();
22
+ if (/dequanto/.test(path) === false) {
23
+ path = uri.combine('dequanto').toString();
24
+ }
25
+ return path;
26
+ }
27
+ uri = uri.cdUp();
28
+ }
29
+ }
30
+ function getDirName(path) {
31
+ return /\/?([^\/]+)\/?$/.exec(path)?.[1];
32
+ }
33
+ })($path = exports.$path || (exports.$path = {}));
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.$promise = void 0;
4
+ var $promise;
5
+ (function ($promise) {
6
+ function wait(ms) {
7
+ return new Promise(resolve => {
8
+ setTimeout(resolve, ms);
9
+ });
10
+ }
11
+ $promise.wait = wait;
12
+ ;
13
+ })($promise = exports.$promise || (exports.$promise = {}));
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.$require = void 0;
4
+ const _is_1 = require("./$is");
5
+ var $require;
6
+ (function ($require) {
7
+ function Number(val, message = '', opts) {
8
+ if (typeof val !== 'number') {
9
+ throw new Error(`Expects number type, got ${typeof val} ${val}. ${message}`);
10
+ }
11
+ if (isNaN(val)) {
12
+ throw new Error(`Value is Not-a-Number. ${message}`);
13
+ }
14
+ if (opts?.min != null && val < opts.min) {
15
+ throw new Error(`Value ${val} is less than ${opts.min}. ${message}`);
16
+ }
17
+ if (opts?.max != null && val > opts.max) {
18
+ throw new Error(`Value ${val} is greater than ${opts.max}. ${message}`);
19
+ }
20
+ return val;
21
+ }
22
+ $require.Number = Number;
23
+ function BigInt(val, message = '', opts) {
24
+ if (typeof val !== 'bigint') {
25
+ throw new Error(`Expects bigint type, got ${typeof val} (${val}). ${message}`);
26
+ }
27
+ if (opts?.min != null && val < opts.min) {
28
+ throw new Error(`Value ${val} is less than ${opts.min}. ${message}`);
29
+ }
30
+ if (opts?.max != null && val > opts.max) {
31
+ throw new Error(`Value ${val} is greater than ${opts.max}. ${message}`);
32
+ }
33
+ return val;
34
+ }
35
+ $require.BigInt = BigInt;
36
+ function Numeric(val, message = '', opts) {
37
+ if (typeof val === 'number') {
38
+ return Number(val, message, opts);
39
+ }
40
+ if (typeof val === 'bigint') {
41
+ return BigInt(val, message, opts);
42
+ }
43
+ throw new Error(`Expects numeric type, got ${typeof val}. ${message}`);
44
+ }
45
+ $require.Numeric = Numeric;
46
+ function Function(val, message) {
47
+ if (typeof val !== 'function') {
48
+ throw new Error(`Value is not a function`);
49
+ }
50
+ return val;
51
+ }
52
+ $require.Function = Function;
53
+ function notNull(val, message) {
54
+ if (val == null) {
55
+ throw new Error(`Value is undefined. ${message}`);
56
+ }
57
+ return val;
58
+ }
59
+ $require.notNull = notNull;
60
+ function True(value, message) {
61
+ if (value !== true) {
62
+ throw new Error(`Got false expression ${message}`);
63
+ }
64
+ }
65
+ $require.True = True;
66
+ function notEq(a, b, message = '') {
67
+ // not strict equal
68
+ if (a == b) {
69
+ throw new Error(`${a} and ${b} shouldn't be equal. ${message}`);
70
+ }
71
+ }
72
+ $require.notEq = notEq;
73
+ function eq(a, b, message = '') {
74
+ // not strict equal
75
+ if (a != b) {
76
+ throw new Error(`${a} and ${b} should be equal. ${message}`);
77
+ }
78
+ }
79
+ $require.eq = eq;
80
+ function match(rgx, str, message = '') {
81
+ if (typeof str !== 'string') {
82
+ throw new Error(`Expected a string to find in. ${message}`);
83
+ }
84
+ if (rgx.test(str) === false) {
85
+ throw new Error(`Expected string "${str}" to match ${rgx.toString()}. ${message}`);
86
+ }
87
+ }
88
+ $require.match = match;
89
+ function oneOf(a, arr, message = '') {
90
+ // not strict equal
91
+ if (arr.includes(a) === false) {
92
+ throw new Error(`${a} should be one of ${arr.join(', ')}. ${message}`);
93
+ }
94
+ }
95
+ $require.oneOf = oneOf;
96
+ function Address(val, message = '') {
97
+ if (_is_1.$is.Address(val) === false) {
98
+ throw new Error(`Value ${val} is not a valid address. ${message}`);
99
+ }
100
+ return val;
101
+ }
102
+ $require.Address = Address;
103
+ function Token(token, message = '') {
104
+ if (token == null) {
105
+ throw new Error(`Token is undefined. ${message}`);
106
+ }
107
+ if (token.address == null) {
108
+ throw new Error(`Token address property is undefined. ${message}`);
109
+ }
110
+ if (token.decimals == null) {
111
+ throw new Error(`Token decimals property is undefined. ${message}`);
112
+ }
113
+ return token;
114
+ }
115
+ $require.Token = Token;
116
+ /**
117
+ * throws when a <= b
118
+ */
119
+ function gt(a, b, message = '') {
120
+ Numeric(a);
121
+ Numeric(b);
122
+ if (a <= b) {
123
+ throw new Error(`Expected a(${a}) > b(${b}). ${message}`);
124
+ }
125
+ }
126
+ $require.gt = gt;
127
+ })($require = exports.$require || (exports.$require = {}));
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.$sign = void 0;
4
+ const ethereumjs_util_1 = require("ethereumjs-util");
5
+ var $sign;
6
+ (function ($sign) {
7
+ function signEC(message, privateKey) {
8
+ const sig = (0, ethereumjs_util_1.ecsign)(toBuffer(message), toBuffer(privateKey, { encoding: 'hex' }));
9
+ let r = sig.r.toString('hex').padStart(64, '0');
10
+ let s = sig.s.toString('hex').padStart(64, '0');
11
+ let v = sig.v.toString(16);
12
+ return {
13
+ v: `0x${v}`,
14
+ r: `0x${r}`,
15
+ s: `0x${s}`,
16
+ signature: `0x${r}${s}${v}`,
17
+ signatureVRS: `0x${v}${r}${s}`
18
+ };
19
+ }
20
+ $sign.signEC = signEC;
21
+ function signEIPHashed(message, privateKey) {
22
+ const hash = (0, ethereumjs_util_1.hashPersonalMessage)(toBuffer(message, { encoding: 'utf8' }));
23
+ return signEC(hash, privateKey);
24
+ }
25
+ $sign.signEIPHashed = signEIPHashed;
26
+ function toBuffer(message, opts) {
27
+ if (typeof message === 'string') {
28
+ if (/^0x[\da-f]+$/i.test(message)) {
29
+ return Buffer.from(message.substring(2), 'hex');
30
+ }
31
+ return Buffer.from(message, opts?.encoding ?? 'utf8');
32
+ }
33
+ return message;
34
+ }
35
+ })($sign = exports.$sign || (exports.$sign = {}));
@@ -0,0 +1,264 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.$signSerializer = void 0;
27
+ const ethUtil = __importStar(require("ethereumjs-util"));
28
+ const ethAbi = __importStar(require("ethereumjs-abi"));
29
+ var $signSerializer;
30
+ (function ($signSerializer) {
31
+ const TYPED_MESSAGE_SCHEMA = {
32
+ type: 'object',
33
+ properties: {
34
+ types: {
35
+ type: 'object',
36
+ additionalProperties: {
37
+ type: 'array',
38
+ items: {
39
+ type: 'object',
40
+ properties: {
41
+ name: { type: 'string' },
42
+ type: { type: 'string' },
43
+ },
44
+ required: ['name', 'type'],
45
+ },
46
+ },
47
+ },
48
+ primaryType: { type: 'string' },
49
+ domain: { type: 'object' },
50
+ message: { type: 'object' },
51
+ },
52
+ required: ['types', 'primaryType', 'domain', 'message'],
53
+ };
54
+ function serializeTypedData(data, version = 'V4') {
55
+ let serializer = new TypedDataSerializer();
56
+ switch (version) {
57
+ case 'V3':
58
+ return serializer.serialize(data, false);
59
+ case 'V4':
60
+ default:
61
+ return serializer.serialize(data, true);
62
+ }
63
+ }
64
+ $signSerializer.serializeTypedData = serializeTypedData;
65
+ /**
66
+ * A collection of utility functions used for signing typed data
67
+ */
68
+ class TypedDataSerializer {
69
+ /**
70
+ * Encodes an object by encoding and concatenating each of its members
71
+ *
72
+ * @param {string} primaryType - Root type
73
+ * @param {Object} data - Object to encode
74
+ * @param {Object} types - Type definitions
75
+ * @returns {Buffer} - Encoded representation of an object
76
+ */
77
+ encodeData(primaryType, data, types, useV4 = true) {
78
+ const encodedTypes = ['bytes32'];
79
+ const encodedValues = [this.hashType(primaryType, types)];
80
+ if (useV4) {
81
+ const encodeField = (name, type, value) => {
82
+ if (types[type] !== undefined) {
83
+ return [
84
+ 'bytes32',
85
+ value == null // eslint-disable-line no-eq-null
86
+ ? '0x0000000000000000000000000000000000000000000000000000000000000000'
87
+ : ethUtil_keccak(this.encodeData(type, value, types, useV4)),
88
+ ];
89
+ }
90
+ if (value === undefined) {
91
+ throw new Error(`missing value for field ${name} of type ${type}`);
92
+ }
93
+ if (type === 'bytes') {
94
+ return ['bytes32', ethUtil_keccak(value)];
95
+ }
96
+ if (type === 'string') {
97
+ // convert string to buffer - prevents ethUtil from interpreting strings like '0xabcd' as hex
98
+ if (typeof value === 'string') {
99
+ value = Buffer.from(value, 'utf8');
100
+ }
101
+ return ['bytes32', ethUtil_keccak(value)];
102
+ }
103
+ if (type.lastIndexOf(']') === type.length - 1) {
104
+ const parsedType = type.slice(0, type.lastIndexOf('['));
105
+ const typeValuePairs = value.map((item) => encodeField(name, parsedType, item));
106
+ return [
107
+ 'bytes32',
108
+ ethUtil_keccak(ethAbi.rawEncode(typeValuePairs.map(([t]) => t), typeValuePairs.map(([, v]) => v))),
109
+ ];
110
+ }
111
+ return [type, value];
112
+ };
113
+ for (const field of types[primaryType]) {
114
+ const [type, value] = encodeField(field.name, field.type, data[field.name]);
115
+ encodedTypes.push(type);
116
+ encodedValues.push(value);
117
+ }
118
+ }
119
+ else {
120
+ for (const field of types[primaryType]) {
121
+ let value = data[field.name];
122
+ if (value !== undefined) {
123
+ if (field.type === 'bytes') {
124
+ encodedTypes.push('bytes32');
125
+ value = ethUtil_keccak(value);
126
+ encodedValues.push(value);
127
+ }
128
+ else if (field.type === 'string') {
129
+ encodedTypes.push('bytes32');
130
+ // convert string to buffer - prevents ethUtil from interpreting strings like '0xabcd' as hex
131
+ if (typeof value === 'string') {
132
+ value = Buffer.from(value, 'utf8');
133
+ }
134
+ value = ethUtil_keccak(value);
135
+ encodedValues.push(value);
136
+ }
137
+ else if (types[field.type] !== undefined) {
138
+ encodedTypes.push('bytes32');
139
+ value = ethUtil_keccak(this.encodeData(field.type, value, types, useV4));
140
+ encodedValues.push(value);
141
+ }
142
+ else if (field.type.lastIndexOf(']') === field.type.length - 1) {
143
+ throw new Error('Arrays are unimplemented in encodeData; use V4 extension');
144
+ }
145
+ else {
146
+ encodedTypes.push(field.type);
147
+ encodedValues.push(value);
148
+ }
149
+ }
150
+ }
151
+ }
152
+ return ethAbi.rawEncode(encodedTypes, encodedValues);
153
+ }
154
+ /**
155
+ * Encodes the type of an object by encoding a comma delimited list of its members
156
+ *
157
+ * @param {string} primaryType - Root type to encode
158
+ * @param {Object} types - Type definitions
159
+ * @returns {string} - Encoded representation of the type of an object
160
+ */
161
+ encodeType(primaryType, types) {
162
+ let result = '';
163
+ let deps = this.findTypeDependencies(primaryType, types).filter((dep) => dep !== primaryType);
164
+ deps = [primaryType].concat(deps.sort());
165
+ for (const type of deps) {
166
+ const children = types[type];
167
+ if (!children) {
168
+ throw new Error(`No type definition specified: ${type}`);
169
+ }
170
+ result += `${type}(${types[type]
171
+ .map(({ name, type: t }) => `${t} ${name}`)
172
+ .join(',')})`;
173
+ }
174
+ return result;
175
+ }
176
+ /**
177
+ * Finds all types within a type definition object
178
+ *
179
+ * @param {string} primaryType - Root type
180
+ * @param {Object} types - Type definitions
181
+ * @param {Array} results - current set of accumulated types
182
+ * @returns {Array} - Set of all types found in the type definition
183
+ */
184
+ findTypeDependencies(primaryType, types, results = []) {
185
+ [primaryType] = primaryType.match(/^\w*/u);
186
+ if (results.includes(primaryType) || types[primaryType] === undefined) {
187
+ return results;
188
+ }
189
+ results.push(primaryType);
190
+ for (const field of types[primaryType]) {
191
+ for (const dep of this.findTypeDependencies(field.type, types, results)) {
192
+ !results.includes(dep) && results.push(dep);
193
+ }
194
+ }
195
+ return results;
196
+ }
197
+ /**
198
+ * Hashes an object
199
+ *
200
+ * @param {string} primaryType - Root type
201
+ * @param {Object} data - Object to hash
202
+ * @param {Object} types - Type definitions
203
+ * @returns {Buffer} - Hash of an object
204
+ */
205
+ hashStruct(primaryType, data, types, useV4 = true) {
206
+ return ethUtil_keccak(this.encodeData(primaryType, data, types, useV4));
207
+ }
208
+ /**
209
+ * Hashes the type of an object
210
+ *
211
+ * @param {string} primaryType - Root type to hash
212
+ * @param {Object} types - Type definitions
213
+ * @returns {Buffer} - Hash of an object
214
+ */
215
+ hashType(primaryType, types) {
216
+ return ethUtil_keccak(this.encodeType(primaryType, types));
217
+ }
218
+ /**
219
+ * Removes properties from a message object that are not defined per EIP-712
220
+ *
221
+ * @param {Object} data - typed message object
222
+ * @returns {Object} - typed message object with only allowed fields
223
+ */
224
+ sanitizeData(data) {
225
+ const sanitizedData = {};
226
+ for (const key in TYPED_MESSAGE_SCHEMA.properties) {
227
+ if (data[key]) {
228
+ sanitizedData[key] = data[key];
229
+ }
230
+ }
231
+ if ('types' in sanitizedData) {
232
+ sanitizedData.types = { EIP712Domain: [], ...sanitizedData.types };
233
+ }
234
+ return sanitizedData;
235
+ }
236
+ /**
237
+ * Signs a typed message as per EIP-712 and returns its keccak hash
238
+ *
239
+ * @param {Object} typedData - Types message data to sign
240
+ * @returns {Buffer} - keccak hash of the resulting signed message
241
+ */
242
+ serialize(typedData, useV4 = true) {
243
+ const sanitizedData = this.sanitizeData(typedData);
244
+ const parts = [Buffer.from('1901', 'hex')];
245
+ parts.push(this.hashStruct('EIP712Domain', sanitizedData.domain, sanitizedData.types, useV4));
246
+ if (sanitizedData.primaryType !== 'EIP712Domain') {
247
+ parts.push(this.hashStruct(sanitizedData.primaryType, sanitizedData.message, sanitizedData.types, useV4));
248
+ }
249
+ return ethUtil_keccak(Buffer.concat(parts));
250
+ }
251
+ }
252
+ ;
253
+ function ethUtil_keccak(value) {
254
+ if (typeof value === 'string') {
255
+ if (value.startsWith('0x')) {
256
+ value = Buffer.from(value.substring(2), 'hex');
257
+ }
258
+ else {
259
+ value = Buffer.from(value);
260
+ }
261
+ }
262
+ return ethUtil.keccak(value);
263
+ }
264
+ })($signSerializer = exports.$signSerializer || (exports.$signSerializer = {}));
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.$wallet = void 0;
4
+ const ethers_1 = require("ethers");
5
+ var $wallet;
6
+ (function ($wallet) {
7
+ async function ecdsaSign(account, message) {
8
+ let wallet = new ethers_1.Wallet(account.key);
9
+ let signature = await wallet.signMessage(message);
10
+ return signature;
11
+ }
12
+ $wallet.ecdsaSign = ecdsaSign;
13
+ })($wallet = exports.$wallet || (exports.$wallet = {}));
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });