require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../error-handling/logger.cjs`),t=require(`../../functions/utils/string.utils.cjs`);require(`../../functions/utils/index.cjs`);let n=require(`idb-keyval`);new class{balancesRecordLabel=`walletsBalances`;async getBalances(){return await(0,n.get)(this.balancesRecordLabel)}async getBalancesByWallet(e,n){let r=await this.getBalances();if(r)return r[t.getStateKey(e,n)]}async setBalances(r,i,a,o){let s=[];if(!o)return await(0,n.update)(this.balancesRecordLabel,(e={})=>{let n=t.getStateKey(i,r);return{...e,[n]:a}}),a;if(o.length===0)return await this.getBalancesByWallet(i,r)??[];try{await(0,n.update)(this.balancesRecordLabel,(e={})=>{let n=t.getStateKey(i,r),c=this.createBalanceLookup(e[n]),l=this.createBalanceLookup(a);return o.forEach(({erc20TokenAddress:e})=>{let t=e.toLowerCase();t in l?c[t]=l[t]:delete c[t]}),s=Object.values(c),{...e,[n]:s}})}catch(t){e.Logger.error(`Failed to update wallet balances:`,t)}return s}createBalanceLookup(e=[]){return e.reduce((e,t)=>({...e,[t.token.erc20TokenAddress.toLowerCase()]:t}),{})}};