const e=require(`../../../constants/vite.constants.cjs`),t=require(`../../../constants/chains.constants.cjs`),n=require(`../../../error-handling/error-codes.constants.cjs`),r=require(`../etherFunctions.cjs`),i=require(`../../utils/erc20tokenFunctions.cjs`),a=require(`../../utils/caseInsensitive.utils.cjs`),o=require(`../../../data-structures/utxo/Utxo.cjs`),s=require(`../../../error-handling/customErrors/ErrorWithAmount.cjs`);require(`../../../error-handling/customErrors/index.cjs`);const c=require(`../../utils/encodeTokenWithId.cjs`),l=require(`../../utils/solanaMint.utils.cjs`),u=require(`./getInputUtxoAndBalance.cjs`),d=require(`../../../data-structures/TokenDBs/PrivateTokensDB.cjs`),f=require(`../../utils/mutexes.utils.cjs`);var p=async(t,n,r,o,s,c=!1,l,p=!1,m=!1)=>f.getChainBalanceFetchingMutex(n).runExclusive(async()=>{let{inputUtxos:f}=m?await u.getInputUtxoAndBalanceOfStuckUtxos({hinkal:t,chainId:n,ethAddress:s,passedShieldedPrivateKey:r,resetCacheBefore:c,allowRemoteDecryption:l}):await u.getInputUtxoAndBalance({hinkal:t,sliceIfMore6:!1,chainId:n,passedShieldedPrivateKey:r,passedShieldedPublicKey:o,ethAddress:s,resetCacheBefore:c,allowRemoteDecryption:l});p&&e.isExtension&&await d.privateTokensDB.fetchAndUpdatePrivateTokens(f.map(e=>e.getTokenAddress(n)).filter(e=>e!==void 0),n,s);let h=(e.isExtension?await d.privateTokensDB.getPrivateTokens(n,s):i.getErc20TokensForChain(n)).map(e=>({token:e,balance:f.reduce((t,r)=>{let i=e.erc20TokenAddress;return a.caseInsensitiveEqual(i,r.getTokenAddress(n))?t+r.amount:t},0n),timestamp:f.filter(t=>a.caseInsensitiveEqual(t.getTokenAddress(n),e.erc20TokenAddress))[0]?.timeStamp,nfts:f.filter(t=>a.caseInsensitiveEqual(t.getTokenAddress(n),e.erc20TokenAddress)&&t.tokenId!==0).map(e=>({tokenId:e.tokenId,timestamp:e.timeStamp}))})),g=new Map;return h.forEach(e=>{g.set(e.token.erc20TokenAddress.toLowerCase(),e)}),g}),m=async(e,a,d,f,p=6,m=d.map(()=>0),h=!1,g=!1)=>{let{userKeys:_}=e,v=[],y=[];if(d.length===0)return[];let b=await u.getInputUtxoAndBalancePerToken({hinkal:e,sliceIfMore6:!1,ensuredTokensWithId:d.map((e,t)=>({erc20TokenAddress:d[t],tokenId:m[t]})),allowRemoteDecryption:e.generateProofRemotely,useBlockedUtxos:g,chainId:a}),x=0;for(let e=0;e<d.length;e+=1)if(h===!1){let t=b.get(c.encodeTokenWithId(a,{erc20TokenAddress:d[e],tokenId:m[e]}))??[];if(!t)throw Error(`Missing utxos for token`);x=Math.max(t.length,x),y.push(t)}else y.push([]);return x===2?y:(y.forEach((e,c)=>{if(e.length>p){let t=e.slice(0,p),o=t.reduce((e,t)=>e+t.amount,0n);if(f[c]<0n&&o<-f[c]){let e=i.getERC20Token(d[c],a),t=e.decimals===18?6:2,l=Number(r.getAmountWithPrecision(o,e,t));throw new s.ErrorWithAmount(l,`${n.DIRECTLY_SHOW_MESSAGE_ERROR_CODES.UTXO_LIMITATIONS}. Please try again with ${l} ${e.symbol}, including gas fees.`)}v.push(t)}else if(e.length<=p){let n=[...e],r=p-e.length;for(;r>0;){--r;let e=t.isSolanaLike(a),i=e?d[c]:void 0,s=e?l.formatMintAddress(d[c]).compressedAddress:d[c];n.push(new o.Utxo({amount:0n,erc20TokenAddress:s,mintAddress:i,shieldedPrivateKey:_.getShieldedPrivateKey(),tokenId:m[c]}))}v.push(n)}}),v)};exports.addPaddingToUtxos=m,exports.getShieldedBalance=p;