@berachain/berajs 0.2.3 → 0.2.5
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.
- package/.claude/skills/berajs/SKILL.md +222 -0
- package/.claude/skills/berajs/references/dex.md +235 -0
- package/.claude/skills/berajs/references/pol.md +194 -0
- package/.claude/skills/berajs/references/staking.md +198 -0
- package/.claude/skills/berajs/references/tokens.md +170 -0
- package/dist/{BexStatusProvider-nS3NcdxI.d.cts → BexStatusProvider-DRymVlQf.d.cts} +1 -1
- package/dist/{BexStatusProvider-nS3NcdxI.d.ts → BexStatusProvider-DRymVlQf.d.ts} +1 -1
- package/dist/{HoneyConfigProvider-CK6mOKFH.d.ts → HoneyConfigProvider-DVP_9KZn.d.ts} +1 -1
- package/dist/{HoneyConfigProvider-Ca3ouozs.d.cts → HoneyConfigProvider-DfkjmzEf.d.cts} +1 -1
- package/dist/abi/exports.cjs +1 -1
- package/dist/abi/exports.cjs.map +1 -1
- package/dist/abi/exports.d.cts +1893 -25347
- package/dist/abi/exports.d.ts +1893 -25347
- package/dist/abi/exports.mjs +1 -1
- package/dist/abi/exports.mjs.map +1 -1
- package/dist/actions/exports.cjs +1 -1
- package/dist/actions/exports.cjs.map +1 -1
- package/dist/actions/exports.d.cts +10 -9
- package/dist/actions/exports.d.ts +10 -9
- package/dist/actions/exports.mjs +1 -1
- package/dist/actions/exports.mjs.map +1 -1
- package/dist/chunk-BKDBIBVO.mjs +4 -0
- package/dist/chunk-BKDBIBVO.mjs.map +1 -0
- package/dist/chunk-NLVWRMGD.mjs +2 -0
- package/dist/chunk-NLVWRMGD.mjs.map +1 -0
- package/dist/chunk-OUD27MU7.cjs +2 -0
- package/dist/chunk-OUD27MU7.cjs.map +1 -0
- package/dist/chunk-UXGB54NE.cjs +4 -0
- package/dist/chunk-UXGB54NE.cjs.map +1 -0
- package/dist/contexts/exports.d.cts +3 -3
- package/dist/contexts/exports.d.ts +3 -3
- package/dist/enum/exports.d.cts +1 -1
- package/dist/enum/exports.d.ts +1 -1
- package/dist/errors/exports.d.cts +1 -1
- package/dist/errors/exports.d.ts +1 -1
- package/dist/{getValidatorQueuedOperatorAddress-NrjpnEn8.d.ts → getValidatorQueuedOperatorAddress-CqR6cyqC.d.ts} +3 -3
- package/dist/{getValidatorQueuedOperatorAddress-D_LEt3vv.d.cts → getValidatorQueuedOperatorAddress-DZgrPmZ2.d.cts} +3 -3
- package/dist/{global.d-X3cqpCEB.d.ts → global.d-BeYWDreg.d.ts} +4 -4
- package/dist/{global.d-DLRtrPG5.d.cts → global.d-DghRxpHd.d.cts} +4 -4
- package/dist/hooks/exports.cjs +3 -3
- package/dist/hooks/exports.cjs.map +1 -1
- package/dist/hooks/exports.d.cts +40 -38
- package/dist/hooks/exports.d.ts +40 -38
- package/dist/hooks/exports.mjs +3 -3
- package/dist/hooks/exports.mjs.map +1 -1
- package/dist/{txnEnum-BlBYhNRl.d.cts → txnEnum-DxPRHSJt.d.cts} +1 -1
- package/dist/{txnEnum-BlBYhNRl.d.ts → txnEnum-DxPRHSJt.d.ts} +1 -1
- package/dist/types/exports.d.cts +3 -3
- package/dist/types/exports.d.ts +3 -3
- package/dist/{useHoneySwapState-D1DKG_Of.d.ts → useHoneySwapState-B494PQDl.d.ts} +1 -1
- package/dist/{useHoneySwapState-B-vmIP1b.d.cts → useHoneySwapState-D6vpv19r.d.cts} +1 -1
- package/dist/utils/exports.d.cts +2 -2
- package/dist/utils/exports.d.ts +2 -2
- package/package.json +8 -9
- package/src/abi/exports.ts +0 -27
- package/src/actions/bend/getConvertToAssets.ts +1 -1
- package/src/actions/bend/getMaxDeposit.ts +1 -1
- package/src/actions/dex/aggregators/bex.ts +2 -1
- package/src/actions/dex/aggregators/enso/enso.ts +3 -2
- package/src/actions/dex/aggregators/enso/ensoErc4626.debug.test.ts +2 -3
- package/src/actions/dex/aggregators/erc4626.ts +2 -1
- package/src/actions/dex/aggregators/fly.ts +2 -1
- package/src/actions/dex/aggregators/haiku.ts +2 -1
- package/src/actions/dex/aggregators/kyberswap.ts +2 -2
- package/src/actions/dex/aggregators/oogabooga.ts +2 -1
- package/src/actions/dex/aggregators/openOcean.ts +2 -1
- package/src/actions/dex/aggregators/wbera.ts +2 -1
- package/src/actions/dex/getVaultPausedState.ts +2 -1
- package/src/actions/enso/getEnsoUserTokensWithBalances.debug.test.ts +1 -1
- package/src/actions/governance/__tests__/checkProposalField.unit.test.ts +2 -1
- package/src/actions/governance/__tests__/getDecodedFunctionData.integration.test.ts +66 -78
- package/src/actions/governance/__tests__/getQuorum.integration.test.ts +6 -7
- package/src/actions/governance/getDecodedFunctionData.ts +2 -2
- package/src/actions/governance/getProposalFromTx.ts +2 -1
- package/src/actions/governance/getProposalParams.ts +3 -2
- package/src/actions/governance/getQuorum.ts +2 -1
- package/src/actions/honey/getCollateralWeights.ts +2 -1
- package/src/actions/honey/getGlobalCapLimit.ts +2 -1
- package/src/actions/honey/getHoneyCollaterals.ts +2 -1
- package/src/actions/honey/getHoneyFees.ts +2 -1
- package/src/actions/honey/getHoneyPausedState.ts +2 -1
- package/src/actions/honey/getHoneyPreview.ts +2 -1
- package/src/actions/honey/getHoneyPythPriceOracle.ts +1 -1
- package/src/actions/honey/getHoneyRootPriceOracle.ts +2 -1
- package/src/actions/honey/getHoneyVaultsBalance.ts +3 -2
- package/src/actions/honey/getRelativeCapLimit.ts +2 -1
- package/src/actions/honey/getSharesWithoutFees.ts +3 -2
- package/src/actions/honey/getSwapPayload.ts +3 -2
- package/src/actions/honey/isBadCollateralAsset.ts +3 -2
- package/src/actions/honey/isBasketModeEnabled.ts +3 -2
- package/src/actions/pol/getBgtTokenTotalBoosts.ts +2 -1
- package/src/actions/pol/getLSTStakeConfig.ts +2 -1
- package/src/actions/pol/getRewardTokenToBeraRate.ts +2 -1
- package/src/actions/pol/getRewardVaultBeaconImplementation.ts +2 -1
- package/src/actions/pol/getRewardVaultDurationConstants.ts +2 -1
- package/src/actions/pol/getRewardVaultFromToken.ts +2 -1
- package/src/actions/pol/getRewardVaultIncentives.ts +2 -1
- package/src/actions/pol/getRewardVaultRewards.ts +2 -1
- package/src/actions/pol/getRewardVaultStakingToken.ts +1 -1
- package/src/actions/pol/getRewardVaults.ts +2 -1
- package/src/actions/pol/getSWBeraVaultMetadata.ts +2 -1
- package/src/actions/pol/getSWBeraWithdrawal.ts +2 -1
- package/src/actions/pol/getStakeWithdrawalCooldown.ts +1 -1
- package/src/actions/pol/getTotalStakedAmount.ts +2 -1
- package/src/actions/pol/getUserVaults.ts +2 -1
- package/src/actions/pol/getUserVaultsBalance.ts +2 -1
- package/src/actions/pol/getUserVaultsReward.ts +1 -1
- package/src/actions/pol/getVaultsSupply.ts +1 -1
- package/src/actions/pyth/getHoneyPythFeeds.ts +2 -1
- package/src/actions/transactions/beraWriteContract.integration.test.ts +48 -51
- package/src/actions/validators/getActiveBoostAndCommissionChangeDelay.ts +3 -2
- package/src/actions/validators/getBaselineRewardAllocation.ts +2 -1
- package/src/actions/validators/getDefaultRewardAllocation.ts +2 -1
- package/src/actions/validators/getUserBoostsOnValidator.ts +2 -1
- package/src/actions/validators/getValidatorCommission.ts +2 -1
- package/src/actions/validators/getValidatorOperatorAddress.ts +2 -1
- package/src/actions/validators/getValidatorQueuedCommission.ts +2 -1
- package/src/actions/validators/getValidatorQueuedOperatorAddress.ts +2 -1
- package/src/actions/validators/getValidatorQueuedRewardAllocation.ts +2 -1
- package/src/actions/validators/getValidatorRewardAllocation.ts +2 -1
- package/src/actions/validators/getValidatorRewardAllocatorAddress.ts +2 -1
- package/src/actions/validators/utils/__tests__/validatorUtils.integration.test.ts +10 -11
- package/src/errors/getRevertReason.integration.test.ts +115 -107
- package/src/hooks/dex/useAggregatorsRouterFeeBps.ts +2 -1
- package/src/hooks/dex/useCreatePool.ts +2 -1
- package/src/hooks/dex/usePollPoolCreationRelayerApproval.ts +2 -1
- package/src/hooks/governance/useGetPastVotes.ts +2 -1
- package/src/hooks/governance/useHasVoted.ts +2 -1
- package/src/hooks/governance/useIsCanceller.ts +2 -1
- package/src/hooks/governance/usePollProposalThreshold.ts +2 -1
- package/src/hooks/governance/usePollUserDelegates.ts +2 -1
- package/src/hooks/governance/useProposalSnapshot.ts +2 -1
- package/src/hooks/governance/useProposalState.ts +2 -1
- package/src/hooks/governance/useProposalTimelockState.ts +5 -4
- package/src/hooks/pol/useBgtUnstakedBalance.ts +2 -1
- package/src/hooks/pol/useOnChainRewardVault.ts +2 -1
- package/src/hooks/pol/useRewardVaultBalanceFromStakingToken.ts +2 -1
- package/src/hooks/pol/useRewardVaultFromToken.ts +2 -1
- package/src/hooks/validators/useOnChainValidator.ts +4 -3
- package/dist/chunk-A4UDYSB6.mjs +0 -4
- package/dist/chunk-A4UDYSB6.mjs.map +0 -1
- package/dist/chunk-CYKCYPFR.cjs +0 -2
- package/dist/chunk-CYKCYPFR.cjs.map +0 -1
- package/dist/chunk-F4BKSBEM.mjs +0 -2
- package/dist/chunk-F4BKSBEM.mjs.map +0 -1
- package/dist/chunk-FL2N3XHK.cjs +0 -2
- package/dist/chunk-FL2N3XHK.cjs.map +0 -1
- package/dist/chunk-MUCEYO3E.cjs +0 -4
- package/dist/chunk-MUCEYO3E.cjs.map +0 -1
- package/dist/chunk-Q3SCM6WL.mjs +0 -2
- package/dist/chunk-Q3SCM6WL.mjs.map +0 -1
- package/dist/chunk-TEBJWAVU.mjs +0 -2
- package/dist/chunk-TEBJWAVU.mjs.map +0 -1
- package/dist/chunk-VP7XUOSI.cjs +0 -2
- package/dist/chunk-VP7XUOSI.cjs.map +0 -1
- package/dist/pythWrapper-CBjsmmsK.d.cts +0 -1958
- package/dist/pythWrapper-CBjsmmsK.d.ts +0 -1958
- package/src/abi/bend/metaMorpho.ts +0 -2584
- package/src/abi/bend/morpho.ts +0 -444
- package/src/abi/bex/aggregatorsRouter.ts +0 -492
- package/src/abi/bex/balancerComposableStablePoolFactoryV6.ts +0 -283
- package/src/abi/bex/balancerPoolCreationHelper.ts +0 -267
- package/src/abi/bex/balancerVault.ts +0 -757
- package/src/abi/governance/governance.ts +0 -1016
- package/src/abi/governance/governanceTimelock.ts +0 -589
- package/src/abi/honey/collateralVault.ts +0 -1144
- package/src/abi/honey/honey.ts +0 -563
- package/src/abi/honey/honeyFactory.ts +0 -1270
- package/src/abi/honey/honeyFactoryReader.ts +0 -894
- package/src/abi/honey/honeyRootOracle.ts +0 -492
- package/src/abi/honey/pythPriceOracle.ts +0 -619
- package/src/abi/honey/pythWrapper.ts +0 -446
- package/src/abi/pol/LSTStakerVault.ts +0 -2032
- package/src/abi/pol/beaconDeposit.ts +0 -595
- package/src/abi/pol/beraChef.ts +0 -1019
- package/src/abi/pol/bgt.ts +0 -1008
- package/src/abi/pol/bgtIncentiveDistributor.ts +0 -640
- package/src/abi/pol/bgtStaker.ts +0 -1034
- package/src/abi/pol/rewardAllocationFactory.ts +0 -408
- package/src/abi/pol/rewardVault.ts +0 -1928
- package/src/abi/pol/rewardVaultFactory.ts +0 -586
- package/src/abi/pol/rewardVaultHelper.ts +0 -882
- package/src/abi/pol/stakeBeraVault.ts +0 -1116
- package/src/abi/pol/stakeBeraVaultWithdrawalRequest.ts +0 -618
- package/src/abi/pol/wbera.ts +0 -366
package/dist/hooks/exports.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as L,b as Qe,c as de,d as Ye}from"../chunk-TEBJWAVU.mjs";import{$ as cr,Aa as Hr,B as $t,Ba as Vr,C as zt,Ca as Wr,D as Zt,Da as Mr,Ea as _r,F as jt,Fa as Qr,G as be,Ga as Yr,H as Jt,Ha as Gr,I as Ke,Ia as Fr,J as er,K as tr,L as he,M as or,O as sr,P as ar,Q as nr,R as ir,S as lr,U as ur,V as pr,W as ue,X as mr,Y as ke,Z as Pe,_ as dr,a as Dt,ba as fr,c as j,ca as gr,da as yr,e as I,ea as Ar,f as Lt,fa as br,g as Ae,ga as hr,h as Ut,ha as Rr,i as Nt,ia as wr,ja as kr,k as Ht,ka as Pr,l as Vt,la as Cr,m as Wt,n as Mt,na as Ir,o as H,oa as Sr,pa as Er,qa as xr,r as _t,ra as vr,s as Qt,sa as Br,t as Yt,ua as Dr,v as Gt,w as Ft,wa as Or,x as Kt,xa as Lr,y as qt,ya as Ur,z as q,za as Nr}from"../chunk-A4UDYSB6.mjs";import{b as le,c as Y,h as xt,i as K,j as G,k as ce,l as vt,m as Bt}from"../chunk-Q3SCM6WL.mjs";import{c as V,e as qe,g as X,l as B,m as Kr}from"../chunk-55L7STYD.mjs";import{a as fe,c as Ce}from"../chunk-7SMWQ6SN.mjs";import"../chunk-NAXAZJJY.mjs";import"../chunk-YXLFOEZN.mjs";import"../chunk-OGJMSGB2.mjs";import"../chunk-575OK77P.mjs";import{c as Tr}from"../chunk-7WRTK7RJ.mjs";import{a as Ot,b as J,c as g,d as F,e as Ge,f as we}from"../chunk-2LL3P5PN.mjs";import{b as Te,c as qr}from"../chunk-3YXSUBA5.mjs";import{a as E,d as ge,j as Fe,k as Xt,l as rr,m as Re}from"../chunk-ECRMUMTA.mjs";import"../chunk-C3FHGFLK.mjs";import{a as C,b as U,d as ye,e as h}from"../chunk-THATXCJK.mjs";import{f as v,g as Z,h as D}from"../chunk-AX2YQQFQ.mjs";import fs from"swr";import{usePublicClient as gs}from"@berachain/wagmi/hooks";var $r=({sharesAmount:e,vaultAddress:t,vaultChainId:r},o)=>{let s=gs({chainId:r}),a=fs(s&&e&&t?["useGetConvertToAssets",e,t,r]:null,async([i,n,l])=>(g(s),Dt({sharesAmount:n,vaultAddress:l,publicClient:s})),{...o?.opts});return{...a,refresh:()=>{a.mutate()}}};import{useMemo as Js}from"react";import{zeroAddress as Xs}from"viem";import{defaultChainId as ea}from"@berachain/config/internal";import{useBeraWallet as ta,usePublicClient as ra}from"@berachain/wagmi/hooks";import{Slippage as ys,Swap as As,SwapKind as bs,Token as zr,TokenAmount as hs}from"@berachain-foundation/berancer-sdk";import{decodeFunctionData as Rs,formatEther as Zr,zeroAddress as ws}from"viem";import{getUriFromLink as ks}from"@berachain/config";import{ChainId as jr}from"@berachain/config/internal";var Ps=300,Cs=.05,$e=bs.GivenIn,ze=class extends I{name="Hub Pools";supportedChains=[jr.MAINNET,jr.BEPOLIA];url=ks(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:r,sorAmount:o,queryData:s}){let a=Number.parseFloat(Zr(t.scale18))/Number.parseFloat(o);if(Math.abs(1-a)>Cs){console.warn("SOR returned stale prices. Delta from return amount is more than 5%",{deltaFromSorAmount:a});let i=new v({reason:"SOR_STALE_PRICES",level:"warning",message:"SOR returned stale prices. Delta from return amount is more than 5%",extra:{deltaFromSorAmount:a,pools:r.map(n=>n.pools),onChainAmount:Zr(t.scale18),sorAmount:o,queryData:s},fingerprint:["SOR_STALE_PRICES"]});we.captureException(i)}}async getQuote(t){let r=new Lt(this.url,this.chainId),{tokenIn:o,tokenOut:s,amount:a,slippage:i,account:n=ws,publicClient:l}=t;this.assertChainSupport({tokenIn:o,tokenOut:s}),g(l);let u=h(o,"BERA")||h(s,"BERA"),m=new zr(this.chainId,this.convertZeroToWrapped(o.address),o.decimals),p=new zr(this.chainId,this.convertZeroToWrapped(s.address),s.decimals),c=hs.fromRawAmount(m,a),{paths:d,priceImpact:f,returnAmount:y}=await r.sorSwapPaths.fetchSorSwapPaths({chainId:this.chainId,tokenIn:m.address,tokenOut:p.address,swapKind:$e,swapAmount:c});if(!d?.length)throw new Z({response:void 0,endpoint:{url:this.url,name:this.name,type:this.type},reason:I.PATH_NOT_FOUND_REASON,chainId:this.chainId,payload:{tokenIn:m.address,tokenOut:p.address,swapKind:$e,swapAmount:c},message:"No swap paths returned from Balancer API"});let A=new As({chainId:this.chainId,paths:d,swapKind:$e,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:o,rawAmount:a,spender:R.to}),name:this.name,priceImpactPercentage:this.calculatePriceImpact(f),swapFeeBps:0,getCalldata:({account:w})=>{let b=A.buildCall({slippage:ys.fromPercentage(i.toString()),deadline:BigInt(Math.round(Date.now()/1e3)+Ps),queryOutput:R,sender:w,recipient:w,wethIsEth:u}),{args:P,functionName:k}=Rs({abi:le,data:b.callData});return{params:P,functionName:k,abi:le,address:b.to,value:b.value||BigInt(0)}}}}},Ze=new ze;import{ChainId as Jr}from"@berachain/config/internal";var je=class extends I{name="RedeemBgt";supportedChains=[Jr.MAINNET,Jr.BEPOLIA];type="rpc";checkChainSupport({tokenIn:t,tokenOut:r}){return super.checkChainSupport({tokenIn:t,tokenOut:r})?t.chainId===r.chainId&&h(t,"BGT",{chainId:t.chainId})&&h(r,"BERA"):!1}async getQuote({tokenIn:t,amount:r}){if(this.assertChainSupport({tokenIn:t,tokenOut:{...U,chainId:t.chainId}}),!h(t,"BGT",{config:this.config}))throw new D({property:"tokenIn",value:t,expected:"BGT",level:"warning"});return{amountOut:r,amountIn:r,allowanceRequirements:[],name:"RedeemBgt",isNativeSwap:!0,swapFeeBps:0}}},Xr=new je;import{zeroAddress as eo}from"viem";import{ChainId as to}from"@berachain/config/internal";var Je=class extends I{name="Enso";supportedChains=[to.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:r,amount:o,slippage:s,account:a=eo,aggregatorsFeeBps:i,proxyAggregatorsThroughVercel:n=!1,rewardVault:l}){this.assertChainSupport({tokenIn:t,tokenOut:r});let{tokenInAddress:u,tokenOutAddress:m,isTokenInNative:p,isTokenOutNative:c}=this.parseAddresses(t.address,r.address),d=this.getAmountAfterFees(o,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",to.MAINNET.toString()),f.searchParams.set("slippage",(Number(s)*100).toString()),f.searchParams.set("refundReceiver",a);let A=await(await this.fetch(f)).json(),R=this.getInputData({tokenIn:u,amountIn:o,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:o,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:o,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:i,getCalldata:()=>({params:[R,w,b,{rewardVault:l??eo,isSwapAndStake:!!l}],functionName:"swap",abi:L,value:BigInt(p?o:"0"),address:this.config.bex.aggregatorsRouter})}}},Xe=new Je;import{erc4626Abi as ro,formatUnits as Ts}from"viem";var et=class extends I{name="Mint";supportedChains=null;type="rpc";checkChainSupport({tokenIn:t,tokenOut:r,underlyingToken:o}){return super.checkChainSupport({tokenIn:t,tokenOut:r,underlyingToken:o})&&!!o&&o?.chainId===r.chainId&&(h(o,t)||h(t,"BERA")&&h(r,"SWBERA"))}async getQuote({tokenIn:t,tokenOut:r,amount:o,underlyingToken:s,publicClient:a}){this.assertChainSupport({tokenIn:t,tokenOut:r,underlyingToken:s}),J(s,"underlyingToken"),g(a);let i=await a.readContract({address:r.address,abi:ro,functionName:"convertToShares",args:[BigInt(o)]}),n=h(r,"SWBERA")&&h(t,"BERA");return{amountOut:i.toString(),amountIn:o,allowanceRequirements:n?[]:[{token:t,spender:r.address,amount:{raw:o,formatted:Ts(BigInt(o),t.decimals)}}],name:"Mint",isNativeSwap:!1,swapFeeBps:0,getCalldata:({account:l})=>n?{abi:Bt,address:r.address,functionName:"depositNative",params:[BigInt(o),l],value:BigInt(o)}:{abi:ro,address:r.address,functionName:"deposit",contractName:"others.erc4626",params:[BigInt(o),l],value:0n}}}},tt=new et;import{zeroAddress as Is}from"viem";import{ChainId as Ss}from"@berachain/config/internal";var oo="https://api.fly.trade/aggregator",rt=class extends I{name="Fly";supportedChains=[Ss.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:r,amount:o,slippage:s,account:a,aggregatorsFeeBps:i,rewardVault:n}){this.assertChainSupport({tokenIn:t,tokenOut:r});let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:m,isTokenOutNative:p}=this.parseAddresses(t.address,r.address),c=this.getAmountAfterFees(o,i),d=new URL(`${oo}/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(),R={amountOut:A.amountOut,amountIn:o,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:o,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:i??0},w=new URL(`${oo}/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:T})=>{let S=this.getInputData({tokenIn:l,amountIn:o,isNative:m}),x={tokenOut:u,receiver:T,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:p},N={aggregator:k?.to,data:k?.data};return{params:[S,x,N,{rewardVault:n??Is,isSwapAndStake:!!n}],functionName:"swap",abi:L,value:h(t,"BERA")?BigInt(o):BigInt("0"),address:this.config.bex.aggregatorsRouter}}}}},ot=new rt;import{formatUnits as Es,parseUnits as xs,zeroAddress as vs}from"viem";import{ChainId as Bs}from"@berachain/config/internal";var st=class extends I{name="Haiku";supportedChains=[Bs.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:r,amount:o,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,referrer:n,rewardVault:l}){if(t.decimals===void 0||r.decimals===void 0)throw new v({message:"Missing required params",level:"error"});this.assertChainSupport({tokenIn:t,tokenOut:r});let{tokenInAddress:u,tokenOutAddress:m,isTokenInNative:p,isTokenOutNative:c}=this.parseAddresses(t.address,r.address),d=this.getAmountAfterFees(o,a),f={intent:{allowancesMode:"approve",slippage:s/100,receiver:this.config.bex.aggregatorsRouterExecutor,input_positions:{[`bera:${u}`]:Es(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(f)})).json(),w={amountOut:xs(R.balances[0].amount,r.decimals).toString(),amountIn:o,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:o,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:R.quoteId})})).json();return{...w,getCalldata:({account:k})=>{let T=this.getInputData({tokenIn:u,amountIn:o,isNative:p,isPermit2Approval:!0,permit2SpenderAddress:this.config.bex.haikuAgentAddress}),S={tokenOut:m,receiver:k,minAmountOut:this.getMinAmountOut(w.amountOut,s),isNative:c},x={aggregator:P.to,data:P.data};return{params:[T,S,x,{rewardVault:l??vs,isSwapAndStake:!!l}],functionName:"swap",abi:L,value:BigInt(p?o:"0"),address:this.config.bex.aggregatorsRouter}}}}},at=new st;import{formatUnits as so}from"viem";import{ChainId as Ds}from"@berachain/config/internal";function Os(e){return e?"previewMintHoney":"previewRedeemCollaterals"}var nt=class extends I{name="Honey";supportedChains=[Ds.MAINNET];type="rpc";honeyToken=ye(this);isHoneyNativeSwap({tokenIn:t,tokenOut:r,honeyNativeState:o,...s}){if(!o?.collateralList)return!1;let a=h(r,"HONEY",s),i=h(t,"HONEY",s);return!a&&!i?!1:o.collateralList.some(n=>h(n.address,a?t:r))}checkChainSupport({tokenIn:t,tokenOut:r,honeyNativeState:o}){return super.checkChainSupport({tokenIn:t,tokenOut:r})&&t.chainId===r.chainId&&this.isHoneyNativeSwap({tokenIn:t.address,tokenOut:r.address,honeyNativeState:o})}async getQuote({tokenIn:t,tokenOut:r,amount:o,publicClient:s,account:a,honeyNativeState:i}){let{collateralList:n}=i??{};if(!n)throw new D({message:"Invalid Honey Context state",property:"collaterals",value:n,expected:"TokenWithOrder[]"});g(s),this.assertChainSupport({tokenIn:t,tokenOut:r});let l=h(r,this.honeyToken),u=n,m=n.find(T=>h(T.address,l?t.address:r.address));if(!m)throw new v({message:"This collateral is not part of the Honey protocol"});let[p,c]=await Promise.all([be({client:s,collateralList:[m]}),he({client:s,isMint:l,collateralList:n,latestPrices:void 0,isPythWrapperEnabled:!1})]);if(!p)throw new v({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=so(BigInt(o),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 jt(A);if(!R)throw new v({message:"Failed to fetch the Honey preview"});let{honey:w,collaterals:b}=R;if(!(l?!0:new E(d?.balance.formatted??"0").gte(so(b[m.address],m.decimals))))return;let k=await tr({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 v({message:"Failed to fetch the Honey swap payload"});return{amountIn:o,amountOut:l?w.toString():b[m.address].toString(),allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:o,spender:this.config.bex.aggregatorsRouter}),name:"Honey",swapFeeBps:0,getCalldata:({account:T})=>k({account:T})}}},it=new nt;import{zeroAddress as ao}from"viem";import{ChainId as Ls}from"@berachain/config/internal";var lt=class extends I{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:r,amount:o,slippage:s,account:a=ao,aggregatorsFeeBps:i,proxyAggregatorsThroughVercel:n=!1,rewardVault:l}){this.assertChainSupport({tokenIn:t,tokenOut:r});let{isTokenInNative:u,isTokenOutNative:m,tokenInAddress:p,tokenOutAddress:c}=this.parseAddresses(t.address,r.address),d=this.getAmountAfterFees(o,i);this.url=n?"/api/aggregators?aggregator=kyberswapRoutes":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/routes`;let f=new URL(this.url);f.searchParams.set("tokenIn",p),f.searchParams.set("tokenOut",c),f.searchParams.set("amountIn",d),f.searchParams.set("slippageTolerance",(s/100).toString()),f.searchParams.set("to",this.config.bex.aggregatorsRouterExecutor),f.searchParams.set("clientData",JSON.stringify({source:"berachain"}));let A=await(await this.fetch(f)).json(),R={amountOut:A.data.routeSummary.amountOut,amountIn:o,name:this.name,swapFeeBps:i,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:o,spender:this.config.bex.aggregatorsRouter})},w={routeSummary:A.data.routeSummary,sender:this.config.bex.aggregatorsRouterExecutor,recipient:this.config.bex.aggregatorsRouterExecutor,slippageTolerance:s*100,deadline:Math.floor(Date.now()/1e3)+300,source:"berachain"},b=f.searchParams.entries(),P=new URL(n?"/api/aggregators?aggregator=kyberswapBuild":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/route/build`);for(let[x,N]of b)P.searchParams.set(x,N);let T=await(await this.fetch(P,{method:"POST",body:JSON.stringify(w)})).json(),S=this.getInputData({tokenIn:p,amountIn:o,isNative:u});return{...R,getCalldata:({account:x})=>{let N={tokenOut:c,receiver:x,minAmountOut:this.getMinAmountOut(R.amountOut,s),isNative:m},Q={aggregator:T.data.routerAddress,data:T.data.data};return{params:[S,N,Q,{rewardVault:l??ao,isSwapAndStake:!!l}],functionName:"swap",abi:L,value:BigInt(u?o:"0"),address:this.config.bex.aggregatorsRouter}}}}},ut=new lt;import{zeroAddress as Us}from"viem";import{ChainId as Ns}from"@berachain/config/internal";var pt=class extends I{name="Oogabooga";supportedChains=[Ns.MAINNET];type="rest";async getQuote({tokenIn:t,tokenOut:r,amount:o,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,rewardVault:n}){this.assertChainSupport({tokenIn:t,tokenOut:r});let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:m,isTokenOutNative:p}=this.parseAddresses(t.address,r.address),c=this.getAmountAfterFees(o,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:o,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,spender:this.config.bex.aggregatorsRouter,rawAmount:o}),name:this.name,priceImpactPercentage:y.priceImpact,swapFeeBps:a};return{...A,getCalldata:({account:R})=>{let w=this.getInputData({tokenIn:l,amountIn:o,isNative:m}),b={tokenOut:u,receiver:R,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:p},P={aggregator:y.tx?.to,data:y.tx?.data};return{params:[w,b,P,{rewardVault:n??Us,isSwapAndStake:!!n}],functionName:"swap",abi:L,value:BigInt(m?o:"0"),address:this.config.bex.aggregatorsRouter}}}}},mt=new pt;import{zeroAddress as no}from"viem";import{ChainId as io}from"@berachain/config/internal";var dt=class extends I{name="OpenOcean";supportedChains=[io.MAINNET];type="rest";url="https://open-api.openocean.finance/v4/bera/swap";notFoundMessages=["No avail liquidity for the pair"];async getQuote({tokenIn:t,tokenOut:r,amount:o,slippage:s,account:a=no,aggregatorsFeeBps:i,publicClient:n,rewardVault:l}){if(g(n),!t.decimals)throw new D({property:"tokenIn.decimals",value:t.decimals,expected:"number",chainId:this.chainId});this.assertChainSupport({tokenIn:t,tokenOut:r});let u=this.getAmountAfterFees(o,i),{tokenInAddress:m,tokenOutAddress:p,isTokenInNative:c,isTokenOutNative:d}=this.parseAddresses(t.address,r.address),f=(await n.getGasPrice()).toString(),y=new URLSearchParams({chain:io.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()}`),R=await A.json();if(R.code!==200||!R.data){let b=this.notFoundMessages.some(P=>R.error.includes(P));throw new Z({response:A,endpoint:{url:this.url,name:this.name,type:this.type},cause:R,reason:b?I.PATH_NOT_FOUND_REASON:R.error})}let w={amountOut:R.data.outAmount,amountIn:o,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:o,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:i};return{...w,getCalldata:({account:b})=>{let P=this.getInputData({tokenIn:m,amountIn:o,isNative:c}),k={tokenOut:p,receiver:b,minAmountOut:this.getMinAmountOut(w.amountOut,s),isNative:d},T={aggregator:R.data.to,data:R.data.data};return{params:[P,k,T,{rewardVault:l??no,isSwapAndStake:!!l}],functionName:"swap",abi:L,value:BigInt(c?o:"0"),address:this.config.bex.aggregatorsRouter}}}}},ct=new dt;import{ChainId as lo}from"@berachain/config/internal";var ft=class extends I{name="Wrap";supportedChains=[lo.MAINNET,lo.BEPOLIA];type="rpc";checkChainSupport({tokenIn:t,tokenOut:r}){return t.chainId!==r.chainId||!super.checkChainSupport({tokenIn:t,tokenOut:r})?!1:h(t,"BERA")&&h(r,"WBERA")||h(t,"WBERA")&&h(r,"BERA")}async getQuote({tokenIn:t,tokenOut:r,amount:o}){this.assertChainSupport({tokenIn:t,tokenOut:r});let s=h(t,"BERA")&&h(r,"WBERA");return{amountOut:o,amountIn:o,allowanceRequirements:[],name:s?"Wrap":"Unwrap",isNativeSwap:!0,swapFeeBps:0,getCalldata:()=>s?{abi:Ye,address:this.config.tokens.wbera,functionName:"deposit",params:[],value:BigInt(o)}:{abi:Ye,address:this.config.tokens.wbera,functionName:"withdraw",params:[BigInt(o)],value:BigInt(0)}}}},gt=new ft;import Hs from"swr/immutable";import{zeroAddress as Vs}from"viem";import{usePublicClient as Ws}from"@berachain/wagmi/hooks";var Ie=()=>{let e=Ws(),{config:t}=C({chainId:e.chain?.id}),r=Hs(e&&t.bex.aggregatorsRouter&&t.bex.aggregatorsRouter!==Vs?["useAggregatorsRouterFeeBps",t.bex.aggregatorsRouter]:null,async([,o])=>{let s=await e.readContract({address:o,abi:L,functionName:"SWAP_FEE_RATE"});return Number(s)});return{...r,refresh:r.mutate}};import Qs from"swr/immutable";import{useConfig as Ys}from"@berachain/wagmi/hooks";import{getPublicClient as Ms}from"@wagmi/core";import{erc4626Abi as _s}from"viem";async function uo({token:e,wagmiConfig:t}){try{if(h(e,"BERA"))return null;let r=Ms(t,{chainId:e.chainId});g(r);let o=await r.readContract({address:e.address,abi:_s,functionName:"asset"});return await q({address:o,publicClient:r,chainId:e.chainId})}catch(r){let o=Ot({cause:r});if(o.reason==='The contract function "asset" reverted.')return null;throw o}}function po({token:e}){let t=Ys();return Qs(e&&t&&!h(e,"BERA")?["useUnderlyingAsset",e]:null,async([,r])=>uo({token:r,wagmiConfig:t}))}import Gs from"swr";import{parseUnits as Fs,zeroAddress as Ks}from"viem";import{useBeraWallet as qs,usePublicClient as $s}from"@berachain/wagmi/hooks";var mo="useAggregatorsQuotes";function zs({aggregator:e,account:t,args:r,feeBps:o,options:s,activeAggregators:a,isMAEnabled:i}){if(s?.opts?.isEnabled!==void 0&&!s?.opts?.isEnabled||!Number(r.amount)||!e.checkChainSupport({tokenIn:r.tokenIn,tokenOut:r.tokenOut,underlyingToken:r.underlyingToken,honeyNativeState:r.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}=r,y=Fs(p,u.decimals).toString();if(!(e.name==="Wrap"||e.name==="RedeemBgt"||e.name==="Honey"||!a||a.includes(n.toLowerCase().replaceAll(" ","")))||e.name==="Honey"&&r.honeyNativeState?.protocol.isPaused)return null;let R=e.name==="Mint"||e.name==="Enso (Mint)";return l&&o===void 0?null:[mo,n,u,m,y,c,e.needsAccountForQuote?t:void 0,l?o:0,d,f,R?r.underlyingToken:void 0,e.name==="Honey"?r.honeyNativeState?.collateralList:void 0]}function Zs({aggregator:e,publicClient:t,proxyAggregatorsThroughVercel:r}){return async([,,o,s,a,i,n,l,u,m,p,c])=>e.getQuote({tokenIn:o,tokenOut:s,amount:a,slippage:i,account:n,aggregatorsFeeBps:l,publicClient:t,proxyAggregatorsThroughVercel:r,referrer:u,rewardVault:m,underlyingToken:p,honeyNativeState:{collateralList:c??[]}})}function W({feeBps:e,publicClient:t,account:r,proxyAggregatorsThroughVercel:o,activeAggregators:s,isMAEnabled:a,...i},n){return Gs(zs({aggregator:i.aggregator,account:r,args:i,feeBps:e,options:n,activeAggregators:s,isMAEnabled:a}),Zs({aggregator:i.aggregator,proxyAggregatorsThroughVercel:o,publicClient:t}),n?.opts)}function yt(e){return{refreshInterval:1e4,errorRetryCount:3,...e?.opts,onErrorRetry(t,r,o,s,a){if(e?.opts?.onErrorRetry?.(t,r,o,s,a),!(t instanceof v&&t.reason===I.PATH_NOT_FOUND_REASON)){if(t instanceof Z&&t.statusCode===403){console.warn(r[1],"returned error 403, stopping retries");return}a.retryCount>(o.errorRetryCount??3)||setTimeout(()=>{s()},o.errorRetryInterval??Re(10))}}}}function js(e,t){let{address:r}=qs(),o=V("proxyAggregatorsThroughVercel"),s=V("aggregators"),a=$s(),{data:i}=Ie();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}=C(e),l=n.bex.aggregatorsRouter!==Ks;return W({...e,aggregator:e.aggregator,feeBps:i,activeAggregators:s,account:r,isMAEnabled:l,publicClient:a,proxyAggregatorsThroughVercel:o},{...t,opts:yt(t)})}var oa=[mt,ot,ut,ct,at,Xe,Ze,it,tt];function Kc(e,t){let{address:r}=ta(),o=V("proxyAggregatorsThroughVercel"),s=V("aggregators"),a=ra(),{data:i}=Ie(),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:ea}),{data:u}=po({token:e.tokenOut}),m=n||l,{config:p}=C(e),c=p.bex.aggregatorsRouter!==Xs,d=yt(t),f={activeAggregators:s,isMAEnabled:c,underlyingToken:u,isNativeSwap:m,account:r,publicClient:a,proxyAggregatorsThroughVercel:o,feeBps:i},y=W({...f,...e,aggregator:mt},{opts:d}),A=W({...f,...e,aggregator:ot},{opts:d}),R=W({...f,...e,aggregator:tt},{opts:d}),w=W({...f,...e,aggregator:ut},{opts:d}),b=W({...f,...e,aggregator:ct},{opts:d}),P=W({...f,...e,aggregator:at},{opts:d}),k=W({...f,...e,aggregator:Xe},{opts:d}),{protocol:T}=qe(),S=W({...f,...e,aggregator:Ze},{opts:{...d,isEnabled:T.isPaused===!1}}),x=W({...f,...e,aggregator:gt}),N=W({...f,...e,aggregator:Xr},{opts:d}),Q=W({...f,...e,aggregator:it},{opts:d}),O=n?[x]:l?[N]:[y,R,A,w,b,P,k,Q,T.isPaused===!1?S:null].filter(z=>z!==null);return{...Js(()=>{let z=O.reduce((M,ie)=>M||ie.error,void 0),_e=O.map((M,ie)=>M.isLoading?m?gt.name:oa[ie].name:null).filter(Boolean),ne=O.filter(M=>M!==void 0&&!M.isLoading&&!M.error&&M.data?.amountOut).map(({data:M})=>M),me=ne.length===0&&_e.length>0;return{quotes:ne,loadingAggregatorsNames:_e,isLoading:me,error:z}},[O]),refresh:()=>O.map(z=>z.mutate())}}import sa from"swr";var aa=({query:e}={})=>["useAllUserPools",e],co=(e,t)=>{let r=sa(aa({query:e}),async([o,s])=>Ae({...s,fetchPolicy:"no-cache"}),{refreshInterval:18e4,...t?.opts});return{...r,refresh:()=>{r.mutate()}}};import na from"swr";import{isAddress as ia}from"viem";var la=({poolId:e,account:t})=>e?["usePool-api",e,t]:null;function fo({poolId:e,account:t}){let r=na(la({poolId:e,account:t}),async([,o,s])=>{if(s&&!ia(s))throw new D({property:"account",value:s,expected:"Address"});return Ut({poolId:o,account:s})},{refreshInterval:1e5});return{...r,refresh:()=>{r.mutate()}}}import{useMemo as bo}from"react";import{PoolType as Se}from"@berachain-foundation/berancer-sdk";import pa from"swr/immutable";import{formatUnits as ma,keccak256 as da,parseUnits as Ee,zeroAddress as bt}from"viem";import{GetDedupedSubgraphPools as ca}from"@berachain/graphql/dex/subgraph";import{PoolType as go}from"@berachain-foundation/berancer-sdk";import{formatUnits as ua}from"viem";var At=e=>[...e].sort((t,r)=>t.address.toLowerCase().localeCompare(r.address.toLowerCase())),yo=e=>e.length===0?"":At(e).map(t=>t.symbol).join(" | "),Ao=(e,t,r)=>{let o;switch(r){case go.ComposableStable:o="STABLE";break;default:o=r.toString().toUpperCase();break}return r===go.Weighted?t.length===0?"":`${At(e).map((s,a)=>{let i=t[a];return`${(Number.parseFloat(ua(i,18))*100).toFixed(0)}${s.symbol}`}).join("-")}-${o}`:`${At(e).map(s=>s.symbol).join("-")}-${o}`};var fa=.005,ga=(r=>(r.None="None",r.Custom="Custom",r))(ga||{}),ya=({poolCreationHelper:e,poolCreateTokens:t,initialLiquidityTokens:r,swapFeePercentage:o,salt:s,poolName:a,poolSymbol:i,owner:n,amplification:l,oracles:u,message:m,actionType:p,gasLimit:c=Fe})=>{let d=t.map(k=>k.address.toLowerCase()).sort((k,T)=>k<T?-1:1),f=d.map(k=>{let T=r.find(O=>O.address.toLowerCase()===k||h(k,"WBERA")&&h(O.address,"BERA")),S=T?Ee(T.amount,T.decimals):0n,x=u.find(O=>O.tokenAddress.toLowerCase()===k.toLowerCase()),N=x?x.address:bt,Q=BigInt(x?x.cacheDuration:100);return{amountIn:S,rateProvider:N,cacheDuration:Q}}),y=f.map(k=>k.amountIn),A=f.map(k=>k.rateProvider),R=f.map(k=>k.cacheDuration),w=r.findIndex(k=>h(k.address,"BERA")),b=w!==-1?Ee(r[w].amount,r[w].decimals):0n,P=b>0n;return{address:e,abi:Qe,functionName:"createAndJoinStablePool",params:[a,i,d,BigInt(l),A,R,!1,o,y,n,s,P],message:m,actionType:p,value:b,gasLimit:c,track:{eventName:"hub_pool_create",eventData:{poolName:a,poolSymbol:i}}}},Aa=({poolCreationHelper:e,poolCreateTokens:t,initialLiquidityTokens:r,normalizedWeights:o,swapFeePercentage:s,salt:a,poolName:i,poolSymbol:n,owner:l,message:u,actionType:m,gasLimit:p=Fe})=>{let c=[],d=[],f=[],y=[];t.map((w,b)=>({createToken:w.address,joinToken:r[b].address,weight:o[b],amountIn:Ee(r[b].amount,r[b].decimals)})).sort((w,b)=>w.createToken.toLowerCase()<b.createToken.toLowerCase()?-1:1).forEach(w=>{c.push(w.createToken),d.push(w.joinToken),f.push(w.weight),y.push(w.amountIn)});let A=d.indexOf(bt),R=A!==-1?y[A]:0n;return{address:e,abi:Qe,functionName:"createAndJoinWeightedPool",params:[i,n,c,d,f,Array(c.length).fill(bt),s,y,l,a],message:u,actionType:m,value:R,gasLimit:p,track:{eventName:"hub_pool_create",eventData:{poolName:i,poolSymbol:n}}}},bf=({poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:r,poolType:o,poolName:s,poolSymbol:a,swapFee:i,owner:n,amplification:l,oracles:u,weightsDuplicationThreshold:m=fa,...p})=>{let{data:c,error:d,isLoading:f}=pa(["useCreatePool__deduped_pool",e,o,r],async()=>{if(e.length===0||!o)return null;let w=j("bex.subgraph",{});try{let b=Te(e).map(T=>T.address.toLowerCase()).sort((T,S)=>T.toLowerCase()<S.toLowerCase()?-1:1);return(await w.query({query:ca,variables:{tokens:b,type:o}})).data.pools.filter(T=>T.tokens?.every(S=>o===Se.Weighted?b.includes(S.address)&&Math.abs(Number(S.weight)-Number(ma(r[b.indexOf(S.address)],18)))<m:b.includes(S.address)||S.address===T.address))?.at(0)??null}catch{return null}}),{generatedPoolName:y,generatedPoolSymbol:A}=bo(()=>{if(!e)return{generatedPoolName:"",generatedPoolSymbol:""};let w=yo(e),b=Ao(e,r,o);return{generatedPoolName:w,generatedPoolSymbol:b}},[e,r,o]),R=bo(()=>{if(!n||s===""||a===""||e.length!==t.length||e.length===0)return null;let w=Ee(i.toString(),16),b=da(Buffer.from(`${s}-${n}`)),{config:P}=C(p);return o===Se.Weighted?Aa({poolCreationHelper:P.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:r,swapFeePercentage:w,salt:b,poolName:s,poolSymbol:a,owner:n,message:`Create pool ${s}`,actionType:"Create Pool"}):o===Se.ComposableStable||o===Se.MetaStable?ya({poolCreationHelper:P.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,r,o,i,s,a,n,l,u]);return{generatedPoolName:y,generatedPoolSymbol:A,isDupePool:!!c,dupePool:c,createPoolArgs:R,isLoadingPools:f,errorLoadingPools:d}};import ka from"swr";import{usePublicClient as Pa}from"@berachain/wagmi/hooks";import{erc20Abi as ba,formatUnits as ha}from"viem";import{GetExploitedTokens as Ra}from"@berachain/graphql/dex/subgraph";var wa=1e-4;async function ho({token:e,publicClient:t,...r}){let o=j("bex.subgraph",r),s=await t.readContract({address:e.address,abi:ba,functionName:"totalSupply"}),a=E(ha(s,e.decimals)).multipliedBy(wa),{data:i}=await o.query({query:Ra,variables:{token:e.address,balance:a.toFixed()}});return i.userInternalBalances.length>0}var Ca=e=>{let t=e?.filter(r=>r.address);return!t||t.length===0?null:["useExploitedTokens",t]},xf=({tokens:e})=>{let t=Ca(e),r=Pa(),o=ka(r?t:null,async([,s])=>(g(r),(await Promise.all(s.map(i=>ho({token:i,publicClient:r})))).reduce((i,n,l)=>(n!==void 0&&(i[s[l].address]=n),i),{})));return{...o,refresh:()=>o.mutate()}};import Ta from"swr";var Ia=()=>{let e=Ta("useGlobalLiquidityAndSwapVolume",async()=>Nt());return{...e,data:{totalLiquidity:Number(e.data?.protocolMetricsAggregated.totalLiquidity),swapVolume24h:Number(e.data?.protocolMetricsAggregated.swapVolume24h)},refresh:()=>e.mutate()}};import{useEffect as Sa,useState as Ea}from"react";import{PoolType as pe}from"@berachain-foundation/berancer-sdk";var xa=.05,Hf=({currentStep:e,tokenPrices:t,isLoadingTokenPrices:r,tokens:o,weights:s,weightsError:a,poolType:i,liquidityMismatchTolerancePercent:n=xa,oracles:l})=>{let[u,m]=Ea({title:null,message:null});return Sa(()=>{if(!t||r||!o||!s||a||o.some(b=>!b.address)||l.some(b=>b.mode==="Custom")){m({title:null,message:null});return}let p=0,c=[],d=o.length,y=Te(o).map(b=>{let P=t[b.address.toLowerCase()]?.price??0;if(!P||P===0)return c.push(0),null;let k=P*Number.parseFloat(b.amount);return c.push(k),p+=k,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===
|
|
3
|
-
This discrepancy could expose you to potential losses from arbitrageurs. ${i===pe.ComposableStable?"Did you mean to create a Weighted pool instead?":""}`,suggestWeighted:i===pe.ComposableStable}):m({title:null,message:null})},[e,t,r,o,s,a,i,n,l]),u};import{formatEther as Co,isAddressEqual as ja}from"viem";import La from"swr";import{isAddress as Ro,zeroAddress as Ua}from"viem";import{useBeraWallet as Na,usePublicClient as Ha}from"@berachain/wagmi/hooks";import va from"swr/immutable";import{isAddress as Ba,zeroAddress as Da}from"viem";import{usePublicClient as Oa}from"@berachain/wagmi/hooks";var ht=({tokenAddress:e},{isEnabled:t=!0}={})=>{let r=Oa(),o=r&&e&&Ba(e)&&t?["useRewardVaultFromToken",e]:null,s=va(o,async([,a])=>{if(!a)throw new Error("useRewardVaultFromToken needs a valid token address");g(r);let{config:i}=C({chainId:r.chain.id}),n=await r.readContract({address:i.pol.factory,abi:vt,functionName:"getVault",args:[a]});return n===Da?void 0:n});return{...s,refresh:()=>s.mutate()}};var wo=({stakingToken:e,rewardVaultAddress:t},r)=>{let{address:o}=Na(),s=Ha(),a=r?.opts?.isEnabled??!0,{data:i=t,error:n,mutate:l,isLoading:u}=ht({tokenAddress:e},{isEnabled:!t&&a}),m=La(i&&o&&s&&Ro(i)&&Ro(o)&&a?["useVaultBalanceFromStakingToken",i,o]:null,async([,p,c])=>{if(g(s),p===Ua)return{address:p,balance:0n};let d=await s.readContract({address:p,abi:ce,functionName:"balanceOf",args:[c]});return{address:p,balance:d}});return{...m,refresh:()=>{l(),m.mutate()},isLoading:m.isLoading||u}};import Ya from"swr";import{erc20Abi as Ga,formatEther as Fa,formatUnits as Ka,isAddress as Po,zeroAddress as qa}from"viem";import{defaultChainId as $a}from"@berachain/config/internal";import{useBeraWallet as za,usePublicClient as Za}from"@berachain/wagmi/hooks";import Va from"swr/immutable";import{isAddress as Wa,zeroAddress as Ma}from"viem";import{defaultChainId as _a}from"@berachain/config/internal";import{usePublicClient as Qa}from"@berachain/wagmi/hooks";function ko(e,t){let r=Qa({chainId:e.chainId}),o=e?.address&&r&&Wa(e.address)?["useTokenInformation",e.address,e.chainId]:null,s=Va(o,async([a,i,n=_a])=>h(i,"BERA")?{address:Ma,decimals:U.decimals,name:U.name,symbol:U.symbol,chainId:n}:(g(r),await q({address:i,publicClient:r,chainId:n})),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}}function xe({address:e,owner:t,chainId:r=$a},o){let s=e;h(s,"ETH")&&(s=qa);let a=Za({chainId:r}),{address:i}=za(),n=t??i,l=(o?.opts?.isEnabled??!0)&&a&&n&&Po(n)&&s&&Po(s)?["usePollBalance",n,s,r]:null,{data:u,isLoading:m}=ko({address:s,chainId:r}),p=h(s,"BERA"),{isLoading:c,data:d,error:f,...y}=Ya(l,async([,w,b])=>(g(a),h(b,"BERA")?await a.getBalance({address:w}):await a.readContract({address:b,abi:Ga,functionName:"balanceOf",args:[w]})),{refreshInterval:1e4}),A=!f&&d?h(s,"BERA")?Fa(d):u&&!m?Ka(d,u.decimals):void 0:void 0,R={chainId:r,balance:d?{raw:d.toString(),formatted:A??"0"}:{raw:"0",formatted:"0"},address:s,decimals:p?U.decimals:u?.decimals??0,symbol:p?U.symbol:u?.symbol??"",name:p?U.name:u?.name??""};return{...y,refresh:()=>{y.mutate()},isLoading:c||p?m:!1,error:f||!p?f:void 0,data:R}}var hg=({pool:e,vaultAddress:t},r)=>{let{data:o,...s}=xe({address:e?.address}),{data:a,refresh:i}=wo({stakingToken:e?.address,rewardVaultAddress:t??e?.rewardVault?.vaultAddress},r),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:o?{...o,usdValue:o?Number(o.balance.formatted)*u:void 0}:void 0,tokenBalances:e?.tokens?.map(p=>{let c=m?.find(y=>ja(y.address,p.address))?.ratio??0,d=c?E(o?.balance.formatted??"0").times(c):E(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:Co(a.balance)},usdValue:Number(Co(a.balance))*u}:void 0},...s,refresh:()=>{s.refresh?.(),i()}}};import{useMemo as Io}from"react";import{parseUnits as tn,zeroAddress as rn}from"viem";import Ja from"swr";import{useBeraWallet as Xa,useConfig as en}from"@berachain/wagmi/hooks";function To(e,t){let r=en(),{address:o}=Xa(),s=r&&o&&e?.items?["usePollAllowances",o,e?.items]:null,a=Ja(s,async([,i,n])=>Cr({items:n,account:i,config:r}),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a?.mutate?.()}}function on({amount:e,decimals:t,slippage:r}){let o=tn((r??0).toString(),t);return e+e*o/BigInt(100*10**t)}function sn(e,t){let{slippage:r}=t??{},o=Io(()=>e.filter(l=>l.token.address!==rn).filter(l=>E(l.amount.formatted).gt(0)),[e]),{data:s,refresh:a,isLoading:i}=To({items:o});return{needsApproval:Io(()=>s?.map(l=>{let u=o.find(p=>h(p.token.address,l.token));if(!u)throw new v({message:"Token not found when matching allowance in useMultipleTokenApprovalsWithSlippage",cause:{allowance:l,items:o}});let m=on({decimals:u.token.decimals,amount:BigInt(u.amount.raw),slippage:r});if(E(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,r,o]),refresh:a,isLoading:i}}import{useMemo as fn}from"react";import gn from"swr/immutable";import{formatUnits as yn,isAddress as An}from"viem";import{usePublicClient as bn}from"@berachain/wagmi/hooks";import an from"swr/immutable";import{isAddress as nn}from"viem";import{defaultChainId as ln}from"@berachain/config/internal";import{usePublicClient as un}from"@berachain/wagmi/hooks";function So(e,t){let r=un(),o=r&&e.addresses?["useMultipleTokenInformation",e.addresses,e.chainId??ln]:null,s=an(o,async([,a,i])=>(g(r),Promise.all(a.map(async n=>{if(!n||!nn(n,{strict:!1}))throw new Error("Invalid address");let l=await q({address:n,publicClient:r,chainId:i});if(!l)throw new Error(`Token ${n} not found`);return l}))),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}}import{useMemo as ve}from"react";import mn from"swr";import{isAddress as dn,zeroAddress as cn}from"viem";import{defaultChainId as te}from"@berachain/config/internal";import{useContext as pn}from"react";function ee(){let e=pn(Kr);if(!e)throw new v({message:"useTokens must be used within a TokensProvider",level:"fatal"});return{...e,data:{tokenList:e.tokenList,customTokenList:e.userTokens,featuredTokenList:e.featuredTokens}}}function re({addressIn:e}={},t={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{tokenList:r,ensoTokens:o}=ee(),s=ve(()=>{let p=[];return e&&p.push(...e.filter(c=>dn(c))),p.map(c=>c.toLowerCase())},[r]),i=ve(()=>{let p=new Set(r?.map(c=>c.address.toLowerCase()));return r.some(c=>h(c,"WBERA"))&&p.add(cn),s?.some(c=>!p.has(c))},[s,r])?s:r.map(p=>p.address),n=i&&(t.opts?.isEnabled??!0)?["useTokenCurrentPrices",i.map(p=>p.toLowerCase())]:null,l=mn(n,async([,p])=>Pr({addressIn:p}),t.opts),u=ve(()=>{if(!o)return{};let p=new Map([[te,new Map]]);for(let c of o)c.price===void 0||c.chainId!==te||p.get(te)?.set(c.address.toLowerCase(),{...c,price:c.price,chainId:te});return Object.fromEntries(i.map(c=>{let d=p.get(te)?.get(c)?.price;return d?[c.toLowerCase(),{price:d,chainId:te,updatedAt:Date.now()}]:[null,null]}))},[o]),m=ve(()=>({...u,...l.data}),[u,l.data]);return{...l,data:m}}function hn(e){let t="poolId"in e?e.poolId?.slice(0,42):e.address;return An(t)&&t?["useOnChainPoolData",t]:null}function Eo(e){let t=bn(),r=e?.slice(0,42),o=hn({poolId:e}),{data:s,error:a,isLoading:i,mutate:n}=gn(t?o:null,async([,d])=>Ht({poolId:d,publicClient:t})),{data:l,isLoading:u}=So({addresses:s?.poolTokens[0]}),{data:m,isLoading:p}=re({addressIn:s?.poolTokens[0]});return{data:fn(()=>{if(!s||!l)return;let d={address:r.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:yn(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 R=Number(m?.[A.address.toLowerCase()]?.price??0);return R?y+R*Number(A.balance):y},0);return d.totalLiquidity=f?.toString()??"",d},[s,l,m,r,e]),error:a,isLoading:i||u||p,mutate:n,refresh:()=>n()}}import Rn from"swr";import{useBeraWallet as wn,usePublicClient as kn}from"@berachain/wagmi/hooks";var Pn=e=>{let{address:t}=wn(),r=kn(),o=t&&r?["usePollPoolCreationRelayerApproval",t,r.chain.id]:null,s=Rn(o,async([,i])=>{g(r);let{config:n}=C({chainId:r.chain.id});return await r.readContract({address:n.bex.vault,abi:le,functionName:"hasApprovedRelayer",args:[i,n.bex.poolCreationHelper]})},{...e?.opts});return{...s,refreshPoolCreationApproval:()=>{s.mutate()}}};import{useMemo as Cn}from"react";import Tn from"swr";function In({poolId:e}){return e?["usePool-subgraph",e]:null}var yy=({poolId:e})=>{let t=Tn(In({poolId:e}),async([,n])=>Mt({poolId:n}),{refreshInterval:1e5}),r=fo({poolId:e}),{data:o,isLoading:s,refresh:a}=Eo(e);return{data:[Cn(()=>{if(!t.data)return o;let n={...t.data};return o&&(n.swapFee=o.swapFee,n.totalShares=o.totalShares,n.createTime=o.createTime??n.createTime),n},[o,t]),r.data,o],isLoading:r.isLoading||t.isLoading||s,isError:r.error||t.error,refresh:()=>{r.refresh(),t.mutate(),a()}}};import Sn from"swr/immutable";var Ry=({poolId:e,typeInArray:t})=>Sn(e?["usePoolEvents",e,t]:null,async([,r,o])=>Vt({poolId:r,typeInArray:o}),{refreshInterval:18e4});import En from"swr";var Ty=({poolId:e,...t},r)=>{let{config:o}=C(t),a=En(e?["usePoolHistoricalData",e]:null,async([,i])=>await Wt({poolId:i,chain:o.bex.chainName}),r?.opts);return{...a,refresh:()=>void a.mutate()}};import{useMemo as xo}from"react";import xn from"swr";import{useBeraWallet as vn}from"@berachain/wagmi/hooks";var Bn=({query:e}={})=>["useAllPools",e],Dy=(e,t)=>{let{address:r}=vn(),{data:o,isLoading:s,mutate:a}=co({userAddress:r,chain:e.chain}),{data:i,isLoading:n,mutate:l}=xn(Bn({query:e}),async([p,c])=>Ae(c),{refreshInterval:18e4,...t?.opts}),u=xo(()=>{if(!i||!o?.pools?.length)return i?.pools??[];let p=Object.fromEntries(o.pools.map(c=>[c.id.toLowerCase(),c]));return i.pools.map(c=>({...c,...p[c.id.toLowerCase()]||{}})).filter(Boolean)},[i,o]),m=xo(()=>({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 On}from"react";import{useCallback as Dn,useMemo as vo}from"react";import{defaultChainId as oe}from"@berachain/config/internal";function $({tokens:e}={},t={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{ensoTokens:r}=ee(),o=re({addressIn:e?.filter(n=>n.chainId===oe).map(n=>n.address)},t),s=vo(()=>{let n=[];if(!e)return[];let l=new Map;for(let u of e){let m=u.chainId??oe;l.has(m)||l.set(m,new Map),l.get(m)?.set(u.address.toLowerCase(),u)}if(o.data){for(let[u,m]of Object.entries(o.data))if(m&&l.get(m.chainId??oe)?.get(u.toLowerCase())&&m.price!==void 0){let p=l.get(m.chainId??oe)?.get(u.toLowerCase());if(!p)continue;n.push({...p,chainId:m.chainId,price:m.price})}}if(r)for(let u of r)u.price!==void 0&&u.chainId!==void 0&&n.push({...u,chainId:u.chainId,price:u.price});return n},[o.data,r,e]),a=vo(()=>{let n={};for(let l of s){let u=l.chainId??oe;n[u]||(n[u]={}),n[u][l.address.toLowerCase()]=l.price}return n},[s]),i=Dn(n=>n?a[n.chainId??oe]?.[n.address?.toLowerCase()]??void 0:void 0,[a]);return{isLoading:o.isLoading,data:s,priceMap:a,getTokenPrice:i}}function Be({tokenIn:e,tokenOut:t,formattedAmountIn:r,formattedAmountOut:o}){let{getTokenPrice:s,isLoading:a}=$({tokens:e&&t?[e,t]:void 0});return{data:On(()=>{if(!e||!t||!r||!o)return;let n=s(e),l=s(t);return!n||!l?null:qr(n.toString(),l.toString(),r,o)},[e,t,r,o]),isLoading:a}}import Ln from"swr";import{formatEther as Un,parseUnits as Nn,zeroAddress as Do}from"viem";import{defaultChainId as Hn}from"@berachain/config/internal";import{useBeraWallet as Vn,usePublicClient as Wn}from"@berachain/wagmi/hooks";import{ethAddress as Bo,zeroAddress as Rt}from"viem";var wt=class extends I{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:r,amount:o,slippage:s,account:a=Rt,aggregatorsFeeBps:i,proxyAggregatorsThroughVercel:n=!1,rewardVault:l,underlyingToken:u}){this.assertChainSupport({tokenIn:t,tokenOut:r}),F(a,"account");let m=fe({useProxy:!n});t.address===Rt&&(t.address=Bo),r.address===Rt&&(r.address=Bo);let p=u??r,c=[{protocol:"enso",action:"route",args:{tokenIn:t.address,tokenOut:p.address,destinationChainId:t.chainId===p.chainId?void 0:p.chainId,refundReceiver:a,amountIn:o,slippage:s*100}}];if(u&&c.push({protocol:"erc4626",action:"deposit",args:{amountIn:{useOutputOfCallAt:0},tokenIn:u.address,primaryAddress:r.address,tokenOut:r.address}}),l){let A=c.length;c.push({protocol:"enso",action:"balance",args:{token:r.address}},{protocol:"erc20",action:"approve",args:{amount:{useOutputOfCallAt:A},spender:l,token:r.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()??r.address.toLowerCase();return{amountOut:d.minAmountsOut[f]??d.amountsOut[f]??"0",amountIn:o,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:o,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)})}}},De=new wt;function aA({tokenIn:e,loanToken:t,bendVault:r,rewardVault:o,amount:s,slippage:a},i){let{getTokenPrice:n}=$({tokens:e&&t?[e,t]:void 0}),l=Mn({tokenIn:e,loanToken:t,bendVault:r,rewardVault:o,amount:s?Nn(s,e?.decimals??18).toString():void 0,slippage:a},i),{data:u}=$r({sharesAmount:BigInt(l.data?.amountOut??0),vaultAddress:r.address}),{data:m}=Be({tokenIn:e,tokenOut:t,formattedAmountIn:s,formattedAmountOut:u?.formatted??"0"}),p=e?.chainId&&e.chainId!==Hn,{data:c,isLoading:d}=xe({address:Do,chainId:p?e?.chainId:void 0},{opts:{isEnabled:!!p}}),f=l.data?.getCalldata?.({account:Do})?.value??0n,y=c?.balance??{raw:"0",formatted:"0"},A=p&&f>0n&&!d&&f>BigInt(y.raw),R=p&&f>0n?Un(f):void 0;return{...l,zapSupplyAmount:u,priceImpact:m,hasInsufficientNativeBalance:A,isCrossChain:p,nativeFee:R,refresh:()=>{l.mutate()}}}function Mn({tokenIn:e,loanToken:t,bendVault:r,rewardVault:o,amount:s,slippage:a},i){let{address:n}=Vn(),l=!!e&&!!t&&!!r&&!!s&&!!n&&!h(t.address,e.address)&&e.chainId&&Number(s)>0&&!!a,u=Wn();return Ln(l?["useBendZapSupply",e,t,r,o,s,a]:null,async([,p,c,d,f,y,A])=>(g(u),F(n,"fromAddress"),F(p?.address,"tokenInAddress"),J(p?.chainId,"tokenInChainId"),await De.getQuote({tokenIn:p,tokenOut:d,underlyingToken:c,amount:y,slippage:A,account:n,rewardVault:f})),{...i?.opts,refreshInterval:1e5})}import{getPublicClient as Zn}from"@wagmi/core";import jn from"swr";import{parseUnits as Jn}from"viem";import{defaultChainId as Xn}from"@berachain/config/internal";import{useBeraWallet as ei,useConfig as ti}from"@berachain/wagmi/hooks";import{ethAddress as Yn,zeroAddress as Gn}from"viem";import{erc20Abi as _n,ethAddress as Qn}from"viem";var Oo=async({fromAddress:e,amountIn:t,tokenIn:r,chainId:o,ensoClient:s,bundle:a,publicClient:i})=>{let n=[];if(r!==Qn){let l=await s.getApprovalData({fromAddress:e,tokenAddress:r,chainId:o,amount:t}),u=!0;i&&(u=await i.readContract({address:r,abi:_n,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 Lo({fromAddress:e,amountIn:t,tokenIn:r,tokenOut:o,chainId:s,ensoClient:a,destinationChainId:i,slippage:n,publicClient:l}){if(!e)throw new D({property:"fromAddress",value:e,expected:"address"});o===Gn&&(o=Yn);let u={protocol:"enso",action:"route",args:{tokenIn:r,tokenOut:o,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 Oo({fromAddress:e,amountIn:t,tokenIn:r,chainId:s,ensoClient:a,bundle:m,publicClient:l});return{bundle:m,transactions:p}}import{useMemo as Fn}from"react";import Kn from"swr";import{useBeraWallet as qn,useConfig as $n,usePublicClient as zn}from"@berachain/wagmi/hooks";function Oe(e,t){let r=zn(),o=$n(),{address:s}=qn(),{tokenList:a,refresh:i}=ee(),n=e?.walletAddress??s,l=Fn(()=>new Map((e?.tokens??a)?.map(p=>[p.address.toLowerCase(),p])??[]),[a,e?.tokens]),u=r&&a!==void 0&&n?["usePollWalletBalances",n,Array.from(l.values())]:null,m=Kn(u,async([,p,c])=>Ce({account:p,tokenList:c,wagmiConfig:o}),{refreshInterval:1e5,...t?.opts});return{...m,refresh:()=>{m?.mutate?.(),i()}}}function EA({tokenIn:e,tokenOut:t,amount:r,slippage:o}){let{address:s}=ei(),a=ti(),i=fe(),{refresh:n}=Oe(),l=!!e&&!!t&&!!r&&Number(r)>0&&!!o&&!!s&&!!e.chainId,m=jn(l?["useEnsoSwapBundle",e,t,r,o]:null,async([,p,c,d,f])=>{F(s,"fromAddress"),F(p?.address,"tokenInAddress"),J(p?.chainId,"tokenInChainId"),F(c?.address,"tokenOutAddress"),Ge(d,"amount"),Ge(f,"slippage");let y=Zn(a,{chainId:p.chainId});g(y);let A=Jn(d,p.decimals).toString();return Lo({fromAddress:s,amountIn:A,tokenIn:p.address,tokenOut:c.address,chainId:p.chainId,ensoClient:i,destinationChainId:Xn,slippage:f,publicClient:y})},{refreshInterval:1e5,isEnabled:l});return{...m,refresh:()=>{m.mutate(),n()}}}import ri from"swr";import{formatUnits as oi,parseUnits as si}from"viem";import{chainConfigs as ai,defaultChainId as ni}from"@berachain/config/internal";import{useBeraWallet as ii}from"@berachain/wagmi/hooks";function NA({inputToken:e,amount:t,underlyingToken:r,slippage:o,tokenOut:s},a){let{address:i}=ii(),n=i??ai[ni].bex.aggregatorsRouterExecutor,u=!!e&&!!t&&Number(t)>0&&!!e.chainId&&!!r&&!!o?["useZapStakeBera",e,t,n,o,r,s]:null,m=ri(u,async([,c,d,f,y,A,R])=>{let w=si(d,c.decimals).toString();return De.getQuote({account:f,amount:w,tokenIn:c,underlyingToken:A,tokenOut:R,slippage:y})},{...a?.opts,refreshInterval:1e5}),{data:p}=Be({tokenIn:e,tokenOut:s,formattedAmountIn:t,formattedAmountOut:oi(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 kt,useEffect as di,useState as ci}from"react";import li from"gray-matter";import{encodeFunctionData as Ue,erc20Abi as ui,parseAbiItem as pi,toHex as mi}from"viem";function Le(e){return Object.values(e).some(t=>Array.isArray(t)?t.some(r=>typeof r=="object"&&r!==null?Le(r):!!r):typeof t=="object"&&t!==null?Le(t):!!t)}var Uo=({proposal:e,currentTopic:t,onError:r})=>{let o=Qt(e,t),s=[];if(o.actions=e.actions.map((n,l)=>{let u={};if(u.target=H({fieldOrType:"address",value:n.target}),n.type==="custom-action")if(n.input==="ABI")if(u.ABI=H({fieldOrType:"abi",value:n.ABI}),!n.functionSignature)u.functionSignature="Required";else try{let p=pi(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?H({fieldOrType:c.type,value:n.args?.[d],components:c.components}):H({fieldOrType:c.type,value:n.args?.[d]})}catch{return null}}),u.args.some(c=>c)||(s[l]=Ue({abi:[p],args:n.args})))}catch{u.functionSignature="Invalid ABI"}else if(n.input==="rawCalldata")u.rawCalldata=H({fieldOrType:"hex",value:n.rawCalldata}),s[l]=n.rawCalldata;else if(n.input==="message")u.message=H({fieldOrType:"string",value:n.message}),s[l]=mi(n.message);else throw new Error("Invalid input type");else if(n.type==="whitelist-reward-vault"||n.type==="blacklist-reward-vault"){if(u.vault=H({fieldOrType:"address",value:n.vault}),!u.vault){let p=n.type==="whitelist-reward-vault";s[l]=Ue({abi:K,functionName:"setVaultWhitelistedStatus",args:[n.vault,p,""]})}}else n.type==="whitelist-reward-vault-incentive"?(u.token=H({fieldOrType:"address",value:n.token}),u.minIncentiveRate=H({fieldOrType:"uint256",value:n.minIncentiveRate}),u.managerAddress=H({fieldOrType:"address",value:n.managerAddress}),!u.token&&!u.minIncentiveRate&&!u.managerAddress&&(s[l]=Ue({abi:ce,functionName:"whitelistIncentiveToken",args:[n.token,BigInt(n.minIncentiveRate),n.managerAddress]}))):n.type==="erc20-transfer"&&(u.amount=H({fieldOrType:"uint256",value:n.amount}),u.to=H({fieldOrType:"address",value:n.to}),!u.amount&&!u.to&&(s[l]=Ue({abi:ui,functionName:"transfer",args:[n.to,BigInt(n.amount)]})));return Le(u)?u:null}),r?.(o),Object.getOwnPropertyNames(o).map(n=>o[n]).some(n=>Array.isArray(n)?n.filter(l=>l).length>0:n===null?!1:!!n)){console.warn("Proposal has errors",o);return}if(s.length===0)throw new Error("No actions submitted in proposal");let a=new URL(e.forumLink),i=li.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 No={type:"custom-action",target:"",ABI:"",value:0n,functionSignature:"",args:[],input:"ABI",rawCalldata:"0x",message:""},fi=({initialData:e={},currentTopic:t,onError:r})=>{let[o,s]=ci({title:"",description:"",forumLink:"",actions:[No],...e,topic:new Set});di(()=>{s(l=>({...l,topic:new Set([t.id])}))},[t]);let a=kt(()=>{s(l=>({...l,actions:[...l.actions,No]}))},[]),i=kt(l=>{s(u=>{let m=[...u.actions];return m.splice(l,1),{...u,actions:m}})},[s]),n=kt(()=>o?Uo({proposal:o,currentTopic:t,onError:r}):void 0,[o,t]);return{proposal:o,setProposal:s,addProposalAction:a,removeProposalAction:i,computeParamsAndErrors:n}};import Ai from"swr/immutable";import{formatUnits as bi}from"viem";import{useBeraWallet as hi,usePublicClient as Ri}from"@berachain/wagmi/hooks";import gi from"swr/immutable";import{usePublicClient as yi}from"@berachain/wagmi/hooks";var Ho=({proposalId:e})=>{let t=yi();return gi(t&&e?["useProposalSnapshot",e]:null,async([,o])=>{g(t);let{config:s}=C({chainId:t.chain.id});return(await t.readContract({abi:Y,address:s.governance.governor,functionName:"proposalSnapshot",args:[BigInt(o)]})).toString()})};var ub=e=>{let{address:t}=hi(),r=Ri(),o=e.wallet||t,{data:s}=Ho({proposalId:e.proposalId}),a=e.timepoint||s;return Ai(a&&r&&o?["useGetPastVotes",a,o]:null,async([,n,l])=>{g(r);let{config:u}=C({chainId:r.chain.id});if(Number(n)>Date.now()/1e3)throw new Error("timepoint is in the future");let m=await r.readContract({abi:G,address:u.tokens.bgt,functionName:"getPastVotes",args:[l,BigInt(n)]});return bi(m,18)})};import wi from"swr";import{isAddress as ki}from"viem";import{useBeraWallet as Pi,usePublicClient as Ci}from"@berachain/wagmi/hooks";var Ab=({proposalId:e,wallet:t})=>{let{address:r}=Pi(),o=Ci(),s=t||r;return wi(o&&s&&ki(s)?["useHasVoted",e,s]:null,([,a,i])=>{g(o);let{config:n}=C({chainId:o.chain.id});return o.readContract({address:n.governance.governor,abi:Y,functionName:"hasVoted",args:[BigInt(a),i]})})};import Ti from"swr";import{usePublicClient as Ii}from"@berachain/wagmi/hooks";var Vo="0xfd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783";var Ib=({account:e,...t})=>{let r=Ii(),{config:o}=C(t);return Ti(e&&r?["useCancellerRole",e]:null,async([,a])=>(g(r),await r.readContract({abi:de,address:o.governance.timelock,functionName:"hasRole",args:[Vo,a]})),{refreshInterval:18e4,revalidateOnFocus:!1})};import{useEffect as Wo,useMemo as Si,useState as Ei}from"react";import xi from"swr/infinite";import{Proposal_OrderBy as vi,ProposalStatus as _}from"@berachain/graphql/governance";var Mo=10,Bi=e=>{switch(e){case _.QuorumNotReached:return[_.Active,_.Pending];case _.PendingQueue:case _.Defeated:return[_.Active];case _.PendingExecution:return[_.InQueue];default:return[e]}};function Di(e,t={}){let r=2*(t.perPage??Mo);return(o,s)=>{if(o!==0&&s&&s.length<r)return null;let a=t.status_in?.flatMap(Bi).filter((i,n,l)=>l.indexOf(i)===n);return["usePollAllProposals",o,e,t.where,a,t.orderBy,t.orderDirection,r,t.text]}}function Db(e,t){let r=t?.autoRefresh??!1,o=e.perPage??Mo,s=2*o,a=Di(e.topic,e);async function i(d){if(!d)return[];let[,f,y,A,R,w,b,P,k]=d;return(await _t({where:{topics_contains:[y],status_in:R?.length?R:void 0,...A},orderBy:w,orderDirection:b,text:k,perPage:P,offset:f*P})??[]).filter(Boolean)}let n=xi(a,i,{initialSize:1,refreshInterval:t?.opts?.refreshInterval??18e4,...t?.opts}),l=Si(()=>{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===vi.CreatedAt){let R=Number(A.createdAt)-Number(y.createdAt);return e.orderDirection==="asc"?R:-R}return 0}),f=[];for(let y=0;y<d.length;y+=o)f.push(d.slice(y,y+o));return f},[n.data,e,o]),u=n.data?.[n.data.length-1],m=!!u&&u.length===s,[p,c]=Ei(Date.now()/1e3);return Wo(()=>{if(!r)return;let d=setInterval(()=>{c(Date.now()/1e3)},1e4);return()=>clearInterval(d)},[r]),Wo(()=>{if(!n.data)return;let d=!1;for(let f of n.data.flat()){switch(f.status){case _.Pending:p>=Number(f.voteStartAt)&&(d=!0);break;case _.Active:p>=Number(f.voteEndAt)&&(d=!0);break;case _.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 _o,useState as Oi}from"react";import Li from"swr";import{ProposalStatus as Pt}from"@berachain/graphql/governance";import{usePublicClient as Ui}from"@berachain/wagmi/hooks";var Mb=(e,t)=>{let r=t?.autoRefresh??!1,o=Ui(),a=Li(e&&o?["usePollProposal",e]:null,([,l])=>(g(o),Yt({proposalId:l,client:o})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??18e4}),[i,n]=Oi(Date.now());return _o(()=>{if(!r)return;let l=setInterval(()=>{n(Date.now()/1e3)},1e4);return()=>clearInterval(l)},[]),_o(()=>{if(a.data!==void 0)switch(a.data.status){case Pt.Pending:i>=Number(a.data.voteStartAt)&&a.mutate();break;case Pt.Active:i>=Number(a.data.voteEndAt)&&a.mutate();break;case Pt.InQueue:Date.now()/1e3+1>=Number(a.data.queueEnd)&&a.mutate();break}},[a.data?.status,i]),{...a,refresh:()=>a?.mutate?.()}};import Ni from"swr";import{formatEther as Hi}from"viem";import{usePublicClient as Vi}from"@berachain/wagmi/hooks";var qb=e=>{let t=Vi(),o=Ni(t?["usePollProposalThreshold",e]:null,async([,s])=>{g(t);let a=await t.readContract({address:s,abi:Y,functionName:"proposalThreshold"});return{votesThreshold:Hi(a)}},{refreshInterval:18e4});return{...o,refresh:o.mutate}};import Wi from"swr/infinite";var Ne=1e3,jb=(e,t)=>Wi(Mi(e,t),async([r,o])=>Ft({variables:{...e,limit:Ne,offset:Ne*o}}),{parallel:!0,initialSize:Number.POSITIVE_INFINITY}),Mi=({...e},t)=>r=>r>Math.floor(t/Ne)?null:["usePollProposalVotes",r,Ne,e.proposalId,e.orderBy,e.orderDirection];import _i from"swr";import{formatEther as Qi}from"viem";import{useBeraWallet as Yi,usePublicClient as Gi}from"@berachain/wagmi/hooks";var ah=e=>{let{address:t}=Yi(),r=Gi(),s=_i(t?["usePollUserDelegates",t]:null,async([,a])=>{g(r);let{config:i}=C({chainId:r.chain.id});if(!r||!a)throw new Error("usePollUserDelegates needs publicClient and account");let[n,l]=await Promise.all([r.readContract({address:i.tokens.bgt,abi:G,functionName:"delegates",args:[a]}),r.readContract({address:i.tokens.bgt,abi:G,functionName:"getVotes",args:[a]})]);return{delegate:n,currentVotes:Qi(l)}},{...e?.opts,refreshInterval:e?.opts?.refreshInterval??18e4});return{...s,refresh:()=>s?.mutate?.()}};import Fi from"swr";import{usePublicClient as Ki,useTransactionReceipt as qi}from"@berachain/wagmi/hooks";var ph=e=>{let{data:t}=qi({hash:e}),r=Ki();return Fi(t&&r?["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:r})})};import $i from"swr/immutable";import{usePublicClient as zi}from"@berachain/wagmi/hooks";var Zi={0:"pending",1:"active",2:"canceled",3:"defeated",4:"succeeded",5:"queued",6:"expired",7:"executed"},yh=({proposalId:e,governorAddress:t})=>{let r=zi();return $i(t&&r&&e?["useProposalState",e]:null,async([,s])=>{g(r);let a=await r.readContract({abi:Y,address:t,functionName:"state",args:[BigInt(s)]});return Zi[a]})};import ji from"swr";import{usePublicClient as Ji}from"@berachain/wagmi/hooks";var Xi={0:"unset",1:"waiting",2:"ready",3:"done"},kh=({proposalTimelockId:e,timelockAddress:t})=>{let r=Ji();return ji(t&&r&&e?["useProposalTimelockState",e,t]:null,async([,s,a])=>{g(r);let i=await r.readContract({abi:de,address:a,functionName:"getOperationState",args:[s]});return Xi[i]},{refreshInterval:18e4})};import tl from"swr";import{usePublicClient as rl}from"@berachain/wagmi/hooks";import{formatEther as el}from"viem";async function Ct({at:e,publicClient:t,...r}){let{config:o}=C(r);g(t);let s=await t.readContract({address:o.governance.governor,abi:Y,functionName:"quorum",blockTag:"pending",args:[BigInt(e??Math.floor(Date.now()/1e3))]});return el(s)}function Dh({at:e},{isEnabled:t=!0}){let r=Math.floor(Date.now()/1e3),o=rl(),s=t&&o?["useQuorum",Number(e)>r?"now":e]:null,a=tl(s,async([,i])=>i==="now"?Ct({publicClient:o}):Ct({at:i,publicClient:o}));return{...a,data:a.data?Number(a.data):void 0}}import sl from"swr";import{usePublicClient as al}from"@berachain/wagmi/hooks";import ol from"swr";function se({priceFeedMap:e},t){let r=e?Object.values(e):null,o=(t?.opts?.isEnabled??!0)&&r?["usePythLatestPrices",r]:null;return ol(o,async([a,i])=>await Jt({priceFeedId:i}))}var Qo=({asset:e,amount:t,isMint:r,isBasketModeEnabled:o},s)=>{let a=al(),{priceFeedMap:i,flags:n}=B(),{data:l}=se({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,o]:null,m=sl(u,async([p,c,d,f,y,A])=>A?!1:(g(a),await zt({client:a,asset:d,amount:r?c:`-${c}`,isMint:r,latestPrices:f,isPythWrapperEnabled:y})),{...s?.opts,refreshInterval:0});return{...m,refresh:()=>void m.mutate()}};import nl from"swr";import{usePublicClient as il}from"@berachain/wagmi/hooks";var Yo=({asset:e,amount:t,isMint:r,isBasketModeEnabled:o},s)=>{let a=il(),{collateralList:i,referenceCollateral:n}=B(),u=nl(e&&t?["useCappedRelatively",e,t,i,n]:null,async([m,p,c,d,f])=>{if(o)return!1;if(g(a),!r){let y=`-${c}`;return f.address!==p?!1:(await Promise.all(d.map(R=>Ke({client:a,asset:R.address,amount:y,isMint:r,referenceCollateral:f})))).some(R=>R)}return await Ke({client:a,asset:p,amount:c,isMint:r,referenceCollateral:f})},{refreshInterval:0,...s?.opts});return{...u,refresh:()=>void u.mutate()}};import ll from"swr";import{usePublicClient as ul}from"@berachain/wagmi/hooks";var eR=({collateralList:e},t)=>{let r=ul(),s=ll(r&&e?["useCollateralWeights",e]:void 0,async([a,i])=>(g(r),await qt({client:r,collateralList:i})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...s,refresh:()=>void s.mutate()}};import{useMemo as Tt}from"react";import pl from"swr";import{useBeraWallet as ml,useConfig as dl,usePublicClient as cl}from"@berachain/wagmi/hooks";var Go=()=>{let e=cl(),{address:t}=ml(),{collateralList:r}=B(),o=dl(),a=pl(t&&r&&e?["useHoneyBalances",t,r]:null,async([i,n,l])=>{g(e);let u=[...l??[],ye({})];return(await Ce({account:n,tokenList:u,wagmiConfig:o}))?.reduce((c,d)=>(c[d.address]=d,c),{})},{refreshInterval:1e4});return{...a,refresh:()=>a.mutate()}};import fl from"swr";import{usePublicClient as gl}from"@berachain/wagmi/hooks";var Fo=e=>{let t=gl(),{collateralList:r}=B(),s=fl(r&&t?["useHoneyVaultsBalance",r]:null,async([a,i])=>(g(t),await be({client:t,collateralList:i})),{...e?.opts,refreshInterval:1e5});return{...s,refresh:()=>void s.mutate()}};import yl from"swr";import{usePublicClient as Al}from"@berachain/wagmi/hooks";var Ko=({collateral:e},t)=>{let r=Al(),{priceFeedMap:o,flags:s}=B(),{data:a}=se({priceFeedMap:e?.address?{[e.address]:o[e.address]}:void 0},{opts:{isEnabled:s.isPythWrapperEnabled&&!!e?.address}}),i=r&&e&&(s.isPythWrapperEnabled&&a?.prices.length||!s.isPythWrapperEnabled)?["useIsBadCollateralAsset",e,a,s.isPythWrapperEnabled]:null,n=yl(i,async([l,u,m,p])=>(g(r),await $t({client:r,collateral:u,latestPrices:m,isPythWrapperEnabled:p})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...n,refresh:()=>void n.mutate()}};var qo=({lowerThan:e,vaultsBalances:t,state:r,collateralList:o})=>{if(!(r.actionType==="mint")&&!r.isBasketModeEnabled){let a=t?.find(l=>l.address.toLowerCase()===r.collaterals[0].address.toLowerCase()),i=new E(a?.balance.formatted??"0").lte(e),n=o.filter(l=>{let u=t?.find(m=>m.address.toLowerCase()===l.address.toLowerCase());return new E(u?.balance.formatted??"0").lte(e)});return{isLow:i,isLiquidityLowCollaterals:n}}return{isLow:!1,isLiquidityLowCollaterals:[]}},bl=({vaultsBalances:e,redeemedVaultBalance:t,state:r,collateralList:o})=>{if(!(r.actionType==="mint")&&e&&t){let a=o.filter(i=>{let n=e.find(u=>u.address.toLowerCase()===i.address.toLowerCase()),l=r.toAmount[r.collaterals.indexOf(i)];return new E(n?.balance.formatted??"0").lt(l??"0")});return{isMore:!!a.find(i=>h(i,r.collaterals[0])),isRedeemMoreThanLiquidityCollaterals:a}}return{isMore:!1,isRedeemMoreThanLiquidityCollaterals:void 0}};function hl({state:e,honeyBalances:t,...r}){let{config:o}=C(r),s=e.actionType==="mint";return!s&&t?new E(e.fromAmount[0]).gt(t[o.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 E(t[a.address]?.balance.formatted).lt(n)}):new E(t[e.collaterals[0].address]?.balance.formatted).lt(e.fromAmount[0]):!1}var DR=({actionType:e,collaterals:t,fromAmount:r,toAmount:o,isBasketModeEnabled:s})=>{let a={actionType:e,collaterals:t,fromAmount:r,toAmount:o,isBasketModeEnabled:s},i=e==="mint",{data:n}=Ko({collateral:t[0]}),{collateralList:l}=B(),{isBlacklisted:u,isDepegged:m}=n??{isBlacklisted:!1,isDepegged:!1},{data:p}=Qo({asset:t[0],amount:i?r[0]:o[0],isMint:i,isBasketModeEnabled:s}),{data:c}=Yo({asset:t[0]?.address,amount:i?r[0]:o[0],isMint:i,isBasketModeEnabled:s}),{data:d}=Go(),{data:f}=Fo(),y=t[0]?.address,A=f?.find(T=>T.address.toLowerCase()===y.toLowerCase()),[R,w]=Tt(()=>{let T=qo({lowerThan:1,vaultsBalances:f,state:a,collateralList:l}),S=qo({lowerThan:1e3,vaultsBalances:f,state:a,collateralList:l});return[T,S]},[f,a]),{isMore:b,isRedeemMoreThanLiquidityCollaterals:P}=Tt(()=>bl({vaultsBalances:f,redeemedVaultBalance:A,state:a,collateralList:l}),[f,A,a,l]),k=Tt(()=>hl({state:a,honeyBalances:d}),[a,d]);return{isLiquidityDepleted:R.isLow,isLiquidityDepletedCollaterals:R.isLiquidityLowCollaterals,isRedeemMoreThanLiquidity:b,isRedeemMoreThanLiquidityCollaterals:P,isLowLiquidity:w.isLow,isLiquidityLowCollaterals:w.isLiquidityLowCollaterals,isBlacklisted:a.isBasketModeEnabled?!1:u,isDepegged:a.isBasketModeEnabled?!1:m,isCappedGlobally:p,isCappedRelatively:c,isExceedingBalance:k}};import Rl from"swr";function NR({days:e}){let t=Rl(["useHoneyChartData",e],async([r,o])=>await Kt({days:o}));return{...t,refresh:()=>t.mutate()}}import wl from"swr";function _R(){let e=wl(["useHoneyGlobalData"],()=>Zt()),t=e.data?.honeySnapshots.reduce((r,o)=>new E(o.totalVolume).plus(r),new E(0));return{...e,data:{...e.data,dailyVolume:t},refresh:()=>e.mutate()}}import{useEffect as Cl,useReducer as Tl}from"react";import{formatUnits as zo}from"viem";import{defaultChainId as Il}from"@berachain/config/internal";import kl from"swr";import{usePublicClient as Pl}from"@berachain/wagmi/hooks";function $o({state:e},t){let r=Pl(),{priceFeedMap:o,flags:s,collateralList:a}=B(),{data:i}=se({priceFeedMap:o},{opts:{isEnabled:s.isPythWrapperEnabled&&!!a.length}}),n=e.actionType==="mint",l=r&&e&&a.length>0&&(s.isPythWrapperEnabled&&i?.prices.length||!s.isPythWrapperEnabled)?["useIsBasketModeEnabled",n,i,s.isPythWrapperEnabled,a]:null,u=kl(l,async([m,p,c,d,f])=>(g(r),await he({client:r,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 Sl={actionType:"mint",collaterals:[],fromAmount:[],toAmount:[],isBasketModeEnabled:!1,isTyping:!1,isSubmitting:!1,isLoading:!1};function Zo(e,t){switch(t.type){case"RESET_AMOUNTS":return{...e,fromAmount:[],toAmount:[]};case"ACTION_TYPE_CHANGE":return Zo({...e,actionType:t.value},{type:"RESET_AMOUNTS"});case"COLLATERALS_CHANGE":return{...e,collaterals:t.value,fromAmount:[],toAmount:[]};case"FROM_AMOUNT_CHANGE":{let r=e.fromAmount;return r[t.index]=t.value,{...e,fromAmount:r}}case"TO_AMOUNT_CHANGE":{let r=e.toAmount;return r[t.index]=t.value,{...e,toAmount:r}}case"PREVIEW_CHANGE":{let r=t.value,o=e.actionType==="mint",s=e.collaterals.map((i,n)=>t.changedAsset===i.address?o?e.fromAmount[n]:e.toAmount[n]:r.collaterals[i.address]?zo(r.collaterals[i.address],i.decimals):e.isBasketModeEnabled?"0":""),a=h(t.changedAsset,"HONEY",{chainId:Il})?o?e.toAmount[0]:e.fromAmount[0]:r.honey?zo(r.honey,18):e.isBasketModeEnabled?"0":"";return{...e,fromAmount:o?s:[a],toAmount:o?[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 rw=()=>{let{collateralList:e}=B(),[t,r]=Tl(Zo,Sl,s=>({...s,collaterals:e})),{data:o}=$o({state:t});return Cl(()=>{o!==void 0&&t.isBasketModeEnabled!==o&&(r({type:"IS_LOADING_CHANGE",value:!0}),r({type:"IS_BASKET_MODE_ENABLED_CHANGE",value:o}),r({type:"IS_LOADING_CHANGE",value:!1}))},[o]),{state:t,dispatch:r}};import El from"swr/immutable";import{usePublicClient as xl}from"@berachain/wagmi/hooks";var uw=({pythPriceFeedCalldata:e,tokenListLength:t},r)=>{let o=xl(),s=(r?.opts?.isEnabled??!0)&&e&&e.length>0?["usePythUpdateFee",e]:null,{data:a=Xt(t),isLoading:i}=El(s,async([n,l])=>(g(o),await er({client:o,priceFeedId:l})));return{QUERY_KEY:s,data:a,isLoading:i}};import{useMemo as vl}from"react";function cw(e){return vl(()=>{if(e)return ar(e)},[e])}import Bl from"swr";import{formatEther as Dl}from"viem";import{useBeraWallet as Ol,usePublicClient as Ll}from"@berachain/wagmi/hooks";var Ul=e=>{let{address:t}=Ol(),r=Ll(),s=Bl(t&&r?["useBgtUnstakedBalance",t]:null,async([,a])=>{g(r);let{config:i}=C({chainId:r.chain.id}),n=await r.readContract({address:i.tokens.bgt,abi:G,functionName:"unboostedBalanceOf",args:[a]});return Dl(n)},{...e,refreshInterval:e?.opts?.refreshInterval??1e5});return{...s,refresh:()=>s.mutate()}};import Nl from"swr";import{formatUnits as Hl}from"viem";import{useBeraWallet as Vl,usePublicClient as Wl}from"@berachain/wagmi/hooks";var Ml=()=>{let{address:e}=Vl(),t=Wl(),o=Nl(e&&t?["useClaimableFees",e]:null,async([,s])=>{g(t);let{config:a}=C({chainId:t.chain.id}),i=await br({account:s,vaultAddress:a.pol.staker,publicClient:t});return Hl(i,18)},{refreshInterval:18e4*2});return{...o,refresh:()=>o?.mutate?.()}};import{GqlRewardVaultOrderBy as Gl,GqlRewardVaultOrderDirection as Fl}from"@berachain/graphql/pol/api";import _l from"swr";import{usePublicClient as Ql}from"@berachain/wagmi/hooks";var Yl=(e,t=!1)=>["useRewardVaults",e,t],It=(e,t)=>{let r=Yl(e.filter,e.onChainIncentives),o=Ql(),s=_l(t?.opts?.isEnabled??!0?r:null,async([,a,i])=>await ir({filter:a,publicClient:i?o:void 0}),{...t?.opts});return{...s,refresh:s.mutate}};var Uw=(e={},{isEnabled:t=!0}={})=>{let r=It({filter:{orderBy:Gl.Apr,orderDirection:Fl.Desc,pageSize:1,where:e}},{opts:{refreshInterval:0,revalidateOnFocus:!1,refreshWhenOffline:!1,isEnabled:t}});return{isLoading:r.isLoading,highestApr:r.data?.gaugeList[0].dynamicData?.apr,refresh:r.mutate}};import Kl from"swr";import{usePublicClient as ql}from"@berachain/wagmi/hooks";var jo=e=>{let t=ql(),r=Kl(t?"usePollGlobalData":null,async()=>(g(t),lr(t)),{revalidateOnFocus:!1,...e?.opts});return{...r,refresh:r.mutate}};import $l from"swr/immutable";var zl=()=>"usePollMarkets",Gw=e=>{let t=zl(),r=$l(t,async()=>await ur(),{...e?.opts});return{...r,refresh:()=>r.mutate()}};import Zl from"swr/immutable";import{isAddress as jl}from"viem";import{usePublicClient as Jl}from"@berachain/wagmi/hooks";function jw({receiptTokenAddresses:e,account:t,version:r},o){let s=Jl(),a=e&&t&&s&&jl(t)&&r?["useQueuedBeraUnlock",e,t,r]:null,i=Zl(a,async([,n,l,u])=>(g(s),await Promise.all(n.map(async m=>await gr({contractAddress:m,accountAddress:l,publicClient:s,version:u}))).then(m=>m.flat())),{refreshInterval:1e4,...o?.opts});return{...i,refresh:()=>i.mutate()}}import Xl from"swr";import{isAddress as eu}from"viem";import{defaultChainId as tu}from"@berachain/config/internal";import{usePublicClient as ru}from"@berachain/wagmi/hooks";var nk=({address:e},t)=>{let r=e?["useRewardTokenToBeraRate",e]:null,o=ru({chainId:tu});return Xl(r,async([s,a])=>{if(!a||!eu(a))throw new D({property:"address",value:a,expected:"Address"});return g(o),ue({address:a,publicClient:o})},{...t?.opts})};import pu from"swr";import su from"swr";import{erc20Abi as au,formatUnits as nu,isAddress as iu}from"viem";import{usePublicClient as lu}from"@berachain/wagmi/hooks";import{erc20Abi as He,formatUnits as ou}from"viem";async function Ve({address:e,publicClient:t}){g(t);let[r,o,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:r.result,name:o.result,symbol:s.result,totalSupply:a.result!==void 0?r.status==="success"?ou(a.result,r.result):a.result.toString():void 0}}var uu=e=>e&&iu(e)?["onChainRewardVault",e.toLowerCase()]:null,Jo=({address:e},t)=>{let r=lu(),o=t.opts?.isEnabled??!0,s=uu(e);return su(o&&r?s:null,async([,a])=>{g(r);let{config:i}=C({chainId:r.chain.id}),n=await Pe({address:a,publicClient:r}),[l,u,m]=await Promise.all([ke({address:a,stakingToken:n,publicClient:r}),r.readContract({address:i.pol.beraChef,abi:K,functionName:"isWhitelistedVault",args:[a]}),r.readContract({address:n,abi:au,functionName:"balanceOf",args:[a]})]),[p,c]=await Promise.all([Ve({address:n,publicClient:r}),Promise.all(l.map(d=>q({address:d.token,chainId:r.chain.id,publicClient:r})))]);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:nu(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 mu=e=>e?["useRewardVault",e.toLowerCase()]:null,Tk=(e,t)=>{let r=mu(e),o=pu(r,async([i,n])=>mr({address:n}),{...t?.opts}),s=t?.opts?.isEnabled??((!!o.error||!o.isLoading)&&!o.data),a=Jo({address:e},{opts:{...t?.opts,isEnabled:s}});return{data:a.data??o.data,error:a.error??o.error,isLoading:a.isLoading||o.isLoading,isValidating:a.isValidating??o.isValidating,refresh:()=>{o.mutate(),a.mutate()}}};import du from"swr";import{usePublicClient as cu}from"@berachain/wagmi/hooks";function Bk({address:e,stakingToken:t}){let r=cu(),s=du(r&&e&&t?["useRewardVaultIncentives",e,t]:null,async([,a,i])=>(g(r),await ke({address:a,stakingToken:i,publicClient:r})));return{...s,refresh:()=>s?.mutate?.()}}import fu from"swr";import{usePublicClient as gu}from"@berachain/wagmi/hooks";var yu=(e,t)=>{let r=gu(),s=fu(r&&e?["useRewardVaultRewards",e]:null,async([,a])=>(g(r),await sr(a,r)),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}};import Au from"swr";var We=e=>{let t=[],r="";for(let o of e){if(!o.timestamp&&!o._timestamp)continue;let s=(o?.timestamp??o?._timestamp??0)*1e3,a=new Date(s),i=a.toDateString();if(i!==r){let n=new Date(a.setHours(0,0,0,0)).getTime()/1e3;t.push({...o,timestamp:n,_timestamp:n}),r=i}}return t};function Qk({range:e}){let r=Au(e?["useStakedAPR",e]:null,async([,o])=>{let s=await cr({range:o});return We(s.sort((i,n)=>i.timestamp-n.timestamp)).map(i=>({_timestamp:i.timestamp,apr:i.apr}))});return{...r,refresh:()=>r.mutate()}}import{useMemo as Me}from"react";import St from"swr";import{useBeraWallet as bu,usePublicClient as hu}from"@berachain/wagmi/hooks";var tP=e=>{let t=V("swberaAprWindow"),r=hu(),{address:o}=bu(),s=Me(()=>e.map(b=>b.receiptToken),[e]),a=Me(()=>e.map(b=>b.inputTokens[0]),[e]),i=t?["useStakedData:apr",t]:null,{data:n}=St(i,async([,b])=>dr({window:b}),{refreshInterval:1e5}),{data:l,isLoading:u}=Oe({tokens:s}),{getTokenPrice:m}=$({tokens:a}),p=r&&s.length>0?["useStakedData:exchangeRates",s]:null,{data:c}=St(p,async([,b])=>(g(r),Promise.all(b.map(P=>ue({address:P.address,publicClient:r})))),{refreshInterval:1e5}),d=Me(()=>{if(!(!l||!c))return e.map((b,P)=>{let k=b.inputTokens[0],T=l.find(ae=>ae.address===b.receiptToken.address)?.balance.raw??"0",S=c[P]??0,x=m(k)??0,Q=new E(T).multipliedBy(S).dividedBy(10**k.decimals),O=Q.multipliedBy(x);return{token:k,apr:n??0,stakedAmount:Q.toNumber(),stakedAmountUsd:O.toNumber(),earnedAmount:0,earnedAmountUsd:0,isLoadingEarnings:!0}})},[l,c,e,n,m]),f=o&&r&&e.length>0?["useStakedData:positions",o,e]:null,{data:y,isLoading:A,isValidating:R}=St(f,async([,b,P])=>(g(r),Promise.all(P.map(async k=>{let T=k.receiptToken,[S,x]=await Promise.all([nr({address:T.address,account:b}),ue({address:T.address,publicClient:r})]);return{earnings:S,exchangeRate:x}}))),{refreshInterval:1e4}),w=Me(()=>{if(!(!y||!l))return e.map((b,P)=>{let k=b.inputTokens[0],T=b.receiptToken,{earnings:S,exchangeRate:x}=y[P],N=m(k)??0,Q=l.find(cs=>cs.address===T.address)?.balance.raw??"0",O=x??0,ae=new E(S.earningsTotal).minus(S.earningsRealized),ne=new E(Q).multipliedBy(O).minus(ae).dividedBy(10**k.decimals),me=ae.dividedBy(10**k.decimals),M=ne.multipliedBy(N),ie=me.multipliedBy(N);return{token:k,apr:n??0,stakedAmount:ne.toNumber(),earnedAmount:me.toNumber(),stakedAmountUsd:M.toNumber(),earnedAmountUsd:ie.toNumber()}})},[y,l,e,n,m]);return{balances:d,data:w,isLoading:u&&A,isLoadingBalances:u,isLoadingPositions:A,isValidatingPositions:R}};import Ru from"swr";async function Xo({address:e,range:t}){let r=new Date,o=new Date(r.getTime()-Number(t)*24*60*60*1e3),{config:s}=C({}),a=`${s.bonder}/vaults/${e}/total-assets-by-day?start=${o.toISOString().split("T")[0]}`;return ge({url:a,type:"rest"})}function uP({range:e,addresses:t}){let o=Ru(e?["useStakedSnapshots",e,t]:null,async([,s,a])=>{let[...i]=await Promise.all([...a.map(async n=>{let l=await Xo({address:n,range:s}),u=We(l.sort((m,p)=>m._timestamp-p._timestamp));return{[n]:u}})]);return i.reduce((n,l)=>({...n,...l}),{})});return{...o,refresh:()=>o.mutate()}}import wu from"swr";import{usePublicClient as ku}from"@berachain/wagmi/hooks";var yP=e=>{let t=ku(),r=X();return wu(e&&t&&r?["useStakingVaultMetadata",e,t,r]:null,async([,s,a,i])=>(g(a),fr({address:s,publicClient:a,blockTime:i})),{refreshInterval:1e4})};import Pu from"swr";import{usePublicClient as Cu}from"@berachain/wagmi/hooks";function wP({vaultAddresses:e}){let t=Cu(),r=Pu(e&&t?["useTotalStakedAmount",e]:null,([,o])=>yr({vaultAddresses:o,publicClient:t}));return{...r,refresh:()=>r.mutate()}}import Tu from"swr";import{useBeraWallet as Iu,usePublicClient as Su}from"@berachain/wagmi/hooks";var Eu=(e,t)=>{let{address:r}=Iu(),o=Su(),s=r&&o&&e.vaultAddress?["useUserVaultInfo",r,e.vaultAddress]:null,a=Tu(s,async([,i,n])=>(g(o),hr({account:i,vaultAddress:n,publicClient:o})),{...t,refreshInterval:t?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a.mutate()}};import xu from"swr";import{useBeraWallet as vu,usePublicClient as Bu}from"@berachain/wagmi/hooks";var Du=e=>{let{address:t}=vu(),r=Bu(),s=xu(t&&r?["useUserVaults",t]:null,async([,a])=>(g(r),await Rr({account:a,publicClient:r})),{...e,refreshInterval:e?.opts?.refreshInterval??1e5,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import Ou from"swr";import{usePublicClient as Lu}from"@berachain/wagmi/hooks";var HP=e=>{let t=Lu();return Ou(e&&t?["useVaultAddress",e]:null,async([,o])=>{g(t);let[s]=await Promise.all([Pe({address:o,publicClient:t})]);return{stakeToken:s,address:o}})};import Uu from"swr";var _P=({vault:e,range:t,resolution:r})=>{let s=Uu(e?["useVaultHistory",e,t,r]:null,([,a,i,n])=>wr({vault:a,range:i,resolution:n}));return{...s,refresh:()=>s.mutate()}};import Nu from"swr";var Hu=(e,t)=>{let o=Nu(e?["useVaultValidators",e]:null,async([,s])=>await kr({address:s}),{...t?.opts});return{...o,refresh:()=>o.mutate()}};import{zeroAddress as Vu}from"viem";function es({address:e},t){let r=re({addressIn:e?[e]:void 0},t);return{...r,data:e?r.data?.[e.toLowerCase()]:void 0}}function ZP(e){return es({address:Vu},e)}import Wu from"swr/immutable";import{isAddress as Mu,zeroAddress as _u}from"viem";import{usePublicClient as Qu}from"@berachain/wagmi/hooks";var oC=(e,t)=>{let r=Qu(),o=e?.address&&r&&Mu(e.address)?["useStakingTokenInformation",e.address]:null,s=Wu(o,async([a,i])=>h(i,"BERA")?{address:_u,decimals:U.decimals,name:U.name,symbol:U.symbol}:await Ve({address:i,publicClient:r}),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}};function nC({token:e},t){let{isLoading:r,priceMap:o}=$({tokens:e?[e]:void 0},t);return{data:e?o[e.chainId]?.[e.address.toLowerCase()]:void 0,isLoading:r}}import Yu from"swr";import{erc20Abi as Gu}from"viem";import{usePublicClient as Fu}from"@berachain/wagmi/hooks";function dC({address:e}){let t=Fu();return Yu(e&&t?["useTotalSupply",e]:null,([,r])=>(g(t),t.readContract({address:r,abi:Gu,functionName:"totalSupply",args:[]})))}import Ku from"swr/immutable";import{useBlockNumber as qu,usePublicClient as $u}from"@berachain/wagmi/hooks";function wC(e){let t=$u(),{config:r}=C({chainId:t?.chain.id}),{data:o,isLoading:s}=qu({cacheTime:Re(r.averageBlockTime)}),{data:a}=Ku(o&&t&&Number(e)>0?["useBlockToTimestamp",e,o]:null,async([,n,l])=>(g(t),or({block:n,currentBlock:l,blockTime:i,publicClient:t}))),i=X();if(a)return Number(a.timestamp);if(!(s||!o))return Math.floor(rr(Date.now())+i*(Number(e)-Number(o)))}import{useCallback as rs,useReducer as zu}from"react";import{useBeraWagmi as Zu,useConfig as ju}from"@berachain/wagmi/hooks";var Et={confirmState:"idle",txnHash:"",message:""},ts=(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{...Et};default:return e}};function Ju({onlyPermissionless:e,onSuccess:t,onError:r,onLoading:o,onWarning:s,onSubmission:a}={}){let[i,n]=zu(ts,Et),{account:l,onSmartAccountRejection:u}=Zu(),m=ju(),p=l?.wallet?.isContract?6e4*10:12e4,c=rs(()=>{n({type:"confirm_reset"})},[]),d=V("enableSimulateCalls"),f=rs(y=>{if(e&&!y.permissionless){let A=new Tr({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),r?.(A,y),A}return Ir({wagmiConfig:m,...y,txConfirmationTimeout:p,enableSimulateCalls:d,onLoading(...A){n({type:"confirm_sending"}),y.onLoading?.(y),o?.(...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(),r?.(...A)}})},[m,o,s,a,t,r,e,d]);return{isLoading:i.confirmState==="loading",isSubmitting:i.confirmState==="submitting",isSuccess:i.confirmState==="success",isError:i.confirmState==="fail",write:f,reset:c}}var Xu=Ju;import ep from"swr/immutable";import{isAddress as tp,zeroAddress as rp}from"viem";import{chainId as op}from"@berachain/config/internal";async function sp(e){let t=await ge({url:`https://api.routescan.io/v2/network/testnet/evm/${op}/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 WC=e=>ep(e&&tp(e)&&e!==rp?["useGetVerifiedAbi",e]:null,()=>e?sp(e):Promise.resolve(""),{});import{useCallback as os,useEffect as ap,useState as np}from"react";function QC({key:e,defaultValue:t}){let r=os(()=>{if(typeof window>"u")return t;let i=window.history.state?.[e];return i!==void 0?i:t},[e,t]),[o,s]=np(r()),a=os(i=>{let n=r(),l=i instanceof Function?i(n):i,m={...window.history.state||{},[e]:l};window.history.replaceState(m,""),s(l)},[e,r]);return ap(()=>{if(window.history.state?.[e]===void 0){let l={...window.history.state||{},[e]:t};window.history.replaceState(l,"")}},[e,t]),[o,a]}import{useEffect as ip,useRef as lp}from"react";function FC(e){let t=lp(void 0);return ip(()=>{t.current=e}),t.current}import up from"swr";var pp=({variables:e}={})=>["useAllValidators",e],ZC=(e,t)=>{let{config:r}=C(e),o=up(pp({variables:e}),async([,s])=>await Sr({variables:{chain:r.bex.chainName,...s}}),{refreshInterval:18e4,...t?.opts});return{...o,refresh:()=>o.mutate()}};import mp from"swr";function eT({allocation:e}){return mp(e?["useApiEnrichedAllocation",e]:null,([,t])=>Er({allocation:t}))}import dp from"swr";import{isHex as cp}from"viem";var fp=e=>e?["useApiValidator",e]:null,ss=(e,t)=>{let r=fp(e),o=t?.opts?.isEnabled??!0,s=dp(o&&e?r:null,async([,a])=>{if(!a||!cp(a))throw new Error(`Invalid validator ID: ${a}`);return xr({id:a})},{...t?.opts});return{...s,refresh:()=>s.mutate()}};import gp from"swr";import{usePublicClient as yp}from"@berachain/wagmi/hooks";var as=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[{internalType:"address",name:"target",type:"address"}],name:"AddressEmptyCode",type:"error"},{inputs:[],name:"AmountGreaterThanReward",type:"error"},{inputs:[],name:"AmountLessThanMinIncentiveRate",type:"error"},{inputs:[],name:"CannotRecoverIncentiveToken",type:"error"},{inputs:[],name:"CannotRecoverRewardToken",type:"error"},{inputs:[],name:"CannotRecoverStakingToken",type:"error"},{inputs:[],name:"CommissionChangeAlreadyQueued",type:"error"},{inputs:[],name:"CommissionNotQueuedOrDelayNotPassed",type:"error"},{inputs:[],name:"DepositNotMultipleOfGwei",type:"error"},{inputs:[],name:"DepositValueTooHigh",type:"error"},{inputs:[],name:"DonateAmountLessThanPayoutAmount",type:"error"},{inputs:[{internalType:"address",name:"receiver",type:"address"}],name:"DuplicateReceiver",type:"error"},{inputs:[],name:"DurationChangeNotAllowed",type:"error"},{inputs:[{internalType:"address",name:"implementation",type:"address"}],name:"ERC1967InvalidImplementation",type:"error"},{inputs:[],name:"ERC1967NonPayable",type:"error"},{inputs:[],name:"FailedCall",type:"error"},{inputs:[],name:"IncentiveRateTooHigh",type:"error"},{inputs:[],name:"IndexOutOfRange",type:"error"},{inputs:[],name:"InsolventReward",type:"error"},{inputs:[],name:"InsufficientDelegateStake",type:"error"},{inputs:[],name:"InsufficientDeposit",type:"error"},{inputs:[],name:"InsufficientIncentiveTokens",type:"error"},{inputs:[],name:"InsufficientNativeValue",type:"error"},{inputs:[],name:"InsufficientSelfStake",type:"error"},{inputs:[],name:"InsufficientStake",type:"error"},{inputs:[],name:"InvalidActivateBoostDelay",type:"error"},{inputs:[],name:"InvalidArray",type:"error"},{inputs:[],name:"InvalidBaseRate",type:"error"},{inputs:[],name:"InvalidBoostMultiplier",type:"error"},{inputs:[],name:"InvalidCommissionChangeDelay",type:"error"},{inputs:[],name:"InvalidCommissionValue",type:"error"},{inputs:[],name:"InvalidCredentialsLength",type:"error"},{inputs:[],name:"InvalidDistribution",type:"error"},{inputs:[],name:"InvalidDropBoostDelay",type:"error"},{inputs:[],name:"InvalidIncentiveFeeRate",type:"error"},{inputs:[],name:"InvalidIncentiveRate",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidMaxIncentiveTokensCount",type:"error"},{inputs:[],name:"InvalidMaxWeightPerVault",type:"error"},{inputs:[],name:"InvalidMerkleRoot",type:"error"},{inputs:[],name:"InvalidMinBoostedRewardRate",type:"error"},{inputs:[],name:"InvalidProof",type:"error"},{inputs:[],name:"InvalidPubKeyLength",type:"error"},{inputs:[],name:"InvalidRewardAllocationInactivityBlockSpan",type:"error"},{inputs:[],name:"InvalidRewardAllocationWeights",type:"error"},{inputs:[],name:"InvalidRewardClaimDelay",type:"error"},{inputs:[],name:"InvalidRewardConvexity",type:"error"},{inputs:[],name:"InvalidRewardDuration",type:"error"},{inputs:[],name:"InvalidRewardRate",type:"error"},{inputs:[],name:"InvalidSignatureLength",type:"error"},{inputs:[],name:"InvalidStartBlock",type:"error"},{inputs:[],name:"InvalidToken",type:"error"},{inputs:[],name:"InvalidWeight",type:"error"},{inputs:[],name:"InvalidateDefaultRewardAllocation",type:"error"},{inputs:[],name:"InvariantCheckFailed",type:"error"},{inputs:[],name:"MaxNumWeightsPerRewardAllocationIsZero",type:"error"},{inputs:[],name:"MethodNotAllowed",type:"error"},{inputs:[],name:"MinIncentiveRateIsZero",type:"error"},{inputs:[],name:"NonTransferable",type:"error"},{inputs:[],name:"NotAContract",type:"error"},{inputs:[],name:"NotApprovedSender",type:"error"},{inputs:[],name:"NotBGT",type:"error"},{inputs:[],name:"NotBlockRewardController",type:"error"},{inputs:[],name:"NotDelegate",type:"error"},{inputs:[],name:"NotDistributor",type:"error"},{inputs:[],name:"NotEnoughBalance",type:"error"},{inputs:[],name:"NotEnoughBoostedBalance",type:"error"},{inputs:[],name:"NotEnoughTime",type:"error"},{inputs:[],name:"NotFactoryVault",type:"error"},{inputs:[],name:"NotFeeCollector",type:"error"},{inputs:[],name:"NotIncentiveManager",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"NotNewOperator",type:"error"},{inputs:[],name:"NotOperator",type:"error"},{inputs:[],name:"NotRewardAllocator",type:"error"},{inputs:[],name:"NotRewardDurationManager",type:"error"},{inputs:[],name:"NotRewardVaultManager",type:"error"},{inputs:[],name:"NotSystemAddress",type:"error"},{inputs:[],name:"NotWBERAStakerVault",type:"error"},{inputs:[],name:"NotWhitelistedVault",type:"error"},{inputs:[],name:"OnlyNFTOwnerAllowed",type:"error"},{inputs:[],name:"OnlySystemCallAllowed",type:"error"},{inputs:[],name:"OperatorAlreadySet",type:"error"},{inputs:[],name:"PayoutAmountIsZero",type:"error"},{inputs:[],name:"RewardAllocationAlreadyQueued",type:"error"},{inputs:[],name:"RewardAllocationBlockDelayTooLarge",type:"error"},{inputs:[],name:"RewardCycleNotEnded",type:"error"},{inputs:[],name:"RewardDurationCoolDownPeriodNotPassed",type:"error"},{inputs:[],name:"RewardInactive",type:"error"},{inputs:[],name:"RewardsDurationIsZero",type:"error"},{inputs:[],name:"StakeAmountIsZero",type:"error"},{inputs:[],name:"TimestampAlreadyProcessed",type:"error"},{inputs:[],name:"TokenAlreadyWhitelistedOrLimitReached",type:"error"},{inputs:[],name:"TokenNotWhitelisted",type:"error"},{inputs:[],name:"TooManyWeights",type:"error"},{inputs:[],name:"TotalSupplyOverflow",type:"error"},{inputs:[],name:"UUPSUnauthorizedCallContext",type:"error"},{inputs:[{internalType:"bytes32",name:"slot",type:"bytes32"}],name:"UUPSUnsupportedProxiableUUID",type:"error"},{inputs:[],name:"UnauthorizedETHTransfer",type:"error"},{inputs:[],name:"WithdrawAmountIsZero",type:"error"},{inputs:[],name:"WithdrawalAlreadyRequested",type:"error"},{inputs:[],name:"WithdrawalNotReady",type:"error"},{inputs:[],name:"WithdrawalNotRequested",type:"error"},{inputs:[],name:"ZeroAddress",type:"error"},{inputs:[],name:"ZeroOperatorOnFirstDeposit",type:"error"},{inputs:[],name:"ZeroPercentageWeight",type:"error"},{anonymous:!1,inputs:[{components:[{internalType:"address",name:"receiver",type:"address"},{internalType:"uint96",name:"percentageNumerator",type:"uint96"}],indexed:!1,internalType:"struct IBeraChef.Weight[]",name:"weights",type:"tuple[]"}],name:"BaselineAllocationSet",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{inputs:[],name:"ALLOCATION_SETTER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"UPGRADE_INTERFACE_VERSION",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"beraChef",outputs:[{internalType:"contract IBeraChef",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBaselineAllocation",outputs:[{components:[{internalType:"uint64",name:"startBlock",type:"uint64"},{components:[{internalType:"address",name:"receiver",type:"address"},{internalType:"uint96",name:"percentageNumerator",type:"uint96"}],internalType:"struct IBeraChef.Weight[]",name:"weights",type:"tuple[]"}],internalType:"struct IBeraChef.RewardAllocation",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_governance",type:"address"},{internalType:"address",name:"_beraChef",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"proxiableUUID",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"callerConfirmation",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"receiver",type:"address"},{internalType:"uint96",name:"percentageNumerator",type:"uint96"}],internalType:"struct IBeraChef.Weight[]",name:"weights",type:"tuple[]"}],name:"setBaselineAllocation",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"}];async function ns({publicClient:e,...t}){let{config:r}=C(t),o=await e.readContract({abi:as,address:r.pol.rewardAllocationFactory,functionName:"getBaselineAllocation"}),s=o.startBlock!==0n?await e.getBlock({blockNumber:o.startBlock}):{timestamp:0};return Br(o,Number(s.timestamp))}function gT(){let e=yp();return gp(e?["baselineRewardAllocation"]:null,()=>(g(e),ns({publicClient:e})))}import Ap from"swr";var bp=({pubKey:e,first:t=1})=>{let o=Ap(e?["useDailyValidatorBlockStats",e,t]:null,async([,s,a])=>await vr({pubKey:s,first:a}),{refreshInterval:18e4});return{...o,refresh:()=>o.mutate()}};import hp from"swr";import{usePublicClient as Rp}from"@berachain/wagmi/hooks";function wp(e){let t=Rp(),o=hp(t?["useDefaultRewardAllocation"]:null,async()=>(g(t),await Or({client:t})),{...e?.opts});return{...o,refresh:()=>o.mutate()}}import kp from"swr/immutable";var Pp=({account:e},t)=>{let o=kp(e?["useManagedValidatorByAccount",e]:null,async([,s])=>await Lr({account:s}),{...t?.opts});return{...o,refresh:()=>o.mutate()}};import{useMemo as ls}from"react";import Tp from"swr";import{useBeraWallet as Ip,usePublicClient as Sp}from"@berachain/wagmi/hooks";import{zeroAddress as Cp}from"viem";async function is({client:e,pubKey:t,...r}){let{config:o}=C(r);try{let s=await e.readContract({address:o.pol.beraChef,abi:K,functionName:"valRewardAllocator",args:[t]});return s===Cp?null:s}catch(s){throw console.log("getValidatorRewardAllocatorAddress:",s),s}}function us(e,t){return!e||!t?!1:t.operator?.toLowerCase()===e.toLowerCase()}function Ep(e,t){return!e||!t?!1:t.rewardAllocator?t.rewardAllocator.toLowerCase()===e.toLowerCase():us(e,t)}function xp({pubKey:e,account:t},r){let o=Sp(),s=V("mockValidatorOperator"),a=V("mockValidatorRewardAllocator"),i=o&&e?["useManagedValidatorRole",e]:null,{address:n}=Ip(),l=t??n,u=Tp(i,async([,c])=>{g(o);let[d,f]=await Promise.all([Qr({client:o,pubKey:c}),is({client:o,pubKey:c})]);return{operator:d??null,rewardAllocator:f}},{...r?.opts}),m=ls(()=>s||us(l,u.data),[l,s,u.data]),p=ls(()=>a||Ep(l,u.data),[l,a,u.data]);return{...u,data:u.data?{...u.data,hasOperatorRole:m,hasRewardAllocatorRole:p}:void 0,refresh:()=>u.mutate()}}import vp from"swr";import{keccak256 as Bp}from"viem";import{usePublicClient as Dp}from"@berachain/wagmi/hooks";var ps=({pubkey:e},t)=>{let r=Dp(),o=e?["useOnChainValidator",e]:null,s=t.opts?.isEnabled??!0,a=vp(s&&r?o:null,async([,i])=>{g(r);let{config:n}=C({chainId:r.chain.id}),[l,u,m]=await Promise.all([r.readContract({address:n.depositContract,abi:xt,functionName:"getOperator",args:[i]}),r?.readContract({address:n.tokens.bgt,abi:G,functionName:"boostees",args:[i]}),r.readContract({address:n.pol.beraChef,abi:K,functionName:"getActiveRewardAllocation",args:[i]})]);return{id:Bp(i),pubkey:i,operator:l,votingPower:Number(u)}});return{...a,refresh:()=>{a.mutate()}}};import Op from"swr";import{usePublicClient as Lp}from"@berachain/wagmi/hooks";var XT=({valPubKey:e,options:t})=>{let r=Lp(),s=(t?.opts?.isEnabled??!0)&&r&&e?["useStakingPoolBatch",e]:null,a=Op(s,async([,i])=>(g(r),await Ur({client:r,valPubKey:i})),{refreshInterval:1e4,...t?.opts});return{...a,refresh:()=>a.mutate()}};import Up from"swr";import{GetUserValidatorInformation as Np}from"@berachain/graphql/pol/subgraph";import{useBeraWallet as Hp}from"@berachain/wagmi/hooks";var Vp=({account:e}={})=>{let{address:t}=Hp(),r=e??t;return Up(r?["useSubgraphUserValidators",r]:null,async([,s])=>{let a=j("pol.subgraph",{}),{data:i}=await a.query({query:Np,variables:{address:s}});return i.userValidatorInformations})};import Wp from"swr";import{useBeraWallet as Mp,usePublicClient as _p}from"@berachain/wagmi/hooks";var Qp=e=>{let{address:t}=Mp(),r=_p(),s=Wp(r&&t?["useUserActiveValidators",t]:null,async([,a])=>await Hr({account:a,publicClient:r}),{...e,refreshInterval:e?.opts?.refreshInterval??18e4,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import Yp from"swr";import{useBeraWallet as Gp,usePublicClient as Fp}from"@berachain/wagmi/hooks";var Kp=({pubkey:e,...t})=>{let{address:r}=Gp(),o=Fp(),s=t.account??r,i=Yp(s&&e?["useUserBoostsOnValidator",e,s]:null,async([,n,l])=>await Nr({account:l,pubkey:n,publicClient:o}),{refreshInterval:1e5});return{...i,refresh:()=>i.mutate()}};import{useCallback as qp,useMemo as $p}from"react";import ds from"swr";import{useBeraWallet as zp}from"@berachain/wagmi/hooks";var ms=e=>{let t=new Set;return e.forEach(r=>{Array.isArray(r.rewards)&&r.rewards.forEach(o=>{o.token&&t.add(o.token)})}),t};var Zp=()=>{let{address:e}=zp(),r=ds(e?["useUserClaimableIncentives",e]:null,async([,l])=>{if(!l)throw new v({message:"useUserClaimableIncentives needs a logged in account",level:"error"});return await Ar({account:l})},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),o=r?.data,s=$p(()=>{if(o){if(!Array.isArray(o)){we.captureException(new v({message:"Incorrect aggregated incentives data receieved.",level:"error",extra:{allRewards:o,account:e}}));return}return ms(o)}},[o,e]),i=ds(e&&o?["useUserClaimableIncentives",e,o]:null,async([,l,u])=>{if(!l)throw new D({property:"account",value:l,expected:"Address"});if(!u)return[];if(!Array.isArray(u))throw new D({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 pr({account:l,validator:c,page:1,perPage:1e4}),validator:c})))},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),n=qp(()=>{r?.mutate(),i?.mutate()},[r,i]);return{...i,isLoading:r?.isLoading||i?.isLoading,tokenMap:s,refresh:n}};import jp from"swr/immutable";var SI=({account:e,validatorAddress:t})=>{let o=jp(e?["useUserStakingPositions",e,t]:null,async([s,a,i])=>{let n=await Vr(a);return i?n.filter(l=>l.validatorAddress.toLowerCase()===i.toLowerCase()):n});return{...o,refresh:()=>{o.mutate()}}};import{keccak256 as Jp}from"viem";function DI({pubkey:e},t){let{data:{validator:r,uptime:o}={},isLoading:s,error:a}=ss(Jp(e),t),{data:i,isLoading:n,error:l}=ps({pubkey:e},t);return{data:{uptime:o,validator:r||i?{...r,...i,operator:i?.operator??r?.operator,dynamicData:{activeBoostAmount:i?.dynamicData?.activeBoostAmount??r?.dynamicData?.activeBoostAmount??"",queuedBoostAmount:r?.dynamicData?.queuedBoostAmount??"",usersActiveBoostCount:r?.dynamicData?.usersActiveBoostCount??0,usersQueuedBoostCount:r?.dynamicData?.usersQueuedBoostCount??0,allTimeDistributedBGTAmount:r?.dynamicData?.allTimeDistributedBGTAmount??"0",rewardRate:i?.dynamicData?.rewardRate??r?.dynamicData?.rewardRate??"",stakedBeraAmount:r?.dynamicData?.stakedBeraAmount??"",lastDayDistributedBGTAmount:r?.dynamicData?.lastDayDistributedBGTAmount??"",activeBoostAmountRank:r?.dynamicData?.activeBoostAmountRank??0,boostApr:r?.dynamicData?.boostApr??0,commissionOnIncentives:r?.dynamicData?.commissionOnIncentives??0},id:i?.id??r?.id,pubkey:i?.pubkey??r?.pubkey,metadata:i?.metadata??r?.metadata,rewardAllocationWeights:i?.rewardAllocationWeights??r?.rewardAllocationWeights??[]}:null},isLoading:s||n,error:a||l}}import Xp from"swr";function em({pubkey:e,dayRange:t}){let o=Xp(e&&t?["useValidatorAnalytics",e,t]:null,async([,s,a])=>await Wr({pubkey:s,dayRange:a}),{refreshInterval:18e4});return{...o,refresh:()=>o.mutate()}}import tm from"swr";import{usePublicClient as rm}from"@berachain/wagmi/hooks";var om=(e,t)=>{let r=rm(),s=tm(r&&e?["useValidatorCommission",e]:null,async([,a])=>await Mr({client:r,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};var sm=e=>{let{data:t,isLoading:r}=jo(),o=X();return{data:t?_r(e,Number(t?.totalStakedBeraAmount),o):void 0,isLoading:r}};import am from"swr";import{usePublicClient as nm}from"@berachain/wagmi/hooks";function im(e,t){let r=nm(),s=am(r&&e?["useValidatorQueuedCommission",e]:null,async([,a])=>(g(r),await Yr({client:r,pubKey:a})),{...t?.opts});return{...s,refresh:()=>s.mutate()}}import lm from"swr";import{usePublicClient as um}from"@berachain/wagmi/hooks";var pm=(e,t)=>{let r=um(),s=lm(r&&e?["useValidatorQueuedOperatorAddress",e]:null,async([,a])=>await Gr({client:r,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};import mm from"swr";import{usePublicClient as dm}from"@berachain/wagmi/hooks";var cm=(e,t)=>{let r=dm(),s=mm(r&&e?["useValidatorQueuedRewardAllocation",e]:null,async([,a])=>await Fr({client:r,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};import fm from"swr";import{usePublicClient as gm}from"@berachain/wagmi/hooks";function ym(e,t){let r=gm(),s=fm(r&&e?["useValidatorRewardAllocation",e]:null,async([,a])=>await Dr({client:r,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}}export{ga as OracleMode,mo as USE_AGGREGATORS_QUOTES_QUERY_KEY,Zo as reducer,Kc as useAggregatorsQuotes,Ie as useAggregatorsRouterFeeBps,co as useAllUserPools,aa as useAllUserPoolsQueryKey,ZC as useAllValidators,pp as useAllValidatorsQueryKey,eT as useApiEnrichedAllocation,fo as useApiPool,la as useApiPoolQueryKey,ss as useApiValidator,fp as useApiValidatorQueryKey,gT as useBaselineRewardAllocation,aA as useBendZapSupply,Mn as useBendZapSupplyHelper,Xu as useBeraContractWrite,ZP as useBeraCurrentPrice,qe as useBexStatus,cw as useBgtAprSimulation,Ul as useBgtUnstakedBalance,wC as useBlockToTimestamp,Qo as useCappedGlobally,Yo as useCappedRelatively,Ml as useClaimableFees,eR as useCollateralWeights,bf as useCreatePool,fi as useCreateProposal,bp as useDailyValidatorBlockStats,wp as useDefaultRewardAllocation,EA as useEnsoSwapBundle,xf as useExploitedTokens,Ca as useExploitedTokensQueryKey,$r as useGetConvertToAssets,ub as useGetPastVotes,WC as useGetVerifiedAbi,Ia as useGlobalLiquidityAndSwapVolume,Ab as useHasVoted,Uw as useHighestVaultsAPR,QC as useHistoryState,DR as useHoneyAlerts,Go as useHoneyBalances,NR as useHoneyChartData,_R as useHoneyGlobalData,rw as useHoneySwapState,Fo as useHoneyVaultsBalance,Ko as useIsBadCollateralAsset,$o as useIsBasketModeEnabled,Ib as useIsCanceller,Hf as useLiquidityMismatch,hg as useLpPosition,Pp as useManagedValidatorByAccount,xp as useManagedValidatorRole,sn as useMultipleTokenApprovalsWithSlippage,So as useMultipleTokenInformation,Eo as useOnChainPoolData,hn as useOnChainPoolDataQueryKey,ps as useOnChainValidator,Db as usePollAllProposals,Di as usePollAllProposalsQueryKey,To as usePollAllowances,xe as usePollBalance,jo as usePollGlobalData,Gw as usePollMarkets,zl as usePollMarketsQueryKey,Pn as usePollPoolCreationRelayerApproval,Mb as usePollProposal,qb as usePollProposalThreshold,jb as usePollProposalVotes,Mi as usePollProposalVotesQueryKey,ah as usePollUserDelegates,Oe as usePollWalletBalances,yy as usePool,Ry as usePoolEvents,Ty as usePoolHistoricalData,Dy as usePools,Bn as usePoolsQueryKey,FC as usePrevious,Be as usePriceImpact,ph as useProposalFromTx,Ho as useProposalSnapshot,yh as useProposalState,kh as useProposalTimelockState,se as usePythLatestPrices,uw as usePythUpdateFee,jw as useQueuedBeraUnlock,Dh as useQuorum,nk as useRewardTokenToBeraRate,Tk as useRewardVault,wo as useRewardVaultBalanceFromStakingToken,ht as useRewardVaultFromToken,Bk as useRewardVaultIncentives,mu as useRewardVaultQueryKey,yu as useRewardVaultRewards,It as useRewardVaults,Yl as useRewardVaultsQueryKey,yP as useSWBeraVaultMetadata,js as useSingleAggregatorQuote,Qk as useStakedAPR,tP as useStakedData,uP as useStakedSnapshots,XT as useStakingPoolBatch,oC as useStakingTokenInformation,In as useSubgraphPoolQueryKey,Vp as useSubgraphUserValidators,es as useTokenCurrentPrice,re as useTokenCurrentPrices,ko as useTokenInformation,nC as useTokenPrice,$ as useTokenPrices,ee as useTokens,wP as useTotalStakedAmount,dC as useTotalSupply,Qp as useUserActiveValidators,Kp as useUserBoostsOnValidator,Zp as useUserClaimableIncentives,SI as useUserStakingPositions,Eu as useUserVaultInfo,Du as useUserVaults,DI as useValidator,em as useValidatorAnalytics,om as useValidatorCommission,sm as useValidatorEstimatedBgtPerYear,im as useValidatorQueuedCommission,pm as useValidatorQueuedOperatorAddress,cm as useValidatorQueuedRewardAllocation,ym as useValidatorRewardAllocation,HP as useVaultAddress,_P as useVaultHistory,Hu as useVaultValidators,NA as useZapStakeBera};
|
|
1
|
+
import{$ as to,Aa as To,B as Ht,Ba as Eo,C as Vt,Ca as Io,D as Nt,Da as xo,Ea as Bo,F as Wt,Fa as vo,G as me,Ga as Oo,H as _t,Ha as Do,I as Ve,Ia as Lo,J as Mt,K as Yt,L as de,M as Ft,O as Kt,P as qt,Q as $t,R as zt,S as jt,U as Jt,V as Zt,W as se,X as Xt,Y as ge,Z as ye,_ as eo,a as Rt,ba as oo,c as q,ca as ro,da as so,e as E,ea as ao,f as kt,fa as no,g as pe,ga as io,h as Pt,ha as lo,i as Ct,ia as uo,ja as po,k as St,ka as mo,l as Tt,la as co,m as Et,n as It,na as go,o as U,oa as yo,pa as Ao,qa as bo,r as xt,ra as ho,s as Bt,sa as Ro,t as vt,ua as wo,v as Ot,w as Dt,wa as ko,x as Lt,xa as Po,y as Ut,ya as Co,z as Y,za as So}from"../chunk-BKDBIBVO.mjs";import"../chunk-NLVWRMGD.mjs";import{c as H,e as Ne,g as z,l as v,m as Uo}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 fo}from"../chunk-7WRTK7RJ.mjs";import{a as wt,b as $,c as f,d as Q,e as Ue,f as fe}from"../chunk-2LL3P5PN.mjs";import{b as be,c as Ho}from"../chunk-3YXSUBA5.mjs";import{a as I,d as le,j as He,k as Qt,l as Gt,m as ce}from"../chunk-ECRMUMTA.mjs";import"../chunk-C3FHGFLK.mjs";import{a as P,b as L,d as ue,e as h}from"../chunk-THATXCJK.mjs";import{f as B,g as K,h as O}from"../chunk-AX2YQQFQ.mjs";import ss from"swr";import{usePublicClient as as}from"@berachain/wagmi/hooks";var Vo=({sharesAmount:e,vaultAddress:t,vaultChainId:o},r)=>{let s=as({chainId:o}),a=ss(s&&e&&t?["useGetConvertToAssets",e,t,o]:null,async([i,n,l])=>(f(s),Rt({sharesAmount:n,vaultAddress:l,publicClient:s})),{...r?.opts});return{...a,refresh:()=>{a.mutate()}}};import{useMemo as Js}from"react";import{zeroAddress as Zs}from"viem";import{defaultChainId as Xs}from"@berachain/config/internal";import{useBeraWallet as ea,usePublicClient as ta}from"@berachain/wagmi/hooks";import{Slippage as ns,Swap as is,SwapKind as ls,Token as No,TokenAmount as us}from"@berachain-foundation/berancer-sdk";import{decodeFunctionData as ps,formatEther as Wo,zeroAddress as ms}from"viem";import{getUriFromLink as ds}from"@berachain/config";import{ChainId as _o}from"@berachain/config/internal";import{vaultAbi as Qo}from"@berachain/abis/bex/vault";var cs=300,fs=.05,We=ls.GivenIn,_e=class extends E{name="Hub Pools";supportedChains=[_o.MAINNET,_o.BEPOLIA];url=ds(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(Wo(t.scale18))/Number.parseFloat(r);if(Math.abs(1-a)>fs){console.warn("SOR returned stale prices. Delta from return amount is more than 5%",{deltaFromSorAmount:a});let i=new B({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:Wo(t.scale18),sorAmount:r,queryData:s},fingerprint:["SOR_STALE_PRICES"]});fe.captureException(i)}}async getQuote(t){let o=new kt(this.url,this.chainId),{tokenIn:r,tokenOut:s,amount:a,slippage:i,account:n=ms,publicClient:l}=t;this.assertChainSupport({tokenIn:r,tokenOut:s}),f(l);let u=h(r,"BERA")||h(s,"BERA"),m=new No(this.chainId,this.convertZeroToWrapped(r.address),r.decimals),p=new No(this.chainId,this.convertZeroToWrapped(s.address),s.decimals),c=us.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 K({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 is({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:ns.fromPercentage(i.toString()),deadline:BigInt(Math.round(Date.now()/1e3)+cs),queryOutput:R,sender:w,recipient:w,wethIsEth:u}),{args:C,functionName:k}=ps({abi:Qo,data:b.callData});return{params:C,functionName:k,abi:Qo,address:b.to,value:b.value||BigInt(0)}}}}},Qe=new _e;import{ChainId as Mo}from"@berachain/config/internal";var Me=class extends E{name="RedeemBgt";supportedChains=[Mo.MAINNET,Mo.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:{...L,chainId:t.chainId}}),!h(t,"BGT",{config:this.config}))throw new O({property:"tokenIn",value:t,expected:"BGT",level:"warning"});return{amountOut:o,amountIn:o,allowanceRequirements:[],name:"RedeemBgt",isNativeSwap:!0,swapFeeBps:0}}},Yo=new Me;import{zeroAddress as Go}from"viem";import{ChainId as Fo}from"@berachain/config/internal";import{metaAggregatorAbi as gs}from"@berachain/abis/meta-aggregator/metaAggregator";var Ye=class extends E{name="Enso";supportedChains=[Fo.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=Go,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",Fo.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??Go,isSwapAndStake:!!l}],functionName:"swap",abi:gs,value:BigInt(p?r:"0"),address:this.config.bex.aggregatorsRouter})}}},Ge=new Ye;import{erc4626Abi as Ko,formatUnits as ys}from"viem";import{wberaStakerVaultAbi as As}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}),$(s,"underlyingToken"),f(a);let i=await a.readContract({address:o.address,abi:Ko,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:ys(BigInt(r),t.decimals)}}],name:"Mint",isNativeSwap:!1,swapFeeBps:0,getCalldata:({account:l})=>n?{abi:As,address:o.address,functionName:"depositNative",params:[BigInt(r),l],value:BigInt(r)}:{abi:Ko,address:o.address,functionName:"deposit",contractName:"others.erc4626",params:[BigInt(r),l],value:0n}}}},Ke=new Fe;import{zeroAddress as bs}from"viem";import{ChainId as hs}from"@berachain/config/internal";import{metaAggregatorAbi as Rs}from"@berachain/abis/meta-aggregator/metaAggregator";var qo="https://api.fly.trade/aggregator",qe=class extends E{name="Fly";supportedChains=[hs.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(`${qo}/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(`${qo}/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}),x={tokenOut:u,receiver:S,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:p},W={aggregator:k?.to,data:k?.data};return{params:[T,x,W,{rewardVault:n??bs,isSwapAndStake:!!n}],functionName:"swap",abi:Rs,value:h(t,"BERA")?BigInt(r):BigInt("0"),address:this.config.bex.aggregatorsRouter}}}}},$e=new qe;import{formatUnits as ws,parseUnits as ks,zeroAddress as Ps}from"viem";import{ChainId as Cs}from"@berachain/config/internal";import{metaAggregatorAbi as Ss}from"@berachain/abis/meta-aggregator/metaAggregator";var ze=class extends E{name="Haiku";supportedChains=[Cs.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 B({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}`]:ws(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:ks(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},x={aggregator:C.to,data:C.data};return{params:[S,T,x,{rewardVault:l??Ps,isSwapAndStake:!!l}],functionName:"swap",abi:Ss,value:BigInt(p?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},je=new ze;import{formatUnits as $o}from"viem";import{ChainId as Ts}from"@berachain/config/internal";function Es(e){return e?"previewMintHoney":"previewRedeemCollaterals"}var Je=class extends E{name="Honey";supportedChains=[Ts.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 O({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 B({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 B({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=$o(BigInt(r),l?m.decimals:this.honeyToken.decimals),A={client:s,collateral:m,collateralList:n,amount:y,method:Es(l),latestPrices:void 0,isPythWrapperEnabled:!1},R=await Wt(A);if(!R)throw new B({message:"Failed to fetch the Honey preview"});let{honey:w,collaterals:b}=R;if(!(l?!0:new I(d?.balance.formatted??"0").gte($o(b[m.address],m.decimals))))return;let k=await Yt({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 B({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 Is}from"viem";import{ChainId as xs}from"@berachain/config/internal";import{metaAggregatorAbi as Bs}from"@berachain/abis/meta-aggregator/metaAggregator";var Xe=class extends E{name="KyberSwap";supportedChains=[xs.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,x]of w)b.searchParams.set(T,x);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 x={tokenOut:p,receiver:T,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:u},W={aggregator:k.data.routerAddress,data:k.data.data};return{params:[S,x,W,{rewardVault:n??Is,isSwapAndStake:!!n}],functionName:"swap",abi:Bs,value:BigInt(l?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},et=new Xe;import{zeroAddress as vs}from"viem";import{ChainId as Os}from"@berachain/config/internal";import{metaAggregatorAbi as Ds}from"@berachain/abis/meta-aggregator/metaAggregator";var tt=class extends E{name="Oogabooga";supportedChains=[Os.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??vs,isSwapAndStake:!!n}],functionName:"swap",abi:Ds,value:BigInt(m?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},ot=new tt;import{zeroAddress as zo}from"viem";import{ChainId as jo}from"@berachain/config/internal";import{metaAggregatorAbi as Ls}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=zo,aggregatorsFeeBps:i,publicClient:n,rewardVault:l}){if(f(n),!t.decimals)throw new O({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 K({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??zo,isSwapAndStake:!!l}],functionName:"swap",abi:Ls,value:BigInt(c?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},st=new rt;import{ChainId as Jo}from"@berachain/config/internal";import{wberaAbi as Zo}from"@berachain/abis/wbera";var at=class extends E{name="Wrap";supportedChains=[Jo.MAINNET,Jo.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:Zo,address:this.config.tokens.wbera,functionName:"deposit",params:[],value:BigInt(r)}:{abi:Zo,address:this.config.tokens.wbera,functionName:"withdraw",params:[BigInt(r)],value:BigInt(0)}}}},nt=new at;import Us from"swr/immutable";import{zeroAddress as Hs}from"viem";import{metaAggregatorAbi as Vs}from"@berachain/abis/meta-aggregator/metaAggregator";import{usePublicClient as Ns}from"@berachain/wagmi/hooks";var he=()=>{let e=Ns(),{config:t}=P({chainId:e.chain?.id}),o=Us(e&&t.bex.aggregatorsRouter&&t.bex.aggregatorsRouter!==Hs?["useAggregatorsRouterFeeBps",t.bex.aggregatorsRouter]:null,async([,r])=>{let s=await e.readContract({address:r,abi:Vs,functionName:"SWAP_FEE_RATE"});return Number(s)});return{...o,refresh:o.mutate}};import Qs from"swr/immutable";import{useConfig as Ms}from"@berachain/wagmi/hooks";import{getPublicClient as Ws}from"@wagmi/core";import{erc4626Abi as _s}from"viem";async function Xo({token:e,wagmiConfig:t}){try{if(h(e,"BERA"))return null;let o=Ws(t,{chainId:e.chainId});f(o);let r=await o.readContract({address:e.address,abi:_s,functionName:"asset"});return await Y({address:r,publicClient:o,chainId:e.chainId})}catch(o){let r=wt({cause:o});if(r.reason==='The contract function "asset" reverted.')return null;throw r}}function er({token:e}){let t=Ms();return Qs(e&&t&&!h(e,"BERA")?["useUnderlyingAsset",e]:null,async([,o])=>Xo({token:o,wagmiConfig:t}))}import Ys from"swr";import{parseUnits as Gs,zeroAddress as Fs}from"viem";import{useBeraWallet as Ks,usePublicClient as qs}from"@berachain/wagmi/hooks";var tr="useAggregatorsQuotes";function $s({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=Gs(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:[tr,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 zs({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 V({feeBps:e,publicClient:t,account:o,proxyAggregatorsThroughVercel:r,activeAggregators:s,isMAEnabled:a,...i},n){return Ys($s({aggregator:i.aggregator,account:o,args:i,feeBps:e,options:n,activeAggregators:s,isMAEnabled:a}),zs({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 B&&t.reason===E.PATH_NOT_FOUND_REASON)){if(t instanceof K&&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 js(e,t){let{address:o}=Ks(),r=H("proxyAggregatorsThroughVercel"),s=H("aggregators"),a=qs(),{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!==Fs;return V({...e,aggregator:e.aggregator,feeBps:i,activeAggregators:s,account:o,isMAEnabled:l,publicClient:a,proxyAggregatorsThroughVercel:r},{...t,opts:it(t)})}var oa=[ot,$e,et,st,je,Ge,Qe,Ze,Ke];function df(e,t){let{address:o}=ea(),r=H("proxyAggregatorsThroughVercel"),s=H("aggregators"),a=ta(),{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:Xs}),{data:u}=er({token:e.tokenOut}),m=n||l,{config:p}=P(e),c=p.bex.aggregatorsRouter!==Zs,d=it(t),g={activeAggregators:s,isMAEnabled:c,underlyingToken:u,isNativeSwap:m,account:o,publicClient:a,proxyAggregatorsThroughVercel:r,feeBps:i},y=V({...g,...e,aggregator:ot},{opts:d}),A=V({...g,...e,aggregator:$e},{opts:d}),R=V({...g,...e,aggregator:Ke},{opts:d}),w=V({...g,...e,aggregator:et},{opts:d}),b=V({...g,...e,aggregator:st},{opts:d}),C=V({...g,...e,aggregator:je},{opts:d}),k=V({...g,...e,aggregator:Ge},{opts:d}),{protocol:S}=Ne(),T=V({...g,...e,aggregator:Qe},{opts:{...d,isEnabled:S.isPaused===!1}}),x=V({...g,...e,aggregator:nt}),W=V({...g,...e,aggregator:Yo},{opts:d}),M=V({...g,...e,aggregator:Ze},{opts:d}),D=n?[x]:l?[W]:[y,R,A,w,b,C,k,M,S.isPaused===!1?T:null].filter(F=>F!==null);return{...Js(()=>{let F=D.reduce((N,re)=>N||re.error,void 0),Le=D.map((N,re)=>N.isLoading?m?nt.name:oa[re].name:null).filter(Boolean),oe=D.filter(N=>N!==void 0&&!N.isLoading&&!N.error&&N.data?.amountOut).map(({data:N})=>N),ne=oe.length===0&&Le.length>0;return{quotes:oe,loadingAggregatorsNames:Le,isLoading:ne,error:F}},[D]),refresh:()=>D.map(F=>F.mutate())}}import ra from"swr";var sa=({query:e}={})=>["useAllUserPools",e],or=(e,t)=>{let o=ra(sa({query:e}),async([r,s])=>pe({...s,fetchPolicy:"no-cache"}),{refreshInterval:18e4,...t?.opts});return{...o,refresh:()=>{o.mutate()}}};import aa from"swr";import{isAddress as na}from"viem";var ia=({poolId:e,account:t})=>e?["usePool-api",e,t]:null;function rr({poolId:e,account:t}){let o=aa(ia({poolId:e,account:t}),async([,r,s])=>{if(s&&!na(s))throw new O({property:"account",value:s,expected:"Address"});return Pt({poolId:r,account:s})},{refreshInterval:1e5});return{...o,refresh:()=>{o.mutate()}}}import{useMemo as ir}from"react";import{PoolType as Re}from"@berachain-foundation/berancer-sdk";import ua from"swr/immutable";import{formatUnits as pa,keccak256 as ma,parseUnits as we,zeroAddress as ut}from"viem";import{poolCreationHelperAbi as lr}from"@berachain/abis/bex/poolCreationHelper";import{GetDedupedSubgraphPools as da}from"@berachain/graphql/dex/subgraph";import{PoolType as sr}from"@berachain-foundation/berancer-sdk";import{formatUnits as la}from"viem";var lt=e=>[...e].sort((t,o)=>t.address.toLowerCase().localeCompare(o.address.toLowerCase())),ar=e=>e.length===0?"":lt(e).map(t=>t.symbol).join(" | "),nr=(e,t,o)=>{let r;switch(o){case sr.ComposableStable:r="STABLE";break;default:r=o.toString().toUpperCase();break}return o===sr.Weighted?t.length===0?"":`${lt(e).map((s,a)=>{let i=t[a];return`${(Number.parseFloat(la(i,18))*100).toFixed(0)}${s.symbol}`}).join("-")}-${r}`:`${lt(e).map(s=>s.symbol).join("-")}-${r}`};var ca=.005,fa=(o=>(o.None="None",o.Custom="Custom",o))(fa||{}),ga=({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(D=>D.address.toLowerCase()===k||h(k,"WBERA")&&h(D.address,"BERA")),T=S?we(S.amount,S.decimals):0n,x=u.find(D=>D.tokenAddress.toLowerCase()===k.toLowerCase()),W=x?x.address:ut,M=BigInt(x?x.cacheDuration:100);return{amountIn:T,rateProvider:W,cacheDuration:M}}),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:lr,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}}}},ya=({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:lr,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}}}},Vf=({poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:o,poolType:r,poolName:s,poolSymbol:a,swapFee:i,owner:n,amplification:l,oracles:u,weightsDuplicationThreshold:m=ca,...p})=>{let{data:c,error:d,isLoading:g}=ua(["useCreatePool__deduped_pool",e,r,o],async()=>{if(e.length===0||!r)return null;let w=q("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:da,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(pa(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}=ir(()=>{if(!e)return{generatedPoolName:"",generatedPoolSymbol:""};let w=ar(e),b=nr(e,o,r);return{generatedPoolName:w,generatedPoolSymbol:b}},[e,o,r]),R=ir(()=>{if(!n||s===""||a===""||e.length!==t.length||e.length===0)return null;let w=we(i.toString(),16),b=ma(Buffer.from(`${s}-${n}`)),{config:C}=P(p);return r===Re.Weighted?ya({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?ga({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 wa from"swr";import{usePublicClient as ka}from"@berachain/wagmi/hooks";import{erc20Abi as Aa,formatUnits as ba}from"viem";import{GetExploitedTokens as ha}from"@berachain/graphql/dex/subgraph";var Ra=1e-4;async function ur({token:e,publicClient:t,...o}){let r=q("bex.subgraph",o),s=await t.readContract({address:e.address,abi:Aa,functionName:"totalSupply"}),a=I(ba(s,e.decimals)).multipliedBy(Ra),{data:i}=await r.query({query:ha,variables:{token:e.address,balance:a.toFixed()}});return i.userInternalBalances.length>0}var Pa=e=>{let t=e?.filter(o=>o.address);return!t||t.length===0?null:["useExploitedTokens",t]},$f=({tokens:e})=>{let t=Pa(e),o=ka(),r=wa(o?t:null,async([,s])=>(f(o),(await Promise.all(s.map(i=>ur({token:i,publicClient:o})))).reduce((i,n,l)=>(n!==void 0&&(i[s[l].address]=n),i),{})));return{...r,refresh:()=>r.mutate()}};import Ca from"swr";var Sa=()=>{let e=Ca("useGlobalLiquidityAndSwapVolume",async()=>Ct());return{...e,data:{totalLiquidity:Number(e.data?.protocolMetricsAggregated.totalLiquidity),swapVolume24h:Number(e.data?.protocolMetricsAggregated.swapVolume24h)},refresh:()=>e.mutate()}};import{useEffect as Ta,useState as Ea}from"react";import{PoolType as ae}from"@berachain-foundation/berancer-sdk";var Ia=.05,og=({currentStep:e,tokenPrices:t,isLoadingTokenPrices:o,tokens:r,weights:s,weightsError:a,poolType:i,liquidityMismatchTolerancePercent:n=Ia,oracles:l})=>{let[u,m]=Ea({title:null,message:null});return Ta(()=>{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 fr,isAddressEqual as Za}from"viem";import La from"swr";import{isAddress as pr,zeroAddress as Ua}from"viem";import{rewardVaultAbi as Ha}from"@berachain/abis/pol/rewards/rewardVault";import{useBeraWallet as Va,usePublicClient as Na}from"@berachain/wagmi/hooks";import xa from"swr/immutable";import{isAddress as Ba,zeroAddress as va}from"viem";import{rewardVaultFactoryAbi as Oa}from"@berachain/abis/pol/rewards/rewardVaultFactory";import{usePublicClient as Da}from"@berachain/wagmi/hooks";var pt=({tokenAddress:e},{isEnabled:t=!0}={})=>{let o=Da(),r=o&&e&&Ba(e)&&t?["useRewardVaultFromToken",e]:null,s=xa(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:Oa,functionName:"getVault",args:[a]});return n===va?void 0:n});return{...s,refresh:()=>s.mutate()}};var mr=({stakingToken:e,rewardVaultAddress:t},o)=>{let{address:r}=Va(),s=Na(),a=o?.opts?.isEnabled??!0,{data:i=t,error:n,mutate:l,isLoading:u}=pt({tokenAddress:e},{isEnabled:!t&&a}),m=La(i&&r&&s&&pr(i)&&pr(r)&&a?["useVaultBalanceFromStakingToken",i,r]:null,async([,p,c])=>{if(f(s),p===Ua)return{address:p,balance:0n};let d=await s.readContract({address:p,abi:Ha,functionName:"balanceOf",args:[c]});return{address:p,balance:d}});return{...m,refresh:()=>{l(),m.mutate()},isLoading:m.isLoading||u}};import Ga from"swr";import{erc20Abi as Fa,formatEther as Ka,formatUnits as qa,isAddress as cr,zeroAddress as $a}from"viem";import{defaultChainId as za}from"@berachain/config/internal";import{useBeraWallet as ja,usePublicClient as Ja}from"@berachain/wagmi/hooks";import Wa from"swr/immutable";import{isAddress as _a,zeroAddress as Qa}from"viem";import{defaultChainId as Ma}from"@berachain/config/internal";import{usePublicClient as Ya}from"@berachain/wagmi/hooks";function dr(e,t){let o=Ya({chainId:e.chainId}),r=e?.address&&o&&_a(e.address)?["useTokenInformation",e.address,e.chainId]:null,s=Wa(r,async([a,i,n=Ma])=>h(i,"BERA")?{address:Qa,decimals:L.decimals,name:L.name,symbol:L.symbol,chainId:n}:(f(o),await Y({address:i,publicClient:o,chainId:n})),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}}function ke({address:e,owner:t,chainId:o=za},r){let s=e;h(s,"ETH")&&(s=$a);let a=Ja({chainId:o}),{address:i}=ja(),n=t??i,l=(r?.opts?.isEnabled??!0)&&a&&n&&cr(n)&&s&&cr(s)?["usePollBalance",n,s,o]:null,{data:u,isLoading:m}=dr({address:s,chainId:o}),p=h(s,"BERA"),{isLoading:c,data:d,error:g,...y}=Ga(l,async([,w,b])=>(f(a),h(b,"BERA")?await a.getBalance({address:w}):await a.readContract({address:b,abi:Fa,functionName:"balanceOf",args:[w]})),{refreshInterval:1e4}),A=!g&&d?h(s,"BERA")?Ka(d):u&&!m?qa(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?L.decimals:u?.decimals??0,symbol:p?L.symbol:u?.symbol??"",name:p?L.name:u?.name??""};return{...y,refresh:()=>{y.mutate()},isLoading:c||p?m:!1,error:g||!p?g:void 0,data:R}}var Ng=({pool:e,vaultAddress:t},o)=>{let{data:r,...s}=ke({address:e?.address}),{data:a,refresh:i}=mr({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=>Za(y.address,p.address))?.ratio??0,d=c?I(r?.balance.formatted??"0").times(c):I(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:fr(a.balance)},usdValue:Number(fr(a.balance))*u}:void 0},...s,refresh:()=>{s.refresh?.(),i()}}};import{useMemo as yr}from"react";import{parseUnits as on,zeroAddress as rn}from"viem";import Xa from"swr";import{useBeraWallet as en,useConfig as tn}from"@berachain/wagmi/hooks";function gr(e,t){let o=tn(),{address:r}=en(),s=o&&r&&e?.items?["usePollAllowances",r,e?.items]:null,a=Xa(s,async([,i,n])=>co({items:n,account:i,config:o}),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a?.mutate?.()}}function sn({amount:e,decimals:t,slippage:o}){let r=on((o??0).toString(),t);return e+e*r/BigInt(100*10**t)}function an(e,t){let{slippage:o}=t??{},r=yr(()=>e.filter(l=>l.token.address!==rn).filter(l=>I(l.amount.formatted).gt(0)),[e]),{data:s,refresh:a,isLoading:i}=gr({items:r});return{needsApproval:yr(()=>s?.map(l=>{let u=r.find(p=>h(p.token.address,l.token));if(!u)throw new B({message:"Token not found when matching allowance in useMultipleTokenApprovalsWithSlippage",cause:{allowance:l,items:r}});let m=sn({decimals:u.token.decimals,amount:BigInt(u.amount.raw),slippage:o});if(I(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 gn}from"react";import yn from"swr/immutable";import{formatUnits as An,isAddress as bn}from"viem";import{usePublicClient as hn}from"@berachain/wagmi/hooks";import nn from"swr/immutable";import{isAddress as ln}from"viem";import{defaultChainId as un}from"@berachain/config/internal";import{usePublicClient as pn}from"@berachain/wagmi/hooks";function Ar(e,t){let o=pn(),r=o&&e.addresses?["useMultipleTokenInformation",e.addresses,e.chainId??un]:null,s=nn(r,async([,a,i])=>(f(o),Promise.all(a.map(async n=>{if(!n||!ln(n,{strict:!1}))throw new Error("Invalid address");let l=await Y({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 dn from"swr";import{isAddress as cn,zeroAddress as fn}from"viem";import{defaultChainId as J}from"@berachain/config/internal";import{useContext as mn}from"react";function j(){let e=mn(Uo);if(!e)throw new B({message:"useTokens must be used within a TokensProvider",level:"fatal"});return{...e,data:{tokenList:e.tokenList,customTokenList:e.userTokens,featuredTokenList:e.featuredTokens}}}function Z({addressIn:e}={},t={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{tokenList:o,ensoTokens:r}=j(),s=Pe(()=>{let p=[];return e&&p.push(...e.filter(c=>cn(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(fn),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=dn(n,async([,p])=>mo({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 Rn(e){let t="poolId"in e?e.poolId?.slice(0,42):e.address;return bn(t)&&t?["useOnChainPoolData",t]:null}function br(e){let t=hn(),o=e?.slice(0,42),r=Rn({poolId:e}),{data:s,error:a,isLoading:i,mutate:n}=yn(t?r:null,async([,d])=>St({poolId:d,publicClient:t})),{data:l,isLoading:u}=Ar({addresses:s?.poolTokens[0]}),{data:m,isLoading:p}=Z({addressIn:s?.poolTokens[0]});return{data:gn(()=>{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:An(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 wn from"swr";import{vaultAbi as kn}from"@berachain/abis/bex/vault";import{useBeraWallet as Pn,usePublicClient as Cn}from"@berachain/wagmi/hooks";var Sn=e=>{let{address:t}=Pn(),o=Cn(),r=t&&o?["usePollPoolCreationRelayerApproval",t,o.chain.id]:null,s=wn(r,async([,i])=>{f(o);let{config:n}=P({chainId:o.chain.id});return await o.readContract({address:n.bex.vault,abi:kn,functionName:"hasApprovedRelayer",args:[i,n.bex.poolCreationHelper]})},{...e?.opts});return{...s,refreshPoolCreationApproval:()=>{s.mutate()}}};import{useMemo as Tn}from"react";import En from"swr";function In({poolId:e}){return e?["usePool-subgraph",e]:null}var Uy=({poolId:e})=>{let t=En(In({poolId:e}),async([,n])=>It({poolId:n}),{refreshInterval:1e5}),o=rr({poolId:e}),{data:r,isLoading:s,refresh:a}=br(e);return{data:[Tn(()=>{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 xn from"swr/immutable";var Wy=({poolId:e,typeInArray:t})=>xn(e?["usePoolEvents",e,t]:null,async([,o,r])=>Tt({poolId:o,typeInArray:r}),{refreshInterval:18e4});import Bn from"swr";var Gy=({poolId:e,...t},o)=>{let{config:r}=P(t),a=Bn(e?["usePoolHistoricalData",e]:null,async([,i])=>await Et({poolId:i,chain:r.bex.chainName}),o?.opts);return{...a,refresh:()=>void a.mutate()}};import{useMemo as hr}from"react";import vn from"swr";import{useBeraWallet as On}from"@berachain/wagmi/hooks";var Dn=({query:e}={})=>["useAllPools",e],Jy=(e,t)=>{let{address:o}=On(),{data:r,isLoading:s,mutate:a}=or({userAddress:o,chain:e.chain}),{data:i,isLoading:n,mutate:l}=vn(Dn({query:e}),async([p,c])=>pe(c),{refreshInterval:18e4,...t?.opts}),u=hr(()=>{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=hr(()=>({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 Un}from"react";import{useCallback as Ln,useMemo as Rr}from"react";import{defaultChainId as X}from"@berachain/config/internal";function G({tokens:e}={},t={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{ensoTokens:o}=j(),r=Z({addressIn:e?.filter(n=>n.chainId===X).map(n=>n.address)},t),s=Rr(()=>{let n=[];if(!e)return[];let l=new Map;for(let u of e){let m=u.chainId??X;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??X)?.get(u.toLowerCase())&&m.price!==void 0){let p=l.get(m.chainId??X)?.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=Rr(()=>{let n={};for(let l of s){let u=l.chainId??X;n[u]||(n[u]={}),n[u][l.address.toLowerCase()]=l.price}return n},[s]),i=Ln(n=>n?a[n.chainId??X]?.[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}=G({tokens:e&&t?[e,t]:void 0});return{data:Un(()=>{if(!e||!t||!o||!r)return;let n=s(e),l=s(t);return!n||!l?null:Ho(n.toString(),l.toString(),o,r)},[e,t,o,r]),isLoading:a}}import Hn from"swr";import{formatEther as Vn,parseUnits as Nn,zeroAddress as kr}from"viem";import{defaultChainId as Wn}from"@berachain/config/internal";import{useBeraWallet as _n,usePublicClient as Qn}from"@berachain/wagmi/hooks";import{ethAddress as wr,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}),Q(a,"account");let m=ie({useProxy:!n});t.address===mt&&(t.address=wr),o.address===mt&&(o.address=wr);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 CA({tokenIn:e,loanToken:t,bendVault:o,rewardVault:r,amount:s,slippage:a},i){let{getTokenPrice:n}=G({tokens:e&&t?[e,t]:void 0}),l=Mn({tokenIn:e,loanToken:t,bendVault:o,rewardVault:r,amount:s?Nn(s,e?.decimals??18).toString():void 0,slippage:a},i),{data:u}=Vo({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!==Wn,{data:c,isLoading:d}=ke({address:kr,chainId:p?e?.chainId:void 0},{opts:{isEnabled:!!p}}),g=l.data?.getCalldata?.({account:kr})?.value??0n,y=c?.balance??{raw:"0",formatted:"0"},A=p&&g>0n&&!d&&g>BigInt(y.raw),R=p&&g>0n?Vn(g):void 0;return{...l,zapSupplyAmount:u,priceImpact:m,hasInsufficientNativeBalance:A,isCrossChain:p,nativeFee:R,refresh:()=>{l.mutate()}}}function Mn({tokenIn:e,loanToken:t,bendVault:o,rewardVault:r,amount:s,slippage:a},i){let{address:n}=_n(),l=!!e&&!!t&&!!o&&!!s&&!!n&&!h(t.address,e.address)&&e.chainId&&Number(s)>0&&!!a,u=Qn();return Hn(l?["useBendZapSupply",e,t,o,r,s,a]:null,async([,p,c,d,g,y,A])=>(f(u),Q(n,"fromAddress"),Q(p?.address,"tokenInAddress"),$(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 Zn}from"@wagmi/core";import Xn from"swr";import{parseUnits as ei}from"viem";import{defaultChainId as ti}from"@berachain/config/internal";import{useBeraWallet as oi,useConfig as ri}from"@berachain/wagmi/hooks";import{ethAddress as Fn,zeroAddress as Kn}from"viem";import{erc20Abi as Yn,ethAddress as Gn}from"viem";var Pr=async({fromAddress:e,amountIn:t,tokenIn:o,chainId:r,ensoClient:s,bundle:a,publicClient:i})=>{let n=[];if(o!==Gn){let l=await s.getApprovalData({fromAddress:e,tokenAddress:o,chainId:r,amount:t}),u=!0;i&&(u=await i.readContract({address:o,abi:Yn,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 Cr({fromAddress:e,amountIn:t,tokenIn:o,tokenOut:r,chainId:s,ensoClient:a,destinationChainId:i,slippage:n,publicClient:l}){if(!e)throw new O({property:"fromAddress",value:e,expected:"address"});r===Kn&&(r=Fn);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 Pr({fromAddress:e,amountIn:t,tokenIn:o,chainId:s,ensoClient:a,bundle:m,publicClient:l});return{bundle:m,transactions:p}}import{useMemo as qn}from"react";import $n from"swr";import{useBeraWallet as zn,useConfig as jn,usePublicClient as Jn}from"@berachain/wagmi/hooks";function Te(e,t){let o=Jn(),r=jn(),{address:s}=zn(),{tokenList:a,refresh:i}=j(),n=e?.walletAddress??s,l=qn(()=>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=$n(u,async([,p,c])=>Ae({account:p,tokenList:c,wagmiConfig:r}),{refreshInterval:1e5,...t?.opts});return{...m,refresh:()=>{m?.mutate?.(),i()}}}function qA({tokenIn:e,tokenOut:t,amount:o,slippage:r}){let{address:s}=oi(),a=ri(),i=ie(),{refresh:n}=Te(),l=!!e&&!!t&&!!o&&Number(o)>0&&!!r&&!!s&&!!e.chainId,m=Xn(l?["useEnsoSwapBundle",e,t,o,r]:null,async([,p,c,d,g])=>{Q(s,"fromAddress"),Q(p?.address,"tokenInAddress"),$(p?.chainId,"tokenInChainId"),Q(c?.address,"tokenOutAddress"),Ue(d,"amount"),Ue(g,"slippage");let y=Zn(a,{chainId:p.chainId});f(y);let A=ei(d,p.decimals).toString();return Cr({fromAddress:s,amountIn:A,tokenIn:p.address,tokenOut:c.address,chainId:p.chainId,ensoClient:i,destinationChainId:ti,slippage:g,publicClient:y})},{refreshInterval:1e5,isEnabled:l});return{...m,refresh:()=>{m.mutate(),n()}}}import si from"swr";import{formatUnits as ai,parseUnits as ni}from"viem";import{chainConfigs as ii,defaultChainId as li}from"@berachain/config/internal";import{useBeraWallet as ui}from"@berachain/wagmi/hooks";function tb({inputToken:e,amount:t,underlyingToken:o,slippage:r,tokenOut:s},a){let{address:i}=ui(),n=i??ii[li].bex.aggregatorsRouterExecutor,u=!!e&&!!t&&Number(t)>0&&!!e.chainId&&!!o&&!!r?["useZapStakeBera",e,t,n,r,o,s]:null,m=si(u,async([,c,d,g,y,A,R])=>{let w=ni(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:ai(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 yi,useState as Ai}from"react";import pi from"gray-matter";import{encodeFunctionData as Ie,erc20Abi as mi,parseAbiItem as di,toHex as ci}from"viem";import{beraChefAbi as fi}from"@berachain/abis/pol/rewards/beraChef";import{rewardVaultAbi as gi}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 Sr=({proposal:e,currentTopic:t,onError:o})=>{let r=Bt(e,t),s=[];if(r.actions=e.actions.map((n,l)=>{let u={};if(u.target=U({fieldOrType:"address",value:n.target}),n.type==="custom-action")if(n.input==="ABI")if(u.ABI=U({fieldOrType:"abi",value:n.ABI}),!n.functionSignature)u.functionSignature="Required";else try{let p=di(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?U({fieldOrType:c.type,value:n.args?.[d],components:c.components}):U({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=U({fieldOrType:"hex",value:n.rawCalldata}),s[l]=n.rawCalldata;else if(n.input==="message")u.message=U({fieldOrType:"string",value:n.message}),s[l]=ci(n.message);else throw new Error("Invalid input type");else if(n.type==="whitelist-reward-vault"||n.type==="blacklist-reward-vault"){if(u.vault=U({fieldOrType:"address",value:n.vault}),!u.vault){let p=n.type==="whitelist-reward-vault";s[l]=Ie({abi:fi,functionName:"setVaultWhitelistedStatus",args:[n.vault,p,""]})}}else n.type==="whitelist-reward-vault-incentive"?(u.token=U({fieldOrType:"address",value:n.token}),u.minIncentiveRate=U({fieldOrType:"uint256",value:n.minIncentiveRate}),u.managerAddress=U({fieldOrType:"address",value:n.managerAddress}),!u.token&&!u.minIncentiveRate&&!u.managerAddress&&(s[l]=Ie({abi:gi,functionName:"whitelistIncentiveToken",args:[n.token,BigInt(n.minIncentiveRate),n.managerAddress]}))):n.type==="erc20-transfer"&&(u.amount=U({fieldOrType:"uint256",value:n.amount}),u.to=U({fieldOrType:"address",value:n.to}),!u.amount&&!u.to&&(s[l]=Ie({abi:mi,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=pi.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 Tr={type:"custom-action",target:"",ABI:"",value:0n,functionSignature:"",args:[],input:"ABI",rawCalldata:"0x",message:""},bi=({initialData:e={},currentTopic:t,onError:o})=>{let[r,s]=Ai({title:"",description:"",forumLink:"",actions:[Tr],...e,topic:new Set});yi(()=>{s(l=>({...l,topic:new Set([t.id])}))},[t]);let a=ct(()=>{s(l=>({...l,actions:[...l.actions,Tr]}))},[]),i=ct(l=>{s(u=>{let m=[...u.actions];return m.splice(l,1),{...u,actions:m}})},[s]),n=ct(()=>r?Sr({proposal:r,currentTopic:t,onError:o}):void 0,[r,t]);return{proposal:r,setProposal:s,addProposalAction:a,removeProposalAction:i,computeParamsAndErrors:n}};import ki from"swr/immutable";import{formatUnits as Pi}from"viem";import{bgtAbi as Ci}from"@berachain/abis/pol/bgt";import{useBeraWallet as Si,usePublicClient as Ti}from"@berachain/wagmi/hooks";import hi from"swr/immutable";import{berachainGovernanceAbi as Ri}from"@berachain/abis/gov/berachainGovernance";import{usePublicClient as wi}from"@berachain/wagmi/hooks";var Er=({proposalId:e})=>{let t=wi();return hi(t&&e?["useProposalSnapshot",e]:null,async([,r])=>{f(t);let{config:s}=P({chainId:t.chain.id});return(await t.readContract({abi:Ri,address:s.governance.governor,functionName:"proposalSnapshot",args:[BigInt(r)]})).toString()})};var Ib=e=>{let{address:t}=Si(),o=Ti(),r=e.wallet||t,{data:s}=Er({proposalId:e.proposalId}),a=e.timepoint||s;return ki(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:Ci,address:u.tokens.bgt,functionName:"getPastVotes",args:[l,BigInt(n)]});return Pi(m,18)})};import Ei from"swr";import{isAddress as Ii}from"viem";import{berachainGovernanceAbi as xi}from"@berachain/abis/gov/berachainGovernance";import{useBeraWallet as Bi,usePublicClient as vi}from"@berachain/wagmi/hooks";var Hb=({proposalId:e,wallet:t})=>{let{address:o}=Bi(),r=vi(),s=t||o;return Ei(r&&s&&Ii(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:xi,functionName:"hasVoted",args:[BigInt(a),i]})})};import Oi from"swr";import{timeLockAbi as Di}from"@berachain/abis/gov/timeLock";import{usePublicClient as Li}from"@berachain/wagmi/hooks";var Ir="0xfd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783";var Fb=({account:e,...t})=>{let o=Li(),{config:r}=P(t);return Oi(e&&o?["useCancellerRole",e]:null,async([,a])=>(f(o),await o.readContract({abi:Di,address:r.governance.timelock,functionName:"hasRole",args:[Ir,a]})),{refreshInterval:18e4,revalidateOnFocus:!1})};import{useEffect as xr,useMemo as Ui,useState as Hi}from"react";import Vi from"swr/infinite";import{Proposal_OrderBy as Ni,ProposalStatus as _}from"@berachain/graphql/governance";var Br=10,Wi=e=>{switch(e){case _.QuorumNotReached:return[_.Active,_.Pending];case _.PendingQueue:case _.Defeated:return[_.Active];case _.PendingExecution:return[_.InQueue];default:return[e]}};function _i(e,t={}){let o=2*(t.perPage??Br);return(r,s)=>{if(r!==0&&s&&s.length<o)return null;let a=t.status_in?.flatMap(Wi).filter((i,n,l)=>l.indexOf(i)===n);return["usePollAllProposals",r,e,t.where,a,t.orderBy,t.orderDirection,o,t.text]}}function Jb(e,t){let o=t?.autoRefresh??!1,r=e.perPage??Br,s=2*r,a=_i(e.topic,e);async function i(d){if(!d)return[];let[,g,y,A,R,w,b,C,k]=d;return(await xt({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=Vi(a,i,{initialSize:1,refreshInterval:t?.opts?.refreshInterval??18e4,...t?.opts}),l=Ui(()=>{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===Ni.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]=Hi(Date.now()/1e3);return xr(()=>{if(!o)return;let d=setInterval(()=>{c(Date.now()/1e3)},1e4);return()=>clearInterval(d)},[o]),xr(()=>{if(!n.data)return;let d=!1;for(let g of n.data.flat()){switch(g.status){case _.Pending:p>=Number(g.voteStartAt)&&(d=!0);break;case _.Active:p>=Number(g.voteEndAt)&&(d=!0);break;case _.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 vr,useState as Qi}from"react";import Mi from"swr";import{ProposalStatus as ft}from"@berachain/graphql/governance";import{usePublicClient as Yi}from"@berachain/wagmi/hooks";var ah=(e,t)=>{let o=t?.autoRefresh??!1,r=Yi(),a=Mi(e&&r?["usePollProposal",e]:null,([,l])=>(f(r),vt({proposalId:l,client:r})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??18e4}),[i,n]=Qi(Date.now());return vr(()=>{if(!o)return;let l=setInterval(()=>{n(Date.now()/1e3)},1e4);return()=>clearInterval(l)},[]),vr(()=>{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 Gi from"swr";import{formatEther as Fi}from"viem";import{berachainGovernanceAbi as Ki}from"@berachain/abis/gov/berachainGovernance";import{usePublicClient as qi}from"@berachain/wagmi/hooks";var dh=e=>{let t=qi(),r=Gi(t?["usePollProposalThreshold",e]:null,async([,s])=>{f(t);let a=await t.readContract({address:s,abi:Ki,functionName:"proposalThreshold"});return{votesThreshold:Fi(a)}},{refreshInterval:18e4});return{...r,refresh:r.mutate}};import $i from"swr/infinite";var xe=1e3,yh=(e,t)=>$i(zi(e,t),async([o,r])=>Dt({variables:{...e,limit:xe,offset:xe*r}}),{parallel:!0,initialSize:Number.POSITIVE_INFINITY}),zi=({...e},t)=>o=>o>Math.floor(t/xe)?null:["usePollProposalVotes",o,xe,e.proposalId,e.orderBy,e.orderDirection];import ji from"swr";import{formatEther as Ji}from"viem";import{bgtAbi as Or}from"@berachain/abis/pol/bgt";import{useBeraWallet as Zi,usePublicClient as Xi}from"@berachain/wagmi/hooks";var Ch=e=>{let{address:t}=Zi(),o=Xi(),s=ji(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:Or,functionName:"delegates",args:[a]}),o.readContract({address:i.tokens.bgt,abi:Or,functionName:"getVotes",args:[a]})]);return{delegate:n,currentVotes:Ji(l)}},{...e?.opts,refreshInterval:e?.opts?.refreshInterval??18e4});return{...s,refresh:()=>s?.mutate?.()}};import el from"swr";import{usePublicClient as tl,useTransactionReceipt as ol}from"@berachain/wagmi/hooks";var xh=e=>{let{data:t}=ol({hash:e}),o=tl();return el(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 Ot({tx:t,publicClient:o})})};import rl from"swr/immutable";import{berachainGovernanceAbi as sl}from"@berachain/abis/gov/berachainGovernance";import{usePublicClient as al}from"@berachain/wagmi/hooks";var nl={0:"pending",1:"active",2:"canceled",3:"defeated",4:"succeeded",5:"queued",6:"expired",7:"executed"},Uh=({proposalId:e,governorAddress:t})=>{let o=al();return rl(t&&o&&e?["useProposalState",e]:null,async([,s])=>{f(o);let a=await o.readContract({abi:sl,address:t,functionName:"state",args:[BigInt(s)]});return nl[a]})};import il from"swr";import{timeLockAbi as ll}from"@berachain/abis/gov/timeLock";import{usePublicClient as ul}from"@berachain/wagmi/hooks";var pl={0:"unset",1:"waiting",2:"ready",3:"done"};function Qh({proposalTimelockId:e,timelockAddress:t}){let o=ul();return il(t&&o&&e?["useProposalTimelockState",e,t]:null,async([,s,a])=>{f(o);let i=await o.readContract({abi:ll,address:a,functionName:"getOperationState",args:[s]});return pl[i]},{refreshInterval:18e4})}import cl from"swr";import{usePublicClient as fl}from"@berachain/wagmi/hooks";import{formatEther as ml}from"viem";import{berachainGovernanceAbi as dl}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:dl,functionName:"quorum",blockTag:"pending",args:[BigInt(e??Math.floor(Date.now()/1e3))]});return ml(s)}function Jh({at:e},{isEnabled:t=!0}){let o=Math.floor(Date.now()/1e3),r=fl(),s=t&&r?["useQuorum",Number(e)>o?"now":e]:null,a=cl(s,async([,i])=>i==="now"?gt({publicClient:r}):gt({at:i,publicClient:r}));return{...a,data:a.data?Number(a.data):void 0}}import yl from"swr";import{usePublicClient as Al}from"@berachain/wagmi/hooks";import gl from"swr";function ee({priceFeedMap:e},t){let o=e?Object.values(e):null,r=(t?.opts?.isEnabled??!0)&&o?["usePythLatestPrices",o]:null;return gl(r,async([a,i])=>await _t({priceFeedId:i}))}var Dr=({asset:e,amount:t,isMint:o,isBasketModeEnabled:r},s)=>{let a=Al(),{priceFeedMap:i,flags:n}=v(),{data:l}=ee({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=yl(u,async([p,c,d,g,y,A])=>A?!1:(f(a),await Vt({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 bl from"swr";import{usePublicClient as hl}from"@berachain/wagmi/hooks";var Lr=({asset:e,amount:t,isMint:o,isBasketModeEnabled:r},s)=>{let a=hl(),{collateralList:i,referenceCollateral:n}=v(),u=bl(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 Rl from"swr";import{usePublicClient as wl}from"@berachain/wagmi/hooks";var hR=({collateralList:e},t)=>{let o=wl(),s=Rl(o&&e?["useCollateralWeights",e]:void 0,async([a,i])=>(f(o),await Ut({client:o,collateralList:i})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...s,refresh:()=>void s.mutate()}};import{useMemo as yt}from"react";import kl from"swr";import{useBeraWallet as Pl,useConfig as Cl,usePublicClient as Sl}from"@berachain/wagmi/hooks";var Ur=()=>{let e=Sl(),{address:t}=Pl(),{collateralList:o}=v(),r=Cl(),a=kl(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 Tl from"swr";import{usePublicClient as El}from"@berachain/wagmi/hooks";var Hr=e=>{let t=El(),{collateralList:o}=v(),s=Tl(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 Il from"swr";import{usePublicClient as xl}from"@berachain/wagmi/hooks";var Vr=({collateral:e},t)=>{let o=xl(),{priceFeedMap:r,flags:s}=v(),{data:a}=ee({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=Il(i,async([l,u,m,p])=>(f(o),await Ht({client:o,collateral:u,latestPrices:m,isPythWrapperEnabled:p})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...n,refresh:()=>void n.mutate()}};var Nr=({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 I(a?.balance.formatted??"0").lte(e),n=r.filter(l=>{let u=t?.find(m=>m.address.toLowerCase()===l.address.toLowerCase());return new I(u?.balance.formatted??"0").lte(e)});return{isLow:i,isLiquidityLowCollaterals:n}}return{isLow:!1,isLiquidityLowCollaterals:[]}},Bl=({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 I(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 I(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 I(t[a.address]?.balance.formatted).lt(n)}):new I(t[e.collaterals[0].address]?.balance.formatted).lt(e.fromAmount[0]):!1}var JR=({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}=Vr({collateral:t[0]}),{collateralList:l}=v(),{isBlacklisted:u,isDepegged:m}=n??{isBlacklisted:!1,isDepegged:!1},{data:p}=Dr({asset:t[0],amount:i?o[0]:r[0],isMint:i,isBasketModeEnabled:s}),{data:c}=Lr({asset:t[0]?.address,amount:i?o[0]:r[0],isMint:i,isBasketModeEnabled:s}),{data:d}=Ur(),{data:g}=Hr(),y=t[0]?.address,A=g?.find(S=>S.address.toLowerCase()===y.toLowerCase()),[R,w]=yt(()=>{let S=Nr({lowerThan:1,vaultsBalances:g,state:a,collateralList:l}),T=Nr({lowerThan:1e3,vaultsBalances:g,state:a,collateralList:l});return[S,T]},[g,a]),{isMore:b,isRedeemMoreThanLiquidityCollaterals:C}=yt(()=>Bl({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 Ol from"swr";function tw({days:e}){let t=Ol(["useHoneyChartData",e],async([o,r])=>await Lt({days:r}));return{...t,refresh:()=>t.mutate()}}import Dl from"swr";function nw(){let e=Dl(["useHoneyGlobalData"],()=>Nt()),t=e.data?.honeySnapshots.reduce((o,r)=>new I(r.totalVolume).plus(o),new I(0));return{...e,data:{...e.data,dailyVolume:t},refresh:()=>e.mutate()}}import{useEffect as Hl,useReducer as Vl}from"react";import{formatUnits as _r}from"viem";import{defaultChainId as Nl}from"@berachain/config/internal";import Ll from"swr";import{usePublicClient as Ul}from"@berachain/wagmi/hooks";function Wr({state:e},t){let o=Ul(),{priceFeedMap:r,flags:s,collateralList:a}=v(),{data:i}=ee({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=Ll(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 Wl={actionType:"mint",collaterals:[],fromAmount:[],toAmount:[],isBasketModeEnabled:!1,isTyping:!1,isSubmitting:!1,isLoading:!1};function Qr(e,t){switch(t.type){case"RESET_AMOUNTS":return{...e,fromAmount:[],toAmount:[]};case"ACTION_TYPE_CHANGE":return Qr({...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]?_r(o.collaterals[i.address],i.decimals):e.isBasketModeEnabled?"0":""),a=h(t.changedAsset,"HONEY",{chainId:Nl})?r?e.toAmount[0]:e.fromAmount[0]:o.honey?_r(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 ww=()=>{let{collateralList:e}=v(),[t,o]=Vl(Qr,Wl,s=>({...s,collaterals:e})),{data:r}=Wr({state:t});return Hl(()=>{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 _l from"swr/immutable";import{usePublicClient as Ql}from"@berachain/wagmi/hooks";var Iw=({pythPriceFeedCalldata:e,tokenListLength:t},o)=>{let r=Ql(),s=(o?.opts?.isEnabled??!0)&&e&&e.length>0?["usePythUpdateFee",e]:null,{data:a=Qt(t),isLoading:i}=_l(s,async([n,l])=>(f(r),await Mt({client:r,priceFeedId:l})));return{QUERY_KEY:s,data:a,isLoading:i}};import{useMemo as Ml}from"react";function Ow(e){return Ml(()=>{if(e)return qt(e)},[e])}import Yl from"swr";import{formatEther as Gl}from"viem";import{bgtAbi as Fl}from"@berachain/abis/pol/bgt";import{useBeraWallet as Kl,usePublicClient as ql}from"@berachain/wagmi/hooks";var $l=e=>{let{address:t}=Kl(),o=ql(),s=Yl(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:Fl,functionName:"unboostedBalanceOf",args:[a]});return Gl(n)},{...e,refreshInterval:e?.opts?.refreshInterval??1e5});return{...s,refresh:()=>s.mutate()}};import zl from"swr";import{formatUnits as jl}from"viem";import{useBeraWallet as Jl,usePublicClient as Zl}from"@berachain/wagmi/hooks";var Xl=()=>{let{address:e}=Jl(),t=Zl(),r=zl(e&&t?["useClaimableFees",e]:null,async([,s])=>{f(t);let{config:a}=P({chainId:t.chain.id}),i=await no({account:s,vaultAddress:a.pol.staker,publicClient:t});return jl(i,18)},{refreshInterval:18e4*2});return{...r,refresh:()=>r?.mutate?.()}};import{GqlRewardVaultOrderBy as ru,GqlRewardVaultOrderDirection as su}from"@berachain/graphql/pol/api";import eu from"swr";import{usePublicClient as tu}from"@berachain/wagmi/hooks";var ou=(e,t=!1)=>["useRewardVaults",e,t],At=(e,t)=>{let o=ou(e.filter,e.onChainIncentives),r=tu(),s=eu(t?.opts?.isEnabled??!0?o:null,async([,a,i])=>await zt({filter:a,publicClient:i?r:void 0}),{...t?.opts});return{...s,refresh:s.mutate}};var ek=(e={},{isEnabled:t=!0}={})=>{let o=At({filter:{orderBy:ru.Apr,orderDirection:su.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 au from"swr";import{usePublicClient as nu}from"@berachain/wagmi/hooks";var Mr=e=>{let t=nu(),o=au(t?"usePollGlobalData":null,async()=>(f(t),jt(t)),{revalidateOnFocus:!1,...e?.opts});return{...o,refresh:o.mutate}};import iu from"swr/immutable";var lu=()=>"usePollMarkets",uk=e=>{let t=lu(),o=iu(t,async()=>await Jt(),{...e?.opts});return{...o,refresh:()=>o.mutate()}};import uu from"swr/immutable";import{isAddress as pu}from"viem";import{usePublicClient as mu}from"@berachain/wagmi/hooks";function yk({receiptTokenAddresses:e,account:t,version:o},r){let s=mu(),a=e&&t&&s&&pu(t)&&o?["useQueuedBeraUnlock",e,t,o]:null,i=uu(a,async([,n,l,u])=>(f(s),await Promise.all(n.map(async m=>await ro({contractAddress:m,accountAddress:l,publicClient:s,version:u}))).then(m=>m.flat())),{refreshInterval:1e4,...r?.opts});return{...i,refresh:()=>i.mutate()}}import du from"swr";import{isAddress as cu}from"viem";import{defaultChainId as fu}from"@berachain/config/internal";import{usePublicClient as gu}from"@berachain/wagmi/hooks";var Sk=({address:e},t)=>{let o=e?["useRewardTokenToBeraRate",e]:null,r=gu({chainId:fu});return du(o,async([s,a])=>{if(!a||!cu(a))throw new O({property:"address",value:a,expected:"Address"});return f(r),se({address:a,publicClient:r})},{...t?.opts})};import Cu from"swr";import Au from"swr";import{erc20Abi as bu,formatUnits as hu,isAddress as Ru}from"viem";import{beraChefAbi as wu}from"@berachain/abis/pol/rewards/beraChef";import{usePublicClient as ku}from"@berachain/wagmi/hooks";import{erc20Abi as Be,formatUnits as yu}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"?yu(a.result,o.result):a.result.toString():void 0}}var Pu=e=>e&&Ru(e)?["onChainRewardVault",e.toLowerCase()]:null,Yr=({address:e},t)=>{let o=ku(),r=t.opts?.isEnabled??!0,s=Pu(e);return Au(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:wu,functionName:"isWhitelistedVault",args:[a]}),o.readContract({address:n,abi:bu,functionName:"balanceOf",args:[a]})]),[p,c]=await Promise.all([ve({address:n,publicClient:o}),Promise.all(l.map(d=>Y({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:hu(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 Su=e=>e?["useRewardVault",e.toLowerCase()]:null,Gk=(e,t)=>{let o=Su(e),r=Cu(o,async([i,n])=>Xt({address:n}),{...t?.opts}),s=t?.opts?.isEnabled??((!!r.error||!r.isLoading)&&!r.data),a=Yr({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 Tu from"swr";import{usePublicClient as Eu}from"@berachain/wagmi/hooks";function jk({address:e,stakingToken:t}){let o=Eu(),s=Tu(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 Iu from"swr";import{usePublicClient as xu}from"@berachain/wagmi/hooks";var Bu=(e,t)=>{let o=xu(),s=Iu(o&&e?["useRewardVaultRewards",e]:null,async([,a])=>(f(o),await Kt(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 iP({range:e}){let o=vu(e?["useStakedAPR",e]:null,async([,r])=>{let s=await to({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 Ou,usePublicClient as Du}from"@berachain/wagmi/hooks";var RP=e=>{let t=H("swberaAprWindow"),o=Du(),{address:r}=Ou(),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])=>eo({window:b}),{refreshInterval:1e5}),{data:l,isLoading:u}=Te({tokens:s}),{getTokenPrice:m}=G({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,x=m(k)??0,M=new I(S).multipliedBy(T).dividedBy(10**k.decimals),D=M.multipliedBy(x);return{token:k,apr:n??0,stakedAmount:M.toNumber(),stakedAmountUsd:D.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,x]=await Promise.all([$t({address:S.address,account:b}),se({address:S.address,publicClient:o})]);return{earnings:T,exchangeRate:x}}))),{refreshInterval:1e4}),w=De(()=>{if(!(!y||!l))return e.map((b,C)=>{let k=b.inputTokens[0],S=b.receiptToken,{earnings:T,exchangeRate:x}=y[C],W=m(k)??0,M=l.find(rs=>rs.address===S.address)?.balance.raw??"0",D=x??0,te=new I(T.earningsTotal).minus(T.earningsRealized),oe=new I(M).multipliedBy(D).minus(te).dividedBy(10**k.decimals),ne=te.dividedBy(10**k.decimals),N=oe.multipliedBy(W),re=ne.multipliedBy(W);return{token:k,apr:n??0,stakedAmount:oe.toNumber(),earnedAmount:ne.toNumber(),stakedAmountUsd:N.toNumber(),earnedAmountUsd:re.toNumber()}})},[y,l,e,n,m]);return{balances:d,data:w,isLoading:u&&A,isLoadingBalances:u,isLoadingPositions:A,isValidatingPositions:R}};import Lu from"swr";async function Gr({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 IP({range:e,addresses:t}){let r=Lu(e?["useStakedSnapshots",e,t]:null,async([,s,a])=>{let[...i]=await Promise.all([...a.map(async n=>{let l=await Gr({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 Uu from"swr";import{usePublicClient as Hu}from"@berachain/wagmi/hooks";var UP=e=>{let t=Hu(),o=z();return Uu(e&&t&&o?["useStakingVaultMetadata",e,t,o]:null,async([,s,a,i])=>(f(a),oo({address:s,publicClient:a,blockTime:i})),{refreshInterval:1e4})};import Vu from"swr";import{usePublicClient as Nu}from"@berachain/wagmi/hooks";function _P({vaultAddresses:e}){let t=Nu(),o=Vu(e&&t?["useTotalStakedAmount",e]:null,([,r])=>so({vaultAddresses:r,publicClient:t}));return{...o,refresh:()=>o.mutate()}}import Wu from"swr";import{useBeraWallet as _u,usePublicClient as Qu}from"@berachain/wagmi/hooks";var Mu=(e,t)=>{let{address:o}=_u(),r=Qu(),s=o&&r&&e.vaultAddress?["useUserVaultInfo",o,e.vaultAddress]:null,a=Wu(s,async([,i,n])=>(f(r),io({account:i,vaultAddress:n,publicClient:r})),{...t,refreshInterval:t?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a.mutate()}};import Yu from"swr";import{useBeraWallet as Gu,usePublicClient as Fu}from"@berachain/wagmi/hooks";var Ku=e=>{let{address:t}=Gu(),o=Fu(),s=Yu(t&&o?["useUserVaults",t]:null,async([,a])=>(f(o),await lo({account:a,publicClient:o})),{...e,refreshInterval:e?.opts?.refreshInterval??1e5,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import qu from"swr";import{usePublicClient as $u}from"@berachain/wagmi/hooks";var oC=e=>{let t=$u();return qu(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 zu from"swr";var nC=({vault:e,range:t,resolution:o})=>{let s=zu(e?["useVaultHistory",e,t,o]:null,([,a,i,n])=>uo({vault:a,range:i,resolution:n}));return{...s,refresh:()=>s.mutate()}};import ju from"swr";var Ju=(e,t)=>{let r=ju(e?["useVaultValidators",e]:null,async([,s])=>await po({address:s}),{...t?.opts});return{...r,refresh:()=>r.mutate()}};import{zeroAddress as Zu}from"viem";function Fr({address:e},t){let o=Z({addressIn:e?[e]:void 0},t);return{...o,data:e?o.data?.[e.toLowerCase()]:void 0}}function gC(e){return Fr({address:Zu},e)}import Xu from"swr/immutable";import{isAddress as ep,zeroAddress as tp}from"viem";import{usePublicClient as op}from"@berachain/wagmi/hooks";var kC=(e,t)=>{let o=op(),r=e?.address&&o&&ep(e.address)?["useStakingTokenInformation",e.address]:null,s=Xu(r,async([a,i])=>h(i,"BERA")?{address:tp,decimals:L.decimals,name:L.name,symbol:L.symbol}:await ve({address:i,publicClient:o}),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}};function SC({token:e},t){let{isLoading:o,priceMap:r}=G({tokens:e?[e]:void 0},t);return{data:e?r[e.chainId]?.[e.address.toLowerCase()]:void 0,isLoading:o}}import rp from"swr";import{erc20Abi as sp}from"viem";import{usePublicClient as ap}from"@berachain/wagmi/hooks";function vC({address:e}){let t=ap();return rp(e&&t?["useTotalSupply",e]:null,([,o])=>(f(t),t.readContract({address:o,abi:sp,functionName:"totalSupply",args:[]})))}import np from"swr/immutable";import{useBlockNumber as ip,usePublicClient as lp}from"@berachain/wagmi/hooks";function _C(e){let t=lp(),{config:o}=P({chainId:t?.chain.id}),{data:r,isLoading:s}=ip({cacheTime:ce(o.averageBlockTime)}),{data:a}=np(r&&t&&Number(e)>0?["useBlockToTimestamp",e,r]:null,async([,n,l])=>(f(t),Ft({block:n,currentBlock:l,blockTime:i,publicClient:t}))),i=z();if(a)return Number(a.timestamp);if(!(s||!r))return Math.floor(Gt(Date.now())+i*(Number(e)-Number(r)))}import{useCallback as qr,useReducer as up}from"react";import{useBeraWagmi as pp,useConfig as mp}from"@berachain/wagmi/hooks";var ht={confirmState:"idle",txnHash:"",message:""},Kr=(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{...ht};default:return e}};function dp({onlyPermissionless:e,onSuccess:t,onError:o,onLoading:r,onWarning:s,onSubmission:a}={}){let[i,n]=up(Kr,ht),{account:l,onSmartAccountRejection:u}=pp(),m=mp(),p=l?.wallet?.isContract?6e4*10:12e4,c=qr(()=>{n({type:"confirm_reset"})},[]),d=H("enableSimulateCalls"),g=qr(y=>{if(e&&!y.permissionless){let A=new fo({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 go({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 cp=dp;import fp from"swr/immutable";import{isAddress as gp,zeroAddress as yp}from"viem";import{chainId as Ap}from"@berachain/config/internal";async function bp(e){let t=await le({url:`https://api.routescan.io/v2/network/testnet/evm/${Ap}/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 sS=e=>fp(e&&gp(e)&&e!==yp?["useGetVerifiedAbi",e]:null,()=>e?bp(e):Promise.resolve(""),{});import{useCallback as $r,useEffect as hp,useState as Rp}from"react";function iS({key:e,defaultValue:t}){let o=$r(()=>{if(typeof window>"u")return t;let i=window.history.state?.[e];return i!==void 0?i:t},[e,t]),[r,s]=Rp(o()),a=$r(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 hp(()=>{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 wp,useRef as kp}from"react";function pS(e){let t=kp(void 0);return wp(()=>{t.current=e}),t.current}import Pp from"swr";var Cp=({variables:e}={})=>["useAllValidators",e],gS=(e,t)=>{let{config:o}=P(e),r=Pp(Cp({variables:e}),async([,s])=>await yo({variables:{chain:o.bex.chainName,...s}}),{refreshInterval:18e4,...t?.opts});return{...r,refresh:()=>r.mutate()}};import Sp from"swr";function hS({allocation:e}){return Sp(e?["useApiEnrichedAllocation",e]:null,([,t])=>Ao({allocation:t}))}import Tp from"swr";import{isHex as Ep}from"viem";var Ip=e=>e?["useApiValidator",e]:null,zr=(e,t)=>{let o=Ip(e),r=t?.opts?.isEnabled??!0,s=Tp(r&&e?o:null,async([,a])=>{if(!a||!Ep(a))throw new Error(`Invalid validator ID: ${a}`);return bo({id:a})},{...t?.opts});return{...s,refresh:()=>s.mutate()}};import Bp from"swr";import{usePublicClient as vp}from"@berachain/wagmi/hooks";import{rewardAllocatorFactoryAbi as xp}from"@berachain/abis/pol/rewards/rewardAllocatorFactory";async function jr({publicClient:e,...t}){let{config:o}=P(t),r=await e.readContract({abi:xp,address:o.pol.rewardAllocationFactory,functionName:"getBaselineAllocation"}),s=r.startBlock!==0n?await e.getBlock({blockNumber:r.startBlock}):{timestamp:0};return Ro(r,Number(s.timestamp))}function DS(){let e=vp();return Bp(e?["baselineRewardAllocation"]:null,()=>(f(e),jr({publicClient:e})))}import Op from"swr";var Dp=({pubKey:e,first:t=1})=>{let r=Op(e?["useDailyValidatorBlockStats",e,t]:null,async([,s,a])=>await ho({pubKey:s,first:a}),{refreshInterval:18e4});return{...r,refresh:()=>r.mutate()}};import Lp from"swr";import{usePublicClient as Up}from"@berachain/wagmi/hooks";function Hp(e){let t=Up(),r=Lp(t?["useDefaultRewardAllocation"]:null,async()=>(f(t),await ko({client:t})),{...e?.opts});return{...r,refresh:()=>r.mutate()}}import Vp from"swr/immutable";var Np=({account:e},t)=>{let r=Vp(e?["useManagedValidatorByAccount",e]:null,async([,s])=>await Po({account:s}),{...t?.opts});return{...r,refresh:()=>r.mutate()}};import{useMemo as Zr}from"react";import Qp from"swr";import{useBeraWallet as Mp,usePublicClient as Yp}from"@berachain/wagmi/hooks";import{zeroAddress as Wp}from"viem";import{beraChefAbi as _p}from"@berachain/abis/pol/rewards/beraChef";async function Jr({client:e,pubKey:t,...o}){let{config:r}=P(o);try{let s=await e.readContract({address:r.pol.beraChef,abi:_p,functionName:"valRewardAllocator",args:[t]});return s===Wp?null:s}catch(s){throw console.log("getValidatorRewardAllocatorAddress:",s),s}}function Xr(e,t){return!e||!t?!1:t.operator?.toLowerCase()===e.toLowerCase()}function Gp(e,t){return!e||!t?!1:t.rewardAllocator?t.rewardAllocator.toLowerCase()===e.toLowerCase():Xr(e,t)}function Fp({pubKey:e,account:t},o){let r=Yp(),s=H("mockValidatorOperator"),a=H("mockValidatorRewardAllocator"),i=r&&e?["useManagedValidatorRole",e]:null,{address:n}=Mp(),l=t??n,u=Qp(i,async([,c])=>{f(r);let[d,g]=await Promise.all([vo({client:r,pubKey:c}),Jr({client:r,pubKey:c})]);return{operator:d??null,rewardAllocator:g}},{...o?.opts}),m=Zr(()=>s||Xr(l,u.data),[l,s,u.data]),p=Zr(()=>a||Gp(l,u.data),[l,a,u.data]);return{...u,data:u.data?{...u.data,hasOperatorRole:m,hasRewardAllocatorRole:p}:void 0,refresh:()=>u.mutate()}}import Kp from"swr";import{keccak256 as qp}from"viem";import{beaconDepositAbi as $p}from"@berachain/abis/pol/beaconDeposit";import{bgtAbi as zp}from"@berachain/abis/pol/bgt";import{beraChefAbi as jp}from"@berachain/abis/pol/rewards/beraChef";import{usePublicClient as Jp}from"@berachain/wagmi/hooks";var es=({pubkey:e},t)=>{let o=Jp(),r=e?["useOnChainValidator",e]:null,s=t.opts?.isEnabled??!0,a=Kp(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:$p,functionName:"getOperator",args:[i]}),o?.readContract({address:n.tokens.bgt,abi:zp,functionName:"boostees",args:[i]}),o.readContract({address:n.pol.beraChef,abi:jp,functionName:"getActiveRewardAllocation",args:[i]})]);return{id:qp(i),pubkey:i,operator:l,votingPower:Number(u)}});return{...a,refresh:()=>{a.mutate()}}};import Zp from"swr";import{usePublicClient as Xp}from"@berachain/wagmi/hooks";var AT=({valPubKey:e,options:t})=>{let o=Xp(),s=(t?.opts?.isEnabled??!0)&&o&&e?["useStakingPoolBatch",e]:null,a=Zp(s,async([,i])=>(f(o),await Co({client:o,valPubKey:i})),{refreshInterval:1e4,...t?.opts});return{...a,refresh:()=>a.mutate()}};import em from"swr";import{GetUserValidatorInformation as tm}from"@berachain/graphql/pol/subgraph";import{useBeraWallet as om}from"@berachain/wagmi/hooks";var rm=({account:e}={})=>{let{address:t}=om(),o=e??t;return em(o?["useSubgraphUserValidators",o]:null,async([,s])=>{let a=q("pol.subgraph",{}),{data:i}=await a.query({query:tm,variables:{address:s}});return i.userValidatorInformations})};import sm from"swr";import{useBeraWallet as am,usePublicClient as nm}from"@berachain/wagmi/hooks";var im=e=>{let{address:t}=am(),o=nm(),s=sm(o&&t?["useUserActiveValidators",t]:null,async([,a])=>await To({account:a,publicClient:o}),{...e,refreshInterval:e?.opts?.refreshInterval??18e4,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import lm from"swr";import{useBeraWallet as um,usePublicClient as pm}from"@berachain/wagmi/hooks";var mm=({pubkey:e,...t})=>{let{address:o}=um(),r=pm(),s=t.account??o,i=lm(s&&e?["useUserBoostsOnValidator",e,s]:null,async([,n,l])=>await So({account:l,pubkey:n,publicClient:r}),{refreshInterval:1e5});return{...i,refresh:()=>i.mutate()}};import{useCallback as dm,useMemo as cm}from"react";import os from"swr";import{useBeraWallet as fm}from"@berachain/wagmi/hooks";var ts=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 gm=()=>{let{address:e}=fm(),o=os(e?["useUserClaimableIncentives",e]:null,async([,l])=>{if(!l)throw new B({message:"useUserClaimableIncentives needs a logged in account",level:"error"});return await ao({account:l})},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),r=o?.data,s=cm(()=>{if(r){if(!Array.isArray(r)){fe.captureException(new B({message:"Incorrect aggregated incentives data receieved.",level:"error",extra:{allRewards:r,account:e}}));return}return ts(r)}},[r,e]),i=os(e&&r?["useUserClaimableIncentives",e,r]:null,async([,l,u])=>{if(!l)throw new O({property:"account",value:l,expected:"Address"});if(!u)return[];if(!Array.isArray(u))throw new O({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 Zt({account:l,validator:c,page:1,perPage:1e4}),validator:c})))},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),n=dm(()=>{o?.mutate(),i?.mutate()},[o,i]);return{...i,isLoading:o?.isLoading||i?.isLoading,tokenMap:s,refresh:n}};import ym from"swr/immutable";var FT=({account:e,validatorAddress:t})=>{let r=ym(e?["useUserStakingPositions",e,t]:null,async([s,a,i])=>{let n=await Eo(a);return i?n.filter(l=>l.validatorAddress.toLowerCase()===i.toLowerCase()):n});return{...r,refresh:()=>{r.mutate()}}};import{keccak256 as Am}from"viem";function jT({pubkey:e},t){let{data:{validator:o,uptime:r}={},isLoading:s,error:a}=zr(Am(e),t),{data:i,isLoading:n,error:l}=es({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 bm from"swr";function hm({pubkey:e,dayRange:t}){let r=bm(e&&t?["useValidatorAnalytics",e,t]:null,async([,s,a])=>await Io({pubkey:s,dayRange:a}),{refreshInterval:18e4});return{...r,refresh:()=>r.mutate()}}import Rm from"swr";import{usePublicClient as wm}from"@berachain/wagmi/hooks";var km=(e,t)=>{let o=wm(),s=Rm(o&&e?["useValidatorCommission",e]:null,async([,a])=>await xo({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};var Pm=e=>{let{data:t,isLoading:o}=Mr(),r=z();return{data:t?Bo(e,Number(t?.totalStakedBeraAmount),r):void 0,isLoading:o}};import Cm from"swr";import{usePublicClient as Sm}from"@berachain/wagmi/hooks";function Tm(e,t){let o=Sm(),s=Cm(o&&e?["useValidatorQueuedCommission",e]:null,async([,a])=>(f(o),await Oo({client:o,pubKey:a})),{...t?.opts});return{...s,refresh:()=>s.mutate()}}import Em from"swr";import{usePublicClient as Im}from"@berachain/wagmi/hooks";var xm=(e,t)=>{let o=Im(),s=Em(o&&e?["useValidatorQueuedOperatorAddress",e]:null,async([,a])=>await Do({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};import Bm from"swr";import{usePublicClient as vm}from"@berachain/wagmi/hooks";var Om=(e,t)=>{let o=vm(),s=Bm(o&&e?["useValidatorQueuedRewardAllocation",e]:null,async([,a])=>await Lo({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};import Dm from"swr";import{usePublicClient as Lm}from"@berachain/wagmi/hooks";function Um(e,t){let o=Lm(),s=Dm(o&&e?["useValidatorRewardAllocation",e]:null,async([,a])=>await wo({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}}export{fa as OracleMode,tr as USE_AGGREGATORS_QUOTES_QUERY_KEY,Qr as reducer,df as useAggregatorsQuotes,he as useAggregatorsRouterFeeBps,or as useAllUserPools,sa as useAllUserPoolsQueryKey,gS as useAllValidators,Cp as useAllValidatorsQueryKey,hS as useApiEnrichedAllocation,rr as useApiPool,ia as useApiPoolQueryKey,zr as useApiValidator,Ip as useApiValidatorQueryKey,DS as useBaselineRewardAllocation,CA as useBendZapSupply,Mn as useBendZapSupplyHelper,cp as useBeraContractWrite,gC as useBeraCurrentPrice,Ne as useBexStatus,Ow as useBgtAprSimulation,$l as useBgtUnstakedBalance,_C as useBlockToTimestamp,Dr as useCappedGlobally,Lr as useCappedRelatively,Xl as useClaimableFees,hR as useCollateralWeights,Vf as useCreatePool,bi as useCreateProposal,Dp as useDailyValidatorBlockStats,Hp as useDefaultRewardAllocation,qA as useEnsoSwapBundle,$f as useExploitedTokens,Pa as useExploitedTokensQueryKey,Vo as useGetConvertToAssets,Ib as useGetPastVotes,sS as useGetVerifiedAbi,Sa as useGlobalLiquidityAndSwapVolume,Hb as useHasVoted,ek as useHighestVaultsAPR,iS as useHistoryState,JR as useHoneyAlerts,Ur as useHoneyBalances,tw as useHoneyChartData,nw as useHoneyGlobalData,ww as useHoneySwapState,Hr as useHoneyVaultsBalance,Vr as useIsBadCollateralAsset,Wr as useIsBasketModeEnabled,Fb as useIsCanceller,og as useLiquidityMismatch,Ng as useLpPosition,Np as useManagedValidatorByAccount,Fp as useManagedValidatorRole,an as useMultipleTokenApprovalsWithSlippage,Ar as useMultipleTokenInformation,br as useOnChainPoolData,Rn as useOnChainPoolDataQueryKey,es as useOnChainValidator,Jb as usePollAllProposals,_i as usePollAllProposalsQueryKey,gr as usePollAllowances,ke as usePollBalance,Mr as usePollGlobalData,uk as usePollMarkets,lu as usePollMarketsQueryKey,Sn as usePollPoolCreationRelayerApproval,ah as usePollProposal,dh as usePollProposalThreshold,yh as usePollProposalVotes,zi as usePollProposalVotesQueryKey,Ch as usePollUserDelegates,Te as usePollWalletBalances,Uy as usePool,Wy as usePoolEvents,Gy as usePoolHistoricalData,Jy as usePools,Dn as usePoolsQueryKey,pS as usePrevious,Ce as usePriceImpact,xh as useProposalFromTx,Er as useProposalSnapshot,Uh as useProposalState,Qh as useProposalTimelockState,ee as usePythLatestPrices,Iw as usePythUpdateFee,yk as useQueuedBeraUnlock,Jh as useQuorum,Sk as useRewardTokenToBeraRate,Gk as useRewardVault,mr as useRewardVaultBalanceFromStakingToken,pt as useRewardVaultFromToken,jk as useRewardVaultIncentives,Su as useRewardVaultQueryKey,Bu as useRewardVaultRewards,At as useRewardVaults,ou as useRewardVaultsQueryKey,UP as useSWBeraVaultMetadata,js as useSingleAggregatorQuote,iP as useStakedAPR,RP as useStakedData,IP as useStakedSnapshots,AT as useStakingPoolBatch,kC as useStakingTokenInformation,In as useSubgraphPoolQueryKey,rm as useSubgraphUserValidators,Fr as useTokenCurrentPrice,Z as useTokenCurrentPrices,dr as useTokenInformation,SC as useTokenPrice,G as useTokenPrices,j as useTokens,_P as useTotalStakedAmount,vC as useTotalSupply,im as useUserActiveValidators,mm as useUserBoostsOnValidator,gm as useUserClaimableIncentives,FT as useUserStakingPositions,Mu as useUserVaultInfo,Ku as useUserVaults,jT as useValidator,hm as useValidatorAnalytics,km as useValidatorCommission,Pm as useValidatorEstimatedBgtPerYear,Tm as useValidatorQueuedCommission,xm as useValidatorQueuedOperatorAddress,Om as useValidatorQueuedRewardAllocation,Um as useValidatorRewardAllocation,oC as useVaultAddress,nC as useVaultHistory,Ju as useVaultValidators,tb as useZapStakeBera};
|
|
4
4
|
//# sourceMappingURL=exports.mjs.map
|