@berachain/berajs 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (453) hide show
  1. package/dist/{BeraError-D1HS_rbb.d.cts → BeraError-_mQdkanr.d.cts} +35 -10
  2. package/dist/{BeraError-D1HS_rbb.d.ts → BeraError-_mQdkanr.d.ts} +35 -10
  3. package/dist/HoneyConfigProvider-CK6mOKFH.d.ts +390 -0
  4. package/dist/HoneyConfigProvider-Ca3ouozs.d.cts +390 -0
  5. package/dist/{RequestError-D8AE6xnI.d.cts → RequestError-A8XJ6QR9.d.cts} +1 -1
  6. package/dist/{RequestError-m4jxyM7D.d.ts → RequestError-Dk97z8rm.d.ts} +1 -1
  7. package/dist/abi/exports.cjs +2 -0
  8. package/dist/abi/exports.cjs.map +1 -0
  9. package/dist/abi/{index.d.cts → exports.d.cts} +12369 -9122
  10. package/dist/abi/{index.d.ts → exports.d.ts} +12369 -9122
  11. package/dist/abi/exports.mjs +2 -0
  12. package/dist/abi/exports.mjs.map +1 -0
  13. package/dist/actions/exports.cjs +2 -0
  14. package/dist/actions/exports.cjs.map +1 -0
  15. package/dist/actions/{index.d.cts → exports.d.cts} +80 -107
  16. package/dist/actions/{index.d.ts → exports.d.ts} +80 -107
  17. package/dist/actions/exports.mjs +2 -0
  18. package/dist/actions/exports.mjs.map +1 -0
  19. package/dist/chunk-575OK77P.mjs +2 -0
  20. package/dist/chunk-575OK77P.mjs.map +1 -0
  21. package/dist/chunk-7GWTHOLO.mjs +2 -0
  22. package/dist/chunk-7GWTHOLO.mjs.map +1 -0
  23. package/dist/chunk-7SC4VD3U.cjs +2 -0
  24. package/dist/chunk-7SC4VD3U.cjs.map +1 -0
  25. package/dist/chunk-BHNQX4XC.mjs +2 -0
  26. package/dist/chunk-BHNQX4XC.mjs.map +1 -0
  27. package/dist/chunk-BOYZVULX.cjs +2 -0
  28. package/dist/chunk-BOYZVULX.cjs.map +1 -0
  29. package/dist/chunk-C3FHGFLK.mjs +2 -0
  30. package/dist/chunk-C3FHGFLK.mjs.map +1 -0
  31. package/dist/chunk-C3G5KXCH.mjs +2 -0
  32. package/dist/chunk-C3G5KXCH.mjs.map +1 -0
  33. package/dist/chunk-CYKCYPFR.cjs +2 -0
  34. package/dist/chunk-CYKCYPFR.cjs.map +1 -0
  35. package/dist/chunk-F4BKSBEM.mjs +2 -0
  36. package/dist/chunk-F4BKSBEM.mjs.map +1 -0
  37. package/dist/chunk-FL2N3XHK.cjs +2 -0
  38. package/dist/chunk-FL2N3XHK.cjs.map +1 -0
  39. package/dist/chunk-G6NA6NSM.mjs +4 -0
  40. package/dist/chunk-G6NA6NSM.mjs.map +1 -0
  41. package/dist/chunk-H2QSRMVS.mjs +2 -0
  42. package/dist/chunk-H2QSRMVS.mjs.map +1 -0
  43. package/dist/chunk-IJM76AWK.cjs +4 -0
  44. package/dist/chunk-IJM76AWK.cjs.map +1 -0
  45. package/dist/chunk-MTS5SZLA.mjs +2 -0
  46. package/dist/chunk-MTS5SZLA.mjs.map +1 -0
  47. package/dist/chunk-MUNAP5TM.cjs +2 -0
  48. package/dist/chunk-MUNAP5TM.cjs.map +1 -0
  49. package/dist/chunk-NAXAZJJY.mjs +2 -0
  50. package/dist/chunk-NAXAZJJY.mjs.map +1 -0
  51. package/dist/chunk-OGJMSGB2.mjs +2 -0
  52. package/dist/chunk-OGJMSGB2.mjs.map +1 -0
  53. package/dist/chunk-OIYXOKTT.cjs +2 -0
  54. package/dist/chunk-OIYXOKTT.cjs.map +1 -0
  55. package/dist/chunk-OS5AJMYJ.cjs +2 -0
  56. package/dist/chunk-OS5AJMYJ.cjs.map +1 -0
  57. package/dist/chunk-Q3SCM6WL.mjs +2 -0
  58. package/dist/chunk-Q3SCM6WL.mjs.map +1 -0
  59. package/dist/chunk-SWMJQOH6.cjs +2 -0
  60. package/dist/chunk-SWMJQOH6.cjs.map +1 -0
  61. package/dist/chunk-TEBJWAVU.mjs +2 -0
  62. package/dist/chunk-TEBJWAVU.mjs.map +1 -0
  63. package/dist/chunk-TJWKS54T.mjs +2 -0
  64. package/dist/chunk-TJWKS54T.mjs.map +1 -0
  65. package/dist/chunk-UQUWMHVF.cjs +2 -0
  66. package/dist/chunk-UQUWMHVF.cjs.map +1 -0
  67. package/dist/chunk-UXUWSRVV.cjs +2 -0
  68. package/dist/chunk-UXUWSRVV.cjs.map +1 -0
  69. package/dist/chunk-VP7XUOSI.cjs +2 -0
  70. package/dist/chunk-VP7XUOSI.cjs.map +1 -0
  71. package/dist/chunk-VXL2ZZ4X.cjs +2 -0
  72. package/dist/chunk-VXL2ZZ4X.cjs.map +1 -0
  73. package/dist/chunk-WRFDB3QJ.cjs +2 -0
  74. package/dist/chunk-WRFDB3QJ.cjs.map +1 -0
  75. package/dist/chunk-WTCBORPB.cjs +2 -0
  76. package/dist/chunk-WTCBORPB.cjs.map +1 -0
  77. package/dist/chunk-XNJLSA6P.cjs +2 -0
  78. package/dist/chunk-XNJLSA6P.cjs.map +1 -0
  79. package/dist/chunk-YQGZMWDT.mjs +2 -0
  80. package/dist/chunk-YQGZMWDT.mjs.map +1 -0
  81. package/dist/chunk-YXLFOEZN.mjs +2 -0
  82. package/dist/chunk-YXLFOEZN.mjs.map +1 -0
  83. package/dist/chunk-ZAKA4TGK.cjs +2 -0
  84. package/dist/chunk-ZAKA4TGK.cjs.map +1 -0
  85. package/dist/chunk-ZQRACIGR.mjs +2 -0
  86. package/dist/chunk-ZQRACIGR.mjs.map +1 -0
  87. package/dist/contexts/exports.cjs +2 -0
  88. package/dist/contexts/exports.cjs.map +1 -0
  89. package/dist/contexts/{index.d.ts → exports.d.cts} +19 -28
  90. package/dist/contexts/{index.d.cts → exports.d.ts} +19 -28
  91. package/dist/contexts/exports.mjs +2 -0
  92. package/dist/contexts/exports.mjs.map +1 -0
  93. package/dist/contracts-CQIPk0Jc.d.cts +74 -0
  94. package/dist/contracts-CQIPk0Jc.d.ts +74 -0
  95. package/dist/{defaultFlags-V-tJs2K8.d.cts → defaultFlags-d0kPbT0i.d.cts} +1 -1
  96. package/dist/{defaultFlags-V-tJs2K8.d.ts → defaultFlags-d0kPbT0i.d.ts} +1 -1
  97. package/dist/dex-C_BB0b0O.d.cts +37 -0
  98. package/dist/dex-C_BB0b0O.d.ts +37 -0
  99. package/dist/enum/exports.cjs +2 -0
  100. package/dist/enum/exports.cjs.map +1 -0
  101. package/dist/enum/exports.d.cts +24 -0
  102. package/dist/enum/exports.d.ts +24 -0
  103. package/dist/enum/exports.mjs +2 -0
  104. package/dist/enum/exports.mjs.map +1 -0
  105. package/dist/errors/exports.cjs +2 -0
  106. package/dist/errors/exports.cjs.map +1 -0
  107. package/dist/errors/exports.d.cts +385 -0
  108. package/dist/errors/exports.d.ts +385 -0
  109. package/dist/errors/exports.mjs +2 -0
  110. package/dist/{getValidatorQueuedOperatorAddress-9xY2RUGe.d.cts → getValidatorQueuedOperatorAddress-BX35p2Lv.d.ts} +125 -15
  111. package/dist/{getValidatorQueuedOperatorAddress-Ne2zoiiV.d.ts → getValidatorQueuedOperatorAddress-It0GsdvQ.d.cts} +125 -15
  112. package/dist/global.d-Ba-NIojH.d.cts +474 -0
  113. package/dist/global.d-By70bEv2.d.ts +474 -0
  114. package/dist/honey-CYm0RWf4.d.cts +14 -0
  115. package/dist/honey-CYm0RWf4.d.ts +14 -0
  116. package/dist/hooks/exports.cjs +4 -0
  117. package/dist/hooks/exports.cjs.map +1 -0
  118. package/dist/hooks/{index.d.cts → exports.d.cts} +223 -173
  119. package/dist/hooks/{index.d.ts → exports.d.ts} +223 -173
  120. package/dist/hooks/exports.mjs +4 -0
  121. package/dist/hooks/exports.mjs.map +1 -0
  122. package/dist/{BexStatusProvider-nS3NcdxI.d.cts → transactionStore-BvStaXf3.d.ts} +41 -1
  123. package/dist/{BexStatusProvider-nS3NcdxI.d.ts → transactionStore-CQrGYSY2.d.cts} +41 -1
  124. package/dist/{txnEnum-BQKDfaeH.d.cts → txnEnum-BYNbCxla.d.cts} +1 -0
  125. package/dist/{txnEnum-BQKDfaeH.d.ts → txnEnum-BYNbCxla.d.ts} +1 -0
  126. package/dist/types/exports.cjs +1 -0
  127. package/dist/types/exports.cjs.map +1 -0
  128. package/dist/types/exports.d.cts +58 -0
  129. package/dist/types/exports.d.ts +58 -0
  130. package/dist/types/exports.mjs +1 -0
  131. package/dist/{useHoneySwapState-C-9BV4VB.d.cts → useHoneySwapState-B-vmIP1b.d.cts} +1 -1
  132. package/dist/{useHoneySwapState-CUY5Sm1b.d.ts → useHoneySwapState-D1DKG_Of.d.ts} +1 -1
  133. package/dist/utils/exports.cjs +2 -0
  134. package/dist/utils/exports.cjs.map +1 -0
  135. package/dist/utils/{index.d.cts → exports.d.cts} +83 -20
  136. package/dist/utils/{index.d.ts → exports.d.ts} +83 -20
  137. package/dist/utils/exports.mjs +2 -0
  138. package/dist/utils/exports.mjs.map +1 -0
  139. package/package.json +16 -17
  140. package/src/abi/{index.ts → exports.ts} +3 -0
  141. package/src/abi/pol/LSTStakerVault.ts +2032 -0
  142. package/src/abi/utils/openChainErrors.ts +71 -30
  143. package/src/abi/utils/thirdwebMinimalAccount.ts +616 -0
  144. package/src/actions/clients/BeraApolloClient.ts +8 -6
  145. package/src/actions/dex/__tests__/aggregators.unit.test.ts +2 -5
  146. package/src/actions/dex/aggregators/base.ts +74 -16
  147. package/src/actions/dex/aggregators/bex.ts +54 -74
  148. package/src/actions/dex/aggregators/bgt.ts +31 -8
  149. package/src/actions/dex/aggregators/{enso.ts → enso/enso.ts} +18 -14
  150. package/src/actions/dex/aggregators/enso/ensoErc4626.debug.test.ts +37 -0
  151. package/src/actions/dex/aggregators/enso/ensoErc4626.ts +176 -0
  152. package/src/actions/dex/aggregators/erc4626.ts +122 -0
  153. package/src/actions/dex/aggregators/fly.ts +59 -53
  154. package/src/actions/dex/aggregators/haiku.ts +52 -54
  155. package/src/actions/dex/aggregators/honey.ts +54 -45
  156. package/src/actions/dex/aggregators/kyberswap.ts +41 -39
  157. package/src/actions/dex/aggregators/oogabooga.ts +47 -46
  158. package/src/actions/dex/aggregators/openOcean.ts +51 -46
  159. package/src/actions/dex/aggregators/wbera.ts +54 -42
  160. package/src/actions/dex/b-sdk.ts +5 -2
  161. package/src/actions/dex/getIsTokenExploited.ts +2 -2
  162. package/src/actions/enso/{zap.ts → getEnsoSwapBundle.ts} +4 -5
  163. package/src/actions/enso/getEnsoUserTokensWithBalances.debug.test.ts +73 -0
  164. package/src/actions/enso/{getEnsoUserToken.ts → getEnsoUserTokensWithBalances.ts} +42 -30
  165. package/src/actions/enso/util.ts +1 -1
  166. package/src/actions/{index.ts → exports.ts} +5 -0
  167. package/src/actions/governance/__tests__/checkProposalField.unit.test.ts +1 -1
  168. package/src/actions/governance/__tests__/getQuorum.integration.test.ts +1 -1
  169. package/src/actions/governance/checkProposalField.ts +1 -1
  170. package/src/actions/governance/computeActualStatus.ts +1 -1
  171. package/src/actions/governance/getBodyErrors.ts +1 -1
  172. package/src/actions/governance/getDecodedFunctionData.ts +1 -4
  173. package/src/actions/governance/getProposalDetails.ts +2 -2
  174. package/src/actions/governance/getProposalFromTx.ts +1 -2
  175. package/src/actions/governance/getProposalParams.ts +7 -8
  176. package/src/actions/governance/getQuorum.ts +1 -2
  177. package/src/actions/honey/getCollateralWeights.ts +1 -1
  178. package/src/actions/honey/getHoneyCollaterals.ts +1 -0
  179. package/src/actions/honey/getHoneyVaultsBalance.ts +51 -55
  180. package/src/actions/honey/getSwapPayload.ts +37 -35
  181. package/src/actions/honey/tests/pyth.integration.test.ts +0 -1
  182. package/src/actions/pol/__tests__/getAllValidators.integration.test.ts +1 -1
  183. package/src/actions/pol/getEarnedStakedBeraVault.ts +31 -0
  184. package/src/actions/pol/getGlobalData.ts +14 -13
  185. package/src/actions/pol/getLSTStakeConfig.ts +67 -0
  186. package/src/actions/pol/getMarkets.ts +1 -1
  187. package/src/actions/pol/getRewardProofsByValidator.ts +1 -1
  188. package/src/actions/pol/getRewardVaultIncentives.ts +3 -5
  189. package/src/actions/pol/getRewardVaults.ts +2 -3
  190. package/src/actions/pol/getSWBeraVaultMetadata.ts +7 -5
  191. package/src/actions/pol/getSWBeraWithdrawal.ts +41 -27
  192. package/src/actions/pol/getStakeWithdrawalCooldown.ts +5 -7
  193. package/src/actions/pol/getStakingDailyAssets.ts +21 -0
  194. package/src/actions/pol/getStakingTokenInformation.ts +3 -4
  195. package/src/actions/pol/getTotalStakedAmount.ts +47 -0
  196. package/src/actions/pol/getUserClaimableIncentives.ts +1 -1
  197. package/src/actions/pol/getUserVaults.ts +8 -6
  198. package/src/actions/pol/getUserVaultsBalance.ts +4 -16
  199. package/src/actions/prices/getTokenCurrentPrices.ts +8 -3
  200. package/src/actions/tokens/getAllowances.ts +68 -41
  201. package/src/actions/tokens/getTokenInformation.ts +4 -1
  202. package/src/actions/tokens/getTokens.ts +1 -1
  203. package/src/actions/tokens/getUnderlyingToken.ts +53 -0
  204. package/src/actions/tokens/getWalletBalances.integration.test.ts +53 -14
  205. package/src/actions/tokens/getWalletBalances.ts +69 -43
  206. package/src/actions/transactions/beraWriteContract.integration.test.ts +18 -6
  207. package/src/actions/transactions/beraWriteContract.ts +3 -3
  208. package/src/actions/validators/getUserActiveValidators.ts +2 -3
  209. package/src/actions/validators/getUserBoostsOnValidator.ts +2 -3
  210. package/src/contexts/BeraFlags/defaultFlags.ts +4 -0
  211. package/src/contexts/SwrFallback.tsx +13 -3
  212. package/src/contexts/TokensProvider.tsx +35 -8
  213. package/src/{hooks/transactions → contexts}/TransactionStoreContext.tsx +32 -4
  214. package/src/contexts/block-time-provider.tsx +1 -1
  215. package/src/contexts/{index.ts → exports.ts} +1 -1
  216. package/src/data/contracts.ts +16 -1
  217. package/src/enum/contracts.ts +13 -0
  218. package/src/enum/dex.ts +29 -0
  219. package/src/enum/{index.ts → exports.ts} +3 -0
  220. package/src/enum/governance.ts +61 -0
  221. package/src/enum/honey.ts +12 -0
  222. package/src/enum/txnEnum.ts +1 -0
  223. package/src/errors/BeraError.ts +50 -11
  224. package/src/errors/BeraMonitoring.ts +66 -0
  225. package/src/errors/BeraTracing.ts +79 -0
  226. package/src/errors/BeraTracing.unit.test.ts +198 -0
  227. package/src/errors/RequestError.ts +2 -2
  228. package/src/errors/assert.ts +4 -2
  229. package/src/errors/assert.unit.test.ts +6 -2
  230. package/src/errors/errorMap.ts +16 -6
  231. package/src/errors/{index.ts → exports.ts} +7 -0
  232. package/src/errors/getErrorMessage.ts +22 -3
  233. package/src/errors/getRevertReason.integration.test.ts +17 -5
  234. package/src/errors/getRevertReason.ts +41 -2
  235. package/src/errors/initBeraError.ts +52 -7
  236. package/src/errors/parseViemError.ts +114 -27
  237. package/src/errors/severity.ts +12 -0
  238. package/src/hooks/bend/useGetConvertToAssets.ts +3 -2
  239. package/src/hooks/dex/useAggregatorsQuotes.ts +126 -365
  240. package/src/hooks/dex/useAllUserPools.ts +1 -1
  241. package/src/hooks/dex/useApiPool.ts +1 -1
  242. package/src/hooks/dex/useCreatePool.ts +6 -5
  243. package/src/hooks/dex/useExploitedTokens.ts +1 -1
  244. package/src/hooks/dex/useLiquidityMismatch.ts +2 -5
  245. package/src/hooks/dex/useLpPosition.ts +21 -20
  246. package/src/hooks/dex/useMultipleTokenApprovalsWithSlippage.ts +40 -29
  247. package/src/hooks/dex/usePollPoolCreationRelayerApproval.ts +1 -1
  248. package/src/hooks/dex/usePoolEvents.ts +1 -1
  249. package/src/hooks/dex/usePools.ts +1 -1
  250. package/src/hooks/dex/usePriceImpact.ts +40 -0
  251. package/src/hooks/dex/useSingleAggregatorQuote.ts +350 -0
  252. package/src/hooks/enso/useBendZapSupply.ts +216 -0
  253. package/src/hooks/enso/useEnsoSwapBundle.ts +107 -0
  254. package/src/hooks/enso/useEnsoUserTokensWithBalances.ts +43 -0
  255. package/src/hooks/enso/useZapStakeBera.ts +113 -0
  256. package/src/hooks/{index.ts → exports.ts} +18 -7
  257. package/src/hooks/governance/useCreateProposal.ts +8 -8
  258. package/src/hooks/governance/usePollAllProposals.ts +1 -1
  259. package/src/hooks/governance/usePollProposal.ts +1 -1
  260. package/src/hooks/governance/usePollProposalThreshold.ts +1 -1
  261. package/src/hooks/governance/usePollUserDelegates.ts +1 -1
  262. package/src/hooks/governance/useProposalState.ts +2 -2
  263. package/src/hooks/honey/useCappedGlobally.ts +2 -1
  264. package/src/hooks/honey/useCappedRelatively.ts +1 -1
  265. package/src/hooks/honey/useCollateralWeights.ts +2 -1
  266. package/src/hooks/honey/useHoneyAlerts.ts +11 -11
  267. package/src/hooks/honey/useHoneyBalances.ts +7 -3
  268. package/src/hooks/honey/useHoneyGlobalData.ts +2 -1
  269. package/src/hooks/honey/useHoneySwapState.ts +2 -1
  270. package/src/hooks/honey/useHoneyVaultsBalance.ts +1 -1
  271. package/src/hooks/honey/useIsBadCollateralAsset.ts +2 -1
  272. package/src/hooks/honey/useIsBasketModeEnabled.ts +1 -1
  273. package/src/hooks/honey/usePythLatestPrices.ts +1 -1
  274. package/src/hooks/pol/useOnChainRewardVault.ts +3 -2
  275. package/src/hooks/pol/usePollGlobalData.ts +1 -1
  276. package/src/hooks/pol/usePollMarkets.ts +1 -1
  277. package/src/hooks/pol/useQueuedBeraUnlock.ts +17 -15
  278. package/src/hooks/pol/useRewardTokenToBeraRate.ts +6 -3
  279. package/src/hooks/pol/useRewardVault.ts +1 -1
  280. package/src/hooks/pol/useRewardVaults.ts +1 -1
  281. package/src/hooks/pol/useSWBeraVaultMetadata.ts +35 -0
  282. package/src/hooks/pol/useStakedAPR.ts +38 -0
  283. package/src/hooks/pol/useStakedData.ts +117 -0
  284. package/src/hooks/pol/useStakedSnapshots.ts +52 -0
  285. package/src/hooks/pol/useTotalStakedAmount.ts +30 -0
  286. package/src/hooks/pol/useUserVaultInfo.ts +1 -1
  287. package/src/hooks/pol/useVaultValidators.ts +1 -1
  288. package/src/hooks/tokens/useMultipleTokenInformation.ts +15 -6
  289. package/src/hooks/tokens/usePollAllowances.ts +15 -19
  290. package/src/hooks/tokens/usePollBalance.ts +8 -4
  291. package/src/hooks/tokens/usePollWalletBalances.ts +14 -11
  292. package/src/hooks/tokens/useStakingTokenInformation.ts +2 -1
  293. package/src/hooks/tokens/useTokenCurrentPrice.ts +4 -2
  294. package/src/hooks/tokens/useTokenCurrentPrices.ts +92 -13
  295. package/src/hooks/tokens/useTokenInformation.ts +11 -6
  296. package/src/hooks/tokens/useTokenPrice.ts +21 -0
  297. package/src/hooks/tokens/useTokenPrices.ts +133 -0
  298. package/src/hooks/tokens/useTokens.ts +1 -0
  299. package/src/hooks/tokens/useUnderlyingAsset.ts +23 -0
  300. package/src/hooks/transactions/transactionStore.ts +86 -65
  301. package/src/hooks/transactions/transactionStore.unit.test.ts +54 -1
  302. package/src/hooks/transactions/useAddRecentTransaction.ts +1 -1
  303. package/src/hooks/transactions/useRecentTransactions.ts +1 -1
  304. package/src/hooks/transactions/useSetTransactionStatus.ts +31 -0
  305. package/src/hooks/useContractWrite/useBeraContractWrite.ts +2 -1
  306. package/src/hooks/validators/useAllValidators.ts +1 -1
  307. package/src/hooks/validators/useApiValidator.ts +1 -1
  308. package/src/hooks/validators/useDailyValidatorBlockStats.ts +1 -1
  309. package/src/hooks/validators/useManagedValidatorByAccount.ts +1 -1
  310. package/src/hooks/validators/useManagedValidatorRole.ts +1 -1
  311. package/src/hooks/validators/useOnChainValidator.ts +1 -1
  312. package/src/hooks/validators/useStakingPoolBatch.ts +1 -1
  313. package/src/hooks/validators/useUserActiveValidators.ts +1 -1
  314. package/src/hooks/validators/useUserBoostsOnValidator.ts +1 -1
  315. package/src/hooks/validators/useUserClaimableIncentives.ts +8 -8
  316. package/src/hooks/validators/useValidator.ts +1 -1
  317. package/src/hooks/validators/useValidatorAnalytics.ts +1 -1
  318. package/src/hooks/validators/useValidatorCommission.ts +1 -1
  319. package/src/hooks/validators/useValidatorQueuedCommission.ts +1 -1
  320. package/src/hooks/validators/useValidatorQueuedOperatorAddress.ts +1 -1
  321. package/src/hooks/validators/useValidatorQueuedRewardAllocation.ts +1 -1
  322. package/src/hooks/validators/useValidatorRewardAllocation.ts +1 -1
  323. package/src/types/{dex.ts → dex.d.ts} +96 -67
  324. package/src/types/{enso.ts → enso.d.ts} +1 -1
  325. package/src/types/exports.ts +8 -0
  326. package/src/types/{global.ts → global.d.ts} +1 -30
  327. package/src/types/{governance.ts → governance.d.ts} +2 -64
  328. package/src/types/{honeySwap.ts → honeySwap.d.ts} +1 -13
  329. package/src/types/{pol.ts → pol.d.ts} +12 -1
  330. package/src/types/staking.d.ts +22 -0
  331. package/src/utils/createEmitter.ts +122 -0
  332. package/src/utils/createEmitter.unit.test.ts +149 -0
  333. package/src/utils/{index.ts → exports.ts} +3 -2
  334. package/src/utils/filter.ts +34 -0
  335. package/src/utils/formatNumber.ts +1 -1
  336. package/src/utils/formatNumber.unit.test.ts +2 -1
  337. package/src/utils/formatTokenList.ts +4 -10
  338. package/src/utils/getHoneySwapMessage.test.ts +1 -2
  339. package/src/utils/getServerSideClient.ts +4 -5
  340. package/src/utils/isDifferenceExceedingThreshold.ts +1 -1
  341. package/src/utils/layerZeroScan.ts +122 -0
  342. package/src/utils/math.ts +1 -1
  343. package/src/utils/parseWhiskToken.ts +15 -0
  344. package/src/utils/poolNamings.ts +1 -1
  345. package/src/utils/tokens.ts +23 -7
  346. package/dist/HoneyConfigProvider-6PXZJMSU.d.cts +0 -562
  347. package/dist/HoneyConfigProvider-CwDFrt02.d.ts +0 -562
  348. package/dist/abi/index.cjs +0 -2
  349. package/dist/abi/index.cjs.map +0 -1
  350. package/dist/abi/index.mjs +0 -2
  351. package/dist/actions/index.cjs +0 -2
  352. package/dist/actions/index.cjs.map +0 -1
  353. package/dist/actions/index.mjs +0 -2
  354. package/dist/aggregatorsRouter-Cny4B_MB.d.cts +0 -593
  355. package/dist/aggregatorsRouter-Cny4B_MB.d.ts +0 -593
  356. package/dist/chunk-22MQVFHP.cjs +0 -2
  357. package/dist/chunk-22MQVFHP.cjs.map +0 -1
  358. package/dist/chunk-3TKSVFZ3.mjs +0 -2
  359. package/dist/chunk-3TKSVFZ3.mjs.map +0 -1
  360. package/dist/chunk-6VF3RF53.cjs +0 -3
  361. package/dist/chunk-6VF3RF53.cjs.map +0 -1
  362. package/dist/chunk-6W22TFYA.mjs +0 -2
  363. package/dist/chunk-6W22TFYA.mjs.map +0 -1
  364. package/dist/chunk-AMRJ4B36.mjs +0 -2
  365. package/dist/chunk-AMRJ4B36.mjs.map +0 -1
  366. package/dist/chunk-DS2ZDVKU.mjs +0 -2
  367. package/dist/chunk-DS2ZDVKU.mjs.map +0 -1
  368. package/dist/chunk-ED43NYSE.cjs +0 -2
  369. package/dist/chunk-ED43NYSE.cjs.map +0 -1
  370. package/dist/chunk-EU4WFADK.cjs +0 -2
  371. package/dist/chunk-EU4WFADK.cjs.map +0 -1
  372. package/dist/chunk-HCTFDGXL.mjs +0 -2
  373. package/dist/chunk-HCTFDGXL.mjs.map +0 -1
  374. package/dist/chunk-IOSYBHKU.mjs +0 -2
  375. package/dist/chunk-IOSYBHKU.mjs.map +0 -1
  376. package/dist/chunk-JMKLDDKY.cjs +0 -2
  377. package/dist/chunk-JMKLDDKY.cjs.map +0 -1
  378. package/dist/chunk-KMKUXP2S.mjs +0 -3
  379. package/dist/chunk-KMKUXP2S.mjs.map +0 -1
  380. package/dist/chunk-OJXJ6CZ4.mjs +0 -4
  381. package/dist/chunk-OJXJ6CZ4.mjs.map +0 -1
  382. package/dist/chunk-PHIOKO3A.mjs +0 -2
  383. package/dist/chunk-PHIOKO3A.mjs.map +0 -1
  384. package/dist/chunk-QCK474XD.cjs +0 -2
  385. package/dist/chunk-QCK474XD.cjs.map +0 -1
  386. package/dist/chunk-REDXXUK7.cjs +0 -2
  387. package/dist/chunk-REDXXUK7.cjs.map +0 -1
  388. package/dist/chunk-S74ZMG2G.cjs +0 -2
  389. package/dist/chunk-S74ZMG2G.cjs.map +0 -1
  390. package/dist/chunk-TOAXF4YW.cjs +0 -2
  391. package/dist/chunk-TOAXF4YW.cjs.map +0 -1
  392. package/dist/chunk-UZ5CB33M.cjs +0 -2
  393. package/dist/chunk-UZ5CB33M.cjs.map +0 -1
  394. package/dist/chunk-VYWYJR63.mjs +0 -2
  395. package/dist/chunk-VYWYJR63.mjs.map +0 -1
  396. package/dist/chunk-XFPTQMAK.cjs +0 -4
  397. package/dist/chunk-XFPTQMAK.cjs.map +0 -1
  398. package/dist/chunk-YK4NINF5.mjs +0 -2
  399. package/dist/chunk-YK4NINF5.mjs.map +0 -1
  400. package/dist/contexts/index.cjs +0 -2
  401. package/dist/contexts/index.cjs.map +0 -1
  402. package/dist/contexts/index.mjs +0 -2
  403. package/dist/contexts/index.mjs.map +0 -1
  404. package/dist/enum/index.cjs +0 -2
  405. package/dist/enum/index.cjs.map +0 -1
  406. package/dist/enum/index.d.cts +0 -31
  407. package/dist/enum/index.d.ts +0 -31
  408. package/dist/enum/index.mjs +0 -2
  409. package/dist/enum/index.mjs.map +0 -1
  410. package/dist/errors/index.cjs +0 -2
  411. package/dist/errors/index.cjs.map +0 -1
  412. package/dist/errors/index.d.cts +0 -204
  413. package/dist/errors/index.d.ts +0 -204
  414. package/dist/errors/index.mjs +0 -2
  415. package/dist/errors/index.mjs.map +0 -1
  416. package/dist/hooks/index.cjs +0 -4
  417. package/dist/hooks/index.cjs.map +0 -1
  418. package/dist/hooks/index.mjs +0 -4
  419. package/dist/hooks/index.mjs.map +0 -1
  420. package/dist/staking-F9Nx9TKD.d.ts +0 -246
  421. package/dist/staking-f4BpYH7l.d.cts +0 -246
  422. package/dist/types/index.cjs +0 -2
  423. package/dist/types/index.cjs.map +0 -1
  424. package/dist/types/index.d.cts +0 -56
  425. package/dist/types/index.d.ts +0 -56
  426. package/dist/types/index.mjs +0 -2
  427. package/dist/types/index.mjs.map +0 -1
  428. package/dist/utils/index.cjs +0 -2
  429. package/dist/utils/index.cjs.map +0 -1
  430. package/dist/utils/index.mjs +0 -2
  431. package/dist/utils/index.mjs.map +0 -1
  432. package/src/actions/dex/getTransactionCount.ts +0 -29
  433. package/src/actions/enso/bend.ts +0 -143
  434. package/src/actions/enso/getEnsoUserToken.debug.test.ts +0 -57
  435. package/src/contexts/berajsProvider/context.tsx +0 -49
  436. package/src/contexts/berajsProvider/index.ts +0 -2
  437. package/src/contexts/berajsProvider/useBeraJs.ts +0 -18
  438. package/src/hooks/dex/usePollVaultIsPaused.ts +0 -30
  439. package/src/hooks/enso/useBendTransactionRequests.ts +0 -247
  440. package/src/hooks/enso/useEnsoZap.ts +0 -166
  441. package/src/hooks/enso/useZapTransactionRequests.ts +0 -81
  442. package/src/hooks/pol/useEarnedStakedBeraVault.ts +0 -59
  443. package/src/hooks/pol/useStakedBeraSnapshots.ts +0 -27
  444. package/src/hooks/validators/validatorRoleManager.ts +0 -0
  445. package/src/types/index.ts +0 -8
  446. package/src/types/staking.ts +0 -7
  447. package/src/utils/formatAggregatorsQuotes.ts +0 -57
  448. package/src/utils/formatAggregatorsQuotes.unit.test.ts +0 -191
  449. package/src/utils/sentryBeforeSend.ts +0 -52
  450. /package/dist/{abi/index.mjs.map → errors/exports.mjs.map} +0 -0
  451. /package/dist/{actions/index.mjs.map → types/exports.mjs.map} +0 -0
  452. /package/src/actions/dex/{__tests__ → aggregators}/haiku.integration.test.ts +0 -0
  453. /package/src/types/{bribe-boost.ts → bribe-boost.d.ts} +0 -0
@@ -1,3 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk22MQVFHPcjs = require('./chunk-22MQVFHP.cjs');var _chunkJMKLDDKYcjs = require('./chunk-JMKLDDKY.cjs');var _react = require('react');var _edgeconfig = require('@berachain/config/internal/edge-config');var _jsxruntime = require('react/jsx-runtime');var v=_react.createContext.call(void 0, void 0);function be({children:e,flags:t,aggregators:o,swberaAprWindow:r="DAY"}){return _jsxruntime.jsx.call(void 0, v.Provider,{value:{..._chunk22MQVFHPcjs.a,...t,aggregators:o?Object.entries(o).filter(([,n])=>_edgeconfig.isFlagEnabled.call(void 0, n)).map(([n])=>n):void 0,swberaAprWindow:r},children:e})}function K(){let e=_react.useContext.call(void 0, v);if(!e)throw new Error("BeraFlagsProvider not found");return e}function ke(e){return K()[e]}var S=_react.createContext.call(void 0, {protocol:{isPaused:!1,factories:{composableStable:"enabled",weighted:"enabled",allPaused:!1}},onPoolChange:()=>{},pool:void 0});function Be(){let e=_react.useContext.call(void 0, S);if(!e)throw new (0, _chunkJMKLDDKYcjs.f)({level:"fatal",message:"BexStateContext is not defined"});return e}function Le({children:e,isVaultPaused:t,labels:o,factories:r}){let[n,s]=_react.useState.call(void 0, ),l=_nullishCoalesce((_optionalChain([n, 'optionalAccess', _2 => _2.isPaused])&&!_optionalChain([n, 'optionalAccess', _3 => _3.isInRecoveryMode])), () => (!1)),i=t||_optionalChain([n, 'optionalAccess', _4 => _4.isPaused]);return _jsxruntime.jsx.call(void 0, 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})}var _core = require('@wagmi/core');var L="rk-transactions",F="transactions";function w(e){try{let t=e?JSON.parse(e):{};return typeof t=="object"?t:{}}catch (e2){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]=_optionalChain([n, 'optionalAccess', _5 => _5.filter, 'call', _6 => _6(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 _nullishCoalesce(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=_core.getPublicClient.call(void 0, 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]=_nullishCoalesce(t[a], () => ([]));let u=d(_nullishCoalesce(_optionalChain([t, 'optionalAccess', _7 => _7[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}}var _hooks = require('@berachain/wagmi/hooks');var D,W=_react.createContext.call(void 0, null);function Ie({children:e}){let{account:t}=_hooks.useBeraWagmi.call(void 0, ),o=_optionalChain([t, 'optionalAccess', _8 => _8.wallet, 'optionalAccess', _9 => _9.address]),r=_hooks.useConfig.call(void 0, ),[n]=_react.useState.call(void 0, ()=>_nullishCoalesce(D, () => ((D=R({config:r})))));return _react.useEffect.call(void 0, ()=>{o&&n.waitForPendingTransactions(o)},[n,o]),_jsxruntime.jsx.call(void 0, W.Provider,{value:n,children:e})}function He(){let e=_react.useContext.call(void 0, W);if(!e)throw new Error("Transaction hooks must be used within ");return e}var _mainnet = require('@berachain/config/mainnet'); var _mainnet2 = _interopRequireDefault(_mainnet);function Xe(){return _react.useContext.call(void 0, A)}var A=_react.createContext.call(void 0, _mainnet2.default.averageBlockTime);function _e({children:e,blockTime:t,...o}){let{config:r}=_chunk22MQVFHPcjs.b.call(void 0, o);return _jsxruntime.jsx.call(void 0, A.Provider,{value:_nullishCoalesce(t, () => (r.averageBlockTime)),children:e})}var N=_react.createContext.call(void 0, void 0);function je({children:e,...t}){return _jsxruntime.jsx.call(void 0, N.Provider,{value:t,children:e})}function ze(){let e=_react.useContext.call(void 0, N);if(!e)throw new Error("useHoneyConfig must be used within a HoneyConfigProvider");return e}var _internal = require('@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=>_optionalChain([i, 'access', _10 => _10.tags, 'optionalAccess', _11 => _11.some, 'call', _12 => _12(p=>p==="featured")])),s=[...r,...t];return{tokenList:s.filter((i,p)=>s.findIndex(g=>_chunk22MQVFHPcjs.f.call(void 0, g,i))===p),customTokenList:t,featuredTokenList:n}}var Te=_react.createContext.call(void 0, void 0);function nt({children:e,defaultTokens:t,userTokens:o,onAddToken:r,onRemoveToken:n}){let{tokenList:s=[],featuredTokenList:l=[]}=_react.useMemo.call(void 0, ()=>M({defaultTokenList:t,externalList:o,chainId:_internal.defaultChainId}),[t,o]);return _jsxruntime.jsx.call(void 0, Te.Provider,{value:{tokenList:s,userTokens:o,featuredTokens:l,onAddToken(i){r(i,{defaultTokens:t,userTokens:o,tokenList:s})},onRemoveToken:n},children:e})}exports.a = be; exports.b = K; exports.c = ke; exports.d = S; exports.e = Be; exports.f = Le; exports.g = w; exports.h = z; exports.i = h; exports.j = G; exports.k = R; exports.l = Ie; exports.m = He; exports.n = Xe; exports.o = A; exports.p = _e; exports.q = N; exports.r = je; exports.s = ze; exports.t = Te; exports.u = nt;
3
- //# sourceMappingURL=chunk-6VF3RF53.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/Users/pong/coding/monobera/packages/berajs/dist/chunk-6VF3RF53.cjs","../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"],"names":["BeraFlagContext","createContext","BeraFlagsProvider","children","flags","aggregators","swberaAprWindow","jsx","defaultFlags","value","isFlagEnabled","key","useBeraFlags","context","useContext","useBeraFlag","BexStateContext","useBexStatus","BeraError","BexStatusProvider","isVaultPaused","labels","factories","poolState","setPoolState","useState","disablePoolWithdrawals","disablePoolDeposits","storageKeyLegacy","storageKey","safeParseJsonData","string","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","getPublicClient","requestPromise","updateFn","a","b","persistData","notifyListeners","listener","onChange","fn","storeSingleton","TransactionStoreContext","TransactionStoreProvider","useBeraWagmi","address","useConfig","store","useEffect","useTransactionStore","useBlockTime","BlockTimeContext","mainnet","BlockTimeProvider","blockTime","args","parseBaseArgs","HoneyConfigContext","HoneyConfigProvider","props","useHoneyConfig","formatTokenList","defaultTokenList","externalList","defaultList","token","featuredTokenList","tag","mergedList","item","index","i","isToken","TokenContext","TokensProvider","defaultTokens","userTokens","onAddToken","onRemoveToken","tokenList","useMemo","defaultChainId","tk"],"mappings":"AAAA,y0BAAsD,wDAAyC,8BCArD,oEAKnC,+CAiCH,IAhBEA,CAAAA,CAAkBC,kCAAAA,KACtB,CACF,CAAA,CAEO,SAASC,EAAAA,CAAkB,CAChC,QAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CAAkB,KACpB,CAAA,CAKG,CACD,OACEC,6BAAAA,CAACP,CAAgB,QAAA,CAAhB,CACC,KAAA,CAAO,CACL,GAAGQ,mBAAAA,CACH,GAAGJ,CAAAA,CACH,WAAA,CAAaC,CAAAA,CACT,MAAA,CAAO,OAAA,CAAQA,CAAW,CAAA,CACvB,MAAA,CAAO,CAAC,CAAC,CAAEI,CAAK,CAAA,CAAA,EAAMC,uCAAAA,CAAmB,CAAC,CAAA,CAC1C,GAAA,CAAI,CAAC,CAACC,CAAG,CAAA,CAAA,EAAMA,CAAG,CAAA,CACrB,KAAA,CAAA,CACJ,eAAA,CAAAL,CACF,CAAA,CAEC,QAAA,CAAAH,CAAAA,CACH,CAEJ,CAEO,SAASS,CAAAA,CAAAA,CAAe,CAC7B,IAAMC,CAAAA,CAAUC,+BAAAA,CAA0B,CAAA,CAC1C,EAAA,CAAI,CAACD,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,6BAA6B,CAAA,CAE/C,OAAOA,CACT,CAEO,SAASE,EAAAA,CACdJ,CAAAA,CAC2B,CAE3B,OADcC,CAAAA,CAAa,CAAA,CACdD,CAAG,CAClB,CCpEA,IAmCaK,CAAAA,CAAkBf,kCAAAA,CAe7B,QAAA,CAAU,CACR,QAAA,CAAU,CAAA,CAAA,CACV,SAAA,CAAW,CACT,gBAAA,CAAkB,SAAA,CAClB,QAAA,CAAU,SAAA,CACV,SAAA,CAAW,CAAA,CACb,CACF,CAAA,CACA,YAAA,CAAc,CAAA,CAAA,EAAM,CAAC,CAAA,CACrB,IAAA,CAAM,KAAA,CACR,CAAC,CAAA,CASM,SAASgB,EAAAA,CAAAA,CAAe,CAC7B,IAAMJ,CAAAA,CAAUC,+BAAAA,CAA0B,CAAA,CAE1C,EAAA,CAAI,CAACD,CAAAA,CACH,MAAM,IAAIK,wBAAAA,CAAU,CAClB,KAAA,CAAO,OAAA,CACP,OAAA,CAAS,gCACX,CAAC,CAAA,CAGH,OAAOL,CACT,CAEO,SAASM,EAAAA,CAAkB,CAChC,QAAA,CAAAhB,CAAAA,CACA,aAAA,CAAAiB,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CACF,CAAA,CAA8C,CAC5C,GAAM,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,6BAAAA,CAAyC,CAErEC,CAAAA,kBAAAA,iBACHH,CAAAA,6BAAW,UAAA,EAAY,iBAACA,CAAAA,6BAAW,kBAAA,CAAA,SAAqB,CAAA,GAAA,CAGrDI,CAAAA,CAAsBP,CAAAA,kBAAiBG,CAAAA,6BAAW,UAAA,CAIxD,OACEhB,6BAAAA,CAACS,CAAgB,QAAA,CAAhB,CACC,KAAA,CAAO,CACL,QAAA,CAAU,CACR,QAAA,CAAUI,CAAAA,CACV,SAAA,CAAW,CACT,GAAGE,CAAAA,CACH,SAAA,CACEA,CAAAA,CAAU,gBAAA,GAAqB,QAAA,EAC/BA,CAAAA,CAAU,QAAA,GAAa,QAC3B,CACF,CAAA,CACA,MAAA,CAAAD,CAAAA,CACA,YAAA,CAAcG,CAAAA,CACd,IAAA,CAAMD,CAAAA,CACF,CACE,GAAGA,CAAAA,CACH,sBAAA,CAAwB,CAAC,CAACG,CAAAA,CAC1B,mBAAA,CAAqB,CAAC,CAACC,CACzB,CAAA,CACA,KAAA,CACN,CAAA,CAEC,QAAA,CAAAxB,CAAAA,CACH,CAEJ,CC5HA,mCAA6C,IAKvCyB,CAAAA,CAAmB,iBAAA,CACnBC,CAAAA,CAAa,cAAA,CAsBZ,SAASC,CAAAA,CACdC,CAAAA,CACG,CACH,GAAI,CACF,IAAMtB,CAAAA,CAAQsB,CAAAA,CAAS,IAAA,CAAK,KAAA,CAAMA,CAAM,CAAA,CAAI,CAAC,CAAA,CAC7C,OAAO,OAAOtB,CAAAA,EAAU,QAAA,CAAWA,CAAAA,CAAQ,CAAC,CAC9C,CAAA,UAAQ,CACN,MAAO,CAAC,CACV,CACF,CAOO,SAASuB,CAAAA,CAA2BC,CAAAA,CAA8B,CACvE,OAAO,MAAA,CAAO,OAAA,CAAQA,CAAU,CAAA,CAAE,MAAA,CAAO,CAACC,CAAAA,CAAK,CAACC,CAAAA,CAASC,CAAM,CAAA,CAAA,EAAA,CACtD,CACL,GAAGF,CAAAA,CACH,CAACC,CAAO,CAAA,CAAG,MAAA,CAAO,OAAA,CAAQC,CAAM,CAAA,CAAE,MAAA,CAChC,CAACF,CAAAA,CAAK,CAACG,CAAAA,CAASC,CAAY,CAAA,CAAA,EAAM,CAChC,EAAA,CAAI,CAACA,CAAAA,CACH,OAAOJ,CAAAA,CAET,IAAMK,CAAAA,CAAoBD,CAAAA,CAAa,GAAA,CACpCE,CAAAA,EAAAA,CAA8B,CAC7B,GAAGA,CAAAA,CACH,OAAA,CAAS,MAAA,CAAOH,CAAO,CACzB,CAAA,CACF,CAAA,CACA,OAAAH,CAAAA,CAAI,IAAA,CAAK,GAAGK,CAAiB,CAAA,CACtBL,CACT,CAAA,CACA,CAAC,CACH,CACF,CAAA,CAAA,CACC,CAAC,CAAC,CACP,CAKO,IAAMO,CAAAA,CAAoB,CAC/BC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CAAAA,EACGA,CAAAA,CAAI,SAAA,CAAWC,CAAAA,EAAYA,CAAAA,CAAQ,IAAA,GAASH,CAAAA,CAAG,IAAI,CAAA,GAAMC,CAAAA,CAEvD,SAASG,CAAAA,CAAUb,CAAAA,CAAwBc,CAAAA,CAAqB,CACrE,IAAMC,CAAAA,CAAahB,CAAAA,CAA2BC,CAAU,CAAA,CACxD,GAAA,CAAA,GAAW,CAACE,CAAAA,CAASG,CAAY,CAAA,GAAK,MAAA,CAAO,OAAA,CAAQS,CAAO,CAAA,CACtDC,CAAAA,CAAWb,CAAO,CAAA,EAAKG,CAAAA,CAEzBU,CAAAA,CAAWb,CAAO,CAAA,CAAI,CAAC,GAAGG,CAAAA,CAAc,GAAGU,CAAAA,CAAWb,CAAO,CAAC,CAAA,CAAE,MAAA,CAC9DM,CACF,CAAA,CAEAO,CAAAA,CAAWb,CAAO,CAAA,iBAAIG,CAAAA,6BAAc,MAAA,mBAAOG,CAAiB,GAAA,CAGhE,OAAOO,CACT,CACA,SAASC,CAAAA,CAAAA,CAAiB,CACxB,IAAMhB,CAAAA,CAAaH,CAAAA,CACjB,OAAO,YAAA,CAAiB,GAAA,CACpB,YAAA,CAAa,OAAA,CAAQF,CAAgB,CAAA,CACrC,IACN,CAAA,CACMsB,CAAAA,CAAOpB,CAAAA,CACX,OAAO,YAAA,CAAiB,GAAA,CACpB,YAAA,CAAa,OAAA,CAAQD,CAAU,CAAA,CAC/B,IACN,CAAA,CACA,OAAOiB,CAAAA,CAAUb,CAAAA,CAAYiB,CAAI,CACnC,CAEA,IAAMC,CAAAA,CAAuB,uBAAA,CAE7B,SAASC,CAAAA,CACPZ,CAAAA,CACU,CACV,IAAMa,CAAAA,CAAmB,CAAC,CAAA,CAE1B,OAAKF,CAAAA,CAAqB,IAAA,CAAKX,CAAAA,CAAY,IAAI,CAAA,EAC7Ca,CAAAA,CAAO,IAAA,CAAK,0BAA0B,CAAA,CAGpC,OAAOb,CAAAA,CAAY,WAAA,EAAgB,QAAA,EACrCa,CAAAA,CAAO,IAAA,CAAK,qCAAqC,CAAA,CAIjD,OAAOb,CAAAA,CAAY,aAAA,CAAkB,GAAA,EAAA,CACpC,CAAC,MAAA,CAAO,SAAA,CAAUA,CAAAA,CAAY,aAAa,CAAA,EAC1CA,CAAAA,CAAY,aAAA,CAAgB,CAAA,CAAA,EAE9Ba,CAAAA,CAAO,IAAA,CAAK,uDAAuD,CAAA,CAG9DA,CACT,CAEO,SAASC,CAAAA,CAAuB,CAAE,MAAA,CAAAC,CAAO,CAAA,CAAuB,CACrE,IAAIL,CAAAA,CAAaD,CAAAA,CAAS,CAAA,CACpBO,CAAAA,CAA6B,IAAI,GAAA,CACjCC,CAAAA,CAAsD,IAAI,GAAA,CAEhE,SAASC,CAAAA,CAAgBvB,CAAAA,CAAgC,CACvD,wBAAOe,CAAAA,CAAKf,CAAO,CAAA,SAAK,CAAC,GAC3B,CAEA,SAASwB,CAAAA,CAAexB,CAAAA,CAAiBK,CAAAA,CAAmC,CAC1E,IAAMa,CAAAA,CAASD,CAAAA,CAAoBZ,CAAW,CAAA,CAE9C,EAAA,CAAIa,CAAAA,CAAO,MAAA,CAAS,CAAA,CAClB,MAAM,IAAI,KAAA,CAAM,CAAC,2BAAA,CAA6B,GAAGA,CAAM,CAAA,CAAE,IAAA,CAAK,CAAA;AAAA,CAAI,CAAC,CAAA,CAGrEO,CAAAA,CAAmBzB,CAAAA,CAAUG,CAAAA,EACpB,CACL,CAAE,GAAGE,CAAAA,CAAa,MAAA,CAAQ,SAAU,CAAA,CACpC,GAAGF,CAAAA,CAAa,MAAA,CAAO,CAAC,CAAE,IAAA,CAAAuB,CAAK,CAAA,CAAA,EAEtBA,CAAAA,GAASrB,CAAAA,CAAY,IAC7B,CACH,CACD,CACH,CAEA,SAASsB,CAAAA,CAAkB3B,CAAAA,CAAuB,CAChDyB,CAAAA,CAAmBzB,CAAAA,CAAS,CAAA,CAAA,EACnB,CAAC,CACT,CACH,CAEA,SAAS4B,CAAAA,CACP5B,CAAAA,CACA0B,CAAAA,CACAG,CAAAA,CACM,CACNJ,CAAAA,CAAmBzB,CAAAA,CAAUG,CAAAA,EACpBA,CAAAA,CAAa,GAAA,CAAKE,CAAAA,EACvBA,CAAAA,CAAY,IAAA,GAASqB,CAAAA,CAAO,CAAE,GAAGrB,CAAAA,CAAa,MAAA,CAAAwB,CAAO,CAAA,CAAIxB,CAC3D,CACD,CACH,CAEA,MAAA,SAAeyB,CAAAA,CAA2B9B,CAAAA,CAAgC,CACxE,MAAM,OAAA,CAAQ,GAAA,CACZuB,CAAAA,CAAgBvB,CAAO,CAAA,CACpB,MAAA,CAAQK,CAAAA,EAAgBA,CAAAA,CAAY,MAAA,GAAW,SAAS,CAAA,CACxD,GAAA,CAAI,MAAOA,CAAAA,EAAgB,CAC1B,GAAM,CAAE,aAAA,CAAA0B,CAAAA,CAAe,IAAA,CAAAL,CAAAA,CAAM,OAAA,CAAAxB,CAAQ,CAAA,CAAIG,CAAAA,CAEnC2B,CAAAA,CAAkBV,CAAAA,CAAwB,GAAA,CAAII,CAAI,CAAA,CAExD,EAAA,CAAIM,CAAAA,CACF,OAAO,MAAMA,CAAAA,CAEf,IAAMC,CAAAA,CAAWC,mCAAAA,CAAgBd,CAAQ,CAAE,OAAA,CAAAlB,CAAQ,CAAC,CAAA,CACpD,EAAA,CAAI,CAAC+B,CAAAA,CACH,MAAA,CAGF,IAAME,CAAAA,CAAiBF,CAAAA,CACpB,yBAAA,CAA0B,CAAE,aAAA,CAAAF,CAAAA,CAAe,IAAA,CAAML,CAAgB,CAAC,CAAA,CAClE,IAAA,CAAK,CAAC,CAAE,MAAA,CAAAG,CAAO,CAAA,CAAA,EAAM,CACpBP,CAAAA,CAAwB,MAAA,CAAOI,CAAI,CAAA,CAE/BG,CAAAA,GAAW,KAAA,CAAA,EAIfD,CAAAA,CACE5B,CAAAA,CACA0B,CAAAA,CACA,MAAA,CAAOG,CAAM,CAAA,GAAM,CAAA,CAAI,QAAA,CAAW,WACpC,CACF,CAAC,CAAA,CAEH,OAAAP,CAAAA,CAAwB,GAAA,CAAII,CAAAA,CAAMS,CAAc,CAAA,CAEzC,MAAMA,CACf,CAAC,CACL,CACF,CAEA,SAASV,CAAAA,CACPzB,CAAAA,CACAoC,CAAAA,CACM,CAINrB,CAAAA,CAAOD,CAAAA,CAAS,CAAA,CAEhBC,CAAAA,CAAKf,CAAO,CAAA,kBAAIe,CAAAA,CAAKf,CAAO,CAAA,SAAK,CAAC,GAAA,CAKlC,IAAMG,CAAAA,CAFsBiC,CAAAA,kCAASrB,CAAAA,4BAAAA,CAAOf,CAAO,GAAA,SAAK,CAAC,GAAC,CAAA,CAIvD,IAAA,CAAK,CAACqC,CAAAA,CAAGC,CAAAA,CAAAA,EAAMA,CAAAA,CAAE,SAAA,CAAYD,CAAAA,CAAE,SAAS,CAAA,CACxC,KAAA,CAAM,CAAA,CANgB,EAMG,CAAA,CAE5BtB,CAAAA,CAAKf,CAAO,CAAA,CACVG,CAAAA,CAAa,MAAA,CAAS,CAAA,CAClBA,CAAAA,CAAa,MAAA,CAAOG,CAAiB,CAAA,CACrC,KAAA,CAAA,CAENiC,CAAAA,CAAY,CAAA,CACZC,CAAAA,CAAgB,CAAA,CAChBV,CAAAA,CAA2B9B,CAAO,CACpC,CAEA,SAASuC,CAAAA,CAAAA,CAAoB,CAC3B,YAAA,CAAa,OAAA,CAAQ7C,CAAAA,CAAY,IAAA,CAAK,SAAA,CAAUqB,CAAI,CAAC,CAAA,CAErD,YAAA,CAAa,UAAA,CAAWtB,CAAgB,CAC1C,CAEA,SAAS+C,CAAAA,CAAAA,CAAwB,CAC/B,GAAA,CAAA,IAAWC,EAAAA,GAAYpB,CAAAA,CACrBoB,CAAAA,CAAS,CAEb,CAEA,SAASC,CAAAA,CAASC,CAAAA,CAA4B,CAC5C,OAAAtB,CAAAA,CAAU,GAAA,CAAIsB,CAAE,CAAA,CAET,CAAA,CAAA,EAAM,CACXtB,CAAAA,CAAU,MAAA,CAAOsB,CAAE,CACrB,CACF,CAEA,MAAO,CACL,cAAA,CAAAnB,CAAAA,CACA,iBAAA,CAAAG,CAAAA,CACA,eAAA,CAAAJ,CAAAA,CACA,QAAA,CAAAmB,CAAAA,CACA,0BAAA,CAAAZ,CACF,CACF,CC/QA,+CAEwC,IAWpCc,CAAAA,CAEEC,CAAAA,CAA0B/E,kCAAAA,IAA2C,CAAA,CAEpE,SAASgF,EAAAA,CAAyB,CACvC,QAAA,CAAA9E,CACF,CAAA,CAEG,CACD,GAAM,CAAE,OAAA,CAAAgC,CAAQ,CAAA,CAAI+C,iCAAAA,CAAa,CAC3BC,CAAAA,iBAAUhD,CAAAA,6BAAS,MAAA,6BAAQ,SAAA,CAC3BoB,CAAAA,CAAS6B,8BAAAA,CAAU,CAGnB,CAACC,CAAK,CAAA,CAAI5D,6BAAAA,CACd,CAAA,mBACEsD,CAAAA,SAAAA,CACCA,CAAAA,CAAiBzB,CAAAA,CAAuB,CACvC,MAAA,CAAAC,CACF,CAAC,CAAA,GACL,CAAA,CAGA,OAAA+B,8BAAAA,CAAU,CAAA,EAAM,CACVH,CAAAA,EACFE,CAAAA,CAAM,0BAAA,CAA2BF,CAAO,CAE5C,CAAA,CAAG,CAACE,CAAAA,CAAOF,CAAO,CAAC,CAAA,CAGjB5E,6BAAAA,CAACyE,CAAwB,QAAA,CAAxB,CAAiC,KAAA,CAAOK,CAAAA,CACtC,QAAA,CAAAlF,CAAAA,CACH,CAEJ,CAEO,SAASoF,EAAAA,CAAAA,CAAwC,CACtD,IAAMF,CAAAA,CAAQvE,+BAAAA,CAAkC,CAAA,CAEhD,EAAA,CAAI,CAACuE,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,wCAAwC,CAAA,CAG1D,OAAOA,CACT,CC1DA,sGAEoB,SAOJG,EAAAA,CAAAA,CAAuB,CACrC,OAAO1E,+BAAAA,CAA2B,CACpC,CAEO,IAAM2E,CAAAA,CAAmBxF,kCAAAA,iBAE9ByF,CAAQ,gBACV,CAAA,CAEO,SAASC,EAAAA,CAAkB,CAChC,QAAA,CAAAxF,CAAAA,CACA,SAAA,CAAAyF,CAAAA,CACA,GAAGC,CACL,CAAA,CAG2B,CACzB,GAAM,CAAE,MAAA,CAAAtC,CAAO,CAAA,CAAIuC,iCAAAA,CAAkB,CAAA,CAErC,OACEvF,6BAAAA,CAACkF,CAAiB,QAAA,CAAjB,CAA0B,KAAA,kBAAOG,CAAAA,SAAarC,CAAAA,CAAO,kBAAA,CACnD,QAAA,CAAApD,CAAAA,CACH,CAEJ,CCjCA,IAMa4F,CAAAA,CAAqB9F,kCAAAA,KAEhC,CAAS,CAAA,CA+CJ,SAAS+F,EAAAA,CAAoB,CAClC,QAAA,CAAA7F,CAAAA,CACA,GAAG8F,CACL,CAAA,CAA6B,CAC3B,OACE1F,6BAAAA,CAACwF,CAAmB,QAAA,CAAnB,CAA4B,KAAA,CAAOE,CAAAA,CACjC,QAAA,CAAA9F,CAAAA,CACH,CAEJ,CAEO,SAAS+F,EAAAA,CAAAA,CAAiB,CAC/B,IAAMrF,CAAAA,CAAUC,+BAAAA,CAA6B,CAAA,CAC7C,EAAA,CAAI,CAACD,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,0DAA0D,CAAA,CAE5E,OAAOA,CACT,CCxEA,sDAE+B,SCgBtBsF,CAAAA,CAAgB,CACvB,gBAAA,CAAAC,CAAAA,CAAmB,CAAC,CAAA,CACpB,YAAA,CAAAC,CAAAA,CAAe,CAAC,CAAA,CAChB,OAAA,CAAAhE,CACF,CAAA,CAI8B,CAC5B,EAAA,CAAI+D,CAAAA,CAAiB,MAAA,GAAW,CAAA,CAC9B,MAAO,CACL,SAAA,CAAWC,CAAAA,CACX,eAAA,CAAiBA,CAAAA,CACjB,iBAAA,CAAmB,CAAC,CACtB,CAAA,CAGF,IAAMC,CAAAA,CAAcF,CAAAA,CACjB,MAAA,CACEG,CAAAA,EAAU,CAACA,CAAAA,CAAM,OAAA,EAAW,MAAA,CAAOA,CAAAA,CAAM,OAAO,CAAA,GAAM,MAAA,CAAOlE,CAAO,CACvE,CAAA,CACC,GAAA,CAAKkE,CAAAA,EAAAA,CACG,CAAE,GAAGA,CAAAA,CAAO,OAAA,CAAS,CAAA,CAAK,CAAA,CAClC,CAAA,CAEGC,CAAAA,CAAoBF,CAAAA,CAAY,MAAA,CAAQC,CAAAA,kBACrCA,CAAAA,uBAAM,IAAA,+BAAM,IAAA,qBAAME,CAAAA,EAAQA,CAAAA,GAAQ,UAAU,GACpD,CAAA,CAEKC,CAAAA,CAAa,CAAC,GAAGJ,CAAAA,CAAa,GAAGD,CAAY,CAAA,CAMnD,MAAO,CACL,SAAA,CALiBK,CAAAA,CAAW,MAAA,CAC5B,CAACC,CAAAA,CAAMC,CAAAA,CAAAA,EAAUF,CAAAA,CAAW,SAAA,CAAWG,CAAAA,EAAMC,iCAAAA,CAAQD,CAAGF,CAAI,CAAC,CAAA,GAAMC,CACrE,CAAA,CAIE,eAAA,CAAiBP,CAAAA,CACjB,iBAAA,CAAAG,CACF,CACF,CDPI,IArCSO,EAAAA,CAAe9G,kCAAAA,KAC1B,CACF,CAAA,CAkBO,SAAS+G,EAAAA,CAAe,CAC7B,QAAA,CAAA7G,CAAAA,CACA,aAAA,CAAA8G,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CACF,CAAA,CAA2C,CACzC,GAAM,CAAE,SAAA,CAAAC,CAAAA,CAAY,CAAC,CAAA,CAAG,iBAAA,CAAAb,CAAAA,CAAoB,CAAC,CAAE,CAAA,CAAIc,4BAAAA,CACjD,CAAA,EACEnB,CAAAA,CAAgB,CACd,gBAAA,CAAkBc,CAAAA,CAClB,YAAA,CAAcC,CAAAA,CACd,OAAA,CAASK,wBACX,CAAC,CAAA,CACH,CAACN,CAAAA,CAAeC,CAAU,CAC5B,CAAA,CACA,OACE3G,6BAAAA,EAACwG,CAAa,QAAA,CAAb,CACC,KAAA,CAAO,CACL,SAAA,CAAAM,CAAAA,CACA,UAAA,CAAAH,CAAAA,CACA,cAAA,CAAgBV,CAAAA,CAChB,UAAA,CAAWgB,CAAAA,CAAI,CACbL,CAAAA,CAAWK,CAAAA,CAAI,CAAE,aAAA,CAAAP,CAAAA,CAAe,UAAA,CAAAC,CAAAA,CAAY,SAAA,CAAAG,CAAU,CAAC,CACzD,CAAA,CACA,aAAA,CAAAD,CACF,CAAA,CAEC,QAAA,CAAAjH,CAAAA,CACH,CAEJ,CAAA,sUAAA","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-6VF3RF53.cjs","sourcesContent":[null,"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"]}
@@ -1,2 +0,0 @@
1
- import{a as u}from"./chunk-PHIOKO3A.mjs";import{e as o,f as s,g as a}from"./chunk-HCTFDGXL.mjs";import{isAddress as x}from"viem";function c(t){return t!=null}function b({value:t,property:e,fn:r}){let n=r(t);if(!n.isValid)throw new a({property:e,value:t,expected:n.expectedType})}function i({value:t,property:e,fn:r}){b({value:t,property:e,fn:n=>{let l=c(n),{isValid:m,expectedType:h}=r(n);return{expectedType:h,isValid:l&&m}}})}function g(t,e){i({value:t,property:e,fn:r=>({expectedType:"defined",isValid:c(r)})})}function A(t,e="publicClient"){g(t,e)}function N(t,e){i({value:t,property:e,fn:r=>({expectedType:"Address",isValid:typeof r=="string"&&x(r)})})}function E(t,e){i({value:t,property:e,fn:r=>({expectedType:"number",isValid:(typeof r=="string"||typeof r=="number")&&Number(r)>0})})}import{BaseError as p}from"viem";function k({cause:t}){if(t instanceof p){let r=o({error:t,revertIfUnknown:!1});if(r.isRequestError&&r.rootCause instanceof p&&"url"in r.rootCause&&typeof r.rootCause.url=="string")return new u({cause:r.rootCause,response:void 0,endpoint:{url:r.rootCause.url,type:"rpc"}})}return t instanceof s?t:new s({cause:t})}var d=class extends s{resource;id;constructor(e){super(e),this.name="NotFoundError",this.level=e.level??"info",this.message=`Resource ${e.resource} with id ${e.id} not found`,this.resource=e.resource,this.id=e.id}};var f=class extends s{txHash;receipt;to;callData;blockNumber=null;input;functionName;constructor(e){super(e),this.name="TransactionFailedError",this.txHash=e.txHash||null,this.receipt=e.receipt||null,this.to=e.to,this.functionName=e.functionName,this.blockNumber=e.blockNumber??null,this.input=e.input,this.receipt?this.message=`Transaction reverted on chain for reason: ${this.reason}`:this.txHash?this.message=`Transaction reverted after being broadcasted for reason: ${this.reason}`:this.message=`${this.reason}: ${this.message}`,this.tags={...this.tags,"operation.txn.status":e.txHash?"execution":"simulation",...e.tags},this.to&&(this.tags["operation.txn.to"]=this.to),this.functionName&&(this.tags["operation.txn.functionName"]=this.functionName)}};export{k as a,g as b,A as c,N as d,E as e,d as f,f as g};
2
- //# sourceMappingURL=chunk-6W22TFYA.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/errors/assert.ts","../src/errors/initBeraError.ts","../src/errors/NotFoundError.ts","../src/errors/TransactionFailedError.ts"],"sourcesContent":["import { type Address, isAddress, type PublicClient } from \"viem\";\n\nimport { InvalidArgumentError } from \"./InvalidArgumentError\";\n\nfunction _isDefined<T>(value: T): value is NonNullable<T> {\n return value !== undefined && value !== null;\n}\n\ntype _AssertFn<T> = (value: T) => { expectedType: string; isValid: boolean };\n\n/**\n * Internal assertion function.\n * @throws An InvalidArgumentError if the value is not valid.\n */\nfunction _assert<T>({\n value,\n property,\n fn,\n}: {\n value: T;\n property: string;\n fn: _AssertFn<T>;\n}) {\n const result = fn(value);\n if (!result.isValid) {\n throw new InvalidArgumentError({\n property,\n value,\n expected: result.expectedType,\n });\n }\n}\n\nfunction _assertDefined<T>({\n value,\n property,\n fn,\n}: {\n value: T;\n property: string;\n fn: (value: T) => { expectedType: string; isValid: boolean };\n}) {\n _assert({\n value,\n property,\n fn: (value) => {\n const isDefined = _isDefined(value);\n const { isValid, expectedType } = fn(value);\n return {\n expectedType,\n isValid: isDefined && isValid,\n };\n },\n });\n}\n\n/**\n * Asserts that a value is defined.\n * @throws An InvalidArgumentError if the value is undefined or null.\n */\nexport function assertDefined<T>(\n /**\n * The value to assert.\n */\n value: T,\n /**\n * The property name.\n */\n property: string,\n): asserts value is NonNullable<T> {\n _assertDefined({\n value,\n property,\n fn: (value) => ({ expectedType: \"defined\", isValid: _isDefined(value) }),\n });\n}\n\n/**\n * Asserts that a value is a PublicClient.\n * @throws An InvalidArgumentError if the value is undefined or not a PublicClient.\n */\nexport function assertPublicClient(\n /**\n * The value to assert.\n */\n value: PublicClient | undefined,\n /**\n * The property name.\n */\n property: string = \"publicClient\",\n): asserts value is PublicClient {\n // there's no current way to check if a value is a PublicClient, so we just assert it's defined and `value: PublicClient` will do the rest\n assertDefined(value, property);\n}\n\n/**\n * Asserts that a value is an address (20 bytes).\n * @throws An InvalidArgumentError if the value is undefined, null, not a string, or not an address.\n */\nexport function assertAddress(\n /**\n * The value to assert.\n */\n value: string | undefined,\n /**\n * The property name.\n */\n property: string,\n): asserts value is Address {\n _assertDefined({\n value,\n property,\n fn: (value) => ({\n expectedType: \"Address\",\n isValid: typeof value === \"string\" && isAddress(value),\n }),\n });\n}\n\n/**\n * Asserts that a value is a number greater than 0.\n * @throws An InvalidArgumentError if the value is undefined, null, not a string or number, or not a number greater than 0.\n */\nexport function assertAmount(\n /**\n * The value to assert.\n */\n value: unknown,\n /**\n * The property name.\n */\n property: string,\n): asserts value is string | number {\n _assertDefined({\n value,\n property,\n fn: (value) => ({\n expectedType: \"number\",\n isValid:\n (typeof value === \"string\" || typeof value === \"number\") &&\n Number(value) > 0,\n }),\n });\n}\n","import { BaseError } from \"viem\";\n\nimport { BeraError } from \"./BeraError\";\nimport { parseViemError } from \"./parseViemError\";\nimport { RequestError } from \"./RequestError\";\n\n/**\n * Initialize a BeraError from an error.\n *\n * If the error is already a BeraError, it will be returned as is.\n * Otherwise, a new BeraError will be created with the error as the cause.\n */\nexport function initBeraError({ cause: error }: { cause: unknown }): BeraError {\n if (error instanceof BaseError) {\n const parsed = parseViemError({\n error,\n revertIfUnknown: false,\n });\n if (\n parsed.isRequestError &&\n parsed.rootCause instanceof BaseError &&\n \"url\" in parsed.rootCause &&\n typeof parsed.rootCause.url === \"string\"\n ) {\n // the best way would be to return the RequestError\n // but that pattern is not recommended by biome (seems legit)\n // this is mostly supported by `initBeraError()`\n return new RequestError({\n cause: parsed.rootCause,\n response: undefined,\n endpoint: {\n url: parsed.rootCause.url as string,\n type: \"rpc\",\n },\n });\n }\n }\n const err =\n error instanceof BeraError\n ? error\n : new BeraError({\n cause: error,\n });\n\n return err;\n}\n","import { BeraError, type IBeraErrorArgs } from \"./BeraError\";\n\nexport interface INotFoundErrorArgs extends IBeraErrorArgs {\n resource: string;\n id: string;\n chainId: number;\n}\n\n/**\n * Error thrown when a resource is not found.\n */\nexport class NotFoundError extends BeraError {\n /**\n * The name of the resource that was not found.\n *\n * @example \"Reward vault\"\n */\n resource: string;\n /**\n * The id of the resource that was not found.\n *\n * @example \"0x1234567890123456789012345678901234567890\"\n */\n id: string;\n\n constructor(args: INotFoundErrorArgs) {\n super(args);\n this.name = \"NotFoundError\";\n this.level = args.level ?? \"info\";\n this.message = `Resource ${args.resource} with id ${args.id} not found`;\n this.resource = args.resource;\n this.id = args.id;\n }\n}\n","import type { Hex } from \"@berachain-foundation/berancer-sdk\";\nimport type { Address, TransactionReceipt } from \"viem\";\n\nimport { BeraError, type IBeraErrorArgs } from \"./BeraError\";\n\n/**\n * This error is generally thrown by beraWriteContract when a transaction or simulation fails.\n */\nexport class TransactionFailedError extends BeraError {\n /**\n * The hash of the transaction that failed.\n *\n * Null if the error is due to a simulation failure.\n */\n txHash: string | null;\n\n /**\n * The receipt of the transaction that failed.\n *\n * Null if the error is due to a simulation failure.\n */\n receipt: TransactionReceipt | null;\n\n /**\n * The address of the contract that was called.\n */\n to: Address | undefined;\n\n /**\n * The data of the transaction that failed.\n */\n callData: Hex | undefined;\n\n /**\n * The block number of the transaction that failed.\n */\n blockNumber: bigint | null = null;\n\n /**\n * The input of the transaction that failed.\n */\n input: object;\n\n /**\n * The function name of the transaction that failed.\n */\n functionName: string | undefined;\n\n constructor(\n args: IBeraErrorArgs & {\n txHash?: string;\n receipt?: TransactionReceipt;\n to?: Address;\n blockNumber?: bigint;\n functionName?: string;\n input: object;\n },\n ) {\n super(args);\n this.name = \"TransactionFailedError\";\n this.txHash = args.txHash || null;\n this.receipt = args.receipt || null;\n this.to = args.to;\n this.functionName = args.functionName;\n this.blockNumber = args.blockNumber ?? null;\n this.input = args.input;\n\n if (this.receipt) {\n // If we have a receipt, transaction reverted on chain\n this.message = `Transaction reverted on chain for reason: ${this.reason}`;\n } else if (this.txHash) {\n // If we have a tx hash, transaction reverted after being broadcasted but we never got a receipt\n // Might happen for network reasons\n this.message = `Transaction reverted after being broadcasted for reason: ${this.reason}`;\n } else {\n this.message = `${this.reason}: ${this.message}`;\n }\n\n this.tags = {\n ...this.tags,\n \"operation.txn.status\": args.txHash ? \"execution\" : \"simulation\",\n ...args.tags,\n };\n\n if (this.to) {\n this.tags[\"operation.txn.to\"] = this.to;\n }\n\n if (this.functionName) {\n this.tags[\"operation.txn.functionName\"] = this.functionName;\n }\n }\n}\n"],"mappings":"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","names":["isAddress","_isDefined","value","_assert","property","fn","result","InvalidArgumentError","_assertDefined","isDefined","isValid","expectedType","assertDefined","assertPublicClient","assertAddress","isAddress","assertAmount","BaseError","initBeraError","error","BaseError","parsed","parseViemError","RequestError","BeraError","NotFoundError","BeraError","args","TransactionFailedError","BeraError","args"]}
@@ -1,2 +0,0 @@
1
- import{d as N,f as T}from"./chunk-VYWYJR63.mjs";import{a as p}from"./chunk-PHIOKO3A.mjs";import{f as P}from"./chunk-HCTFDGXL.mjs";async function O(e){if(e.headers.get("content-type")?.includes("application/json"))return await e.json();{let n=await e.text();try{return JSON.parse(n)}catch{return{message:"Unknown error, can't decode response into JSON",cause:n}}}}async function Y(e,t){try{let n=await fetch(typeof e=="string"||e instanceof URL?e:e.url,{...t});if(!n.ok){let a=await O(n);throw new p({cause:a,response:n,endpoint:e})}return n}catch(n){throw n instanceof p?n:new p({cause:n,endpoint:e,response:void 0})}}async function Ae(e,t){return(await Y(e,{...t,headers:{Accept:"application/json",...t?.headers}})).json()}import{parseEther as z}from"viem";var ye=z("0.005"),Ne=1e5,Te=1,we=.1,Ie=50,Se=7920027n;import A from"bignumber.js";import{formatUnits as V}from"viem";import w from"bignumber.js";var I=(e,t,n,a)=>{if(!e||!t||!n||!a)return 0;let s=new w(e).times(n),o=new w(t).times(a);if(s.lt(.01)||o.lt(.01)||s.isZero()||o.isZero())return 0;let r=o.div(s);return Number(new w(1).minus(r).toFixed())};var Oe=(e,t,n,a,s)=>e.map(o=>{let r=V(BigInt(o.amountOut),n?.decimals||18),c=V(BigInt(o.amountIn),t?.decimals||18),b=new A(r).times(s).toFixed(),u=new A(c).times(a).toFixed(),x=I((a||0).toString(),(s||0).toString(),c,r);return{...o,exchangeRate:new A(r).div(c).toNumber(),amountIn:c,amountOut:r,amountOutUsd:b,amountInUsd:u,priceImpactPercentage:x}}).sort((o,r)=>new A(r.amountOut).minus(o.amountOut).toNumber()).map((o,r,c)=>({...o,relativeLossPercentage:I("1","1",c[0].amountOut,o.amountOut)}));var _e=e=>{if(e==="0")return e;let t=e.replace(/^0+/,"").replaceAll(/[^0-9.]/g,"");return t.startsWith(".")&&(t=`0${t}`),t};import{BigNumber as _}from"bignumber.js";var L=["","K","M","B","T","P","E","Z","Y"];function v(e){return e instanceof _?e:new _(e)}function W(e,t){return v(e).shiftedBy(t*-1)}function d(e,t={}){if(typeof t=="number"){let E=t;if(e==null)return"";if(typeof e=="object")throw new Error("Value must be a number if using deprecated version");let l=Number(e).toFixed(E);return l=l.replace(/(\.\d*?[1-9])0+$|\.0*$/,"$1"),l}let{visibleDecimals:n,compact:a=!0,percent:s=!1,roundDown:o=!1,roundUp:r=!1,compactThreshold:c,maxValue:b,symbol:u,prefixText:x="",suffixText:B="",showIsSmallerThanMin:D=!0,ifNullish:h=""}=t||{};if(e==null)return h;let f=s?Number(e)*100:Number(e);if(Number.isNaN(f))return"NaN";if(f===Number.POSITIVE_INFINITY)return"Infinity";if(f===Number.NEGATIVE_INFINITY)return"-Infinity";let i=n??0;f===0?i=0:n===void 0&&(Math.abs(f)>1||s||u==="USD"?i=2:i=7);let R=10**-i,$=f!==0&&Math.abs(f)<Math.abs(R),q=f<0,Q=b?Math.abs(f)>b:!1,C=$?R:f,y=a&&(!c||Math.abs(f)>c);o&&!y?C=Math.trunc(Number(C)*10**i)/10**i:r&&!y&&(C=Math.ceil(Number(C)*10**i)/10**i);let g;if(Q)g=f>b?"\u221E":"-\u221E";else if(y){let E=v(C),l=E.abs().toFixed(0).length;c&&Math.abs(f)<=c&&(l=0);let U=Math.min(Math.floor(l?(l-1)/3:0),L.length-1),X=L[U],F=W(E,3*U).toNumber();o?F=Math.trunc(Number(F)*10**i)/10**i:r&&(F=Math.ceil(Number(F)*10**i)/10**i),g=`${new Intl.NumberFormat("en-US",{maximumFractionDigits:i,minimumFractionDigits:i}).format(F)}${X}`}else{let E=new Intl.NumberFormat("en-US",{maximumFractionDigits:i,minimumFractionDigits:i}).format(Math.abs(C));g=`${q?"-":""}${E}`}let m=[];return x&&m.push(x),$&&D&&m.push(f<0?">":"<"),u?.toLowerCase()==="usd"&&!s&&m.push("$"),m.push(g),s&&m.push("%"),u?.toLowerCase()!=="usd"&&typeof u<"u"&&m.push(" ",u),B&&m.push(B),m.join("")}var He=e=>e?Number(e)>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:Number(e)??0:0,je=(e,t)=>{if(!e)return"0";let[n="0",a="0"]=`${e}`.split(".");return`${n}.${a.substring(0,t)}`};function Je(e){let t=new Date;return t.setDate(t.getDate()-e)*1e3}var Z=["January","February","March","April","May","June","July","August","September","October","November","December"],K=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function qe(e,t){let n=new Date(e*1e3),a=n.getDate(),s="th";return a===1||a===21||a===31?s="st":a===2||a===22?s="nd":(a===3||a===23)&&(s="rd"),t?`${K[n.getMonth()]} ${a}`:`${Z[n.getMonth()]} ${a}${s}, ${n.getFullYear()}`}function Qe(...e){let t=e[0],n,a,s,o;if(typeof e[1]!="object")n=e[1]??!1,a=e[2]??!1,o=e[3]??!1,s=!0;else{let f=e[1];n=f.condensed??!1;let i=f.greaterUnit??"hours";i==="days"?(a=!0,s=!0):i==="hours"?(a=!1,s=!0,o=!1):(a=!1,s=!0),o=f.showSeconds??!1}let r=Math.floor(t/(3600*24)),c=Math.floor(t%(3600*24)/3600),b=Math.floor(t%3600/60),u=t%60;if(a||(c+=r*24,r=0),r===0&&c===0&&b===0)return n?"< 1 M":"less than a minute";let x=r>0?`${r}${n?"D":" day"}${!n&&r!==1?"s":""}`:"",B=c>0?`${c}${n?"H":" hour"}${!n&&c!==1?"s":""}`:"",D=b>0&&s||!r&&!c?`${b}${n?"M":" minute"}${!n&&b!==1?"s":""}`:"",h=u>0&&o?`${u}${n?"S":" second"}${!n&&u!==1?"s":""}`:"";return[x,B,D,h].filter(Boolean).join(n?" ":", ")}function Ye(e,t){let n=t?{minimumFractionDigits:0,maximumFractionDigits:0}:{},a=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",...n});try{let s=c=>typeof c=="number",o=c=>typeof c=="string";if(!s(e)&&!o(e))return a.format(0);let r;return o(e)?(r=Number.parseFloat(e),Number.isNaN(r)&&(r=0)):(r=e,Number.isNaN(r)&&(r=0)),a.format(r)}catch(s){return console.log(s),a.format(0)}}import{defaultChainId as ee}from"@berachain/config/internal";var H=[{80069:"0x0000000000000000000000000000000000000000",80094:"0x0000000000000000000000000000000000000000",name:"zeroAddress"},{80094:"0x141De07E5D4C4759EC9301DA106115D4841f66cD",name:"nfts.bongBears"},{80094:"0xA0CF472E6132F6B822a944f6F31aA7b261c7c375",name:"nfts.bondBears"},{80094:"0xf49ec5db255854C4a567de5AB3826c9AAbaFc7cF",name:"nfts.booBears"},{80094:"0xDDeAf391c4be2d01ca52aBb8C159a06820ef078C",name:"nfts.babyBears"},{80094:"0x7711B2Eb2451259dbF211e30157ceB7CFeb79a19",name:"nfts.bandBears"},{80094:"0x72D876D9cdf4001b836f8E47254d0551EdA2eebB",name:"nfts.bitBears"},{80069:"",80094:"0x24147243f9c08d835C218Cda1e135f8dFD0517D0",name:"bend.morpho"},{80069:"",80094:"0xcf247Df3A2322Dea0D408f011c194906E77a6f62",name:"bend.adaptiveCurveIrm"},{80069:"",80094:"0xF920140A65D0f412f2AB3e76C4fEAB5Eef0657ae",name:"bend.bundler3"},{80069:"",80094:"0xd2B9667F5214115E27937C410cAeE83E3a901Df7",name:"bend.generalAdapter1"},{80069:"",80094:"0x5EDd48C6ACBd565Eeb31702FD9fa9Cbc86fbE616",name:"bend.metaMorphoFactoryV1_1"},{80069:"",80094:"0x80108Ee81A92091Db6B8B2326B1875ce9388f461",name:"bend.metaFeePartitioner"},{80069:"",80094:"0xB62F34Ab315eaDeAc698e8EaEB6Fc2650951BFe7",name:"bend.publicAllocator"},{80069:"",80094:"0xAf2FDC54f7bc9d6e8C2D2760E908f4e1beB04d9E",name:"bend.morphoChainlinkOracleV2Factory"},{80069:"",80094:"0x46fE2bc33b661E01A8946BbC3Bf43F2B8382d802",name:"bend.urdFactory"},{80069:"",80094:"0x30BbA9CD9Eb8c95824aa42Faa1Bb397b07545bc1",name:"bend.vaults.re7HoneyVault"},{80069:"0xb0d005Fe83E3F1ec876C1a64700c5F0d6265d9E3",80094:"0x77DA09bC82652f9A14d1b170a001e759640298e6",name:"pol.bgtIncentiveDistributor"},{80069:"0x1984Baf659607Cc5f206c55BB3B00eb3E180190B",80094:"0x1984Baf659607Cc5f206c55BB3B00eb3E180190B",name:"pol.bgtIncentiveFeeCollector"},{80069:"0x118D2cEeE9785eaf70C15Cd74CD84c9f8c3EeC9a",80094:"0x118D2cEeE9785eaf70C15Cd74CD84c9f8c3EeC9a",name:"pol.wberaStakerVault"},{80069:"0x4242424242424242424242424242424242424242",80094:"0x4242424242424242424242424242424242424242",name:"pol.beaconDeposit"},{80069:"0xdf960E8F3F19C481dDE769edEDD439ea1a63426a",80094:"0xdf960E8F3F19C481dDE769edEDD439ea1a63426a",name:"pol.berachef"},{80069:"0x1AE7dD7AE06F6C58B4524d9c1f816094B1bcCD8e",80094:"0x1AE7dD7AE06F6C58B4524d9c1f816094B1bcCD8e",name:"pol.blockRewardController"},{80069:"0xD2f19a79b026Fb636A7c300bF5947df113940761",80094:"0xD2f19a79b026Fb636A7c300bF5947df113940761",name:"pol.distributor"},{80069:"0x94Ad6Ac84f6C6FbA8b8CCbD71d9f4f101def52a8",80094:"0x94Ad6Ac84f6C6FbA8b8CCbD71d9f4f101def52a8",name:"pol.rewardVaultFactory"},{80069:"0x44F07Ce5AfeCbCC406e6beFD40cc2998eEb8c7C6",80094:"0x44F07Ce5AfeCbCC406e6beFD40cc2998eEb8c7C6",name:"pol.bgtStaker"},{80069:"0x7bb8DdaC7FbE3FFC0f4B3c73C4F158B06CF82650",80094:"0x7Bb8DdaC7FbE3FFC0f4B3c73C4F158B06CF82650",name:"pol.feeCollector"},{80069:"0x4f4A5c2194B8e856b7a05B348F6ba3978FB6f6D5",80094:"0x4f4A5c2194B8e856b7a05B348F6ba3978FB6f6D5",name:"pol.governance"},{80069:"0xb5f2000b5744f207c931526cAE2134cAa8b6862a",80094:"0xb5f2000b5744f207c931526cAE2134cAa8b6862a",name:"pol.timelock"},{80069:"0x656b95E550C07a9ffe548bd4085c72418Ceb1dba",80094:"0x656b95E550C07a9ffe548bd4085c72418Ceb1dba",name:"tokens.bgt"},{80069:"0xFCBD14DC51f0A4d49d5E53C2E0950e0bC26d0Dce",80094:"0xFCBD14DC51f0A4d49d5E53C2E0950e0bC26d0Dce",name:"tokens.honey"},{80069:"0xA4aFef880F5cE1f63c9fb48F661E27F8B4216401",80094:"0xA4aFef880F5cE1f63c9fb48F661E27F8B4216401",name:"tokens.honeyFactory"},{80069:"0x285e147060CDc5ba902786d3A471224ee6cE0F91",80094:"0x285e147060CDc5ba902786d3A471224ee6cE0F91",name:"tokens.honeyFactoryReader"},{80069:"0x6969696969696969696969696969696969696969",80094:"0x6969696969696969696969696969696969696969",name:"tokens.wbera"},{80069:"",80094:"0x549943e04f40284185054145c6E4e9568C1D3241",name:"tokens.usdc"},{80069:"",80094:"0x0555E30da8f98308EdB960aa94C0Db47230d2B9c",name:"tokens.wbtc"},{80069:"",80094:"0x2F6F07CDcf3588944Bf4C42aC74ff24bF56e7590",name:"tokens.weth"},{80069:"0x708cA656b68A6b7384a488A36aD33505a77241FE",80094:"0x4Be03f781C497A489E3cB0287833452cA9B9E80B",name:"bex.vault"},{80069:"0x05A607aCf3548E84DD1E44c3706F850c849058Da",80094:"0xB8Cf46Cf1b1476E707619913a70B2085d26f1707",name:"bex.protocolFeesCollector"},{80069:"0xC7c981ADcDC5d48fed0CD52807fb2bAB22676C8f",80094:"0x5083737EC75a728c265BE578C9d0d5333a2c5951",name:"bex.balancerHelpers"},{80069:"0x0dC9964F6CA33d9EF38DEB4925234766127C6B36",80094:"0x55dccE8165C88aAd4403a15A9cE3A8E244657dD2",name:"bex.poolCreationHelper"},{80069:"0x8c2D77f0CfcD4Af9cF41494EfE500FE324012c06",80094:"0x1635F0E1B3e8A6713d03aE155ba79458Ba3240C7",name:"bex.protocolFeesWithdrawer"},{80069:"0xB60DbBaCEaeC23486a64d12089F467ef949f1bb1",80094:"0xDfA30BDa0375d4763711AB0CC8D91B20bfCC87E1",name:"bex.stablePoolFactory"},{80069:"0xfD772657FC8c4Ed3884AfF151b680883814052FA",80094:"0xCB4AE3030bA06F7EEE54A7B96AfcA7457f9525cf",name:"bex.batchRelayerLibrary"},{80069:"0x263a1C5B2c5851beA2177eb8D6caefdfF2A25601",80094:"0x4151083172b2CEFB83A33fD7FC9F6cBabb3Fd08d",name:"bex.batchRelayerQueryLibrary"},{80069:"0x343215E156Ff586711a5B8C49Fe3099BAF22624C",80094:"0x6044f181aB5E9C05A4ed9Ce295f3B178d2492EE7",name:"bex.balancerRelayer"},{80069:"0xf1d23276C7b271B2aC595C78977b2312E9954D57",80094:"0xa966fA8F2d5B087FFFA499C0C1240589371Af409",name:"bex.weightedPoolFactory"},{80069:"0x8119E412E00fe3c857739E95dB147817Bf615dB8",80094:"0x33C88ffdEe710ed3908C791137Bd1D4421AabBBf",name:"bex.protocolFeePercentagesProvider"},{80069:"0xE3723383a0EA73D5c0dE424BAA97F97f86f6cF92",80094:"0x3C612e132624f4Bd500eE1495F54565F0bcc9b59",name:"bex.balancerQueries"},{80069:"0x1453b808C88AAa5e5965f8d86123921E96F045Aa",80094:"0x71047aE39A7aA4f7d923542F459e50B974644Ef2",name:"bex.authorizer"},{80069:"0x41675C099F32341bf84BFc5382aF534df5C7461a",80094:"0x41675C099F32341bf84BFc5382aF534df5C7461a",name:"safe.safe"},{80069:"0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67",80094:"0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67",name:"safe.safeProxyFactory"},{80069:"0x38869bf66a61cF6bDB996A6aE40D5853Fd43B526",80094:"0x38869bf66a61cF6bDB996A6aE40D5853Fd43B526",name:"safe.multiSend"},{80069:"0x9641d764fc13c8B624c04430C7356C1C7C8102e2",80094:"0x9641d764fc13c8B624c04430C7356C1C7C8102e2",name:"safe.multiSendCallOnly"},{80069:"0xfd0732Dc9E303f09fCEf3a7388Ad10A83459Ec99",80094:"0xfd0732Dc9E303f09fCEf3a7388Ad10A83459Ec99",name:"safe.compatibilityFallbackHandler"},{80069:"0xd53cd0aB83D845Ac265BE939c57F53AD838012c9",80094:"0xd53cd0aB83D845Ac265BE939c57F53AD838012c9",name:"safe.signMessageLib"},{80069:"0x3d4BA2E0884aa488718476ca2FB8Efc291A46199",80094:"0x3d4BA2E0884aa488718476ca2FB8Efc291A46199",name:"safe.simulateTxAccessor"},{80069:"0x9b35Af71d77eaf8d7e40252370304687390A1A52",80094:"0x9b35Af71d77eaf8d7e40252370304687390A1A52",name:"safe.createCall"},{80069:"0x4e59b44847b379578588920cA78FbF26c0B4956C",80094:"0x4e59b44847b379578588920cA78FbF26c0B4956C",name:"other.create2"},{80069:"0xcA11bde05977b3631167028862bE2a173976CA11",80094:"0xcA11bde05977b3631167028862bE2a173976CA11",name:"other.multicall3"},{80069:"0x000000000022D473030F116dDEE9F6B43aC78BA3",80094:"0x000000000022D473030F116dDEE9F6B43aC78BA3",name:"other.permit2"},{80069:"0xEe233a69A36Db7fC10E03e921D90DEC52Cdce6e2",80094:"0xEe233a69A36Db7fC10E03e921D90DEC52Cdce6e2",name:"pol.rewardVaultHelper"},{80069:"0x7f09Cf6958631513aF0400488F65c7B5c0313F52",80094:"0xc8FD9a3fB3Dad4C22c9F8Cfa7cecC318A667A791",name:"pol.rewardAllocationFactory"},{80069:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",80094:"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b",name:"bex.balancerDelegatedOwnership"},{80069:"0x0000000000000000000000000000000000000000",80094:"0x1BDB1cf792419d2eaB5aBa8076B8f4257744fA58",name:"bex.aggregatorsRouter"},{80069:"0x0000000000000000000000000000000000000000",80094:"0x4AD3c5A427Af60F8Dd982023aE012233A66CA1f8",name:"bex.aggregatorsRouterExecutor"},{80069:null,80094:"0x24aC999FF132B32c5b3956973b6213B0d07eB2C7",name:"bex.haikuRouter"},{80069:null,80094:"0x69495273D6Dc572A830A4D6e00400a1e9d5B8f71",name:"bex.haikuAgentAddress"},{80069:"0x0eFeC4379805fAFA7269Ec599a6921f388C8841a",80094:"0xB5787B8f7b07a00229b617c4B7a616185857C147",name:"bex.recoverFundsContract"},{80069:"0x5CA67e134c52B1d11E038A5a4eD8Ddcdb1238943",80094:"0x5CA67e134c52B1d11E038A5a4eD8Ddcdb1238943",name:"honey.pythOracle"},{80069:"0x4b7cb1c197f8EE4d309866B16C2c12E3B4E7E606",80094:"0x4b7cb1c197f8EE4d309866B16C2c12E3B4E7E606",name:"honey.pythWrapper"},{80069:"0x2880aB155794e7179c9eE2e38200202908C17B43",80094:"0x2880aB155794e7179c9eE2e38200202908C17B43",name:"external.pyth"},{80069:null,80094:"0xC5FabF3a7E98a2ed89f5d5057Ab010634Ca7e71f",name:"bend.staging.morpho"},{80069:null,80094:"0x1d5376e532CcF25b740270624111D665830E5dB9",name:"bend.staging.adaptiveCurveIrm"},{80069:null,80094:"0x524061B659380a5e4576d76F0951303B20B5932f",name:"bend.staging.metaMorphoFactory"},{80069:null,80094:"0xFD6e68bC20be2a01Ec1Df687c83f927087D52811",name:"bend.staging.publicAllocator"},{80069:null,80094:"0x56811e1BFfF951B98c7940d3aCe0e549Ec4fDee8",name:"bend.staging.bundler3"},{80069:null,80094:"0x257a41E20BBfe90D750646C2e00bA700D55958C5",name:"bend.staging.generalAdapter1"},{80094:"0x19DcFf4e8Ff0B554D8a1f22d289A449fd4FbddBa",name:"bend.staging.supportedVaults.0"},{80094:"0xC0808A144CE2ea85bF84EBD1dDF5D59429f59dDE",name:"bend.staging.supportedVaults.1"}];function e0({address:e,chainId:t=ee}){return e?H.find(a=>a[t]?.toLowerCase()===e.toLowerCase())?.name:void 0}function r0({collaterals:e,actionType:t,toAmount:n,fromAmount:a,isBasketModeEnabled:s}){if(e.length>0){if(t==="mint"){let r=["Minting"];if(r.push(d(Number(n[0]),5)),r.push("Honey from"),s)for(let c in e)r.push(d(Number(a[c]),5)),r.push(`${e[c].symbol}`),+c<e.length-2?r[r.length-1]=r[r.length-1].concat(","):+c===e.length-1?r[r.length-1]=r[r.length-1].concat("."):r.push("and");else r.push(d(Number(a[0]),5)),r.push(`${e[0].symbol}`);return r.join(" ")}let o=["Redeeming"];if(s)for(let r in e)o.push(d(Number(n[r]),5)),o.push(`${e[r].symbol}`),+r<e.length-2?o[o.length-1]=o[o.length-1].concat(","):+r===e.length-1?(o.push("for"),o.push(d(Number(a[0]),5)),o.push("Honey.")):o.push("and");else o.push(d(Number(n[0]),5)),o.push(`${e[0].symbol}`),o.push("for"),o.push(d(Number(a[0]),5)),o.push("Honey.");return o.join(" ")}return""}import{createPublicClient as ne,fallback as te,http as j}from"viem";import{defaultChainId as re,getRpcUrls as ae}from"@berachain/config/internal";import{defaultBeraNetworkConfig as oe}from"@berachain/wagmi/config";var S=new Map,i0=(e={})=>{let t=e.chainId??re;if(S.has(t))return S.get(t);let n=ae(t),a=[n.privateRcpUrl,n.jsonRpcUrl,n.alchemyJsonRpcUrl,n.publicJsonRpcUrl].filter(o=>o).map(o=>j(o));a.length===0&&a.push(j());let s=ne({chain:oe.chain,transport:te(a)});return S.set(t,s),s};import{createTestClient as se,http as ce}from"viem";import{defaultChainId as ie,getRpcUrls as fe}from"@berachain/config/internal";function ue(e=ie){let t=fe(e);if(!t.isAnvil)throw new Error("No anvil RPC URL found");return se({mode:"anvil",transport:ce(t.jsonRpcUrl)})}import G from"bignumber.js";var l0=(e,t,n)=>{let a=new G(1+n).times(e),s=new G(1-n).times(e);return a.isLessThan(t)||s.isGreaterThan(t)};function x0({lastBlockTimestamp:e,blockTime:t}){return e?e<Date.now()/1e3-t*10:!0}var E0=e=>2n*BigInt(e);function be(e,t){let n=t.originalException;return n&&(n instanceof P&&(e.extra={...n,...e.extra},e.tags={...n.tags,...e.tags},e.level=t.captureContext&&"level"in t.captureContext?t.captureContext.level:n.level),n instanceof TypeError&&(e.extra={...n},e.tags={"error.reason":p.isCorsError(n)?p.REASON_MAP.CORS_ERROR:n.name,level:"warning"})),e}function D0(e){return Math.floor(e/1e3)}function me(e){return e*1e3}function de(e){return e*me(60)}function le(e){return e*60}function pe(e){return e*de(60)}function xe(e){return e*le(60)}function M(e){return e*pe(24)}function k(e){return e*xe(24)}function h0(e){return e*M(7)}function y0(e){return e*k(7)}function N0(e){return e*M(30)}function T0(e){return e*k(30)}function w0(e){return e*M(365)}function I0(e){return e*k(365)}function Ce(e){return{...e,...T(e,"BERA")&&N}}function k0(e){return e.map(t=>Ce(t))}var $0=(e,t=4,n=4,a=!1)=>{if(!e)return"";let s=a?e.toUpperCase().replace(/^0X/,"0x"):e;return`${s.substring(0,t)}...${s.substring(s.length-n)}`};import{GqlValidatorBlockUptimeStatus as J}from"@berachain/graphql/pol/api";function O0(e){if(e)return e===J.Proposed}function V0(e){if(e)return e===J.Signed}export{O as a,Y as b,Ae as c,D0 as d,me as e,de as f,le as g,pe as h,xe as i,M as j,k,h0 as l,y0 as m,N0 as n,T0 as o,w0 as p,I0 as q,ye as r,Ne as s,Te as t,we as u,Ie as v,Se as w,E0 as x,I as y,Oe as z,_e as A,d as B,He as C,je as D,Je as E,qe as F,Qe as G,Ye as H,e0 as I,r0 as J,i0 as K,ue as L,l0 as M,x0 as N,be as O,Ce as P,k0 as Q,$0 as R,O0 as S,V0 as T};
2
- //# sourceMappingURL=chunk-AMRJ4B36.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/getErrorResponse.ts","../src/utils/beraFetch.ts","../src/utils/constants.ts","../src/utils/formatAggregatorsQuotes.ts","../src/utils/math.ts","../src/utils/formatInputTokenValue.ts","../src/utils/formatNumber.ts","../src/utils/formatTimestamps.ts","../src/utils/formatUsd.ts","../src/utils/getContractName.ts","../src/data/contracts.ts","../src/utils/getHoneySwapMessage.ts","../src/utils/getServerSideClient.ts","../src/utils/getTestClient.ts","../src/utils/isDifferenceExceedingThreshold.ts","../src/utils/isSubgraphStale.ts","../src/utils/pythHoneyUtils.ts","../src/utils/sentryBeforeSend.ts","../src/utils/time.ts","../src/utils/tokenWrapping.ts","../src/utils/truncateHash.ts","../src/utils/validatorUptimeStatus.ts"],"sourcesContent":["/**\n * @deprecated use beraFetch instead\n */\nexport async function getErrorResponse(response: Response) {\n const contentType = response.headers.get(\"content-type\");\n\n if (contentType?.includes(\"application/json\")) {\n return await response.json();\n } else {\n const text = await response.text();\n try {\n return JSON.parse(text);\n } catch {\n return {\n message: \"Unknown error, can't decode response into JSON\",\n cause: text,\n };\n }\n }\n}\n","import { RequestError } from \"~/errors/RequestError\";\nimport { getErrorResponse } from \"./getErrorResponse\";\n\ntype RequestOptions = RequestInit;\n\nexport async function beraFetch(\n endpoint: ConstructorParameters<typeof RequestError>[0][\"endpoint\"],\n options?: RequestOptions,\n) {\n try {\n const response = await fetch(\n typeof endpoint === \"string\" || endpoint instanceof URL\n ? endpoint\n : endpoint.url,\n {\n ...options,\n },\n );\n if (!response.ok) {\n const error = await getErrorResponse(response);\n throw new RequestError({\n cause: error,\n // @to-do import getErrorResponse logic in this function\n // when it's removed from other places\n response: response,\n endpoint,\n });\n }\n return response;\n } catch (error) {\n if (error instanceof RequestError) {\n throw error;\n }\n\n throw new RequestError({\n cause: error,\n endpoint,\n response: undefined,\n });\n }\n}\n\nexport async function beraFetchJson<T>(\n endpoint: ConstructorParameters<typeof RequestError>[0][\"endpoint\"],\n options?: RequestOptions,\n) {\n const response = await beraFetch(endpoint, {\n ...options,\n headers: {\n Accept: \"application/json\",\n ...options?.headers,\n },\n });\n return response.json() as Promise<T>;\n}\n","import { parseEther } from \"viem\";\n\n// the buffer of the cap limit, if the user gets close to 10% of the cap limit\n// they should be warned\nexport const CAP_LIMIT_BUFFER = parseEther(\"0.005\");\n\n/**\n * Maximum allowed input for a custom deadline in seconds.\n * @type {number}\n */\nexport const MAX_CUSTOM_DEADLINE = 100000;\n\n/**\n * Minimum allowed input for a custom deadline in seconds.\n * @type {number}\n */\nexport const MIN_CUSTOM_DEADLINE = 1;\n\n/**\n * Minimum allowed input for a custom slippage tolerance percentage.\n * @type {number}\n */\nexport const MIN_CUSTOM_SLIPPAGE = 0.1;\n\n/**\n * Maximum allowed input for a custom slippage tolerance percentage.\n * @type {number}\n */\nexport const MAX_CUSTOM_SLIPPAGE = 50;\n\n/**\n * Default gas limit used by MetaMask\n * @see {@link https://github.com/MetaMask/metamask-extension/blob/06cf7459b963e26d0ae60312d4f9a342d07ab89d/ui/pages/confirmations/send/send.constants.js#L8}\n */\nexport const DEFAULT_METAMASK_GAS_LIMIT = 7920027n;\n","import BigNumber from \"bignumber.js\";\nimport { formatUnits } from \"viem\";\n\nimport type { IAggregatorQuote, IRawAggregatorQuote, Token } from \"~/types\";\nimport { computePriceImpact } from \"./math\";\n\nexport const formatAggregatorsQuotes = (\n rawQuotes: (IRawAggregatorQuote | IRawAggregatorQuote<false>)[],\n selectedFrom: Token | undefined,\n selectedTo: Token | undefined,\n tokenInPrice: number,\n tokenOutPrice: number,\n): IAggregatorQuote[] =>\n rawQuotes\n .map((quote) => {\n const amountOut = formatUnits(\n BigInt(quote.amountOut),\n selectedTo?.decimals || 18,\n );\n const amountIn = formatUnits(\n BigInt(quote.amountIn),\n selectedFrom?.decimals || 18,\n );\n const amountOutUsd = new BigNumber(amountOut)\n .times(tokenOutPrice)\n .toFixed();\n const amountInUsd = new BigNumber(amountIn).times(tokenInPrice).toFixed();\n const priceImpactPercentage = computePriceImpact(\n (tokenInPrice || 0).toString(),\n (tokenOutPrice || 0).toString(),\n amountIn,\n amountOut,\n );\n return {\n ...quote,\n exchangeRate: new BigNumber(amountOut).div(amountIn).toNumber(),\n amountIn,\n amountOut,\n amountOutUsd,\n amountInUsd,\n priceImpactPercentage,\n };\n })\n .sort((a, b) => new BigNumber(b.amountOut).minus(a.amountOut).toNumber())\n .map((quote, _, allQuotes) => ({\n ...quote,\n relativeLossPercentage: computePriceImpact(\n // hardcoded to 1 since we're calculating relative loss percentage\n // between this quote's output amount and the best quote's output amount.\n // The input amounts are the same for all quotes, so we use 1 as a base\n // to get the pure percentage difference between outputs.\n \"1\",\n \"1\",\n allQuotes[0].amountOut,\n quote.amountOut,\n ),\n }));\n","import BigNumber from \"bignumber.js\";\n\n/**\n * Compute the price impact of a swap\n * @param {string} tokenInPrice - The price of the input token\n * @param {string} tokenOutPrice - The price of the output token\n * @param {string} inAmount - The amount of the input token\n * @param {string} outAmount - The amount of the output token\n * @returns {number} The price impact of the swap\n */\nexport const computePriceImpact = (\n tokenInPrice: string,\n tokenOutPrice: string,\n inAmount: string,\n outAmount: string,\n): number => {\n if (!tokenInPrice || !tokenOutPrice || !inAmount || !outAmount) return 0;\n\n const usdIn = new BigNumber(tokenInPrice).times(inAmount);\n const usdOut = new BigNumber(tokenOutPrice).times(outAmount);\n\n // is the amount is close to 0, return 0\n if (usdIn.lt(0.01) || usdOut.lt(0.01)) return 0;\n if (usdIn.isZero() || usdOut.isZero()) return 0;\n\n const ratio = usdOut.div(usdIn);\n return Number(new BigNumber(1).minus(ratio).toFixed());\n};\n","export const formatInputTokenValue = (inputValue: string) => {\n if (inputValue === \"0\") return inputValue;\n // Remove all non-numeric characters except for the decimal point, and remove leading zeros\n let filteredValue = inputValue.replace(/^0+/, \"\").replaceAll(/[^0-9.]/g, \"\");\n\n // Keep the 0\n if (filteredValue.startsWith(\".\")) {\n filteredValue = `0${filteredValue}`;\n }\n\n return filteredValue;\n};\n","import { BigNumber } from \"bignumber.js\";\n\nexport type BigNumberValue = string | number | BigNumber;\n\nexport interface FormatNumberOptions {\n /** Number of visible decimal places */\n visibleDecimals?: number;\n /** Whether to use compact notation (K, M, B, etc.) */\n compact?: boolean;\n /** Show as percentage */\n percent?: boolean;\n /** Round down instead of normal rounding */\n roundDown?: boolean;\n /** Round up instead of normal rounding */\n roundUp?: boolean;\n /** Threshold above which compact notation is used */\n compactThreshold?: number;\n /** Maximum value to display (shows ∞ if exceeded) */\n maxValue?: number;\n /** Currency symbol (e.g., \"USD\" for $) */\n symbol?: string;\n /** Prefix text */\n prefixText?: string;\n /** Suffix text */\n suffixText?: string;\n /** Show \"< min\" or \"> min\" indicators for very small values */\n showIsSmallerThanMin?: boolean;\n /** Text to show if value is null/undefined */\n ifNullish?: string;\n}\n\nconst POSTFIXES = [\"\", \"K\", \"M\", \"B\", \"T\", \"P\", \"E\", \"Z\", \"Y\"];\n\nfunction valueToBigNumber(amount: BigNumberValue): BigNumber {\n if (amount instanceof BigNumber) return amount;\n return new BigNumber(amount);\n}\n\nfunction normalizeBN(n: BigNumberValue, decimals: number): BigNumber {\n return valueToBigNumber(n).shiftedBy(decimals * -1);\n}\n\nexport function formatNumber(\n value: BigNumberValue | undefined | null,\n options: FormatNumberOptions | number = {},\n): string {\n if (typeof options === \"number\") {\n const decimals = options;\n if (value === undefined || value === null) {\n return \"\";\n }\n\n if (typeof value === \"object\") {\n throw new Error(\"Value must be a number if using deprecated version\");\n }\n\n // Convert to string with up to 8 decimal places\n let formatted = Number(value).toFixed(decimals);\n // Remove trailing zeros and decimal point if not needed\n formatted = formatted.replace(/(\\.\\d*?[1-9])0+$|\\.0*$/, \"$1\");\n return formatted;\n }\n\n const {\n visibleDecimals,\n compact = true,\n percent = false,\n roundDown = false,\n roundUp = false,\n compactThreshold,\n maxValue,\n symbol,\n prefixText = \"\",\n suffixText = \"\",\n showIsSmallerThanMin = true,\n ifNullish = \"\",\n } = options || {};\n\n // Handle null/undefined values\n if (value === undefined || value === null) {\n return ifNullish;\n }\n\n const number = percent ? Number(value) * 100 : Number(value);\n\n // Handle special numeric values\n if (Number.isNaN(number)) {\n return \"NaN\";\n }\n if (number === Number.POSITIVE_INFINITY) {\n return \"Infinity\";\n }\n if (number === Number.NEGATIVE_INFINITY) {\n return \"-Infinity\";\n }\n\n // Determine decimal places\n let decimals: number = visibleDecimals ?? 0;\n if (number === 0) {\n decimals = 0;\n } else if (visibleDecimals === undefined) {\n if (Math.abs(number) > 1 || percent || symbol === \"USD\") {\n decimals = 2;\n } else {\n decimals = 7;\n }\n }\n\n const minValue = 10 ** -(decimals as number);\n const isSmallerThanMin =\n number !== 0 && Math.abs(number) < Math.abs(minValue);\n const isNegative = number < 0;\n const isBiggerThanMax = maxValue ? Math.abs(number) > maxValue : false;\n\n let formattedNumber = isSmallerThanMin ? minValue : number;\n const forceCompact =\n compact && (!compactThreshold || Math.abs(number) > compactThreshold);\n\n // Apply rounding for non-compact numbers\n if (roundDown && !forceCompact) {\n formattedNumber =\n Math.trunc(Number(formattedNumber) * 10 ** decimals) / 10 ** decimals;\n } else if (roundUp && !forceCompact) {\n formattedNumber =\n Math.ceil(Number(formattedNumber) * 10 ** decimals) / 10 ** decimals;\n }\n\n let formattedValue: string;\n\n if (isBiggerThanMax) {\n formattedValue = number > maxValue! ? \"∞\" : \"-∞\";\n } else if (!forceCompact) {\n const absFormatted = new Intl.NumberFormat(\"en-US\", {\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n }).format(Math.abs(formattedNumber));\n formattedValue = `${isNegative ? \"-\" : \"\"}${absFormatted}`;\n } else {\n // Compact number formatting\n const bnValue = valueToBigNumber(formattedNumber);\n let integerPlaces = bnValue.abs().toFixed(0).length;\n if (compactThreshold && Math.abs(number) <= compactThreshold) {\n integerPlaces = 0;\n }\n\n const significantDigitsGroup = Math.min(\n Math.floor(integerPlaces ? (integerPlaces - 1) / 3 : 0),\n POSTFIXES.length - 1,\n );\n\n const postfix = POSTFIXES[significantDigitsGroup];\n let compactValue = normalizeBN(\n bnValue,\n 3 * significantDigitsGroup,\n ).toNumber();\n\n if (roundDown) {\n compactValue =\n Math.trunc(Number(compactValue) * 10 ** decimals) / 10 ** decimals;\n } else if (roundUp) {\n compactValue =\n Math.ceil(Number(compactValue) * 10 ** decimals) / 10 ** decimals;\n }\n\n const prefix = new Intl.NumberFormat(\"en-US\", {\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n }).format(compactValue);\n\n formattedValue = `${prefix}${postfix}`;\n }\n\n // Build the final formatted string\n const parts: string[] = [];\n\n // Add prefix text\n if (prefixText) {\n parts.push(prefixText);\n }\n\n // Add smaller than indicator\n if (isSmallerThanMin && showIsSmallerThanMin) {\n parts.push(number < 0 ? \">\" : \"<\");\n }\n\n // Add USD symbol\n if (symbol?.toLowerCase() === \"usd\" && !percent) {\n parts.push(\"$\");\n }\n\n // Add the formatted number\n parts.push(formattedValue);\n\n // Add percentage symbol\n if (percent) {\n parts.push(\"%\");\n }\n\n // Add other symbols\n if (symbol?.toLowerCase() !== \"usd\" && typeof symbol !== \"undefined\") {\n parts.push(\" \", symbol);\n }\n\n // Add suffix text\n if (suffixText) {\n parts.push(suffixText);\n }\n\n return parts.join(\"\");\n}\nexport const getSafeNumber = (value: string | undefined): number => {\n if (!value) return 0;\n return Number(value) > Number.MAX_SAFE_INTEGER\n ? Number.MAX_SAFE_INTEGER\n : (Number(value) ?? 0);\n};\n\nexport const truncateDecimal = (\n value: string | number | undefined,\n maxDecimal: number,\n): string => {\n if (!value) return \"0\";\n const [integerPart = \"0\", decimalPart = \"0\"] = `${value}`.split(\".\");\n return `${integerPart}.${decimalPart.substring(0, maxDecimal)}`;\n};\n","export function calculateTimestampFromDays(daysRange: number): number {\n const currentDate = new Date();\n return currentDate.setDate(currentDate.getDate() - daysRange) * 1000;\n}\n\nconst monthNames = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nconst shortMonthNames = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nexport function formatUnixTimestamp(unixTimestamp: number, isShort?: boolean) {\n const date = new Date(unixTimestamp * 1000);\n\n const day = date.getDate();\n let daySuffix = \"th\";\n\n if (day === 1 || day === 21 || day === 31) {\n daySuffix = \"st\";\n } else if (day === 2 || day === 22) {\n daySuffix = \"nd\";\n } else if (day === 3 || day === 23) {\n daySuffix = \"rd\";\n }\n\n if (isShort) {\n return `${shortMonthNames[date.getMonth()]} ${day}`;\n }\n\n return `${\n monthNames[date.getMonth()]\n } ${day}${daySuffix}, ${date.getFullYear()}`;\n}\n\ntype LegacyArgs = [number, boolean?, boolean?, boolean?];\ntype FormatTimeLeftArgs = [\n number,\n {\n condensed?: boolean;\n greaterUnit?: \"days\" | \"hours\" | \"minutes\";\n showSeconds?: boolean;\n },\n];\n\n/**\n * Formats the time left into a string like \"8 hours, 23 minutes\".\n *\n * @param timeLeftInSeconds - The time left in seconds.\n * @returns A formatted string representing the time left.\n */\nexport function formatTimeLeft(\n ...args: FormatTimeLeftArgs | LegacyArgs\n): string {\n const timeLeftInSeconds = args[0];\n let condensed: boolean;\n\n let showDays: boolean;\n\n let showMinutes: boolean;\n let showSeconds: boolean;\n\n if (typeof args[1] !== \"object\") {\n condensed = args[1] ?? false;\n showDays = args[2] ?? false;\n showSeconds = args[3] ?? false;\n showMinutes = true;\n } else {\n const opts = args[1];\n condensed = opts.condensed ?? false;\n const greaterUnit = opts.greaterUnit ?? \"hours\";\n\n if (greaterUnit === \"days\") {\n showDays = true;\n showMinutes = true;\n } else if (greaterUnit === \"hours\") {\n showDays = false;\n showMinutes = true;\n showSeconds = false;\n } else {\n // minutes is the default\n showDays = false;\n showMinutes = true;\n }\n showSeconds = opts.showSeconds ?? false;\n }\n\n let days = Math.floor(timeLeftInSeconds / (3600 * 24));\n let hours = Math.floor((timeLeftInSeconds % (3600 * 24)) / 3600);\n const minutes = Math.floor((timeLeftInSeconds % 3600) / 60);\n const seconds = timeLeftInSeconds % 60;\n\n // If showDays=false, roll days into hours\n if (!showDays) {\n hours += days * 24;\n days = 0;\n }\n\n if (days === 0 && hours === 0 && minutes === 0) {\n return condensed ? \"< 1 M\" : \"less than a minute\";\n }\n\n const daysDisplay =\n days > 0\n ? `${days}${condensed ? \"D\" : \" day\"}${\n !condensed && days !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n\n const hoursDisplay =\n hours > 0\n ? `${hours}${condensed ? \"H\" : \" hour\"}${\n !condensed && hours !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n\n const minutesDisplay =\n (minutes > 0 && showMinutes) || (!days && !hours)\n ? `${minutes}${condensed ? \"M\" : \" minute\"}${\n !condensed && minutes !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n const secondsDisplay =\n seconds > 0 && showSeconds\n ? `${seconds}${condensed ? \"S\" : \" second\"}${\n !condensed && seconds !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n return [daysDisplay, hoursDisplay, minutesDisplay, secondsDisplay]\n .filter(Boolean)\n .join(condensed ? \" \" : \", \");\n}\n","/**\n * @deprecated use the FormattedNumber component instead\n */\nexport function formatUsd(\n input: string | number,\n hideDecimals?: boolean,\n): string {\n const decimalsSettings = hideDecimals\n ? { minimumFractionDigits: 0, maximumFractionDigits: 0 }\n : {};\n const formatter = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n ...decimalsSettings,\n });\n try {\n const isNumber = (value: unknown): value is number =>\n typeof value === \"number\";\n const isString = (value: unknown): value is string =>\n typeof value === \"string\";\n\n if (!isNumber(input) && !isString(input)) {\n return formatter.format(0);\n }\n\n let num: number;\n\n if (isString(input)) {\n num = Number.parseFloat(input);\n\n if (Number.isNaN(num)) {\n num = 0;\n }\n } else {\n num = input;\n\n if (Number.isNaN(num)) {\n num = 0;\n }\n }\n return formatter.format(num);\n } catch (e) {\n console.log(e);\n return formatter.format(0);\n }\n}\n","import type { Address } from \"viem\";\n\nimport { type ChainId, defaultChainId } from \"@berachain/config/internal\";\n\nimport { contracts } from \"~/data/contracts\";\n\n/**\n * Get a human readable name for a contract address.\n */\nexport function getContractName({\n address,\n chainId = defaultChainId,\n}: {\n address: Address | undefined;\n chainId?: ChainId | \"name\";\n}): string | undefined {\n if (!address) {\n return undefined;\n }\n\n const contract = contracts.find((contract) => {\n const contractAddress = contract[chainId as keyof typeof contract];\n return contractAddress?.toLowerCase() === address.toLowerCase();\n });\n\n return contract?.name;\n}\n","/**\n * This file is generated by the getContractNames.js script.\n * Do not edit this file manually, run `pnpm contracts:update` to update it.\n */\nexport const contracts = [\n {\n \"80069\": \"0x0000000000000000000000000000000000000000\",\n \"80094\": \"0x0000000000000000000000000000000000000000\",\n name: \"zeroAddress\",\n },\n {\n \"80094\": \"0x141De07E5D4C4759EC9301DA106115D4841f66cD\",\n name: \"nfts.bongBears\",\n },\n {\n \"80094\": \"0xA0CF472E6132F6B822a944f6F31aA7b261c7c375\",\n name: \"nfts.bondBears\",\n },\n {\n \"80094\": \"0xf49ec5db255854C4a567de5AB3826c9AAbaFc7cF\",\n name: \"nfts.booBears\",\n },\n {\n \"80094\": \"0xDDeAf391c4be2d01ca52aBb8C159a06820ef078C\",\n name: \"nfts.babyBears\",\n },\n {\n \"80094\": \"0x7711B2Eb2451259dbF211e30157ceB7CFeb79a19\",\n name: \"nfts.bandBears\",\n },\n {\n \"80094\": \"0x72D876D9cdf4001b836f8E47254d0551EdA2eebB\",\n name: \"nfts.bitBears\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x24147243f9c08d835C218Cda1e135f8dFD0517D0\",\n name: \"bend.morpho\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0xcf247Df3A2322Dea0D408f011c194906E77a6f62\",\n name: \"bend.adaptiveCurveIrm\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0xF920140A65D0f412f2AB3e76C4fEAB5Eef0657ae\",\n name: \"bend.bundler3\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0xd2B9667F5214115E27937C410cAeE83E3a901Df7\",\n name: \"bend.generalAdapter1\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x5EDd48C6ACBd565Eeb31702FD9fa9Cbc86fbE616\",\n name: \"bend.metaMorphoFactoryV1_1\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x80108Ee81A92091Db6B8B2326B1875ce9388f461\",\n name: \"bend.metaFeePartitioner\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0xB62F34Ab315eaDeAc698e8EaEB6Fc2650951BFe7\",\n name: \"bend.publicAllocator\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0xAf2FDC54f7bc9d6e8C2D2760E908f4e1beB04d9E\",\n name: \"bend.morphoChainlinkOracleV2Factory\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x46fE2bc33b661E01A8946BbC3Bf43F2B8382d802\",\n name: \"bend.urdFactory\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x30BbA9CD9Eb8c95824aa42Faa1Bb397b07545bc1\",\n name: \"bend.vaults.re7HoneyVault\",\n },\n {\n \"80069\": \"0xb0d005Fe83E3F1ec876C1a64700c5F0d6265d9E3\",\n \"80094\": \"0x77DA09bC82652f9A14d1b170a001e759640298e6\",\n name: \"pol.bgtIncentiveDistributor\",\n },\n {\n \"80069\": \"0x1984Baf659607Cc5f206c55BB3B00eb3E180190B\",\n \"80094\": \"0x1984Baf659607Cc5f206c55BB3B00eb3E180190B\",\n name: \"pol.bgtIncentiveFeeCollector\",\n },\n {\n \"80069\": \"0x118D2cEeE9785eaf70C15Cd74CD84c9f8c3EeC9a\",\n \"80094\": \"0x118D2cEeE9785eaf70C15Cd74CD84c9f8c3EeC9a\",\n name: \"pol.wberaStakerVault\",\n },\n {\n \"80069\": \"0x4242424242424242424242424242424242424242\",\n \"80094\": \"0x4242424242424242424242424242424242424242\",\n name: \"pol.beaconDeposit\",\n },\n {\n \"80069\": \"0xdf960E8F3F19C481dDE769edEDD439ea1a63426a\",\n \"80094\": \"0xdf960E8F3F19C481dDE769edEDD439ea1a63426a\",\n name: \"pol.berachef\",\n },\n {\n \"80069\": \"0x1AE7dD7AE06F6C58B4524d9c1f816094B1bcCD8e\",\n \"80094\": \"0x1AE7dD7AE06F6C58B4524d9c1f816094B1bcCD8e\",\n name: \"pol.blockRewardController\",\n },\n {\n \"80069\": \"0xD2f19a79b026Fb636A7c300bF5947df113940761\",\n \"80094\": \"0xD2f19a79b026Fb636A7c300bF5947df113940761\",\n name: \"pol.distributor\",\n },\n {\n \"80069\": \"0x94Ad6Ac84f6C6FbA8b8CCbD71d9f4f101def52a8\",\n \"80094\": \"0x94Ad6Ac84f6C6FbA8b8CCbD71d9f4f101def52a8\",\n name: \"pol.rewardVaultFactory\",\n },\n {\n \"80069\": \"0x44F07Ce5AfeCbCC406e6beFD40cc2998eEb8c7C6\",\n \"80094\": \"0x44F07Ce5AfeCbCC406e6beFD40cc2998eEb8c7C6\",\n name: \"pol.bgtStaker\",\n },\n {\n \"80069\": \"0x7bb8DdaC7FbE3FFC0f4B3c73C4F158B06CF82650\",\n \"80094\": \"0x7Bb8DdaC7FbE3FFC0f4B3c73C4F158B06CF82650\",\n name: \"pol.feeCollector\",\n },\n {\n \"80069\": \"0x4f4A5c2194B8e856b7a05B348F6ba3978FB6f6D5\",\n \"80094\": \"0x4f4A5c2194B8e856b7a05B348F6ba3978FB6f6D5\",\n name: \"pol.governance\",\n },\n {\n \"80069\": \"0xb5f2000b5744f207c931526cAE2134cAa8b6862a\",\n \"80094\": \"0xb5f2000b5744f207c931526cAE2134cAa8b6862a\",\n name: \"pol.timelock\",\n },\n {\n \"80069\": \"0x656b95E550C07a9ffe548bd4085c72418Ceb1dba\",\n \"80094\": \"0x656b95E550C07a9ffe548bd4085c72418Ceb1dba\",\n name: \"tokens.bgt\",\n },\n {\n \"80069\": \"0xFCBD14DC51f0A4d49d5E53C2E0950e0bC26d0Dce\",\n \"80094\": \"0xFCBD14DC51f0A4d49d5E53C2E0950e0bC26d0Dce\",\n name: \"tokens.honey\",\n },\n {\n \"80069\": \"0xA4aFef880F5cE1f63c9fb48F661E27F8B4216401\",\n \"80094\": \"0xA4aFef880F5cE1f63c9fb48F661E27F8B4216401\",\n name: \"tokens.honeyFactory\",\n },\n {\n \"80069\": \"0x285e147060CDc5ba902786d3A471224ee6cE0F91\",\n \"80094\": \"0x285e147060CDc5ba902786d3A471224ee6cE0F91\",\n name: \"tokens.honeyFactoryReader\",\n },\n {\n \"80069\": \"0x6969696969696969696969696969696969696969\",\n \"80094\": \"0x6969696969696969696969696969696969696969\",\n name: \"tokens.wbera\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x549943e04f40284185054145c6E4e9568C1D3241\",\n name: \"tokens.usdc\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x0555E30da8f98308EdB960aa94C0Db47230d2B9c\",\n name: \"tokens.wbtc\",\n },\n {\n \"80069\": \"\",\n \"80094\": \"0x2F6F07CDcf3588944Bf4C42aC74ff24bF56e7590\",\n name: \"tokens.weth\",\n },\n {\n \"80069\": \"0x708cA656b68A6b7384a488A36aD33505a77241FE\",\n \"80094\": \"0x4Be03f781C497A489E3cB0287833452cA9B9E80B\",\n name: \"bex.vault\",\n },\n {\n \"80069\": \"0x05A607aCf3548E84DD1E44c3706F850c849058Da\",\n \"80094\": \"0xB8Cf46Cf1b1476E707619913a70B2085d26f1707\",\n name: \"bex.protocolFeesCollector\",\n },\n {\n \"80069\": \"0xC7c981ADcDC5d48fed0CD52807fb2bAB22676C8f\",\n \"80094\": \"0x5083737EC75a728c265BE578C9d0d5333a2c5951\",\n name: \"bex.balancerHelpers\",\n },\n {\n \"80069\": \"0x0dC9964F6CA33d9EF38DEB4925234766127C6B36\",\n \"80094\": \"0x55dccE8165C88aAd4403a15A9cE3A8E244657dD2\",\n name: \"bex.poolCreationHelper\",\n },\n {\n \"80069\": \"0x8c2D77f0CfcD4Af9cF41494EfE500FE324012c06\",\n \"80094\": \"0x1635F0E1B3e8A6713d03aE155ba79458Ba3240C7\",\n name: \"bex.protocolFeesWithdrawer\",\n },\n {\n \"80069\": \"0xB60DbBaCEaeC23486a64d12089F467ef949f1bb1\",\n \"80094\": \"0xDfA30BDa0375d4763711AB0CC8D91B20bfCC87E1\",\n name: \"bex.stablePoolFactory\",\n },\n {\n \"80069\": \"0xfD772657FC8c4Ed3884AfF151b680883814052FA\",\n \"80094\": \"0xCB4AE3030bA06F7EEE54A7B96AfcA7457f9525cf\",\n name: \"bex.batchRelayerLibrary\",\n },\n {\n \"80069\": \"0x263a1C5B2c5851beA2177eb8D6caefdfF2A25601\",\n \"80094\": \"0x4151083172b2CEFB83A33fD7FC9F6cBabb3Fd08d\",\n name: \"bex.batchRelayerQueryLibrary\",\n },\n {\n \"80069\": \"0x343215E156Ff586711a5B8C49Fe3099BAF22624C\",\n \"80094\": \"0x6044f181aB5E9C05A4ed9Ce295f3B178d2492EE7\",\n name: \"bex.balancerRelayer\",\n },\n {\n \"80069\": \"0xf1d23276C7b271B2aC595C78977b2312E9954D57\",\n \"80094\": \"0xa966fA8F2d5B087FFFA499C0C1240589371Af409\",\n name: \"bex.weightedPoolFactory\",\n },\n {\n \"80069\": \"0x8119E412E00fe3c857739E95dB147817Bf615dB8\",\n \"80094\": \"0x33C88ffdEe710ed3908C791137Bd1D4421AabBBf\",\n name: \"bex.protocolFeePercentagesProvider\",\n },\n {\n \"80069\": \"0xE3723383a0EA73D5c0dE424BAA97F97f86f6cF92\",\n \"80094\": \"0x3C612e132624f4Bd500eE1495F54565F0bcc9b59\",\n name: \"bex.balancerQueries\",\n },\n {\n \"80069\": \"0x1453b808C88AAa5e5965f8d86123921E96F045Aa\",\n \"80094\": \"0x71047aE39A7aA4f7d923542F459e50B974644Ef2\",\n name: \"bex.authorizer\",\n },\n {\n \"80069\": \"0x41675C099F32341bf84BFc5382aF534df5C7461a\",\n \"80094\": \"0x41675C099F32341bf84BFc5382aF534df5C7461a\",\n name: \"safe.safe\",\n },\n {\n \"80069\": \"0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67\",\n \"80094\": \"0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67\",\n name: \"safe.safeProxyFactory\",\n },\n {\n \"80069\": \"0x38869bf66a61cF6bDB996A6aE40D5853Fd43B526\",\n \"80094\": \"0x38869bf66a61cF6bDB996A6aE40D5853Fd43B526\",\n name: \"safe.multiSend\",\n },\n {\n \"80069\": \"0x9641d764fc13c8B624c04430C7356C1C7C8102e2\",\n \"80094\": \"0x9641d764fc13c8B624c04430C7356C1C7C8102e2\",\n name: \"safe.multiSendCallOnly\",\n },\n {\n \"80069\": \"0xfd0732Dc9E303f09fCEf3a7388Ad10A83459Ec99\",\n \"80094\": \"0xfd0732Dc9E303f09fCEf3a7388Ad10A83459Ec99\",\n name: \"safe.compatibilityFallbackHandler\",\n },\n {\n \"80069\": \"0xd53cd0aB83D845Ac265BE939c57F53AD838012c9\",\n \"80094\": \"0xd53cd0aB83D845Ac265BE939c57F53AD838012c9\",\n name: \"safe.signMessageLib\",\n },\n {\n \"80069\": \"0x3d4BA2E0884aa488718476ca2FB8Efc291A46199\",\n \"80094\": \"0x3d4BA2E0884aa488718476ca2FB8Efc291A46199\",\n name: \"safe.simulateTxAccessor\",\n },\n {\n \"80069\": \"0x9b35Af71d77eaf8d7e40252370304687390A1A52\",\n \"80094\": \"0x9b35Af71d77eaf8d7e40252370304687390A1A52\",\n name: \"safe.createCall\",\n },\n {\n \"80069\": \"0x4e59b44847b379578588920cA78FbF26c0B4956C\",\n \"80094\": \"0x4e59b44847b379578588920cA78FbF26c0B4956C\",\n name: \"other.create2\",\n },\n {\n \"80069\": \"0xcA11bde05977b3631167028862bE2a173976CA11\",\n \"80094\": \"0xcA11bde05977b3631167028862bE2a173976CA11\",\n name: \"other.multicall3\",\n },\n {\n \"80069\": \"0x000000000022D473030F116dDEE9F6B43aC78BA3\",\n \"80094\": \"0x000000000022D473030F116dDEE9F6B43aC78BA3\",\n name: \"other.permit2\",\n },\n {\n \"80069\": \"0xEe233a69A36Db7fC10E03e921D90DEC52Cdce6e2\",\n \"80094\": \"0xEe233a69A36Db7fC10E03e921D90DEC52Cdce6e2\",\n name: \"pol.rewardVaultHelper\",\n },\n {\n \"80069\": \"0x7f09Cf6958631513aF0400488F65c7B5c0313F52\",\n \"80094\": \"0xc8FD9a3fB3Dad4C22c9F8Cfa7cecC318A667A791\",\n name: \"pol.rewardAllocationFactory\",\n },\n {\n \"80069\": \"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b\",\n \"80094\": \"0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b\",\n name: \"bex.balancerDelegatedOwnership\",\n },\n {\n \"80069\": \"0x0000000000000000000000000000000000000000\",\n \"80094\": \"0x1BDB1cf792419d2eaB5aBa8076B8f4257744fA58\",\n name: \"bex.aggregatorsRouter\",\n },\n {\n \"80069\": \"0x0000000000000000000000000000000000000000\",\n \"80094\": \"0x4AD3c5A427Af60F8Dd982023aE012233A66CA1f8\",\n name: \"bex.aggregatorsRouterExecutor\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x24aC999FF132B32c5b3956973b6213B0d07eB2C7\",\n name: \"bex.haikuRouter\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x69495273D6Dc572A830A4D6e00400a1e9d5B8f71\",\n name: \"bex.haikuAgentAddress\",\n },\n {\n \"80069\": \"0x0eFeC4379805fAFA7269Ec599a6921f388C8841a\",\n \"80094\": \"0xB5787B8f7b07a00229b617c4B7a616185857C147\",\n name: \"bex.recoverFundsContract\",\n },\n {\n \"80069\": \"0x5CA67e134c52B1d11E038A5a4eD8Ddcdb1238943\",\n \"80094\": \"0x5CA67e134c52B1d11E038A5a4eD8Ddcdb1238943\",\n name: \"honey.pythOracle\",\n },\n {\n \"80069\": \"0x4b7cb1c197f8EE4d309866B16C2c12E3B4E7E606\",\n \"80094\": \"0x4b7cb1c197f8EE4d309866B16C2c12E3B4E7E606\",\n name: \"honey.pythWrapper\",\n },\n {\n \"80069\": \"0x2880aB155794e7179c9eE2e38200202908C17B43\",\n \"80094\": \"0x2880aB155794e7179c9eE2e38200202908C17B43\",\n name: \"external.pyth\",\n },\n {\n \"80069\": null,\n \"80094\": \"0xC5FabF3a7E98a2ed89f5d5057Ab010634Ca7e71f\",\n name: \"bend.staging.morpho\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x1d5376e532CcF25b740270624111D665830E5dB9\",\n name: \"bend.staging.adaptiveCurveIrm\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x524061B659380a5e4576d76F0951303B20B5932f\",\n name: \"bend.staging.metaMorphoFactory\",\n },\n {\n \"80069\": null,\n \"80094\": \"0xFD6e68bC20be2a01Ec1Df687c83f927087D52811\",\n name: \"bend.staging.publicAllocator\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x56811e1BFfF951B98c7940d3aCe0e549Ec4fDee8\",\n name: \"bend.staging.bundler3\",\n },\n {\n \"80069\": null,\n \"80094\": \"0x257a41E20BBfe90D750646C2e00bA700D55958C5\",\n name: \"bend.staging.generalAdapter1\",\n },\n {\n \"80094\": \"0x19DcFf4e8Ff0B554D8a1f22d289A449fd4FbddBa\",\n name: \"bend.staging.supportedVaults.0\",\n },\n {\n \"80094\": \"0xC0808A144CE2ea85bF84EBD1dDF5D59429f59dDE\",\n name: \"bend.staging.supportedVaults.1\",\n },\n] as const;\n","import type { IHoneySwapState } from \"~/hooks/honey/useHoneySwapState\";\nimport { formatNumber } from \"./formatNumber\";\n\n/**\n * Get the message shown in the transaction confirmation modal for honey swaps\n * @returns {string} The message\n */\nexport function getHoneySwapMessage({\n collaterals,\n actionType,\n toAmount,\n fromAmount,\n isBasketModeEnabled,\n}: Pick<\n IHoneySwapState,\n | \"collaterals\"\n | \"actionType\"\n | \"toAmount\"\n | \"fromAmount\"\n | \"isBasketModeEnabled\"\n>): string {\n if (collaterals.length > 0) {\n if (actionType === \"mint\") {\n const msg = [\"Minting\"];\n msg.push(formatNumber(Number(toAmount[0]), 5));\n msg.push(\"Honey from\");\n if (isBasketModeEnabled) {\n for (const idx in collaterals) {\n msg.push(formatNumber(Number(fromAmount[idx]), 5));\n msg.push(`${collaterals[idx].symbol}`);\n if (+idx < collaterals.length - 2) {\n msg[msg.length - 1] = msg[msg.length - 1].concat(\",\");\n } else if (+idx === collaterals.length - 1) {\n msg[msg.length - 1] = msg[msg.length - 1].concat(\".\");\n } else {\n msg.push(\"and\");\n }\n }\n } else {\n msg.push(formatNumber(Number(fromAmount[0]), 5));\n msg.push(`${collaterals[0].symbol}`);\n }\n return msg.join(\" \");\n }\n const msg = [\"Redeeming\"];\n if (isBasketModeEnabled) {\n for (const idx in collaterals) {\n msg.push(formatNumber(Number(toAmount[idx]), 5));\n msg.push(`${collaterals[idx].symbol}`);\n if (+idx < collaterals.length - 2) {\n msg[msg.length - 1] = msg[msg.length - 1].concat(\",\");\n } else if (+idx === collaterals.length - 1) {\n msg.push(\"for\");\n msg.push(formatNumber(Number(fromAmount[0]), 5));\n msg.push(\"Honey.\");\n } else {\n msg.push(\"and\");\n }\n }\n } else {\n msg.push(formatNumber(Number(toAmount[0]), 5));\n msg.push(`${collaterals[0].symbol}`);\n msg.push(\"for\");\n msg.push(formatNumber(Number(fromAmount[0]), 5));\n msg.push(\"Honey.\");\n }\n return msg.join(\" \");\n }\n return \"\";\n}\n","import { createPublicClient, fallback, http, type PublicClient } from \"viem\";\n\nimport {\n type ChainId,\n defaultChainId,\n getRpcUrls,\n} from \"@berachain/config/internal\";\n\nimport { defaultBeraNetworkConfig } from \"@berachain/wagmi/config\";\n\n/**\n * This is a singleton to avoid creating a new client for each request.\n *\n * A single client manages batch requests when parallel requests are made on different instances.\n */\nconst _clients: Map<ChainId, PublicClient> = new Map();\n\nexport const getServerSidePublicClient = (\n args: { chainId?: ChainId } = {},\n): PublicClient => {\n const chainId: ChainId = args.chainId ?? defaultChainId;\n\n if (_clients.has(chainId)) {\n return _clients.get(chainId)!;\n }\n\n const rpcs = getRpcUrls(chainId);\n const fallbackTransports = [\n rpcs.privateRcpUrl,\n rpcs.jsonRpcUrl,\n rpcs.alchemyJsonRpcUrl,\n rpcs.publicJsonRpcUrl,\n ]\n .filter((i) => i)\n .map((url) => http(url));\n\n if (fallbackTransports.length === 0) {\n fallbackTransports.push(http());\n }\n\n const client = createPublicClient({\n chain: defaultBeraNetworkConfig.chain,\n transport: fallback(fallbackTransports),\n });\n\n _clients.set(chainId, client);\n\n return client;\n};\n","import { createTestClient, http } from \"viem\";\n\nimport {\n type ChainId,\n defaultChainId,\n getRpcUrls,\n} from \"@berachain/config/internal\";\n\nexport function getTestClient(chainId: ChainId = defaultChainId) {\n const rpc = getRpcUrls(chainId);\n\n if (!rpc.isAnvil) {\n throw new Error(\"No anvil RPC URL found\");\n }\n return createTestClient({\n mode: \"anvil\",\n transport: http(rpc.jsonRpcUrl),\n });\n}\n","import BigNumber from \"bignumber.js\";\n\nexport const isDifferenceExceedingThreshold = (\n initialAmount: string,\n newAmount: string,\n threshold: number,\n) => {\n const upperBound = new BigNumber(1 + threshold).times(initialAmount);\n const lowerBound = new BigNumber(1 - threshold).times(initialAmount);\n return (\n upperBound.isLessThan(newAmount) || lowerBound.isGreaterThan(newAmount)\n );\n};\n","export function isSubgraphStale({\n lastBlockTimestamp,\n blockTime,\n}: {\n lastBlockTimestamp: number | null | undefined;\n blockTime: number;\n}) {\n if (!lastBlockTimestamp) return true;\n return lastBlockTimestamp < Date.now() / 1000 - blockTime * 10;\n}\n","export const getPythDefaultUpdateFee = (tokenListLength: number) => {\n return 2n * BigInt(tokenListLength);\n};\n","import type * as SentryType from \"@sentry/nextjs\";\n\nimport { RequestError } from \"~/errors/RequestError\";\nimport { BeraError } from \"../errors/BeraError\";\n\n/**\n * Util to make Sentry errors consistent with BeraErrors\n * @returns\n */\nexport function sentryBeforeSend<\n TEvent extends SentryType.ErrorEvent,\n THint extends SentryType.EventHint,\n>(\n event: TEvent,\n hint: THint,\n): PromiseLike<SentryType.ErrorEvent | null> | SentryType.ErrorEvent | null {\n const originalException = hint.originalException;\n\n if (!originalException) {\n return event;\n }\n\n if (originalException instanceof BeraError) {\n // if it's a bera error, we want to add the tags and level to the event\n // we're using them as defaults and override them if the captureContext has different values\n\n event.extra = {\n ...originalException,\n ...event.extra,\n };\n event.tags = {\n ...originalException.tags,\n ...event.tags,\n };\n event.level =\n hint.captureContext && \"level\" in hint.captureContext\n ? hint.captureContext.level\n : originalException.level;\n }\n\n if (originalException instanceof TypeError) {\n // this is either CORS or network error\n event.extra = { ...originalException };\n event.tags = {\n \"error.reason\": RequestError.isCorsError(originalException)\n ? RequestError.REASON_MAP.CORS_ERROR\n : originalException.name,\n level: \"warning\",\n };\n }\n return event;\n}\n","/**\n * Convert milliseconds to seconds\n */\nexport function msToSeconds(ms: number): number {\n return Math.floor(ms / 1000);\n}\n\n/**\n * Time utility functions for converting between different time units.\n *\n * This utility file provides functions to convert between seconds, minutes, hours, and days.\n * Note on naming conventions: We use \"seconds\" instead of \"secondsToMs\" because JavaScript\n * is typically based in milliseconds, so the conversion to milliseconds is the more common\n * and expected operation. We use \"xxxInSeconds\" when converting to second-based units.\n */\n\n/**\n * Convert seconds to milliseconds\n */\nexport function seconds(seconds: number): number {\n return seconds * 1000;\n}\n\n/**\n * Convert minutes to milliseconds\n */\nexport function minutes(minutes: number): number {\n return minutes * seconds(60);\n}\n\n/**\n * Convert minutes to seconds\n */\nexport function minutesInSeconds(minutes: number): number {\n return minutes * 60;\n}\n\n/**\n * Convert hours to milliseconds\n */\nexport function hours(hours: number): number {\n return hours * minutes(60);\n}\n\n/**\n * Convert hours to seconds\n */\nexport function hoursInSeconds(hours: number): number {\n return hours * minutesInSeconds(60);\n}\n\n/**\n * Convert days to milliseconds\n */\nexport function days(days: number): number {\n return days * hours(24);\n}\n\n/**\n * Convert days to seconds\n */\nexport function daysInSeconds(days: number): number {\n return days * hoursInSeconds(24);\n}\n\n/**\n * Convert weeks to milliseconds\n */\nexport function weeks(weeks: number): number {\n return weeks * days(7);\n}\n\n/**\n * Convert weeks to seconds\n */\nexport function weeksInSeconds(weeks: number): number {\n return weeks * daysInSeconds(7);\n}\n\n/**\n * Convert months to milliseconds using 30 days per month\n */\nexport function months(months: number): number {\n return months * days(30);\n}\n\n/**\n * Convert months to seconds using 30 days per month\n */\nexport function monthsInSeconds(months: number): number {\n return months * daysInSeconds(30);\n}\n\n/**\n * Convert years to milliseconds using 365 days per year\n */\nexport function years(years: number): number {\n return years * days(365);\n}\n\n/**\n * Convert years to seconds using 365 days per year\n */\nexport function yearsInSeconds(years: number): number {\n return years * daysInSeconds(365);\n}\n","import { isToken, wBeraToken } from \"./tokens\";\n\ntype BaseToken = {\n address: string;\n};\n\nexport function wrapNativeToken<T extends BaseToken>(token: T): T {\n return {\n ...token,\n ...(isToken(token, \"BERA\") && wBeraToken),\n };\n}\n\nexport function wrapNativeTokens<T extends BaseToken>(tokens: T[]): T[] {\n return tokens.map((token) => wrapNativeToken(token));\n}\n","/**\n * Truncate a transaction or address hash and optionally format with uppercase letters and a lowercase 'x'.\n */\nexport const truncateHash = (\n address: `0x${string}` | string,\n startLength = 4,\n endLength = 4,\n formatUppercase = false,\n) => {\n if (!address) return \"\";\n\n const formattedAddress = formatUppercase\n ? address.toUpperCase().replace(/^0X/, \"0x\")\n : address;\n\n return `${formattedAddress.substring(\n 0,\n startLength,\n )}...${formattedAddress.substring(formattedAddress.length - endLength)}`;\n};\n","import { GqlValidatorBlockUptimeStatus } from \"@berachain/graphql/pol/api\";\n\n/**\n * Determines if a validator was the proposer for a specific block.\n * The proposer is responsible for creating and proposing new blocks to the network.\n *\n * @param status - The validator's block uptime status from the GraphQL API\n * @returns boolean\n */\nexport function isValidatorProposer(\n status: GqlValidatorBlockUptimeStatus | undefined,\n): boolean | undefined {\n if (!status) return undefined;\n return status === GqlValidatorBlockUptimeStatus.Proposed;\n}\n\n/**\n * Determines if a validator signed a specific block.\n * Block signers participate in consensus by validating and signing blocks.\n *\n * @param status - The validator's block uptime status from the GraphQL API\n * @returns boolean\n *\n */\nexport function isValidatorSigner(\n status: GqlValidatorBlockUptimeStatus | undefined,\n): boolean | undefined {\n if (!status) return undefined;\n return status === GqlValidatorBlockUptimeStatus.Signed;\n}\n"],"mappings":"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C,EAG3B,IAAII,EAEJ,OAAID,EAASN,CAAK,GAChBO,EAAM,OAAO,WAAWP,CAAK,EAEzB,OAAO,MAAMO,CAAG,IAClBA,EAAM,KAGRA,EAAMP,EAEF,OAAO,MAAMO,CAAG,IAClBA,EAAM,IAGHJ,EAAU,OAAOI,CAAG,CAC7B,OAASC,EAAG,CACV,eAAQ,IAAIA,CAAC,EACNL,EAAU,OAAO,CAAC,CAC3B,CACF,CC3CA,OAAuB,kBAAAM,OAAsB,6BCEtC,IAAMC,EAAY,CACvB,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,aACR,EACA,CACE,MAAS,6CACT,KAAM,gBACR,EACA,CACE,MAAS,6CACT,KAAM,gBACR,EACA,CACE,MAAS,6CACT,KAAM,eACR,EACA,CACE,MAAS,6CACT,KAAM,gBACR,EACA,CACE,MAAS,6CACT,KAAM,gBACR,EACA,CACE,MAAS,6CACT,KAAM,eACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,aACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,uBACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,eACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,sBACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,4BACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,yBACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,sBACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,qCACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,iBACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,2BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,6BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,8BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,sBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,mBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,cACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,2BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,iBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,wBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,eACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,kBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,gBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,cACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,YACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,cACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,qBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,2BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,cACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,aACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,aACR,EACA,CACE,MAAS,GACT,MAAS,6CACT,KAAM,aACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,WACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,2BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,qBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,wBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,4BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,uBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,yBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,8BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,qBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,yBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,oCACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,qBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,gBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,WACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,uBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,gBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,wBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,mCACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,qBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,yBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,iBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,eACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,kBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,eACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,uBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,6BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,gCACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,uBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,+BACR,EACA,CACE,MAAS,KACT,MAAS,6CACT,KAAM,iBACR,EACA,CACE,MAAS,KACT,MAAS,6CACT,KAAM,uBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,0BACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,kBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,mBACR,EACA,CACE,MAAS,6CACT,MAAS,6CACT,KAAM,eACR,EACA,CACE,MAAS,KACT,MAAS,6CACT,KAAM,qBACR,EACA,CACE,MAAS,KACT,MAAS,6CACT,KAAM,+BACR,EACA,CACE,MAAS,KACT,MAAS,6CACT,KAAM,gCACR,EACA,CACE,MAAS,KACT,MAAS,6CACT,KAAM,8BACR,EACA,CACE,MAAS,KACT,MAAS,6CACT,KAAM,uBACR,EACA,CACE,MAAS,KACT,MAAS,6CACT,KAAM,8BACR,EACA,CACE,MAAS,6CACT,KAAM,gCACR,EACA,CACE,MAAS,6CACT,KAAM,gCACR,CACF,EDpYO,SAASC,GAAgB,CAC9B,QAAAC,EACA,QAAAC,EAAUC,EACZ,EAGuB,CACrB,OAAKF,EAIYG,EAAU,KAAMC,GACPA,EAASH,CAAgC,GACzC,YAAY,IAAMD,EAAQ,YAAY,CAC/D,GAEgB,KARf,MASJ,CEnBO,SAASK,GAAoB,CAClC,YAAAC,EACA,WAAAC,EACA,SAAAC,EACA,WAAAC,EACA,oBAAAC,CACF,EAOW,CACT,GAAIJ,EAAY,OAAS,EAAG,CAC1B,GAAIC,IAAe,OAAQ,CACzB,IAAMI,EAAM,CAAC,SAAS,EAGtB,GAFAA,EAAI,KAAKC,EAAa,OAAOJ,EAAS,CAAC,CAAC,EAAG,CAAC,CAAC,EAC7CG,EAAI,KAAK,YAAY,EACjBD,EACF,QAAWG,KAAOP,EAChBK,EAAI,KAAKC,EAAa,OAAOH,EAAWI,CAAG,CAAC,EAAG,CAAC,CAAC,EACjDF,EAAI,KAAK,GAAGL,EAAYO,CAAG,EAAE,MAAM,EAAE,EACjC,CAACA,EAAMP,EAAY,OAAS,EAC9BK,EAAIA,EAAI,OAAS,CAAC,EAAIA,EAAIA,EAAI,OAAS,CAAC,EAAE,OAAO,GAAG,EAC3C,CAACE,IAAQP,EAAY,OAAS,EACvCK,EAAIA,EAAI,OAAS,CAAC,EAAIA,EAAIA,EAAI,OAAS,CAAC,EAAE,OAAO,GAAG,EAEpDA,EAAI,KAAK,KAAK,OAIlBA,EAAI,KAAKC,EAAa,OAAOH,EAAW,CAAC,CAAC,EAAG,CAAC,CAAC,EAC/CE,EAAI,KAAK,GAAGL,EAAY,CAAC,EAAE,MAAM,EAAE,EAErC,OAAOK,EAAI,KAAK,GAAG,CACrB,CACA,IAAMA,EAAM,CAAC,WAAW,EACxB,GAAID,EACF,QAAWG,KAAOP,EAChBK,EAAI,KAAKC,EAAa,OAAOJ,EAASK,CAAG,CAAC,EAAG,CAAC,CAAC,EAC/CF,EAAI,KAAK,GAAGL,EAAYO,CAAG,EAAE,MAAM,EAAE,EACjC,CAACA,EAAMP,EAAY,OAAS,EAC9BK,EAAIA,EAAI,OAAS,CAAC,EAAIA,EAAIA,EAAI,OAAS,CAAC,EAAE,OAAO,GAAG,EAC3C,CAACE,IAAQP,EAAY,OAAS,GACvCK,EAAI,KAAK,KAAK,EACdA,EAAI,KAAKC,EAAa,OAAOH,EAAW,CAAC,CAAC,EAAG,CAAC,CAAC,EAC/CE,EAAI,KAAK,QAAQ,GAEjBA,EAAI,KAAK,KAAK,OAIlBA,EAAI,KAAKC,EAAa,OAAOJ,EAAS,CAAC,CAAC,EAAG,CAAC,CAAC,EAC7CG,EAAI,KAAK,GAAGL,EAAY,CAAC,EAAE,MAAM,EAAE,EACnCK,EAAI,KAAK,KAAK,EACdA,EAAI,KAAKC,EAAa,OAAOH,EAAW,CAAC,CAAC,EAAG,CAAC,CAAC,EAC/CE,EAAI,KAAK,QAAQ,EAEnB,OAAOA,EAAI,KAAK,GAAG,CACrB,CACA,MAAO,EACT,CCrEA,OAAS,sBAAAG,GAAoB,YAAAC,GAAU,QAAAC,MAA+B,OAEtE,OAEE,kBAAAC,GACA,cAAAC,OACK,6BAEP,OAAS,4BAAAC,OAAgC,0BAOzC,IAAMC,EAAuC,IAAI,IAEpCC,GAA4B,CACvCC,EAA8B,CAAC,IACd,CACjB,IAAMC,EAAmBD,EAAK,SAAWL,GAEzC,GAAIG,EAAS,IAAIG,CAAO,EACtB,OAAOH,EAAS,IAAIG,CAAO,EAG7B,IAAMC,EAAON,GAAWK,CAAO,EACzBE,EAAqB,CACzBD,EAAK,cACLA,EAAK,WACLA,EAAK,kBACLA,EAAK,gBACP,EACG,OAAQE,GAAMA,CAAC,EACf,IAAKC,GAAQX,EAAKW,CAAG,CAAC,EAErBF,EAAmB,SAAW,GAChCA,EAAmB,KAAKT,EAAK,CAAC,EAGhC,IAAMY,EAASd,GAAmB,CAChC,MAAOK,GAAyB,MAChC,UAAWJ,GAASU,CAAkB,CACxC,CAAC,EAED,OAAAL,EAAS,IAAIG,EAASK,CAAM,EAErBA,CACT,EChDA,OAAS,oBAAAC,GAAkB,QAAAC,OAAY,OAEvC,OAEE,kBAAAC,GACA,cAAAC,OACK,6BAEA,SAASC,GAAcC,EAAmBH,GAAgB,CAC/D,IAAMI,EAAMH,GAAWE,CAAO,EAE9B,GAAI,CAACC,EAAI,QACP,MAAM,IAAI,MAAM,wBAAwB,EAE1C,OAAON,GAAiB,CACtB,KAAM,QACN,UAAWC,GAAKK,EAAI,UAAU,CAChC,CAAC,CACH,CClBA,OAAOC,MAAe,eAEf,IAAMC,GAAiC,CAC5CC,EACAC,EACAC,IACG,CACH,IAAMC,EAAa,IAAIL,EAAU,EAAII,CAAS,EAAE,MAAMF,CAAa,EAC7DI,EAAa,IAAIN,EAAU,EAAII,CAAS,EAAE,MAAMF,CAAa,EACnE,OACEG,EAAW,WAAWF,CAAS,GAAKG,EAAW,cAAcH,CAAS,CAE1E,ECZO,SAASI,GAAgB,CAC9B,mBAAAC,EACA,UAAAC,CACF,EAGG,CACD,OAAKD,EACEA,EAAqB,KAAK,IAAI,EAAI,IAAOC,EAAY,GAD5B,EAElC,CCTO,IAAMC,GAA2BC,GAC/B,GAAK,OAAOA,CAAe,ECQ7B,SAASC,GAIdC,EACAC,EAC0E,CAC1E,IAAMC,EAAoBD,EAAK,kBAE/B,OAAKC,IAIDA,aAA6BC,IAI/BH,EAAM,MAAQ,CACZ,GAAGE,EACH,GAAGF,EAAM,KACX,EACAA,EAAM,KAAO,CACX,GAAGE,EAAkB,KACrB,GAAGF,EAAM,IACX,EACAA,EAAM,MACJC,EAAK,gBAAkB,UAAWA,EAAK,eACnCA,EAAK,eAAe,MACpBC,EAAkB,OAGtBA,aAA6B,YAE/BF,EAAM,MAAQ,CAAE,GAAGE,CAAkB,EACrCF,EAAM,KAAO,CACX,eAAgBI,EAAa,YAAYF,CAAiB,EACtDE,EAAa,WAAW,WACxBF,EAAkB,KACtB,MAAO,SACT,IAEKF,CACT,CChDO,SAASK,GAAYC,EAAoB,CAC9C,OAAO,KAAK,MAAMA,EAAK,GAAI,CAC7B,CAcO,SAASC,GAAQA,EAAyB,CAC/C,OAAOA,EAAU,GACnB,CAKO,SAASC,GAAQA,EAAyB,CAC/C,OAAOA,EAAUD,GAAQ,EAAE,CAC7B,CAKO,SAASE,GAAiBD,EAAyB,CACxD,OAAOA,EAAU,EACnB,CAKO,SAASE,GAAMA,EAAuB,CAC3C,OAAOA,EAAQF,GAAQ,EAAE,CAC3B,CAKO,SAASG,GAAeD,EAAuB,CACpD,OAAOA,EAAQD,GAAiB,EAAE,CACpC,CAKO,SAASG,EAAKA,EAAsB,CACzC,OAAOA,EAAOF,GAAM,EAAE,CACxB,CAKO,SAASG,EAAcD,EAAsB,CAClD,OAAOA,EAAOD,GAAe,EAAE,CACjC,CAKO,SAASG,GAAMA,EAAuB,CAC3C,OAAOA,EAAQF,EAAK,CAAC,CACvB,CAKO,SAASG,GAAeD,EAAuB,CACpD,OAAOA,EAAQD,EAAc,CAAC,CAChC,CAKO,SAASG,GAAOA,EAAwB,CAC7C,OAAOA,EAASJ,EAAK,EAAE,CACzB,CAKO,SAASK,GAAgBD,EAAwB,CACtD,OAAOA,EAASH,EAAc,EAAE,CAClC,CAKO,SAASK,GAAMA,EAAuB,CAC3C,OAAOA,EAAQN,EAAK,GAAG,CACzB,CAKO,SAASO,GAAeD,EAAuB,CACpD,OAAOA,EAAQL,EAAc,GAAG,CAClC,CCnGO,SAASO,GAAqCC,EAAa,CAChE,MAAO,CACL,GAAGA,EACH,GAAIC,EAAQD,EAAO,MAAM,GAAKE,CAChC,CACF,CAEO,SAASC,GAAsCC,EAAkB,CACtE,OAAOA,EAAO,IAAKJ,GAAUD,GAAgBC,CAAK,CAAC,CACrD,CCZO,IAAMK,GAAe,CAC1BC,EACAC,EAAc,EACdC,EAAY,EACZC,EAAkB,KACf,CACH,GAAI,CAACH,EAAS,MAAO,GAErB,IAAMI,EAAmBD,EACrBH,EAAQ,YAAY,EAAE,QAAQ,MAAO,IAAI,EACzCA,EAEJ,MAAO,GAAGI,EAAiB,UACzB,EACAH,CACF,CAAC,MAAMG,EAAiB,UAAUA,EAAiB,OAASF,CAAS,CAAC,EACxE,ECnBA,OAAS,iCAAAG,MAAqC,6BASvC,SAASC,GACdC,EACqB,CACrB,GAAKA,EACL,OAAOA,IAAWF,EAA8B,QAClD,CAUO,SAASG,GACdD,EACqB,CACrB,GAAKA,EACL,OAAOA,IAAWF,EAA8B,MAClD","names":["getErrorResponse","response","text","beraFetch","endpoint","options","response","error","getErrorResponse","RequestError","beraFetchJson","parseEther","CAP_LIMIT_BUFFER","MAX_CUSTOM_DEADLINE","MIN_CUSTOM_DEADLINE","MIN_CUSTOM_SLIPPAGE","MAX_CUSTOM_SLIPPAGE","DEFAULT_METAMASK_GAS_LIMIT","BigNumber","formatUnits","BigNumber","computePriceImpact","tokenInPrice","tokenOutPrice","inAmount","outAmount","usdIn","usdOut","ratio","formatAggregatorsQuotes","rawQuotes","selectedFrom","selectedTo","tokenInPrice","tokenOutPrice","quote","amountOut","formatUnits","amountIn","amountOutUsd","BigNumber","amountInUsd","priceImpactPercentage","computePriceImpact","a","b","_","allQuotes","formatInputTokenValue","inputValue","filteredValue","BigNumber","POSTFIXES","valueToBigNumber","amount","normalizeBN","n","decimals","formatNumber","value","options","formatted","visibleDecimals","compact","percent","roundDown","roundUp","compactThreshold","maxValue","symbol","prefixText","suffixText","showIsSmallerThanMin","ifNullish","number","minValue","isSmallerThanMin","isNegative","isBiggerThanMax","formattedNumber","forceCompact","formattedValue","bnValue","integerPlaces","significantDigitsGroup","postfix","compactValue","absFormatted","parts","getSafeNumber","truncateDecimal","maxDecimal","integerPart","decimalPart","calculateTimestampFromDays","daysRange","currentDate","monthNames","shortMonthNames","formatUnixTimestamp","unixTimestamp","isShort","date","day","daySuffix","formatTimeLeft","args","timeLeftInSeconds","condensed","showDays","showMinutes","showSeconds","opts","greaterUnit","days","hours","minutes","seconds","daysDisplay","hoursDisplay","minutesDisplay","secondsDisplay","formatUsd","input","hideDecimals","decimalsSettings","formatter","isNumber","value","isString","num","e","defaultChainId","contracts","getContractName","address","chainId","defaultChainId","contracts","contract","getHoneySwapMessage","collaterals","actionType","toAmount","fromAmount","isBasketModeEnabled","msg","formatNumber","idx","createPublicClient","fallback","http","defaultChainId","getRpcUrls","defaultBeraNetworkConfig","_clients","getServerSidePublicClient","args","chainId","rpcs","fallbackTransports","i","url","client","createTestClient","http","defaultChainId","getRpcUrls","getTestClient","chainId","rpc","BigNumber","isDifferenceExceedingThreshold","initialAmount","newAmount","threshold","upperBound","lowerBound","isSubgraphStale","lastBlockTimestamp","blockTime","getPythDefaultUpdateFee","tokenListLength","sentryBeforeSend","event","hint","originalException","BeraError","RequestError","msToSeconds","ms","seconds","minutes","minutesInSeconds","hours","hoursInSeconds","days","daysInSeconds","weeks","weeksInSeconds","months","monthsInSeconds","years","yearsInSeconds","wrapNativeToken","token","isToken","wBeraToken","wrapNativeTokens","tokens","truncateHash","address","startLength","endLength","formatUppercase","formattedAddress","GqlValidatorBlockUptimeStatus","isValidatorProposer","status","isValidatorSigner"]}