@berachain/berajs 0.2.4 → 0.2.6-patch.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/README.md +0 -0
  2. package/dist/abi/exports.cjs +1 -1
  3. package/dist/abi/exports.cjs.map +1 -1
  4. package/dist/abi/exports.d.cts +17 -1
  5. package/dist/abi/exports.d.ts +17 -1
  6. package/dist/abi/exports.mjs +1 -1
  7. package/dist/abi/exports.mjs.map +1 -1
  8. package/dist/actions/exports.cjs +1 -1
  9. package/dist/actions/exports.cjs.map +1 -1
  10. package/dist/actions/exports.d.cts +9 -38
  11. package/dist/actions/exports.d.ts +9 -38
  12. package/dist/actions/exports.mjs +1 -1
  13. package/dist/actions/exports.mjs.map +1 -1
  14. package/dist/chunk-2YBHAMDV.cjs +2 -0
  15. package/dist/chunk-2YBHAMDV.cjs.map +1 -0
  16. package/dist/chunk-57RINXU6.cjs +2 -0
  17. package/dist/chunk-57RINXU6.cjs.map +1 -0
  18. package/dist/{chunk-AX2YQQFQ.mjs → chunk-74QD4JAH.mjs} +2 -2
  19. package/dist/chunk-74QD4JAH.mjs.map +1 -0
  20. package/dist/chunk-74WA35RI.cjs +2 -0
  21. package/dist/chunk-74WA35RI.cjs.map +1 -0
  22. package/dist/{chunk-7WRTK7RJ.mjs → chunk-BEKH5EYT.mjs} +2 -2
  23. package/dist/chunk-BEKH5EYT.mjs.map +1 -0
  24. package/dist/{chunk-FCWDGE62.cjs → chunk-CF3LFNXG.cjs} +2 -2
  25. package/dist/chunk-CF3LFNXG.cjs.map +1 -0
  26. package/dist/chunk-COMMLZ3O.mjs +2 -0
  27. package/dist/chunk-COMMLZ3O.mjs.map +1 -0
  28. package/dist/chunk-DDEQFR3M.cjs +2 -0
  29. package/dist/chunk-DDEQFR3M.cjs.map +1 -0
  30. package/dist/{chunk-6LDOG5RL.cjs → chunk-DK42F2ZM.cjs} +2 -2
  31. package/dist/chunk-DK42F2ZM.cjs.map +1 -0
  32. package/dist/{chunk-7SMWQ6SN.mjs → chunk-FM3WDBFH.mjs} +2 -2
  33. package/dist/chunk-FM3WDBFH.mjs.map +1 -0
  34. package/dist/chunk-HWOGQSNL.cjs +4 -0
  35. package/dist/chunk-HWOGQSNL.cjs.map +1 -0
  36. package/dist/chunk-I7M43BB4.cjs +2 -0
  37. package/dist/chunk-I7M43BB4.cjs.map +1 -0
  38. package/dist/chunk-IBJOI5SN.mjs +4 -0
  39. package/dist/chunk-IBJOI5SN.mjs.map +1 -0
  40. package/dist/chunk-IDFMLLDY.mjs +2 -0
  41. package/dist/chunk-IDFMLLDY.mjs.map +1 -0
  42. package/dist/{chunk-YZV5LKIP.cjs → chunk-LNVR4BW6.cjs} +2 -2
  43. package/dist/chunk-LNVR4BW6.cjs.map +1 -0
  44. package/dist/chunk-MJZHJFZO.mjs +2 -0
  45. package/dist/{chunk-YNO7BCCM.mjs.map → chunk-MJZHJFZO.mjs.map} +1 -1
  46. package/dist/chunk-MK5NS5B5.mjs +2 -0
  47. package/dist/chunk-MK5NS5B5.mjs.map +1 -0
  48. package/dist/{chunk-C6ZGUO4H.cjs → chunk-NMH7LHPW.cjs} +2 -2
  49. package/dist/chunk-NMH7LHPW.cjs.map +1 -0
  50. package/dist/chunk-NVHV2LDK.cjs +2 -0
  51. package/dist/chunk-NVHV2LDK.cjs.map +1 -0
  52. package/dist/chunk-OGBD5YOG.mjs +2 -0
  53. package/dist/chunk-OGBD5YOG.mjs.map +1 -0
  54. package/dist/chunk-OIYXOKTT.cjs.map +1 -1
  55. package/dist/chunk-OUD27MU7.cjs.map +1 -1
  56. package/dist/chunk-PLIH6KQM.mjs +2 -0
  57. package/dist/chunk-PLIH6KQM.mjs.map +1 -0
  58. package/dist/chunk-QRAIGQF2.mjs +2 -0
  59. package/dist/chunk-QRAIGQF2.mjs.map +1 -0
  60. package/dist/chunk-RWOICHRW.cjs +2 -0
  61. package/dist/chunk-RWOICHRW.cjs.map +1 -0
  62. package/dist/chunk-T5FSQ3YE.mjs +2 -0
  63. package/dist/chunk-T5FSQ3YE.mjs.map +1 -0
  64. package/dist/chunk-WRFDB3QJ.cjs.map +1 -1
  65. package/dist/chunk-XNJLSA6P.cjs.map +1 -1
  66. package/dist/contexts/exports.cjs +1 -1
  67. package/dist/contexts/exports.cjs.map +1 -1
  68. package/dist/contexts/exports.d.cts +1 -1
  69. package/dist/contexts/exports.d.ts +1 -1
  70. package/dist/contexts/exports.mjs +1 -1
  71. package/dist/contexts/exports.mjs.map +1 -1
  72. package/dist/{defaultFlags-d0kPbT0i.d.cts → defaultFlags-D6KfkTZx.d.cts} +1 -1
  73. package/dist/{defaultFlags-d0kPbT0i.d.ts → defaultFlags-D6KfkTZx.d.ts} +1 -1
  74. package/dist/enum/exports.cjs +1 -1
  75. package/dist/enum/exports.cjs.map +1 -1
  76. package/dist/enum/exports.d.cts +1 -1
  77. package/dist/enum/exports.d.ts +1 -1
  78. package/dist/enum/exports.mjs +1 -1
  79. package/dist/errors/exports.cjs +1 -1
  80. package/dist/errors/exports.cjs.map +1 -1
  81. package/dist/errors/exports.d.cts +8 -3
  82. package/dist/errors/exports.d.ts +8 -3
  83. package/dist/errors/exports.mjs +1 -1
  84. package/dist/{getValidatorQueuedOperatorAddress-DZgrPmZ2.d.cts → getValidatorQueuedOperatorAddress-BdDYHycN.d.cts} +15 -4
  85. package/dist/{getValidatorQueuedOperatorAddress-CqR6cyqC.d.ts → getValidatorQueuedOperatorAddress-CmiPJmsr.d.ts} +15 -4
  86. package/dist/{global.d-BeYWDreg.d.ts → global.d-3GQMgC9k.d.ts} +1 -1
  87. package/dist/{global.d-DghRxpHd.d.cts → global.d-CwT1Phzf.d.cts} +1 -1
  88. package/dist/hooks/exports.cjs +3 -3
  89. package/dist/hooks/exports.cjs.map +1 -1
  90. package/dist/hooks/exports.d.cts +54 -75
  91. package/dist/hooks/exports.d.ts +54 -75
  92. package/dist/hooks/exports.mjs +3 -3
  93. package/dist/hooks/exports.mjs.map +1 -1
  94. package/dist/{txnEnum-DxPRHSJt.d.cts → txnEnum-CCuQUFlh.d.cts} +7 -0
  95. package/dist/{txnEnum-DxPRHSJt.d.ts → txnEnum-CCuQUFlh.d.ts} +7 -0
  96. package/dist/types/exports.cjs.map +1 -1
  97. package/dist/types/exports.d.cts +37 -4
  98. package/dist/types/exports.d.ts +37 -4
  99. package/dist/utils/exports.cjs +1 -1
  100. package/dist/utils/exports.cjs.map +1 -1
  101. package/dist/utils/exports.d.cts +2 -2
  102. package/dist/utils/exports.d.ts +2 -2
  103. package/dist/utils/exports.mjs +1 -1
  104. package/dist/utils/exports.mjs.map +1 -1
  105. package/package.json +25 -25
  106. package/src/abi/enso/ensoWalletV2Factory.ts +9 -0
  107. package/src/abi/exports.ts +1 -0
  108. package/src/abi/pyth/pyth.ts +0 -0
  109. package/src/actions/clients/BeraApolloClient.ts +3 -3
  110. package/src/actions/clients/getApolloClient.ts +5 -5
  111. package/src/actions/clients/getEnsoClient.ts +1 -1
  112. package/src/actions/dex/__tests__/aggregators.unit.test.ts +3 -3
  113. package/src/actions/dex/__tests__/getOnChainPool.unit.test.ts +1 -1
  114. package/src/actions/dex/aggregators/base.ts +12 -8
  115. package/src/actions/dex/aggregators/bex.ts +8 -8
  116. package/src/actions/dex/aggregators/bgt.ts +4 -4
  117. package/src/actions/dex/aggregators/enso/enso.ts +28 -20
  118. package/src/actions/dex/aggregators/enso/ensoErc4626.debug.test.ts +1 -1
  119. package/src/actions/dex/aggregators/enso/ensoErc4626.ts +7 -4
  120. package/src/actions/dex/aggregators/erc4626.ts +10 -6
  121. package/src/actions/dex/aggregators/fly.ts +9 -5
  122. package/src/actions/dex/aggregators/haiku.integration.test.ts +3 -3
  123. package/src/actions/dex/aggregators/haiku.ts +9 -5
  124. package/src/actions/dex/aggregators/honey.ts +15 -15
  125. package/src/actions/dex/aggregators/kyberswap.ts +8 -4
  126. package/src/actions/dex/aggregators/oogabooga.ts +8 -4
  127. package/src/actions/dex/aggregators/openOcean.ts +12 -8
  128. package/src/actions/dex/aggregators/wbera.ts +8 -4
  129. package/src/actions/dex/b-sdk.ts +2 -2
  130. package/src/actions/dex/getAllPools.ts +2 -2
  131. package/src/actions/dex/getApiPool.ts +2 -2
  132. package/src/actions/dex/getGlobalLiquidityAndSwapVolume.ts +2 -2
  133. package/src/actions/dex/getIsTokenExploited.ts +1 -1
  134. package/src/actions/dex/getOnChainPool.ts +3 -3
  135. package/src/actions/dex/getPoolEvents.ts +2 -2
  136. package/src/actions/dex/getPoolHistoricalData.ts +2 -2
  137. package/src/actions/dex/getVaultPausedState.ts +1 -1
  138. package/src/actions/enso/__tests__/getBendDemultiplyBundle.action.unit.test.ts +175 -0
  139. package/src/actions/enso/__tests__/getBendDemultiplyBundle.unit.test.ts +150 -0
  140. package/src/actions/enso/__tests__/getBendMultiplyBundle.action.unit.test.ts +138 -0
  141. package/src/actions/enso/__tests__/getBendMultiplyBundle.unit.test.ts +194 -0
  142. package/src/actions/enso/{getEnsoUserTokensWithBalances.debug.test.ts → __tests__/getEnsoUserTokensWithBalances.debug.test.ts} +3 -3
  143. package/src/actions/enso/__tests__/helpers.ts +42 -0
  144. package/src/actions/enso/__tests__/util.unit.test.ts +95 -0
  145. package/src/actions/enso/flashloan.ts +127 -0
  146. package/src/actions/enso/getBendDemultiplyBundle.ts +325 -0
  147. package/src/actions/enso/getBendMultiplyBundle.ts +348 -0
  148. package/src/actions/enso/getEnsoSwapBundle.ts +2 -2
  149. package/src/actions/enso/getEnsoUserTokensWithBalances.ts +5 -5
  150. package/src/actions/enso/util.ts +150 -5
  151. package/src/actions/exports.ts +0 -2
  152. package/src/actions/governance/__tests__/checkProposalField.unit.test.ts +2 -2
  153. package/src/actions/governance/__tests__/getDecodedFunctionData.integration.test.ts +2 -2
  154. package/src/actions/governance/__tests__/getQuorum.integration.test.ts +2 -2
  155. package/src/actions/governance/checkProposalField.ts +1 -1
  156. package/src/actions/governance/computeActualStatus.ts +1 -1
  157. package/src/actions/governance/getAllProposals.ts +1 -1
  158. package/src/actions/governance/getBodyErrors.ts +1 -1
  159. package/src/actions/governance/getProposalDetails.ts +1 -1
  160. package/src/actions/governance/getProposalFromTx.ts +1 -1
  161. package/src/actions/governance/getProposalParams.ts +3 -3
  162. package/src/actions/governance/getProposalVotes.ts +1 -1
  163. package/src/actions/governance/getQuorum.ts +2 -2
  164. package/src/actions/honey/getCollateralWeights.ts +2 -2
  165. package/src/actions/honey/getGlobalCapLimit.ts +4 -4
  166. package/src/actions/honey/getHoneyCollaterals.ts +5 -5
  167. package/src/actions/honey/getHoneyFees.ts +1 -1
  168. package/src/actions/honey/getHoneyPausedState.ts +1 -1
  169. package/src/actions/honey/getHoneyPreview.ts +3 -3
  170. package/src/actions/honey/getHoneyRootPriceOracle.ts +1 -1
  171. package/src/actions/honey/getHoneyVaultsBalance.ts +2 -2
  172. package/src/actions/honey/getRelativeCapLimit.ts +3 -3
  173. package/src/actions/honey/getSharesWithoutFees.ts +1 -1
  174. package/src/actions/honey/getSwapPayload.ts +6 -6
  175. package/src/actions/honey/isBadCollateralAsset.ts +2 -2
  176. package/src/actions/honey/isBasketModeEnabled.ts +2 -2
  177. package/src/actions/honey/tests/pyth.integration.test.ts +3 -3
  178. package/src/actions/misc/getBlockTimestamp.ts +2 -2
  179. package/src/actions/pol/__tests__/getAllValidators.integration.test.ts +2 -2
  180. package/src/actions/pol/__tests__/rewardVaults.integration.test.ts +1 -1
  181. package/src/actions/pol/getBGTGlobalInfo.ts +2 -2
  182. package/src/actions/pol/getBgtAprSimulation.ts +1 -1
  183. package/src/actions/pol/getBgtAprSimultaion.unit.test.ts +1 -1
  184. package/src/actions/pol/getBgtTokenTotalBoosts.ts +2 -2
  185. package/src/actions/pol/getBgtTokenTotalSupply.ts +2 -2
  186. package/src/actions/pol/getBlockTime.debug.test.ts +13 -0
  187. package/src/actions/pol/getBlockTime.ts +14 -23
  188. package/src/actions/pol/getEarnedStakedBeraVault.ts +3 -3
  189. package/src/actions/pol/getGlobalCuttingBoard.ts +0 -0
  190. package/src/actions/pol/getGlobalData.ts +2 -2
  191. package/src/actions/pol/getIncentiveFeeClaimStats.ts +4 -4
  192. package/src/actions/pol/getLSTStakeConfig.ts +5 -5
  193. package/src/actions/pol/getMarkets.ts +2 -2
  194. package/src/actions/pol/getRewardProofsByValidator.ts +4 -4
  195. package/src/actions/pol/getRewardTokenToBeraRate.ts +1 -1
  196. package/src/actions/pol/getRewardVault.ts +3 -3
  197. package/src/actions/pol/getRewardVaultBeaconImplementation.integration.test.ts +1 -1
  198. package/src/actions/pol/getRewardVaultBeaconImplementation.ts +3 -3
  199. package/src/actions/pol/getRewardVaultDurationConstants.integration.test.ts +1 -1
  200. package/src/actions/pol/getRewardVaultDurationConstants.ts +1 -1
  201. package/src/actions/pol/getRewardVaultFromToken.ts +1 -1
  202. package/src/actions/pol/getRewardVaultIncentives.ts +2 -2
  203. package/src/actions/pol/getRewardVaultRewards.ts +1 -1
  204. package/src/actions/pol/getRewardVaults.ts +1 -1
  205. package/src/actions/pol/getSWBeraVaultMetadata.ts +20 -22
  206. package/src/actions/pol/getSWBeraWithdrawal.ts +4 -4
  207. package/src/actions/pol/getStakedBeraAPR.ts +2 -2
  208. package/src/actions/pol/getStakedBeraSnapshots.ts +2 -2
  209. package/src/actions/pol/getStakingDailyAssets.ts +3 -3
  210. package/src/actions/pol/getStakingTokenInformation.ts +2 -2
  211. package/src/actions/pol/getTotalStakedAmount.ts +1 -1
  212. package/src/actions/pol/getUserClaimableIncentives.ts +4 -4
  213. package/src/actions/pol/getUserVaultInfo.ts +1 -1
  214. package/src/actions/pol/getUserVaults.ts +4 -4
  215. package/src/actions/pol/getUserVaultsBalance.ts +1 -1
  216. package/src/actions/pol/getUserVaultsReward.ts +0 -0
  217. package/src/actions/pol/getVaultHistory.ts +2 -2
  218. package/src/actions/pol/getVaultValidators.ts +1 -1
  219. package/src/actions/pol/getVaultsSupply.ts +0 -0
  220. package/src/actions/prices/__tests__/prices.integration.test.ts +2 -2
  221. package/src/actions/prices/getTokenCurrentPrices.ts +5 -5
  222. package/src/actions/pyth/getHoneyPythFeeds.ts +2 -2
  223. package/src/actions/pyth/getUpdateFee.ts +2 -2
  224. package/src/actions/tokens/getAllowances.ts +2 -2
  225. package/src/actions/tokens/getTokenInformation.ts +2 -2
  226. package/src/actions/tokens/getTokens.ts +3 -3
  227. package/src/actions/tokens/getUnderlyingToken.ts +4 -4
  228. package/src/actions/tokens/getWalletBalances.integration.test.ts +1 -1
  229. package/src/actions/tokens/getWalletBalances.ts +4 -4
  230. package/src/actions/transactions/beraWriteContract.integration.test.ts +6 -6
  231. package/src/actions/transactions/beraWriteContract.ts +12 -12
  232. package/src/actions/validators/getActiveBoostAndCommissionChangeDelay.integration.test.ts +1 -1
  233. package/src/actions/validators/getActiveBoostAndCommissionChangeDelay.ts +1 -1
  234. package/src/actions/validators/getAllValidators.ts +2 -2
  235. package/src/actions/validators/getApiValidator.ts +2 -2
  236. package/src/actions/validators/getBaselineRewardAllocation.ts +1 -1
  237. package/src/actions/validators/getDailyValidatorBlockStats.ts +1 -1
  238. package/src/actions/validators/getDefaultRewardAllocation.ts +1 -1
  239. package/src/actions/validators/getUserActiveValidators.ts +31 -33
  240. package/src/actions/validators/getUserBoosts.ts +12 -8
  241. package/src/actions/validators/getUserBoostsOnValidator.ts +15 -3
  242. package/src/actions/validators/getUserStakingPositions.ts +1 -1
  243. package/src/actions/validators/getValidatorAnalytics.ts +2 -2
  244. package/src/actions/validators/getValidatorCommission.ts +1 -1
  245. package/src/actions/validators/getValidatorEstimatedBgtPerYear.ts +1 -1
  246. package/src/actions/validators/getValidatorOperatorAddress.ts +1 -1
  247. package/src/actions/validators/getValidatorQueuedCommission.ts +1 -1
  248. package/src/actions/validators/getValidatorQueuedOperatorAddress.ts +1 -1
  249. package/src/actions/validators/getValidatorQueuedRewardAllocation.ts +1 -1
  250. package/src/actions/validators/getValidatorRewardAllocation.ts +1 -1
  251. package/src/actions/validators/getValidatorRewardAllocatorAddress.ts +1 -1
  252. package/src/actions/validators/utils/__tests__/validatorUtils.integration.test.ts +4 -4
  253. package/src/contexts/BeraFlags/defaultFlags.ts +4 -0
  254. package/src/contexts/BexStatusProvider.tsx +1 -1
  255. package/src/contexts/HoneyConfigProvider.tsx +3 -3
  256. package/src/contexts/SwrFallback.tsx +2 -2
  257. package/src/contexts/TokensProvider.tsx +3 -3
  258. package/src/contexts/block-time-provider.tsx +1 -1
  259. package/src/contexts/exports.ts +0 -0
  260. package/src/data/contracts.ts +10 -0
  261. package/src/enum/exports.ts +0 -0
  262. package/src/enum/polling.ts +0 -0
  263. package/src/enum/txnEnum.ts +9 -0
  264. package/src/errors/BeraMonitoring.ts +2 -2
  265. package/src/errors/BeraTracing.ts +2 -2
  266. package/src/errors/RequestError.ts +1 -1
  267. package/src/errors/assert.ts +18 -0
  268. package/src/errors/getErrorMessage.ts +0 -0
  269. package/src/errors/getRevertReason.integration.test.ts +7 -7
  270. package/src/errors/getRevertReason.ts +1 -1
  271. package/src/errors/parseViemError.ts +1 -1
  272. package/src/hooks/bend/useGetConvertToAssets.ts +4 -4
  273. package/src/hooks/dex/useAggregatorsQuotes.ts +19 -19
  274. package/src/hooks/dex/useAggregatorsRouterFeeBps.ts +2 -2
  275. package/src/hooks/dex/useAllUserPools.ts +3 -3
  276. package/src/hooks/dex/useApiPool.ts +3 -3
  277. package/src/hooks/dex/useBexStatus.ts +1 -1
  278. package/src/hooks/dex/useCreatePool.ts +9 -9
  279. package/src/hooks/dex/useExploitedTokens.ts +3 -3
  280. package/src/hooks/dex/useGlobalLiquidityAndSwapVolume.ts +1 -1
  281. package/src/hooks/dex/useLiquidityMismatch.ts +3 -3
  282. package/src/hooks/dex/useLpPosition.ts +7 -4
  283. package/src/hooks/dex/useMultipleTokenApprovalsWithSlippage.ts +4 -4
  284. package/src/hooks/dex/useOnChainPoolData.ts +3 -3
  285. package/src/hooks/dex/usePollPoolCreationRelayerApproval.ts +3 -3
  286. package/src/hooks/dex/usePool.ts +7 -40
  287. package/src/hooks/dex/usePoolEvents.ts +2 -2
  288. package/src/hooks/dex/usePoolHistoricalData.ts +6 -3
  289. package/src/hooks/dex/usePools.ts +3 -3
  290. package/src/hooks/dex/usePriceImpact.ts +2 -2
  291. package/src/hooks/dex/useSingleAggregatorQuote.ts +13 -13
  292. package/src/hooks/enso/useBendDemultiply.ts +158 -0
  293. package/src/hooks/enso/useBendMultiply.ts +163 -0
  294. package/src/hooks/enso/useBendZapSupply.ts +7 -7
  295. package/src/hooks/enso/useEnsoSwapBundle.ts +6 -6
  296. package/src/hooks/enso/useEnsoUserTokensWithBalances.ts +5 -5
  297. package/src/hooks/enso/useEnsoWalletV2Address.ts +38 -0
  298. package/src/hooks/enso/useIsBendAuthorized.ts +47 -0
  299. package/src/hooks/enso/useZapStakeBera.ts +4 -4
  300. package/src/hooks/exports.ts +4 -3
  301. package/src/hooks/governance/useCreateProposal.ts +3 -3
  302. package/src/hooks/governance/useGetPastVotes.ts +2 -2
  303. package/src/hooks/governance/useHasVoted.ts +2 -2
  304. package/src/hooks/governance/useIsCanceller.ts +4 -4
  305. package/src/hooks/governance/usePollAllProposals.ts +3 -3
  306. package/src/hooks/governance/usePollProposal.ts +7 -4
  307. package/src/hooks/governance/usePollProposalThreshold.ts +3 -3
  308. package/src/hooks/governance/usePollProposalVotes.ts +1 -1
  309. package/src/hooks/governance/usePollUserDelegates.ts +7 -4
  310. package/src/hooks/governance/useProposalFromTx.ts +1 -1
  311. package/src/hooks/governance/useProposalSnapshot.ts +2 -2
  312. package/src/hooks/governance/useProposalState.ts +2 -2
  313. package/src/hooks/governance/useProposalTimelockState.ts +2 -2
  314. package/src/hooks/governance/useQuorum.ts +1 -1
  315. package/src/hooks/honey/useCappedGlobally.ts +8 -5
  316. package/src/hooks/honey/useCappedRelatively.ts +7 -4
  317. package/src/hooks/honey/useCollateralWeights.ts +8 -5
  318. package/src/hooks/honey/useHoneyAlerts.ts +5 -5
  319. package/src/hooks/honey/useHoneyBalances.ts +7 -7
  320. package/src/hooks/honey/useHoneyChartData.ts +1 -1
  321. package/src/hooks/honey/useHoneySwapState.ts +4 -4
  322. package/src/hooks/honey/useHoneyVaultsBalance.ts +8 -5
  323. package/src/hooks/honey/useIsBadCollateralAsset.ts +9 -6
  324. package/src/hooks/honey/useIsBasketModeEnabled.ts +8 -5
  325. package/src/hooks/honey/usePythLatestPrices.ts +4 -4
  326. package/src/hooks/perps/usePythUpdateFee.ts +4 -4
  327. package/src/hooks/pol/useBgtAprSimulation.ts +1 -1
  328. package/src/hooks/pol/useBgtUnstakedBalance.ts +7 -4
  329. package/src/hooks/pol/useClaimableFees.ts +4 -4
  330. package/src/hooks/pol/useOnChainRewardVault.ts +7 -7
  331. package/src/hooks/pol/usePollGlobalData.ts +9 -3
  332. package/src/hooks/pol/usePollMarkets.ts +5 -2
  333. package/src/hooks/pol/useQueuedBeraUnlock.ts +4 -4
  334. package/src/hooks/pol/useRewardTokenToBeraRate.ts +4 -4
  335. package/src/hooks/pol/useRewardVault.ts +5 -2
  336. package/src/hooks/pol/useRewardVaultBalanceFromStakingToken.ts +2 -2
  337. package/src/hooks/pol/useRewardVaultFromToken.ts +2 -2
  338. package/src/hooks/pol/useRewardVaultIncentives.ts +2 -2
  339. package/src/hooks/pol/useRewardVaultRewards.ts +3 -3
  340. package/src/hooks/pol/useRewardVaults.ts +2 -2
  341. package/src/hooks/pol/useStakedAPR.ts +3 -3
  342. package/src/hooks/pol/useStakedData.ts +10 -10
  343. package/src/hooks/pol/useStakedSnapshots.ts +3 -3
  344. package/src/hooks/pol/useStakingVaultsMetadata.ts +40 -0
  345. package/src/hooks/pol/useTotalStakedAmount.ts +2 -2
  346. package/src/hooks/pol/useUserVaultInfo.ts +8 -5
  347. package/src/hooks/pol/useUserVaults.ts +7 -4
  348. package/src/hooks/pol/useVaultAddress.ts +2 -2
  349. package/src/hooks/pol/useVaultHistory.ts +2 -2
  350. package/src/hooks/pol/useVaultValidators.ts +5 -2
  351. package/src/hooks/tokens/useBeraCurrentPrice.ts +1 -1
  352. package/src/hooks/tokens/useMultipleTokenInformation.ts +7 -4
  353. package/src/hooks/tokens/usePollAllowances.ts +7 -4
  354. package/src/hooks/tokens/usePollBalance.ts +8 -5
  355. package/src/hooks/tokens/usePollWalletBalances.ts +8 -5
  356. package/src/hooks/tokens/useStakingTokenInformation.ts +7 -4
  357. package/src/hooks/tokens/useTokenCurrentPrice.ts +1 -1
  358. package/src/hooks/tokens/useTokenCurrentPrices.ts +6 -6
  359. package/src/hooks/tokens/useTokenInformation.ts +8 -5
  360. package/src/hooks/tokens/useTokenPrice.ts +1 -1
  361. package/src/hooks/tokens/useTokenPrices.ts +4 -4
  362. package/src/hooks/tokens/useTokens.ts +3 -3
  363. package/src/hooks/tokens/useTotalSupply.ts +1 -1
  364. package/src/hooks/tokens/useUnderlyingAsset.ts +3 -3
  365. package/src/hooks/useBlockToTimestamp.ts +5 -5
  366. package/src/hooks/useContractWrite/index.ts +0 -0
  367. package/src/hooks/useContractWrite/stateReducer.ts +0 -0
  368. package/src/hooks/useContractWrite/types.ts +2 -2
  369. package/src/hooks/useContractWrite/useBeraContractWrite.ts +5 -6
  370. package/src/hooks/useGetVerifiedAbi.ts +1 -1
  371. package/src/hooks/usePrevious.ts +0 -0
  372. package/src/hooks/validators/useAllValidators.ts +7 -4
  373. package/src/hooks/validators/useApiEnrichedAllocation.ts +2 -2
  374. package/src/hooks/validators/useApiValidator.ts +5 -2
  375. package/src/hooks/validators/useBaselineRewardAllocation.ts +2 -2
  376. package/src/hooks/validators/useDailyValidatorBlockStats.ts +3 -3
  377. package/src/hooks/validators/useDefaultRewardAllocation.ts +4 -4
  378. package/src/hooks/validators/useManagedValidatorRole.ts +8 -5
  379. package/src/hooks/validators/useOnChainValidator.ts +6 -3
  380. package/src/hooks/validators/useStakingPoolBatch.ts +7 -4
  381. package/src/hooks/validators/useUserActiveValidators.ts +6 -3
  382. package/src/hooks/validators/useUserBoostsOnValidator.ts +3 -3
  383. package/src/hooks/validators/useUserClaimableIncentives.ts +9 -9
  384. package/src/hooks/validators/useUserStakingPositions.ts +1 -1
  385. package/src/hooks/validators/useValidator.ts +1 -1
  386. package/src/hooks/validators/useValidatorAnalytics.ts +3 -3
  387. package/src/hooks/validators/useValidatorCommission.ts +5 -2
  388. package/src/hooks/validators/useValidatorEstimatedBgtPerYear.ts +3 -3
  389. package/src/hooks/validators/useValidatorQueuedCommission.ts +6 -3
  390. package/src/hooks/validators/useValidatorQueuedOperatorAddress.ts +5 -2
  391. package/src/hooks/validators/useValidatorQueuedRewardAllocation.ts +6 -3
  392. package/src/hooks/validators/useValidatorRewardAllocation.ts +2 -2
  393. package/src/types/dex.d.ts +1 -1
  394. package/src/types/enso.d.ts +34 -0
  395. package/src/types/exports.ts +0 -0
  396. package/src/types/global.d.ts +3 -3
  397. package/src/types/governance.d.ts +1 -1
  398. package/src/types/honeySwap.d.ts +3 -3
  399. package/src/types/staking.d.ts +0 -0
  400. package/src/utils/beraFetch.ts +1 -1
  401. package/src/utils/createEmitter.ts +1 -1
  402. package/src/utils/exports.ts +0 -0
  403. package/src/utils/filter.ts +0 -0
  404. package/src/utils/formatIncentivesTokenMap.ts +1 -1
  405. package/src/utils/formatInputTokenValue.ts +0 -0
  406. package/src/utils/formatNumber.ts +0 -0
  407. package/src/utils/getContractName.ts +1 -1
  408. package/src/utils/getHoneySwapMessage.test.ts +1 -1
  409. package/src/utils/getHoneySwapMessage.ts +1 -1
  410. package/src/utils/parseBaseArgs.ts +1 -1
  411. package/src/utils/parseBaseArgs.unit.test.ts +1 -1
  412. package/src/utils/parseWhiskToken.ts +1 -1
  413. package/src/utils/poolNamings.ts +1 -1
  414. package/src/utils/tokens.ts +2 -2
  415. package/src/utils/tokens.unit.test.ts +1 -1
  416. package/src/utils/truncateHash.ts +0 -0
  417. package/.claude/skills/berajs/SKILL.md +0 -222
  418. package/.claude/skills/berajs/references/dex.md +0 -235
  419. package/.claude/skills/berajs/references/pol.md +0 -194
  420. package/.claude/skills/berajs/references/staking.md +0 -198
  421. package/.claude/skills/berajs/references/tokens.md +0 -170
  422. package/LICENSE +0 -21
  423. package/dist/chunk-22J3YJDN.cjs +0 -2
  424. package/dist/chunk-22J3YJDN.cjs.map +0 -1
  425. package/dist/chunk-2LL3P5PN.mjs +0 -2
  426. package/dist/chunk-2LL3P5PN.mjs.map +0 -1
  427. package/dist/chunk-4GU2O2OW.cjs +0 -4
  428. package/dist/chunk-4GU2O2OW.cjs.map +0 -1
  429. package/dist/chunk-55L7STYD.mjs +0 -2
  430. package/dist/chunk-55L7STYD.mjs.map +0 -1
  431. package/dist/chunk-5XWELBWR.mjs +0 -2
  432. package/dist/chunk-5XWELBWR.mjs.map +0 -1
  433. package/dist/chunk-6LDOG5RL.cjs.map +0 -1
  434. package/dist/chunk-7LNBSOVV.cjs +0 -2
  435. package/dist/chunk-7LNBSOVV.cjs.map +0 -1
  436. package/dist/chunk-7SMWQ6SN.mjs.map +0 -1
  437. package/dist/chunk-7WRTK7RJ.mjs.map +0 -1
  438. package/dist/chunk-AX2YQQFQ.mjs.map +0 -1
  439. package/dist/chunk-BS6K7HGH.cjs +0 -2
  440. package/dist/chunk-BS6K7HGH.cjs.map +0 -1
  441. package/dist/chunk-C3FHGFLK.mjs +0 -2
  442. package/dist/chunk-C3FHGFLK.mjs.map +0 -1
  443. package/dist/chunk-C6ZGUO4H.cjs.map +0 -1
  444. package/dist/chunk-FCWDGE62.cjs.map +0 -1
  445. package/dist/chunk-RW3JFPED.mjs +0 -4
  446. package/dist/chunk-RW3JFPED.mjs.map +0 -1
  447. package/dist/chunk-S3EAKCVM.cjs +0 -2
  448. package/dist/chunk-S3EAKCVM.cjs.map +0 -1
  449. package/dist/chunk-SWMJQOH6.cjs +0 -2
  450. package/dist/chunk-SWMJQOH6.cjs.map +0 -1
  451. package/dist/chunk-THATXCJK.mjs +0 -2
  452. package/dist/chunk-THATXCJK.mjs.map +0 -1
  453. package/dist/chunk-VXL2ZZ4X.cjs +0 -2
  454. package/dist/chunk-VXL2ZZ4X.cjs.map +0 -1
  455. package/dist/chunk-YNO7BCCM.mjs +0 -2
  456. package/dist/chunk-YXLFOEZN.mjs +0 -2
  457. package/dist/chunk-YXLFOEZN.mjs.map +0 -1
  458. package/dist/chunk-YZV5LKIP.cjs.map +0 -1
  459. package/src/actions/dex/getSubgraphPool.ts +0 -30
  460. package/src/actions/validators/getManagedValidatorByAccount.ts +0 -32
  461. package/src/hooks/pol/useSWBeraVaultMetadata.ts +0 -35
  462. package/src/hooks/validators/useManagedValidatorByAccount.ts +0 -40
  463. package/src/hooks/validators/useSubgraphUserValidators.ts +0 -36
@@ -1,4 +1,4 @@
1
- import{$ as oo,Aa as Eo,B as Vt,Ba as Io,C as Nt,Ca as xo,D as Wt,Da as Bo,Ea as vo,F as _t,Fa as Oo,G as me,Ga as Do,H as Qt,Ha as Lo,I as Ve,Ia as Uo,J as Yt,K as Gt,L as de,M as Kt,O as qt,P as $t,Q as zt,R as jt,S as Jt,U as Zt,V as Xt,W as se,X as eo,Y as ge,Z as ye,_ as to,a as wt,ba as ro,c as K,ca as so,da as ao,e as E,ea as no,f as Pt,fa as io,g as pe,ga as lo,h as Ct,ha as uo,i as St,ia as po,ja as mo,k as Tt,ka as co,l as Et,la as fo,m as It,n as xt,na as yo,o as L,oa as Ao,pa as bo,qa as ho,r as Bt,ra as Ro,s as vt,sa as wo,t as Ot,ua as ko,v as Dt,w as Lt,wa as Po,x as Ut,xa as Co,y as Ht,ya as So,z as M,za as To}from"../chunk-RW3JFPED.mjs";import"../chunk-NLVWRMGD.mjs";import{c as U,e as Ne,g as $,l as B,m as Ho}from"../chunk-55L7STYD.mjs";import{a as ie,c as Ae}from"../chunk-7SMWQ6SN.mjs";import"../chunk-NAXAZJJY.mjs";import"../chunk-YXLFOEZN.mjs";import"../chunk-OGJMSGB2.mjs";import"../chunk-575OK77P.mjs";import{c as go}from"../chunk-7WRTK7RJ.mjs";import{a as kt,b as q,c as f,d as _,e as Ue,f as fe}from"../chunk-2LL3P5PN.mjs";import{b as be,c as Vo}from"../chunk-YNO7BCCM.mjs";import{c as le,i as He,j as Mt,k as Ft,l as ce}from"../chunk-5XWELBWR.mjs";import"../chunk-C3FHGFLK.mjs";import{a as P,b as D,d as ue,e as h}from"../chunk-THATXCJK.mjs";import{f as x,g as F,h as v}from"../chunk-AX2YQQFQ.mjs";import ls from"swr";import{usePublicClient as us}from"@berachain/wagmi/hooks";var No=({sharesAmount:e,vaultAddress:t,vaultChainId:o},r)=>{let s=us({chainId:o}),a=ls(s&&e&&t?["useGetConvertToAssets",e,t,o]:null,async([i,n,l])=>(f(s),wt({sharesAmount:n,vaultAddress:l,publicClient:s})),{...r?.opts});return{...a,refresh:()=>{a.mutate()}}};import{useMemo as oa}from"react";import{zeroAddress as ra}from"viem";import{defaultChainId as sa}from"@berachain/config/internal";import{useBeraWallet as aa,usePublicClient as na}from"@berachain/wagmi/hooks";import{Slippage as ps,Swap as ms,SwapKind as ds,Token as Wo,TokenAmount as cs}from"@berachain-foundation/berancer-sdk";import{decodeFunctionData as fs,formatEther as _o,zeroAddress as gs}from"viem";import{getUriFromLink as ys}from"@berachain/config";import{ChainId as Qo}from"@berachain/config/internal";import{vaultAbi as Mo}from"@berachain/abis/bex/vault";var As=300,bs=.05,We=ds.GivenIn,_e=class extends E{name="Hub Pools";supportedChains=[Qo.MAINNET,Qo.BEPOLIA];url=ys(this.config.api);type="graphql";convertZeroToWrapped(t){return h(t,"BERA")?this.config.tokens.wbera:t}calculatePriceImpact(t){return t.error?(console.error("Swap price impact error",t),0):Number(t.priceImpact)}checkStalePrices({onChainAmount:t,sorPaths:o,sorAmount:r,queryData:s}){let a=Number.parseFloat(_o(t.scale18))/Number.parseFloat(r);if(Math.abs(1-a)>bs){console.warn("SOR returned stale prices. Delta from return amount is more than 5%",{deltaFromSorAmount:a});let i=new x({reason:"SOR_STALE_PRICES",level:"warning",message:"SOR returned stale prices. Delta from return amount is more than 5%",extra:{deltaFromSorAmount:a,pools:o.map(n=>n.pools),onChainAmount:_o(t.scale18),sorAmount:r,queryData:s},fingerprint:["SOR_STALE_PRICES"]});fe.captureException(i)}}async getQuote(t){let o=new Pt(this.url,this.chainId),{tokenIn:r,tokenOut:s,amount:a,slippage:i,account:n=gs,publicClient:l}=t;this.assertChainSupport({tokenIn:r,tokenOut:s}),f(l);let u=h(r,"BERA")||h(s,"BERA"),m=new Wo(this.chainId,this.convertZeroToWrapped(r.address),r.decimals),p=new Wo(this.chainId,this.convertZeroToWrapped(s.address),s.decimals),c=cs.fromRawAmount(m,a),{paths:d,priceImpact:g,returnAmount:y}=await o.sorSwapPaths.fetchSorSwapPaths({chainId:this.chainId,tokenIn:m.address,tokenOut:p.address,swapKind:We,swapAmount:c});if(!d?.length)throw new F({response:void 0,endpoint:{url:this.url,name:this.name,type:this.type},reason:E.PATH_NOT_FOUND_REASON,chainId:this.chainId,payload:{tokenIn:m.address,tokenOut:p.address,swapKind:We,swapAmount:c},message:"No swap paths returned from Balancer API"});let A=new ms({chainId:this.chainId,paths:d,swapKind:We,userData:"0x"}),R=await A.query(l.transport.url);if(!("expectedAmountOut"in R))throw new Error("No Bex paths found");return this.checkStalePrices({onChainAmount:R.expectedAmountOut,sorPaths:d,sorAmount:y,queryData:t}),{amountOut:R.expectedAmountOut.amount.toString(),amountIn:a,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:r,rawAmount:a,spender:R.to}),name:this.name,priceImpactPercentage:this.calculatePriceImpact(g),swapFeeBps:0,getCalldata:({account:w})=>{let b=A.buildCall({slippage:ps.fromPercentage(i.toString()),deadline:BigInt(Math.round(Date.now()/1e3)+As),queryOutput:R,sender:w,recipient:w,wethIsEth:u}),{args:C,functionName:k}=fs({abi:Mo,data:b.callData});return{params:C,functionName:k,abi:Mo,address:b.to,value:b.value||BigInt(0)}}}}},Qe=new _e;import{ChainId as Yo}from"@berachain/config/internal";var Me=class extends E{name="RedeemBgt";supportedChains=[Yo.MAINNET,Yo.BEPOLIA];type="rpc";checkChainSupport({tokenIn:t,tokenOut:o}){return super.checkChainSupport({tokenIn:t,tokenOut:o})?t.chainId===o.chainId&&h(t,"BGT",{chainId:t.chainId})&&h(o,"BERA"):!1}async getQuote({tokenIn:t,amount:o}){if(this.assertChainSupport({tokenIn:t,tokenOut:{...D,chainId:t.chainId}}),!h(t,"BGT",{config:this.config}))throw new v({property:"tokenIn",value:t,expected:"BGT",level:"warning"});return{amountOut:o,amountIn:o,allowanceRequirements:[],name:"RedeemBgt",isNativeSwap:!0,swapFeeBps:0}}},Go=new Me;import{zeroAddress as Fo}from"viem";import{ChainId as Ko}from"@berachain/config/internal";import{metaAggregatorAbi as hs}from"@berachain/abis/meta-aggregator/metaAggregator";var Ye=class extends E{name="Enso";supportedChains=[Ko.MAINNET];type="rest";needsAccountForQuote=!0;notFoundMessages=["Could not build shortcuts for route","Could not quote shortcuts for route","Swap not found for a required underlying of defi route,","No route found from"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,account:a=Fo,aggregatorsFeeBps:i,proxyAggregatorsThroughVercel:n=!1,rewardVault:l}){this.assertChainSupport({tokenIn:t,tokenOut:o});let{tokenInAddress:u,tokenOutAddress:m,isTokenInNative:p,isTokenOutNative:c}=this.parseAddresses(t.address,o.address),d=this.getAmountAfterFees(r,i);this.url=n?"/api/aggregators?aggregator=enso":`${this.config.bex.aggregatorsProxyUrl}/enso/api/v1/shortcuts/route?`;let g=new URL(this.url);g.searchParams.set("fromAddress",this.config.bex.aggregatorsRouterExecutor),g.searchParams.set("receiver",this.config.bex.aggregatorsRouterExecutor),g.searchParams.set("spender",this.config.bex.aggregatorsRouterExecutor),g.searchParams.set("amountIn",d),g.searchParams.set("tokenIn",u),g.searchParams.set("tokenOut",m),g.searchParams.set("chainId",Ko.MAINNET.toString()),g.searchParams.set("slippage",(Number(s)*100).toString()),g.searchParams.set("refundReceiver",a);let A=await(await this.fetch(g)).json(),R=this.getInputData({tokenIn:u,amountIn:r,isNative:p}),w={tokenOut:m,receiver:a,minAmountOut:this.getMinAmountOut(A.amountOut.toString(),s),isNative:c},b={aggregator:A.tx?.to,data:A.tx?.data};return{amountOut:A.amountOut.toString(),amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:i,getCalldata:()=>({params:[R,w,b,{rewardVault:l??Fo,isSwapAndStake:!!l}],functionName:"swap",abi:hs,value:BigInt(p?r:"0"),address:this.config.bex.aggregatorsRouter})}}},Ge=new Ye;import{erc4626Abi as qo,formatUnits as Rs}from"viem";import{wberaStakerVaultAbi as ws}from"@berachain/abis/pol/wberaStakerVault";var Fe=class extends E{name="Mint";supportedChains=null;type="rpc";checkChainSupport({tokenIn:t,tokenOut:o,underlyingToken:r}){return super.checkChainSupport({tokenIn:t,tokenOut:o,underlyingToken:r})&&!!r&&r?.chainId===o.chainId&&(h(r,t)||h(t,"BERA")&&h(o,"SWBERA"))}async getQuote({tokenIn:t,tokenOut:o,amount:r,underlyingToken:s,publicClient:a}){this.assertChainSupport({tokenIn:t,tokenOut:o,underlyingToken:s}),q(s,"underlyingToken"),f(a);let i=await a.readContract({address:o.address,abi:qo,functionName:"convertToShares",args:[BigInt(r)]}),n=h(o,"SWBERA")&&h(t,"BERA");return{amountOut:i.toString(),amountIn:r,allowanceRequirements:n?[]:[{token:t,spender:o.address,amount:{raw:r,formatted:Rs(BigInt(r),t.decimals)}}],name:"Mint",isNativeSwap:!1,swapFeeBps:0,getCalldata:({account:l})=>n?{abi:ws,address:o.address,functionName:"depositNative",params:[BigInt(r),l],value:BigInt(r)}:{abi:qo,address:o.address,functionName:"deposit",contractName:"others.erc4626",params:[BigInt(r),l],value:0n}}}},Ke=new Fe;import{zeroAddress as ks}from"viem";import{ChainId as Ps}from"@berachain/config/internal";import{metaAggregatorAbi as Cs}from"@berachain/abis/meta-aggregator/metaAggregator";var $o="https://api.fly.trade/aggregator",qe=class extends E{name="Fly";supportedChains=[Ps.MAINNET];type="rest";notFoundMessages=["Couldn't recognize to token","Couldn't recognize from token","There is not enough liquidity. Amount is too high.","Routes were not found"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,account:a,aggregatorsFeeBps:i,rewardVault:n}){this.assertChainSupport({tokenIn:t,tokenOut:o});let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:m,isTokenOutNative:p}=this.parseAddresses(t.address,o.address),c=this.getAmountAfterFees(r,i),d=new URL(`${$o}/quote`);this.url=d.toString();let g=new URLSearchParams({fromTokenAddress:l,toTokenAddress:u,sellAmount:c,slippage:(s/100).toString(),gasless:"false",network:"berachain"});g.set("fromAddress",this.config.bex.aggregatorsRouterExecutor),g.set("toAddress",this.config.bex.aggregatorsRouterExecutor),d.search=g.toString();let A=await(await this.fetch(d)).json(),R={amountOut:A.amountOut,amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:i??0},w=new URL(`${$o}/transaction`);this.url=w.toString();let b=new URLSearchParams({quoteId:A.id,estimateGas:"false"});w.search=b.toString();let k=await(await this.fetch(w)).json();return{...R,getCalldata:({account:S})=>{let T=this.getInputData({tokenIn:l,amountIn:r,isNative:m}),I={tokenOut:u,receiver:S,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:p},N={aggregator:k?.to,data:k?.data};return{params:[T,I,N,{rewardVault:n??ks,isSwapAndStake:!!n}],functionName:"swap",abi:Cs,value:h(t,"BERA")?BigInt(r):BigInt("0"),address:this.config.bex.aggregatorsRouter}}}}},$e=new qe;import{formatUnits as Ss,parseUnits as Ts,zeroAddress as Es}from"viem";import{ChainId as Is}from"@berachain/config/internal";import{metaAggregatorAbi as xs}from"@berachain/abis/meta-aggregator/metaAggregator";var ze=class extends E{name="Haiku";supportedChains=[Is.MAINNET];type="rest";notFoundMessages=["token not found","Token is not supported","No route found for the given input or the liquidity is not enough","Invalid input amount. Please ensure the total amount of input is greater than 0.001 USD"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,referrer:n,rewardVault:l}){if(t.decimals===void 0||o.decimals===void 0)throw new x({message:"Missing required params",level:"error"});this.assertChainSupport({tokenIn:t,tokenOut:o});let{tokenInAddress:u,tokenOutAddress:m,isTokenInNative:p,isTokenOutNative:c}=this.parseAddresses(t.address,o.address),d=this.getAmountAfterFees(r,a),g={intent:{allowancesMode:"approve",slippage:s/100,receiver:this.config.bex.aggregatorsRouterExecutor,input_positions:{[`bera:${u}`]:Ss(BigInt(d),t.decimals)},target_weights:{[`bera:${m}`]:1}}},y=n==="ZAP"?"zap-haiku":"haiku";this.url=i?"/api/aggregators?aggregator=haikuQuote":`${this.config.bex.aggregatorsProxyUrl}/${y}/v1/quoteIntent`;let R=await(await this.fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g)})).json(),w={amountOut:Ts(R.balances[0].amount,o.decimals).toString(),amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:a};this.url=i?"/api/aggregators?aggregator=haikuSolve":`${this.config.bex.aggregatorsProxyUrl}/${y}/v1/solveIntent`;let C=await(await this.fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({quoteId:R.quoteId})})).json();return{...w,getCalldata:({account:k})=>{let S=this.getInputData({tokenIn:u,amountIn:r,isNative:p,isPermit2Approval:!0,permit2SpenderAddress:this.config.bex.haikuAgentAddress}),T={tokenOut:m,receiver:k,minAmountOut:this.getMinAmountOut(w.amountOut,s),isNative:c},I={aggregator:C.to,data:C.data};return{params:[S,T,I,{rewardVault:l??Es,isSwapAndStake:!!l}],functionName:"swap",abi:xs,value:BigInt(p?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},je=new ze;import{formatUnits as zo}from"viem";import{ChainId as Bs}from"@berachain/config/internal";import vs from"@berachain/utils/pkg/bignumber.js";function Os(e){return e?"previewMintHoney":"previewRedeemCollaterals"}var Je=class extends E{name="Honey";supportedChains=[Bs.MAINNET];type="rpc";honeyToken=ue(this);isHoneyNativeSwap({tokenIn:t,tokenOut:o,honeyNativeState:r,...s}){if(!r?.collateralList)return!1;let a=h(o,"HONEY",s),i=h(t,"HONEY",s);return!a&&!i?!1:r.collateralList.some(n=>h(n.address,a?t:o))}checkChainSupport({tokenIn:t,tokenOut:o,honeyNativeState:r}){return super.checkChainSupport({tokenIn:t,tokenOut:o})&&t.chainId===o.chainId&&this.isHoneyNativeSwap({tokenIn:t.address,tokenOut:o.address,honeyNativeState:r})}async getQuote({tokenIn:t,tokenOut:o,amount:r,publicClient:s,account:a,honeyNativeState:i}){let{collateralList:n}=i??{};if(!n)throw new v({message:"Invalid Honey Context state",property:"collaterals",value:n,expected:"TokenWithOrder[]"});f(s),this.assertChainSupport({tokenIn:t,tokenOut:o});let l=h(o,this.honeyToken),u=n,m=n.find(S=>h(S.address,l?t.address:o.address));if(!m)throw new x({message:"This collateral is not part of the Honey protocol"});let[p,c]=await Promise.all([me({client:s,collateralList:[m]}),de({client:s,isMint:l,collateralList:n,latestPrices:void 0,isPythWrapperEnabled:!1})]);if(!p)throw new x({message:"Failed to fetch the Honey vault balances"});if(c)return;let d=p[0],g=m.order;u.length>1&&g!==0&&(u.splice(g,1),u.unshift(m));let y=zo(BigInt(r),l?m.decimals:this.honeyToken.decimals),A={client:s,collateral:m,collateralList:n,amount:y,method:Os(l),latestPrices:void 0,isPythWrapperEnabled:!1},R=await _t(A);if(!R)throw new x({message:"Failed to fetch the Honey preview"});let{honey:w,collaterals:b}=R;if(!(l?!0:new vs(d?.balance.formatted??"0").gte(zo(b[m.address],m.decimals))))return;let k=await Gt({state:{actionType:l?"mint":"redeem",fromAmount:[y],collaterals:u,isBasketModeEnabled:!1},collateralList:u,publicClient:s,priceFeedMap:void 0,isPythWrapperEnabled:!1});if(!k&&a)throw new x({message:"Failed to fetch the Honey swap payload"});return{amountIn:r,amountOut:l?w.toString():b[m.address].toString(),allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:"Honey",swapFeeBps:0,getCalldata:({account:S})=>k({account:S})}}},Ze=new Je;import{zeroAddress as Ds}from"viem";import{ChainId as Ls}from"@berachain/config/internal";import{metaAggregatorAbi as Us}from"@berachain/abis/meta-aggregator/metaAggregator";var Xe=class extends E{name="KyberSwap";supportedChains=[Ls.MAINNET];type="rest";notFoundMessages=["token not found","route not found","amountIn is greater than max allowed"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,rewardVault:n}){this.assertChainSupport({tokenIn:t,tokenOut:o});let{isTokenInNative:l,isTokenOutNative:u,tokenInAddress:m,tokenOutAddress:p}=this.parseAddresses(t.address,o.address),c=this.getAmountAfterFees(r,a);this.url=i?"/api/aggregators?aggregator=kyberswapRoutes":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/routes`;let d=new URL(this.url);d.searchParams.set("tokenIn",m),d.searchParams.set("tokenOut",p),d.searchParams.set("amountIn",c),d.searchParams.set("slippageTolerance",(s/100).toString()),d.searchParams.set("to",this.config.bex.aggregatorsRouterExecutor),d.searchParams.set("clientData",JSON.stringify({source:"berachain"}));let y=await(await this.fetch(d)).json(),A={amountOut:y.data.routeSummary.amountOut,amountIn:r,name:this.name,swapFeeBps:a,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter})},R={routeSummary:y.data.routeSummary,sender:this.config.bex.aggregatorsRouterExecutor,recipient:this.config.bex.aggregatorsRouterExecutor,slippageTolerance:s*100,deadline:Math.floor(Date.now()/1e3)+300,source:"berachain"},w=d.searchParams.entries(),b=new URL(i?"/api/aggregators?aggregator=kyberswapBuild":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/route/build`);for(let[T,I]of w)b.searchParams.set(T,I);let k=await(await this.fetch(b,{method:"POST",body:JSON.stringify(R)})).json(),S=this.getInputData({tokenIn:m,amountIn:r,isNative:l});return{...A,getCalldata:({account:T})=>{let I={tokenOut:p,receiver:T,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:u},N={aggregator:k.data.routerAddress,data:k.data.data};return{params:[S,I,N,{rewardVault:n??Ds,isSwapAndStake:!!n}],functionName:"swap",abi:Us,value:BigInt(l?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},et=new Xe;import{zeroAddress as Hs}from"viem";import{ChainId as Vs}from"@berachain/config/internal";import{metaAggregatorAbi as Ns}from"@berachain/abis/meta-aggregator/metaAggregator";var tt=class extends E{name="Oogabooga";supportedChains=[Vs.MAINNET];type="rest";async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,rewardVault:n}){this.assertChainSupport({tokenIn:t,tokenOut:o});let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:m,isTokenOutNative:p}=this.parseAddresses(t.address,o.address),c=this.getAmountAfterFees(r,a),d=new URLSearchParams({tokenIn:l,tokenOut:u,amount:c,slippage:(s/100).toString(),to:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter});this.url=i?`/api/aggregators?aggregator=oogabooga&${d.toString()}`:`${this.config.bex.aggregatorsProxyUrl}/oogabooga/v1/swap?${d.toString()}`;let y=await(await this.fetch(this.url)).json(),A={amountOut:y.assumedAmountOut,amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,spender:this.config.bex.aggregatorsRouter,rawAmount:r}),name:this.name,priceImpactPercentage:y.priceImpact,swapFeeBps:a};return{...A,getCalldata:({account:R})=>{let w=this.getInputData({tokenIn:l,amountIn:r,isNative:m}),b={tokenOut:u,receiver:R,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:p},C={aggregator:y.tx?.to,data:y.tx?.data};return{params:[w,b,C,{rewardVault:n??Hs,isSwapAndStake:!!n}],functionName:"swap",abi:Ns,value:BigInt(m?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},ot=new tt;import{zeroAddress as jo}from"viem";import{ChainId as Jo}from"@berachain/config/internal";import{metaAggregatorAbi as Ws}from"@berachain/abis/meta-aggregator/metaAggregator";var rt=class extends E{name="OpenOcean";supportedChains=[Jo.MAINNET];type="rest";url="https://open-api.openocean.finance/v4/bera/swap";notFoundMessages=["No avail liquidity for the pair"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,account:a=jo,aggregatorsFeeBps:i,publicClient:n,rewardVault:l}){if(f(n),!t.decimals)throw new v({property:"tokenIn.decimals",value:t.decimals,expected:"number",chainId:this.chainId});this.assertChainSupport({tokenIn:t,tokenOut:o});let u=this.getAmountAfterFees(r,i),{tokenInAddress:m,tokenOutAddress:p,isTokenInNative:c,isTokenOutNative:d}=this.parseAddresses(t.address,o.address),g=(await n.getGasPrice()).toString(),y=new URLSearchParams({chain:Jo.MAINNET.toString(),inTokenAddress:m,outTokenAddress:p,amountDecimals:u,slippage:s<.01?"0.01":s.toString(),account:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter,gasPrice:g}),A=await this.fetch(`${this.url}?${y.toString()}`),R=await A.json();if(R.code!==200||!R.data){let b=this.notFoundMessages.some(C=>R.error.includes(C));throw new F({response:A,endpoint:{url:this.url,name:this.name,type:this.type},cause:R,reason:b?E.PATH_NOT_FOUND_REASON:R.error})}let w={amountOut:R.data.outAmount,amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:i};return{...w,getCalldata:({account:b})=>{let C=this.getInputData({tokenIn:m,amountIn:r,isNative:c}),k={tokenOut:p,receiver:b,minAmountOut:this.getMinAmountOut(w.amountOut,s),isNative:d},S={aggregator:R.data.to,data:R.data.data};return{params:[C,k,S,{rewardVault:l??jo,isSwapAndStake:!!l}],functionName:"swap",abi:Ws,value:BigInt(c?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},st=new rt;import{ChainId as Zo}from"@berachain/config/internal";import{wberaAbi as Xo}from"@berachain/abis/wbera";var at=class extends E{name="Wrap";supportedChains=[Zo.MAINNET,Zo.BEPOLIA];type="rpc";checkChainSupport({tokenIn:t,tokenOut:o}){return t.chainId!==o.chainId||!super.checkChainSupport({tokenIn:t,tokenOut:o})?!1:h(t,"BERA")&&h(o,"WBERA")||h(t,"WBERA")&&h(o,"BERA")}async getQuote({tokenIn:t,tokenOut:o,amount:r}){this.assertChainSupport({tokenIn:t,tokenOut:o});let s=h(t,"BERA")&&h(o,"WBERA");return{amountOut:r,amountIn:r,allowanceRequirements:[],name:s?"Wrap":"Unwrap",isNativeSwap:!0,swapFeeBps:0,getCalldata:()=>s?{abi:Xo,address:this.config.tokens.wbera,functionName:"deposit",params:[],value:BigInt(r)}:{abi:Xo,address:this.config.tokens.wbera,functionName:"withdraw",params:[BigInt(r)],value:BigInt(0)}}}},nt=new at;import _s from"swr/immutable";import{zeroAddress as Qs}from"viem";import{metaAggregatorAbi as Ms}from"@berachain/abis/meta-aggregator/metaAggregator";import{usePublicClient as Ys}from"@berachain/wagmi/hooks";var he=()=>{let e=Ys(),{config:t}=P({chainId:e.chain?.id}),o=_s(e&&t.bex.aggregatorsRouter&&t.bex.aggregatorsRouter!==Qs?["useAggregatorsRouterFeeBps",t.bex.aggregatorsRouter]:null,async([,r])=>{let s=await e.readContract({address:r,abi:Ms,functionName:"SWAP_FEE_RATE"});return Number(s)});return{...o,refresh:o.mutate}};import Ks from"swr/immutable";import{useConfig as qs}from"@berachain/wagmi/hooks";import{getPublicClient as Gs}from"@wagmi/core";import{erc4626Abi as Fs}from"viem";async function er({token:e,wagmiConfig:t}){try{if(h(e,"BERA"))return null;let o=Gs(t,{chainId:e.chainId});f(o);let r=await o.readContract({address:e.address,abi:Fs,functionName:"asset"});return await M({address:r,publicClient:o,chainId:e.chainId})}catch(o){let r=kt({cause:o});if(r.reason==='The contract function "asset" reverted.')return null;throw r}}function tr({token:e}){let t=qs();return Ks(e&&t&&!h(e,"BERA")?["useUnderlyingAsset",e]:null,async([,o])=>er({token:o,wagmiConfig:t}))}import $s from"swr";import{parseUnits as zs,zeroAddress as js}from"viem";import{useBeraWallet as Js,usePublicClient as Zs}from"@berachain/wagmi/hooks";var or="useAggregatorsQuotes";function Xs({aggregator:e,account:t,args:o,feeBps:r,options:s,activeAggregators:a,isMAEnabled:i}){if(s?.opts?.isEnabled!==void 0&&!s?.opts?.isEnabled||!Number(o.amount)||!e.checkChainSupport({tokenIn:o.tokenIn,tokenOut:o.tokenOut,underlyingToken:o.underlyingToken,honeyNativeState:o.honeyNativeState}))return null;let n=e.name,l=!["Hub Pools","Honey","Wrap","Unwrap","Mint"].includes(n);if(!i&&l)return null;let{tokenIn:u,tokenOut:m,amount:p,slippage:c,referrer:d,rewardVault:g}=o,y=zs(p,u.decimals).toString();if(!(e.name==="Wrap"||e.name==="RedeemBgt"||e.name==="Honey"||!a||a.includes(n.toLowerCase().replaceAll(" ","")))||e.name==="Honey"&&o.honeyNativeState?.protocol.isPaused)return null;let R=e.name==="Mint"||e.name==="Enso (Mint)";return l&&r===void 0?null:[or,n,u,m,y,c,e.needsAccountForQuote?t:void 0,l?r:0,d,g,R?o.underlyingToken:void 0,e.name==="Honey"?o.honeyNativeState?.collateralList:void 0]}function ea({aggregator:e,publicClient:t,proxyAggregatorsThroughVercel:o}){return async([,,r,s,a,i,n,l,u,m,p,c])=>e.getQuote({tokenIn:r,tokenOut:s,amount:a,slippage:i,account:n,aggregatorsFeeBps:l,publicClient:t,proxyAggregatorsThroughVercel:o,referrer:u,rewardVault:m,underlyingToken:p,honeyNativeState:{collateralList:c??[]}})}function H({feeBps:e,publicClient:t,account:o,proxyAggregatorsThroughVercel:r,activeAggregators:s,isMAEnabled:a,...i},n){return $s(Xs({aggregator:i.aggregator,account:o,args:i,feeBps:e,options:n,activeAggregators:s,isMAEnabled:a}),ea({aggregator:i.aggregator,proxyAggregatorsThroughVercel:r,publicClient:t}),n?.opts)}function it(e){return{refreshInterval:1e4,errorRetryCount:3,...e?.opts,onErrorRetry(t,o,r,s,a){if(e?.opts?.onErrorRetry?.(t,o,r,s,a),!(t instanceof x&&t.reason===E.PATH_NOT_FOUND_REASON)){if(t instanceof F&&t.statusCode===403){console.warn(o[1],"returned error 403, stopping retries");return}a.retryCount>(r.errorRetryCount??3)||setTimeout(()=>{s()},r.errorRetryInterval??ce(10))}}}}function ta(e,t){let{address:o}=Js(),r=U("proxyAggregatorsThroughVercel"),s=U("aggregators"),a=Zs(),{data:i}=he();if(e.aggregator.name!=="Wrap"&&!((h(e.tokenIn.address,"BERA")||h(e.tokenIn.address,"WBERA"))&&(h(e.tokenOut.address,"BERA")||h(e.tokenOut.address,"WBERA"))))return null;let{config:n}=P(e),l=n.bex.aggregatorsRouter!==js;return H({...e,aggregator:e.aggregator,feeBps:i,activeAggregators:s,account:o,isMAEnabled:l,publicClient:a,proxyAggregatorsThroughVercel:r},{...t,opts:it(t)})}var ia=[ot,$e,et,st,je,Ge,Qe,Ze,Ke];function bf(e,t){let{address:o}=aa(),r=U("proxyAggregatorsThroughVercel"),s=U("aggregators"),a=na(),{data:i}=he(),n=(h(e.tokenIn.address,"BERA")||h(e.tokenIn.address,"WBERA"))&&(h(e.tokenOut.address,"BERA")||h(e.tokenOut.address,"WBERA")),l=h(e.tokenIn.address,"BGT",{chainId:sa}),{data:u}=tr({token:e.tokenOut}),m=n||l,{config:p}=P(e),c=p.bex.aggregatorsRouter!==ra,d=it(t),g={activeAggregators:s,isMAEnabled:c,underlyingToken:u,isNativeSwap:m,account:o,publicClient:a,proxyAggregatorsThroughVercel:r,feeBps:i},y=H({...g,...e,aggregator:ot},{opts:d}),A=H({...g,...e,aggregator:$e},{opts:d}),R=H({...g,...e,aggregator:Ke},{opts:d}),w=H({...g,...e,aggregator:et},{opts:d}),b=H({...g,...e,aggregator:st},{opts:d}),C=H({...g,...e,aggregator:je},{opts:d}),k=H({...g,...e,aggregator:Ge},{opts:d}),{protocol:S}=Ne(),T=H({...g,...e,aggregator:Qe},{opts:{...d,isEnabled:S.isPaused===!1}}),I=H({...g,...e,aggregator:nt}),N=H({...g,...e,aggregator:Go},{opts:d}),Q=H({...g,...e,aggregator:Ze},{opts:d}),O=n?[I]:l?[N]:[y,R,A,w,b,C,k,Q,S.isPaused===!1?T:null].filter(G=>G!==null);return{...oa(()=>{let G=O.reduce((V,re)=>V||re.error,void 0),Le=O.map((V,re)=>V.isLoading?m?nt.name:ia[re].name:null).filter(Boolean),oe=O.filter(V=>V!==void 0&&!V.isLoading&&!V.error&&V.data?.amountOut).map(({data:V})=>V),ne=oe.length===0&&Le.length>0;return{quotes:oe,loadingAggregatorsNames:Le,isLoading:ne,error:G}},[O]),refresh:()=>O.map(G=>G.mutate())}}import la from"swr";var ua=({query:e}={})=>["useAllUserPools",e],rr=(e,t)=>{let o=la(ua({query:e}),async([r,s])=>pe({...s,fetchPolicy:"no-cache"}),{refreshInterval:18e4,...t?.opts});return{...o,refresh:()=>{o.mutate()}}};import pa from"swr";import{isAddress as ma}from"viem";var da=({poolId:e,account:t})=>e?["usePool-api",e,t]:null;function sr({poolId:e,account:t}){let o=pa(da({poolId:e,account:t}),async([,r,s])=>{if(s&&!ma(s))throw new v({property:"account",value:s,expected:"Address"});return Ct({poolId:r,account:s})},{refreshInterval:1e5});return{...o,refresh:()=>{o.mutate()}}}import{useMemo as lr}from"react";import{PoolType as Re}from"@berachain-foundation/berancer-sdk";import fa from"swr/immutable";import{formatUnits as ga,keccak256 as ya,parseUnits as we,zeroAddress as ut}from"viem";import{poolCreationHelperAbi as ur}from"@berachain/abis/bex/poolCreationHelper";import{GetDedupedSubgraphPools as Aa}from"@berachain/graphql/dex/subgraph";import{PoolType as ar}from"@berachain-foundation/berancer-sdk";import{formatUnits as ca}from"viem";var lt=e=>[...e].sort((t,o)=>t.address.toLowerCase().localeCompare(o.address.toLowerCase())),nr=e=>e.length===0?"":lt(e).map(t=>t.symbol).join(" | "),ir=(e,t,o)=>{let r;switch(o){case ar.ComposableStable:r="STABLE";break;default:r=o.toString().toUpperCase();break}return o===ar.Weighted?t.length===0?"":`${lt(e).map((s,a)=>{let i=t[a];return`${(Number.parseFloat(ca(i,18))*100).toFixed(0)}${s.symbol}`}).join("-")}-${r}`:`${lt(e).map(s=>s.symbol).join("-")}-${r}`};var ba=.005,ha=(o=>(o.None="None",o.Custom="Custom",o))(ha||{}),Ra=({poolCreationHelper:e,poolCreateTokens:t,initialLiquidityTokens:o,swapFeePercentage:r,salt:s,poolName:a,poolSymbol:i,owner:n,amplification:l,oracles:u,message:m,actionType:p,gasLimit:c=He})=>{let d=t.map(k=>k.address.toLowerCase()).sort((k,S)=>k<S?-1:1),g=d.map(k=>{let S=o.find(O=>O.address.toLowerCase()===k||h(k,"WBERA")&&h(O.address,"BERA")),T=S?we(S.amount,S.decimals):0n,I=u.find(O=>O.tokenAddress.toLowerCase()===k.toLowerCase()),N=I?I.address:ut,Q=BigInt(I?I.cacheDuration:100);return{amountIn:T,rateProvider:N,cacheDuration:Q}}),y=g.map(k=>k.amountIn),A=g.map(k=>k.rateProvider),R=g.map(k=>k.cacheDuration),w=o.findIndex(k=>h(k.address,"BERA")),b=w!==-1?we(o[w].amount,o[w].decimals):0n,C=b>0n;return{address:e,abi:ur,functionName:"createAndJoinStablePool",params:[a,i,d,BigInt(l),A,R,!1,r,y,n,s,C],message:m,actionType:p,value:b,gasLimit:c,track:{eventName:"hub_pool_create",eventData:{poolName:a,poolSymbol:i}}}},wa=({poolCreationHelper:e,poolCreateTokens:t,initialLiquidityTokens:o,normalizedWeights:r,swapFeePercentage:s,salt:a,poolName:i,poolSymbol:n,owner:l,message:u,actionType:m,gasLimit:p=He})=>{let c=[],d=[],g=[],y=[];t.map((w,b)=>({createToken:w.address,joinToken:o[b].address,weight:r[b],amountIn:we(o[b].amount,o[b].decimals)})).sort((w,b)=>w.createToken.toLowerCase()<b.createToken.toLowerCase()?-1:1).forEach(w=>{c.push(w.createToken),d.push(w.joinToken),g.push(w.weight),y.push(w.amountIn)});let A=d.indexOf(ut),R=A!==-1?y[A]:0n;return{address:e,abi:ur,functionName:"createAndJoinWeightedPool",params:[i,n,c,d,g,Array(c.length).fill(ut),s,y,l,a],message:u,actionType:m,value:R,gasLimit:p,track:{eventName:"hub_pool_create",eventData:{poolName:i,poolSymbol:n}}}},Yf=({poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:o,poolType:r,poolName:s,poolSymbol:a,swapFee:i,owner:n,amplification:l,oracles:u,weightsDuplicationThreshold:m=ba,...p})=>{let{data:c,error:d,isLoading:g}=fa(["useCreatePool__deduped_pool",e,r,o],async()=>{if(e.length===0||!r)return null;let w=K("bex.subgraph",{});try{let b=be(e).map(S=>S.address.toLowerCase()).sort((S,T)=>S.toLowerCase()<T.toLowerCase()?-1:1);return(await w.query({query:Aa,variables:{tokens:b,type:r}})).data.pools.filter(S=>S.tokens?.every(T=>r===Re.Weighted?b.includes(T.address)&&Math.abs(Number(T.weight)-Number(ga(o[b.indexOf(T.address)],18)))<m:b.includes(T.address)||T.address===S.address))?.at(0)??null}catch{return null}}),{generatedPoolName:y,generatedPoolSymbol:A}=lr(()=>{if(!e)return{generatedPoolName:"",generatedPoolSymbol:""};let w=nr(e),b=ir(e,o,r);return{generatedPoolName:w,generatedPoolSymbol:b}},[e,o,r]),R=lr(()=>{if(!n||s===""||a===""||e.length!==t.length||e.length===0)return null;let w=we(i.toString(),16),b=ya(Buffer.from(`${s}-${n}`)),{config:C}=P(p);return r===Re.Weighted?wa({poolCreationHelper:C.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:o,swapFeePercentage:w,salt:b,poolName:s,poolSymbol:a,owner:n,message:`Create pool ${s}`,actionType:"Create Pool"}):r===Re.ComposableStable||r===Re.MetaStable?Ra({poolCreationHelper:C.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:t,swapFeePercentage:w,salt:b,poolName:s,poolSymbol:a,owner:n,amplification:l,oracles:u,message:`Create pool ${s}`,actionType:"Create Pool"}):null},[e,t,o,r,i,s,a,n,l,u]);return{generatedPoolName:y,generatedPoolSymbol:A,isDupePool:!!c,dupePool:c,createPoolArgs:R,isLoadingPools:g,errorLoadingPools:d}};import Ea from"swr";import{usePublicClient as Ia}from"@berachain/wagmi/hooks";import{erc20Abi as ka,formatUnits as Pa}from"viem";import{GetExploitedTokens as Ca}from"@berachain/graphql/dex/subgraph";import Sa from"@berachain/utils/pkg/bignumber.js";var Ta=1e-4;async function pr({token:e,publicClient:t,...o}){let r=K("bex.subgraph",o),s=await t.readContract({address:e.address,abi:ka,functionName:"totalSupply"}),a=Sa(Pa(s,e.decimals)).multipliedBy(Ta),{data:i}=await r.query({query:Ca,variables:{token:e.address,balance:a.toFixed()}});return i.userInternalBalances.length>0}var xa=e=>{let t=e?.filter(o=>o.address);return!t||t.length===0?null:["useExploitedTokens",t]},eg=({tokens:e})=>{let t=xa(e),o=Ia(),r=Ea(o?t:null,async([,s])=>(f(o),(await Promise.all(s.map(i=>pr({token:i,publicClient:o})))).reduce((i,n,l)=>(n!==void 0&&(i[s[l].address]=n),i),{})));return{...r,refresh:()=>r.mutate()}};import Ba from"swr";var va=()=>{let e=Ba("useGlobalLiquidityAndSwapVolume",async()=>St());return{...e,data:{totalLiquidity:Number(e.data?.protocolMetricsAggregated.totalLiquidity),swapVolume24h:Number(e.data?.protocolMetricsAggregated.swapVolume24h)},refresh:()=>e.mutate()}};import{useEffect as Oa,useState as Da}from"react";import{PoolType as ae}from"@berachain-foundation/berancer-sdk";var La=.05,lg=({currentStep:e,tokenPrices:t,isLoadingTokenPrices:o,tokens:r,weights:s,weightsError:a,poolType:i,liquidityMismatchTolerancePercent:n=La,oracles:l})=>{let[u,m]=Da({title:null,message:null});return Oa(()=>{if(!t||o||!r||!s||a||r.some(b=>!b.address)||l.some(b=>b.mode==="Custom")){m({title:null,message:null});return}let p=0,c=[],d=r.length,y=be(r).map(b=>{let C=t[b.address.toLowerCase()]?.price??0;if(!C||C===0)return c.push(0),null;let k=C*Number.parseFloat(b.amount);return c.push(k),p+=k,C});if(y.some(b=>b===null)||y.length!==d){m({title:"Missing token price data",message:`One or more token(s) do not have valid market price data. Please verify that token market prices align with the pool
2
- weightings and your initial liquidity amounts.`});return}if(e==="Select Tokens"&&i===ae.ComposableStable){let b=y.map(k=>k/y[0]);Math.max(...b)-Math.min(...b)>n?m({title:"Selected tokens have a significant price deviation",message:"Did you mean to create a Weighted pool instead?",suggestWeighted:!0}):m({title:null,message:null});return}if(p===0||c.some(b=>b===0)){m({title:null,message:null});return}let A=0;if(i===ae.ComposableStable){let b=p/d;c.forEach(C=>{A+=Math.abs(b-C)})}else i===ae.Weighted&&c.forEach((b,C)=>{let k=Number(s[C])/1e18,S=p*k;A+=Math.abs(S-b)});let R=A>=p*.9;A=Math.min(A,p);let w=A/p;w>n?m({title:R?"You could lose all of your initial liquidity":`You could lose $${A.toFixed(2)} (~${(w*100).toFixed(2)}%)`,message:`Based on the market token prices, the value of tokens does not align with the specified pool weights.
3
- This discrepancy could expose you to potential losses from arbitrageurs. ${i===ae.ComposableStable?"Did you mean to create a Weighted pool instead?":""}`,suggestWeighted:i===ae.ComposableStable}):m({title:null,message:null})},[e,t,o,r,s,a,i,n,l]),u};import{formatEther as gr,isAddressEqual as sn}from"viem";import yr from"@berachain/utils/pkg/bignumber.js";import _a from"swr";import{isAddress as mr,zeroAddress as Qa}from"viem";import{rewardVaultAbi as Ma}from"@berachain/abis/pol/rewards/rewardVault";import{useBeraWallet as Ya,usePublicClient as Ga}from"@berachain/wagmi/hooks";import Ua from"swr/immutable";import{isAddress as Ha,zeroAddress as Va}from"viem";import{rewardVaultFactoryAbi as Na}from"@berachain/abis/pol/rewards/rewardVaultFactory";import{usePublicClient as Wa}from"@berachain/wagmi/hooks";var pt=({tokenAddress:e},{isEnabled:t=!0}={})=>{let o=Wa(),r=o&&e&&Ha(e)&&t?["useRewardVaultFromToken",e]:null,s=Ua(r,async([,a])=>{if(!a)throw new Error("useRewardVaultFromToken needs a valid token address");f(o);let{config:i}=P({chainId:o.chain.id}),n=await o.readContract({address:i.pol.factory,abi:Na,functionName:"getVault",args:[a]});return n===Va?void 0:n});return{...s,refresh:()=>s.mutate()}};var dr=({stakingToken:e,rewardVaultAddress:t},o)=>{let{address:r}=Ya(),s=Ga(),a=o?.opts?.isEnabled??!0,{data:i=t,error:n,mutate:l,isLoading:u}=pt({tokenAddress:e},{isEnabled:!t&&a}),m=_a(i&&r&&s&&mr(i)&&mr(r)&&a?["useVaultBalanceFromStakingToken",i,r]:null,async([,p,c])=>{if(f(s),p===Qa)return{address:p,balance:0n};let d=await s.readContract({address:p,abi:Ma,functionName:"balanceOf",args:[c]});return{address:p,balance:d}});return{...m,refresh:()=>{l(),m.mutate()},isLoading:m.isLoading||u}};import ja from"swr";import{erc20Abi as Ja,formatEther as Za,formatUnits as Xa,isAddress as fr,zeroAddress as en}from"viem";import{defaultChainId as tn}from"@berachain/config/internal";import{useBeraWallet as on,usePublicClient as rn}from"@berachain/wagmi/hooks";import Fa from"swr/immutable";import{isAddress as Ka,zeroAddress as qa}from"viem";import{defaultChainId as $a}from"@berachain/config/internal";import{usePublicClient as za}from"@berachain/wagmi/hooks";function cr(e,t){let o=za({chainId:e.chainId}),r=e?.address&&o&&Ka(e.address)?["useTokenInformation",e.address,e.chainId]:null,s=Fa(r,async([a,i,n=$a])=>h(i,"BERA")?{address:qa,decimals:D.decimals,name:D.name,symbol:D.symbol,chainId:n}:(f(o),await M({address:i,publicClient:o,chainId:n})),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}}function ke({address:e,owner:t,chainId:o=tn},r){let s=e;h(s,"ETH")&&(s=en);let a=rn({chainId:o}),{address:i}=on(),n=t??i,l=(r?.opts?.isEnabled??!0)&&a&&n&&fr(n)&&s&&fr(s)?["usePollBalance",n,s,o]:null,{data:u,isLoading:m}=cr({address:s,chainId:o}),p=h(s,"BERA"),{isLoading:c,data:d,error:g,...y}=ja(l,async([,w,b])=>(f(a),h(b,"BERA")?await a.getBalance({address:w}):await a.readContract({address:b,abi:Ja,functionName:"balanceOf",args:[w]})),{refreshInterval:1e4}),A=!g&&d?h(s,"BERA")?Za(d):u&&!m?Xa(d,u.decimals):void 0:void 0,R={chainId:o,balance:d?{raw:d.toString(),formatted:A??"0"}:{raw:"0",formatted:"0"},address:s,decimals:p?D.decimals:u?.decimals??0,symbol:p?D.symbol:u?.symbol??"",name:p?D.name:u?.name??""};return{...y,refresh:()=>{y.mutate()},isLoading:c||p?m:!1,error:g||!p?g:void 0,data:R}}var Gg=({pool:e,vaultAddress:t},o)=>{let{data:r,...s}=ke({address:e?.address}),{data:a,refresh:i}=dr({stakingToken:e?.address,rewardVaultAddress:t??e?.rewardVault?.vaultAddress},o),n=e?Number.parseFloat(e?.dynamicData?.totalShares??"0"):0,l=e?.dynamicData?.totalLiquidity?Number(e?.dynamicData?.totalLiquidity??0):null,u=n&&l?l/Number(n):0,m=e?.tokens?.map(p=>({address:p.address,ratio:n?Number(p.balance)/Number(n):0}));return{data:{lpTokenPrice:u,lpBalance:r?{...r,usdValue:r?Number(r.balance.formatted)*u:void 0}:void 0,tokenBalances:e?.tokens?.map(p=>{let c=m?.find(y=>sn(y.address,p.address))?.ratio??0,d=c?yr(r?.balance.formatted??"0").times(c):yr(0),g=Number(p.balanceUSD)/Number(p.balance);return{...p,balance:{raw:d?.isGreaterThan(0)?d.times(10**p.decimals).toFixed(0).toString():"0",formatted:d.toString()},price:g,usdValue:Number.isNaN(g)||!d?void 0:Number.parseFloat(d.toString())*g}}),stakedBalance:a?.address?{...a,balance:{raw:a.balance.toString(),formatted:gr(a.balance)},usdValue:Number(gr(a.balance))*u}:void 0},...s,refresh:()=>{s.refresh?.(),i()}}};import{useMemo as br}from"react";import{parseUnits as un,zeroAddress as pn}from"viem";import hr from"@berachain/utils/pkg/bignumber.js";import an from"swr";import{useBeraWallet as nn,useConfig as ln}from"@berachain/wagmi/hooks";function Ar(e,t){let o=ln(),{address:r}=nn(),s=o&&r&&e?.items?["usePollAllowances",r,e?.items]:null,a=an(s,async([,i,n])=>fo({items:n,account:i,config:o}),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a?.mutate?.()}}function mn({amount:e,decimals:t,slippage:o}){let r=un((o??0).toString(),t);return e+e*r/BigInt(100*10**t)}function dn(e,t){let{slippage:o}=t??{},r=br(()=>e.filter(l=>l.token.address!==pn).filter(l=>hr(l.amount.formatted).gt(0)),[e]),{data:s,refresh:a,isLoading:i}=Ar({items:r});return{needsApproval:br(()=>s?.map(l=>{let u=r.find(p=>h(p.token.address,l.token));if(!u)throw new x({message:"Token not found when matching allowance in useMultipleTokenApprovalsWithSlippage",cause:{allowance:l,items:r}});let m=mn({decimals:u.token.decimals,amount:BigInt(u.amount.raw),slippage:o});if(hr(l.allowance.raw).lt(m))return{...u,needsApproval:!0,maxAmountIn:m,allowance:{raw:l.allowance.raw,formatted:l.allowance.formatted}}}).filter(l=>l!==void 0)??[],[s,o,r]),refresh:a,isLoading:i}}import{useMemo as wn}from"react";import kn from"swr/immutable";import{formatUnits as Pn,isAddress as Cn}from"viem";import{usePublicClient as Sn}from"@berachain/wagmi/hooks";import cn from"swr/immutable";import{isAddress as fn}from"viem";import{defaultChainId as gn}from"@berachain/config/internal";import{usePublicClient as yn}from"@berachain/wagmi/hooks";function Rr(e,t){let o=yn(),r=o&&e.addresses?["useMultipleTokenInformation",e.addresses,e.chainId??gn]:null,s=cn(r,async([,a,i])=>(f(o),Promise.all(a.map(async n=>{if(!n||!fn(n,{strict:!1}))throw new Error("Invalid address");let l=await M({address:n,publicClient:o,chainId:i});if(!l)throw new Error(`Token ${n} not found`);return l}))),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}}import{useMemo as Pe}from"react";import bn from"swr";import{isAddress as hn,zeroAddress as Rn}from"viem";import{defaultChainId as j}from"@berachain/config/internal";import{useContext as An}from"react";function z(){let e=An(Ho);if(!e)throw new x({message:"useTokens must be used within a TokensProvider",level:"fatal"});return{...e,data:{tokenList:e.tokenList,customTokenList:e.userTokens,featuredTokenList:e.featuredTokens}}}function J({addressIn:e}={},t={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{tokenList:o,ensoTokens:r}=z(),s=Pe(()=>{let p=[];return e&&p.push(...e.filter(c=>hn(c))),p.map(c=>c.toLowerCase())},[o]),i=Pe(()=>{let p=new Set(o?.map(c=>c.address.toLowerCase()));return o.some(c=>h(c,"WBERA"))&&p.add(Rn),s?.some(c=>!p.has(c))},[s,o])?s:o.map(p=>p.address),n=i&&(t.opts?.isEnabled??!0)?["useTokenCurrentPrices",i.map(p=>p.toLowerCase())]:null,l=bn(n,async([,p])=>co({addressIn:p}),t.opts),u=Pe(()=>{if(!r)return{};let p=new Map([[j,new Map]]);for(let c of r)c.price===void 0||c.chainId!==j||p.get(j)?.set(c.address.toLowerCase(),{...c,price:c.price,chainId:j});return Object.fromEntries(i.map(c=>{let d=p.get(j)?.get(c)?.price;return d?[c.toLowerCase(),{price:d,chainId:j,updatedAt:Date.now()}]:[null,null]}))},[r]),m=Pe(()=>({...u,...l.data}),[u,l.data]);return{...l,data:m}}function Tn(e){let t="poolId"in e?e.poolId?.slice(0,42):e.address;return Cn(t)&&t?["useOnChainPoolData",t]:null}function wr(e){let t=Sn(),o=e?.slice(0,42),r=Tn({poolId:e}),{data:s,error:a,isLoading:i,mutate:n}=kn(t?r:null,async([,d])=>Tt({poolId:d,publicClient:t})),{data:l,isLoading:u}=Rr({addresses:s?.poolTokens[0]}),{data:m,isLoading:p}=J({addressIn:s?.poolTokens[0]});return{data:wn(()=>{if(!s||!l)return;let d={address:o.toLowerCase(),id:e.toLowerCase(),type:s.type,factory:s.factory,totalShares:s.totalSupply,totalLiquidity:"0",swapFee:s.swapFee,createTime:0,name:s.name,tokens:l.map((y,A)=>({address:y.address.toLowerCase(),name:y.name,decimals:y.decimals,symbol:y.symbol,index:A,weight:s.weights?.[A]??void 0,balance:Pn(BigInt(s.poolTokens[1][A]),y.decimals),token:{__typename:"Token",token:y,latestUSDPrice:m?.[y.address]}})),amplificationParameter:s?.amplificationParameter&&{currentFormattedValue:Number(s.amplificationParameter[0])/Number(s.amplificationParameter[2])}},g=d.tokens?.reduce((y,A)=>{let R=Number(m?.[A.address.toLowerCase()]?.price??0);return R?y+R*Number(A.balance):y},0);return d.totalLiquidity=g?.toString()??"",d},[s,l,m,o,e]),error:a,isLoading:i||u||p,mutate:n,refresh:()=>n()}}import En from"swr";import{vaultAbi as In}from"@berachain/abis/bex/vault";import{useBeraWallet as xn,usePublicClient as Bn}from"@berachain/wagmi/hooks";var vn=e=>{let{address:t}=xn(),o=Bn(),r=t&&o?["usePollPoolCreationRelayerApproval",t,o.chain.id]:null,s=En(r,async([,i])=>{f(o);let{config:n}=P({chainId:o.chain.id});return await o.readContract({address:n.bex.vault,abi:In,functionName:"hasApprovedRelayer",args:[i,n.bex.poolCreationHelper]})},{...e?.opts});return{...s,refreshPoolCreationApproval:()=>{s.mutate()}}};import{useMemo as On}from"react";import Dn from"swr";function Ln({poolId:e}){return e?["usePool-subgraph",e]:null}var Qy=({poolId:e})=>{let t=Dn(Ln({poolId:e}),async([,n])=>xt({poolId:n}),{refreshInterval:1e5}),o=sr({poolId:e}),{data:r,isLoading:s,refresh:a}=wr(e);return{data:[On(()=>{if(!t.data)return r;let n={...t.data};return r&&(n.swapFee=r.swapFee,n.totalShares=r.totalShares,n.createTime=r.createTime??n.createTime),n},[r,t]),o.data,r],isLoading:o.isLoading||t.isLoading||s,isError:o.error||t.error,refresh:()=>{o.refresh(),t.mutate(),a()}}};import Un from"swr/immutable";var Fy=({poolId:e,typeInArray:t})=>Un(e?["usePoolEvents",e,t]:null,async([,o,r])=>Et({poolId:o,typeInArray:r}),{refreshInterval:18e4});import Hn from"swr";var jy=({poolId:e,...t},o)=>{let{config:r}=P(t),a=Hn(e?["usePoolHistoricalData",e]:null,async([,i])=>await It({poolId:i,chain:r.bex.chainName}),o?.opts);return{...a,refresh:()=>void a.mutate()}};import{useMemo as kr}from"react";import Vn from"swr";import{useBeraWallet as Nn}from"@berachain/wagmi/hooks";var Wn=({query:e}={})=>["useAllPools",e],rA=(e,t)=>{let{address:o}=Nn(),{data:r,isLoading:s,mutate:a}=rr({userAddress:o,chain:e.chain}),{data:i,isLoading:n,mutate:l}=Vn(Wn({query:e}),async([p,c])=>pe(c),{refreshInterval:18e4,...t?.opts}),u=kr(()=>{if(!i||!r?.pools?.length)return i?.pools??[];let p=Object.fromEntries(r.pools.map(c=>[c.id.toLowerCase(),c]));return i.pools.map(c=>({...c,...p[c.id.toLowerCase()]||{}})).filter(Boolean)},[i,r]),m=kr(()=>({page:Math.ceil((e?.skip??0)/(e?.first??10)),pageSize:e?.first,count:Math.ceil((i?.count??0)/(e?.first??10))}),[i,e.skip,e.first]);return{pools:u??[],walletPools:i?.pools??[],isLoading:n||s,refresh:()=>{l(),a()},pagination:m}};import{useMemo as Qn}from"react";import{useCallback as _n,useMemo as Pr}from"react";import{defaultChainId as Z}from"@berachain/config/internal";function Y({tokens:e}={},t={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{ensoTokens:o}=z(),r=J({addressIn:e?.filter(n=>n.chainId===Z).map(n=>n.address)},t),s=Pr(()=>{let n=[];if(!e)return[];let l=new Map;for(let u of e){let m=u.chainId??Z;l.has(m)||l.set(m,new Map),l.get(m)?.set(u.address.toLowerCase(),u)}if(r.data){for(let[u,m]of Object.entries(r.data))if(m&&l.get(m.chainId??Z)?.get(u.toLowerCase())&&m.price!==void 0){let p=l.get(m.chainId??Z)?.get(u.toLowerCase());if(!p)continue;n.push({...p,chainId:m.chainId,price:m.price})}}if(o)for(let u of o)u.price!==void 0&&u.chainId!==void 0&&n.push({...u,chainId:u.chainId,price:u.price});return n},[r.data,o,e]),a=Pr(()=>{let n={};for(let l of s){let u=l.chainId??Z;n[u]||(n[u]={}),n[u][l.address.toLowerCase()]=l.price}return n},[s]),i=_n(n=>n?a[n.chainId??Z]?.[n.address?.toLowerCase()]??void 0:void 0,[a]);return{isLoading:r.isLoading,data:s,priceMap:a,getTokenPrice:i}}function Ce({tokenIn:e,tokenOut:t,formattedAmountIn:o,formattedAmountOut:r}){let{getTokenPrice:s,isLoading:a}=Y({tokens:e&&t?[e,t]:void 0});return{data:Qn(()=>{if(!e||!t||!o||!r)return;let n=s(e),l=s(t);return!n||!l?null:Vo(n.toString(),l.toString(),o,r)},[e,t,o,r]),isLoading:a}}import Mn from"swr";import{formatEther as Yn,parseUnits as Gn,zeroAddress as Sr}from"viem";import{defaultChainId as Fn}from"@berachain/config/internal";import{useBeraWallet as Kn,usePublicClient as qn}from"@berachain/wagmi/hooks";import{ethAddress as Cr,zeroAddress as mt}from"viem";var dt=class extends E{name="Enso (Mint)";supportedChains=null;type="rest";needsAccountForQuote=!0;notFoundMessages=["Could not build shortcuts for route","Could not quote shortcuts for route","Swap not found for a required underlying of defi route,","No route found from"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,account:a=mt,aggregatorsFeeBps:i,proxyAggregatorsThroughVercel:n=!1,rewardVault:l,underlyingToken:u}){this.assertChainSupport({tokenIn:t,tokenOut:o}),_(a,"account");let m=ie({useProxy:!n});t.address===mt&&(t.address=Cr),o.address===mt&&(o.address=Cr);let p=u??o,c=[{protocol:"enso",action:"route",args:{tokenIn:t.address,tokenOut:p.address,destinationChainId:t.chainId===p.chainId?void 0:p.chainId,refundReceiver:a,amountIn:r,slippage:s*100}}];if(u&&c.push({protocol:"erc4626",action:"deposit",args:{amountIn:{useOutputOfCallAt:0},tokenIn:u.address,primaryAddress:o.address,tokenOut:o.address}}),l){let A=c.length;c.push({protocol:"enso",action:"balance",args:{token:o.address}},{protocol:"erc20",action:"approve",args:{amount:{useOutputOfCallAt:A},spender:l,token:o.address}},{protocol:"enso",action:"call",args:{address:l,args:[a,{useOutputOfCallAt:A}],method:"stakeOnBehalf",abi:"function stakeOnBehalf(address account, uint256 amount) external"}},{protocol:"enso",action:"balance",args:{token:l}})}let d=await m.getBundleData({fromAddress:a,receiver:a,spender:a,chainId:t.chainId,routingStrategy:"router"},c),g=l?.toLowerCase()??o.address.toLowerCase();return{amountOut:d.minAmountsOut[g]??d.amountsOut[g]??"0",amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:d.tx.to}),name:this.name,swapFeeBps:0,priceImpactPercentage:d.priceImpact?d.priceImpact/100:null,getCalldata:()=>({address:d.tx.to,data:d.tx.data,value:BigInt(d.tx.value??0)})}}},Se=new dt;function BA({tokenIn:e,loanToken:t,bendVault:o,rewardVault:r,amount:s,slippage:a},i){let{getTokenPrice:n}=Y({tokens:e&&t?[e,t]:void 0}),l=$n({tokenIn:e,loanToken:t,bendVault:o,rewardVault:r,amount:s?Gn(s,e?.decimals??18).toString():void 0,slippage:a},i),{data:u}=No({sharesAmount:BigInt(l.data?.amountOut??0),vaultAddress:o.address}),{data:m}=Ce({tokenIn:e,tokenOut:t,formattedAmountIn:s,formattedAmountOut:u?.formatted??"0"}),p=e?.chainId&&e.chainId!==Fn,{data:c,isLoading:d}=ke({address:Sr,chainId:p?e?.chainId:void 0},{opts:{isEnabled:!!p}}),g=l.data?.getCalldata?.({account:Sr})?.value??0n,y=c?.balance??{raw:"0",formatted:"0"},A=p&&g>0n&&!d&&g>BigInt(y.raw),R=p&&g>0n?Yn(g):void 0;return{...l,zapSupplyAmount:u,priceImpact:m,hasInsufficientNativeBalance:A,isCrossChain:p,nativeFee:R,refresh:()=>{l.mutate()}}}function $n({tokenIn:e,loanToken:t,bendVault:o,rewardVault:r,amount:s,slippage:a},i){let{address:n}=Kn(),l=!!e&&!!t&&!!o&&!!s&&!!n&&!h(t.address,e.address)&&e.chainId&&Number(s)>0&&!!a,u=qn();return Mn(l?["useBendZapSupply",e,t,o,r,s,a]:null,async([,p,c,d,g,y,A])=>(f(u),_(n,"fromAddress"),_(p?.address,"tokenInAddress"),q(p?.chainId,"tokenInChainId"),await Se.getQuote({tokenIn:p,tokenOut:d,underlyingToken:c,amount:y,slippage:A,account:n,rewardVault:g})),{...i?.opts,refreshInterval:1e5})}import{getPublicClient as si}from"@wagmi/core";import ai from"swr";import{parseUnits as ni}from"viem";import{defaultChainId as ii}from"@berachain/config/internal";import{useBeraWallet as li,useConfig as ui}from"@berachain/wagmi/hooks";import{ethAddress as Jn,zeroAddress as Zn}from"viem";import{erc20Abi as zn,ethAddress as jn}from"viem";var Tr=async({fromAddress:e,amountIn:t,tokenIn:o,chainId:r,ensoClient:s,bundle:a,publicClient:i})=>{let n=[];if(o!==jn){let l=await s.getApprovalData({fromAddress:e,tokenAddress:o,chainId:r,amount:t}),u=!0;i&&(u=await i.readContract({address:o,abi:zn,functionName:"allowance",args:[e,l.spender]})<BigInt(t)),u&&n.push({to:l.tx.to,data:l.tx.data,value:l.tx.value,gasLimit:BigInt(l.gas)})}return n.push({to:a.tx.to,data:a.tx.data,value:a.tx.value,gasLimit:BigInt(a.gas)}),n};async function Er({fromAddress:e,amountIn:t,tokenIn:o,tokenOut:r,chainId:s,ensoClient:a,destinationChainId:i,slippage:n,publicClient:l}){if(!e)throw new v({property:"fromAddress",value:e,expected:"address"});r===Zn&&(r=Jn);let u={protocol:"enso",action:"route",args:{tokenIn:o,tokenOut:r,amountIn:t,slippage:n*100}};i&&i!==s&&(u.args={...u.args,destinationChainId:i,refundReceiver:e});let m=await a.getBundleData({fromAddress:e,receiver:e,spender:e,chainId:s,routingStrategy:"router"},[u]),p=await Tr({fromAddress:e,amountIn:t,tokenIn:o,chainId:s,ensoClient:a,bundle:m,publicClient:l});return{bundle:m,transactions:p}}import{useMemo as Xn}from"react";import ei from"swr";import{useBeraWallet as ti,useConfig as oi,usePublicClient as ri}from"@berachain/wagmi/hooks";function Te(e,t){let o=ri(),r=oi(),{address:s}=ti(),{tokenList:a,refresh:i}=z(),n=e?.walletAddress??s,l=Xn(()=>new Map((e?.tokens??a)?.map(p=>[p.address.toLowerCase(),p])??[]),[a,e?.tokens]),u=o&&a!==void 0&&n?["usePollWalletBalances",n,Array.from(l.values())]:null,m=ei(u,async([,p,c])=>Ae({account:p,tokenList:c,wagmiConfig:r}),{refreshInterval:1e5,...t?.opts});return{...m,refresh:()=>{m?.mutate?.(),i()}}}function XA({tokenIn:e,tokenOut:t,amount:o,slippage:r}){let{address:s}=li(),a=ui(),i=ie(),{refresh:n}=Te(),l=!!e&&!!t&&!!o&&Number(o)>0&&!!r&&!!s&&!!e.chainId,m=ai(l?["useEnsoSwapBundle",e,t,o,r]:null,async([,p,c,d,g])=>{_(s,"fromAddress"),_(p?.address,"tokenInAddress"),q(p?.chainId,"tokenInChainId"),_(c?.address,"tokenOutAddress"),Ue(d,"amount"),Ue(g,"slippage");let y=si(a,{chainId:p.chainId});f(y);let A=ni(d,p.decimals).toString();return Er({fromAddress:s,amountIn:A,tokenIn:p.address,tokenOut:c.address,chainId:p.chainId,ensoClient:i,destinationChainId:ii,slippage:g,publicClient:y})},{refreshInterval:1e5,isEnabled:l});return{...m,refresh:()=>{m.mutate(),n()}}}import pi from"swr";import{formatUnits as mi,parseUnits as di}from"viem";import{chainConfigs as ci,defaultChainId as fi}from"@berachain/config/internal";import{useBeraWallet as gi}from"@berachain/wagmi/hooks";function ib({inputToken:e,amount:t,underlyingToken:o,slippage:r,tokenOut:s},a){let{address:i}=gi(),n=i??ci[fi].bex.aggregatorsRouterExecutor,u=!!e&&!!t&&Number(t)>0&&!!e.chainId&&!!o&&!!r?["useZapStakeBera",e,t,n,r,o,s]:null,m=pi(u,async([,c,d,g,y,A,R])=>{let w=di(d,c.decimals).toString();return Se.getQuote({account:g,amount:w,tokenIn:c,underlyingToken:A,tokenOut:R,slippage:y})},{...a?.opts,refreshInterval:1e5}),{data:p}=Ce({tokenIn:e,tokenOut:s,formattedAmountIn:t,formattedAmountOut:mi(BigInt(m.data?.amountOut??"0"),s.decimals)});return{...m,data:{...m.data,priceImpactPercentage:p,isCrossChain:e&&s.chainId!==e?.chainId},refresh:()=>{m.mutate()}}}import{useCallback as ct,useEffect as ki,useState as Pi}from"react";import yi from"gray-matter";import{encodeFunctionData as Ie,erc20Abi as Ai,parseAbiItem as bi,toHex as hi}from"viem";import{beraChefAbi as Ri}from"@berachain/abis/pol/rewards/beraChef";import{rewardVaultAbi as wi}from"@berachain/abis/pol/rewards/rewardVault";function Ee(e){return Object.values(e).some(t=>Array.isArray(t)?t.some(o=>typeof o=="object"&&o!==null?Ee(o):!!o):typeof t=="object"&&t!==null?Ee(t):!!t)}var Ir=({proposal:e,currentTopic:t,onError:o})=>{let r=vt(e,t),s=[];if(r.actions=e.actions.map((n,l)=>{let u={};if(u.target=L({fieldOrType:"address",value:n.target}),n.type==="custom-action")if(n.input==="ABI")if(u.ABI=L({fieldOrType:"abi",value:n.ABI}),!n.functionSignature)u.functionSignature="Required";else try{let p=bi(n.functionSignature);p.type!=="function"?(console.error("parsedSignatureAbi is not a function",p),u.functionSignature="Invalid ABI"):(u.args=p.inputs.map((c,d)=>{try{return"components"in c?L({fieldOrType:c.type,value:n.args?.[d],components:c.components}):L({fieldOrType:c.type,value:n.args?.[d]})}catch{return null}}),u.args.some(c=>c)||(s[l]=Ie({abi:[p],args:n.args})))}catch{u.functionSignature="Invalid ABI"}else if(n.input==="rawCalldata")u.rawCalldata=L({fieldOrType:"hex",value:n.rawCalldata}),s[l]=n.rawCalldata;else if(n.input==="message")u.message=L({fieldOrType:"string",value:n.message}),s[l]=hi(n.message);else throw new Error("Invalid input type");else if(n.type==="whitelist-reward-vault"||n.type==="blacklist-reward-vault"){if(u.vault=L({fieldOrType:"address",value:n.vault}),!u.vault){let p=n.type==="whitelist-reward-vault";s[l]=Ie({abi:Ri,functionName:"setVaultWhitelistedStatus",args:[n.vault,p,""]})}}else n.type==="whitelist-reward-vault-incentive"?(u.token=L({fieldOrType:"address",value:n.token}),u.minIncentiveRate=L({fieldOrType:"uint256",value:n.minIncentiveRate}),u.managerAddress=L({fieldOrType:"address",value:n.managerAddress}),!u.token&&!u.minIncentiveRate&&!u.managerAddress&&(s[l]=Ie({abi:wi,functionName:"whitelistIncentiveToken",args:[n.token,BigInt(n.minIncentiveRate),n.managerAddress]}))):n.type==="erc20-transfer"&&(u.amount=L({fieldOrType:"uint256",value:n.amount}),u.to=L({fieldOrType:"address",value:n.to}),!u.amount&&!u.to&&(s[l]=Ie({abi:Ai,functionName:"transfer",args:[n.to,BigInt(n.amount)]})));return Ee(u)?u:null}),o?.(r),Object.getOwnPropertyNames(r).map(n=>r[n]).some(n=>Array.isArray(n)?n.filter(l=>l).length>0:n===null?!1:!!n)){console.warn("Proposal has errors",r);return}if(s.length===0)throw new Error("No actions submitted in proposal");let a=new URL(e.forumLink),i=yi.stringify(e.description,{title:e.title,topics:Array.from(e.topic.values()),forumLink:a.toString(),version:"1.0.0","content-encoding":"utf-8","content-type":"text/markdown",actions:e.actions.map(n=>{let l={type:n.type};return n.type==="custom-action"&&(l.inputType=n.input),l})});return[e.actions.map(n=>n.target),e.actions.map(n=>n.value??0n),s,i]};var xr={type:"custom-action",target:"",ABI:"",value:0n,functionSignature:"",args:[],input:"ABI",rawCalldata:"0x",message:""},Ci=({initialData:e={},currentTopic:t,onError:o})=>{let[r,s]=Pi({title:"",description:"",forumLink:"",actions:[xr],...e,topic:new Set});ki(()=>{s(l=>({...l,topic:new Set([t.id])}))},[t]);let a=ct(()=>{s(l=>({...l,actions:[...l.actions,xr]}))},[]),i=ct(l=>{s(u=>{let m=[...u.actions];return m.splice(l,1),{...u,actions:m}})},[s]),n=ct(()=>r?Ir({proposal:r,currentTopic:t,onError:o}):void 0,[r,t]);return{proposal:r,setProposal:s,addProposalAction:a,removeProposalAction:i,computeParamsAndErrors:n}};import Ii from"swr/immutable";import{formatUnits as xi}from"viem";import{bgtAbi as Bi}from"@berachain/abis/pol/bgt";import{useBeraWallet as vi,usePublicClient as Oi}from"@berachain/wagmi/hooks";import Si from"swr/immutable";import{berachainGovernanceAbi as Ti}from"@berachain/abis/gov/berachainGovernance";import{usePublicClient as Ei}from"@berachain/wagmi/hooks";var Br=({proposalId:e})=>{let t=Ei();return Si(t&&e?["useProposalSnapshot",e]:null,async([,r])=>{f(t);let{config:s}=P({chainId:t.chain.id});return(await t.readContract({abi:Ti,address:s.governance.governor,functionName:"proposalSnapshot",args:[BigInt(r)]})).toString()})};var Lb=e=>{let{address:t}=vi(),o=Oi(),r=e.wallet||t,{data:s}=Br({proposalId:e.proposalId}),a=e.timepoint||s;return Ii(a&&o&&r?["useGetPastVotes",a,r]:null,async([,n,l])=>{f(o);let{config:u}=P({chainId:o.chain.id});if(Number(n)>Date.now()/1e3)throw new Error("timepoint is in the future");let m=await o.readContract({abi:Bi,address:u.tokens.bgt,functionName:"getPastVotes",args:[l,BigInt(n)]});return xi(m,18)})};import Di from"swr";import{isAddress as Li}from"viem";import{berachainGovernanceAbi as Ui}from"@berachain/abis/gov/berachainGovernance";import{useBeraWallet as Hi,usePublicClient as Vi}from"@berachain/wagmi/hooks";var Mb=({proposalId:e,wallet:t})=>{let{address:o}=Hi(),r=Vi(),s=t||o;return Di(r&&s&&Li(s)?["useHasVoted",e,s]:null,([,a,i])=>{f(r);let{config:n}=P({chainId:r.chain.id});return r.readContract({address:n.governance.governor,abi:Ui,functionName:"hasVoted",args:[BigInt(a),i]})})};import Ni from"swr";import{timeLockAbi as Wi}from"@berachain/abis/gov/timeLock";import{usePublicClient as _i}from"@berachain/wagmi/hooks";var vr="0xfd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783";var Jb=({account:e,...t})=>{let o=_i(),{config:r}=P(t);return Ni(e&&o?["useCancellerRole",e]:null,async([,a])=>(f(o),await o.readContract({abi:Wi,address:r.governance.timelock,functionName:"hasRole",args:[vr,a]})),{refreshInterval:18e4,revalidateOnFocus:!1})};import{useEffect as Or,useMemo as Qi,useState as Mi}from"react";import Yi from"swr/infinite";import{Proposal_OrderBy as Gi,ProposalStatus as W}from"@berachain/graphql/governance";var Dr=10,Fi=e=>{switch(e){case W.QuorumNotReached:return[W.Active,W.Pending];case W.PendingQueue:case W.Defeated:return[W.Active];case W.PendingExecution:return[W.InQueue];default:return[e]}};function Ki(e,t={}){let o=2*(t.perPage??Dr);return(r,s)=>{if(r!==0&&s&&s.length<o)return null;let a=t.status_in?.flatMap(Fi).filter((i,n,l)=>l.indexOf(i)===n);return["usePollAllProposals",r,e,t.where,a,t.orderBy,t.orderDirection,o,t.text]}}function rh(e,t){let o=t?.autoRefresh??!1,r=e.perPage??Dr,s=2*r,a=Ki(e.topic,e);async function i(d){if(!d)return[];let[,g,y,A,R,w,b,C,k]=d;return(await Bt({where:{topics_contains:[y],status_in:R?.length?R:void 0,...A},orderBy:w,orderDirection:b,text:k,perPage:C,offset:g*C})??[]).filter(Boolean)}let n=Yi(a,i,{initialSize:1,refreshInterval:t?.opts?.refreshInterval??18e4,...t?.opts}),l=Qi(()=>{if(!n.data)return[];let d=n.data.flat().filter(y=>y?e.status_in?.length?e.status_in.includes(y.status):!0:!1).sort((y,A)=>{if(!e.text)return 0;if(e.orderBy===Gi.CreatedAt){let R=Number(A.createdAt)-Number(y.createdAt);return e.orderDirection==="asc"?R:-R}return 0}),g=[];for(let y=0;y<d.length;y+=r)g.push(d.slice(y,y+r));return g},[n.data,e,r]),u=n.data?.[n.data.length-1],m=!!u&&u.length===s,[p,c]=Mi(Date.now()/1e3);return Or(()=>{if(!o)return;let d=setInterval(()=>{c(Date.now()/1e3)},1e4);return()=>clearInterval(d)},[o]),Or(()=>{if(!n.data)return;let d=!1;for(let g of n.data.flat()){switch(g.status){case W.Pending:p>=Number(g.voteStartAt)&&(d=!0);break;case W.Active:p>=Number(g.voteEndAt)&&(d=!0);break;case W.InQueue:Date.now()/1e3+1>=Number(g.queueEnd)&&(d=!0);break;default:break}if(d)break}d&&n.mutate()},[n.data,p]),{...n,data:l,hasMore:m}}import{useEffect as Lr,useState as qi}from"react";import $i from"swr";import{ProposalStatus as ft}from"@berachain/graphql/governance";import{usePublicClient as zi}from"@berachain/wagmi/hooks";var mh=(e,t)=>{let o=t?.autoRefresh??!1,r=zi(),a=$i(e&&r?["usePollProposal",e]:null,([,l])=>(f(r),Ot({proposalId:l,client:r})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??18e4}),[i,n]=qi(Date.now());return Lr(()=>{if(!o)return;let l=setInterval(()=>{n(Date.now()/1e3)},1e4);return()=>clearInterval(l)},[]),Lr(()=>{if(a.data!==void 0)switch(a.data.status){case ft.Pending:i>=Number(a.data.voteStartAt)&&a.mutate();break;case ft.Active:i>=Number(a.data.voteEndAt)&&a.mutate();break;case ft.InQueue:Date.now()/1e3+1>=Number(a.data.queueEnd)&&a.mutate();break}},[a.data?.status,i]),{...a,refresh:()=>a?.mutate?.()}};import ji from"swr";import{formatEther as Ji}from"viem";import{berachainGovernanceAbi as Zi}from"@berachain/abis/gov/berachainGovernance";import{usePublicClient as Xi}from"@berachain/wagmi/hooks";var bh=e=>{let t=Xi(),r=ji(t?["usePollProposalThreshold",e]:null,async([,s])=>{f(t);let a=await t.readContract({address:s,abi:Zi,functionName:"proposalThreshold"});return{votesThreshold:Ji(a)}},{refreshInterval:18e4});return{...r,refresh:r.mutate}};import el from"swr/infinite";var xe=1e3,kh=(e,t)=>el(tl(e,t),async([o,r])=>Lt({variables:{...e,limit:xe,offset:xe*r}}),{parallel:!0,initialSize:Number.POSITIVE_INFINITY}),tl=({...e},t)=>o=>o>Math.floor(t/xe)?null:["usePollProposalVotes",o,xe,e.proposalId,e.orderBy,e.orderDirection];import ol from"swr";import{formatEther as rl}from"viem";import{bgtAbi as Ur}from"@berachain/abis/pol/bgt";import{useBeraWallet as sl,usePublicClient as al}from"@berachain/wagmi/hooks";var Bh=e=>{let{address:t}=sl(),o=al(),s=ol(t?["usePollUserDelegates",t]:null,async([,a])=>{f(o);let{config:i}=P({chainId:o.chain.id});if(!o||!a)throw new Error("usePollUserDelegates needs publicClient and account");let[n,l]=await Promise.all([o.readContract({address:i.tokens.bgt,abi:Ur,functionName:"delegates",args:[a]}),o.readContract({address:i.tokens.bgt,abi:Ur,functionName:"getVotes",args:[a]})]);return{delegate:n,currentVotes:rl(l)}},{...e?.opts,refreshInterval:e?.opts?.refreshInterval??18e4});return{...s,refresh:()=>s?.mutate?.()}};import nl from"swr";import{usePublicClient as il,useTransactionReceipt as ll}from"@berachain/wagmi/hooks";var Uh=e=>{let{data:t}=ll({hash:e}),o=il();return nl(t&&o?["useProposalFromTx",e]:null,async([,a])=>{if(!t)throw new Error("Transaction not found");if(t.transactionHash!==a)throw new Error("Transaction hash mismatch");return Dt({tx:t,publicClient:o})})};import ul from"swr/immutable";import{berachainGovernanceAbi as pl}from"@berachain/abis/gov/berachainGovernance";import{usePublicClient as ml}from"@berachain/wagmi/hooks";var dl={0:"pending",1:"active",2:"canceled",3:"defeated",4:"succeeded",5:"queued",6:"expired",7:"executed"},Qh=({proposalId:e,governorAddress:t})=>{let o=ml();return ul(t&&o&&e?["useProposalState",e]:null,async([,s])=>{f(o);let a=await o.readContract({abi:pl,address:t,functionName:"state",args:[BigInt(s)]});return dl[a]})};import cl from"swr";import{timeLockAbi as fl}from"@berachain/abis/gov/timeLock";import{usePublicClient as gl}from"@berachain/wagmi/hooks";var yl={0:"unset",1:"waiting",2:"ready",3:"done"};function qh({proposalTimelockId:e,timelockAddress:t}){let o=gl();return cl(t&&o&&e?["useProposalTimelockState",e,t]:null,async([,s,a])=>{f(o);let i=await o.readContract({abi:fl,address:a,functionName:"getOperationState",args:[s]});return yl[i]},{refreshInterval:18e4})}import hl from"swr";import{usePublicClient as Rl}from"@berachain/wagmi/hooks";import{formatEther as Al}from"viem";import{berachainGovernanceAbi as bl}from"@berachain/abis/gov/berachainGovernance";async function gt({at:e,publicClient:t,...o}){let{config:r}=P(o);f(t);let s=await t.readContract({address:r.governance.governor,abi:bl,functionName:"quorum",blockTag:"pending",args:[BigInt(e??Math.floor(Date.now()/1e3))]});return Al(s)}function rR({at:e},{isEnabled:t=!0}){let o=Math.floor(Date.now()/1e3),r=Rl(),s=t&&r?["useQuorum",Number(e)>o?"now":e]:null,a=hl(s,async([,i])=>i==="now"?gt({publicClient:r}):gt({at:i,publicClient:r}));return{...a,data:a.data?Number(a.data):void 0}}import kl from"swr";import{usePublicClient as Pl}from"@berachain/wagmi/hooks";import wl from"swr";function X({priceFeedMap:e},t){let o=e?Object.values(e):null,r=(t?.opts?.isEnabled??!0)&&o?["usePythLatestPrices",o]:null;return wl(r,async([a,i])=>await Qt({priceFeedId:i}))}var Hr=({asset:e,amount:t,isMint:o,isBasketModeEnabled:r},s)=>{let a=Pl(),{priceFeedMap:i,flags:n}=B(),{data:l}=X({priceFeedMap:e?.address&&i?{[e.address]:i[e.address]}:void 0},{opts:{isEnabled:n.isPythWrapperEnabled&&!!e?.address}}),u=t&&e&&(n.isPythWrapperEnabled&&l?.prices.length||!n.isPythWrapperEnabled)?["useCappedGlobally",t,e,l,n.isPythWrapperEnabled,r]:null,m=kl(u,async([p,c,d,g,y,A])=>A?!1:(f(a),await Nt({client:a,asset:d,amount:o?c:`-${c}`,isMint:o,latestPrices:g,isPythWrapperEnabled:y})),{...s?.opts,refreshInterval:0});return{...m,refresh:()=>void m.mutate()}};import Cl from"swr";import{usePublicClient as Sl}from"@berachain/wagmi/hooks";var Vr=({asset:e,amount:t,isMint:o,isBasketModeEnabled:r},s)=>{let a=Sl(),{collateralList:i,referenceCollateral:n}=B(),u=Cl(e&&t?["useCappedRelatively",e,t,i,n]:null,async([m,p,c,d,g])=>{if(r)return!1;if(f(a),!o){let y=`-${c}`;return g.address!==p?!1:(await Promise.all(d.map(R=>Ve({client:a,asset:R.address,amount:y,isMint:o,referenceCollateral:g})))).some(R=>R)}return await Ve({client:a,asset:p,amount:c,isMint:o,referenceCollateral:g})},{refreshInterval:0,...s?.opts});return{...u,refresh:()=>void u.mutate()}};import Tl from"swr";import{usePublicClient as El}from"@berachain/wagmi/hooks";var SR=({collateralList:e},t)=>{let o=El(),s=Tl(o&&e?["useCollateralWeights",e]:void 0,async([a,i])=>(f(o),await Ht({client:o,collateralList:i})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...s,refresh:()=>void s.mutate()}};import{useMemo as yt}from"react";import ee from"@berachain/utils/pkg/bignumber.js";import Il from"swr";import{useBeraWallet as xl,useConfig as Bl,usePublicClient as vl}from"@berachain/wagmi/hooks";var Nr=()=>{let e=vl(),{address:t}=xl(),{collateralList:o}=B(),r=Bl(),a=Il(t&&o&&e?["useHoneyBalances",t,o]:null,async([i,n,l])=>{f(e);let u=[...l??[],ue({})];return(await Ae({account:n,tokenList:u,wagmiConfig:r}))?.reduce((c,d)=>(c[d.address]=d,c),{})},{refreshInterval:1e4});return{...a,refresh:()=>a.mutate()}};import Ol from"swr";import{usePublicClient as Dl}from"@berachain/wagmi/hooks";var Wr=e=>{let t=Dl(),{collateralList:o}=B(),s=Ol(o&&t?["useHoneyVaultsBalance",o]:null,async([a,i])=>(f(t),await me({client:t,collateralList:i})),{...e?.opts,refreshInterval:1e5});return{...s,refresh:()=>void s.mutate()}};import Ll from"swr";import{usePublicClient as Ul}from"@berachain/wagmi/hooks";var _r=({collateral:e},t)=>{let o=Ul(),{priceFeedMap:r,flags:s}=B(),{data:a}=X({priceFeedMap:e?.address?{[e.address]:r[e.address]}:void 0},{opts:{isEnabled:s.isPythWrapperEnabled&&!!e?.address}}),i=o&&e&&(s.isPythWrapperEnabled&&a?.prices.length||!s.isPythWrapperEnabled)?["useIsBadCollateralAsset",e,a,s.isPythWrapperEnabled]:null,n=Ll(i,async([l,u,m,p])=>(f(o),await Vt({client:o,collateral:u,latestPrices:m,isPythWrapperEnabled:p})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...n,refresh:()=>void n.mutate()}};var Qr=({lowerThan:e,vaultsBalances:t,state:o,collateralList:r})=>{if(!(o.actionType==="mint")&&!o.isBasketModeEnabled){let a=t?.find(l=>l.address.toLowerCase()===o.collaterals[0].address.toLowerCase()),i=new ee(a?.balance.formatted??"0").lte(e),n=r.filter(l=>{let u=t?.find(m=>m.address.toLowerCase()===l.address.toLowerCase());return new ee(u?.balance.formatted??"0").lte(e)});return{isLow:i,isLiquidityLowCollaterals:n}}return{isLow:!1,isLiquidityLowCollaterals:[]}},Hl=({vaultsBalances:e,redeemedVaultBalance:t,state:o,collateralList:r})=>{if(!(o.actionType==="mint")&&e&&t){let a=r.filter(i=>{let n=e.find(u=>u.address.toLowerCase()===i.address.toLowerCase()),l=o.toAmount[o.collaterals.indexOf(i)];return new ee(n?.balance.formatted??"0").lt(l??"0")});return{isMore:!!a.find(i=>h(i,o.collaterals[0])),isRedeemMoreThanLiquidityCollaterals:a}}return{isMore:!1,isRedeemMoreThanLiquidityCollaterals:void 0}};function Vl({state:e,honeyBalances:t,...o}){let{config:r}=P(o),s=e.actionType==="mint";return!s&&t?new ee(e.fromAmount[0]).gt(t[r.honey.token]?.balance.formatted??"0"):s&&t&&e.isBasketModeEnabled!==void 0&&e.collaterals.length>0?e.isBasketModeEnabled?e.collaterals.some((a,i)=>{let n=e.fromAmount[i];return new ee(t[a.address]?.balance.formatted).lt(n)}):new ee(t[e.collaterals[0].address]?.balance.formatted).lt(e.fromAmount[0]):!1}var rw=({actionType:e,collaterals:t,fromAmount:o,toAmount:r,isBasketModeEnabled:s})=>{let a={actionType:e,collaterals:t,fromAmount:o,toAmount:r,isBasketModeEnabled:s},i=e==="mint",{data:n}=_r({collateral:t[0]}),{collateralList:l}=B(),{isBlacklisted:u,isDepegged:m}=n??{isBlacklisted:!1,isDepegged:!1},{data:p}=Hr({asset:t[0],amount:i?o[0]:r[0],isMint:i,isBasketModeEnabled:s}),{data:c}=Vr({asset:t[0]?.address,amount:i?o[0]:r[0],isMint:i,isBasketModeEnabled:s}),{data:d}=Nr(),{data:g}=Wr(),y=t[0]?.address,A=g?.find(S=>S.address.toLowerCase()===y.toLowerCase()),[R,w]=yt(()=>{let S=Qr({lowerThan:1,vaultsBalances:g,state:a,collateralList:l}),T=Qr({lowerThan:1e3,vaultsBalances:g,state:a,collateralList:l});return[S,T]},[g,a]),{isMore:b,isRedeemMoreThanLiquidityCollaterals:C}=yt(()=>Hl({vaultsBalances:g,redeemedVaultBalance:A,state:a,collateralList:l}),[g,A,a,l]),k=yt(()=>Vl({state:a,honeyBalances:d}),[a,d]);return{isLiquidityDepleted:R.isLow,isLiquidityDepletedCollaterals:R.isLiquidityLowCollaterals,isRedeemMoreThanLiquidity:b,isRedeemMoreThanLiquidityCollaterals:C,isLowLiquidity:w.isLow,isLiquidityLowCollaterals:w.isLiquidityLowCollaterals,isBlacklisted:a.isBasketModeEnabled?!1:u,isDepegged:a.isBasketModeEnabled?!1:m,isCappedGlobally:p,isCappedRelatively:c,isExceedingBalance:k}};import Nl from"swr";function iw({days:e}){let t=Nl(["useHoneyChartData",e],async([o,r])=>await Ut({days:r}));return{...t,refresh:()=>t.mutate()}}import Wl from"swr";import Mr from"@berachain/utils/pkg/bignumber.js";function dw(){let e=Wl(["useHoneyGlobalData"],()=>Wt()),t=e.data?.honeySnapshots.reduce((o,r)=>new Mr(r.totalVolume).plus(o),new Mr(0));return{...e,data:{...e.data,dailyVolume:t},refresh:()=>e.mutate()}}import{useEffect as Ml,useReducer as Yl}from"react";import{formatUnits as Gr}from"viem";import{defaultChainId as Gl}from"@berachain/config/internal";import _l from"swr";import{usePublicClient as Ql}from"@berachain/wagmi/hooks";function Yr({state:e},t){let o=Ql(),{priceFeedMap:r,flags:s,collateralList:a}=B(),{data:i}=X({priceFeedMap:r},{opts:{isEnabled:s.isPythWrapperEnabled&&!!a.length}}),n=e.actionType==="mint",l=o&&e&&a.length>0&&(s.isPythWrapperEnabled&&i?.prices.length||!s.isPythWrapperEnabled)?["useIsBasketModeEnabled",n,i,s.isPythWrapperEnabled,a]:null,u=_l(l,async([m,p,c,d,g])=>(f(o),await de({client:o,isMint:p,collateralList:g,latestPrices:c,isPythWrapperEnabled:d})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e4});return{...u,data:u.data,refresh:()=>void u.mutate()}}var Fl={actionType:"mint",collaterals:[],fromAmount:[],toAmount:[],isBasketModeEnabled:!1,isTyping:!1,isSubmitting:!1,isLoading:!1};function Fr(e,t){switch(t.type){case"RESET_AMOUNTS":return{...e,fromAmount:[],toAmount:[]};case"ACTION_TYPE_CHANGE":return Fr({...e,actionType:t.value},{type:"RESET_AMOUNTS"});case"COLLATERALS_CHANGE":return{...e,collaterals:t.value,fromAmount:[],toAmount:[]};case"FROM_AMOUNT_CHANGE":{let o=e.fromAmount;return o[t.index]=t.value,{...e,fromAmount:o}}case"TO_AMOUNT_CHANGE":{let o=e.toAmount;return o[t.index]=t.value,{...e,toAmount:o}}case"PREVIEW_CHANGE":{let o=t.value,r=e.actionType==="mint",s=e.collaterals.map((i,n)=>t.changedAsset===i.address?r?e.fromAmount[n]:e.toAmount[n]:o.collaterals[i.address]?Gr(o.collaterals[i.address],i.decimals):e.isBasketModeEnabled?"0":""),a=h(t.changedAsset,"HONEY",{chainId:Gl})?r?e.toAmount[0]:e.fromAmount[0]:o.honey?Gr(o.honey,18):e.isBasketModeEnabled?"0":"";return{...e,fromAmount:r?s:[a],toAmount:r?[a]:s}}case"IS_BASKET_MODE_ENABLED_CHANGE":return{...e,isBasketModeEnabled:t.value,fromAmount:[],toAmount:[]};case"IS_TYPING_CHANGE":return{...e,isTyping:t.value};case"IS_SUBMITTING_CHANGE":return{...e,isSubmitting:t.value};case"IS_LOADING_CHANGE":return{...e,isLoading:t.value};default:throw new Error(`Unknown action type: ${t}`)}}var Ew=()=>{let{collateralList:e}=B(),[t,o]=Yl(Fr,Fl,s=>({...s,collaterals:e})),{data:r}=Yr({state:t});return Ml(()=>{r!==void 0&&t.isBasketModeEnabled!==r&&(o({type:"IS_LOADING_CHANGE",value:!0}),o({type:"IS_BASKET_MODE_ENABLED_CHANGE",value:r}),o({type:"IS_LOADING_CHANGE",value:!1}))},[r]),{state:t,dispatch:o}};import Kl from"swr/immutable";import{usePublicClient as ql}from"@berachain/wagmi/hooks";var Lw=({pythPriceFeedCalldata:e,tokenListLength:t},o)=>{let r=ql(),s=(o?.opts?.isEnabled??!0)&&e&&e.length>0?["usePythUpdateFee",e]:null,{data:a=Mt(t),isLoading:i}=Kl(s,async([n,l])=>(f(r),await Yt({client:r,priceFeedId:l})));return{QUERY_KEY:s,data:a,isLoading:i}};import{useMemo as $l}from"react";function Nw(e){return $l(()=>{if(e)return $t(e)},[e])}import zl from"swr";import{formatEther as jl}from"viem";import{bgtAbi as Jl}from"@berachain/abis/pol/bgt";import{useBeraWallet as Zl,usePublicClient as Xl}from"@berachain/wagmi/hooks";var eu=e=>{let{address:t}=Zl(),o=Xl(),s=zl(t&&o?["useBgtUnstakedBalance",t]:null,async([,a])=>{f(o);let{config:i}=P({chainId:o.chain.id}),n=await o.readContract({address:i.tokens.bgt,abi:Jl,functionName:"unboostedBalanceOf",args:[a]});return jl(n)},{...e,refreshInterval:e?.opts?.refreshInterval??1e5});return{...s,refresh:()=>s.mutate()}};import tu from"swr";import{formatUnits as ou}from"viem";import{useBeraWallet as ru,usePublicClient as su}from"@berachain/wagmi/hooks";var au=()=>{let{address:e}=ru(),t=su(),r=tu(e&&t?["useClaimableFees",e]:null,async([,s])=>{f(t);let{config:a}=P({chainId:t.chain.id}),i=await io({account:s,vaultAddress:a.pol.staker,publicClient:t});return ou(i,18)},{refreshInterval:18e4*2});return{...r,refresh:()=>r?.mutate?.()}};import{GqlRewardVaultOrderBy as uu,GqlRewardVaultOrderDirection as pu}from"@berachain/graphql/pol/api";import nu from"swr";import{usePublicClient as iu}from"@berachain/wagmi/hooks";var lu=(e,t=!1)=>["useRewardVaults",e,t],At=(e,t)=>{let o=lu(e.filter,e.onChainIncentives),r=iu(),s=nu(t?.opts?.isEnabled??!0?o:null,async([,a,i])=>await jt({filter:a,publicClient:i?r:void 0}),{...t?.opts});return{...s,refresh:s.mutate}};var nk=(e={},{isEnabled:t=!0}={})=>{let o=At({filter:{orderBy:uu.Apr,orderDirection:pu.Desc,pageSize:1,where:e}},{opts:{refreshInterval:0,revalidateOnFocus:!1,refreshWhenOffline:!1,isEnabled:t}});return{isLoading:o.isLoading,highestApr:o.data?.gaugeList[0].dynamicData?.apr,refresh:o.mutate}};import mu from"swr";import{usePublicClient as du}from"@berachain/wagmi/hooks";var Kr=e=>{let t=du(),o=mu(t?"usePollGlobalData":null,async()=>(f(t),Jt(t)),{revalidateOnFocus:!1,...e?.opts});return{...o,refresh:o.mutate}};import cu from"swr/immutable";var fu=()=>"usePollMarkets",gk=e=>{let t=fu(),o=cu(t,async()=>await Zt(),{...e?.opts});return{...o,refresh:()=>o.mutate()}};import gu from"swr/immutable";import{isAddress as yu}from"viem";import{usePublicClient as Au}from"@berachain/wagmi/hooks";function kk({receiptTokenAddresses:e,account:t,version:o},r){let s=Au(),a=e&&t&&s&&yu(t)&&o?["useQueuedBeraUnlock",e,t,o]:null,i=gu(a,async([,n,l,u])=>(f(s),await Promise.all(n.map(async m=>await so({contractAddress:m,accountAddress:l,publicClient:s,version:u}))).then(m=>m.flat())),{refreshInterval:1e4,...r?.opts});return{...i,refresh:()=>i.mutate()}}import bu from"swr";import{isAddress as hu}from"viem";import{defaultChainId as Ru}from"@berachain/config/internal";import{usePublicClient as wu}from"@berachain/wagmi/hooks";var vk=({address:e},t)=>{let o=e?["useRewardTokenToBeraRate",e]:null,r=wu({chainId:Ru});return bu(o,async([s,a])=>{if(!a||!hu(a))throw new v({property:"address",value:a,expected:"Address"});return f(r),se({address:a,publicClient:r})},{...t?.opts})};import Bu from"swr";import Pu from"swr";import{erc20Abi as Cu,formatUnits as Su,isAddress as Tu}from"viem";import{beraChefAbi as Eu}from"@berachain/abis/pol/rewards/beraChef";import{usePublicClient as Iu}from"@berachain/wagmi/hooks";import{erc20Abi as Be,formatUnits as ku}from"viem";async function ve({address:e,publicClient:t}){f(t);let[o,r,s,a]=await t.multicall({contracts:[{address:e,abi:Be,functionName:"decimals"},{address:e,abi:Be,functionName:"name"},{address:e,abi:Be,functionName:"symbol"},{address:e,abi:Be,functionName:"totalSupply"}],allowFailure:!0});return{address:e,decimals:o.result,name:r.result,symbol:s.result,totalSupply:a.result!==void 0?o.status==="success"?ku(a.result,o.result):a.result.toString():void 0}}var xu=e=>e&&Tu(e)?["onChainRewardVault",e.toLowerCase()]:null,qr=({address:e},t)=>{let o=Iu(),r=t.opts?.isEnabled??!0,s=xu(e);return Pu(r&&o?s:null,async([,a])=>{f(o);let{config:i}=P({chainId:o.chain.id}),n=await ye({address:a,publicClient:o}),[l,u,m]=await Promise.all([ge({address:a,stakingToken:n,publicClient:o}),o.readContract({address:i.pol.beraChef,abi:Eu,functionName:"isWhitelistedVault",args:[a]}),o.readContract({address:n,abi:Cu,functionName:"balanceOf",args:[a]})]),[p,c]=await Promise.all([ve({address:n,publicClient:o}),Promise.all(l.map(d=>M({address:d.token,chainId:o.chain.id,publicClient:o})))]);if(!p)throw new Error("Staking token not found");return{id:a,address:a,vaultAddress:a,stakingToken:{address:n,name:p.name??"",symbol:p.symbol??"",decimals:p.decimals??0},stakingTokenAmount:Su(m,p.decimals??18),isVaultWhitelisted:u,activeIncentives:l.map((d,g)=>({active:!!d.remainingAmount,remainingAmount:d.remainingAmount,remainingAmountUsd:"0",incentiveRate:d.incentiveRate,incentiveRateUsd:"0",tokenAddress:d.token,token:c[g]}))}})};var vu=e=>e?["useRewardVault",e.toLowerCase()]:null,jk=(e,t)=>{let o=vu(e),r=Bu(o,async([i,n])=>eo({address:n}),{...t?.opts}),s=t?.opts?.isEnabled??((!!r.error||!r.isLoading)&&!r.data),a=qr({address:e},{opts:{...t?.opts,isEnabled:s}});return{data:a.data??r.data,error:a.error??r.error,isLoading:a.isLoading||r.isLoading,isValidating:a.isValidating??r.isValidating,refresh:()=>{r.mutate(),a.mutate()}}};import Ou from"swr";import{usePublicClient as Du}from"@berachain/wagmi/hooks";function oP({address:e,stakingToken:t}){let o=Du(),s=Ou(o&&e&&t?["useRewardVaultIncentives",e,t]:null,async([,a,i])=>(f(o),await ge({address:a,stakingToken:i,publicClient:o})));return{...s,refresh:()=>s?.mutate?.()}}import Lu from"swr";import{usePublicClient as Uu}from"@berachain/wagmi/hooks";var Hu=(e,t)=>{let o=Uu(),s=Lu(o&&e?["useRewardVaultRewards",e]:null,async([,a])=>(f(o),await qt(a,o)),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}};import Vu from"swr";var Oe=e=>{let t=[],o="";for(let r of e){if(!r.timestamp&&!r._timestamp)continue;let s=(r?.timestamp??r?._timestamp??0)*1e3,a=new Date(s),i=a.toDateString();if(i!==o){let n=new Date(a.setHours(0,0,0,0)).getTime()/1e3;t.push({...r,timestamp:n,_timestamp:n}),o=i}}return t};function cP({range:e}){let o=Vu(e?["useStakedAPR",e]:null,async([,r])=>{let s=await oo({range:r});return Oe(s.sort((i,n)=>i.timestamp-n.timestamp)).map(i=>({_timestamp:i.timestamp,apr:i.apr}))});return{...o,refresh:()=>o.mutate()}}import{useMemo as De}from"react";import bt from"swr";import{useBeraWallet as Nu,usePublicClient as Wu}from"@berachain/wagmi/hooks";import ht from"@berachain/utils/pkg/bignumber.js";var TP=e=>{let t=U("swberaAprWindow"),o=Wu(),{address:r}=Nu(),s=De(()=>e.map(b=>b.receiptToken),[e]),a=De(()=>e.map(b=>b.inputTokens[0]),[e]),i=t?["useStakedData:apr",t]:null,{data:n}=bt(i,async([,b])=>to({window:b}),{refreshInterval:1e5}),{data:l,isLoading:u}=Te({tokens:s}),{getTokenPrice:m}=Y({tokens:a}),p=o&&s.length>0?["useStakedData:exchangeRates",s]:null,{data:c}=bt(p,async([,b])=>(f(o),Promise.all(b.map(C=>se({address:C.address,publicClient:o})))),{refreshInterval:1e5}),d=De(()=>{if(!(!l||!c))return e.map((b,C)=>{let k=b.inputTokens[0],S=l.find(te=>te.address===b.receiptToken.address)?.balance.raw??"0",T=c[C]??0,I=m(k)??0,Q=new ht(S).multipliedBy(T).dividedBy(10**k.decimals),O=Q.multipliedBy(I);return{token:k,apr:n??0,stakedAmount:Q.toNumber(),stakedAmountUsd:O.toNumber(),earnedAmount:0,earnedAmountUsd:0,isLoadingEarnings:!0}})},[l,c,e,n,m]),g=r&&o&&e.length>0?["useStakedData:positions",r,e]:null,{data:y,isLoading:A,isValidating:R}=bt(g,async([,b,C])=>(f(o),Promise.all(C.map(async k=>{let S=k.receiptToken,[T,I]=await Promise.all([zt({address:S.address,account:b}),se({address:S.address,publicClient:o})]);return{earnings:T,exchangeRate:I}}))),{refreshInterval:1e4}),w=De(()=>{if(!(!y||!l))return e.map((b,C)=>{let k=b.inputTokens[0],S=b.receiptToken,{earnings:T,exchangeRate:I}=y[C],N=m(k)??0,Q=l.find(is=>is.address===S.address)?.balance.raw??"0",O=I??0,te=new ht(T.earningsTotal).minus(T.earningsRealized),oe=new ht(Q).multipliedBy(O).minus(te).dividedBy(10**k.decimals),ne=te.dividedBy(10**k.decimals),V=oe.multipliedBy(N),re=ne.multipliedBy(N);return{token:k,apr:n??0,stakedAmount:oe.toNumber(),earnedAmount:ne.toNumber(),stakedAmountUsd:V.toNumber(),earnedAmountUsd:re.toNumber()}})},[y,l,e,n,m]);return{balances:d,data:w,isLoading:u&&A,isLoadingBalances:u,isLoadingPositions:A,isValidatingPositions:R}};import _u from"swr";async function $r({address:e,range:t}){let o=new Date,r=new Date(o.getTime()-Number(t)*24*60*60*1e3),{config:s}=P({}),a=`${s.bonder}/vaults/${e}/total-assets-by-day?start=${r.toISOString().split("T")[0]}`;return le({url:a,type:"rest"})}function LP({range:e,addresses:t}){let r=_u(e?["useStakedSnapshots",e,t]:null,async([,s,a])=>{let[...i]=await Promise.all([...a.map(async n=>{let l=await $r({address:n,range:s}),u=Oe(l.sort((m,p)=>m._timestamp-p._timestamp));return{[n]:u}})]);return i.reduce((n,l)=>({...n,...l}),{})});return{...r,refresh:()=>r.mutate()}}import Qu from"swr";import{usePublicClient as Mu}from"@berachain/wagmi/hooks";var QP=e=>{let t=Mu(),o=$();return Qu(e&&t&&o?["useStakingVaultMetadata",e,t,o]:null,async([,s,a,i])=>(f(a),ro({address:s,publicClient:a,blockTime:i})),{refreshInterval:1e4})};import Yu from"swr";import{usePublicClient as Gu}from"@berachain/wagmi/hooks";function KP({vaultAddresses:e}){let t=Gu(),o=Yu(e&&t?["useTotalStakedAmount",e]:null,([,r])=>ao({vaultAddresses:r,publicClient:t}));return{...o,refresh:()=>o.mutate()}}import Fu from"swr";import{useBeraWallet as Ku,usePublicClient as qu}from"@berachain/wagmi/hooks";var $u=(e,t)=>{let{address:o}=Ku(),r=qu(),s=o&&r&&e.vaultAddress?["useUserVaultInfo",o,e.vaultAddress]:null,a=Fu(s,async([,i,n])=>(f(r),lo({account:i,vaultAddress:n,publicClient:r})),{...t,refreshInterval:t?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a.mutate()}};import zu from"swr";import{useBeraWallet as ju,usePublicClient as Ju}from"@berachain/wagmi/hooks";var Zu=e=>{let{address:t}=ju(),o=Ju(),s=zu(t&&o?["useUserVaults",t]:null,async([,a])=>(f(o),await uo({account:a,publicClient:o})),{...e,refreshInterval:e?.opts?.refreshInterval??1e5,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import Xu from"swr";import{usePublicClient as ep}from"@berachain/wagmi/hooks";var lC=e=>{let t=ep();return Xu(e&&t?["useVaultAddress",e]:null,async([,r])=>{f(t);let[s]=await Promise.all([ye({address:r,publicClient:t})]);return{stakeToken:s,address:r}})};import tp from"swr";var dC=({vault:e,range:t,resolution:o})=>{let s=tp(e?["useVaultHistory",e,t,o]:null,([,a,i,n])=>po({vault:a,range:i,resolution:n}));return{...s,refresh:()=>s.mutate()}};import op from"swr";var rp=(e,t)=>{let r=op(e?["useVaultValidators",e]:null,async([,s])=>await mo({address:s}),{...t?.opts});return{...r,refresh:()=>r.mutate()}};import{zeroAddress as sp}from"viem";function zr({address:e},t){let o=J({addressIn:e?[e]:void 0},t);return{...o,data:e?o.data?.[e.toLowerCase()]:void 0}}function wC(e){return zr({address:sp},e)}import ap from"swr/immutable";import{isAddress as np,zeroAddress as ip}from"viem";import{usePublicClient as lp}from"@berachain/wagmi/hooks";var IC=(e,t)=>{let o=lp(),r=e?.address&&o&&np(e.address)?["useStakingTokenInformation",e.address]:null,s=ap(r,async([a,i])=>h(i,"BERA")?{address:ip,decimals:D.decimals,name:D.name,symbol:D.symbol}:await ve({address:i,publicClient:o}),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}};function vC({token:e},t){let{isLoading:o,priceMap:r}=Y({tokens:e?[e]:void 0},t);return{data:e?r[e.chainId]?.[e.address.toLowerCase()]:void 0,isLoading:o}}import up from"swr";import{erc20Abi as pp}from"viem";import{usePublicClient as mp}from"@berachain/wagmi/hooks";function VC({address:e}){let t=mp();return up(e&&t?["useTotalSupply",e]:null,([,o])=>(f(t),t.readContract({address:o,abi:pp,functionName:"totalSupply",args:[]})))}import dp from"swr/immutable";import{useBlockNumber as cp,usePublicClient as fp}from"@berachain/wagmi/hooks";function KC(e){let t=fp(),{config:o}=P({chainId:t?.chain.id}),{data:r,isLoading:s}=cp({cacheTime:ce(o.averageBlockTime)}),{data:a}=dp(r&&t&&Number(e)>0?["useBlockToTimestamp",e,r]:null,async([,n,l])=>(f(t),Kt({block:n,currentBlock:l,blockTime:i,publicClient:t}))),i=$();if(a)return Number(a.timestamp);if(!(s||!r))return Math.floor(Ft(Date.now())+i*(Number(e)-Number(r)))}import{useCallback as Jr,useReducer as gp}from"react";import{useBeraWagmi as yp,useConfig as Ap}from"@berachain/wagmi/hooks";var Rt={confirmState:"idle",txnHash:"",message:""},jr=(e,t)=>{switch(t.type){case"confirm_sending":return{...e,confirmState:"loading"};case"confirm_receipt":return{...e,confirmState:"success"};case"confirm_error":return{...e,confirmState:"fail"};case"confirm_submitting":return{...e,confirmState:"submitting"};case"confirm_reset":return{...Rt};default:return e}};function bp({onlyPermissionless:e,onSuccess:t,onError:o,onLoading:r,onWarning:s,onSubmission:a}={}){let[i,n]=gp(jr,Rt),{account:l,onSmartAccountRejection:u}=yp(),m=Ap(),p=l?.wallet?.isContract?6e4*10:12e4,c=Jr(()=>{n({type:"confirm_reset"})},[]),d=U("enableSimulateCalls"),g=Jr(y=>{if(e&&!y.permissionless){let A=new go({message:"Trying to send a non-permissionless transaction with an overridden account",displayMessage:"You can't send this transaction with an overridden account. Please reset the account in the settings popover.",level:"info",input:y});throw s?.(A,y),o?.(A,y),A}return yo({wagmiConfig:m,...y,txConfirmationTimeout:p,enableSimulateCalls:d,onLoading(...A){n({type:"confirm_sending"}),y.onLoading?.(y),r?.(...A)},onWarning(...A){y.onWarning?.(A[0],y),s?.(...A)},onSubmission(...A){n({type:"confirm_submitting"}),y.onSubmission?.(A[0],y),a?.(...A)},onSuccess(...A){n({type:"confirm_receipt"}),y.onSuccess?.(A[0],y),t?.(...A)},onError(...A){n({type:"confirm_error"}),y.onError?.(A[0],y),A[0].reason==="AtomicReadyWalletRejectedUpgradeError"&&u(),o?.(...A)}})},[m,r,s,a,t,o,e,d]);return{isLoading:i.confirmState==="loading",isSubmitting:i.confirmState==="submitting",isSuccess:i.confirmState==="success",isError:i.confirmState==="fail",write:g,reset:c}}var hp=bp;import Rp from"swr/immutable";import{isAddress as wp,zeroAddress as kp}from"viem";import{chainId as Pp}from"@berachain/config/internal";async function Cp(e){let t=await le({url:`https://api.routescan.io/v2/network/testnet/evm/${Pp}/etherscan/api?module=contract&action=getabi&address=${e}`,type:"rest",name:"RouteScan"});if(t.status==="0")throw new Error(t.result);return t.result}var pS=e=>Rp(e&&wp(e)&&e!==kp?["useGetVerifiedAbi",e]:null,()=>e?Cp(e):Promise.resolve(""),{});import{useCallback as Zr,useEffect as Sp,useState as Tp}from"react";function cS({key:e,defaultValue:t}){let o=Zr(()=>{if(typeof window>"u")return t;let i=window.history.state?.[e];return i!==void 0?i:t},[e,t]),[r,s]=Tp(o()),a=Zr(i=>{let n=o(),l=i instanceof Function?i(n):i,m={...window.history.state||{},[e]:l};window.history.replaceState(m,""),s(l)},[e,o]);return Sp(()=>{if(window.history.state?.[e]===void 0){let l={...window.history.state||{},[e]:t};window.history.replaceState(l,"")}},[e,t]),[r,a]}import{useEffect as Ep,useRef as Ip}from"react";function yS(e){let t=Ip(void 0);return Ep(()=>{t.current=e}),t.current}import xp from"swr";var Bp=({variables:e}={})=>["useAllValidators",e],wS=(e,t)=>{let{config:o}=P(e),r=xp(Bp({variables:e}),async([,s])=>await Ao({variables:{chain:o.bex.chainName,...s}}),{refreshInterval:18e4,...t?.opts});return{...r,refresh:()=>r.mutate()}};import vp from"swr";function SS({allocation:e}){return vp(e?["useApiEnrichedAllocation",e]:null,([,t])=>bo({allocation:t}))}import Op from"swr";import{isHex as Dp}from"viem";var Lp=e=>e?["useApiValidator",e]:null,Xr=(e,t)=>{let o=Lp(e),r=t?.opts?.isEnabled??!0,s=Op(r&&e?o:null,async([,a])=>{if(!a||!Dp(a))throw new Error(`Invalid validator ID: ${a}`);return ho({id:a})},{...t?.opts});return{...s,refresh:()=>s.mutate()}};import Hp from"swr";import{usePublicClient as Vp}from"@berachain/wagmi/hooks";import{rewardAllocatorFactoryAbi as Up}from"@berachain/abis/pol/rewards/rewardAllocatorFactory";async function es({publicClient:e,...t}){let{config:o}=P(t),r=await e.readContract({abi:Up,address:o.pol.rewardAllocationFactory,functionName:"getBaselineAllocation"}),s=r.startBlock!==0n?await e.getBlock({blockNumber:r.startBlock}):{timestamp:0};return wo(r,Number(s.timestamp))}function WS(){let e=Vp();return Hp(e?["baselineRewardAllocation"]:null,()=>(f(e),es({publicClient:e})))}import Np from"swr";var Wp=({pubKey:e,first:t=1})=>{let r=Np(e?["useDailyValidatorBlockStats",e,t]:null,async([,s,a])=>await Ro({pubKey:s,first:a}),{refreshInterval:18e4});return{...r,refresh:()=>r.mutate()}};import _p from"swr";import{usePublicClient as Qp}from"@berachain/wagmi/hooks";function Mp(e){let t=Qp(),r=_p(t?["useDefaultRewardAllocation"]:null,async()=>(f(t),await Po({client:t})),{...e?.opts});return{...r,refresh:()=>r.mutate()}}import Yp from"swr/immutable";var Gp=({account:e},t)=>{let r=Yp(e?["useManagedValidatorByAccount",e]:null,async([,s])=>await Co({account:s}),{...t?.opts});return{...r,refresh:()=>r.mutate()}};import{useMemo as os}from"react";import qp from"swr";import{useBeraWallet as $p,usePublicClient as zp}from"@berachain/wagmi/hooks";import{zeroAddress as Fp}from"viem";import{beraChefAbi as Kp}from"@berachain/abis/pol/rewards/beraChef";async function ts({client:e,pubKey:t,...o}){let{config:r}=P(o);try{let s=await e.readContract({address:r.pol.beraChef,abi:Kp,functionName:"valRewardAllocator",args:[t]});return s===Fp?null:s}catch(s){throw console.log("getValidatorRewardAllocatorAddress:",s),s}}function rs(e,t){return!e||!t?!1:t.operator?.toLowerCase()===e.toLowerCase()}function jp(e,t){return!e||!t?!1:t.rewardAllocator?t.rewardAllocator.toLowerCase()===e.toLowerCase():rs(e,t)}function Jp({pubKey:e,account:t},o){let r=zp(),s=U("mockValidatorOperator"),a=U("mockValidatorRewardAllocator"),i=r&&e?["useManagedValidatorRole",e]:null,{address:n}=$p(),l=t??n,u=qp(i,async([,c])=>{f(r);let[d,g]=await Promise.all([Oo({client:r,pubKey:c}),ts({client:r,pubKey:c})]);return{operator:d??null,rewardAllocator:g}},{...o?.opts}),m=os(()=>s||rs(l,u.data),[l,s,u.data]),p=os(()=>a||jp(l,u.data),[l,a,u.data]);return{...u,data:u.data?{...u.data,hasOperatorRole:m,hasRewardAllocatorRole:p}:void 0,refresh:()=>u.mutate()}}import Zp from"swr";import{keccak256 as Xp}from"viem";import{beaconDepositAbi as em}from"@berachain/abis/pol/beaconDeposit";import{bgtAbi as tm}from"@berachain/abis/pol/bgt";import{beraChefAbi as om}from"@berachain/abis/pol/rewards/beraChef";import{usePublicClient as rm}from"@berachain/wagmi/hooks";var ss=({pubkey:e},t)=>{let o=rm(),r=e?["useOnChainValidator",e]:null,s=t.opts?.isEnabled??!0,a=Zp(s&&o?r:null,async([,i])=>{f(o);let{config:n}=P({chainId:o.chain.id}),[l,u,m]=await Promise.all([o.readContract({address:n.depositContract,abi:em,functionName:"getOperator",args:[i]}),o?.readContract({address:n.tokens.bgt,abi:tm,functionName:"boostees",args:[i]}),o.readContract({address:n.pol.beraChef,abi:om,functionName:"getActiveRewardAllocation",args:[i]})]);return{id:Xp(i),pubkey:i,operator:l,votingPower:Number(u)}});return{...a,refresh:()=>{a.mutate()}}};import sm from"swr";import{usePublicClient as am}from"@berachain/wagmi/hooks";var PT=({valPubKey:e,options:t})=>{let o=am(),s=(t?.opts?.isEnabled??!0)&&o&&e?["useStakingPoolBatch",e]:null,a=sm(s,async([,i])=>(f(o),await So({client:o,valPubKey:i})),{refreshInterval:1e4,...t?.opts});return{...a,refresh:()=>a.mutate()}};import nm from"swr";import{GetUserValidatorInformation as im}from"@berachain/graphql/pol/subgraph";import{useBeraWallet as lm}from"@berachain/wagmi/hooks";var um=({account:e}={})=>{let{address:t}=lm(),o=e??t;return nm(o?["useSubgraphUserValidators",o]:null,async([,s])=>{let a=K("pol.subgraph",{}),{data:i}=await a.query({query:im,variables:{address:s}});return i.userValidatorInformations})};import pm from"swr";import{useBeraWallet as mm,usePublicClient as dm}from"@berachain/wagmi/hooks";var cm=e=>{let{address:t}=mm(),o=dm(),s=pm(o&&t?["useUserActiveValidators",t]:null,async([,a])=>await Eo({account:a,publicClient:o}),{...e,refreshInterval:e?.opts?.refreshInterval??18e4,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import fm from"swr";import{useBeraWallet as gm,usePublicClient as ym}from"@berachain/wagmi/hooks";var Am=({pubkey:e,...t})=>{let{address:o}=gm(),r=ym(),s=t.account??o,i=fm(s&&e?["useUserBoostsOnValidator",e,s]:null,async([,n,l])=>await To({account:l,pubkey:n,publicClient:r}),{refreshInterval:1e5});return{...i,refresh:()=>i.mutate()}};import{useCallback as bm,useMemo as hm}from"react";import ns from"swr";import{useBeraWallet as Rm}from"@berachain/wagmi/hooks";var as=e=>{let t=new Set;return e.forEach(o=>{Array.isArray(o.rewards)&&o.rewards.forEach(r=>{r.token&&t.add(r.token)})}),t};var wm=()=>{let{address:e}=Rm(),o=ns(e?["useUserClaimableIncentives",e]:null,async([,l])=>{if(!l)throw new x({message:"useUserClaimableIncentives needs a logged in account",level:"error"});return await no({account:l})},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),r=o?.data,s=hm(()=>{if(r){if(!Array.isArray(r)){fe.captureException(new x({message:"Incorrect aggregated incentives data receieved.",level:"error",extra:{allRewards:r,account:e}}));return}return as(r)}},[r,e]),i=ns(e&&r?["useUserClaimableIncentives",e,r]:null,async([,l,u])=>{if(!l)throw new v({property:"account",value:l,expected:"Address"});if(!u)return[];if(!Array.isArray(u))throw new v({message:"Incorrect aggregated incentives data receieved to calculate proofs.",property:"allRewards",value:u,expected:"Array",level:"error"});let m=new Set(u.map(c=>c.validator)),p=Array.from(m);return await Promise.all(p.map(async c=>({...await Xt({account:l,validator:c,page:1,perPage:1e4}),validator:c})))},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),n=bm(()=>{o?.mutate(),i?.mutate()},[o,i]);return{...i,isLoading:o?.isLoading||i?.isLoading,tokenMap:s,refresh:n}};import km from"swr/immutable";var JT=({account:e,validatorAddress:t})=>{let r=km(e?["useUserStakingPositions",e,t]:null,async([s,a,i])=>{let n=await Io(a);return i?n.filter(l=>l.validatorAddress.toLowerCase()===i.toLowerCase()):n});return{...r,refresh:()=>{r.mutate()}}};import{keccak256 as Pm}from"viem";function oE({pubkey:e},t){let{data:{validator:o,uptime:r}={},isLoading:s,error:a}=Xr(Pm(e),t),{data:i,isLoading:n,error:l}=ss({pubkey:e},t);return{data:{uptime:r,validator:o||i?{...o,...i,operator:i?.operator??o?.operator,dynamicData:{activeBoostAmount:i?.dynamicData?.activeBoostAmount??o?.dynamicData?.activeBoostAmount??"",queuedBoostAmount:o?.dynamicData?.queuedBoostAmount??"",usersActiveBoostCount:o?.dynamicData?.usersActiveBoostCount??0,usersQueuedBoostCount:o?.dynamicData?.usersQueuedBoostCount??0,allTimeDistributedBGTAmount:o?.dynamicData?.allTimeDistributedBGTAmount??"0",rewardRate:i?.dynamicData?.rewardRate??o?.dynamicData?.rewardRate??"",stakedBeraAmount:o?.dynamicData?.stakedBeraAmount??"",lastDayDistributedBGTAmount:o?.dynamicData?.lastDayDistributedBGTAmount??"",activeBoostAmountRank:o?.dynamicData?.activeBoostAmountRank??0,boostApr:o?.dynamicData?.boostApr??0,commissionOnIncentives:o?.dynamicData?.commissionOnIncentives??0},id:i?.id??o?.id,pubkey:i?.pubkey??o?.pubkey,metadata:i?.metadata??o?.metadata,rewardAllocationWeights:i?.rewardAllocationWeights??o?.rewardAllocationWeights??[]}:null},isLoading:s||n,error:a||l}}import Cm from"swr";function Sm({pubkey:e,dayRange:t}){let r=Cm(e&&t?["useValidatorAnalytics",e,t]:null,async([,s,a])=>await xo({pubkey:s,dayRange:a}),{refreshInterval:18e4});return{...r,refresh:()=>r.mutate()}}import Tm from"swr";import{usePublicClient as Em}from"@berachain/wagmi/hooks";var Im=(e,t)=>{let o=Em(),s=Tm(o&&e?["useValidatorCommission",e]:null,async([,a])=>await Bo({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};var xm=e=>{let{data:t,isLoading:o}=Kr(),r=$();return{data:t?vo(e,Number(t?.totalStakedBeraAmount),r):void 0,isLoading:o}};import Bm from"swr";import{usePublicClient as vm}from"@berachain/wagmi/hooks";function Om(e,t){let o=vm(),s=Bm(o&&e?["useValidatorQueuedCommission",e]:null,async([,a])=>(f(o),await Do({client:o,pubKey:a})),{...t?.opts});return{...s,refresh:()=>s.mutate()}}import Dm from"swr";import{usePublicClient as Lm}from"@berachain/wagmi/hooks";var Um=(e,t)=>{let o=Lm(),s=Dm(o&&e?["useValidatorQueuedOperatorAddress",e]:null,async([,a])=>await Lo({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};import Hm from"swr";import{usePublicClient as Vm}from"@berachain/wagmi/hooks";var Nm=(e,t)=>{let o=Vm(),s=Hm(o&&e?["useValidatorQueuedRewardAllocation",e]:null,async([,a])=>await Uo({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};import Wm from"swr";import{usePublicClient as _m}from"@berachain/wagmi/hooks";function Qm(e,t){let o=_m(),s=Wm(o&&e?["useValidatorRewardAllocation",e]:null,async([,a])=>await ko({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}}export{ha as OracleMode,or as USE_AGGREGATORS_QUOTES_QUERY_KEY,Fr as reducer,bf as useAggregatorsQuotes,he as useAggregatorsRouterFeeBps,rr as useAllUserPools,ua as useAllUserPoolsQueryKey,wS as useAllValidators,Bp as useAllValidatorsQueryKey,SS as useApiEnrichedAllocation,sr as useApiPool,da as useApiPoolQueryKey,Xr as useApiValidator,Lp as useApiValidatorQueryKey,WS as useBaselineRewardAllocation,BA as useBendZapSupply,$n as useBendZapSupplyHelper,hp as useBeraContractWrite,wC as useBeraCurrentPrice,Ne as useBexStatus,Nw as useBgtAprSimulation,eu as useBgtUnstakedBalance,KC as useBlockToTimestamp,Hr as useCappedGlobally,Vr as useCappedRelatively,au as useClaimableFees,SR as useCollateralWeights,Yf as useCreatePool,Ci as useCreateProposal,Wp as useDailyValidatorBlockStats,Mp as useDefaultRewardAllocation,XA as useEnsoSwapBundle,eg as useExploitedTokens,xa as useExploitedTokensQueryKey,No as useGetConvertToAssets,Lb as useGetPastVotes,pS as useGetVerifiedAbi,va as useGlobalLiquidityAndSwapVolume,Mb as useHasVoted,nk as useHighestVaultsAPR,cS as useHistoryState,rw as useHoneyAlerts,Nr as useHoneyBalances,iw as useHoneyChartData,dw as useHoneyGlobalData,Ew as useHoneySwapState,Wr as useHoneyVaultsBalance,_r as useIsBadCollateralAsset,Yr as useIsBasketModeEnabled,Jb as useIsCanceller,lg as useLiquidityMismatch,Gg as useLpPosition,Gp as useManagedValidatorByAccount,Jp as useManagedValidatorRole,dn as useMultipleTokenApprovalsWithSlippage,Rr as useMultipleTokenInformation,wr as useOnChainPoolData,Tn as useOnChainPoolDataQueryKey,ss as useOnChainValidator,rh as usePollAllProposals,Ki as usePollAllProposalsQueryKey,Ar as usePollAllowances,ke as usePollBalance,Kr as usePollGlobalData,gk as usePollMarkets,fu as usePollMarketsQueryKey,vn as usePollPoolCreationRelayerApproval,mh as usePollProposal,bh as usePollProposalThreshold,kh as usePollProposalVotes,tl as usePollProposalVotesQueryKey,Bh as usePollUserDelegates,Te as usePollWalletBalances,Qy as usePool,Fy as usePoolEvents,jy as usePoolHistoricalData,rA as usePools,Wn as usePoolsQueryKey,yS as usePrevious,Ce as usePriceImpact,Uh as useProposalFromTx,Br as useProposalSnapshot,Qh as useProposalState,qh as useProposalTimelockState,X as usePythLatestPrices,Lw as usePythUpdateFee,kk as useQueuedBeraUnlock,rR as useQuorum,vk as useRewardTokenToBeraRate,jk as useRewardVault,dr as useRewardVaultBalanceFromStakingToken,pt as useRewardVaultFromToken,oP as useRewardVaultIncentives,vu as useRewardVaultQueryKey,Hu as useRewardVaultRewards,At as useRewardVaults,lu as useRewardVaultsQueryKey,QP as useSWBeraVaultMetadata,ta as useSingleAggregatorQuote,cP as useStakedAPR,TP as useStakedData,LP as useStakedSnapshots,PT as useStakingPoolBatch,IC as useStakingTokenInformation,Ln as useSubgraphPoolQueryKey,um as useSubgraphUserValidators,zr as useTokenCurrentPrice,J as useTokenCurrentPrices,cr as useTokenInformation,vC as useTokenPrice,Y as useTokenPrices,z as useTokens,KP as useTotalStakedAmount,VC as useTotalSupply,cm as useUserActiveValidators,Am as useUserBoostsOnValidator,wm as useUserClaimableIncentives,JT as useUserStakingPositions,$u as useUserVaultInfo,Zu as useUserVaults,oE as useValidator,Sm as useValidatorAnalytics,Im as useValidatorCommission,xm as useValidatorEstimatedBgtPerYear,Om as useValidatorQueuedCommission,Um as useValidatorQueuedOperatorAddress,Nm as useValidatorQueuedRewardAllocation,Qm as useValidatorRewardAllocation,lC as useVaultAddress,dC as useVaultHistory,rp as useVaultValidators,ib as useZapStakeBera};
1
+ import{a as Dt}from"../chunk-OGBD5YOG.mjs";import{A as zt,Aa as _o,B as jt,Ba as Qo,C as Zt,Ca as Mo,Da as Yo,E as Jt,Ea as Fo,F as fe,Fa as Go,G as Xt,Ga as Ko,H as Fe,I as to,J as oo,K as ge,L as so,N as ao,O as no,P as io,Q as lo,R as uo,T as po,U as mo,V as ie,W as co,X as be,Y as he,Z as fo,_ as go,a as Lt,aa as yo,ba as Ao,c as pe,ca as bo,da as ho,e as x,ea as Ro,f as Ht,fa as wo,g as ce,ga as ko,h as Nt,ha as Po,i as Vt,ia as Co,ja as Io,k as Wt,ka as Eo,l as _t,m as Qt,ma as So,n as V,na as xo,oa as Bo,pa as vo,q as Mt,qa as Oo,r as Yt,ra as Do,s as Ft,ta as Lo,u as Gt,v as Kt,va as Uo,w as qt,wa as Ho,x as $t,xa as No,y as Z,ya as Vo,za as Wo}from"../chunk-IBJOI5SN.mjs";import"../chunk-NLVWRMGD.mjs";import{c as _,e as Ge,g as te,l as U,m as hd,n as qo}from"../chunk-COMMLZ3O.mjs";import{a as z,c as Re}from"../chunk-FM3WDBFH.mjs";import"../chunk-NAXAZJJY.mjs";import"../chunk-T5FSQ3YE.mjs";import"../chunk-OGJMSGB2.mjs";import"../chunk-575OK77P.mjs";import{c as To}from"../chunk-BEKH5EYT.mjs";import{a as Ut,b as j,c as g,d as W,e as Qe,f as Me,g as Ae}from"../chunk-QRAIGQF2.mjs";import{b as we,c as $o}from"../chunk-MJZHJFZO.mjs";import{a as C,d as me,j as Ye,k as eo,l as ro,m as ye}from"../chunk-PLIH6KQM.mjs";import"../chunk-MK5NS5B5.mjs";import{a as E,b as N,d as de,e as k}from"../chunk-IDFMLLDY.mjs";import{f as L,g as ee,h as B}from"../chunk-74QD4JAH.mjs";import Cs from"swr";import{usePublicClient as Is}from"@berachain/wagmi/hooks";var zo=({sharesAmount:e,vaultAddress:t,vaultChainId:o},r)=>{let s=Is({chainId:o}),a=Cs(s&&e&&t?["useGetConvertToAssets",e,t,o]:null,async([i,n,l])=>(g(s),Lt({sharesAmount:n,vaultAddress:l,publicClient:s})),{...r?.opts});return{...a,refresh:()=>{a.mutate()}}};import{useMemo as Aa}from"react";import{zeroAddress as ba}from"viem";import{defaultChainId as ha}from"@berachain/config/internal";import{useBeraWallet as Ra,usePublicClient as wa}from"@berachain/wagmi/hooks";import{Slippage as Es,Swap as Ts,SwapKind as Ss,Token as jo,TokenAmount as xs}from"@berachain-foundation/berancer-sdk";import{decodeFunctionData as Bs,formatEther as Zo,zeroAddress as vs}from"viem";import{getUriFromLink as Os}from"@berachain/config";import{ChainId as Jo}from"@berachain/config/internal";import{vaultAbi as Xo}from"@berachain/abis/bex/vault";var Ds=300,Ls=.05,Ke=Ss.GivenIn,qe=class extends x{name="Hub Pools";supportedChains=[Jo.MAINNET,Jo.BEPOLIA];url=Os(this.config.api);type="graphql";convertZeroToWrapped(t){return k(t,"BERA")?this.config.tokens.wbera:t}calculatePriceImpact(t){return t.error?(console.error("Swap price impact error",t),0):Number(t.priceImpact)}checkStalePrices({onChainAmount:t,sorPaths:o,sorAmount:r,queryData:s}){let a=Number.parseFloat(Zo(t.scale18))/Number.parseFloat(r);if(Math.abs(1-a)>Ls){console.warn("SOR returned stale prices. Delta from return amount is more than 5%",{deltaFromSorAmount:a});let i=new L({reason:"SOR_STALE_PRICES",level:"warning",message:"SOR returned stale prices. Delta from return amount is more than 5%",extra:{deltaFromSorAmount:a,pools:o.map(n=>n.pools),onChainAmount:Zo(t.scale18),sorAmount:r,queryData:s},fingerprint:["SOR_STALE_PRICES"]});Ae.captureException(i)}}async getQuote(t){let o=new Ht(this.url,this.chainId),{tokenIn:r,tokenOut:s,amount:a,slippage:i,account:n=vs,publicClient:l}=t;this.assertChainSupport({tokenIn:r,tokenOut:s}),g(l);let u=k(r,"BERA")||k(s,"BERA"),m=new jo(this.chainId,this.convertZeroToWrapped(r.address),r.decimals),p=new jo(this.chainId,this.convertZeroToWrapped(s.address),s.decimals),c=xs.fromRawAmount(m,a),{paths:d,priceImpact:f,returnAmount:y}=await o.sorSwapPaths.fetchSorSwapPaths({chainId:this.chainId,tokenIn:m.address,tokenOut:p.address,swapKind:Ke,swapAmount:c});if(!d?.length)throw new ee({response:void 0,endpoint:{url:this.url,name:this.name,type:this.type},reason:x.PATH_NOT_FOUND_REASON,chainId:this.chainId,payload:{tokenIn:m.address,tokenOut:p.address,swapKind:Ke,swapAmount:c},message:"No swap paths returned from Balancer API"});let A=new Ts({chainId:this.chainId,paths:d,swapKind:Ke,userData:"0x"}),h=await A.query(l.transport.url);if(!("expectedAmountOut"in h))throw new Error("No Bex paths found");return this.checkStalePrices({onChainAmount:h.expectedAmountOut,sorPaths:d,sorAmount:y,queryData:t}),{amountOut:h.expectedAmountOut.amount.toString(),amountIn:a,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:r,rawAmount:a,spender:h.to}),name:this.name,priceImpactPercentage:this.calculatePriceImpact(f),swapFeeBps:0,getCalldata:({account:R})=>{let b=A.buildCall({slippage:Es.fromPercentage(i.toString()),deadline:BigInt(Math.round(Date.now()/1e3)+Ds),queryOutput:h,sender:R,recipient:R,wethIsEth:u}),{args:P,functionName:w}=Bs({abi:Xo,data:b.callData});return{params:P,functionName:w,abi:Xo,address:b.to,value:b.value||BigInt(0)}}}}},$e=new qe;import{ChainId as er}from"@berachain/config/internal";var ze=class extends x{name="RedeemBgt";supportedChains=[er.MAINNET,er.BEPOLIA];type="rpc";checkChainSupport({tokenIn:t,tokenOut:o}){return super.checkChainSupport({tokenIn:t,tokenOut:o})?t.chainId===o.chainId&&k(t,"BGT",{chainId:t.chainId})&&k(o,"BERA"):!1}async getQuote({tokenIn:t,amount:o}){if(this.assertChainSupport({tokenIn:t,tokenOut:{...N,chainId:t.chainId}}),!k(t,"BGT",{config:this.config}))throw new B({property:"tokenIn",value:t,expected:"BGT",level:"warning"});return{amountOut:o,amountIn:o,allowanceRequirements:[],name:"RedeemBgt",isNativeSwap:!0,swapFeeBps:0}}},tr=new ze;import{zeroAddress as or}from"viem";import{ChainId as rr}from"@berachain/config/internal";import Us from"@berachain/abis/meta-aggregator/metaAggregatorV2";var je=class extends x{name="Enso";supportedChains=[rr.MAINNET];type="rest";needsAccountForQuote=!0;notFoundMessages=["Could not build shortcuts for route","Could not quote shortcuts for route","Swap not found for a required underlying of defi route,","No route found from"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,account:a=or,aggregatorsFeeBps:i,proxyAggregatorsThroughVercel:n=!1,rewardVault:l}){this.assertChainSupport({tokenIn:t,tokenOut:o});let{tokenInAddress:u,tokenOutAddress:m,isTokenInNative:p,isTokenOutNative:c}=this.parseAddresses(t.address,o.address),d=this.getAmountAfterFees(r,i);this.url=n?"/api/aggregators?aggregator=enso":`${this.config.bex.aggregatorsProxyUrl}/enso/api/v1/shortcuts/route?`;let f=new URL(this.url);f.searchParams.set("fromAddress",this.config.bex.aggregatorsRouterExecutor),f.searchParams.set("receiver",this.config.bex.aggregatorsRouterExecutor),f.searchParams.set("spender",this.config.bex.aggregatorsRouterExecutor),f.searchParams.set("amountIn",d),f.searchParams.set("tokenIn",u),f.searchParams.set("tokenOut",m),f.searchParams.set("chainId",rr.MAINNET.toString()),f.searchParams.set("slippage",(Number(s)*100).toString()),f.searchParams.set("refundReceiver",a);let A=await(await this.fetch(f)).json(),h=this.getInputData({tokenIn:u,amountIn:r,isNative:p}),R={tokenOut:m,receiver:a,minAmountOut:this.getMinAmountOut(A.amountOut.toString(),s),isNative:c},b={aggregator:A.tx?.to,data:A.tx?.data};return{amountOut:A.amountOut.toString(),amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:i,getCalldata:()=>({params:[h,R,b,{rewardVault:l??or,isSwapAndStake:!!l}],functionName:"swap",abi:Us,value:BigInt(p?r:"0"),address:this.config.bex.aggregatorsRouter})}}},Ze=new je;import{erc4626Abi as sr,formatUnits as Hs}from"viem";import{wberaStakerVaultAbi as Ns}from"@berachain/abis/pol/wberaStakerVault";var Je=class extends x{name="Mint";supportedChains=null;type="rpc";checkChainSupport({tokenIn:t,tokenOut:o,underlyingToken:r}){return super.checkChainSupport({tokenIn:t,tokenOut:o,underlyingToken:r})&&!!r&&r?.chainId===o.chainId&&(k(r,t)||k(t,"BERA")&&k(o,"SWBERA"))}async getQuote({tokenIn:t,tokenOut:o,amount:r,underlyingToken:s,publicClient:a}){this.assertChainSupport({tokenIn:t,tokenOut:o,underlyingToken:s}),j(s,"underlyingToken"),g(a);let i=await a.readContract({address:o.address,abi:sr,functionName:"convertToShares",args:[BigInt(r)]}),n=k(o,"SWBERA")&&k(t,"BERA");return{amountOut:i.toString(),amountIn:r,allowanceRequirements:n?[]:[{token:t,spender:o.address,amount:{raw:r,formatted:Hs(BigInt(r),t.decimals)}}],name:"Mint",isNativeSwap:!1,swapFeeBps:0,getCalldata:({account:l})=>n?{abi:Ns,address:o.address,functionName:"depositNative",params:[BigInt(r),l],value:BigInt(r)}:{abi:sr,address:o.address,functionName:"deposit",contractName:"others.erc4626",params:[BigInt(r),l],value:0n}}}},Xe=new Je;import{zeroAddress as Vs}from"viem";import{ChainId as Ws}from"@berachain/config/internal";import _s from"@berachain/abis/meta-aggregator/metaAggregatorV2";var ar="https://api.fly.trade/aggregator",et=class extends x{name="Fly";supportedChains=[Ws.MAINNET];type="rest";notFoundMessages=["Couldn't recognize to token","Couldn't recognize from token","There is not enough liquidity. Amount is too high.","Routes were not found"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,account:a,aggregatorsFeeBps:i,rewardVault:n}){this.assertChainSupport({tokenIn:t,tokenOut:o});let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:m,isTokenOutNative:p}=this.parseAddresses(t.address,o.address),c=this.getAmountAfterFees(r,i),d=new URL(`${ar}/quote`);this.url=d.toString();let f=new URLSearchParams({fromTokenAddress:l,toTokenAddress:u,sellAmount:c,slippage:(s/100).toString(),gasless:"false",network:"berachain"});f.set("fromAddress",this.config.bex.aggregatorsRouterExecutor),f.set("toAddress",this.config.bex.aggregatorsRouterExecutor),d.search=f.toString();let A=await(await this.fetch(d)).json(),h={amountOut:A.amountOut,amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:i??0},R=new URL(`${ar}/transaction`);this.url=R.toString();let b=new URLSearchParams({quoteId:A.id,estimateGas:"false"});R.search=b.toString();let w=await(await this.fetch(R)).json();return{...h,getCalldata:({account:I})=>{let T=this.getInputData({tokenIn:l,amountIn:r,isNative:m}),S={tokenOut:u,receiver:I,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:p},O={aggregator:w?.to,data:w?.data};return{params:[T,S,O,{rewardVault:n??Vs,isSwapAndStake:!!n}],functionName:"swap",abi:_s,value:k(t,"BERA")?BigInt(r):BigInt("0"),address:this.config.bex.aggregatorsRouter}}}}},tt=new et;import{formatUnits as Qs,parseUnits as Ms,zeroAddress as Ys}from"viem";import{ChainId as Fs}from"@berachain/config/internal";import Gs from"@berachain/abis/meta-aggregator/metaAggregatorV2";var ot=class extends x{name="Haiku";supportedChains=[Fs.MAINNET];type="rest";notFoundMessages=["token not found","Token is not supported","No route found for the given input or the liquidity is not enough","Invalid input amount. Please ensure the total amount of input is greater than 0.001 USD"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,referrer:n,rewardVault:l}){if(t.decimals===void 0||o.decimals===void 0)throw new L({message:"Missing required params",level:"error"});this.assertChainSupport({tokenIn:t,tokenOut:o});let{tokenInAddress:u,tokenOutAddress:m,isTokenInNative:p,isTokenOutNative:c}=this.parseAddresses(t.address,o.address),d=this.getAmountAfterFees(r,a),f={intent:{allowancesMode:"approve",slippage:s/100,receiver:this.config.bex.aggregatorsRouterExecutor,input_positions:{[`bera:${u}`]:Qs(BigInt(d),t.decimals)},target_weights:{[`bera:${m}`]:1}}},y=n==="ZAP"?"zap-haiku":"haiku";this.url=i?"/api/aggregators?aggregator=haikuQuote":`${this.config.bex.aggregatorsProxyUrl}/${y}/v1/quoteIntent`;let h=await(await this.fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)})).json(),R={amountOut:Ms(h.balances[0].amount,o.decimals).toString(),amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:a};this.url=i?"/api/aggregators?aggregator=haikuSolve":`${this.config.bex.aggregatorsProxyUrl}/${y}/v1/solveIntent`;let P=await(await this.fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({quoteId:h.quoteId})})).json();return{...R,getCalldata:({account:w})=>{let I=this.getInputData({tokenIn:u,amountIn:r,isNative:p,isPermit2Approval:!0,permit2SpenderAddress:this.config.bex.haikuAgentAddress}),T={tokenOut:m,receiver:w,minAmountOut:this.getMinAmountOut(R.amountOut,s),isNative:c},S={aggregator:P.to,data:P.data};return{params:[I,T,S,{rewardVault:l??Ys,isSwapAndStake:!!l}],functionName:"swap",abi:Gs,value:BigInt(p?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},rt=new ot;import{formatUnits as nr}from"viem";import{ChainId as Ks}from"@berachain/config/internal";function qs(e){return e?"previewMintHoney":"previewRedeemCollaterals"}var st=class extends x{name="Honey";supportedChains=[Ks.MAINNET];type="rpc";honeyToken=de(this);isHoneyNativeSwap({tokenIn:t,tokenOut:o,honeyNativeState:r,...s}){if(!r?.collateralList)return!1;let a=k(o,"HONEY",s),i=k(t,"HONEY",s);return!a&&!i?!1:r.collateralList.some(n=>k(n.address,a?t:o))}checkChainSupport({tokenIn:t,tokenOut:o,honeyNativeState:r}){return super.checkChainSupport({tokenIn:t,tokenOut:o})&&t.chainId===o.chainId&&this.isHoneyNativeSwap({tokenIn:t.address,tokenOut:o.address,honeyNativeState:r})}async getQuote({tokenIn:t,tokenOut:o,amount:r,publicClient:s,account:a,honeyNativeState:i}){let{collateralList:n}=i??{};if(!n)throw new B({message:"Invalid Honey Context state",property:"collaterals",value:n,expected:"TokenWithOrder[]"});g(s),this.assertChainSupport({tokenIn:t,tokenOut:o});let l=k(o,this.honeyToken),u=n,m=n.find(I=>k(I.address,l?t.address:o.address));if(!m)throw new L({message:"This collateral is not part of the Honey protocol"});let[p,c]=await Promise.all([fe({client:s,collateralList:[m]}),ge({client:s,isMint:l,collateralList:n,latestPrices:void 0,isPythWrapperEnabled:!1})]);if(!p)throw new L({message:"Failed to fetch the Honey vault balances"});if(c)return;let d=p[0],f=m.order;u.length>1&&f!==0&&(u.splice(f,1),u.unshift(m));let y=nr(BigInt(r),l?m.decimals:this.honeyToken.decimals),A={client:s,collateral:m,collateralList:n,amount:y,method:qs(l),latestPrices:void 0,isPythWrapperEnabled:!1},h=await Jt(A);if(!h)throw new L({message:"Failed to fetch the Honey preview"});let{honey:R,collaterals:b}=h;if(!(l?!0:new C(d?.balance.formatted??"0").gte(nr(b[m.address],m.decimals))))return;let w=await oo({state:{actionType:l?"mint":"redeem",fromAmount:[y],collaterals:u,isBasketModeEnabled:!1},collateralList:u,publicClient:s,priceFeedMap:void 0,isPythWrapperEnabled:!1});if(!w&&a)throw new L({message:"Failed to fetch the Honey swap payload"});return{amountIn:r,amountOut:l?R.toString():b[m.address].toString(),allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:"Honey",swapFeeBps:0,getCalldata:({account:I})=>w({account:I})}}},at=new st;import{zeroAddress as $s}from"viem";import{ChainId as zs}from"@berachain/config/internal";import js from"@berachain/abis/meta-aggregator/metaAggregatorV2";var nt=class extends x{name="KyberSwap";supportedChains=[zs.MAINNET];type="rest";notFoundMessages=["token not found","route not found","amountIn is greater than max allowed"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,rewardVault:n}){this.assertChainSupport({tokenIn:t,tokenOut:o});let{isTokenInNative:l,isTokenOutNative:u,tokenInAddress:m,tokenOutAddress:p}=this.parseAddresses(t.address,o.address),c=this.getAmountAfterFees(r,a);this.url=i?"/api/aggregators?aggregator=kyberswapRoutes":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/routes`;let d=new URL(this.url);d.searchParams.set("tokenIn",m),d.searchParams.set("tokenOut",p),d.searchParams.set("amountIn",c),d.searchParams.set("slippageTolerance",(s/100).toString()),d.searchParams.set("to",this.config.bex.aggregatorsRouterExecutor),d.searchParams.set("clientData",JSON.stringify({source:"berachain"}));let y=await(await this.fetch(d)).json(),A={amountOut:y.data.routeSummary.amountOut,amountIn:r,name:this.name,swapFeeBps:a,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter})},h={routeSummary:y.data.routeSummary,sender:this.config.bex.aggregatorsRouterExecutor,recipient:this.config.bex.aggregatorsRouterExecutor,slippageTolerance:s*100,deadline:Math.floor(Date.now()/1e3)+300,source:"berachain"},R=d.searchParams.entries(),b=new URL(i?"/api/aggregators?aggregator=kyberswapBuild":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/route/build`);for(let[T,S]of R)b.searchParams.set(T,S);let w=await(await this.fetch(b,{method:"POST",body:JSON.stringify(h)})).json(),I=this.getInputData({tokenIn:m,amountIn:r,isNative:l});return{...A,getCalldata:({account:T})=>{let S={tokenOut:p,receiver:T,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:u},O={aggregator:w.data.routerAddress,data:w.data.data};return{params:[I,S,O,{rewardVault:n??$s,isSwapAndStake:!!n}],functionName:"swap",abi:js,value:BigInt(l?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},it=new nt;import{zeroAddress as Zs}from"viem";import{ChainId as Js}from"@berachain/config/internal";import Xs from"@berachain/abis/meta-aggregator/metaAggregatorV2";var lt=class extends x{name="Oogabooga";supportedChains=[Js.MAINNET];type="rest";async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,rewardVault:n}){this.assertChainSupport({tokenIn:t,tokenOut:o});let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:m,isTokenOutNative:p}=this.parseAddresses(t.address,o.address),c=this.getAmountAfterFees(r,a),d=new URLSearchParams({tokenIn:l,tokenOut:u,amount:c,slippage:(s/100).toString(),to:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter});this.url=i?`/api/aggregators?aggregator=oogabooga&${d.toString()}`:`${this.config.bex.aggregatorsProxyUrl}/oogabooga/v1/swap?${d.toString()}`;let y=await(await this.fetch(this.url)).json(),A={amountOut:y.assumedAmountOut,amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,spender:this.config.bex.aggregatorsRouter,rawAmount:r}),name:this.name,priceImpactPercentage:y.priceImpact,swapFeeBps:a};return{...A,getCalldata:({account:h})=>{let R=this.getInputData({tokenIn:l,amountIn:r,isNative:m}),b={tokenOut:u,receiver:h,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:p},P={aggregator:y.tx?.to,data:y.tx?.data};return{params:[R,b,P,{rewardVault:n??Zs,isSwapAndStake:!!n}],functionName:"swap",abi:Xs,value:BigInt(m?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},ut=new lt;import{zeroAddress as ir}from"viem";import{ChainId as lr}from"@berachain/config/internal";import ea from"@berachain/abis/meta-aggregator/metaAggregatorV2";var pt=class extends x{name="OpenOcean";supportedChains=[lr.MAINNET];type="rest";url="https://open-api.openocean.finance/v4/bera/swap";notFoundMessages=["No avail liquidity for the pair"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,account:a=ir,aggregatorsFeeBps:i,publicClient:n,rewardVault:l}){if(g(n),!t.decimals)throw new B({property:"tokenIn.decimals",value:t.decimals,expected:"number",chainId:this.chainId});this.assertChainSupport({tokenIn:t,tokenOut:o});let u=this.getAmountAfterFees(r,i),{tokenInAddress:m,tokenOutAddress:p,isTokenInNative:c,isTokenOutNative:d}=this.parseAddresses(t.address,o.address),f=(await n.getGasPrice()).toString(),y=new URLSearchParams({chain:lr.MAINNET.toString(),inTokenAddress:m,outTokenAddress:p,amountDecimals:u,slippage:s<.01?"0.01":s.toString(),account:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter,gasPrice:f}),A=await this.fetch(`${this.url}?${y.toString()}`),h=await A.json();if(h.code!==200||!h.data){let b=this.notFoundMessages.some(P=>h.error.includes(P));throw new ee({response:A,endpoint:{url:this.url,name:this.name,type:this.type},cause:h,reason:b?x.PATH_NOT_FOUND_REASON:h.error})}let R={amountOut:h.data.outAmount,amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:i};return{...R,getCalldata:({account:b})=>{let P=this.getInputData({tokenIn:m,amountIn:r,isNative:c}),w={tokenOut:p,receiver:b,minAmountOut:this.getMinAmountOut(R.amountOut,s),isNative:d},I={aggregator:h.data.to,data:h.data.data};return{params:[P,w,I,{rewardVault:l??ir,isSwapAndStake:!!l}],functionName:"swap",abi:ea,value:BigInt(c?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},mt=new pt;import{ChainId as ur}from"@berachain/config/internal";import{wberaAbi as pr}from"@berachain/abis/wbera";var dt=class extends x{name="Wrap";supportedChains=[ur.MAINNET,ur.BEPOLIA];type="rpc";checkChainSupport({tokenIn:t,tokenOut:o}){return t.chainId!==o.chainId||!super.checkChainSupport({tokenIn:t,tokenOut:o})?!1:k(t,"BERA")&&k(o,"WBERA")||k(t,"WBERA")&&k(o,"BERA")}async getQuote({tokenIn:t,tokenOut:o,amount:r}){this.assertChainSupport({tokenIn:t,tokenOut:o});let s=k(t,"BERA")&&k(o,"WBERA");return{amountOut:r,amountIn:r,allowanceRequirements:[],name:s?"Wrap":"Unwrap",isNativeSwap:!0,swapFeeBps:0,getCalldata:()=>s?{abi:pr,address:this.config.tokens.wbera,functionName:"deposit",params:[],value:BigInt(r)}:{abi:pr,address:this.config.tokens.wbera,functionName:"withdraw",params:[BigInt(r)],value:BigInt(0)}}}},ct=new dt;import ra from"swr/immutable";import{useConfig as sa}from"@berachain/wagmi/hooks";import{getPublicClient as ta}from"@wagmi/core";import{erc4626Abi as oa}from"viem";async function mr({token:e,wagmiConfig:t}){try{if(k(e,"BERA"))return null;let o=ta(t,{chainId:e.chainId});g(o);let r=await o.readContract({address:e.address,abi:oa,functionName:"asset"});return await Z({address:r,publicClient:o,chainId:e.chainId})}catch(o){let r=Ut({cause:o});if(r.reason==='The contract function "asset" reverted.')return null;throw r}}function dr({token:e}){let t=sa();return ra(e&&t&&!k(e,"BERA")?["useUnderlyingAsset",e]:null,async([,o])=>mr({token:o,wagmiConfig:t}))}import aa from"swr/immutable";import{zeroAddress as na}from"viem";import ia from"@berachain/abis/meta-aggregator/metaAggregatorV2";import{usePublicClient as la}from"@berachain/wagmi/hooks";var ke=()=>{let e=la(),{config:t}=E({chainId:e.chain?.id}),o=aa(e&&t.bex.aggregatorsRouter&&t.bex.aggregatorsRouter!==na?["useAggregatorsRouterFeeBps",t.bex.aggregatorsRouter]:null,async([,r])=>{let s=await e.readContract({address:r,abi:ia,functionName:"SWAP_FEE_RATE"});return Number(s)});return{...o,refresh:o.mutate}};import ua from"swr";import{parseUnits as pa,zeroAddress as ma}from"viem";import{useBeraWallet as da,usePublicClient as ca}from"@berachain/wagmi/hooks";var cr="useAggregatorsQuotes";function fa({aggregator:e,account:t,args:o,feeBps:r,options:s,activeAggregators:a,isMAEnabled:i}){if(s?.opts?.isEnabled!==void 0&&!s?.opts?.isEnabled||!Number(o.amount)||!e.checkChainSupport({tokenIn:o.tokenIn,tokenOut:o.tokenOut,underlyingToken:o.underlyingToken,honeyNativeState:o.honeyNativeState}))return null;let n=e.name,l=!["Hub Pools","Honey","Wrap","Unwrap","Mint"].includes(n);if(!i&&l)return null;let{tokenIn:u,tokenOut:m,amount:p,slippage:c,referrer:d,rewardVault:f}=o,y=pa(p,u.decimals).toString();if(!(e.name==="Wrap"||e.name==="RedeemBgt"||e.name==="Honey"||!a||a.includes(n.toLowerCase().replaceAll(" ","")))||e.name==="Honey"&&o.honeyNativeState?.protocol.isPaused)return null;let h=e.name==="Mint"||e.name==="Enso (Mint)";return l&&r===void 0?null:[cr,n,u,m,y,c,e.needsAccountForQuote?t:void 0,l?r:0,d,f,h?o.underlyingToken:void 0,e.name==="Honey"?o.honeyNativeState?.collateralList:void 0]}function ga({aggregator:e,publicClient:t,proxyAggregatorsThroughVercel:o}){return async([,,r,s,a,i,n,l,u,m,p,c])=>e.getQuote({tokenIn:r,tokenOut:s,amount:a,slippage:i,account:n,aggregatorsFeeBps:l,publicClient:t,proxyAggregatorsThroughVercel:o,referrer:u,rewardVault:m,underlyingToken:p,honeyNativeState:{collateralList:c??[]}})}function Q({feeBps:e,publicClient:t,account:o,proxyAggregatorsThroughVercel:r,activeAggregators:s,isMAEnabled:a,...i},n){return ua(fa({aggregator:i.aggregator,account:o,args:i,feeBps:e,options:n,activeAggregators:s,isMAEnabled:a}),ga({aggregator:i.aggregator,proxyAggregatorsThroughVercel:r,publicClient:t}),n?.opts)}function ft(e){return{refreshInterval:1e4,errorRetryCount:3,...e?.opts,onErrorRetry(t,o,r,s,a){if(e?.opts?.onErrorRetry?.(t,o,r,s,a),!(t instanceof L&&t.reason===x.PATH_NOT_FOUND_REASON)){if(t instanceof ee&&t.statusCode===403){console.warn(o[1],"returned error 403, stopping retries");return}a.retryCount>(r.errorRetryCount??3)||setTimeout(()=>{s()},r.errorRetryInterval??ye(10))}}}}function ya(e,t){let{address:o}=da(),r=_("proxyAggregatorsThroughVercel"),s=_("aggregators"),a=ca(),{data:i}=ke();if(e.aggregator.name!=="Wrap"&&!((k(e.tokenIn.address,"BERA")||k(e.tokenIn.address,"WBERA"))&&(k(e.tokenOut.address,"BERA")||k(e.tokenOut.address,"WBERA"))))return null;let{config:n}=E(e),l=n.bex.aggregatorsRouter!==ma;return Q({...e,aggregator:e.aggregator,feeBps:i,activeAggregators:s,account:o,isMAEnabled:l,publicClient:a,proxyAggregatorsThroughVercel:r},{...t,opts:ft(t)})}var ka=[ut,tt,it,mt,rt,Ze,$e,at,Xe];function jf(e,t){let{address:o}=Ra(),r=_("proxyAggregatorsThroughVercel"),s=_("aggregators"),a=wa(),{data:i}=ke(),n=(k(e.tokenIn.address,"BERA")||k(e.tokenIn.address,"WBERA"))&&(k(e.tokenOut.address,"BERA")||k(e.tokenOut.address,"WBERA")),l=k(e.tokenIn.address,"BGT",{chainId:ha}),{data:u}=dr({token:e.tokenOut}),m=n||l,{config:p}=E(e),c=p.bex.aggregatorsRouter!==ba,d=ft(t),f={activeAggregators:s,isMAEnabled:c,underlyingToken:u,isNativeSwap:m,account:o,publicClient:a,proxyAggregatorsThroughVercel:r,feeBps:i},y=Q({...f,...e,aggregator:ut},{opts:d}),A=Q({...f,...e,aggregator:tt},{opts:d}),h=Q({...f,...e,aggregator:Xe},{opts:d}),R=Q({...f,...e,aggregator:it},{opts:d}),b=Q({...f,...e,aggregator:mt},{opts:d}),P=Q({...f,...e,aggregator:rt},{opts:d}),w=Q({...f,...e,aggregator:Ze},{opts:d}),{protocol:I}=Ge(),T=Q({...f,...e,aggregator:$e},{opts:{...d,isEnabled:I.isPaused===!1}}),S=Q({...f,...e,aggregator:ct}),O=Q({...f,...e,aggregator:tr},{opts:d}),H=Q({...f,...e,aggregator:at},{opts:d}),v=n?[S]:l?[O]:[y,h,A,R,b,P,w,H,I.isPaused===!1?T:null].filter(M=>M!==null);return{...Aa(()=>{let M=v.reduce((D,q)=>D||q.error,void 0),$=v.map((D,q)=>D.isLoading?m?ct.name:ka[q].name:null).filter(Boolean),F=v.filter(D=>D!==void 0&&!D.isLoading&&!D.error&&D.data?.amountOut).map(({data:D})=>D),G=F.length===0&&$.length>0;return{quotes:F,loadingAggregatorsNames:$,isLoading:G,error:M}},[v]),refresh:()=>v.map(M=>M.mutate())}}import Pa from"swr";var Ca=({query:e}={})=>["useAllUserPools",e],fr=(e,t)=>{let o=Pa(Ca({query:e}),async([r,s])=>ce({...s,fetchPolicy:"no-cache"}),{refreshInterval:18e4,...t?.opts});return{...o,refresh:()=>{o.mutate()}}};import Ia from"swr";import{isAddress as Ea}from"viem";var Ta=({poolId:e,account:t})=>e?["usePool-api",e,t]:null;function gr({poolId:e,account:t}){let o=Ia(Ta({poolId:e,account:t}),async([,r,s])=>{if(s&&!Ea(s))throw new B({property:"account",value:s,expected:"Address"});return Nt({poolId:r,account:s})},{refreshInterval:1e5});return{...o,refresh:()=>{o.mutate()}}}import{useMemo as hr}from"react";import{PoolType as Pe}from"@berachain-foundation/berancer-sdk";import xa from"swr/immutable";import{formatUnits as Ba,keccak256 as va,parseUnits as Ce,zeroAddress as yt}from"viem";import{poolCreationHelperAbi as Rr}from"@berachain/abis/bex/poolCreationHelper";import{GetDedupedSubgraphPools as Oa}from"@berachain/graphql/dex/subgraph";import{PoolType as yr}from"@berachain-foundation/berancer-sdk";import{formatUnits as Sa}from"viem";var gt=e=>[...e].sort((t,o)=>t.address.toLowerCase().localeCompare(o.address.toLowerCase())),Ar=e=>e.length===0?"":gt(e).map(t=>t.symbol).join(" | "),br=(e,t,o)=>{let r;switch(o){case yr.ComposableStable:r="STABLE";break;default:r=o.toString().toUpperCase();break}return o===yr.Weighted?t.length===0?"":`${gt(e).map((s,a)=>{let i=t[a];return`${(Number.parseFloat(Sa(i,18))*100).toFixed(0)}${s.symbol}`}).join("-")}-${r}`:`${gt(e).map(s=>s.symbol).join("-")}-${r}`};var Da=.005,La=(o=>(o.None="None",o.Custom="Custom",o))(La||{}),Ua=({poolCreationHelper:e,poolCreateTokens:t,initialLiquidityTokens:o,swapFeePercentage:r,salt:s,poolName:a,poolSymbol:i,owner:n,amplification:l,oracles:u,message:m,actionType:p,gasLimit:c=Ye})=>{let d=t.map(w=>w.address.toLowerCase()).sort((w,I)=>w<I?-1:1),f=d.map(w=>{let I=o.find(v=>v.address.toLowerCase()===w||k(w,"WBERA")&&k(v.address,"BERA")),T=I?Ce(I.amount,I.decimals):0n,S=u.find(v=>v.tokenAddress.toLowerCase()===w.toLowerCase()),O=S?S.address:yt,H=BigInt(S?S.cacheDuration:100);return{amountIn:T,rateProvider:O,cacheDuration:H}}),y=f.map(w=>w.amountIn),A=f.map(w=>w.rateProvider),h=f.map(w=>w.cacheDuration),R=o.findIndex(w=>k(w.address,"BERA")),b=R!==-1?Ce(o[R].amount,o[R].decimals):0n,P=b>0n;return{address:e,abi:Rr,functionName:"createAndJoinStablePool",params:[a,i,d,BigInt(l),A,h,!1,r,y,n,s,P],message:m,actionType:p,value:b,gasLimit:c,track:{eventName:"hub_pool_create",eventData:{poolName:a,poolSymbol:i}}}},Ha=({poolCreationHelper:e,poolCreateTokens:t,initialLiquidityTokens:o,normalizedWeights:r,swapFeePercentage:s,salt:a,poolName:i,poolSymbol:n,owner:l,message:u,actionType:m,gasLimit:p=Ye})=>{let c=[],d=[],f=[],y=[];t.map((R,b)=>({createToken:R.address,joinToken:o[b].address,weight:r[b],amountIn:Ce(o[b].amount,o[b].decimals)})).sort((R,b)=>R.createToken.toLowerCase()<b.createToken.toLowerCase()?-1:1).forEach(R=>{c.push(R.createToken),d.push(R.joinToken),f.push(R.weight),y.push(R.amountIn)});let A=d.indexOf(yt),h=A!==-1?y[A]:0n;return{address:e,abi:Rr,functionName:"createAndJoinWeightedPool",params:[i,n,c,d,f,Array(c.length).fill(yt),s,y,l,a],message:u,actionType:m,value:h,gasLimit:p,track:{eventName:"hub_pool_create",eventData:{poolName:i,poolSymbol:n}}}},wg=({poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:o,poolType:r,poolName:s,poolSymbol:a,swapFee:i,owner:n,amplification:l,oracles:u,weightsDuplicationThreshold:m=Da,...p})=>{let{data:c,error:d,isLoading:f}=xa(["useCreatePool__deduped_pool",e,r,o],async()=>{if(e.length===0||!r)return null;let R=pe("bex.subgraph",{});try{let b=we(e).map(I=>I.address.toLowerCase()).sort((I,T)=>I.toLowerCase()<T.toLowerCase()?-1:1);return(await R.query({query:Oa,variables:{tokens:b,type:r}})).data.pools.filter(I=>I.tokens?.every(T=>r===Pe.Weighted?b.includes(T.address)&&Math.abs(Number(T.weight)-Number(Ba(o[b.indexOf(T.address)],18)))<m:b.includes(T.address)||T.address===I.address))?.at(0)??null}catch{return null}}),{generatedPoolName:y,generatedPoolSymbol:A}=hr(()=>{if(!e)return{generatedPoolName:"",generatedPoolSymbol:""};let R=Ar(e),b=br(e,o,r);return{generatedPoolName:R,generatedPoolSymbol:b}},[e,o,r]),h=hr(()=>{if(!n||s===""||a===""||e.length!==t.length||e.length===0)return null;let R=Ce(i.toString(),16),b=va(Buffer.from(`${s}-${n}`)),{config:P}=E(p);return r===Pe.Weighted?Ha({poolCreationHelper:P.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:o,swapFeePercentage:R,salt:b,poolName:s,poolSymbol:a,owner:n,message:`Create pool ${s}`,actionType:"Create Pool"}):r===Pe.ComposableStable||r===Pe.MetaStable?Ua({poolCreationHelper:P.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:t,swapFeePercentage:R,salt:b,poolName:s,poolSymbol:a,owner:n,amplification:l,oracles:u,message:`Create pool ${s}`,actionType:"Create Pool"}):null},[e,t,o,r,i,s,a,n,l,u]);return{generatedPoolName:y,generatedPoolSymbol:A,isDupePool:!!c,dupePool:c,createPoolArgs:h,isLoadingPools:f,errorLoadingPools:d}};import Qa from"swr";import{usePublicClient as Ma}from"@berachain/wagmi/hooks";import{erc20Abi as Na,formatUnits as Va}from"viem";import{GetExploitedTokens as Wa}from"@berachain/graphql/dex/subgraph";var _a=1e-4;async function wr({token:e,publicClient:t,...o}){let r=pe("bex.subgraph",o),s=await t.readContract({address:e.address,abi:Na,functionName:"totalSupply"}),a=C(Va(s,e.decimals)).multipliedBy(_a),{data:i}=await r.query({query:Wa,variables:{token:e.address,balance:a.toFixed()}});return i.userInternalBalances.length>0}var Ya=e=>{let t=e?.filter(o=>o.address);return!t||t.length===0?null:["useExploitedTokens",t]},Og=({tokens:e})=>{let t=Ya(e),o=Ma(),r=Qa(o?t:null,async([,s])=>(g(o),(await Promise.all(s.map(i=>wr({token:i,publicClient:o})))).reduce((i,n,l)=>(n!==void 0&&(i[s[l].address]=n),i),{})));return{...r,refresh:()=>r.mutate()}};import Fa from"swr";var Ga=()=>{let e=Fa("useGlobalLiquidityAndSwapVolume",async()=>Vt());return{...e,data:{totalLiquidity:Number(e.data?.protocolMetricsAggregated.totalLiquidity),swapVolume24h:Number(e.data?.protocolMetricsAggregated.swapVolume24h)},refresh:()=>e.mutate()}};import{useEffect as Ka,useState as qa}from"react";import{PoolType as le}from"@berachain-foundation/berancer-sdk";var $a=.05,_g=({currentStep:e,tokenPrices:t,isLoadingTokenPrices:o,tokens:r,weights:s,weightsError:a,poolType:i,liquidityMismatchTolerancePercent:n=$a,oracles:l})=>{let[u,m]=qa({title:null,message:null});return Ka(()=>{if(!t||o||!r||!s||a||r.some(b=>!b.address)||l.some(b=>b.mode==="Custom")){m({title:null,message:null});return}let p=0,c=[],d=r.length,y=we(r).map(b=>{let P=t[b.address.toLowerCase()]?.price??0;if(!P||P===0)return c.push(0),null;let w=P*Number.parseFloat(b.amount);return c.push(w),p+=w,P});if(y.some(b=>b===null)||y.length!==d){m({title:"Missing token price data",message:`One or more token(s) do not have valid market price data. Please verify that token market prices align with the pool
2
+ weightings and your initial liquidity amounts.`});return}if(e==="Select Tokens"&&i===le.ComposableStable){let b=y.map(w=>w/y[0]);Math.max(...b)-Math.min(...b)>n?m({title:"Selected tokens have a significant price deviation",message:"Did you mean to create a Weighted pool instead?",suggestWeighted:!0}):m({title:null,message:null});return}if(p===0||c.some(b=>b===0)){m({title:null,message:null});return}let A=0;if(i===le.ComposableStable){let b=p/d;c.forEach(P=>{A+=Math.abs(b-P)})}else i===le.Weighted&&c.forEach((b,P)=>{let w=Number(s[P])/1e18,I=p*w;A+=Math.abs(I-b)});let h=A>=p*.9;A=Math.min(A,p);let R=A/p;R>n?m({title:h?"You could lose all of your initial liquidity":`You could lose $${A.toFixed(2)} (~${(R*100).toFixed(2)}%)`,message:`Based on the market token prices, the value of tokens does not align with the specified pool weights.
3
+ This discrepancy could expose you to potential losses from arbitrageurs. ${i===le.ComposableStable?"Did you mean to create a Weighted pool instead?":""}`,suggestWeighted:i===le.ComposableStable}):m({title:null,message:null})},[e,t,o,r,s,a,i,n,l]),u};import{formatEther as Er,isAddressEqual as hn}from"viem";import en from"swr";import{isAddress as kr,zeroAddress as tn}from"viem";import{rewardVaultAbi as on}from"@berachain/abis/pol/rewards/rewardVault";import{useBeraWallet as rn,usePublicClient as sn}from"@berachain/wagmi/hooks";import za from"swr/immutable";import{isAddress as ja,zeroAddress as Za}from"viem";import{rewardVaultFactoryAbi as Ja}from"@berachain/abis/pol/rewards/rewardVaultFactory";import{usePublicClient as Xa}from"@berachain/wagmi/hooks";var At=({tokenAddress:e},{isEnabled:t=!0}={})=>{let o=Xa(),r=o&&e&&ja(e)&&t?["useRewardVaultFromToken",e]:null,s=za(r,async([,a])=>{if(!a)throw new Error("useRewardVaultFromToken needs a valid token address");g(o);let{config:i}=E({chainId:o.chain.id}),n=await o.readContract({address:i.pol.factory,abi:Ja,functionName:"getVault",args:[a]});return n===Za?void 0:n});return{...s,refresh:()=>s.mutate()}};var Pr=({stakingToken:e,rewardVaultAddress:t},o)=>{let{address:r}=rn(),s=sn(),a=o?.opts?.isEnabled??!0,{data:i=t,error:n,mutate:l,isLoading:u}=At({tokenAddress:e},{isEnabled:!t&&a}),m=en(i&&r&&s&&kr(i)&&kr(r)&&a?["useVaultBalanceFromStakingToken",i,r]:null,async([,p,c])=>{if(g(s),p===tn)return{address:p,balance:0n};let d=await s.readContract({address:p,abi:on,functionName:"balanceOf",args:[c]});return{address:p,balance:d}});return{...m,refresh:()=>{l(),m.mutate()},isLoading:m.isLoading||u}};import mn from"swr";import{erc20Abi as dn,formatEther as cn,formatUnits as fn,isAddress as Ir,zeroAddress as gn}from"viem";import{defaultChainId as yn}from"@berachain/config/internal";import{useBeraWallet as An,usePublicClient as bn}from"@berachain/wagmi/hooks";import an from"swr/immutable";import{isAddress as nn,zeroAddress as ln}from"viem";import{defaultChainId as un}from"@berachain/config/internal";import{usePublicClient as pn}from"@berachain/wagmi/hooks";function Cr(e,t){let o=pn({chainId:e.chainId}),r=e?.address&&o&&nn(e.address)?["useTokenInformation",e.address,e.chainId]:null,s=an(r,async([a,i,n=un])=>k(i,"BERA")?{address:ln,decimals:N.decimals,name:N.name,symbol:N.symbol,chainId:n}:(g(o),await Z({address:i,publicClient:o,chainId:n})),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}}function Ie({address:e,owner:t,chainId:o=yn},r){let s=e;k(s,"ETH")&&(s=gn);let a=bn({chainId:o}),{address:i}=An(),n=t??i,l=(r?.opts?.isEnabled??!0)&&a&&n&&Ir(n)&&s&&Ir(s)?["usePollBalance",n,s,o]:null,{data:u,isLoading:m}=Cr({address:s,chainId:o}),p=k(s,"BERA"),{isLoading:c,data:d,error:f,...y}=mn(l,async([,R,b])=>(g(a),k(b,"BERA")?await a.getBalance({address:R}):await a.readContract({address:b,abi:dn,functionName:"balanceOf",args:[R]})),{refreshInterval:1e4}),A=!f&&d?k(s,"BERA")?cn(d):u&&!m?fn(d,u.decimals):void 0:void 0,h={chainId:o,balance:d?{raw:d.toString(),formatted:A??"0"}:{raw:"0",formatted:"0"},address:s,decimals:p?N.decimals:u?.decimals??0,symbol:p?N.symbol:u?.symbol??"",name:p?N.name:u?.name??""};return{...y,refresh:()=>{y.mutate()},isLoading:c||p?m:!1,error:f||!p?f:void 0,data:h}}var ky=({pool:e,vaultAddress:t},o)=>{let{data:r,...s}=Ie({address:e?.address}),{data:a,refresh:i}=Pr({stakingToken:e?.address,rewardVaultAddress:t??e?.rewardVault?.vaultAddress},o),n=e?Number.parseFloat(e?.dynamicData?.totalShares??"0"):0,l=e?.dynamicData?.totalLiquidity?Number(e?.dynamicData?.totalLiquidity??0):null,u=n&&l?l/Number(n):0,m=e?.tokens?.map(p=>({address:p.address,ratio:n?Number(p.balance)/Number(n):0}));return{data:{lpTokenPrice:u,lpBalance:r?{...r,usdValue:r?Number(r.balance.formatted)*u:void 0}:void 0,tokenBalances:e?.tokens?.map(p=>{let c=m?.find(y=>hn(y.address,p.address))?.ratio??0,d=c?C(r?.balance.formatted??"0").times(c):C(0),f=Number(p.balanceUSD)/Number(p.balance);return{...p,balance:{raw:d?.isGreaterThan(0)?d.times(10**p.decimals).toFixed(0).toString():"0",formatted:d.toString()},price:f,usdValue:Number.isNaN(f)||!d?void 0:Number.parseFloat(d.toString())*f}}),stakedBalance:a?.address?{...a,balance:{raw:a.balance.toString(),formatted:Er(a.balance)},usdValue:Number(Er(a.balance))*u}:void 0},...s,refresh:()=>{s.refresh?.(),i()}}};import{useMemo as Sr}from"react";import{parseUnits as Pn,zeroAddress as Cn}from"viem";import Rn from"swr";import{useBeraWallet as wn,useConfig as kn}from"@berachain/wagmi/hooks";function Tr(e,t){let o=kn(),{address:r}=wn(),s=o&&r&&e?.items?["usePollAllowances",r,e?.items]:null,a=Rn(s,async([,i,n])=>Eo({items:n,account:i,config:o}),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a?.mutate?.()}}function In({amount:e,decimals:t,slippage:o}){let r=Pn((o??0).toString(),t);return e+e*r/BigInt(100*10**t)}function En(e,t){let{slippage:o}=t??{},r=Sr(()=>e.filter(l=>l.token.address!==Cn).filter(l=>C(l.amount.formatted).gt(0)),[e]),{data:s,refresh:a,isLoading:i}=Tr({items:r});return{needsApproval:Sr(()=>s?.map(l=>{let u=r.find(p=>k(p.token.address,l.token));if(!u)throw new L({message:"Token not found when matching allowance in useMultipleTokenApprovalsWithSlippage",cause:{allowance:l,items:r}});let m=In({decimals:u.token.decimals,amount:BigInt(u.amount.raw),slippage:o});if(C(l.allowance.raw).lt(m))return{...u,needsApproval:!0,maxAmountIn:m,allowance:{raw:l.allowance.raw,formatted:l.allowance.formatted}}}).filter(l=>l!==void 0)??[],[s,o,r]),refresh:a,isLoading:i}}import{useMemo as Un}from"react";import Hn from"swr/immutable";import{formatUnits as Nn,isAddress as Vn}from"viem";import{usePublicClient as Wn}from"@berachain/wagmi/hooks";import Tn from"swr/immutable";import{isAddress as Sn}from"viem";import{defaultChainId as xn}from"@berachain/config/internal";import{usePublicClient as Bn}from"@berachain/wagmi/hooks";function xr(e,t){let o=Bn(),r=o&&e.addresses?["useMultipleTokenInformation",e.addresses,e.chainId??xn]:null,s=Tn(r,async([,a,i])=>(g(o),Promise.all(a.map(async n=>{if(!n||!Sn(n,{strict:!1}))throw new Error("Invalid address");let l=await Z({address:n,publicClient:o,chainId:i});if(!l)throw new Error(`Token ${n} not found`);return l}))),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}}import{useMemo as Ee}from"react";import On from"swr";import{isAddress as Dn,zeroAddress as Ln}from"viem";import{defaultChainId as re}from"@berachain/config/internal";import{useContext as vn}from"react";function oe(){let e=vn(qo);if(!e)throw new L({message:"useTokens must be used within a TokensProvider",level:"fatal"});return{...e,data:{tokenList:e.tokenList,customTokenList:e.userTokens,featuredTokenList:e.featuredTokens}}}function se({addressIn:e}={},t={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{tokenList:o,ensoTokens:r}=oe(),s=Ee(()=>{let p=[];return e&&p.push(...e.filter(c=>Dn(c))),p.map(c=>c.toLowerCase())},[o]),i=Ee(()=>{let p=new Set(o?.map(c=>c.address.toLowerCase()));return o.some(c=>k(c,"WBERA"))&&p.add(Ln),s?.some(c=>!p.has(c))},[s,o])?s:o.map(p=>p.address),n=i&&(t.opts?.isEnabled??!0)?["useTokenCurrentPrices",i.map(p=>p.toLowerCase())]:null,l=On(n,async([,p])=>Io({addressIn:p}),t.opts),u=Ee(()=>{if(!r)return{};let p=new Map([[re,new Map]]);for(let c of r)c.price===void 0||c.chainId!==re||p.get(re)?.set(c.address.toLowerCase(),{...c,price:c.price,chainId:re});return Object.fromEntries(i.map(c=>{let d=p.get(re)?.get(c)?.price;return d?[c.toLowerCase(),{price:d,chainId:re,updatedAt:Date.now()}]:[null,null]}))},[r]),m=Ee(()=>({...u,...l.data}),[u,l.data]);return{...l,data:m}}function _n(e){let t="poolId"in e?e.poolId?.slice(0,42):e.address;return Vn(t)&&t?["useOnChainPoolData",t]:null}function Br(e){let t=Wn(),o=e?.slice(0,42),r=_n({poolId:e}),{data:s,error:a,isLoading:i,mutate:n}=Hn(t?r:null,async([,d])=>Wt({poolId:d,publicClient:t})),{data:l,isLoading:u}=xr({addresses:s?.poolTokens[0]}),{data:m,isLoading:p}=se({addressIn:s?.poolTokens[0]});return{data:Un(()=>{if(!s||!l)return;let d={address:o.toLowerCase(),id:e.toLowerCase(),type:s.type,factory:s.factory,totalShares:s.totalSupply,totalLiquidity:"0",swapFee:s.swapFee,createTime:0,name:s.name,tokens:l.map((y,A)=>({address:y.address.toLowerCase(),name:y.name,decimals:y.decimals,symbol:y.symbol,index:A,weight:s.weights?.[A]??void 0,balance:Nn(BigInt(s.poolTokens[1][A]),y.decimals),token:{__typename:"Token",token:y,latestUSDPrice:m?.[y.address]}})),amplificationParameter:s?.amplificationParameter&&{currentFormattedValue:Number(s.amplificationParameter[0])/Number(s.amplificationParameter[2])}},f=d.tokens?.reduce((y,A)=>{let h=Number(m?.[A.address.toLowerCase()]?.price??0);return h?y+h*Number(A.balance):y},0);return d.totalLiquidity=f?.toString()??"",d},[s,l,m,o,e]),error:a,isLoading:i||u||p,mutate:n,refresh:()=>n()}}import Qn from"swr";import{vaultAbi as Mn}from"@berachain/abis/bex/vault";import{useBeraWallet as Yn,usePublicClient as Fn}from"@berachain/wagmi/hooks";var Gn=e=>{let{address:t}=Yn(),o=Fn(),r=t&&o?["usePollPoolCreationRelayerApproval",t,o.chain.id]:null,s=Qn(r,async([,i])=>{g(o);let{config:n}=E({chainId:o.chain.id});return await o.readContract({address:n.bex.vault,abi:Mn,functionName:"hasApprovedRelayer",args:[i,n.bex.poolCreationHelper]})},{...e?.opts});return{...s,refreshPoolCreationApproval:()=>{s.mutate()}}};function yA({poolId:e}){let t=gr({poolId:e}),{data:o,isLoading:r,refresh:s,error:a}=Br(e);return{data:[void 0,t.data,o],isLoading:t.isLoading||r,isError:t.error||a,refresh:()=>{t.refresh(),s()}}}import Kn from"swr/immutable";var RA=({poolId:e,typeInArray:t})=>Kn(e?["usePoolEvents",e,t]:null,async([,o,r])=>_t({poolId:o,typeInArray:r}),{refreshInterval:18e4});import qn from"swr";var IA=({poolId:e,...t},o)=>{let{config:r}=E(t),a=qn(e?["usePoolHistoricalData",e]:null,async([,i])=>await Qt({poolId:i,chain:r.bex.chainName}),o?.opts);return{...a,refresh:()=>void a.mutate()}};import{useMemo as vr}from"react";import $n from"swr";import{useBeraWallet as zn}from"@berachain/wagmi/hooks";var jn=({query:e}={})=>["useAllPools",e],OA=(e,t)=>{let{address:o}=zn(),{data:r,isLoading:s,mutate:a}=fr({userAddress:o,chain:e.chain}),{data:i,isLoading:n,mutate:l}=$n(jn({query:e}),async([p,c])=>ce(c),{refreshInterval:18e4,...t?.opts}),u=vr(()=>{if(!i||!r?.pools?.length)return i?.pools??[];let p=Object.fromEntries(r.pools.map(c=>[c.id.toLowerCase(),c]));return i.pools.map(c=>({...c,...p[c.id.toLowerCase()]||{}})).filter(Boolean)},[i,r]),m=vr(()=>({page:Math.ceil((e?.skip??0)/(e?.first??10)),pageSize:e?.first,count:Math.ceil((i?.count??0)/(e?.first??10))}),[i,e.skip,e.first]);return{pools:u??[],walletPools:i?.pools??[],isLoading:n||s,refresh:()=>{l(),a()},pagination:m}};import{useMemo as Jn}from"react";import{useCallback as Zn,useMemo as Or}from"react";import{defaultChainId as ae}from"@berachain/config/internal";function J({tokens:e}={},t={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{ensoTokens:o}=oe(),r=se({addressIn:e?.filter(n=>n.chainId===ae).map(n=>n.address)},t),s=Or(()=>{let n=[];if(!e)return[];let l=new Map;for(let u of e){let m=u.chainId??ae;l.has(m)||l.set(m,new Map),l.get(m)?.set(u.address.toLowerCase(),u)}if(r.data){for(let[u,m]of Object.entries(r.data))if(m&&l.get(m.chainId??ae)?.get(u.toLowerCase())&&m.price!==void 0){let p=l.get(m.chainId??ae)?.get(u.toLowerCase());if(!p)continue;n.push({...p,chainId:m.chainId,price:m.price})}}if(o)for(let u of o)u.price!==void 0&&u.chainId!==void 0&&n.push({...u,chainId:u.chainId,price:u.price});return n},[r.data,o,e]),a=Or(()=>{let n={};for(let l of s){let u=l.chainId??ae;n[u]||(n[u]={}),n[u][l.address.toLowerCase()]=l.price}return n},[s]),i=Zn(n=>n?a[n.chainId??ae]?.[n.address?.toLowerCase()]??void 0:void 0,[a]);return{isLoading:r.isLoading,data:s,priceMap:a,getTokenPrice:i}}function Te({tokenIn:e,tokenOut:t,formattedAmountIn:o,formattedAmountOut:r}){let{getTokenPrice:s,isLoading:a}=J({tokens:e&&t?[e,t]:void 0});return{data:Jn(()=>{if(!e||!t||!o||!r)return;let n=s(e),l=s(t);return!n||!l?null:$o(n.toString(),l.toString(),o,r)},[e,t,o,r]),isLoading:a}}import gi from"swr";import{parseUnits as kt}from"viem";import{defaultChainId as yi}from"@berachain/config/internal";import{useBeraWagmi as Ai,useBeraWallet as bi,usePublicClient as hi}from"@berachain/wagmi/hooks";import{formatUnits as Vr}from"viem";import{encodeFunctionData as ri,getAddress as si}from"viem";import{morphoAbi as Ur}from"@berachain/abis/bend/morpho";import{encodeFunctionData as Xn,erc20Abi as bt,ethAddress as Rt,formatUnits as ei,getAddress as ti,zeroAddress as oi}from"viem";function X(e){return e===oi?Rt:e}function ht(e){if(e!=null)return typeof e=="bigint"?e:BigInt(e)}var Dr=async({fromAddress:e,amountIn:t,tokenIn:o,chainId:r,ensoClient:s,bundle:a,publicClient:i})=>{let n=[];if(o!==Rt){let u=await s.getApprovalData({fromAddress:e,tokenAddress:o,chainId:r,amount:t}),m=!0;if(i&&(m=await i.readContract({address:o,abi:bt,functionName:"allowance",args:[e,u.spender]})<BigInt(t)),m){let p=ht(u.tx.value)??0n;n.push({to:u.tx.to,data:u.tx.data,value:p,gasLimit:BigInt(u.gas)})}}let l=ht(a.tx.value)??0n;return n.push({to:a.tx.to,data:a.tx.data,value:l,gasLimit:BigInt(a.gas)}),n},Lr=async({fromAddress:e,amountIn:t,tokenIn:o,bundle:r,publicClient:s})=>{let a=[],i=ti(r.tx.to),n=null;if(X(o.address)!==Rt){let m=await s.readContract({address:o.address,abi:bt,functionName:"allowance",args:[e,i]}),p=BigInt(t);if(m<p){let d=p.toString();n={token:o,amount:{raw:d,formatted:ei(p,o.decimals)},spender:i};let f=Xn({abi:bt,functionName:"approve",args:[i,p]});a.push({to:o.address,data:f,value:0n})}}let u=ht(r.tx.value)??0n;return a.push({to:r.tx.to,data:r.tx.data,value:u,gasLimit:r.gas?BigInt(r.gas):void 0}),{transactions:a,approval:n}};function ue(e){let t=new C(e).dividedBy(100),o=new C(1).minus(t);if(o.lte(0))throw new B({property:"slippage",value:e,expected:"a value lower than 100"});return o}function wt(e,t,o){return e.multipliedBy(new C(10).pow(o.decimals)).dividedBy(new C(10).pow(t.decimals))}async function Hr({publicClient:e,ensoWalletV2Factory:t,accountAddress:o}){return e.readContract({address:t,abi:Dt,functionName:"getAddress",args:[o]})}async function Nr({publicClient:e,primaryAddress:t,accountAddress:o,ensoWalletV2Address:r}){return e.readContract({address:t,abi:Ur,functionName:"isAuthorized",args:[o,r]})}async function Se({fromAddress:e,amountIn:t,tokenIn:o,primaryAddress:r,bundle:s,publicClient:a,ensoWalletV2Address:i,isAuthorized:n}){let{config:l}=E({}),{walletFlashloanAdapter:u}=l.enso;j(u,"config.enso.walletFlashloanAdapter");let{transactions:m,approval:p}=await Lr({fromAddress:e,amountIn:t,tokenIn:o,bundle:s,publicClient:a}),c=[];return n||c.push({to:r,data:ri({abi:Ur,functionName:"setAuthorization",args:[i,!0]}),value:0n}),c.push(...m),{transactions:c,approvals:p?[p]:[],ensoWalletFlashloanAdapter:si(u)}}var ai=25n,Wr=10000n;function ni({repayAmount:e,collateralPriceInLoanAsset:t,collateralToken:o,loanToken:r,slippage:s,currentCollateral:a}){let i=ue(s),n=new C(t);if(n.lte(0))throw new B({property:"collateralPriceInLoanAsset",value:t,expected:"a value greater than zero"});let l=new C(10).pow(r.decimals),u=new C(10).pow(o.decimals),c=new C(e).dividedBy(l).dividedBy(n).dividedBy(i).multipliedBy(u).integerValue(C.ROUND_UP);return c.lte(0)?"0":C.minimum(c,new C(a)).toFixed(0)}function ii({repayAmount:e,collateralToWithdraw:t,collateralToken:o,loanToken:r}){return{finalCollateral:Vr(BigInt(t),o.decimals),totalBorrow:Vr(BigInt(e),r.decimals)}}async function _r({fromAddress:e,repayAmount:t,collateralToken:o,loanToken:r,marketId:s,primaryAddress:a,chainId:i,ensoClient:n,slippage:l,publicClient:u,collateralPriceInLoanAsset:m,currentCollateral:p,currentDebt:c,ensoWalletV2Address:d,isAuthorized:f}){W(e,"fromAddress"),Qe(t,"repayAmount"),Qe(c,"currentDebt");let y=BigInt(t),A=BigInt(c),h=y>=A,R=X(o.address),b=X(r.address),P=(y*ai+(Wr-1n))/Wr,w=h?P:0n,I=(y+w).toString(),T=ni({repayAmount:I,collateralPriceInLoanAsset:m,collateralToken:o,loanToken:r,slippage:l,currentCollateral:p}),S=BigInt(T)>=BigInt(p),O=h&&w>0n&&!S;if(BigInt(T)<=0n)throw new B({property:"collateralToWithdraw",value:T,expected:"positive amount"});let H=[{protocol:"enso",action:"route",args:{tokenIn:R,tokenOut:b,amountIn:T,slippage:l*100}},{protocol:"bend",action:"repay",args:{primaryAddress:a,positionId:s,tokenIn:b,amountIn:{useOutputOfCallAt:0},onBehalfOf:e}}],v=H.length,Y=O?[{protocol:"enso",action:"balance",args:{token:b}},{protocol:"enso",action:"route",args:{tokenIn:b,tokenOut:R,amountIn:{useOutputOfCallAt:v},slippage:l*100}},{protocol:"bend",action:"deposit",args:{primaryAddress:a,positionId:s,tokenIn:R,amountIn:{useOutputOfCallAt:v+1},onBehalfOf:e}}]:[],M=[...H,...Y,{protocol:"bend",action:"withdraw",args:{primaryAddress:a,positionId:s,tokenOut:R,amountOut:T,onBehalfOf:e}}],F=[{protocol:"bend",action:"flashloan",args:{flashloanToken:R,flashloanAmount:T,tokenOut:b,callback:M}}],G=await n.getBundleData({fromAddress:e,receiver:e,spender:e,chainId:i,routingStrategy:"ensowallet-v2"},F),{transactions:D}=await Se({fromAddress:e,amountIn:"0",tokenIn:o,primaryAddress:a,bundle:G,publicClient:u,ensoWalletV2Address:d,isAuthorized:f});return{bundle:G,transactions:D,positionEstimate:ii({repayAmount:t,collateralToWithdraw:T,collateralToken:o,loanToken:r})}}import li from"swr";import{getAddress as ui}from"viem";import{useBeraWallet as pi,usePublicClient as mi}from"@berachain/wagmi/hooks";function xe({chainId:e}){let{address:t}=pi(),o=mi({chainId:e}),{config:r}=E({}),s=r.enso.walletV2Factory;return li(t&&s?["useEnsoWalletV2Address",t,s]:null,async([i,n,l])=>(g(o),Hr({publicClient:o,ensoWalletV2Factory:ui(l),accountAddress:n})),{refreshInterval:18e4})}import di from"swr";import{useBeraWallet as ci,usePublicClient as fi}from"@berachain/wagmi/hooks";function Be({chainId:e,primaryAddress:t,ensoWalletV2Address:o}){let{address:r}=ci(),s=fi({chainId:e});return di(r&&t&&o?["useIsBendAuthorized",r,t,o]:null,async([i,n,l,u])=>(g(s),Nr({publicClient:s,primaryAddress:l,accountAddress:n,ensoWalletV2Address:u})),{refreshInterval:18e4})}function Sb({collateralToken:e,loanToken:t,marketId:o,primaryAddress:r,repayAmount:s,slippage:a,chainId:i,collateralPriceInLoanAsset:n,currentCollateral:l,currentDebt:u},m){let{address:p}=bi(),{account:{chainId:c}={}}=Ai(),d=i??c??yi,f=hi({chainId:d}),{data:y}=xe({chainId:d}),{data:A}=Be({chainId:d,primaryAddress:r,ensoWalletV2Address:y}),h=e&&t&&o&&r&&s&&y&&A!==void 0&&e.address!==t.address&&Number(s)>0&&a!==void 0&&n!==void 0&&l&&u&&Number(u)>0&&p&&(m?.opts?.isEnabled??!0)?["useBendDemultiply",p,e,t,o,r,d,s,a,n,l,u,y,A]:null;return gi(h,async([R,b,P,w,I,T,S,O,H,v,Y,M,$,F])=>{g(f);let G=kt(O,w.decimals).toString(),D=kt(Y,P.decimals).toString(),q=kt(M,w.decimals).toString();return _r({fromAddress:b,repayAmount:G,collateralToken:P,loanToken:w,marketId:I,primaryAddress:T,chainId:S,ensoClient:z(),slippage:H,publicClient:f,collateralPriceInLoanAsset:v,currentCollateral:D,currentDebt:q,ensoWalletV2Address:$,isAuthorized:F})},{...m?.opts,refreshInterval:1e5})}import ki from"swr";import{parseUnits as Pt}from"viem";import{defaultChainId as Pi}from"@berachain/config/internal";import{useBeraWagmi as Ci,useBeraWallet as Ii,usePublicClient as Ei}from"@berachain/wagmi/hooks";function Ri({rawSupplyCollateralAmount:e,rawCurrentCollateralAmount:t,rawCurrentBorrowAmount:o,formattedCollateralPriceInLoanAsset:r,collateralToken:s,loanToken:a,leverageMultiplier:i,slippage:n}){let l=Math.max(i,1);if(l<=1)return"0";let u=ue(n),m=new C(r);if(m.lte(0))throw new B({property:"formattedCollateralPriceInLoanAsset",value:r,expected:"a value greater than zero"});let p=wt(m,s,a),c=new C(1).minus(new C(1).dividedBy(l)),d=new C(t).plus(e),f=new C(o),y=new C(1).minus(c.multipliedBy(u));if(y.lte(0))throw new B({property:"leverageMultiplier",value:i,expected:"a lower leverage target for current slippage"});let A=c.multipliedBy(d).multipliedBy(p).minus(f).dividedBy(y);if(A.lte(0))return"0";let h=A.integerValue(C.ROUND_UP);return h.lte(0)?"0":h.toFixed(0)}function wi({rawSupplyCollateralAmount:e,collateralToken:t,loanToken:o,rawBorrowAmount:r,formattedCollateralPriceInLoanAsset:s,slippage:a}){let i=new C(10).pow(t.decimals),n=new C(10).pow(o.decimals),l=new C(e),u=new C(r);if(u.lte(0))return{finalCollateral:l.dividedBy(i).toFixed(),totalBorrow:"0"};let m=ue(a),p=wt(new C(s),t,o),c=p.lte(0)?new C(0):u.multipliedBy(m).dividedBy(p),d=l.plus(c).dividedBy(i),f=u.dividedBy(n);return{finalCollateral:d.toFixed(),totalBorrow:f.toFixed()}}async function Qr({fromAddress:e,rawSupplyCollateralAmount:t,rawCurrentCollateralAmount:o,rawCurrentBorrowAmount:r,collateralToken:s,loanToken:a,marketId:i,primaryAddress:n,chainId:l,ensoClient:u,slippage:m,leverageMultiplier:p,publicClient:c,formattedCollateralPriceInLoanAsset:d,ensoWalletV2Address:f,isAuthorized:y}){W(e,"fromAddress");let A=X(s.address),h=X(a.address),R=Ri({rawSupplyCollateralAmount:t,rawCurrentCollateralAmount:o,rawCurrentBorrowAmount:r,formattedCollateralPriceInLoanAsset:d,collateralToken:s,loanToken:a,leverageMultiplier:p,slippage:m}),b=0,P=1,w=[{protocol:"bend",action:"deposit",args:{primaryAddress:n,positionId:i,tokenIn:A,amountIn:t,onBehalfOf:e}}],I=[{protocol:"bend",action:"flashloan",args:{flashloanToken:h,flashloanAmount:R,tokenIn:A,amountIn:t,tokenOut:h,callback:[{protocol:"enso",action:"route",args:{tokenIn:h,tokenOut:A,amountIn:R,slippage:m*100}},{protocol:"enso",action:"balance",args:{token:A}},{protocol:"bend",action:"deposit",args:{primaryAddress:n,positionId:i,tokenIn:A,amountIn:{useOutputOfCallAt:P},onBehalfOf:e}},{protocol:"bend",action:"borrow",args:{primaryAddress:n,positionId:i,collateral:A,tokenOut:h,amountOut:R,onBehalfOf:e}}]}}],T=R==="0"?w:I,S=await u.getBundleData({fromAddress:e,receiver:e,spender:e,chainId:l,routingStrategy:"ensowallet-v2"},T),{transactions:O}=await Se({fromAddress:e,amountIn:t,tokenIn:s,primaryAddress:n,bundle:S,publicClient:c,ensoWalletV2Address:f,isAuthorized:y});return{bundle:S,transactions:O,positionEstimate:wi({rawSupplyCollateralAmount:t,collateralToken:s,loanToken:a,rawBorrowAmount:R,formattedCollateralPriceInLoanAsset:d,slippage:m})}}function Gb({collateralToken:e,loanToken:t,marketId:o,primaryAddress:r,formattedSupplyCollateralAmount:s,formattedCurrentCollateralAmount:a,formattedCurrentBorrowAmount:i,leverageMultiplier:n,slippage:l,chainId:u,formattedCollateralPriceInLoanAsset:m},p){let{address:c}=Ii(),{account:{chainId:d}={}}=Ci(),f=u??d??Pi,y=Ei({chainId:f}),{data:A}=xe({chainId:f}),{data:h}=Be({chainId:f,primaryAddress:r,ensoWalletV2Address:A}),R=e&&t&&o&&r&&A&&h!==void 0&&e.address!==t.address&&l!==void 0&&n!==void 0&&m!==void 0&&(Number(s??0)>0||n>1&&(Number(a??0)>0||Number(s??0)>0))&&c&&(p?.opts?.isEnabled??!0)?["useBendMultiply",c,e,t,o,r,f,s??"",a??"",i??"",n,l,m,A,h]:null;return ki(R,async([b,P,w,I,T,S,O,H,v,Y,M,$,F,G,D])=>{g(y);let q=Pt(H||"0",w.decimals).toString(),_e=Pt(v||"0",w.decimals).toString(),Ps=Pt(Y||"0",I.decimals).toString();return Qr({fromAddress:P,rawSupplyCollateralAmount:q,rawCurrentCollateralAmount:_e,rawCurrentBorrowAmount:Ps,collateralToken:w,loanToken:I,marketId:T,primaryAddress:S,chainId:O,ensoClient:z(),slippage:$,leverageMultiplier:M,publicClient:y,formattedCollateralPriceInLoanAsset:F,ensoWalletV2Address:G,isAuthorized:D})},{...p?.opts,refreshInterval:1e5})}import Ti from"swr";import{formatEther as Si,parseUnits as xi,zeroAddress as Yr}from"viem";import{defaultChainId as Bi}from"@berachain/config/internal";import{useBeraWallet as vi,usePublicClient as Oi}from"@berachain/wagmi/hooks";import{ethAddress as Mr,zeroAddress as Ct}from"viem";var It=class extends x{name="Enso (Mint)";supportedChains=null;type="rest";needsAccountForQuote=!0;notFoundMessages=["Could not build shortcuts for route","Could not quote shortcuts for route","Swap not found for a required underlying of defi route,","No route found from"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,account:a=Ct,aggregatorsFeeBps:i,proxyAggregatorsThroughVercel:n=!1,rewardVault:l,underlyingToken:u}){this.assertChainSupport({tokenIn:t,tokenOut:o}),W(a,"account");let m=z({useProxy:!n});t.address===Ct&&(t.address=Mr),o.address===Ct&&(o.address=Mr);let p=u??o,c=[{protocol:"enso",action:"route",args:{tokenIn:t.address,tokenOut:p.address,destinationChainId:t.chainId===p.chainId?void 0:p.chainId,refundReceiver:a,amountIn:r,slippage:s*100}}];if(u&&c.push({protocol:"erc4626",action:"deposit",args:{amountIn:{useOutputOfCallAt:0},tokenIn:u.address,primaryAddress:o.address,tokenOut:o.address}}),l){let A=c.length;c.push({protocol:"enso",action:"balance",args:{token:o.address}},{protocol:"erc20",action:"approve",args:{amount:{useOutputOfCallAt:A},spender:l,token:o.address}},{protocol:"enso",action:"call",args:{address:l,args:[a,{useOutputOfCallAt:A}],method:"stakeOnBehalf",abi:"function stakeOnBehalf(address account, uint256 amount) external"}},{protocol:"enso",action:"balance",args:{token:l}})}let d=await m.getBundleData({fromAddress:a,receiver:a,spender:a,chainId:t.chainId,routingStrategy:"router"},c),f=l?.toLowerCase()??o.address.toLowerCase();return{amountOut:d.minAmountsOut[f]??d.amountsOut[f]??"0",amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:d.tx.to}),name:this.name,swapFeeBps:0,priceImpactPercentage:d.priceImpact?d.priceImpact/100:null,getCalldata:()=>({address:d.tx.to,data:d.tx.data,value:BigInt(d.tx.value??0)})}}},ve=new It;function uh({tokenIn:e,loanToken:t,bendVault:o,rewardVault:r,amount:s,slippage:a},i){let{getTokenPrice:n}=J({tokens:e&&t?[e,t]:void 0}),l=Di({tokenIn:e,loanToken:t,bendVault:o,rewardVault:r,amount:s?xi(s,e?.decimals??18).toString():void 0,slippage:a},i),{data:u}=zo({sharesAmount:BigInt(l.data?.amountOut??0),vaultAddress:o.address}),{data:m}=Te({tokenIn:e,tokenOut:t,formattedAmountIn:s,formattedAmountOut:u?.formatted??"0"}),p=e?.chainId&&e.chainId!==Bi,{data:c,isLoading:d}=Ie({address:Yr,chainId:p?e?.chainId:void 0},{opts:{isEnabled:!!p}}),f=l.data?.getCalldata?.({account:Yr})?.value??0n,y=c?.balance??{raw:"0",formatted:"0"},A=p&&f>0n&&!d&&f>BigInt(y.raw),h=p&&f>0n?Si(f):void 0;return{...l,zapSupplyAmount:u,priceImpact:m,hasInsufficientNativeBalance:A,isCrossChain:p,nativeFee:h,refresh:()=>{l.mutate()}}}function Di({tokenIn:e,loanToken:t,bendVault:o,rewardVault:r,amount:s,slippage:a},i){let{address:n}=vi(),l=!!e&&!!t&&!!o&&!!s&&!!n&&!k(t.address,e.address)&&e.chainId&&Number(s)>0&&!!a,u=Oi();return Ti(l?["useBendZapSupply",e,t,o,r,s,a]:null,async([,p,c,d,f,y,A])=>(g(u),W(n,"fromAddress"),W(p?.address,"tokenInAddress"),j(p?.chainId,"tokenInChainId"),await ve.getQuote({tokenIn:p,tokenOut:d,underlyingToken:c,amount:y,slippage:A,account:n,rewardVault:f})),{...i?.opts,refreshInterval:1e5})}import{getPublicClient as Qi}from"@wagmi/core";import Mi from"swr";import{parseUnits as Yi}from"viem";import{defaultChainId as Fi}from"@berachain/config/internal";import{useBeraWallet as Gi,useConfig as Ki}from"@berachain/wagmi/hooks";import{ethAddress as Li,zeroAddress as Ui}from"viem";async function Fr({fromAddress:e,amountIn:t,tokenIn:o,tokenOut:r,chainId:s,ensoClient:a,destinationChainId:i,slippage:n,publicClient:l}){if(!e)throw new B({property:"fromAddress",value:e,expected:"address"});r===Ui&&(r=Li);let u={protocol:"enso",action:"route",args:{tokenIn:o,tokenOut:r,amountIn:t,slippage:n*100}};i&&i!==s&&(u.args={...u.args,destinationChainId:i,refundReceiver:e});let m=await a.getBundleData({fromAddress:e,receiver:e,spender:e,chainId:s,routingStrategy:"router"},[u]),p=await Dr({fromAddress:e,amountIn:t,tokenIn:o,chainId:s,ensoClient:a,bundle:m,publicClient:l});return{bundle:m,transactions:p}}import{useMemo as Hi}from"react";import Ni from"swr";import{useBeraWallet as Vi,useConfig as Wi,usePublicClient as _i}from"@berachain/wagmi/hooks";function Oe(e,t){let o=_i(),r=Wi(),{address:s}=Vi(),{tokenList:a,refresh:i}=oe(),n=e?.walletAddress??s,l=Hi(()=>new Map((e?.tokens??a)?.map(p=>[p.address.toLowerCase(),p])??[]),[a,e?.tokens]),u=o&&a!==void 0&&n?["usePollWalletBalances",n,Array.from(l.values())]:null,m=Ni(u,async([,p,c])=>Re({account:p,tokenList:c,wagmiConfig:r}),{refreshInterval:1e5,...t?.opts});return{...m,refresh:()=>{m?.mutate?.(),i()}}}function Bh({tokenIn:e,tokenOut:t,amount:o,slippage:r}){let{address:s}=Gi(),a=Ki(),i=z(),{refresh:n}=Oe(),l=!!e&&!!t&&!!o&&Number(o)>0&&!!r&&!!s&&!!e.chainId,m=Mi(l?["useEnsoSwapBundle",e,t,o,r]:null,async([,p,c,d,f])=>{W(s,"fromAddress"),W(p?.address,"tokenInAddress"),j(p?.chainId,"tokenInChainId"),W(c?.address,"tokenOutAddress"),Me(d,"amount"),Me(f,"slippage");let y=Qi(a,{chainId:p.chainId});g(y);let A=Yi(d,p.decimals).toString();return Fr({fromAddress:s,amountIn:A,tokenIn:p.address,tokenOut:c.address,chainId:p.chainId,ensoClient:i,destinationChainId:Fi,slippage:f,publicClient:y})},{refreshInterval:1e5,isEnabled:l});return{...m,refresh:()=>{m.mutate(),n()}}}import qi from"swr";import{formatUnits as $i,parseUnits as zi}from"viem";import{chainConfigs as ji,defaultChainId as Zi}from"@berachain/config/internal";import{useBeraWallet as Ji}from"@berachain/wagmi/hooks";function Vh({inputToken:e,amount:t,underlyingToken:o,slippage:r,tokenOut:s},a){let{address:i}=Ji(),n=i??ji[Zi].bex.aggregatorsRouterExecutor,u=!!e&&!!t&&Number(t)>0&&!!e.chainId&&!!o&&!!r?["useZapStakeBera",e,t,n,r,o,s]:null,m=qi(u,async([,c,d,f,y,A,h])=>{let R=zi(d,c.decimals).toString();return ve.getQuote({account:f,amount:R,tokenIn:c,underlyingToken:A,tokenOut:h,slippage:y})},{...a?.opts,refreshInterval:1e5}),{data:p}=Te({tokenIn:e,tokenOut:s,formattedAmountIn:t,formattedAmountOut:$i(BigInt(m.data?.amountOut??"0"),s.decimals)});return{...m,data:{...m.data,priceImpactPercentage:p,isCrossChain:e&&s.chainId!==e?.chainId},refresh:()=>{m.mutate()}}}import{useCallback as Et,useEffect as al,useState as nl}from"react";import Xi from"gray-matter";import{encodeFunctionData as Le,erc20Abi as el,parseAbiItem as tl,toHex as ol}from"viem";import{beraChefAbi as rl}from"@berachain/abis/pol/rewards/beraChef";import{rewardVaultAbi as sl}from"@berachain/abis/pol/rewards/rewardVault";function De(e){return Object.values(e).some(t=>Array.isArray(t)?t.some(o=>typeof o=="object"&&o!==null?De(o):!!o):typeof t=="object"&&t!==null?De(t):!!t)}var Gr=({proposal:e,currentTopic:t,onError:o})=>{let r=Yt(e,t),s=[];if(r.actions=e.actions.map((n,l)=>{let u={};if(u.target=V({fieldOrType:"address",value:n.target}),n.type==="custom-action")if(n.input==="ABI")if(u.ABI=V({fieldOrType:"abi",value:n.ABI}),!n.functionSignature)u.functionSignature="Required";else try{let p=tl(n.functionSignature);p.type!=="function"?(console.error("parsedSignatureAbi is not a function",p),u.functionSignature="Invalid ABI"):(u.args=p.inputs.map((c,d)=>{try{return"components"in c?V({fieldOrType:c.type,value:n.args?.[d],components:c.components}):V({fieldOrType:c.type,value:n.args?.[d]})}catch{return null}}),u.args.some(c=>c)||(s[l]=Le({abi:[p],args:n.args})))}catch{u.functionSignature="Invalid ABI"}else if(n.input==="rawCalldata")u.rawCalldata=V({fieldOrType:"hex",value:n.rawCalldata}),s[l]=n.rawCalldata;else if(n.input==="message")u.message=V({fieldOrType:"string",value:n.message}),s[l]=ol(n.message);else throw new Error("Invalid input type");else if(n.type==="whitelist-reward-vault"||n.type==="blacklist-reward-vault"){if(u.vault=V({fieldOrType:"address",value:n.vault}),!u.vault){let p=n.type==="whitelist-reward-vault";s[l]=Le({abi:rl,functionName:"setVaultWhitelistedStatus",args:[n.vault,p,""]})}}else n.type==="whitelist-reward-vault-incentive"?(u.token=V({fieldOrType:"address",value:n.token}),u.minIncentiveRate=V({fieldOrType:"uint256",value:n.minIncentiveRate}),u.managerAddress=V({fieldOrType:"address",value:n.managerAddress}),!u.token&&!u.minIncentiveRate&&!u.managerAddress&&(s[l]=Le({abi:sl,functionName:"whitelistIncentiveToken",args:[n.token,BigInt(n.minIncentiveRate),n.managerAddress]}))):n.type==="erc20-transfer"&&(u.amount=V({fieldOrType:"uint256",value:n.amount}),u.to=V({fieldOrType:"address",value:n.to}),!u.amount&&!u.to&&(s[l]=Le({abi:el,functionName:"transfer",args:[n.to,BigInt(n.amount)]})));return De(u)?u:null}),o?.(r),Object.getOwnPropertyNames(r).map(n=>r[n]).some(n=>Array.isArray(n)?n.filter(l=>l).length>0:n===null?!1:!!n)){console.warn("Proposal has errors",r);return}if(s.length===0)throw new Error("No actions submitted in proposal");let a=new URL(e.forumLink),i=Xi.stringify(e.description,{title:e.title,topics:Array.from(e.topic.values()),forumLink:a.toString(),version:"1.0.0","content-encoding":"utf-8","content-type":"text/markdown",actions:e.actions.map(n=>{let l={type:n.type};return n.type==="custom-action"&&(l.inputType=n.input),l})});return[e.actions.map(n=>n.target),e.actions.map(n=>n.value??0n),s,i]};var Kr={type:"custom-action",target:"",ABI:"",value:0n,functionSignature:"",args:[],input:"ABI",rawCalldata:"0x",message:""},il=({initialData:e={},currentTopic:t,onError:o})=>{let[r,s]=nl({title:"",description:"",forumLink:"",actions:[Kr],...e,topic:new Set});al(()=>{s(l=>({...l,topic:new Set([t.id])}))},[t]);let a=Et(()=>{s(l=>({...l,actions:[...l.actions,Kr]}))},[]),i=Et(l=>{s(u=>{let m=[...u.actions];return m.splice(l,1),{...u,actions:m}})},[s]),n=Et(()=>r?Gr({proposal:r,currentTopic:t,onError:o}):void 0,[r,t]);return{proposal:r,setProposal:s,addProposalAction:a,removeProposalAction:i,computeParamsAndErrors:n}};import ml from"swr/immutable";import{formatUnits as dl}from"viem";import{bgtAbi as cl}from"@berachain/abis/pol/bgt";import{useBeraWallet as fl,usePublicClient as gl}from"@berachain/wagmi/hooks";import ll from"swr/immutable";import{berachainGovernanceAbi as ul}from"@berachain/abis/gov/berachainGovernance";import{usePublicClient as pl}from"@berachain/wagmi/hooks";var qr=({proposalId:e})=>{let t=pl();return ll(t&&e?["useProposalSnapshot",e]:null,async([,r])=>{g(t);let{config:s}=E({chainId:t.chain.id});return(await t.readContract({abi:ul,address:s.governance.governor,functionName:"proposalSnapshot",args:[BigInt(r)]})).toString()})};var mR=e=>{let{address:t}=fl(),o=gl(),r=e.wallet||t,{data:s}=qr({proposalId:e.proposalId}),a=e.timepoint||s;return ml(a&&o&&r?["useGetPastVotes",a,r]:null,async([,n,l])=>{g(o);let{config:u}=E({chainId:o.chain.id});if(Number(n)>Date.now()/1e3)throw new Error("timepoint is in the future");let m=await o.readContract({abi:cl,address:u.tokens.bgt,functionName:"getPastVotes",args:[l,BigInt(n)]});return dl(m,18)})};import yl from"swr";import{isAddress as Al}from"viem";import{berachainGovernanceAbi as bl}from"@berachain/abis/gov/berachainGovernance";import{useBeraWallet as hl,usePublicClient as Rl}from"@berachain/wagmi/hooks";var hR=({proposalId:e,wallet:t})=>{let{address:o}=hl(),r=Rl(),s=t||o;return yl(r&&s&&Al(s)?["useHasVoted",e,s]:null,([,a,i])=>{g(r);let{config:n}=E({chainId:r.chain.id});return r.readContract({address:n.governance.governor,abi:bl,functionName:"hasVoted",args:[BigInt(a),i]})})};import wl from"swr";import{timeLockAbi as kl}from"@berachain/abis/gov/timeLock";import{usePublicClient as Pl}from"@berachain/wagmi/hooks";var $r="0xfd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783";var SR=({account:e,...t})=>{let o=Pl(),{config:r}=E(t);return wl(e&&o?["useCancellerRole",e]:null,async([,a])=>(g(o),await o.readContract({abi:kl,address:r.governance.timelock,functionName:"hasRole",args:[$r,a]})),{refreshInterval:18e4,revalidateOnFocus:!1})};import{useEffect as zr,useMemo as Cl,useState as Il}from"react";import El from"swr/infinite";import{Proposal_OrderBy as Tl,ProposalStatus as K}from"@berachain/graphql/governance";var jr=10,Sl=e=>{switch(e){case K.QuorumNotReached:return[K.Active,K.Pending];case K.PendingQueue:case K.Defeated:return[K.Active];case K.PendingExecution:return[K.InQueue];default:return[e]}};function xl(e,t={}){let o=2*(t.perPage??jr);return(r,s)=>{if(r!==0&&s&&s.length<o)return null;let a=t.status_in?.flatMap(Sl).filter((i,n,l)=>l.indexOf(i)===n);return["usePollAllProposals",r,e,t.where,a,t.orderBy,t.orderDirection,o,t.text]}}function LR(e,t){let o=t?.autoRefresh??!1,r=e.perPage??jr,s=2*r,a=xl(e.topic,e);async function i(d){if(!d)return[];let[,f,y,A,h,R,b,P,w]=d;return(await Mt({where:{topics_contains:[y],status_in:h?.length?h:void 0,...A},orderBy:R,orderDirection:b,text:w,perPage:P,offset:f*P})??[]).filter(Boolean)}let n=El(a,i,{initialSize:1,refreshInterval:t?.opts?.refreshInterval??18e4,...t?.opts}),l=Cl(()=>{if(!n.data)return[];let d=n.data.flat().filter(y=>y?e.status_in?.length?e.status_in.includes(y.status):!0:!1).sort((y,A)=>{if(!e.text)return 0;if(e.orderBy===Tl.CreatedAt){let h=Number(A.createdAt)-Number(y.createdAt);return e.orderDirection==="asc"?h:-h}return 0}),f=[];for(let y=0;y<d.length;y+=r)f.push(d.slice(y,y+r));return f},[n.data,e,r]),u=n.data?.[n.data.length-1],m=!!u&&u.length===s,[p,c]=Il(Date.now()/1e3);return zr(()=>{if(!o)return;let d=setInterval(()=>{c(Date.now()/1e3)},1e4);return()=>clearInterval(d)},[o]),zr(()=>{if(!n.data)return;let d=!1;for(let f of n.data.flat()){switch(f.status){case K.Pending:p>=Number(f.voteStartAt)&&(d=!0);break;case K.Active:p>=Number(f.voteEndAt)&&(d=!0);break;case K.InQueue:Date.now()/1e3+1>=Number(f.queueEnd)&&(d=!0);break;default:break}if(d)break}d&&n.mutate()},[n.data,p]),{...n,data:l,hasMore:m}}import{useEffect as Zr,useState as Bl}from"react";import vl from"swr";import{ProposalStatus as Tt}from"@berachain/graphql/governance";import{usePublicClient as Ol}from"@berachain/wagmi/hooks";var MR=(e,t)=>{let o=t?.autoRefresh??!1,r=Ol(),a=vl(e&&r?["usePollProposal",e]:null,([,l])=>(g(r),Ft({proposalId:l,client:r})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??18e4}),[i,n]=Bl(Date.now());return Zr(()=>{if(!o)return;let l=setInterval(()=>{n(Date.now()/1e3)},1e4);return()=>clearInterval(l)},[]),Zr(()=>{if(a.data!==void 0)switch(a.data.status){case Tt.Pending:i>=Number(a.data.voteStartAt)&&a.mutate();break;case Tt.Active:i>=Number(a.data.voteEndAt)&&a.mutate();break;case Tt.InQueue:Date.now()/1e3+1>=Number(a.data.queueEnd)&&a.mutate();break}},[a.data?.status,i]),{...a,refresh:()=>a?.mutate?.()}};import Dl from"swr";import{formatEther as Ll}from"viem";import{berachainGovernanceAbi as Ul}from"@berachain/abis/gov/berachainGovernance";import{usePublicClient as Hl}from"@berachain/wagmi/hooks";var zR=e=>{let t=Hl(),r=Dl(t?["usePollProposalThreshold",e]:null,async([,s])=>{g(t);let a=await t.readContract({address:s,abi:Ul,functionName:"proposalThreshold"});return{votesThreshold:Ll(a)}},{refreshInterval:18e4});return{...r,refresh:r.mutate}};import Nl from"swr/infinite";var Ue=1e3,XR=(e,t)=>Nl(Vl(e,t),async([o,r])=>Kt({variables:{...e,limit:Ue,offset:Ue*r}}),{parallel:!0,initialSize:Number.POSITIVE_INFINITY}),Vl=({...e},t)=>o=>o>Math.floor(t/Ue)?null:["usePollProposalVotes",o,Ue,e.proposalId,e.orderBy,e.orderDirection];import Wl from"swr";import{formatEther as _l}from"viem";import{bgtAbi as Jr}from"@berachain/abis/pol/bgt";import{useBeraWallet as Ql,usePublicClient as Ml}from"@berachain/wagmi/hooks";var iw=e=>{let{address:t}=Ql(),o=Ml(),s=Wl(t?["usePollUserDelegates",t]:null,async([,a])=>{g(o);let{config:i}=E({chainId:o.chain.id});if(!o||!a)throw new Error("usePollUserDelegates needs publicClient and account");let[n,l]=await Promise.all([o.readContract({address:i.tokens.bgt,abi:Jr,functionName:"delegates",args:[a]}),o.readContract({address:i.tokens.bgt,abi:Jr,functionName:"getVotes",args:[a]})]);return{delegate:n,currentVotes:_l(l)}},{...e?.opts,refreshInterval:e?.opts?.refreshInterval??18e4});return{...s,refresh:()=>s?.mutate?.()}};import Yl from"swr";import{usePublicClient as Fl,useTransactionReceipt as Gl}from"@berachain/wagmi/hooks";var dw=e=>{let{data:t}=Gl({hash:e}),o=Fl();return Yl(t&&o?["useProposalFromTx",e]:null,async([,a])=>{if(!t)throw new Error("Transaction not found");if(t.transactionHash!==a)throw new Error("Transaction hash mismatch");return Gt({tx:t,publicClient:o})})};import Kl from"swr/immutable";import{berachainGovernanceAbi as ql}from"@berachain/abis/gov/berachainGovernance";import{usePublicClient as $l}from"@berachain/wagmi/hooks";var zl={0:"pending",1:"active",2:"canceled",3:"defeated",4:"succeeded",5:"queued",6:"expired",7:"executed"},bw=({proposalId:e,governorAddress:t})=>{let o=$l();return Kl(t&&o&&e?["useProposalState",e]:null,async([,s])=>{g(o);let a=await o.readContract({abi:ql,address:t,functionName:"state",args:[BigInt(s)]});return zl[a]})};import jl from"swr";import{timeLockAbi as Zl}from"@berachain/abis/gov/timeLock";import{usePublicClient as Jl}from"@berachain/wagmi/hooks";var Xl={0:"unset",1:"waiting",2:"ready",3:"done"};function Cw({proposalTimelockId:e,timelockAddress:t}){let o=Jl();return jl(t&&o&&e?["useProposalTimelockState",e,t]:null,async([,s,a])=>{g(o);let i=await o.readContract({abi:Zl,address:a,functionName:"getOperationState",args:[s]});return Xl[i]},{refreshInterval:18e4})}import ou from"swr";import{usePublicClient as ru}from"@berachain/wagmi/hooks";import{formatEther as eu}from"viem";import{berachainGovernanceAbi as tu}from"@berachain/abis/gov/berachainGovernance";async function St({at:e,publicClient:t,...o}){let{config:r}=E(o);g(t);let s=await t.readContract({address:r.governance.governor,abi:tu,functionName:"quorum",blockTag:"pending",args:[BigInt(e??Math.floor(Date.now()/1e3))]});return eu(s)}function Lw({at:e},{isEnabled:t=!0}){let o=Math.floor(Date.now()/1e3),r=ru(),s=t&&r?["useQuorum",Number(e)>o?"now":e]:null,a=ou(s,async([,i])=>i==="now"?St({publicClient:r}):St({at:i,publicClient:r}));return{...a,data:a.data?Number(a.data):void 0}}import au from"swr";import{usePublicClient as nu}from"@berachain/wagmi/hooks";import su from"swr";function ne({priceFeedMap:e},t){let o=e?Object.values(e):null,r=(t?.opts?.isEnabled??!0)&&o?["usePythLatestPrices",o]:null;return su(r,async([a,i])=>await Xt({priceFeedId:i}))}var Xr=({asset:e,amount:t,isMint:o,isBasketModeEnabled:r},s)=>{let a=nu(),{priceFeedMap:i,flags:n}=U(),{data:l}=ne({priceFeedMap:e?.address&&i?{[e.address]:i[e.address]}:void 0},{opts:{isEnabled:n.isPythWrapperEnabled&&!!e?.address}}),u=t&&e&&(n.isPythWrapperEnabled&&l?.prices.length||!n.isPythWrapperEnabled)?["useCappedGlobally",t,e,l,n.isPythWrapperEnabled,r]:null,m=au(u,async([p,c,d,f,y,A])=>A?!1:(g(a),await jt({client:a,asset:d,amount:o?c:`-${c}`,isMint:o,latestPrices:f,isPythWrapperEnabled:y})),{...s?.opts,refreshInterval:0});return{...m,refresh:()=>void m.mutate()}};import iu from"swr";import{usePublicClient as lu}from"@berachain/wagmi/hooks";var es=({asset:e,amount:t,isMint:o,isBasketModeEnabled:r},s)=>{let a=lu(),{collateralList:i,referenceCollateral:n}=U(),u=iu(e&&t?["useCappedRelatively",e,t,i,n]:null,async([m,p,c,d,f])=>{if(r)return!1;if(g(a),!o){let y=`-${c}`;return f.address!==p?!1:(await Promise.all(d.map(h=>Fe({client:a,asset:h.address,amount:y,isMint:o,referenceCollateral:f})))).some(h=>h)}return await Fe({client:a,asset:p,amount:c,isMint:o,referenceCollateral:f})},{refreshInterval:0,...s?.opts});return{...u,refresh:()=>void u.mutate()}};import uu from"swr";import{usePublicClient as pu}from"@berachain/wagmi/hooks";var ok=({collateralList:e},t)=>{let o=pu(),s=uu(o&&e?["useCollateralWeights",e]:void 0,async([a,i])=>(g(o),await $t({client:o,collateralList:i})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...s,refresh:()=>void s.mutate()}};import{useMemo as xt}from"react";import mu from"swr";import{useBeraWallet as du,useConfig as cu,usePublicClient as fu}from"@berachain/wagmi/hooks";var ts=()=>{let e=fu(),{address:t}=du(),{collateralList:o}=U(),r=cu(),a=mu(t&&o&&e?["useHoneyBalances",t,o]:null,async([i,n,l])=>{g(e);let u=[...l??[],de({})];return(await Re({account:n,tokenList:u,wagmiConfig:r}))?.reduce((c,d)=>(c[d.address]=d,c),{})},{refreshInterval:1e4});return{...a,refresh:()=>a.mutate()}};import gu from"swr";import{usePublicClient as yu}from"@berachain/wagmi/hooks";var os=e=>{let t=yu(),{collateralList:o}=U(),s=gu(o&&t?["useHoneyVaultsBalance",o]:null,async([a,i])=>(g(t),await fe({client:t,collateralList:i})),{...e?.opts,refreshInterval:1e5});return{...s,refresh:()=>void s.mutate()}};import Au from"swr";import{usePublicClient as bu}from"@berachain/wagmi/hooks";var rs=({collateral:e},t)=>{let o=bu(),{priceFeedMap:r,flags:s}=U(),{data:a}=ne({priceFeedMap:e?.address?{[e.address]:r[e.address]}:void 0},{opts:{isEnabled:s.isPythWrapperEnabled&&!!e?.address}}),i=o&&e&&(s.isPythWrapperEnabled&&a?.prices.length||!s.isPythWrapperEnabled)?["useIsBadCollateralAsset",e,a,s.isPythWrapperEnabled]:null,n=Au(i,async([l,u,m,p])=>(g(o),await zt({client:o,collateral:u,latestPrices:m,isPythWrapperEnabled:p})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...n,refresh:()=>void n.mutate()}};var ss=({lowerThan:e,vaultsBalances:t,state:o,collateralList:r})=>{if(!(o.actionType==="mint")&&!o.isBasketModeEnabled){let a=t?.find(l=>l.address.toLowerCase()===o.collaterals[0].address.toLowerCase()),i=new C(a?.balance.formatted??"0").lte(e),n=r.filter(l=>{let u=t?.find(m=>m.address.toLowerCase()===l.address.toLowerCase());return new C(u?.balance.formatted??"0").lte(e)});return{isLow:i,isLiquidityLowCollaterals:n}}return{isLow:!1,isLiquidityLowCollaterals:[]}},hu=({vaultsBalances:e,redeemedVaultBalance:t,state:o,collateralList:r})=>{if(!(o.actionType==="mint")&&e&&t){let a=r.filter(i=>{let n=e.find(u=>u.address.toLowerCase()===i.address.toLowerCase()),l=o.toAmount[o.collaterals.indexOf(i)];return new C(n?.balance.formatted??"0").lt(l??"0")});return{isMore:!!a.find(i=>k(i,o.collaterals[0])),isRedeemMoreThanLiquidityCollaterals:a}}return{isMore:!1,isRedeemMoreThanLiquidityCollaterals:void 0}};function Ru({state:e,honeyBalances:t,...o}){let{config:r}=E(o),s=e.actionType==="mint";return!s&&t?new C(e.fromAmount[0]).gt(t[r.honey.token]?.balance.formatted??"0"):s&&t&&e.isBasketModeEnabled!==void 0&&e.collaterals.length>0?e.isBasketModeEnabled?e.collaterals.some((a,i)=>{let n=e.fromAmount[i];return new C(t[a.address]?.balance.formatted).lt(n)}):new C(t[e.collaterals[0].address]?.balance.formatted).lt(e.fromAmount[0]):!1}var Lk=({actionType:e,collaterals:t,fromAmount:o,toAmount:r,isBasketModeEnabled:s})=>{let a={actionType:e,collaterals:t,fromAmount:o,toAmount:r,isBasketModeEnabled:s},i=e==="mint",{data:n}=rs({collateral:t[0]}),{collateralList:l}=U(),{isBlacklisted:u,isDepegged:m}=n??{isBlacklisted:!1,isDepegged:!1},{data:p}=Xr({asset:t[0],amount:i?o[0]:r[0],isMint:i,isBasketModeEnabled:s}),{data:c}=es({asset:t[0]?.address,amount:i?o[0]:r[0],isMint:i,isBasketModeEnabled:s}),{data:d}=ts(),{data:f}=os(),y=t[0]?.address,A=f?.find(I=>I.address.toLowerCase()===y.toLowerCase()),[h,R]=xt(()=>{let I=ss({lowerThan:1,vaultsBalances:f,state:a,collateralList:l}),T=ss({lowerThan:1e3,vaultsBalances:f,state:a,collateralList:l});return[I,T]},[f,a]),{isMore:b,isRedeemMoreThanLiquidityCollaterals:P}=xt(()=>hu({vaultsBalances:f,redeemedVaultBalance:A,state:a,collateralList:l}),[f,A,a,l]),w=xt(()=>Ru({state:a,honeyBalances:d}),[a,d]);return{isLiquidityDepleted:h.isLow,isLiquidityDepletedCollaterals:h.isLiquidityLowCollaterals,isRedeemMoreThanLiquidity:b,isRedeemMoreThanLiquidityCollaterals:P,isLowLiquidity:R.isLow,isLiquidityLowCollaterals:R.isLiquidityLowCollaterals,isBlacklisted:a.isBasketModeEnabled?!1:u,isDepegged:a.isBasketModeEnabled?!1:m,isCappedGlobally:p,isCappedRelatively:c,isExceedingBalance:w}};import wu from"swr";function Vk({days:e}){let t=wu(["useHoneyChartData",e],async([o,r])=>await qt({days:r}));return{...t,refresh:()=>t.mutate()}}import ku from"swr";function Yk(){let e=ku(["useHoneyGlobalData"],()=>Zt()),t=e.data?.honeySnapshots.reduce((o,r)=>new C(r.totalVolume).plus(o),new C(0));return{...e,data:{...e.data,dailyVolume:t},refresh:()=>e.mutate()}}import{useEffect as Iu,useReducer as Eu}from"react";import{formatUnits as ns}from"viem";import{defaultChainId as Tu}from"@berachain/config/internal";import Pu from"swr";import{usePublicClient as Cu}from"@berachain/wagmi/hooks";function as({state:e},t){let o=Cu(),{priceFeedMap:r,flags:s,collateralList:a}=U(),{data:i}=ne({priceFeedMap:r},{opts:{isEnabled:s.isPythWrapperEnabled&&!!a.length}}),n=e.actionType==="mint",l=o&&e&&a.length>0&&(s.isPythWrapperEnabled&&i?.prices.length||!s.isPythWrapperEnabled)?["useIsBasketModeEnabled",n,i,s.isPythWrapperEnabled,a]:null,u=Pu(l,async([m,p,c,d,f])=>(g(o),await ge({client:o,isMint:p,collateralList:f,latestPrices:c,isPythWrapperEnabled:d})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e4});return{...u,data:u.data,refresh:()=>void u.mutate()}}var Su={actionType:"mint",collaterals:[],fromAmount:[],toAmount:[],isBasketModeEnabled:!1,isTyping:!1,isSubmitting:!1,isLoading:!1};function is(e,t){switch(t.type){case"RESET_AMOUNTS":return{...e,fromAmount:[],toAmount:[]};case"ACTION_TYPE_CHANGE":return is({...e,actionType:t.value},{type:"RESET_AMOUNTS"});case"COLLATERALS_CHANGE":return{...e,collaterals:t.value,fromAmount:[],toAmount:[]};case"FROM_AMOUNT_CHANGE":{let o=e.fromAmount;return o[t.index]=t.value,{...e,fromAmount:o}}case"TO_AMOUNT_CHANGE":{let o=e.toAmount;return o[t.index]=t.value,{...e,toAmount:o}}case"PREVIEW_CHANGE":{let o=t.value,r=e.actionType==="mint",s=e.collaterals.map((i,n)=>t.changedAsset===i.address?r?e.fromAmount[n]:e.toAmount[n]:o.collaterals[i.address]?ns(o.collaterals[i.address],i.decimals):e.isBasketModeEnabled?"0":""),a=k(t.changedAsset,"HONEY",{chainId:Tu})?r?e.toAmount[0]:e.fromAmount[0]:o.honey?ns(o.honey,18):e.isBasketModeEnabled?"0":"";return{...e,fromAmount:r?s:[a],toAmount:r?[a]:s}}case"IS_BASKET_MODE_ENABLED_CHANGE":return{...e,isBasketModeEnabled:t.value,fromAmount:[],toAmount:[]};case"IS_TYPING_CHANGE":return{...e,isTyping:t.value};case"IS_SUBMITTING_CHANGE":return{...e,isSubmitting:t.value};case"IS_LOADING_CHANGE":return{...e,isLoading:t.value};default:throw new Error(`Unknown action type: ${t}`)}}var sP=()=>{let{collateralList:e}=U(),[t,o]=Eu(is,Su,s=>({...s,collaterals:e})),{data:r}=as({state:t});return Iu(()=>{r!==void 0&&t.isBasketModeEnabled!==r&&(o({type:"IS_LOADING_CHANGE",value:!0}),o({type:"IS_BASKET_MODE_ENABLED_CHANGE",value:r}),o({type:"IS_LOADING_CHANGE",value:!1}))},[r]),{state:t,dispatch:o}};import xu from"swr/immutable";import{usePublicClient as Bu}from"@berachain/wagmi/hooks";var mP=({pythPriceFeedCalldata:e,tokenListLength:t},o)=>{let r=Bu(),s=(o?.opts?.isEnabled??!0)&&e&&e.length>0?["usePythUpdateFee",e]:null,{data:a=eo(t),isLoading:i}=xu(s,async([n,l])=>(g(r),await to({client:r,priceFeedId:l})));return{QUERY_KEY:s,data:a,isLoading:i}};import{useMemo as vu}from"react";function gP(e){return vu(()=>{if(e)return no(e)},[e])}import Ou from"swr";import{formatEther as Du}from"viem";import{bgtAbi as Lu}from"@berachain/abis/pol/bgt";import{useBeraWallet as Uu,usePublicClient as Hu}from"@berachain/wagmi/hooks";var Nu=e=>{let{address:t}=Uu(),o=Hu(),s=Ou(t&&o?["useBgtUnstakedBalance",t]:null,async([,a])=>{g(o);let{config:i}=E({chainId:o.chain.id}),n=await o.readContract({address:i.tokens.bgt,abi:Lu,functionName:"unboostedBalanceOf",args:[a]});return Du(n)},{...e,refreshInterval:e?.opts?.refreshInterval??1e5});return{...s,refresh:()=>s.mutate()}};import Vu from"swr";import{formatUnits as Wu}from"viem";import{useBeraWallet as _u,usePublicClient as Qu}from"@berachain/wagmi/hooks";var Mu=()=>{let{address:e}=_u(),t=Qu(),r=Vu(e&&t?["useClaimableFees",e]:null,async([,s])=>{g(t);let{config:a}=E({chainId:t.chain.id}),i=await Ro({account:s,vaultAddress:a.pol.staker,publicClient:t});return Wu(i,18)},{refreshInterval:18e4*2});return{...r,refresh:()=>r?.mutate?.()}};import{GqlRewardVaultOrderBy as Ku,GqlRewardVaultOrderDirection as qu}from"@berachain/graphql/pol/api";import Yu from"swr";import{usePublicClient as Fu}from"@berachain/wagmi/hooks";var Gu=(e,t=!1)=>["useRewardVaults",e,t],Bt=(e,t)=>{let o=Gu(e.filter,e.onChainIncentives),r=Fu(),s=Yu(t?.opts?.isEnabled??!0?o:null,async([,a,i])=>await lo({filter:a,publicClient:i?r:void 0}),{...t?.opts});return{...s,refresh:s.mutate}};var NP=(e={},{isEnabled:t=!0}={})=>{let o=Bt({filter:{orderBy:Ku.Apr,orderDirection:qu.Desc,pageSize:1,where:e}},{opts:{refreshInterval:0,revalidateOnFocus:!1,refreshWhenOffline:!1,isEnabled:t}});return{isLoading:o.isLoading,highestApr:o.data?.gaugeList[0].dynamicData?.apr,refresh:o.mutate}};import $u from"swr";import{usePublicClient as zu}from"@berachain/wagmi/hooks";var ls=e=>{let t=zu(),o=$u(t?"usePollGlobalData":null,async()=>(g(t),uo(t)),{revalidateOnFocus:!1,...e?.opts});return{...o,refresh:o.mutate}};import ju from"swr/immutable";var Zu=()=>"usePollMarkets",KP=e=>{let t=Zu(),o=ju(t,async()=>await po(),{...e?.opts});return{...o,refresh:()=>o.mutate()}};import Ju from"swr/immutable";import{isAddress as Xu}from"viem";import{usePublicClient as ep}from"@berachain/wagmi/hooks";function XP({receiptTokenAddresses:e,account:t,version:o},r){let s=ep(),a=e&&t&&s&&Xu(t)&&o?["useQueuedBeraUnlock",e,t,o]:null,i=Ju(a,async([,n,l,u])=>(g(s),await Promise.all(n.map(async m=>await Ao({contractAddress:m,accountAddress:l,publicClient:s,version:u}))).then(m=>m.flat())),{refreshInterval:1e4,...r?.opts});return{...i,refresh:()=>i.mutate()}}import tp from"swr";import{isAddress as op}from"viem";import{defaultChainId as rp}from"@berachain/config/internal";import{usePublicClient as sp}from"@berachain/wagmi/hooks";var lC=({address:e},t)=>{let o=e?["useRewardTokenToBeraRate",e]:null,r=sp({chainId:rp});return tp(o,async([s,a])=>{if(!a||!op(a))throw new B({property:"address",value:a,expected:"Address"});return g(r),ie({address:a,publicClient:r})},{...t?.opts})};import cp from"swr";import np from"swr";import{erc20Abi as ip,formatUnits as lp,isAddress as up}from"viem";import{beraChefAbi as pp}from"@berachain/abis/pol/rewards/beraChef";import{usePublicClient as mp}from"@berachain/wagmi/hooks";import{erc20Abi as He,formatUnits as ap}from"viem";async function Ne({address:e,publicClient:t}){g(t);let[o,r,s,a]=await t.multicall({contracts:[{address:e,abi:He,functionName:"decimals"},{address:e,abi:He,functionName:"name"},{address:e,abi:He,functionName:"symbol"},{address:e,abi:He,functionName:"totalSupply"}],allowFailure:!0});return{address:e,decimals:o.result,name:r.result,symbol:s.result,totalSupply:a.result!==void 0?o.status==="success"?ap(a.result,o.result):a.result.toString():void 0}}var dp=e=>e&&up(e)?["onChainRewardVault",e.toLowerCase()]:null,us=({address:e},t)=>{let o=mp(),r=t.opts?.isEnabled??!0,s=dp(e);return np(r&&o?s:null,async([,a])=>{g(o);let{config:i}=E({chainId:o.chain.id}),n=await he({address:a,publicClient:o}),[l,u,m]=await Promise.all([be({address:a,stakingToken:n,publicClient:o}),o.readContract({address:i.pol.beraChef,abi:pp,functionName:"isWhitelistedVault",args:[a]}),o.readContract({address:n,abi:ip,functionName:"balanceOf",args:[a]})]),[p,c]=await Promise.all([Ne({address:n,publicClient:o}),Promise.all(l.map(d=>Z({address:d.token,chainId:o.chain.id,publicClient:o})))]);if(!p)throw new Error("Staking token not found");return{id:a,address:a,vaultAddress:a,stakingToken:{address:n,name:p.name??"",symbol:p.symbol??"",decimals:p.decimals??0},stakingTokenAmount:lp(m,p.decimals??18),isVaultWhitelisted:u,activeIncentives:l.map((d,f)=>({active:!!d.remainingAmount,remainingAmount:d.remainingAmount,remainingAmountUsd:"0",incentiveRate:d.incentiveRate,incentiveRateUsd:"0",tokenAddress:d.token,token:c[f]}))}})};var fp=e=>e?["useRewardVault",e.toLowerCase()]:null,TC=(e,t)=>{let o=fp(e),r=cp(o,async([i,n])=>co({address:n}),{...t?.opts}),s=t?.opts?.isEnabled??((!!r.error||!r.isLoading)&&!r.data),a=us({address:e},{opts:{...t?.opts,isEnabled:s}});return{data:a.data??r.data,error:a.error??r.error,isLoading:a.isLoading||r.isLoading,isValidating:a.isValidating??r.isValidating,refresh:()=>{r.mutate(),a.mutate()}}};import gp from"swr";import{usePublicClient as yp}from"@berachain/wagmi/hooks";function DC({address:e,stakingToken:t}){let o=yp(),s=gp(o&&e&&t?["useRewardVaultIncentives",e,t]:null,async([,a,i])=>(g(o),await be({address:a,stakingToken:i,publicClient:o})));return{...s,refresh:()=>s?.mutate?.()}}import Ap from"swr";import{usePublicClient as bp}from"@berachain/wagmi/hooks";var hp=(e,t)=>{let o=bp(),s=Ap(o&&e?["useRewardVaultRewards",e]:null,async([,a])=>(g(o),await ao(a,o)),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}};import Rp from"swr";var Ve=e=>{let t=[],o="";for(let r of e){if(!r.timestamp&&!r._timestamp)continue;let s=(r?.timestamp??r?._timestamp??0)*1e3,a=new Date(s),i=a.toDateString();if(i!==o){let n=new Date(a.setHours(0,0,0,0)).getTime()/1e3;t.push({...r,timestamp:n,_timestamp:n}),o=i}}return t};function FC({range:e}){let o=Rp(e?["useStakedAPR",e]:null,async([,r])=>{let s=await go({range:r});return Ve(s.sort((i,n)=>i.timestamp-n.timestamp)).map(i=>({_timestamp:i.timestamp,apr:i.apr}))});return{...o,refresh:()=>o.mutate()}}import{useMemo as We}from"react";import vt from"swr";import{useBeraWallet as wp,usePublicClient as kp}from"@berachain/wagmi/hooks";var rI=e=>{let t=_("swberaAprWindow"),o=kp(),{address:r}=wp(),s=We(()=>e.map(b=>b.receiptToken),[e]),a=We(()=>e.map(b=>b.inputTokens[0]),[e]),i=t?["useStakedData:apr",t]:null,{data:n}=vt(i,async([,b])=>fo({window:b}),{refreshInterval:1e5}),{data:l,isLoading:u}=Oe({tokens:s}),{getTokenPrice:m}=J({tokens:a}),p=o&&s.length>0?["useStakedData:exchangeRates",s]:null,{data:c}=vt(p,async([,b])=>(g(o),Promise.all(b.map(P=>ie({address:P.address,publicClient:o})))),{refreshInterval:1e5}),d=We(()=>{if(!(!l||!c))return e.map((b,P)=>{let w=b.inputTokens[0],I=l.find(Y=>Y.address===b.receiptToken.address)?.balance.raw??"0",T=c[P]??0,S=m(w)??0,H=new C(I).multipliedBy(T).dividedBy(10**w.decimals),v=H.multipliedBy(S);return{token:w,apr:n??0,stakedAmount:H.toNumber(),stakedAmountUsd:v.toNumber(),earnedAmount:0,earnedAmountUsd:0,isLoadingEarnings:!0}})},[l,c,e,n,m]),f=r&&o&&e.length>0?["useStakedData:positions",r,e]:null,{data:y,isLoading:A,isValidating:h}=vt(f,async([,b,P])=>(g(o),Promise.all(P.map(async w=>{let I=w.receiptToken,[T,S]=await Promise.all([io({address:I.address,account:b}),ie({address:I.address,publicClient:o})]);return{earnings:T,exchangeRate:S}}))),{refreshInterval:1e4}),R=We(()=>{if(!(!y||!l))return e.map((b,P)=>{let w=b.inputTokens[0],I=b.receiptToken,{earnings:T,exchangeRate:S}=y[P],O=m(w)??0,H=l.find(_e=>_e.address===I.address)?.balance.raw??"0",v=S??0,Y=new C(T.earningsTotal).minus(T.earningsRealized),F=new C(H).multipliedBy(v).minus(Y).dividedBy(10**w.decimals),G=Y.dividedBy(10**w.decimals),D=F.multipliedBy(O),q=G.multipliedBy(O);return{token:w,apr:n??0,stakedAmount:F.toNumber(),earnedAmount:G.toNumber(),stakedAmountUsd:D.toNumber(),earnedAmountUsd:q.toNumber()}})},[y,l,e,n,m]);return{balances:d,data:R,isLoading:u&&A,isLoadingBalances:u,isLoadingPositions:A,isValidatingPositions:h}};import Pp from"swr";async function ps({address:e,range:t}){let o=new Date,r=new Date(o.getTime()-Number(t)*24*60*60*1e3),{config:s}=E({}),a=`${s.staking}/vaults/${e}/total-assets-by-day?start=${r.toISOString().split("T")[0]}`;return me({url:a,type:"rest"})}function mI({range:e,addresses:t}){let r=Pp(e?["useStakedSnapshots",e,t]:null,async([,s,a])=>{let[...i]=await Promise.all([...a.map(async n=>{let l=await ps({address:n,range:s}),u=Ve(l.sort((m,p)=>m._timestamp-p._timestamp));return{[n]:u}})]);return i.reduce((n,l)=>({...n,...l}),{})});return{...r,refresh:()=>r.mutate()}}import Cp from"swr";import{usePublicClient as Ip}from"@berachain/wagmi/hooks";var bI=(e=[])=>{let t=Ip(),o=te(),r=e.length>0&&t&&o?["useStakingVaultMetadata",e,t,o]:null;return Cp(r,async([,s,a,i])=>(g(a),Promise.all(s.map(n=>yo({address:n.address,underlyingAsset:n.underlyingAsset,publicClient:a,blockTime:i})))),{refreshInterval:1e4})};import Ep from"swr";import{usePublicClient as Tp}from"@berachain/wagmi/hooks";function PI({vaultAddresses:e}){let t=Tp(),o=Ep(e&&t?["useTotalStakedAmount",e]:null,([,r])=>bo({vaultAddresses:r,publicClient:t}));return{...o,refresh:()=>o.mutate()}}import Sp from"swr";import{useBeraWallet as xp,usePublicClient as Bp}from"@berachain/wagmi/hooks";var vp=(e,t)=>{let{address:o}=xp(),r=Bp(),s=o&&r&&e.vaultAddress?["useUserVaultInfo",o,e.vaultAddress]:null,a=Sp(s,async([,i,n])=>(g(r),wo({account:i,vaultAddress:n,publicClient:r})),{...t,refreshInterval:t?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a.mutate()}};import Op from"swr";import{useBeraWallet as Dp,usePublicClient as Lp}from"@berachain/wagmi/hooks";var Up=e=>{let{address:t}=Dp(),o=Lp(),s=Op(t&&o?["useUserVaults",t]:null,async([,a])=>(g(o),await ko({account:a,publicClient:o})),{...e,refreshInterval:e?.opts?.refreshInterval??1e5,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import Hp from"swr";import{usePublicClient as Np}from"@berachain/wagmi/hooks";var WI=e=>{let t=Np();return Hp(e&&t?["useVaultAddress",e]:null,async([,r])=>{g(t);let[s]=await Promise.all([he({address:r,publicClient:t})]);return{stakeToken:s,address:r}})};import Vp from"swr";var YI=({vault:e,range:t,resolution:o})=>{let s=Vp(e?["useVaultHistory",e,t,o]:null,([,a,i,n])=>Po({vault:a,range:i,resolution:n}));return{...s,refresh:()=>s.mutate()}};import Wp from"swr";var _p=(e,t)=>{let r=Wp(e?["useVaultValidators",e]:null,async([,s])=>await Co({address:s}),{...t?.opts});return{...r,refresh:()=>r.mutate()}};import{zeroAddress as Qp}from"viem";function ms({address:e},t){let o=se({addressIn:e?[e]:void 0},t);return{...o,data:e?o.data?.[e.toLowerCase()]:void 0}}function JI(e){return ms({address:Qp},e)}import Mp from"swr/immutable";import{isAddress as Yp,zeroAddress as Fp}from"viem";import{usePublicClient as Gp}from"@berachain/wagmi/hooks";var aE=(e,t)=>{let o=Gp(),r=e?.address&&o&&Yp(e.address)?["useStakingTokenInformation",e.address]:null,s=Mp(r,async([a,i])=>k(i,"BERA")?{address:Fp,decimals:N.decimals,name:N.name,symbol:N.symbol}:await Ne({address:i,publicClient:o}),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}};function lE({token:e},t){let{isLoading:o,priceMap:r}=J({tokens:e?[e]:void 0},t);return{data:e?r[e.chainId]?.[e.address.toLowerCase()]:void 0,isLoading:o}}import Kp from"swr";import{erc20Abi as qp}from"viem";import{usePublicClient as $p}from"@berachain/wagmi/hooks";function fE({address:e}){let t=$p();return Kp(e&&t?["useTotalSupply",e]:null,([,o])=>(g(t),t.readContract({address:o,abi:qp,functionName:"totalSupply",args:[]})))}import zp from"swr/immutable";import{useBlockNumber as jp,usePublicClient as Zp}from"@berachain/wagmi/hooks";function PE(e){let t=Zp(),{config:o}=E({chainId:t?.chain.id}),{data:r,isLoading:s}=jp({cacheTime:ye(o.averageBlockTime)}),{data:a}=zp(r&&t&&Number(e)>0?["useBlockToTimestamp",e,r]:null,async([,n,l])=>(g(t),so({block:n,currentBlock:l,blockTime:i,publicClient:t}))),i=te();if(a)return Number(a.timestamp);if(!(s||!r))return Math.floor(ro(Date.now())+i*(Number(e)-Number(r)))}import{useCallback as cs,useReducer as Jp}from"react";import{useBeraWagmi as Xp,useConfig as em}from"@berachain/wagmi/hooks";var Ot={confirmState:"idle",txnHash:"",message:""},ds=(e,t)=>{switch(t.type){case"confirm_sending":return{...e,confirmState:"loading"};case"confirm_receipt":return{...e,confirmState:"success"};case"confirm_error":return{...e,confirmState:"fail"};case"confirm_submitting":return{...e,confirmState:"submitting"};case"confirm_reset":return{...Ot};default:return e}};function tm({onlyPermissionless:e,onSuccess:t,onError:o,onLoading:r,onWarning:s,onSubmission:a}={}){let[i,n]=Jp(ds,Ot),{account:l,onSmartAccountRejection:u}=Xp(),m=em(),p=l?.wallet?.isContract?6e4*10:12e4,c=cs(()=>{n({type:"confirm_reset"})},[]),d=_("enableSimulateCalls"),f=cs(y=>{if(e&&!y.permissionless){let A=new To({message:"Trying to send a non-permissionless transaction with an overridden account",displayMessage:"You can't send this transaction with an overridden account. Please reset the account in the settings popover.",level:"info",input:y});throw s?.(A,y),o?.(A,y),A}return So({wagmiConfig:m,...y,txConfirmationTimeout:p,enableSimulateCalls:d,onLoading(...A){n({type:"confirm_sending"}),y.onLoading?.(y),r?.(...A)},onWarning(...A){y.onWarning?.(A[0],y),s?.(...A)},onSubmission(...A){n({type:"confirm_submitting"}),y.onSubmission?.(A[0],y),a?.(...A)},onSuccess(...A){n({type:"confirm_receipt"}),y.onSuccess?.(A[0],y),t?.(...A)},onError(...A){n({type:"confirm_error"}),y.onError?.(A[0],y),A[0].reason==="AtomicReadyWalletRejectedUpgradeError"&&u(),o?.(...A)}})},[m,r,s,a,t,o,e,d]);return{isLoading:i.confirmState==="loading",isSubmitting:i.confirmState==="submitting",isSuccess:i.confirmState==="success",isError:i.confirmState==="fail",write:f,reset:c}}var om=tm;import rm from"swr/immutable";import{isAddress as sm,zeroAddress as am}from"viem";import{chainId as nm}from"@berachain/config/internal";async function im(e){let t=await me({url:`https://api.routescan.io/v2/network/testnet/evm/${nm}/etherscan/api?module=contract&action=getabi&address=${e}`,type:"rest",name:"RouteScan"});if(t.status==="0")throw new Error(t.result);return t.result}var QE=e=>rm(e&&sm(e)&&e!==am?["useGetVerifiedAbi",e]:null,()=>e?im(e):Promise.resolve(""),{});import{useCallback as fs,useEffect as lm,useState as um}from"react";function FE({key:e,defaultValue:t}){let o=fs(()=>{if(typeof window>"u")return t;let i=window.history.state?.[e];return i!==void 0?i:t},[e,t]),[r,s]=um(o()),a=fs(i=>{let n=o(),l=i instanceof Function?i(n):i,m={...window.history.state||{},[e]:l};window.history.replaceState(m,""),s(l)},[e,o]);return lm(()=>{if(window.history.state?.[e]===void 0){let l={...window.history.state||{},[e]:t};window.history.replaceState(l,"")}},[e,t]),[r,a]}import{useEffect as pm,useRef as mm}from"react";function qE(e){let t=mm(void 0);return pm(()=>{t.current=e}),t.current}import dm from"swr";var cm=({variables:e}={})=>["useAllValidators",e],JE=(e,t)=>{let{config:o}=E(e),r=dm(cm({variables:e}),async([,s])=>await xo({variables:{chain:o.bex.chainName,...s}}),{refreshInterval:18e4,...t?.opts});return{...r,refresh:()=>r.mutate()}};import fm from"swr";function oT({allocation:e}){return fm(e?["useApiEnrichedAllocation",e]:null,([,t])=>Bo({allocation:t}))}import gm from"swr";import{isHex as ym}from"viem";var Am=e=>e?["useApiValidator",e]:null,gs=(e,t)=>{let o=Am(e),r=t?.opts?.isEnabled??!0,s=gm(r&&e?o:null,async([,a])=>{if(!a||!ym(a))throw new Error(`Invalid validator ID: ${a}`);return vo({id:a})},{...t?.opts});return{...s,refresh:()=>s.mutate()}};import hm from"swr";import{usePublicClient as Rm}from"@berachain/wagmi/hooks";import{rewardAllocatorFactoryAbi as bm}from"@berachain/abis/pol/rewards/rewardAllocatorFactory";async function ys({publicClient:e,...t}){let{config:o}=E(t),r=await e.readContract({abi:bm,address:o.pol.rewardAllocationFactory,functionName:"getBaselineAllocation"}),s=r.startBlock!==0n?await e.getBlock({blockNumber:r.startBlock}):{timestamp:0};return Do(r,Number(s.timestamp))}function yT(){let e=Rm();return hm(e?["baselineRewardAllocation"]:null,()=>(g(e),ys({publicClient:e})))}import wm from"swr";var km=({pubKey:e,first:t=1})=>{let r=wm(e?["useDailyValidatorBlockStats",e,t]:null,async([,s,a])=>await Oo({pubKey:s,first:a}),{refreshInterval:18e4});return{...r,refresh:()=>r.mutate()}};import Pm from"swr";import{usePublicClient as Cm}from"@berachain/wagmi/hooks";function Im(e){let t=Cm(),r=Pm(t?["useDefaultRewardAllocation"]:null,async()=>(g(t),await Uo({client:t})),{...e?.opts});return{...r,refresh:()=>r.mutate()}}import{useMemo as bs}from"react";import Sm from"swr";import{useBeraWallet as xm,usePublicClient as Bm}from"@berachain/wagmi/hooks";import{zeroAddress as Em}from"viem";import{beraChefAbi as Tm}from"@berachain/abis/pol/rewards/beraChef";async function As({client:e,pubKey:t,...o}){let{config:r}=E(o);try{let s=await e.readContract({address:r.pol.beraChef,abi:Tm,functionName:"valRewardAllocator",args:[t]});return s===Em?null:s}catch(s){throw console.log("getValidatorRewardAllocatorAddress:",s),s}}function hs(e,t){return!e||!t?!1:t.operator?.toLowerCase()===e.toLowerCase()}function vm(e,t){return!e||!t?!1:t.rewardAllocator?t.rewardAllocator.toLowerCase()===e.toLowerCase():hs(e,t)}function Om({pubKey:e,account:t},o){let r=Bm(),s=_("mockValidatorOperator"),a=_("mockValidatorRewardAllocator"),i=r&&e?["useManagedValidatorRole",e]:null,{address:n}=xm(),l=t??n,u=Sm(i,async([,c])=>{g(r);let[d,f]=await Promise.all([Yo({client:r,pubKey:c}),As({client:r,pubKey:c})]);return{operator:d??null,rewardAllocator:f}},{...o?.opts}),m=bs(()=>s||hs(l,u.data),[l,s,u.data]),p=bs(()=>a||vm(l,u.data),[l,a,u.data]);return{...u,data:u.data?{...u.data,hasOperatorRole:m,hasRewardAllocatorRole:p}:void 0,refresh:()=>u.mutate()}}import Dm from"swr";import{keccak256 as Lm}from"viem";import{beaconDepositAbi as Um}from"@berachain/abis/pol/beaconDeposit";import{bgtAbi as Hm}from"@berachain/abis/pol/bgt";import{beraChefAbi as Nm}from"@berachain/abis/pol/rewards/beraChef";import{usePublicClient as Vm}from"@berachain/wagmi/hooks";var Rs=({pubkey:e},t)=>{let o=Vm(),r=e?["useOnChainValidator",e]:null,s=t.opts?.isEnabled??!0,a=Dm(s&&o?r:null,async([,i])=>{g(o);let{config:n}=E({chainId:o.chain.id}),[l,u,m]=await Promise.all([o.readContract({address:n.depositContract,abi:Um,functionName:"getOperator",args:[i]}),o?.readContract({address:n.tokens.bgt,abi:Hm,functionName:"boostees",args:[i]}),o.readContract({address:n.pol.beraChef,abi:Nm,functionName:"getActiveRewardAllocation",args:[i]})]);return{id:Lm(i),pubkey:i,operator:l,votingPower:Number(u)}});return{...a,refresh:()=>{a.mutate()}}};import Wm from"swr";import{usePublicClient as _m}from"@berachain/wagmi/hooks";var ZT=({valPubKey:e,options:t})=>{let o=_m(),s=(t?.opts?.isEnabled??!0)&&o&&e?["useStakingPoolBatch",e]:null,a=Wm(s,async([,i])=>(g(o),await Ho({client:o,valPubKey:i})),{refreshInterval:1e4,...t?.opts});return{...a,refresh:()=>a.mutate()}};import Qm from"swr";import{useBeraWallet as Mm,usePublicClient as Ym}from"@berachain/wagmi/hooks";var Fm=e=>{let{address:t}=Mm(),o=Ym(),s=Qm(o&&t?["useUserActiveValidators",t]:null,async([,a])=>await Vo({account:a,publicClient:o}),{...e,refreshInterval:e?.opts?.refreshInterval??18e4,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import Gm from"swr";import{useBeraWallet as Km,usePublicClient as qm}from"@berachain/wagmi/hooks";var $m=({pubkey:e,...t})=>{let{address:o}=Km(),r=qm(),s=t.account??o,i=Gm(s&&e?["useUserBoostsOnValidator",e,s]:null,async([,n,l])=>await No({account:l,pubkey:n,publicClient:r}),{refreshInterval:1e5});return{...i,refresh:()=>i.mutate()}};import{useCallback as zm,useMemo as jm}from"react";import ks from"swr";import{useBeraWallet as Zm}from"@berachain/wagmi/hooks";var ws=e=>{let t=new Set;return e.forEach(o=>{Array.isArray(o.rewards)&&o.rewards.forEach(r=>{r.token&&t.add(r.token)})}),t};var Jm=()=>{let{address:e}=Zm(),o=ks(e?["useUserClaimableIncentives",e]:null,async([,l])=>{if(!l)throw new L({message:"useUserClaimableIncentives needs a logged in account",level:"error"});return await ho({account:l})},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),r=o?.data,s=jm(()=>{if(r){if(!Array.isArray(r)){Ae.captureException(new L({message:"Incorrect aggregated incentives data receieved.",level:"error",extra:{allRewards:r,account:e}}));return}return ws(r)}},[r,e]),i=ks(e&&r?["useUserClaimableIncentives",e,r]:null,async([,l,u])=>{if(!l)throw new B({property:"account",value:l,expected:"Address"});if(!u)return[];if(!Array.isArray(u))throw new B({message:"Incorrect aggregated incentives data receieved to calculate proofs.",property:"allRewards",value:u,expected:"Array",level:"error"});let m=new Set(u.map(c=>c.validator)),p=Array.from(m);return await Promise.all(p.map(async c=>({...await mo({account:l,validator:c,page:1,perPage:1e4}),validator:c})))},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),n=zm(()=>{o?.mutate(),i?.mutate()},[o,i]);return{...i,isLoading:o?.isLoading||i?.isLoading,tokenMap:s,refresh:n}};import Xm from"swr/immutable";var RS=({account:e,validatorAddress:t})=>{let r=Xm(e?["useUserStakingPositions",e,t]:null,async([s,a,i])=>{let n=await Wo(a);return i?n.filter(l=>l.validatorAddress.toLowerCase()===i.toLowerCase()):n});return{...r,refresh:()=>{r.mutate()}}};import{keccak256 as ed}from"viem";function IS({pubkey:e},t){let{data:{validator:o,uptime:r}={},isLoading:s,error:a}=gs(ed(e),t),{data:i,isLoading:n,error:l}=Rs({pubkey:e},t);return{data:{uptime:r,validator:o||i?{...o,...i,operator:i?.operator??o?.operator,dynamicData:{activeBoostAmount:i?.dynamicData?.activeBoostAmount??o?.dynamicData?.activeBoostAmount??"",queuedBoostAmount:o?.dynamicData?.queuedBoostAmount??"",usersActiveBoostCount:o?.dynamicData?.usersActiveBoostCount??0,usersQueuedBoostCount:o?.dynamicData?.usersQueuedBoostCount??0,allTimeDistributedBGTAmount:o?.dynamicData?.allTimeDistributedBGTAmount??"0",rewardRate:i?.dynamicData?.rewardRate??o?.dynamicData?.rewardRate??"",stakedBeraAmount:o?.dynamicData?.stakedBeraAmount??"",lastDayDistributedBGTAmount:o?.dynamicData?.lastDayDistributedBGTAmount??"",activeBoostAmountRank:o?.dynamicData?.activeBoostAmountRank??0,boostApr:o?.dynamicData?.boostApr??0,commissionOnIncentives:o?.dynamicData?.commissionOnIncentives??0},id:i?.id??o?.id,pubkey:i?.pubkey??o?.pubkey,metadata:i?.metadata??o?.metadata,rewardAllocationWeights:i?.rewardAllocationWeights??o?.rewardAllocationWeights??[]}:null},isLoading:s||n,error:a||l}}import td from"swr";function od({pubkey:e,dayRange:t}){let r=td(e&&t?["useValidatorAnalytics",e,t]:null,async([,s,a])=>await _o({pubkey:s,dayRange:a}),{refreshInterval:18e4});return{...r,refresh:()=>r.mutate()}}import rd from"swr";import{usePublicClient as sd}from"@berachain/wagmi/hooks";var ad=(e,t)=>{let o=sd(),s=rd(o&&e?["useValidatorCommission",e]:null,async([,a])=>await Qo({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};var nd=e=>{let{data:t,isLoading:o}=ls(),r=te();return{data:t?Mo(e,Number(t?.totalStakedBeraAmount),r):void 0,isLoading:o}};import id from"swr";import{usePublicClient as ld}from"@berachain/wagmi/hooks";function ud(e,t){let o=ld(),s=id(o&&e?["useValidatorQueuedCommission",e]:null,async([,a])=>(g(o),await Fo({client:o,pubKey:a})),{...t?.opts});return{...s,refresh:()=>s.mutate()}}import pd from"swr";import{usePublicClient as md}from"@berachain/wagmi/hooks";var dd=(e,t)=>{let o=md(),s=pd(o&&e?["useValidatorQueuedOperatorAddress",e]:null,async([,a])=>await Go({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};import cd from"swr";import{usePublicClient as fd}from"@berachain/wagmi/hooks";var gd=(e,t)=>{let o=fd(),s=cd(o&&e?["useValidatorQueuedRewardAllocation",e]:null,async([,a])=>await Ko({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};import yd from"swr";import{usePublicClient as Ad}from"@berachain/wagmi/hooks";function bd(e,t){let o=Ad(),s=yd(o&&e?["useValidatorRewardAllocation",e]:null,async([,a])=>await Lo({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}}export{La as OracleMode,cr as USE_AGGREGATORS_QUOTES_QUERY_KEY,is as reducer,jf as useAggregatorsQuotes,ke as useAggregatorsRouterFeeBps,fr as useAllUserPools,Ca as useAllUserPoolsQueryKey,JE as useAllValidators,cm as useAllValidatorsQueryKey,oT as useApiEnrichedAllocation,gr as useApiPool,Ta as useApiPoolQueryKey,gs as useApiValidator,Am as useApiValidatorQueryKey,yT as useBaselineRewardAllocation,Sb as useBendDemultiply,Gb as useBendMultiply,uh as useBendZapSupply,Di as useBendZapSupplyHelper,om as useBeraContractWrite,JI as useBeraCurrentPrice,Ge as useBexStatus,gP as useBgtAprSimulation,Nu as useBgtUnstakedBalance,PE as useBlockToTimestamp,Xr as useCappedGlobally,es as useCappedRelatively,Mu as useClaimableFees,ok as useCollateralWeights,wg as useCreatePool,il as useCreateProposal,km as useDailyValidatorBlockStats,Im as useDefaultRewardAllocation,Bh as useEnsoSwapBundle,hd as useEnsoUserTokensWithBalances,Og as useExploitedTokens,Ya as useExploitedTokensQueryKey,zo as useGetConvertToAssets,mR as useGetPastVotes,QE as useGetVerifiedAbi,Ga as useGlobalLiquidityAndSwapVolume,hR as useHasVoted,NP as useHighestVaultsAPR,FE as useHistoryState,Lk as useHoneyAlerts,ts as useHoneyBalances,Vk as useHoneyChartData,Yk as useHoneyGlobalData,sP as useHoneySwapState,os as useHoneyVaultsBalance,rs as useIsBadCollateralAsset,as as useIsBasketModeEnabled,SR as useIsCanceller,_g as useLiquidityMismatch,ky as useLpPosition,Om as useManagedValidatorRole,En as useMultipleTokenApprovalsWithSlippage,xr as useMultipleTokenInformation,Br as useOnChainPoolData,_n as useOnChainPoolDataQueryKey,Rs as useOnChainValidator,LR as usePollAllProposals,xl as usePollAllProposalsQueryKey,Tr as usePollAllowances,Ie as usePollBalance,ls as usePollGlobalData,KP as usePollMarkets,Zu as usePollMarketsQueryKey,Gn as usePollPoolCreationRelayerApproval,MR as usePollProposal,zR as usePollProposalThreshold,XR as usePollProposalVotes,Vl as usePollProposalVotesQueryKey,iw as usePollUserDelegates,Oe as usePollWalletBalances,yA as usePool,RA as usePoolEvents,IA as usePoolHistoricalData,OA as usePools,jn as usePoolsQueryKey,qE as usePrevious,Te as usePriceImpact,dw as useProposalFromTx,qr as useProposalSnapshot,bw as useProposalState,Cw as useProposalTimelockState,ne as usePythLatestPrices,mP as usePythUpdateFee,XP as useQueuedBeraUnlock,Lw as useQuorum,lC as useRewardTokenToBeraRate,TC as useRewardVault,Pr as useRewardVaultBalanceFromStakingToken,At as useRewardVaultFromToken,DC as useRewardVaultIncentives,fp as useRewardVaultQueryKey,hp as useRewardVaultRewards,Bt as useRewardVaults,Gu as useRewardVaultsQueryKey,ya as useSingleAggregatorQuote,FC as useStakedAPR,rI as useStakedData,mI as useStakedSnapshots,ZT as useStakingPoolBatch,aE as useStakingTokenInformation,bI as useStakingVaultsMetadata,ms as useTokenCurrentPrice,se as useTokenCurrentPrices,Cr as useTokenInformation,lE as useTokenPrice,J as useTokenPrices,oe as useTokens,PI as useTotalStakedAmount,fE as useTotalSupply,Fm as useUserActiveValidators,$m as useUserBoostsOnValidator,Jm as useUserClaimableIncentives,RS as useUserStakingPositions,vp as useUserVaultInfo,Up as useUserVaults,IS as useValidator,od as useValidatorAnalytics,ad as useValidatorCommission,nd as useValidatorEstimatedBgtPerYear,ud as useValidatorQueuedCommission,dd as useValidatorQueuedOperatorAddress,gd as useValidatorQueuedRewardAllocation,bd as useValidatorRewardAllocation,WI as useVaultAddress,YI as useVaultHistory,_p as useVaultValidators,Vh as useZapStakeBera};
4
4
  //# sourceMappingURL=exports.mjs.map