1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1383,3912,4320,8491],{3746:(e,a,t)=>{t.d(a,{A:()=>i});var n=t(17654),r=t.n(n),s=t(67896);let i=r()(async()=>Object.entries((await (0,s.A)("https://api.curve.finance/api/getAllGauges")).data).map(([e,a])=>({...a,blockchainId:a.blockchainId??(!1===a.side_chain?"ethereum":e.split("-")[0])})),{promise:!0,maxAge:6e4})},3912:(e,a,t)=>{t.d(a,{A:()=>k,onVaultsUpdatedSub:()=>w});var n=t(17654),r=t.n(n),s=t(93043),i=t(87233),l=t(66629),o=t(33027),d=t(37851),u=t(68056),c=t.n(u),p=t(74320),m=t(95589),y=t(22724);let b=JSON.parse('[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]');var g=t(55255),f=t(81403);let h=r()(async(e,a,t,n,r)=>{if(0===e.length)return(0,l.pl)(a.map(({id:e})=>[e,[]]));let u={account:t,library:n,chainId:r},{vaultsBalances:h,claimableByVaults:v,vaultsVersions:A,totalFees:w}=(0,i.Wr)(await (0,i.Ay)([...(0,l.ed)(e.map(({data:e,metaData:{pool:a}})=>[{address:a.stakingAddress,abi:b,methodName:"balanceOf",params:[e],metaData:{pool:
1a,vaultAddress:e,groupKey:"vaultsBalances"},web3Data:u},{address:e,abi:g,methodName:"vaultVersion",metaData:{pool:a,vaultAddress:e,groupKey:"vaultsVersions"},web3Data:u},{address:e,abi:g,methodName:"earned",metaData:{pool:a,vaultAddress:e,groupKey:"claimableByVaults"},web3Data:u}])),{address:s.default.FeeRegistry.address,abi:s.default.FeeRegistry.abi,methodName:"totalFees",metaData:{groupKey:"totalFees"},web3Data:u}])),k=(0,p.wt)(w[0].data,0).div(1e4),T=await (0,y.A)();return c()(e.map(({data:e,metaData:{pool:a}})=>{let n=({metaData:t})=>t.pool.id===a.id&&t.vaultAddress===e,r="FxusdRebalancePool"===a.vaultSubtype,s="RusdRebalancePool"===a.vaultSubtype,i="BtcusdRebalancePool"===a.vaultSubtype,u="CvxusdRebalancePool"===a.vaultSubtype,c=f.yV.includes(a.id),y=(0,p.tT)(h.filter(n)[0].data).div(10**(r?m.Ay.fxusd.decimals:s?m.Ay.rusd.decimals:i?m.Ay.btcusd.decimals:u?m.Ay.cvxusd.decimals:c?m.Ay.fxbase.decimals:a.stakingTokenDecimals)),b=y.times(a.stakingTokenUsdPrice),g=v.find(n).data,w=(0,p.wt)(g.total_earned[0],18),x=((0,m.XI)(g.token_addresses[0],m.Ay.fxn)?w.div((0,d.A)(1).minus(k)):w).minus(w),C=g.total_earned.map((e,t)=>{let n=g.token_addresses[t];if(n===o.cF)return null;let r=a.rewardCoins.find(({address:e})=>e.toLowerCase()===n.toLowerCase())||Array.from(Object.values(m.Ay)).find(({address:e})=>e?.toLowerCase()===n.toLowerCase()),s=r.usdPrice||T[n.toLowerCase()],i=(0,p.tT)(e).div((0,d.A)(10).pow(r.decimals)),l=a.vaultType===f.aW[0]&&t>0&&(0,m.XI)(r,m.Ay.fxn)?i.minus(x):i;return[l.toNumber(),l.times(s).toNumber(),{...r,usdPrice:s}]}).filter(e=>null!==e);return{address:e,version:(0,p.tT)(A.find(n).data).toNumber(),...t?{contractKey:`${t}-vault-${a.id}`}:{},liquidityTotal:y,usdTotal:b,poolId:a.id,claimableRewards:C.map(([e])=>e),claimableRewardsUsdTotal:(0,l.EJ)(C.map(([,e])=>e))}}),"poolId")}
1,{promise:!0,maxAge:8e3,normalizer:([e,a,t,n,r])=>`${e.length}-${a.length}-${t}`}),v={},A=[],w=e=>A.push(e),k=r()(async(e,a,t,n)=>{let r=(await (0,i.Ay)(e.map(e=>({address:s.default.PoolRegistry.address,abi:s.default.PoolRegistry.abi,methodName:"vaultMap",params:[e.id,a],metaData:{pool:e},web3Data:{account:a,library:t,chainId:n}})))).filter(({data:e})=>e!==o.cF),d=await h(r,e,a,t,n),u=(0,l.pl)(e.map(({id:e})=>[e,d[e]?.length>0?{...d[e][0]}:null]));return v[a]=u,A.forEach(e=>e(v)),u},{promise:!0,maxAge:8e3,normalizer:([e,a,t,n])=>`${e.length}-${a}`})},22724:(e,a,t)=>{t.d(a,{A:()=>c});var n=t(17654),r=t.n(n),s=t(66629),i=t(41732),l=t(81996),o=t(68853),d=t(48491),u=t(81403);let c=r()(async()=>{await (0,i.Kc)(d.arePoolsLoaded);let e=(0,s.ed)(await Promise.all(u.Ek.map(e=>(0,o.A)(e))));return(0,s.pl)(Array.from(e.reduce((e,{coins:a,usdTotal:t,blockchainId:n})=>(t<1e3||a.forEach(({address:a,usdPrice:r})=>{if(null!==r&&!Number.isNaN(r)){let s=(0,l.bV)(a,n),i=e.get(s)||[];e.set(s,[...i,{usdPrice:r,poolUsdTotal:t}])}}),e),new Map).entries()).map(([e,a])=>[e,a.sort(({poolUsdTotal:e},{poolUsdTotal:a})=>e>a?-1:+(a>e))[0].usdPrice]))},{promise:!0,maxAge:18e4})},48491:(e,a,t)=>{t.r(a),t.d(a,{areLendingVaultsLoaded:()=>c,arePoolsLoaded:()=>h,default:()=>T,findLendingVaultForGaugeAddress:()=>w,findLendingVaultForLpTokenAddress:()=>k,findPoolForGaugeAddress:()=>b,findPoolForLpTokenAddress:()=>g,getCurveLendingVaults:()=>v,getCurvePools:()=>f,getLendingVaultByConvexPoolId:()=>A,getPoolByConvexPoolId:()=>y,getPoolById:()=>m,lendingVaults:()=>p});var n=t(31804),r=t(81403),s=t(17654),i=t.n(s),l=t(55969),o=t(67896);let d=!1,u=[];setTimeout(async()=>{let[e,a]=await Promise.all([(await (0,o.A)(`${n.Rh.curve}/api/curve/lending-vaults`)).lendingVaults.map(e=>({...e,blockchainId:"ethereum"})),(await (0,o.A)(`${n.Rh.curve}/api/curve/lending-vaults-fraxtal`)).lendingVaults.map(e=>({...e,blockchainId:"fraxtal"}))]),t=[...(0,l.Ph)(e),...(0,l.Ph)(a)].map(e=>({...e,...{isLendingVault:!0,get name(){return`${e.assets.borrowed.symbol} (${e.assets.collateral.symbol} collateral)`},get lendingVaultUrl(){return e.lendingVaultUrls.deposit},get isKilled(){return e.isGaugeKilled||e.convexPoolData.shutdown},get lpTokenContractKey(){return`${e.blockchainId}${e.convexPoolData.id}LendingVaultLpToken`},get lpTokenInfo(){return{symbol:"LP",name:`${e.assets.borrowed.symbol}(${e.assets.collateral.symbol}) LP`,lendingVaultAssets:e.assets,wrapperCoinId:"crv"}},get wrappedLpTokenContractKey(){return`${e.blockchainId}${e.convexPoolData.id}LendingVaultWrappedLpToken`},get rewardContractKey(){return`${e.blockchainId}${e.convexPoolData.id}LendingVaultReward`},get usesHarvester(){return"ethereum"===e.blockchainId},get usesDepositToken(){return"ethereum"===e.blockchainId},get key(){return(0,l.Ye)(e.blockchainId,e.address,e.convexPoolData.id)},get curveKey(){return(0,l.dD)(e.blockchainId,e.address)}}}));u.push(...t),d=!0},0);let c=()=>d,p=u,m=(e,a="ethereum")=>l.Ay.find(t=>e===t.id&&t.blockchainId===a)||l.Ay.find(t=>e===t.idAlias&&t.blockchainId===a),y=(e,a="ethereum")=>l.Ay.find(t=>e===t.convexPoolData.id&&t.blockchainId===a),b=(e,a="ethereum")=>{let t=e?.toLowerCase();return l.Ay.find(e=>e?.gaugeAddress?.toLowerCase()===t&&e.blockchainId===a)},g=i()((e,a="ethereum",t=!1)=>{let n=e.toLowerCase(),r=l.Ay.find(e=>(e.lpTokenAddress||e.address).toLowerCase()===n&&e.blockchainId===a);if(!r&&!t)throw Error(`Curve pool couldnât be found for lp token "${e}", likely due to Curve pools data not being loaded yet.`);return r},{length:3,max:20}),f=i()(e=>{if(n.HL&&!r.Ek.includes(e))throw Error("Invalid blockchainId used when calling getCurvePools, must be a valid CURVE_BLOCKCHAIN_IDS");return l.Ay.filter(a=>a.blockchainId===e)},{normalizer:([e])=>`${l.Ay.length}-${e}`,max:20}),h=()=>l.Ay?.length>0,v=i()(e=>{if(n.HL&&!r.Ek.includes(e))throw Error("Invalid blockchainId used when calling getCurveLendingVaults, must be a valid CURVE_BLOCKCHAIN_IDS");return p.filter(a=>a.blockchainId===e)},{normalizer:([e])=>`${p.length}-${e}`,max:20}),A=(e,a="ethereum")=>p.find(t=>e===t.convexPoolData.id&&t.blockchainId===a),w=(e,a="ethereum")=>{let t=e?.toLowerCase();return p.find(e=>e?.gaugeAddress?.toLowerCase()===t&&e.blockchainId===a)},k=i()((e,a="ethereum",t=!1)=>{let n=e.toLowerCase(),r=p.find(e=>e.address.toLowerCase()===n&&e.blockchainId===a);if(!r&&!t)throw Error(`Curve lending vault couldnât be found for lp token "${e}", likely due to Curve lending vault data not being loaded yet.`);return r},{length:3,max:20}),T=l.Ay},68853:(e,a,t)=>{t.d(a,{A:()=>u});var n=t(3667),r=t.n(n),s=t(17654),i=t.n(s),l=t(67896),o=t(5901),d=t(3746);let u=i()(async e=>{if(void 0===e)throw Error("getAllCurvePoolsData must be called with param blockchainId");let a=Array.from(Object.values((await (0,l.A)(`https://api.curve.finance/api/getPools/all/${e}`)).data.poolData??{}
1)),t=await (0,d.A)(),n=a.map(a=>{let n=t.find(({isPool:e,swap:t,blockchainId:n})=>e&&(0,o.lc)(t)===(0,o.lc)(a.address)&&n===a.blockchainId);return n?{...a,gaugeAddress:n.gauge,rootGaugeAddress:n.rootGauge||n.gauge,isGaugeKilled:n.is_killed,isGaugeInController:!n.hasNoCrv,gaugeStatus:n.gaugeStatus,gaugeWeight:n.gauge_controller.get_gauge_weight,gaugeRelativeWeight:n.gauge_controller.gauge_relative_weight,coins:a.coins.map(t=>({...t,blockchainId:a.blockchainId||e})),blockchainId:a.blockchainId||e}:a});return r()(n,({address:e,blockchainId:a})=>`${a}-${e}`)},{promise:!0,maxAge:6e4})},74320:(e,a,t)=>{t.d(a,{DF:()=>i,tT:()=>s,wt:()=>r});var n=t(37851);let r=(e,a)=>"bigint"==typeof e?(0,n.A)(e.toString()).div((0,n.A)(10).pow(a)):void 0!==e?(0,n.A)(e).div((0,n.A)(10).pow(a)):void 0,s=e=>"bigint"==typeof e?(0,n.A)(e.toString()):(0,n.A)(e),i=(e,a)=>{if(void 0===e||void 0===a)throw Error("Missing some mandatory parameters for numberToUint(number, decimals)");return(0,n.A)(e).times(new n.A(10).pow(a)).toFixed()}},81996:(e,a,t)=>{t.d(a,{Ld:()=>f,bV:()=>b,fV:()=>k,px:()=>_});var n=t(17654),r=t.n(n),s=t(63144),i=t.n(s),l=t(95589),o=t(91827),d=t.n(o),u=t(66629),c=t(34668),p=t(5901),m=t(67896);let y={ethereum:"ethereum",arbitrum:"arbitrum",polygon:"polygon-pos",fraxtal:"fraxtal"},b=(e,a)=>"ethereum"===a?(0,p.lc)(e):`${a}-${(0,p.lc)(e)}`,g=[],f=e=>g.push(e),h=(e,a)=>`${y[a]}:${e.toLowerCase()}`,v="0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44",A=new Map([[h("0x8762db106b2c2a0bccb3a80d1ed41273552616e8","ethereum"),h("0x320623b8e4ff03373931769a31fc52a4e78b5d70","ethereum")],[h("0x4da27a545c0c5b758a6ba100e3a049001de870f5","ethereum"),h("0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9","ethereum")],[h("0xedb67ee1b171c4ec66e6c10ec43edbba20fae8e9","ethereum"),h(v,"ethereum")],[h(l.Ay.crvusd_arbi.address,"arbitrum"),h(l.Ay.crvusd.address,"ethereum")],[h(l.Ay.crvusd_poly.address,"polygon"),h(l.Ay.crvusd.address,"ethereum")],[h(l.Ay.crvusd_fraxtal.address,"fraxtal"),h(l.Ay.crvusd.address,"ethereum")],[h(l.Ay.arb_arbi.address,"arbitrum"),h(l.Ay.arb.address,"ethereum")],[h("0x179F38f78346F5942E95C5C59CB1da7F55Cf7CAd","arbitrum"),h(l.Ay.fxn.address,"ethereum")],[h(l.Ay.cvx_fraxtal.address,"fraxtal"),h(l.Ay.cvx.address,"ethereum")],[h(l.Ay.acvx.address,"ethereum"),h(l.Ay.cvx.address,"ethereum")],[h("0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B","fraxtal"),h(l.Ay.cvx.address,"ethereum")]]),w=new Map(Array.from(A.entries()).map(([e,a])=>[a,e])),k={},T={ethereum:[],arbitrum:[],polygon:[],fraxtal:[]},x=[b("0x330416c863f2acce7af9c9314b422d24c672534a","ethereum"),b("0x34635280737b5bfe6c7dc2fc3065d60d66e78185","ethereum"),b("0x365accfca291e7d3914637abf1f7635db165bb09","arbitrum"),b("0x870908873b6f940e025a7c6879678cb82ec6c9b6","arbitrum"),b("0x06d65ec13465ac5a4376dc101e1141252c4addf8","arbitrum"),b("0x346e74dc9935a9b02eb34fb84658a66010fa056d","arbitrum")];x.forEach(e=>{k[e]={usdPrice:0,timestamp:2*(0,c.j2)()}});let C=r()(async(e,a)=>{let t=e.map(e=>A.get(h((0,p.lc)(e),a))||h(e,a)),n=await (0,m.A)(`https://coins.llama.fi/prices/current/${t.join(",")}`).catch(e=>(console.error("Failed to retrieve some prices from Defillama â"),console.log(e),{}));return(0,u.pl)((0,u.ed)(Array.from(Object.entries(n.coins)).map(([e,{price:t}])=>{let[n,r]=e.toLowerCase().split(":"),s=w.has(h(r,n));return[[b(r,n),t],s?[b(w.get(h(r,n)).split(":")[1],a),r===v?.1*t:t]:null].filter(e=>null!==e)})))},{promise:!0,maxAge:6e4}),I=async e=>{let a=T[e].map(e=>(0,p.lc)(e)).filter(a=>!x.includes(b(a,e)));if(T[e]=[],0===a.length)throw Error("NO_TOKEN_ADDRESSES_TO_FETCH");let t=(0,c.j2)(),[n,r]=i()(a,a=>k[b(a,e)]&&k[b(a,e)].timestamp+6e4>t);if(0===r.length)return k;let s=await C(r,e),l=Array.from(Object.keys(s)).map(e=>(0,p.lc)(e)),o=d()(r.map(a=>b(a,e)),l);return o.length>0&&(console.error(`Tried retrieving some token prices from Coingecko because their price couldnât be retrieved from any Curve pool, however it appears Coingecko hasnât listed those tokens either. Add them to the map in coingecko-token-prices.js to map them to an equivalent token that can act as a fallback. Tokens missing from Coingecko: ${o.join(", ")}`),x.push(...o.map(a=>
1b(a,e)))),Array.from(Object.entries(s)).forEach(([e,a])=>{k[e]={usdPrice:a,timestamp:t}}),k},L={ethereum:null,arbitrum:null,polygon:null,fraxtal:null},P=async(e,a)=>{x.includes(b(e,a))||(null!==L[a]&&clearTimeout(L[a]),T[a]=(0,u.sb)([...T[a],e]),L[a]=setTimeout(()=>{I(a).then(e=>{let a;a=(0,u.pl)(Array.from(Object.entries(e)).map(([e,{usdPrice:a}])=>[e,a])),g.forEach(e=>e(a))}).catch(e=>{if(e?.message!=="NO_TOKEN_ADDRESSES_TO_FETCH")throw e})},1e3))},_=async(e,a="ethereum")=>{P((0,p.lc)(e),a)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.