@across-protocol/sdk 4.3.110 → 4.3.111-alpha.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 (558) hide show
  1. package/dist/cjs/addressAggregator/adapters/abstract.js +50 -64
  2. package/dist/cjs/addressAggregator/adapters/abstract.js.map +1 -1
  3. package/dist/cjs/addressAggregator/adapters/bybit.js +16 -29
  4. package/dist/cjs/addressAggregator/adapters/bybit.js.map +1 -1
  5. package/dist/cjs/addressAggregator/adapters/env.js +11 -15
  6. package/dist/cjs/addressAggregator/adapters/env.js.map +1 -1
  7. package/dist/cjs/addressAggregator/adapters/file.js +32 -45
  8. package/dist/cjs/addressAggregator/adapters/file.js.map +1 -1
  9. package/dist/cjs/addressAggregator/adapters/index.js +1 -1
  10. package/dist/cjs/addressAggregator/adapters/risklabs.js +22 -36
  11. package/dist/cjs/addressAggregator/adapters/risklabs.js.map +1 -1
  12. package/dist/cjs/addressAggregator/index.js +57 -87
  13. package/dist/cjs/addressAggregator/index.js.map +1 -1
  14. package/dist/cjs/apiClient/abstractClient.js +9 -8
  15. package/dist/cjs/apiClient/abstractClient.js.map +1 -1
  16. package/dist/cjs/apiClient/index.js +1 -1
  17. package/dist/cjs/apiClient/mockedClient.js +23 -29
  18. package/dist/cjs/apiClient/mockedClient.js.map +1 -1
  19. package/dist/cjs/apiClient/productionClient.js +65 -103
  20. package/dist/cjs/apiClient/productionClient.js.map +1 -1
  21. package/dist/cjs/arch/evm/BlockUtils.js +122 -208
  22. package/dist/cjs/arch/evm/BlockUtils.js.map +1 -1
  23. package/dist/cjs/arch/evm/MessageUtils.js +1 -1
  24. package/dist/cjs/arch/evm/MessageUtils.js.map +1 -1
  25. package/dist/cjs/arch/evm/SpokeUtils.js +134 -288
  26. package/dist/cjs/arch/evm/SpokeUtils.js.map +1 -1
  27. package/dist/cjs/arch/evm/index.js +1 -1
  28. package/dist/cjs/arch/evm/utils/index.js +1 -1
  29. package/dist/cjs/arch/evm/utils/wait.js +38 -49
  30. package/dist/cjs/arch/evm/utils/wait.js.map +1 -1
  31. package/dist/cjs/arch/index.js +1 -1
  32. package/dist/cjs/arch/svm/BlockUtils.js +102 -158
  33. package/dist/cjs/arch/svm/BlockUtils.js.map +1 -1
  34. package/dist/cjs/arch/svm/MessageUtils.js +2 -2
  35. package/dist/cjs/arch/svm/MessageUtils.js.map +1 -1
  36. package/dist/cjs/arch/svm/SpokeUtils.js +708 -1147
  37. package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
  38. package/dist/cjs/arch/svm/encoders.js +1 -1
  39. package/dist/cjs/arch/svm/encoders.js.map +1 -1
  40. package/dist/cjs/arch/svm/eventsClient.js +174 -236
  41. package/dist/cjs/arch/svm/eventsClient.js.map +1 -1
  42. package/dist/cjs/arch/svm/index.js +1 -1
  43. package/dist/cjs/arch/svm/provider.js +3 -3
  44. package/dist/cjs/arch/svm/provider.js.map +1 -1
  45. package/dist/cjs/arch/svm/utils.js +166 -355
  46. package/dist/cjs/arch/svm/utils.js.map +1 -1
  47. package/dist/cjs/caching/Arweave/ArweaveClient.js +168 -246
  48. package/dist/cjs/caching/Arweave/ArweaveClient.js.map +1 -1
  49. package/dist/cjs/caching/Arweave/index.js +1 -1
  50. package/dist/cjs/caching/IPFS/PinataIPFSClient.js +40 -49
  51. package/dist/cjs/caching/IPFS/PinataIPFSClient.js.map +1 -1
  52. package/dist/cjs/caching/IPFS/index.js +1 -1
  53. package/dist/cjs/caching/Memory/MemoryCacheClient.js +13 -18
  54. package/dist/cjs/caching/Memory/MemoryCacheClient.js.map +1 -1
  55. package/dist/cjs/caching/Memory/index.js +1 -1
  56. package/dist/cjs/caching/index.js +1 -1
  57. package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +302 -381
  58. package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
  59. package/dist/cjs/clients/AcrossConfigStoreClient/index.js +1 -1
  60. package/dist/cjs/clients/BaseAbstractClient.js +58 -83
  61. package/dist/cjs/clients/BaseAbstractClient.js.map +1 -1
  62. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +709 -900
  63. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  64. package/dist/cjs/clients/BundleDataClient/index.js +1 -1
  65. package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js +95 -128
  66. package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  67. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js +48 -53
  68. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  69. package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js +10 -8
  70. package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -1
  71. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +67 -90
  72. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  73. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js +46 -24
  74. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
  75. package/dist/cjs/clients/BundleDataClient/utils/index.js +1 -1
  76. package/dist/cjs/clients/HubPoolClient.js +526 -708
  77. package/dist/cjs/clients/HubPoolClient.js.map +1 -1
  78. package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js +133 -179
  79. package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
  80. package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js +124 -183
  81. package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
  82. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js +357 -389
  83. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  84. package/dist/cjs/clients/SpokePoolClient/SpokePoolClientManager.js +9 -8
  85. package/dist/cjs/clients/SpokePoolClient/SpokePoolClientManager.js.map +1 -1
  86. package/dist/cjs/clients/SpokePoolClient/index.js +3 -3
  87. package/dist/cjs/clients/SpokePoolClient/index.js.map +1 -1
  88. package/dist/cjs/clients/index.js +1 -1
  89. package/dist/cjs/clients/mocks/MockConfigStoreClient.js +58 -67
  90. package/dist/cjs/clients/mocks/MockConfigStoreClient.js.map +1 -1
  91. package/dist/cjs/clients/mocks/MockEvents.js +47 -52
  92. package/dist/cjs/clients/mocks/MockEvents.js.map +1 -1
  93. package/dist/cjs/clients/mocks/MockHubPoolClient.js +142 -185
  94. package/dist/cjs/clients/mocks/MockHubPoolClient.js.map +1 -1
  95. package/dist/cjs/clients/mocks/MockSpokePoolClient.js +208 -192
  96. package/dist/cjs/clients/mocks/MockSpokePoolClient.js.map +1 -1
  97. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js +140 -143
  98. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
  99. package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js +57 -73
  100. package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js.map +1 -1
  101. package/dist/cjs/clients/mocks/index.js +1 -1
  102. package/dist/cjs/coingecko/Coingecko.js +285 -437
  103. package/dist/cjs/coingecko/Coingecko.js.map +1 -1
  104. package/dist/cjs/coingecko/index.js +1 -1
  105. package/dist/cjs/constants.js +23 -29
  106. package/dist/cjs/constants.js.map +1 -1
  107. package/dist/cjs/contracts/acrossConfigStore.js +27 -48
  108. package/dist/cjs/contracts/acrossConfigStore.js.map +1 -1
  109. package/dist/cjs/contracts/hubPool.js +36 -20
  110. package/dist/cjs/contracts/hubPool.js.map +1 -1
  111. package/dist/cjs/contracts/index.js +1 -1
  112. package/dist/cjs/contracts/utils.js +6 -8
  113. package/dist/cjs/contracts/utils.js.map +1 -1
  114. package/dist/cjs/gasPriceOracle/adapters/arbitrum.js +7 -16
  115. package/dist/cjs/gasPriceOracle/adapters/arbitrum.js.map +1 -1
  116. package/dist/cjs/gasPriceOracle/adapters/ethereum.js +26 -45
  117. package/dist/cjs/gasPriceOracle/adapters/ethereum.js.map +1 -1
  118. package/dist/cjs/gasPriceOracle/adapters/linea-viem.js +16 -28
  119. package/dist/cjs/gasPriceOracle/adapters/linea-viem.js.map +1 -1
  120. package/dist/cjs/gasPriceOracle/adapters/polygon.js +73 -112
  121. package/dist/cjs/gasPriceOracle/adapters/polygon.js.map +1 -1
  122. package/dist/cjs/gasPriceOracle/adapters/solana.js +20 -33
  123. package/dist/cjs/gasPriceOracle/adapters/solana.js.map +1 -1
  124. package/dist/cjs/gasPriceOracle/oracle.js +77 -103
  125. package/dist/cjs/gasPriceOracle/oracle.js.map +1 -1
  126. package/dist/cjs/gasPriceOracle/types.js +3 -3
  127. package/dist/cjs/gasPriceOracle/types.js.map +1 -1
  128. package/dist/cjs/gasPriceOracle/util.js +8 -8
  129. package/dist/cjs/gasPriceOracle/util.js.map +1 -1
  130. package/dist/cjs/index.js +1 -1
  131. package/dist/cjs/interfaces/index.js +1 -1
  132. package/dist/cjs/lpFeeCalculator/index.js +1 -1
  133. package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js +33 -35
  134. package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
  135. package/dist/cjs/lpFeeCalculator/rateModel.js +7 -9
  136. package/dist/cjs/lpFeeCalculator/rateModel.js.map +1 -1
  137. package/dist/cjs/merkleDistributor/MerkleDistributor.js +20 -18
  138. package/dist/cjs/merkleDistributor/MerkleDistributor.js.map +1 -1
  139. package/dist/cjs/merkleDistributor/index.js +1 -1
  140. package/dist/cjs/merkleDistributor/model/index.js +1 -1
  141. package/dist/cjs/pool/TransactionManager.js +45 -100
  142. package/dist/cjs/pool/TransactionManager.js.map +1 -1
  143. package/dist/cjs/pool/index.js +1 -1
  144. package/dist/cjs/pool/poolClient.js +464 -731
  145. package/dist/cjs/pool/poolClient.js.map +1 -1
  146. package/dist/cjs/pool/uma/across/index.js +1 -1
  147. package/dist/cjs/pool/uma/across/transactionManager.js +45 -100
  148. package/dist/cjs/pool/uma/across/transactionManager.js.map +1 -1
  149. package/dist/cjs/pool/uma/clients/erc20/client.js +18 -16
  150. package/dist/cjs/pool/uma/clients/erc20/client.js.map +1 -1
  151. package/dist/cjs/pool/uma/clients/erc20/index.js +1 -1
  152. package/dist/cjs/pool/uma/clients/index.js +1 -1
  153. package/dist/cjs/pool/uma/index.js +1 -1
  154. package/dist/cjs/pool/uma/oracle/index.js +1 -1
  155. package/dist/cjs/pool/uma/oracle/utils.js +4 -5
  156. package/dist/cjs/pool/uma/oracle/utils.js.map +1 -1
  157. package/dist/cjs/pool/uma/utils.js +11 -30
  158. package/dist/cjs/pool/uma/utils.js.map +1 -1
  159. package/dist/cjs/priceClient/adapters/acrossApi.js +22 -39
  160. package/dist/cjs/priceClient/adapters/acrossApi.js.map +1 -1
  161. package/dist/cjs/priceClient/adapters/baseAdapter.js +49 -73
  162. package/dist/cjs/priceClient/adapters/baseAdapter.js.map +1 -1
  163. package/dist/cjs/priceClient/adapters/coingecko.js +34 -61
  164. package/dist/cjs/priceClient/adapters/coingecko.js.map +1 -1
  165. package/dist/cjs/priceClient/adapters/default.js +16 -31
  166. package/dist/cjs/priceClient/adapters/default.js.map +1 -1
  167. package/dist/cjs/priceClient/adapters/defiLlama.js +40 -74
  168. package/dist/cjs/priceClient/adapters/defiLlama.js.map +1 -1
  169. package/dist/cjs/priceClient/adapters/index.js +1 -1
  170. package/dist/cjs/priceClient/index.js +1 -1
  171. package/dist/cjs/priceClient/priceClient.js +110 -159
  172. package/dist/cjs/priceClient/priceClient.js.map +1 -1
  173. package/dist/cjs/providers/alchemy.js +17 -19
  174. package/dist/cjs/providers/alchemy.js.map +1 -1
  175. package/dist/cjs/providers/cachedProvider.js +88 -129
  176. package/dist/cjs/providers/cachedProvider.js.map +1 -1
  177. package/dist/cjs/providers/drpc.js +9 -11
  178. package/dist/cjs/providers/drpc.js.map +1 -1
  179. package/dist/cjs/providers/index.js +1 -1
  180. package/dist/cjs/providers/infura.js +10 -12
  181. package/dist/cjs/providers/infura.js.map +1 -1
  182. package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js +7 -15
  183. package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
  184. package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js +6 -14
  185. package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
  186. package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.js +7 -15
  187. package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
  188. package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js +42 -66
  189. package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js.map +1 -1
  190. package/dist/cjs/providers/mocks/index.js +1 -1
  191. package/dist/cjs/providers/mocks/mockEthersProvider.js +29 -31
  192. package/dist/cjs/providers/mocks/mockEthersProvider.js.map +1 -1
  193. package/dist/cjs/providers/quicknode.js +19 -21
  194. package/dist/cjs/providers/quicknode.js.map +1 -1
  195. package/dist/cjs/providers/rateLimitedProvider.js +64 -79
  196. package/dist/cjs/providers/rateLimitedProvider.js.map +1 -1
  197. package/dist/cjs/providers/retryProvider.js +163 -246
  198. package/dist/cjs/providers/retryProvider.js.map +1 -1
  199. package/dist/cjs/providers/solana/baseRpcFactories.js +14 -18
  200. package/dist/cjs/providers/solana/baseRpcFactories.js.map +1 -1
  201. package/dist/cjs/providers/solana/cachedRpcFactory.js +70 -112
  202. package/dist/cjs/providers/solana/cachedRpcFactory.js.map +1 -1
  203. package/dist/cjs/providers/solana/defaultRpcFactory.js +8 -15
  204. package/dist/cjs/providers/solana/defaultRpcFactory.js.map +1 -1
  205. package/dist/cjs/providers/solana/index.js +1 -1
  206. package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js +135 -191
  207. package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
  208. package/dist/cjs/providers/solana/rateLimitedRpcFactory.js +67 -90
  209. package/dist/cjs/providers/solana/rateLimitedRpcFactory.js.map +1 -1
  210. package/dist/cjs/providers/solana/retryRpcFactory.js +52 -79
  211. package/dist/cjs/providers/solana/retryRpcFactory.js.map +1 -1
  212. package/dist/cjs/providers/solana/utils.js +2 -2
  213. package/dist/cjs/providers/solana/utils.js.map +1 -1
  214. package/dist/cjs/providers/speedProvider.js +31 -53
  215. package/dist/cjs/providers/speedProvider.js.map +1 -1
  216. package/dist/cjs/providers/types.js +1 -1
  217. package/dist/cjs/providers/types.js.map +1 -1
  218. package/dist/cjs/providers/utils.js +26 -28
  219. package/dist/cjs/providers/utils.js.map +1 -1
  220. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js +108 -162
  221. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
  222. package/dist/cjs/relayFeeCalculator/chain-queries/customGasToken.js +14 -26
  223. package/dist/cjs/relayFeeCalculator/chain-queries/customGasToken.js.map +1 -1
  224. package/dist/cjs/relayFeeCalculator/chain-queries/factory.js +20 -29
  225. package/dist/cjs/relayFeeCalculator/chain-queries/factory.js.map +1 -1
  226. package/dist/cjs/relayFeeCalculator/chain-queries/index.js +1 -1
  227. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js +88 -137
  228. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  229. package/dist/cjs/relayFeeCalculator/index.js +1 -1
  230. package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js +199 -297
  231. package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
  232. package/dist/cjs/typeguards/error.js +5 -7
  233. package/dist/cjs/typeguards/error.js.map +1 -1
  234. package/dist/cjs/typeguards/index.js +1 -1
  235. package/dist/cjs/utils/AddressUtils.js +117 -144
  236. package/dist/cjs/utils/AddressUtils.js.map +1 -1
  237. package/dist/cjs/utils/ArrayUtils.js +21 -78
  238. package/dist/cjs/utils/ArrayUtils.js.map +1 -1
  239. package/dist/cjs/utils/BigNumberUtils.js +9 -10
  240. package/dist/cjs/utils/BigNumberUtils.js.map +1 -1
  241. package/dist/cjs/utils/BlockExplorerUtils.js +26 -30
  242. package/dist/cjs/utils/BlockExplorerUtils.js.map +1 -1
  243. package/dist/cjs/utils/BlockFinder.js +2 -5
  244. package/dist/cjs/utils/BlockFinder.js.map +1 -1
  245. package/dist/cjs/utils/BlockUtils.js +24 -41
  246. package/dist/cjs/utils/BlockUtils.js.map +1 -1
  247. package/dist/cjs/utils/BundleUtils.js +21 -24
  248. package/dist/cjs/utils/BundleUtils.js.map +1 -1
  249. package/dist/cjs/utils/CCTPUtils.js +62 -126
  250. package/dist/cjs/utils/CCTPUtils.js.map +1 -1
  251. package/dist/cjs/utils/CachingUtils.js +20 -42
  252. package/dist/cjs/utils/CachingUtils.js.map +1 -1
  253. package/dist/cjs/utils/ContractUtils.js +5 -5
  254. package/dist/cjs/utils/ContractUtils.js.map +1 -1
  255. package/dist/cjs/utils/DepositUtils.js +122 -99
  256. package/dist/cjs/utils/DepositUtils.js.map +1 -1
  257. package/dist/cjs/utils/EventUtils.js +49 -70
  258. package/dist/cjs/utils/EventUtils.js.map +1 -1
  259. package/dist/cjs/utils/FormattingUtils.js +26 -32
  260. package/dist/cjs/utils/FormattingUtils.js.map +1 -1
  261. package/dist/cjs/utils/HyperLiquidUtils.js +10 -23
  262. package/dist/cjs/utils/HyperLiquidUtils.js.map +1 -1
  263. package/dist/cjs/utils/IPFSUtils.js +16 -34
  264. package/dist/cjs/utils/IPFSUtils.js.map +1 -1
  265. package/dist/cjs/utils/JSONUtils.js +6 -6
  266. package/dist/cjs/utils/JSONUtils.js.map +1 -1
  267. package/dist/cjs/utils/LogUtils.js +10 -12
  268. package/dist/cjs/utils/LogUtils.js.map +1 -1
  269. package/dist/cjs/utils/Multicall.js +56 -114
  270. package/dist/cjs/utils/Multicall.js.map +1 -1
  271. package/dist/cjs/utils/NetworkUtils.js +12 -21
  272. package/dist/cjs/utils/NetworkUtils.js.map +1 -1
  273. package/dist/cjs/utils/NumberUtils.js +1 -3
  274. package/dist/cjs/utils/NumberUtils.js.map +1 -1
  275. package/dist/cjs/utils/ObjectUtils.js +27 -41
  276. package/dist/cjs/utils/ObjectUtils.js.map +1 -1
  277. package/dist/cjs/utils/Profiler.js +80 -83
  278. package/dist/cjs/utils/Profiler.js.map +1 -1
  279. package/dist/cjs/utils/ReviverUtils.js +5 -9
  280. package/dist/cjs/utils/ReviverUtils.js.map +1 -1
  281. package/dist/cjs/utils/SpokeUtils.js +84 -84
  282. package/dist/cjs/utils/SpokeUtils.js.map +1 -1
  283. package/dist/cjs/utils/TokenUtils.js +41 -64
  284. package/dist/cjs/utils/TokenUtils.js.map +1 -1
  285. package/dist/cjs/utils/TypeGuards.js +1 -1
  286. package/dist/cjs/utils/TypeGuards.js.map +1 -1
  287. package/dist/cjs/utils/ValidatorUtils.js +7 -7
  288. package/dist/cjs/utils/ValidatorUtils.js.map +1 -1
  289. package/dist/cjs/utils/abi/contracts/index.js +1 -1
  290. package/dist/cjs/utils/abi/index.js +12 -22
  291. package/dist/cjs/utils/abi/index.js.map +1 -1
  292. package/dist/cjs/utils/abi/typechain/factories/Multicall3__factory.js +9 -12
  293. package/dist/cjs/utils/abi/typechain/factories/Multicall3__factory.js.map +1 -1
  294. package/dist/cjs/utils/abi/typechain/index.js +1 -1
  295. package/dist/cjs/utils/common.js +40 -53
  296. package/dist/cjs/utils/common.js.map +1 -1
  297. package/dist/cjs/utils/index.js +1 -1
  298. package/dist/esm/addressAggregator/adapters/abstract.js +48 -64
  299. package/dist/esm/addressAggregator/adapters/abstract.js.map +1 -1
  300. package/dist/esm/addressAggregator/adapters/bybit.js +15 -29
  301. package/dist/esm/addressAggregator/adapters/bybit.js.map +1 -1
  302. package/dist/esm/addressAggregator/adapters/env.js +9 -14
  303. package/dist/esm/addressAggregator/adapters/env.js.map +1 -1
  304. package/dist/esm/addressAggregator/adapters/file.js +29 -43
  305. package/dist/esm/addressAggregator/adapters/file.js.map +1 -1
  306. package/dist/esm/addressAggregator/adapters/risklabs.js +20 -35
  307. package/dist/esm/addressAggregator/adapters/risklabs.js.map +1 -1
  308. package/dist/esm/addressAggregator/index.js +52 -83
  309. package/dist/esm/addressAggregator/index.js.map +1 -1
  310. package/dist/esm/addressAggregator/types.js +1 -1
  311. package/dist/esm/addressAggregator/types.js.map +1 -1
  312. package/dist/esm/apiClient/abstractClient.js +15 -9
  313. package/dist/esm/apiClient/abstractClient.js.map +1 -1
  314. package/dist/esm/apiClient/mockedClient.js +21 -26
  315. package/dist/esm/apiClient/mockedClient.js.map +1 -1
  316. package/dist/esm/apiClient/productionClient.js +61 -101
  317. package/dist/esm/apiClient/productionClient.js.map +1 -1
  318. package/dist/esm/arch/evm/BlockUtils.js +139 -217
  319. package/dist/esm/arch/evm/BlockUtils.js.map +1 -1
  320. package/dist/esm/arch/evm/SpokeUtils.js +146 -289
  321. package/dist/esm/arch/evm/SpokeUtils.js.map +1 -1
  322. package/dist/esm/arch/evm/utils/wait.js +34 -46
  323. package/dist/esm/arch/evm/utils/wait.js.map +1 -1
  324. package/dist/esm/arch/svm/BlockUtils.js +118 -166
  325. package/dist/esm/arch/svm/BlockUtils.js.map +1 -1
  326. package/dist/esm/arch/svm/SpokeUtils.js +738 -1150
  327. package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
  328. package/dist/esm/arch/svm/constants.js +1 -1
  329. package/dist/esm/arch/svm/constants.js.map +1 -1
  330. package/dist/esm/arch/svm/eventsClient.js +172 -232
  331. package/dist/esm/arch/svm/eventsClient.js.map +1 -1
  332. package/dist/esm/arch/svm/provider.js +1 -1
  333. package/dist/esm/arch/svm/provider.js.map +1 -1
  334. package/dist/esm/arch/svm/utils.js +155 -345
  335. package/dist/esm/arch/svm/utils.js.map +1 -1
  336. package/dist/esm/caching/Arweave/ArweaveClient.js +182 -256
  337. package/dist/esm/caching/Arweave/ArweaveClient.js.map +1 -1
  338. package/dist/esm/caching/IPFS/PinataIPFSClient.js +47 -48
  339. package/dist/esm/caching/IPFS/PinataIPFSClient.js.map +1 -1
  340. package/dist/esm/caching/Memory/MemoryCacheClient.js +13 -19
  341. package/dist/esm/caching/Memory/MemoryCacheClient.js.map +1 -1
  342. package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +333 -408
  343. package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
  344. package/dist/esm/clients/BaseAbstractClient.js +66 -92
  345. package/dist/esm/clients/BaseAbstractClient.js.map +1 -1
  346. package/dist/esm/clients/BundleDataClient/BundleDataClient.js +927 -1054
  347. package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  348. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js +102 -131
  349. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  350. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js +57 -59
  351. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  352. package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.js +7 -5
  353. package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -1
  354. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +75 -94
  355. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  356. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js +45 -23
  357. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
  358. package/dist/esm/clients/HubPoolClient.js +581 -740
  359. package/dist/esm/clients/HubPoolClient.js.map +1 -1
  360. package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js +133 -178
  361. package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
  362. package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js +126 -183
  363. package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
  364. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js +372 -399
  365. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  366. package/dist/esm/clients/SpokePoolClient/SpokePoolClientManager.js +9 -9
  367. package/dist/esm/clients/SpokePoolClient/SpokePoolClientManager.js.map +1 -1
  368. package/dist/esm/clients/SpokePoolClient/index.js +2 -2
  369. package/dist/esm/clients/SpokePoolClient/index.js.map +1 -1
  370. package/dist/esm/clients/SpokePoolClient/types.js +2 -2
  371. package/dist/esm/clients/SpokePoolClient/types.js.map +1 -1
  372. package/dist/esm/clients/mocks/MockConfigStoreClient.js +53 -64
  373. package/dist/esm/clients/mocks/MockConfigStoreClient.js.map +1 -1
  374. package/dist/esm/clients/mocks/MockEvents.js +42 -49
  375. package/dist/esm/clients/mocks/MockEvents.js.map +1 -1
  376. package/dist/esm/clients/mocks/MockHubPoolClient.js +138 -182
  377. package/dist/esm/clients/mocks/MockHubPoolClient.js.map +1 -1
  378. package/dist/esm/clients/mocks/MockSpokePoolClient.js +202 -188
  379. package/dist/esm/clients/mocks/MockSpokePoolClient.js.map +1 -1
  380. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js +127 -132
  381. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
  382. package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js +53 -69
  383. package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js.map +1 -1
  384. package/dist/esm/coingecko/Coingecko.js +298 -443
  385. package/dist/esm/coingecko/Coingecko.js.map +1 -1
  386. package/dist/esm/constants.js +40 -46
  387. package/dist/esm/constants.js.map +1 -1
  388. package/dist/esm/contracts/acrossConfigStore.js +24 -46
  389. package/dist/esm/contracts/acrossConfigStore.js.map +1 -1
  390. package/dist/esm/contracts/hubPool.js +34 -18
  391. package/dist/esm/contracts/hubPool.js.map +1 -1
  392. package/dist/esm/contracts/utils.js +3 -5
  393. package/dist/esm/contracts/utils.js.map +1 -1
  394. package/dist/esm/gasPriceOracle/adapters/arbitrum.js +6 -14
  395. package/dist/esm/gasPriceOracle/adapters/arbitrum.js.map +1 -1
  396. package/dist/esm/gasPriceOracle/adapters/ethereum.js +22 -42
  397. package/dist/esm/gasPriceOracle/adapters/ethereum.js.map +1 -1
  398. package/dist/esm/gasPriceOracle/adapters/linea-viem.js +13 -25
  399. package/dist/esm/gasPriceOracle/adapters/linea-viem.js.map +1 -1
  400. package/dist/esm/gasPriceOracle/adapters/polygon.js +72 -108
  401. package/dist/esm/gasPriceOracle/adapters/polygon.js.map +1 -1
  402. package/dist/esm/gasPriceOracle/adapters/solana.js +22 -31
  403. package/dist/esm/gasPriceOracle/adapters/solana.js.map +1 -1
  404. package/dist/esm/gasPriceOracle/oracle.js +70 -95
  405. package/dist/esm/gasPriceOracle/oracle.js.map +1 -1
  406. package/dist/esm/gasPriceOracle/types.js +2 -2
  407. package/dist/esm/gasPriceOracle/types.js.map +1 -1
  408. package/dist/esm/gasPriceOracle/util.js +4 -4
  409. package/dist/esm/gasPriceOracle/util.js.map +1 -1
  410. package/dist/esm/lpFeeCalculator/lpFeeCalculator.js +30 -33
  411. package/dist/esm/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
  412. package/dist/esm/lpFeeCalculator/rateModel.js +7 -9
  413. package/dist/esm/lpFeeCalculator/rateModel.js.map +1 -1
  414. package/dist/esm/merkleDistributor/MerkleDistributor.js +18 -17
  415. package/dist/esm/merkleDistributor/MerkleDistributor.js.map +1 -1
  416. package/dist/esm/pool/TransactionManager.js +45 -100
  417. package/dist/esm/pool/TransactionManager.js.map +1 -1
  418. package/dist/esm/pool/poolClient.js +479 -740
  419. package/dist/esm/pool/poolClient.js.map +1 -1
  420. package/dist/esm/pool/uma/across/constants.js +2 -2
  421. package/dist/esm/pool/uma/across/constants.js.map +1 -1
  422. package/dist/esm/pool/uma/across/transactionManager.js +45 -100
  423. package/dist/esm/pool/uma/across/transactionManager.js.map +1 -1
  424. package/dist/esm/pool/uma/clients/erc20/client.js +15 -13
  425. package/dist/esm/pool/uma/clients/erc20/client.js.map +1 -1
  426. package/dist/esm/pool/uma/oracle/utils.js +2 -3
  427. package/dist/esm/pool/uma/oracle/utils.js.map +1 -1
  428. package/dist/esm/pool/uma/utils.js +9 -28
  429. package/dist/esm/pool/uma/utils.js.map +1 -1
  430. package/dist/esm/priceClient/adapters/acrossApi.js +21 -40
  431. package/dist/esm/priceClient/adapters/acrossApi.js.map +1 -1
  432. package/dist/esm/priceClient/adapters/baseAdapter.js +46 -72
  433. package/dist/esm/priceClient/adapters/baseAdapter.js.map +1 -1
  434. package/dist/esm/priceClient/adapters/coingecko.js +33 -61
  435. package/dist/esm/priceClient/adapters/coingecko.js.map +1 -1
  436. package/dist/esm/priceClient/adapters/default.js +15 -31
  437. package/dist/esm/priceClient/adapters/default.js.map +1 -1
  438. package/dist/esm/priceClient/adapters/defiLlama.js +38 -73
  439. package/dist/esm/priceClient/adapters/defiLlama.js.map +1 -1
  440. package/dist/esm/priceClient/priceClient.js +109 -158
  441. package/dist/esm/priceClient/priceClient.js.map +1 -1
  442. package/dist/esm/providers/alchemy.js +16 -18
  443. package/dist/esm/providers/alchemy.js.map +1 -1
  444. package/dist/esm/providers/cachedProvider.js +99 -134
  445. package/dist/esm/providers/cachedProvider.js.map +1 -1
  446. package/dist/esm/providers/constants.js +3 -3
  447. package/dist/esm/providers/constants.js.map +1 -1
  448. package/dist/esm/providers/drpc.js +8 -10
  449. package/dist/esm/providers/drpc.js.map +1 -1
  450. package/dist/esm/providers/infura.js +9 -11
  451. package/dist/esm/providers/infura.js.map +1 -1
  452. package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js +6 -15
  453. package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
  454. package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js +5 -14
  455. package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
  456. package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.js +6 -15
  457. package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
  458. package/dist/esm/providers/mocks/MockSolanaRpcFactory.js +41 -66
  459. package/dist/esm/providers/mocks/MockSolanaRpcFactory.js.map +1 -1
  460. package/dist/esm/providers/mocks/mockEthersProvider.js +27 -30
  461. package/dist/esm/providers/mocks/mockEthersProvider.js.map +1 -1
  462. package/dist/esm/providers/quicknode.js +18 -20
  463. package/dist/esm/providers/quicknode.js.map +1 -1
  464. package/dist/esm/providers/rateLimitedProvider.js +68 -80
  465. package/dist/esm/providers/rateLimitedProvider.js.map +1 -1
  466. package/dist/esm/providers/retryProvider.js +186 -259
  467. package/dist/esm/providers/retryProvider.js.map +1 -1
  468. package/dist/esm/providers/solana/baseRpcFactories.js +13 -19
  469. package/dist/esm/providers/solana/baseRpcFactories.js.map +1 -1
  470. package/dist/esm/providers/solana/cachedRpcFactory.js +75 -112
  471. package/dist/esm/providers/solana/cachedRpcFactory.js.map +1 -1
  472. package/dist/esm/providers/solana/defaultRpcFactory.js +6 -14
  473. package/dist/esm/providers/solana/defaultRpcFactory.js.map +1 -1
  474. package/dist/esm/providers/solana/quorumFallbackRpcFactory.js +149 -202
  475. package/dist/esm/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
  476. package/dist/esm/providers/solana/rateLimitedRpcFactory.js +70 -90
  477. package/dist/esm/providers/solana/rateLimitedRpcFactory.js.map +1 -1
  478. package/dist/esm/providers/solana/retryRpcFactory.js +50 -74
  479. package/dist/esm/providers/solana/retryRpcFactory.js.map +1 -1
  480. package/dist/esm/providers/solana/utils.js +1 -1
  481. package/dist/esm/providers/solana/utils.js.map +1 -1
  482. package/dist/esm/providers/speedProvider.js +28 -51
  483. package/dist/esm/providers/speedProvider.js.map +1 -1
  484. package/dist/esm/providers/types.js +2 -2
  485. package/dist/esm/providers/types.js.map +1 -1
  486. package/dist/esm/providers/utils.js +17 -20
  487. package/dist/esm/providers/utils.js.map +1 -1
  488. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js +98 -152
  489. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
  490. package/dist/esm/relayFeeCalculator/chain-queries/customGasToken.js +13 -26
  491. package/dist/esm/relayFeeCalculator/chain-queries/customGasToken.js.map +1 -1
  492. package/dist/esm/relayFeeCalculator/chain-queries/factory.js +9 -19
  493. package/dist/esm/relayFeeCalculator/chain-queries/factory.js.map +1 -1
  494. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js +83 -128
  495. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  496. package/dist/esm/relayFeeCalculator/relayFeeCalculator.js +211 -299
  497. package/dist/esm/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
  498. package/dist/esm/typeguards/error.js +3 -5
  499. package/dist/esm/typeguards/error.js.map +1 -1
  500. package/dist/esm/utils/AddressUtils.js +115 -147
  501. package/dist/esm/utils/AddressUtils.js.map +1 -1
  502. package/dist/esm/utils/ArrayUtils.js +21 -78
  503. package/dist/esm/utils/ArrayUtils.js.map +1 -1
  504. package/dist/esm/utils/BigNumberUtils.js +11 -12
  505. package/dist/esm/utils/BigNumberUtils.js.map +1 -1
  506. package/dist/esm/utils/BlockExplorerUtils.js +19 -23
  507. package/dist/esm/utils/BlockExplorerUtils.js.map +1 -1
  508. package/dist/esm/utils/BlockFinder.js +2 -6
  509. package/dist/esm/utils/BlockFinder.js.map +1 -1
  510. package/dist/esm/utils/BlockUtils.js +31 -40
  511. package/dist/esm/utils/BlockUtils.js.map +1 -1
  512. package/dist/esm/utils/BundleUtils.js +21 -24
  513. package/dist/esm/utils/BundleUtils.js.map +1 -1
  514. package/dist/esm/utils/CCTPUtils.js +62 -123
  515. package/dist/esm/utils/CCTPUtils.js.map +1 -1
  516. package/dist/esm/utils/CachingUtils.js +17 -38
  517. package/dist/esm/utils/CachingUtils.js.map +1 -1
  518. package/dist/esm/utils/ContractUtils.js +3 -3
  519. package/dist/esm/utils/ContractUtils.js.map +1 -1
  520. package/dist/esm/utils/DepositUtils.js +121 -98
  521. package/dist/esm/utils/DepositUtils.js.map +1 -1
  522. package/dist/esm/utils/EventUtils.js +52 -69
  523. package/dist/esm/utils/EventUtils.js.map +1 -1
  524. package/dist/esm/utils/FormattingUtils.js +20 -26
  525. package/dist/esm/utils/FormattingUtils.js.map +1 -1
  526. package/dist/esm/utils/HyperLiquidUtils.js +8 -22
  527. package/dist/esm/utils/HyperLiquidUtils.js.map +1 -1
  528. package/dist/esm/utils/IPFSUtils.js +16 -35
  529. package/dist/esm/utils/IPFSUtils.js.map +1 -1
  530. package/dist/esm/utils/JSONUtils.js +4 -4
  531. package/dist/esm/utils/JSONUtils.js.map +1 -1
  532. package/dist/esm/utils/LogUtils.js +8 -12
  533. package/dist/esm/utils/LogUtils.js.map +1 -1
  534. package/dist/esm/utils/Multicall.js +50 -109
  535. package/dist/esm/utils/Multicall.js.map +1 -1
  536. package/dist/esm/utils/NetworkUtils.js +12 -21
  537. package/dist/esm/utils/NetworkUtils.js.map +1 -1
  538. package/dist/esm/utils/NumberUtils.js +1 -3
  539. package/dist/esm/utils/NumberUtils.js.map +1 -1
  540. package/dist/esm/utils/ObjectUtils.js +27 -41
  541. package/dist/esm/utils/ObjectUtils.js.map +1 -1
  542. package/dist/esm/utils/Profiler.js +77 -82
  543. package/dist/esm/utils/Profiler.js.map +1 -1
  544. package/dist/esm/utils/ReviverUtils.js +3 -7
  545. package/dist/esm/utils/ReviverUtils.js.map +1 -1
  546. package/dist/esm/utils/SpokeUtils.js +83 -78
  547. package/dist/esm/utils/SpokeUtils.js.map +1 -1
  548. package/dist/esm/utils/TokenUtils.js +33 -57
  549. package/dist/esm/utils/TokenUtils.js.map +1 -1
  550. package/dist/esm/utils/ValidatorUtils.js +4 -4
  551. package/dist/esm/utils/ValidatorUtils.js.map +1 -1
  552. package/dist/esm/utils/abi/index.js +10 -20
  553. package/dist/esm/utils/abi/index.js.map +1 -1
  554. package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.js +8 -12
  555. package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.js.map +1 -1
  556. package/dist/esm/utils/common.js +38 -52
  557. package/dist/esm/utils/common.js.map +1 -1
  558. package/package.json +2 -2
@@ -1,37 +1,12 @@
1
- import { __assign, __awaiter, __generator } from "tslib";
2
1
  import assert from "assert";
3
2
  import { DEFAULT_SIMULATED_RELAYER_ADDRESS, DEFAULT_SIMULATED_RELAYER_ADDRESS_SVM, TOKEN_SYMBOLS_MAP, } from "../constants";
4
3
  import { BigNumber, MAX_BIG_INT, bnZero, fixedPointAdjustment, getTokenInfo, isDefined, max, min, nativeToToken, percent, toBN, toBNWei, compareAddressesSimple, ConvertDecimals, chainIsSvm, EvmAddress, SvmAddress, toAddressType, } from "../utils";
5
- export var expectedCapitalCostsKeys = ["lowerBound", "upperBound", "cutoff", "decimals"];
6
- export var DEFAULT_LOGGER = {
7
- debug: function () {
8
- var args = [];
9
- for (var _i = 0; _i < arguments.length; _i++) {
10
- args[_i] = arguments[_i];
11
- }
12
- return console.debug(args);
13
- },
14
- info: function () {
15
- var args = [];
16
- for (var _i = 0; _i < arguments.length; _i++) {
17
- args[_i] = arguments[_i];
18
- }
19
- return console.info(args);
20
- },
21
- warn: function () {
22
- var args = [];
23
- for (var _i = 0; _i < arguments.length; _i++) {
24
- args[_i] = arguments[_i];
25
- }
26
- return console.warn(args);
27
- },
28
- error: function () {
29
- var args = [];
30
- for (var _i = 0; _i < arguments.length; _i++) {
31
- args[_i] = arguments[_i];
32
- }
33
- return console.error(args);
34
- },
4
+ export const expectedCapitalCostsKeys = ["lowerBound", "upperBound", "cutoff", "decimals"];
5
+ export const DEFAULT_LOGGER = {
6
+ debug: (...args) => console.debug(args),
7
+ info: (...args) => console.info(args),
8
+ warn: (...args) => console.warn(args),
9
+ error: (...args) => console.error(args),
35
10
  };
36
11
  export function getDefaultRelayer(chainId) {
37
12
  return isDefined(chainId) && chainIsSvm(chainId)
@@ -39,9 +14,18 @@ export function getDefaultRelayer(chainId) {
39
14
  : EvmAddress.from(DEFAULT_SIMULATED_RELAYER_ADDRESS);
40
15
  }
41
16
  // Small amount to simulate filling with. Should be low enough to guarantee a successful fill.
42
- var safeOutputAmount = toBN(100);
43
- var RelayFeeCalculator = /** @class */ (function () {
44
- function RelayFeeCalculator(config, logger, destinationChainId) {
17
+ const safeOutputAmount = toBN(100);
18
+ export class RelayFeeCalculator {
19
+ queries;
20
+ gasDiscountPercent;
21
+ capitalDiscountPercent;
22
+ feeLimitPercent;
23
+ nativeTokenDecimals;
24
+ capitalCostsConfig;
25
+ // For logging if set. This function should accept 2 args - severity (INFO, WARN, ERROR) and the logs data, which will
26
+ // be an object.
27
+ logger;
28
+ constructor(config, logger, destinationChainId) {
45
29
  assert(config, "config must be provided");
46
30
  if ("queries" in config) {
47
31
  this.queries = config.queries;
@@ -58,8 +42,7 @@ var RelayFeeCalculator = /** @class */ (function () {
58
42
  assert(this.gasDiscountPercent >= 0 && this.gasDiscountPercent <= 100, "gasDiscountPercent must be between 0 and 100 percent");
59
43
  assert(this.capitalDiscountPercent >= 0 && this.capitalDiscountPercent <= 100, "capitalDiscountPercent must be between 0 and 100 percent");
60
44
  assert(this.feeLimitPercent >= 0 && this.feeLimitPercent <= 100, "feeLimitPercent must be between 0 and 100 percent");
61
- this.capitalCostsConfig = Object.fromEntries(Object.entries(config.capitalCostsConfig).map(function (_a) {
62
- var token = _a[0], capitalCosts = _a[1];
45
+ this.capitalCostsConfig = Object.fromEntries(Object.entries(config.capitalCostsConfig).map(([token, capitalCosts]) => {
63
46
  return [token.toUpperCase(), RelayFeeCalculator.validateAndTransformCapitalCostsConfigOverride(capitalCosts)];
64
47
  }));
65
48
  assert(Object.keys(this.capitalCostsConfig).length > 0, "capitalCostsConfig must have at least one entry");
@@ -77,26 +60,25 @@ var RelayFeeCalculator = /** @class */ (function () {
77
60
  * CapitalCostConfig, then we need to convert it to a CapitalCostConfigOverride with the default config set with no route
78
61
  * overrides.
79
62
  */
80
- RelayFeeCalculator.capitalCostConfigIsOverride = function (config) {
63
+ static capitalCostConfigIsOverride(config) {
81
64
  return config.default !== undefined;
82
- };
65
+ }
83
66
  /**
84
67
  * Validates a CapitalCostConfigOverride or a CapitalCostConfig.
85
68
  * @param capitalCosts CapitalCostConfig or CapitalCostConfigOverride
86
69
  * @returns CapitalCostConfigOverride
87
70
  */
88
- RelayFeeCalculator.validateAndTransformCapitalCostsConfigOverride = function (capitalCosts) {
71
+ static validateAndTransformCapitalCostsConfigOverride(capitalCosts) {
89
72
  // We need to first convert the config to a baseline type. This is because the config can be either a CapitalCostConfig
90
73
  // or a CapitalCostConfigOverride. If it's a CapitalCostConfig, then we need to convert it to a CapitalCostConfigOverride with
91
74
  // the default config set with no route overrides.
92
- var config = this.capitalCostConfigIsOverride(capitalCosts)
75
+ const config = this.capitalCostConfigIsOverride(capitalCosts)
93
76
  ? capitalCosts
94
77
  : { default: capitalCosts };
95
78
  // Validate the default config.
96
79
  this.validateCapitalCostsConfig(config.default);
97
80
  // Iterate over all the route overrides and validate them.
98
- for (var _i = 0, _a = Object.values(config.routeOverrides || {}); _i < _a.length; _i++) {
99
- var toChainIdRoutes = _a[_i];
81
+ for (const toChainIdRoutes of Object.values(config.routeOverrides || {})) {
100
82
  Object.values(toChainIdRoutes).forEach(this.validateCapitalCostsConfig);
101
83
  }
102
84
  // Validate origin chain overrides
@@ -104,18 +86,18 @@ var RelayFeeCalculator = /** @class */ (function () {
104
86
  // Validate destination chain overrides
105
87
  Object.values(config.destinationChainOverrides || {}).forEach(this.validateCapitalCostsConfig);
106
88
  return config;
107
- };
89
+ }
108
90
  /**
109
91
  * Validates a CapitalCostConfig.
110
92
  * @param capitalCosts CapitalCostConfig
111
93
  */
112
- RelayFeeCalculator.validateCapitalCostsConfig = function (capitalCosts) {
94
+ static validateCapitalCostsConfig(capitalCosts) {
113
95
  assert(toBN(capitalCosts.upperBound).lt(toBNWei("1")), "upper bound must be < 100%");
114
96
  assert(capitalCosts.decimals > 0 && capitalCosts.decimals <= 18, "invalid decimals");
115
- };
116
- RelayFeeCalculator.prototype.getTokenPrice = function (tokenSymbol) {
97
+ }
98
+ getTokenPrice(tokenSymbol) {
117
99
  return this.queries.getTokenPrice(tokenSymbol);
118
- };
100
+ }
119
101
  /**
120
102
  * Calculate the gas fee as a % of the amount to relay.
121
103
  * @param deposit A valid deposit object to reason about
@@ -135,98 +117,73 @@ var RelayFeeCalculator = /** @class */ (function () {
135
117
  * a message & recipient contract is provided as this function may not simulate with
136
118
  * the correct parameters to see a full fill.
137
119
  */
138
- RelayFeeCalculator.prototype.gasFeePercent = function (deposit_1, outputAmount_1, outputTokenInfo_1) {
139
- return __awaiter(this, arguments, void 0, function (deposit, outputAmount, outputTokenInfo, simulateZeroFill, relayerAddress, _tokenPrice, gasPrice, gasLimit, _tokenGasCost, transport) {
140
- var simulatedAmount, getGasCosts, _a, tokenGasCost, tokenPrice, gasFeesInToken;
141
- var _this = this;
142
- if (simulateZeroFill === void 0) { simulateZeroFill = false; }
143
- if (relayerAddress === void 0) { relayerAddress = getDefaultRelayer(deposit.destinationChainId); }
144
- return __generator(this, function (_b) {
145
- switch (_b.label) {
146
- case 0:
147
- if (toBN(outputAmount).eq(bnZero))
148
- return [2 /*return*/, MAX_BIG_INT];
149
- simulatedAmount = simulateZeroFill ? safeOutputAmount : toBN(outputAmount);
150
- deposit = __assign(__assign({}, deposit), { outputAmount: simulatedAmount });
151
- getGasCosts = this.queries
152
- .getGasCosts(deposit, relayerAddress, { gasPrice: gasPrice, gasUnits: gasLimit, transport: transport })
153
- .then(function (_a) {
154
- var tokenGasCost = _a.tokenGasCost;
155
- return tokenGasCost;
156
- })
157
- .catch(function (error) {
158
- _this.logger.error({
159
- at: "sdk/gasFeePercent",
160
- message: "Error while fetching gas costs",
161
- error: error,
162
- simulateZeroFill: simulateZeroFill,
163
- deposit: deposit,
164
- });
165
- throw error;
166
- });
167
- return [4 /*yield*/, Promise.all([
168
- _tokenGasCost ? Promise.resolve(_tokenGasCost) : getGasCosts,
169
- this.resolveTokenPrice(outputTokenInfo, _tokenPrice, deposit),
170
- ])];
171
- case 1:
172
- _a = _b.sent(), tokenGasCost = _a[0], tokenPrice = _a[1];
173
- gasFeesInToken = nativeToToken(tokenGasCost, tokenPrice, outputTokenInfo.decimals, this.nativeTokenDecimals);
174
- return [2 /*return*/, percent(gasFeesInToken, outputAmount.toString())];
175
- }
120
+ async gasFeePercent(deposit, outputAmount, outputTokenInfo, simulateZeroFill = false, relayerAddress = getDefaultRelayer(deposit.destinationChainId), _tokenPrice, gasPrice, gasLimit, _tokenGasCost, transport) {
121
+ if (toBN(outputAmount).eq(bnZero))
122
+ return MAX_BIG_INT;
123
+ // Reduce the output amount to simulate a full fill with a lower value to estimate
124
+ // the fill cost accurately without risking a failure due to insufficient balance.
125
+ const simulatedAmount = simulateZeroFill ? safeOutputAmount : toBN(outputAmount);
126
+ deposit = { ...deposit, outputAmount: simulatedAmount };
127
+ const getGasCosts = this.queries
128
+ .getGasCosts(deposit, relayerAddress, { gasPrice, gasUnits: gasLimit, transport })
129
+ .then(({ tokenGasCost }) => tokenGasCost)
130
+ .catch((error) => {
131
+ this.logger.error({
132
+ at: "sdk/gasFeePercent",
133
+ message: "Error while fetching gas costs",
134
+ error,
135
+ simulateZeroFill,
136
+ deposit,
176
137
  });
138
+ throw error;
177
139
  });
178
- };
140
+ const [tokenGasCost, tokenPrice] = await Promise.all([
141
+ _tokenGasCost ? Promise.resolve(_tokenGasCost) : getGasCosts,
142
+ this.resolveTokenPrice(outputTokenInfo, _tokenPrice, deposit),
143
+ ]);
144
+ const gasFeesInToken = nativeToToken(tokenGasCost, tokenPrice, outputTokenInfo.decimals, this.nativeTokenDecimals);
145
+ return percent(gasFeesInToken, outputAmount.toString());
146
+ }
179
147
  /**
180
148
  * Calculate the auxiliary native token fee as a % of the amount to relay.
181
149
  * Treats auxiliary native outlay as value forwarded to user, reported separately.
182
150
  */
183
- RelayFeeCalculator.prototype.auxNativeFeePercent = function (deposit, outputAmount, outputTokenInfo, _tokenPrice) {
184
- return __awaiter(this, void 0, void 0, function () {
185
- var auxNativeCost, tokenPrice, auxFeesInToken;
186
- return __generator(this, function (_a) {
187
- switch (_a.label) {
188
- case 0:
189
- if (toBN(outputAmount).eq(bnZero))
190
- return [2 /*return*/, MAX_BIG_INT];
191
- auxNativeCost = bnZero;
192
- try {
193
- auxNativeCost = this.queries.getAuxiliaryNativeTokenCost(deposit);
194
- }
195
- catch (error) {
196
- this.logger.error({
197
- at: "sdk/auxNativeFeePercent",
198
- message: "Error while fetching auxiliary native token cost",
199
- error: error,
200
- destinationChainId: deposit.destinationChainId,
201
- inputToken: deposit.inputToken,
202
- });
203
- throw error;
204
- }
205
- return [4 /*yield*/, this.resolveTokenPrice(outputTokenInfo, _tokenPrice, deposit)];
206
- case 1:
207
- tokenPrice = _a.sent();
208
- auxFeesInToken = nativeToToken(auxNativeCost, tokenPrice, outputTokenInfo.decimals, this.nativeTokenDecimals);
209
- return [2 /*return*/, percent(auxFeesInToken, outputAmount)];
210
- }
151
+ async auxNativeFeePercent(deposit, outputAmount, outputTokenInfo, _tokenPrice) {
152
+ if (toBN(outputAmount).eq(bnZero))
153
+ return MAX_BIG_INT;
154
+ let auxNativeCost = bnZero;
155
+ try {
156
+ auxNativeCost = this.queries.getAuxiliaryNativeTokenCost(deposit);
157
+ }
158
+ catch (error) {
159
+ this.logger.error({
160
+ at: "sdk/auxNativeFeePercent",
161
+ message: "Error while fetching auxiliary native token cost",
162
+ error,
163
+ destinationChainId: deposit.destinationChainId,
164
+ inputToken: deposit.inputToken,
211
165
  });
212
- });
213
- };
166
+ throw error;
167
+ }
168
+ const tokenPrice = await this.resolveTokenPrice(outputTokenInfo, _tokenPrice, deposit);
169
+ const auxFeesInToken = nativeToToken(auxNativeCost, tokenPrice, outputTokenInfo.decimals, this.nativeTokenDecimals);
170
+ return percent(auxFeesInToken, outputAmount);
171
+ }
214
172
  // Note: these variables are unused now, but may be needed in future versions of this function that are more complex.
215
- RelayFeeCalculator.prototype.capitalFeePercent = function (_outputAmount, _tokenSymbol, _originRoute, _destinationRoute) {
216
- var _a, _b, _c, _d, _e, _f;
173
+ capitalFeePercent(_outputAmount, _tokenSymbol, _originRoute, _destinationRoute) {
217
174
  // If amount is 0, then the capital fee % should be the max 100%
218
175
  if (toBN(_outputAmount).eq(toBN(0)))
219
176
  return MAX_BIG_INT;
220
177
  // V0: Ensure that there is a capital fee available for the token.
221
178
  // If not, then we should throw an error because this is indicative
222
179
  // of a misconfiguration.
223
- var tokenCostConfig = this.capitalCostsConfig[_tokenSymbol.toUpperCase()];
180
+ const tokenCostConfig = this.capitalCostsConfig[_tokenSymbol.toUpperCase()];
224
181
  if (!isDefined(tokenCostConfig)) {
225
182
  this.logger.error({
226
183
  at: "sdk/capitalFeePercent",
227
- message: "No capital fee available for token ".concat(_tokenSymbol),
184
+ message: `No capital fee available for token ${_tokenSymbol}`,
228
185
  });
229
- throw new Error("No capital cost config available for token ".concat(_tokenSymbol));
186
+ throw new Error(`No capital cost config available for token ${_tokenSymbol}`);
230
187
  }
231
188
  // V1: Charge fee that scales with size. This will charge a fee % based on a linear fee curve with a "kink" at a
232
189
  // cutoff in the same units as _amountToRelay. Before the kink, the fee % will increase linearly from a lower
@@ -238,85 +195,77 @@ var RelayFeeCalculator = /** @class */ (function () {
238
195
  // 2. Destination chain overrides
239
196
  // 3. Origin chain overrides
240
197
  // 4. Default config
241
- var routeOverride = (_b = (_a = tokenCostConfig === null || tokenCostConfig === void 0 ? void 0 : tokenCostConfig.routeOverrides) === null || _a === void 0 ? void 0 : _a[_originRoute || ""]) === null || _b === void 0 ? void 0 : _b[_destinationRoute || ""];
242
- var destinationChainOverride = (_c = tokenCostConfig === null || tokenCostConfig === void 0 ? void 0 : tokenCostConfig.destinationChainOverrides) === null || _c === void 0 ? void 0 : _c[_destinationRoute || ""];
243
- var originChainOverride = (_d = tokenCostConfig === null || tokenCostConfig === void 0 ? void 0 : tokenCostConfig.originChainOverrides) === null || _d === void 0 ? void 0 : _d[_originRoute || ""];
244
- var config = (_f = (_e = routeOverride !== null && routeOverride !== void 0 ? routeOverride : destinationChainOverride) !== null && _e !== void 0 ? _e : originChainOverride) !== null && _f !== void 0 ? _f : tokenCostConfig.default;
198
+ const routeOverride = tokenCostConfig?.routeOverrides?.[_originRoute || ""]?.[_destinationRoute || ""];
199
+ const destinationChainOverride = tokenCostConfig?.destinationChainOverrides?.[_destinationRoute || ""];
200
+ const originChainOverride = tokenCostConfig?.originChainOverrides?.[_originRoute || ""];
201
+ const config = routeOverride ?? destinationChainOverride ?? originChainOverride ?? tokenCostConfig.default;
245
202
  // Check and log warnings for configuration conflicts
246
203
  this.warnIfConfigConflicts(_tokenSymbol, _originRoute || "", _destinationRoute || "", routeOverride, destinationChainOverride, originChainOverride);
247
204
  // Scale amount "y" to 18 decimals.
248
- var y = toBN(_outputAmount).mul(toBNWei("1", 18 - config.decimals));
205
+ const y = toBN(_outputAmount).mul(toBNWei("1", 18 - config.decimals));
249
206
  // At a minimum, the fee will be equal to lower bound fee * y
250
- var minCharge = toBN(config.lowerBound).mul(y).div(fixedPointAdjustment);
207
+ const minCharge = toBN(config.lowerBound).mul(y).div(fixedPointAdjustment);
251
208
  // Charge an increasing marginal fee % up to min(cutoff, y). If y is very close to the cutoff, the fee %
252
209
  // will be equal to half the sum of (upper bound + lower bound).
253
- var yTriangle = min(config.cutoff, y);
210
+ const yTriangle = min(config.cutoff, y);
254
211
  // triangleSlope is slope of fee curve from lower bound to upper bound. If cutoff is 0, slope is 0.
255
212
  // triangleCharge is interval of curve from 0 to y for curve = triangleSlope * y
256
- var triangleSlope = toBN(config.cutoff).eq(toBN(0))
213
+ const triangleSlope = toBN(config.cutoff).eq(toBN(0))
257
214
  ? toBN(0)
258
215
  : toBN(config.upperBound).sub(config.lowerBound).mul(fixedPointAdjustment).div(config.cutoff);
259
- var triangleHeight = triangleSlope.mul(yTriangle).div(fixedPointAdjustment);
260
- var triangleCharge = triangleHeight.mul(yTriangle).div(toBNWei(2));
216
+ const triangleHeight = triangleSlope.mul(yTriangle).div(fixedPointAdjustment);
217
+ const triangleCharge = triangleHeight.mul(yTriangle).div(toBNWei(2));
261
218
  // For any amounts above the cutoff, the marginal fee % will not increase but will be fixed at the upper bound
262
219
  // value.
263
- var yRemainder = max(toBN(0), y.sub(config.cutoff));
264
- var remainderCharge = yRemainder.mul(toBN(config.upperBound).sub(config.lowerBound)).div(fixedPointAdjustment);
220
+ const yRemainder = max(toBN(0), y.sub(config.cutoff));
221
+ const remainderCharge = yRemainder.mul(toBN(config.upperBound).sub(config.lowerBound)).div(fixedPointAdjustment);
265
222
  return minCharge.add(triangleCharge).add(remainderCharge).mul(fixedPointAdjustment).div(y);
266
223
  }
267
- };
224
+ }
268
225
  /**
269
226
  * Checks for configuration conflicts across all token symbols and their associated chain configurations.
270
227
  * This method examines the capital costs configuration for each token and identifies any overlapping
271
228
  * or conflicting configurations between route overrides, destination chain overrides, and origin chain overrides.
272
229
  * If conflicts are found, warnings will be logged via the warnIfConfigConflicts method.
273
230
  */
274
- RelayFeeCalculator.prototype.checkAllConfigConflicts = function () {
275
- var _a, _b, _c, _d;
276
- var _loop_1 = function (tokenSymbol, tokenConfig) {
231
+ checkAllConfigConflicts() {
232
+ for (const [tokenSymbol, tokenConfig] of Object.entries(this.capitalCostsConfig)) {
277
233
  // Get all origin chains that have specific configurations
278
- var originChains = new Set(Object.keys(tokenConfig.originChainOverrides || {}));
234
+ const originChains = new Set(Object.keys(tokenConfig.originChainOverrides || {}));
279
235
  // Get all destination chains that have specific configurations
280
- var destChains = new Set(Object.keys(tokenConfig.destinationChainOverrides || {}));
236
+ const destChains = new Set(Object.keys(tokenConfig.destinationChainOverrides || {}));
281
237
  // Add all chains from route overrides
282
238
  if (tokenConfig.routeOverrides) {
283
- Object.keys(tokenConfig.routeOverrides).forEach(function (originChain) {
239
+ Object.keys(tokenConfig.routeOverrides).forEach((originChain) => {
284
240
  originChains.add(originChain);
285
- Object.keys(tokenConfig.routeOverrides[originChain]).forEach(function (destChain) {
241
+ Object.keys(tokenConfig.routeOverrides[originChain]).forEach((destChain) => {
286
242
  destChains.add(destChain);
287
243
  });
288
244
  });
289
245
  }
290
246
  // If there are no specific chain configurations, just check the default case
291
247
  if (originChains.size === 0 && destChains.size === 0) {
292
- return "continue";
248
+ continue;
293
249
  }
294
250
  // Check for conflicts between all combinations of origin and destination chains
295
- for (var _g = 0, _h = Array.from(originChains); _g < _h.length; _g++) {
296
- var originChain = _h[_g];
297
- for (var _j = 0, _k = Array.from(destChains); _j < _k.length; _j++) {
298
- var destChain = _k[_j];
299
- var routeOverride = (_b = (_a = tokenConfig.routeOverrides) === null || _a === void 0 ? void 0 : _a[originChain]) === null || _b === void 0 ? void 0 : _b[destChain];
300
- var destinationChainOverride = (_c = tokenConfig.destinationChainOverrides) === null || _c === void 0 ? void 0 : _c[destChain];
301
- var originChainOverride = (_d = tokenConfig.originChainOverrides) === null || _d === void 0 ? void 0 : _d[originChain];
302
- this_1.warnIfConfigConflicts(tokenSymbol, originChain, destChain, routeOverride, destinationChainOverride, originChainOverride);
251
+ for (const originChain of Array.from(originChains)) {
252
+ for (const destChain of Array.from(destChains)) {
253
+ const routeOverride = tokenConfig.routeOverrides?.[originChain]?.[destChain];
254
+ const destinationChainOverride = tokenConfig.destinationChainOverrides?.[destChain];
255
+ const originChainOverride = tokenConfig.originChainOverrides?.[originChain];
256
+ this.warnIfConfigConflicts(tokenSymbol, originChain, destChain, routeOverride, destinationChainOverride, originChainOverride);
303
257
  }
304
258
  }
305
- };
306
- var this_1 = this;
307
- for (var _i = 0, _e = Object.entries(this.capitalCostsConfig); _i < _e.length; _i++) {
308
- var _f = _e[_i], tokenSymbol = _f[0], tokenConfig = _f[1];
309
- _loop_1(tokenSymbol, tokenConfig);
310
259
  }
311
- };
260
+ }
312
261
  /**
313
262
  * Log a warning if multiple configuration types apply to the same route
314
263
  * @private
315
264
  */
316
- RelayFeeCalculator.prototype.warnIfConfigConflicts = function (tokenSymbol, originChain, destChain, routeOverride, destinationChainOverride, originChainOverride) {
317
- var overrideCount = [routeOverride, destinationChainOverride, originChainOverride].filter(Boolean).length;
265
+ warnIfConfigConflicts(tokenSymbol, originChain, destChain, routeOverride, destinationChainOverride, originChainOverride) {
266
+ const overrideCount = [routeOverride, destinationChainOverride, originChainOverride].filter(Boolean).length;
318
267
  if (overrideCount > 1) {
319
- var configUsed = routeOverride
268
+ const configUsed = routeOverride
320
269
  ? "route override"
321
270
  : destinationChainOverride
322
271
  ? "destination chain override"
@@ -325,14 +274,14 @@ var RelayFeeCalculator = /** @class */ (function () {
325
274
  : "default override";
326
275
  this.logger.warn({
327
276
  at: "RelayFeeCalculator",
328
- message: "Multiple configurations found for token ".concat(tokenSymbol, " from chain ").concat(originChain, " to chain ").concat(destChain),
329
- configUsed: configUsed,
330
- routeOverride: routeOverride,
331
- destinationChainOverride: destinationChainOverride,
332
- originChainOverride: originChainOverride,
277
+ message: `Multiple configurations found for token ${tokenSymbol} from chain ${originChain} to chain ${destChain}`,
278
+ configUsed,
279
+ routeOverride,
280
+ destinationChainOverride,
281
+ originChainOverride,
333
282
  });
334
283
  }
335
- };
284
+ }
336
285
  /**
337
286
  * Retrieves the relayer fee details for a deposit.
338
287
  * @param deposit A valid deposit object to reason about
@@ -348,147 +297,110 @@ var RelayFeeCalculator = /** @class */ (function () {
348
297
  * @param gasUnits Optional gas units to use for the simulation
349
298
  * @returns A resulting `RelayerFeeDetails` object
350
299
  */
351
- RelayFeeCalculator.prototype.relayerFeeDetails = function (deposit_1, outputAmount_1) {
352
- return __awaiter(this, arguments, void 0, function (deposit, outputAmount, simulateZeroFill, relayerAddress, _tokenPrice, gasPrice, gasUnits, tokenGasCost) {
353
- var _a, inputTokenInfo, outputTokenInfo, tokenPrice, _b, _tokenGasCost, _nativeGasCost, _c, gasFeePercent, outToInDecimals, gasFeeTotal, capitalFeePercent, capitalFeeTotal, auxNativeFeePercent, auxNativeFeeTotal, auxNativeDiscountPercent, relayFeePercent, relayFeeTotal, maxGasFeePercent, minDeposit, isAmountTooLow;
354
- var _this = this;
355
- if (simulateZeroFill === void 0) { simulateZeroFill = false; }
356
- if (relayerAddress === void 0) { relayerAddress = getDefaultRelayer(deposit.destinationChainId); }
357
- return __generator(this, function (_d) {
358
- switch (_d.label) {
359
- case 0:
360
- // If the amount to relay is not provided, then we
361
- // should use the full deposit amount.
362
- outputAmount !== null && outputAmount !== void 0 ? outputAmount : (outputAmount = deposit.outputAmount);
363
- _a = this.resolveInOutTokenInfos(deposit), inputTokenInfo = _a.inputTokenInfo, outputTokenInfo = _a.outputTokenInfo;
364
- return [4 /*yield*/, this.resolveTokenPrice(outputTokenInfo, _tokenPrice, deposit)];
365
- case 1:
366
- tokenPrice = _d.sent();
367
- if (!(tokenGasCost && gasUnits)) return [3 /*break*/, 2];
368
- _c = { tokenGasCost: tokenGasCost, nativeGasCost: BigNumber.from(gasUnits) };
369
- return [3 /*break*/, 4];
370
- case 2: return [4 /*yield*/, this.queries
371
- .getGasCosts(deposit, relayerAddress, { gasPrice: gasPrice, gasUnits: gasUnits })
372
- .then(function (_a) {
373
- var tokenGasCost = _a.tokenGasCost, nativeGasCost = _a.nativeGasCost;
374
- return ({ tokenGasCost: tokenGasCost, nativeGasCost: nativeGasCost });
375
- })
376
- .catch(function (error) {
377
- _this.logger.error({
378
- at: "sdk/relayerFeeDetails",
379
- message: "Error while fetching gas costs",
380
- error: error,
381
- simulateZeroFill: simulateZeroFill,
382
- deposit: deposit,
383
- });
384
- throw error;
385
- })];
386
- case 3:
387
- _c = _d.sent();
388
- _d.label = 4;
389
- case 4:
390
- _b = _c, _tokenGasCost = _b.tokenGasCost, _nativeGasCost = _b.nativeGasCost;
391
- return [4 /*yield*/, this.gasFeePercent(deposit, outputAmount, outputTokenInfo, simulateZeroFill, relayerAddress, tokenPrice, gasPrice, _nativeGasCost, _tokenGasCost)];
392
- case 5:
393
- gasFeePercent = _d.sent();
394
- outToInDecimals = ConvertDecimals(outputTokenInfo.decimals, inputTokenInfo.decimals);
395
- gasFeeTotal = gasFeePercent.mul(outToInDecimals(outputAmount.toString())).div(fixedPointAdjustment);
396
- capitalFeePercent = this.capitalFeePercent(outputAmount, inputTokenInfo.symbol, deposit.originChainId.toString(), deposit.destinationChainId.toString());
397
- capitalFeeTotal = capitalFeePercent.mul(outToInDecimals(outputAmount.toString())).div(fixedPointAdjustment);
398
- return [4 /*yield*/, this.auxNativeFeePercent(deposit, outputAmount, outputTokenInfo, tokenPrice)];
399
- case 6:
400
- auxNativeFeePercent = _d.sent();
401
- auxNativeFeeTotal = auxNativeFeePercent
402
- .mul(outToInDecimals(outputAmount.toString()))
403
- .div(fixedPointAdjustment);
404
- auxNativeDiscountPercent = this.gasDiscountPercent;
405
- relayFeePercent = gasFeePercent.add(capitalFeePercent).add(auxNativeFeePercent);
406
- relayFeeTotal = gasFeeTotal.add(capitalFeeTotal).add(auxNativeFeeTotal);
407
- maxGasFeePercent = max(toBNWei(this.feeLimitPercent / 100)
408
- .sub(capitalFeePercent)
409
- .sub(auxNativeFeePercent), toBN(0));
410
- if (maxGasFeePercent.eq(toBN(0))) {
411
- minDeposit = MAX_BIG_INT;
412
- isAmountTooLow = true;
413
- }
414
- else {
415
- minDeposit = gasFeeTotal.mul(fixedPointAdjustment).div(maxGasFeePercent);
416
- isAmountTooLow = toBN(outputAmount).lt(minDeposit);
417
- }
418
- return [2 /*return*/, {
419
- amountToRelay: outputAmount.toString(),
420
- tokenSymbol: inputTokenInfo.symbol,
421
- gasFeePercent: gasFeePercent.toString(),
422
- gasFeeTotal: gasFeeTotal.toString(),
423
- gasUnits: _nativeGasCost.toString(),
424
- gasDiscountPercent: this.gasDiscountPercent,
425
- auxNativeFeePercent: auxNativeFeePercent.toString(),
426
- auxNativeFeeTotal: auxNativeFeeTotal.toString(),
427
- auxNativeDiscountPercent: auxNativeDiscountPercent,
428
- capitalFeePercent: capitalFeePercent.toString(),
429
- capitalFeeTotal: capitalFeeTotal.toString(),
430
- capitalDiscountPercent: this.capitalDiscountPercent,
431
- relayFeePercent: relayFeePercent.toString(),
432
- relayFeeTotal: relayFeeTotal.toString(),
433
- feeLimitPercent: this.feeLimitPercent,
434
- maxGasFeePercent: maxGasFeePercent.toString(),
435
- minDeposit: minDeposit.toString(),
436
- isAmountTooLow: isAmountTooLow,
437
- }];
438
- }
300
+ async relayerFeeDetails(deposit, outputAmount, simulateZeroFill = false, relayerAddress = getDefaultRelayer(deposit.destinationChainId), _tokenPrice, gasPrice, gasUnits, tokenGasCost) {
301
+ // If the amount to relay is not provided, then we
302
+ // should use the full deposit amount.
303
+ outputAmount ??= deposit.outputAmount;
304
+ const { inputTokenInfo, outputTokenInfo } = this.resolveInOutTokenInfos(deposit);
305
+ const tokenPrice = await this.resolveTokenPrice(outputTokenInfo, _tokenPrice, deposit);
306
+ const { tokenGasCost: _tokenGasCost, nativeGasCost: _nativeGasCost } = tokenGasCost && gasUnits
307
+ ? { tokenGasCost, nativeGasCost: BigNumber.from(gasUnits) }
308
+ : await this.queries
309
+ .getGasCosts(deposit, relayerAddress, { gasPrice, gasUnits })
310
+ .then(({ tokenGasCost, nativeGasCost }) => ({ tokenGasCost, nativeGasCost }))
311
+ .catch((error) => {
312
+ this.logger.error({
313
+ at: "sdk/relayerFeeDetails",
314
+ message: "Error while fetching gas costs",
315
+ error,
316
+ simulateZeroFill,
317
+ deposit,
318
+ });
319
+ throw error;
439
320
  });
440
- });
441
- };
442
- RelayFeeCalculator.prototype.resolveInOutTokenInfos = function (deposit, tokenMapping) {
443
- if (tokenMapping === void 0) { tokenMapping = TOKEN_SYMBOLS_MAP; }
444
- var inputToken = deposit.inputToken, destinationChainId = deposit.destinationChainId, originChainId = deposit.originChainId;
321
+ const gasFeePercent = await this.gasFeePercent(deposit, outputAmount, outputTokenInfo, simulateZeroFill, relayerAddress, tokenPrice, gasPrice, _nativeGasCost, _tokenGasCost);
322
+ const outToInDecimals = ConvertDecimals(outputTokenInfo.decimals, inputTokenInfo.decimals);
323
+ const gasFeeTotal = gasFeePercent.mul(outToInDecimals(outputAmount.toString())).div(fixedPointAdjustment);
324
+ const capitalFeePercent = this.capitalFeePercent(outputAmount, inputTokenInfo.symbol, deposit.originChainId.toString(), deposit.destinationChainId.toString());
325
+ const capitalFeeTotal = capitalFeePercent.mul(outToInDecimals(outputAmount.toString())).div(fixedPointAdjustment);
326
+ const auxNativeFeePercent = await this.auxNativeFeePercent(deposit, outputAmount, outputTokenInfo, tokenPrice);
327
+ const auxNativeFeeTotal = auxNativeFeePercent
328
+ .mul(outToInDecimals(outputAmount.toString()))
329
+ .div(fixedPointAdjustment);
330
+ const auxNativeDiscountPercent = this.gasDiscountPercent;
331
+ const relayFeePercent = gasFeePercent.add(capitalFeePercent).add(auxNativeFeePercent);
332
+ const relayFeeTotal = gasFeeTotal.add(capitalFeeTotal).add(auxNativeFeeTotal);
333
+ // We don't want the relayer to incur an excessive gas fee charge as a % of the deposited total. The maximum
334
+ // gas fee % charged is equal to the remaining fee % leftover after subtracting the capital fee % and aux fee %
335
+ // from the fee limit %. We then compute the minimum deposited amount required to not exceed the maximum
336
+ // gas fee %: maxGasFeePercent = gasFeeTotal / minDeposit. Refactor this to figure out the minDeposit:
337
+ // minDeposit = gasFeeTotal / maxGasFeePercent, and subsequently determine
338
+ // isAmountTooLow = amountToRelay < minDeposit.
339
+ const maxGasFeePercent = max(toBNWei(this.feeLimitPercent / 100)
340
+ .sub(capitalFeePercent)
341
+ .sub(auxNativeFeePercent), toBN(0));
342
+ // If maxGasFee % is 0, then the min deposit should be infinite because there is no deposit amount that would
343
+ // incur a non zero gas fee % charge. In this case, isAmountTooLow should always be true.
344
+ let minDeposit, isAmountTooLow;
345
+ if (maxGasFeePercent.eq(toBN(0))) {
346
+ minDeposit = MAX_BIG_INT;
347
+ isAmountTooLow = true;
348
+ }
349
+ else {
350
+ minDeposit = gasFeeTotal.mul(fixedPointAdjustment).div(maxGasFeePercent);
351
+ isAmountTooLow = toBN(outputAmount).lt(minDeposit);
352
+ }
353
+ return {
354
+ amountToRelay: outputAmount.toString(),
355
+ tokenSymbol: inputTokenInfo.symbol,
356
+ gasFeePercent: gasFeePercent.toString(),
357
+ gasFeeTotal: gasFeeTotal.toString(),
358
+ gasUnits: _nativeGasCost.toString(),
359
+ gasDiscountPercent: this.gasDiscountPercent,
360
+ auxNativeFeePercent: auxNativeFeePercent.toString(),
361
+ auxNativeFeeTotal: auxNativeFeeTotal.toString(),
362
+ auxNativeDiscountPercent,
363
+ capitalFeePercent: capitalFeePercent.toString(),
364
+ capitalFeeTotal: capitalFeeTotal.toString(),
365
+ capitalDiscountPercent: this.capitalDiscountPercent,
366
+ relayFeePercent: relayFeePercent.toString(),
367
+ relayFeeTotal: relayFeeTotal.toString(),
368
+ feeLimitPercent: this.feeLimitPercent,
369
+ maxGasFeePercent: maxGasFeePercent.toString(),
370
+ minDeposit: minDeposit.toString(),
371
+ isAmountTooLow,
372
+ };
373
+ }
374
+ resolveInOutTokenInfos(deposit, tokenMapping = TOKEN_SYMBOLS_MAP) {
375
+ const { inputToken, destinationChainId, originChainId } = deposit;
445
376
  // It's fine if we resolve a destination token which is not the "canonical" L1 token (e.g. USDB for DAI or USDC.e for USDC), since `getTokenInfo` will re-map
446
377
  // the output token to the canonical version. What matters here is that we find an entry in the token map which has defined addresses for BOTH the origin
447
378
  // and destination chain. This prevents the call to `getTokenInfo` to mistakenly return token info for a token which has a defined address on origin and an
448
379
  // undefined address on destination.
449
- var destinationChainTokenDetails = Object.values(tokenMapping).find(function (details) {
450
- return compareAddressesSimple(details.addresses[originChainId], inputToken.toNative()) &&
451
- isDefined(details.addresses[destinationChainId]);
452
- });
453
- var outputToken = deposit.outputToken.isZeroAddress()
380
+ const destinationChainTokenDetails = Object.values(tokenMapping).find((details) => compareAddressesSimple(details.addresses[originChainId], inputToken.toNative()) &&
381
+ isDefined(details.addresses[destinationChainId]));
382
+ const outputToken = deposit.outputToken.isZeroAddress()
454
383
  ? toAddressType(destinationChainTokenDetails.addresses[destinationChainId], destinationChainId)
455
384
  : deposit.outputToken;
456
- var outputTokenInfo = getTokenInfo(outputToken, destinationChainId, tokenMapping);
457
- var inputTokenInfo = getTokenInfo(inputToken, originChainId, tokenMapping);
385
+ const outputTokenInfo = getTokenInfo(outputToken, destinationChainId, tokenMapping);
386
+ const inputTokenInfo = getTokenInfo(inputToken, originChainId, tokenMapping);
458
387
  if (!isDefined(outputTokenInfo) || !isDefined(inputTokenInfo)) {
459
- throw new Error("Could not find token information for ".concat(inputToken, " or ").concat(outputToken));
388
+ throw new Error(`Could not find token information for ${inputToken} or ${outputToken}`);
460
389
  }
461
- return { inputTokenInfo: inputTokenInfo, outputTokenInfo: outputTokenInfo };
462
- };
463
- RelayFeeCalculator.prototype.resolveTokenPrice = function (outputTokenInfo, _tokenPrice, deposit) {
464
- return __awaiter(this, void 0, void 0, function () {
465
- var _a;
466
- var _this = this;
467
- return __generator(this, function (_b) {
468
- switch (_b.label) {
469
- case 0:
470
- if (!(_tokenPrice !== null && _tokenPrice !== void 0)) return [3 /*break*/, 1];
471
- _a = _tokenPrice;
472
- return [3 /*break*/, 3];
473
- case 1: return [4 /*yield*/, this.queries.getTokenPrice(outputTokenInfo.symbol).catch(function (error) {
474
- _this.logger.error({
475
- at: "sdk/resolveTokenPrice",
476
- message: "Error while fetching token price",
477
- error: error,
478
- destinationChainId: deposit.destinationChainId,
479
- inputToken: deposit.inputToken,
480
- });
481
- throw error;
482
- })];
483
- case 2:
484
- _a = (_b.sent());
485
- _b.label = 3;
486
- case 3: return [2 /*return*/, (_a)];
487
- }
488
- });
489
- });
490
- };
491
- return RelayFeeCalculator;
492
- }());
493
- export { RelayFeeCalculator };
390
+ return { inputTokenInfo, outputTokenInfo };
391
+ }
392
+ async resolveTokenPrice(outputTokenInfo, _tokenPrice, deposit) {
393
+ return (_tokenPrice ??
394
+ (await this.queries.getTokenPrice(outputTokenInfo.symbol).catch((error) => {
395
+ this.logger.error({
396
+ at: "sdk/resolveTokenPrice",
397
+ message: "Error while fetching token price",
398
+ error,
399
+ destinationChainId: deposit.destinationChainId,
400
+ inputToken: deposit.inputToken,
401
+ });
402
+ throw error;
403
+ })));
404
+ }
405
+ }
494
406
  //# sourceMappingURL=relayFeeCalculator.js.map