@berachain/berajs 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (448) 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} +79 -107
  16. package/dist/actions/{index.d.ts → exports.d.ts} +79 -107
  17. package/dist/actions/exports.mjs +2 -0
  18. package/dist/actions/exports.mjs.map +1 -0
  19. package/dist/chunk-22J3YJDN.cjs +2 -0
  20. package/dist/chunk-22J3YJDN.cjs.map +1 -0
  21. package/dist/chunk-2LL3P5PN.mjs +2 -0
  22. package/dist/chunk-2LL3P5PN.mjs.map +1 -0
  23. package/dist/chunk-3YXSUBA5.mjs +2 -0
  24. package/dist/chunk-3YXSUBA5.mjs.map +1 -0
  25. package/dist/chunk-55L7STYD.mjs +2 -0
  26. package/dist/chunk-55L7STYD.mjs.map +1 -0
  27. package/dist/chunk-575OK77P.mjs +2 -0
  28. package/dist/chunk-575OK77P.mjs.map +1 -0
  29. package/dist/chunk-6LDOG5RL.cjs +2 -0
  30. package/dist/chunk-6LDOG5RL.cjs.map +1 -0
  31. package/dist/chunk-7LNBSOVV.cjs +2 -0
  32. package/dist/chunk-7LNBSOVV.cjs.map +1 -0
  33. package/dist/chunk-7SMWQ6SN.mjs +2 -0
  34. package/dist/chunk-7SMWQ6SN.mjs.map +1 -0
  35. package/dist/chunk-7WRTK7RJ.mjs +2 -0
  36. package/dist/chunk-7WRTK7RJ.mjs.map +1 -0
  37. package/dist/chunk-A4UDYSB6.mjs +4 -0
  38. package/dist/chunk-A4UDYSB6.mjs.map +1 -0
  39. package/dist/chunk-AX2YQQFQ.mjs +2 -0
  40. package/dist/chunk-AX2YQQFQ.mjs.map +1 -0
  41. package/dist/chunk-C3FHGFLK.mjs +2 -0
  42. package/dist/chunk-C3FHGFLK.mjs.map +1 -0
  43. package/dist/chunk-C6ZGUO4H.cjs +2 -0
  44. package/dist/chunk-C6ZGUO4H.cjs.map +1 -0
  45. package/dist/chunk-CYKCYPFR.cjs +2 -0
  46. package/dist/chunk-CYKCYPFR.cjs.map +1 -0
  47. package/dist/chunk-ECRMUMTA.mjs +2 -0
  48. package/dist/chunk-ECRMUMTA.mjs.map +1 -0
  49. package/dist/chunk-F4BKSBEM.mjs +2 -0
  50. package/dist/chunk-F4BKSBEM.mjs.map +1 -0
  51. package/dist/chunk-FCWDGE62.cjs +2 -0
  52. package/dist/chunk-FCWDGE62.cjs.map +1 -0
  53. package/dist/chunk-FL2N3XHK.cjs +2 -0
  54. package/dist/chunk-FL2N3XHK.cjs.map +1 -0
  55. package/dist/chunk-MUCEYO3E.cjs +4 -0
  56. package/dist/chunk-MUCEYO3E.cjs.map +1 -0
  57. package/dist/chunk-NAXAZJJY.mjs +2 -0
  58. package/dist/chunk-NAXAZJJY.mjs.map +1 -0
  59. package/dist/chunk-OGJMSGB2.mjs +2 -0
  60. package/dist/chunk-OGJMSGB2.mjs.map +1 -0
  61. package/dist/chunk-OIYXOKTT.cjs +2 -0
  62. package/dist/chunk-OIYXOKTT.cjs.map +1 -0
  63. package/dist/chunk-P2Q7CMUD.cjs +2 -0
  64. package/dist/chunk-P2Q7CMUD.cjs.map +1 -0
  65. package/dist/chunk-PKXAW6MO.cjs +2 -0
  66. package/dist/chunk-PKXAW6MO.cjs.map +1 -0
  67. package/dist/chunk-Q3SCM6WL.mjs +2 -0
  68. package/dist/chunk-Q3SCM6WL.mjs.map +1 -0
  69. package/dist/chunk-SWMJQOH6.cjs +2 -0
  70. package/dist/chunk-SWMJQOH6.cjs.map +1 -0
  71. package/dist/chunk-TEBJWAVU.mjs +2 -0
  72. package/dist/chunk-TEBJWAVU.mjs.map +1 -0
  73. package/dist/chunk-THATXCJK.mjs +2 -0
  74. package/dist/chunk-THATXCJK.mjs.map +1 -0
  75. package/dist/chunk-VP7XUOSI.cjs +2 -0
  76. package/dist/chunk-VP7XUOSI.cjs.map +1 -0
  77. package/dist/chunk-VXL2ZZ4X.cjs +2 -0
  78. package/dist/chunk-VXL2ZZ4X.cjs.map +1 -0
  79. package/dist/chunk-WRFDB3QJ.cjs +2 -0
  80. package/dist/chunk-WRFDB3QJ.cjs.map +1 -0
  81. package/dist/chunk-XNJLSA6P.cjs +2 -0
  82. package/dist/chunk-XNJLSA6P.cjs.map +1 -0
  83. package/dist/chunk-YXLFOEZN.mjs +2 -0
  84. package/dist/chunk-YXLFOEZN.mjs.map +1 -0
  85. package/dist/chunk-YZV5LKIP.cjs +2 -0
  86. package/dist/chunk-YZV5LKIP.cjs.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.cts → exports.d.cts} +10 -27
  90. package/dist/contexts/{index.d.ts → exports.d.ts} +10 -27
  91. package/dist/contexts/exports.mjs +2 -0
  92. package/dist/contexts/exports.mjs.map +1 -0
  93. package/dist/{defaultFlags-V-tJs2K8.d.cts → defaultFlags-d0kPbT0i.d.cts} +1 -1
  94. package/dist/{defaultFlags-V-tJs2K8.d.ts → defaultFlags-d0kPbT0i.d.ts} +1 -1
  95. package/dist/dex-C_BB0b0O.d.cts +37 -0
  96. package/dist/dex-C_BB0b0O.d.ts +37 -0
  97. package/dist/enum/exports.cjs +2 -0
  98. package/dist/enum/exports.cjs.map +1 -0
  99. package/dist/enum/exports.d.cts +23 -0
  100. package/dist/enum/exports.d.ts +23 -0
  101. package/dist/enum/exports.mjs +2 -0
  102. package/dist/enum/exports.mjs.map +1 -0
  103. package/dist/errors/exports.cjs +2 -0
  104. package/dist/errors/exports.cjs.map +1 -0
  105. package/dist/errors/exports.d.cts +408 -0
  106. package/dist/errors/exports.d.ts +408 -0
  107. package/dist/errors/exports.mjs +2 -0
  108. package/dist/{getValidatorQueuedOperatorAddress-Ne2zoiiV.d.ts → getValidatorQueuedOperatorAddress-Dstyaomr.d.cts} +125 -15
  109. package/dist/{getValidatorQueuedOperatorAddress-9xY2RUGe.d.cts → getValidatorQueuedOperatorAddress-RW4OMcD1.d.ts} +125 -15
  110. package/dist/global.d-CN6l2b9E.d.cts +473 -0
  111. package/dist/global.d-wYu8G8IQ.d.ts +473 -0
  112. package/dist/honey-CYm0RWf4.d.cts +14 -0
  113. package/dist/honey-CYm0RWf4.d.ts +14 -0
  114. package/dist/hooks/exports.cjs +4 -0
  115. package/dist/hooks/exports.cjs.map +1 -0
  116. package/dist/hooks/{index.d.cts → exports.d.cts} +218 -176
  117. package/dist/hooks/{index.d.ts → exports.d.ts} +218 -176
  118. package/dist/hooks/exports.mjs +4 -0
  119. package/dist/hooks/exports.mjs.map +1 -0
  120. package/dist/{txnEnum-BQKDfaeH.d.cts → txnEnum-BlBYhNRl.d.cts} +75 -1
  121. package/dist/{txnEnum-BQKDfaeH.d.ts → txnEnum-BlBYhNRl.d.ts} +75 -1
  122. package/dist/types/exports.cjs +1 -0
  123. package/dist/types/exports.cjs.map +1 -0
  124. package/dist/types/exports.d.cts +57 -0
  125. package/dist/types/exports.d.ts +57 -0
  126. package/dist/types/exports.mjs +1 -0
  127. package/dist/{useHoneySwapState-C-9BV4VB.d.cts → useHoneySwapState-B-vmIP1b.d.cts} +1 -1
  128. package/dist/{useHoneySwapState-CUY5Sm1b.d.ts → useHoneySwapState-D1DKG_Of.d.ts} +1 -1
  129. package/dist/utils/exports.cjs +2 -0
  130. package/dist/utils/exports.cjs.map +1 -0
  131. package/dist/utils/{index.d.cts → exports.d.cts} +83 -20
  132. package/dist/utils/{index.d.ts → exports.d.ts} +83 -20
  133. package/dist/utils/exports.mjs +2 -0
  134. package/dist/utils/exports.mjs.map +1 -0
  135. package/package.json +19 -20
  136. package/src/abi/{index.ts → exports.ts} +3 -0
  137. package/src/abi/pol/LSTStakerVault.ts +2032 -0
  138. package/src/abi/utils/openChainErrors.ts +71 -30
  139. package/src/abi/utils/thirdwebMinimalAccount.ts +616 -0
  140. package/src/actions/clients/BeraApolloClient.ts +8 -6
  141. package/src/actions/dex/__tests__/aggregators.unit.test.ts +2 -5
  142. package/src/actions/dex/aggregators/base.ts +74 -16
  143. package/src/actions/dex/aggregators/bex.ts +54 -74
  144. package/src/actions/dex/aggregators/bgt.ts +31 -8
  145. package/src/actions/dex/aggregators/{enso.ts → enso/enso.ts} +18 -14
  146. package/src/actions/dex/aggregators/enso/ensoErc4626.debug.test.ts +37 -0
  147. package/src/actions/dex/aggregators/enso/ensoErc4626.ts +176 -0
  148. package/src/actions/dex/aggregators/erc4626.ts +122 -0
  149. package/src/actions/dex/aggregators/fly.ts +59 -53
  150. package/src/actions/dex/aggregators/haiku.ts +52 -54
  151. package/src/actions/dex/aggregators/honey.ts +54 -45
  152. package/src/actions/dex/aggregators/kyberswap.ts +41 -39
  153. package/src/actions/dex/aggregators/oogabooga.ts +47 -46
  154. package/src/actions/dex/aggregators/openOcean.ts +51 -46
  155. package/src/actions/dex/aggregators/wbera.ts +54 -42
  156. package/src/actions/dex/b-sdk.ts +5 -2
  157. package/src/actions/dex/getIsTokenExploited.ts +2 -2
  158. package/src/actions/enso/{zap.ts → getEnsoSwapBundle.ts} +4 -5
  159. package/src/actions/enso/getEnsoUserTokensWithBalances.debug.test.ts +73 -0
  160. package/src/actions/enso/{getEnsoUserToken.ts → getEnsoUserTokensWithBalances.ts} +42 -30
  161. package/src/actions/enso/util.ts +1 -1
  162. package/src/actions/{index.ts → exports.ts} +5 -0
  163. package/src/actions/governance/__tests__/checkProposalField.unit.test.ts +1 -1
  164. package/src/actions/governance/__tests__/getQuorum.integration.test.ts +1 -1
  165. package/src/actions/governance/checkProposalField.ts +1 -1
  166. package/src/actions/governance/computeActualStatus.ts +1 -1
  167. package/src/actions/governance/getBodyErrors.ts +1 -1
  168. package/src/actions/governance/getDecodedFunctionData.ts +1 -4
  169. package/src/actions/governance/getProposalDetails.ts +2 -2
  170. package/src/actions/governance/getProposalFromTx.ts +1 -2
  171. package/src/actions/governance/getProposalParams.ts +7 -8
  172. package/src/actions/governance/getQuorum.ts +1 -2
  173. package/src/actions/honey/getCollateralWeights.ts +1 -1
  174. package/src/actions/honey/getHoneyCollaterals.ts +1 -0
  175. package/src/actions/honey/getHoneyVaultsBalance.ts +51 -55
  176. package/src/actions/honey/getSwapPayload.ts +37 -35
  177. package/src/actions/honey/tests/pyth.integration.test.ts +0 -1
  178. package/src/actions/pol/__tests__/getAllValidators.integration.test.ts +1 -1
  179. package/src/actions/pol/getEarnedStakedBeraVault.ts +31 -0
  180. package/src/actions/pol/getGlobalData.ts +14 -13
  181. package/src/actions/pol/getLSTStakeConfig.ts +67 -0
  182. package/src/actions/pol/getMarkets.ts +1 -1
  183. package/src/actions/pol/getRewardProofsByValidator.ts +1 -1
  184. package/src/actions/pol/getRewardVaultIncentives.ts +3 -5
  185. package/src/actions/pol/getRewardVaults.ts +2 -3
  186. package/src/actions/pol/getSWBeraVaultMetadata.ts +7 -5
  187. package/src/actions/pol/getSWBeraWithdrawal.ts +41 -27
  188. package/src/actions/pol/getStakeWithdrawalCooldown.ts +5 -7
  189. package/src/actions/pol/getStakingDailyAssets.ts +24 -0
  190. package/src/actions/pol/getStakingTokenInformation.ts +3 -4
  191. package/src/actions/pol/getTotalStakedAmount.ts +47 -0
  192. package/src/actions/pol/getUserClaimableIncentives.ts +1 -1
  193. package/src/actions/pol/getUserVaults.ts +8 -6
  194. package/src/actions/pol/getUserVaultsBalance.ts +4 -16
  195. package/src/actions/prices/getTokenCurrentPrices.ts +8 -3
  196. package/src/actions/tokens/getAllowances.ts +68 -41
  197. package/src/actions/tokens/getTokenInformation.ts +4 -1
  198. package/src/actions/tokens/getTokens.ts +1 -1
  199. package/src/actions/tokens/getUnderlyingToken.ts +53 -0
  200. package/src/actions/tokens/getWalletBalances.integration.test.ts +53 -14
  201. package/src/actions/tokens/getWalletBalances.ts +69 -43
  202. package/src/actions/transactions/beraWriteContract.integration.test.ts +18 -6
  203. package/src/actions/transactions/beraWriteContract.ts +3 -3
  204. package/src/actions/validators/getUserActiveValidators.ts +2 -3
  205. package/src/actions/validators/getUserBoostsOnValidator.ts +2 -3
  206. package/src/contexts/BeraFlags/defaultFlags.ts +4 -0
  207. package/src/contexts/SwrFallback.tsx +13 -3
  208. package/src/contexts/TokensProvider.tsx +35 -8
  209. package/src/contexts/block-time-provider.tsx +1 -1
  210. package/src/contexts/{index.ts → exports.ts} +0 -1
  211. package/src/data/contracts.ts +17 -2
  212. package/src/enum/contracts.ts +13 -0
  213. package/src/enum/dex.ts +29 -0
  214. package/src/enum/{index.ts → exports.ts} +3 -0
  215. package/src/enum/governance.ts +61 -0
  216. package/src/enum/honey.ts +12 -0
  217. package/src/enum/txnEnum.ts +1 -0
  218. package/src/errors/BeraError.ts +61 -13
  219. package/src/errors/BeraMonitoring.ts +66 -0
  220. package/src/errors/BeraTracing.ts +79 -0
  221. package/src/errors/BeraTracing.unit.test.ts +198 -0
  222. package/src/errors/RequestError.ts +29 -3
  223. package/src/errors/assert.ts +4 -2
  224. package/src/errors/assert.unit.test.ts +6 -2
  225. package/src/errors/errorMap.ts +19 -8
  226. package/src/errors/{index.ts → exports.ts} +7 -0
  227. package/src/errors/getErrorMessage.ts +67 -9
  228. package/src/errors/getRevertReason.integration.test.ts +18 -6
  229. package/src/errors/getRevertReason.ts +41 -2
  230. package/src/errors/initBeraError.ts +52 -7
  231. package/src/errors/parseViemError.ts +114 -27
  232. package/src/errors/severity.ts +12 -0
  233. package/src/hooks/bend/useGetConvertToAssets.ts +3 -2
  234. package/src/hooks/dex/useAggregatorsQuotes.ts +126 -365
  235. package/src/hooks/dex/useAllUserPools.ts +1 -1
  236. package/src/hooks/dex/useApiPool.ts +1 -1
  237. package/src/hooks/dex/useCreatePool.ts +6 -5
  238. package/src/hooks/dex/useExploitedTokens.ts +1 -1
  239. package/src/hooks/dex/useLiquidityMismatch.ts +2 -5
  240. package/src/hooks/dex/useLpPosition.ts +21 -20
  241. package/src/hooks/dex/useMultipleTokenApprovalsWithSlippage.ts +40 -29
  242. package/src/hooks/dex/usePollPoolCreationRelayerApproval.ts +1 -1
  243. package/src/hooks/dex/usePoolEvents.ts +1 -1
  244. package/src/hooks/dex/usePools.ts +1 -1
  245. package/src/hooks/dex/usePriceImpact.ts +40 -0
  246. package/src/hooks/dex/useSingleAggregatorQuote.ts +350 -0
  247. package/src/hooks/enso/useBendZapSupply.ts +216 -0
  248. package/src/hooks/enso/useEnsoSwapBundle.ts +107 -0
  249. package/src/hooks/enso/useEnsoUserTokensWithBalances.ts +43 -0
  250. package/src/hooks/enso/useZapStakeBera.ts +113 -0
  251. package/src/hooks/{index.ts → exports.ts} +17 -10
  252. package/src/hooks/governance/useCreateProposal.ts +8 -8
  253. package/src/hooks/governance/usePollAllProposals.ts +1 -1
  254. package/src/hooks/governance/usePollProposal.ts +1 -1
  255. package/src/hooks/governance/usePollProposalThreshold.ts +1 -1
  256. package/src/hooks/governance/usePollUserDelegates.ts +1 -1
  257. package/src/hooks/governance/useProposalState.ts +2 -2
  258. package/src/hooks/honey/useCappedGlobally.ts +2 -1
  259. package/src/hooks/honey/useCappedRelatively.ts +1 -1
  260. package/src/hooks/honey/useCollateralWeights.ts +2 -1
  261. package/src/hooks/honey/useHoneyAlerts.ts +11 -11
  262. package/src/hooks/honey/useHoneyBalances.ts +7 -3
  263. package/src/hooks/honey/useHoneyGlobalData.ts +2 -1
  264. package/src/hooks/honey/useHoneySwapState.ts +2 -1
  265. package/src/hooks/honey/useHoneyVaultsBalance.ts +1 -1
  266. package/src/hooks/honey/useIsBadCollateralAsset.ts +2 -1
  267. package/src/hooks/honey/useIsBasketModeEnabled.ts +1 -1
  268. package/src/hooks/honey/usePythLatestPrices.ts +1 -1
  269. package/src/hooks/pol/useOnChainRewardVault.ts +3 -2
  270. package/src/hooks/pol/usePollGlobalData.ts +1 -1
  271. package/src/hooks/pol/usePollMarkets.ts +1 -1
  272. package/src/hooks/pol/useQueuedBeraUnlock.ts +17 -15
  273. package/src/hooks/pol/useRewardTokenToBeraRate.ts +6 -3
  274. package/src/hooks/pol/useRewardVault.ts +1 -1
  275. package/src/hooks/pol/useRewardVaults.ts +1 -1
  276. package/src/hooks/pol/useSWBeraVaultMetadata.ts +35 -0
  277. package/src/hooks/pol/useStakedAPR.ts +38 -0
  278. package/src/hooks/pol/useStakedData.ts +117 -0
  279. package/src/hooks/pol/useStakedSnapshots.ts +52 -0
  280. package/src/hooks/pol/useTotalStakedAmount.ts +30 -0
  281. package/src/hooks/pol/useUserVaultInfo.ts +1 -1
  282. package/src/hooks/pol/useVaultValidators.ts +1 -1
  283. package/src/hooks/tokens/useMultipleTokenInformation.ts +15 -6
  284. package/src/hooks/tokens/usePollAllowances.ts +15 -19
  285. package/src/hooks/tokens/usePollBalance.ts +8 -4
  286. package/src/hooks/tokens/usePollWalletBalances.ts +14 -11
  287. package/src/hooks/tokens/useStakingTokenInformation.ts +2 -1
  288. package/src/hooks/tokens/useTokenCurrentPrice.ts +4 -2
  289. package/src/hooks/tokens/useTokenCurrentPrices.ts +92 -13
  290. package/src/hooks/tokens/useTokenInformation.ts +11 -6
  291. package/src/hooks/tokens/useTokenPrice.ts +21 -0
  292. package/src/hooks/tokens/useTokenPrices.ts +133 -0
  293. package/src/hooks/tokens/useTokens.ts +1 -0
  294. package/src/hooks/tokens/useUnderlyingAsset.ts +23 -0
  295. package/src/hooks/useContractWrite/useBeraContractWrite.ts +2 -1
  296. package/src/hooks/validators/useAllValidators.ts +1 -1
  297. package/src/hooks/validators/useApiValidator.ts +1 -1
  298. package/src/hooks/validators/useDailyValidatorBlockStats.ts +1 -1
  299. package/src/hooks/validators/useManagedValidatorByAccount.ts +1 -1
  300. package/src/hooks/validators/useManagedValidatorRole.ts +1 -1
  301. package/src/hooks/validators/useOnChainValidator.ts +1 -1
  302. package/src/hooks/validators/useStakingPoolBatch.ts +1 -1
  303. package/src/hooks/validators/useUserActiveValidators.ts +1 -1
  304. package/src/hooks/validators/useUserBoostsOnValidator.ts +1 -1
  305. package/src/hooks/validators/useUserClaimableIncentives.ts +8 -8
  306. package/src/hooks/validators/useValidator.ts +1 -1
  307. package/src/hooks/validators/useValidatorAnalytics.ts +1 -1
  308. package/src/hooks/validators/useValidatorCommission.ts +1 -1
  309. package/src/hooks/validators/useValidatorQueuedCommission.ts +1 -1
  310. package/src/hooks/validators/useValidatorQueuedOperatorAddress.ts +1 -1
  311. package/src/hooks/validators/useValidatorQueuedRewardAllocation.ts +1 -1
  312. package/src/hooks/validators/useValidatorRewardAllocation.ts +1 -1
  313. package/src/types/{dex.ts → dex.d.ts} +96 -67
  314. package/src/types/{enso.ts → enso.d.ts} +1 -1
  315. package/src/types/exports.ts +8 -0
  316. package/src/types/{global.ts → global.d.ts} +1 -30
  317. package/src/types/{governance.ts → governance.d.ts} +2 -64
  318. package/src/types/{honeySwap.ts → honeySwap.d.ts} +1 -13
  319. package/src/types/{pol.ts → pol.d.ts} +12 -1
  320. package/src/types/staking.d.ts +22 -0
  321. package/src/utils/createEmitter.ts +122 -0
  322. package/src/utils/createEmitter.unit.test.ts +149 -0
  323. package/src/utils/{index.ts → exports.ts} +3 -2
  324. package/src/utils/filter.ts +34 -0
  325. package/src/utils/formatNumber.ts +1 -1
  326. package/src/utils/formatNumber.unit.test.ts +2 -1
  327. package/src/utils/formatTokenList.ts +4 -10
  328. package/src/utils/getHoneySwapMessage.test.ts +1 -2
  329. package/src/utils/getServerSideClient.ts +4 -5
  330. package/src/utils/isDifferenceExceedingThreshold.ts +1 -1
  331. package/src/utils/layerZeroScan.ts +122 -0
  332. package/src/utils/math.ts +1 -1
  333. package/src/utils/parseWhiskToken.ts +15 -0
  334. package/src/utils/poolNamings.ts +1 -1
  335. package/src/utils/tokens.ts +23 -7
  336. package/dist/HoneyConfigProvider-6PXZJMSU.d.cts +0 -562
  337. package/dist/HoneyConfigProvider-CwDFrt02.d.ts +0 -562
  338. package/dist/abi/index.cjs +0 -2
  339. package/dist/abi/index.cjs.map +0 -1
  340. package/dist/abi/index.mjs +0 -2
  341. package/dist/actions/index.cjs +0 -2
  342. package/dist/actions/index.cjs.map +0 -1
  343. package/dist/actions/index.mjs +0 -2
  344. package/dist/aggregatorsRouter-Cny4B_MB.d.cts +0 -593
  345. package/dist/aggregatorsRouter-Cny4B_MB.d.ts +0 -593
  346. package/dist/chunk-22MQVFHP.cjs +0 -2
  347. package/dist/chunk-22MQVFHP.cjs.map +0 -1
  348. package/dist/chunk-3TKSVFZ3.mjs +0 -2
  349. package/dist/chunk-3TKSVFZ3.mjs.map +0 -1
  350. package/dist/chunk-6VF3RF53.cjs +0 -3
  351. package/dist/chunk-6VF3RF53.cjs.map +0 -1
  352. package/dist/chunk-6W22TFYA.mjs +0 -2
  353. package/dist/chunk-6W22TFYA.mjs.map +0 -1
  354. package/dist/chunk-AMRJ4B36.mjs +0 -2
  355. package/dist/chunk-AMRJ4B36.mjs.map +0 -1
  356. package/dist/chunk-DS2ZDVKU.mjs +0 -2
  357. package/dist/chunk-DS2ZDVKU.mjs.map +0 -1
  358. package/dist/chunk-ED43NYSE.cjs +0 -2
  359. package/dist/chunk-ED43NYSE.cjs.map +0 -1
  360. package/dist/chunk-EU4WFADK.cjs +0 -2
  361. package/dist/chunk-EU4WFADK.cjs.map +0 -1
  362. package/dist/chunk-HCTFDGXL.mjs +0 -2
  363. package/dist/chunk-HCTFDGXL.mjs.map +0 -1
  364. package/dist/chunk-IOSYBHKU.mjs +0 -2
  365. package/dist/chunk-IOSYBHKU.mjs.map +0 -1
  366. package/dist/chunk-JMKLDDKY.cjs +0 -2
  367. package/dist/chunk-JMKLDDKY.cjs.map +0 -1
  368. package/dist/chunk-KMKUXP2S.mjs +0 -3
  369. package/dist/chunk-KMKUXP2S.mjs.map +0 -1
  370. package/dist/chunk-OJXJ6CZ4.mjs +0 -4
  371. package/dist/chunk-OJXJ6CZ4.mjs.map +0 -1
  372. package/dist/chunk-PHIOKO3A.mjs +0 -2
  373. package/dist/chunk-PHIOKO3A.mjs.map +0 -1
  374. package/dist/chunk-QCK474XD.cjs +0 -2
  375. package/dist/chunk-QCK474XD.cjs.map +0 -1
  376. package/dist/chunk-REDXXUK7.cjs +0 -2
  377. package/dist/chunk-REDXXUK7.cjs.map +0 -1
  378. package/dist/chunk-S74ZMG2G.cjs +0 -2
  379. package/dist/chunk-S74ZMG2G.cjs.map +0 -1
  380. package/dist/chunk-TOAXF4YW.cjs +0 -2
  381. package/dist/chunk-TOAXF4YW.cjs.map +0 -1
  382. package/dist/chunk-UZ5CB33M.cjs +0 -2
  383. package/dist/chunk-UZ5CB33M.cjs.map +0 -1
  384. package/dist/chunk-VYWYJR63.mjs +0 -2
  385. package/dist/chunk-VYWYJR63.mjs.map +0 -1
  386. package/dist/chunk-XFPTQMAK.cjs +0 -4
  387. package/dist/chunk-XFPTQMAK.cjs.map +0 -1
  388. package/dist/chunk-YK4NINF5.mjs +0 -2
  389. package/dist/chunk-YK4NINF5.mjs.map +0 -1
  390. package/dist/contexts/index.cjs +0 -2
  391. package/dist/contexts/index.cjs.map +0 -1
  392. package/dist/contexts/index.mjs +0 -2
  393. package/dist/contexts/index.mjs.map +0 -1
  394. package/dist/enum/index.cjs +0 -2
  395. package/dist/enum/index.cjs.map +0 -1
  396. package/dist/enum/index.d.cts +0 -31
  397. package/dist/enum/index.d.ts +0 -31
  398. package/dist/enum/index.mjs +0 -2
  399. package/dist/enum/index.mjs.map +0 -1
  400. package/dist/errors/index.cjs +0 -2
  401. package/dist/errors/index.cjs.map +0 -1
  402. package/dist/errors/index.d.cts +0 -204
  403. package/dist/errors/index.d.ts +0 -204
  404. package/dist/errors/index.mjs +0 -2
  405. package/dist/errors/index.mjs.map +0 -1
  406. package/dist/hooks/index.cjs +0 -4
  407. package/dist/hooks/index.cjs.map +0 -1
  408. package/dist/hooks/index.mjs +0 -4
  409. package/dist/hooks/index.mjs.map +0 -1
  410. package/dist/staking-F9Nx9TKD.d.ts +0 -246
  411. package/dist/staking-f4BpYH7l.d.cts +0 -246
  412. package/dist/types/index.cjs +0 -2
  413. package/dist/types/index.cjs.map +0 -1
  414. package/dist/types/index.d.cts +0 -56
  415. package/dist/types/index.d.ts +0 -56
  416. package/dist/types/index.mjs +0 -2
  417. package/dist/types/index.mjs.map +0 -1
  418. package/dist/utils/index.cjs +0 -2
  419. package/dist/utils/index.cjs.map +0 -1
  420. package/dist/utils/index.mjs +0 -2
  421. package/dist/utils/index.mjs.map +0 -1
  422. package/src/actions/dex/getTransactionCount.ts +0 -29
  423. package/src/actions/enso/bend.ts +0 -143
  424. package/src/actions/enso/getEnsoUserToken.debug.test.ts +0 -57
  425. package/src/contexts/berajsProvider/context.tsx +0 -49
  426. package/src/contexts/berajsProvider/index.ts +0 -2
  427. package/src/contexts/berajsProvider/useBeraJs.ts +0 -18
  428. package/src/hooks/dex/usePollVaultIsPaused.ts +0 -30
  429. package/src/hooks/enso/useBendTransactionRequests.ts +0 -247
  430. package/src/hooks/enso/useEnsoZap.ts +0 -166
  431. package/src/hooks/enso/useZapTransactionRequests.ts +0 -81
  432. package/src/hooks/pol/useEarnedStakedBeraVault.ts +0 -59
  433. package/src/hooks/pol/useStakedBeraSnapshots.ts +0 -27
  434. package/src/hooks/transactions/TransactionStoreContext.tsx +0 -59
  435. package/src/hooks/transactions/transactionStore.ts +0 -275
  436. package/src/hooks/transactions/transactionStore.unit.test.ts +0 -508
  437. package/src/hooks/transactions/useAddRecentTransaction.ts +0 -29
  438. package/src/hooks/transactions/useRecentTransactions.ts +0 -27
  439. package/src/hooks/validators/validatorRoleManager.ts +0 -0
  440. package/src/types/index.ts +0 -8
  441. package/src/types/staking.ts +0 -7
  442. package/src/utils/formatAggregatorsQuotes.ts +0 -57
  443. package/src/utils/formatAggregatorsQuotes.unit.test.ts +0 -191
  444. package/src/utils/sentryBeforeSend.ts +0 -52
  445. /package/dist/{abi/index.mjs.map → errors/exports.mjs.map} +0 -0
  446. /package/dist/{actions/index.mjs.map → types/exports.mjs.map} +0 -0
  447. /package/src/actions/dex/{__tests__ → aggregators}/haiku.integration.test.ts +0 -0
  448. /package/src/types/{bribe-boost.ts → bribe-boost.d.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/errors/errorMap.ts","../src/errors/getErrorMessage.ts","../src/errors/BeraError.ts","../src/abi/utils/bundler3errors.ts","../src/abi/utils/erc20errors.ts","../src/abi/utils/openChainErrors.ts","../src/abi/utils/commonAbiErrors.ts","../src/errors/parseViemError.ts"],"names":["GENERAL_ERROR","errorMsgMap","getErrorMessage","reason","message","category","errors","type","errorType","r","keyword","bundler3errorsAbi","erc20errorsAbi","openChainErrorsAbi","commonAbiErrors","isBaseError","error","BaseError","isViemError","name","shouldBeInstanceOf","parseDecodedError","parseViemError","abi","revertIfUnknown","cause","ContractFunctionExecutionError","TransactionExecutionError","AtomicReadyWalletRejectedUpgradeError","RpcRequestError","decodedError","decodeErrorResult","ContractFunctionRevertedError","UserRejectedRequestError","HttpRequestError","rpcErrorToReason","errCode"],"mappings":"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","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-JMKLDDKY.cjs","sourcesContent":["export interface ErrorType {\n /**\n * Keywords to match in the error message. Use carefully. Do not use this for contract revert reasons\n * as they might match to other error messages.\n *\n * For instance InsufficientBalance might match to InsufficientBalanceToPayPythFee if used as keyword.\n */\n keywords?: string[];\n /**\n * The exact error code or contract revert reason.\n */\n reasons?: string[];\n errorMSG: string;\n}\n\nexport interface ErrorCategory {\n [key: string]: ErrorType;\n}\n\nexport interface ErrorMessages {\n [key: string]: ErrorCategory | string;\n}\n\nexport const GENERAL_ERROR = \"Something went wrong. Please try again later.\";\n\nexport const errorMsgMap = {\n ERC20: {\n NOT_ENOUGH_BALANCE: {\n reasons: [\"NotEnoughBalance\"],\n errorMSG: \"You do not have enough balance to perform this action.\",\n },\n InsufficientBalance: {\n reasons: [\"InsufficientBalance\"],\n errorMSG: \"Insufficient token balance\",\n },\n INSUFFICIENT_ALLOWANCE: {\n reasons: [\n \"0x13be252b\",\n \"InsufficientAllowance\",\n \"ERC20InsufficientAllowance\",\n ],\n errorMSG: \"You do not have enough allowance to perform this action.\",\n },\n SIGNATURE_EXPIRED: {\n reasons: [\"SignatureExpired\"],\n errorMSG: \"Transaction took too long to complete. Please try again.\",\n },\n },\n HTTP: {\n RATE_LIMITED_429: {\n reasons: [\"429\"],\n errorMSG: \"Too many requests. Please try again later.\",\n },\n },\n ENSO: {\n COULD_NOT_BUILD_SHORTCUT: {\n keywords: [\n \"Could not build shortcuts for route\",\n \"Could not quote shortcuts for route\",\n ],\n\n errorMSG:\n \"There was an error building the zap route. Try with lower amounts.\",\n },\n NOT_ENOUGH_LIQUIDITY: {\n keywords: [\n \"Swap not found for a required underlying of defi route, please make sure your amountIn is within an acceptable range\",\n ],\n\n errorMSG:\n \"The amount you’re trying to swap might be too high. Please make sure that your amount is within an acceptable range.\",\n },\n NO_ROUTE_FOUND: {\n keywords: [\"No route found from\"],\n errorMSG: \"No swap route found for the given tokens.\",\n },\n },\n RPC: {\n INSUFFICIENT_FUNDS: {\n reasons: [\"InsufficientFundsError\"],\n keywords: [\n \"The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account.\",\n ],\n errorMSG: \"Insufficient BERA balance to perform this action.\",\n },\n GAS_PRICE: {\n keywords: [\"gasLimit\"],\n errorMSG:\n \"It seems an RPC error has occurred while estimating gas. Please try your request later.\",\n },\n JSON_RPC: {\n keywords: [\"JSON-RPC\"],\n\n errorMSG:\n \"It seems an RPC error has occurred. Please try your request one more later.\",\n },\n // ETH_GETBALANCE: {\n // keywords: \"eth_getBalance\",\n // err: \"An RPC error has been detected. Please attempt your request after a short while.\",\n // },\n HASH: {\n keywords: [\"hash\"],\n\n errorMSG:\n \"It seems an RPC error has occurred. Please check if your transaction was finalized. If not, please try again.\",\n },\n USER_REJECTION: {\n reasons: [\"UserRejectedRequestError\"],\n keywords: [\"User denied transaction signature\"],\n errorMSG: \"You rejected the transaction.\",\n },\n SMART_UPGRADE_REJECTION: {\n reasons: [\"AtomicReadyWalletRejectedUpgradeError\"],\n errorMSG:\n \"You've declined to upgrade to batch transactions for now, try again for the traditional method.\",\n },\n CHAIN_MISMATCH: {\n reasons: [\"ChainMismatchError\"],\n errorMSG:\n \"Wallet seems to be on the wrong chain, please refresh the page and try again.\",\n },\n },\n HONEY: {\n BLACKLISTED_WALLET: {\n reasons: [\"BlacklistedWallet\", \"0x265693b4\"],\n errorMSG: \"Your wallet is blacklisted from minting or redeeming HONEY.\",\n },\n LIQUIDITY_ERROR: {\n reasons: [\"0x4656425a\"],\n errorMSG:\n \"You are trying to redeem more than the liquidity available in the vault.\",\n },\n },\n // NOTE: these codes are from https://github.com/balancer/balancer-v2-monorepo/blob/master/pkg/balancer-js/src/utils/errors.ts\n // ... and additionally from https://docs.balancer.fi/reference/contracts/error-codes.html\n // NOTE: descriptions are generated by GPT where not available.\n BEX: {\n SLIPPAGE_EXCEEDED: {\n reasons: [\"SlippageExceeded\"],\n errorMSG:\n \"Price changed while executing the transaction and exceeded the allowed slippage.\",\n },\n // math\n BAL000: {\n reasons: [\"BAL#000\"],\n errorMSG: \"Addition overflow occurred during calculation. (BEX#000)\",\n },\n BAL001: {\n reasons: [\"BAL#001\"],\n errorMSG: \"Subtraction overflow occurred during calculation. (BEX#001)\",\n },\n BAL002: {\n reasons: [\"BAL#002\"],\n errorMSG: \"Subtraction underflow occurred during calculation. (BEX#002)\",\n },\n BAL003: {\n reasons: [\"BAL#003\"],\n errorMSG:\n \"Multiplication overflow occurred during calculation. (BEX#003)\",\n },\n BAL004: {\n reasons: [\"BAL#004\"],\n errorMSG: \"Attempted division by zero. (BEX#004)\",\n },\n BAL005: {\n reasons: [\"BAL#005\"],\n errorMSG: \"Multiplication overflow during FixedPoint Division. (BEX#005)\",\n },\n BAL006: {\n reasons: [\"BAL#006\"],\n errorMSG: \"Invalid x in ExpMath.pow(x, y). (BEX#006)\",\n },\n BAL007: {\n reasons: [\"BAL#007\"],\n errorMSG: \"Invalid y in ExpMath.pow(x, y). (BEX#007)\",\n },\n BAL008: {\n reasons: [\"BAL#008\"],\n errorMSG:\n \"In LogExpMath.pow(x, y), error computing x^y as exp(y * ln(x)). (BEX#008)\",\n },\n BAL009: {\n reasons: [\"BAL#009\"],\n errorMSG: \"In LogExpMath.exp(x) = e^x; x out of bounds. (BEX#009)\",\n },\n // Input\n BAL100: {\n reasons: [\"BAL#100\"],\n errorMSG: \"Value is out of acceptable bounds. (BEX#100)\",\n },\n BAL101: {\n reasons: [\"BAL#101\"],\n errorMSG:\n \"Tokens must be sorted in address order on pool registration. (BEX#101)\",\n },\n BAL102: {\n reasons: [\"BAL#102\"],\n errorMSG:\n \"Tokens must be sorted in address order on pool registration. (BEX#102)\",\n },\n BAL103: {\n reasons: [\"BAL#103\"],\n errorMSG: \"Parallel array inputs must have the same length. (BEX#103)\",\n },\n BAL104: {\n reasons: [\"BAL#104\"],\n errorMSG: \"Address to be interpreted as a token cannot be 0. (BEX#104)\",\n },\n BAL105: {\n reasons: [\"BAL#105\"],\n errorMSG: \"Insufficient byte length. (BEX#105)\",\n },\n // Shared Pools\n BAL200: {\n reasons: [\"BAL#200\"],\n errorMSG: \"All pools must contain at least two tokens. (BEX#200)\",\n },\n BAL201: {\n reasons: [\"BAL#201\"],\n errorMSG:\n \"Token count exceeds the maximum for a given pool type. (BEX#201)\",\n },\n BAL202: {\n reasons: [\"BAL#202\"],\n errorMSG: \"Swap fee percentage exceeds the maximum allowed. (BEX#202)\",\n },\n BAL203: {\n reasons: [\"BAL#203\"],\n errorMSG: \"Swap fee percentage is below the minimum allowed. (BEX#203)\",\n },\n BAL204: {\n reasons: [\"BAL#204\"],\n errorMSG:\n \"Pool initialization failed: a small amount of BPT is minted to the zero address to maintain mathematical consistency. If initial balances are too low, the initialization process may fail. (BEX#204)\",\n },\n BAL205: {\n reasons: [\"BAL#205\"],\n errorMSG:\n \"User attempted to execute a callback intended for the vault contract. (BEX#205)\",\n },\n BAL206: {\n reasons: [\"BAL#206\"],\n errorMSG:\n \"Pools must be initialized with a special 'Init' join, before they can be joined by LPs. (BEX#206)\",\n },\n BAL207: {\n reasons: [\"BAL#207\"],\n errorMSG:\n \"Slippage/front-running protection check failed on a pool exit. (BEX#207)\",\n },\n BAL208: {\n reasons: [\"BAL#208\"],\n errorMSG: \"Minimum BPT output amount not met. (BEX#208)\",\n },\n BAL209: {\n reasons: [\"BAL#209\"],\n errorMSG:\n \"Slippage/front-running protection check failed on a pool join. (BEX#209)\",\n },\n BAL210: {\n reasons: [\"BAL#210\"],\n errorMSG:\n \"Pools with oracles are limited to two tokens. A pool with the TWO_TOKEN specialization must have exactly two tokens. (BEX#210)\",\n },\n BAL211: {\n reasons: [\"BAL#211\"],\n errorMSG:\n \"The pool factory is disabled and new pools cannot be created at this time. (BEX#211)\",\n },\n // Pools\n BAL300: {\n reasons: [\"BAL#300\"],\n errorMSG:\n \"The amplification parameter is below the minimum allowed. (BEX#300)\",\n },\n BAL301: {\n reasons: [\"BAL#301\"],\n errorMSG:\n \"The amplification parameter exceeds the maximum allowed. (BEX#301)\",\n },\n BAL302: {\n reasons: [\"BAL#302\"],\n errorMSG: \"The weight parameter is below the minimum allowed. (BEX#302)\",\n },\n BAL303: {\n reasons: [\"BAL#303\"],\n errorMSG:\n \"The number of stable tokens exceeds the maximum allowed. (BEX#303)\",\n },\n BAL304: {\n reasons: [\"BAL#304\"],\n errorMSG: \"The amount of tokens in would unbalance the pool. (BEX#304)\",\n },\n BAL305: {\n reasons: [\"BAL#305\"],\n errorMSG: \"The amount of tokens out would unbalance the pool. (BEX#305)\",\n },\n BAL306: {\n reasons: [\"BAL#306\"],\n errorMSG:\n \"Disproportionate pool exit would unbalance the pool. (BEX#306)\",\n },\n BAL307: {\n reasons: [\"BAL#307\"],\n errorMSG:\n \"Disproportionate pool join would unbalance the pool. (BEX#307)\",\n },\n BAL308: {\n reasons: [\"BAL#308\"],\n errorMSG: \"Normalized weights do not add to 1.0 exactly. (BEX#308)\",\n },\n BAL309: {\n reasons: [\"BAL#309\"],\n errorMSG: \"Invalid token provided for operation. (BEX#309)\",\n },\n BAL310: {\n reasons: [\"BAL#310\"],\n errorMSG: \"Unhandled pool join operation for this pool type. (BEX#310)\",\n },\n BAL311: {\n reasons: [\"BAL#311\"],\n errorMSG: \"Pool balances must be > 0. (BEX#311)\",\n },\n BAL312: {\n reasons: [\"BAL#312\"],\n errorMSG:\n \"Invalid query for oracle data ('ago' timestamp was not in the past). (BEX#312)\",\n },\n BAL313: {\n reasons: [\"BAL#313\"],\n errorMSG: \"Oracle has no data to query. (BEX#313)\",\n },\n BAL314: {\n reasons: [\"BAL#314\"],\n errorMSG:\n \"Oracle query data is before its earliest data sample. (BEX#314)\",\n },\n BAL315: {\n reasons: [\"BAL#315\"],\n errorMSG:\n \"Cannot query an oracle sample outside the buffer of 1024. (BEX#315)\",\n },\n BAL316: {\n reasons: [\"BAL#316\"],\n errorMSG: \"Oracle query window must have non-zero duration. (BEX#316)\",\n },\n BAL317: {\n reasons: [\"BAL#317\"],\n errorMSG:\n \"Amplification parameter change has less than the minimum duration. (BEX#317)\",\n },\n BAL318: {\n reasons: [\"BAL#318\"],\n errorMSG:\n \"Cannot start an amplification parameter update if one is already ongoing. (BEX#318)\",\n },\n BAL319: {\n reasons: [\"BAL#319\"],\n errorMSG:\n \"The requested amplification parameter change is too fast (cannot halve or double over less than a day). (BEX#319)\",\n },\n BAL320: {\n reasons: [\"BAL#320\"],\n errorMSG:\n \"Cannot cancel an update if there isn't one already ongoing. (BEX#320)\",\n },\n BAL321: {\n reasons: [\"BAL#321\"],\n errorMSG: \"Stable pool invariant calculation did not converge. (BEX#321)\",\n },\n BAL322: {\n reasons: [\"BAL#322\"],\n errorMSG: \"Stable pool balance calculation did not converge. (BEX#322)\",\n },\n BAL323: {\n reasons: [\"BAL#323\"],\n errorMSG: \"Relayer must be a valid contract. (BEX#323)\",\n },\n BAL324: {\n reasons: [\"BAL#324\"],\n errorMSG: \"Base pool relayer was not called correctly. (BEX#324)\",\n },\n BAL325: {\n reasons: [\"BAL#325\"],\n errorMSG:\n \"Rebalancing relayer operation re-entered unexpectedly. (BEX#325)\",\n },\n BAL326: {\n reasons: [\"BAL#326\"],\n errorMSG:\n \"Detected time travel in gradual updates (start > end time in a gradual weights update). (BEX#326)\",\n },\n BAL327: {\n reasons: [\"BAL#327\"],\n errorMSG: \"Swaps are disabled for this pool. (BEX#327)\",\n },\n BAL328: {\n reasons: [\"BAL#328\"],\n errorMSG: \"Caller is not the owner of the LBP. (BEX#328)\",\n },\n BAL329: {\n reasons: [\"BAL#329\"],\n errorMSG:\n \"Rate returned from a rateProvider must fit within 128 bits. (BEX#329)\",\n },\n BAL330: {\n reasons: [\"BAL#330\"],\n errorMSG:\n \"Investment pools only allow proportional joins and exits when swaps are disabled (to prevent unbalancing the pool). (BEX#330)\",\n },\n BAL331: {\n reasons: [\"BAL#331\"],\n errorMSG:\n \"Gradual weight update duration too short (minimum 1 day). (BEX#331)\",\n },\n BAL332: {\n reasons: [\"BAL#332\"],\n errorMSG: \"Invalid Linear Pool operating range. (BEX#332)\",\n },\n BAL333: {\n reasons: [\"BAL#333\"],\n errorMSG: \"Linear Pool max balance must fit in 112 bits. (BEX#333)\",\n },\n BAL334: {\n reasons: [\"BAL#334\"],\n errorMSG:\n \"Unhandled pool join/exit operation for linear pool type. (BEX#334)\",\n },\n BAL335: {\n reasons: [\"BAL#335\"],\n errorMSG:\n \"Cannot reset Linear Pool targets if pool is unbalanced. (BEX#335)\",\n },\n BAL336: {\n reasons: [\"BAL#336\"],\n errorMSG: \"Unhandled pool exit operation for this pool type. (BEX#336)\",\n },\n BAL337: {\n reasons: [\"BAL#337\"],\n errorMSG:\n \"Management fees can only be collected by the pool owner. (BEX#337)\",\n },\n BAL338: {\n reasons: [\"BAL#338\"],\n errorMSG:\n \"Management swap fee percentage exceeded the maximum. (BEX#338)\",\n },\n BAL339: {\n reasons: [\"BAL#339\"],\n errorMSG:\n \"Unhandled pool join/exit operation for managed pool type. (BEX#339)\",\n },\n BAL340: {\n reasons: [\"BAL#340\"],\n errorMSG:\n \"Unhandled pool join/exit operation for phantom pool type. (BEX#340)\",\n },\n BAL341: {\n reasons: [\"BAL#341\"],\n errorMSG: \"Token does not have a valid rate provider. (BEX#341)\",\n },\n BAL342: {\n reasons: [\"BAL#342\"],\n errorMSG: \"Invalid pool initialization parameters provided. (BEX#342)\",\n },\n BAL343: {\n reasons: [\"BAL#343\"],\n errorMSG:\n \"Value is out of the new target range for the operation. (BEX#343)\",\n },\n BAL344: {\n reasons: [\"BAL#344\"],\n errorMSG: \"This feature is currently disabled. (BEX#344)\",\n },\n BAL345: {\n reasons: [\"BAL#345\"],\n errorMSG: \"The pool controller is uninitialized. (BEX#345)\",\n },\n BAL346: {\n reasons: [\"BAL#346\"],\n errorMSG: \"Cannot set swap fee during an ongoing fee change. (BEX#346)\",\n },\n BAL347: {\n reasons: [\"BAL#347\"],\n errorMSG: \"Cannot set swap fee during pending fee changes. (BEX#347)\",\n },\n BAL348: {\n reasons: [\"BAL#348\"],\n errorMSG: \"Cannot change tokens during a weight change. (BEX#348)\",\n },\n BAL349: {\n reasons: [\"BAL#349\"],\n errorMSG: \"Cannot change tokens during pending weight changes. (BEX#349)\",\n },\n BAL350: {\n reasons: [\"BAL#350\"],\n errorMSG: \"Weight parameter exceeds the maximum allowed. (BEX#350)\",\n },\n BAL351: {\n reasons: [\"BAL#351\"],\n errorMSG: \"Unauthorized join operation. (BEX#351)\",\n },\n BAL352: {\n reasons: [\"BAL#352\"],\n errorMSG:\n \"Management AUM fee percentage exceeded the maximum allowed. (BEX#352)\",\n },\n BAL353: {\n reasons: [\"BAL#353\"],\n errorMSG: \"Fractional target values are not supported. (BEX#353)\",\n },\n BAL354: {\n reasons: [\"BAL#354\"],\n errorMSG:\n \"Adding or removing BPT is not allowed in this context. (BEX#354)\",\n },\n BAL355: {\n reasons: [\"BAL#355\"],\n errorMSG: \"Invalid circuit breaker bounds configuration. (BEX#355)\",\n },\n BAL356: {\n reasons: [\"BAL#356\"],\n errorMSG: \"The circuit breaker has been triggered. (BEX#356)\",\n },\n BAL357: {\n reasons: [\"BAL#357\"],\n errorMSG: \"Malicious query detected and reverted. (BEX#357)\",\n },\n BAL358: {\n reasons: [\"BAL#358\"],\n errorMSG:\n \"Joins and exits are currently disabled for this pool. (BEX#358)\",\n },\n // Lib\n BAL400: {\n reasons: [\"BAL#400\"],\n errorMSG: \"Reentrancy detected. (BEX#400)\",\n },\n BAL401: {\n reasons: [\"BAL#401\"],\n errorMSG: \"The sender is not allowed to perform this action. (BEX#401)\",\n },\n BAL402: {\n reasons: [\"BAL#402\"],\n errorMSG: \"The contract is currently paused. (BEX#402)\",\n },\n BAL403: {\n reasons: [\"BAL#403\"],\n errorMSG: \"The pause window has expired. (BEX#403)\",\n },\n BAL404: {\n reasons: [\"BAL#404\"],\n errorMSG:\n \"The maximum pause window duration has been exceeded. (BEX#404)\",\n },\n BAL405: {\n reasons: [\"BAL#405\"],\n errorMSG:\n \"The maximum buffer period duration has been exceeded. (BEX#405)\",\n },\n BAL406: {\n reasons: [\"BAL#406\"],\n errorMSG: \"The account has insufficient balance. (BEX#406)\",\n },\n BAL407: {\n reasons: [\"BAL#407\"],\n errorMSG: \"The account has insufficient allowance. (BEX#407)\",\n },\n BAL408: {\n reasons: [\"BAL#408\"],\n errorMSG: \"ERC20: Transfer from zero address. (BEX#408)\",\n },\n BAL409: {\n reasons: [\"BAL#409\"],\n errorMSG: \"ERC20: Transfer to zero address. (BEX#409)\",\n },\n BAL410: {\n reasons: [\"BAL#410\"],\n errorMSG: \"ERC20: Mint to zero address. (BEX#410)\",\n },\n BAL411: {\n reasons: [\"BAL#411\"],\n errorMSG: \"ERC20: Burn from zero address. (BEX#411)\",\n },\n BAL412: {\n reasons: [\"BAL#412\"],\n errorMSG: \"ERC20: Approve from zero address. (BEX#412)\",\n },\n BAL413: {\n reasons: [\"BAL#413\"],\n errorMSG: \"ERC20: Approve to zero address. (BEX#413)\",\n },\n BAL414: {\n reasons: [\"BAL#414\"],\n errorMSG: \"ERC20: Transfer exceeds allowance. (BEX#414)\",\n },\n BAL415: {\n reasons: [\"BAL#415\"],\n errorMSG: \"ERC20: Decreased allowance below zero. (BEX#415)\",\n },\n BAL416: {\n reasons: [\"BAL#416\"],\n errorMSG: \"ERC20: Transfer exceeds balance. (BEX#416)\",\n },\n BAL417: {\n reasons: [\"BAL#417\"],\n errorMSG: \"ERC20: Burn exceeds allowance. (BEX#417)\",\n },\n BAL418: {\n reasons: [\"BAL#418\"],\n errorMSG: \"SafeERC20: Call failed. (BEX#418)\",\n },\n BAL419: {\n reasons: [\"BAL#419\"],\n errorMSG: \"Address has insufficient balance. (BEX#419)\",\n },\n BAL420: {\n reasons: [\"BAL#420\"],\n errorMSG: \"Address cannot send value. (BEX#420)\",\n },\n BAL421: {\n reasons: [\"BAL#421\"],\n errorMSG: \"SafeCast: Value cannot fit into int256. (BEX#421)\",\n },\n BAL422: {\n reasons: [\"BAL#422\"],\n errorMSG: \"AccessControl: Grant sender is not an admin. (BEX#422)\",\n },\n BAL423: {\n reasons: [\"BAL#423\"],\n errorMSG: \"AccessControl: Revoke sender is not an admin. (BEX#423)\",\n },\n BAL424: {\n reasons: [\"BAL#424\"],\n errorMSG:\n \"AccessControl: Renounce sender not allowed for accounts other than self. (BEX#424)\",\n },\n BAL425: {\n reasons: [\"BAL#425\"],\n errorMSG: \"Buffer period has expired. (BEX#425)\",\n },\n BAL426: {\n reasons: [\"BAL#426\"],\n errorMSG: \"Caller is not the owner. (BEX#426)\",\n },\n BAL427: {\n reasons: [\"BAL#427\"],\n errorMSG: \"New owner cannot be zero address. (BEX#427)\",\n },\n BAL428: {\n reasons: [\"BAL#428\"],\n errorMSG: \"Code deployment failed. (BEX#428)\",\n },\n BAL429: {\n reasons: [\"BAL#429\"],\n errorMSG: \"Call to non-contract address. (BEX#429)\",\n },\n BAL430: {\n reasons: [\"BAL#430\"],\n errorMSG: \"Low-level call failed. (BEX#430)\",\n },\n BAL431: {\n reasons: [\"BAL#431\"],\n errorMSG: \"The contract is not paused. (BEX#431)\",\n },\n BAL432: {\n reasons: [\"BAL#432\"],\n errorMSG: \"Address is already allowlisted. (BEX#432)\",\n },\n BAL433: {\n reasons: [\"BAL#433\"],\n errorMSG: \"Address is not allowlisted. (BEX#433)\",\n },\n BAL434: {\n reasons: [\"BAL#434\"],\n errorMSG: \"ERC20: Burn exceeds balance. (BEX#434)\",\n },\n BAL435: {\n reasons: [\"BAL#435\"],\n errorMSG: \"Invalid operation. (BEX#435)\",\n },\n BAL436: {\n reasons: [\"BAL#436\"],\n errorMSG: \"Codec overflow detected. (BEX#436)\",\n },\n BAL437: {\n reasons: [\"BAL#437\"],\n errorMSG: \"The system is in recovery mode. (BEX#437)\",\n },\n BAL438: {\n reasons: [\"BAL#438\"],\n errorMSG: \"The system is not in recovery mode. (BEX#438)\",\n },\n BAL439: {\n reasons: [\"BAL#439\"],\n errorMSG: \"Induced failure. (BEX#439)\",\n },\n BAL440: {\n reasons: [\"BAL#440\"],\n errorMSG: \"Expired signature. (BEX#440)\",\n },\n BAL441: {\n reasons: [\"BAL#441\"],\n errorMSG: \"Malformed signature. (BEX#441)\",\n },\n BAL442: {\n reasons: [\"BAL#442\"],\n errorMSG: \"SafeCast: Value cannot fit into uint64. (BEX#442)\",\n },\n BAL443: {\n reasons: [\"BAL#443\"],\n errorMSG: \"Unhandled fee type. (BEX#443)\",\n },\n BAL444: {\n reasons: [\"BAL#444\"],\n errorMSG: \"ERC20: Burn from zero address. (BEX#444)\",\n },\n // Vault\n BAL500: {\n reasons: [\"BAL#500\"],\n errorMSG: \"Invalid pool ID. (BEX#500)\",\n },\n BAL501: {\n reasons: [\"BAL#501\"],\n errorMSG: \"Caller is not the pool. (BEX#501)\",\n },\n BAL502: {\n reasons: [\"BAL#502\"],\n errorMSG: \"Sender is not the asset manager. (BEX#502)\",\n },\n BAL503: {\n reasons: [\"BAL#503\"],\n errorMSG: \"User does not allow the relayer. (BEX#503)\",\n },\n BAL504: {\n reasons: [\"BAL#504\"],\n errorMSG: \"Invalid signature. (BEX#504)\",\n },\n BAL505: {\n reasons: [\"BAL#505\"],\n errorMSG: \"Exit would yield fewer than the minimum tokens out. (BEX#505)\",\n },\n BAL506: {\n reasons: [\"BAL#506\"],\n errorMSG: \"Join would cost more than the maximum tokens in. (BEX#506)\",\n },\n BAL507: {\n reasons: [\"BAL#507\"],\n errorMSG: \"Swap violates user-supplied limits. (BEX#507)\",\n },\n BAL508: {\n reasons: [\"BAL#508\"],\n errorMSG: \"Swap transaction not mined within the deadline. (BEX#508)\",\n },\n BAL509: {\n reasons: [\"BAL#509\"],\n errorMSG: \"Cannot swap the same token. (BEX#509)\",\n },\n BAL510: {\n reasons: [\"BAL#510\"],\n errorMSG: \"Unknown amount in the first swap of a batch. (BEX#510)\",\n },\n BAL511: {\n reasons: [\"BAL#511\"],\n errorMSG: \"Malconstructed multihop swap. (BEX#511)\",\n },\n BAL512: {\n reasons: [\"BAL#512\"],\n errorMSG: \"Internal balance overflow. (BEX#512)\",\n },\n BAL513: {\n reasons: [\"BAL#513\"],\n errorMSG: \"Insufficient internal balance. (BEX#513)\",\n },\n BAL514: {\n reasons: [\"BAL#514\"],\n errorMSG: \"Invalid BERA internal balance. (BEX#514)\",\n },\n BAL515: {\n reasons: [\"BAL#515\"],\n errorMSG:\n \"Flashloan must repay the loan in the same transaction. (BEX#515)\",\n },\n BAL516: {\n reasons: [\"BAL#516\"],\n errorMSG: \"Insufficient BERA balance. (BEX#516)\",\n },\n BAL517: {\n reasons: [\"BAL#517\"],\n errorMSG: \"Unallocated BERA. (BEX#517)\",\n },\n BAL518: {\n reasons: [\"BAL#518\"],\n errorMSG:\n \"Relayers cannot receive BERA directly (only through the Vault). (BEX#518)\",\n },\n BAL519: {\n reasons: [\"BAL#519\"],\n errorMSG: \"Cannot use BERA sentinel for internal balance. (BEX#519)\",\n },\n BAL520: {\n reasons: [\"BAL#520\"],\n errorMSG: \"Tokens mismatch. (BEX#520)\",\n },\n BAL521: {\n reasons: [\"BAL#521\"],\n errorMSG: \"Token is not registered. (BEX#521)\",\n },\n BAL522: {\n reasons: [\"BAL#522\"],\n errorMSG: \"Token is already registered. (BEX#522)\",\n },\n BAL523: {\n reasons: [\"BAL#523\"],\n errorMSG: \"Tokens are already set. (BEX#523)\",\n },\n BAL524: {\n reasons: [\"BAL#524\"],\n errorMSG: \"Tokens length must be 2. (BEX#524)\",\n },\n BAL525: {\n reasons: [\"BAL#525\"],\n errorMSG: \"Nonzero token balance detected. (BEX#525)\",\n },\n BAL526: {\n reasons: [\"BAL#526\"],\n errorMSG: \"Balance total overflow detected. (BEX#526)\",\n },\n BAL527: {\n reasons: [\"BAL#527\"],\n errorMSG: \"Pool has no tokens. (BEX#527)\",\n },\n BAL528: {\n reasons: [\"BAL#528\"],\n errorMSG: \"Insufficient flash loan balance. (BEX#528)\",\n },\n // Fees\n BAL600: {\n reasons: [\"BAL#600\"],\n errorMSG: \"Swap fee percentage is too high. (BEX#600)\",\n },\n BAL601: {\n reasons: [\"BAL#601\"],\n errorMSG: \"Flash loan fee percentage is too high. (BEX#601)\",\n },\n BAL602: {\n reasons: [\"BAL#602\"],\n errorMSG: \"Insufficient flash loan fee amount. (BEX#602)\",\n },\n // FeeSplitter\n BAL700: {\n reasons: [\"BAL#700\"],\n errorMSG: \"Splitter fee percentage is too high. (BEX#700)\",\n },\n // Misc\n BAL998: {\n reasons: [\"BAL#998\"],\n errorMSG: \"Unimplemented functionality. (BEX#998)\",\n },\n BAL999: {\n reasons: [\"BAL#999\"],\n errorMSG: \"An unexpected error occurred. (BEX#999)\",\n },\n // SoR swap paths\n NO_SWAP_PATHS: {\n keywords: [\"No swap paths returned\"],\n errorMSG: \"No swap paths were found.\",\n },\n },\n AGGREGATOR: {\n NOT_ENOUGH_LIQUIDITY: {\n keywords: [\"Not enough liquidity\"],\n errorMSG: \"Not enough liquidity. Try a lower amount.\",\n },\n },\n POL: {\n REWARD_VAULT_FACTORY: {\n reasons: [\"VaultAlreadyExists\"],\n errorMSG:\n \"Failed to create action. An action already exists with this staking token.\",\n },\n NOT_REWARD_VAULT_MANAGER: {\n reasons: [\"NotRewardVaultManager\"],\n errorMSG: \"You are not the manager of this action.\",\n },\n NOT_INCENTIVE_MANAGER: {\n reasons: [\"NotIncentiveManager\"],\n errorMSG: \"You are not the incentive manager of this token.\",\n },\n DURATION_CHANGE_NOT_ALLOWED: {\n reasons: [\"DurationChangeNotAllowed\"],\n errorMSG: \"You cannot change the duration of this action.\",\n },\n INVALID_PROOF: {\n reasons: [\"InvalidProof\"],\n errorMSG: \"Tokens already claimed or invalid proof.\",\n },\n CONTRACT_PAUSED: {\n reasons: [\"EnforcedPause\"],\n errorMSG: \"The contract you're interacting with is temporarily paused.\",\n },\n DISTRIBUTION_PAUSED: {\n reasons: [\"DistributionEnforcedPause\"],\n errorMSG: \"Distribution is temporarily paused.\",\n },\n INVALID_VALIDATOR_COMMISSION: {\n reasons: [\"InvalidCommissionValue\"],\n errorMSG: \"Invalid commission percentage.\",\n },\n NOT_REWARD_ALLOCATOR: {\n reasons: [\"NotRewardAllocator\"],\n errorMSG: \"You are not the reward allocator of this validator.\",\n },\n NOT_OPERATOR: {\n reasons: [\"NotOperator\"],\n errorMSG: \"You are not the operator of this validator.\",\n },\n INVALID_REWARD_ALLOCATION: {\n reasons: [\"InvalidRewardAllocationWeights\"],\n errorMSG: \"Invalid reward allocation weights.\",\n },\n NOT_REWARD_DURATION_MANAGER: {\n reasons: [\"NotRewardDurationManager\"],\n errorMSG: \"You are not the reward duration manager of this validator.\",\n },\n },\n BEND: {\n INSUFFICIENT_POSITION: {\n keywords: [\"insufficient position\"],\n errorMSG: \"Insufficient position\",\n },\n INSUFFICIENT_LIQUIDITY: {\n keywords: [\"insufficient liquidity on market\"],\n errorMSG: \"Insufficient liquidity on market.\",\n },\n ALL_CAPS_REACHED: {\n reasons: [\"AllCapsReached\"],\n errorMSG: \"All caps reached on vault.\",\n },\n AboveMaxTimelock: {\n reasons: [\"AboveMaxTimelock\"],\n errorMSG: \"Above max timelock\",\n },\n AddressEmptyCode: {\n reasons: [\"AddressEmptyCode\"],\n errorMSG: \"Address empty code\",\n },\n AddressInsufficientBalance: {\n reasons: [\"AddressInsufficientBalance\"],\n errorMSG: \"Address insufficient balance\",\n },\n AllCapsReached: {\n reasons: [\"AllCapsReached\"],\n errorMSG: \"All caps reached\",\n },\n AlreadyPending: {\n reasons: [\"AlreadyPending\"],\n errorMSG: \"Already pending\",\n },\n AlreadySet: {\n reasons: [\"AlreadySet\"],\n errorMSG: \"Already set\",\n },\n BelowMinTimelock: {\n reasons: [\"BelowMinTimelock\"],\n errorMSG: \"Below min timelock\",\n },\n DuplicateMarket: {\n reasons: [\"DuplicateMarket\"],\n errorMSG: \"Duplicate market\",\n },\n ECDSAInvalidSignature: {\n reasons: [\"ECDSAInvalidSignature\"],\n errorMSG: \"Invalid ECDSA signature\",\n },\n ECDSAInvalidSignatureLength: {\n reasons: [\"ECDSAInvalidSignatureLength\"],\n errorMSG: \"Invalid ECDSA signature length\",\n },\n ECDSAInvalidSignatureS: {\n reasons: [\"ECDSAInvalidSignatureS\"],\n errorMSG: \"Invalid ECDSA signature S value\",\n },\n ERC20InsufficientBalance: {\n reasons: [\"ERC20InsufficientBalance\"],\n errorMSG: \"ERC20 insufficient balance\",\n },\n ERC20InvalidApprover: {\n reasons: [\"ERC20InvalidApprover\"],\n errorMSG: \"ERC20 invalid approver\",\n },\n ERC20InvalidReceiver: {\n reasons: [\"ERC20InvalidReceiver\"],\n errorMSG: \"ERC20 invalid receiver\",\n },\n ERC20InvalidSender: {\n reasons: [\"ERC20InvalidSender\"],\n errorMSG: \"ERC20 invalid sender\",\n },\n ERC20InvalidSpender: {\n reasons: [\"ERC20InvalidSpender\"],\n errorMSG: \"ERC20 invalid spender\",\n },\n ERC2612ExpiredSignature: {\n reasons: [\"ERC2612ExpiredSignature\"],\n errorMSG: \"ERC2612 expired signature\",\n },\n ERC2612InvalidSigner: {\n reasons: [\"ERC2612InvalidSigner\"],\n errorMSG: \"ERC2612 invalid signer\",\n },\n ERC4626ExceededMaxDeposit: {\n reasons: [\"ERC4626ExceededMaxDeposit\"],\n errorMSG: \"ERC4626 exceeded max deposit\",\n },\n ERC4626ExceededMaxMint: {\n reasons: [\"ERC4626ExceededMaxMint\"],\n errorMSG: \"ERC4626 exceeded max mint\",\n },\n ERC4626ExceededMaxRedeem: {\n reasons: [\"ERC4626ExceededMaxRedeem\"],\n errorMSG: \"ERC4626 exceeded max redeem\",\n },\n ERC4626ExceededMaxWithdraw: {\n reasons: [\"ERC4626ExceededMaxWithdraw\"],\n errorMSG: \"ERC4626 exceeded max withdraw\",\n },\n FailedInnerCall: {\n reasons: [\"FailedInnerCall\"],\n errorMSG: \"Failed inner call\",\n },\n InconsistentAsset: {\n reasons: [\"InconsistentAsset\"],\n errorMSG: \"Inconsistent asset\",\n },\n InconsistentReallocation: {\n reasons: [\"InconsistentReallocation\"],\n errorMSG: \"Inconsistent reallocation\",\n },\n InvalidAccountNonce: {\n reasons: [\"InvalidAccountNonce\"],\n errorMSG: \"Invalid account nonce\",\n },\n InvalidMarketRemovalNonZeroCap: {\n reasons: [\"InvalidMarketRemovalNonZeroCap\"],\n errorMSG: \"Invalid market removal (non-zero cap)\",\n },\n InvalidMarketRemovalNonZeroSupply: {\n reasons: [\"InvalidMarketRemovalNonZeroSupply\"],\n errorMSG: \"Invalid market removal (non-zero supply)\",\n },\n InvalidMarketRemovalTimelockNotElapsed: {\n reasons: [\"InvalidMarketRemovalTimelockNotElapsed\"],\n errorMSG: \"Invalid market removal (timelock not elapsed)\",\n },\n InvalidShortString: {\n reasons: [\"InvalidShortString\"],\n errorMSG: \"Invalid short string\",\n },\n MarketNotCreated: {\n reasons: [\"MarketNotCreated\"],\n errorMSG: \"Market not created\",\n },\n MarketNotEnabled: {\n reasons: [\"MarketNotEnabled\"],\n errorMSG: \"Market not enabled\",\n },\n MathOverflowedMulDiv: {\n reasons: [\"MathOverflowedMulDiv\"],\n errorMSG: \"Math overflow\",\n },\n MaxFeeExceeded: {\n reasons: [\"MaxFeeExceeded\"],\n errorMSG: \"Max fee exceeded\",\n },\n MaxQueueLengthExceeded: {\n reasons: [\"MaxQueueLengthExceeded\"],\n errorMSG: \"Max queue length exceeded\",\n },\n NoPendingValue: {\n reasons: [\"NoPendingValue\"],\n errorMSG: \"No pending value\",\n },\n NonZeroCap: {\n reasons: [\"NonZeroCap\"],\n errorMSG: \"Non-zero cap\",\n },\n NotAllocatorRole: {\n reasons: [\"NotAllocatorRole\"],\n errorMSG: \"Not allocator role\",\n },\n NotCuratorNorGuardianRole: {\n reasons: [\"NotCuratorNorGuardianRole\"],\n errorMSG: \"Not curator or guardian role\",\n },\n NotCuratorRole: {\n reasons: [\"NotCuratorRole\"],\n errorMSG: \"Not curator role\",\n },\n NotEnoughLiquidity: {\n reasons: [\"NotEnoughLiquidity\"],\n errorMSG: \"Not enough liquidity\",\n },\n NotGuardianRole: {\n reasons: [\"NotGuardianRole\"],\n errorMSG: \"Not guardian role\",\n },\n OwnableInvalidOwner: {\n reasons: [\"OwnableInvalidOwner\"],\n errorMSG: \"Invalid owner\",\n },\n OwnableUnauthorizedAccount: {\n reasons: [\"OwnableUnauthorizedAccount\"],\n errorMSG: \"Unauthorized account\",\n },\n PendingCap: {\n reasons: [\"PendingCap\"],\n errorMSG: \"Pending cap\",\n },\n PendingRemoval: {\n reasons: [\"PendingRemoval\"],\n errorMSG: \"Pending removal\",\n },\n SafeCastOverflowedUintDowncast: {\n reasons: [\"SafeCastOverflowedUintDowncast\"],\n errorMSG: \"SafeCast overflow\",\n },\n SafeERC20FailedOperation: {\n reasons: [\"SafeERC20FailedOperation\"],\n errorMSG: \"SafeERC20 failed operation\",\n },\n StringTooLong: {\n reasons: [\"StringTooLong\"],\n errorMSG: \"String too long\",\n },\n SupplyCapExceeded: {\n reasons: [\"SupplyCapExceeded\"],\n errorMSG: \"Supply cap exceeded\",\n },\n TimelockNotElapsed: {\n reasons: [\"TimelockNotElapsed\"],\n errorMSG: \"Timelock not elapsed\",\n },\n UnauthorizedMarket: {\n reasons: [\"UnauthorizedMarket\"],\n errorMSG: \"Unauthorized market\",\n },\n ZeroAddress: {\n reasons: [\"ZeroAddress\"],\n errorMSG: \"Zero address\",\n },\n ZeroFeeRecipient: {\n reasons: [\"ZeroFeeRecipient\"],\n errorMSG: \"Zero fee recipient\",\n },\n },\n} as const satisfies ErrorMessages;\n","import { type ErrorCategory, errorMsgMap, GENERAL_ERROR } from \"./errorMap\";\n\nexport function getErrorMessage({\n reason,\n message,\n}: {\n reason?: string | null;\n message?: string;\n}): string {\n // Check against defined categories\n for (const category in errorMsgMap) {\n // Just for type safety\n const categoryKey = category as keyof typeof errorMsgMap;\n\n const errors = errorMsgMap[categoryKey] as ErrorCategory;\n\n for (const type in errors) {\n const errorType = errors[type];\n\n if (reason) {\n if (\n errorType?.reasons?.some((r) => {\n return r === reason;\n })\n ) {\n return errorType.errorMSG;\n }\n }\n if (\n errorType?.keywords?.some((keyword) => {\n return message?.includes(keyword.toLowerCase().trim());\n })\n ) {\n return errorType.errorMSG;\n }\n }\n }\n\n return GENERAL_ERROR;\n}\n","import type * as Sentry from \"@sentry/nextjs\";\nimport { type Abi, BaseError } from \"viem\";\n\nimport { appConfig } from \"@berachain/config/internal\";\n\nimport { GENERAL_ERROR } from \"./errorMap\";\nimport { getErrorMessage } from \"./getErrorMessage\";\nimport { parseViemError, rpcErrorToReason } from \"./parseViemError\";\n\nexport interface IBeraErrorArgs {\n message?: string;\n displayMessage?: string;\n cause?: unknown;\n reason?: string;\n chainId?: number;\n /**\n * The level of the error to be used for Sentry.\n */\n level?: Sentry.SeverityLevel;\n tags?: {\n [key in TagsKey]?: Primitive;\n };\n extra?: Record<string, unknown>;\n /**\n * Optional ABI to be used to parse the error.\n */\n abi?: Abi;\n}\n\n/**\n * Copy pasted from sentry types\n */\ntype Primitive = number | string | boolean | bigint | symbol | null | undefined;\n\n/**\n * An helper type to make sure we only use the allowed tags. Sync this with docs/errors.md\n */\ntype TagsKey =\n | \"wallet.chain\"\n | \"wallet.connector\"\n | \"wallet.address\"\n | \"error.reason\"\n | \"operation.type\"\n | \"operation.key\"\n | \"operation.txn.functionName\"\n | \"operation.txn.to\"\n | \"operation.txn.status\"\n | \"operation.source.url\"\n | \"operation.source.name\"\n | \"operation.source.queryName\"\n | \"operation.source.type\";\n\n/**\n * This is a generic error class that can be used to handle errors in the SDK.\n */\nexport class BeraError extends Error {\n /**\n * A human-readable message that can be displayed to end user.\n *\n * In berachain dapps, this is shown in the error pop-up.\n */\n displayMessage: string;\n\n /**\n * The cause of the error.\n *\n * This is typically the error that was thrown.\n */\n cause: unknown;\n\n /**\n * The chain id of the error.\n */\n chainId?: number;\n\n /**\n * The code for the reason for the error.\n *\n * This is typically the error code can be found in the errorMap.ts file. I.e. NotEnoughBalance or BAL#508\n */\n reason: string | null = null;\n\n private _tags: {\n [key: string | TagsKey]: Primitive;\n } = {};\n\n set tags(tags: {\n [key: string | TagsKey]: Primitive;\n }) {\n this._tags = tags;\n }\n\n get tags(): {\n [key: string | TagsKey]: Primitive;\n } {\n return {\n ...this._tags,\n \"error.displayMessage\": this.displayMessage,\n \"error.reason\": this.reason,\n \"error.level\": this.level,\n };\n }\n\n level: Sentry.SeverityLevel = \"error\";\n\n extra: Record<string, unknown> = {};\n\n constructor({\n message: m,\n displayMessage: dm,\n cause,\n reason,\n level,\n abi,\n tags,\n chainId,\n }: IBeraErrorArgs) {\n let message = m;\n\n if (!message) {\n if (cause instanceof BaseError) {\n // Using shortMesage as it doesn't include the payload.\n message = cause.shortMessage;\n } else if (cause instanceof Error) {\n message = cause.message;\n } else if (\n typeof cause === \"object\" &&\n cause !== null &&\n \"message\" in cause &&\n typeof cause.message === \"string\"\n ) {\n // this covers responses from HTTP requests\n message = cause.message;\n }\n }\n super(message, {\n cause,\n });\n\n this.name = \"BeraError\";\n\n this.cause = cause;\n\n this.chainId = chainId;\n\n if (reason) {\n this.reason = reason;\n } else if (cause instanceof Error) {\n try {\n const parsed = parseViemError({\n error: cause,\n revertIfUnknown: true,\n abi,\n });\n\n this.reason = parsed?.reason ?? null;\n } catch {\n // Maybe we can do something here\n }\n }\n\n if (level) {\n this.level = level;\n } else if (this.reason === rpcErrorToReason(\"UserRejectedRequestError\")) {\n this.level = \"info\";\n } else {\n this.level = \"error\";\n }\n\n let displayMessage = dm;\n\n if (\n this.cause instanceof BeraError &&\n this.cause.displayMessage !== GENERAL_ERROR\n ) {\n // If the cause is a BeraError, use the displayMessage of the cause\n displayMessage = this.cause.displayMessage;\n }\n\n // Skip if displayMessage is already provided\n if (!displayMessage) {\n displayMessage = getErrorMessage(this);\n }\n\n this.displayMessage = displayMessage ?? GENERAL_ERROR;\n\n this.tags = {\n ...this.tags,\n ...tags,\n };\n // Useful for debugging in development or on vercel preview links\n if (!appConfig.env.isProduction && process.env.NODE_ENV !== \"test\") {\n console.group(\"BeraError thrown\");\n console.debug(\"Level\", this.level);\n console.debug(\"Reason\", this.reason);\n console.debug(\"Message\", this.message);\n console.debug(\"Display Message\", this.displayMessage);\n console.debug(\"Cause\", this.cause);\n console.groupEnd();\n }\n }\n}\n","export const bundler3errorsAbi = [\n { inputs: [], name: \"AlreadyInitiated\", type: \"error\" },\n { inputs: [], name: \"EmptyBundle\", type: \"error\" },\n { inputs: [], name: \"IncorrectReenterHash\", type: \"error\" },\n { inputs: [], name: \"MissingExpectedReenter\", type: \"error\" },\n] as const;\n","/**\n * A list of ERC20 error codes according to eip-6093 and solady.\n *\n * This is needed since viem erc20Abi does not include error codes.\n */\nexport const erc20errorsAbi = [\n { inputs: [], name: \"AllowanceOverflow\", type: \"error\" },\n { inputs: [], name: \"AllowanceUnderflow\", type: \"error\" },\n { inputs: [], name: \"ETHTransferFailed\", type: \"error\" },\n { inputs: [], name: \"InsufficientAllowance\", type: \"error\" },\n { inputs: [], name: \"InsufficientBalance\", type: \"error\" },\n { inputs: [], name: \"InvalidPermit\", type: \"error\" },\n { inputs: [], name: \"Permit2AllowanceIsFixedAtInfinity\", type: \"error\" },\n { inputs: [], name: \"PermitExpired\", type: \"error\" },\n { inputs: [], name: \"TotalSupplyOverflow\", type: \"error\" },\n { name: \"AllowanceOverflow\", type: \"error\", inputs: [] },\n { name: \"AllowanceUnderflow\", type: \"error\", inputs: [] },\n { name: \"InsufficientAllowance\", type: \"error\", inputs: [] },\n { name: \"InsufficientBalance\", type: \"error\", inputs: [] },\n { name: \"InvalidPermit\", type: \"error\", inputs: [] },\n { name: \"Permit2AllowanceIsFixedAtInfinity\", type: \"error\", inputs: [] },\n { name: \"PermitExpired\", type: \"error\", inputs: [] },\n { name: \"TotalSupplyOverflow\", type: \"error\", inputs: [] },\n { name: \"ECDSAInvalidSignature\", type: \"error\", inputs: [] },\n {\n name: \"ECDSAInvalidSignatureLength\",\n type: \"error\",\n inputs: [{ type: \"uint256\" }],\n },\n {\n name: \"ECDSAInvalidSignatureS\",\n type: \"error\",\n inputs: [{ type: \"bytes32\" }],\n },\n {\n name: \"ERC20InsufficientAllowance\",\n type: \"error\",\n inputs: [{ type: \"address\" }, { type: \"uint256\" }, { type: \"uint256\" }],\n },\n {\n name: \"ERC20InsufficientBalance\",\n type: \"error\",\n inputs: [{ type: \"address\" }, { type: \"uint256\" }, { type: \"uint256\" }],\n },\n {\n name: \"ERC20InvalidApprover\",\n type: \"error\",\n inputs: [{ type: \"address\" }],\n },\n {\n name: \"ERC20InvalidReceiver\",\n type: \"error\",\n inputs: [{ type: \"address\" }],\n },\n { name: \"ERC20InvalidSender\", type: \"error\", inputs: [{ type: \"address\" }] },\n { name: \"ERC20InvalidSpender\", type: \"error\", inputs: [{ type: \"address\" }] },\n {\n name: \"ERC2612ExpiredSignature\",\n type: \"error\",\n inputs: [{ type: \"uint256\" }],\n },\n {\n name: \"ERC2612InvalidSigner\",\n type: \"error\",\n inputs: [{ type: \"address\" }, { type: \"address\" }],\n },\n {\n name: \"InvalidAccountNonce\",\n type: \"error\",\n inputs: [{ type: \"address\" }, { type: \"uint256\" }],\n },\n { name: \"InvalidShortString\", type: \"error\", inputs: [] },\n { name: \"StringTooLong\", type: \"error\", inputs: [{ type: \"string\" }] },\n] as const;\n","export const openChainErrorsAbi = [\n {\n name: \"StalePrice\",\n type: \"error\",\n inputs: [],\n },\n {\n name: \"InsufficientAmountOut\",\n type: \"error\",\n inputs: [],\n },\n {\n name: \"ERC721NonexistentToken\",\n type: \"error\",\n inputs: [\n {\n type: \"uint256\",\n },\n ],\n },\n {\n name: \"ERC20InsufficientAllowance\",\n type: \"error\",\n inputs: [\n {\n type: \"address\",\n },\n {\n type: \"uint256\",\n },\n {\n type: \"uint256\",\n },\n ],\n },\n {\n name: \"AllowanceExpired\",\n type: \"error\",\n inputs: [\n {\n type: \"uint256\",\n },\n ],\n },\n {\n name: \"ERC4626ExceededMaxWithdraw\",\n type: \"error\",\n inputs: [\n {\n type: \"address\",\n },\n {\n type: \"uint256\",\n },\n {\n type: \"uint256\",\n },\n ],\n },\n {\n name: \"SlippageExceeded\",\n type: \"error\",\n inputs: [],\n },\n {\n name: \"NotPegged\",\n type: \"error\",\n inputs: [\n {\n type: \"address\",\n },\n ],\n },\n {\n name: \"TransferFromFailed\",\n type: \"error\",\n inputs: [],\n },\n {\n name: \"RedeemMoreThanMax\",\n type: \"error\",\n inputs: [],\n },\n {\n name: \"ExecutionFailed\",\n type: \"error\",\n inputs: [\n {\n type: \"uint256\",\n },\n {\n type: \"address\",\n },\n {\n type: \"string\",\n },\n ],\n },\n {\n name: \"SlippageExceeded\",\n type: \"error\",\n inputs: [\n {\n type: \"uint256\",\n },\n {\n type: \"uint256\",\n },\n ],\n },\n {\n name: \"SignatureExpired\",\n type: \"error\",\n inputs: [\n {\n type: \"uint256\",\n },\n ],\n },\n {\n name: \"zeroAmountRequired\",\n type: \"error\",\n inputs: [],\n },\n {\n name: \"ExpiredTransaction\",\n type: \"error\",\n inputs: [],\n },\n {\n name: \"FailedToCallFunction\",\n type: \"error\",\n inputs: [\n {\n type: \"bytes\",\n },\n ],\n },\n] as const;\n","import { bundler3errorsAbi } from \"./bundler3errors\";\nimport { erc20errorsAbi } from \"./erc20errors\";\nimport { openChainErrorsAbi } from \"./openChainErrors\";\n\nexport const commonAbiErrors = [\n ...erc20errorsAbi,\n ...bundler3errorsAbi,\n ...openChainErrorsAbi,\n] as const;\n","import {\n type Abi,\n AtomicReadyWalletRejectedUpgradeError,\n BaseError,\n ContractFunctionExecutionError,\n ContractFunctionRevertedError,\n type DecodeErrorResultReturnType,\n decodeErrorResult,\n HttpRequestError,\n type ProviderRpcErrorCode,\n RpcRequestError,\n TransactionExecutionError,\n UserRejectedRequestError,\n} from \"viem\";\n\nimport { commonAbiErrors } from \"~/abi/utils/commonAbiErrors\";\n\nfunction isBaseError(error: unknown): error is BaseError {\n if (error instanceof BaseError) {\n return true;\n }\n\n if (\n error instanceof Error &&\n \"shortMessage\" in error &&\n \"message\" in error &&\n \"details\" in error\n ) {\n return true;\n }\n\n return false;\n}\n\nfunction isViemError<T extends Error>(\n error: Error,\n name: T[\"name\"],\n shouldBeInstanceOf: new (...args: any[]) => T,\n): error is T {\n if (error instanceof shouldBeInstanceOf) {\n return true;\n }\n\n if (error.name === name) {\n return true;\n }\n\n return false;\n}\n\nexport function parseDecodedError<const abi extends Abi | readonly unknown[]>(\n error: DecodeErrorResultReturnType<abi>,\n): string | undefined {\n if (\n error.errorName === \"Error\" &&\n Array.isArray(error.args) &&\n error.args?.at(0)\n ) {\n // this is a solidity error thrown by `revert` and the message is the first argument\n // for other errors, we return the error name\n return error.args?.at(0) as string;\n }\n\n return error.errorName;\n}\n\n/**\n * Parses errors thrown by `publicClient.simulateContract` or `publicClient.call`.\n *\n * @returns error code if available, otherwise signature or a message from the error.\n */\nexport function parseViemError({\n error,\n abi,\n /**\n * If true, error is thrown if the revert reason is not a CallExecutionError or ContractFunctionExecutionError\n */\n revertIfUnknown = true,\n}: {\n error: Error;\n abi?: Abi;\n revertIfUnknown: boolean;\n}): {\n reason: string | undefined;\n rootCause: unknown;\n /**\n * If true, the error is a request error.\n */\n isRequestError?: boolean;\n} {\n if (!isBaseError(error)) {\n if (revertIfUnknown) {\n throw error;\n }\n\n if (error instanceof BaseError) {\n return { reason: error.shortMessage, rootCause: error };\n }\n\n return { reason: error.message, rootCause: error };\n }\n\n let cause: unknown = error;\n\n while (isBaseError(cause)) {\n if (\n isViemError(\n cause,\n \"ContractFunctionExecutionError\",\n ContractFunctionExecutionError,\n )\n ) {\n // let's skip to the deeper cause\n cause = cause.cause;\n\n continue;\n }\n\n if (\n isViemError(cause, \"TransactionExecutionError\", TransactionExecutionError)\n ) {\n if (cause.cause instanceof AtomicReadyWalletRejectedUpgradeError) {\n return {\n reason: \"AtomicReadyWalletRejectedUpgradeError\",\n rootCause: cause.cause,\n };\n }\n }\n /**\n * This error is likely to be thrown by publicClient.call. In this case no args are provided when sending tx\n * but if ABI was provided, we can decode the error from the data\n *\n * In theory, we get here from CallExecutionError -> ExecutionRevertedError -> RpcRequestError\n */\n if (isViemError(cause, \"RpcRequestError\", RpcRequestError)) {\n if (!cause.data) {\n if (\n typeof cause.cause === \"object\" &&\n cause.cause &&\n \"message\" in cause.cause &&\n typeof cause.cause.message === \"string\"\n ) {\n // this covers special cases\n return { reason: cause.cause.message, rootCause: cause.cause };\n }\n\n throw new Error(\"No data\", { cause });\n }\n\n const decodedError = decodeErrorResult({\n data: cause.data as `0x${string}`,\n abi: [...commonAbiErrors, ...(abi ?? [])],\n });\n\n return {\n reason: parseDecodedError(decodedError) ?? cause.shortMessage,\n rootCause: cause,\n };\n }\n\n /**\n * This error is likely to be thrown by publicClient.simulateContract.\n * In this case, we can decode the error from the data\n *\n * In theory, we get here from ContractFunctionExecutionError -> ContractFunctionRevertedError\n */\n if (\n isViemError(\n cause,\n \"ContractFunctionRevertedError\",\n ContractFunctionRevertedError,\n )\n ) {\n // If error is not found in the abi, reason is undefined\n // In this case, we return the signature\n return {\n reason:\n cause.reason ??\n cause.signature ??\n cause.data?.errorName ??\n cause.shortMessage,\n rootCause: cause,\n };\n }\n\n if (\n isViemError(cause, \"UserRejectedRequestError\", UserRejectedRequestError)\n ) {\n return { reason: \"UserRejectedRequestError\", rootCause: cause };\n }\n\n if (isViemError(cause, \"HttpRequestError\", HttpRequestError)) {\n return {\n reason: `HttpRequestError(status:${cause.status})`,\n rootCause: cause,\n isRequestError: true,\n };\n }\n\n if (!cause.cause) {\n return { reason: cause.name, rootCause: cause };\n }\n\n cause = cause.cause;\n }\n\n if (!revertIfUnknown) {\n return { reason: undefined, rootCause: cause };\n }\n\n // Cannot use BeraError here because of circular dependency\n throw new Error(\"UnknownErrorInGetRevertReason\", {\n cause: cause,\n });\n}\n\n/**\n * Returns the error code thrown by RpcError.\n *\n * @see {@link RpcError}\n * @param errCode - The error code to get the name for.\n * @returns The name of the error code.\n */\nexport function rpcErrorToReason(\n errCode:\n | number\n | ProviderRpcErrorCode\n // Here we add errors for which we know the code\n | \"UserRejectedRequestError\",\n): string {\n switch (errCode) {\n // Actually this should not get here if UserRejectedRequestError is thrown\n case \"UserRejectedRequestError\":\n case 4001:\n return \"UserRejectedRequestError\";\n default:\n return `RPC_ERROR_${errCode}`;\n }\n}\n"]}
@@ -1,3 +0,0 @@
1
- import{a as P,b as k,f as C}from"./chunk-VYWYJR63.mjs";import{f as b}from"./chunk-HCTFDGXL.mjs";import{createContext as O,useContext as q}from"react";import{isFlagEnabled as J}from"@berachain/config/internal/edge-config";import{jsx as X}from"react/jsx-runtime";var v=O(void 0);function be({children:e,flags:t,aggregators:o,swberaAprWindow:r="DAY"}){return X(v.Provider,{value:{...P,...t,aggregators:o?Object.entries(o).filter(([,n])=>J(n)).map(([n])=>n):void 0,swberaAprWindow:r},children:e})}function K(){let e=q(v);if(!e)throw new Error("BeraFlagsProvider not found");return e}function ke(e){return K()[e]}import{createContext as _,useContext as U,useState as Y}from"react";import{jsx as $}from"react/jsx-runtime";var S=_({protocol:{isPaused:!1,factories:{composableStable:"enabled",weighted:"enabled",allPaused:!1}},onPoolChange:()=>{},pool:void 0});function Be(){let e=U(S);if(!e)throw new b({level:"fatal",message:"BexStateContext is not defined"});return e}function Le({children:e,isVaultPaused:t,labels:o,factories:r}){let[n,s]=Y(),l=(n?.isPaused&&!n?.isInRecoveryMode)??!1,i=t||n?.isPaused;return $(S.Provider,{value:{protocol:{isPaused:t,factories:{...r,allPaused:r.composableStable==="paused"&&r.weighted==="paused"}},labels:o,onPoolChange:s,pool:n?{...n,disablePoolWithdrawals:!!l,disablePoolDeposits:!!i}:void 0},children:e})}import{getPublicClient as j}from"@wagmi/core";var L="rk-transactions",F="transactions";function w(e){try{let t=e?JSON.parse(e):{};return typeof t=="object"?t:{}}catch{return{}}}function z(e){return Object.entries(e).reduce((t,[o,r])=>({...t,[o]:Object.entries(r).reduce((n,[s,l])=>{if(!l)return n;let i=l.map(p=>({...p,chainId:Number(s)}));return n.push(...i),n},[])}),{})}var h=(e,t,o)=>o.findIndex(r=>r.hash===e.hash)===t;function G(e,t){let o=z(e);for(let[r,n]of Object.entries(t))o[r]&&n?o[r]=[...n,...o[r]].filter(h):o[r]=n?.filter(h);return o}function B(){let e=w(typeof localStorage<"u"?localStorage.getItem(L):null),t=w(typeof localStorage<"u"?localStorage.getItem(F):null);return G(e,t)}var Q=/^0x([A-Fa-f0-9]{64})$/;function V(e){let t=[];return Q.test(e.hash)||t.push("Invalid transaction hash"),typeof e.description!="string"&&t.push("Transaction must have a description"),typeof e.confirmations<"u"&&(!Number.isInteger(e.confirmations)||e.confirmations<1)&&t.push("Transaction confirmations must be a positiver integer"),t}function R({config:e}){let t=B(),o=new Set,r=new Map;function n(a){return t[a]??[]}function s(a,d){let f=V(d);if(f.length>0)throw new Error(["Unable to add transaction",...f].join(`
2
- `));g(a,c=>[{...d,status:"pending"},...c.filter(({hash:u})=>u!==d.hash)])}function l(a){g(a,()=>[])}function i(a,d,f){g(a,c=>c.map(u=>u.hash===d?{...u,status:f}:u))}async function p(a){await Promise.all(n(a).filter(d=>d.status==="pending").map(async d=>{let{confirmations:f,hash:c,chainId:u}=d,m=r.get(c);if(m)return await m;let T=j(e,{chainId:u});if(!T)return;let x=T.waitForTransactionReceipt({confirmations:f,hash:c}).then(({status:y})=>{r.delete(c),y!==void 0&&i(a,c,Number(y)===0?"failed":"confirmed")});return r.set(c,x),await x}))}function g(a,d){t=B(),t[a]=t[a]??[];let u=d(t?.[a]??[]).sort((m,T)=>T.timestamp-m.timestamp).slice(0,10);t[a]=u.length>0?u.filter(h):void 0,I(),H(),p(a)}function I(){localStorage.setItem(F,JSON.stringify(t)),localStorage.removeItem(L)}function H(){for(let a of o)a()}function E(a){return o.add(a),()=>{o.delete(a)}}return{addTransaction:s,clearTransactions:l,getTransactions:n,onChange:E,waitForPendingTransactions:p}}import{createContext as Z,useContext as ee,useEffect as te,useState as oe}from"react";import{useBeraWagmi as ne,useConfig as re}from"@berachain/wagmi/hooks";import{jsx as ae}from"react/jsx-runtime";var D,W=Z(null);function Ie({children:e}){let{account:t}=ne(),o=t?.wallet?.address,r=re(),[n]=oe(()=>D??(D=R({config:r})));return te(()=>{o&&n.waitForPendingTransactions(o)},[n,o]),ae(W.Provider,{value:n,children:e})}function He(){let e=ee(W);if(!e)throw new Error("Transaction hooks must be used within ");return e}import{createContext as ie,useContext as se}from"react";import de from"@berachain/config/mainnet";import{jsx as ce}from"react/jsx-runtime";function Xe(){return se(A)}var A=ie(de.averageBlockTime);function _e({children:e,blockTime:t,...o}){let{config:r}=k(o);return ce(A.Provider,{value:t??r.averageBlockTime,children:e})}import{createContext as ue,useContext as le}from"react";import{jsx as pe}from"react/jsx-runtime";var N=ue(void 0);function je({children:e,...t}){return pe(N.Provider,{value:t,children:e})}function ze(){let e=le(N);if(!e)throw new Error("useHoneyConfig must be used within a HoneyConfigProvider");return e}import{createContext as fe,useMemo as ge}from"react";import{defaultChainId as me}from"@berachain/config/internal";function M({defaultTokenList:e=[],externalList:t=[],chainId:o}){if(e.length===0)return{tokenList:t,customTokenList:t,featuredTokenList:[]};let r=e.filter(i=>!i.chainId||Number(i.chainId)===Number(o)).map(i=>({...i,default:!0})),n=r.filter(i=>i.tags?.some(p=>p==="featured")),s=[...r,...t];return{tokenList:s.filter((i,p)=>s.findIndex(g=>C(g,i))===p),customTokenList:t,featuredTokenList:n}}import{jsx as he}from"react/jsx-runtime";var Te=fe(void 0);function nt({children:e,defaultTokens:t,userTokens:o,onAddToken:r,onRemoveToken:n}){let{tokenList:s=[],featuredTokenList:l=[]}=ge(()=>M({defaultTokenList:t,externalList:o,chainId:me}),[t,o]);return he(Te.Provider,{value:{tokenList:s,userTokens:o,featuredTokens:l,onAddToken(i){r(i,{defaultTokens:t,userTokens:o,tokenList:s})},onRemoveToken:n},children:e})}export{be as a,K as b,ke as c,S as d,Be as e,Le as f,w as g,z as h,h as i,G as j,R as k,Ie as l,He as m,Xe as n,A as o,_e as p,N as q,je as r,ze as s,Te as t,nt as u};
3
- //# sourceMappingURL=chunk-KMKUXP2S.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/contexts/BeraFlags/BeraFlags.tsx","../src/contexts/BexStatusProvider.tsx","../src/hooks/transactions/transactionStore.ts","../src/hooks/transactions/TransactionStoreContext.tsx","../src/contexts/block-time-provider.tsx","../src/contexts/HoneyConfigProvider.tsx","../src/contexts/TokensProvider.tsx","../src/utils/formatTokenList.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nimport {\n type EdgeConfigSchema,\n isFlagEnabled,\n} from \"@berachain/config/internal/edge-config\";\n\nimport { type BeraFlags, defaultFlags } from \"./defaultFlags\";\n\nexport type { BeraFlags };\n\nexport type BeraFlagsContextReturn = BeraFlags & {\n /**\n * A list of aggregators that are enabled. If not provided, all aggregators are enabled.\n */\n aggregators: string[] | undefined;\n swberaAprWindow: Exclude<\n EdgeConfigSchema[\"pol\"][\"swberaAprWindow\"],\n undefined\n >;\n};\n\nconst BeraFlagContext = createContext<BeraFlagsContextReturn | undefined>(\n undefined,\n);\n\nexport function BeraFlagsProvider({\n children,\n flags,\n aggregators,\n swberaAprWindow = \"DAY\",\n}: {\n children: React.ReactNode;\n flags: BeraFlags;\n aggregators?: NonNullable<EdgeConfigSchema[\"bex\"]>[\"aggregators\"];\n swberaAprWindow?: EdgeConfigSchema[\"pol\"][\"swberaAprWindow\"];\n}) {\n return (\n <BeraFlagContext.Provider\n value={{\n ...defaultFlags,\n ...flags,\n aggregators: aggregators\n ? Object.entries(aggregators)\n .filter(([, value]) => isFlagEnabled(value))\n .map(([key]) => key)\n : undefined,\n swberaAprWindow,\n }}\n >\n {children}\n </BeraFlagContext.Provider>\n );\n}\n\nexport function useBeraFlags() {\n const context = useContext(BeraFlagContext);\n if (!context) {\n throw new Error(\"BeraFlagsProvider not found\");\n }\n return context;\n}\n\nexport function useBeraFlag<T extends keyof BeraFlagsContextReturn>(\n key: T,\n): BeraFlagsContextReturn[T] {\n const flags = useBeraFlags();\n return flags[key];\n}\n","import {\n createContext,\n type Dispatch,\n type PropsWithChildren,\n type SetStateAction,\n useContext,\n useState,\n} from \"react\";\nimport type { Hex } from \"viem\";\n\nimport type { EdgeConfigSchema } from \"@berachain/config/internal/edge-config\";\n\nimport { BeraError } from \"~/errors/BeraError\";\n\ntype FactoryStatus = {\n /**\n * If the composable stable factory is enabled\n */\n composableStable: \"paused\" | \"enabled\";\n /**\n * If the weighted factory is enabled\n */\n weighted: \"paused\" | \"enabled\";\n};\nexport interface BexStatusProviderProps {\n isVaultPaused: boolean;\n pool?: {\n id: Hex;\n isInRecoveryMode: boolean;\n isPaused: boolean;\n };\n factories: FactoryStatus;\n labels?: NonNullable<EdgeConfigSchema[\"bex\"]>[\"emergencyLabels\"];\n}\n\nexport const BexStateContext = createContext<{\n protocol: {\n isPaused: boolean;\n factories: FactoryStatus & { allPaused: boolean };\n };\n onPoolChange: Dispatch<SetStateAction<BexStatusProviderProps[\"pool\"]>>;\n pool?: {\n id: Hex;\n isInRecoveryMode: boolean;\n isPaused: boolean;\n disablePoolWithdrawals: boolean;\n disablePoolDeposits: boolean;\n };\n labels?: NonNullable<EdgeConfigSchema[\"bex\"]>[\"emergencyLabels\"];\n}>({\n protocol: {\n isPaused: false,\n factories: {\n composableStable: \"enabled\",\n weighted: \"enabled\",\n allPaused: false,\n },\n },\n onPoolChange: () => {},\n pool: undefined,\n});\n\n/**\n * @description Determines the status of a pool or vault and returns the appropriate messages and flags to disable functionality.\n * More information here https://www.notion.so/berachain/BEX-RecoveryMode-and-Pause-explained-17c6120abced80e0985dd589b57ff018\n *\n * @returns status flags to enable/disable/notify users across the BEX\n *\n **/\nexport function useBexStatus() {\n const context = useContext(BexStateContext);\n\n if (!context) {\n throw new BeraError({\n level: \"fatal\",\n message: \"BexStateContext is not defined\",\n });\n }\n\n return context;\n}\n\nexport function BexStatusProvider({\n children,\n isVaultPaused,\n labels,\n factories,\n}: PropsWithChildren<BexStatusProviderProps>) {\n const [poolState, setPoolState] = useState<BexStatusProviderProps[\"pool\"]>();\n // Determine whether to disable withdrawals for a pool (vault pause does not impact this)\n const disablePoolWithdrawals =\n (poolState?.isPaused && !poolState?.isInRecoveryMode) ?? false;\n\n // Determine whether to disable deposits for a pool (vault pause does not impact this)\n const disablePoolDeposits = isVaultPaused || poolState?.isPaused;\n\n // TODO: we dont yet support anything to disable staking/unstaking within reward vaults if they get paused\n\n return (\n <BexStateContext.Provider\n value={{\n protocol: {\n isPaused: isVaultPaused,\n factories: {\n ...factories,\n allPaused:\n factories.composableStable === \"paused\" &&\n factories.weighted === \"paused\",\n },\n },\n labels,\n onPoolChange: setPoolState,\n pool: poolState\n ? {\n ...poolState,\n disablePoolWithdrawals: !!disablePoolWithdrawals,\n disablePoolDeposits: !!disablePoolDeposits,\n }\n : undefined,\n }}\n >\n {children}\n </BexStateContext.Provider>\n );\n}\n","import { type Config, getPublicClient } from \"@wagmi/core\";\nimport type { Address } from \"viem\";\n\nimport type { TransactionActionType } from \"~/enum\";\n\nconst storageKeyLegacy = \"rk-transactions\";\nconst storageKey = \"transactions\";\n\ntype TransactionStatus = \"pending\" | \"confirmed\" | \"failed\";\n\nexport interface Transaction {\n hash: string;\n description: string;\n actionType?: TransactionActionType;\n timestamp: number;\n status: TransactionStatus;\n confirmations?: number;\n chainId: number;\n}\n\nexport type NewTransaction = Omit<Transaction, \"status\">;\n\nexport type DataLegacy = Record<\n string,\n Record<number, Transaction[] | undefined>\n>;\nexport type Data = Record<string, Transaction[] | undefined>;\n\nexport function safeParseJsonData<T = DataLegacy | Data>(\n string: string | null,\n): T {\n try {\n const value = string ? JSON.parse(string) : {};\n return typeof value === \"object\" ? value : {};\n } catch {\n return {} as T;\n }\n}\n/**\n *\n * @param legacyData - The legacy data to convert to the new data format.\n * removes the nested chains and converts the data to a flat array.\n * @returns Data in the new format with the chainId added to each transaction.\n */\nexport function convertLegacyDataToNewData(legacyData: DataLegacy): Data {\n return Object.entries(legacyData).reduce((acc, [account, chains]) => {\n return {\n ...acc,\n [account]: Object.entries(chains).reduce(\n (acc, [chainId, transactions]) => {\n if (!transactions) {\n return acc;\n }\n const transactionsArray = transactions.map(\n (transaction): Transaction => ({\n ...transaction,\n chainId: Number(chainId),\n }),\n );\n acc.push(...transactionsArray);\n return acc;\n },\n [] as NewTransaction[],\n ),\n };\n }, {});\n}\n\n/**\n * Filter out duplicate transactions by hash\n */\nexport const filterDuplicatefn = (\n tx: Transaction,\n idx: number,\n arr: Transaction[],\n) => arr.findIndex((otherTx) => otherTx.hash === tx.hash) === idx;\n\nexport function mergeData(legacyData: DataLegacy, newData: Data): Data {\n const mergedData = convertLegacyDataToNewData(legacyData);\n for (const [account, transactions] of Object.entries(newData)) {\n if (mergedData[account] && transactions) {\n // Merge and filter out duplicates by transaction hash\n mergedData[account] = [...transactions, ...mergedData[account]].filter(\n filterDuplicatefn,\n );\n } else {\n mergedData[account] = transactions?.filter(filterDuplicatefn);\n }\n }\n return mergedData;\n}\nfunction loadData(): Data {\n const legacyData = safeParseJsonData<DataLegacy>(\n typeof localStorage !== \"undefined\"\n ? localStorage.getItem(storageKeyLegacy)\n : null,\n );\n const data = safeParseJsonData<Data>(\n typeof localStorage !== \"undefined\"\n ? localStorage.getItem(storageKey)\n : null,\n );\n return mergeData(legacyData, data);\n}\n\nconst transactionHashRegex = /^0x([A-Fa-f0-9]{64})$/;\n\nfunction validateTransaction(\n transaction: Transaction | NewTransaction,\n): string[] {\n const errors: string[] = [];\n\n if (!transactionHashRegex.test(transaction.hash)) {\n errors.push(\"Invalid transaction hash\");\n }\n\n if (typeof transaction.description !== \"string\") {\n errors.push(\"Transaction must have a description\");\n }\n\n if (\n typeof transaction.confirmations !== \"undefined\" &&\n (!Number.isInteger(transaction.confirmations) ||\n transaction.confirmations < 1)\n ) {\n errors.push(\"Transaction confirmations must be a positiver integer\");\n }\n\n return errors;\n}\n\nexport function createTransactionStore({ config }: { config: Config }) {\n let data: Data = loadData();\n const listeners: Set<() => void> = new Set();\n const transactionRequestCache: Map<string, Promise<void>> = new Map();\n\n function getTransactions(account: string): Transaction[] {\n return data[account] ?? [];\n }\n\n function addTransaction(account: string, transaction: NewTransaction): void {\n const errors = validateTransaction(transaction);\n\n if (errors.length > 0) {\n throw new Error([\"Unable to add transaction\", ...errors].join(\"\\n\"));\n }\n\n updateTransactions(account, (transactions) => {\n return [\n { ...transaction, status: \"pending\" },\n ...transactions.filter(({ hash }) => {\n // Omit any duplicate transactions\n return hash !== transaction.hash;\n }),\n ];\n });\n }\n\n function clearTransactions(account: string): void {\n updateTransactions(account, () => {\n return [];\n });\n }\n\n function setTransactionStatus(\n account: string,\n hash: string,\n status: TransactionStatus,\n ): void {\n updateTransactions(account, (transactions) => {\n return transactions.map((transaction) =>\n transaction.hash === hash ? { ...transaction, status } : transaction,\n );\n });\n }\n\n async function waitForPendingTransactions(account: string): Promise<void> {\n await Promise.all(\n getTransactions(account)\n .filter((transaction) => transaction.status === \"pending\")\n .map(async (transaction) => {\n const { confirmations, hash, chainId } = transaction;\n\n const existingRequest = transactionRequestCache.get(hash);\n\n if (existingRequest) {\n return await existingRequest;\n }\n const provider = getPublicClient(config, { chainId });\n if (!provider) {\n return;\n }\n\n const requestPromise = provider\n .waitForTransactionReceipt({ confirmations, hash: hash as Address })\n .then(({ status }) => {\n transactionRequestCache.delete(hash);\n\n if (status === undefined) {\n return;\n }\n\n setTransactionStatus(\n account,\n hash,\n Number(status) === 0 ? \"failed\" : \"confirmed\",\n );\n });\n\n transactionRequestCache.set(hash, requestPromise);\n\n return await requestPromise;\n }),\n );\n }\n\n function updateTransactions(\n account: string,\n updateFn: (transactions: Transaction[]) => Transaction[],\n ): void {\n // Ensure we’re always operating on the latest data in case we have\n // multiple instances/tabs/etc. since we write all data back to\n // local storage after updating\n data = loadData();\n\n data[account] = data[account] ?? [];\n\n const MAX_TRANSACTIONS = 10;\n const updatedTransactions = updateFn(data?.[account] ?? []);\n\n const transactions = updatedTransactions\n // Sort by timestamp (latest first) and keep only the latest 10\n .sort((a, b) => b.timestamp - a.timestamp)\n .slice(0, MAX_TRANSACTIONS);\n\n data[account] =\n transactions.length > 0\n ? transactions.filter(filterDuplicatefn)\n : undefined;\n\n persistData();\n notifyListeners();\n waitForPendingTransactions(account);\n }\n\n function persistData(): void {\n localStorage.setItem(storageKey, JSON.stringify(data));\n // remove legacy data how that it has been converted to the new data format and saved to the new key\n localStorage.removeItem(storageKeyLegacy);\n }\n\n function notifyListeners(): void {\n for (const listener of listeners) {\n listener();\n }\n }\n\n function onChange(fn: () => void): () => void {\n listeners.add(fn);\n\n return () => {\n listeners.delete(fn);\n };\n }\n\n return {\n addTransaction,\n clearTransactions,\n getTransactions,\n onChange,\n waitForPendingTransactions,\n };\n}\n\nexport type TransactionStore = ReturnType<typeof createTransactionStore>;\n","import type React from \"react\";\nimport { createContext, useContext, useEffect, useState } from \"react\";\n\nimport { useBeraWagmi, useConfig } from \"@berachain/wagmi/hooks\";\n\nimport {\n createTransactionStore,\n type TransactionStore,\n} from \"./transactionStore\";\n\n// Only allow a single instance of the store to exist at once\n// so that multiple RainbowKitProvider instances can share the same store.\n// We delay the creation of the store until the first time it is used\n// so that it always has access to a provider.\nlet storeSingleton: ReturnType<typeof createTransactionStore> | undefined;\n\nconst TransactionStoreContext = createContext<TransactionStore | null>(null);\n\nexport function TransactionStoreProvider({\n children,\n}: {\n children: React.ReactNode;\n}) {\n const { account } = useBeraWagmi();\n const address = account?.wallet?.address;\n const config = useConfig();\n\n // Use existing store if it exists, or lazily create one\n const [store] = useState(\n () =>\n storeSingleton ??\n (storeSingleton = createTransactionStore({\n config,\n })),\n );\n\n // Wait for pending transactions whenever address changes\n useEffect(() => {\n if (address) {\n store.waitForPendingTransactions(address);\n }\n }, [store, address]);\n\n return (\n <TransactionStoreContext.Provider value={store}>\n {children}\n </TransactionStoreContext.Provider>\n );\n}\n\nexport function useTransactionStore(): TransactionStore {\n const store = useContext(TransactionStoreContext);\n\n if (!store) {\n throw new Error(\"Transaction hooks must be used within \");\n }\n\n return store;\n}\n","import { createContext, type PropsWithChildren, useContext } from \"react\";\n\nimport mainnet from \"@berachain/config/mainnet\";\n\nimport { parseBaseArgs } from \"~/utils/parseBaseArgs\";\n\n/**\n * Average berachain block time in seconds\n */\nexport function useBlockTime(): number {\n return useContext(BlockTimeContext);\n}\n\nexport const BlockTimeContext = createContext<number>(\n // this is the default block time for berachain, but actually overridden by the block time provider\n mainnet.averageBlockTime,\n);\n\nexport function BlockTimeProvider({\n children,\n blockTime,\n ...args\n}: PropsWithChildren<{\n blockTime?: number;\n}> &\n BeraJS.BaseFunctionArgs) {\n const { config } = parseBaseArgs(args);\n\n return (\n <BlockTimeContext.Provider value={blockTime ?? config.averageBlockTime}>\n {children}\n </BlockTimeContext.Provider>\n );\n}\n","import { createContext, useContext } from \"react\";\n\nimport type { HoneyFeeMap } from \"~/actions/honey/getHoneyFees\";\nimport type { TokenWithMetadata } from \"~/types/dex\";\nimport type { PythPriceFeedMap } from \"~/types/honeySwap\";\n\nexport const HoneyConfigContext = createContext<\n HoneyConfigContextReturn | undefined\n>(undefined);\n\nexport type TokenWithOrder = TokenWithMetadata & {\n order: number;\n};\nexport interface HoneyConfigContextReturn {\n /**\n * Map of the Pyth price feed ids for each collateral\n */\n priceFeedMap: PythPriceFeedMap;\n /**\n * This is the list of all the collaterals that are supported by the Honey protocol\n */\n collateralList: TokenWithOrder[];\n /**\n * This is the main collateral that is used to calculate the relative cap limit\n */\n referenceCollateral: TokenWithOrder;\n /**\n * An object that maps the redeem/mint rate for each collateral and the weighted rates for the basket mode\n */\n feeMap: HoneyFeeMap;\n flags: {\n /**\n * If true, mint/redeem will also update pyth prices\n */\n isPythWrapperEnabled: boolean;\n };\n /**\n * Honey protocol configs\n */\n protocol: {\n /**\n * Honey protocol paused state\n */\n isPaused: boolean;\n /**\n * The label for the Honey protocol paused message\n */\n pausedBannerLabel?: string;\n };\n}\n\nexport interface HoneyConfigProviderProps extends HoneyConfigContextReturn {\n children: React.ReactNode;\n}\n\nexport function HoneyConfigProvider({\n children,\n ...props\n}: HoneyConfigProviderProps) {\n return (\n <HoneyConfigContext.Provider value={props}>\n {children}\n </HoneyConfigContext.Provider>\n );\n}\n\nexport function useHoneyConfig() {\n const context = useContext(HoneyConfigContext);\n if (!context) {\n throw new Error(\"useHoneyConfig must be used within a HoneyConfigProvider\");\n }\n return context;\n}\n","import { createContext, type PropsWithChildren, useMemo } from \"react\";\n\nimport { defaultChainId } from \"@berachain/config/internal\";\n\nimport type { Token, TokenWithMetadata } from \"~/types/dex\";\nimport { formatTokenList } from \"~/utils/formatTokenList\";\n\nexport interface TokensProviderContext {\n tokenList: TokenWithMetadata[];\n userTokens: Token[];\n featuredTokens: TokenWithMetadata[];\n onRemoveToken: (token: Token) => void;\n onAddToken: (token: Token) => void;\n}\nexport const TokenContext = createContext<TokensProviderContext | undefined>(\n undefined,\n);\n\nexport interface TokensProviderProps\n extends Omit<\n TokensProviderContext,\n \"tokenList\" | \"onAddToken\" | \"featuredTokens\"\n > {\n onAddToken: (\n token: Token,\n context: {\n defaultTokens: TokenWithMetadata[];\n userTokens: Token[];\n tokenList: TokenWithMetadata[];\n },\n ) => void;\n defaultTokens: TokenWithMetadata[];\n}\n\nexport function TokensProvider({\n children,\n defaultTokens,\n userTokens,\n onAddToken,\n onRemoveToken,\n}: PropsWithChildren<TokensProviderProps>) {\n const { tokenList = [], featuredTokenList = [] } = useMemo(\n () =>\n formatTokenList({\n defaultTokenList: defaultTokens,\n externalList: userTokens,\n chainId: defaultChainId,\n }),\n [defaultTokens, userTokens],\n );\n return (\n <TokenContext.Provider\n value={{\n tokenList,\n userTokens,\n featuredTokens: featuredTokenList,\n onAddToken(tk) {\n onAddToken(tk, { defaultTokens, userTokens, tokenList });\n },\n onRemoveToken,\n }}\n >\n {children}\n </TokenContext.Provider>\n );\n}\n","import type { Token, TokenWithMetadata } from \"../types\";\nimport { isToken } from \"./tokens\";\n\nexport interface FormatTokenListReturnType {\n /**\n * Token list including custom tokens\n */\n tokenList: Token[];\n /**\n * Custom token list (added by the user)\n */\n customTokenList?: Token[];\n /**\n * Featured token list\n */\n featuredTokenList?: Token[];\n}\n\nfunction formatTokenList({\n defaultTokenList = [],\n externalList = [],\n chainId,\n}: {\n defaultTokenList: TokenWithMetadata[];\n externalList?: Token[];\n chainId: number;\n}): FormatTokenListReturnType {\n if (defaultTokenList.length === 0) {\n return {\n tokenList: externalList,\n customTokenList: externalList,\n featuredTokenList: [],\n };\n }\n\n const defaultList = defaultTokenList\n .filter(\n (token) => !token.chainId || Number(token.chainId) === Number(chainId),\n )\n .map((token) => {\n return { ...token, default: true };\n });\n\n const featuredTokenList = defaultList.filter((token) => {\n return token.tags?.some((tag) => tag === \"featured\");\n });\n\n const mergedList = [...defaultList, ...externalList];\n\n const uniqueList = mergedList.filter(\n (item, index) => mergedList.findIndex((i) => isToken(i, item)) === index,\n );\n\n return {\n tokenList: uniqueList,\n customTokenList: externalList,\n featuredTokenList,\n };\n}\n\nexport { formatTokenList };\n"],"mappings":"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","names":["createContext","useContext","isFlagEnabled","jsx","BeraFlagContext","createContext","BeraFlagsProvider","children","flags","aggregators","swberaAprWindow","defaultFlags","value","isFlagEnabled","key","useBeraFlags","context","useContext","useBeraFlag","createContext","useContext","useState","jsx","BexStateContext","createContext","useBexStatus","context","useContext","BeraError","BexStatusProvider","children","isVaultPaused","labels","factories","poolState","setPoolState","useState","disablePoolWithdrawals","disablePoolDeposits","getPublicClient","storageKeyLegacy","storageKey","safeParseJsonData","string","value","convertLegacyDataToNewData","legacyData","acc","account","chains","chainId","transactions","transactionsArray","transaction","filterDuplicatefn","tx","idx","arr","otherTx","mergeData","newData","mergedData","loadData","data","transactionHashRegex","validateTransaction","errors","createTransactionStore","config","listeners","transactionRequestCache","getTransactions","addTransaction","updateTransactions","hash","clearTransactions","setTransactionStatus","status","waitForPendingTransactions","confirmations","existingRequest","provider","requestPromise","updateFn","a","b","persistData","notifyListeners","listener","onChange","fn","createContext","useContext","useEffect","useState","useBeraWagmi","useConfig","jsx","storeSingleton","TransactionStoreContext","createContext","TransactionStoreProvider","children","account","useBeraWagmi","address","config","useConfig","store","useState","createTransactionStore","useEffect","useTransactionStore","useContext","createContext","useContext","mainnet","jsx","useBlockTime","useContext","BlockTimeContext","createContext","mainnet","BlockTimeProvider","children","blockTime","args","config","parseBaseArgs","createContext","useContext","jsx","HoneyConfigContext","HoneyConfigProvider","children","props","useHoneyConfig","context","createContext","useMemo","defaultChainId","formatTokenList","defaultTokenList","externalList","chainId","defaultList","token","featuredTokenList","tag","mergedList","item","index","i","isToken","jsx","TokenContext","createContext","TokensProvider","children","defaultTokens","userTokens","onAddToken","onRemoveToken","tokenList","featuredTokenList","useMemo","formatTokenList","defaultChainId","tk"]}
@@ -1,4 +0,0 @@
1
- import{a as ge,b as _e,c as v,d as C,e as Ke,f as B,g as ee,h as K,i as Ye,j as ze,k as Xe,l as et,m as H,n as D,o as he,p as nt,q as it,r as we}from"./chunk-3TKSVFZ3.mjs";import{a as Z,b as $,c as k,d as ye,f as tt,g as j}from"./chunk-6W22TFYA.mjs";import{C as te,E as rt,G as at,L as ke,N as ot,a as be,b as Me,c as Le,d as R,e as He,i as Je,j as $e,k as je,q as ie,r as Ae,w as Ne,x as Ze}from"./chunk-AMRJ4B36.mjs";import{b as c,c as fe,e as Oe,f as N}from"./chunk-VYWYJR63.mjs";import{a as X}from"./chunk-PHIOKO3A.mjs";import{c as pe,d as Ue,e as ne,f as x,g as T}from"./chunk-HCTFDGXL.mjs";import{formatEther as rr}from"viem";async function vo({sharesAmount:e,vaultAddress:t,publicClient:r}){let a=await r.readContract({address:t,abi:ge,functionName:"convertToAssets",args:[e]});return{raw:a,formatted:rr(a)}}import{formatEther as ar}from"viem";async function No({vaultAddress:e,publicClient:t}){let r=await t.readContract({address:e,abi:ge,functionName:"maxDeposit",args:[e]});return ar(r)}import{InMemoryCache as lr}from"@apollo/client";import{HttpLink as cr}from"@apollo/client/link/http";import{getUriFromLink as ct}from"@berachain/config";import{currentDapp as lt}from"@berachain/config/internal";import ur from"@berachain/graphql/dex/api";import{ApolloClient as or,ServerError as nr}from"@apollo/client";import*as st from"@sentry/nextjs";import{appConfig as ir}from"@berachain/config/internal";var Ce=class extends or{url;constructor(t){super(t),this.url=t.url}async query(t){let r=sr(t.query),a={url:this.url,type:"graphql"},o={"operation.type":"query","operation.source.url":a.url,"operation.source.type":a.type,"operation.source.queryName":r};try{let n=await st.startSpan({name:`GraphQL ${r}`,op:"BeraApolloClient.query",attributes:o},async()=>super.query(t));if(n.error||n.data===void 0)throw new x({level:"fatal",tags:o,message:"Bera Apollo Client: No data returned from query, but error should be thrown since errorPolicy is none"});return{data:n.data}}catch(n){throw!ir.env.isProduction&&console.error("BeraApolloClient error",n),nr.is(n)?new X({response:n.response,cause:n,statusCode:n.statusCode,endpoint:a,tags:o}):n instanceof TypeError?new X({level:"fatal",reason:"TypeError",response:n,cause:n,endpoint:a,tags:o}):new X({response:n,tags:o,cause:n,endpoint:a})}}};function sr(e){return e.definitions.find(r=>r.kind==="OperationDefinition")?.name?.value}import{gql as mr}from"@apollo/client";function dr(e){if(!lt)return e;let t=typeof e=="string"?void 0:e.headers;return{uri:ct(e),headers:{...t,"x-graphql-client-name":`berachain.${lt}.${process.env.NEXT_RUNTIME||"browser"}`,"x-graphql-client-version":`${process.env.VERCEL_TARGET_ENV}.${process.env.VERCEL_GIT_COMMIT_SHA}`}}}function Y(e,{ssrMode:t,inMemoryCacheOptions:r}={}){let a=ct(e),o=typeof e=="string"?void 0:e.headers;return new Ce({url:a,link:new cr({uri:a,headers:o}),defaultOptions:{query:{errorPolicy:"none",fetchPolicy:"no-cache"}},cache:new lr(r),ssrMode:t})}function f(e,{...t}){let{config:r}=c(t);switch(e){case"api":return Y(dr(r.api),{inMemoryCacheOptions:{possibleTypes:ur.possibleTypes}});case"bend.whisk":if(!r.bend.whiskApi)throw new x({message:"Bend whisk API is not configured on this chain",level:"error"});return Y(r.bend.whiskApi);case"honey.subgraph":return Y(r.honey.subgraph);case"pol.subgraph":return Y(r.pol.subgraph);case"governance.subgraph":return Y(r.governance.subgraph);case"blocks.subgraph":return Y(r.blocksSubgraph);case"bex.subgraph":return Y(r.bex.subgraph)}}import{BigNumber as se}from"bignumber.js";import{isAddress as ut,zeroAddress as pr}from"viem";var dt=class e{static PATH_NOT_FOUND_REASON="NO_SWAP_PATHS";notFoundMessages=[];config;chainId;constructor(t={}){let{config:r,chainId:a}=c(t);this.config=r,this.chainId=a}url="";parseAddresses(t,r){if(!ut(t)||!ut(r))throw new x({message:`Invalid address: ${t} or ${r}`,level:"error"});return{tokenInAddress:N(t,"BERA")?this.config.tokens.wbera:t,tokenOutAddress:N(r,"BERA")?this.config.tokens.wbera:r,isTokenInNative:N(t,"BERA"),isTokenOutNative:N(r,"BERA")}}getAmountAfterFees(t,r){if(r===void 0)throw new x({message:"aggregatorsFeeBps is required",level:"error"});let a=new se(t).times(r).dividedBy(1e4).toFixed(0,se.ROUND_DOWN);return new se(t).minus(a).toFixed(0,se.ROUND_DOWN)}getInputData({tokenIn:t,amountIn:r,isNative:a,isPermit2Approval:o=!1,permit2SpenderAddress:n=pr}){return{tokenIn:t,amountIn:BigInt(r),isNative:a,isPermit2Approval:o,permit2SpenderAddress:n}}getMinAmountOut(t,r){if(r===void 0)throw new x({message:"slippage is required",level:"error"});let a=new se(t).times(1-r/100);return a.isNaN()||a.isZero()?0n:BigInt(a.toFixed(0))}checkChainSupport(){if(!this.supportedChains.includes(this.chainId))throw new x({message:`${this.name} is not supported on chain ${this.chainId}`,level:"error"})}async fetch(t,r){try{return await Me({url:t,name:this.name,type:this.type},{method:"GET",headers:{"Content-Type":"application/json"},...r})}catch(a){let o=Z({cause:a});throw this.notFoundMessages.some(n=>o.message.includes(n))&&(o.reason=e.PATH_NOT_FOUND_REASON),o}}};import{API_CHAIN_NAMES as fr,BALANCER_QUERIES as gr,BALANCER_RELAYER as br,BalancerApi as tn,CHAINS as yr,COMPOSABLE_STABLE_POOL_FACTORY as Ar,NATIVE_ASSETS as hr,Token as wr,VAULT as Cr,WEIGHTED_POOL_FACTORY_BALANCER_V2 as Pr}from"@berachain-foundation/berancer-sdk";import{zeroAddress as Ge}from"viem";import{berachain as mt,berachainBepolia as Br}from"viem/chains";import{chainConfigs as xr}from"@berachain/config/internal";for(let e of Object.keys(xr)){let{config:t,chainId:r}=c({chainId:Number(e)});fr[r]=t.bex.chainName,yr[r]=r===mt.id?mt:Br,br[r]=t.bex.relayer,Cr[r]=t.bex.vault,gr[r]=t.bex.queries,Pr[r]=Ge,Ar[r]=Ge;let a=new wr(r,Ge,fe.decimals,fe.name,fe.symbol,t.tokens.wbera);hr[r]=a}import{GetPools as vr}from"@berachain/graphql/dex/api";import{GqlPoolOrderBy as Rr,GqlPoolOrderDirection as Sr}from"@berachain/graphql/pol/api";async function pn({textSearch:e,chain:t,first:r,orderBy:a,orderDirection:o,skip:n,fetchPolicy:s,userAddress:i,blacklistedPoolIds:l,...u}={}){let{config:m}=c(u),b=await f("api",u).query({query:vr,variables:{textSearch:e,chain:t??m.bex.chainName,first:r,orderBy:a??Rr.TotalLiquidity,orderDirection:o??Sr.Desc,skip:n,userAddress:i,blacklistedPoolIds:l},fetchPolicy:s});return{pools:b.data.poolGetPools??[],count:b.data.count??0}}import{GetPool as Vr}from"@berachain/graphql/dex/api";async function An({poolId:e,account:t,...r}){let{config:a}=c(r),s=(await f("api",r).query({query:Vr,variables:{id:e,userAddress:t,chain:a.bex.chainName},fetchPolicy:"no-cache"})).data.poolGetPool;if(!s)throw new Error(`Pool not found for id: ${e} and user ${t}`);return s}import{GetGlobalLiquidityAndSwapVolume as Nr}from"@berachain/graphql/dex/api";async function Bn(e={}){let{config:t}=c(e);return(await f("api",e).query({query:Nr,variables:{chain:t.bex.chainName}})).data}import{stablePoolAbi_V3 as Gr,vaultV2Abi as Tr,weightedPoolFactoryAbi_V3 as ft,weightedPoolV4Abi_V2 as Pe}from"@berachain-foundation/berancer-sdk";import{erc20Abi as gt,formatEther as bt,formatUnits as Fr,isAddress as Dr,isHex as Ir}from"viem";import{GqlPoolType as yt}from"@berachain/graphql/pol/api";import{weightedPoolV4Abi_V2 as kr}from"@berachain-foundation/berancer-sdk";async function pt({publicClient:e,poolAddress:t}){let r=kr,a=await e.multicall({contracts:[{address:t,abi:r,functionName:"inRecoveryMode"},{address:t,abi:r,functionName:"getPausedState"}],allowFailure:!1});return{isPoolInRecoveryMode:a[0],isPoolPaused:a[1][0]}}async function Dn({poolId:e,publicClient:t,...r}){let{config:a}=c(r),o=e.slice(0,42);if(!Dr(o)||!Ir(e))throw new T({property:"poolId",value:e,expected:"Hex"});try{let[n,s,i,l,u,m,d,b,g]=await Promise.all([t.readContract({address:o,abi:gt,functionName:"name"}),t.readContract({address:a.bex.vault,abi:Tr,functionName:"getPoolTokens",args:[e]}),t.readContract({address:o,abi:gt,functionName:"totalSupply"}),t.readContract({address:o,abi:Pe,functionName:"getSwapFeePercentage"}),t.readContract({address:o,abi:Pe,functionName:"version"}),t.readContract({address:o,abi:Pe,functionName:"decimals"}),t.readContract({address:a.bex.factories.composableStable,abi:ft,functionName:"isPoolFromFactory",args:[o]}),t.readContract({address:a.bex.factories.weighted,abi:ft,functionName:"isPoolFromFactory",args:[o]}),pt({publicClient:t,poolAddress:o})]),p=Number(m),A=JSON.parse(u),P,V,y;if(d?[P,y]=await Promise.all([t.readContract({address:o,abi:[{type:"function",name:"getActualSupply",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]}],functionName:"getActualSupply"}),t.readContract({address:o,abi:Gr,functionName:"getAmplificationParameter"})]):A.name==="WeightedPool"&&(V=await t.readContract({address:o,abi:Pe,functionName:"getNormalizedWeights"})),!d&&!b)throw new Error(`Pool ${o} is not a valid BEX pool`);return{name:n,address:o,id:e,poolTokens:[s[0],s[1].map(String),Number(s[2])],totalSupply:Fr(P??i,p),swapFee:bt(l),decimals:p,weights:V?.map(F=>bt(F)),version:A,factory:d?a.bex.factories.composableStable:a.bex.factories.weighted,type:d?yt.Stable:yt.Weighted,amplificationParameter:y?[Number(y[0]),y[1],Number(y[2])]:void 0,pausedState:g}}catch(n){throw Z({cause:n})}}import{GetPoolEvents as Er}from"@berachain/graphql/dex/api";async function Wn({poolId:e,typeInArray:t,...r}){let{config:a}=c(r);return(await f("api",r).query({query:Er,variables:{poolId:e,typeIn:t,chain:a.bex.chainName}})).data}import{isHex as qr}from"viem";import{GetPoolHistoricalData as Qr}from"@berachain/graphql/dex/api";async function Hn({poolId:e,chain:t,...r}){if(!e||!qr(e))throw new T({property:"poolId",value:e,expected:"hex string"});let a=f("api",r),{data:o}=await a.query({query:Qr,variables:{poolId:e,chain:t}});return o.poolGetSnapshots}import{mapPoolType as Wr}from"@berachain-foundation/berancer-sdk";var jn=e=>({type:Wr(e.type),protocolVersion:e.protocolVersion,tokens:e.tokens.map(t=>({...t,address:t.address})),id:e.id,address:e.address});import{isHex as Ur}from"viem";import{GetSubgraphPool as Or}from"@berachain/graphql/dex/subgraph";async function Zn({poolId:e,...t}){if(!Ur(e))throw new Error("poolId is not a valid hex string");return(await f("bex.subgraph",t).query({query:Or,variables:{id:e}})).data.pool}async function ai({publicClient:e,...t}){let{config:r}=c(t);return(await e.readContract({address:r.bex.vault,abi:_e,functionName:"getPausedState"}))[0]}import{isAddress as At,isHex as Mr}from"viem";var re=({fieldOrType:e,value:t,required:r=!0,baseUrl:a,components:o})=>{if(!["bool","string"].includes(e)&&r&&(t==null||t===""))return"Required";if(e.startsWith("uint")||e.startsWith("int")){if(typeof t!="string")return"Invalid amount";try{let s=BigInt(t);if(e.startsWith("uint")&&s<0n)return"Negative amount"}catch{return"Invalid amount"}return null}switch(e){case"string":return t!==void 0&&typeof t!="string"?"Invalid amount":null;case"bool":return typeof t!="boolean"?"Invalid amount":null;case"title":return t.length===0?"Required":null;case"description":return t.length===0?"Required":null;case"forumLink":if(t.length===0)return"Required";if(!URL.canParse(t))return"Invalid address";let s=new URL(a);return t.startsWith(s.toString())?null:"Must be a berachain forum link";case"address":return At(t,{strict:!0})?null:"Invalid address";case"hex":return Mr(t,{strict:!0})?null:"Invalid address";case"abi":try{JSON.parse(t)}catch{return"Invalid ABI"}return null;case"action":return At(t,{strict:!0})?null:"Invalid address";case"tuple":if(typeof t=="object"&&Array.isArray(o)){let i={};for(let l of o)i[l.name]=re({fieldOrType:l.type,value:t[l.name],components:l.components});return Object.values(i).every(l=>l===null)?null:i}return null;case"tuple[]":if(Array.isArray(t)){let i=t.map(l=>re({fieldOrType:"tuple",value:l,components:o}));return i.every(l=>l===null)?null:i}return null;case"logoURI":return t===void 0||t===""||URL.canParse(t)&&new URL(t).protocol==="https:"?null:"Must be HTTPS or IPFS";case"url":return t===void 0||t===""||URL.canParse(t)&&new URL(t).protocol==="https:"?null:"Must be HTTPS";default:return console.error(`Invalid field or type: ${e}`),null}};import{ProposalStatus as w}from"@berachain/graphql/governance";var Lr=!1,li=[w.Active,w.PendingQueue,w.PendingExecution,w.Defeated,w.QuorumNotReached];function Be(e,t){let r=Date.now()/1e3;if(t!==void 0){if(e.status===w.CanceledByGuardian)return w.CanceledByGuardian;if(t===2)return Number(e.voteStartAt)<r?w.CanceledByUser:w.CanceledByGuardian;if(t===3)return e.pollResult?!e.quorum||BigInt(e.quorum)>BigInt(e.pollResult.totalTowardsQuorum)?w.QuorumNotReached:w.Defeated:w.QuorumNotReached;if(t===4)return w.PendingQueue;if(t===5)return Number(e.queueEnd)<Date.now()/1e3?w.PendingExecution:w.InQueue;if(t===6)return console.warn("Unexpected expired state on proposal id: ",e.id),w.Defeated}return e.status===w.InQueue&&Number(e.queueEnd)<Date.now()/1e3?w.PendingExecution:Lr&&t===1&&e.quorum&&BigInt(e.quorum)<BigInt(e.pollResult.totalTowardsQuorum)&&Number(e.pollResult.forPercentage)>Number(e.pollResult.againstPercentage)?w.PendingQueue:e.status===w.Pending?Number(e.voteStartAt)<r&&Number(e.voteEndAt)>r?w.Active:Number(e.voteEndAt)<r?e.pollResult?!e.quorum||BigInt(e.quorum)>BigInt(e.pollResult.totalTowardsQuorum)?w.QuorumNotReached:e.pollResult?.against>e.pollResult?.for?w.Defeated:w.PendingQueue:w.QuorumNotReached:w.Pending:e.status===w.Active&&Number(e.voteEndAt)<r?!e.quorum||BigInt(e.quorum)>BigInt(e.pollResult.totalTowardsQuorum)?w.QuorumNotReached:BigInt(e.pollResult?.against??0n)>BigInt(e.pollResult?.for??0n)?w.Defeated:w.PendingQueue:e.status===w.InQueue&&Number(e.queueEnd)<Date.now()/1e3?w.PendingExecution:e.status}import{GetProposals as _r,SearchProposals as Hr}from"@berachain/graphql/governance";async function pi({where:e,orderBy:t,orderDirection:r,offset:a=0,perPage:o=20,text:n,...s}){try{if(o>1e3)throw new Error("perPage must be less than 1000");let i=f("governance.subgraph",s),[l]=await Promise.all([n?i.query({query:Hr,variables:{offset:a,limit:o,where:e,text:n}}):i.query({query:_r,variables:{offset:a,limit:o,where:e,orderBy:t,orderDirection:r}})]);return l.data.proposals.map(u=>({...u,status:Be(u)}))}catch(i){throw console.error("getAllProposals:",i),i}}var bi=(e,t)=>{let r={};return r.title=re({fieldOrType:"title",value:e.title}),r.description=re({fieldOrType:"description",value:e.description}),r.forumLink=re({fieldOrType:"forumLink",value:e.forumLink,baseUrl:t.forumLink}),r};import{decodeFunctionData as wt,erc20Abi as Jr,pad as $r,toFunctionSignature as jr,trim as ht}from"viem";import{appConfig as Kr,defaultChainId as Yr}from"@berachain/config/internal";function zr(e){return e.some(t=>t.name==="implementation"||t.name==="proxyType"||t.type==="constructor"&&t.inputs?.[0]?.name==="implementation")}async function Ct({contractAddress:e,chainId:t,publicClient:r}){let a=`https://api.etherscan.io/v2/api?module=contract&action=getabi&address=${e}&apikey=${Kr.apiKeys.private.etherscan}&chainId=${t}`,o=await fetch(a,{next:{revalidate:je(1)}});if(!o.ok)throw new Error(`Failed to fetch ABI: ${o.statusText}`);let n=await o.json();if(n.status==="0")throw new Error(n.result);let s=JSON.parse(n.result);if(!zr(s))return s;let i=await r.getStorageAt({address:e,slot:"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"});if(!i||ht(i)==="0x00")return s;let l=$r(ht(i),{size:20});return Ct({contractAddress:l,chainId:t,publicClient:r})}async function Xr({address:e,callData:t,knownAbi:r,chainId:a,publicClient:o}){try{if(wt({data:t,abi:r}))return r}catch{}try{return await Ct({contractAddress:e,chainId:a,publicClient:o})}catch{}}function Zr(e,t){try{return wt({data:e,abi:t})}catch{return}}function ea(e,t){return e.find(r=>r.type==="function"&&r.name===t)}function ta(e){if(e)try{return jr(e)}catch(t){console.error(t)}}async function Bi({address:e,callData:t,chainId:r=Yr,publicClient:a}){let o=[...v,...C,...Jr],n=await Xr({address:e,callData:t,knownAbi:o,chainId:r,publicClient:a}),s=Zr(t,n);if(!n||!s)return{args:[]};let i=ea(n,s.functionName),l=ta(i);return{abiItem:i,functionSignature:l,functionName:s.functionName,args:s.args}}import{GetProposal as ra}from"@berachain/graphql/governance";async function Vi({proposalId:e,...t}){let a=await f("governance.subgraph",t).query({query:ra,variables:{id:e}});if(a.data.proposal)return{...a.data.proposal,status:Be(a.data.proposal)}}import{parseEventLogs as oa}from"viem";import{ProposalStatus as na}from"@berachain/graphql/governance";import Pt from"gray-matter";var aa=e=>{let t=/#(?:([\w-]+)# )?(.+)\n([\s\S]*)/,r=e.match(t);if(r){let a=r[1]||null,o=r[2],n=r[3].replace(`
2
- `,"<br />");return{type:a,title:o,content:n}}throw new Error("Invalid proposal body")},Bt=e=>{if(!e)return{isFrontMatter:!1,data:{title:"Loading..."},content:"",matter:"",language:"",orig:"",stringify:()=>""};let t=e?.description??"";if(Pt.test(t))return{...Pt(t),isFrontMatter:!0};try{let r=aa(t);return{isFrontMatter:!1,data:{title:r.title},content:r.content,matter:"",language:"",orig:t,stringify:()=>t}}catch{return{isFrontMatter:!1,data:{title:e?.description?.split(`
3
- `)[0].slice(0,100)},content:t,matter:"",language:"",orig:t,stringify:()=>t}}};async function qi(e){k(e.publicClient);let t;"tx"in e?t=e.tx:t=await e.publicClient.getTransactionReceipt({hash:e.txHash});let r=t?.logs?oa({abi:Ke,logs:t.logs,eventName:"ProposalCreated"})?.at(0):void 0;if(!t||!r)return null;let a=await e.publicClient.getBlock({blockNumber:t.blockNumber}),o=Bt({description:r?.args.description});return{id:String(r.args.proposalId),proposalId:String(r?.args.proposalId),createdAt:a.timestamp.toString(),title:o.data.title,createdAtBlock:a.timestamp.toString(),voteStartAt:String(r?.args.voteStart),voteEndAt:String(r?.args.voteEnd),proposer:r?.args.proposer,description:o.content,unverifiedForumLink:o.data.forumLink,pollResult:{for:"0",forVotersCount:0,forPercentage:"0",against:"0",againstVotersCount:0,againstPercentage:"0",abstain:"0",abstainVotersCount:0,abstainPercentage:"0",total:"0",totalVotersCount:0,totalTowardsQuorum:"0"},status:na.Pending,quorum:null,topics:o.data.topics,votes:[],executableCalls:r?.args.targets.map((n,s)=>({__typename:"ExecutableCall",id:`${t.transactionHash}-${s}`,target:n,value:String(r?.args.values[s]),calldata:r?.args.calldatas[s]})),timelock:void 0}}import{GetProposalVotes as ia}from"@berachain/graphql/governance";async function Oi({variables:e,...t}){return f("governance.subgraph",t).query({query:ia,variables:e})}import{Aggregation_Interval as sa,GetChartData as la}from"@berachain/graphql/honey";async function Hi({days:e,...t}){return(await f("honey.subgraph",t).query({query:la,variables:{interval:sa.Day,first:e}})).data}async function Ki({client:e,collateralList:t,...r}){let{config:a}=c(r);try{let o=await e.readContract({address:a.honey.factory,abi:B,functionName:"getWeights"});return t.reduce((s,i,l)=>Object.assign(s,{[i.address]:o[l]}),{})}catch(o){throw console.log(o),o}}import{parseEther as Rt}from"viem";import{erc20Abi as Te}from"viem";async function xt({address:e,publicClient:t}){try{if(!t)throw new Error("Public client not found");let[r,a,o]=await Promise.all([t.readContract({address:e,abi:Te,functionName:"decimals"}),t.readContract({address:e,abi:Te,functionName:"name"}),t.readContract({address:e,abi:Te,functionName:"symbol"})]),n={address:e,decimals:r,name:a,symbol:o};if(typeof n.decimals!="number"||typeof n.name!="string"||typeof n.symbol!="string")throw new Error(`Invalid ERC20 token. Address: ${e}`);return n}catch(r){throw console.error(r),Z({cause:r})}}async function Fe({client:e,tokenData:t,preferredCollateralOrder:r,...a}){let{config:o}=c(a),[n,s]=await Promise.all([e.readContract({address:o.honey.factory,abi:B,functionName:"numRegisteredAssets"}),e.readContract({address:o.honey.factory,abi:B,functionName:"referenceCollateral"})]),i=[];for(let b=0;b<n;b++)i.push(e.readContract({address:o.honey.factory,abi:B,functionName:"registeredAssets",args:[BigInt(b)]}));let l=await Promise.all(i),m=(await Promise.all(l.map(b=>{let g=t?.find(p=>N(p,b));return g||xt({address:b,publicClient:e})}))).filter(b=>!!b).sort((b,g)=>l.indexOf(b.address)-l.indexOf(g.address)).map((b,g)=>({...b,order:g}));if(r?.length){let b=[];for(let g of r){let p=m.find(A=>N(A.address,g.address));p&&(b.push(p),m.splice(m.indexOf(p),1))}m.unshift(...b)}let d=m.find(b=>N(b,s));if(!m)throw new Error("Collateral tokens not found");if(!d)throw new Error("Reference collateral address not found");return{collaterals:m,referenceCollateral:d}}import{parseEther as ca}from"viem";async function le({client:e,asset:t,amount:r,...a}){let{config:o}=c(a);try{let[n,s]=await Promise.all([e.readContract({address:o.honey.factory,abi:B,functionName:"vaults",args:[t]}),e.readContract({address:o.honey.factory,abi:B,functionName:"collectedFees",args:[o.honey.factory,t]})]);return await e.readContract({address:n,abi:ee,functionName:"balanceOf",args:[o.honey.factory]})+ca(r??"0")-s}catch(n){throw console.log(n),n}}import{parseUnits as ua}from"viem";async function vt({client:e,collateral:t,latestPrices:r,isPythWrapperEnabled:a,...o}){let{config:n}=c(o);try{let s=e.readContract({address:n.honey.factory,abi:B,functionName:"isBadCollateralAsset",args:[t.address]}),i=e.readContract({address:n.honey.factory,abi:B,functionName:"isPegged",args:[t.address]});if(a&&r){let m=r.prices.map(d=>ua(d,18));i=e.readContract({address:n.honey.reader,abi:K,functionName:"isPeggedWithPrice",args:[t.address,m[0]]})}let[l,u]=await Promise.all([s,i]);return{isBlacklisted:l,isDepegged:!u}}catch(s){throw console.log(s),s}}var da=Rt("1");async function Bs({client:e,asset:t,amount:r,isMint:a,isPythWrapperEnabled:o,latestPrices:n,...s}){let{config:i}=c(s);try{let l=await e.readContract({address:i.honey.factory,abi:B,functionName:"globalCap"});if(l>=da)return!1;let[{collaterals:u},m]=await Promise.all([Fe({client:e}),ma({client:e,asset:t,amount:r,latestPrices:n,isPythWrapperEnabled:o})]);if(!m)return;for(let d in m)if((a&&N(u[d],t)||!a&&N(u[d],t))&&m[d]>l-Ae)return!0;return!1}catch(l){throw console.log(l),l}}async function ma({client:e,asset:t,amount:r,latestPrices:a,isPythWrapperEnabled:o}){let{collaterals:n}=await Fe({client:e}),s=0n,i=[];for(let l of n){let u=await vt({client:e,collateral:t,latestPrices:a,isPythWrapperEnabled:o});if(u?.isBlacklisted||u?.isDepegged)continue;let m=await le({client:e,asset:l.address,amount:N(l,t)?r:"0"});m&&(s+=m,i.push(m))}if(s===0n)return i;for(let l in n)i[l]=Rt(i[l].toString())/s;return i}import{formatUnits as xe}from"viem";async function Vs({client:e,collateralList:t,...r}){let{config:a}=c(r);try{let o={mint:[],redeem:[]};for(let l of t)o.mint.push(e.readContract({address:a.honey.factory,abi:B,functionName:"mintRates",args:[l.address]})),o.redeem.push(e.readContract({address:a.honey.factory,abi:B,functionName:"redeemRates",args:[l.address]}));let[n,s,i]=await Promise.all([Promise.all(o.mint),Promise.all(o.redeem),e.readContract({address:a.honey.factory,abi:B,functionName:"getWeights"})]);return t.reduce((l,u)=>{let m=t.indexOf(u);return l.single[u.address]={mintFee:1-+xe(n[m],18),redeemFee:1-+xe(s[m],18)},l.basket.mintFee+=l.single[u.address].mintFee*+xe(i[m],18),l.basket.redeemFee+=l.single[u.address].redeemFee*+xe(i[m],18),l},{single:{},basket:{mintFee:0,redeemFee:0}})}catch(o){throw console.log(o),o}}import{GetGlobalData as pa}from"@berachain/graphql/honey";async function Ts({...e}={}){return(await f("honey.subgraph",e).query({query:pa})).data}async function Es({client:e,...t}){let{config:r}=c(t),a=r.honey.token;return await e.readContract({address:a,abi:Ye,functionName:"paused"})}import{parseUnits as St}from"viem";var fa=(l=>(l.Mint="previewMintHoney",l.MintWithPrice="previewMintHoneyWithPrices",l.RequiredCollateral="previewMintCollaterals",l.RequiredCollateralWithPrice="previewMintCollateralsWithPrices",l.Redeem="previewRedeemCollaterals",l.RedeemWithPrice="previewRedeemCollateralsWithPrices",l.HoneyToRedeem="previewRedeemHoney",l.HoneyToRedeemWithPrice="previewRedeemHoneyWithPrices",l))(fa||{});async function Os({client:e,collateral:t,collateralList:r,amount:a,method:o,latestPrices:n,isPythWrapperEnabled:s,...i}){let{config:l}=c(i);try{let u=o==="previewMintHoney"||o==="previewRedeemHoney"||o==="previewMintHoneyWithPrices"||o==="previewRedeemHoneyWithPrices",m=St(a,u?t.decimals:18),d,b=[t.address,m];if(s&&n){let p=n.prices.map(A=>St(A,18));b=[t.address,m,p]}if(u){let p=await e.readContract({address:l.honey.reader,abi:K,functionName:o,args:b});d={collaterals:p[0],honey:p[1]}}else d={collaterals:await e.readContract({address:l.honey.reader,abi:K,functionName:o,args:b}),honey:m};let g=r.reduce((p,A)=>{let P=A.order;return A.address===t.address&&d.collaterals[P]===BigInt(0)?Object.assign(p,{[A.address]:d.collaterals[0]}):Object.assign(p,{[A.address]:d.collaterals[P]})},{});return g[t.address]===BigInt(0)&&(g[t.address]=d.collaterals[0]),{collaterals:g,honey:d.honey}}catch(u){throw console.log("error",u),u}}async function _s({pythOracle:e,publicClient:t}){return await t.readContract({address:e,abi:ze,functionName:"pythOracle"})}async function js({publicClient:e,factory:t,...r}){let{config:a}=c(r);return await e.readContract({address:t??a.honey.factory,abi:B,functionName:"priceOracle"})}import{formatUnits as ga}from"viem";async function el({client:e,collateralList:t,honeyFactoryAddress:r,...a}){let{config:o}=c(a),n=r??o.honey.factory;try{return await Promise.all(t.map(async i=>{let l=await e.readContract({address:o.honey.factory,abi:B,functionName:"vaults",args:[i.address]}),[u,m,[d,b]]=await Promise.all([e.readContract({address:l,abi:ee,functionName:"balanceOf",args:[n]}),e.readContract({address:n,abi:B,functionName:"collectedAssetFees",args:[i.address]}),e.readContract({address:l,abi:ee,functionName:"custodyInfo"})]),g=await e.readContract({address:l,abi:ee,functionName:"convertToAssets",args:[u-m]});return{address:i.address,balance:g.toString(),formattedBalance:ga(g,i.decimals),vault:d?b:l}}))}catch(s){throw console.log(s),s}}import{HermesClient as ba}from"@pythnetwork/hermes-client";import{formatUnits as ya}from"viem";var Aa="https://hermes.pyth.network";async function Vt({priceFeedId:e}){let r=await new ba(Aa,{}).getLatestPriceUpdates(e,{encoding:"hex",parsed:!0});return{calldata:r.binary.data.map(a=>`0x${a}`),prices:r.parsed?.flatMap(a=>ya(BigInt(a.price.price),a.price.expo*-1))??[]}}import{parseEther as ha}from"viem";async function ul({client:e,asset:t,amount:r,isMint:a,referenceCollateral:o,...n}){let{config:s}=c(n);if(t===o.address)return!1;try{let[i]=await Promise.all([e.readContract({address:s.honey.factory,abi:B,functionName:"relativeCap",args:[t]})]),[l,u]=await Promise.all([le({client:e,asset:t,amount:a?r:void 0}),le({client:e,asset:o.address,amount:a?void 0:r})]);return u===0n?l!==0n:ha((l??0n).toString())/(u??0n)>=i-Ae}catch(i){throw console.log(i),i}}import{parseUnits as kt}from"viem";async function Nt({client:e,priceFeedId:t,...r}){let{config:a}=c(r);try{return await e.readContract({address:a.external.pyth,abi:et,functionName:"getUpdateFee",args:[t]})}catch(o){throw console.error("getPythUpdateFee",o),o}}var Bl=async({state:e,account:t,publicClient:r,priceFeedMap:a,collateralList:o,isPythWrapperEnabled:n,...s})=>{let{config:i}=c(s),l=Oe(s),{actionType:u,fromAmount:m,collaterals:d,isBasketModeEnabled:b}=e,g=n?i.honey.pythWrapper:i.honey.factory,p=o.map(A=>A.address);if(t&&m[0]&&p.length){let A=u==="mint";if(n&&r&&a){let y=(await Vt({priceFeedId:Object.values(a)})).calldata,F;try{F=await Nt({client:r,priceFeedId:y})}catch{F=Ze(d.length)}let G=[y,d[0]?.address,kt(m[0],(A?d[0]?.decimals:l?.decimals)??18),t,!!b];return{address:g,abi:Xe,functionName:A?"mint":"redeem",params:G,value:F}}let P=[d[0]?.address,kt(m[0],(A?d[0]?.decimals:l?.decimals)??18),t,!!b];return{address:g,abi:B,functionName:A?"mint":"redeem",params:P}}throw new Error("Something went wrong while creating the Honey swap payload")};import{parseUnits as wa}from"viem";async function Nl({client:e,isMint:t,collateralList:r,latestPrices:a,isPythWrapperEnabled:o,...n}){let{config:s}=c(n);if(o&&a){if(r.length===0)return;let l=a.prices.map(m=>wa(m,18));return await e.readContract({address:s.honey.reader,abi:K,functionName:"isBasketModeEnabledWithPrices",args:[t,l]})}return await e.readContract({address:s.honey.factory,abi:B,functionName:"isBasketModeEnabled",args:[t]})}async function Fl({block:e,currentBlock:t,blockTime:r,publicClient:a}){if($(e,"block"),k(a),t>e){let n=await a.getBlock({blockNumber:BigInt(e),includeTransactions:!1});return{timestamp:Number(n.timestamp)}}return{timestamp:R(Date.now())+r*(Number(e)-Number(t))}}import{formatUnits as De}from"viem";var Ca=(a=>(a.Duration="duration",a.TargetRate="targetRate",a.TargetApr="targetApr",a))(Ca||{});async function Ql(e,t){let[r,a,o,n,s,i]=await Promise.all([t.readContract({address:e,abi:C,functionName:"rewardsDuration"}),t.readContract({address:e,abi:C,functionName:"rewardVaultManager"}),t.readContract({address:e,abi:C,functionName:"rewardRate"}),t.readContract({address:e,abi:C,functionName:"periodFinish"}),t.readContract({address:e,abi:C,functionName:"targetRewardsPerSecond"}),t.readContract({address:e,abi:C,functionName:"minRewardDurationForTargetRate"})]),l=o*(n-BigInt(R(Date.now())))/10n**18n;return{rewardsDuration:Number(r),mode:s===0n?"duration":"targetRate",manager:a,rewardRate:De(o,36),periodFinish:Number(n),availableRewards:De(l,18),minRewardDurationForTargetRate:Number(i),targetRewardsPerSecond:De(s,36)}}function ve(e,t,r){return e?r*t*ie(1)/e:null}function Pa(e,t,r){return r?e*r/(t*ie(1)):0}function Ol({availableRewards:e,periodFinish:t,tvl:r,bgtPrice:a,MIN_REWARD_DURATION:o,MAX_REWARD_DURATION:n,...s}){let i=R(Date.now());if(i>t)return{apr:0,duration:0,rewardRate:0,targetRate:null,periodFinish:0,mode:null};if(s.mode==="targetRate"||s.mode==="targetApr"){let d,{minRewardDurationForTargetRate:b,currentDuration:g}=s;if(s.mode==="targetRate"?d=s.rewardRate:d=Pa(s.apr,a,r),d===0){let P=Math.min(g,n),V=e?e/P:0;return{apr:ve(r,a,V),duration:P,rewardRate:V,targetRate:null,periodFinish:P+i,mode:"duration"}}let p=b||o,A=e?e/d:0;if(A<p){let P=e?e/p:0;return{apr:ve(r,a,P),duration:p,rewardRate:P,targetRate:P.toString(),periodFinish:p+i,mode:null}}return{apr:ve(r,a,d),duration:A,rewardRate:d,targetRate:d.toString(),periodFinish:A+i,mode:null}}let{duration:l}=s,u=e/l;return{apr:ve(r,a,u),mode:null,targetRate:null,duration:l,rewardRate:u,periodFinish:l+i}}import{GetBlocksTimeStamp as Ba}from"@berachain/graphql/chain";async function Gt({defaultBlockTime:e,blocksSpan:t,...r}={}){let{config:a}=c(r),o=f("blocks.subgraph",r),n=e??a.averageBlockTime,s=t??Math.floor(Je(1)/n),l=(await o.query({query:Ba,variables:{skip:s}})).data;return(R(Date.now())-Number(l?.oldest[0]?.timestamp))/(Number(l?.newest[0]?.number)-Number(l?.oldest[0]?.number))}import*as ce from"@sentry/nextjs";import{GlobalData as xa}from"@berachain/graphql/pol/api";async function Tt(e={}){let{config:t}=c(e),a=await f("api",e).query({query:xa,variables:{chain:t.bex.chainName}});return{...a.data.polGetGlobalInfo,top3EmittingValidators:a.data.top3EmittingValidators.validators,allValidatorsCount:a.data.allValidatorsCount.pagination.totalCount}}import{formatEther as va}from"viem";async function Ft({publicClient:e,...t}){let{config:r}=c(t);k(e);try{let a=await e.readContract({address:r.tokens.bgt,abi:H,functionName:"totalBoosts",args:[]});return va(a)}catch(a){throw console.log(a),a}}import{erc20Abi as Ra,formatEther as Sa}from"viem";async function Dt({publicClient:e,...t}){let{config:r}=c(t);k(e);try{let a=await e.readContract({address:r.tokens.bgt,abi:Ra,functionName:"totalSupply",args:[]});return Sa(a??0n)}catch(a){throw console.log(a),a}}import{GqlRewardVaultOrderBy as ka,GqlRewardVaultOrderDirection as Ga}from"@berachain/graphql/pol/api";import{formatUnits as Va}from"viem";import{GetVaults as Na}from"@berachain/graphql/pol/api";async function Re({filter:e,publicClient:t,...r}={}){let o=await f("api",r).query({query:Na,variables:e}),n=await Promise.allSettled(o.data.polGetRewardVaults.vaults.map(async i=>{if(t)return Promise.allSettled(i.activeIncentives.map(l=>t.readContract({abi:C,address:i.address,functionName:"incentives",args:[l.tokenAddress]})))})),s=o.data.polGetRewardVaults.vaults.map((i,l)=>{let u=0,m=i.activeIncentives.map((d,b)=>{let g=Number(d.remainingAmountUsd)&&Number(d.remainingAmount)?Number(d.remainingAmountUsd)/Number(d.remainingAmount):0,p=n[l]?.status==="fulfilled"&&n[l]?.value?.[b]?.status==="fulfilled"?Va(BigInt(n[l].value[b].value[2]),d.token.decimals):d.remainingAmount;return u+=Number(p)*Number(g),{...d,remainingAmount:p}});return{...i,dynamicData:{...i.dynamicData,allTimeReceivedBGTAmount:i.dynamicData?.allTimeReceivedBGTAmount??"0",bgtCapturePercentage:i.dynamicData?.bgtCapturePercentage??"0",activeIncentivesValueUsd:u.toString(),activeIncentivesRateUsd:i.dynamicData?.activeIncentivesRateUsd??"0",bgtCapturePerBlock:i.dynamicData?.bgtCapturePerBlock??"0"},activeIncentives:m}});return{pagination:o.data.polGetRewardVaults.pagination,gaugeList:s}}async function It(e){let{gaugeList:t}=await Re({filter:{orderBy:ka.Apr,orderDirection:Ga.Desc,pageSize:e,where:{includeNonWhitelisted:!1}}});return t}async function hc(e){let[t,r,a,o]=await Promise.allSettled([Tt(),It(300),Dt({publicClient:e}),Ft({publicClient:e})]);return t.status==="rejected"&&ce.captureException(t.reason,{level:"warning"}),r.status==="rejected"&&ce.captureException(r.reason,{level:"warning"}),a.status==="rejected"&&ce.captureException(a.reason,{level:"warning"}),o.status==="rejected"&&ce.captureException(o.reason,{level:"warning"}),{bgtTotalSupply:a.status==="fulfilled"?a.value:void 0,globalCuttingBoard:r.status==="fulfilled"?r.value:[],bgtTotalBoosts:o.status==="fulfilled"?o.value:void 0,...t.status==="fulfilled"?t.value:{}}}import{GetIncentiveFeeClaimStats as Ta}from"@berachain/graphql/pol/subgraph";async function Et({...e}){let t=f("pol.subgraph",e),{data:r}=await t.query({query:Ta});if(r.incentiveFeeClaims.length>0){let a=r?.incentiveFeeClaims.reduce((s,i)=>s+Number(i.payoutAmount),3e4),n=(r?.incentiveFeeClaims.filter(s=>Number(s.timestamp)/1e3>Date.now()-$e(1))).reduce((s,i)=>s+Number(i.payoutAmount),0);return{sumAllClaims:a,sumClaimsInLast24Hours:n}}return{sumAllClaims:0,sumClaimsInLast24Hours:0}}async function Rc(e={}){let{config:t}=c(e);try{let a=await(await fetch(t.lists.rewardVaultList)).json();if(!a.protocols)throw new Error("Missing protocols in market list");return{marketList:a.protocols,marketDictionary:a.protocols.reduce((o,n)=>(o[n.name]=n,o),{})}}catch(r){throw console.error("Error fetching validator information",r),r}}async function Gc({account:e,validator:t,page:r=1,perPage:a=1e3,...o}){let{config:n}=c(o),s=await fetch(`${n.pol.bribeBoostApi}/api/v1/wallets/${e.toLowerCase()}/proofs/validator/${t.toLowerCase()}?page=${r}&per_page=${a}`,{cache:"no-store"});if(!s.ok){let l=await be(s);throw new x({message:"Failed to fetch proofs on server",cause:{error:l,result:s,account:e,validator:t},reason:l?.reason})}return await s.json()}import{formatUnits as Fa,parseUnits as Da}from"viem";async function Ec({address:e,publicClient:t}){return k(t),t.readContract({address:e,abi:D,functionName:"previewRedeem",args:[Da("1",18)]}).then(r=>Number(Fa(r,18))).catch(()=>0)}import{GetRewardVault as Ia}from"@berachain/graphql/pol/api";async function Mc({address:e,chainName:t,...r}){let{config:a}=c(r),o=t??a.bex.chainName,n=f("api",r),{data:s}=await n.query({query:Ia,variables:{vaultId:e,chain:o}});if(!s?.rewardVault)throw new tt({resource:"Reward vault",id:e,chainId:a.chainId});return s.rewardVault}var qt=[{inputs:[{internalType:"address",name:"initialOwner",type:"address"},{internalType:"address",name:"initialImplementation",type:"address"}],stateMutability:"payable",type:"constructor"},{inputs:[],name:"NewImplementationHasNoCode",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"}];async function Qt({publicClient:e,...t}){let{config:r}=c(t),a=r.pol.factory;$(e,"publicClient"),ye(r.pol.factory,"factoryAddress");let o=await e.readContract({address:a,abi:he,functionName:"beacon"});return await e.readContract({address:o,abi:qt,functionName:"implementation"})}async function Zc({publicClient:e,...t}){k(e);let r=await Qt({publicClient:e,...t}),[a,o]=await Promise.all([e.readContract({address:r,abi:C,functionName:"MIN_REWARD_DURATION"}),e.readContract({address:r,abi:C,functionName:"MAX_REWARD_DURATION"})]);return{minRewardDuration:Number(a),maxRewardDuration:Number(o)}}import{zeroAddress as Ea}from"viem";async function ou({tokenAddress:e,publicClient:t,factoryAddress:r,...a}){let{config:o}=c(a),n=await t.readContract({address:r??o.pol.factory,abi:he,functionName:"getVault",args:[e]});return n===Ea?null:n}import{isSameAddress as Wt}from"@berachain-foundation/berancer-sdk";import*as Ut from"@sentry/nextjs";import{erc20Abi as Ie,formatUnits as ue}from"viem";async function uu({address:e,stakingToken:t,publicClient:r}){let a=await r.readContract({address:e,abi:C,functionName:"getWhitelistedTokens"}),n=a.findIndex(i=>Wt(t,i))!==-1?await r.readContract({address:e,abi:C,functionName:"totalSupply"}):0n,s=await Promise.allSettled(a.map(async i=>{let[l,u,m,d]=await Promise.all([r.readContract({address:e,abi:C,functionName:"incentives",args:[i]}),r.readContract({address:i,abi:Ie,functionName:"decimals"}),r.readContract({address:i,abi:Ie,functionName:"symbol"}),r.readContract({address:i,abi:Ie,functionName:"balanceOf",args:[e]})]),[b,g,p,A]=l;return{token:i,manager:A,minIncentiveRate:ue(b,u),incentiveRate:ue(g,u),remainingAmount:ue(p,u),symbol:m,decimals:u,pendingAmount:Wt(t,i)?ue(d-n-p,u):ue(d-p,u)}}));return s.forEach((i,l)=>{i.status==="rejected"&&Ut.captureException(new x({reason:i.reason,message:"Incorrect incentives token received.",level:"error"}),{extra:{token:a[l],address:e,error:i.reason}})}),s.map(i=>i.status==="fulfilled"?i.value:null).filter(i=>i!==null)}async function pu({address:e,publicClient:t}){return await t.readContract({address:e,abi:C,functionName:"stakeToken"})}import{GetSWberaVaultMetadata as qa,GqlSWberaVaultMetadataResolution as Ot}from"@berachain/graphql/pol/api";function Qa(e){return e==="DAY"?Ot.OneDay:Ot.SevenDays}async function Au({window:e,...t}){let{config:r}=c(t),a=f("api",t);try{let o=await a.query({query:qa,variables:{chain:r.bex.chainName,resolution:Qa(e??"DAY")}}),{apr:n}=o.data.polGetSWberaVaultMetadata;return Number(n)}catch(o){throw console.error("Failed to get SW Bera APR",o),o}}import{GetSWberaVaultSnapshots as Wa,GqlVaultSnapshotDataRange as Ua}from"@berachain/graphql/pol/api";async function Bu({chain:e,range:t=Ua.ThirtyDays,...r}={}){let{config:a}=c(r),o=f("api",r);try{return(await o.query({query:Wa,variables:{chain:e??a.bex.chainName,range:t}})).data.polGetSWberaVaultSnapshots}catch(n){throw console.error("Failed to get SW Bera Snapshots",n),n}}async function de({publicClient:e,...t}){let{config:r}=c(t),a=await e.readContract({address:r.tokens.swbera,abi:D,functionName:"WITHDRAWAL_COOLDOWN"});return Number(a)}import J from"bignumber.js";import{erc20Abi as Se}from"viem";async function Eu({address:e,publicClient:t,...r}){let{config:a}=c(r);k(t);let o=26;try{let[n,s]=await Promise.all([t.getBlock({blockTag:"latest"}),Gt()]),i=Math.floor(o*60*60/s),l=n.number-BigInt(i),[u,m,d,b,g,p,A,P,V,y,F]=await Promise.all([t.readContract({address:e,abi:D,functionName:"totalAssets"}),t.readContract({address:e,abi:D,functionName:"totalSupply"}),t.readContract({address:e,abi:D,functionName:"previewRedeem",args:[10n**18n],blockNumber:n.number}),t.readContract({address:a.tokens.wbera,abi:Se,functionName:"balanceOf",args:[e]}),t.readContract({address:e,abi:D,functionName:"totalAssets",blockNumber:l}),t.readContract({address:e,abi:Se,functionName:"totalSupply",blockNumber:l}),t.readContract({address:e,abi:D,functionName:"previewRedeem",args:[10n**18n],blockNumber:l}),t.readContract({address:a.tokens.wbera,abi:Se,functionName:"balanceOf",args:[e],blockNumber:l}),t.readContract({address:a.tokens.wbera,abi:Se,functionName:"totalSupply"}),de({publicClient:t}),Et({})]),G=new J(A.toString());return{current:{exchangeRate:new J(d.toString()).toString(),totalSupply:new J(m.toString()).dividedBy(1e18).toString(),totalAssets:new J(u.toString()).dividedBy(1e18).toString(),tvl:new J(b.toString()).dividedBy(1e18).toString()},previous:{exchangeRate:G.toString(),totalSupply:new J(p.toString()).dividedBy(1e18).toString(),totalAssets:new J(g.toString()).dividedBy(1e18).toString(),tvl:new J(P.toString()).dividedBy(1e18).toString()},totalWBeraIssued:new J(V.toString()).dividedBy(1e18).toString(),lockPeriod:y,totalBuyBacks:F.sumAllClaims,totalBuyBacksInLast24Hours:F.sumClaimsInLast24Hours}}catch(n){throw console.error("Failed to get SW Bera Vault Metadata",n),n}}function Mt(e){let t=Date.now(),r=e*1e3-t;if(r<=0)return;let a=R(r);return at(a,!0,!0)}async function Ou(e,t,r,a){let o=[];function n(s,i){let[l,u,m]=s,d=l,b=Number(m)+Number(i),g=R(Date.now()),p=b-g;if(d>0){let A=Mt(p<=0?0:b);o.push({withdrawalAmount:d,timeRemaining:A})}}switch(a){case"V1":{let[s,i]=await Promise.all([r.readContract({address:e,abi:D,functionName:"withdrawalRequests",args:[t]}),de({publicClient:r})]);return n(s,i),o}case"V2":{let[s,i,l]=await Promise.all([r.readContract({address:e,abi:D,functionName:"withdrawalRequests",args:[t]}),r.readContract({address:e,abi:D,functionName:"getERC721WithdrawalRequestIds",args:[t]}),de({publicClient:r})]);n(s,l);let m=(await Promise.all(i.map(async d=>{let b=await r.readContract({address:e,abi:D,functionName:"getERC721WithdrawalRequest",args:[d]}),{assets:g,requestTime:p}=b;if(!g||!p)throw new Error("Invalid withdrawal request");let A=g,P=Number(p)+Number(l),V=R(Date.now()),y=P-V;if(A>0){let F=Mt(y<=0?0:P);return{withdrawalAmount:A,timeRemaining:F,withdrawalRequestId:d}}return null}))).filter(d=>d!==null);return o.push(...m),o}}}async function Ju({account:e,...t}){let{config:r}=c(t),a=await fetch(`${r.pol.bribeBoostApi}/api/v1/wallets/${e.toLowerCase()}/rewards/aggregation`,{cache:"no-store"});if(!a.ok){let o=await be(a);throw new x({message:"Failed to fetch incentives on server",cause:{error:o,result:a,account:e},reason:o?.error})}return await a.json()}import{formatEther as Ee}from"viem";import{isAddress as Lt}from"viem";async function _t({account:e,vaultAddress:t,publicClient:r}){if(k(r),!e||!Lt(e))throw new T({property:"account",value:e,expected:"Address"});if(!t||!Lt(t))throw new T({property:"vaultAddress",value:t,expected:"Address"});try{let[a,o]=await Promise.all([r.readContract({address:t,abi:C,functionName:"balanceOf",args:[e]}),r.readContract({address:t,abi:C,functionName:"getTotalDelegateStaked",args:[e]})]);return{balance:a,delegated:o}}catch(a){throw console.log(a),a}}async function Ht({account:e,vaultAddress:t,publicClient:r}){if(!r)throw new Error("Missing public client");if(!e)throw new Error("Missing user account");if(!t)throw new Error("Missing vault address");return await r.readContract({address:t,abi:C,functionName:"earned",args:[e]})}async function Jt({vaultAddress:e,publicClient:t}){if(!t)throw new Error("Missing public client");if(!e)throw new Error("Missing vault address");try{return await t.readContract({address:e,abi:C,functionName:"totalSupply",args:[]})}catch(r){throw console.log(r),r}}async function id({account:e,vaultAddress:t,publicClient:r}){let[a,o,n]=await Promise.all([_t({account:e,vaultAddress:t,publicClient:r}),Ht({account:e,vaultAddress:t,publicClient:r}),Jt({vaultAddress:t,publicClient:r})]),s=a.balance-a.delegated,i=n>0n?Number(Number.parseFloat(Ee(a.balance))/Number.parseFloat(Ee(n))).toString():"0";return{balance:a.balance,delegatedBalance:a.delegated,withdrawableBalance:s,rewards:Ee(o),percentage:i}}import*as $t from"@sentry/nextjs";import{formatUnits as qe}from"viem";import{GetUserVaults as Oa}from"@berachain/graphql/pol/api";async function pd({account:e,publicClient:t,...r}){let{config:a}=c(r),s=(await f("api",r).query({query:Oa,variables:{userId:e,chain:a.bex.chainName}})).data?.userVaultDeposits?.deposits;if(!s)return{totalBgtRewards:"0",vaults:[],totalStakedValue:0};let[i,l]=await Promise.all([t.multicall({allowFailure:!1,contracts:s.map(g=>({address:g.vaultAddress,abi:C,functionName:"earned",args:[e]}))}),t.multicall({allowFailure:!1,contracts:s.map(g=>({address:g.vaultAddress,abi:C,functionName:"balanceOf",args:[e]}))})]),{userVaults:u,total:m}=s.reduce((g,p,A)=>{let P=i[A],V=l[A];if(g.total+=P,!p.vault)return $t.captureException(new Error("Deposit data from API is missing vault"),{data:{deposit:p}}),console.error("Deposit data from API is missing vault",p),g;if(P>0n||V>0n){let y=p.vault.dynamicData?.tvl&&Number(p.vault.stakingTokenAmount)!==0?Number(p.vault.dynamicData?.tvl??0)/Number(p.vault.stakingTokenAmount):null;g.userVaults.push({...p,vault:p.vault,unclaimedBgt:qe(P,18),formattedBalance:qe(V,p.vault.stakingToken.decimals),stakingTokenPrice:y})}return g},{userVaults:[],total:0n}),d=[...u].sort((g,p)=>{if(g.vault.isVaultWhitelisted&&!p.vault.isVaultWhitelisted)return-1;if(!g.vault.isVaultWhitelisted&&p.vault.isVaultWhitelisted)return 1;let A=Number.parseFloat(g.unclaimedBgt);return Number.parseFloat(p.unclaimedBgt)-A});return{totalStakedValue:d.reduce((g,p)=>{let A=Number(p.vault.dynamicData?.tvl??0);if(A===0)return g;let P=Number.parseFloat(p.vault.stakingTokenAmount),V=A/P;return g+V*Number(p.formattedBalance)},0),totalBgtRewards:qe(m,18),vaults:d}}import{GetVaultHistory as Ma}from"@berachain/graphql/pol/api";async function Ad({vault:e,chain:t,...r}){let{config:a}=c(r);return(await f("api",r).query({query:Ma,variables:{...r,vaultId:e,chain:t??a.bex.chainName}})).data.polGetRewardVaultSnapshots}import{GetVaultValidators as La}from"@berachain/graphql/pol/api";async function Pd({address:e,onlyActiveValidators:t,...r}){return(await f("api",r).query({query:La,variables:{vaultId:e,isActive:t}})).data.validators.validators??[]}import{getAddress as _a,zeroAddress as Ha}from"viem";import{GetTokenCurrentPrices as Ja}from"@berachain/graphql/dex/api";async function kd({addressIn:e,...t}){let{config:r}=c(t),a=e.map(s=>s.toLowerCase()).filter((s,i,l)=>s&&l.indexOf(s)===i),o=f("api",t),{data:n}=await o.query({query:Ja,variables:{chains:[r.bex.chainName],addressIn:a}});return n.tokenGetCurrentPrices.reduce((s,i)=>{if(!i.price||!i.address)return s;let l=i.address;return s[_a(l)]={price:te(i.price.toString()),updatedAt:i.updatedAt},s[l.toLowerCase()]={price:te(i.price.toString()),updatedAt:i.updatedAt},N(l,"WBERA")&&(s[Ha]={price:te(i.price.toString()),updatedAt:i.updatedAt},s[r.tokens.bgt.toLowerCase()]={price:te(i.price.toString()),updatedAt:i.updatedAt},s[r.tokens.bgt]={price:te(i.price.toString()),updatedAt:i.updatedAt}),s},{})}async function Dd({tokenList:e,publicClient:t,...r}){let{config:a}=c(r);try{let o=await Promise.all(e.map(n=>t.readContract({address:a.honey.pythOracle,abi:nt,functionName:"feeds",args:[n]})));return e.reduce((n,s,i)=>({...n,[s]:o[i]}),{})}catch(o){throw console.error("getPythPriceFeedId",o),o}}import{erc20Abi as $a,formatUnits as ja}from"viem";async function qd({tokens:e,account:t,spender:r,publicClient:a}){if(!a||!e||!r)throw new Error("missing publicClient, tokens, or spender");if(t){let o=e.map(i=>({address:i.address,abi:$a,functionName:"allowance",args:[t,r]}));return(await a.multicall({contracts:o})).map((i,l)=>{let u=e[l];return i.error?{balance:0,...u}:{allowance:i.result,formattedAllowance:ja(i.result,u?.decimals||18),...u}})}}async function Od({url:e,...t}={}){let{config:r}=c(t);return(await Le({url:e??r.lists.tokenList,type:"rest",name:"GitHub"})).tokens??[]}import{erc20Abi as Ka,formatUnits as Ya,isAddress as jt}from"viem";function za({token:e,account:t,multicallAddress:r}){return N(e,"BERA")||N(e,"ETH")?{address:r,abi:it,functionName:"getEthBalance",args:[t]}:{address:e.address,abi:Ka,functionName:"balanceOf",args:[t]}}async function $d({account:e,tokenList:t,publicClient:r}){if(!r)throw new Error("publicClient is not defined");if(!e||!t)throw new Error("account or tokenList is not defined");if(!jt(e))throw new Error("account is not a valid address");let a=t.filter(u=>jt(u.address));$(r.chain,"publicClient.chain"),$(r.chain.contracts,"publicClient.chain.contracts"),$(r.chain.contracts.multicall3,"publicClient.chain.contracts.multicall3");let{multicall3:o}=r.chain.contracts,n=typeof o=="string"?o:o.address;ye(n,"multicall3Address");let s=a.map(u=>za({token:u,account:e,multicallAddress:n})),i=await r.multicall({contracts:s});return await Promise.all(i.map(async(u,m)=>{let d=a[m];if(u.error)return{balance:0n,formattedBalance:"0",...d};let b=Ya(u.result,d?.decimals||18);return{balance:u.result,formattedBalance:b.includes("e")?"0":b,...d}}))}import{getPublicClient as eo,getWalletClient as to,switchChain as ro}from"@wagmi/core";import{BaseError as ao,createWalletClient as oo,decodeErrorResult as no,HttpRequestError as io,http as so}from"viem";import{ChainId as lo,defaultChainId as zt}from"@berachain/config/internal";import{AbiFunctionSignatureNotFoundError as Xa,decodeFunctionData as Za}from"viem";async function Kt({publicClient:e,abi:t,...r}){let a=[...pe,...t??[]],o,n,s,i,l,u,m;if("txHash"in r){let d=await e.getTransaction({hash:r.txHash});if(!d.to)throw new T({property:"tx",value:d,expected:"Transaction",message:"Trying to get revert reason for a contract creation"});l=d.input,n=d.to,s=d.from,i=d.value,o=d.blockNumber}else if(o=r.blockNumber,n=r.to,s=r.account,i=r.value,"data"in r)l=r.data;else if("functionName"in r&&"args"in r)u=r.functionName,m=r.args;else if(!i)throw new T({property:"dataOrFunctionNameAndArgs",value:r,expected:"Hex or FunctionName and Args"});try{if(!a)if(l)await e.call({data:l,to:n,account:s,blockNumber:o,value:i});else throw new Error("Data is required if abi is not provided");if("functionName"in r&&"args"in r&&r.functionName)u=r.functionName,m=r.args;else if(l){if(!a){let d=await e.call({data:l,to:n,account:s,blockNumber:o,value:i});throw new Error(`Getting revert reason for successful simulation. Data: ${l}`,{cause:d})}try{let d=Za({abi:a,data:l});u=d.functionName,m=d.args}catch(d){throw d instanceof Xa&&await e.call({data:l,to:n,account:s,blockNumber:o,value:i}),new Error("Data is required if abi is not provided")}}else throw new Error("No data or function name and args provided");throw a&&u?(await e.simulateContract({functionName:u,args:m,abi:a,address:n,account:s,blockNumber:o}),new j({message:"Getting revert reason for successful simulation",functionName:u,to:n,txHash:"txHash"in r?r.txHash:void 0,input:r})):new Error("No data or function name and args provided")}catch(d){if(d instanceof Error)return ne({error:d,abi:a,revertIfUnknown:!0});throw d}}var co=He(1),Yt=(e,t)=>e*(100n+BigInt(t))/100n;function Qe({nonceResult:e,onWarning:t}){if(e.status==="fulfilled"){if(e.value&&e.value>Number.MAX_SAFE_INTEGER){t?.(new x({message:"Nonce is too large. No nonce will be provided to avoid IntegerOutOfRangeError.",cause:e.value,level:"debug"}));return}return e.value}}function uo(e=zt){return e===lo.BEPOLIA?process.env.NEXT_PUBLIC_80069_ANVIL_IMPERSONATE_ACCOUNT==="true":process.env.NEXT_PUBLIC_80094_ANVIL_IMPERSONATE_ACCOUNT==="true"}async function gm(e){if(process.env.NODE_ENV==="development"&&!e.contractName&&e.address&&!("calls"in e||e.calls))throw console.warn("beraWriteContract: Contract name is required. Either update the contract mapping in devrel or provide a contract name in ContractName enum","This is a development error and will be thrown in development mode only."),new T({property:"contractName",value:e.contractName,expected:"ContractName",displayMessage:`[DEV] Contract name is required as it's not mapped in the devrel's contract mapping ${e.address}`,level:"error"});let{address:t,calls:r,value:a,gasLimit:o,onLoading:n,onSuccess:s,onWarning:i,onError:l,onSubmission:u,wagmiConfig:m,walletClient:d,account:b,txConfirmationTimeout:g=12e4,chainId:p=zt,impersonateAccount:A=uo(p),errorsAbi:P=[],pollingInterval:V=co,...y}=e;n?.(e);let F="data"in y?y.data:void 0,G=[...pe,...P,..."abi"in y&&y.abi&&Array.isArray(y.abi)?y.abi:[]],I=d;if(!m){l?.(new T({property:"wagmiConfig",value:m,expected:"Config"}),e);return}if(!(I?.account?.type==="local"))try{await ro(m,{chainId:p})}catch(S){let E=S;l?.(new x({cause:E,displayMessage:"There was an error switching to the chain."}),e);return}if(!I)try{I=await to(m,{chainId:p})}catch(S){l?.(new x({cause:S,displayMessage:"There was an error connecting to the wallet."}),e);return}if(!I){l?.(new T({displayMessage:"There was an error connecting to the wallet.",property:"walletClient",value:I,expected:"WalletClient"}),e);return}let W=b||I.account;if(!W){l?.(new T({property:"account",value:W,expected:"Account"}),e);return}let me=typeof W=="string"?W:W.address,M=eo(m,{chainId:p});try{k(M)}catch(S){l?.(S,e);return}if(A){let S=ke(p);await S.impersonateAccount({address:me}),I=oo({transport:so(S.transport.url),account:W,chain:I.chain})}let q,oe={calls:"calls"in y?y.calls:void 0,params:"params"in y?y.params:void 0,value:a,data:"data"in y?y.data:void 0};try{let S=M.getTransactionCount({address:me,blockTag:"latest"}).catch(()=>{}),E={account:me,to:t,address:t,chainId:p,value:a};if(r){let Q=r.map(h=>{if("abi"in h&&Array.isArray(G)&&G.push(...h.abi),"data"in h)return{to:h.address,data:h.data,value:h.value??0n};if("abi"in h&&"functionName"in h){let L="params"in h?h.params:void 0;return{to:h.address,abi:h.abi,functionName:h.functionName,args:L,value:h.value??0n}}return{to:h.address,value:h.value??0n}});if(e.enableSimulateCalls){let h=await M.simulateCalls({calls:Q,account:W}),L=h.results.findIndex(_=>_.status==="failure");if(L!==-1){if(h.block.number===null)throw new T({property:"blockNumber",value:h.block.number,expected:"bigint",message:"Block number is null"});let _=h.results[L],{reason:Ve}=_.data&&_.data!=="0x"?{reason:Ue(no({data:_.data,abi:G}))}:ne({error:_.error,revertIfUnknown:!1,abi:G});l?.(new j({cause:_.error,txHash:q,chainId:p,reason:Ve,abi:G,input:oe,blockNumber:h.block.number}),e);return}}if(process.env.NODE_ENV==="test")throw new T({displayMessage:"Batch calls are not supported in test environment",expected:"not test",property:"NODE_ENV",value:process.env.NODE_ENV,level:"fatal"});let U=await I.sendCalls({calls:Q,account:W,forceAtomic:!0});u?.({id:U.id},e);let O=await I.waitForCallsStatus({id:U.id,pollingInterval:V,timeout:g});if(O.status==="success"){let h=O.receipts?.[0];if(!h)throw new x({message:"Call status is success but no receipt was found",cause:O,level:"error",reason:"CALL_STATUS_SUCCESS_BUT_NO_RECEIPT"});return s?.(h,e),h}throw console.error("wallet_sendCalls: Call failed",O),new j({cause:O,level:"error",input:oe,txHash:q,abi:G,chainId:p})}if(F){let[Q,U,O]=await Promise.allSettled([M.call({...E,data:F}),o??M.estimateGas({...E,data:F}),S]);if(Q.status==="rejected")throw Q.reason;let h=U.status==="fulfilled"?Yt(U.value,10):Ne;q=await I.sendTransaction({data:F,to:t,account:W,gas:h,chainId:p,nonce:Qe({nonceResult:O,onWarning(L){i?.(L,e)}}),value:a}),u?.({txHash:q},e)}else if("abi"in y&&"functionName"in y){let{abi:Q,functionName:U}=y,O="params"in y?y.params:void 0,[h,L,_]=await Promise.allSettled([M.simulateContract({...E,abi:G,functionName:U,args:O,account:W}),o??M.estimateContractGas({...E,abi:G,functionName:U,args:O}),S]);if(h.status==="rejected")throw h.reason;let Ve=o??(L.status==="fulfilled"?Yt(L.value,10):Ne);q=await I.writeContract({...h.value.request,chainId:p,gas:Ve,nonce:Qe({nonceResult:_,onWarning(tr){i?.(tr,e)}})}),u?.({txHash:q},e)}else{let[Q]=await Promise.allSettled([S]);q=await I.sendTransaction({chainId:p,to:t,value:a,account:W,nonce:Qe({nonceResult:Q,onWarning(U){i?.(U,e)}})}),u?.({txHash:q},e)}process.env.NODE_ENV==="test"&&await ke(p).mine({blocks:1});let z=await M.waitForTransactionReceipt({hash:q,pollingInterval:V,timeout:g,confirmations:1});if(z.status==="success")s?.(z,e);else{let Q=await Kt({publicClient:M,blockNumber:z.blockNumber,to:t,account:me,abi:G,args:"params"in y?y.params:void 0,functionName:"functionName"in y?y.functionName:void 0,value:a,data:F});process.env.NODE_ENV==="test"&&console.error("beraWriteContract: Revert reason",Q),l?.(new j({reason:Q.reason,txHash:q,receipt:z,to:t,functionName:"functionName"in y?y.functionName:void 0,input:oe,chainId:p,abi:G,blockNumber:z.blockNumber}),e)}return z}catch(S){if(S instanceof x)l?.(S,e);else if(S instanceof Error){let E=ne({error:S,revertIfUnknown:!1,abi:G});if(E&&E.rootCause instanceof ao&&"url"in E.rootCause){l?.(new X({cause:E.rootCause,response:void 0,endpoint:{url:E.rootCause.url,type:"rpc"},statusCode:E.rootCause instanceof io?E.rootCause.status:void 0}),e);return}l?.(new j({cause:S,to:t,txHash:q,chainId:p,abi:G,functionName:"functionName"in y?y.functionName:void 0,input:oe}),e)}else l?.(new j({cause:S,txHash:q,to:t,chainId:p,functionName:"functionName"in y?y.functionName:void 0,input:oe,abi:G}),e)}}async function wm({publicClient:e,ui:t,...r}){let{config:a}=c(r),[o,n,s,i,l,u,m,d]=await Promise.all([e.readContract({address:a.pol.beraChef,abi:v,functionName:"MAX_COMMISSION_RATE"}),e.readContract({address:a.pol.beraChef,abi:v,functionName:"commissionChangeDelay"}),e.readContract({address:a.pol.beraChef,abi:v,functionName:"rewardAllocationBlockDelay"}),e.readContract({address:a.pol.beraChef,abi:v,functionName:"maxWeightPerVault"}),e.readContract({address:a.pol.beraChef,abi:v,functionName:"maxNumWeightsPerRewardAllocation"}),e.readContract({address:a.tokens.bgt,abi:H,functionName:"dropBoostDelay"}),e.readContract({address:a.tokens.bgt,abi:H,functionName:"activateBoostDelay"}),e.readContract({address:a.pol.beraChef,abi:v,functionName:"rewardAllocationInactivityBlockSpan"})]);return{maxCommissionRate:Number(o)/1e4,boostDelay:Number(m),unboostDelay:Number(u),commissionChangeDelay:Number(n),rewardAllocationBlockDelay:Number(s),maxWeightPerVault:Number(i)/1e4,maxNumWeightsPerRewardAllocation:Number(l),rewardAllocationInactivityBlockSpan:Number(d),ui:t}}import{GetValidators as mo}from"@berachain/graphql/pol/api";async function Xt({variables:e={},...t}={}){let{config:r}=c(t);return(await f("api",t).query({query:mo,variables:{chain:r.bex.chainName,...e}})).data}import{isAddressEqual as po}from"viem";async function Vm({allocation:e}){let t=await Re({filter:{where:{vaultAddressIn:e.weights.map(a=>a.receiver)}}}),r=e?.start.blockNumber??0;return e?.weights.map(a=>({percentage:a.percentage,receiver:a.receiver,startBlock:r,receivingVault:t?.gaugeList.find(o=>po(o.address,a.receiver))}))}import{GetValidator as fo}from"@berachain/graphql/pol/api";async function Fm({id:e,...t}){let{config:r}=c(t);return(await f("api",t).query({query:fo,variables:{id:e,chain:r.bex.chainName}})).data}import{GetValidatorBlockStats as go}from"@berachain/graphql/pol/subgraph";async function qm({pubKey:e,first:t=1,...r}){let a=f("pol.subgraph",r);try{return(await a.query({query:go,variables:{pubKey:e,first:t}})).data}catch(o){throw console.error("GetValidatorBlockStats:",o),o}}function ae(e,t){return{start:{blockNumber:Number(e.startBlock),timestamp:e.startBlock!==0n?t:0},weights:e.weights.map(r=>({receiver:r.receiver,percentage:Number(r.percentageNumerator)/1e4}))}}function bo(e,t){return e.start.blockNumber===t.start.blockNumber&&e.weights.every((r,a)=>r.percentage===t.weights[a].percentage)}async function Om({client:e,pubKey:t,...r}){let{config:a}=c(r);try{let[o,n]=await Promise.all([e.readContract({address:a.pol.beraChef,abi:v,functionName:"getActiveRewardAllocation",args:[t]}),e.readContract({address:a.pol.beraChef,abi:v,functionName:"getSetActiveRewardAllocation",args:[t]})]),[s,i]=await Promise.all([o.startBlock!==0n?e.getBlock({blockNumber:BigInt(o.startBlock)}):{timestamp:0},n.startBlock!==0n?e.getBlock({blockNumber:BigInt(n.startBlock)}):{timestamp:0}]),l=ae(o,Number(s.timestamp)),u=ae(n,Number(i.timestamp)),m=!1;return u.start.blockNumber===0?m=!0:m=!bo(u,l),{activeRewardAllocation:l,setRewardAllocation:u,isBaseline:m,isNeverSet:u?.start.blockNumber===0}}catch(o){throw console.log("getValidatorRewardAllocation:",o),o}}function Jm(e){return e.start.blockNumber===0}async function $m({client:e,...t}){let{config:r}=c(t),a=await e.readContract({address:r.pol.beraChef,abi:v,functionName:"getDefaultRewardAllocation",args:[]});return ae({...a,startBlock:0n},0)}import{GetValidatorByAccount as yo}from"@berachain/graphql/pol/subgraph";async function zm({account:e,...t}){try{return(await f("pol.subgraph",t).query({query:yo,variables:{account:e}})).data}catch(r){throw console.error("getManagedValidatorByAccount:",r),r}}async function Zm({client:e,valPubKey:t}){return 5614}import{GetUserValidatorInformation as Ao}from"@berachain/graphql/pol/subgraph";async function Zt({account:e,block:t,...r}){return await f("pol.subgraph",r).query({query:Ao,variables:{address:e.toLowerCase(),block:t}})}import{formatEther as We}from"viem";async function er({account:e,pubkey:t,publicClient:r,...a}){let{config:o}=c(a);if(!e)throw new Error("account is required");if(!r)throw new Error("publicClient is required");let[n,s,i]=await Promise.all([r.readContract({address:o.tokens.bgt,abi:H,functionName:"boosted",args:[e,t]}),r.readContract({address:o.tokens.bgt,abi:H,functionName:"boostedQueue",args:[e,t]}),r.readContract({address:o.tokens.bgt,abi:H,functionName:"dropBoostQueue",args:[e,t]})]);return{pubkey:t,activeBoostAmount:We(n),queuedBoostAmount:We(s[1]),queuedDropBoostAmount:We(i[1]),queuedBoostStartBlock:s[0],queuedDropBoostStartBlock:i[0],hasPendingBoosts:Number(s[1])>0||Number(i[1])>0,hasActiveBoosts:Number(n)>0}}async function pp({account:e,publicClient:t,chain:r,...a}){let{config:o}=c(a),n=r??o.bex.chainName,s=await Zt({account:e}),[i,l]=await Promise.all([Xt({variables:{chain:n,where:{idIn:s.data.userValidatorInformations.map(u=>u.validator.id)}}}),t&&ot({lastBlockTimestamp:s.data._meta?.block.timestamp,blockTime:o.averageBlockTime})?Promise.all(s.data.userValidatorInformations.map(u=>er({account:e,pubkey:u.validator.publicKey,publicClient:t}))):void 0]);return i?.validators.validators.map(u=>{let m=l?l.find(d=>d.pubkey.toLowerCase()===u.pubkey.toLowerCase()):s.data.userValidatorInformations.find(d=>d.validator.id.toLowerCase()===u.id.toLowerCase());if(!m)throw new Error("User deposited not found");return{...u,userBoosts:{pubkey:"pubkey"in m?m.pubkey:m.validator.publicKey,activeBoostAmount:m?.activeBoostAmount,queuedBoostAmount:m?.queuedBoostAmount,queuedBoostStartBlock:Number(m?.queuedBoostStartBlock),queuedDropBoostAmount:m?.queuedDropBoostAmount,queuedDropBoostStartBlock:Number(m?.queuedDropBoostStartBlock),hasPendingBoosts:Number(m?.queuedBoostAmount)>0||Number(m?.queuedDropBoostAmount)>0,hasActiveBoosts:Number(m?.activeBoostAmount)>0}}})}var ho=[{validatorAddress:"0x8f51e63d9921a461be29e73dca1c2385e1adc5943fbb36ded4ba96025ee8a783184d1118da08171f6ea831153c878a6d",earning:.045,staked:{amount:16114000000000000000n,formattedAmount:"161.14"},rewards:{amount:15214000000000000000n,formattedAmount:"152.14"}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0x97b21253b17f4e814fe7505c15c18e68c85ab2477274ad370a762df50e3eb4cb1a48451e089bc22e158d7448549a8ab9",earning:.045,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{stake:[{amount:16159000000000000000n,formattedAmount:"161.59"}],unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:R(Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:R(Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:R(Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:R(Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:R(Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:R(Date.now()-72e6)}]}},{staked:{amount:241514000000000000000n,formattedAmount:"2415.14"},validatorAddress:"0xa4e4b63514f54d61da5197359f11ff1fc2930788ba2ffdd30c2fc059cbe0221020197bf9446b16ac347f36c7517a8686",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:1159000000000000000n,formattedAmount:"11.59",timestamp:R(Date.now()-36e6)}]}},{validatorAddress:"0xb0511ec039591e98bd4e183ba70b85572214a7ad8ca1a43e96ad3495d3821054927bc542e5482ec9733e35b7ef0b1f03",earning:.045,staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{stake:[{amount:1159000000000000000n,formattedAmount:"11.59"}]}}];async function bp(e){return await new Promise(t=>setTimeout(t,2e3)),e==="0x4C368fFE3650379d6318C8d4630bc51f8Ad12bB6"?ho:[]}import{GetValidatorAnalytics as wo}from"@berachain/graphql/pol/subgraph";async function Cp({pubkey:e,dayRange:t,...r}){return(await f("pol.subgraph",r).query({query:wo,variables:{pubKey:e,timestamp:rt(t).toString()}})).data}async function vp({client:e,pubKey:t,...r}){let{config:a}=c(r),o=await e.readContract({address:a.pol.beraChef,abi:v,functionName:"getValCommissionOnIncentiveTokens",args:[t]});return Number(o??0n)/1e4}var Vp=(e,t,r)=>{if(!t||!e)return 0;let a=ie(1)/r;return(t?a*(Number(e.dynamicData?.stakedBeraAmount)/t):0)*Number.parseFloat(e.dynamicData?.rewardRate??"0")};async function Tp({client:e,pubKey:t,...r}){let{config:a}=c(r);try{return await e.readContract({address:a.depositContract,abi:we,functionName:"getOperator",args:[t]})}catch(o){throw console.log("getValidatorOperatorAddress:",o),o}}async function Ep({client:e,pubKey:t,...r}){let{config:a}=c(r),o=await e.readContract({address:a.pol.beraChef,abi:v,functionName:"getValQueuedCommissionOnIncentiveTokens",args:[t]});return{blockNumberLast:o.blockNumberLast,commissionRate:Number(o.commissionRate)/1e4}}async function Up({client:e,pubKey:t,...r}){let{config:a}=c(r);try{return await e.readContract({address:a.depositContract,abi:we,functionName:"queuedOperator",args:[t]})}catch(o){throw console.log("getValidatorQueuedOperatorAddress:",o),o}}async function Hp({client:e,pubKey:t,...r}){let{config:a}=c(r);try{let o=await e.readContract({address:a.pol.beraChef,abi:v,functionName:"getQueuedRewardAllocation",args:[t]});return ae(o,0)}catch(o){throw console.log("getValidatorQueuedRewardAllocation:",o),o}}function Co(e){return e?.rewardAllocationWeights?.reduce((t,r)=>{if(!r)return t;let a=r.receivingVault?.activeIncentives.filter(o=>Number(o.remainingAmount)>0).reduce((o,n)=>{let s=Number(n.remainingAmountUsd)/Number(n.remainingAmount);return o+Number(n.incentiveRate)*s},0)??0;return t+a*r.percentage},0)}function $p({validator:e,bgtPrice:t}){let r=Number(e.dynamicData?.activeBoostAmount??0),a=Co(e);return!a||!r?0:a*Number(e.dynamicData?.lastDayDistributedBGTAmount??0)*365/(r*t)}export{vo as a,No as b,f as c,mr as d,dt as e,tn as f,pn as g,An as h,Bn as i,pt as j,Dn as k,Wn as l,Hn as m,jn as n,Zn as o,ai as p,re as q,li as r,Be as s,pi as t,bi as u,Bi as v,Vi as w,Bt as x,qi as y,Oi as z,Hi as A,Ki as B,xt as C,Fe as D,vt as E,Bs as F,Vs as G,Ts as H,Es as I,fa as J,Os as K,_s as L,js as M,el as N,Vt as O,ul as P,Nt as Q,Bl as R,Nl as S,Fl as T,Ca as U,Ql as V,Ol as W,Gt as X,Re as Y,hc as Z,Et as _,Rc as $,Gc as aa,Ec as ba,Mc as ca,Zc as da,ou as ea,uu as fa,pu as ga,Au as ha,Bu as ia,de as ja,Eu as ka,Ou as la,Ju as ma,Ht as na,id as oa,pd as pa,Ad as qa,Pd as ra,kd as sa,Dd as ta,qd as ua,Od as va,za as wa,$d as xa,uo as ya,gm as za,wm as Aa,Xt as Ba,Vm as Ca,Fm as Da,qm as Ea,ae as Fa,bo as Ga,Om as Ha,Jm as Ia,$m as Ja,zm as Ka,Zm as La,er as Ma,pp as Na,bp as Oa,Cp as Pa,vp as Qa,Vp as Ra,Tp as Sa,Ep as Ta,Up as Ua,Hp as Va,Co as Wa,$p as Xa};
4
- //# sourceMappingURL=chunk-OJXJ6CZ4.mjs.map