@berachain/berajs 0.1.0 → 0.1.2

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 (502) hide show
  1. package/dist/{dex-jD95agMv.d.cts → HoneyConfigProvider-6PXZJMSU.d.cts} +172 -172
  2. package/dist/{dex-CxzGqVLe.d.ts → HoneyConfigProvider-CwDFrt02.d.ts} +172 -172
  3. package/dist/abi/index.cjs +2 -1
  4. package/dist/abi/index.cjs.map +1 -0
  5. package/dist/abi/index.mjs +2 -1
  6. package/dist/abi/index.mjs.map +1 -0
  7. package/dist/actions/index.cjs +2 -1
  8. package/dist/actions/index.cjs.map +1 -0
  9. package/dist/actions/index.d.cts +8 -8
  10. package/dist/actions/index.d.ts +8 -8
  11. package/dist/actions/index.mjs +2 -1
  12. package/dist/actions/index.mjs.map +1 -0
  13. package/dist/chunk-22MQVFHP.cjs +2 -0
  14. package/dist/chunk-22MQVFHP.cjs.map +1 -0
  15. package/dist/chunk-3TKSVFZ3.mjs +2 -0
  16. package/dist/chunk-3TKSVFZ3.mjs.map +1 -0
  17. package/dist/chunk-6VF3RF53.cjs +3 -0
  18. package/dist/chunk-6VF3RF53.cjs.map +1 -0
  19. package/dist/{chunk-2422CKAT.mjs → chunk-6W22TFYA.mjs} +2 -1
  20. package/dist/chunk-6W22TFYA.mjs.map +1 -0
  21. package/dist/chunk-AMRJ4B36.mjs +2 -0
  22. package/dist/chunk-AMRJ4B36.mjs.map +1 -0
  23. package/dist/{chunk-4IBBLGNS.mjs → chunk-DS2ZDVKU.mjs} +1 -0
  24. package/dist/chunk-DS2ZDVKU.mjs.map +1 -0
  25. package/dist/{chunk-B47PDJZM.cjs → chunk-ED43NYSE.cjs} +2 -1
  26. package/dist/chunk-ED43NYSE.cjs.map +1 -0
  27. package/dist/chunk-EU4WFADK.cjs +2 -0
  28. package/dist/chunk-EU4WFADK.cjs.map +1 -0
  29. package/dist/{chunk-ASRHUDAH.mjs → chunk-HCTFDGXL.mjs} +1 -0
  30. package/dist/chunk-HCTFDGXL.mjs.map +1 -0
  31. package/dist/{chunk-K4NZIO2Z.mjs → chunk-IOSYBHKU.mjs} +1 -0
  32. package/dist/chunk-IOSYBHKU.mjs.map +1 -0
  33. package/dist/{chunk-4GY57XKG.cjs → chunk-JMKLDDKY.cjs} +1 -0
  34. package/dist/chunk-JMKLDDKY.cjs.map +1 -0
  35. package/dist/chunk-KMKUXP2S.mjs +3 -0
  36. package/dist/chunk-KMKUXP2S.mjs.map +1 -0
  37. package/dist/chunk-OJXJ6CZ4.mjs +4 -0
  38. package/dist/chunk-OJXJ6CZ4.mjs.map +1 -0
  39. package/dist/{chunk-VA37UBED.mjs → chunk-PHIOKO3A.mjs} +2 -1
  40. package/dist/chunk-PHIOKO3A.mjs.map +1 -0
  41. package/dist/{chunk-IKAE7CQU.cjs → chunk-QCK474XD.cjs} +1 -0
  42. package/dist/chunk-QCK474XD.cjs.map +1 -0
  43. package/dist/chunk-REDXXUK7.cjs +2 -0
  44. package/dist/chunk-REDXXUK7.cjs.map +1 -0
  45. package/dist/{chunk-K2FCHQHA.cjs → chunk-S74ZMG2G.cjs} +2 -1
  46. package/dist/chunk-S74ZMG2G.cjs.map +1 -0
  47. package/dist/{chunk-NOV7UCGA.cjs → chunk-TOAXF4YW.cjs} +1 -0
  48. package/dist/chunk-TOAXF4YW.cjs.map +1 -0
  49. package/dist/chunk-UZ5CB33M.cjs +2 -0
  50. package/dist/chunk-UZ5CB33M.cjs.map +1 -0
  51. package/dist/chunk-VYWYJR63.mjs +2 -0
  52. package/dist/chunk-VYWYJR63.mjs.map +1 -0
  53. package/dist/{chunk-WZLPSG5R.cjs → chunk-XFPTQMAK.cjs} +3 -2
  54. package/dist/chunk-XFPTQMAK.cjs.map +1 -0
  55. package/dist/chunk-YK4NINF5.mjs +2 -0
  56. package/dist/chunk-YK4NINF5.mjs.map +1 -0
  57. package/dist/contexts/index.cjs +2 -1
  58. package/dist/contexts/index.cjs.map +1 -0
  59. package/dist/contexts/index.d.cts +7 -5
  60. package/dist/contexts/index.d.ts +7 -5
  61. package/dist/contexts/index.mjs +2 -1
  62. package/dist/contexts/index.mjs.map +1 -0
  63. package/dist/enum/index.cjs +2 -1
  64. package/dist/enum/index.cjs.map +1 -0
  65. package/dist/enum/index.d.cts +1 -1
  66. package/dist/enum/index.d.ts +1 -1
  67. package/dist/enum/index.mjs +2 -1
  68. package/dist/enum/index.mjs.map +1 -0
  69. package/dist/errors/index.cjs +2 -1
  70. package/dist/errors/index.cjs.map +1 -0
  71. package/dist/errors/index.d.cts +1 -1
  72. package/dist/errors/index.d.ts +1 -1
  73. package/dist/errors/index.mjs +2 -1
  74. package/dist/errors/index.mjs.map +1 -0
  75. package/dist/{getValidatorQueuedOperatorAddress-9jSXlAse.d.ts → getValidatorQueuedOperatorAddress-9xY2RUGe.d.cts} +2 -2
  76. package/dist/{getValidatorQueuedOperatorAddress-BCYlvah3.d.cts → getValidatorQueuedOperatorAddress-Ne2zoiiV.d.ts} +2 -2
  77. package/dist/hooks/index.cjs +3 -2
  78. package/dist/hooks/index.cjs.map +1 -0
  79. package/dist/hooks/index.d.cts +9 -9
  80. package/dist/hooks/index.d.ts +9 -9
  81. package/dist/hooks/index.mjs +3 -2
  82. package/dist/hooks/index.mjs.map +1 -0
  83. package/dist/{staking-Bw46L2PT.d.ts → staking-F9Nx9TKD.d.ts} +1 -1
  84. package/dist/{staking-BxYDlMtj.d.cts → staking-f4BpYH7l.d.cts} +1 -1
  85. package/dist/{txnEnum-Diichv9Z.d.cts → txnEnum-BQKDfaeH.d.cts} +1 -0
  86. package/dist/{txnEnum-Diichv9Z.d.ts → txnEnum-BQKDfaeH.d.ts} +1 -0
  87. package/dist/types/index.cjs +2 -1
  88. package/dist/types/index.cjs.map +1 -0
  89. package/dist/types/index.d.cts +5 -5
  90. package/dist/types/index.d.ts +5 -5
  91. package/dist/types/index.mjs +2 -1
  92. package/dist/types/index.mjs.map +1 -0
  93. package/dist/{useHoneySwapState-YfMSTWY3.d.cts → useHoneySwapState-C-9BV4VB.d.cts} +1 -1
  94. package/dist/{useHoneySwapState-CD8v6y1k.d.ts → useHoneySwapState-CUY5Sm1b.d.ts} +1 -1
  95. package/dist/utils/index.cjs +2 -1
  96. package/dist/utils/index.cjs.map +1 -0
  97. package/dist/utils/index.d.cts +5 -5
  98. package/dist/utils/index.d.ts +5 -5
  99. package/dist/utils/index.mjs +2 -1
  100. package/dist/utils/index.mjs.map +1 -0
  101. package/package.json +4 -3
  102. package/src/abi/bend/bundler.ts +60 -0
  103. package/src/abi/bend/generalAdapter.ts +362 -0
  104. package/src/abi/bend/metaMorpho.ts +2584 -0
  105. package/src/abi/bend/morpho.ts +444 -0
  106. package/src/abi/bend/morphoVault.ts +1456 -0
  107. package/src/abi/bend/publicAllocator.ts +355 -0
  108. package/src/abi/bex/aggregatorsRouter.ts +492 -0
  109. package/src/abi/bex/balancerComposableStablePoolFactoryV6.ts +283 -0
  110. package/src/abi/bex/balancerPoolCreationHelper.ts +267 -0
  111. package/src/abi/bex/balancerVault.ts +757 -0
  112. package/src/abi/enso/ensoRouterAbi.ts +140 -0
  113. package/src/abi/governance/governance.ts +1016 -0
  114. package/src/abi/governance/governanceTimelock.ts +589 -0
  115. package/src/abi/honey/collateralVault.ts +1144 -0
  116. package/src/abi/honey/honey.ts +563 -0
  117. package/src/abi/honey/honeyFactory.ts +1270 -0
  118. package/src/abi/honey/honeyFactoryReader.ts +894 -0
  119. package/src/abi/honey/honeyRootOracle.ts +492 -0
  120. package/src/abi/honey/pythPriceOracle.ts +619 -0
  121. package/src/abi/honey/pythWrapper.ts +446 -0
  122. package/src/abi/index.ts +35 -0
  123. package/src/abi/pol/beaconDeposit.ts +595 -0
  124. package/src/abi/pol/beraChef.ts +1019 -0
  125. package/src/abi/pol/bgt.ts +1008 -0
  126. package/src/abi/pol/bgtIncentiveDistributor.ts +640 -0
  127. package/src/abi/pol/bgtStaker.ts +1034 -0
  128. package/src/abi/pol/rewardAllocationFactory.ts +408 -0
  129. package/src/abi/pol/rewardVault.ts +1928 -0
  130. package/src/abi/pol/rewardVaultFactory.ts +586 -0
  131. package/src/abi/pol/rewardVaultHelper.ts +882 -0
  132. package/src/abi/pol/stakeBeraVault.ts +1116 -0
  133. package/src/abi/pol/stakeBeraVaultWithdrawalRequest.ts +618 -0
  134. package/src/abi/pol/wbera.ts +366 -0
  135. package/src/abi/pyth/pyth.ts +566 -0
  136. package/src/abi/pyth/pythErrors.ts +72 -0
  137. package/src/abi/utils/EIP7702StatelessDelegator.ts +523 -0
  138. package/src/abi/utils/bundler3errors.ts +6 -0
  139. package/src/abi/utils/commonAbiErrors.ts +9 -0
  140. package/src/abi/utils/erc20errors.ts +74 -0
  141. package/src/abi/utils/merkleDistributor.ts +838 -0
  142. package/src/abi/utils/multicall3.ts +242 -0
  143. package/src/abi/utils/openChainErrors.ts +139 -0
  144. package/src/abi/utils/upgradableBeacon.ts +86 -0
  145. package/src/actions/bend/getConvertToAssets.ts +23 -0
  146. package/src/actions/bend/getMaxDeposit.ts +21 -0
  147. package/src/actions/clients/BeraApolloClient.ts +125 -0
  148. package/src/actions/clients/getApolloClient.ts +109 -0
  149. package/src/actions/clients/getEnsoClient.ts +24 -0
  150. package/src/actions/dex/__tests__/aggregators.unit.test.ts +112 -0
  151. package/src/actions/dex/__tests__/allPools.integration.test.ts +13 -0
  152. package/src/actions/dex/__tests__/getOnChainPool.unit.test.ts +15 -0
  153. package/src/actions/dex/__tests__/haiku.integration.test.ts +40 -0
  154. package/src/actions/dex/aggregators/base.ts +174 -0
  155. package/src/actions/dex/aggregators/bex.ts +255 -0
  156. package/src/actions/dex/aggregators/bgt.ts +50 -0
  157. package/src/actions/dex/aggregators/enso.ts +113 -0
  158. package/src/actions/dex/aggregators/fly.ts +136 -0
  159. package/src/actions/dex/aggregators/haiku.ts +171 -0
  160. package/src/actions/dex/aggregators/honey.ts +245 -0
  161. package/src/actions/dex/aggregators/kyberswap.ts +142 -0
  162. package/src/actions/dex/aggregators/oogabooga.ts +110 -0
  163. package/src/actions/dex/aggregators/openOcean.ts +142 -0
  164. package/src/actions/dex/aggregators/wbera.ts +72 -0
  165. package/src/actions/dex/b-sdk.ts +48 -0
  166. package/src/actions/dex/getAllPools.ts +60 -0
  167. package/src/actions/dex/getApiPool.ts +47 -0
  168. package/src/actions/dex/getGlobalLiquidityAndSwapVolume.ts +29 -0
  169. package/src/actions/dex/getIsTokenExploited.ts +63 -0
  170. package/src/actions/dex/getOnChainPool.ts +216 -0
  171. package/src/actions/dex/getPoolEvents.ts +35 -0
  172. package/src/actions/dex/getPoolHistoricalData.ts +51 -0
  173. package/src/actions/dex/getPoolPausedState.ts +40 -0
  174. package/src/actions/dex/getPoolWithState.ts +24 -0
  175. package/src/actions/dex/getSubgraphPool.ts +30 -0
  176. package/src/actions/dex/getTransactionCount.ts +29 -0
  177. package/src/actions/dex/getVaultPausedState.ts +21 -0
  178. package/src/actions/enso/bend.ts +143 -0
  179. package/src/actions/enso/getEnsoUserToken.debug.test.ts +57 -0
  180. package/src/actions/enso/getEnsoUserToken.ts +133 -0
  181. package/src/actions/enso/util.ts +60 -0
  182. package/src/actions/enso/zap.ts +78 -0
  183. package/src/actions/governance/__tests__/checkProposalField.unit.test.ts +108 -0
  184. package/src/actions/governance/__tests__/getDecodedFunctionData.integration.test.ts +127 -0
  185. package/src/actions/governance/__tests__/getQuorum.integration.test.ts +39 -0
  186. package/src/actions/governance/checkProposalField.ts +211 -0
  187. package/src/actions/governance/computeActualStatus.ts +154 -0
  188. package/src/actions/governance/constants.ts +7 -0
  189. package/src/actions/governance/getAllProposals.ts +75 -0
  190. package/src/actions/governance/getBodyErrors.ts +28 -0
  191. package/src/actions/governance/getDecodedFunctionData.ts +170 -0
  192. package/src/actions/governance/getProposalDetails.ts +40 -0
  193. package/src/actions/governance/getProposalFromTx.ts +101 -0
  194. package/src/actions/governance/getProposalParams.ts +247 -0
  195. package/src/actions/governance/getProposalVotes.ts +20 -0
  196. package/src/actions/governance/getQuorum.ts +38 -0
  197. package/src/actions/governance/parseProposalBody.ts +73 -0
  198. package/src/actions/honey/getChartData.ts +27 -0
  199. package/src/actions/honey/getCollateralWeights.ts +50 -0
  200. package/src/actions/honey/getGlobalCapLimit.ts +148 -0
  201. package/src/actions/honey/getHoneyCollaterals.ts +139 -0
  202. package/src/actions/honey/getHoneyFees.ts +100 -0
  203. package/src/actions/honey/getHoneyGlobalData.ts +21 -0
  204. package/src/actions/honey/getHoneyPausedState.ts +25 -0
  205. package/src/actions/honey/getHoneyPreview.ts +152 -0
  206. package/src/actions/honey/getHoneyPythPriceOracle.ts +21 -0
  207. package/src/actions/honey/getHoneyRootPriceOracle.ts +23 -0
  208. package/src/actions/honey/getHoneyVaultsBalance.ts +86 -0
  209. package/src/actions/honey/getPythLatestPrices.ts +54 -0
  210. package/src/actions/honey/getRelativeCapLimit.ts +83 -0
  211. package/src/actions/honey/getSharesWithoutFees.ts +65 -0
  212. package/src/actions/honey/getSwapPayload.ts +128 -0
  213. package/src/actions/honey/isBadCollateralAsset.ts +77 -0
  214. package/src/actions/honey/isBasketModeEnabled.ts +47 -0
  215. package/src/actions/honey/tests/pyth.integration.test.ts +63 -0
  216. package/src/actions/index.ts +105 -0
  217. package/src/actions/misc/getBlockTimestamp.ts +41 -0
  218. package/src/actions/pol/__tests__/getAllValidators.integration.test.ts +55 -0
  219. package/src/actions/pol/__tests__/getValidator.integration.test.ts +32 -0
  220. package/src/actions/pol/__tests__/rewardVaults.integration.test.ts +34 -0
  221. package/src/actions/pol/getBGTGlobalInfo.ts +43 -0
  222. package/src/actions/pol/getBgtAprSimulation.ts +207 -0
  223. package/src/actions/pol/getBgtAprSimultaion.unit.test.ts +297 -0
  224. package/src/actions/pol/getBgtTokenTotalBoosts.ts +30 -0
  225. package/src/actions/pol/getBgtTokenTotalSupply.ts +29 -0
  226. package/src/actions/pol/getBlockTime.ts +43 -0
  227. package/src/actions/pol/getGlobalCuttingBoard.ts +25 -0
  228. package/src/actions/pol/getGlobalData.ts +74 -0
  229. package/src/actions/pol/getIncentiveFeeClaimStats.ts +43 -0
  230. package/src/actions/pol/getMarkets.ts +36 -0
  231. package/src/actions/pol/getRewardProofsByValidator.ts +49 -0
  232. package/src/actions/pol/getRewardTokenToBeraRate.ts +30 -0
  233. package/src/actions/pol/getRewardVault.ts +54 -0
  234. package/src/actions/pol/getRewardVaultBeaconImplementation.integration.test.ts +18 -0
  235. package/src/actions/pol/getRewardVaultBeaconImplementation.ts +35 -0
  236. package/src/actions/pol/getRewardVaultDurationConstants.integration.test.ts +24 -0
  237. package/src/actions/pol/getRewardVaultDurationConstants.ts +45 -0
  238. package/src/actions/pol/getRewardVaultFromToken.ts +30 -0
  239. package/src/actions/pol/getRewardVaultIncentives.ts +122 -0
  240. package/src/actions/pol/getRewardVaultRewards.ts +109 -0
  241. package/src/actions/pol/getRewardVaultStakingToken.ts +19 -0
  242. package/src/actions/pol/getRewardVaults.ts +106 -0
  243. package/src/actions/pol/getSWBeraVaultMetadata.ts +166 -0
  244. package/src/actions/pol/getSWBeraWithdrawal.ts +165 -0
  245. package/src/actions/pol/getStakeWithdrawalCooldown.ts +21 -0
  246. package/src/actions/pol/getStakedBeraAPR.ts +56 -0
  247. package/src/actions/pol/getStakedBeraSnapshots.ts +48 -0
  248. package/src/actions/pol/getStakingTokenInformation.ts +60 -0
  249. package/src/actions/pol/getUserClaimableIncentives.ts +40 -0
  250. package/src/actions/pol/getUserVaultInfo.ts +52 -0
  251. package/src/actions/pol/getUserVaults.ts +185 -0
  252. package/src/actions/pol/getUserVaultsBalance.ts +54 -0
  253. package/src/actions/pol/getUserVaultsReward.ts +32 -0
  254. package/src/actions/pol/getVaultHistory.ts +43 -0
  255. package/src/actions/pol/getVaultValidators.ts +31 -0
  256. package/src/actions/pol/getVaultsSupply.ts +28 -0
  257. package/src/actions/prices/__tests__/prices.integration.test.ts +29 -0
  258. package/src/actions/prices/getTokenCurrentPrices.ts +79 -0
  259. package/src/actions/pyth/getHoneyPythFeeds.ts +46 -0
  260. package/src/actions/pyth/getUpdateFee.ts +27 -0
  261. package/src/actions/tokens/getAllowances.ts +59 -0
  262. package/src/actions/tokens/getTokenInformation.ts +57 -0
  263. package/src/actions/tokens/getTokens.ts +19 -0
  264. package/src/actions/tokens/getWalletBalances.integration.test.ts +40 -0
  265. package/src/actions/tokens/getWalletBalances.ts +123 -0
  266. package/src/actions/transactions/beraWriteContract.integration.test.ts +251 -0
  267. package/src/actions/transactions/beraWriteContract.ts +722 -0
  268. package/src/actions/validators/getActiveBoostAndCommissionChangeDelay.integration.test.ts +40 -0
  269. package/src/actions/validators/getActiveBoostAndCommissionChangeDelay.ts +109 -0
  270. package/src/actions/validators/getAllValidators.ts +33 -0
  271. package/src/actions/validators/getApiEnrichedAllocation.ts +33 -0
  272. package/src/actions/validators/getApiValidator.ts +38 -0
  273. package/src/actions/validators/getBaselineRewardAllocation.ts +26 -0
  274. package/src/actions/validators/getDailyValidatorBlockStats.ts +37 -0
  275. package/src/actions/validators/getDefaultRewardAllocation.ts +39 -0
  276. package/src/actions/validators/getManagedValidatorByAccount.ts +32 -0
  277. package/src/actions/validators/getStakingPoolBatch.ts +20 -0
  278. package/src/actions/validators/getUserActiveValidators.ts +101 -0
  279. package/src/actions/validators/getUserBoosts.ts +28 -0
  280. package/src/actions/validators/getUserBoostsOnValidator.ts +70 -0
  281. package/src/actions/validators/getUserStakingPositions.ts +225 -0
  282. package/src/actions/validators/getValidatorAnalytics.ts +34 -0
  283. package/src/actions/validators/getValidatorCommission.ts +24 -0
  284. package/src/actions/validators/getValidatorEstimatedBgtPerYear.ts +25 -0
  285. package/src/actions/validators/getValidatorOperatorAddress.ts +27 -0
  286. package/src/actions/validators/getValidatorQueuedCommission.ts +30 -0
  287. package/src/actions/validators/getValidatorQueuedOperatorAddress.ts +32 -0
  288. package/src/actions/validators/getValidatorQueuedRewardAllocation.ts +31 -0
  289. package/src/actions/validators/getValidatorRewardAllocation.ts +158 -0
  290. package/src/actions/validators/getValidatorRewardAllocatorAddress.ts +38 -0
  291. package/src/actions/validators/utils/__tests__/validatorUtils.integration.test.ts +36 -0
  292. package/src/actions/validators/utils/getValidatorBoostApy.ts +59 -0
  293. package/src/contexts/BeraFlags/BeraFlags.tsx +69 -0
  294. package/src/contexts/BeraFlags/defaultFlags.ts +42 -0
  295. package/src/contexts/BexStatusProvider.tsx +125 -0
  296. package/src/contexts/HoneyConfigProvider.tsx +73 -0
  297. package/src/contexts/SwrFallback.tsx +34 -0
  298. package/src/contexts/TokensProvider.tsx +66 -0
  299. package/src/contexts/berajsProvider/context.tsx +49 -0
  300. package/src/contexts/berajsProvider/index.ts +2 -0
  301. package/src/contexts/berajsProvider/useBeraJs.ts +18 -0
  302. package/src/contexts/block-time-provider.tsx +34 -0
  303. package/src/contexts/index.ts +14 -0
  304. package/src/data/contracts.ts +398 -0
  305. package/src/enum/dex.ts +10 -0
  306. package/src/enum/index.ts +4 -0
  307. package/src/enum/polling.ts +8 -0
  308. package/src/enum/slippage.ts +19 -0
  309. package/src/enum/txnEnum.ts +101 -0
  310. package/src/errors/BeraError.ts +202 -0
  311. package/src/errors/InvalidArgumentError.ts +81 -0
  312. package/src/errors/NotFoundError.ts +34 -0
  313. package/src/errors/RequestError.ts +207 -0
  314. package/src/errors/TransactionFailedError.ts +93 -0
  315. package/src/errors/assert.ts +144 -0
  316. package/src/errors/assert.unit.test.ts +110 -0
  317. package/src/errors/errorMap.ts +1157 -0
  318. package/src/errors/getErrorMessage.ts +40 -0
  319. package/src/errors/getRevertReason.integration.test.ts +449 -0
  320. package/src/errors/getRevertReason.ts +179 -0
  321. package/src/errors/index.ts +8 -0
  322. package/src/errors/initBeraError.ts +46 -0
  323. package/src/errors/parseViemError.ts +239 -0
  324. package/src/hooks/bend/useGetConvertToAssets.ts +42 -0
  325. package/src/hooks/dex/useAggregatorsQuotes.ts +502 -0
  326. package/src/hooks/dex/useAggregatorsRouterFeeBps.ts +34 -0
  327. package/src/hooks/dex/useAllUserPools.ts +38 -0
  328. package/src/hooks/dex/useApiPool.ts +53 -0
  329. package/src/hooks/dex/useBexStatus.ts +1 -0
  330. package/src/hooks/dex/useCreatePool.ts +437 -0
  331. package/src/hooks/dex/useExploitedTokens.ts +57 -0
  332. package/src/hooks/dex/useGlobalLiquidityAndSwapVolume.ts +22 -0
  333. package/src/hooks/dex/useLiquidityMismatch.ts +195 -0
  334. package/src/hooks/dex/useLpPosition.ts +115 -0
  335. package/src/hooks/dex/useMultipleTokenApprovalsWithSlippage.ts +92 -0
  336. package/src/hooks/dex/useOnChainPoolData.ts +126 -0
  337. package/src/hooks/dex/usePollPoolCreationRelayerApproval.ts +54 -0
  338. package/src/hooks/dex/usePollVaultIsPaused.ts +30 -0
  339. package/src/hooks/dex/usePool.ts +59 -0
  340. package/src/hooks/dex/usePoolEvents.ts +22 -0
  341. package/src/hooks/dex/usePoolHistoricalData.ts +44 -0
  342. package/src/hooks/dex/usePools.ts +83 -0
  343. package/src/hooks/enso/useBendTransactionRequests.ts +247 -0
  344. package/src/hooks/enso/useEnsoZap.ts +166 -0
  345. package/src/hooks/enso/useZapTransactionRequests.ts +81 -0
  346. package/src/hooks/governance/useCreateProposal.ts +88 -0
  347. package/src/hooks/governance/useGetPastVotes.ts +63 -0
  348. package/src/hooks/governance/useHasVoted.ts +38 -0
  349. package/src/hooks/governance/useIsCanceller.ts +43 -0
  350. package/src/hooks/governance/usePollAllProposals.ts +232 -0
  351. package/src/hooks/governance/usePollProposal.ts +96 -0
  352. package/src/hooks/governance/usePollProposalThreshold.ts +41 -0
  353. package/src/hooks/governance/usePollProposalVotes.ts +64 -0
  354. package/src/hooks/governance/usePollUserDelegates.ts +70 -0
  355. package/src/hooks/governance/useProposalFromTx.ts +37 -0
  356. package/src/hooks/governance/useProposalSnapshot.ts +44 -0
  357. package/src/hooks/governance/useProposalState.ts +48 -0
  358. package/src/hooks/governance/useProposalTimelockState.ts +61 -0
  359. package/src/hooks/governance/useQuorum.ts +42 -0
  360. package/src/hooks/honey/useCappedGlobally.ts +92 -0
  361. package/src/hooks/honey/useCappedRelatively.ts +88 -0
  362. package/src/hooks/honey/useCollateralWeights.ts +48 -0
  363. package/src/hooks/honey/useHoneyAlerts.ts +314 -0
  364. package/src/hooks/honey/useHoneyBalances.ts +79 -0
  365. package/src/hooks/honey/useHoneyChartData.ts +17 -0
  366. package/src/hooks/honey/useHoneyGlobalData.ts +22 -0
  367. package/src/hooks/honey/useHoneySwapState.ts +202 -0
  368. package/src/hooks/honey/useHoneyVaultsBalance.ts +41 -0
  369. package/src/hooks/honey/useIsBadCollateralAsset.ts +73 -0
  370. package/src/hooks/honey/useIsBasketModeEnabled.ts +70 -0
  371. package/src/hooks/honey/usePythLatestPrices.ts +41 -0
  372. package/src/hooks/index.ts +124 -0
  373. package/src/hooks/perps/usePythUpdateFee.ts +43 -0
  374. package/src/hooks/pol/useBgtAprSimulation.ts +22 -0
  375. package/src/hooks/pol/useBgtUnstakedBalance.ts +50 -0
  376. package/src/hooks/pol/useClaimableFees.ts +38 -0
  377. package/src/hooks/pol/useEarnedStakedBeraVault.ts +59 -0
  378. package/src/hooks/pol/useHighestVaultsAPR.ts +57 -0
  379. package/src/hooks/pol/useOnChainRewardVault.ts +114 -0
  380. package/src/hooks/pol/usePollGlobalData.ts +31 -0
  381. package/src/hooks/pol/usePollMarkets.ts +32 -0
  382. package/src/hooks/pol/useQueuedBeraUnlock.ts +70 -0
  383. package/src/hooks/pol/useRewardTokenToBeraRate.ts +45 -0
  384. package/src/hooks/pol/useRewardVault.ts +51 -0
  385. package/src/hooks/pol/useRewardVaultBalanceFromStakingToken.ts +82 -0
  386. package/src/hooks/pol/useRewardVaultFromToken.ts +58 -0
  387. package/src/hooks/pol/useRewardVaultIncentives.ts +37 -0
  388. package/src/hooks/pol/useRewardVaultRewards.ts +37 -0
  389. package/src/hooks/pol/useRewardVaults.ts +45 -0
  390. package/src/hooks/pol/useStakedBeraSnapshots.ts +27 -0
  391. package/src/hooks/pol/useUserVaultInfo.ts +46 -0
  392. package/src/hooks/pol/useUserVaults.ts +40 -0
  393. package/src/hooks/pol/useVaultAddress.ts +31 -0
  394. package/src/hooks/pol/useVaultHistory.ts +29 -0
  395. package/src/hooks/pol/useVaultValidators.ts +33 -0
  396. package/src/hooks/tokens/useBeraCurrentPrice.ts +12 -0
  397. package/src/hooks/tokens/useMultipleTokenInformation.ts +62 -0
  398. package/src/hooks/tokens/usePollAllowances.ts +60 -0
  399. package/src/hooks/tokens/usePollBalance.ts +113 -0
  400. package/src/hooks/tokens/usePollWalletBalances.ts +75 -0
  401. package/src/hooks/tokens/useStakingTokenInformation.ts +54 -0
  402. package/src/hooks/tokens/useTokenCurrentPrice.ts +19 -0
  403. package/src/hooks/tokens/useTokenCurrentPrices.ts +57 -0
  404. package/src/hooks/tokens/useTokenInformation.ts +59 -0
  405. package/src/hooks/tokens/useTokens.ts +26 -0
  406. package/src/hooks/tokens/useTotalSupply.ts +22 -0
  407. package/src/hooks/transactions/TransactionStoreContext.tsx +59 -0
  408. package/src/hooks/transactions/transactionStore.ts +275 -0
  409. package/src/hooks/transactions/transactionStore.unit.test.ts +508 -0
  410. package/src/hooks/transactions/useAddRecentTransaction.ts +29 -0
  411. package/src/hooks/transactions/useRecentTransactions.ts +27 -0
  412. package/src/hooks/useBlockToTimestamp.ts +51 -0
  413. package/src/hooks/useContractWrite/index.ts +2 -0
  414. package/src/hooks/useContractWrite/stateReducer.ts +60 -0
  415. package/src/hooks/useContractWrite/types.ts +88 -0
  416. package/src/hooks/useContractWrite/useBeraContractWrite.ts +137 -0
  417. package/src/hooks/useGetVerifiedAbi.ts +47 -0
  418. package/src/hooks/useHistoryState.ts +64 -0
  419. package/src/hooks/usePrevious.ts +13 -0
  420. package/src/hooks/validators/useAllValidators.ts +48 -0
  421. package/src/hooks/validators/useApiEnrichedAllocation.ts +17 -0
  422. package/src/hooks/validators/useApiValidator.ts +37 -0
  423. package/src/hooks/validators/useBaselineRewardAllocation.ts +16 -0
  424. package/src/hooks/validators/useDailyValidatorBlockStats.ts +35 -0
  425. package/src/hooks/validators/useDefaultRewardAllocation.ts +32 -0
  426. package/src/hooks/validators/useManagedValidatorByAccount.ts +40 -0
  427. package/src/hooks/validators/useManagedValidatorRole.ts +119 -0
  428. package/src/hooks/validators/useOnChainValidator.ts +66 -0
  429. package/src/hooks/validators/useStakingPoolBatch.ts +45 -0
  430. package/src/hooks/validators/useSubgraphUserValidators.ts +36 -0
  431. package/src/hooks/validators/useUserActiveValidators.ts +44 -0
  432. package/src/hooks/validators/useUserBoostsOnValidator.ts +45 -0
  433. package/src/hooks/validators/useUserClaimableIncentives.ts +149 -0
  434. package/src/hooks/validators/useUserStakingPositions.ts +62 -0
  435. package/src/hooks/validators/useValidator.ts +83 -0
  436. package/src/hooks/validators/useValidatorAnalytics.ts +36 -0
  437. package/src/hooks/validators/useValidatorCommission.ts +36 -0
  438. package/src/hooks/validators/useValidatorEstimatedBgtPerYear.ts +24 -0
  439. package/src/hooks/validators/useValidatorQueuedCommission.ts +41 -0
  440. package/src/hooks/validators/useValidatorQueuedOperatorAddress.ts +39 -0
  441. package/src/hooks/validators/useValidatorQueuedRewardAllocation.ts +37 -0
  442. package/src/hooks/validators/useValidatorRewardAllocation.ts +36 -0
  443. package/src/hooks/validators/validatorRoleManager.ts +0 -0
  444. package/src/types/bribe-boost.ts +50 -0
  445. package/src/types/dex.ts +196 -0
  446. package/src/types/enso.ts +42 -0
  447. package/src/types/global.ts +230 -0
  448. package/src/types/governance.ts +174 -0
  449. package/src/types/honeySwap.ts +35 -0
  450. package/src/types/index.ts +8 -0
  451. package/src/types/pol.ts +52 -0
  452. package/src/types/staking.ts +7 -0
  453. package/src/utils/beraFetch.ts +55 -0
  454. package/src/utils/constants.ts +35 -0
  455. package/src/utils/formatAggregatorsQuotes.ts +57 -0
  456. package/src/utils/formatAggregatorsQuotes.unit.test.ts +191 -0
  457. package/src/utils/formatIncentivesTokenMap.ts +19 -0
  458. package/src/utils/formatInputTokenValue.ts +12 -0
  459. package/src/utils/formatNumber.ts +225 -0
  460. package/src/utils/formatNumber.unit.test.ts +245 -0
  461. package/src/utils/formatTimestamps.ts +155 -0
  462. package/src/utils/formatTimestamps.unit.test.ts +395 -0
  463. package/src/utils/formatTokenList.ts +61 -0
  464. package/src/utils/formatUsd.ts +46 -0
  465. package/src/utils/getContractName.ts +27 -0
  466. package/src/utils/getContractName.unit.test.ts +64 -0
  467. package/src/utils/getErrorResponse.ts +20 -0
  468. package/src/utils/getHoneySwapMessage.test.ts +116 -0
  469. package/src/utils/getHoneySwapMessage.ts +70 -0
  470. package/src/utils/getServerSideClient.ts +49 -0
  471. package/src/utils/getTestClient.ts +19 -0
  472. package/src/utils/hasAnyTruthyValues.ts +17 -0
  473. package/src/utils/index.ts +27 -0
  474. package/src/utils/isDifferenceExceedingThreshold.ts +13 -0
  475. package/src/utils/isSubgraphStale.ts +10 -0
  476. package/src/utils/math.ts +28 -0
  477. package/src/utils/math.unit.test.ts +49 -0
  478. package/src/utils/parseBaseArgs.ts +23 -0
  479. package/src/utils/parseBaseArgs.unit.test.ts +55 -0
  480. package/src/utils/poolNamings.ts +54 -0
  481. package/src/utils/pythHoneyUtils.ts +3 -0
  482. package/src/utils/sentryBeforeSend.ts +52 -0
  483. package/src/utils/test-utils.ts +2 -0
  484. package/src/utils/time.ts +106 -0
  485. package/src/utils/time.unit.test.ts +76 -0
  486. package/src/utils/tokenWrapping.ts +16 -0
  487. package/src/utils/tokens.ts +106 -0
  488. package/src/utils/tokens.unit.test.ts +98 -0
  489. package/src/utils/truncateHash.ts +20 -0
  490. package/src/utils/truncateHash.unit.test.ts +19 -0
  491. package/src/utils/validatorUptimeStatus.ts +30 -0
  492. package/dist/chunk-3V2MGZRD.mjs +0 -2
  493. package/dist/chunk-4E5JGLUM.cjs +0 -1
  494. package/dist/chunk-AHAZC5K3.mjs +0 -1
  495. package/dist/chunk-ELUMRVNE.mjs +0 -1
  496. package/dist/chunk-JHCSZSJS.mjs +0 -1
  497. package/dist/chunk-KIA6GUIN.cjs +0 -1
  498. package/dist/chunk-LX5CM4Y6.cjs +0 -1
  499. package/dist/chunk-LZPBQLKP.mjs +0 -3
  500. package/dist/chunk-M5BKM52U.cjs +0 -1
  501. package/dist/chunk-MTBICGRP.mjs +0 -1
  502. package/dist/chunk-WDFIETJS.cjs +0 -2
@@ -0,0 +1,202 @@
1
+ import type * as Sentry from "@sentry/nextjs";
2
+ import { type Abi, BaseError } from "viem";
3
+
4
+ import { appConfig } from "@berachain/config/internal";
5
+
6
+ import { GENERAL_ERROR } from "./errorMap";
7
+ import { getErrorMessage } from "./getErrorMessage";
8
+ import { parseViemError, rpcErrorToReason } from "./parseViemError";
9
+
10
+ export interface IBeraErrorArgs {
11
+ message?: string;
12
+ displayMessage?: string;
13
+ cause?: unknown;
14
+ reason?: string;
15
+ chainId?: number;
16
+ /**
17
+ * The level of the error to be used for Sentry.
18
+ */
19
+ level?: Sentry.SeverityLevel;
20
+ tags?: {
21
+ [key in TagsKey]?: Primitive;
22
+ };
23
+ extra?: Record<string, unknown>;
24
+ /**
25
+ * Optional ABI to be used to parse the error.
26
+ */
27
+ abi?: Abi;
28
+ }
29
+
30
+ /**
31
+ * Copy pasted from sentry types
32
+ */
33
+ type Primitive = number | string | boolean | bigint | symbol | null | undefined;
34
+
35
+ /**
36
+ * An helper type to make sure we only use the allowed tags. Sync this with docs/errors.md
37
+ */
38
+ type TagsKey =
39
+ | "wallet.chain"
40
+ | "wallet.connector"
41
+ | "wallet.address"
42
+ | "error.reason"
43
+ | "operation.type"
44
+ | "operation.key"
45
+ | "operation.txn.functionName"
46
+ | "operation.txn.to"
47
+ | "operation.txn.status"
48
+ | "operation.source.url"
49
+ | "operation.source.name"
50
+ | "operation.source.queryName"
51
+ | "operation.source.type";
52
+
53
+ /**
54
+ * This is a generic error class that can be used to handle errors in the SDK.
55
+ */
56
+ export class BeraError extends Error {
57
+ /**
58
+ * A human-readable message that can be displayed to end user.
59
+ *
60
+ * In berachain dapps, this is shown in the error pop-up.
61
+ */
62
+ displayMessage: string;
63
+
64
+ /**
65
+ * The cause of the error.
66
+ *
67
+ * This is typically the error that was thrown.
68
+ */
69
+ cause: unknown;
70
+
71
+ /**
72
+ * The chain id of the error.
73
+ */
74
+ chainId?: number;
75
+
76
+ /**
77
+ * The code for the reason for the error.
78
+ *
79
+ * This is typically the error code can be found in the errorMap.ts file. I.e. NotEnoughBalance or BAL#508
80
+ */
81
+ reason: string | null = null;
82
+
83
+ private _tags: {
84
+ [key: string | TagsKey]: Primitive;
85
+ } = {};
86
+
87
+ set tags(tags: {
88
+ [key: string | TagsKey]: Primitive;
89
+ }) {
90
+ this._tags = tags;
91
+ }
92
+
93
+ get tags(): {
94
+ [key: string | TagsKey]: Primitive;
95
+ } {
96
+ return {
97
+ ...this._tags,
98
+ "error.displayMessage": this.displayMessage,
99
+ "error.reason": this.reason,
100
+ "error.level": this.level,
101
+ };
102
+ }
103
+
104
+ level: Sentry.SeverityLevel = "error";
105
+
106
+ extra: Record<string, unknown> = {};
107
+
108
+ constructor({
109
+ message: m,
110
+ displayMessage: dm,
111
+ cause,
112
+ reason,
113
+ level,
114
+ abi,
115
+ tags,
116
+ chainId,
117
+ }: IBeraErrorArgs) {
118
+ let message = m;
119
+
120
+ if (!message) {
121
+ if (cause instanceof BaseError) {
122
+ // Using shortMesage as it doesn't include the payload.
123
+ message = cause.shortMessage;
124
+ } else if (cause instanceof Error) {
125
+ message = cause.message;
126
+ } else if (
127
+ typeof cause === "object" &&
128
+ cause !== null &&
129
+ "message" in cause &&
130
+ typeof cause.message === "string"
131
+ ) {
132
+ // this covers responses from HTTP requests
133
+ message = cause.message;
134
+ }
135
+ }
136
+ super(message, {
137
+ cause,
138
+ });
139
+
140
+ this.name = "BeraError";
141
+
142
+ this.cause = cause;
143
+
144
+ this.chainId = chainId;
145
+
146
+ if (reason) {
147
+ this.reason = reason;
148
+ } else if (cause instanceof Error) {
149
+ try {
150
+ const parsed = parseViemError({
151
+ error: cause,
152
+ revertIfUnknown: true,
153
+ abi,
154
+ });
155
+
156
+ this.reason = parsed?.reason ?? null;
157
+ } catch {
158
+ // Maybe we can do something here
159
+ }
160
+ }
161
+
162
+ if (level) {
163
+ this.level = level;
164
+ } else if (this.reason === rpcErrorToReason("UserRejectedRequestError")) {
165
+ this.level = "info";
166
+ } else {
167
+ this.level = "error";
168
+ }
169
+
170
+ let displayMessage = dm;
171
+
172
+ if (
173
+ this.cause instanceof BeraError &&
174
+ this.cause.displayMessage !== GENERAL_ERROR
175
+ ) {
176
+ // If the cause is a BeraError, use the displayMessage of the cause
177
+ displayMessage = this.cause.displayMessage;
178
+ }
179
+
180
+ // Skip if displayMessage is already provided
181
+ if (!displayMessage) {
182
+ displayMessage = getErrorMessage(this);
183
+ }
184
+
185
+ this.displayMessage = displayMessage ?? GENERAL_ERROR;
186
+
187
+ this.tags = {
188
+ ...this.tags,
189
+ ...tags,
190
+ };
191
+ // Useful for debugging in development or on vercel preview links
192
+ if (!appConfig.env.isProduction && process.env.NODE_ENV !== "test") {
193
+ console.group("BeraError thrown");
194
+ console.debug("Level", this.level);
195
+ console.debug("Reason", this.reason);
196
+ console.debug("Message", this.message);
197
+ console.debug("Display Message", this.displayMessage);
198
+ console.debug("Cause", this.cause);
199
+ console.groupEnd();
200
+ }
201
+ }
202
+ }
@@ -0,0 +1,81 @@
1
+ import { BeraError, type IBeraErrorArgs } from "./BeraError";
2
+
3
+ export interface IInvalidArgumentErrorArgs extends IBeraErrorArgs {
4
+ /**
5
+ * The name of the argument that is invalid.
6
+ */
7
+ property: string;
8
+ /**
9
+ * The value of the argument that is invalid.
10
+ */
11
+ value: unknown;
12
+
13
+ /**
14
+ * The expected type of the value as a string, eg. string, number, boolean, etc.
15
+ */
16
+ expected: string;
17
+ }
18
+
19
+ /**
20
+ * Error thrown when argument validation fails. (e.g. an argument is missing or invalid)
21
+ *
22
+ * Default level is "warning".
23
+ *
24
+ * @example ```ts
25
+ * if (!publicClient) {
26
+ * throw new InvalidArgumentError({
27
+ * property: "publicClient",
28
+ * value: publicClient,
29
+ * expected: "PublicClient",
30
+ * });
31
+ * }
32
+ * if (!address || !isAddress(address)) {
33
+ * throw new InvalidArgumentError({
34
+ * property: "address",
35
+ * value: address,
36
+ * expected: "Address",
37
+ * });
38
+ * }
39
+ * ```
40
+ *
41
+ */
42
+ export class InvalidArgumentError extends BeraError {
43
+ /**
44
+ * The name of the argument that is invalid.
45
+ */
46
+ property: string;
47
+ /**
48
+ * The value of the argument that is invalid.
49
+ */
50
+ value: unknown;
51
+
52
+ /**
53
+ * The expected value of the argument.
54
+ */
55
+ expected: string;
56
+
57
+ constructor(args: IInvalidArgumentErrorArgs) {
58
+ super(args);
59
+ this.level = args.level ?? "warning";
60
+ this.name = "InvalidArgumentError";
61
+ this.property = args.property;
62
+ this.value = args.value;
63
+ this.expected = args.expected;
64
+ this.message = `Invalid argument: ${this.property} ${this.isMissing ? "is missing" : `is invalid, expected ${this.expected}`}`;
65
+
66
+ if (!args.reason) {
67
+ this.reason = `${this.name}.${this.property}.${this.isInvalid ? "invalid" : "missing"}`;
68
+ }
69
+ }
70
+
71
+ get isMissing(): boolean {
72
+ return this.value === undefined;
73
+ }
74
+
75
+ /**
76
+ * Whether the argument is defined but invalid.
77
+ */
78
+ get isInvalid(): boolean {
79
+ return this.value !== undefined;
80
+ }
81
+ }
@@ -0,0 +1,34 @@
1
+ import { BeraError, type IBeraErrorArgs } from "./BeraError";
2
+
3
+ export interface INotFoundErrorArgs extends IBeraErrorArgs {
4
+ resource: string;
5
+ id: string;
6
+ chainId: number;
7
+ }
8
+
9
+ /**
10
+ * Error thrown when a resource is not found.
11
+ */
12
+ export class NotFoundError extends BeraError {
13
+ /**
14
+ * The name of the resource that was not found.
15
+ *
16
+ * @example "Reward vault"
17
+ */
18
+ resource: string;
19
+ /**
20
+ * The id of the resource that was not found.
21
+ *
22
+ * @example "0x1234567890123456789012345678901234567890"
23
+ */
24
+ id: string;
25
+
26
+ constructor(args: INotFoundErrorArgs) {
27
+ super(args);
28
+ this.name = "NotFoundError";
29
+ this.level = args.level ?? "info";
30
+ this.message = `Resource ${args.resource} with id ${args.id} not found`;
31
+ this.resource = args.resource;
32
+ this.id = args.id;
33
+ }
34
+ }
@@ -0,0 +1,207 @@
1
+ import type { ErrorLike } from "@apollo/client";
2
+
3
+ import mainnet from "@berachain/config/mainnet";
4
+
5
+ import { BeraError, type IBeraErrorArgs } from "./BeraError";
6
+ import { errorMsgMap } from "./errorMap";
7
+
8
+ /**
9
+ * This is an error class that should be used to handle errors from fetch requests.
10
+ */
11
+ export class RequestError extends BeraError {
12
+ /**
13
+ * The error response from the request.
14
+ */
15
+ response: Response | ErrorLike | undefined;
16
+
17
+ static isCorsError(error: Error) {
18
+ return error.cause instanceof Response && error.cause.type === "cors";
19
+ }
20
+ /**
21
+ * The endpoint that was requested.
22
+ */
23
+ endpoint: {
24
+ name?: string;
25
+ url: string;
26
+ type?: "rest" | "graphql" | "rpc";
27
+ };
28
+
29
+ /**
30
+ * A list of domains that should have their query params removed.
31
+ */
32
+ private queryRichfulDomains = [
33
+ mainnet.bex.aggregatorsProxyUrl,
34
+ "https://api.magpiefi.xyz/aggregator/quote",
35
+ "https://open-api.openocean.finance/v4/bera/swap",
36
+ // vercel internal proxy
37
+ "/api/aggregators?aggregator",
38
+ ];
39
+
40
+ statusCode: number | undefined;
41
+
42
+ payload?: object;
43
+
44
+ static readonly REASON_MAP = {
45
+ 429: "RATE_LIMITED_429",
46
+ NETWORK_ERROR: "NETWORK_ERROR",
47
+ CORS_ERROR: "CORS",
48
+ } as const;
49
+
50
+ constructor(
51
+ args: IBeraErrorArgs & {
52
+ response: Response | ErrorLike | undefined;
53
+ /**
54
+ * The payload sent to the request.
55
+ */
56
+ payload?: object;
57
+ endpoint:
58
+ | string
59
+ | URL
60
+ | {
61
+ name?: string;
62
+ url: string | URL;
63
+ type: "rest" | "graphql" | "rpc";
64
+ };
65
+ statusCode?: number;
66
+ },
67
+ ) {
68
+ super(args);
69
+ this.name = "RequestError";
70
+ this.response = args.response;
71
+ this.payload = args.payload;
72
+ this.endpoint = this.setEndpoint(args.endpoint);
73
+
74
+ if (
75
+ !this.message &&
76
+ typeof this.cause === "object" &&
77
+ this.cause !== null
78
+ ) {
79
+ if ("error" in this.cause && typeof this.cause.error === "string") {
80
+ // haiku returns the error in the response as { error: string }
81
+ this.message = this.cause.error;
82
+ }
83
+ }
84
+
85
+ if (args.statusCode) {
86
+ this.statusCode = args.statusCode;
87
+ } else if (this.response instanceof Response) {
88
+ this.statusCode = this.response.status;
89
+ }
90
+
91
+ if (this.statusCode === 429) {
92
+ this.reason = RequestError.REASON_MAP[429];
93
+ this.displayMessage = errorMsgMap.HTTP.RATE_LIMITED_429.errorMSG;
94
+ this.level = args.level ?? "warning";
95
+ } else {
96
+ const networkError = this.tryMatchNetworkError();
97
+ if (networkError) {
98
+ this.reason = this.reason ?? networkError.reason;
99
+ this.level = args.level ?? "warning";
100
+ this.endpoint.url = this.endpoint.url ?? networkError.url;
101
+ }
102
+ }
103
+
104
+ this.tags = {
105
+ ...this.tags,
106
+ "error.statusCode": this.statusCode,
107
+ "operation.type": "query",
108
+ ...args.tags,
109
+ };
110
+
111
+ let message = "";
112
+
113
+ if (this.reason) {
114
+ message += `${this.reason} – `;
115
+ } else if (this.statusCode && this.statusCode >= 400) {
116
+ message += `HTTP ${this.statusCode} – `;
117
+ }
118
+
119
+ this.message = `${message}${this.endpoint.type}(${this.endpoint.url}): ${this.message}`;
120
+ }
121
+
122
+ setEndpoint(
123
+ endpoint:
124
+ | string
125
+ | URL
126
+ | {
127
+ name?: string;
128
+ url: string | URL;
129
+ type?: "rest" | "graphql" | "rpc";
130
+ },
131
+ ) {
132
+ if (typeof endpoint === "string" || endpoint instanceof URL) {
133
+ this.endpoint = {
134
+ url: typeof endpoint === "string" ? endpoint : endpoint.toString(),
135
+ };
136
+ } else {
137
+ this.endpoint = {
138
+ ...this.endpoint,
139
+ ...endpoint,
140
+ url: endpoint.url.toString(),
141
+ };
142
+ }
143
+
144
+ if (
145
+ this.queryRichfulDomains.some((domain) =>
146
+ this.endpoint.url.includes(domain),
147
+ )
148
+ ) {
149
+ // remove query params if it's an aggregator url
150
+ try {
151
+ const url = new URL(this.endpoint.url);
152
+ url.search = "";
153
+ this.endpoint.url = url.toString();
154
+ } catch {}
155
+ }
156
+ this.tags = {
157
+ ...this.tags,
158
+ "operation.source.url": this.endpoint.url,
159
+ "operation.source.name": this.endpoint.name,
160
+ "operation.source.type": this.endpoint.type,
161
+ };
162
+
163
+ return this.endpoint;
164
+ }
165
+
166
+ private tryMatchNetworkError():
167
+ | false
168
+ | {
169
+ reason: string;
170
+ message: string;
171
+ url: string;
172
+ } {
173
+ if (
174
+ (this.cause instanceof Error &&
175
+ "message" in this.cause &&
176
+ typeof this.cause.message === "string") ||
177
+ this.cause instanceof TypeError
178
+ ) {
179
+ const message = this.cause.message as string;
180
+
181
+ if (message.startsWith("Network Error")) {
182
+ return {
183
+ reason: RequestError.REASON_MAP.NETWORK_ERROR,
184
+ message: message,
185
+ url: this.endpoint.url,
186
+ };
187
+ }
188
+
189
+ // this matches standard error messages as they're returned by browser fetch when they either:
190
+ // - have a network error
191
+ // - have CORS errors
192
+ // the list is empirically collected from sentry error logs.
193
+ const failedToFetchMatch = message.match(
194
+ /^(?:NetworkError when attempting to fetch resource\.|Failed to fetch|Load failed) \(([a-z0-9-.]+)\)$/,
195
+ );
196
+ if (failedToFetchMatch) {
197
+ return {
198
+ reason: RequestError.REASON_MAP.NETWORK_ERROR,
199
+ message: message,
200
+ url: failedToFetchMatch[1],
201
+ };
202
+ }
203
+ }
204
+
205
+ return false;
206
+ }
207
+ }
@@ -0,0 +1,93 @@
1
+ import type { Hex } from "@berachain-foundation/berancer-sdk";
2
+ import type { Address, TransactionReceipt } from "viem";
3
+
4
+ import { BeraError, type IBeraErrorArgs } from "./BeraError";
5
+
6
+ /**
7
+ * This error is generally thrown by beraWriteContract when a transaction or simulation fails.
8
+ */
9
+ export class TransactionFailedError extends BeraError {
10
+ /**
11
+ * The hash of the transaction that failed.
12
+ *
13
+ * Null if the error is due to a simulation failure.
14
+ */
15
+ txHash: string | null;
16
+
17
+ /**
18
+ * The receipt of the transaction that failed.
19
+ *
20
+ * Null if the error is due to a simulation failure.
21
+ */
22
+ receipt: TransactionReceipt | null;
23
+
24
+ /**
25
+ * The address of the contract that was called.
26
+ */
27
+ to: Address | undefined;
28
+
29
+ /**
30
+ * The data of the transaction that failed.
31
+ */
32
+ callData: Hex | undefined;
33
+
34
+ /**
35
+ * The block number of the transaction that failed.
36
+ */
37
+ blockNumber: bigint | null = null;
38
+
39
+ /**
40
+ * The input of the transaction that failed.
41
+ */
42
+ input: object;
43
+
44
+ /**
45
+ * The function name of the transaction that failed.
46
+ */
47
+ functionName: string | undefined;
48
+
49
+ constructor(
50
+ args: IBeraErrorArgs & {
51
+ txHash?: string;
52
+ receipt?: TransactionReceipt;
53
+ to?: Address;
54
+ blockNumber?: bigint;
55
+ functionName?: string;
56
+ input: object;
57
+ },
58
+ ) {
59
+ super(args);
60
+ this.name = "TransactionFailedError";
61
+ this.txHash = args.txHash || null;
62
+ this.receipt = args.receipt || null;
63
+ this.to = args.to;
64
+ this.functionName = args.functionName;
65
+ this.blockNumber = args.blockNumber ?? null;
66
+ this.input = args.input;
67
+
68
+ if (this.receipt) {
69
+ // If we have a receipt, transaction reverted on chain
70
+ this.message = `Transaction reverted on chain for reason: ${this.reason}`;
71
+ } else if (this.txHash) {
72
+ // If we have a tx hash, transaction reverted after being broadcasted but we never got a receipt
73
+ // Might happen for network reasons
74
+ this.message = `Transaction reverted after being broadcasted for reason: ${this.reason}`;
75
+ } else {
76
+ this.message = `${this.reason}: ${this.message}`;
77
+ }
78
+
79
+ this.tags = {
80
+ ...this.tags,
81
+ "operation.txn.status": args.txHash ? "execution" : "simulation",
82
+ ...args.tags,
83
+ };
84
+
85
+ if (this.to) {
86
+ this.tags["operation.txn.to"] = this.to;
87
+ }
88
+
89
+ if (this.functionName) {
90
+ this.tags["operation.txn.functionName"] = this.functionName;
91
+ }
92
+ }
93
+ }