@avalabs/evm-module 3.8.0 → 3.8.1

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.
package/dist/index.cjs CHANGED
@@ -39,7 +39,7 @@ Message
39
39
  `;return e},"beautifyComplexMessage"),Kr=chunkVYIKXRYZ_cjs.a(t=>{let e="";return t.forEach(r=>{e+=`${r.name}:
40
40
  `,e+=`${ce(String(r.value))}
41
41
 
42
- `;}),e},"beautifySimpleMessage"),ce=chunkVYIKXRYZ_cjs.a(t=>{let e={0:"\u{1D7EC}",1:"\u{1D7ED}",2:"\u{1D7EE}",3:"\u{1D7EF}",4:"\u{1D7F0}",5:"\u{1D7F1}",6:"\u{1D7F2}",7:"\u{1D7F3}",8:"\u{1D7F4}",9:"\u{1D7F5}",a:"\u{1D5EE}",b:"\u{1D5EF}",c:"\u{1D5F0}",d:"\u{1D5F1}",e:"\u{1D5F2}",f:"\u{1D5F3}",g:"\u{1D5F4}",h:"\u{1D5F5}",i:"\u{1D5F6}",j:"\u{1D5F7}",k:"\u{1D5F8}",l:"\u{1D5F9}",m:"\u{1D5FA}",n:"\u{1D5FB}",o:"\u{1D5FC}",p:"\u{1D5FD}",q:"\u{1D5FE}",r:"\u{1D5FF}",s:"\u{1D600}",t:"\u{1D601}",u:"\u{1D602}",v:"\u{1D603}",w:"\u{1D604}",x:"\u{1D605}",y:"\u{1D606}",z:"\u{1D607}",A:"\u{1D5D4}",B:"\u{1D5D5}",C:"\u{1D5D6}",D:"\u{1D5D7}",E:"\u{1D5D8}",F:"\u{1D5D9}",G:"\u{1D5DA}",H:"\u{1D5DB}",I:"\u{1D5DC}",J:"\u{1D5DD}",K:"\u{1D5DE}",L:"\u{1D5DF}",M:"\u{1D5E0}",N:"\u{1D5E1}",O:"\u{1D5E2}",P:"\u{1D5E3}",Q:"\u{1D5E4}",R:"\u{1D5E5}",S:"\u{1D5E6}",T:"\u{1D5E7}",U:"\u{1D5E8}",V:"\u{1D5E9}",W:"\u{1D5EA}",X:"\u{1D5EB}",Y:"\u{1D5EC}",Z:"\u{1D5ED}"};return t.split("").map(r=>e[r]||r).join("")},"toUnicodeBold");var Ve=zod.z.string().describe("message"),V=zod.z.string().describe("address");var Xr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([V,Ve])});var Zr=zod.z.object({name:zod.z.string(),type:zod.z.string()}),be=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(Zr)}).catchall(zod.z.array(Zr)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),$t=zod.z.array(zod.z.object({type:zod.z.string(),name:zod.z.string(),value:zod.z.union([zod.z.string(),zod.z.number(),zod.z.boolean(),zod.z.object({}).passthrough(),zod.z.array(zod.z.unknown()),zod.z.null()])})).nonempty(),Wt=be.or($t),Qr=zod.z.union([zod.z.string().describe("data string"),be]),en=zod.z.union([zod.z.string().describe("data string"),Wt]),tn=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([V,en])}),rn=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([V,en])}),nn=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([V,Qr])}),an=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([V,Qr])});var on=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([Ve,V]),zod.z.tuple([Ve,V,zod.z.string().optional().describe("password")])])});var Za=zod.z.discriminatedUnion("method",[on,Xr,tn,rn,nn,an]).transform((t,e)=>{let{method:r,params:n}=t;switch(r){case vmModuleTypes.RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:r};case vmModuleTypes.RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:r};case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:{let a=n[0],s=n[1];if(typeof s!="string")return {data:s,address:a,method:r};try{let o=JSON.parse(s);return {data:Wt.parse(o),address:a,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:{let a=n[0],s=n[1];if(typeof s!="string")return {data:s,address:a,method:r};try{let o=JSON.parse(s);return {data:be.parse(o),address:a,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}}});function sn(t){return Za.safeParse(t)}chunkVYIKXRYZ_cjs.a(sn,"parseRequestParams");var cn=chunkVYIKXRYZ_cjs.a(t=>$t.safeParse(t).success,"isTypedDataV1"),hp=chunkVYIKXRYZ_cjs.a(t=>be.safeParse(t).success,"isTypedData");var ln=chunkVYIKXRYZ_cjs.a(t=>{try{let{EIP712Domain:e,...r}=t.types;return ethers.TypedDataEncoder.getPayload(t.domain,r,t.message),{isValid:!0}}catch(e){return {isValid:!1,error:e}}},"isTypedDataValid");var pn=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r,blockaid:n})=>{let a=sn({method:t.method,params:t.params});if(!a.success)return console.error("invalid params",a.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams(L("Params are invalid",a.error))};let{method:s,data:o,address:c}=a.data,l;(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(l=ln(o));let p,m,u;if(l&&!l.isValid&&(u={type:vmModuleTypes.AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements. Please verify message content!",detailedDescription:l.error.toString()}}),s===vmModuleTypes.RpcMethod.ETH_SIGN)p={type:s,account:c,data:o},m=o;else if(s===vmModuleTypes.RpcMethod.PERSONAL_SIGN)p={type:s,account:c,data:o},m=ethers.toUtf8String(o);else if(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)p={type:s,account:c,data:o},m=cn(o)?Kr(o):Ot(o);else if(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){p={type:s,account:c,data:o};let{types:E,primaryType:S,...R}=o;m=Ot(R);}if(!p||!m)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let f=await Vr({request:t,accountAddress:c,chainId:e.chainId,data:{method:s,params:t.params},dAppUrl:t.dappInfo.url,blockaid:n}),y={title:"Sign Message",dAppInfo:{name:t.dappInfo.name,action:`${t.dappInfo.name} is requesting to sign the following message`,logoUri:t.dappInfo.icon},network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},account:c,details:[{title:"Message",items:[Ut("Message",m,"vertical")]}],alert:f?.alert??u,balanceChange:f?.balanceChange,tokenApprovals:f?.tokenApprovals},h=await r.requestApproval({request:t,displayData:y,signingData:p});return "error"in h?{error:h.error}:"signedData"in h?{result:h.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}},"ethSign");var mn=chunkVYIKXRYZ_cjs.a(async(t,e)=>{try{return {result:await(await F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders})).send(t.method,t.params)}}catch(r){let n=r.info?.error?.message||r.error?.message||r.message;return {error:rpcErrors.rpcErrors.internal(n)}}},"forwardToRpcNode");var un=chunkVYIKXRYZ_cjs.a(async({accountIndex:t,xpub:e,walletType:r})=>{switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getAddressFromXPub(e,t)};case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{let n=Buffer.from(e,"hex");return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getEvmAddressFromPubKey(n)}}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}},"getAddress");function Re(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}chunkVYIKXRYZ_cjs.a(Re,"addIdToPromise");async function Pe(t){return await Promise.allSettled(t).then(e=>e.reduce((r,n)=>{if(n.status==="fulfilled"){let a=n.value;a.status==="fulfilled"?r[a.id]=a.value:r[a.id]={error:a.reason};}return r},{}))}chunkVYIKXRYZ_cjs.a(Pe,"settleAllIdPromises");var so={"ERC-20":vmModuleTypes.TokenType.ERC20,"ERC-721":vmModuleTypes.TokenType.ERC721,"ERC-1155":vmModuleTypes.TokenType.ERC1155,"NON-ERC":vmModuleTypes.TokenType.NONERC,SPL:vmModuleTypes.TokenType.SPL},io=zod.z.string().transform((t,e)=>{let r=so[t];return r||(e.addIssue({code:zod.z.ZodIssueCode.custom,message:`Unknown contractType: ${t}`}),zod.z.NEVER)}),co=zod.z.array(zod.z.object({address:zod.z.string(),chainId:zod.z.number(),contractType:io,decimals:zod.z.number(),internalId:zod.z.string().optional(),isNative:zod.z.boolean(),logoUri:zod.z.string().optional(),name:zod.z.string(),symbol:zod.z.string(),caip2Id:zod.z.string().optional(),color:zod.z.string().optional()}));async function gt({chainId:t,proxyApiUrl:e}){return (await U([`${e}/tokens?evmChainId=${t}`],co)).map(n=>({...n,type:n.contractType}))}chunkVYIKXRYZ_cjs.a(gt,"getTokens");var w,Se,le,We,xe,qt=class qt{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:a,fetch:s}){chunkVYIKXRYZ_cjs.d(this,w,void 0);chunkVYIKXRYZ_cjs.d(this,Se,void 0);chunkVYIKXRYZ_cjs.d(this,le,void 0);chunkVYIKXRYZ_cjs.d(this,We,void 0);chunkVYIKXRYZ_cjs.d(this,xe,void 0);chunkVYIKXRYZ_cjs.e(this,w,e),chunkVYIKXRYZ_cjs.e(this,Se,r),chunkVYIKXRYZ_cjs.e(this,le,n),chunkVYIKXRYZ_cjs.e(this,We,a),chunkVYIKXRYZ_cjs.e(this,xe,s);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let a=await F({chainId:e,chainName:chunkVYIKXRYZ_cjs.c(this,w).chainName,rpcUrl:chunkVYIKXRYZ_cjs.c(this,w).rpcUrl,multiContractAddress:chunkVYIKXRYZ_cjs.c(this,w).utilityAddresses?.multicall,customRpcHeaders:chunkVYIKXRYZ_cjs.c(this,w).customRpcHeaders}),s=chunkVYIKXRYZ_cjs.c(this,w).pricingProviders?.coingecko.nativeTokenId,o=chunkVYIKXRYZ_cjs.c(this,w).networkToken,c=new K({storage:chunkVYIKXRYZ_cjs.c(this,Se),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,le),fetch:chunkVYIKXRYZ_cjs.c(this,xe)}),l=s?await c.getSimplePrice({coinIds:[s],currencies:[n]}):{},p=l?.[s??""]?.[n]?.price??void 0,m=l?.[s??""]?.[n]?.marketCap??void 0,u=l?.[s??""]?.[n]?.vol24??void 0,f=l?.[s??""]?.[n]?.change24??void 0,y=await a.getBalance(r),h=new coreUtilsSdk.TokenUnit(y,o.decimals,o.symbol),E=p!==void 0?h.mul(p):void 0;return {...o,coingeckoId:s??"",type:vmModuleTypes.TokenType.NATIVE,balance:y,balanceDisplayValue:h.toDisplay(),balanceInCurrency:E?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:E?.toDisplay({fixedDp:2}),priceInCurrency:p,marketCap:m,vol24:u,change24:f}}async listErc20Balances({chainId:e,address:r,currency:n}){let a=await F({chainId:e,chainName:chunkVYIKXRYZ_cjs.c(this,w).chainName,rpcUrl:chunkVYIKXRYZ_cjs.c(this,w).rpcUrl,multiContractAddress:chunkVYIKXRYZ_cjs.c(this,w).utilityAddresses?.multicall,customRpcHeaders:chunkVYIKXRYZ_cjs.c(this,w).customRpcHeaders}),s=chunkVYIKXRYZ_cjs.c(this,w).pricingProviders?.coingecko.assetPlatformId,o=chunkVYIKXRYZ_cjs.c(this,w).pricingProviders?.coingecko.nativeTokenId,c=await gt({chainId:Number(e),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,le)}),l=c.map(R=>R.address),p=[...c,...chunkVYIKXRYZ_cjs.c(this,We)].filter(pt),m=chunkVYIKXRYZ_cjs.a(async R=>{let k=await new ethers.ethers.Contract(R.address,Br__default.default.abi,a).balanceOf?.(r)||0n;return {...R,balance:k}},"getTokenWithBalance"),u=p.map(R=>Re(m(R),R.address)),f=await Pe(u),y=new K({storage:chunkVYIKXRYZ_cjs.c(this,Se),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,le),fetch:chunkVYIKXRYZ_cjs.c(this,xe)}),h=s&&await y.getPricesByAddresses(l,s,n)||{},E=Object.keys(f),S={};for(let R=0;R<E.length;R++){let T=E[R];if(T===void 0)continue;let A=f[T];if(A===void 0||"error"in A){S[T]={error:`rpcService:getTokenWithBalance failed: ${A?.error??"unknown error"}`};continue}let k=h?.[o??""]?.[n]?.price??void 0,v=h?.[o??""]?.[n]?.marketCap??void 0,M=h?.[o??""]?.[n]?.vol24??void 0,j=h?.[o??""]?.[n]?.change24??void 0,we=new coreUtilsSdk.TokenUnit(A.balance,A.decimals,A.symbol),_=k!==void 0?we.mul(k):void 0;S[A.address.toLowerCase()]={...A,type:vmModuleTypes.TokenType.ERC20,balance:A.balance,balanceDisplayValue:we.toDisplay(),balanceInCurrency:_?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:_?.toDisplay({fixedDp:2}),priceInCurrency:k,marketCap:v,change24:j,vol24:M,reputation:null};}return S}async listNftBalances(){return {}}};w=new WeakMap,Se=new WeakMap,le=new WeakMap,We=new WeakMap,xe=new WeakMap,chunkVYIKXRYZ_cjs.a(qt,"RpcService");var Tt=qt;async function hn(t,e){let r=t.map(async(s,o)=>({index:o,result:await e(s)})),a=(await Promise.allSettled(r)).filter(s=>s.status==="fulfilled").map(s=>s).find(s=>s.value.result);return a?t[a.value.index]:void 0}chunkVYIKXRYZ_cjs.a(hn,"findAsync");var gn=chunkVYIKXRYZ_cjs.a(async({addresses:t,currency:e,network:r,proxyApiUrl:n,tokenTypes:a=[vmModuleTypes.TokenType.NATIVE,vmModuleTypes.TokenType.ERC20,vmModuleTypes.TokenType.ERC721,vmModuleTypes.TokenType.ERC1155],customTokens:s=[],storage:o,balanceServices:c=[],tokenService:l,fetch:p})=>{let m=r.chainId,u=[...c,new Tt({network:r,storage:o,proxyApiUrl:n,customTokens:s,fetch:p})],f=await hn(u,h=>h.isNetworkSupported(r.chainId)),y={};if(f){let h=[],E=[],S=[];t.forEach(k=>{a.includes(vmModuleTypes.TokenType.NATIVE)&&h.push(Re(f.getNativeBalance({address:k,currency:e.toUpperCase(),chainId:m}).then(async v=>{if(v.symbol==="AVAX"){let M=await l.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:e.toUpperCase()});return {...v,priceInCurrency:M.priceInCurrency,marketCap:M.marketCap,vol24:M.vol24,change24:M.change24}}return v}),k)),a.includes(vmModuleTypes.TokenType.ERC20)&&E.push(Re(f.listErc20Balances({customTokens:s.filter(pt),currency:e.toUpperCase(),chainId:m,address:k,pageSize:100}),k)),(a.includes(vmModuleTypes.TokenType.ERC721)||a.includes(vmModuleTypes.TokenType.ERC1155))&&S.push(Re(f.listNftBalances({chainId:m,address:k}),k));});let R=await Pe(h),T=await Pe(E),A=await Pe(S);Object.keys(R).forEach(k=>{let v=R[k];if(!v||"error"in v){y[k]={error:`getNativeBalance failed: ${v?.error??"unknown error"}`};return}let M=v.symbol;y[k]={[M]:v};}),Object.keys(T).forEach(k=>{let v=T[k];!v||"error"in v&&typeof v.error!="string"?y[k]={...y[k],error:"listErc20Balances failed: unknown error"}:"error"in v&&typeof v.error=="string"?y[k]={...y[k],error:`listErc20Balances failed: ${v.error}`}:y[k]={...y[k],...v};}),Object.keys(A).forEach(k=>{let v=A[k];!v||"error"in v&&typeof v.error!="string"?y[k]={...y[k],error:"listNftBalances failed: unknown error"}:"error"in v&&typeof v.error=="string"?y[k]={...y[k],error:`listNftBalances failed: ${v.error}`}:y[k]={...y[k],...v};});}else t.forEach(h=>{y[h]={error:"unsupported network"};});return y},"getBalances");var zt={LOW:1n,MEDIUM:4n,HIGH:6n},Kt=500000000n,mo=chunkVYIKXRYZ_cjs.a(t=>t===coreChainsSdk.ChainId.AVALANCHE_TESTNET_ID||t===coreChainsSdk.ChainId.AVALANCHE_MAINNET_ID,"isCChain"),bn=137,vn=80002,uo=chunkVYIKXRYZ_cjs.a(t=>t===bn||t===vn,"isPolygon"),fo={[bn]:"https://gasstation.polygon.technology/v2",[vn]:"https://gasstation.polygon.technology/amoy"};function pe(t){return BigInt(Math.round(t*1e9))}chunkVYIKXRYZ_cjs.a(pe,"gweiToWei");async function yo(t){let e=fo[t];if(!e)throw new Error(`No gas station URL for Polygon chain ${t}`);let r=await fetch(e);if(!r.ok)throw new Error(`Polygon Gas Station returned ${r.status}`);let n=await r.json();return {baseFee:pe(n.estimatedBaseFee),low:{maxFeePerGas:pe(n.safeLow.maxFee),maxPriorityFeePerGas:pe(n.safeLow.maxPriorityFee)},medium:{maxFeePerGas:pe(n.standard.maxFee),maxPriorityFeePerGas:pe(n.standard.maxPriorityFee)},high:{maxFeePerGas:pe(n.fast.maxFee),maxPriorityFeePerGas:pe(n.fast.maxPriorityFee)},isFixedFee:!1,displayDecimals:9}}chunkVYIKXRYZ_cjs.a(yo,"getPolygonGasStationFees");async function En({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,caipId:a,proxyApiUrl:s,customRpcHeaders:o}){let c=await F({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,customRpcHeaders:o});if(!s)throw rpcErrors.rpcErrors.internal("Proxy API URL is needed");if(mo(t))try{let T=await ho(c);return {...T,baseFee:T.medium.maxFeePerGas,displayDecimals:9,isFixedFee:!1}}catch{console.error("eth_suggestPriceOptions call failed, falling back to legacy fee fetching");}if(uo(t))try{return await yo(t)}catch{console.error("Polygon Gas Station call failed, falling back to generic fee fetching");}let l=await c.getBlock("latest",!1);if(!l)throw rpcErrors.rpcErrors.internal("There is no block");let p=l.baseFeePerGas;if(!p)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let m=await go(s,a),u=new coreUtilsSdk.TokenUnit(m,0,""),f=new coreUtilsSdk.TokenUnit(p,0,""),y=BigInt("1000000000"),h=f.mul(u).add(y).toSubUnit(),E=Kt*zt.LOW,S=Kt*zt.MEDIUM,R=Kt*zt.HIGH;return {baseFee:h,low:{maxFeePerGas:h+E,maxPriorityFeePerGas:E},medium:{maxFeePerGas:h+S,maxPriorityFeePerGas:S},high:{maxFeePerGas:h+R,maxPriorityFeePerGas:R},isFixedFee:!1,displayDecimals:9}}chunkVYIKXRYZ_cjs.a(En,"getNetworkFee");async function ho(t){let e=await t.send("eth_suggestPriceOptions",[]);return {low:{maxFeePerGas:BigInt(e.slow.maxFeePerGas),maxPriorityFeePerGas:BigInt(e.slow.maxPriorityFeePerGas)},medium:{maxFeePerGas:BigInt(e.normal.maxFeePerGas),maxPriorityFeePerGas:BigInt(e.normal.maxPriorityFeePerGas)},high:{maxFeePerGas:BigInt(e.fast.maxFeePerGas),maxPriorityFeePerGas:BigInt(e.fast.maxPriorityFeePerGas)}}}chunkVYIKXRYZ_cjs.a(ho,"suggestPriceOptions");async function go(t,e){if(!e)return 1.5;try{let n=await fetch(`${t}/gas/multiplier`);if(!n.ok)throw new Error(n.statusText);let a=await n.json();return a[e]??a.default}catch{return 1.5}}chunkVYIKXRYZ_cjs.a(go,"getGasMultiplier");function Pn(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}chunkVYIKXRYZ_cjs.a(Pn,"isNftTokenType");function Jt(t){let{txType:e,isSender:r,walletAddress:n,tokens:a}=t;if(a.length===0)return e;let s=n.toLowerCase(),o=a.some(m=>Pn(m.type)&&m.to?.address?.toLowerCase()===s),c=a.some(m=>Pn(m.type)&&m.from?.address?.toLowerCase()===s),l=e===vmModuleTypes.TransactionType.RECEIVE||e===vmModuleTypes.TransactionType.UNKNOWN||e===vmModuleTypes.TransactionType.TRANSFER||e===vmModuleTypes.TransactionType.AIRDROP,p=e===vmModuleTypes.TransactionType.SEND||e===vmModuleTypes.TransactionType.UNKNOWN||e===vmModuleTypes.TransactionType.TRANSFER||e===vmModuleTypes.TransactionType.AIRDROP;return !r&&o&&l?vmModuleTypes.TransactionType.NFT_RECEIVE:r&&c&&p?vmModuleTypes.TransactionType.NFT_SEND:e}chunkVYIKXRYZ_cjs.a(Jt,"convertTransactionType");var Sn=chunkVYIKXRYZ_cjs.a(({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a,s)=>{let o=!e&&!r&&!n,c=ko(t.method?.methodName),l=a.toLowerCase(),p=c.toLowerCase().includes("swap"),m=o&&t.from.address.toLowerCase()===l,u=o&&t.to.address.toLowerCase()===l,f=c==="Market Buy Orders With Eth"||c==="Buy NFT",y=c==="Approve",h=c.toLowerCase().includes("transfer"),E=c.toLowerCase().includes("airdrop"),S=c.toLowerCase().includes("unwrap"),R=c==="Fill Order",T;p?T=vmModuleTypes.TransactionType.SWAP:m?T=vmModuleTypes.TransactionType.SEND:u?T=vmModuleTypes.TransactionType.RECEIVE:f?T=vmModuleTypes.TransactionType.NFT_BUY:y?T=vmModuleTypes.TransactionType.APPROVE:h?T=vmModuleTypes.TransactionType.TRANSFER:E?T=vmModuleTypes.TransactionType.AIRDROP:S?T=vmModuleTypes.TransactionType.UNWRAP:R?T=vmModuleTypes.TransactionType.FILL_ORDER:T=vmModuleTypes.TransactionType.UNKNOWN;let A=t.from.address.toLowerCase()===l;return Jt({txType:T,isSender:A,walletAddress:a,tokens:s})},"getTxType"),ko=chunkVYIKXRYZ_cjs.a((t="")=>t.includes("(")?To__default.default(t.split("(",1)[0]):t,"parseRawMethod");function xn({tx:t,networkToken:e,explorerUrl:r,chainId:n,address:a}){let s=t.from_address.toLowerCase()===a.toLowerCase(),o=new Date(t.block_timestamp).getTime(),c=Eo(t.category),l=!bo.has(t.category),p=So(t,e,a),m=Te(r,t.hash);return c=Jt({txType:c,isSender:s,walletAddress:a,tokens:p}),{isContractCall:l,isIncoming:!s,isOutgoing:s,isSender:s,timestamp:o,hash:t.hash,from:t.from_address,to:t.to_address??"",tokens:p,gasPrice:t.gas_price,gasUsed:t.receipt_gas_used,chainId:n.toString(),txType:c,method:t.method_label??void 0,explorerLink:m}}chunkVYIKXRYZ_cjs.a(xn,"convertMoralisTransaction");var bo=new Set(["send","receive","token send","token receive"]),vo={send:vmModuleTypes.TransactionType.SEND,receive:vmModuleTypes.TransactionType.RECEIVE,"token send":vmModuleTypes.TransactionType.SEND,"token receive":vmModuleTypes.TransactionType.RECEIVE,"nft send":vmModuleTypes.TransactionType.NFT_SEND,"nft receive":vmModuleTypes.TransactionType.NFT_RECEIVE,"token swap":vmModuleTypes.TransactionType.SWAP,"nft purchase":vmModuleTypes.TransactionType.NFT_BUY,"nft sale":vmModuleTypes.TransactionType.NFT_SEND,airdrop:vmModuleTypes.TransactionType.AIRDROP,mint:vmModuleTypes.TransactionType.NFT_BUY,burn:vmModuleTypes.TransactionType.UNKNOWN,deposit:vmModuleTypes.TransactionType.UNKNOWN,withdraw:vmModuleTypes.TransactionType.UNKNOWN,borrow:vmModuleTypes.TransactionType.UNKNOWN,"contract interaction":vmModuleTypes.TransactionType.UNKNOWN};function Eo(t){return vo[t]??vmModuleTypes.TransactionType.UNKNOWN}chunkVYIKXRYZ_cjs.a(Eo,"getMoralisTransactionType");function Q(t){if(!(t==null||t===""))return {address:t}}chunkVYIKXRYZ_cjs.a(Q,"getTransferAddress");function kt(t){return t?.trim()??""}chunkVYIKXRYZ_cjs.a(kt,"trimOrEmpty");function Ro(t){let e=t.trim().toLowerCase();return !e.startsWith("0x")||e.length<12?t.trim():`${e.slice(0,6)}\u2026${e.slice(-4)}`}chunkVYIKXRYZ_cjs.a(Ro,"shortenHexAddress");function Po(t){let e=kt(t.token_symbol);if(e!=="")return e;let r=kt(t.token_name);return r!==""?r:Ro(t.address)}chunkVYIKXRYZ_cjs.a(Po,"getErc20DisplaySymbol");function So(t,e,r){let n=[],a=t.native_transfers.map(o=>xo(o,e)),s=t.erc20_transfers.map(o=>Io(o));n.push(...a,...s);for(let o of t.nft_transfers)n.push(Ao(o));return n.length===0&&n.push(No(t,e,r)),n}chunkVYIKXRYZ_cjs.a(So,"buildTokens");function xo(t,e){let r=kt(t.token_symbol)||e.symbol,n=new coreUtilsSdk.TokenUnit(t.value,e.decimals,r);return {decimal:e.decimals.toString(),name:e.name,symbol:r,amount:n.toDisplay(),from:Q(t.from_address),to:Q(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}chunkVYIKXRYZ_cjs.a(xo,"buildNativeToken");function Io(t){let e=Number(t.token_decimals),r=Po(t),n=new coreUtilsSdk.TokenUnit(t.value,e,r),a=kt(t.token_name)||r;return {decimal:t.token_decimals,name:a,symbol:r,amount:n.toDisplay(),from:Q(t.from_address),to:Q(t.to_address),type:vmModuleTypes.TokenType.ERC20,address:t.address}}chunkVYIKXRYZ_cjs.a(Io,"buildErc20Token");function Ao(t){let e=t.contract_type==="ERC1155"?vmModuleTypes.TokenType.ERC1155:vmModuleTypes.TokenType.ERC721;return {name:"",symbol:"",amount:t.amount,collectableTokenId:t.token_id,from:Q(t.from_address),to:Q(t.to_address),type:e,address:t.token_address}}chunkVYIKXRYZ_cjs.a(Ao,"buildNftToken");function No(t,e,r){let n=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol),s=t.from_address.toLowerCase()===r.toLowerCase()?`-${n.toDisplay()}`:n.toDisplay();return {decimal:e.decimals.toString(),name:e.name,symbol:e.symbol,amount:s,from:Q(t.from_address),to:Q(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}chunkVYIKXRYZ_cjs.a(No,"buildFallbackNativeToken");var Co="https://proxy-api.avax.network/proxy/moralis-evm";async function In({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s}){try{let o=`0x${t.toString(16)}`,c=new URLSearchParams({chain:o,limit:(s??25).toString()});a&&c.set("cursor",a);let l=`${Co}/wallets/${n}/history?${c.toString()}`,p=await fetch(l);if(!p.ok)return {transactions:[],nextPageToken:""};let m=await p.json();return Array.isArray(m.result)?{transactions:m.result.filter(f=>f.receipt_status==="1").map(f=>xn({tx:f,networkToken:e,explorerUrl:r,chainId:t,address:n})),nextPageToken:m.cursor??""}:{transactions:[],nextPageToken:""}}catch{return {transactions:[],nextPageToken:""}}}chunkVYIKXRYZ_cjs.a(In,"getTransactionsFromMoralis");var wo=new Set([1,4,5,11155111,8453,42161,10]);function An(t){return wo.has(t)}chunkVYIKXRYZ_cjs.a(An,"isMoralisSupportedChain");var Nn=chunkVYIKXRYZ_cjs.a((t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},a)=>{let s=t===vmModuleTypes.TransactionType.TRANSFER,o=t===vmModuleTypes.TransactionType.SEND||t===vmModuleTypes.TransactionType.NFT_SEND,c=t===vmModuleTypes.TransactionType.RECEIVE||t===vmModuleTypes.TransactionType.NFT_RECEIVE,l=e?.from?.address,p=e?.to?.address;s&&r&&r[0]&&(l=r[0].from.address,p=r[0].to.address),s&&n&&n[0]&&(l=n[0].from.address,p=n[0].to.address);let m=o||s&&l.toLowerCase()===a.toLowerCase(),u=c||s&&p.toLowerCase()===a.toLowerCase();return {isOutgoing:m,isIncoming:u,isSender:l===a,from:l,to:p}},"getSenderInfo");async function Cn(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}chunkVYIKXRYZ_cjs.a(Cn,"resolve");var Bo="https://ipfs.io";function Ie(t,e=Bo){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}chunkVYIKXRYZ_cjs.a(Ie,"ipfsResolverWithFallback");async function Do(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}chunkVYIKXRYZ_cjs.a(Do,"fetchWithTimeout");async function wn(t){let e={};if(t)if(t.startsWith("data:application/json;base64,")){let r=t.substring(29);try{let n=Buffer.from(r,"base64").toString();e=JSON.parse(n);}catch{e={};}}else e=await Do(Ie(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}chunkVYIKXRYZ_cjs.a(wn,"getNftMetadata");var Uo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function _n(t,e="256"){let r=Ie(t);return `${Uo}/width=${e},fit/${r}`}chunkVYIKXRYZ_cjs.a(_n,"getSmallImageForNFT");var Un=chunkVYIKXRYZ_cjs.a(async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a)=>{let s=[];if(t.value!=="0"){let o=a.decimals,l=new coreUtilsSdk.TokenUnit(t.value,a.decimals,a.symbol).toDisplay();s.push({decimal:o.toString(),name:a.name,symbol:a.symbol,amount:l,from:t.from,to:t.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(o=>{let c=o.erc20Token.decimals,p=new coreUtilsSdk.TokenUnit(o.value,c,o.erc20Token.symbol).toDisplay();s.push({decimal:c.toString(),address:o.erc20Token.address,name:o.erc20Token.name,symbol:o.erc20Token.symbol,amount:p,from:o.from,to:o.to,imageUri:o.erc20Token.logoUri,type:vmModuleTypes.TokenType.ERC20});}),r&&await Promise.allSettled(r.map(async o=>{let c=o.erc721Token,l=await Dn(c.tokenUri,c.metadata.imageUri);s.push({name:o.erc721Token.name,symbol:o.erc721Token.symbol,address:o.erc721Token.address,amount:"1",imageUri:l,from:o.from,to:o.to,collectableTokenId:o.erc721Token.tokenId,type:vmModuleTypes.TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async o=>{let c=o.erc1155Token,l=await Dn(c.tokenUri,c.metadata.imageUri);s.push({name:o.erc1155Token.metadata.name??"",symbol:o.erc1155Token.metadata.symbol??"",address:o.erc1155Token.address,amount:o.value,imageUri:l,from:o.from,to:o.to,collectableTokenId:o.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),s},"getTokens"),Dn=chunkVYIKXRYZ_cjs.a(async(t,e)=>{if(e)return e.startsWith("ipfs://")?Ie(e):e;{let[r,n]=await Cn(wn(t));return n?"":r.image?_n(r.image):""}},"getImageUri");var Fn=chunkVYIKXRYZ_cjs.a(async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:a})=>{let s=await Un(t,r),o=Sn(t,a,s),{isOutgoing:c,isIncoming:l,isSender:p,from:m,to:u}=Nn(o,t,a),{blockTimestamp:f,txHash:y,gasPrice:h,gasUsed:E}=t.nativeTransaction,S=Te(e,y);return {isContractCall:!Pr.includes(o),isIncoming:l,isOutgoing:c,isSender:p,timestamp:f*1e3,hash:y,from:m,to:u,tokens:s,gasPrice:h,gasUsed:E,chainId:n.toString(),txType:o,explorerLink:S}},"convertTransaction");var Gn=chunkVYIKXRYZ_cjs.a(async({chainId:t,explorerUrl:e,networkToken:r,address:n,nextPageToken:a,offset:s,glacierService:o})=>{try{let c=await o.listTransactions({chainId:t.toString(),address:n,pageToken:a,pageSize:s});return {transactions:(await Promise.all(c.transactions.filter(m=>m.nativeTransaction.txStatus==="1").map(m=>Fn({transactions:m,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(u=>u)))).filter(m=>m.tokens.find(u=>Number(u.amount)!==0)),nextPageToken:c.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}},"getTransactionsFromGlacier");var Ln=chunkVYIKXRYZ_cjs.a(async({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s,glacierService:o})=>An(t)?In({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s}):o.isHealthy()?Gn({networkToken:e,explorerUrl:r,chainId:t,address:n,nextPageToken:a,offset:s,glacierService:o}):{transactions:[],nextPageToken:""},"getTransactionHistory");var Go="https://ipfs.io";function Mn(t,e=Go){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}chunkVYIKXRYZ_cjs.a(Mn,"ipfsResolverWithFallback");var Lo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function vt(t,e="256"){let r=Mn(t);return `${Lo}/width=${e},fit/${r}`}chunkVYIKXRYZ_cjs.a(vt,"getSmallImageForNFT");var Ae,H,Zt=class Zt{constructor(e,r){this.baseUrl=e;chunkVYIKXRYZ_cjs.d(this,Ae,[]);chunkVYIKXRYZ_cjs.d(this,H,void 0);chunkVYIKXRYZ_cjs.e(this,H,r??fetch);}async isNetworkSupported(e){return (await this.getChainList()).some(n=>n.community_id===e)}async getChainInfo({chainId:e}){return (await this.getChainList()).find(n=>n.id===e)}async getTokenBalance({chainId:e,address:r,tokenId:n}){let a=await chunkVYIKXRYZ_cjs.c(this,H).call(this,`${this.baseUrl}/v1/user/token?id=${r}&chain_id=${e}&token_id=${n}`);if(a.ok)return await a.json();throw new Error(`${a.status}:${a.statusText}`)}async getTokensBalanceOnChain({chainId:e,address:r}){let n=await chunkVYIKXRYZ_cjs.c(this,H).call(this,`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getTokenList({chainId:e,address:r}){let n=await(chunkVYIKXRYZ_cjs.c(this,H)??globalThis.fetch)(`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getChainList(){if(chunkVYIKXRYZ_cjs.c(this,Ae).length===0){let e=await chunkVYIKXRYZ_cjs.c(this,H).call(this,`${this.baseUrl}/v1/chain/list`);if(e.ok)chunkVYIKXRYZ_cjs.e(this,Ae,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return chunkVYIKXRYZ_cjs.c(this,Ae)}async getNftList({address:e,chainId:r}){return U([`${this.baseUrl}/v1/user/nft_list?id=${e}&chain_id=${r}`],Ho,chunkVYIKXRYZ_cjs.c(this,H))}};Ae=new WeakMap,H=new WeakMap,chunkVYIKXRYZ_cjs.a(Zt,"DeBank");var Et=Zt,Vo=zod.z.object({id:zod.z.union([zod.z.custom(ethers.isHexString),zod.z.string()]),chain:zod.z.string(),name:zod.z.string()}),Oo=Vo.merge(zod.z.object({contract_id:zod.z.string(),description:zod.z.string().nullable(),content_type:zod.z.string().nullable(),content:zod.z.string(),thumbnail_url:zod.z.string(),total_supply:zod.z.number(),detail_url:zod.z.string(),collection_id:zod.z.string(),is_core:zod.z.boolean(),inner_id:zod.z.string(),collection_name:zod.z.string(),contract_name:zod.z.string(),amount:zod.z.number(),usd_price:zod.z.number().optional(),is_erc721:zod.z.boolean().optional(),is_erc1155:zod.z.boolean().optional()})),Ho=zod.z.array(Oo);var O,Ne,Pt,xt,On,er=class er{constructor({proxyApiUrl:e,fetch:r}){chunkVYIKXRYZ_cjs.d(this,Ne);chunkVYIKXRYZ_cjs.d(this,xt);chunkVYIKXRYZ_cjs.d(this,O,void 0);chunkVYIKXRYZ_cjs.e(this,O,new Et(`${e}/proxy/debank`,r));}async isNetworkSupported(e){return chunkVYIKXRYZ_cjs.c(this,O).isNetworkSupported(e)}async getNativeBalance({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid address: "+r);let{chainInfo:a,chainIdString:s}=await chunkVYIKXRYZ_cjs.f(this,Ne,Pt).call(this,e),o=a.native_token_id,c=await chunkVYIKXRYZ_cjs.c(this,O).getTokenBalance({address:r,chainId:s,tokenId:o}),l=new coreUtilsSdk.TokenUnit(c.raw_amount,c.decimals,c.symbol),p=l.toDisplay(),u=(await Xe()).usd[n.toLowerCase()],f=u?u*c.price:void 0,y=f?l.mul(f).toDisplay({fixedDp:2}):void 0,h=f?l.mul(f).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {name:c.name,symbol:c.symbol,decimals:c.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:c.logo_url,balance:l.toSubUnit(),balanceDisplayValue:p,balanceInCurrency:h,balanceCurrencyDisplayValue:y,priceInCurrency:f}}async listErc20Balances({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:a,chainIdString:s}=await chunkVYIKXRYZ_cjs.f(this,Ne,Pt).call(this,e),o=await chunkVYIKXRYZ_cjs.c(this,O).getTokensBalanceOnChain({chainId:s,address:r}),c=await Xe(),l={};for(let p of o){if(p.id===a.native_token_id||p.is_core===!1)continue;let m=new coreUtilsSdk.TokenUnit(p.raw_amount,p.decimals,p.symbol),u=m.toDisplay(),f=c.usd[n.toLowerCase()],y=f?f*p.price:void 0,h=y?m.mul(y).toDisplay({fixedDp:2}):void 0,E=y?m.mul(y).toDisplay({fixedDp:2,asNumber:!0}):void 0;l[p.id]={chainId:a.community_id,address:p.id,name:p.name,symbol:p.symbol,decimals:p.decimals,logoUri:p.logo_url,balance:m.toSubUnit(),balanceCurrencyDisplayValue:h,balanceDisplayValue:u,balanceInCurrency:E,priceInCurrency:y,type:vmModuleTypes.TokenType.ERC20,reputation:null};}return l}async listNftBalances({chainId:e,address:r}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listNftBalances: not valid address");let{chainIdString:n}=await chunkVYIKXRYZ_cjs.f(this,Ne,Pt).call(this,e),a=await chunkVYIKXRYZ_cjs.c(this,O).getNftList({chainId:n,address:r});return chunkVYIKXRYZ_cjs.f(this,xt,On).call(this,a,e)}};O=new WeakMap,Ne=new WeakSet,Pt=chunkVYIKXRYZ_cjs.a(async function(e){let n=(await chunkVYIKXRYZ_cjs.c(this,O).getChainList()).find(s=>s.community_id===e)?.id;if(!n)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let a=await chunkVYIKXRYZ_cjs.c(this,O).getChainInfo({chainId:n});if(!a)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);return {chainInfo:a,chainIdString:n}},"#getChainInfo"),xt=new WeakSet,On=chunkVYIKXRYZ_cjs.a(function(e,r){return e.reduce((n,a)=>({...n,[`${a.contract_id}-${a.id}`]:{chainId:r,address:a.contract_id,description:a.description??"",logoUri:a.thumbnail_url,logoSmall:vt(a.content),name:a.name,symbol:"",tokenId:`${a.inner_id}`,tokenUri:a.detail_url,collectionName:a.collection_name,balance:BigInt(a.amount),balanceDisplayValue:`${a.amount}`,type:a.is_erc721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{indexStatus:glacierSdk.NftTokenMetadataStatus.UNINDEXED,description:a.description??"",properties:""}}}),{})},"#mapNftList"),chunkVYIKXRYZ_cjs.a(er,"DeBankService");var St=er;var rr=class rr extends Error{constructor(){super(...arguments);chunkVYIKXRYZ_cjs.b(this,"message","Glacier is unhealthy. Try again later.");}};chunkVYIKXRYZ_cjs.a(rr,"GlacierUnhealthyError");var $=rr,Yo=[coreChainsSdk.ChainId.ETHEREUM_HOMESTEAD],nr=class nr{constructor({glacierApiUrl:e,headers:r}){chunkVYIKXRYZ_cjs.b(this,"glacierSdk");chunkVYIKXRYZ_cjs.b(this,"isGlacierHealthy",!0);chunkVYIKXRYZ_cjs.b(this,"supportedChainIds",[]);chunkVYIKXRYZ_cjs.b(this,"isHealthy",chunkVYIKXRYZ_cjs.a(()=>this.isGlacierHealthy,"isHealthy"));this.glacierSdk=new glacierSdk.Glacier({BASE:e,HEADERS:r},De),this.getSupportedChainIds().catch(()=>{});}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async isNetworkSupported(e){return (await this.getSupportedChainIds()).some(n=>n===e.toString())}async getSupportedChainIds(){if(this.supportedChainIds.length)return this.supportedChainIds;try{let e=await this.glacierSdk.evmChains.supportedChains({});return this.supportedChainIds=e.chains.map(r=>r.chainId).filter(r=>!Yo.includes(Number(r))),this.supportedChainIds}catch{return []}}async reindexNft({address:e,chainId:r,tokenId:n}){try{await this.glacierSdk.nfTs.reindexNft({address:e,chainId:r,tokenId:n});}catch(a){throw a instanceof $&&this.setGlacierToUnhealthy(),a}}async getTokenDetails({address:e,chainId:r,tokenId:n}){try{return this.glacierSdk.nfTs.getTokenDetails({address:e,chainId:r,tokenId:n})}catch(a){throw a instanceof $&&this.setGlacierToUnhealthy(),a}}async getNativeBalance({chainId:e,address:r,currency:n,coingeckoId:a}){try{let o=(await this.glacierSdk.evmBalances.getNativeBalance({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase()})).nativeTokenBalance,c=new coreUtilsSdk.TokenUnit(o.balance,o.decimals,o.symbol),l=o.price?.value,p=l!==void 0?c.mul(l):void 0;return {name:o.name,symbol:o.symbol,decimals:o.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:o.logoUri,balance:c.toSubUnit(),balanceDisplayValue:c.toDisplay(),balanceInCurrency:p?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:p?.toDisplay({fixedDp:2}),priceInCurrency:l,coingeckoId:a??""}}catch(s){throw s instanceof $&&this.setGlacierToUnhealthy(),s}}async listErc721Balances({chainId:e,address:r}){let n,a=[];do try{let s=await this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...s.erc721TokenBalances),n=s.nextPageToken;}catch(s){throw s instanceof $&&this.setGlacierToUnhealthy(),s}while(n);return a}async listErc1155Balances({chainId:e,address:r}){let n,a=[];do try{let s=await this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...s.erc1155TokenBalances),n=s.nextPageToken;}catch(s){throw s instanceof $&&this.setGlacierToUnhealthy(),s}while(n);return a}async listNftBalances({chainId:e,address:r}){let a=(await Promise.allSettled([this.listErc721Balances({chainId:e.toString(),address:r}),this.listErc1155Balances({chainId:e.toString(),address:r})])).filter(s=>s.status==="fulfilled").flatMap(s=>s.value.filter(o=>o.ercType===glacierSdk.Erc721Token.ercType.ERC_721||BigInt(o.balance)>0n).map(o=>[`${o.address}-${o.tokenId}`,{address:o.address,description:o.metadata.description??"",logoUri:o.metadata.imageUri??"",logoSmall:vt(o.metadata.imageUri??""),name:o.metadata.name??"",symbol:o.metadata.symbol??"",tokenId:o.tokenId,tokenUri:o.tokenUri,chainId:e,collectionName:"Unknown",balance:o.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?BigInt(o.balance):1,balanceDisplayValue:o.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?o.balance:"1",type:o.ercType===glacierSdk.Erc721Token.ercType.ERC_721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{indexStatus:o.metadata.indexStatus,description:o.metadata.description,lastUpdatedTimestamp:o.metadata.metadataLastUpdatedTimestamp,properties:o.ercType===glacierSdk.Erc721Token.ercType.ERC_721?o.metadata.attributes:o.metadata.properties}}]));return Object.fromEntries(a)}async listErc20Balances({chainId:e,address:r,currency:n,customTokens:a}){try{let s=[],o;do{let c=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:o});s.push(...Ko(c.erc20TokenBalances,Number(e))),o=c.nextPageToken;}while(o);return [...zo(a),...s].reduce((c,l)=>({...c,[l.address.toLowerCase()]:l}),{})}catch(s){throw s instanceof $&&this.setGlacierToUnhealthy(),s}}async listTransactions({chainId:e,address:r,pageToken:n,pageSize:a}){try{return this.glacierSdk.evmTransactions.listTransactionsV2({chainId:e,address:r,pageToken:n,pageSize:a,filterSpamTokens:!0})}catch(s){throw s instanceof $&&this.setGlacierToUnhealthy(),s}}};chunkVYIKXRYZ_cjs.a(nr,"EvmGlacierService");var It=nr,zo=chunkVYIKXRYZ_cjs.a(t=>t.map(e=>({...e,decimals:e.decimals??18,type:vmModuleTypes.TokenType.ERC20,balance:0n,balanceInCurrency:0,balanceDisplayValue:"0",balanceCurrencyDisplayValue:"0",priceInCurrency:0,marketCap:0,change24:0,vol24:0,reputation:null})),"convertErc20TokenToTokenWithBalance"),Ko=chunkVYIKXRYZ_cjs.a((t,e)=>t.map(r=>{let n=new coreUtilsSdk.TokenUnit(r.balance,r.decimals,r.symbol),a=n.toDisplay(),s=r.balanceValue?.value.toString(),o=r.price?.value,c=o!==void 0?n.mul(o).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {chainId:e,address:r.address,name:r.name,symbol:r.symbol,decimals:r.decimals,logoUri:r.logoUri,balance:n.toSubUnit(),balanceCurrencyDisplayValue:s,balanceDisplayValue:a,balanceInCurrency:c,priceInCurrency:o,reputation:r.tokenReputation,type:vmModuleTypes.TokenType.ERC20}}),"convertErc20TokenWithBalanceToTokenWithBalance");var Ce,Ke,te,W,me,de,ar=class ar{constructor({approvalController:e,environment:r,appInfo:n,runtime:a}){chunkVYIKXRYZ_cjs.d(this,Ce,void 0);chunkVYIKXRYZ_cjs.d(this,Ke,void 0);chunkVYIKXRYZ_cjs.d(this,te,void 0);chunkVYIKXRYZ_cjs.d(this,W,void 0);chunkVYIKXRYZ_cjs.d(this,me,void 0);chunkVYIKXRYZ_cjs.d(this,de,void 0);let{glacierApiUrl:s,proxyApiUrl:o}=hr(r);chunkVYIKXRYZ_cjs.e(this,de,a),chunkVYIKXRYZ_cjs.e(this,Ce,new It({glacierApiUrl:s,headers:Ft(n)})),chunkVYIKXRYZ_cjs.e(this,Ke,new St({proxyApiUrl:o,fetch:chunkVYIKXRYZ_cjs.c(this,de)?.fetch})),chunkVYIKXRYZ_cjs.e(this,te,o),chunkVYIKXRYZ_cjs.e(this,W,e),chunkVYIKXRYZ_cjs.e(this,me,new Xo__default.default({baseURL:o+"/proxy/blockaid/",apiKey:fr,httpAgent:a?.httpAgent,fetch:a?.fetch}));}getProvider(e){return F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders})}getAddress({accountIndex:e,xpub:r,walletType:n}){return un({accountIndex:e,xpub:r,walletType:n})}buildDerivationPath(e){return at(e)}deriveAddress(e){return br({...e,approvalController:chunkVYIKXRYZ_cjs.c(this,W)})}getBalances({addresses:e,network:r,currency:n,customTokens:a,storage:s,tokenTypes:o}){let c=new K({storage:s,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te),fetch:chunkVYIKXRYZ_cjs.c(this,de)?.fetch});return gn({addresses:e,currency:n,network:r,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te),customTokens:a,balanceServices:[chunkVYIKXRYZ_cjs.c(this,Ce),chunkVYIKXRYZ_cjs.c(this,Ke)],storage:s,tokenTypes:o,tokenService:c,fetch:chunkVYIKXRYZ_cjs.c(this,de)?.fetch})}getManifest(){let e=vmModuleTypes.parseManifest(ur);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:a,utilityAddresses:s,caipId:o,customRpcHeaders:c}=e;return En({chainId:r,chainName:n,rpcUrl:a,multiContractAddress:s?.multicall,caipId:o,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te),customRpcHeaders:c})}getTransactionHistory(e){let{network:r,address:n,nextPageToken:a,offset:s}=e,{chainId:o,networkToken:c,explorerUrl:l=""}=r;return Ln({chainId:o,networkToken:c,explorerUrl:l,address:n,nextPageToken:a,offset:s,glacierService:chunkVYIKXRYZ_cjs.c(this,Ce)})}getTokens(e){let{chainId:r}=e;return gt({chainId:r,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return zr({request:e,network:r,approvalController:chunkVYIKXRYZ_cjs.c(this,W),blockaid:chunkVYIKXRYZ_cjs.c(this,me)});case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION_BATCH:return Ir(chunkVYIKXRYZ_cjs.c(this,W))?$r({request:e,network:r,approvalController:chunkVYIKXRYZ_cjs.c(this,W),blockaid:chunkVYIKXRYZ_cjs.c(this,me)}):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} requires BatchApprovalController`)};case vmModuleTypes.RpcMethod.PERSONAL_SIGN:case vmModuleTypes.RpcMethod.ETH_SIGN:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:return pn({request:e,network:r,approvalController:chunkVYIKXRYZ_cjs.c(this,W),blockaid:chunkVYIKXRYZ_cjs.c(this,me)});default:return Zo(e.method)?mn(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};Ce=new WeakMap,Ke=new WeakMap,te=new WeakMap,W=new WeakMap,me=new WeakMap,de=new WeakMap,chunkVYIKXRYZ_cjs.a(ar,"EvmModule");var jn=ar,Zo=chunkVYIKXRYZ_cjs.a(t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t),"shouldForwardToRpcNode");
42
+ `;}),e},"beautifySimpleMessage"),ce=chunkVYIKXRYZ_cjs.a(t=>{let e={0:"\u{1D7EC}",1:"\u{1D7ED}",2:"\u{1D7EE}",3:"\u{1D7EF}",4:"\u{1D7F0}",5:"\u{1D7F1}",6:"\u{1D7F2}",7:"\u{1D7F3}",8:"\u{1D7F4}",9:"\u{1D7F5}",a:"\u{1D5EE}",b:"\u{1D5EF}",c:"\u{1D5F0}",d:"\u{1D5F1}",e:"\u{1D5F2}",f:"\u{1D5F3}",g:"\u{1D5F4}",h:"\u{1D5F5}",i:"\u{1D5F6}",j:"\u{1D5F7}",k:"\u{1D5F8}",l:"\u{1D5F9}",m:"\u{1D5FA}",n:"\u{1D5FB}",o:"\u{1D5FC}",p:"\u{1D5FD}",q:"\u{1D5FE}",r:"\u{1D5FF}",s:"\u{1D600}",t:"\u{1D601}",u:"\u{1D602}",v:"\u{1D603}",w:"\u{1D604}",x:"\u{1D605}",y:"\u{1D606}",z:"\u{1D607}",A:"\u{1D5D4}",B:"\u{1D5D5}",C:"\u{1D5D6}",D:"\u{1D5D7}",E:"\u{1D5D8}",F:"\u{1D5D9}",G:"\u{1D5DA}",H:"\u{1D5DB}",I:"\u{1D5DC}",J:"\u{1D5DD}",K:"\u{1D5DE}",L:"\u{1D5DF}",M:"\u{1D5E0}",N:"\u{1D5E1}",O:"\u{1D5E2}",P:"\u{1D5E3}",Q:"\u{1D5E4}",R:"\u{1D5E5}",S:"\u{1D5E6}",T:"\u{1D5E7}",U:"\u{1D5E8}",V:"\u{1D5E9}",W:"\u{1D5EA}",X:"\u{1D5EB}",Y:"\u{1D5EC}",Z:"\u{1D5ED}"};return t.split("").map(r=>e[r]||r).join("")},"toUnicodeBold");var Ve=zod.z.string().describe("message"),V=zod.z.string().describe("address");var Xr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([V,Ve])});var Zr=zod.z.object({name:zod.z.string(),type:zod.z.string()}),be=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(Zr)}).catchall(zod.z.array(Zr)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),$t=zod.z.array(zod.z.object({type:zod.z.string(),name:zod.z.string(),value:zod.z.union([zod.z.string(),zod.z.number(),zod.z.boolean(),zod.z.object({}).passthrough(),zod.z.array(zod.z.unknown()),zod.z.null()])})).nonempty(),Wt=be.or($t),Qr=zod.z.union([zod.z.string().describe("data string"),be]),en=zod.z.union([zod.z.string().describe("data string"),Wt]),tn=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([V,en])}),rn=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([V,en])}),nn=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([V,Qr])}),an=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([V,Qr])});var on=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([Ve,V]),zod.z.tuple([Ve,V,zod.z.string().optional().describe("password")])])});var Za=zod.z.discriminatedUnion("method",[on,Xr,tn,rn,nn,an]).transform((t,e)=>{let{method:r,params:n}=t;switch(r){case vmModuleTypes.RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:r};case vmModuleTypes.RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:r};case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:{let a=n[0],s=n[1];if(typeof s!="string")return {data:s,address:a,method:r};try{let o=JSON.parse(s);return {data:Wt.parse(o),address:a,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:{let a=n[0],s=n[1];if(typeof s!="string")return {data:s,address:a,method:r};try{let o=JSON.parse(s);return {data:be.parse(o),address:a,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}}});function sn(t){return Za.safeParse(t)}chunkVYIKXRYZ_cjs.a(sn,"parseRequestParams");var cn=chunkVYIKXRYZ_cjs.a(t=>$t.safeParse(t).success,"isTypedDataV1"),hp=chunkVYIKXRYZ_cjs.a(t=>be.safeParse(t).success,"isTypedData");var ln=chunkVYIKXRYZ_cjs.a(t=>{try{let{EIP712Domain:e,...r}=t.types;return ethers.TypedDataEncoder.getPayload(t.domain,r,t.message),{isValid:!0}}catch(e){return {isValid:!1,error:e}}},"isTypedDataValid");var pn=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r,blockaid:n})=>{let a=sn({method:t.method,params:t.params});if(!a.success)return console.error("invalid params",a.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams(L("Params are invalid",a.error))};let{method:s,data:o,address:c}=a.data,l;(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(l=ln(o));let p,m,u;if(l&&!l.isValid&&(u={type:vmModuleTypes.AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements. Please verify message content!",detailedDescription:l.error.toString()}}),s===vmModuleTypes.RpcMethod.ETH_SIGN)p={type:s,account:c,data:o},m=o;else if(s===vmModuleTypes.RpcMethod.PERSONAL_SIGN)p={type:s,account:c,data:o},m=ethers.toUtf8String(o);else if(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)p={type:s,account:c,data:o},m=cn(o)?Kr(o):Ot(o);else if(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){p={type:s,account:c,data:o};let{types:E,primaryType:S,...R}=o;m=Ot(R);}if(!p||!m)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let f=await Vr({request:t,accountAddress:c,chainId:e.chainId,data:{method:s,params:t.params},dAppUrl:t.dappInfo.url,blockaid:n}),y={title:"Sign Message",dAppInfo:{name:t.dappInfo.name,action:`${t.dappInfo.name} is requesting to sign the following message`,logoUri:t.dappInfo.icon},network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},account:c,details:[{title:"Message",items:[Ut("Message",m,"vertical")]}],alert:f?.alert??u,balanceChange:f?.balanceChange,tokenApprovals:f?.tokenApprovals},h=await r.requestApproval({request:t,displayData:y,signingData:p});return "error"in h?{error:h.error}:"signedData"in h?{result:h.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}},"ethSign");var mn=chunkVYIKXRYZ_cjs.a(async(t,e)=>{try{return {result:await(await F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders})).send(t.method,t.params)}}catch(r){let n=r.info?.error?.message||r.error?.message||r.message;return {error:rpcErrors.rpcErrors.internal(n)}}},"forwardToRpcNode");var un=chunkVYIKXRYZ_cjs.a(async({accountIndex:t,xpub:e,walletType:r})=>{switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getAddressFromXPub(e,t)};case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{let n=Buffer.from(e,"hex");return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getEvmAddressFromPubKey(n)}}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}},"getAddress");function Re(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}chunkVYIKXRYZ_cjs.a(Re,"addIdToPromise");async function Pe(t){return await Promise.allSettled(t).then(e=>e.reduce((r,n)=>{if(n.status==="fulfilled"){let a=n.value;a.status==="fulfilled"?r[a.id]=a.value:r[a.id]={error:a.reason};}return r},{}))}chunkVYIKXRYZ_cjs.a(Pe,"settleAllIdPromises");var so={"ERC-20":vmModuleTypes.TokenType.ERC20,"ERC-721":vmModuleTypes.TokenType.ERC721,"ERC-1155":vmModuleTypes.TokenType.ERC1155,"NON-ERC":vmModuleTypes.TokenType.NONERC,SPL:vmModuleTypes.TokenType.SPL},io=zod.z.string().transform((t,e)=>{let r=so[t];return r||(e.addIssue({code:zod.z.ZodIssueCode.custom,message:`Unknown contractType: ${t}`}),zod.z.NEVER)}),co=zod.z.array(zod.z.object({address:zod.z.string(),chainId:zod.z.number(),contractType:io,decimals:zod.z.number(),internalId:zod.z.string().optional(),isNative:zod.z.boolean(),logoUri:zod.z.string().optional().nullable(),name:zod.z.string(),symbol:zod.z.string(),caip2Id:zod.z.string().optional(),color:zod.z.string().optional()}));async function gt({chainId:t,proxyApiUrl:e}){return (await U([`${e}/tokens?evmChainId=${t}`],co)).map(n=>({...n,type:n.contractType}))}chunkVYIKXRYZ_cjs.a(gt,"getTokens");var w,Se,le,We,xe,qt=class qt{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:a,fetch:s}){chunkVYIKXRYZ_cjs.d(this,w,void 0);chunkVYIKXRYZ_cjs.d(this,Se,void 0);chunkVYIKXRYZ_cjs.d(this,le,void 0);chunkVYIKXRYZ_cjs.d(this,We,void 0);chunkVYIKXRYZ_cjs.d(this,xe,void 0);chunkVYIKXRYZ_cjs.e(this,w,e),chunkVYIKXRYZ_cjs.e(this,Se,r),chunkVYIKXRYZ_cjs.e(this,le,n),chunkVYIKXRYZ_cjs.e(this,We,a),chunkVYIKXRYZ_cjs.e(this,xe,s);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let a=await F({chainId:e,chainName:chunkVYIKXRYZ_cjs.c(this,w).chainName,rpcUrl:chunkVYIKXRYZ_cjs.c(this,w).rpcUrl,multiContractAddress:chunkVYIKXRYZ_cjs.c(this,w).utilityAddresses?.multicall,customRpcHeaders:chunkVYIKXRYZ_cjs.c(this,w).customRpcHeaders}),s=chunkVYIKXRYZ_cjs.c(this,w).pricingProviders?.coingecko.nativeTokenId,o=chunkVYIKXRYZ_cjs.c(this,w).networkToken,c=new K({storage:chunkVYIKXRYZ_cjs.c(this,Se),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,le),fetch:chunkVYIKXRYZ_cjs.c(this,xe)}),l=s?await c.getSimplePrice({coinIds:[s],currencies:[n]}):{},p=l?.[s??""]?.[n]?.price??void 0,m=l?.[s??""]?.[n]?.marketCap??void 0,u=l?.[s??""]?.[n]?.vol24??void 0,f=l?.[s??""]?.[n]?.change24??void 0,y=await a.getBalance(r),h=new coreUtilsSdk.TokenUnit(y,o.decimals,o.symbol),E=p!==void 0?h.mul(p):void 0;return {...o,coingeckoId:s??"",type:vmModuleTypes.TokenType.NATIVE,balance:y,balanceDisplayValue:h.toDisplay(),balanceInCurrency:E?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:E?.toDisplay({fixedDp:2}),priceInCurrency:p,marketCap:m,vol24:u,change24:f}}async listErc20Balances({chainId:e,address:r,currency:n}){let a=await F({chainId:e,chainName:chunkVYIKXRYZ_cjs.c(this,w).chainName,rpcUrl:chunkVYIKXRYZ_cjs.c(this,w).rpcUrl,multiContractAddress:chunkVYIKXRYZ_cjs.c(this,w).utilityAddresses?.multicall,customRpcHeaders:chunkVYIKXRYZ_cjs.c(this,w).customRpcHeaders}),s=chunkVYIKXRYZ_cjs.c(this,w).pricingProviders?.coingecko.assetPlatformId,o=chunkVYIKXRYZ_cjs.c(this,w).pricingProviders?.coingecko.nativeTokenId,c=await gt({chainId:Number(e),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,le)}),l=c.map(R=>R.address),p=[...c,...chunkVYIKXRYZ_cjs.c(this,We)].filter(pt),m=chunkVYIKXRYZ_cjs.a(async R=>{let k=await new ethers.ethers.Contract(R.address,Br__default.default.abi,a).balanceOf?.(r)||0n;return {...R,balance:k}},"getTokenWithBalance"),u=p.map(R=>Re(m(R),R.address)),f=await Pe(u),y=new K({storage:chunkVYIKXRYZ_cjs.c(this,Se),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,le),fetch:chunkVYIKXRYZ_cjs.c(this,xe)}),h=s&&await y.getPricesByAddresses(l,s,n)||{},E=Object.keys(f),S={};for(let R=0;R<E.length;R++){let T=E[R];if(T===void 0)continue;let A=f[T];if(A===void 0||"error"in A){S[T]={error:`rpcService:getTokenWithBalance failed: ${A?.error??"unknown error"}`};continue}let k=h?.[o??""]?.[n]?.price??void 0,v=h?.[o??""]?.[n]?.marketCap??void 0,M=h?.[o??""]?.[n]?.vol24??void 0,j=h?.[o??""]?.[n]?.change24??void 0,we=new coreUtilsSdk.TokenUnit(A.balance,A.decimals,A.symbol),_=k!==void 0?we.mul(k):void 0;S[A.address.toLowerCase()]={...A,type:vmModuleTypes.TokenType.ERC20,balance:A.balance,balanceDisplayValue:we.toDisplay(),balanceInCurrency:_?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:_?.toDisplay({fixedDp:2}),priceInCurrency:k,marketCap:v,change24:j,vol24:M,reputation:null};}return S}async listNftBalances(){return {}}};w=new WeakMap,Se=new WeakMap,le=new WeakMap,We=new WeakMap,xe=new WeakMap,chunkVYIKXRYZ_cjs.a(qt,"RpcService");var Tt=qt;async function hn(t,e){let r=t.map(async(s,o)=>({index:o,result:await e(s)})),a=(await Promise.allSettled(r)).filter(s=>s.status==="fulfilled").map(s=>s).find(s=>s.value.result);return a?t[a.value.index]:void 0}chunkVYIKXRYZ_cjs.a(hn,"findAsync");var gn=chunkVYIKXRYZ_cjs.a(async({addresses:t,currency:e,network:r,proxyApiUrl:n,tokenTypes:a=[vmModuleTypes.TokenType.NATIVE,vmModuleTypes.TokenType.ERC20,vmModuleTypes.TokenType.ERC721,vmModuleTypes.TokenType.ERC1155],customTokens:s=[],storage:o,balanceServices:c=[],tokenService:l,fetch:p})=>{let m=r.chainId,u=[...c,new Tt({network:r,storage:o,proxyApiUrl:n,customTokens:s,fetch:p})],f=await hn(u,h=>h.isNetworkSupported(r.chainId)),y={};if(f){let h=[],E=[],S=[];t.forEach(k=>{a.includes(vmModuleTypes.TokenType.NATIVE)&&h.push(Re(f.getNativeBalance({address:k,currency:e.toUpperCase(),chainId:m}).then(async v=>{if(v.symbol==="AVAX"){let M=await l.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:e.toUpperCase()});return {...v,priceInCurrency:M.priceInCurrency,marketCap:M.marketCap,vol24:M.vol24,change24:M.change24}}return v}),k)),a.includes(vmModuleTypes.TokenType.ERC20)&&E.push(Re(f.listErc20Balances({customTokens:s.filter(pt),currency:e.toUpperCase(),chainId:m,address:k,pageSize:100}),k)),(a.includes(vmModuleTypes.TokenType.ERC721)||a.includes(vmModuleTypes.TokenType.ERC1155))&&S.push(Re(f.listNftBalances({chainId:m,address:k}),k));});let R=await Pe(h),T=await Pe(E),A=await Pe(S);Object.keys(R).forEach(k=>{let v=R[k];if(!v||"error"in v){y[k]={error:`getNativeBalance failed: ${v?.error??"unknown error"}`};return}let M=v.symbol;y[k]={[M]:v};}),Object.keys(T).forEach(k=>{let v=T[k];!v||"error"in v&&typeof v.error!="string"?y[k]={...y[k],error:"listErc20Balances failed: unknown error"}:"error"in v&&typeof v.error=="string"?y[k]={...y[k],error:`listErc20Balances failed: ${v.error}`}:y[k]={...y[k],...v};}),Object.keys(A).forEach(k=>{let v=A[k];!v||"error"in v&&typeof v.error!="string"?y[k]={...y[k],error:"listNftBalances failed: unknown error"}:"error"in v&&typeof v.error=="string"?y[k]={...y[k],error:`listNftBalances failed: ${v.error}`}:y[k]={...y[k],...v};});}else t.forEach(h=>{y[h]={error:"unsupported network"};});return y},"getBalances");var zt={LOW:1n,MEDIUM:4n,HIGH:6n},Kt=500000000n,mo=chunkVYIKXRYZ_cjs.a(t=>t===coreChainsSdk.ChainId.AVALANCHE_TESTNET_ID||t===coreChainsSdk.ChainId.AVALANCHE_MAINNET_ID,"isCChain"),bn=137,vn=80002,uo=chunkVYIKXRYZ_cjs.a(t=>t===bn||t===vn,"isPolygon"),fo={[bn]:"https://gasstation.polygon.technology/v2",[vn]:"https://gasstation.polygon.technology/amoy"};function pe(t){return BigInt(Math.round(t*1e9))}chunkVYIKXRYZ_cjs.a(pe,"gweiToWei");async function yo(t){let e=fo[t];if(!e)throw new Error(`No gas station URL for Polygon chain ${t}`);let r=await fetch(e);if(!r.ok)throw new Error(`Polygon Gas Station returned ${r.status}`);let n=await r.json();return {baseFee:pe(n.estimatedBaseFee),low:{maxFeePerGas:pe(n.safeLow.maxFee),maxPriorityFeePerGas:pe(n.safeLow.maxPriorityFee)},medium:{maxFeePerGas:pe(n.standard.maxFee),maxPriorityFeePerGas:pe(n.standard.maxPriorityFee)},high:{maxFeePerGas:pe(n.fast.maxFee),maxPriorityFeePerGas:pe(n.fast.maxPriorityFee)},isFixedFee:!1,displayDecimals:9}}chunkVYIKXRYZ_cjs.a(yo,"getPolygonGasStationFees");async function En({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,caipId:a,proxyApiUrl:s,customRpcHeaders:o}){let c=await F({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,customRpcHeaders:o});if(!s)throw rpcErrors.rpcErrors.internal("Proxy API URL is needed");if(mo(t))try{let T=await ho(c);return {...T,baseFee:T.medium.maxFeePerGas,displayDecimals:9,isFixedFee:!1}}catch{console.error("eth_suggestPriceOptions call failed, falling back to legacy fee fetching");}if(uo(t))try{return await yo(t)}catch{console.error("Polygon Gas Station call failed, falling back to generic fee fetching");}let l=await c.getBlock("latest",!1);if(!l)throw rpcErrors.rpcErrors.internal("There is no block");let p=l.baseFeePerGas;if(!p)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let m=await go(s,a),u=new coreUtilsSdk.TokenUnit(m,0,""),f=new coreUtilsSdk.TokenUnit(p,0,""),y=BigInt("1000000000"),h=f.mul(u).add(y).toSubUnit(),E=Kt*zt.LOW,S=Kt*zt.MEDIUM,R=Kt*zt.HIGH;return {baseFee:h,low:{maxFeePerGas:h+E,maxPriorityFeePerGas:E},medium:{maxFeePerGas:h+S,maxPriorityFeePerGas:S},high:{maxFeePerGas:h+R,maxPriorityFeePerGas:R},isFixedFee:!1,displayDecimals:9}}chunkVYIKXRYZ_cjs.a(En,"getNetworkFee");async function ho(t){let e=await t.send("eth_suggestPriceOptions",[]);return {low:{maxFeePerGas:BigInt(e.slow.maxFeePerGas),maxPriorityFeePerGas:BigInt(e.slow.maxPriorityFeePerGas)},medium:{maxFeePerGas:BigInt(e.normal.maxFeePerGas),maxPriorityFeePerGas:BigInt(e.normal.maxPriorityFeePerGas)},high:{maxFeePerGas:BigInt(e.fast.maxFeePerGas),maxPriorityFeePerGas:BigInt(e.fast.maxPriorityFeePerGas)}}}chunkVYIKXRYZ_cjs.a(ho,"suggestPriceOptions");async function go(t,e){if(!e)return 1.5;try{let n=await fetch(`${t}/gas/multiplier`);if(!n.ok)throw new Error(n.statusText);let a=await n.json();return a[e]??a.default}catch{return 1.5}}chunkVYIKXRYZ_cjs.a(go,"getGasMultiplier");function Pn(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}chunkVYIKXRYZ_cjs.a(Pn,"isNftTokenType");function Jt(t){let{txType:e,isSender:r,walletAddress:n,tokens:a}=t;if(a.length===0)return e;let s=n.toLowerCase(),o=a.some(m=>Pn(m.type)&&m.to?.address?.toLowerCase()===s),c=a.some(m=>Pn(m.type)&&m.from?.address?.toLowerCase()===s),l=e===vmModuleTypes.TransactionType.RECEIVE||e===vmModuleTypes.TransactionType.UNKNOWN||e===vmModuleTypes.TransactionType.TRANSFER||e===vmModuleTypes.TransactionType.AIRDROP,p=e===vmModuleTypes.TransactionType.SEND||e===vmModuleTypes.TransactionType.UNKNOWN||e===vmModuleTypes.TransactionType.TRANSFER||e===vmModuleTypes.TransactionType.AIRDROP;return !r&&o&&l?vmModuleTypes.TransactionType.NFT_RECEIVE:r&&c&&p?vmModuleTypes.TransactionType.NFT_SEND:e}chunkVYIKXRYZ_cjs.a(Jt,"convertTransactionType");var Sn=chunkVYIKXRYZ_cjs.a(({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a,s)=>{let o=!e&&!r&&!n,c=ko(t.method?.methodName),l=a.toLowerCase(),p=c.toLowerCase().includes("swap"),m=o&&t.from.address.toLowerCase()===l,u=o&&t.to.address.toLowerCase()===l,f=c==="Market Buy Orders With Eth"||c==="Buy NFT",y=c==="Approve",h=c.toLowerCase().includes("transfer"),E=c.toLowerCase().includes("airdrop"),S=c.toLowerCase().includes("unwrap"),R=c==="Fill Order",T;p?T=vmModuleTypes.TransactionType.SWAP:m?T=vmModuleTypes.TransactionType.SEND:u?T=vmModuleTypes.TransactionType.RECEIVE:f?T=vmModuleTypes.TransactionType.NFT_BUY:y?T=vmModuleTypes.TransactionType.APPROVE:h?T=vmModuleTypes.TransactionType.TRANSFER:E?T=vmModuleTypes.TransactionType.AIRDROP:S?T=vmModuleTypes.TransactionType.UNWRAP:R?T=vmModuleTypes.TransactionType.FILL_ORDER:T=vmModuleTypes.TransactionType.UNKNOWN;let A=t.from.address.toLowerCase()===l;return Jt({txType:T,isSender:A,walletAddress:a,tokens:s})},"getTxType"),ko=chunkVYIKXRYZ_cjs.a((t="")=>t.includes("(")?To__default.default(t.split("(",1)[0]):t,"parseRawMethod");function xn({tx:t,networkToken:e,explorerUrl:r,chainId:n,address:a}){let s=t.from_address.toLowerCase()===a.toLowerCase(),o=new Date(t.block_timestamp).getTime(),c=Eo(t.category),l=!bo.has(t.category),p=So(t,e,a),m=Te(r,t.hash);return c=Jt({txType:c,isSender:s,walletAddress:a,tokens:p}),{isContractCall:l,isIncoming:!s,isOutgoing:s,isSender:s,timestamp:o,hash:t.hash,from:t.from_address,to:t.to_address??"",tokens:p,gasPrice:t.gas_price,gasUsed:t.receipt_gas_used,chainId:n.toString(),txType:c,method:t.method_label??void 0,explorerLink:m}}chunkVYIKXRYZ_cjs.a(xn,"convertMoralisTransaction");var bo=new Set(["send","receive","token send","token receive"]),vo={send:vmModuleTypes.TransactionType.SEND,receive:vmModuleTypes.TransactionType.RECEIVE,"token send":vmModuleTypes.TransactionType.SEND,"token receive":vmModuleTypes.TransactionType.RECEIVE,"nft send":vmModuleTypes.TransactionType.NFT_SEND,"nft receive":vmModuleTypes.TransactionType.NFT_RECEIVE,"token swap":vmModuleTypes.TransactionType.SWAP,"nft purchase":vmModuleTypes.TransactionType.NFT_BUY,"nft sale":vmModuleTypes.TransactionType.NFT_SEND,airdrop:vmModuleTypes.TransactionType.AIRDROP,mint:vmModuleTypes.TransactionType.NFT_BUY,burn:vmModuleTypes.TransactionType.UNKNOWN,deposit:vmModuleTypes.TransactionType.UNKNOWN,withdraw:vmModuleTypes.TransactionType.UNKNOWN,borrow:vmModuleTypes.TransactionType.UNKNOWN,"contract interaction":vmModuleTypes.TransactionType.UNKNOWN};function Eo(t){return vo[t]??vmModuleTypes.TransactionType.UNKNOWN}chunkVYIKXRYZ_cjs.a(Eo,"getMoralisTransactionType");function Q(t){if(!(t==null||t===""))return {address:t}}chunkVYIKXRYZ_cjs.a(Q,"getTransferAddress");function kt(t){return t?.trim()??""}chunkVYIKXRYZ_cjs.a(kt,"trimOrEmpty");function Ro(t){let e=t.trim().toLowerCase();return !e.startsWith("0x")||e.length<12?t.trim():`${e.slice(0,6)}\u2026${e.slice(-4)}`}chunkVYIKXRYZ_cjs.a(Ro,"shortenHexAddress");function Po(t){let e=kt(t.token_symbol);if(e!=="")return e;let r=kt(t.token_name);return r!==""?r:Ro(t.address)}chunkVYIKXRYZ_cjs.a(Po,"getErc20DisplaySymbol");function So(t,e,r){let n=[],a=t.native_transfers.map(o=>xo(o,e)),s=t.erc20_transfers.map(o=>Io(o));n.push(...a,...s);for(let o of t.nft_transfers)n.push(Ao(o));return n.length===0&&n.push(No(t,e,r)),n}chunkVYIKXRYZ_cjs.a(So,"buildTokens");function xo(t,e){let r=kt(t.token_symbol)||e.symbol,n=new coreUtilsSdk.TokenUnit(t.value,e.decimals,r);return {decimal:e.decimals.toString(),name:e.name,symbol:r,amount:n.toDisplay(),from:Q(t.from_address),to:Q(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}chunkVYIKXRYZ_cjs.a(xo,"buildNativeToken");function Io(t){let e=Number(t.token_decimals),r=Po(t),n=new coreUtilsSdk.TokenUnit(t.value,e,r),a=kt(t.token_name)||r;return {decimal:t.token_decimals,name:a,symbol:r,amount:n.toDisplay(),from:Q(t.from_address),to:Q(t.to_address),type:vmModuleTypes.TokenType.ERC20,address:t.address}}chunkVYIKXRYZ_cjs.a(Io,"buildErc20Token");function Ao(t){let e=t.contract_type==="ERC1155"?vmModuleTypes.TokenType.ERC1155:vmModuleTypes.TokenType.ERC721;return {name:"",symbol:"",amount:t.amount,collectableTokenId:t.token_id,from:Q(t.from_address),to:Q(t.to_address),type:e,address:t.token_address}}chunkVYIKXRYZ_cjs.a(Ao,"buildNftToken");function No(t,e,r){let n=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol),s=t.from_address.toLowerCase()===r.toLowerCase()?`-${n.toDisplay()}`:n.toDisplay();return {decimal:e.decimals.toString(),name:e.name,symbol:e.symbol,amount:s,from:Q(t.from_address),to:Q(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}chunkVYIKXRYZ_cjs.a(No,"buildFallbackNativeToken");var Co="https://proxy-api.avax.network/proxy/moralis-evm";async function In({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s}){try{let o=`0x${t.toString(16)}`,c=new URLSearchParams({chain:o,limit:(s??25).toString()});a&&c.set("cursor",a);let l=`${Co}/wallets/${n}/history?${c.toString()}`,p=await fetch(l);if(!p.ok)return {transactions:[],nextPageToken:""};let m=await p.json();return Array.isArray(m.result)?{transactions:m.result.filter(f=>f.receipt_status==="1").map(f=>xn({tx:f,networkToken:e,explorerUrl:r,chainId:t,address:n})),nextPageToken:m.cursor??""}:{transactions:[],nextPageToken:""}}catch{return {transactions:[],nextPageToken:""}}}chunkVYIKXRYZ_cjs.a(In,"getTransactionsFromMoralis");var wo=new Set([1,4,5,11155111,8453,42161,10]);function An(t){return wo.has(t)}chunkVYIKXRYZ_cjs.a(An,"isMoralisSupportedChain");var Nn=chunkVYIKXRYZ_cjs.a((t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},a)=>{let s=t===vmModuleTypes.TransactionType.TRANSFER,o=t===vmModuleTypes.TransactionType.SEND||t===vmModuleTypes.TransactionType.NFT_SEND,c=t===vmModuleTypes.TransactionType.RECEIVE||t===vmModuleTypes.TransactionType.NFT_RECEIVE,l=e?.from?.address,p=e?.to?.address;s&&r&&r[0]&&(l=r[0].from.address,p=r[0].to.address),s&&n&&n[0]&&(l=n[0].from.address,p=n[0].to.address);let m=o||s&&l.toLowerCase()===a.toLowerCase(),u=c||s&&p.toLowerCase()===a.toLowerCase();return {isOutgoing:m,isIncoming:u,isSender:l===a,from:l,to:p}},"getSenderInfo");async function Cn(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}chunkVYIKXRYZ_cjs.a(Cn,"resolve");var Bo="https://ipfs.io";function Ie(t,e=Bo){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}chunkVYIKXRYZ_cjs.a(Ie,"ipfsResolverWithFallback");async function Do(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}chunkVYIKXRYZ_cjs.a(Do,"fetchWithTimeout");async function wn(t){let e={};if(t)if(t.startsWith("data:application/json;base64,")){let r=t.substring(29);try{let n=Buffer.from(r,"base64").toString();e=JSON.parse(n);}catch{e={};}}else e=await Do(Ie(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}chunkVYIKXRYZ_cjs.a(wn,"getNftMetadata");var Uo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function _n(t,e="256"){let r=Ie(t);return `${Uo}/width=${e},fit/${r}`}chunkVYIKXRYZ_cjs.a(_n,"getSmallImageForNFT");var Un=chunkVYIKXRYZ_cjs.a(async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a)=>{let s=[];if(t.value!=="0"){let o=a.decimals,l=new coreUtilsSdk.TokenUnit(t.value,a.decimals,a.symbol).toDisplay();s.push({decimal:o.toString(),name:a.name,symbol:a.symbol,amount:l,from:t.from,to:t.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(o=>{let c=o.erc20Token.decimals,p=new coreUtilsSdk.TokenUnit(o.value,c,o.erc20Token.symbol).toDisplay();s.push({decimal:c.toString(),address:o.erc20Token.address,name:o.erc20Token.name,symbol:o.erc20Token.symbol,amount:p,from:o.from,to:o.to,imageUri:o.erc20Token.logoUri,type:vmModuleTypes.TokenType.ERC20});}),r&&await Promise.allSettled(r.map(async o=>{let c=o.erc721Token,l=await Dn(c.tokenUri,c.metadata.imageUri);s.push({name:o.erc721Token.name,symbol:o.erc721Token.symbol,address:o.erc721Token.address,amount:"1",imageUri:l,from:o.from,to:o.to,collectableTokenId:o.erc721Token.tokenId,type:vmModuleTypes.TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async o=>{let c=o.erc1155Token,l=await Dn(c.tokenUri,c.metadata.imageUri);s.push({name:o.erc1155Token.metadata.name??"",symbol:o.erc1155Token.metadata.symbol??"",address:o.erc1155Token.address,amount:o.value,imageUri:l,from:o.from,to:o.to,collectableTokenId:o.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),s},"getTokens"),Dn=chunkVYIKXRYZ_cjs.a(async(t,e)=>{if(e)return e.startsWith("ipfs://")?Ie(e):e;{let[r,n]=await Cn(wn(t));return n?"":r.image?_n(r.image):""}},"getImageUri");var Fn=chunkVYIKXRYZ_cjs.a(async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:a})=>{let s=await Un(t,r),o=Sn(t,a,s),{isOutgoing:c,isIncoming:l,isSender:p,from:m,to:u}=Nn(o,t,a),{blockTimestamp:f,txHash:y,gasPrice:h,gasUsed:E}=t.nativeTransaction,S=Te(e,y);return {isContractCall:!Pr.includes(o),isIncoming:l,isOutgoing:c,isSender:p,timestamp:f*1e3,hash:y,from:m,to:u,tokens:s,gasPrice:h,gasUsed:E,chainId:n.toString(),txType:o,explorerLink:S}},"convertTransaction");var Gn=chunkVYIKXRYZ_cjs.a(async({chainId:t,explorerUrl:e,networkToken:r,address:n,nextPageToken:a,offset:s,glacierService:o})=>{try{let c=await o.listTransactions({chainId:t.toString(),address:n,pageToken:a,pageSize:s});return {transactions:(await Promise.all(c.transactions.filter(m=>m.nativeTransaction.txStatus==="1").map(m=>Fn({transactions:m,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(u=>u)))).filter(m=>m.tokens.find(u=>Number(u.amount)!==0)),nextPageToken:c.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}},"getTransactionsFromGlacier");var Ln=chunkVYIKXRYZ_cjs.a(async({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s,glacierService:o})=>An(t)?In({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s}):o.isHealthy()?Gn({networkToken:e,explorerUrl:r,chainId:t,address:n,nextPageToken:a,offset:s,glacierService:o}):{transactions:[],nextPageToken:""},"getTransactionHistory");var Go="https://ipfs.io";function Mn(t,e=Go){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}chunkVYIKXRYZ_cjs.a(Mn,"ipfsResolverWithFallback");var Lo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function vt(t,e="256"){let r=Mn(t);return `${Lo}/width=${e},fit/${r}`}chunkVYIKXRYZ_cjs.a(vt,"getSmallImageForNFT");var Ae,H,Zt=class Zt{constructor(e,r){this.baseUrl=e;chunkVYIKXRYZ_cjs.d(this,Ae,[]);chunkVYIKXRYZ_cjs.d(this,H,void 0);chunkVYIKXRYZ_cjs.e(this,H,r??fetch);}async isNetworkSupported(e){return (await this.getChainList()).some(n=>n.community_id===e)}async getChainInfo({chainId:e}){return (await this.getChainList()).find(n=>n.id===e)}async getTokenBalance({chainId:e,address:r,tokenId:n}){let a=await chunkVYIKXRYZ_cjs.c(this,H).call(this,`${this.baseUrl}/v1/user/token?id=${r}&chain_id=${e}&token_id=${n}`);if(a.ok)return await a.json();throw new Error(`${a.status}:${a.statusText}`)}async getTokensBalanceOnChain({chainId:e,address:r}){let n=await chunkVYIKXRYZ_cjs.c(this,H).call(this,`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getTokenList({chainId:e,address:r}){let n=await(chunkVYIKXRYZ_cjs.c(this,H)??globalThis.fetch)(`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getChainList(){if(chunkVYIKXRYZ_cjs.c(this,Ae).length===0){let e=await chunkVYIKXRYZ_cjs.c(this,H).call(this,`${this.baseUrl}/v1/chain/list`);if(e.ok)chunkVYIKXRYZ_cjs.e(this,Ae,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return chunkVYIKXRYZ_cjs.c(this,Ae)}async getNftList({address:e,chainId:r}){return U([`${this.baseUrl}/v1/user/nft_list?id=${e}&chain_id=${r}`],Ho,chunkVYIKXRYZ_cjs.c(this,H))}};Ae=new WeakMap,H=new WeakMap,chunkVYIKXRYZ_cjs.a(Zt,"DeBank");var Et=Zt,Vo=zod.z.object({id:zod.z.union([zod.z.custom(ethers.isHexString),zod.z.string()]),chain:zod.z.string(),name:zod.z.string()}),Oo=Vo.merge(zod.z.object({contract_id:zod.z.string(),description:zod.z.string().nullable(),content_type:zod.z.string().nullable(),content:zod.z.string(),thumbnail_url:zod.z.string(),total_supply:zod.z.number(),detail_url:zod.z.string(),collection_id:zod.z.string(),is_core:zod.z.boolean(),inner_id:zod.z.string(),collection_name:zod.z.string(),contract_name:zod.z.string(),amount:zod.z.number(),usd_price:zod.z.number().optional(),is_erc721:zod.z.boolean().optional(),is_erc1155:zod.z.boolean().optional()})),Ho=zod.z.array(Oo);var O,Ne,Pt,xt,On,er=class er{constructor({proxyApiUrl:e,fetch:r}){chunkVYIKXRYZ_cjs.d(this,Ne);chunkVYIKXRYZ_cjs.d(this,xt);chunkVYIKXRYZ_cjs.d(this,O,void 0);chunkVYIKXRYZ_cjs.e(this,O,new Et(`${e}/proxy/debank`,r));}async isNetworkSupported(e){return chunkVYIKXRYZ_cjs.c(this,O).isNetworkSupported(e)}async getNativeBalance({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid address: "+r);let{chainInfo:a,chainIdString:s}=await chunkVYIKXRYZ_cjs.f(this,Ne,Pt).call(this,e),o=a.native_token_id,c=await chunkVYIKXRYZ_cjs.c(this,O).getTokenBalance({address:r,chainId:s,tokenId:o}),l=new coreUtilsSdk.TokenUnit(c.raw_amount,c.decimals,c.symbol),p=l.toDisplay(),u=(await Xe()).usd[n.toLowerCase()],f=u?u*c.price:void 0,y=f?l.mul(f).toDisplay({fixedDp:2}):void 0,h=f?l.mul(f).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {name:c.name,symbol:c.symbol,decimals:c.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:c.logo_url,balance:l.toSubUnit(),balanceDisplayValue:p,balanceInCurrency:h,balanceCurrencyDisplayValue:y,priceInCurrency:f}}async listErc20Balances({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:a,chainIdString:s}=await chunkVYIKXRYZ_cjs.f(this,Ne,Pt).call(this,e),o=await chunkVYIKXRYZ_cjs.c(this,O).getTokensBalanceOnChain({chainId:s,address:r}),c=await Xe(),l={};for(let p of o){if(p.id===a.native_token_id||p.is_core===!1)continue;let m=new coreUtilsSdk.TokenUnit(p.raw_amount,p.decimals,p.symbol),u=m.toDisplay(),f=c.usd[n.toLowerCase()],y=f?f*p.price:void 0,h=y?m.mul(y).toDisplay({fixedDp:2}):void 0,E=y?m.mul(y).toDisplay({fixedDp:2,asNumber:!0}):void 0;l[p.id]={chainId:a.community_id,address:p.id,name:p.name,symbol:p.symbol,decimals:p.decimals,logoUri:p.logo_url,balance:m.toSubUnit(),balanceCurrencyDisplayValue:h,balanceDisplayValue:u,balanceInCurrency:E,priceInCurrency:y,type:vmModuleTypes.TokenType.ERC20,reputation:null};}return l}async listNftBalances({chainId:e,address:r}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listNftBalances: not valid address");let{chainIdString:n}=await chunkVYIKXRYZ_cjs.f(this,Ne,Pt).call(this,e),a=await chunkVYIKXRYZ_cjs.c(this,O).getNftList({chainId:n,address:r});return chunkVYIKXRYZ_cjs.f(this,xt,On).call(this,a,e)}};O=new WeakMap,Ne=new WeakSet,Pt=chunkVYIKXRYZ_cjs.a(async function(e){let n=(await chunkVYIKXRYZ_cjs.c(this,O).getChainList()).find(s=>s.community_id===e)?.id;if(!n)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let a=await chunkVYIKXRYZ_cjs.c(this,O).getChainInfo({chainId:n});if(!a)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);return {chainInfo:a,chainIdString:n}},"#getChainInfo"),xt=new WeakSet,On=chunkVYIKXRYZ_cjs.a(function(e,r){return e.reduce((n,a)=>({...n,[`${a.contract_id}-${a.id}`]:{chainId:r,address:a.contract_id,description:a.description??"",logoUri:a.thumbnail_url,logoSmall:vt(a.content),name:a.name,symbol:"",tokenId:`${a.inner_id}`,tokenUri:a.detail_url,collectionName:a.collection_name,balance:BigInt(a.amount),balanceDisplayValue:`${a.amount}`,type:a.is_erc721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{indexStatus:glacierSdk.NftTokenMetadataStatus.UNINDEXED,description:a.description??"",properties:""}}}),{})},"#mapNftList"),chunkVYIKXRYZ_cjs.a(er,"DeBankService");var St=er;var rr=class rr extends Error{constructor(){super(...arguments);chunkVYIKXRYZ_cjs.b(this,"message","Glacier is unhealthy. Try again later.");}};chunkVYIKXRYZ_cjs.a(rr,"GlacierUnhealthyError");var $=rr,Yo=[coreChainsSdk.ChainId.ETHEREUM_HOMESTEAD],nr=class nr{constructor({glacierApiUrl:e,headers:r}){chunkVYIKXRYZ_cjs.b(this,"glacierSdk");chunkVYIKXRYZ_cjs.b(this,"isGlacierHealthy",!0);chunkVYIKXRYZ_cjs.b(this,"supportedChainIds",[]);chunkVYIKXRYZ_cjs.b(this,"isHealthy",chunkVYIKXRYZ_cjs.a(()=>this.isGlacierHealthy,"isHealthy"));this.glacierSdk=new glacierSdk.Glacier({BASE:e,HEADERS:r},De),this.getSupportedChainIds().catch(()=>{});}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async isNetworkSupported(e){return (await this.getSupportedChainIds()).some(n=>n===e.toString())}async getSupportedChainIds(){if(this.supportedChainIds.length)return this.supportedChainIds;try{let e=await this.glacierSdk.evmChains.supportedChains({});return this.supportedChainIds=e.chains.map(r=>r.chainId).filter(r=>!Yo.includes(Number(r))),this.supportedChainIds}catch{return []}}async reindexNft({address:e,chainId:r,tokenId:n}){try{await this.glacierSdk.nfTs.reindexNft({address:e,chainId:r,tokenId:n});}catch(a){throw a instanceof $&&this.setGlacierToUnhealthy(),a}}async getTokenDetails({address:e,chainId:r,tokenId:n}){try{return this.glacierSdk.nfTs.getTokenDetails({address:e,chainId:r,tokenId:n})}catch(a){throw a instanceof $&&this.setGlacierToUnhealthy(),a}}async getNativeBalance({chainId:e,address:r,currency:n,coingeckoId:a}){try{let o=(await this.glacierSdk.evmBalances.getNativeBalance({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase()})).nativeTokenBalance,c=new coreUtilsSdk.TokenUnit(o.balance,o.decimals,o.symbol),l=o.price?.value,p=l!==void 0?c.mul(l):void 0;return {name:o.name,symbol:o.symbol,decimals:o.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:o.logoUri,balance:c.toSubUnit(),balanceDisplayValue:c.toDisplay(),balanceInCurrency:p?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:p?.toDisplay({fixedDp:2}),priceInCurrency:l,coingeckoId:a??""}}catch(s){throw s instanceof $&&this.setGlacierToUnhealthy(),s}}async listErc721Balances({chainId:e,address:r}){let n,a=[];do try{let s=await this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...s.erc721TokenBalances),n=s.nextPageToken;}catch(s){throw s instanceof $&&this.setGlacierToUnhealthy(),s}while(n);return a}async listErc1155Balances({chainId:e,address:r}){let n,a=[];do try{let s=await this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...s.erc1155TokenBalances),n=s.nextPageToken;}catch(s){throw s instanceof $&&this.setGlacierToUnhealthy(),s}while(n);return a}async listNftBalances({chainId:e,address:r}){let a=(await Promise.allSettled([this.listErc721Balances({chainId:e.toString(),address:r}),this.listErc1155Balances({chainId:e.toString(),address:r})])).filter(s=>s.status==="fulfilled").flatMap(s=>s.value.filter(o=>o.ercType===glacierSdk.Erc721Token.ercType.ERC_721||BigInt(o.balance)>0n).map(o=>[`${o.address}-${o.tokenId}`,{address:o.address,description:o.metadata.description??"",logoUri:o.metadata.imageUri??"",logoSmall:vt(o.metadata.imageUri??""),name:o.metadata.name??"",symbol:o.metadata.symbol??"",tokenId:o.tokenId,tokenUri:o.tokenUri,chainId:e,collectionName:"Unknown",balance:o.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?BigInt(o.balance):1,balanceDisplayValue:o.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?o.balance:"1",type:o.ercType===glacierSdk.Erc721Token.ercType.ERC_721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{indexStatus:o.metadata.indexStatus,description:o.metadata.description,lastUpdatedTimestamp:o.metadata.metadataLastUpdatedTimestamp,properties:o.ercType===glacierSdk.Erc721Token.ercType.ERC_721?o.metadata.attributes:o.metadata.properties}}]));return Object.fromEntries(a)}async listErc20Balances({chainId:e,address:r,currency:n,customTokens:a}){try{let s=[],o;do{let c=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:o});s.push(...Ko(c.erc20TokenBalances,Number(e))),o=c.nextPageToken;}while(o);return [...zo(a),...s].reduce((c,l)=>({...c,[l.address.toLowerCase()]:l}),{})}catch(s){throw s instanceof $&&this.setGlacierToUnhealthy(),s}}async listTransactions({chainId:e,address:r,pageToken:n,pageSize:a}){try{return this.glacierSdk.evmTransactions.listTransactionsV2({chainId:e,address:r,pageToken:n,pageSize:a,filterSpamTokens:!0})}catch(s){throw s instanceof $&&this.setGlacierToUnhealthy(),s}}};chunkVYIKXRYZ_cjs.a(nr,"EvmGlacierService");var It=nr,zo=chunkVYIKXRYZ_cjs.a(t=>t.map(e=>({...e,decimals:e.decimals??18,type:vmModuleTypes.TokenType.ERC20,balance:0n,balanceInCurrency:0,balanceDisplayValue:"0",balanceCurrencyDisplayValue:"0",priceInCurrency:0,marketCap:0,change24:0,vol24:0,reputation:null})),"convertErc20TokenToTokenWithBalance"),Ko=chunkVYIKXRYZ_cjs.a((t,e)=>t.map(r=>{let n=new coreUtilsSdk.TokenUnit(r.balance,r.decimals,r.symbol),a=n.toDisplay(),s=r.balanceValue?.value.toString(),o=r.price?.value,c=o!==void 0?n.mul(o).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {chainId:e,address:r.address,name:r.name,symbol:r.symbol,decimals:r.decimals,logoUri:r.logoUri,balance:n.toSubUnit(),balanceCurrencyDisplayValue:s,balanceDisplayValue:a,balanceInCurrency:c,priceInCurrency:o,reputation:r.tokenReputation,type:vmModuleTypes.TokenType.ERC20}}),"convertErc20TokenWithBalanceToTokenWithBalance");var Ce,Ke,te,W,me,de,ar=class ar{constructor({approvalController:e,environment:r,appInfo:n,runtime:a}){chunkVYIKXRYZ_cjs.d(this,Ce,void 0);chunkVYIKXRYZ_cjs.d(this,Ke,void 0);chunkVYIKXRYZ_cjs.d(this,te,void 0);chunkVYIKXRYZ_cjs.d(this,W,void 0);chunkVYIKXRYZ_cjs.d(this,me,void 0);chunkVYIKXRYZ_cjs.d(this,de,void 0);let{glacierApiUrl:s,proxyApiUrl:o}=hr(r);chunkVYIKXRYZ_cjs.e(this,de,a),chunkVYIKXRYZ_cjs.e(this,Ce,new It({glacierApiUrl:s,headers:Ft(n)})),chunkVYIKXRYZ_cjs.e(this,Ke,new St({proxyApiUrl:o,fetch:chunkVYIKXRYZ_cjs.c(this,de)?.fetch})),chunkVYIKXRYZ_cjs.e(this,te,o),chunkVYIKXRYZ_cjs.e(this,W,e),chunkVYIKXRYZ_cjs.e(this,me,new Xo__default.default({baseURL:o+"/proxy/blockaid/",apiKey:fr,httpAgent:a?.httpAgent,fetch:a?.fetch}));}getProvider(e){return F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders})}getAddress({accountIndex:e,xpub:r,walletType:n}){return un({accountIndex:e,xpub:r,walletType:n})}buildDerivationPath(e){return at(e)}deriveAddress(e){return br({...e,approvalController:chunkVYIKXRYZ_cjs.c(this,W)})}getBalances({addresses:e,network:r,currency:n,customTokens:a,storage:s,tokenTypes:o}){let c=new K({storage:s,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te),fetch:chunkVYIKXRYZ_cjs.c(this,de)?.fetch});return gn({addresses:e,currency:n,network:r,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te),customTokens:a,balanceServices:[chunkVYIKXRYZ_cjs.c(this,Ce),chunkVYIKXRYZ_cjs.c(this,Ke)],storage:s,tokenTypes:o,tokenService:c,fetch:chunkVYIKXRYZ_cjs.c(this,de)?.fetch})}getManifest(){let e=vmModuleTypes.parseManifest(ur);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:a,utilityAddresses:s,caipId:o,customRpcHeaders:c}=e;return En({chainId:r,chainName:n,rpcUrl:a,multiContractAddress:s?.multicall,caipId:o,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te),customRpcHeaders:c})}getTransactionHistory(e){let{network:r,address:n,nextPageToken:a,offset:s}=e,{chainId:o,networkToken:c,explorerUrl:l=""}=r;return Ln({chainId:o,networkToken:c,explorerUrl:l,address:n,nextPageToken:a,offset:s,glacierService:chunkVYIKXRYZ_cjs.c(this,Ce)})}getTokens(e){let{chainId:r}=e;return gt({chainId:r,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return zr({request:e,network:r,approvalController:chunkVYIKXRYZ_cjs.c(this,W),blockaid:chunkVYIKXRYZ_cjs.c(this,me)});case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION_BATCH:return Ir(chunkVYIKXRYZ_cjs.c(this,W))?$r({request:e,network:r,approvalController:chunkVYIKXRYZ_cjs.c(this,W),blockaid:chunkVYIKXRYZ_cjs.c(this,me)}):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} requires BatchApprovalController`)};case vmModuleTypes.RpcMethod.PERSONAL_SIGN:case vmModuleTypes.RpcMethod.ETH_SIGN:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:return pn({request:e,network:r,approvalController:chunkVYIKXRYZ_cjs.c(this,W),blockaid:chunkVYIKXRYZ_cjs.c(this,me)});default:return Zo(e.method)?mn(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};Ce=new WeakMap,Ke=new WeakMap,te=new WeakMap,W=new WeakMap,me=new WeakMap,de=new WeakMap,chunkVYIKXRYZ_cjs.a(ar,"EvmModule");var jn=ar,Zo=chunkVYIKXRYZ_cjs.a(t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t),"shouldForwardToRpcNode");
43
43
 
44
44
  exports.ERC20TransactionType = se;
45
45
  exports.EvmModule = jn;