@berachain/berajs 0.2.8-beta.10 → 0.2.8-beta.11

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.
@@ -1,4 +1,4 @@
1
- import{a as Pt}from"../chunk-OGBD5YOG.mjs";import{B as qt,C as Kt,D as $t,E as zt,F as Zt,H as jt,I as Jt,J as ae,K as Xt,L as ye,M as Ae,N as eo,O as to,Q as oo,R as ro,S as so,T as ao,U as no,V as io,W as lo,X as uo,Y as po,Z as mo,_ as co,a as Tt,aa as go,b as S,ba as yo,c as xt,ca as Ao,d as de,da as ho,e as St,ea as bo,f as Bt,fa as Ro,h as Ot,ha as wo,i as vt,j as Dt,ja as ko,k as Lt,ka as Co,l as Ht,la as Io,m as z,ma as Po,na as To,o as Ut,oa as Eo,p as Nt,pa as xo,q as Vt,qa as So,ra as Bo,s as Wt,sa as Oo,t as me,ta as vo,u as Mt,ua as Do,v as We,w as _t,x as Yt,y as ce,z as Gt}from"../chunk-NXXMW2O7.mjs";import{b as le}from"../chunk-ENT2OSXT.mjs";import"../chunk-NLVWRMGD.mjs";import{c as W,e as Me,g as X,l as U,m as $p,n as Lo}from"../chunk-JIPSTWKO.mjs";import{a as K,c as he}from"../chunk-K5L2B4DU.mjs";import"../chunk-NAXAZJJY.mjs";import{b as fo}from"../chunk-RJN36GBU.mjs";import{a as Et,b as ge}from"../chunk-ZW2N63FI.mjs";import{a as $,b as A,c as V,d as Ne,e as Ve}from"../chunk-5QAFKFM5.mjs";import"../chunk-JDZGYU5T.mjs";import"../chunk-575OK77P.mjs";import{b as be,c as Ho}from"../chunk-JXM5S4IU.mjs";import{a as P,d as ue,j as Ue,k as Qt,l as Ft,m as fe}from"../chunk-JDDRTHFG.mjs";import"../chunk-MK5NS5B5.mjs";import{a as N,c as pe,d as w}from"../chunk-WLJHFHKF.mjs";import{a as E}from"../chunk-KUQEX7H3.mjs";import"../chunk-PRLVZIKD.mjs";import{f as L,g as J,h as B}from"../chunk-GXV2JA36.mjs";import rs from"swr";import{usePublicClient as ss}from"@berachain/wagmi/hooks";var Uo=({sharesAmount:e,vaultAddress:o,vaultChainId:t},r)=>{let s=ss({chainId:t}),a=rs(s&&e&&o?["useGetConvertToAssets",e,o,t]:null,async([n,i,l])=>(A(s),Tt({sharesAmount:i,vaultAddress:l,publicClient:s})),{...r?.opts});return{...a,refresh:()=>{a.mutate()}}};import{useMemo as Zs}from"react";import{zeroAddress as js}from"viem";import{defaultChainId as Js}from"@berachain/config/internal";import{useBeraWallet as Xs,usePublicClient as ea}from"@berachain/wagmi/hooks";import{Slippage as as,Swap as ns,SwapKind as is,Token as No,TokenAmount as ls}from"@berachain-foundation/berancer-sdk";import{decodeFunctionData as us,formatEther as Vo,zeroAddress as ps}from"viem";import{getUriFromLink as ds}from"@berachain/config";import{ChainId as Wo}from"@berachain/config/internal";import{vaultAbi as Mo}from"@berachain/abis/bex/vault";var ms=300,cs=.05,Qe=is.GivenIn,_e=class extends S{name="Hub Pools";supportedChains=[Wo.MAINNET,Wo.BEPOLIA];url=ds(this.config.api);type="graphql";convertZeroToWrapped(o){return w(o,"BERA")?this.config.tokens.wbera:o}calculatePriceImpact(o){return o.error?(console.error("Swap price impact error",o),0):Number(o.priceImpact)}checkStalePrices({onChainAmount:o,sorPaths:t,sorAmount:r,queryData:s}){let a=Number.parseFloat(Vo(o.scale18))/Number.parseFloat(r);if(Math.abs(1-a)>cs){console.warn("SOR returned stale prices. Delta from return amount is more than 5%",{deltaFromSorAmount:a});let n=new L({reason:"SOR_STALE_PRICES",level:"warning",message:"SOR returned stale prices. Delta from return amount is more than 5%",extra:{deltaFromSorAmount:a,pools:t.map(i=>i.pools),onChainAmount:Vo(o.scale18),sorAmount:r,queryData:s},fingerprint:["SOR_STALE_PRICES"]});ge.captureException(n)}}async getQuote(o){let t=new xt(this.url,this.chainId),{tokenIn:r,tokenOut:s,amount:a,slippage:n,account:i=ps,publicClient:l}=o;this.assertChainSupport({tokenIn:r,tokenOut:s}),A(l);let u=w(r,"BERA")||w(s,"BERA"),d=new No(this.chainId,this.convertZeroToWrapped(r.address),r.decimals),p=new No(this.chainId,this.convertZeroToWrapped(s.address),s.decimals),m=ls.fromRawAmount(d,a),{paths:c,priceImpact:f,returnAmount:y}=await t.sorSwapPaths.fetchSorSwapPaths({chainId:this.chainId,tokenIn:d.address,tokenOut:p.address,swapKind:Qe,swapAmount:m});if(!c?.length)throw new J({response:void 0,endpoint:{url:this.url,name:this.name,type:this.type},reason:S.PATH_NOT_FOUND_REASON,chainId:this.chainId,payload:{tokenIn:d.address,tokenOut:p.address,swapKind:Qe,swapAmount:m},message:"No swap paths returned from Balancer API"});let g=new ns({chainId:this.chainId,paths:c,swapKind:Qe,userData:"0x"}),b=await g.query(l.transport.url);if(!("expectedAmountOut"in b))throw new Error("No Bex paths found");return this.checkStalePrices({onChainAmount:b.expectedAmountOut,sorPaths:c,sorAmount:y,queryData:o}),{amountOut:b.expectedAmountOut.amount.toString(),amountIn:a,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:r,rawAmount:a,spender:b.to}),name:this.name,priceImpactPercentage:this.calculatePriceImpact(f),swapFeeBps:0,getCalldata:({account:R})=>{let h=g.buildCall({slippage:as.fromPercentage(n.toString()),deadline:BigInt(Math.round(Date.now()/1e3)+ms),queryOutput:b,sender:R,recipient:R,wethIsEth:u}),{args:C,functionName:k}=us({abi:Mo,data:h.callData});return{params:C,functionName:k,abi:Mo,address:h.to,value:h.value||BigInt(0)}}}}},Ye=new _e;import{ChainId as Qo}from"@berachain/config/internal";var Fe=class extends S{name="RedeemBgt";supportedChains=[Qo.MAINNET,Qo.BEPOLIA];type="rpc";checkChainSupport({tokenIn:o,tokenOut:t}){return super.checkChainSupport({tokenIn:o,tokenOut:t})?o.chainId===t.chainId&&w(o,"BGT",{chainId:o.chainId})&&w(t,"BERA"):!1}async getQuote({tokenIn:o,amount:t}){if(this.assertChainSupport({tokenIn:o,tokenOut:{...N,chainId:o.chainId}}),!w(o,"BGT",{config:this.config}))throw new B({property:"tokenIn",value:o,expected:"BGT",level:"warning"});return{amountOut:t,amountIn:t,allowanceRequirements:[],name:"RedeemBgt",isNativeSwap:!0,swapFeeBps:0}}},_o=new Fe;import{zeroAddress as Yo}from"viem";import{ChainId as Fo}from"@berachain/config/internal";import fs from"@berachain/abis/meta-aggregator/metaAggregatorV2";var Ge=class extends S{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:o,tokenOut:t,amount:r,slippage:s,account:a=Yo,aggregatorsFeeBps:n,proxyAggregatorsThroughVercel:i=!1,rewardVault:l}){this.assertChainSupport({tokenIn:o,tokenOut:t});let{tokenInAddress:u,tokenOutAddress:d,isTokenInNative:p,isTokenOutNative:m}=this.parseAddresses(o.address,t.address),c=this.getAmountAfterFees(r,n);this.url=i?"/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",c),f.searchParams.set("tokenIn",u),f.searchParams.set("tokenOut",d),f.searchParams.set("chainId",Fo.MAINNET.toString()),f.searchParams.set("slippage",(Number(s)*100).toString()),f.searchParams.set("refundReceiver",a);let g=await(await this.fetch(f)).json(),b=this.getInputData({tokenIn:u,amountIn:r,isNative:p}),R={tokenOut:d,receiver:a,minAmountOut:this.getMinAmountOut(g.amountOut.toString(),s),isNative:m},h={aggregator:g.tx?.to,data:g.tx?.data};return{amountOut:g.amountOut.toString(),amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:n,getCalldata:()=>({params:[b,R,h,{rewardVault:l??Yo,isSwapAndStake:!!l}],functionName:"swap",abi:fs,value:BigInt(p?r:"0"),address:this.config.bex.aggregatorsRouter})}}},qe=new Ge;import{erc4626Abi as Go,formatUnits as gs}from"viem";import{wberaStakerVaultAbi as ys}from"@berachain/abis/pol/wberaStakerVault";var Ke=class extends S{name="Mint";supportedChains=null;type="rpc";checkChainSupport({tokenIn:o,tokenOut:t,underlyingToken:r}){return super.checkChainSupport({tokenIn:o,tokenOut:t,underlyingToken:r})&&!!r&&r?.chainId===t.chainId&&(w(r,o)||w(o,"BERA")&&w(t,"SWBERA"))}async getQuote({tokenIn:o,tokenOut:t,amount:r,underlyingToken:s,publicClient:a}){this.assertChainSupport({tokenIn:o,tokenOut:t,underlyingToken:s}),$(s,"underlyingToken"),A(a);let n=await a.readContract({address:t.address,abi:Go,functionName:"convertToShares",args:[BigInt(r)]}),i=w(t,"SWBERA")&&w(o,"BERA");return{amountOut:n.toString(),amountIn:r,allowanceRequirements:i?[]:[{token:o,spender:t.address,amount:{raw:r,formatted:gs(BigInt(r),o.decimals)}}],name:"Mint",isNativeSwap:!1,swapFeeBps:0,getCalldata:({account:l})=>i?{abi:ys,address:t.address,functionName:"depositNative",params:[BigInt(r),l],value:BigInt(r)}:{abi:Go,address:t.address,functionName:"deposit",contractName:"others.erc4626",params:[BigInt(r),l],value:0n}}}},$e=new Ke;import{zeroAddress as As}from"viem";import{ChainId as hs}from"@berachain/config/internal";import bs from"@berachain/abis/meta-aggregator/metaAggregatorV2";var qo="https://api.fly.trade/aggregator",ze=class extends S{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:o,tokenOut:t,amount:r,slippage:s,account:a,aggregatorsFeeBps:n,rewardVault:i}){this.assertChainSupport({tokenIn:o,tokenOut:t});let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:d,isTokenOutNative:p}=this.parseAddresses(o.address,t.address),m=this.getAmountAfterFees(r,n),c=new URL(`${qo}/quote`);this.url=c.toString();let f=new URLSearchParams({fromTokenAddress:l,toTokenAddress:u,sellAmount:m,slippage:(s/100).toString(),gasless:"false",network:"berachain"});f.set("fromAddress",this.config.bex.aggregatorsRouterExecutor),f.set("toAddress",this.config.bex.aggregatorsRouterExecutor),c.search=f.toString();let g=await(await this.fetch(c)).json(),b={amountOut:g.amountOut,amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:n??0},R=new URL(`${qo}/transaction`);this.url=R.toString();let h=new URLSearchParams({quoteId:g.id,estimateGas:"false"});R.search=h.toString();let k=await(await this.fetch(R)).json();return{...b,getCalldata:({account:I})=>{let T=this.getInputData({tokenIn:l,amountIn:r,isNative:d}),x={tokenOut:u,receiver:I,minAmountOut:this.getMinAmountOut(g.amountOut,s),isNative:p},v={aggregator:k?.to,data:k?.data};return{params:[T,x,v,{rewardVault:i??As,isSwapAndStake:!!i}],functionName:"swap",abi:bs,value:w(o,"BERA")?BigInt(r):BigInt("0"),address:this.config.bex.aggregatorsRouter}}}}},Ze=new ze;import{formatUnits as Rs,parseUnits as ws,zeroAddress as ks}from"viem";import{ChainId as Cs}from"@berachain/config/internal";import Is from"@berachain/abis/meta-aggregator/metaAggregatorV2";var je=class extends S{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:o,tokenOut:t,amount:r,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:n=!1,referrer:i,rewardVault:l}){if(o.decimals===void 0||t.decimals===void 0)throw new L({message:"Missing required params",level:"error"});this.assertChainSupport({tokenIn:o,tokenOut:t});let{tokenInAddress:u,tokenOutAddress:d,isTokenInNative:p,isTokenOutNative:m}=this.parseAddresses(o.address,t.address),c=this.getAmountAfterFees(r,a),f={intent:{allowancesMode:"approve",slippage:s/100,receiver:this.config.bex.aggregatorsRouterExecutor,input_positions:{[`bera:${u}`]:Rs(BigInt(c),o.decimals)},target_weights:{[`bera:${d}`]:1}}},y=i==="ZAP"?"zap-haiku":"haiku";this.url=n?"/api/aggregators?aggregator=haikuQuote":`${this.config.bex.aggregatorsProxyUrl}/${y}/v1/quoteIntent`;let b=await(await this.fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)})).json(),R={amountOut:ws(b.balances[0].amount,t.decimals).toString(),amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:a};this.url=n?"/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:b.quoteId})})).json();return{...R,getCalldata:({account:k})=>{let I=this.getInputData({tokenIn:u,amountIn:r,isNative:p,isPermit2Approval:!0,permit2SpenderAddress:this.config.bex.haikuAgentAddress}),T={tokenOut:d,receiver:k,minAmountOut:this.getMinAmountOut(R.amountOut,s),isNative:m},x={aggregator:C.to,data:C.data};return{params:[I,T,x,{rewardVault:l??ks,isSwapAndStake:!!l}],functionName:"swap",abi:Is,value:BigInt(p?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},Je=new je;import{formatUnits as Ko}from"viem";import{ChainId as Ps}from"@berachain/config/internal";function Ts(e){return e?"previewMintHoney":"previewRedeemCollaterals"}var Xe=class extends S{name="Honey";supportedChains=[Ps.MAINNET];type="rpc";honeyToken=pe(this);isHoneyNativeSwap({tokenIn:o,tokenOut:t,honeyNativeState:r,...s}){if(!r?.collateralList)return!1;let a=w(t,"HONEY",s),n=w(o,"HONEY",s);return!a&&!n?!1:r.collateralList.some(i=>w(i.address,a?o:t))}checkChainSupport({tokenIn:o,tokenOut:t,honeyNativeState:r}){return super.checkChainSupport({tokenIn:o,tokenOut:t})&&o.chainId===t.chainId&&this.isHoneyNativeSwap({tokenIn:o.address,tokenOut:t.address,honeyNativeState:r})}async getQuote({tokenIn:o,tokenOut:t,amount:r,publicClient:s,account:a,honeyNativeState:n}){let{collateralList:i}=n??{};if(!i)throw new B({message:"Invalid Honey Context state",property:"collaterals",value:i,expected:"TokenWithOrder[]"});A(s),this.assertChainSupport({tokenIn:o,tokenOut:t});let l=w(t,this.honeyToken),u=i,d=i.find(I=>w(I.address,l?o.address:t.address));if(!d)throw new L({message:"This collateral is not part of the Honey protocol"});let[p,m]=await Promise.all([me({client:s,collateralList:[d]}),ce({client:s,isMint:l,collateralList:i,latestPrices:void 0,isPythWrapperEnabled:!1})]);if(!p)throw new L({message:"Failed to fetch the Honey vault balances"});if(m)return;let c=p[0],f=d.order;u.length>1&&f!==0&&(u.splice(f,1),u.unshift(d));let y=Ko(BigInt(r),l?d.decimals:this.honeyToken.decimals),g={client:s,collateral:d,collateralList:i,amount:y,method:Ts(l),latestPrices:void 0,isPythWrapperEnabled:!1},b=await Wt(g);if(!b)throw new L({message:"Failed to fetch the Honey preview"});let{honey:R,collaterals:h}=b;if(!(l?!0:new P(c?.balance.formatted??"0").gte(Ko(h[d.address],d.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 L({message:"Failed to fetch the Honey swap payload"});return{amountIn:r,amountOut:l?R.toString():h[d.address].toString(),allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:"Honey",swapFeeBps:0,getCalldata:({account:I})=>k({account:I})}}},et=new Xe;import{zeroAddress as Es}from"viem";import{ChainId as xs}from"@berachain/config/internal";import Ss from"@berachain/abis/meta-aggregator/metaAggregatorV2";var tt=class extends S{name="KyberSwap";supportedChains=[xs.MAINNET];type="rest";notFoundMessages=["token not found","route not found","amountIn is greater than max allowed"];async getQuote({tokenIn:o,tokenOut:t,amount:r,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:n=!1,rewardVault:i}){this.assertChainSupport({tokenIn:o,tokenOut:t});let{isTokenInNative:l,isTokenOutNative:u,tokenInAddress:d,tokenOutAddress:p}=this.parseAddresses(o.address,t.address),m=this.getAmountAfterFees(r,a);this.url=n?"/api/aggregators?aggregator=kyberswapRoutes":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/routes`;let c=new URL(this.url);c.searchParams.set("tokenIn",d),c.searchParams.set("tokenOut",p),c.searchParams.set("amountIn",m),c.searchParams.set("slippageTolerance",(s/100).toString()),c.searchParams.set("to",this.config.bex.aggregatorsRouterExecutor),c.searchParams.set("clientData",JSON.stringify({source:"berachain"}));let y=await(await this.fetch(c)).json(),g={amountOut:y.data.routeSummary.amountOut,amountIn:r,name:this.name,swapFeeBps:a,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,rawAmount:r,spender:this.config.bex.aggregatorsRouter})},b={routeSummary:y.data.routeSummary,sender:this.config.bex.aggregatorsRouterExecutor,recipient:this.config.bex.aggregatorsRouterExecutor,slippageTolerance:s*100,deadline:Math.floor(Date.now()/1e3)+300,source:"berachain"},R=c.searchParams.entries(),h=new URL(n?"/api/aggregators?aggregator=kyberswapBuild":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/route/build`);for(let[T,x]of R)h.searchParams.set(T,x);let k=await(await this.fetch(h,{method:"POST",body:JSON.stringify(b)})).json(),I=this.getInputData({tokenIn:d,amountIn:r,isNative:l});return{...g,getCalldata:({account:T})=>{let x={tokenOut:p,receiver:T,minAmountOut:this.getMinAmountOut(g.amountOut,s),isNative:u},v={aggregator:k.data.routerAddress,data:k.data.data};return{params:[I,x,v,{rewardVault:i??Es,isSwapAndStake:!!i}],functionName:"swap",abi:Ss,value:BigInt(l?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},ot=new tt;import{zeroAddress as Bs}from"viem";import{ChainId as Os}from"@berachain/config/internal";import vs from"@berachain/abis/meta-aggregator/metaAggregatorV2";var rt=class extends S{name="Oogabooga";supportedChains=[Os.MAINNET];type="rest";async getQuote({tokenIn:o,tokenOut:t,amount:r,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:n=!1,rewardVault:i}){this.assertChainSupport({tokenIn:o,tokenOut:t});let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:d,isTokenOutNative:p}=this.parseAddresses(o.address,t.address),m=this.getAmountAfterFees(r,a),c=new URLSearchParams({tokenIn:l,tokenOut:u,amount:m,slippage:(s/100).toString(),to:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter});this.url=n?`/api/aggregators?aggregator=oogabooga&${c.toString()}`:`${this.config.bex.aggregatorsProxyUrl}/oogabooga/v1/swap?${c.toString()}`;let y=await(await this.fetch(this.url)).json(),g={amountOut:y.assumedAmountOut,amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,spender:this.config.bex.aggregatorsRouter,rawAmount:r}),name:this.name,priceImpactPercentage:y.priceImpact,swapFeeBps:a};return{...g,getCalldata:({account:b})=>{let R=this.getInputData({tokenIn:l,amountIn:r,isNative:d}),h={tokenOut:u,receiver:b,minAmountOut:this.getMinAmountOut(g.amountOut,s),isNative:p},C={aggregator:y.tx?.to,data:y.tx?.data};return{params:[R,h,C,{rewardVault:i??Bs,isSwapAndStake:!!i}],functionName:"swap",abi:vs,value:BigInt(d?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},st=new rt;import{zeroAddress as $o}from"viem";import{ChainId as zo}from"@berachain/config/internal";import Ds from"@berachain/abis/meta-aggregator/metaAggregatorV2";var at=class extends S{name="OpenOcean";supportedChains=[zo.MAINNET];type="rest";url="https://open-api.openocean.finance/v4/bera/swap";notFoundMessages=["No avail liquidity for the pair"];async getQuote({tokenIn:o,tokenOut:t,amount:r,slippage:s,account:a=$o,aggregatorsFeeBps:n,publicClient:i,rewardVault:l}){if(A(i),!o.decimals)throw new B({property:"tokenIn.decimals",value:o.decimals,expected:"number",chainId:this.chainId});this.assertChainSupport({tokenIn:o,tokenOut:t});let u=this.getAmountAfterFees(r,n),{tokenInAddress:d,tokenOutAddress:p,isTokenInNative:m,isTokenOutNative:c}=this.parseAddresses(o.address,t.address),f=(await i.getGasPrice()).toString(),y=new URLSearchParams({chain:zo.MAINNET.toString(),inTokenAddress:d,outTokenAddress:p,amountDecimals:u,slippage:s<.01?"0.01":s.toString(),account:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter,gasPrice:f}),g=await this.fetch(`${this.url}?${y.toString()}`),b=await g.json();if(b.code!==200||!b.data){let h=this.notFoundMessages.some(C=>b.error.includes(C));throw new J({response:g,endpoint:{url:this.url,name:this.name,type:this.type},cause:b,reason:h?S.PATH_NOT_FOUND_REASON:b.error})}let R={amountOut:b.data.outAmount,amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:n};return{...R,getCalldata:({account:h})=>{let C=this.getInputData({tokenIn:d,amountIn:r,isNative:m}),k={tokenOut:p,receiver:h,minAmountOut:this.getMinAmountOut(R.amountOut,s),isNative:c},I={aggregator:b.data.to,data:b.data.data};return{params:[C,k,I,{rewardVault:l??$o,isSwapAndStake:!!l}],functionName:"swap",abi:Ds,value:BigInt(m?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},nt=new at;import{ChainId as Zo}from"@berachain/config/internal";import{wberaAbi as jo}from"@berachain/abis/wbera";var it=class extends S{name="Wrap";supportedChains=[Zo.MAINNET,Zo.BEPOLIA];type="rpc";checkChainSupport({tokenIn:o,tokenOut:t}){return o.chainId!==t.chainId||!super.checkChainSupport({tokenIn:o,tokenOut:t})?!1:w(o,"BERA")&&w(t,"WBERA")||w(o,"WBERA")&&w(t,"BERA")}async getQuote({tokenIn:o,tokenOut:t,amount:r}){this.assertChainSupport({tokenIn:o,tokenOut:t});let s=w(o,"BERA")&&w(t,"WBERA");return{amountOut:r,amountIn:r,allowanceRequirements:[],name:s?"Wrap":"Unwrap",isNativeSwap:!0,swapFeeBps:0,getCalldata:()=>s?{abi:jo,address:this.config.tokens.wbera,functionName:"deposit",params:[],value:BigInt(r)}:{abi:jo,address:this.config.tokens.wbera,functionName:"withdraw",params:[BigInt(r)],value:BigInt(0)}}}},lt=new it;import Us from"swr/immutable";import{useConfig as Ns}from"@berachain/wagmi/hooks";import{getPublicClient as Ls}from"@wagmi/core";import{erc4626Abi as Hs}from"viem";async function Jo({token:e,wagmiConfig:o}){try{if(w(e,"BERA"))return null;let t=Ls(o,{chainId:e.chainId});A(t);let r=await t.readContract({address:e.address,abi:Hs,functionName:"asset"});return z({address:r,publicClient:t,chainId:e.chainId})}catch(t){let r=Et({cause:t});if(r.reason==='The contract function "asset" reverted.')return null;throw r}}function Xo({token:e}){let o=Ns();return Us(e&&o&&!w(e,"BERA")?["useUnderlyingAsset",e]:null,async([,t])=>Jo({token:t,wagmiConfig:o}))}import Vs from"swr/immutable";import{zeroAddress as Ws}from"viem";import Ms from"@berachain/abis/meta-aggregator/metaAggregatorV2";import{usePublicClient as Qs}from"@berachain/wagmi/hooks";var Re=()=>{let e=Qs(),{config:o}=E({chainId:e.chain?.id}),t=Vs(e&&o.bex.aggregatorsRouter&&o.bex.aggregatorsRouter!==Ws?["useAggregatorsRouterFeeBps",o.bex.aggregatorsRouter]:null,async([,r])=>{let s=await e.readContract({address:r,abi:Ms,functionName:"SWAP_FEE_RATE"});return Number(s)});return{...t,refresh:t.mutate}};import _s from"swr";import{parseUnits as Ys,zeroAddress as Fs}from"viem";import{useBeraWallet as Gs,usePublicClient as qs}from"@berachain/wagmi/hooks";var er="useAggregatorsQuotes";function Ks({aggregator:e,account:o,args:t,feeBps:r,options:s,activeAggregators:a,isMAEnabled:n}){if(s?.opts?.isEnabled!==void 0&&!s?.opts?.isEnabled||!Number(t.amount)||!e.checkChainSupport({tokenIn:t.tokenIn,tokenOut:t.tokenOut,underlyingToken:t.underlyingToken,honeyNativeState:t.honeyNativeState}))return null;let i=e.name,l=!["Hub Pools","Honey","Wrap","Unwrap","Mint"].includes(i);if(!n&&l)return null;let{tokenIn:u,tokenOut:d,amount:p,slippage:m,referrer:c,rewardVault:f}=t,y=Ys(p,u.decimals).toString();if(!(e.name==="Wrap"||e.name==="RedeemBgt"||e.name==="Honey"||!a||a.includes(i.toLowerCase().replaceAll(" ","")))||e.name==="Honey"&&t.honeyNativeState?.protocol.isPaused)return null;let b=e.name==="Mint"||e.name==="Enso (Mint)";return l&&r===void 0?null:[er,i,u,d,y,m,e.needsAccountForQuote?o:void 0,l?r:0,c,f,b?t.underlyingToken:void 0,e.name==="Honey"?t.honeyNativeState?.collateralList:void 0]}function $s({aggregator:e,publicClient:o,proxyAggregatorsThroughVercel:t}){return async([,,r,s,a,n,i,l,u,d,p,m])=>e.getQuote({tokenIn:r,tokenOut:s,amount:a,slippage:n,account:i,aggregatorsFeeBps:l,publicClient:o,proxyAggregatorsThroughVercel:t,referrer:u,rewardVault:d,underlyingToken:p,honeyNativeState:{collateralList:m??[]}})}function M({feeBps:e,publicClient:o,account:t,proxyAggregatorsThroughVercel:r,activeAggregators:s,isMAEnabled:a,...n},i){return _s(Ks({aggregator:n.aggregator,account:t,args:n,feeBps:e,options:i,activeAggregators:s,isMAEnabled:a}),$s({aggregator:n.aggregator,proxyAggregatorsThroughVercel:r,publicClient:o}),i?.opts)}function ut(e){return{refreshInterval:1e4,errorRetryCount:3,...e?.opts,onErrorRetry(o,t,r,s,a){if(e?.opts?.onErrorRetry?.(o,t,r,s,a),!(o instanceof L&&o.reason===S.PATH_NOT_FOUND_REASON)){if(o instanceof J&&o.statusCode===403){console.warn(t[1],"returned error 403, stopping retries");return}a.retryCount>(r.errorRetryCount??3)||setTimeout(()=>{s()},r.errorRetryInterval??fe(10))}}}}function zs(e,o){let{address:t}=Gs(),r=W("proxyAggregatorsThroughVercel"),s=W("aggregators"),a=qs(),{data:n}=Re();if(e.aggregator.name!=="Wrap"&&!((w(e.tokenIn.address,"BERA")||w(e.tokenIn.address,"WBERA"))&&(w(e.tokenOut.address,"BERA")||w(e.tokenOut.address,"WBERA"))))return null;let{config:i}=E(e),l=i.bex.aggregatorsRouter!==Fs;return M({...e,aggregator:e.aggregator,feeBps:n,activeAggregators:s,account:t,isMAEnabled:l,publicClient:a,proxyAggregatorsThroughVercel:r},{...o,opts:ut(o)})}var ta=[st,Ze,ot,nt,Je,qe,Ye,et,$e];function Ic(e,o){let{address:t}=Xs(),r=W("proxyAggregatorsThroughVercel"),s=W("aggregators"),a=ea(),{data:n}=Re(),i=(w(e.tokenIn.address,"BERA")||w(e.tokenIn.address,"WBERA"))&&(w(e.tokenOut.address,"BERA")||w(e.tokenOut.address,"WBERA")),l=w(e.tokenIn.address,"BGT",{chainId:Js}),{data:u}=Xo({token:e.tokenOut}),d=i||l,{config:p}=E(e),m=p.bex.aggregatorsRouter!==js,c=ut(o),f={activeAggregators:s,isMAEnabled:m,underlyingToken:u,isNativeSwap:d,account:t,publicClient:a,proxyAggregatorsThroughVercel:r,feeBps:n},y=M({...f,...e,aggregator:st},{opts:c}),g=M({...f,...e,aggregator:Ze},{opts:c}),b=M({...f,...e,aggregator:$e},{opts:c}),R=M({...f,...e,aggregator:ot},{opts:c}),h=M({...f,...e,aggregator:nt},{opts:c}),C=M({...f,...e,aggregator:Je},{opts:c}),k=M({...f,...e,aggregator:qe},{opts:c}),{protocol:I}=Me(),T=M({...f,...e,aggregator:Ye},{opts:{...c,isEnabled:I.isPaused===!1}}),x=M({...f,...e,aggregator:lt}),v=M({...f,...e,aggregator:_o},{opts:c}),H=M({...f,...e,aggregator:et},{opts:c}),O=i?[x]:l?[v]:[y,b,g,R,h,C,k,H,I.isPaused===!1?T:null].filter(Q=>Q!==null);return{...Zs(()=>{let Q=O.reduce((D,G)=>D||G.error,void 0),q=O.map((D,G)=>D.isLoading?d?lt.name:ta[G].name:null).filter(Boolean),Y=O.filter(D=>D!==void 0&&!D.isLoading&&!D.error&&D.data?.amountOut).map(({data:D})=>D),F=Y.length===0&&q.length>0;return{quotes:Y,loadingAggregatorsNames:q,isLoading:F,error:Q}},[O]),refresh:()=>O.map(Q=>Q.mutate())}}import oa from"swr";var ra=({query:e}={})=>["useAllUserPools",e],tr=(e,o)=>{let t=oa(ra({query:e}),async([r,s])=>de({...s,fetchPolicy:"no-cache"}),{refreshInterval:18e4,...o?.opts});return{...t,refresh:()=>{t.mutate()}}};import sa from"swr";import{isAddress as aa}from"viem";var na=({poolId:e,account:o})=>e?["usePool-api",e,o]:null;function or({poolId:e,account:o}){let t=sa(na({poolId:e,account:o}),async([,r,s])=>{if(s&&!aa(s))throw new B({property:"account",value:s,expected:"Address"});return St({poolId:r,account:s})},{refreshInterval:1e5});return{...t,refresh:()=>{t.mutate()}}}import{useMemo as nr}from"react";import{PoolType as we}from"@berachain-foundation/berancer-sdk";import la from"swr/immutable";import{formatUnits as ua,keccak256 as pa,parseUnits as ke,zeroAddress as dt}from"viem";import{poolCreationHelperAbi as ir}from"@berachain/abis/bex/poolCreationHelper";import{GetDedupedSubgraphPools as da}from"@berachain/graphql/dex/subgraph";import{PoolType as rr}from"@berachain-foundation/berancer-sdk";import{formatUnits as ia}from"viem";var pt=e=>[...e].sort((o,t)=>o.address.toLowerCase().localeCompare(t.address.toLowerCase())),sr=e=>e.length===0?"":pt(e).map(o=>o.symbol).join(" | "),ar=(e,o,t)=>{let r;return t===rr.ComposableStable?r="STABLE":r=t.toString().toUpperCase(),t===rr.Weighted?o.length===0?"":`${pt(e).map((s,a)=>{let n=o[a];return`${(Number.parseFloat(ia(n,18))*100).toFixed(0)}${s.symbol}`}).join("-")}-${r}`:`${pt(e).map(s=>s.symbol).join("-")}-${r}`};var ma=.005,ca=(t=>(t.None="None",t.Custom="Custom",t))(ca||{}),fa=({poolCreationHelper:e,poolCreateTokens:o,initialLiquidityTokens:t,swapFeePercentage:r,salt:s,poolName:a,poolSymbol:n,owner:i,amplification:l,oracles:u,message:d,actionType:p,gasLimit:m=Ue})=>{let c=o.map(k=>k.address.toLowerCase()).sort((k,I)=>k<I?-1:1),f=c.map(k=>{let I=t.find(O=>O.address.toLowerCase()===k||w(k,"WBERA")&&w(O.address,"BERA")),T=I?ke(I.amount,I.decimals):0n,x=u.find(O=>O.tokenAddress.toLowerCase()===k.toLowerCase()),v=x?x.address:dt,H=BigInt(x?x.cacheDuration:100);return{amountIn:T,rateProvider:v,cacheDuration:H}}),y=f.map(k=>k.amountIn),g=f.map(k=>k.rateProvider),b=f.map(k=>k.cacheDuration),R=t.findIndex(k=>w(k.address,"BERA")),h=R!==-1?ke(t[R].amount,t[R].decimals):0n,C=h>0n;return{address:e,abi:ir,functionName:"createAndJoinStablePool",params:[a,n,c,BigInt(l),g,b,!1,r,y,i,s,C],message:d,actionType:p,value:h,gasLimit:m,track:{eventName:"hub_pool_create",eventData:{poolName:a,poolSymbol:n}}}},ga=({poolCreationHelper:e,poolCreateTokens:o,initialLiquidityTokens:t,normalizedWeights:r,swapFeePercentage:s,salt:a,poolName:n,poolSymbol:i,owner:l,message:u,actionType:d,gasLimit:p=Ue})=>{let m=[],c=[],f=[],y=[];o.map((R,h)=>({createToken:R.address,joinToken:t[h].address,weight:r[h],amountIn:ke(t[h].amount,t[h].decimals)})).sort((R,h)=>R.createToken.toLowerCase()<h.createToken.toLowerCase()?-1:1).forEach(R=>{m.push(R.createToken),c.push(R.joinToken),f.push(R.weight),y.push(R.amountIn)});let g=c.indexOf(dt),b=g!==-1?y[g]:0n;return{address:e,abi:ir,functionName:"createAndJoinWeightedPool",params:[n,i,m,c,f,Array(m.length).fill(dt),s,y,l,a],message:u,actionType:d,value:b,gasLimit:p,track:{eventName:"hub_pool_create",eventData:{poolName:n,poolSymbol:i}}}},zc=({poolCreateTokens:e,initialLiquidityTokens:o,normalizedWeights:t,poolType:r,poolName:s,poolSymbol:a,swapFee:n,owner:i,amplification:l,oracles:u,weightsDuplicationThreshold:d=ma,...p})=>{let{data:m,error:c,isLoading:f}=la(["useCreatePool__deduped_pool",e,r,t],async()=>{if(e.length===0||!r)return null;let R=le("bex.subgraph",{});try{let h=be(e).map(I=>I.address.toLowerCase()).sort((I,T)=>I.toLowerCase()<T.toLowerCase()?-1:1);return(await R.query({query:da,variables:{tokens:h,type:r}})).data.pools.filter(I=>I.tokens?.every(T=>r===we.Weighted?h.includes(T.address)&&Math.abs(Number(T.weight)-Number(ua(t[h.indexOf(T.address)],18)))<d:h.includes(T.address)||T.address===I.address))?.at(0)??null}catch{return null}}),{generatedPoolName:y,generatedPoolSymbol:g}=nr(()=>{if(!e)return{generatedPoolName:"",generatedPoolSymbol:""};let R=sr(e),h=ar(e,t,r);return{generatedPoolName:R,generatedPoolSymbol:h}},[e,t,r]),b=nr(()=>{if(!i||s===""||a===""||e.length!==o.length||e.length===0)return null;let R=ke(n.toString(),16),h=pa(Buffer.from(`${s}-${i}`)),{config:C}=E(p);return r===we.Weighted?ga({poolCreationHelper:C.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:o,normalizedWeights:t,swapFeePercentage:R,salt:h,poolName:s,poolSymbol:a,owner:i,message:`Create pool ${s}`,actionType:"Create Pool"}):r===we.ComposableStable||r===we.MetaStable?fa({poolCreationHelper:C.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:o,swapFeePercentage:R,salt:h,poolName:s,poolSymbol:a,owner:i,amplification:l,oracles:u,message:`Create pool ${s}`,actionType:"Create Pool"}):null},[e,o,t,r,n,s,a,i,l,u]);return{generatedPoolName:y,generatedPoolSymbol:g,isDupePool:!!m,dupePool:m,createPoolArgs:b,isLoadingPools:f,errorLoadingPools:c}};import Ra from"swr";import{usePublicClient as wa}from"@berachain/wagmi/hooks";import{erc20Abi as ya,formatUnits as Aa}from"viem";import{GetExploitedTokens as ha}from"@berachain/graphql/dex/subgraph";var ba=1e-4;async function lr({token:e,publicClient:o,...t}){let r=le("bex.subgraph",t),s=await o.readContract({address:e.address,abi:ya,functionName:"totalSupply"}),a=P(Aa(s,e.decimals)).multipliedBy(ba),{data:n}=await r.query({query:ha,variables:{token:e.address,balance:a.toFixed()}});return n.userInternalBalances.length>0}var ka=e=>{let o=e?.filter(t=>t.address);return!o||o.length===0?null:["useExploitedTokens",o]},nf=({tokens:e})=>{let o=ka(e),t=wa(),r=Ra(t?o:null,async([,s])=>(A(t),(await Promise.all(s.map(n=>lr({token:n,publicClient:t})))).reduce((n,i,l)=>(i!==void 0&&(n[s[l].address]=i),n),{})));return{...r,refresh:()=>r.mutate()}};import Ca from"swr";var Ia=()=>{let e=Ca("useGlobalLiquidityAndSwapVolume",async()=>Bt());return{...e,data:{totalLiquidity:Number(e.data?.protocolMetricsAggregated.totalLiquidity),swapVolume24h:Number(e.data?.protocolMetricsAggregated.swapVolume24h)},refresh:()=>e.mutate()}};import{useEffect as Pa,useState as Ta}from"react";import{PoolType as ne}from"@berachain-foundation/berancer-sdk";var Ea=.05,gf=({currentStep:e,tokenPrices:o,isLoadingTokenPrices:t,tokens:r,weights:s,weightsError:a,poolType:n,liquidityMismatchTolerancePercent:i=Ea,oracles:l})=>{let[u,d]=Ta({title:null,message:null});return Pa(()=>{if(!o||t||!r||!s||a||r.some(h=>!h.address)||l.some(h=>h.mode==="Custom")){d({title:null,message:null});return}let p=0,m=[],c=r.length,y=be(r).map(h=>{let C=o[h.address.toLowerCase()]?.price??0;if(!C||C===0)return m.push(0),null;let k=C*Number.parseFloat(h.amount);return m.push(k),p+=k,C});if(y.some(h=>h===null)||y.length!==c){d({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
1
+ import{a as Pt}from"../chunk-OGBD5YOG.mjs";import{B as qt,C as Kt,D as $t,E as zt,F as Zt,H as jt,I as Jt,J as ae,K as Xt,L as ye,M as Ae,N as eo,O as to,Q as oo,R as ro,S as so,T as ao,U as no,V as io,W as lo,X as uo,Y as po,Z as mo,_ as co,a as Tt,aa as go,b as S,ba as yo,c as xt,ca as Ao,d as de,da as ho,e as St,ea as bo,f as Bt,fa as Ro,h as Ot,ha as wo,i as vt,j as Dt,ja as ko,k as Lt,ka as Co,l as Ht,la as Io,m as z,ma as Po,na as To,o as Ut,oa as Eo,p as Nt,pa as xo,q as Vt,qa as So,ra as Bo,s as Wt,sa as Oo,t as me,ta as vo,u as Mt,ua as Do,v as We,w as _t,x as Yt,y as ce,z as Gt}from"../chunk-NXXMW2O7.mjs";import{b as le}from"../chunk-ENT2OSXT.mjs";import"../chunk-NLVWRMGD.mjs";import{c as W,e as Me,g as X,l as U,m as $p,n as Lo}from"../chunk-JIPSTWKO.mjs";import{a as K,c as he}from"../chunk-K5L2B4DU.mjs";import"../chunk-NAXAZJJY.mjs";import"../chunk-JDZGYU5T.mjs";import"../chunk-575OK77P.mjs";import{b as fo}from"../chunk-RJN36GBU.mjs";import{a as Et,b as ge}from"../chunk-ZW2N63FI.mjs";import{a as $,b as A,c as V,d as Ne,e as Ve}from"../chunk-5QAFKFM5.mjs";import{b as be,c as Ho}from"../chunk-JXM5S4IU.mjs";import{a as P,d as ue,j as Ue,k as Qt,l as Ft,m as fe}from"../chunk-JDDRTHFG.mjs";import"../chunk-MK5NS5B5.mjs";import{a as N,c as pe,d as w}from"../chunk-WLJHFHKF.mjs";import{a as E}from"../chunk-KUQEX7H3.mjs";import"../chunk-PRLVZIKD.mjs";import{f as L,g as J,h as B}from"../chunk-GXV2JA36.mjs";import rs from"swr";import{usePublicClient as ss}from"@berachain/wagmi/hooks";var Uo=({sharesAmount:e,vaultAddress:o,vaultChainId:t},r)=>{let s=ss({chainId:t}),a=rs(s&&e&&o?["useGetConvertToAssets",e,o,t]:null,async([n,i,l])=>(A(s),Tt({sharesAmount:i,vaultAddress:l,publicClient:s})),{...r?.opts});return{...a,refresh:()=>{a.mutate()}}};import{useMemo as Zs}from"react";import{zeroAddress as js}from"viem";import{defaultChainId as Js}from"@berachain/config/internal";import{useBeraWallet as Xs,usePublicClient as ea}from"@berachain/wagmi/hooks";import{Slippage as as,Swap as ns,SwapKind as is,Token as No,TokenAmount as ls}from"@berachain-foundation/berancer-sdk";import{decodeFunctionData as us,formatEther as Vo,zeroAddress as ps}from"viem";import{getUriFromLink as ds}from"@berachain/config";import{ChainId as Wo}from"@berachain/config/internal";import{vaultAbi as Mo}from"@berachain/abis/bex/vault";var ms=300,cs=.05,Qe=is.GivenIn,_e=class extends S{name="Hub Pools";supportedChains=[Wo.MAINNET,Wo.BEPOLIA];url=ds(this.config.api);type="graphql";convertZeroToWrapped(o){return w(o,"BERA")?this.config.tokens.wbera:o}calculatePriceImpact(o){return o.error?(console.error("Swap price impact error",o),0):Number(o.priceImpact)}checkStalePrices({onChainAmount:o,sorPaths:t,sorAmount:r,queryData:s}){let a=Number.parseFloat(Vo(o.scale18))/Number.parseFloat(r);if(Math.abs(1-a)>cs){console.warn("SOR returned stale prices. Delta from return amount is more than 5%",{deltaFromSorAmount:a});let n=new L({reason:"SOR_STALE_PRICES",level:"warning",message:"SOR returned stale prices. Delta from return amount is more than 5%",extra:{deltaFromSorAmount:a,pools:t.map(i=>i.pools),onChainAmount:Vo(o.scale18),sorAmount:r,queryData:s},fingerprint:["SOR_STALE_PRICES"]});ge.captureException(n)}}async getQuote(o){let t=new xt(this.url,this.chainId),{tokenIn:r,tokenOut:s,amount:a,slippage:n,account:i=ps,publicClient:l}=o;this.assertChainSupport({tokenIn:r,tokenOut:s}),A(l);let u=w(r,"BERA")||w(s,"BERA"),d=new No(this.chainId,this.convertZeroToWrapped(r.address),r.decimals),p=new No(this.chainId,this.convertZeroToWrapped(s.address),s.decimals),m=ls.fromRawAmount(d,a),{paths:c,priceImpact:f,returnAmount:y}=await t.sorSwapPaths.fetchSorSwapPaths({chainId:this.chainId,tokenIn:d.address,tokenOut:p.address,swapKind:Qe,swapAmount:m});if(!c?.length)throw new J({response:void 0,endpoint:{url:this.url,name:this.name,type:this.type},reason:S.PATH_NOT_FOUND_REASON,chainId:this.chainId,payload:{tokenIn:d.address,tokenOut:p.address,swapKind:Qe,swapAmount:m},message:"No swap paths returned from Balancer API"});let g=new ns({chainId:this.chainId,paths:c,swapKind:Qe,userData:"0x"}),b=await g.query(l.transport.url);if(!("expectedAmountOut"in b))throw new Error("No Bex paths found");return this.checkStalePrices({onChainAmount:b.expectedAmountOut,sorPaths:c,sorAmount:y,queryData:o}),{amountOut:b.expectedAmountOut.amount.toString(),amountIn:a,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:r,rawAmount:a,spender:b.to}),name:this.name,priceImpactPercentage:this.calculatePriceImpact(f),swapFeeBps:0,getCalldata:({account:R})=>{let h=g.buildCall({slippage:as.fromPercentage(n.toString()),deadline:BigInt(Math.round(Date.now()/1e3)+ms),queryOutput:b,sender:R,recipient:R,wethIsEth:u}),{args:C,functionName:k}=us({abi:Mo,data:h.callData});return{params:C,functionName:k,abi:Mo,address:h.to,value:h.value||BigInt(0)}}}}},Ye=new _e;import{ChainId as Qo}from"@berachain/config/internal";var Fe=class extends S{name="RedeemBgt";supportedChains=[Qo.MAINNET,Qo.BEPOLIA];type="rpc";checkChainSupport({tokenIn:o,tokenOut:t}){return super.checkChainSupport({tokenIn:o,tokenOut:t})?o.chainId===t.chainId&&w(o,"BGT",{chainId:o.chainId})&&w(t,"BERA"):!1}async getQuote({tokenIn:o,amount:t}){if(this.assertChainSupport({tokenIn:o,tokenOut:{...N,chainId:o.chainId}}),!w(o,"BGT",{config:this.config}))throw new B({property:"tokenIn",value:o,expected:"BGT",level:"warning"});return{amountOut:t,amountIn:t,allowanceRequirements:[],name:"RedeemBgt",isNativeSwap:!0,swapFeeBps:0}}},_o=new Fe;import{zeroAddress as Yo}from"viem";import{ChainId as Fo}from"@berachain/config/internal";import fs from"@berachain/abis/meta-aggregator/metaAggregatorV2";var Ge=class extends S{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:o,tokenOut:t,amount:r,slippage:s,account:a=Yo,aggregatorsFeeBps:n,proxyAggregatorsThroughVercel:i=!1,rewardVault:l}){this.assertChainSupport({tokenIn:o,tokenOut:t});let{tokenInAddress:u,tokenOutAddress:d,isTokenInNative:p,isTokenOutNative:m}=this.parseAddresses(o.address,t.address),c=this.getAmountAfterFees(r,n);this.url=i?"/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",c),f.searchParams.set("tokenIn",u),f.searchParams.set("tokenOut",d),f.searchParams.set("chainId",Fo.MAINNET.toString()),f.searchParams.set("slippage",(Number(s)*100).toString()),f.searchParams.set("refundReceiver",a);let g=await(await this.fetch(f)).json(),b=this.getInputData({tokenIn:u,amountIn:r,isNative:p}),R={tokenOut:d,receiver:a,minAmountOut:this.getMinAmountOut(g.amountOut.toString(),s),isNative:m},h={aggregator:g.tx?.to,data:g.tx?.data};return{amountOut:g.amountOut.toString(),amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:n,getCalldata:()=>({params:[b,R,h,{rewardVault:l??Yo,isSwapAndStake:!!l}],functionName:"swap",abi:fs,value:BigInt(p?r:"0"),address:this.config.bex.aggregatorsRouter})}}},qe=new Ge;import{erc4626Abi as Go,formatUnits as gs}from"viem";import{wberaStakerVaultAbi as ys}from"@berachain/abis/pol/wberaStakerVault";var Ke=class extends S{name="Mint";supportedChains=null;type="rpc";checkChainSupport({tokenIn:o,tokenOut:t,underlyingToken:r}){return super.checkChainSupport({tokenIn:o,tokenOut:t,underlyingToken:r})&&!!r&&r?.chainId===t.chainId&&(w(r,o)||w(o,"BERA")&&w(t,"SWBERA"))}async getQuote({tokenIn:o,tokenOut:t,amount:r,underlyingToken:s,publicClient:a}){this.assertChainSupport({tokenIn:o,tokenOut:t,underlyingToken:s}),$(s,"underlyingToken"),A(a);let n=await a.readContract({address:t.address,abi:Go,functionName:"convertToShares",args:[BigInt(r)]}),i=w(t,"SWBERA")&&w(o,"BERA");return{amountOut:n.toString(),amountIn:r,allowanceRequirements:i?[]:[{token:o,spender:t.address,amount:{raw:r,formatted:gs(BigInt(r),o.decimals)}}],name:"Mint",isNativeSwap:!1,swapFeeBps:0,getCalldata:({account:l})=>i?{abi:ys,address:t.address,functionName:"depositNative",params:[BigInt(r),l],value:BigInt(r)}:{abi:Go,address:t.address,functionName:"deposit",contractName:"others.erc4626",params:[BigInt(r),l],value:0n}}}},$e=new Ke;import{zeroAddress as As}from"viem";import{ChainId as hs}from"@berachain/config/internal";import bs from"@berachain/abis/meta-aggregator/metaAggregatorV2";var qo="https://api.fly.trade/aggregator",ze=class extends S{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:o,tokenOut:t,amount:r,slippage:s,account:a,aggregatorsFeeBps:n,rewardVault:i}){this.assertChainSupport({tokenIn:o,tokenOut:t});let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:d,isTokenOutNative:p}=this.parseAddresses(o.address,t.address),m=this.getAmountAfterFees(r,n),c=new URL(`${qo}/quote`);this.url=c.toString();let f=new URLSearchParams({fromTokenAddress:l,toTokenAddress:u,sellAmount:m,slippage:(s/100).toString(),gasless:"false",network:"berachain"});f.set("fromAddress",this.config.bex.aggregatorsRouterExecutor),f.set("toAddress",this.config.bex.aggregatorsRouterExecutor),c.search=f.toString();let g=await(await this.fetch(c)).json(),b={amountOut:g.amountOut,amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:n??0},R=new URL(`${qo}/transaction`);this.url=R.toString();let h=new URLSearchParams({quoteId:g.id,estimateGas:"false"});R.search=h.toString();let k=await(await this.fetch(R)).json();return{...b,getCalldata:({account:I})=>{let T=this.getInputData({tokenIn:l,amountIn:r,isNative:d}),x={tokenOut:u,receiver:I,minAmountOut:this.getMinAmountOut(g.amountOut,s),isNative:p},v={aggregator:k?.to,data:k?.data};return{params:[T,x,v,{rewardVault:i??As,isSwapAndStake:!!i}],functionName:"swap",abi:bs,value:w(o,"BERA")?BigInt(r):BigInt("0"),address:this.config.bex.aggregatorsRouter}}}}},Ze=new ze;import{formatUnits as Rs,parseUnits as ws,zeroAddress as ks}from"viem";import{ChainId as Cs}from"@berachain/config/internal";import Is from"@berachain/abis/meta-aggregator/metaAggregatorV2";var je=class extends S{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:o,tokenOut:t,amount:r,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:n=!1,referrer:i,rewardVault:l}){if(o.decimals===void 0||t.decimals===void 0)throw new L({message:"Missing required params",level:"error"});this.assertChainSupport({tokenIn:o,tokenOut:t});let{tokenInAddress:u,tokenOutAddress:d,isTokenInNative:p,isTokenOutNative:m}=this.parseAddresses(o.address,t.address),c=this.getAmountAfterFees(r,a),f={intent:{allowancesMode:"approve",slippage:s/100,receiver:this.config.bex.aggregatorsRouterExecutor,input_positions:{[`bera:${u}`]:Rs(BigInt(c),o.decimals)},target_weights:{[`bera:${d}`]:1}}},y=i==="ZAP"?"zap-haiku":"haiku";this.url=n?"/api/aggregators?aggregator=haikuQuote":`${this.config.bex.aggregatorsProxyUrl}/${y}/v1/quoteIntent`;let b=await(await this.fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)})).json(),R={amountOut:ws(b.balances[0].amount,t.decimals).toString(),amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:a};this.url=n?"/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:b.quoteId})})).json();return{...R,getCalldata:({account:k})=>{let I=this.getInputData({tokenIn:u,amountIn:r,isNative:p,isPermit2Approval:!0,permit2SpenderAddress:this.config.bex.haikuAgentAddress}),T={tokenOut:d,receiver:k,minAmountOut:this.getMinAmountOut(R.amountOut,s),isNative:m},x={aggregator:C.to,data:C.data};return{params:[I,T,x,{rewardVault:l??ks,isSwapAndStake:!!l}],functionName:"swap",abi:Is,value:BigInt(p?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},Je=new je;import{formatUnits as Ko}from"viem";import{ChainId as Ps}from"@berachain/config/internal";function Ts(e){return e?"previewMintHoney":"previewRedeemCollaterals"}var Xe=class extends S{name="Honey";supportedChains=[Ps.MAINNET];type="rpc";honeyToken=pe(this);isHoneyNativeSwap({tokenIn:o,tokenOut:t,honeyNativeState:r,...s}){if(!r?.collateralList)return!1;let a=w(t,"HONEY",s),n=w(o,"HONEY",s);return!a&&!n?!1:r.collateralList.some(i=>w(i.address,a?o:t))}checkChainSupport({tokenIn:o,tokenOut:t,honeyNativeState:r}){return super.checkChainSupport({tokenIn:o,tokenOut:t})&&o.chainId===t.chainId&&this.isHoneyNativeSwap({tokenIn:o.address,tokenOut:t.address,honeyNativeState:r})}async getQuote({tokenIn:o,tokenOut:t,amount:r,publicClient:s,account:a,honeyNativeState:n}){let{collateralList:i}=n??{};if(!i)throw new B({message:"Invalid Honey Context state",property:"collaterals",value:i,expected:"TokenWithOrder[]"});A(s),this.assertChainSupport({tokenIn:o,tokenOut:t});let l=w(t,this.honeyToken),u=i,d=i.find(I=>w(I.address,l?o.address:t.address));if(!d)throw new L({message:"This collateral is not part of the Honey protocol"});let[p,m]=await Promise.all([me({client:s,collateralList:[d]}),ce({client:s,isMint:l,collateralList:i,latestPrices:void 0,isPythWrapperEnabled:!1})]);if(!p)throw new L({message:"Failed to fetch the Honey vault balances"});if(m)return;let c=p[0],f=d.order;u.length>1&&f!==0&&(u.splice(f,1),u.unshift(d));let y=Ko(BigInt(r),l?d.decimals:this.honeyToken.decimals),g={client:s,collateral:d,collateralList:i,amount:y,method:Ts(l),latestPrices:void 0,isPythWrapperEnabled:!1},b=await Wt(g);if(!b)throw new L({message:"Failed to fetch the Honey preview"});let{honey:R,collaterals:h}=b;if(!(l?!0:new P(c?.balance.formatted??"0").gte(Ko(h[d.address],d.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 L({message:"Failed to fetch the Honey swap payload"});return{amountIn:r,amountOut:l?R.toString():h[d.address].toString(),allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:"Honey",swapFeeBps:0,getCalldata:({account:I})=>k({account:I})}}},et=new Xe;import{zeroAddress as Es}from"viem";import{ChainId as xs}from"@berachain/config/internal";import Ss from"@berachain/abis/meta-aggregator/metaAggregatorV2";var tt=class extends S{name="KyberSwap";supportedChains=[xs.MAINNET];type="rest";notFoundMessages=["token not found","route not found","amountIn is greater than max allowed"];async getQuote({tokenIn:o,tokenOut:t,amount:r,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:n=!1,rewardVault:i}){this.assertChainSupport({tokenIn:o,tokenOut:t});let{isTokenInNative:l,isTokenOutNative:u,tokenInAddress:d,tokenOutAddress:p}=this.parseAddresses(o.address,t.address),m=this.getAmountAfterFees(r,a);this.url=n?"/api/aggregators?aggregator=kyberswapRoutes":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/routes`;let c=new URL(this.url);c.searchParams.set("tokenIn",d),c.searchParams.set("tokenOut",p),c.searchParams.set("amountIn",m),c.searchParams.set("slippageTolerance",(s/100).toString()),c.searchParams.set("to",this.config.bex.aggregatorsRouterExecutor),c.searchParams.set("clientData",JSON.stringify({source:"berachain"}));let y=await(await this.fetch(c)).json(),g={amountOut:y.data.routeSummary.amountOut,amountIn:r,name:this.name,swapFeeBps:a,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,rawAmount:r,spender:this.config.bex.aggregatorsRouter})},b={routeSummary:y.data.routeSummary,sender:this.config.bex.aggregatorsRouterExecutor,recipient:this.config.bex.aggregatorsRouterExecutor,slippageTolerance:s*100,deadline:Math.floor(Date.now()/1e3)+300,source:"berachain"},R=c.searchParams.entries(),h=new URL(n?"/api/aggregators?aggregator=kyberswapBuild":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/route/build`);for(let[T,x]of R)h.searchParams.set(T,x);let k=await(await this.fetch(h,{method:"POST",body:JSON.stringify(b)})).json(),I=this.getInputData({tokenIn:d,amountIn:r,isNative:l});return{...g,getCalldata:({account:T})=>{let x={tokenOut:p,receiver:T,minAmountOut:this.getMinAmountOut(g.amountOut,s),isNative:u},v={aggregator:k.data.routerAddress,data:k.data.data};return{params:[I,x,v,{rewardVault:i??Es,isSwapAndStake:!!i}],functionName:"swap",abi:Ss,value:BigInt(l?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},ot=new tt;import{zeroAddress as Bs}from"viem";import{ChainId as Os}from"@berachain/config/internal";import vs from"@berachain/abis/meta-aggregator/metaAggregatorV2";var rt=class extends S{name="Oogabooga";supportedChains=[Os.MAINNET];type="rest";async getQuote({tokenIn:o,tokenOut:t,amount:r,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:n=!1,rewardVault:i}){this.assertChainSupport({tokenIn:o,tokenOut:t});let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:d,isTokenOutNative:p}=this.parseAddresses(o.address,t.address),m=this.getAmountAfterFees(r,a),c=new URLSearchParams({tokenIn:l,tokenOut:u,amount:m,slippage:(s/100).toString(),to:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter});this.url=n?`/api/aggregators?aggregator=oogabooga&${c.toString()}`:`${this.config.bex.aggregatorsProxyUrl}/oogabooga/v1/swap?${c.toString()}`;let y=await(await this.fetch(this.url)).json(),g={amountOut:y.assumedAmountOut,amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,spender:this.config.bex.aggregatorsRouter,rawAmount:r}),name:this.name,priceImpactPercentage:y.priceImpact,swapFeeBps:a};return{...g,getCalldata:({account:b})=>{let R=this.getInputData({tokenIn:l,amountIn:r,isNative:d}),h={tokenOut:u,receiver:b,minAmountOut:this.getMinAmountOut(g.amountOut,s),isNative:p},C={aggregator:y.tx?.to,data:y.tx?.data};return{params:[R,h,C,{rewardVault:i??Bs,isSwapAndStake:!!i}],functionName:"swap",abi:vs,value:BigInt(d?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},st=new rt;import{zeroAddress as $o}from"viem";import{ChainId as zo}from"@berachain/config/internal";import Ds from"@berachain/abis/meta-aggregator/metaAggregatorV2";var at=class extends S{name="OpenOcean";supportedChains=[zo.MAINNET];type="rest";url="https://open-api.openocean.finance/v4/bera/swap";notFoundMessages=["No avail liquidity for the pair"];async getQuote({tokenIn:o,tokenOut:t,amount:r,slippage:s,account:a=$o,aggregatorsFeeBps:n,publicClient:i,rewardVault:l}){if(A(i),!o.decimals)throw new B({property:"tokenIn.decimals",value:o.decimals,expected:"number",chainId:this.chainId});this.assertChainSupport({tokenIn:o,tokenOut:t});let u=this.getAmountAfterFees(r,n),{tokenInAddress:d,tokenOutAddress:p,isTokenInNative:m,isTokenOutNative:c}=this.parseAddresses(o.address,t.address),f=(await i.getGasPrice()).toString(),y=new URLSearchParams({chain:zo.MAINNET.toString(),inTokenAddress:d,outTokenAddress:p,amountDecimals:u,slippage:s<.01?"0.01":s.toString(),account:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter,gasPrice:f}),g=await this.fetch(`${this.url}?${y.toString()}`),b=await g.json();if(b.code!==200||!b.data){let h=this.notFoundMessages.some(C=>b.error.includes(C));throw new J({response:g,endpoint:{url:this.url,name:this.name,type:this.type},cause:b,reason:h?S.PATH_NOT_FOUND_REASON:b.error})}let R={amountOut:b.data.outAmount,amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:n};return{...R,getCalldata:({account:h})=>{let C=this.getInputData({tokenIn:d,amountIn:r,isNative:m}),k={tokenOut:p,receiver:h,minAmountOut:this.getMinAmountOut(R.amountOut,s),isNative:c},I={aggregator:b.data.to,data:b.data.data};return{params:[C,k,I,{rewardVault:l??$o,isSwapAndStake:!!l}],functionName:"swap",abi:Ds,value:BigInt(m?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},nt=new at;import{ChainId as Zo}from"@berachain/config/internal";import{wberaAbi as jo}from"@berachain/abis/wbera";var it=class extends S{name="Wrap";supportedChains=[Zo.MAINNET,Zo.BEPOLIA];type="rpc";checkChainSupport({tokenIn:o,tokenOut:t}){return o.chainId!==t.chainId||!super.checkChainSupport({tokenIn:o,tokenOut:t})?!1:w(o,"BERA")&&w(t,"WBERA")||w(o,"WBERA")&&w(t,"BERA")}async getQuote({tokenIn:o,tokenOut:t,amount:r}){this.assertChainSupport({tokenIn:o,tokenOut:t});let s=w(o,"BERA")&&w(t,"WBERA");return{amountOut:r,amountIn:r,allowanceRequirements:[],name:s?"Wrap":"Unwrap",isNativeSwap:!0,swapFeeBps:0,getCalldata:()=>s?{abi:jo,address:this.config.tokens.wbera,functionName:"deposit",params:[],value:BigInt(r)}:{abi:jo,address:this.config.tokens.wbera,functionName:"withdraw",params:[BigInt(r)],value:BigInt(0)}}}},lt=new it;import Us from"swr/immutable";import{useConfig as Ns}from"@berachain/wagmi/hooks";import{getPublicClient as Ls}from"@wagmi/core";import{erc4626Abi as Hs}from"viem";async function Jo({token:e,wagmiConfig:o}){try{if(w(e,"BERA"))return null;let t=Ls(o,{chainId:e.chainId});A(t);let r=await t.readContract({address:e.address,abi:Hs,functionName:"asset"});return z({address:r,publicClient:t,chainId:e.chainId})}catch(t){let r=Et({cause:t});if(r.reason==='The contract function "asset" reverted.')return null;throw r}}function Xo({token:e}){let o=Ns();return Us(e&&o&&!w(e,"BERA")?["useUnderlyingAsset",e]:null,async([,t])=>Jo({token:t,wagmiConfig:o}))}import Vs from"swr/immutable";import{zeroAddress as Ws}from"viem";import Ms from"@berachain/abis/meta-aggregator/metaAggregatorV2";import{usePublicClient as Qs}from"@berachain/wagmi/hooks";var Re=()=>{let e=Qs(),{config:o}=E({chainId:e.chain?.id}),t=Vs(e&&o.bex.aggregatorsRouter&&o.bex.aggregatorsRouter!==Ws?["useAggregatorsRouterFeeBps",o.bex.aggregatorsRouter]:null,async([,r])=>{let s=await e.readContract({address:r,abi:Ms,functionName:"SWAP_FEE_RATE"});return Number(s)});return{...t,refresh:t.mutate}};import _s from"swr";import{parseUnits as Ys,zeroAddress as Fs}from"viem";import{useBeraWallet as Gs,usePublicClient as qs}from"@berachain/wagmi/hooks";var er="useAggregatorsQuotes";function Ks({aggregator:e,account:o,args:t,feeBps:r,options:s,activeAggregators:a,isMAEnabled:n}){if(s?.opts?.isEnabled!==void 0&&!s?.opts?.isEnabled||!Number(t.amount)||!e.checkChainSupport({tokenIn:t.tokenIn,tokenOut:t.tokenOut,underlyingToken:t.underlyingToken,honeyNativeState:t.honeyNativeState}))return null;let i=e.name,l=!["Hub Pools","Honey","Wrap","Unwrap","Mint"].includes(i);if(!n&&l)return null;let{tokenIn:u,tokenOut:d,amount:p,slippage:m,referrer:c,rewardVault:f}=t,y=Ys(p,u.decimals).toString();if(!(e.name==="Wrap"||e.name==="RedeemBgt"||e.name==="Honey"||!a||a.includes(i.toLowerCase().replaceAll(" ","")))||e.name==="Honey"&&t.honeyNativeState?.protocol.isPaused)return null;let b=e.name==="Mint"||e.name==="Enso (Mint)";return l&&r===void 0?null:[er,i,u,d,y,m,e.needsAccountForQuote?o:void 0,l?r:0,c,f,b?t.underlyingToken:void 0,e.name==="Honey"?t.honeyNativeState?.collateralList:void 0]}function $s({aggregator:e,publicClient:o,proxyAggregatorsThroughVercel:t}){return async([,,r,s,a,n,i,l,u,d,p,m])=>e.getQuote({tokenIn:r,tokenOut:s,amount:a,slippage:n,account:i,aggregatorsFeeBps:l,publicClient:o,proxyAggregatorsThroughVercel:t,referrer:u,rewardVault:d,underlyingToken:p,honeyNativeState:{collateralList:m??[]}})}function M({feeBps:e,publicClient:o,account:t,proxyAggregatorsThroughVercel:r,activeAggregators:s,isMAEnabled:a,...n},i){return _s(Ks({aggregator:n.aggregator,account:t,args:n,feeBps:e,options:i,activeAggregators:s,isMAEnabled:a}),$s({aggregator:n.aggregator,proxyAggregatorsThroughVercel:r,publicClient:o}),i?.opts)}function ut(e){return{refreshInterval:1e4,errorRetryCount:3,...e?.opts,onErrorRetry(o,t,r,s,a){if(e?.opts?.onErrorRetry?.(o,t,r,s,a),!(o instanceof L&&o.reason===S.PATH_NOT_FOUND_REASON)){if(o instanceof J&&o.statusCode===403){console.warn(t[1],"returned error 403, stopping retries");return}a.retryCount>(r.errorRetryCount??3)||setTimeout(()=>{s()},r.errorRetryInterval??fe(10))}}}}function zs(e,o){let{address:t}=Gs(),r=W("proxyAggregatorsThroughVercel"),s=W("aggregators"),a=qs(),{data:n}=Re();if(e.aggregator.name!=="Wrap"&&!((w(e.tokenIn.address,"BERA")||w(e.tokenIn.address,"WBERA"))&&(w(e.tokenOut.address,"BERA")||w(e.tokenOut.address,"WBERA"))))return null;let{config:i}=E(e),l=i.bex.aggregatorsRouter!==Fs;return M({...e,aggregator:e.aggregator,feeBps:n,activeAggregators:s,account:t,isMAEnabled:l,publicClient:a,proxyAggregatorsThroughVercel:r},{...o,opts:ut(o)})}var ta=[st,Ze,ot,nt,Je,qe,Ye,et,$e];function Ic(e,o){let{address:t}=Xs(),r=W("proxyAggregatorsThroughVercel"),s=W("aggregators"),a=ea(),{data:n}=Re(),i=(w(e.tokenIn.address,"BERA")||w(e.tokenIn.address,"WBERA"))&&(w(e.tokenOut.address,"BERA")||w(e.tokenOut.address,"WBERA")),l=w(e.tokenIn.address,"BGT",{chainId:Js}),{data:u}=Xo({token:e.tokenOut}),d=i||l,{config:p}=E(e),m=p.bex.aggregatorsRouter!==js,c=ut(o),f={activeAggregators:s,isMAEnabled:m,underlyingToken:u,isNativeSwap:d,account:t,publicClient:a,proxyAggregatorsThroughVercel:r,feeBps:n},y=M({...f,...e,aggregator:st},{opts:c}),g=M({...f,...e,aggregator:Ze},{opts:c}),b=M({...f,...e,aggregator:$e},{opts:c}),R=M({...f,...e,aggregator:ot},{opts:c}),h=M({...f,...e,aggregator:nt},{opts:c}),C=M({...f,...e,aggregator:Je},{opts:c}),k=M({...f,...e,aggregator:qe},{opts:c}),{protocol:I}=Me(),T=M({...f,...e,aggregator:Ye},{opts:{...c,isEnabled:I.isPaused===!1}}),x=M({...f,...e,aggregator:lt}),v=M({...f,...e,aggregator:_o},{opts:c}),H=M({...f,...e,aggregator:et},{opts:c}),O=i?[x]:l?[v]:[y,b,g,R,h,C,k,H,I.isPaused===!1?T:null].filter(Q=>Q!==null);return{...Zs(()=>{let Q=O.reduce((D,G)=>D||G.error,void 0),q=O.map((D,G)=>D.isLoading?d?lt.name:ta[G].name:null).filter(Boolean),Y=O.filter(D=>D!==void 0&&!D.isLoading&&!D.error&&D.data?.amountOut).map(({data:D})=>D),F=Y.length===0&&q.length>0;return{quotes:Y,loadingAggregatorsNames:q,isLoading:F,error:Q}},[O]),refresh:()=>O.map(Q=>Q.mutate())}}import oa from"swr";var ra=({query:e}={})=>["useAllUserPools",e],tr=(e,o)=>{let t=oa(ra({query:e}),async([r,s])=>de({...s,fetchPolicy:"no-cache"}),{refreshInterval:18e4,...o?.opts});return{...t,refresh:()=>{t.mutate()}}};import sa from"swr";import{isAddress as aa}from"viem";var na=({poolId:e,account:o})=>e?["usePool-api",e,o]:null;function or({poolId:e,account:o}){let t=sa(na({poolId:e,account:o}),async([,r,s])=>{if(s&&!aa(s))throw new B({property:"account",value:s,expected:"Address"});return St({poolId:r,account:s})},{refreshInterval:1e5});return{...t,refresh:()=>{t.mutate()}}}import{useMemo as nr}from"react";import{PoolType as we}from"@berachain-foundation/berancer-sdk";import la from"swr/immutable";import{formatUnits as ua,keccak256 as pa,parseUnits as ke,zeroAddress as dt}from"viem";import{poolCreationHelperAbi as ir}from"@berachain/abis/bex/poolCreationHelper";import{GetDedupedSubgraphPools as da}from"@berachain/graphql/dex/subgraph";import{PoolType as rr}from"@berachain-foundation/berancer-sdk";import{formatUnits as ia}from"viem";var pt=e=>[...e].sort((o,t)=>o.address.toLowerCase().localeCompare(t.address.toLowerCase())),sr=e=>e.length===0?"":pt(e).map(o=>o.symbol).join(" | "),ar=(e,o,t)=>{let r;return t===rr.ComposableStable?r="STABLE":r=t.toString().toUpperCase(),t===rr.Weighted?o.length===0?"":`${pt(e).map((s,a)=>{let n=o[a];return`${(Number.parseFloat(ia(n,18))*100).toFixed(0)}${s.symbol}`}).join("-")}-${r}`:`${pt(e).map(s=>s.symbol).join("-")}-${r}`};var ma=.005,ca=(t=>(t.None="None",t.Custom="Custom",t))(ca||{}),fa=({poolCreationHelper:e,poolCreateTokens:o,initialLiquidityTokens:t,swapFeePercentage:r,salt:s,poolName:a,poolSymbol:n,owner:i,amplification:l,oracles:u,message:d,actionType:p,gasLimit:m=Ue})=>{let c=o.map(k=>k.address.toLowerCase()).sort((k,I)=>k<I?-1:1),f=c.map(k=>{let I=t.find(O=>O.address.toLowerCase()===k||w(k,"WBERA")&&w(O.address,"BERA")),T=I?ke(I.amount,I.decimals):0n,x=u.find(O=>O.tokenAddress.toLowerCase()===k.toLowerCase()),v=x?x.address:dt,H=BigInt(x?x.cacheDuration:100);return{amountIn:T,rateProvider:v,cacheDuration:H}}),y=f.map(k=>k.amountIn),g=f.map(k=>k.rateProvider),b=f.map(k=>k.cacheDuration),R=t.findIndex(k=>w(k.address,"BERA")),h=R!==-1?ke(t[R].amount,t[R].decimals):0n,C=h>0n;return{address:e,abi:ir,functionName:"createAndJoinStablePool",params:[a,n,c,BigInt(l),g,b,!1,r,y,i,s,C],message:d,actionType:p,value:h,gasLimit:m,track:{eventName:"hub_pool_create",eventData:{poolName:a,poolSymbol:n}}}},ga=({poolCreationHelper:e,poolCreateTokens:o,initialLiquidityTokens:t,normalizedWeights:r,swapFeePercentage:s,salt:a,poolName:n,poolSymbol:i,owner:l,message:u,actionType:d,gasLimit:p=Ue})=>{let m=[],c=[],f=[],y=[];o.map((R,h)=>({createToken:R.address,joinToken:t[h].address,weight:r[h],amountIn:ke(t[h].amount,t[h].decimals)})).sort((R,h)=>R.createToken.toLowerCase()<h.createToken.toLowerCase()?-1:1).forEach(R=>{m.push(R.createToken),c.push(R.joinToken),f.push(R.weight),y.push(R.amountIn)});let g=c.indexOf(dt),b=g!==-1?y[g]:0n;return{address:e,abi:ir,functionName:"createAndJoinWeightedPool",params:[n,i,m,c,f,Array(m.length).fill(dt),s,y,l,a],message:u,actionType:d,value:b,gasLimit:p,track:{eventName:"hub_pool_create",eventData:{poolName:n,poolSymbol:i}}}},zc=({poolCreateTokens:e,initialLiquidityTokens:o,normalizedWeights:t,poolType:r,poolName:s,poolSymbol:a,swapFee:n,owner:i,amplification:l,oracles:u,weightsDuplicationThreshold:d=ma,...p})=>{let{data:m,error:c,isLoading:f}=la(["useCreatePool__deduped_pool",e,r,t],async()=>{if(e.length===0||!r)return null;let R=le("bex.subgraph",{});try{let h=be(e).map(I=>I.address.toLowerCase()).sort((I,T)=>I.toLowerCase()<T.toLowerCase()?-1:1);return(await R.query({query:da,variables:{tokens:h,type:r}})).data.pools.filter(I=>I.tokens?.every(T=>r===we.Weighted?h.includes(T.address)&&Math.abs(Number(T.weight)-Number(ua(t[h.indexOf(T.address)],18)))<d:h.includes(T.address)||T.address===I.address))?.at(0)??null}catch{return null}}),{generatedPoolName:y,generatedPoolSymbol:g}=nr(()=>{if(!e)return{generatedPoolName:"",generatedPoolSymbol:""};let R=sr(e),h=ar(e,t,r);return{generatedPoolName:R,generatedPoolSymbol:h}},[e,t,r]),b=nr(()=>{if(!i||s===""||a===""||e.length!==o.length||e.length===0)return null;let R=ke(n.toString(),16),h=pa(Buffer.from(`${s}-${i}`)),{config:C}=E(p);return r===we.Weighted?ga({poolCreationHelper:C.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:o,normalizedWeights:t,swapFeePercentage:R,salt:h,poolName:s,poolSymbol:a,owner:i,message:`Create pool ${s}`,actionType:"Create Pool"}):r===we.ComposableStable||r===we.MetaStable?fa({poolCreationHelper:C.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:o,swapFeePercentage:R,salt:h,poolName:s,poolSymbol:a,owner:i,amplification:l,oracles:u,message:`Create pool ${s}`,actionType:"Create Pool"}):null},[e,o,t,r,n,s,a,i,l,u]);return{generatedPoolName:y,generatedPoolSymbol:g,isDupePool:!!m,dupePool:m,createPoolArgs:b,isLoadingPools:f,errorLoadingPools:c}};import Ra from"swr";import{usePublicClient as wa}from"@berachain/wagmi/hooks";import{erc20Abi as ya,formatUnits as Aa}from"viem";import{GetExploitedTokens as ha}from"@berachain/graphql/dex/subgraph";var ba=1e-4;async function lr({token:e,publicClient:o,...t}){let r=le("bex.subgraph",t),s=await o.readContract({address:e.address,abi:ya,functionName:"totalSupply"}),a=P(Aa(s,e.decimals)).multipliedBy(ba),{data:n}=await r.query({query:ha,variables:{token:e.address,balance:a.toFixed()}});return n.userInternalBalances.length>0}var ka=e=>{let o=e?.filter(t=>t.address);return!o||o.length===0?null:["useExploitedTokens",o]},nf=({tokens:e})=>{let o=ka(e),t=wa(),r=Ra(t?o:null,async([,s])=>(A(t),(await Promise.all(s.map(n=>lr({token:n,publicClient:t})))).reduce((n,i,l)=>(i!==void 0&&(n[s[l].address]=i),n),{})));return{...r,refresh:()=>r.mutate()}};import Ca from"swr";var Ia=()=>{let e=Ca("useGlobalLiquidityAndSwapVolume",async()=>Bt());return{...e,data:{totalLiquidity:Number(e.data?.protocolMetricsAggregated.totalLiquidity),swapVolume24h:Number(e.data?.protocolMetricsAggregated.swapVolume24h)},refresh:()=>e.mutate()}};import{useEffect as Pa,useState as Ta}from"react";import{PoolType as ne}from"@berachain-foundation/berancer-sdk";var Ea=.05,gf=({currentStep:e,tokenPrices:o,isLoadingTokenPrices:t,tokens:r,weights:s,weightsError:a,poolType:n,liquidityMismatchTolerancePercent:i=Ea,oracles:l})=>{let[u,d]=Ta({title:null,message:null});return Pa(()=>{if(!o||t||!r||!s||a||r.some(h=>!h.address)||l.some(h=>h.mode==="Custom")){d({title:null,message:null});return}let p=0,m=[],c=r.length,y=be(r).map(h=>{let C=o[h.address.toLowerCase()]?.price??0;if(!C||C===0)return m.push(0),null;let k=C*Number.parseFloat(h.amount);return m.push(k),p+=k,C});if(y.some(h=>h===null)||y.length!==c){d({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
2
  weightings and your initial liquidity amounts.`});return}if(e==="Select Tokens"&&n===ne.ComposableStable){let h=y.map(k=>k/y[0]);Math.max(...h)-Math.min(...h)>i?d({title:"Selected tokens have a significant price deviation",message:"Did you mean to create a Weighted pool instead?",suggestWeighted:!0}):d({title:null,message:null});return}if(p===0||m.some(h=>h===0)){d({title:null,message:null});return}let g=0;if(n===ne.ComposableStable){let h=p/c;m.forEach(C=>{g+=Math.abs(h-C)})}else n===ne.Weighted&&m.forEach((h,C)=>{let k=Number(s[C])/1e18,I=p*k;g+=Math.abs(I-h)});let b=g>=p*.9;g=Math.min(g,p);let R=g/p;R>i?d({title:b?"You could lose all of your initial liquidity":`You could lose $${g.toFixed(2)} (~${(R*100).toFixed(2)}%)`,message:`Based on the market token prices, the value of tokens does not align with the specified pool weights.
3
3
  This discrepancy could expose you to potential losses from arbitrageurs. ${n===ne.ComposableStable?"Did you mean to create a Weighted pool instead?":""}`,suggestWeighted:n===ne.ComposableStable}):d({title:null,message:null})},[e,o,t,r,s,a,n,i,l]),u};import{formatEther as cr,isAddressEqual as ja}from"viem";import Da from"swr";import{isAddress as ur,zeroAddress as La}from"viem";import{rewardVaultAbi as Ha}from"@berachain/abis/pol/rewards/rewardVault";import{useBeraWallet as Ua,usePublicClient as Na}from"@berachain/wagmi/hooks";import xa from"swr/immutable";import{isAddress as Sa,zeroAddress as Ba}from"viem";import{rewardVaultFactoryAbi as Oa}from"@berachain/abis/pol/rewards/rewardVaultFactory";import{usePublicClient as va}from"@berachain/wagmi/hooks";var mt=({tokenAddress:e},{isEnabled:o=!0}={})=>{let t=va(),r=t&&e&&Sa(e)&&o?["useRewardVaultFromToken",e]:null,s=xa(r,async([,a])=>{if(!a)throw new Error("useRewardVaultFromToken needs a valid token address");A(t);let{config:n}=E({chainId:t.chain.id}),i=await t.readContract({address:n.pol.factory,abi:Oa,functionName:"getVault",args:[a]});return i===Ba?void 0:i});return{...s,refresh:()=>s.mutate()}};var pr=({stakingToken:e,rewardVaultAddress:o},t)=>{let{address:r}=Ua(),s=Na(),a=t?.opts?.isEnabled??!0,{data:n=o,error:i,mutate:l,isLoading:u}=mt({tokenAddress:e},{isEnabled:!o&&a}),d=Da(n&&r&&s&&ur(n)&&ur(r)&&a?["useVaultBalanceFromStakingToken",n,r]:null,async([,p,m])=>{if(A(s),p===La)return{address:p,balance:0n};let c=await s.readContract({address:p,abi:Ha,functionName:"balanceOf",args:[m]});return{address:p,balance:c}});return{...d,refresh:()=>{l(),d.mutate()},isLoading:d.isLoading||u}};import Ya from"swr";import{erc20Abi as Fa,formatEther as Ga,formatUnits as qa,isAddress as mr,zeroAddress as Ka}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 Qa}from"@berachain/config/internal";import{usePublicClient as _a}from"@berachain/wagmi/hooks";function dr(e,o){let t=_a({chainId:e.chainId}),r=e?.address&&t&&Wa(e.address)?["useTokenInformation",e.address,e.chainId]:null,s=Va(r,async([a,n,i=Qa])=>w(n,"BERA")?{address:Ma,decimals:N.decimals,name:N.name,symbol:N.symbol,chainId:i}:(A(t),await z({address:n,publicClient:t,chainId:i})),{...o?.opts});return{...s,refresh:()=>s?.mutate?.()}}function Ce({address:e,owner:o,chainId:t=$a},r){let s=e;w(s,"ETH")&&(s=Ka);let a=Za({chainId:t}),{address:n}=za(),i=o??n,l=(r?.opts?.isEnabled??!0)&&a&&i&&mr(i)&&s&&mr(s)?["usePollBalance",i,s,t]:null,{data:u,isLoading:d}=dr({address:s,chainId:t}),p=w(s,"BERA"),{isLoading:m,data:c,error:f,...y}=Ya(l,async([,R,h])=>(A(a),w(h,"BERA")?await a.getBalance({address:R}):await a.readContract({address:h,abi:Fa,functionName:"balanceOf",args:[R]})),{refreshInterval:1e4}),g=!f&&c?w(s,"BERA")?Ga(c):u&&!d?qa(c,u.decimals):void 0:void 0,b={chainId:t,balance:c?{raw:c.toString(),formatted:g??"0"}:{raw:"0",formatted:"0"},address:s,decimals:p?N.decimals:u?.decimals??0,symbol:p?N.symbol:u?.symbol??"",name:p?N.name:u?.name??""};return{...y,refresh:()=>{y.mutate()},isLoading:m||p?d:!1,error:f||!p?f:void 0,data:b}}var jf=({pool:e,vaultAddress:o},t)=>{let{data:r,...s}=Ce({address:e?.address}),{data:a,refresh:n}=pr({stakingToken:e?.address,rewardVaultAddress:o??e?.rewardVault?.vaultAddress},t),i=e?Number.parseFloat(e?.dynamicData?.totalShares??"0"):0,l=e?.dynamicData?.totalLiquidity?Number(e?.dynamicData?.totalLiquidity??0):null,u=i&&l?l/Number(i):0,d=e?.tokens?.map(p=>({address:p.address,ratio:i?Number(p.balance)/Number(i):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 m=d?.find(y=>ja(y.address,p.address))?.ratio??0,c=m?P(r?.balance.formatted??"0").times(m):P(0),f=Number(p.balanceUSD)/Number(p.balance);return{...p,balance:{raw:c?.isGreaterThan(0)?c.times(10**p.decimals).toFixed(0).toString():"0",formatted:c.toString()},price:f,usdValue:Number.isNaN(f)||!c?void 0:Number.parseFloat(c.toString())*f}}),stakedBalance:a?.address?{...a,balance:{raw:a.balance.toString(),formatted:cr(a.balance)},usdValue:Number(cr(a.balance))*u}:void 0},...s,refresh:()=>{s.refresh?.(),n()}}};import{useMemo as gr}from"react";import{parseUnits as tn,zeroAddress as on}from"viem";import Ja from"swr";import{useBeraWallet as Xa,useConfig as en}from"@berachain/wagmi/hooks";function fr(e,o){let t=en(),{address:r}=Xa(),s=t&&r&&e?.items?["usePollAllowances",r,e?.items]:null,a=Ja(s,async([,n,i])=>co({items:i,account:n,config:t}),{...o?.opts,refreshInterval:o?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a?.mutate?.()}}function rn({amount:e,decimals:o,slippage:t}){let r=tn((t??0).toString(),o);return e+e*r/BigInt(100*10**o)}function sn(e,o){let{slippage:t}=o??{},r=gr(()=>e.filter(l=>l.token.address!==on).filter(l=>P(l.amount.formatted).gt(0)),[e]),{data:s,refresh:a,isLoading:n}=fr({items:r});return{needsApproval:gr(()=>s?.map(l=>{let u=r.find(p=>w(p.token.address,l.token));if(!u)throw new L({message:"Token not found when matching allowance in useMultipleTokenApprovalsWithSlippage",cause:{allowance:l,items:r}});let d=rn({decimals:u.token.decimals,amount:BigInt(u.amount.raw),slippage:t});if(P(l.allowance.raw).lt(d))return{...u,needsApproval:!0,maxAmountIn:d,allowance:{raw:l.allowance.raw,formatted:l.allowance.formatted}}}).filter(l=>l!==void 0)??[],[s,t,r]),refresh:a,isLoading:n}}import{useMemo as fn}from"react";import gn from"swr/immutable";import{formatUnits as yn,isAddress as An}from"viem";import{usePublicClient as hn}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 yr(e,o){let t=un(),r=t&&e.addresses?["useMultipleTokenInformation",e.addresses,e.chainId??ln]:null,s=an(r,async([,a,n])=>(A(t),Promise.all(a.map(async i=>{if(!i||!nn(i,{strict:!1}))throw new Error("Invalid address");let l=await z({address:i,publicClient:t,chainId:n});if(!l)throw new Error(`Token ${i} not found`);return l}))),{...o?.opts});return{...s,refresh:()=>s?.mutate?.()}}import{useMemo as Ie}from"react";import dn from"swr";import{isAddress as mn,zeroAddress as cn}from"viem";import{defaultChainId as te}from"@berachain/config/internal";import{useContext as pn}from"react";function ee(){let e=pn(Lo);if(!e)throw new L({message:"useTokens must be used within a TokensProvider",level:"fatal"});return{...e,data:{tokenList:e.tokenList,customTokenList:e.userTokens,featuredTokenList:e.featuredTokens}}}function oe({addressIn:e}={},o={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{tokenList:t,ensoTokens:r}=ee(),s=Ie(()=>{let p=[];return e&&p.push(...e.filter(m=>mn(m))),p.map(m=>m.toLowerCase())},[t]),n=Ie(()=>{let p=new Set(t?.map(m=>m.address.toLowerCase()));return t.some(m=>w(m,"WBERA"))&&p.add(cn),s?.some(m=>!p.has(m))},[s,t])?s:t.map(p=>p.address),i=n&&(o.opts?.isEnabled??!0)?["useTokenCurrentPrices",n.map(p=>p.toLowerCase())]:null,l=dn(i,async([,p])=>mo({addressIn:p}),o.opts),u=Ie(()=>{if(!r)return{};let p=new Map([[te,new Map]]);for(let m of r)m.price===void 0||m.chainId!==te||p.get(te)?.set(m.address.toLowerCase(),{...m,price:m.price,chainId:te});return Object.fromEntries(n.map(m=>{let c=p.get(te)?.get(m)?.price;return c?[m.toLowerCase(),{price:c,chainId:te,updatedAt:Date.now()}]:[null,null]}))},[r]),d=Ie(()=>({...u,...l.data}),[u,l.data]);return{...l,data:d}}function bn(e){let o="poolId"in e?e.poolId?.slice(0,42):e.address;return An(o)&&o?["useOnChainPoolData",o]:null}function Ar(e){let o=hn(),t=e?.slice(0,42),r=bn({poolId:e}),{data:s,error:a,isLoading:n,mutate:i}=gn(o?r:null,async([,c])=>Ot({poolId:c,publicClient:o})),{data:l,isLoading:u}=yr({addresses:s?.poolTokens[0]}),{data:d,isLoading:p}=oe({addressIn:s?.poolTokens[0]});return{data:fn(()=>{if(!s||!l)return;let c={address:t.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,g)=>({address:y.address.toLowerCase(),name:y.name,decimals:y.decimals,symbol:y.symbol,index:g,weight:s.weights?.[g]??void 0,balance:yn(BigInt(s.poolTokens[1][g]),y.decimals),token:{__typename:"Token",token:y,latestUSDPrice:d?.[y.address]}})),amplificationParameter:s?.amplificationParameter&&{currentFormattedValue:Number(s.amplificationParameter[0])/Number(s.amplificationParameter[2])}},f=c.tokens?.reduce((y,g)=>{let b=Number(d?.[g.address.toLowerCase()]?.price??0);return b?y+b*Number(g.balance):y},0);return c.totalLiquidity=f?.toString()??"",c},[s,l,d,t,e]),error:a,isLoading:n||u||p,mutate:i,refresh:()=>i()}}import Rn from"swr";import{vaultAbi as wn}from"@berachain/abis/bex/vault";import{useBeraWallet as kn,usePublicClient as Cn}from"@berachain/wagmi/hooks";var In=e=>{let{address:o}=kn(),t=Cn(),r=o&&t?["usePollPoolCreationRelayerApproval",o,t.chain.id]:null,s=Rn(r,async([,n])=>{A(t);let{config:i}=E({chainId:t.chain.id});return await t.readContract({address:i.bex.vault,abi:wn,functionName:"hasApprovedRelayer",args:[n,i.bex.poolCreationHelper]})},{...e?.opts});return{...s,refreshPoolCreationApproval:()=>{s.mutate()}}};function Gg({poolId:e}){let o=or({poolId:e}),{data:t,isLoading:r,refresh:s,error:a}=Ar(e);return{data:[void 0,o.data,t],isLoading:o.isLoading||r,isError:o.error||a,refresh:()=>{o.refresh(),s()}}}import Pn from"swr/immutable";var zg=({poolId:e,typeInArray:o})=>Pn(e?["usePoolEvents",e,o]:null,async([,t,r])=>vt({poolId:t,typeInArray:r}),{refreshInterval:18e4});import Tn from"swr";var ey=({poolId:e,...o},t)=>{let{config:r}=E(o),a=Tn(e?["usePoolHistoricalData",e]:null,async([,n])=>Dt({poolId:n,chain:r.bex.chainName}),t?.opts);return{...a,refresh:()=>{a.mutate()}}};import{useMemo as hr}from"react";import En from"swr";import{useBeraWallet as xn}from"@berachain/wagmi/hooks";var Sn=({query:e}={})=>["useAllPools",e],iy=(e,o)=>{let{address:t}=xn(),{data:r,isLoading:s,mutate:a}=tr({userAddress:t,chain:e.chain}),{data:n,isLoading:i,mutate:l}=En(Sn({query:e}),async([p,m])=>de(m),{refreshInterval:18e4,...o?.opts}),u=hr(()=>{if(!n||!r?.pools?.length)return n?.pools??[];let p=Object.fromEntries(r.pools.map(m=>[m.id.toLowerCase(),m]));return n.pools.map(m=>({...m,...p[m.id.toLowerCase()]||{}})).filter(Boolean)},[n,r]),d=hr(()=>({page:Math.ceil((e?.skip??0)/(e?.first??10)),pageSize:e?.first,count:Math.ceil((n?.count??0)/(e?.first??10))}),[n,e.skip,e.first]);return{pools:u??[],walletPools:n?.pools??[],isLoading:i||s,refresh:()=>{l(),a()},pagination:d}};import{useMemo as On}from"react";import{useCallback as Bn,useMemo as br}from"react";import{defaultChainId as re}from"@berachain/config/internal";function Z({tokens:e}={},o={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{ensoTokens:t}=ee(),r=oe({addressIn:e?.filter(i=>i.chainId===re).map(i=>i.address)},o),s=br(()=>{let i=[];if(!e)return[];let l=new Map;for(let u of e){let d=u.chainId??re;l.has(d)||l.set(d,new Map),l.get(d)?.set(u.address.toLowerCase(),u)}if(r.data){for(let[u,d]of Object.entries(r.data))if(d&&l.get(d.chainId??re)?.get(u.toLowerCase())&&d.price!==void 0){let p=l.get(d.chainId??re)?.get(u.toLowerCase());if(!p)continue;i.push({...p,chainId:d.chainId,price:d.price})}}if(t)for(let u of t)u.price!==void 0&&u.chainId!==void 0&&i.push({...u,chainId:u.chainId,price:u.price});return i},[r.data,t,e]),a=br(()=>{let i={};for(let l of s){let u=l.chainId??re;i[u]||(i[u]={}),i[u][l.address.toLowerCase()]=l.price}return i},[s]),n=Bn(i=>i?a[i.chainId??re]?.[i.address?.toLowerCase()]??void 0:void 0,[a]);return{isLoading:r.isLoading,data:s,priceMap:a,getTokenPrice:n}}function Pe({tokenIn:e,tokenOut:o,formattedAmountIn:t,formattedAmountOut:r}){let{getTokenPrice:s,isLoading:a}=Z({tokens:e&&o?[e,o]:void 0});return{data:On(()=>{if(!e||!o||!t||!r)return;let i=s(e),l=s(o);return!i||!l?null:Ho(i.toString(),l.toString(),t,r)},[e,o,t,r]),isLoading:a}}import $n from"swr";import{parseUnits as At}from"viem";import{defaultChainId as zn}from"@berachain/config/internal";import{useBeraWagmi as Zn,useBeraWallet as jn,usePublicClient as Jn}from"@berachain/wagmi/hooks";import{formatUnits as Pr}from"viem";import{encodeFunctionData as Un,getAddress as Nn}from"viem";import{morphoAbi as kr}from"@berachain/abis/bend/morpho";import{encodeFunctionData as vn,erc20Abi as ct,ethAddress as gt,formatUnits as Dn,getAddress as Ln,zeroAddress as Hn}from"viem";function j(e){return e===Hn?gt:e}function ft(e){if(e!=null)return typeof e=="bigint"?e:BigInt(e)}async function Rr({fromAddress:e,amountIn:o,tokenIn:t,chainId:r,ensoClient:s,bundle:a,publicClient:n}){let i=[];if(t!==gt){let u=await s.getApprovalData({fromAddress:e,tokenAddress:t,chainId:r,amount:o}),d=!0;if(n&&(d=await n.readContract({address:t,abi:ct,functionName:"allowance",args:[e,u.spender]})<BigInt(o)),d){let p=ft(u.tx.value)??0n;i.push({to:u.tx.to,data:u.tx.data,value:p,gasLimit:BigInt(u.gas)})}}let l=ft(a.tx.value)??0n;return i.push({to:a.tx.to,data:a.tx.data,value:l,gasLimit:BigInt(a.gas)}),i}async function wr({fromAddress:e,amountIn:o,tokenIn:t,bundle:r,publicClient:s}){let a=[],n=Ln(r.tx.to),i=null;if(j(t.address)!==gt){let d=await s.readContract({address:t.address,abi:ct,functionName:"allowance",args:[e,n]}),p=BigInt(o);if(d<p){let c=p.toString();i={token:t,amount:{raw:c,formatted:Dn(p,t.decimals)},spender:n};let f=vn({abi:ct,functionName:"approve",args:[n,p]});a.push({to:t.address,data:f,value:0n})}}let u=ft(r.tx.value)??0n;return a.push({to:r.tx.to,data:r.tx.data,value:u,gasLimit:r.gas?BigInt(r.gas):void 0}),{transactions:a,approval:i}}function ie(e){let o=new P(e).dividedBy(100),t=new P(1).minus(o);if(t.lte(0))throw new B({property:"slippage",value:e,expected:"a value lower than 100"});return t}function yt(e,o,t){return e.multipliedBy(new P(10).pow(t.decimals)).dividedBy(new P(10).pow(o.decimals))}async function Cr({publicClient:e,ensoWalletV2Factory:o,accountAddress:t}){return e.readContract({address:o,abi:Pt,functionName:"getAddress",args:[t]})}async function Ir({publicClient:e,primaryAddress:o,accountAddress:t,ensoWalletV2Address:r}){return e.readContract({address:o,abi:kr,functionName:"isAuthorized",args:[t,r]})}async function Te({fromAddress:e,amountIn:o,tokenIn:t,primaryAddress:r,bundle:s,publicClient:a,ensoWalletV2Address:n,isAuthorized:i}){let{config:l}=E({}),{walletFlashloanAdapter:u}=l.enso;$(u,"config.enso.walletFlashloanAdapter");let{transactions:d,approval:p}=await wr({fromAddress:e,amountIn:o,tokenIn:t,bundle:s,publicClient:a}),m=[];return i||m.push({to:r,data:Un({abi:kr,functionName:"setAuthorization",args:[n,!0]}),value:0n}),m.push(...d),{transactions:m,approvals:p?[p]:[],ensoWalletFlashloanAdapter:Nn(u)}}var Vn=25n,Tr=10000n;function Wn({repayAmount:e,collateralPriceInLoanAsset:o,collateralToken:t,loanToken:r,slippage:s,currentCollateral:a}){let n=ie(s),i=new P(o);if(i.lte(0))throw new B({property:"collateralPriceInLoanAsset",value:o,expected:"a value greater than zero"});let l=new P(10).pow(r.decimals),u=new P(10).pow(t.decimals),m=new P(e).dividedBy(l).dividedBy(i).dividedBy(n).multipliedBy(u).integerValue(P.ROUND_UP);return m.lte(0)?"0":P.minimum(m,new P(a)).toFixed(0)}function Mn({repayAmount:e,collateralToWithdraw:o,collateralToken:t,loanToken:r}){return{finalCollateral:Pr(BigInt(o),t.decimals),totalBorrow:Pr(BigInt(e),r.decimals)}}async function Er({fromAddress:e,repayAmount:o,collateralToken:t,loanToken:r,marketId:s,primaryAddress:a,chainId:n,ensoClient:i,slippage:l,publicClient:u,collateralPriceInLoanAsset:d,currentCollateral:p,currentDebt:m,ensoWalletV2Address:c,isAuthorized:f}){V(e,"fromAddress"),Ne(o,"repayAmount"),Ne(m,"currentDebt");let y=BigInt(o),g=BigInt(m),b=y>=g,R=j(t.address),h=j(r.address),C=(y*Vn+(Tr-1n))/Tr,k=b?C:0n,I=(y+k).toString(),T=Wn({repayAmount:I,collateralPriceInLoanAsset:d,collateralToken:t,loanToken:r,slippage:l,currentCollateral:p}),x=BigInt(T)>=BigInt(p),v=b&&k>0n&&!x;if(BigInt(T)<=0n)throw new B({property:"collateralToWithdraw",value:T,expected:"positive amount"});let H=[{protocol:"enso",action:"route",args:{tokenIn:R,tokenOut:h,amountIn:T,slippage:l*100}},{protocol:"bend",action:"repay",args:{primaryAddress:a,positionId:s,tokenIn:h,amountIn:{useOutputOfCallAt:0},onBehalfOf:e}}],O=H.length,_=v?[{protocol:"enso",action:"balance",args:{token:h}},{protocol:"enso",action:"route",args:{tokenIn:h,tokenOut:R,amountIn:{useOutputOfCallAt:O},slippage:l*100}},{protocol:"bend",action:"deposit",args:{primaryAddress:a,positionId:s,tokenIn:R,amountIn:{useOutputOfCallAt:O+1},onBehalfOf:e}}]:[],Q=[...H,..._,{protocol:"bend",action:"withdraw",args:{primaryAddress:a,positionId:s,tokenOut:R,amountOut:T,onBehalfOf:e}}],Y=[{protocol:"bend",action:"flashloan",args:{flashloanToken:R,flashloanAmount:T,tokenOut:h,callback:Q}}],F=await i.getBundleData({fromAddress:e,receiver:e,spender:e,chainId:n,routingStrategy:"ensowallet-v2"},Y),{transactions:D}=await Te({fromAddress:e,amountIn:"0",tokenIn:t,primaryAddress:a,bundle:F,publicClient:u,ensoWalletV2Address:c,isAuthorized:f});return{bundle:F,transactions:D,positionEstimate:Mn({repayAmount:o,collateralToWithdraw:T,collateralToken:t,loanToken:r})}}import Qn from"swr";import{getAddress as _n}from"viem";import{useBeraWallet as Yn,usePublicClient as Fn}from"@berachain/wagmi/hooks";function Ee({chainId:e}){let{address:o}=Yn(),t=Fn({chainId:e}),{config:r}=E({}),s=r.enso.walletV2Factory;return Qn(o&&s?["useEnsoWalletV2Address",o,s]:null,async([n,i,l])=>(A(t),Cr({publicClient:t,ensoWalletV2Factory:_n(l),accountAddress:i})),{refreshInterval:18e4})}import Gn from"swr";import{useBeraWallet as qn,usePublicClient as Kn}from"@berachain/wagmi/hooks";function xe({chainId:e,primaryAddress:o,ensoWalletV2Address:t}){let{address:r}=qn(),s=Kn({chainId:e});return Gn(r&&o&&t?["useIsBendAuthorized",r,o,t]:null,async([n,i,l,u])=>(A(s),Ir({publicClient:s,primaryAddress:l,accountAddress:i,ensoWalletV2Address:u})),{refreshInterval:18e4})}function rA({collateralToken:e,loanToken:o,marketId:t,primaryAddress:r,repayAmount:s,slippage:a,chainId:n,collateralPriceInLoanAsset:i,currentCollateral:l,currentDebt:u},d){let{address:p}=jn(),{account:{chainId:m}={}}=Zn(),c=n??m??zn,f=Jn({chainId:c}),{data:y}=Ee({chainId:c}),{data:g}=xe({chainId:c,primaryAddress:r,ensoWalletV2Address:y}),b=e&&o&&t&&r&&s&&y&&g!==void 0&&e.address!==o.address&&Number(s)>0&&a!==void 0&&i!==void 0&&l&&u&&Number(u)>0&&p&&(d?.opts?.isEnabled??!0)?["useBendDemultiply",p,e,o,t,r,c,s,a,i,l,u,y,g]:null;return $n(b,async([R,h,C,k,I,T,x,v,H,O,_,Q,q,Y])=>{A(f);let F=At(v,k.decimals).toString(),D=At(_,C.decimals).toString(),G=At(Q,k.decimals).toString();return Er({fromAddress:h,repayAmount:F,collateralToken:C,loanToken:k,marketId:I,primaryAddress:T,chainId:x,ensoClient:K(),slippage:H,publicClient:f,collateralPriceInLoanAsset:O,currentCollateral:D,currentDebt:G,ensoWalletV2Address:q,isAuthorized:Y})},{...d?.opts,refreshInterval:1e5})}import ti from"swr";import{parseUnits as ht}from"viem";import{defaultChainId as oi}from"@berachain/config/internal";import{useBeraWagmi as ri,useBeraWallet as si,usePublicClient as ai}from"@berachain/wagmi/hooks";function Xn({rawSupplyCollateralAmount:e,rawCurrentCollateralAmount:o,rawCurrentBorrowAmount:t,formattedCollateralPriceInLoanAsset:r,collateralToken:s,loanToken:a,leverageMultiplier:n,slippage:i}){let l=Math.max(n,1);if(l<=1)return"0";let u=ie(i),d=new P(r);if(d.lte(0))throw new B({property:"formattedCollateralPriceInLoanAsset",value:r,expected:"a value greater than zero"});let p=yt(d,s,a),m=new P(1).minus(new P(1).dividedBy(l)),c=new P(o).plus(e),f=new P(t),y=new P(1).minus(m.multipliedBy(u));if(y.lte(0))throw new B({property:"leverageMultiplier",value:n,expected:"a lower leverage target for current slippage"});let g=m.multipliedBy(c).multipliedBy(p).minus(f).dividedBy(y);if(g.lte(0))return"0";let b=g.integerValue(P.ROUND_UP);return b.lte(0)?"0":b.toFixed(0)}function ei({rawSupplyCollateralAmount:e,collateralToken:o,loanToken:t,rawBorrowAmount:r,formattedCollateralPriceInLoanAsset:s,slippage:a}){let n=new P(10).pow(o.decimals),i=new P(10).pow(t.decimals),l=new P(e),u=new P(r);if(u.lte(0))return{finalCollateral:l.dividedBy(n).toFixed(),totalBorrow:"0"};let d=ie(a),p=yt(new P(s),o,t),m=p.lte(0)?new P(0):u.multipliedBy(d).dividedBy(p),c=l.plus(m).dividedBy(n),f=u.dividedBy(i);return{finalCollateral:c.toFixed(),totalBorrow:f.toFixed()}}async function xr({fromAddress:e,rawSupplyCollateralAmount:o,rawCurrentCollateralAmount:t,rawCurrentBorrowAmount:r,collateralToken:s,loanToken:a,marketId:n,primaryAddress:i,chainId:l,ensoClient:u,slippage:d,leverageMultiplier:p,publicClient:m,formattedCollateralPriceInLoanAsset:c,ensoWalletV2Address:f,isAuthorized:y}){V(e,"fromAddress");let g=j(s.address),b=j(a.address),R=Xn({rawSupplyCollateralAmount:o,rawCurrentCollateralAmount:t,rawCurrentBorrowAmount:r,formattedCollateralPriceInLoanAsset:c,collateralToken:s,loanToken:a,leverageMultiplier:p,slippage:d}),h=0,C=1,k=[{protocol:"bend",action:"deposit",args:{primaryAddress:i,positionId:n,tokenIn:g,amountIn:o,onBehalfOf:e}}],T=[{protocol:"bend",action:"flashloan",args:{flashloanToken:b,flashloanAmount:R,...o!=="0"&&{tokenIn:g,amountIn:o},tokenOut:b,callback:[{protocol:"enso",action:"route",args:{tokenIn:b,tokenOut:g,amountIn:R,slippage:d*100}},{protocol:"enso",action:"balance",args:{token:g}},{protocol:"bend",action:"deposit",args:{primaryAddress:i,positionId:n,tokenIn:g,amountIn:{useOutputOfCallAt:C},onBehalfOf:e}},{protocol:"bend",action:"borrow",args:{primaryAddress:i,positionId:n,collateral:g,tokenOut:b,amountOut:R,onBehalfOf:e}}]}}],x=R==="0"?k:T,v=await u.getBundleData({fromAddress:e,receiver:e,spender:e,chainId:l,routingStrategy:"ensowallet-v2"},x),{transactions:H}=await Te({fromAddress:e,amountIn:o,tokenIn:s,primaryAddress:i,bundle:v,publicClient:m,ensoWalletV2Address:f,isAuthorized:y});return{bundle:v,transactions:H,positionEstimate:ei({rawSupplyCollateralAmount:o,collateralToken:s,loanToken:a,rawBorrowAmount:R,formattedCollateralPriceInLoanAsset:c,slippage:d})}}function RA({collateralToken:e,loanToken:o,marketId:t,primaryAddress:r,formattedSupplyCollateralAmount:s,formattedCurrentCollateralAmount:a,formattedCurrentBorrowAmount:n,leverageMultiplier:i,slippage:l,chainId:u,formattedCollateralPriceInLoanAsset:d},p){let{address:m}=si(),{account:{chainId:c}={}}=ri(),f=u??c??oi,y=ai({chainId:f}),{data:g}=Ee({chainId:f}),{data:b}=xe({chainId:f,primaryAddress:r,ensoWalletV2Address:g}),R=e&&o&&t&&r&&g&&b!==void 0&&e.address!==o.address&&l!==void 0&&i!==void 0&&d!==void 0&&(Number(s??0)>0||i>1&&(Number(a??0)>0||Number(s??0)>0))&&m&&(p?.opts?.isEnabled??!0)?["useBendMultiply",m,e,o,t,r,f,s??"",a??"",n??"",i,l,d,g,b]:null;return ti(R,async([h,C,k,I,T,x,v,H,O,_,Q,q,Y,F,D])=>{A(y);let G=ht(H||"0",k.decimals).toString(),He=ht(O||"0",k.decimals).toString(),os=ht(_||"0",I.decimals).toString();return xr({fromAddress:C,rawSupplyCollateralAmount:G,rawCurrentCollateralAmount:He,rawCurrentBorrowAmount:os,collateralToken:k,loanToken:I,marketId:T,primaryAddress:x,chainId:v,ensoClient:K(),slippage:q,leverageMultiplier:Q,publicClient:y,formattedCollateralPriceInLoanAsset:Y,ensoWalletV2Address:F,isAuthorized:D})},{...p?.opts,refreshInterval:1e5})}import ni from"swr";import{formatEther as ii,parseUnits as li,zeroAddress as Br}from"viem";import{defaultChainId as ui}from"@berachain/config/internal";import{useBeraWallet as pi,usePublicClient as di}from"@berachain/wagmi/hooks";import{ethAddress as Sr,zeroAddress as bt}from"viem";var Rt=class extends S{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:o,tokenOut:t,amount:r,slippage:s,account:a=bt,aggregatorsFeeBps:n,proxyAggregatorsThroughVercel:i=!1,rewardVault:l,underlyingToken:u}){this.assertChainSupport({tokenIn:o,tokenOut:t}),V(a,"account");let d=K({useProxy:!i});o.address===bt&&(o.address=Sr),t.address===bt&&(t.address=Sr);let p=u??t,m=[{protocol:"enso",action:"route",args:{tokenIn:o.address,tokenOut:p.address,destinationChainId:o.chainId===p.chainId?void 0:p.chainId,refundReceiver:a,amountIn:r,slippage:s*100}}];if(u&&m.push({protocol:"erc4626",action:"deposit",args:{amountIn:{useOutputOfCallAt:0},tokenIn:u.address,primaryAddress:t.address,tokenOut:t.address}}),l){let g=m.length;m.push({protocol:"enso",action:"balance",args:{token:t.address}},{protocol:"erc20",action:"approve",args:{amount:{useOutputOfCallAt:g},spender:l,token:t.address}},{protocol:"enso",action:"call",args:{address:l,args:[a,{useOutputOfCallAt:g}],method:"stakeOnBehalf",abi:"function stakeOnBehalf(address account, uint256 amount) external"}},{protocol:"enso",action:"balance",args:{token:l}})}let c=await d.getBundleData({fromAddress:a,receiver:a,spender:a,chainId:o.chainId,routingStrategy:"router"},m),f=l?.toLowerCase()??t.address.toLowerCase();return{amountOut:c.minAmountsOut[f]??c.amountsOut[f]??"0",amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,rawAmount:r,spender:c.tx.to}),name:this.name,swapFeeBps:0,priceImpactPercentage:c.priceImpact?c.priceImpact/100:null,getCalldata:()=>({address:c.tx.to,data:c.tx.data,value:BigInt(c.tx.value??0)})}}},Se=new Rt;function VA({tokenIn:e,loanToken:o,bendVault:t,rewardVault:r,amount:s,slippage:a},n){let{getTokenPrice:i}=Z({tokens:e&&o?[e,o]:void 0}),l=mi({tokenIn:e,loanToken:o,bendVault:t,rewardVault:r,amount:s?li(s,e?.decimals??18).toString():void 0,slippage:a},n),{data:u}=Uo({sharesAmount:BigInt(l.data?.amountOut??0),vaultAddress:t.address}),{data:d}=Pe({tokenIn:e,tokenOut:o,formattedAmountIn:s,formattedAmountOut:u?.formatted??"0"}),p=e?.chainId&&e.chainId!==ui,{data:m,isLoading:c}=Ce({address:Br,chainId:p?e?.chainId:void 0},{opts:{isEnabled:!!p}}),f=l.data?.getCalldata?.({account:Br})?.value??0n,y=m?.balance??{raw:"0",formatted:"0"},g=p&&f>0n&&!c&&f>BigInt(y.raw),b=p&&f>0n?ii(f):void 0;return{...l,zapSupplyAmount:u,priceImpact:d,hasInsufficientNativeBalance:g,isCrossChain:p,nativeFee:b,refresh:()=>{l.mutate()}}}function mi({tokenIn:e,loanToken:o,bendVault:t,rewardVault:r,amount:s,slippage:a},n){let{address:i}=pi(),l=!!e&&!!o&&!!t&&!!s&&!!i&&!w(o.address,e.address)&&e.chainId&&Number(s)>0&&!!a,u=di();return ni(l?["useBendZapSupply",e,o,t,r,s,a]:null,async([,p,m,c,f,y,g])=>(A(u),V(i,"fromAddress"),V(p?.address,"tokenInAddress"),$(p?.chainId,"tokenInChainId"),Se.getQuote({tokenIn:p,tokenOut:c,underlyingToken:m,amount:y,slippage:g,account:i,rewardVault:f})),{...n?.opts,refreshInterval:1e5})}import{getPublicClient as Ri}from"@wagmi/core";import wi from"swr";import{parseUnits as ki}from"viem";import{defaultChainId as Ci}from"@berachain/config/internal";import{useBeraWallet as Ii,useConfig as Pi}from"@berachain/wagmi/hooks";import{ethAddress as ci,zeroAddress as fi}from"viem";async function Or({fromAddress:e,amountIn:o,tokenIn:t,tokenOut:r,chainId:s,ensoClient:a,destinationChainId:n,slippage:i,publicClient:l}){if(!e)throw new B({property:"fromAddress",value:e,expected:"address"});r===fi&&(r=ci);let u={protocol:"enso",action:"route",args:{tokenIn:t,tokenOut:r,amountIn:o,slippage:i*100}};n&&n!==s&&(u.args={...u.args,destinationChainId:n,refundReceiver:e});let d=await a.getBundleData({fromAddress:e,receiver:e,spender:e,chainId:s,routingStrategy:"router"},[u]),p=await Rr({fromAddress:e,amountIn:o,tokenIn:t,chainId:s,ensoClient:a,bundle:d,publicClient:l});return{bundle:d,transactions:p}}import{useMemo as gi}from"react";import yi from"swr";import{useBeraWallet as Ai,useConfig as hi,usePublicClient as bi}from"@berachain/wagmi/hooks";function Be(e,o){let t=bi(),r=hi(),{address:s}=Ai(),{tokenList:a,refresh:n}=ee(),i=e?.walletAddress??s,l=gi(()=>new Map((e?.tokens??a)?.map(p=>[p.address.toLowerCase(),p])??[]),[a,e?.tokens]),u=t&&a!==void 0&&i?["usePollWalletBalances",i,Array.from(l.values())]:null,d=yi(u,async([,p,m])=>he({account:p,tokenList:m,wagmiConfig:r}),{refreshInterval:1e5,...o?.opts});return{...d,refresh:()=>{d?.mutate?.(),n()}}}function ah({tokenIn:e,tokenOut:o,amount:t,slippage:r}){let{address:s}=Ii(),a=Pi(),n=K(),{refresh:i}=Be(),l=!!e&&!!o&&!!t&&Number(t)>0&&!!r&&!!s&&!!e.chainId,d=wi(l?["useEnsoSwapBundle",e,o,t,r]:null,async([,p,m,c,f])=>{V(s,"fromAddress"),V(p?.address,"tokenInAddress"),$(p?.chainId,"tokenInChainId"),V(m?.address,"tokenOutAddress"),Ve(c,"amount"),Ve(f,"slippage");let y=Ri(a,{chainId:p.chainId});A(y);let g=ki(c,p.decimals).toString();return Or({fromAddress:s,amountIn:g,tokenIn:p.address,tokenOut:m.address,chainId:p.chainId,ensoClient:n,destinationChainId:Ci,slippage:f,publicClient:y})},{refreshInterval:1e5,isEnabled:l});return{...d,refresh:()=>{d.mutate(),i()}}}import Ti from"swr";import{formatUnits as Ei,parseUnits as xi}from"viem";import{chainConfigs as Si,defaultChainId as Bi}from"@berachain/config/internal";import{useBeraWallet as Oi}from"@berachain/wagmi/hooks";function ch({inputToken:e,amount:o,underlyingToken:t,slippage:r,tokenOut:s},a){let{address:n}=Oi(),i=n??Si[Bi].bex.aggregatorsRouterExecutor,u=!!e&&!!o&&Number(o)>0&&!!e.chainId&&!!t&&!!r?["useZapStakeBera",e,o,i,r,t,s]:null,d=Ti(u,async([,m,c,f,y,g,b])=>{let R=xi(c,m.decimals).toString();return Se.getQuote({account:f,amount:R,tokenIn:m,underlyingToken:g,tokenOut:b,slippage:y})},{...a?.opts,refreshInterval:1e5}),{data:p}=Pe({tokenIn:e,tokenOut:s,formattedAmountIn:o,formattedAmountOut:Ei(BigInt(d.data?.amountOut??"0"),s.decimals)});return{...d,data:{...d.data,priceImpactPercentage:p,isCrossChain:e&&s.chainId!==e?.chainId},refresh:()=>{d.mutate()}}}import Di from"swr";import{usePublicClient as Li}from"@berachain/wagmi/hooks";import vi from"swr";function se({priceFeedMap:e},o){let t=e?Object.values(e):null,r=(o?.opts?.isEnabled??!0)&&t?["usePythLatestPrices",t]:null;return vi(r,async([a,n])=>await Mt({priceFeedId:n}))}var vr=({asset:e,amount:o,isMint:t,isBasketModeEnabled:r},s)=>{let a=Li(),{priceFeedMap:n,flags:i}=U(),{data:l}=se({priceFeedMap:e?.address&&n?{[e.address]:n[e.address]}:void 0},{opts:{isEnabled:i.isPythWrapperEnabled&&!!e?.address}}),u=o&&e&&(i.isPythWrapperEnabled&&l?.prices.length||!i.isPythWrapperEnabled)?["useCappedGlobally",o,e,l,i.isPythWrapperEnabled,r]:null,d=Di(u,async([p,m,c,f,y,g])=>g?!1:(A(a),await Nt({client:a,asset:c,amount:t?m:`-${m}`,isMint:t,latestPrices:f,isPythWrapperEnabled:y})),{...s?.opts,refreshInterval:0});return{...d,refresh:()=>{d.mutate()}}};import Hi from"swr";import{usePublicClient as Ui}from"@berachain/wagmi/hooks";var Dr=({asset:e,amount:o,isMint:t,isBasketModeEnabled:r},s)=>{let a=Ui(),{collateralList:n,referenceCollateral:i}=U(),u=Hi(e&&o?["useCappedRelatively",e,o,n,i]:null,async([d,p,m,c,f])=>{if(r)return!1;if(A(a),!t){let y=`-${m}`;return f.address!==p?!1:(await Promise.all(c.map(b=>We({client:a,asset:b.address,amount:y,isMint:t,referenceCollateral:f})))).some(b=>b)}return await We({client:a,asset:p,amount:m,isMint:t,referenceCollateral:f})},{refreshInterval:0,...s?.opts});return{...u,refresh:()=>{u.mutate()}}};import Ni from"swr";import{usePublicClient as Vi}from"@berachain/wagmi/hooks";var Hh=({collateralList:e},o)=>{let t=Vi(),s=Ni(t&&e?["useCollateralWeights",e]:void 0,async([a,n])=>(A(t),await Ht({client:t,collateralList:n})),{...o?.opts,refreshInterval:o?.opts?.refreshInterval??1e5});return{...s,refresh:()=>{s.mutate()}}};import Wi from"swr";function Wh(){let e=Wi(["useHoney24hVolume"],()=>Vt(),{refreshInterval:18e4});return{...e,refresh:()=>e.mutate()}}import{useMemo as wt}from"react";import Mi from"swr";import{useBeraWallet as Qi,useConfig as _i,usePublicClient as Yi}from"@berachain/wagmi/hooks";var Lr=()=>{let e=Yi(),{address:o}=Qi(),{collateralList:t}=U(),r=_i(),a=Mi(o&&t&&e?["useHoneyBalances",o,t]:null,async([n,i,l])=>{A(e);let u=[...l??[],pe({})];return(await he({account:i,tokenList:u,wagmiConfig:r}))?.reduce((m,c)=>(m[c.address]=c,m),{})},{refreshInterval:1e4});return{...a,refresh:()=>a.mutate()}};import Fi from"swr";import{usePublicClient as Gi}from"@berachain/wagmi/hooks";var Hr=e=>{let o=Gi(),{collateralList:t}=U(),s=Fi(t&&o?["useHoneyVaultsBalance",t]:null,async([a,n])=>(A(o),await me({client:o,collateralList:n})),{...e?.opts,refreshInterval:1e5});return{...s,refresh:()=>{s.mutate()}}};import qi from"swr";import{usePublicClient as Ki}from"@berachain/wagmi/hooks";var Ur=({collateral:e},o)=>{let t=Ki(),{priceFeedMap:r,flags:s}=U(),{data:a}=se({priceFeedMap:e?.address?{[e.address]:r[e.address]}:void 0},{opts:{isEnabled:s.isPythWrapperEnabled&&!!e?.address}}),n=t&&e&&(s.isPythWrapperEnabled&&a?.prices.length||!s.isPythWrapperEnabled)?["useIsBadCollateralAsset",e,a,s.isPythWrapperEnabled]:null,i=qi(n,async([l,u,d,p])=>(A(t),await Ut({client:t,collateral:u,latestPrices:d,isPythWrapperEnabled:p})),{...o?.opts,refreshInterval:o?.opts?.refreshInterval??1e5});return{...i,refresh:()=>{i.mutate()}}};var Nr=({lowerThan:e,vaultsBalances:o,state:t,collateralList:r})=>{if(!(t.actionType==="mint")&&!t.isBasketModeEnabled){let a=o?.find(l=>l.address.toLowerCase()===t.collaterals[0].address.toLowerCase()),n=new P(a?.balance.formatted??"0").lte(e),i=r.filter(l=>{let u=o?.find(d=>d.address.toLowerCase()===l.address.toLowerCase());return new P(u?.balance.formatted??"0").lte(e)});return{isLow:n,isLiquidityLowCollaterals:i}}return{isLow:!1,isLiquidityLowCollaterals:[]}},$i=({vaultsBalances:e,redeemedVaultBalance:o,state:t,collateralList:r})=>{if(!(t.actionType==="mint")&&e&&o){let a=r.filter(n=>{let i=e.find(u=>u.address.toLowerCase()===n.address.toLowerCase()),l=t.toAmount[t.collaterals.indexOf(n)];return new P(i?.balance.formatted??"0").lt(l??"0")});return{isMore:!!a.find(n=>w(n,t.collaterals[0])),isRedeemMoreThanLiquidityCollaterals:a}}return{isMore:!1,isRedeemMoreThanLiquidityCollaterals:void 0}};function zi({state:e,honeyBalances:o,...t}){let{config:r}=E(t),s=e.actionType==="mint";return!s&&o?new P(e.fromAmount[0]).gt(o[r.honey.token]?.balance.formatted??"0"):s&&o&&e.isBasketModeEnabled!==void 0&&e.collaterals.length>0?e.isBasketModeEnabled?e.collaterals.some((a,n)=>{let i=e.fromAmount[n];return new P(o[a.address]?.balance.formatted).lt(i)}):new P(o[e.collaterals[0].address]?.balance.formatted).lt(e.fromAmount[0]):!1}var Ab=({actionType:e,collaterals:o,fromAmount:t,toAmount:r,isBasketModeEnabled:s})=>{let a={actionType:e,collaterals:o,fromAmount:t,toAmount:r,isBasketModeEnabled:s},n=e==="mint",{data:i}=Ur({collateral:o[0]}),{collateralList:l}=U(),{isBlacklisted:u,isDepegged:d}=i??{isBlacklisted:!1,isDepegged:!1},{data:p}=vr({asset:o[0],amount:n?t[0]:r[0],isMint:n,isBasketModeEnabled:s}),{data:m}=Dr({asset:o[0]?.address,amount:n?t[0]:r[0],isMint:n,isBasketModeEnabled:s}),{data:c}=Lr(),{data:f}=Hr(),y=o[0]?.address,g=f?.find(I=>I.address.toLowerCase()===y.toLowerCase()),[b,R]=wt(()=>{let I=Nr({lowerThan:1,vaultsBalances:f,state:a,collateralList:l}),T=Nr({lowerThan:1e3,vaultsBalances:f,state:a,collateralList:l});return[I,T]},[f,a]),{isMore:h,isRedeemMoreThanLiquidityCollaterals:C}=wt(()=>$i({vaultsBalances:f,redeemedVaultBalance:g,state:a,collateralList:l}),[f,g,a,l]),k=wt(()=>zi({state:a,honeyBalances:c}),[a,c]);return{isLiquidityDepleted:b.isLow,isLiquidityDepletedCollaterals:b.isLiquidityLowCollaterals,isRedeemMoreThanLiquidity:h,isRedeemMoreThanLiquidityCollaterals:C,isLowLiquidity:R.isLow,isLiquidityLowCollaterals:R.isLiquidityLowCollaterals,isBlacklisted:a.isBasketModeEnabled?!1:u,isDepegged:a.isBasketModeEnabled?!1:d,isCappedGlobally:p,isCappedRelatively:m,isExceedingBalance:k}};import Zi from"swr";function wb({days:e}){let o=Zi(["useHoneyChartData",e],async([t,r])=>await Lt({days:r}));return{...o,refresh:()=>o.mutate()}}import{useEffect as Xi,useReducer as el}from"react";import{formatUnits as Wr}from"viem";import{defaultChainId as tl}from"@berachain/config/internal";import ji from"swr";import{usePublicClient as Ji}from"@berachain/wagmi/hooks";function Vr({state:e},o){let t=Ji(),{priceFeedMap:r,flags:s,collateralList:a}=U(),{data:n}=se({priceFeedMap:r},{opts:{isEnabled:s.isPythWrapperEnabled&&!!a.length}}),i=e.actionType==="mint",l=t&&e&&a.length>0&&(s.isPythWrapperEnabled&&n?.prices.length||!s.isPythWrapperEnabled)?["useIsBasketModeEnabled",i,n,s.isPythWrapperEnabled,a]:null,u=ji(l,async([d,p,m,c,f])=>(A(t),await ce({client:t,isMint:p,collateralList:f,latestPrices:m,isPythWrapperEnabled:c})),{...o?.opts,refreshInterval:o?.opts?.refreshInterval??1e4});return{...u,data:u.data,refresh:()=>{u.mutate()}}}var ol={actionType:"mint",collaterals:[],fromAmount:[],toAmount:[],isBasketModeEnabled:!1,isTyping:!1,isSubmitting:!1,isLoading:!1};function Mr(e,o){switch(o.type){case"RESET_AMOUNTS":return{...e,fromAmount:[],toAmount:[]};case"ACTION_TYPE_CHANGE":return Mr({...e,actionType:o.value},{type:"RESET_AMOUNTS"});case"COLLATERALS_CHANGE":return{...e,collaterals:o.value,fromAmount:[],toAmount:[]};case"FROM_AMOUNT_CHANGE":{let t=e.fromAmount;return t[o.index]=o.value,{...e,fromAmount:t}}case"TO_AMOUNT_CHANGE":{let t=e.toAmount;return t[o.index]=o.value,{...e,toAmount:t}}case"PREVIEW_CHANGE":{let t=o.value,r=e.actionType==="mint",s=e.collaterals.map((n,i)=>o.changedAsset===n.address?r?e.fromAmount[i]:e.toAmount[i]:t.collaterals[n.address]?Wr(t.collaterals[n.address],n.decimals):e.isBasketModeEnabled?"0":""),a=w(o.changedAsset,"HONEY",{chainId:tl})?r?e.toAmount[0]:e.fromAmount[0]:t.honey?Wr(t.honey,18):e.isBasketModeEnabled?"0":"";return{...e,fromAmount:r?s:[a],toAmount:r?[a]:s}}case"IS_BASKET_MODE_ENABLED_CHANGE":return{...e,isBasketModeEnabled:o.value,fromAmount:[],toAmount:[]};case"IS_TYPING_CHANGE":return{...e,isTyping:o.value};case"IS_SUBMITTING_CHANGE":return{...e,isSubmitting:o.value};case"IS_LOADING_CHANGE":return{...e,isLoading:o.value};default:throw new Error(`Unknown action type: ${o}`)}}var Ub=()=>{let{collateralList:e}=U(),[o,t]=el(Mr,ol,s=>({...s,collaterals:e})),{data:r}=Vr({state:o});return Xi(()=>{r!==void 0&&o.isBasketModeEnabled!==r&&(t({type:"IS_LOADING_CHANGE",value:!0}),t({type:"IS_BASKET_MODE_ENABLED_CHANGE",value:r}),t({type:"IS_LOADING_CHANGE",value:!1}))},[r]),{state:o,dispatch:t}};import rl from"swr/immutable";import{usePublicClient as sl}from"@berachain/wagmi/hooks";var Yb=({pythPriceFeedCalldata:e,tokenListLength:o},t)=>{let r=sl(),s=(t?.opts?.isEnabled??!0)&&e&&e.length>0?["usePythUpdateFee",e]:null,{data:a=Qt(o),isLoading:n}=rl(s,async([i,l])=>(A(r),_t({client:r,priceFeedId:l})));return{QUERY_KEY:s,data:a,isLoading:n}};import{useMemo as al}from"react";function Kb(e){return al(()=>{if(e)return Kt(e)},[e])}import nl from"swr";import{formatEther as il}from"viem";import{bgtAbi as ll}from"@berachain/abis/pol/bgt";import{useBeraWallet as ul,usePublicClient as pl}from"@berachain/wagmi/hooks";var dl=e=>{let{address:o}=ul(),t=pl(),s=nl(o&&t?["useBgtUnstakedBalance",o]:null,async([,a])=>{A(t);let{config:n}=E({chainId:t.chain.id}),i=await t.readContract({address:n.tokens.bgt,abi:ll,functionName:"unboostedBalanceOf",args:[a]});return il(i)},{...e,refreshInterval:e?.opts?.refreshInterval??1e5});return{...s,refresh:()=>s.mutate()}};import ml from"swr";import{formatUnits as cl}from"viem";import{useBeraWallet as fl,usePublicClient as gl}from"@berachain/wagmi/hooks";var yl=()=>{let{address:e}=fl(),o=gl(),r=ml(e&&o?["useClaimableFees",e]:null,async([,s])=>{A(o);let{config:a}=E({chainId:o.chain.id}),n=await no({account:s,vaultAddress:a.pol.staker,publicClient:o});return cl(n,18)},{refreshInterval:18e4*2});return{...r,refresh:()=>r?.mutate?.()}};import{GqlRewardVaultOrderBy as Rl,GqlRewardVaultOrderDirection as wl}from"@berachain/graphql/pol/api";import Al from"swr";import{usePublicClient as hl}from"@berachain/wagmi/hooks";var bl=(e,o=!1)=>["useRewardVaults",e,o],kt=(e,o)=>{let t=bl(e.filter,e.onChainIncentives),r=hl(),s=Al(o?.opts?.isEnabled??!0?t:null,async([,a,n])=>await zt({filter:a,publicClient:n?r:void 0}),{...o?.opts});return{...s,refresh:s.mutate}};var gR=(e={},{isEnabled:o=!0}={})=>{let t=kt({filter:{orderBy:Rl.Apr,orderDirection:wl.Desc,pageSize:1,where:e}},{opts:{refreshInterval:0,revalidateOnFocus:!1,refreshWhenOffline:!1,isEnabled:o}});return{isLoading:t.isLoading,highestApr:t.data?.gaugeList[0].dynamicData?.apr,refresh:t.mutate}};import kl from"swr";import{usePublicClient as Cl}from"@berachain/wagmi/hooks";var Qr=e=>{let o=Cl(),t=kl(o?"usePollGlobalData":null,async()=>(A(o),Zt(o)),{revalidateOnFocus:!1,...e?.opts});return{...t,refresh:t.mutate}};import Il from"swr/immutable";var Pl=()=>"usePollMarkets",IR=e=>{let o=Pl(),t=Il(o,async()=>await jt(),{...e?.opts});return{...t,refresh:()=>t.mutate()}};import Tl from"swr/immutable";import{isAddress as El}from"viem";import{usePublicClient as xl}from"@berachain/wagmi/hooks";function OR({receiptTokenAddresses:e,account:o,version:t},r){let s=xl(),a=e&&o&&s&&El(o)&&t?["useQueuedBeraUnlock",e,o,t]:null,n=Tl(a,async([,i,l,u])=>(A(s),await Promise.all(i.map(async d=>await ro({contractAddress:d,accountAddress:l,publicClient:s,version:u}))).then(d=>d.flat())),{refreshInterval:1e4,...r?.opts});return{...n,refresh:()=>n.mutate()}}import Sl from"swr";import{isAddress as Bl}from"viem";import{defaultChainId as Ol}from"@berachain/config/internal";import{usePublicClient as vl}from"@berachain/wagmi/hooks";var MR=({address:e},o)=>{let t=e?["useRewardTokenToBeraRate",e]:null,r=vl({chainId:Ol});return Sl(t,async([s,a])=>{if(!a||!Bl(a))throw new B({property:"address",value:a,expected:"Address"});return A(r),ae({address:a,publicClient:r})},{...o?.opts})};import Ql from"swr";import Ll from"swr";import{erc20Abi as Hl,formatUnits as Ul,isAddress as Nl}from"viem";import{beraChefAbi as Vl}from"@berachain/abis/pol/rewards/beraChef";import{usePublicClient as Wl}from"@berachain/wagmi/hooks";import{erc20Abi as Oe,formatUnits as Dl}from"viem";async function ve({address:e,publicClient:o}){A(o);let[t,r,s,a]=await o.multicall({contracts:[{address:e,abi:Oe,functionName:"decimals"},{address:e,abi:Oe,functionName:"name"},{address:e,abi:Oe,functionName:"symbol"},{address:e,abi:Oe,functionName:"totalSupply"}],allowFailure:!0});return{address:e,decimals:t.result,name:r.result,symbol:s.result,totalSupply:a.result!==void 0?t.status==="success"?Dl(a.result,t.result):a.result.toString():void 0}}var Ml=e=>e&&Nl(e)?["onChainRewardVault",e.toLowerCase()]:null,_r=({address:e},o)=>{let t=Wl(),r=o.opts?.isEnabled??!0,s=Ml(e);return Ll(r&&t?s:null,async([,a])=>{A(t);let{config:n}=E({chainId:t.chain.id}),i=await Ae({address:a,publicClient:t}),[l,u,d]=await Promise.all([ye({address:a,stakingToken:i,publicClient:t}),t.readContract({address:n.pol.beraChef,abi:Vl,functionName:"isWhitelistedVault",args:[a]}),t.readContract({address:i,abi:Hl,functionName:"balanceOf",args:[a]})]),[p,m]=await Promise.all([ve({address:i,publicClient:t}),Promise.all(l.map(c=>z({address:c.token,chainId:t.chain.id,publicClient:t})))]);if(!p)throw new Error("Staking token not found");return{id:a,address:a,vaultAddress:a,stakingToken:{address:i,name:p.name??"",symbol:p.symbol??"",decimals:p.decimals??0},stakingTokenAmount:Ul(d,p.decimals??18),isVaultWhitelisted:u,activeIncentives:l.map((c,f)=>({active:!!c.remainingAmount,remainingAmount:c.remainingAmount,remainingAmountUsd:"0",incentiveRate:c.incentiveRate,incentiveRateUsd:"0",tokenAddress:c.token,token:m[f]}))}})};var _l=e=>e?["useRewardVault",e.toLowerCase()]:null,aw=(e,o)=>{let t=_l(e),r=Ql(t,async([n,i])=>Xt({address:i}),{...o?.opts}),s=o?.opts?.isEnabled??((!!r.error||!r.isLoading)&&!r.data),a=_r({address:e},{opts:{...o?.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 Yl from"swr";import{usePublicClient as Fl}from"@berachain/wagmi/hooks";function dw({address:e,stakingToken:o}){let t=Fl(),s=Yl(t&&e&&o?["useRewardVaultIncentives",e,o]:null,async([,a,n])=>(A(t),await ye({address:a,stakingToken:n,publicClient:t})));return{...s,refresh:()=>s?.mutate?.()}}import Gl from"swr";import{usePublicClient as ql}from"@berachain/wagmi/hooks";var Kl=(e,o)=>{let t=ql(),s=Gl(t&&e?["useRewardVaultRewards",e]:null,async([,a])=>(A(t),await qt(a,t)),{...o?.opts});return{...s,refresh:()=>s?.mutate?.()}};import $l from"swr";var De=e=>{let o=[],t="";for(let r of e){if(!r.timestamp&&!r._timestamp)continue;let s=(r?.timestamp??r?._timestamp??0)*1e3,a=new Date(s),n=a.toDateString();if(n!==t){let i=new Date(a.setHours(0,0,0,0)).getTime()/1e3;o.push({...r,timestamp:i,_timestamp:i}),t=n}}return o};function kw({range:e}){let t=$l(e?["useStakedAPR",e]:null,async([,r])=>{let s=await to({range:r});return De(s.sort((n,i)=>n.timestamp-i.timestamp)).map(n=>({_timestamp:n.timestamp,apr:n.apr}))});return{...t,refresh:()=>t.mutate()}}import{useMemo as Le}from"react";import Ct from"swr";import{useBeraWallet as zl,usePublicClient as Zl}from"@berachain/wagmi/hooks";var Hw=e=>{let o=W("swberaAprWindow"),t=Zl(),{address:r}=zl(),s=Le(()=>e.map(h=>h.receiptToken),[e]),a=Le(()=>e.map(h=>h.inputTokens[0]),[e]),n=o?["useStakedData:apr",o]:null,{data:i}=Ct(n,async([,h])=>eo({window:h}),{refreshInterval:1e5}),{data:l,isLoading:u}=Be({tokens:s}),{getTokenPrice:d}=Z({tokens:a}),p=t&&s.length>0?["useStakedData:exchangeRates",s]:null,{data:m}=Ct(p,async([,h])=>(A(t),Promise.all(h.map(C=>ae({address:C.address,publicClient:t})))),{refreshInterval:1e5}),c=Le(()=>{if(!(!l||!m))return e.map((h,C)=>{let k=h.inputTokens[0],I=l.find(_=>_.address===h.receiptToken.address)?.balance.raw??"0",T=m[C]??0,x=d(k)??0,H=new P(I).multipliedBy(T).dividedBy(10**k.decimals),O=H.multipliedBy(x);return{token:k,apr:i??0,stakedAmount:H.toNumber(),stakedAmountUsd:O.toNumber(),earnedAmount:0,earnedAmountUsd:0,isLoadingEarnings:!0}})},[l,m,e,i,d]),f=r&&t&&e.length>0?["useStakedData:positions",r,e]:null,{data:y,isLoading:g,isValidating:b}=Ct(f,async([,h,C])=>(A(t),Promise.all(C.map(async k=>{let I=k.receiptToken,[T,x]=await Promise.all([$t({address:I.address,account:h}),ae({address:I.address,publicClient:t})]);return{earnings:T,exchangeRate:x}}))),{refreshInterval:1e4}),R=Le(()=>{if(!(!y||!l))return e.map((h,C)=>{let k=h.inputTokens[0],I=h.receiptToken,{earnings:T,exchangeRate:x}=y[C],v=d(k)??0,H=l.find(He=>He.address===I.address)?.balance.raw??"0",O=x??0,_=new P(T.earningsTotal).minus(T.earningsRealized),Y=new P(H).multipliedBy(O).minus(_).dividedBy(10**k.decimals),F=_.dividedBy(10**k.decimals),D=Y.multipliedBy(v),G=F.multipliedBy(v);return{token:k,apr:i??0,stakedAmount:Y.toNumber(),earnedAmount:F.toNumber(),stakedAmountUsd:D.toNumber(),earnedAmountUsd:G.toNumber()}})},[y,l,e,i,d]);return{balances:c,data:R,isLoading:u&&g,isLoadingBalances:u,isLoadingPositions:g,isValidatingPositions:b}};import Jl from"swr";import{getUriFromLink as jl}from"@berachain/config";async function Yr({address:e,range:o}){let t=new Date,r=new Date(t.getTime()-Number(o)*24*60*60*1e3),{config:s}=E({}),a=`${jl(s.staking)}/vaults/${e}/total-assets-by-day?start=${r.toISOString().split("T")[0]}`;return ue({url:a,name:typeof s.staking=="string"?"backend-railway":s.staking.name,type:"rest"})}function Fw({range:e,addresses:o}){let r=Jl(e?["useStakedSnapshots",e,o]:null,async([,s,a])=>{let[...n]=await Promise.all([...a.map(async i=>{let l=await Yr({address:i,range:s}),u=De(l.sort((d,p)=>d._timestamp-p._timestamp));return{[i]:u}})]);return n.reduce((i,l)=>({...i,...l}),{})});return{...r,refresh:()=>r.mutate()}}import Xl from"swr";import{usePublicClient as eu}from"@berachain/wagmi/hooks";var jw=(e=[])=>{let o=eu(),t=X(),r=e.length>0&&o&&t?["useStakingVaultMetadata",e,o,t]:null;return Xl(r,async([,s,a,n])=>(A(a),Promise.all(s.map(i=>oo({address:i.address,underlyingAsset:i.underlyingAsset,publicClient:a,blockTime:n})))),{refreshInterval:1e4})};import tu from"swr";import{usePublicClient as ou}from"@berachain/wagmi/hooks";function ok({vaultAddresses:e}){let o=ou(),t=tu(e&&o?["useTotalStakedAmount",e]:null,([,r])=>so({vaultAddresses:r,publicClient:o}));return{...t,refresh:()=>t.mutate()}}import ru from"swr";import{useBeraWallet as su,usePublicClient as au}from"@berachain/wagmi/hooks";var nu=(e,o)=>{let{address:t}=su(),r=au(),s=t&&r&&e.vaultAddress?["useUserVaultInfo",t,e.vaultAddress]:null,a=ru(s,async([,n,i])=>(A(r),io({account:n,vaultAddress:i,publicClient:r})),{...o,refreshInterval:o?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a.mutate()}};import iu from"swr";import{useBeraWallet as lu,usePublicClient as uu}from"@berachain/wagmi/hooks";var pu=e=>{let{address:o}=lu(),t=uu(),s=iu(o&&t?["useUserVaults",o]:null,async([,a])=>(A(t),await lo({account:a,publicClient:t})),{...e,refreshInterval:e?.opts?.refreshInterval??1e5,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import du from"swr";import{usePublicClient as mu}from"@berachain/wagmi/hooks";var hk=e=>{let o=mu();return du(e&&o?["useVaultAddress",e]:null,async([,r])=>{A(o);let[s]=await Promise.all([Ae({address:r,publicClient:o})]);return{stakeToken:s,address:r}})};import cu from"swr";var kk=({vault:e,range:o,resolution:t})=>{let s=cu(e?["useVaultHistory",e,o,t]:null,([,a,n,i])=>uo({vault:a,range:n,resolution:i}));return{...s,refresh:()=>s.mutate()}};import fu from"swr";var gu=(e,o)=>{let r=fu(e?["useVaultValidators",e]:null,async([,s])=>await po({address:s}),{...o?.opts});return{...r,refresh:()=>r.mutate()}};import{zeroAddress as yu}from"viem";function Fr({address:e},o){let t=oe({addressIn:e?[e]:void 0},o);return{...t,data:e?t.data?.[e.toLowerCase()]:void 0}}function Ok(e){return Fr({address:yu},e)}import Au from"swr/immutable";import{isAddress as hu,zeroAddress as bu}from"viem";import{usePublicClient as Ru}from"@berachain/wagmi/hooks";var Vk=(e,o)=>{let t=Ru(),r=e?.address&&t&&hu(e.address)?["useStakingTokenInformation",e.address]:null,s=Au(r,async([a,n])=>w(n,"BERA")?{address:bu,decimals:N.decimals,name:N.name,symbol:N.symbol}:await ve({address:n,publicClient:t}),{...o?.opts});return{...s,refresh:()=>s?.mutate?.()}};function Qk({token:e},o){let{isLoading:t,priceMap:r}=Z({tokens:e?[e]:void 0},o);return{data:e?r[e.chainId]?.[e.address.toLowerCase()]:void 0,isLoading:t}}import wu from"swr";import{erc20Abi as ku}from"viem";import{usePublicClient as Cu}from"@berachain/wagmi/hooks";function Kk({address:e}){let o=Cu();return wu(e&&o?["useTotalSupply",e]:null,([,t])=>(A(o),o.readContract({address:t,abi:ku,functionName:"totalSupply",args:[]})))}import Iu from"swr/immutable";import{useBlockNumber as Pu,usePublicClient as Tu}from"@berachain/wagmi/hooks";function oC(e){let o=Tu(),{config:t}=E({chainId:o?.chain.id}),{data:r,isLoading:s}=Pu({cacheTime:fe(t.averageBlockTime)}),{data:a}=Iu(r&&o&&Number(e)>0?["useBlockToTimestamp",e,r]:null,async([,i,l])=>(A(o),Gt({block:i,currentBlock:l,blockTime:n,publicClient:o}))),n=X();if(a)return Number(a.timestamp);if(!(s||!r))return Math.floor(Ft(Date.now())+n*(Number(e)-Number(r)))}import{useCallback as qr,useReducer as Eu}from"react";import{useBeraWagmi as xu,useConfig as Su}from"@berachain/wagmi/hooks";var It={confirmState:"idle",txnHash:"",message:""},Gr=(e,o)=>{switch(o.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{...It};default:return e}};function Bu({onlyPermissionless:e,onSuccess:o,onError:t,onLoading:r,onWarning:s,onSubmission:a}={}){let[n,i]=Eu(Gr,It),{account:l,onSmartAccountRejection:u}=xu(),d=Su(),p=l?.wallet?.isContract?6e4*10:12e4,m=qr(()=>{i({type:"confirm_reset"})},[]),c=W("enableSimulateCalls"),f=qr(y=>{if(e&&!y.permissionless){let g=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?.(g,y),t?.(g,y),g}return go({wagmiConfig:d,...y,txConfirmationTimeout:p,enableSimulateCalls:c,onLoading(...g){i({type:"confirm_sending"}),y.onLoading?.(y),r?.(...g)},onWarning(...g){y.onWarning?.(g[0],y),s?.(...g)},onSubmission(...g){i({type:"confirm_submitting"}),y.onSubmission?.(g[0],y),a?.(...g)},onSuccess(...g){i({type:"confirm_receipt"}),y.onSuccess?.(g[0],y),o?.(...g)},onError(...g){i({type:"confirm_error"}),y.onError?.(g[0],y),g[0].reason==="AtomicReadyWalletRejectedUpgradeError"&&u(),t?.(...g)}})},[d,r,s,a,o,t,e,c]);return{isLoading:n.confirmState==="loading",isSubmitting:n.confirmState==="submitting",isSuccess:n.confirmState==="success",isError:n.confirmState==="fail",write:f,reset:m}}var Ou=Bu;import vu from"swr/immutable";import{isAddress as Du,zeroAddress as Lu}from"viem";import{chainId as Hu}from"@berachain/config/internal";async function Uu(e){let o=await ue({url:`https://api.routescan.io/v2/network/testnet/evm/${Hu}/etherscan/api?module=contract&action=getabi&address=${e}`,type:"rest",name:"RouteScan"});if(o.status==="0")throw new Error(o.result);return o.result}var RC=e=>vu(e&&Du(e)&&e!==Lu?["useGetVerifiedAbi",e]:null,()=>e?Uu(e):Promise.resolve(""),{});import{useCallback as Kr,useEffect as Nu,useState as Vu}from"react";function CC({key:e,defaultValue:o}){let t=Kr(()=>{if(typeof window>"u")return o;let n=window.history.state?.[e];return n!==void 0?n:o},[e,o]),[r,s]=Vu(t()),a=Kr(n=>{let i=t(),l=n instanceof Function?n(i):n,d={...window.history.state||{},[e]:l};window.history.replaceState(d,""),s(l)},[e,t]);return Nu(()=>{if(window.history.state?.[e]===void 0){let l={...window.history.state||{},[e]:o};window.history.replaceState(l,"")}},[e,o]),[r,a]}import{useEffect as Wu,useRef as Mu}from"react";function TC(e){let o=Mu(void 0);return Wu(()=>{o.current=e}),o.current}import Qu from"swr";var _u=({variables:e}={})=>["useAllValidators",e],OC=(e,o)=>{let{config:t}=E(e),r=Qu(_u({variables:e}),async([,s])=>await yo({variables:{chain:t.bex.chainName,...s}}),{refreshInterval:18e4,...o?.opts});return{...r,refresh:()=>r.mutate()}};import Yu from"swr";function HC({allocation:e}){return Yu(e?["useApiEnrichedAllocation",e]:null,([,o])=>Ao({allocation:o}))}import Fu from"swr";import{isHex as Gu}from"viem";var qu=e=>e?["useApiValidator",e]:null,$r=(e,o)=>{let t=qu(e),r=o?.opts?.isEnabled??!0,s=Fu(r&&e?t:null,async([,a])=>{if(!a||!Gu(a))throw new Error(`Invalid validator ID: ${a}`);return ho({id:a})},{...o?.opts});return{...s,refresh:()=>s.mutate()}};import $u from"swr";import{usePublicClient as zu}from"@berachain/wagmi/hooks";import{rewardAllocatorFactoryAbi as Ku}from"@berachain/abis/pol/rewards/rewardAllocatorFactory";async function zr({publicClient:e,...o}){let{config:t}=E(o),r=await e.readContract({abi:Ku,address:t.pol.rewardAllocationFactory,functionName:"getBaselineAllocation"}),s=r.startBlock!==0n?await e.getBlock({blockNumber:r.startBlock}):{timestamp:0};return Ro(r,Number(s.timestamp))}function zC(){let e=zu();return $u(e?["baselineRewardAllocation"]:null,()=>(A(e),zr({publicClient:e})))}import Zu from"swr";var ju=({pubKey:e,first:o=1})=>{let r=Zu(e?["useDailyValidatorBlockStats",e,o]:null,async([,s,a])=>await bo({pubKey:s,first:a}),{refreshInterval:18e4});return{...r,refresh:()=>r.mutate()}};import Ju from"swr";import{usePublicClient as Xu}from"@berachain/wagmi/hooks";function ep(e){let o=Xu(),r=Ju(o?["useDefaultRewardAllocation"]:null,async()=>(A(o),await ko({client:o})),{...e?.opts});return{...r,refresh:()=>r.mutate()}}import{useMemo as jr}from"react";import rp from"swr";import{useBeraWallet as sp,usePublicClient as ap}from"@berachain/wagmi/hooks";import{zeroAddress as tp}from"viem";import{beraChefAbi as op}from"@berachain/abis/pol/rewards/beraChef";async function Zr({client:e,pubKey:o,...t}){let{config:r}=E(t);try{let s=await e.readContract({address:r.pol.beraChef,abi:op,functionName:"valRewardAllocator",args:[o]});return s===tp?null:s}catch(s){throw console.log("getValidatorRewardAllocatorAddress:",s),s}}function Jr(e,o){return!e||!o?!1:o.operator?.toLowerCase()===e.toLowerCase()}function np(e,o){return!e||!o?!1:o.rewardAllocator?o.rewardAllocator.toLowerCase()===e.toLowerCase():Jr(e,o)}function ip({pubKey:e,account:o},t){let r=ap(),s=W("mockValidatorOperator"),a=W("mockValidatorRewardAllocator"),n=r&&e?["useManagedValidatorRole",e]:null,{address:i}=sp(),l=o??i,u=rp(n,async([,m])=>{A(r);let[c,f]=await Promise.all([Bo({client:r,pubKey:m}),Zr({client:r,pubKey:m})]);return{operator:c??null,rewardAllocator:f}},{...t?.opts}),d=jr(()=>s||Jr(l,u.data),[l,s,u.data]),p=jr(()=>a||np(l,u.data),[l,a,u.data]);return{...u,data:u.data?{...u.data,hasOperatorRole:d,hasRewardAllocatorRole:p}:void 0,refresh:()=>u.mutate()}}import lp from"swr";import{keccak256 as up}from"viem";import{beaconDepositAbi as pp}from"@berachain/abis/pol/beaconDeposit";import{bgtAbi as dp}from"@berachain/abis/pol/bgt";import{beraChefAbi as mp}from"@berachain/abis/pol/rewards/beraChef";import{usePublicClient as cp}from"@berachain/wagmi/hooks";var Xr=({pubkey:e},o)=>{let t=cp(),r=e?["useOnChainValidator",e]:null,s=o.opts?.isEnabled??!0,a=lp(s&&t?r:null,async([,n])=>{A(t);let{config:i}=E({chainId:t.chain.id}),[l,u,d]=await Promise.all([t.readContract({address:i.depositContract,abi:pp,functionName:"getOperator",args:[n]}),t?.readContract({address:i.tokens.bgt,abi:dp,functionName:"boostees",args:[n]}),t.readContract({address:i.pol.beraChef,abi:mp,functionName:"getActiveRewardAllocation",args:[n]})]);return{id:up(n),pubkey:n,operator:l,votingPower:Number(u)}});return{...a,refresh:()=>{a.mutate()}}};import fp from"swr";import{usePublicClient as gp}from"@berachain/wagmi/hooks";var BI=({valPubKey:e,options:o})=>{let t=gp(),s=(o?.opts?.isEnabled??!0)&&t&&e?["useStakingPoolBatch",e]:null,a=fp(s,async([,n])=>(A(t),await Co({client:t,valPubKey:n})),{refreshInterval:1e4,...o?.opts});return{...a,refresh:()=>a.mutate()}};import yp from"swr";import{useBeraWallet as Ap,usePublicClient as hp}from"@berachain/wagmi/hooks";var bp=e=>{let{address:o}=Ap(),t=hp(),s=yp(t&&o?["useUserActiveValidators",o]:null,async([,a])=>await Po({account:a,publicClient:t}),{...e,refreshInterval:e?.opts?.refreshInterval??18e4,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import Rp from"swr";import{useBeraWallet as wp,usePublicClient as kp}from"@berachain/wagmi/hooks";var Cp=({pubkey:e,...o})=>{let{address:t}=wp(),r=kp(),s=o.account??t,n=Rp(s&&e?["useUserBoostsOnValidator",e,s]:null,async([,i,l])=>await Io({account:l,pubkey:i,publicClient:r}),{refreshInterval:1e5});return{...n,refresh:()=>n.mutate()}};import{useCallback as Ip,useMemo as Pp}from"react";import ts from"swr";import{useBeraWallet as Tp}from"@berachain/wagmi/hooks";var es=e=>{let o=new Set;return e.forEach(t=>{Array.isArray(t.rewards)&&t.rewards.forEach(r=>{r.token&&o.add(r.token)})}),o};var Ep=()=>{let{address:e}=Tp(),t=ts(e?["useUserClaimableIncentives",e]:null,async([,l])=>{if(!l)throw new L({message:"useUserClaimableIncentives needs a logged in account",level:"error"});return await ao({account:l})},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),r=t?.data,s=Pp(()=>{if(r){if(!Array.isArray(r)){ge.captureException(new L({message:"Incorrect aggregated incentives data receieved.",level:"error",extra:{allRewards:r,account:e}}));return}return es(r)}},[r,e]),n=ts(e&&r?["useUserClaimableIncentives",e,r]:null,async([,l,u])=>{if(!l)throw new B({property:"account",value:l,expected:"Address"});if(!u)return[];if(!Array.isArray(u))throw new B({message:"Incorrect aggregated incentives data receieved to calculate proofs.",property:"allRewards",value:u,expected:"Array",level:"error"});let d=new Set(u.map(m=>m.validator)),p=Array.from(d);return await Promise.all(p.map(async m=>({...await Jt({account:l,validator:m,page:1,perPage:1e4}),validator:m})))},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),i=Ip(()=>{t?.mutate(),n?.mutate()},[t,n]);return{...n,isLoading:t?.isLoading||n?.isLoading,tokenMap:s,refresh:i}};import xp from"swr/immutable";var XI=({account:e,validatorAddress:o})=>{let r=xp(e?["useUserStakingPositions",e,o]:null,async([s,a,n])=>{let i=await To(a);return n?i.filter(l=>l.validatorAddress.toLowerCase()===n.toLowerCase()):i});return{...r,refresh:()=>{r.mutate()}}};import{keccak256 as Sp}from"viem";function sP({pubkey:e},o){let{data:{validator:t,uptime:r}={},isLoading:s,error:a}=$r(Sp(e),o),{data:n,isLoading:i,error:l}=Xr({pubkey:e},o);return{data:{uptime:r,validator:t||n?{...t,...n,operator:n?.operator??t?.operator,dynamicData:{activeBoostAmount:n?.dynamicData?.activeBoostAmount??t?.dynamicData?.activeBoostAmount??"",queuedBoostAmount:t?.dynamicData?.queuedBoostAmount??"",usersActiveBoostCount:t?.dynamicData?.usersActiveBoostCount??0,usersQueuedBoostCount:t?.dynamicData?.usersQueuedBoostCount??0,allTimeDistributedBGTAmount:t?.dynamicData?.allTimeDistributedBGTAmount??"0",rewardRate:n?.dynamicData?.rewardRate??t?.dynamicData?.rewardRate??"",stakedBeraAmount:t?.dynamicData?.stakedBeraAmount??"",lastDayDistributedBGTAmount:t?.dynamicData?.lastDayDistributedBGTAmount??"",activeBoostAmountRank:t?.dynamicData?.activeBoostAmountRank??0,boostApr:t?.dynamicData?.boostApr??0,commissionOnIncentives:t?.dynamicData?.commissionOnIncentives??0},id:n?.id??t?.id,pubkey:n?.pubkey??t?.pubkey,metadata:n?.metadata??t?.metadata,rewardAllocationWeights:n?.rewardAllocationWeights??t?.rewardAllocationWeights??[]}:null},isLoading:s||i,error:a||l}}import Bp from"swr";function Op({pubkey:e,dayRange:o}){let r=Bp(e&&o?["useValidatorAnalytics",e,o]:null,async([,s,a])=>await Eo({pubkey:s,dayRange:a}),{refreshInterval:18e4});return{...r,refresh:()=>r.mutate()}}import vp from"swr";import{usePublicClient as Dp}from"@berachain/wagmi/hooks";var Lp=(e,o)=>{let t=Dp(),s=vp(t&&e?["useValidatorCommission",e]:null,async([,a])=>await xo({client:t,pubKey:a}),{...o?.opts});return{...s,refresh:()=>s.mutate()}};var Hp=e=>{let{data:o,isLoading:t}=Qr(),r=X();return{data:o?So(e,Number(o?.totalStakedBeraAmount),r):void 0,isLoading:t}};import Up from"swr";import{usePublicClient as Np}from"@berachain/wagmi/hooks";function Vp(e,o){let t=Np(),s=Up(t&&e?["useValidatorQueuedCommission",e]:null,async([,a])=>(A(t),await Oo({client:t,pubKey:a})),{...o?.opts});return{...s,refresh:()=>s.mutate()}}import Wp from"swr";import{usePublicClient as Mp}from"@berachain/wagmi/hooks";var Qp=(e,o)=>{let t=Mp(),s=Wp(t&&e?["useValidatorQueuedOperatorAddress",e]:null,async([,a])=>await vo({client:t,pubKey:a}),{...o?.opts});return{...s,refresh:()=>s.mutate()}};import _p from"swr";import{usePublicClient as Yp}from"@berachain/wagmi/hooks";var Fp=(e,o)=>{let t=Yp(),s=_p(t&&e?["useValidatorQueuedRewardAllocation",e]:null,async([,a])=>await Do({client:t,pubKey:a}),{...o?.opts});return{...s,refresh:()=>s.mutate()}};import Gp from"swr";import{usePublicClient as qp}from"@berachain/wagmi/hooks";function Kp(e,o){let t=qp(),s=Gp(t&&e?["useValidatorRewardAllocation",e]:null,async([,a])=>wo({client:t,pubKey:a}),{...o?.opts});return{...s,refresh:()=>s.mutate()}}export{ca as OracleMode,er as USE_AGGREGATORS_QUOTES_QUERY_KEY,Mr as reducer,Ic as useAggregatorsQuotes,Re as useAggregatorsRouterFeeBps,tr as useAllUserPools,ra as useAllUserPoolsQueryKey,OC as useAllValidators,_u as useAllValidatorsQueryKey,HC as useApiEnrichedAllocation,or as useApiPool,na as useApiPoolQueryKey,$r as useApiValidator,qu as useApiValidatorQueryKey,zC as useBaselineRewardAllocation,rA as useBendDemultiply,RA as useBendMultiply,VA as useBendZapSupply,mi as useBendZapSupplyHelper,Ou as useBeraContractWrite,Ok as useBeraCurrentPrice,Me as useBexStatus,Kb as useBgtAprSimulation,dl as useBgtUnstakedBalance,oC as useBlockToTimestamp,vr as useCappedGlobally,Dr as useCappedRelatively,yl as useClaimableFees,Hh as useCollateralWeights,zc as useCreatePool,ju as useDailyValidatorBlockStats,ep as useDefaultRewardAllocation,ah as useEnsoSwapBundle,$p as useEnsoUserTokensWithBalances,nf as useExploitedTokens,ka as useExploitedTokensQueryKey,Uo as useGetConvertToAssets,RC as useGetVerifiedAbi,Ia as useGlobalLiquidityAndSwapVolume,gR as useHighestVaultsAPR,CC as useHistoryState,Wh as useHoney24hVolume,Ab as useHoneyAlerts,Lr as useHoneyBalances,wb as useHoneyChartData,Ub as useHoneySwapState,Hr as useHoneyVaultsBalance,Ur as useIsBadCollateralAsset,Vr as useIsBasketModeEnabled,gf as useLiquidityMismatch,jf as useLpPosition,ip as useManagedValidatorRole,sn as useMultipleTokenApprovalsWithSlippage,yr as useMultipleTokenInformation,Ar as useOnChainPoolData,bn as useOnChainPoolDataQueryKey,Xr as useOnChainValidator,fr as usePollAllowances,Ce as usePollBalance,Qr as usePollGlobalData,IR as usePollMarkets,Pl as usePollMarketsQueryKey,In as usePollPoolCreationRelayerApproval,Be as usePollWalletBalances,Gg as usePool,zg as usePoolEvents,ey as usePoolHistoricalData,iy as usePools,Sn as usePoolsQueryKey,TC as usePrevious,Pe as usePriceImpact,se as usePythLatestPrices,Yb as usePythUpdateFee,OR as useQueuedBeraUnlock,MR as useRewardTokenToBeraRate,aw as useRewardVault,pr as useRewardVaultBalanceFromStakingToken,mt as useRewardVaultFromToken,dw as useRewardVaultIncentives,_l as useRewardVaultQueryKey,Kl as useRewardVaultRewards,kt as useRewardVaults,bl as useRewardVaultsQueryKey,zs as useSingleAggregatorQuote,kw as useStakedAPR,Hw as useStakedData,Fw as useStakedSnapshots,BI as useStakingPoolBatch,Vk as useStakingTokenInformation,jw as useStakingVaultsMetadata,Fr as useTokenCurrentPrice,oe as useTokenCurrentPrices,dr as useTokenInformation,Qk as useTokenPrice,Z as useTokenPrices,ee as useTokens,ok as useTotalStakedAmount,Kk as useTotalSupply,bp as useUserActiveValidators,Cp as useUserBoostsOnValidator,Ep as useUserClaimableIncentives,XI as useUserStakingPositions,nu as useUserVaultInfo,pu as useUserVaults,sP as useValidator,Op as useValidatorAnalytics,Lp as useValidatorCommission,Hp as useValidatorEstimatedBgtPerYear,Vp as useValidatorQueuedCommission,Qp as useValidatorQueuedOperatorAddress,Fp as useValidatorQueuedRewardAllocation,Kp as useValidatorRewardAllocation,hk as useVaultAddress,kk as useVaultHistory,gu as useVaultValidators,ch as useZapStakeBera};
4
4
  //# sourceMappingURL=exports.mjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } async function _asyncNullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return await rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkCHFETMC6cjs = require('../../chunk-CHFETMC6.cjs');require('../../chunk-WRFDB3QJ.cjs');require('../../chunk-JSTCUTXP.cjs');var _chunk33XNWMPPcjs = require('../../chunk-33XNWMPP.cjs');require('../../chunk-XNJLSA6P.cjs');var _chunkQVIAMSZ6cjs = require('../../chunk-QVIAMSZ6.cjs');require('../../chunk-S4CDSVLK.cjs');require('../../chunk-6JJIZCVY.cjs');var _react = require('react');var _graymatter = require('gray-matter'); var _graymatter2 = _interopRequireDefault(_graymatter);var _viem = require('viem');var _beraChef = require('@berachain/abis/pol/rewards/beraChef');var _rewardVault = require('@berachain/abis/pol/rewards/rewardVault');function R(t){return Object.values(t).some(r=>Array.isArray(r)?r.some(o=>typeof o=="object"&&o!==null?R(o):!!o):typeof r=="object"&&r!==null?R(r):!!r)}function D({proposal:t,currentTopic:r,onError:o}){let s=_chunkCHFETMC6cjs.e.call(void 0, {proposal:t,currentTopic:r}),n=[];if(s.actions=t.actions.map((e,i)=>{let l={};if(l.target=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"address",value:e.target}),e.type==="custom-action")if(e.input==="ABI")if(l.ABI=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"abi",value:e.ABI}),!e.functionSignature)l.functionSignature="Required";else try{let g=_viem.parseAbiItem.call(void 0, e.functionSignature);g.type!=="function"?(console.error("parsedSignatureAbi is not a function",g),l.functionSignature="Invalid ABI"):(l.args=g.inputs.map((y,m)=>{try{return"components"in y?_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:y.type,value:_optionalChain([e, 'access', _2 => _2.args, 'optionalAccess', _3 => _3[m]]),components:y.components}):_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:y.type,value:_optionalChain([e, 'access', _4 => _4.args, 'optionalAccess', _5 => _5[m]])})}catch (e2){return null}}),l.args.some(y=>y)||(n[i]=_viem.encodeFunctionData.call(void 0, {abi:[g],args:e.args})))}catch (e3){l.functionSignature="Invalid ABI"}else if(e.input==="rawCalldata")l.rawCalldata=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"hex",value:e.rawCalldata}),n[i]=e.rawCalldata;else if(e.input==="message")l.message=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"string",value:e.message}),n[i]=_viem.toHex.call(void 0, e.message);else throw new Error("Invalid input type");else if(e.type==="whitelist-reward-vault"||e.type==="blacklist-reward-vault"){if(l.vault=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"address",value:e.vault}),!l.vault){let g=e.type==="whitelist-reward-vault";n[i]=_viem.encodeFunctionData.call(void 0, {abi:_beraChef.beraChefAbi,functionName:"setVaultWhitelistedStatus",args:[e.vault,g,""]})}}else e.type==="whitelist-reward-vault-incentive"?(l.token=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"address",value:e.token}),l.minIncentiveRate=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"uint256",value:e.minIncentiveRate}),l.managerAddress=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"address",value:e.managerAddress}),!l.token&&!l.minIncentiveRate&&!l.managerAddress&&(n[i]=_viem.encodeFunctionData.call(void 0, {abi:_rewardVault.rewardVaultAbi,functionName:"whitelistIncentiveToken",args:[e.token,BigInt(e.minIncentiveRate),e.managerAddress]}))):e.type==="erc20-transfer"&&(l.amount=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"uint256",value:e.amount}),l.to=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"address",value:e.to}),!l.amount&&!l.to&&(n[i]=_viem.encodeFunctionData.call(void 0, {abi:_viem.erc20Abi,functionName:"transfer",args:[e.to,BigInt(e.amount)]})));return R(l)?l:null}),_optionalChain([o, 'optionalCall', _6 => _6(s)]),Object.getOwnPropertyNames(s).map(e=>s[e]).some(e=>Array.isArray(e)?e.filter(i=>i).length>0:e===null?!1:!!e)){console.warn("Proposal has errors",s);return}if(n.length===0)throw new Error("No actions submitted in proposal");let a=new URL(t.forumLink),u=_graymatter2.default.stringify(t.description,{title:t.title,topics:Array.from(t.topic.values()),forumLink:a.toString(),version:"1.0.0","content-encoding":"utf-8","content-type":"text/markdown",actions:t.actions.map(e=>{let i={type:e.type};return e.type==="custom-action"&&(i.inputType=e.input),i})});return[t.actions.map(e=>e.target),t.actions.map(e=>_nullishCoalesce(e.value, () => (0n))),n,u]}var W={type:"custom-action",target:"",ABI:"",value:0n,functionSignature:"",args:[],input:"ABI",rawCalldata:"0x",message:""},Z= exports.useCreateProposal =({initialData:t={},currentTopic:r,onError:o})=>{let[s,n]=_react.useState.call(void 0, {title:"",description:"",forumLink:"",actions:[W],...t,topic:new Set});_react.useEffect.call(void 0, ()=>{n(i=>({...i,topic:new Set([r.id])}))},[r]);let a=_react.useCallback.call(void 0, ()=>{n(i=>({...i,actions:[...i.actions,W]}))},[]),u=_react.useCallback.call(void 0, i=>{n(l=>{let A=[...l.actions];return A.splice(i,1),{...l,actions:A}})},[n]),e=_react.useCallback.call(void 0, ()=>s?D({proposal:s,currentTopic:r,onError:o}):void 0,[s,r]);return{proposal:s,setProposal:n,addProposalAction:a,removeProposalAction:u,computeParamsAndErrors:e}};var _immutable = require('swr/immutable'); var _immutable2 = _interopRequireDefault(_immutable);var _bgt = require('@berachain/abis/pol/bgt');var _hooks = require('@berachain/wagmi/hooks');var _berachainGovernance = require('@berachain/abis/gov/berachainGovernance');var N=({proposalId:t})=>{let r=_hooks.usePublicClient.call(void 0, );return _immutable2.default.call(void 0, r&&t?["useProposalSnapshot",t]:null,async([,s])=>{_chunk33XNWMPPcjs.b.call(void 0, r);let{config:n}=_chunkQVIAMSZ6cjs.a.call(void 0, {chainId:r.chain.id});return(await r.readContract({abi:_berachainGovernance.berachainGovernanceAbi,address:n.governance.governor,functionName:"proposalSnapshot",args:[BigInt(s)]})).toString()})};var St=t=>{let{address:r}=_hooks.useBeraWallet.call(void 0, ),o=_hooks.usePublicClient.call(void 0, ),s=t.wallet||r,{data:n}=N({proposalId:t.proposalId}),a=t.timepoint||n;return _immutable2.default.call(void 0, a&&o&&s?["useGetPastVotes",a,s]:null,async([,e,i])=>{_chunk33XNWMPPcjs.b.call(void 0, o);let{config:l}=_chunkQVIAMSZ6cjs.a.call(void 0, {chainId:o.chain.id});if(Number(e)>Date.now()/1e3)throw new Error("timepoint is in the future");let A=await o.readContract({abi:_bgt.bgtAbi,address:l.tokens.bgt,functionName:"getPastVotes",args:[i,BigInt(e)]});return _viem.formatUnits.call(void 0, A,18)})};var _swr = require('swr'); var _swr2 = _interopRequireDefault(_swr);var _t=({proposalId:t,wallet:r})=>{let{address:o}=_hooks.useBeraWallet.call(void 0, ),s=_hooks.usePublicClient.call(void 0, ),n=r||o;return _swr2.default.call(void 0, s&&n&&_viem.isAddress.call(void 0, n)?["useHasVoted",t,n]:null,([,a,u])=>{_chunk33XNWMPPcjs.b.call(void 0, s);let{config:e}=_chunkQVIAMSZ6cjs.a.call(void 0, {chainId:s.chain.id});return s.readContract({address:e.governance.governor,abi:_berachainGovernance.berachainGovernanceAbi,functionName:"hasVoted",args:[BigInt(a),u]})})};var _timeLock = require('@berachain/abis/gov/timeLock');var U="0xfd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783";var Bt=({account:t,...r})=>{let o=_hooks.usePublicClient.call(void 0, ),{config:s}=_chunkQVIAMSZ6cjs.a.call(void 0, r);return _swr2.default.call(void 0, t&&o?["useCancellerRole",t]:null,async([,a])=>(_chunk33XNWMPPcjs.b.call(void 0, o),await o.readContract({abi:_timeLock.timeLockAbi,address:s.governance.timelock,functionName:"hasRole",args:[U,a]})),{refreshInterval:18e4,revalidateOnFocus:!1})};var _infinite = require('swr/infinite'); var _infinite2 = _interopRequireDefault(_infinite);var _governance = require('@berachain/graphql/governance');var B=10,he=t=>{switch(t){case _governance.ProposalStatus.QuorumNotReached:return[_governance.ProposalStatus.Active,_governance.ProposalStatus.Pending];case _governance.ProposalStatus.PendingQueue:case _governance.ProposalStatus.Defeated:return[_governance.ProposalStatus.Active];case _governance.ProposalStatus.PendingExecution:return[_governance.ProposalStatus.InQueue];default:return[t]}};function Re(t,r={}){let o=2*(_nullishCoalesce(r.perPage, () => (B)));return(s,n)=>{if(s!==0&&n&&n.length<o)return null;let a=_optionalChain([r, 'access', _7 => _7.status_in, 'optionalAccess', _8 => _8.flatMap, 'call', _9 => _9(he), 'access', _10 => _10.filter, 'call', _11 => _11((u,e,i)=>i.indexOf(u)===e)]);return["usePollAllProposals",s,t,r.where,a,r.orderBy,r.orderDirection,o,r.text]}}function Ht(t,r){let o=_nullishCoalesce(_optionalChain([r, 'optionalAccess', _12 => _12.autoRefresh]), () => (!1)),s=_nullishCoalesce(t.perPage, () => (B)),n=2*s,a=Re(t.topic,t);async function u(m){if(!m)return[];let[,b,d,v,h,K,F,w,G]=m;return(await _asyncNullishCoalesce(await _chunkCHFETMC6cjs.d.call(void 0, {where:{topics_contains:[d],status_in:_optionalChain([h, 'optionalAccess', _13 => _13.length])?h:void 0,...v},orderBy:K,orderDirection:F,text:G,perPage:w,offset:b*w}), async () => ([]))).filter(Boolean)}let e=_infinite2.default.call(void 0, a,u,{initialSize:1,refreshInterval:_nullishCoalesce(_optionalChain([r, 'optionalAccess', _14 => _14.opts, 'optionalAccess', _15 => _15.refreshInterval]), () => (18e4)),..._optionalChain([r, 'optionalAccess', _16 => _16.opts])}),i=_react.useMemo.call(void 0, ()=>{if(!e.data)return[];let m=e.data.flat().filter(d=>d?_optionalChain([t, 'access', _17 => _17.status_in, 'optionalAccess', _18 => _18.length])?t.status_in.includes(d.status):!0:!1).sort((d,v)=>{if(!t.text)return 0;if(t.orderBy===_governance.Proposal_OrderBy.CreatedAt){let h=Number(v.createdAt)-Number(d.createdAt);return t.orderDirection==="asc"?h:-h}return 0}),b=[];for(let d=0;d<m.length;d+=s)b.push(m.slice(d,d+s));return b},[e.data,t,s]),l=_optionalChain([e, 'access', _19 => _19.data, 'optionalAccess', _20 => _20[e.data.length-1]]),A=!!l&&l.length===n,[g,y]=_react.useState.call(void 0, Date.now()/1e3);return _react.useEffect.call(void 0, ()=>{if(!o)return;let m=setInterval(()=>{y(Date.now()/1e3)},1e4);return()=>clearInterval(m)},[o]),_react.useEffect.call(void 0, ()=>{if(!e.data)return;let m=!1;for(let b of e.data.flat()){switch(b.status){case _governance.ProposalStatus.Pending:g>=Number(b.voteStartAt)&&(m=!0);break;case _governance.ProposalStatus.Active:g>=Number(b.voteEndAt)&&(m=!0);break;case _governance.ProposalStatus.InQueue:Date.now()/1e3+1>=Number(b.queueEnd)&&(m=!0);break;default:break}if(m)break}m&&e.mutate()},[e.data,g]),{...e,data:i,hasMore:A}}var Zt=(t,r)=>{let o=_nullishCoalesce(_optionalChain([r, 'optionalAccess', _21 => _21.autoRefresh]), () => (!1)),s=_hooks.usePublicClient.call(void 0, ),a=_swr2.default.call(void 0, t&&s?["usePollProposal",t]:null,([,i])=>(_chunk33XNWMPPcjs.b.call(void 0, s),_chunkCHFETMC6cjs.f.call(void 0, {proposalId:i,client:s})),{..._optionalChain([r, 'optionalAccess', _22 => _22.opts]),refreshInterval:_nullishCoalesce(_optionalChain([r, 'optionalAccess', _23 => _23.opts, 'optionalAccess', _24 => _24.refreshInterval]), () => (18e4))}),[u,e]=_react.useState.call(void 0, Date.now());return _react.useEffect.call(void 0, ()=>{if(!o)return;let i=setInterval(()=>{e(Date.now()/1e3)},1e4);return()=>clearInterval(i)},[]),_react.useEffect.call(void 0, ()=>{if(a.data!==void 0)switch(a.data.status){case _governance.ProposalStatus.Pending:u>=Number(a.data.voteStartAt)&&a.mutate();break;case _governance.ProposalStatus.Active:u>=Number(a.data.voteEndAt)&&a.mutate();break;case _governance.ProposalStatus.InQueue:Date.now()/1e3+1>=Number(a.data.queueEnd)&&a.mutate();break}},[_optionalChain([a, 'access', _25 => _25.data, 'optionalAccess', _26 => _26.status]),u]),{...a,refresh:()=>_optionalChain([a, 'optionalAccess', _27 => _27.mutate, 'optionalCall', _28 => _28()])}};var ar=t=>{let r=_hooks.usePublicClient.call(void 0, ),s=_swr2.default.call(void 0, r?["usePollProposalThreshold",t]:null,async([,n])=>{_chunk33XNWMPPcjs.b.call(void 0, r);let a=await r.readContract({address:n,abi:_berachainGovernance.berachainGovernanceAbi,functionName:"proposalThreshold"});return{votesThreshold:_viem.formatEther.call(void 0, a)}},{refreshInterval:18e4});return{...s,refresh:s.mutate}};var E=1e3,pr= exports.usePollProposalVotes =(t,r)=>_infinite2.default.call(void 0, _e(t,r),async([o,s])=>_chunkCHFETMC6cjs.i.call(void 0, {variables:{...t,limit:E,offset:E*s}}),{parallel:!0,initialSize:Number.POSITIVE_INFINITY}),_e= exports.usePollProposalVotesQueryKey =({...t},r)=>o=>o>Math.floor(r/E)?null:["usePollProposalVotes",o,E,t.proposalId,t.orderBy,t.orderDirection];var yr=t=>{let{address:r}=_hooks.useBeraWallet.call(void 0, ),o=_hooks.usePublicClient.call(void 0, ),n=_swr2.default.call(void 0, r?["usePollUserDelegates",r]:null,async([,a])=>{_chunk33XNWMPPcjs.b.call(void 0, o);let{config:u}=_chunkQVIAMSZ6cjs.a.call(void 0, {chainId:o.chain.id});if(!o||!a)throw new Error("usePollUserDelegates needs publicClient and account");let[e,i]=await Promise.all([o.readContract({address:u.tokens.bgt,abi:_bgt.bgtAbi,functionName:"delegates",args:[a]}),o.readContract({address:u.tokens.bgt,abi:_bgt.bgtAbi,functionName:"getVotes",args:[a]})]);return{delegate:e,currentVotes:_viem.formatEther.call(void 0, i)}},{..._optionalChain([t, 'optionalAccess', _29 => _29.opts]),refreshInterval:_nullishCoalesce(_optionalChain([t, 'optionalAccess', _30 => _30.opts, 'optionalAccess', _31 => _31.refreshInterval]), () => (18e4))});return{...n,refresh:()=>_optionalChain([n, 'optionalAccess', _32 => _32.mutate, 'optionalCall', _33 => _33()])}};var Er=t=>{let{data:r}=_hooks.useTransactionReceipt.call(void 0, {hash:t}),o=_hooks.usePublicClient.call(void 0, );return _swr2.default.call(void 0, r&&o?["useProposalFromTx",t]:null,async([,a])=>{if(!r)throw new Error("Transaction not found");if(r.transactionHash!==a)throw new Error("Transaction hash mismatch");return _chunkCHFETMC6cjs.h.call(void 0, {tx:r,publicClient:o})})};var Ve={0:"pending",1:"active",2:"canceled",3:"defeated",4:"succeeded",5:"queued",6:"expired",7:"executed"},Or= exports.useProposalState =({proposalId:t,governorAddress:r})=>{let o=_hooks.usePublicClient.call(void 0, );return _immutable2.default.call(void 0, r&&o&&t?["useProposalState",t]:null,async([,n])=>{_chunk33XNWMPPcjs.b.call(void 0, o);let a=await o.readContract({abi:_berachainGovernance.berachainGovernanceAbi,address:r,functionName:"state",args:[BigInt(n)]});return Ve[a]})};var He={0:"unset",1:"waiting",2:"ready",3:"done"};function Wr({proposalTimelockId:t,timelockAddress:r}){let o=_hooks.usePublicClient.call(void 0, );return _swr2.default.call(void 0, r&&o&&t?["useProposalTimelockState",t,r]:null,async([,n,a])=>{_chunk33XNWMPPcjs.b.call(void 0, o);let u=await o.readContract({abi:_timeLock.timeLockAbi,address:a,functionName:"getOperationState",args:[n]});return He[u]},{refreshInterval:18e4})}async function T({at:t,publicClient:r,...o}){let{config:s}=_chunkQVIAMSZ6cjs.a.call(void 0, o);_chunk33XNWMPPcjs.b.call(void 0, r);let n=await r.readContract({address:s.governance.governor,abi:_berachainGovernance.berachainGovernanceAbi,functionName:"quorum",blockTag:"pending",args:[BigInt(_nullishCoalesce(t, () => (Math.floor(Date.now()/1e3))))]});return _viem.formatEther.call(void 0, n)}function Hr({at:t},{isEnabled:r=!0}){let o=Math.floor(Date.now()/1e3),s=_hooks.usePublicClient.call(void 0, ),n=r&&s?["useQuorum",Number(t)>o?"now":t]:null,a=_swr2.default.call(void 0, n,async([,u])=>u==="now"?T({publicClient:s}):T({at:u,publicClient:s}));return{...a,data:a.data?Number(a.data):void 0}}exports.useCreateProposal = Z; exports.useGetPastVotes = St; exports.useHasVoted = _t; exports.useIsCanceller = Bt; exports.usePollAllProposals = Ht; exports.usePollAllProposalsQueryKey = Re; exports.usePollProposal = Zt; exports.usePollProposalThreshold = ar; exports.usePollProposalVotes = pr; exports.usePollProposalVotesQueryKey = _e; exports.usePollUserDelegates = yr; exports.useProposalFromTx = Er; exports.useProposalSnapshot = N; exports.useProposalState = Or; exports.useProposalTimelockState = Wr; exports.useQuorum = Hr;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } async function _asyncNullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return await rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkCHFETMC6cjs = require('../../chunk-CHFETMC6.cjs');require('../../chunk-WRFDB3QJ.cjs');require('../../chunk-JSTCUTXP.cjs');require('../../chunk-XNJLSA6P.cjs');var _chunk33XNWMPPcjs = require('../../chunk-33XNWMPP.cjs');var _chunkQVIAMSZ6cjs = require('../../chunk-QVIAMSZ6.cjs');require('../../chunk-S4CDSVLK.cjs');require('../../chunk-6JJIZCVY.cjs');var _react = require('react');var _graymatter = require('gray-matter'); var _graymatter2 = _interopRequireDefault(_graymatter);var _viem = require('viem');var _beraChef = require('@berachain/abis/pol/rewards/beraChef');var _rewardVault = require('@berachain/abis/pol/rewards/rewardVault');function R(t){return Object.values(t).some(r=>Array.isArray(r)?r.some(o=>typeof o=="object"&&o!==null?R(o):!!o):typeof r=="object"&&r!==null?R(r):!!r)}function D({proposal:t,currentTopic:r,onError:o}){let s=_chunkCHFETMC6cjs.e.call(void 0, {proposal:t,currentTopic:r}),n=[];if(s.actions=t.actions.map((e,i)=>{let l={};if(l.target=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"address",value:e.target}),e.type==="custom-action")if(e.input==="ABI")if(l.ABI=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"abi",value:e.ABI}),!e.functionSignature)l.functionSignature="Required";else try{let g=_viem.parseAbiItem.call(void 0, e.functionSignature);g.type!=="function"?(console.error("parsedSignatureAbi is not a function",g),l.functionSignature="Invalid ABI"):(l.args=g.inputs.map((y,m)=>{try{return"components"in y?_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:y.type,value:_optionalChain([e, 'access', _2 => _2.args, 'optionalAccess', _3 => _3[m]]),components:y.components}):_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:y.type,value:_optionalChain([e, 'access', _4 => _4.args, 'optionalAccess', _5 => _5[m]])})}catch (e2){return null}}),l.args.some(y=>y)||(n[i]=_viem.encodeFunctionData.call(void 0, {abi:[g],args:e.args})))}catch (e3){l.functionSignature="Invalid ABI"}else if(e.input==="rawCalldata")l.rawCalldata=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"hex",value:e.rawCalldata}),n[i]=e.rawCalldata;else if(e.input==="message")l.message=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"string",value:e.message}),n[i]=_viem.toHex.call(void 0, e.message);else throw new Error("Invalid input type");else if(e.type==="whitelist-reward-vault"||e.type==="blacklist-reward-vault"){if(l.vault=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"address",value:e.vault}),!l.vault){let g=e.type==="whitelist-reward-vault";n[i]=_viem.encodeFunctionData.call(void 0, {abi:_beraChef.beraChefAbi,functionName:"setVaultWhitelistedStatus",args:[e.vault,g,""]})}}else e.type==="whitelist-reward-vault-incentive"?(l.token=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"address",value:e.token}),l.minIncentiveRate=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"uint256",value:e.minIncentiveRate}),l.managerAddress=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"address",value:e.managerAddress}),!l.token&&!l.minIncentiveRate&&!l.managerAddress&&(n[i]=_viem.encodeFunctionData.call(void 0, {abi:_rewardVault.rewardVaultAbi,functionName:"whitelistIncentiveToken",args:[e.token,BigInt(e.minIncentiveRate),e.managerAddress]}))):e.type==="erc20-transfer"&&(l.amount=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"uint256",value:e.amount}),l.to=_chunkCHFETMC6cjs.a.call(void 0, {fieldOrType:"address",value:e.to}),!l.amount&&!l.to&&(n[i]=_viem.encodeFunctionData.call(void 0, {abi:_viem.erc20Abi,functionName:"transfer",args:[e.to,BigInt(e.amount)]})));return R(l)?l:null}),_optionalChain([o, 'optionalCall', _6 => _6(s)]),Object.getOwnPropertyNames(s).map(e=>s[e]).some(e=>Array.isArray(e)?e.filter(i=>i).length>0:e===null?!1:!!e)){console.warn("Proposal has errors",s);return}if(n.length===0)throw new Error("No actions submitted in proposal");let a=new URL(t.forumLink),u=_graymatter2.default.stringify(t.description,{title:t.title,topics:Array.from(t.topic.values()),forumLink:a.toString(),version:"1.0.0","content-encoding":"utf-8","content-type":"text/markdown",actions:t.actions.map(e=>{let i={type:e.type};return e.type==="custom-action"&&(i.inputType=e.input),i})});return[t.actions.map(e=>e.target),t.actions.map(e=>_nullishCoalesce(e.value, () => (0n))),n,u]}var W={type:"custom-action",target:"",ABI:"",value:0n,functionSignature:"",args:[],input:"ABI",rawCalldata:"0x",message:""},Z= exports.useCreateProposal =({initialData:t={},currentTopic:r,onError:o})=>{let[s,n]=_react.useState.call(void 0, {title:"",description:"",forumLink:"",actions:[W],...t,topic:new Set});_react.useEffect.call(void 0, ()=>{n(i=>({...i,topic:new Set([r.id])}))},[r]);let a=_react.useCallback.call(void 0, ()=>{n(i=>({...i,actions:[...i.actions,W]}))},[]),u=_react.useCallback.call(void 0, i=>{n(l=>{let A=[...l.actions];return A.splice(i,1),{...l,actions:A}})},[n]),e=_react.useCallback.call(void 0, ()=>s?D({proposal:s,currentTopic:r,onError:o}):void 0,[s,r]);return{proposal:s,setProposal:n,addProposalAction:a,removeProposalAction:u,computeParamsAndErrors:e}};var _immutable = require('swr/immutable'); var _immutable2 = _interopRequireDefault(_immutable);var _bgt = require('@berachain/abis/pol/bgt');var _hooks = require('@berachain/wagmi/hooks');var _berachainGovernance = require('@berachain/abis/gov/berachainGovernance');var N=({proposalId:t})=>{let r=_hooks.usePublicClient.call(void 0, );return _immutable2.default.call(void 0, r&&t?["useProposalSnapshot",t]:null,async([,s])=>{_chunk33XNWMPPcjs.b.call(void 0, r);let{config:n}=_chunkQVIAMSZ6cjs.a.call(void 0, {chainId:r.chain.id});return(await r.readContract({abi:_berachainGovernance.berachainGovernanceAbi,address:n.governance.governor,functionName:"proposalSnapshot",args:[BigInt(s)]})).toString()})};var St=t=>{let{address:r}=_hooks.useBeraWallet.call(void 0, ),o=_hooks.usePublicClient.call(void 0, ),s=t.wallet||r,{data:n}=N({proposalId:t.proposalId}),a=t.timepoint||n;return _immutable2.default.call(void 0, a&&o&&s?["useGetPastVotes",a,s]:null,async([,e,i])=>{_chunk33XNWMPPcjs.b.call(void 0, o);let{config:l}=_chunkQVIAMSZ6cjs.a.call(void 0, {chainId:o.chain.id});if(Number(e)>Date.now()/1e3)throw new Error("timepoint is in the future");let A=await o.readContract({abi:_bgt.bgtAbi,address:l.tokens.bgt,functionName:"getPastVotes",args:[i,BigInt(e)]});return _viem.formatUnits.call(void 0, A,18)})};var _swr = require('swr'); var _swr2 = _interopRequireDefault(_swr);var _t=({proposalId:t,wallet:r})=>{let{address:o}=_hooks.useBeraWallet.call(void 0, ),s=_hooks.usePublicClient.call(void 0, ),n=r||o;return _swr2.default.call(void 0, s&&n&&_viem.isAddress.call(void 0, n)?["useHasVoted",t,n]:null,([,a,u])=>{_chunk33XNWMPPcjs.b.call(void 0, s);let{config:e}=_chunkQVIAMSZ6cjs.a.call(void 0, {chainId:s.chain.id});return s.readContract({address:e.governance.governor,abi:_berachainGovernance.berachainGovernanceAbi,functionName:"hasVoted",args:[BigInt(a),u]})})};var _timeLock = require('@berachain/abis/gov/timeLock');var U="0xfd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783";var Bt=({account:t,...r})=>{let o=_hooks.usePublicClient.call(void 0, ),{config:s}=_chunkQVIAMSZ6cjs.a.call(void 0, r);return _swr2.default.call(void 0, t&&o?["useCancellerRole",t]:null,async([,a])=>(_chunk33XNWMPPcjs.b.call(void 0, o),await o.readContract({abi:_timeLock.timeLockAbi,address:s.governance.timelock,functionName:"hasRole",args:[U,a]})),{refreshInterval:18e4,revalidateOnFocus:!1})};var _infinite = require('swr/infinite'); var _infinite2 = _interopRequireDefault(_infinite);var _governance = require('@berachain/graphql/governance');var B=10,he=t=>{switch(t){case _governance.ProposalStatus.QuorumNotReached:return[_governance.ProposalStatus.Active,_governance.ProposalStatus.Pending];case _governance.ProposalStatus.PendingQueue:case _governance.ProposalStatus.Defeated:return[_governance.ProposalStatus.Active];case _governance.ProposalStatus.PendingExecution:return[_governance.ProposalStatus.InQueue];default:return[t]}};function Re(t,r={}){let o=2*(_nullishCoalesce(r.perPage, () => (B)));return(s,n)=>{if(s!==0&&n&&n.length<o)return null;let a=_optionalChain([r, 'access', _7 => _7.status_in, 'optionalAccess', _8 => _8.flatMap, 'call', _9 => _9(he), 'access', _10 => _10.filter, 'call', _11 => _11((u,e,i)=>i.indexOf(u)===e)]);return["usePollAllProposals",s,t,r.where,a,r.orderBy,r.orderDirection,o,r.text]}}function Ht(t,r){let o=_nullishCoalesce(_optionalChain([r, 'optionalAccess', _12 => _12.autoRefresh]), () => (!1)),s=_nullishCoalesce(t.perPage, () => (B)),n=2*s,a=Re(t.topic,t);async function u(m){if(!m)return[];let[,b,d,v,h,K,F,w,G]=m;return(await _asyncNullishCoalesce(await _chunkCHFETMC6cjs.d.call(void 0, {where:{topics_contains:[d],status_in:_optionalChain([h, 'optionalAccess', _13 => _13.length])?h:void 0,...v},orderBy:K,orderDirection:F,text:G,perPage:w,offset:b*w}), async () => ([]))).filter(Boolean)}let e=_infinite2.default.call(void 0, a,u,{initialSize:1,refreshInterval:_nullishCoalesce(_optionalChain([r, 'optionalAccess', _14 => _14.opts, 'optionalAccess', _15 => _15.refreshInterval]), () => (18e4)),..._optionalChain([r, 'optionalAccess', _16 => _16.opts])}),i=_react.useMemo.call(void 0, ()=>{if(!e.data)return[];let m=e.data.flat().filter(d=>d?_optionalChain([t, 'access', _17 => _17.status_in, 'optionalAccess', _18 => _18.length])?t.status_in.includes(d.status):!0:!1).sort((d,v)=>{if(!t.text)return 0;if(t.orderBy===_governance.Proposal_OrderBy.CreatedAt){let h=Number(v.createdAt)-Number(d.createdAt);return t.orderDirection==="asc"?h:-h}return 0}),b=[];for(let d=0;d<m.length;d+=s)b.push(m.slice(d,d+s));return b},[e.data,t,s]),l=_optionalChain([e, 'access', _19 => _19.data, 'optionalAccess', _20 => _20[e.data.length-1]]),A=!!l&&l.length===n,[g,y]=_react.useState.call(void 0, Date.now()/1e3);return _react.useEffect.call(void 0, ()=>{if(!o)return;let m=setInterval(()=>{y(Date.now()/1e3)},1e4);return()=>clearInterval(m)},[o]),_react.useEffect.call(void 0, ()=>{if(!e.data)return;let m=!1;for(let b of e.data.flat()){switch(b.status){case _governance.ProposalStatus.Pending:g>=Number(b.voteStartAt)&&(m=!0);break;case _governance.ProposalStatus.Active:g>=Number(b.voteEndAt)&&(m=!0);break;case _governance.ProposalStatus.InQueue:Date.now()/1e3+1>=Number(b.queueEnd)&&(m=!0);break;default:break}if(m)break}m&&e.mutate()},[e.data,g]),{...e,data:i,hasMore:A}}var Zt=(t,r)=>{let o=_nullishCoalesce(_optionalChain([r, 'optionalAccess', _21 => _21.autoRefresh]), () => (!1)),s=_hooks.usePublicClient.call(void 0, ),a=_swr2.default.call(void 0, t&&s?["usePollProposal",t]:null,([,i])=>(_chunk33XNWMPPcjs.b.call(void 0, s),_chunkCHFETMC6cjs.f.call(void 0, {proposalId:i,client:s})),{..._optionalChain([r, 'optionalAccess', _22 => _22.opts]),refreshInterval:_nullishCoalesce(_optionalChain([r, 'optionalAccess', _23 => _23.opts, 'optionalAccess', _24 => _24.refreshInterval]), () => (18e4))}),[u,e]=_react.useState.call(void 0, Date.now());return _react.useEffect.call(void 0, ()=>{if(!o)return;let i=setInterval(()=>{e(Date.now()/1e3)},1e4);return()=>clearInterval(i)},[]),_react.useEffect.call(void 0, ()=>{if(a.data!==void 0)switch(a.data.status){case _governance.ProposalStatus.Pending:u>=Number(a.data.voteStartAt)&&a.mutate();break;case _governance.ProposalStatus.Active:u>=Number(a.data.voteEndAt)&&a.mutate();break;case _governance.ProposalStatus.InQueue:Date.now()/1e3+1>=Number(a.data.queueEnd)&&a.mutate();break}},[_optionalChain([a, 'access', _25 => _25.data, 'optionalAccess', _26 => _26.status]),u]),{...a,refresh:()=>_optionalChain([a, 'optionalAccess', _27 => _27.mutate, 'optionalCall', _28 => _28()])}};var ar=t=>{let r=_hooks.usePublicClient.call(void 0, ),s=_swr2.default.call(void 0, r?["usePollProposalThreshold",t]:null,async([,n])=>{_chunk33XNWMPPcjs.b.call(void 0, r);let a=await r.readContract({address:n,abi:_berachainGovernance.berachainGovernanceAbi,functionName:"proposalThreshold"});return{votesThreshold:_viem.formatEther.call(void 0, a)}},{refreshInterval:18e4});return{...s,refresh:s.mutate}};var E=1e3,pr= exports.usePollProposalVotes =(t,r)=>_infinite2.default.call(void 0, _e(t,r),async([o,s])=>_chunkCHFETMC6cjs.i.call(void 0, {variables:{...t,limit:E,offset:E*s}}),{parallel:!0,initialSize:Number.POSITIVE_INFINITY}),_e= exports.usePollProposalVotesQueryKey =({...t},r)=>o=>o>Math.floor(r/E)?null:["usePollProposalVotes",o,E,t.proposalId,t.orderBy,t.orderDirection];var yr=t=>{let{address:r}=_hooks.useBeraWallet.call(void 0, ),o=_hooks.usePublicClient.call(void 0, ),n=_swr2.default.call(void 0, r?["usePollUserDelegates",r]:null,async([,a])=>{_chunk33XNWMPPcjs.b.call(void 0, o);let{config:u}=_chunkQVIAMSZ6cjs.a.call(void 0, {chainId:o.chain.id});if(!o||!a)throw new Error("usePollUserDelegates needs publicClient and account");let[e,i]=await Promise.all([o.readContract({address:u.tokens.bgt,abi:_bgt.bgtAbi,functionName:"delegates",args:[a]}),o.readContract({address:u.tokens.bgt,abi:_bgt.bgtAbi,functionName:"getVotes",args:[a]})]);return{delegate:e,currentVotes:_viem.formatEther.call(void 0, i)}},{..._optionalChain([t, 'optionalAccess', _29 => _29.opts]),refreshInterval:_nullishCoalesce(_optionalChain([t, 'optionalAccess', _30 => _30.opts, 'optionalAccess', _31 => _31.refreshInterval]), () => (18e4))});return{...n,refresh:()=>_optionalChain([n, 'optionalAccess', _32 => _32.mutate, 'optionalCall', _33 => _33()])}};var Er=t=>{let{data:r}=_hooks.useTransactionReceipt.call(void 0, {hash:t}),o=_hooks.usePublicClient.call(void 0, );return _swr2.default.call(void 0, r&&o?["useProposalFromTx",t]:null,async([,a])=>{if(!r)throw new Error("Transaction not found");if(r.transactionHash!==a)throw new Error("Transaction hash mismatch");return _chunkCHFETMC6cjs.h.call(void 0, {tx:r,publicClient:o})})};var Ve={0:"pending",1:"active",2:"canceled",3:"defeated",4:"succeeded",5:"queued",6:"expired",7:"executed"},Or= exports.useProposalState =({proposalId:t,governorAddress:r})=>{let o=_hooks.usePublicClient.call(void 0, );return _immutable2.default.call(void 0, r&&o&&t?["useProposalState",t]:null,async([,n])=>{_chunk33XNWMPPcjs.b.call(void 0, o);let a=await o.readContract({abi:_berachainGovernance.berachainGovernanceAbi,address:r,functionName:"state",args:[BigInt(n)]});return Ve[a]})};var He={0:"unset",1:"waiting",2:"ready",3:"done"};function Wr({proposalTimelockId:t,timelockAddress:r}){let o=_hooks.usePublicClient.call(void 0, );return _swr2.default.call(void 0, r&&o&&t?["useProposalTimelockState",t,r]:null,async([,n,a])=>{_chunk33XNWMPPcjs.b.call(void 0, o);let u=await o.readContract({abi:_timeLock.timeLockAbi,address:a,functionName:"getOperationState",args:[n]});return He[u]},{refreshInterval:18e4})}async function T({at:t,publicClient:r,...o}){let{config:s}=_chunkQVIAMSZ6cjs.a.call(void 0, o);_chunk33XNWMPPcjs.b.call(void 0, r);let n=await r.readContract({address:s.governance.governor,abi:_berachainGovernance.berachainGovernanceAbi,functionName:"quorum",blockTag:"pending",args:[BigInt(_nullishCoalesce(t, () => (Math.floor(Date.now()/1e3))))]});return _viem.formatEther.call(void 0, n)}function Hr({at:t},{isEnabled:r=!0}){let o=Math.floor(Date.now()/1e3),s=_hooks.usePublicClient.call(void 0, ),n=r&&s?["useQuorum",Number(t)>o?"now":t]:null,a=_swr2.default.call(void 0, n,async([,u])=>u==="now"?T({publicClient:s}):T({at:u,publicClient:s}));return{...a,data:a.data?Number(a.data):void 0}}exports.useCreateProposal = Z; exports.useGetPastVotes = St; exports.useHasVoted = _t; exports.useIsCanceller = Bt; exports.usePollAllProposals = Ht; exports.usePollAllProposalsQueryKey = Re; exports.usePollProposal = Zt; exports.usePollProposalThreshold = ar; exports.usePollProposalVotes = pr; exports.usePollProposalVotesQueryKey = _e; exports.usePollUserDelegates = yr; exports.useProposalFromTx = Er; exports.useProposalSnapshot = N; exports.useProposalState = Or; exports.useProposalTimelockState = Wr; exports.useQuorum = Hr;
2
2
  //# sourceMappingURL=exports.cjs.map