1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8344],{28450:(e,t,n)=>{n.d(t,{A9:()=>o,IR:()=>r,Rz:()=>i,tU:()=>a});let l="treev_token_balance_prefs_v1",r="treev:token-balance-prefs-changed";function a(e){var t;let n=(null!=(t=e.tokenAddress)?t:"native").toLowerCase();return"".concat(e.network,":").concat(n)}function o(e){if(!e)return{pinned:[],hidden:[]};try{let t=localStorage.getItem("".concat(l,":").concat(e.toLowerCase()));if(!t)return{pinned:[],hidden:[]};let n=JSON.parse(t);return{pinned:Array.isArray(n.pinned)?n.pinned.filter(e=>"string"==typeof e):[],hidden:Array.isArray(n.hidden)?n.hidden.filter(e=>"string"==typeof e):[]}}catch(e){return{pinned:[],hidden:[]}}}function i(e,t){try{localStorage.setItem("".concat(l,":").concat(e.toLowerCase()),JSON.stringify({pinned:t.pinned,hidden:t.hidden})),window.dispatchEvent(new CustomEvent(r,{detail:{wallet:e.toLowerCase()}}))}catch(e){}}},29055:(e,t,n)=>{n.d(t,{VW:()=>d,dq:()=>l,gZ:()=>u,ng:()=>c,qP:()=>o,rf:()=>i,u3:()=>f,xx:()=>s});let l="treev:open-wallet-drawer";function r(e){return"treev-wallet-pulse-seen:".concat(e)}function a(e){return"treev-fund-hint-dismissed:".concat(e)}function o(e){try{return"1"===localStorage.getItem(r(e))}catch(e){return!0}}function i(e){try{localStorage.setItem(r(e),"1")}catch(e){}}function u(e){try{return"1"===localStorage.getItem(a(e))}catch(e){return!0}}function s(e){try{localStorage.setItem(a(e),"1")}catch(e){}}function c(){window.dispatchEvent(new CustomEvent(l))}let d="treev:holdings-refresh";function f(){window.dispatchEvent(new CustomEvent(d))}},78344:(e,t,n)=>{n.d(t,{z:()=>g});var l=n(12115),r=n(96776),a=n(41620),o=n(45290),i=n(26826);let u=new Map;var s=n(69723),c=n(48111);function d(e){if("string"!=typeof e||!e.trim())return null;let t=e.trim();return t.startsWith("https://")||t.startsWith("http://")||t.startsWith("ipfs://")?t:null}async function f(e){let t=new Map,n=new Set;for(let t of e){let e=(0,o._)(t);e&&n.add(e)}if(0===n.size)return t;for(let e of function(e,t){let n=[];for(let t=0;t<e.length;t+=20)n.push(e.slice(t,t+20));return n}([...n],20)){let a,i,u="https://api.dexscreener.com/tokens/v1/solana/".concat(e.join(",")),c=new AbortController,f=setTimeout(()=>c.abort(),1e4);try{a=await fetch(u,{headers:{Accept:"application/json"},signal:c.signal})}catch(e){clearTimeout(f);continue}if(clearTimeout(f),a.ok){try{i=await a.json()}catch(e){continue}if(Array.isArray(i))for(let e of i){if(!e||"object"!=typeof e)continue;for(let a of["baseToken","quoteToken"]){var l,r;let i=e[a];if(!i||"object"!=typeof i)continue;let u="string"==typeof i.address?(0,o._)(i.address):null;if(!u||!n.has(u)||t.has(u))continue;let c=null!=(r=null!=(l=d(i.icon))?l:d(i.imageUrl))?r:d(i.image_url);if(!c)continue;let f=(0,s.tF)(c);(0,s.SB)(f)&&t.set(u,f)}let a=e.info;if(!a||"object"!=typeof a||Array.isArray(a))continue;let i=d(a.imageUrl);if(!i)continue;let u=e.baseToken;if(!u||"object"!=typeof u)continue;let c="string"==typeof u.address?(0,o._)(u.address):null;if(!c||!n.has(c)||t.has(c))continue;let f=(0,s.tF)(i);(0,s.SB)(f)&&t.set(c,f)}}}return t}async function h(e){var t;let n=null!=(t=e.tokens)?t:[];if(0===n.length)return null;let l=[];for(let e=0;e<n.length;e++){let t=n[e],r=(0,o._)(t.address);r&&((0,c.N)(t,"solana")||l.push({index:e,mint:r}))}if(0===l.length)return null;let r=await f(l.map(e=>e.mint));if(0===r.size)return null;let a=[...n],i=!1;for(let{index:e,mint:t}of l){let n=r.get(t);n&&(a[e]={...a[e],logoUrl:n},i=!0)}return i?{...e,tokens:a}:null}var p=n(28450),v=n(29055);let m={chainData:{},chainErrors:{},loading:!1,refreshing:!1,priced:!1,error:null},w=new Intl.NumberFormat(void 0,{style:"currency",currency:"USD",maximumFractionDigits:2});function g(e){var t,n,s,c,d;let f=!(arguments.length>1)||void 0===arguments[1]||arguments[1],g=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,{ready:y,authenticated:S,getAccessToken:k}=(0,r.u)(),[b,U]=(0,l.useState)(m),D=(0,l.useRef)(0),E=(0,l.useMemo)(()=>(0,a.S)(e),[e]),V=(0,l.useMemo)(()=>(0,o._)(g),[g]),I=f&&y&&S&&!!(E||V),T=(0,l.useCallback)(async(e,t,n,l,r)=>Promise.all(t.map(async t=>{if(D.current!==r)return{chainId:t,data:null};let s=await function(e,t){let n=function(e){var t,n;if(!e.chainId||!e.mode)return null;let l=!0===e.refresh?"true":"false";if("solana"===e.chainId){let n=(0,o._)(null!=(t=e.walletAddress)?t:null);return n?"".concat(n,":").concat(e.chainId,":").concat(e.mode,":").concat(l):null}let r=(0,a.S)(null!=(n=e.walletAddress)?n:null);return r?"".concat(r,":").concat(e.chainId,":").concat(e.mode,":").concat(l):null}(t);if(!n)return(0,i.O)(e,t);let l=u.get(n);if(l)return l;let r=(0,i.O)(e,t).finally(()=>{u.delete(n)});return u.set(n,r),r}(k,{walletAddress:e,chainId:t,mode:n,refresh:l});return D.current!==r?{chainId:t,data:null}:s.ok?{chainId:t,data:s.data}:{chainId:t,data:null,error:s.error}})),[k]),A=(0,l.useCallback)(async e=>{var t,n,l,r,a;if(!y||!S||!E&&!V)return void U(m);let o=++D.current;U(t=>({...e?t:m,loading:!e,refreshing:e,priced:!!e&&t.priced,error:null}));let u=E?T(E,i.Vi,"fast",e,o):Promise.resolve([]),s=V?T(V,[i.dP],"fast",e,o):Promise.resolve([]),[c,d]=await Promise.all([u,s]);if(D.current!==o)return;let f=null==(t=c.find(e=>"base"===e.chainId))?void 0:t.data;if(E&&f&&(0,i.qQ)(f)){let e=await T(E,["base"],"enrich",!0,o);if(D.current!==o)return;let t=null==(r=e.find(e=>"base"===e.chainId))?void 0:r.data;t&&(c=c.map(e=>"base"===e.chainId?{...e,data:t,error:void 0}:e))}let p=null==(n=d.find(e=>e.chainId===i.dP))?void 0:n.data;if(V&&p&&(0,i.qQ)(p)){let e=await T(V,[i.dP],"enrich",!0,o);if(D.current!==o)return;let t=null==(a=e.find(e=>e.chainId===i.dP))?void 0:a.data;t&&(d=d.map(e=>e.chainId===i.dP?{...e,data:t,error:void 0}:e))}let v=[...c,...d],w=v.some(e=>null!=e.data);U(e=>{var t;return function(e,t,n){let l={...e.chainData},r={...e.chainErrors};for(let{chainId:e,data:n,error:a}of t)if(n){let t=l[e];
1if(!0===n.balancesOnly&&t&&!0!==t.balancesOnly)continue;l[e]=n,delete r[e]}else a&&(r[e]=a);return{...e,chainData:l,chainErrors:r,...n}}(e,v,{loading:!1,refreshing:!1,priced:w,error:w?null:null!=(t=e.error)?t:"Could not load holdings."})});let g=null==(l=d.find(e=>e.chainId===i.dP))?void 0:l.data;g&&h(g).then(e=>{D.current===o&&e&&U(t=>({...t,chainData:{...t.chainData,[i.dP]:e}}))})},[y,S,E,V,T]),C=(0,l.useCallback)(async()=>{await A(!0)},[A]);(0,l.useEffect)(()=>{if(!I){D.current+=1,U(m);return}A(!1)},[I,E,V,A]),(0,l.useEffect)(()=>{if(!I)return;let e=()=>{A(!0)};return window.addEventListener(v.VW,e),()=>window.removeEventListener(v.VW,e)},[I,A]);let[_,P]=(0,l.useState)(()=>(0,p.A9)(E).hidden);(0,l.useEffect)(()=>{var e;P((0,p.A9)(E).hidden);let t=null!=(e=null==E?void 0:E.toLowerCase())?e:"",n=()=>{P((0,p.A9)(E).hidden)},l=e=>{let l=e.detail;(null==l?void 0:l.wallet)&&l.wallet!==t||n()};return window.addEventListener(p.IR,l),window.addEventListener("storage",n),()=>{window.removeEventListener(p.IR,l),window.removeEventListener("storage",n)}},[E]);let L=(0,l.useMemo)(()=>{let e=null!=E?E:V;if(!e)return null;let t=0===Object.keys(b.chainData).length&&0===Object.keys(b.chainErrors).length?null:(0,i.yt)(e,b.chainData,b.chainErrors);if(!t||0===_.length)return t;let n=function(e,t,n){let l=function(e,t){if(0===t.length)return 0;let n=new Set(t),l=0;for(let t of e)n.has((0,p.tU)(t))&&"number"==typeof t.usdValue&&Number.isFinite(t.usdValue)&&t.usdValue>0&&(l+=t.usdValue);return l}(t,n);return l<=0?e:{totalValueUSD:Math.max(0,e.totalValueUSD-l),tokensTotalValueUSD:Math.max(0,e.tokensTotalValueUSD-l),positionsTotalValueUSD:e.positionsTotalValueUSD}}({totalValueUSD:t.totalValueUSD,tokensTotalValueUSD:t.tokensTotalValueUSD,positionsTotalValueUSD:t.positionsTotalValueUSD},t.tokens,_);return{...t,...n}},[E,V,b,_]),j=null!=(t=null==L?void 0:L.tokens)?t:[],O=null!=(n=null==L?void 0:L.positions)?n:[],M=b.priced&&null!=(s=null==L?void 0:L.totalValueUSD)?s:null,N=b.priced&&null!=(c=null==L?void 0:L.tokensTotalValueUSD)?c:null,x=b.priced&&null!=(d=null==L?void 0:L.positionsTotalValueUSD)?d:null;return{aggregate:L,tokens:j,positions:O,totalUsd:M,tokensTotalUsd:N,positionsTotalUsd:x,loading:b.loading,refreshing:b.refreshing,priced:b.priced,error:b.error,refresh:C,formattedTotalUsd:null!=M?w.format(M):null,formattedTokensTotalUsd:null!=N?w.format(N):null,formattedPositionsTotalUsd:null!=x?w.format(x):null,chainErrors:b.chainErrors}}}}]);
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.