@berachain/berajs 0.1.1 → 0.2.0

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 (638) hide show
  1. package/dist/{BeraError-D1HS_rbb.d.cts → BeraError-_mQdkanr.d.cts} +35 -10
  2. package/dist/{BeraError-D1HS_rbb.d.ts → BeraError-_mQdkanr.d.ts} +35 -10
  3. package/dist/HoneyConfigProvider-CK6mOKFH.d.ts +390 -0
  4. package/dist/HoneyConfigProvider-Ca3ouozs.d.cts +390 -0
  5. package/dist/{RequestError-D8AE6xnI.d.cts → RequestError-A8XJ6QR9.d.cts} +1 -1
  6. package/dist/{RequestError-m4jxyM7D.d.ts → RequestError-Dk97z8rm.d.ts} +1 -1
  7. package/dist/abi/exports.cjs +2 -0
  8. package/dist/abi/exports.cjs.map +1 -0
  9. package/dist/abi/{index.d.cts → exports.d.cts} +12369 -9122
  10. package/dist/abi/{index.d.ts → exports.d.ts} +12369 -9122
  11. package/dist/abi/exports.mjs +2 -0
  12. package/dist/abi/exports.mjs.map +1 -0
  13. package/dist/actions/exports.cjs +2 -0
  14. package/dist/actions/exports.cjs.map +1 -0
  15. package/dist/actions/{index.d.cts → exports.d.cts} +80 -107
  16. package/dist/actions/{index.d.ts → exports.d.ts} +80 -107
  17. package/dist/actions/exports.mjs +2 -0
  18. package/dist/actions/exports.mjs.map +1 -0
  19. package/dist/chunk-575OK77P.mjs +2 -0
  20. package/dist/chunk-575OK77P.mjs.map +1 -0
  21. package/dist/chunk-7GWTHOLO.mjs +2 -0
  22. package/dist/chunk-7GWTHOLO.mjs.map +1 -0
  23. package/dist/chunk-7SC4VD3U.cjs +2 -0
  24. package/dist/chunk-7SC4VD3U.cjs.map +1 -0
  25. package/dist/chunk-BHNQX4XC.mjs +2 -0
  26. package/dist/chunk-BHNQX4XC.mjs.map +1 -0
  27. package/dist/chunk-BOYZVULX.cjs +2 -0
  28. package/dist/chunk-BOYZVULX.cjs.map +1 -0
  29. package/dist/chunk-C3FHGFLK.mjs +2 -0
  30. package/dist/chunk-C3FHGFLK.mjs.map +1 -0
  31. package/dist/chunk-C3G5KXCH.mjs +2 -0
  32. package/dist/chunk-C3G5KXCH.mjs.map +1 -0
  33. package/dist/chunk-CYKCYPFR.cjs +2 -0
  34. package/dist/chunk-CYKCYPFR.cjs.map +1 -0
  35. package/dist/chunk-F4BKSBEM.mjs +2 -0
  36. package/dist/chunk-F4BKSBEM.mjs.map +1 -0
  37. package/dist/chunk-FL2N3XHK.cjs +2 -0
  38. package/dist/chunk-FL2N3XHK.cjs.map +1 -0
  39. package/dist/chunk-G6NA6NSM.mjs +4 -0
  40. package/dist/chunk-G6NA6NSM.mjs.map +1 -0
  41. package/dist/chunk-H2QSRMVS.mjs +2 -0
  42. package/dist/chunk-H2QSRMVS.mjs.map +1 -0
  43. package/dist/chunk-IJM76AWK.cjs +4 -0
  44. package/dist/chunk-IJM76AWK.cjs.map +1 -0
  45. package/dist/chunk-MTS5SZLA.mjs +2 -0
  46. package/dist/chunk-MTS5SZLA.mjs.map +1 -0
  47. package/dist/chunk-MUNAP5TM.cjs +2 -0
  48. package/dist/chunk-MUNAP5TM.cjs.map +1 -0
  49. package/dist/chunk-NAXAZJJY.mjs +2 -0
  50. package/dist/chunk-NAXAZJJY.mjs.map +1 -0
  51. package/dist/chunk-OGJMSGB2.mjs +2 -0
  52. package/dist/chunk-OGJMSGB2.mjs.map +1 -0
  53. package/dist/chunk-OIYXOKTT.cjs +2 -0
  54. package/dist/chunk-OIYXOKTT.cjs.map +1 -0
  55. package/dist/chunk-OS5AJMYJ.cjs +2 -0
  56. package/dist/{chunk-EODAKI5K.cjs.map → chunk-OS5AJMYJ.cjs.map} +1 -1
  57. package/dist/chunk-Q3SCM6WL.mjs +2 -0
  58. package/dist/chunk-Q3SCM6WL.mjs.map +1 -0
  59. package/dist/chunk-SWMJQOH6.cjs +2 -0
  60. package/dist/chunk-SWMJQOH6.cjs.map +1 -0
  61. package/dist/chunk-TEBJWAVU.mjs +2 -0
  62. package/dist/chunk-TEBJWAVU.mjs.map +1 -0
  63. package/dist/chunk-TJWKS54T.mjs +2 -0
  64. package/dist/chunk-TJWKS54T.mjs.map +1 -0
  65. package/dist/chunk-UQUWMHVF.cjs +2 -0
  66. package/dist/chunk-UQUWMHVF.cjs.map +1 -0
  67. package/dist/chunk-UXUWSRVV.cjs +2 -0
  68. package/dist/chunk-UXUWSRVV.cjs.map +1 -0
  69. package/dist/chunk-VP7XUOSI.cjs +2 -0
  70. package/dist/chunk-VP7XUOSI.cjs.map +1 -0
  71. package/dist/chunk-VXL2ZZ4X.cjs +2 -0
  72. package/dist/chunk-VXL2ZZ4X.cjs.map +1 -0
  73. package/dist/chunk-WRFDB3QJ.cjs +2 -0
  74. package/dist/chunk-WRFDB3QJ.cjs.map +1 -0
  75. package/dist/chunk-WTCBORPB.cjs +2 -0
  76. package/dist/chunk-WTCBORPB.cjs.map +1 -0
  77. package/dist/chunk-XNJLSA6P.cjs +2 -0
  78. package/dist/chunk-XNJLSA6P.cjs.map +1 -0
  79. package/dist/chunk-YQGZMWDT.mjs +2 -0
  80. package/dist/chunk-YQGZMWDT.mjs.map +1 -0
  81. package/dist/chunk-YXLFOEZN.mjs +2 -0
  82. package/dist/chunk-YXLFOEZN.mjs.map +1 -0
  83. package/dist/chunk-ZAKA4TGK.cjs +2 -0
  84. package/dist/chunk-ZAKA4TGK.cjs.map +1 -0
  85. package/dist/chunk-ZQRACIGR.mjs +2 -0
  86. package/dist/chunk-ZQRACIGR.mjs.map +1 -0
  87. package/dist/contexts/exports.cjs +2 -0
  88. package/dist/contexts/exports.cjs.map +1 -0
  89. package/dist/contexts/{index.d.ts → exports.d.cts} +20 -29
  90. package/dist/contexts/{index.d.cts → exports.d.ts} +20 -29
  91. package/dist/contexts/exports.mjs +2 -0
  92. package/dist/contexts/exports.mjs.map +1 -0
  93. package/dist/contracts-CQIPk0Jc.d.cts +74 -0
  94. package/dist/contracts-CQIPk0Jc.d.ts +74 -0
  95. package/dist/{defaultFlags-V-tJs2K8.d.cts → defaultFlags-d0kPbT0i.d.cts} +1 -1
  96. package/dist/{defaultFlags-V-tJs2K8.d.ts → defaultFlags-d0kPbT0i.d.ts} +1 -1
  97. package/dist/dex-C_BB0b0O.d.cts +37 -0
  98. package/dist/dex-C_BB0b0O.d.ts +37 -0
  99. package/dist/enum/exports.cjs +2 -0
  100. package/dist/enum/exports.cjs.map +1 -0
  101. package/dist/enum/exports.d.cts +24 -0
  102. package/dist/enum/exports.d.ts +24 -0
  103. package/dist/enum/exports.mjs +2 -0
  104. package/dist/enum/exports.mjs.map +1 -0
  105. package/dist/errors/exports.cjs +2 -0
  106. package/dist/errors/exports.cjs.map +1 -0
  107. package/dist/errors/exports.d.cts +385 -0
  108. package/dist/errors/exports.d.ts +385 -0
  109. package/dist/errors/exports.mjs +2 -0
  110. package/dist/{getValidatorQueuedOperatorAddress-BhPVMCTj.d.ts → getValidatorQueuedOperatorAddress-BX35p2Lv.d.ts} +125 -15
  111. package/dist/{getValidatorQueuedOperatorAddress-Cmd7rgYK.d.cts → getValidatorQueuedOperatorAddress-It0GsdvQ.d.cts} +125 -15
  112. package/dist/global.d-Ba-NIojH.d.cts +474 -0
  113. package/dist/global.d-By70bEv2.d.ts +474 -0
  114. package/dist/honey-CYm0RWf4.d.cts +14 -0
  115. package/dist/honey-CYm0RWf4.d.ts +14 -0
  116. package/dist/hooks/exports.cjs +4 -0
  117. package/dist/hooks/exports.cjs.map +1 -0
  118. package/dist/hooks/{index.d.cts → exports.d.cts} +223 -173
  119. package/dist/hooks/{index.d.ts → exports.d.ts} +223 -173
  120. package/dist/hooks/exports.mjs +4 -0
  121. package/dist/hooks/exports.mjs.map +1 -0
  122. package/dist/{BexStatusProvider-nS3NcdxI.d.cts → transactionStore-BvStaXf3.d.ts} +41 -1
  123. package/dist/{BexStatusProvider-nS3NcdxI.d.ts → transactionStore-CQrGYSY2.d.cts} +41 -1
  124. package/dist/{txnEnum-BQKDfaeH.d.cts → txnEnum-BYNbCxla.d.cts} +1 -0
  125. package/dist/{txnEnum-BQKDfaeH.d.ts → txnEnum-BYNbCxla.d.ts} +1 -0
  126. package/dist/types/exports.cjs +1 -0
  127. package/dist/types/exports.cjs.map +1 -0
  128. package/dist/types/exports.d.cts +58 -0
  129. package/dist/types/exports.d.ts +58 -0
  130. package/dist/types/exports.mjs +1 -0
  131. package/dist/{useHoneySwapState-DfmXCavx.d.cts → useHoneySwapState-B-vmIP1b.d.cts} +1 -1
  132. package/dist/{useHoneySwapState-AKDZI2MT.d.ts → useHoneySwapState-D1DKG_Of.d.ts} +1 -1
  133. package/dist/utils/exports.cjs +2 -0
  134. package/dist/utils/exports.cjs.map +1 -0
  135. package/dist/utils/{index.d.cts → exports.d.cts} +84 -21
  136. package/dist/utils/{index.d.ts → exports.d.ts} +84 -21
  137. package/dist/utils/exports.mjs +2 -0
  138. package/dist/utils/exports.mjs.map +1 -0
  139. package/package.json +18 -18
  140. package/src/abi/bend/bundler.ts +60 -0
  141. package/src/abi/bend/generalAdapter.ts +362 -0
  142. package/src/abi/bend/metaMorpho.ts +2584 -0
  143. package/src/abi/bend/morpho.ts +444 -0
  144. package/src/abi/bend/morphoVault.ts +1456 -0
  145. package/src/abi/bend/publicAllocator.ts +355 -0
  146. package/src/abi/bex/aggregatorsRouter.ts +492 -0
  147. package/src/abi/bex/balancerComposableStablePoolFactoryV6.ts +283 -0
  148. package/src/abi/bex/balancerPoolCreationHelper.ts +267 -0
  149. package/src/abi/bex/balancerVault.ts +757 -0
  150. package/src/abi/enso/ensoRouterAbi.ts +140 -0
  151. package/src/abi/exports.ts +38 -0
  152. package/src/abi/governance/governance.ts +1016 -0
  153. package/src/abi/governance/governanceTimelock.ts +589 -0
  154. package/src/abi/honey/collateralVault.ts +1144 -0
  155. package/src/abi/honey/honey.ts +563 -0
  156. package/src/abi/honey/honeyFactory.ts +1270 -0
  157. package/src/abi/honey/honeyFactoryReader.ts +894 -0
  158. package/src/abi/honey/honeyRootOracle.ts +492 -0
  159. package/src/abi/honey/pythPriceOracle.ts +619 -0
  160. package/src/abi/honey/pythWrapper.ts +446 -0
  161. package/src/abi/pol/LSTStakerVault.ts +2032 -0
  162. package/src/abi/pol/beaconDeposit.ts +595 -0
  163. package/src/abi/pol/beraChef.ts +1019 -0
  164. package/src/abi/pol/bgt.ts +1008 -0
  165. package/src/abi/pol/bgtIncentiveDistributor.ts +640 -0
  166. package/src/abi/pol/bgtStaker.ts +1034 -0
  167. package/src/abi/pol/rewardAllocationFactory.ts +408 -0
  168. package/src/abi/pol/rewardVault.ts +1928 -0
  169. package/src/abi/pol/rewardVaultFactory.ts +586 -0
  170. package/src/abi/pol/rewardVaultHelper.ts +882 -0
  171. package/src/abi/pol/stakeBeraVault.ts +1116 -0
  172. package/src/abi/pol/stakeBeraVaultWithdrawalRequest.ts +618 -0
  173. package/src/abi/pol/wbera.ts +366 -0
  174. package/src/abi/pyth/pyth.ts +566 -0
  175. package/src/abi/pyth/pythErrors.ts +72 -0
  176. package/src/abi/utils/EIP7702StatelessDelegator.ts +523 -0
  177. package/src/abi/utils/bundler3errors.ts +6 -0
  178. package/src/abi/utils/commonAbiErrors.ts +9 -0
  179. package/src/abi/utils/erc20errors.ts +74 -0
  180. package/src/abi/utils/merkleDistributor.ts +838 -0
  181. package/src/abi/utils/multicall3.ts +242 -0
  182. package/src/abi/utils/openChainErrors.ts +180 -0
  183. package/src/abi/utils/thirdwebMinimalAccount.ts +616 -0
  184. package/src/abi/utils/upgradableBeacon.ts +86 -0
  185. package/src/actions/bend/getConvertToAssets.ts +23 -0
  186. package/src/actions/bend/getMaxDeposit.ts +21 -0
  187. package/src/actions/clients/BeraApolloClient.ts +127 -0
  188. package/src/actions/clients/getApolloClient.ts +109 -0
  189. package/src/actions/clients/getEnsoClient.ts +24 -0
  190. package/src/actions/dex/__tests__/aggregators.unit.test.ts +109 -0
  191. package/src/actions/dex/__tests__/allPools.integration.test.ts +13 -0
  192. package/src/actions/dex/__tests__/getOnChainPool.unit.test.ts +15 -0
  193. package/src/actions/dex/aggregators/base.ts +232 -0
  194. package/src/actions/dex/aggregators/bex.ts +235 -0
  195. package/src/actions/dex/aggregators/bgt.ts +73 -0
  196. package/src/actions/dex/aggregators/enso/enso.ts +117 -0
  197. package/src/actions/dex/aggregators/enso/ensoErc4626.debug.test.ts +37 -0
  198. package/src/actions/dex/aggregators/enso/ensoErc4626.ts +176 -0
  199. package/src/actions/dex/aggregators/erc4626.ts +122 -0
  200. package/src/actions/dex/aggregators/fly.ts +142 -0
  201. package/src/actions/dex/aggregators/haiku.integration.test.ts +40 -0
  202. package/src/actions/dex/aggregators/haiku.ts +169 -0
  203. package/src/actions/dex/aggregators/honey.ts +254 -0
  204. package/src/actions/dex/aggregators/kyberswap.ts +144 -0
  205. package/src/actions/dex/aggregators/oogabooga.ts +111 -0
  206. package/src/actions/dex/aggregators/openOcean.ts +147 -0
  207. package/src/actions/dex/aggregators/wbera.ts +84 -0
  208. package/src/actions/dex/b-sdk.ts +51 -0
  209. package/src/actions/dex/getAllPools.ts +60 -0
  210. package/src/actions/dex/getApiPool.ts +47 -0
  211. package/src/actions/dex/getGlobalLiquidityAndSwapVolume.ts +29 -0
  212. package/src/actions/dex/getIsTokenExploited.ts +63 -0
  213. package/src/actions/dex/getOnChainPool.ts +216 -0
  214. package/src/actions/dex/getPoolEvents.ts +35 -0
  215. package/src/actions/dex/getPoolHistoricalData.ts +51 -0
  216. package/src/actions/dex/getPoolPausedState.ts +40 -0
  217. package/src/actions/dex/getPoolWithState.ts +24 -0
  218. package/src/actions/dex/getSubgraphPool.ts +30 -0
  219. package/src/actions/dex/getVaultPausedState.ts +21 -0
  220. package/src/actions/enso/getEnsoSwapBundle.ts +77 -0
  221. package/src/actions/enso/getEnsoUserTokensWithBalances.debug.test.ts +73 -0
  222. package/src/actions/enso/getEnsoUserTokensWithBalances.ts +145 -0
  223. package/src/actions/enso/util.ts +60 -0
  224. package/src/actions/exports.ts +110 -0
  225. package/src/actions/governance/__tests__/checkProposalField.unit.test.ts +108 -0
  226. package/src/actions/governance/__tests__/getDecodedFunctionData.integration.test.ts +127 -0
  227. package/src/actions/governance/__tests__/getQuorum.integration.test.ts +39 -0
  228. package/src/actions/governance/checkProposalField.ts +211 -0
  229. package/src/actions/governance/computeActualStatus.ts +154 -0
  230. package/src/actions/governance/constants.ts +7 -0
  231. package/src/actions/governance/getAllProposals.ts +75 -0
  232. package/src/actions/governance/getBodyErrors.ts +28 -0
  233. package/src/actions/governance/getDecodedFunctionData.ts +167 -0
  234. package/src/actions/governance/getProposalDetails.ts +40 -0
  235. package/src/actions/governance/getProposalFromTx.ts +100 -0
  236. package/src/actions/governance/getProposalParams.ts +246 -0
  237. package/src/actions/governance/getProposalVotes.ts +20 -0
  238. package/src/actions/governance/getQuorum.ts +37 -0
  239. package/src/actions/governance/parseProposalBody.ts +73 -0
  240. package/src/actions/honey/getChartData.ts +27 -0
  241. package/src/actions/honey/getCollateralWeights.ts +50 -0
  242. package/src/actions/honey/getGlobalCapLimit.ts +148 -0
  243. package/src/actions/honey/getHoneyCollaterals.ts +140 -0
  244. package/src/actions/honey/getHoneyFees.ts +100 -0
  245. package/src/actions/honey/getHoneyGlobalData.ts +21 -0
  246. package/src/actions/honey/getHoneyPausedState.ts +25 -0
  247. package/src/actions/honey/getHoneyPreview.ts +152 -0
  248. package/src/actions/honey/getHoneyPythPriceOracle.ts +21 -0
  249. package/src/actions/honey/getHoneyRootPriceOracle.ts +23 -0
  250. package/src/actions/honey/getHoneyVaultsBalance.ts +82 -0
  251. package/src/actions/honey/getPythLatestPrices.ts +54 -0
  252. package/src/actions/honey/getRelativeCapLimit.ts +83 -0
  253. package/src/actions/honey/getSharesWithoutFees.ts +65 -0
  254. package/src/actions/honey/getSwapPayload.ts +130 -0
  255. package/src/actions/honey/isBadCollateralAsset.ts +77 -0
  256. package/src/actions/honey/isBasketModeEnabled.ts +47 -0
  257. package/src/actions/honey/tests/pyth.integration.test.ts +62 -0
  258. package/src/actions/misc/getBlockTimestamp.ts +41 -0
  259. package/src/actions/pol/__tests__/getAllValidators.integration.test.ts +55 -0
  260. package/src/actions/pol/__tests__/getValidator.integration.test.ts +32 -0
  261. package/src/actions/pol/__tests__/rewardVaults.integration.test.ts +34 -0
  262. package/src/actions/pol/getBGTGlobalInfo.ts +43 -0
  263. package/src/actions/pol/getBgtAprSimulation.ts +207 -0
  264. package/src/actions/pol/getBgtAprSimultaion.unit.test.ts +297 -0
  265. package/src/actions/pol/getBgtTokenTotalBoosts.ts +30 -0
  266. package/src/actions/pol/getBgtTokenTotalSupply.ts +29 -0
  267. package/src/actions/pol/getBlockTime.ts +43 -0
  268. package/src/actions/pol/getEarnedStakedBeraVault.ts +31 -0
  269. package/src/actions/pol/getGlobalCuttingBoard.ts +25 -0
  270. package/src/actions/pol/getGlobalData.ts +75 -0
  271. package/src/actions/pol/getIncentiveFeeClaimStats.ts +43 -0
  272. package/src/actions/pol/getLSTStakeConfig.ts +67 -0
  273. package/src/actions/pol/getMarkets.ts +36 -0
  274. package/src/actions/pol/getRewardProofsByValidator.ts +49 -0
  275. package/src/actions/pol/getRewardTokenToBeraRate.ts +30 -0
  276. package/src/actions/pol/getRewardVault.ts +54 -0
  277. package/src/actions/pol/getRewardVaultBeaconImplementation.integration.test.ts +18 -0
  278. package/src/actions/pol/getRewardVaultBeaconImplementation.ts +35 -0
  279. package/src/actions/pol/getRewardVaultDurationConstants.integration.test.ts +24 -0
  280. package/src/actions/pol/getRewardVaultDurationConstants.ts +45 -0
  281. package/src/actions/pol/getRewardVaultFromToken.ts +30 -0
  282. package/src/actions/pol/getRewardVaultIncentives.ts +120 -0
  283. package/src/actions/pol/getRewardVaultRewards.ts +109 -0
  284. package/src/actions/pol/getRewardVaultStakingToken.ts +19 -0
  285. package/src/actions/pol/getRewardVaults.ts +105 -0
  286. package/src/actions/pol/getSWBeraVaultMetadata.ts +168 -0
  287. package/src/actions/pol/getSWBeraWithdrawal.ts +179 -0
  288. package/src/actions/pol/getStakeWithdrawalCooldown.ts +19 -0
  289. package/src/actions/pol/getStakedBeraAPR.ts +56 -0
  290. package/src/actions/pol/getStakedBeraSnapshots.ts +48 -0
  291. package/src/actions/pol/getStakingDailyAssets.ts +21 -0
  292. package/src/actions/pol/getStakingTokenInformation.ts +59 -0
  293. package/src/actions/pol/getTotalStakedAmount.ts +47 -0
  294. package/src/actions/pol/getUserClaimableIncentives.ts +40 -0
  295. package/src/actions/pol/getUserVaultInfo.ts +52 -0
  296. package/src/actions/pol/getUserVaults.ts +187 -0
  297. package/src/actions/pol/getUserVaultsBalance.ts +42 -0
  298. package/src/actions/pol/getUserVaultsReward.ts +32 -0
  299. package/src/actions/pol/getVaultHistory.ts +43 -0
  300. package/src/actions/pol/getVaultValidators.ts +31 -0
  301. package/src/actions/pol/getVaultsSupply.ts +28 -0
  302. package/src/actions/prices/__tests__/prices.integration.test.ts +29 -0
  303. package/src/actions/prices/getTokenCurrentPrices.ts +84 -0
  304. package/src/actions/pyth/getHoneyPythFeeds.ts +46 -0
  305. package/src/actions/pyth/getUpdateFee.ts +27 -0
  306. package/src/actions/tokens/getAllowances.ts +86 -0
  307. package/src/actions/tokens/getTokenInformation.ts +60 -0
  308. package/src/actions/tokens/getTokens.ts +19 -0
  309. package/src/actions/tokens/getUnderlyingToken.ts +53 -0
  310. package/src/actions/tokens/getWalletBalances.integration.test.ts +79 -0
  311. package/src/actions/tokens/getWalletBalances.ts +149 -0
  312. package/src/actions/transactions/beraWriteContract.integration.test.ts +263 -0
  313. package/src/actions/transactions/beraWriteContract.ts +722 -0
  314. package/src/actions/validators/getActiveBoostAndCommissionChangeDelay.integration.test.ts +40 -0
  315. package/src/actions/validators/getActiveBoostAndCommissionChangeDelay.ts +109 -0
  316. package/src/actions/validators/getAllValidators.ts +33 -0
  317. package/src/actions/validators/getApiEnrichedAllocation.ts +33 -0
  318. package/src/actions/validators/getApiValidator.ts +38 -0
  319. package/src/actions/validators/getBaselineRewardAllocation.ts +26 -0
  320. package/src/actions/validators/getDailyValidatorBlockStats.ts +37 -0
  321. package/src/actions/validators/getDefaultRewardAllocation.ts +39 -0
  322. package/src/actions/validators/getManagedValidatorByAccount.ts +32 -0
  323. package/src/actions/validators/getStakingPoolBatch.ts +20 -0
  324. package/src/actions/validators/getUserActiveValidators.ts +100 -0
  325. package/src/actions/validators/getUserBoosts.ts +28 -0
  326. package/src/actions/validators/getUserBoostsOnValidator.ts +69 -0
  327. package/src/actions/validators/getUserStakingPositions.ts +225 -0
  328. package/src/actions/validators/getValidatorAnalytics.ts +34 -0
  329. package/src/actions/validators/getValidatorCommission.ts +24 -0
  330. package/src/actions/validators/getValidatorEstimatedBgtPerYear.ts +25 -0
  331. package/src/actions/validators/getValidatorOperatorAddress.ts +27 -0
  332. package/src/actions/validators/getValidatorQueuedCommission.ts +30 -0
  333. package/src/actions/validators/getValidatorQueuedOperatorAddress.ts +32 -0
  334. package/src/actions/validators/getValidatorQueuedRewardAllocation.ts +31 -0
  335. package/src/actions/validators/getValidatorRewardAllocation.ts +158 -0
  336. package/src/actions/validators/getValidatorRewardAllocatorAddress.ts +38 -0
  337. package/src/actions/validators/utils/__tests__/validatorUtils.integration.test.ts +36 -0
  338. package/src/actions/validators/utils/getValidatorBoostApy.ts +59 -0
  339. package/src/contexts/BeraFlags/BeraFlags.tsx +69 -0
  340. package/src/contexts/BeraFlags/defaultFlags.ts +46 -0
  341. package/src/contexts/BexStatusProvider.tsx +125 -0
  342. package/src/contexts/HoneyConfigProvider.tsx +73 -0
  343. package/src/contexts/SwrFallback.tsx +44 -0
  344. package/src/contexts/TokensProvider.tsx +93 -0
  345. package/src/contexts/TransactionStoreContext.tsx +87 -0
  346. package/src/contexts/block-time-provider.tsx +34 -0
  347. package/src/contexts/exports.ts +14 -0
  348. package/src/data/contracts.ts +413 -0
  349. package/src/enum/contracts.ts +13 -0
  350. package/src/enum/dex.ts +39 -0
  351. package/src/enum/exports.ts +7 -0
  352. package/src/enum/governance.ts +61 -0
  353. package/src/enum/honey.ts +12 -0
  354. package/src/enum/polling.ts +8 -0
  355. package/src/enum/slippage.ts +19 -0
  356. package/src/enum/txnEnum.ts +102 -0
  357. package/src/errors/BeraError.ts +241 -0
  358. package/src/errors/BeraMonitoring.ts +66 -0
  359. package/src/errors/BeraTracing.ts +79 -0
  360. package/src/errors/BeraTracing.unit.test.ts +198 -0
  361. package/src/errors/InvalidArgumentError.ts +81 -0
  362. package/src/errors/NotFoundError.ts +34 -0
  363. package/src/errors/RequestError.ts +207 -0
  364. package/src/errors/TransactionFailedError.ts +93 -0
  365. package/src/errors/assert.ts +146 -0
  366. package/src/errors/assert.unit.test.ts +114 -0
  367. package/src/errors/errorMap.ts +1167 -0
  368. package/src/errors/exports.ts +15 -0
  369. package/src/errors/getErrorMessage.ts +59 -0
  370. package/src/errors/getRevertReason.integration.test.ts +461 -0
  371. package/src/errors/getRevertReason.ts +218 -0
  372. package/src/errors/initBeraError.ts +91 -0
  373. package/src/errors/parseViemError.ts +326 -0
  374. package/src/errors/severity.ts +12 -0
  375. package/src/hooks/bend/useGetConvertToAssets.ts +43 -0
  376. package/src/hooks/dex/useAggregatorsQuotes.ts +263 -0
  377. package/src/hooks/dex/useAggregatorsRouterFeeBps.ts +34 -0
  378. package/src/hooks/dex/useAllUserPools.ts +38 -0
  379. package/src/hooks/dex/useApiPool.ts +53 -0
  380. package/src/hooks/dex/useBexStatus.ts +1 -0
  381. package/src/hooks/dex/useCreatePool.ts +438 -0
  382. package/src/hooks/dex/useExploitedTokens.ts +57 -0
  383. package/src/hooks/dex/useGlobalLiquidityAndSwapVolume.ts +22 -0
  384. package/src/hooks/dex/useLiquidityMismatch.ts +192 -0
  385. package/src/hooks/dex/useLpPosition.ts +116 -0
  386. package/src/hooks/dex/useMultipleTokenApprovalsWithSlippage.ts +103 -0
  387. package/src/hooks/dex/useOnChainPoolData.ts +126 -0
  388. package/src/hooks/dex/usePollPoolCreationRelayerApproval.ts +54 -0
  389. package/src/hooks/dex/usePool.ts +59 -0
  390. package/src/hooks/dex/usePoolEvents.ts +22 -0
  391. package/src/hooks/dex/usePoolHistoricalData.ts +44 -0
  392. package/src/hooks/dex/usePools.ts +83 -0
  393. package/src/hooks/dex/usePriceImpact.ts +40 -0
  394. package/src/hooks/dex/useSingleAggregatorQuote.ts +350 -0
  395. package/src/hooks/enso/useBendZapSupply.ts +216 -0
  396. package/src/hooks/enso/useEnsoSwapBundle.ts +107 -0
  397. package/src/hooks/enso/useEnsoUserTokensWithBalances.ts +43 -0
  398. package/src/hooks/enso/useZapStakeBera.ts +113 -0
  399. package/src/hooks/exports.ts +135 -0
  400. package/src/hooks/governance/useCreateProposal.ts +88 -0
  401. package/src/hooks/governance/useGetPastVotes.ts +63 -0
  402. package/src/hooks/governance/useHasVoted.ts +38 -0
  403. package/src/hooks/governance/useIsCanceller.ts +43 -0
  404. package/src/hooks/governance/usePollAllProposals.ts +232 -0
  405. package/src/hooks/governance/usePollProposal.ts +96 -0
  406. package/src/hooks/governance/usePollProposalThreshold.ts +41 -0
  407. package/src/hooks/governance/usePollProposalVotes.ts +64 -0
  408. package/src/hooks/governance/usePollUserDelegates.ts +70 -0
  409. package/src/hooks/governance/useProposalFromTx.ts +37 -0
  410. package/src/hooks/governance/useProposalSnapshot.ts +44 -0
  411. package/src/hooks/governance/useProposalState.ts +48 -0
  412. package/src/hooks/governance/useProposalTimelockState.ts +61 -0
  413. package/src/hooks/governance/useQuorum.ts +42 -0
  414. package/src/hooks/honey/useCappedGlobally.ts +93 -0
  415. package/src/hooks/honey/useCappedRelatively.ts +88 -0
  416. package/src/hooks/honey/useCollateralWeights.ts +49 -0
  417. package/src/hooks/honey/useHoneyAlerts.ts +314 -0
  418. package/src/hooks/honey/useHoneyBalances.ts +83 -0
  419. package/src/hooks/honey/useHoneyChartData.ts +17 -0
  420. package/src/hooks/honey/useHoneyGlobalData.ts +23 -0
  421. package/src/hooks/honey/useHoneySwapState.ts +203 -0
  422. package/src/hooks/honey/useHoneyVaultsBalance.ts +41 -0
  423. package/src/hooks/honey/useIsBadCollateralAsset.ts +74 -0
  424. package/src/hooks/honey/useIsBasketModeEnabled.ts +70 -0
  425. package/src/hooks/honey/usePythLatestPrices.ts +41 -0
  426. package/src/hooks/perps/usePythUpdateFee.ts +43 -0
  427. package/src/hooks/pol/useBgtAprSimulation.ts +22 -0
  428. package/src/hooks/pol/useBgtUnstakedBalance.ts +50 -0
  429. package/src/hooks/pol/useClaimableFees.ts +38 -0
  430. package/src/hooks/pol/useHighestVaultsAPR.ts +57 -0
  431. package/src/hooks/pol/useOnChainRewardVault.ts +115 -0
  432. package/src/hooks/pol/usePollGlobalData.ts +31 -0
  433. package/src/hooks/pol/usePollMarkets.ts +32 -0
  434. package/src/hooks/pol/useQueuedBeraUnlock.ts +72 -0
  435. package/src/hooks/pol/useRewardTokenToBeraRate.ts +48 -0
  436. package/src/hooks/pol/useRewardVault.ts +51 -0
  437. package/src/hooks/pol/useRewardVaultBalanceFromStakingToken.ts +82 -0
  438. package/src/hooks/pol/useRewardVaultFromToken.ts +58 -0
  439. package/src/hooks/pol/useRewardVaultIncentives.ts +37 -0
  440. package/src/hooks/pol/useRewardVaultRewards.ts +37 -0
  441. package/src/hooks/pol/useRewardVaults.ts +45 -0
  442. package/src/hooks/pol/useSWBeraVaultMetadata.ts +35 -0
  443. package/src/hooks/pol/useStakedAPR.ts +38 -0
  444. package/src/hooks/pol/useStakedData.ts +117 -0
  445. package/src/hooks/pol/useStakedSnapshots.ts +52 -0
  446. package/src/hooks/pol/useTotalStakedAmount.ts +30 -0
  447. package/src/hooks/pol/useUserVaultInfo.ts +46 -0
  448. package/src/hooks/pol/useUserVaults.ts +40 -0
  449. package/src/hooks/pol/useVaultAddress.ts +31 -0
  450. package/src/hooks/pol/useVaultHistory.ts +29 -0
  451. package/src/hooks/pol/useVaultValidators.ts +33 -0
  452. package/src/hooks/tokens/useBeraCurrentPrice.ts +12 -0
  453. package/src/hooks/tokens/useMultipleTokenInformation.ts +71 -0
  454. package/src/hooks/tokens/usePollAllowances.ts +56 -0
  455. package/src/hooks/tokens/usePollBalance.ts +117 -0
  456. package/src/hooks/tokens/usePollWalletBalances.ts +78 -0
  457. package/src/hooks/tokens/useStakingTokenInformation.ts +55 -0
  458. package/src/hooks/tokens/useTokenCurrentPrice.ts +21 -0
  459. package/src/hooks/tokens/useTokenCurrentPrices.ts +136 -0
  460. package/src/hooks/tokens/useTokenInformation.ts +64 -0
  461. package/src/hooks/tokens/useTokenPrice.ts +21 -0
  462. package/src/hooks/tokens/useTokenPrices.ts +133 -0
  463. package/src/hooks/tokens/useTokens.ts +27 -0
  464. package/src/hooks/tokens/useTotalSupply.ts +22 -0
  465. package/src/hooks/tokens/useUnderlyingAsset.ts +23 -0
  466. package/src/hooks/transactions/transactionStore.ts +296 -0
  467. package/src/hooks/transactions/transactionStore.unit.test.ts +561 -0
  468. package/src/hooks/transactions/useAddRecentTransaction.ts +29 -0
  469. package/src/hooks/transactions/useRecentTransactions.ts +27 -0
  470. package/src/hooks/transactions/useSetTransactionStatus.ts +31 -0
  471. package/src/hooks/useBlockToTimestamp.ts +51 -0
  472. package/src/hooks/useContractWrite/index.ts +2 -0
  473. package/src/hooks/useContractWrite/stateReducer.ts +60 -0
  474. package/src/hooks/useContractWrite/types.ts +88 -0
  475. package/src/hooks/useContractWrite/useBeraContractWrite.ts +138 -0
  476. package/src/hooks/useGetVerifiedAbi.ts +47 -0
  477. package/src/hooks/useHistoryState.ts +64 -0
  478. package/src/hooks/usePrevious.ts +13 -0
  479. package/src/hooks/validators/useAllValidators.ts +48 -0
  480. package/src/hooks/validators/useApiEnrichedAllocation.ts +17 -0
  481. package/src/hooks/validators/useApiValidator.ts +37 -0
  482. package/src/hooks/validators/useBaselineRewardAllocation.ts +16 -0
  483. package/src/hooks/validators/useDailyValidatorBlockStats.ts +35 -0
  484. package/src/hooks/validators/useDefaultRewardAllocation.ts +32 -0
  485. package/src/hooks/validators/useManagedValidatorByAccount.ts +40 -0
  486. package/src/hooks/validators/useManagedValidatorRole.ts +119 -0
  487. package/src/hooks/validators/useOnChainValidator.ts +66 -0
  488. package/src/hooks/validators/useStakingPoolBatch.ts +45 -0
  489. package/src/hooks/validators/useSubgraphUserValidators.ts +36 -0
  490. package/src/hooks/validators/useUserActiveValidators.ts +44 -0
  491. package/src/hooks/validators/useUserBoostsOnValidator.ts +45 -0
  492. package/src/hooks/validators/useUserClaimableIncentives.ts +149 -0
  493. package/src/hooks/validators/useUserStakingPositions.ts +62 -0
  494. package/src/hooks/validators/useValidator.ts +83 -0
  495. package/src/hooks/validators/useValidatorAnalytics.ts +36 -0
  496. package/src/hooks/validators/useValidatorCommission.ts +36 -0
  497. package/src/hooks/validators/useValidatorEstimatedBgtPerYear.ts +24 -0
  498. package/src/hooks/validators/useValidatorQueuedCommission.ts +41 -0
  499. package/src/hooks/validators/useValidatorQueuedOperatorAddress.ts +39 -0
  500. package/src/hooks/validators/useValidatorQueuedRewardAllocation.ts +37 -0
  501. package/src/hooks/validators/useValidatorRewardAllocation.ts +36 -0
  502. package/src/types/bribe-boost.d.ts +50 -0
  503. package/src/types/dex.d.ts +225 -0
  504. package/src/types/enso.d.ts +42 -0
  505. package/src/types/exports.ts +8 -0
  506. package/src/types/global.d.ts +201 -0
  507. package/src/types/governance.d.ts +112 -0
  508. package/src/types/honeySwap.d.ts +23 -0
  509. package/src/types/pol.d.ts +63 -0
  510. package/src/types/staking.d.ts +22 -0
  511. package/src/utils/beraFetch.ts +55 -0
  512. package/src/utils/constants.ts +35 -0
  513. package/src/utils/createEmitter.ts +122 -0
  514. package/src/utils/createEmitter.unit.test.ts +149 -0
  515. package/src/utils/exports.ts +28 -0
  516. package/src/utils/filter.ts +34 -0
  517. package/src/utils/formatIncentivesTokenMap.ts +19 -0
  518. package/src/utils/formatInputTokenValue.ts +12 -0
  519. package/src/utils/formatNumber.ts +225 -0
  520. package/src/utils/formatNumber.unit.test.ts +246 -0
  521. package/src/utils/formatTimestamps.ts +155 -0
  522. package/src/utils/formatTimestamps.unit.test.ts +395 -0
  523. package/src/utils/formatTokenList.ts +55 -0
  524. package/src/utils/formatUsd.ts +46 -0
  525. package/src/utils/getContractName.ts +27 -0
  526. package/src/utils/getContractName.unit.test.ts +64 -0
  527. package/src/utils/getErrorResponse.ts +20 -0
  528. package/src/utils/getHoneySwapMessage.test.ts +115 -0
  529. package/src/utils/getHoneySwapMessage.ts +70 -0
  530. package/src/utils/getServerSideClient.ts +48 -0
  531. package/src/utils/getTestClient.ts +19 -0
  532. package/src/utils/hasAnyTruthyValues.ts +17 -0
  533. package/src/utils/isDifferenceExceedingThreshold.ts +13 -0
  534. package/src/utils/isSubgraphStale.ts +10 -0
  535. package/src/utils/layerZeroScan.ts +122 -0
  536. package/src/utils/math.ts +28 -0
  537. package/src/utils/math.unit.test.ts +49 -0
  538. package/src/utils/parseBaseArgs.ts +23 -0
  539. package/src/utils/parseBaseArgs.unit.test.ts +55 -0
  540. package/src/utils/parseWhiskToken.ts +15 -0
  541. package/src/utils/poolNamings.ts +54 -0
  542. package/src/utils/pythHoneyUtils.ts +3 -0
  543. package/src/utils/test-utils.ts +2 -0
  544. package/src/utils/time.ts +106 -0
  545. package/src/utils/time.unit.test.ts +76 -0
  546. package/src/utils/tokenWrapping.ts +16 -0
  547. package/src/utils/tokens.ts +122 -0
  548. package/src/utils/tokens.unit.test.ts +98 -0
  549. package/src/utils/truncateHash.ts +20 -0
  550. package/src/utils/truncateHash.unit.test.ts +19 -0
  551. package/src/utils/validatorUptimeStatus.ts +30 -0
  552. package/dist/abi/index.cjs +0 -2
  553. package/dist/abi/index.cjs.map +0 -1
  554. package/dist/abi/index.mjs +0 -2
  555. package/dist/actions/index.cjs +0 -2
  556. package/dist/actions/index.cjs.map +0 -1
  557. package/dist/actions/index.mjs +0 -2
  558. package/dist/aggregatorsRouter-Cny4B_MB.d.cts +0 -593
  559. package/dist/aggregatorsRouter-Cny4B_MB.d.ts +0 -593
  560. package/dist/chunk-3WCYP277.mjs +0 -2
  561. package/dist/chunk-3WCYP277.mjs.map +0 -1
  562. package/dist/chunk-5OAABMMU.mjs +0 -2
  563. package/dist/chunk-5OAABMMU.mjs.map +0 -1
  564. package/dist/chunk-6W22TFYA.mjs +0 -2
  565. package/dist/chunk-6W22TFYA.mjs.map +0 -1
  566. package/dist/chunk-DS2ZDVKU.mjs +0 -2
  567. package/dist/chunk-DS2ZDVKU.mjs.map +0 -1
  568. package/dist/chunk-ED43NYSE.cjs +0 -2
  569. package/dist/chunk-ED43NYSE.cjs.map +0 -1
  570. package/dist/chunk-EODAKI5K.cjs +0 -2
  571. package/dist/chunk-GWBENQEV.cjs +0 -4
  572. package/dist/chunk-GWBENQEV.cjs.map +0 -1
  573. package/dist/chunk-GZ5YA2AZ.cjs +0 -3
  574. package/dist/chunk-GZ5YA2AZ.cjs.map +0 -1
  575. package/dist/chunk-HCTFDGXL.mjs +0 -2
  576. package/dist/chunk-HCTFDGXL.mjs.map +0 -1
  577. package/dist/chunk-IOSYBHKU.mjs +0 -2
  578. package/dist/chunk-IOSYBHKU.mjs.map +0 -1
  579. package/dist/chunk-IZDT74H4.mjs +0 -2
  580. package/dist/chunk-IZDT74H4.mjs.map +0 -1
  581. package/dist/chunk-JMKLDDKY.cjs +0 -2
  582. package/dist/chunk-JMKLDDKY.cjs.map +0 -1
  583. package/dist/chunk-M5GUTM7K.mjs +0 -4
  584. package/dist/chunk-M5GUTM7K.mjs.map +0 -1
  585. package/dist/chunk-PHIOKO3A.mjs +0 -2
  586. package/dist/chunk-PHIOKO3A.mjs.map +0 -1
  587. package/dist/chunk-QCK474XD.cjs +0 -2
  588. package/dist/chunk-QCK474XD.cjs.map +0 -1
  589. package/dist/chunk-S74ZMG2G.cjs +0 -2
  590. package/dist/chunk-S74ZMG2G.cjs.map +0 -1
  591. package/dist/chunk-TOAXF4YW.cjs +0 -2
  592. package/dist/chunk-TOAXF4YW.cjs.map +0 -1
  593. package/dist/chunk-UZ5CB33M.cjs +0 -2
  594. package/dist/chunk-UZ5CB33M.cjs.map +0 -1
  595. package/dist/chunk-V3PCHP2D.cjs +0 -2
  596. package/dist/chunk-V3PCHP2D.cjs.map +0 -1
  597. package/dist/chunk-YK4NINF5.mjs +0 -2
  598. package/dist/chunk-YK4NINF5.mjs.map +0 -1
  599. package/dist/chunk-YRJAQDEO.cjs +0 -2
  600. package/dist/chunk-YRJAQDEO.cjs.map +0 -1
  601. package/dist/chunk-ZLCBHOSV.mjs +0 -3
  602. package/dist/chunk-ZLCBHOSV.mjs.map +0 -1
  603. package/dist/contexts/index.cjs +0 -2
  604. package/dist/contexts/index.cjs.map +0 -1
  605. package/dist/contexts/index.mjs +0 -2
  606. package/dist/contexts/index.mjs.map +0 -1
  607. package/dist/dex-BaNHEuck.d.cts +0 -562
  608. package/dist/dex-D6IK-4D9.d.ts +0 -562
  609. package/dist/enum/index.cjs +0 -2
  610. package/dist/enum/index.cjs.map +0 -1
  611. package/dist/enum/index.d.cts +0 -31
  612. package/dist/enum/index.d.ts +0 -31
  613. package/dist/enum/index.mjs +0 -2
  614. package/dist/enum/index.mjs.map +0 -1
  615. package/dist/errors/index.cjs +0 -2
  616. package/dist/errors/index.cjs.map +0 -1
  617. package/dist/errors/index.d.cts +0 -204
  618. package/dist/errors/index.d.ts +0 -204
  619. package/dist/errors/index.mjs +0 -2
  620. package/dist/errors/index.mjs.map +0 -1
  621. package/dist/hooks/index.cjs +0 -4
  622. package/dist/hooks/index.cjs.map +0 -1
  623. package/dist/hooks/index.mjs +0 -4
  624. package/dist/hooks/index.mjs.map +0 -1
  625. package/dist/staking-Bcb8DhoZ.d.cts +0 -246
  626. package/dist/staking-DvJOnMJG.d.ts +0 -246
  627. package/dist/types/index.cjs +0 -2
  628. package/dist/types/index.cjs.map +0 -1
  629. package/dist/types/index.d.cts +0 -56
  630. package/dist/types/index.d.ts +0 -56
  631. package/dist/types/index.mjs +0 -2
  632. package/dist/types/index.mjs.map +0 -1
  633. package/dist/utils/index.cjs +0 -2
  634. package/dist/utils/index.cjs.map +0 -1
  635. package/dist/utils/index.mjs +0 -2
  636. package/dist/utils/index.mjs.map +0 -1
  637. /package/dist/{abi/index.mjs.map → errors/exports.mjs.map} +0 -0
  638. /package/dist/{actions/index.mjs.map → types/exports.mjs.map} +0 -0
@@ -0,0 +1,241 @@
1
+ import { type Abi, BaseError } from "viem";
2
+
3
+ import { appConfig } from "@berachain/config/internal";
4
+
5
+ import { GENERAL_ERROR } from "./errorMap";
6
+ import { getErrorMessage } from "./getErrorMessage";
7
+ import { parseViemError, rpcErrorToReason } from "./parseViemError";
8
+ import type { SeverityLevel } from "./severity";
9
+
10
+ export interface IBeraErrorArgs {
11
+ message?: string;
12
+ displayMessage?: string;
13
+ cause?: unknown;
14
+ reason?: string;
15
+ chainId?: number;
16
+ fingerprint?: string[];
17
+ /**
18
+ * The level of the error to be used for error reporting.
19
+ */
20
+ level?: SeverityLevel;
21
+ tags?: {
22
+ [key in TagsKey]?: Primitive;
23
+ };
24
+ extra?: Record<string, unknown>;
25
+ /**
26
+ * Optional ABI to be used to parse the error.
27
+ */
28
+ abi?: Abi;
29
+ }
30
+
31
+ type Primitive = number | string | boolean | bigint | symbol | null | undefined;
32
+
33
+ /**
34
+ * An helper type to make sure we only use the allowed tags. Sync this with docs/errors.md
35
+ */
36
+ type TagsKey =
37
+ | "wallet.chain"
38
+ | "wallet.connector"
39
+ | "wallet.address"
40
+ | "error.reason"
41
+ | "operation.type"
42
+ | "operation.key"
43
+ | "operation.txn.functionName"
44
+ | "operation.txn.to"
45
+ | "operation.txn.status"
46
+ | "operation.source.url"
47
+ | "operation.source.name"
48
+ | "operation.source.queryName"
49
+ | "operation.source.type";
50
+
51
+ /**
52
+ * Base error class for the entire berajs SDK.
53
+ *
54
+ * All errors should be a BeraError or one of its subclasses. Unknown errors should be
55
+ * normalized via `initBeraError({ cause })`.
56
+ *
57
+ * Key design: the constructor runs an **automatic reason detection pipeline** when `reason`
58
+ * is not explicitly provided. It calls `parseViemError` on the `cause` to extract a
59
+ * machine-readable reason code (e.g. "NotEnoughBalance", "BAL#508", "UserRejectedRequestError").
60
+ * That reason is then matched against `errorMap.ts` to resolve a user-friendly `displayMessage`.
61
+ *
62
+ * This means: for most viem errors, you only need to pass `cause` and everything else
63
+ * (reason, displayMessage, level) is derived automatically.
64
+ *
65
+ * @see parseViemError — the reason extraction engine
66
+ * @see errorMap.ts — reason → displayMessage mapping
67
+ * @see initBeraError — normalizes any error into a BeraError (preferred entry point)
68
+ */
69
+ export class BeraError extends Error {
70
+ /**
71
+ * A human-readable message that can be displayed to end user.
72
+ *
73
+ * In berachain dapps, this is shown in the error pop-up.
74
+ */
75
+ displayMessage: string;
76
+
77
+ /**
78
+ * The cause of the error.
79
+ *
80
+ * This is typically the error that was thrown.
81
+ */
82
+ cause: unknown;
83
+
84
+ /**
85
+ * The chain id of the error.
86
+ */
87
+ chainId?: number;
88
+
89
+ /**
90
+ * The code for the reason for the error.
91
+ *
92
+ * This is typically the error code can be found in the errorMap.ts file. I.e. NotEnoughBalance or BAL#508
93
+ */
94
+ reason: string | null = null;
95
+
96
+ /**
97
+ * The fingerprint for the error.
98
+ *
99
+ * This is typically used to group errors in Sentry.
100
+ */
101
+ fingerprint: string[] | undefined;
102
+
103
+ private _tags: {
104
+ [key: string | TagsKey]: Primitive;
105
+ } = {};
106
+
107
+ set tags(tags: {
108
+ [key: string | TagsKey]: Primitive;
109
+ }) {
110
+ this._tags = tags;
111
+ }
112
+
113
+ get tags(): {
114
+ [key: string | TagsKey]: Primitive;
115
+ } {
116
+ return {
117
+ ...this._tags,
118
+ "error.displayMessage": this.displayMessage,
119
+ "error.reason": this.reason,
120
+ "error.level": this.level,
121
+ };
122
+ }
123
+
124
+ level: SeverityLevel = "error";
125
+
126
+ extra: Record<string, unknown> = {};
127
+
128
+ constructor({
129
+ message: m,
130
+ displayMessage: dm,
131
+ cause,
132
+ reason,
133
+ level,
134
+ abi,
135
+ tags,
136
+ chainId,
137
+ fingerprint,
138
+ }: IBeraErrorArgs) {
139
+ let message = m;
140
+
141
+ if (!message) {
142
+ if (cause instanceof BaseError) {
143
+ // Using shortMesage as it doesn't include the payload.
144
+ message = cause.shortMessage;
145
+ } else if (cause instanceof Error) {
146
+ message = cause.message;
147
+ } else if (
148
+ typeof cause === "object" &&
149
+ cause !== null &&
150
+ "message" in cause &&
151
+ typeof cause.message === "string"
152
+ ) {
153
+ // this covers responses from HTTP requests
154
+ message = cause.message;
155
+ }
156
+ }
157
+ super(message, {
158
+ cause,
159
+ });
160
+
161
+ this.name = "BeraError";
162
+
163
+ this.fingerprint = fingerprint;
164
+
165
+ this.cause = cause;
166
+
167
+ this.chainId = chainId;
168
+
169
+ // ── Automatic reason detection ──────────────────────────────────────
170
+ // If `reason` was provided explicitly, use it directly.
171
+ // Otherwise, attempt to extract it from the `cause` by unwrapping the viem error chain.
172
+ // parseViemError walks nested errors (ContractFunctionExecutionError →
173
+ // ContractFunctionRevertedError → RpcRequestError) and decodes revert data using ABI.
174
+ // The extracted reason (e.g. "NotEnoughBalance", "BAL#508") is the key that drives
175
+ // displayMessage resolution and Sentry fingerprinting.
176
+ if (reason) {
177
+ this.reason = reason;
178
+ } else if (cause instanceof Error) {
179
+ try {
180
+ const parsed = parseViemError({
181
+ error: cause,
182
+ revertIfUnknown: true,
183
+ abi,
184
+ });
185
+
186
+ this.reason = parsed?.reason ?? null;
187
+ } catch {
188
+ // parseViemError throws when it can't identify the error type and revertIfUnknown=true.
189
+ // In that case, reason stays null and displayMessage falls back to GENERAL_ERROR.
190
+ }
191
+ }
192
+
193
+ // ── Level inference ─────────────────────────────────────────────────
194
+ // User rejections are "info" (not actionable by devs), everything else defaults to "error".
195
+ if (level) {
196
+ this.level = level;
197
+ } else if (this.reason === rpcErrorToReason("UserRejectedRequestError")) {
198
+ this.level = "info";
199
+ } else {
200
+ this.level = "error";
201
+ }
202
+
203
+ // ── displayMessage resolution ─────────────────────────────────────────
204
+ // Priority:
205
+ // 1. Explicit `displayMessage` passed by caller
206
+ // 2. Cascaded from a BeraError cause (if it has a non-generic message)
207
+ // 3. Looked up from errorMap.ts using the detected `reason` and `message`
208
+ // 4. GENERAL_ERROR fallback: "Something went wrong. Please try again later."
209
+ let displayMessage = dm;
210
+
211
+ if (
212
+ this.cause instanceof BeraError &&
213
+ this.cause.displayMessage !== GENERAL_ERROR
214
+ ) {
215
+ // Cascade: inner BeraError already resolved a good displayMessage, reuse it
216
+ displayMessage = this.cause.displayMessage;
217
+ }
218
+
219
+ if (!displayMessage) {
220
+ // Match reason (exact) or message (keyword) against errorMap.ts
221
+ displayMessage = getErrorMessage(this);
222
+ }
223
+
224
+ this.displayMessage = displayMessage ?? GENERAL_ERROR;
225
+
226
+ this.tags = {
227
+ ...this.tags,
228
+ ...tags,
229
+ };
230
+ // Useful for debugging in development or on vercel preview links
231
+ if (!appConfig.env.isProduction && process.env.NODE_ENV !== "test") {
232
+ console.group("BeraError thrown");
233
+ console.debug("Level", this.level);
234
+ console.debug("Reason", this.reason);
235
+ console.debug("Message", this.message);
236
+ console.debug("Display Message", this.displayMessage);
237
+ console.debug("Cause", this.cause);
238
+ console.groupEnd();
239
+ }
240
+ }
241
+ }
@@ -0,0 +1,66 @@
1
+ import { createEmitter, type EmitterMixin } from "~/utils/createEmitter";
2
+ import type { BeraError } from "./BeraError";
3
+ import type { SeverityLevel } from "./severity";
4
+
5
+ /**
6
+ * Context passed alongside captured exceptions.
7
+ * Mirrors the subset of Sentry's CaptureContext that berajs actually uses.
8
+ */
9
+ export interface CaptureContext {
10
+ level: SeverityLevel;
11
+ extra?: Record<string, unknown>;
12
+ tags?: Record<string, string | number | boolean | null | undefined>;
13
+ fingerprint?: string[];
14
+ data?: Record<string, unknown>;
15
+ }
16
+
17
+ export interface ErrorEvent {
18
+ exception: BeraError;
19
+ timestamp: number;
20
+ }
21
+
22
+ const _emitter = createEmitter<{ exception: (event: ErrorEvent) => void }>();
23
+
24
+ /**
25
+ * A generic error reporter for berajs.
26
+ *
27
+ * Instead of calling Sentry.captureException directly, berajs calls
28
+ * `BeraMonitoring.captureException()`. Consumer apps subscribe via `.on()` and
29
+ * forward events to their monitoring provider (Sentry, Datadog, etc.).
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * // In berajs code:
34
+ * import { BeraMonitoring } from "~/errors/BeraMonitoring";
35
+ * BeraMonitoring.captureExceptionException(error);
36
+ *
37
+ * // In app instrumentation:
38
+ * import { BeraMonitoring } from "@berachain/berajs/errors";
39
+ * BeraMonitoring.on((event) => {
40
+ * if (event.type === "exception") {
41
+ * Sentry.captureException(event.exception);
42
+ * }
43
+ * });
44
+ * ```
45
+ */
46
+ export const BeraMonitoring: {
47
+ captureException: (exception: BeraError) => void;
48
+ } & EmitterMixin<{ exception: (event: ErrorEvent) => void }> = {
49
+ /**
50
+ * Capture an exception. Notifies all subscribers.
51
+ */
52
+ captureException(exception: BeraError): void {
53
+ const event: ErrorEvent = {
54
+ exception,
55
+ timestamp: Date.now(),
56
+ };
57
+ _emitter.emit("exception", event);
58
+ },
59
+ /**
60
+ * Subscribe to error events.
61
+ * @returns An unsubscribe function.
62
+ */
63
+ on(...args) {
64
+ return _emitter.on(...args);
65
+ },
66
+ };
@@ -0,0 +1,79 @@
1
+ import type { Unsubscribe } from "~/utils/createEmitter";
2
+
3
+ /**
4
+ * Span context passed to tracing handlers.
5
+ * Compatible with Sentry's StartSpanOptions (name, op, attributes).
6
+ */
7
+ export type SpanContext = {
8
+ name: string;
9
+ op: string;
10
+ attributes: Record<string, string | number | boolean | undefined>;
11
+ };
12
+
13
+ /**
14
+ * A function that wraps a callback in a tracing span.
15
+ * Compatible with Sentry.startSpan's signature.
16
+ */
17
+ type StartSpanFn = <T>(
18
+ context: SpanContext,
19
+ callback: () => Promise<T>,
20
+ ) => Promise<T>;
21
+
22
+ const _handlers: StartSpanFn[] = [];
23
+
24
+ /**
25
+ * A generic span-tracing module for berajs.
26
+ *
27
+ * Instead of calling Sentry.startSpan directly, berajs calls
28
+ * `BeraTracing.startSpan()`. Consumer apps subscribe via `.on("span", handler)`
29
+ * and forward spans to their tracing provider (Sentry, Datadog, etc.).
30
+ *
31
+ * Multiple handlers are supported and chain in registration order:
32
+ * the first registered handler is the outermost wrapper.
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * // In berajs code:
37
+ * import { BeraTracing } from "~/errors/BeraTracing";
38
+ * const result = await BeraTracing.startSpan(
39
+ * { name: "GraphQL query", op: "graphql.query", attributes: {} },
40
+ * () => executeQuery(),
41
+ * );
42
+ *
43
+ * // In app instrumentation:
44
+ * import { BeraTracing } from "@berachain/berajs/errors";
45
+ * BeraTracing.addSpanHandler(Sentry.startSpan);
46
+ * ```
47
+ */
48
+ export const BeraTracing = {
49
+ /**
50
+ * Execute a callback, wrapping it in all registered span handlers.
51
+ *
52
+ * Handlers chain so each wraps the next. First registered = outermost wrapper.
53
+ * If no handlers are registered, the callback is executed directly.
54
+ */
55
+ startSpan<T>(context: SpanContext, callback: () => Promise<T>): Promise<T> {
56
+ if (_handlers.length === 0) return callback();
57
+
58
+ // Chain: h1(ctx, () => h2(ctx, () => h3(ctx, () => callback())))
59
+ return _handlers.reduceRight<() => Promise<T>>(
60
+ (next, handler) => () => handler(context, next),
61
+ callback,
62
+ )();
63
+ },
64
+
65
+ /**
66
+ * Register a span tracing handler.
67
+ *
68
+ * @param _event - Must be "span". Exists for API consistency with BeraMonitoring.
69
+ * @param handler - A StartSpanFn, e.g. Sentry.startSpan.
70
+ * @returns An unsubscribe function to remove the handler.
71
+ */
72
+ addSpanHandler(handler: StartSpanFn): Unsubscribe {
73
+ _handlers.push(handler);
74
+ return () => {
75
+ const idx = _handlers.indexOf(handler);
76
+ if (idx !== -1) _handlers.splice(idx, 1);
77
+ };
78
+ },
79
+ };
@@ -0,0 +1,198 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+
3
+ import { BeraTracing } from "./BeraTracing.js";
4
+
5
+ describe("BeraTracing", () => {
6
+ describe("startSpan with no handlers", () => {
7
+ it("executes the callback directly", async () => {
8
+ const callback = vi.fn().mockResolvedValue("result");
9
+ const result = await BeraTracing.startSpan(
10
+ { name: "test", op: "test.op", attributes: {} },
11
+ callback,
12
+ );
13
+ expect(result).toBe("result");
14
+ expect(callback).toHaveBeenCalledTimes(1);
15
+ });
16
+ });
17
+
18
+ describe("startSpan with a single handler", () => {
19
+ it("wraps the callback in the handler", async () => {
20
+ const order: string[] = [];
21
+
22
+ const handler = vi.fn(async (context: any, callback: any) => {
23
+ order.push("handler-start");
24
+ const result = await callback();
25
+ order.push("handler-end");
26
+ return result;
27
+ });
28
+
29
+ const unsub = BeraTracing.addSpanHandler(handler);
30
+
31
+ const result = await BeraTracing.startSpan(
32
+ { name: "test", op: "test.op", attributes: { key: "value" } },
33
+ async () => {
34
+ order.push("callback");
35
+ return 42;
36
+ },
37
+ );
38
+
39
+ expect(result).toBe(42);
40
+ expect(order).toEqual(["handler-start", "callback", "handler-end"]);
41
+ expect(handler).toHaveBeenCalledTimes(1);
42
+ expect(handler.mock.calls[0][0]).toEqual({
43
+ name: "test",
44
+ op: "test.op",
45
+ attributes: { key: "value" },
46
+ });
47
+
48
+ unsub();
49
+ });
50
+ });
51
+
52
+ describe("startSpan with multiple handlers", () => {
53
+ it("chains handlers so first registered is outermost", async () => {
54
+ const order: string[] = [];
55
+
56
+ const handler1 = async (_ctx: any, cb: () => Promise<any>) => {
57
+ order.push("h1-start");
58
+ const r = await cb();
59
+ order.push("h1-end");
60
+ return r;
61
+ };
62
+ const handler2 = async (_ctx: any, cb: () => Promise<any>) => {
63
+ order.push("h2-start");
64
+ const r = await cb();
65
+ order.push("h2-end");
66
+ return r;
67
+ };
68
+ const handler3 = async (_ctx: any, cb: () => Promise<any>) => {
69
+ order.push("h3-start");
70
+ const r = await cb();
71
+ order.push("h3-end");
72
+ return r;
73
+ };
74
+
75
+ const unsub1 = BeraTracing.addSpanHandler(handler1);
76
+ const unsub2 = BeraTracing.addSpanHandler(handler2);
77
+ const unsub3 = BeraTracing.addSpanHandler(handler3);
78
+
79
+ await BeraTracing.startSpan(
80
+ { name: "test", op: "test.op", attributes: {} },
81
+ async () => {
82
+ order.push("callback");
83
+ return "done";
84
+ },
85
+ );
86
+
87
+ // h1 wraps h2 wraps h3 wraps callback
88
+ expect(order).toEqual([
89
+ "h1-start",
90
+ "h2-start",
91
+ "h3-start",
92
+ "callback",
93
+ "h3-end",
94
+ "h2-end",
95
+ "h1-end",
96
+ ]);
97
+
98
+ unsub1();
99
+ unsub2();
100
+ unsub3();
101
+ });
102
+ });
103
+
104
+ describe("on() returns unsubscribe", () => {
105
+ it("removes the handler when unsubscribe is called", async () => {
106
+ const handler = vi.fn(async (_ctx: any, cb: any) => cb());
107
+ const unsub = BeraTracing.addSpanHandler(handler);
108
+
109
+ await BeraTracing.startSpan(
110
+ { name: "test", op: "test.op", attributes: {} },
111
+ async () => "a",
112
+ );
113
+ expect(handler).toHaveBeenCalledTimes(1);
114
+
115
+ unsub();
116
+
117
+ await BeraTracing.startSpan(
118
+ { name: "test", op: "test.op", attributes: {} },
119
+ async () => "b",
120
+ );
121
+ // Handler should not have been called again
122
+ expect(handler).toHaveBeenCalledTimes(1);
123
+ });
124
+
125
+ it("is idempotent (double-unsubscribe does not throw)", () => {
126
+ const handler = vi.fn(async (_ctx: any, cb: any) => cb());
127
+ const unsub = BeraTracing.addSpanHandler(handler);
128
+
129
+ unsub();
130
+ expect(() => unsub()).not.toThrow();
131
+ });
132
+ });
133
+
134
+ describe("error propagation", () => {
135
+ it("propagates errors from the callback through handlers", async () => {
136
+ const handler = async (_ctx: any, cb: () => Promise<any>) => cb();
137
+ const unsub = BeraTracing.addSpanHandler(handler);
138
+
139
+ await expect(
140
+ BeraTracing.startSpan(
141
+ { name: "test", op: "test.op", attributes: {} },
142
+ async () => {
143
+ throw new Error("callback error");
144
+ },
145
+ ),
146
+ ).rejects.toThrow("callback error");
147
+
148
+ unsub();
149
+ });
150
+
151
+ it("propagates errors from a handler", async () => {
152
+ const handler = async () => {
153
+ throw new Error("handler error");
154
+ };
155
+ const unsub = BeraTracing.addSpanHandler(handler);
156
+
157
+ await expect(
158
+ BeraTracing.startSpan(
159
+ { name: "test", op: "test.op", attributes: {} },
160
+ async () => "ok",
161
+ ),
162
+ ).rejects.toThrow("handler error");
163
+
164
+ unsub();
165
+ });
166
+ });
167
+
168
+ describe("Sentry.startSpan compatibility", () => {
169
+ it("works with a handler that accepts (options, callback) like Sentry.startSpan", async () => {
170
+ // Sentry.startSpan signature: <T>(options, callback: (span) => T) => T
171
+ // When callback returns Promise<T>, the return is Promise<T>
172
+ const mockSentryStartSpan = <T>(
173
+ _options: { name: string },
174
+ callback: (span: unknown) => T,
175
+ ): T => {
176
+ // Sentry passes a span object to the callback; our callbacks ignore it
177
+ return callback({ spanId: "mock-span" });
178
+ };
179
+
180
+ const unsub = BeraTracing.addSpanHandler(
181
+ mockSentryStartSpan as typeof BeraTracing.startSpan,
182
+ );
183
+
184
+ const result = await BeraTracing.startSpan(
185
+ {
186
+ name: "GraphQL TestQuery",
187
+ op: "BeraApolloClient.query",
188
+ attributes: {},
189
+ },
190
+ async () => ({ data: { value: 1 } }),
191
+ );
192
+
193
+ expect(result).toEqual({ data: { value: 1 } });
194
+
195
+ unsub();
196
+ });
197
+ });
198
+ });
@@ -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
+ }