@avalabs/evm-module 3.0.4 → 3.0.7

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
@@ -23,7 +23,7 @@ var mr__default = /*#__PURE__*/_interopDefault(mr);
23
23
  var io__default = /*#__PURE__*/_interopDefault(io);
24
24
  var lr__default = /*#__PURE__*/_interopDefault(lr);
25
25
 
26
- async function Ne({chainId:t,proxyApiUrl:e}){let r=await fetch(`${e}/tokens?evmChainId=${t}`);if(!r.ok)throw rpcErrors.rpcErrors.internal(`Failed to fetch tokens for chainId ${t}`);return r.json()}var Te=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=M.exponential()})=>{let a=0,o=0,s;for(;o<r;){o>0&&await gn(a);try{let c=await t(o);if(e(c))return c}catch(c){s=c;}a=n(o),o++;}let i=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(i)},M=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return r=>e*1e3}static constantMs(e){return r=>e}static linearThenExponential(e,r){return n=>{if(n<e)return (n+1)*r;let a=n-e+1,o=e*r,s=2*r*(Math.pow(2,a)-1);return o+s}}};function gn(t){return new Promise(e=>setTimeout(e,t))}var ct=t=>Te({operation:e=>t(e>0),maxRetries:2,backoffPolicy:M.constant(1),isSuccess:e=>e?.status?.error_code!==429});function At(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function lt(t){let e,r=0;for(e=0;e<t.length;e++){let n=At(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}async function N(t,e){let r=await fetch(...t);if(!r.ok)throw new Error(`Request failed with status ${r.status}`);let n=await r.json();return e.parse(n)}var ke=class{constructor(e){this.proxyApiUrl=e;}simplePrice(e){let r=new URLSearchParams(e);return N([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(e){let{id:r,...n}=e,a=new URLSearchParams(n);return N([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}};var Tn=zod.z.array(zod.z.object({internalId:zod.z.string(),id:zod.z.string(),symbol:zod.z.string(),name:zod.z.string(),image:zod.z.string().optional().nullable(),current_price:zod.z.number().optional().nullable(),price_change_percentage_24h:zod.z.number().optional().nullable(),market_cap:zod.z.number().optional().nullable(),total_volume:zod.z.number().optional().nullable(),platforms:zod.z.record(zod.z.string(),zod.z.string())})),_e=class{constructor(e){this.proxyApiUrl=e;}watchlistToken(e){let r=new URLSearchParams(e);return N([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],Tn)}};var Ct=coreCoingeckoSdk.getBasicCoingeckoHttp(),O,Y,H=class{constructor({storage:e,proxyApiUrl:r}){chunkTKL4UUHE_cjs.c(this,O,void 0);chunkTKL4UUHE_cjs.c(this,Y,void 0);chunkTKL4UUHE_cjs.a(this,"transformSimplePriceResponse",(e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(a=>{let o=e[a];n[a]={},r.forEach(s=>{n[a]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),n});chunkTKL4UUHE_cjs.d(this,O,e),chunkTKL4UUHE_cjs.d(this,Y,r);}async getWatchlistDataForToken({tokenDetails:e,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let a=(await new _e(chunkTKL4UUHE_cjs.b(this,Y)).watchlistToken({tokens:e.symbol,currency:r})).filter(o=>e.isNative?o.internalId===`NATIVE-${e.symbol.toLowerCase()}`:o.platforms[e.caip2Id]===e.address)[0];return a?{priceInCurrency:a.current_price??0,change24:a.price_change_percentage_24h??0,marketCap:a.market_cap??0,vol24:a.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${e?`${lt(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkTKL4UUHE_cjs.b(this,O)?.get?.(o),n)return n;try{n=await ct(s=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{n=void 0;}return chunkTKL4UUHE_cjs.b(this,O)?.set?.(o,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,s=`getPricesWithMarketDataByAddresses-${`${lt(e)}-${r}-${n}`}`;if(a=chunkTKL4UUHE_cjs.b(this,O)?.get?.(s),a)return a;try{a=await ct(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:i}));}catch(i){console.error(i),a=void 0;}return chunkTKL4UUHE_cjs.b(this,O)?.set?.(s,a),a}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let o=await new ke(chunkTKL4UUHE_cjs.b(this,Y)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(o,[n])}return coreCoingeckoSdk.simpleTokenPrice(Ct,{assetPlatformId:e,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:a=!1,change24:o=!1,lastUpdated:s=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await new ke(chunkTKL4UUHE_cjs.b(this,Y)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:o,include_last_updated_at:s});return this.transformSimplePriceResponse(l,r)}return coreCoingeckoSdk.simplePrice(Ct,{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:o,lastUpdated:s,shouldThrow:c})}};O=new WeakMap,Y=new WeakMap;var xn="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",In="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",Bt=zod.object({date:zod.string(),usd:zod.record(zod.number())}),De=async()=>{try{return await N([xn],Bt)}catch{return await N([In],Bt)}};var pt=(t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),Ge=(t,e)=>({label:t,value:e,type:vmModuleTypes.DetailItemType.LINK}),re=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e});var Fe=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.NETWORK,value:e});var mt=({name:t,version:e})=>{switch(t){case vmModuleTypes.AppName.CORE_MOBILE_IOS:case vmModuleTypes.AppName.CORE_MOBILE_ANDROID:case vmModuleTypes.AppName.CORE_WEB:case vmModuleTypes.AppName.CORE_EXTENSION:case vmModuleTypes.AppName.EXPLORER:return {"x-application-name":t,"x-application-version":e};case vmModuleTypes.AppName.OTHER:return}};var Nt=process.env.GLACIER_API_KEY;var Ee=()=>Nt;var wn={rltoken:Ee()},ve=class extends glacierSdk.FetchHttpRequest{constructor(e){super(e);}request(e){let r={...wn,...e.query||{}},n={...e,query:Object.keys(r).length>0?r:void 0};return super.request(n)}};var w=async t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:o=2e3}=t,s=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:a},_n(n),new ethers.Network(r,e));return s.pollingInterval=o,s},Nn=["glacier-api.avax.network","proxy-api.avax.network"];function _n(t){let e=new URL(t),r=Ee();if(r&&Nn.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}var ut={LOW:1n,MEDIUM:4n,HIGH:6n},ft=500000000n,Dn=t=>t===coreChainsSdk.ChainId.AVALANCHE_TESTNET_ID||t===coreChainsSdk.ChainId.AVALANCHE_MAINNET_ID;async function Ut({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,caipId:a,proxyApiUrl:o}){let s=await w({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n});if(!o)throw rpcErrors.rpcErrors.internal("Proxy API URL is needed");if(Dn(t))try{let k=await Un(s);return {...k,baseFee:k.medium.maxFeePerGas,displayDecimals:9,isFixedFee:!1}}catch{console.error("eth_suggestPriceOptions call failed, falling back to legacy fee fetching");}let i=await s.getBlock("latest",!1);if(!i)throw rpcErrors.rpcErrors.internal("There is no block");let c=i.baseFeePerGas;if(!c)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let l=await Gn(o,a),p=new coreUtilsSdk.TokenUnit(l,0,""),d=new coreUtilsSdk.TokenUnit(c,0,""),m=BigInt("1000000000"),u=d.mul(p).add(m).toSubUnit(),y=ft*ut.LOW,g=ft*ut.MEDIUM,v=ft*ut.HIGH;return {baseFee:u,low:{maxFeePerGas:u+y,maxPriorityFeePerGas:y},medium:{maxFeePerGas:u+g,maxPriorityFeePerGas:g},high:{maxFeePerGas:u+v,maxPriorityFeePerGas:v},isFixedFee:!1,displayDecimals:9}}async function Un(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)}}}async function Gn(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}}function $(t,e,r="tx"){return `${t}/${r}/${e}`}var Ft=({tx:t,networkToken:e,chainId:r,explorerUrl:n,address:a})=>{let o=t.from.toLowerCase()===a.toLowerCase(),s=parseInt(t.timeStamp)*1e3,i=e.decimals,l=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol).toDisplay(),p=o?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,{from:d,to:m,gasPrice:u,gasUsed:y,hash:g}=t,v=$(n,g);return {isIncoming:!o,isOutgoing:o,isContractCall:Vn(t),timestamp:s,hash:g,isSender:o,from:d,to:m,tokens:[{decimal:i.toString(),name:e.name,symbol:e.symbol,amount:l,type:vmModuleTypes.TokenType.NATIVE}],gasUsed:y,gasPrice:u,chainId:r.toString(),txType:p,explorerLink:v}};function Vn(t){return t.input!=="0x"}function Vt({tx:t,address:e,explorerUrl:r,chainId:n}){let a=t.from.toLowerCase()===e.toLowerCase(),o=parseInt(t.timeStamp)*1e3,i=new coreUtilsSdk.TokenUnit(t.value,Number(t.tokenDecimal),t.tokenSymbol).toDisplay(),{from:c,to:l,gasPrice:p,gasUsed:d,hash:m,tokenDecimal:u,tokenName:y,tokenSymbol:g,contractAddress:v}=t,k=a?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,C=$(r,m);return {isIncoming:!a,isOutgoing:a,isContractCall:!1,timestamp:o,hash:m,isSender:a,from:c,to:l,tokens:[{decimal:u,name:y,symbol:g,type:vmModuleTypes.TokenType.ERC20,amount:i,address:v}],gasUsed:d,gasPrice:p,chainId:n.toString(),txType:k,explorerLink:C}}var Mt=async({isTestnet:t,networkToken:e,explorerUrl:r,chainId:n,address:a,nextPageToken:o,offset:s})=>{let i=o?JSON.parse(o):void 0,c=i?.page||1,l=i?.queries||["normal","erc20"],p=(l.includes("normal")?await coreEtherscanSdk.getNormalTxs(a,!t,{page:c,offset:s}):[]).map(g=>Ft({tx:g,chainId:n,networkToken:e,explorerUrl:r,address:a})),d=(l.includes("erc20")?await coreEtherscanSdk.getErc20Txs(a,!t,void 0,{page:c,offset:s}):[]).map(g=>Vt({tx:g,address:a,explorerUrl:r,chainId:n})),m=d.map(g=>g.hash),u=p.filter(g=>!m.includes(g.hash)),y={queries:[],page:c+1};return p.length&&y.queries.push("normal"),d.length&&y.queries.push("erc20"),{transactions:[...u,...d],nextPageToken:y.queries.length?JSON.stringify(y):""}};var Ot=t=>t===1||t===5||t===4||t===11155111;var Wt=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a,o)=>{let s=!e&&!r&&!n,i=qn(t.method?.methodName),c=a.toLowerCase(),l=i.toLowerCase().includes("swap"),p=s&&t.from.address.toLowerCase()===c,d=s&&t.to.address.toLowerCase()===c,m=i==="Market Buy Orders With Eth"||i==="Buy NFT",u=i==="Approve",y=i.toLowerCase().includes("transfer"),g=i.toLowerCase().includes("airdrop"),v=i.toLowerCase().includes("unwrap"),k=i==="Fill Order",C=!!o[0]&&$t(o[0].type)&&o[0].from?.address.toLowerCase()===c,h=!!o[0]&&$t(o[0].type)&&o[0].to?.address.toLowerCase()===c;return l?vmModuleTypes.TransactionType.SWAP:p?vmModuleTypes.TransactionType.SEND:d?vmModuleTypes.TransactionType.RECEIVE:m?vmModuleTypes.TransactionType.NFT_BUY:u?vmModuleTypes.TransactionType.APPROVE:C?vmModuleTypes.TransactionType.NFT_SEND:h?vmModuleTypes.TransactionType.NFT_RECEIVE:y?vmModuleTypes.TransactionType.TRANSFER:g?vmModuleTypes.TransactionType.AIRDROP:v?vmModuleTypes.TransactionType.UNWRAP:k?vmModuleTypes.TransactionType.FILL_ORDER:vmModuleTypes.TransactionType.UNKNOWN};function $t(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}var qn=(t="")=>t.includes("(")?Wn__default.default(t.split("(",1)[0]):t;var qt=(t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},a)=>{let o=t===vmModuleTypes.TransactionType.TRANSFER,s=t===vmModuleTypes.TransactionType.SEND,i=t===vmModuleTypes.TransactionType.RECEIVE,c=e?.from?.address,l=e?.to?.address;o&&r&&r[0]&&(c=r[0].from.address,l=r[0].to.address),o&&n&&n[0]&&(c=n[0].from.address,l=n[0].to.address);let p=s||o&&c.toLowerCase()===a.toLowerCase(),d=i||o&&l.toLowerCase()===a.toLowerCase();return {isOutgoing:p,isIncoming:d,isSender:c===a,from:c,to:l}};async function jt(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var zn="https://ipfs.io";function ae(t,e=zn){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}async function Jn(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}async function zt(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 Jn(ae(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}var Yn="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Jt(t,e="256"){let r=ae(t);return `${Yn}/width=${e},fit/${r}`}var Xt=async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a)=>{let o=[];if(t.value!=="0"){let s=a.decimals,c=new coreUtilsSdk.TokenUnit(t.value,a.decimals,a.symbol).toDisplay();o.push({decimal:s.toString(),name:a.name,symbol:a.symbol,amount:c,from:t.from,to:t.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(s=>{let i=s.erc20Token.decimals,l=new coreUtilsSdk.TokenUnit(s.value,i,s.erc20Token.symbol).toDisplay();o.push({decimal:i.toString(),address:s.erc20Token.address,name:s.erc20Token.name,symbol:s.erc20Token.symbol,amount:l,from:s.from,to:s.to,imageUri:s.erc20Token.logoUri,type:vmModuleTypes.TokenType.ERC20});}),r&&await Promise.allSettled(r.map(async s=>{let i=s.erc721Token,c=await Kt(i.tokenUri,i.metadata.imageUri);o.push({name:s.erc721Token.name,symbol:s.erc721Token.symbol,address:s.erc721Token.address,amount:"1",imageUri:c,from:s.from,to:s.to,collectableTokenId:s.erc721Token.tokenId,type:vmModuleTypes.TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async s=>{let i=s.erc1155Token,c=await Kt(i.tokenUri,i.metadata.imageUri);o.push({name:s.erc1155Token.metadata.name??"",symbol:s.erc1155Token.metadata.symbol??"",address:s.erc1155Token.address,amount:s.value,imageUri:c,from:s.from,to:s.to,collectableTokenId:s.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),o},Kt=async(t,e)=>{if(e)return e.startsWith("ipfs://")?ae(e):e;{let[r,n]=await jt(zt(t));return n?"":r.image?Jt(r.image):""}};var Zt=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER],K=(s=>(s.TOTAL_SUPPLY="totalSupply",s.BALANCE_OF="balanceOf",s.TRANSFER="transfer",s.TRANSFER_FROM="transferFrom",s.APPROVE="approve",s.ALLOWANCE="allowance",s))(K||{});var Qt=async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:a})=>{let o=await Xt(t,r),s=Wt(t,a,o),{isOutgoing:i,isIncoming:c,isSender:l,from:p,to:d}=qt(s,t,a),{blockTimestamp:m,txHash:u,gasPrice:y,gasUsed:g}=t.nativeTransaction,v=$(e,u);return {isContractCall:!Zt.includes(s),isIncoming:c,isOutgoing:i,isSender:l,timestamp:m*1e3,hash:u,from:p,to:d,tokens:o,gasPrice:y,gasUsed:g,chainId:n.toString(),txType:s,explorerLink:v}};var er=async({chainId:t,explorerUrl:e,networkToken:r,address:n,nextPageToken:a,offset:o,glacierService:s})=>{try{let i=await s.listTransactions({chainId:t.toString(),address:n,pageToken:a,pageSize:o});return {transactions:(await Promise.all(i.transactions.filter(p=>p.nativeTransaction.txStatus==="1").map(p=>Qt({transactions:p,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(d=>d)))).filter(p=>p.tokens.find(d=>Number(d.amount)!==0)),nextPageToken:i.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var tr=async({chainId:t,isTestnet:e,networkToken:r,explorerUrl:n,address:a,nextPageToken:o,offset:s,glacierService:i})=>Ot(t)?Mt({isTestnet:e,networkToken:r,explorerUrl:n,chainId:t,address:a,nextPageToken:o,offset:s}):i.isHealthy()?er({networkToken:r,explorerUrl:n,chainId:t,address:a,nextPageToken:o,offset:s,glacierService:i}):{transactions:[],nextPageToken:""};var rr={name:"EVM",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/index.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider/index.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:[],namespaces:["eip155"]},cointype:"60",permissions:{rpc:{dapps:!0,methods:["personal_sign","eth_sendTransaction","eth_sendTransactionBatch","eth_*","web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"],nonRestrictedMethods:["eth_requestAccounts","eth_decrypt","eth_getEncryptionPublicKey","eth_subscribe","eth_unsubscribe","eth_blockNumber","eth_call","eth_chainId","eth_coinbase","eth_estimateGas","eth_feeHistory","eth_gasPrice","eth_getBalance","eth_getBlockByHash","eth_getBlockByNumber","eth_getBlockTransactionCountByHash","eth_getBlockTransactionCountByNumber","eth_getCode","eth_getFilterChanges","eth_getFilterLogs","eth_getLogs","eth_getProof","eth_getStorageAt","eth_getTransactionByBlockHashAndIndex","eth_getTransactionByBlockNumberAndIndex","eth_getTransactionByHash","eth_getTransactionCount","eth_getTransactionReceipt","eth_getUncleCountByBlockHash","eth_getUncleCountByBlockNumber","eth_newBlockFilter","eth_newFilter","eth_newPendingTransactionFilter","eth_syncing","eth_uninstallFilter","net_version","net_peerCount","net_listening","web3_sha3","web3_clientVersion"]}},manifestVersion:"0.1"};var Ve=async({from:t,provider:e})=>e.getTransactionCount(t);var Me=t=>{if(t.data)try{let r=new ethers.Interface(mr__default.default.abi).parseTransaction({data:t.data,value:t.value}),n=r?.name??r?.fragment?.name;return n&&Qn(n)?n:void 0}catch{return}};function Qn(t){return Object.values(K).includes(t)}function nr(t,e,r){return new ethers.ethers.Contract(t,mr__default.default.abi).interface.encodeFunctionData("approve",[e,r])}var Oe=new Map,ar=(t,e,r)=>(Oe.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a,approvalLimit:o,gasLimit:s})=>{let i=Oe.get(t);if(!i)throw rpcErrors.rpcErrors.resourceNotFound();let{signingData:c,displayData:l}=i,p={...c,data:{...c.data,gasLimit:s??c.data.gasLimit,maxFeePerGas:n??c.data.maxFeePerGas,maxPriorityFeePerGas:a??c.data.maxPriorityFeePerGas}},d={...l};if(typeof o=="string"){if(!o.startsWith("0x"))throw rpcErrors.rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let u=l.tokenApprovals;ra(u),na(c.data.data);let y=u.approvals[0];p.data.data=nr(y.token.address,y.spenderAddress,o),d.tokenApprovals={approvals:[{...y,value:o}],isEditable:!0};}let m={signingData:p,displayData:d};return Oe.set(t,m),m},cleanup:()=>Oe.delete(t)});function ra(t){if(!t||!t.isEditable||t.approvals.length!==1)throw rpcErrors.rpcErrors.invalidInput("Cannot edit the token approval for this request. Please start a new request instead.")}function na(t){if((!t||t==="0x"?null:Me({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}var or=async({transactionParams:{from:t,to:e,data:r,value:n,accessList:a},provider:o})=>{let s=await o.getTransactionCount(t);return Number(await o.estimateGas({from:t,to:e,nonce:s,data:r,value:n,accessList:a}))};var $e=(t,e,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:o,alert:s})=>{let{dappInfo:i}=t,c=Me(r),l="Do you approve this transaction?";c==="approve"&&(l="Do you approve this spend limit?");let p=[re("Account",r.from),Fe("Network",{name:e.chainName,logoUri:e.logoUri}),Ge("Website",i)];r.to&&p.push(re("Contract",r.to));let d={title:l,details:[{title:"Transaction Details",items:p}],networkFeeSelector:!0,alert:s,balanceChange:a,tokenApprovals:o,isSimulationSuccessful:n},m={type:vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,account:r.from,data:{type:2,nonce:Number(r.nonce),gasLimit:Number(r.gas),maxFeePerGas:r.maxFeePerGas,maxPriorityFeePerGas:r.maxPriorityFeePerGas,to:r.to,from:r.from,data:r.data,value:r.value,chainId:r.chainId??e.chainId,accessList:r.accessList}};return {displayData:d,signingData:m}};var sr=async({chainId:t,params:e,domain:r,withGasEstimation:n,blockaid:a})=>{let o=["validation","simulation"];return n&&o.push("gas_estimation"),a.evm.transactionBulk.scan({chain:t.toString(),options:o,data:e,metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}})},ir=async({chainId:t,params:e,domain:r,blockaid:n})=>n.evm.transaction.scan({account_address:e.from,chain:t.toString(),options:["validation","simulation"],data:{from:e.from,to:e.to,data:e.data,value:e.value,gas:e.gas,gas_price:e.gasPrice},metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}}),cr=async({chainId:t,accountAddress:e,data:r,domain:n,blockaid:a})=>a.evm.jsonRpc.scan({chain:t.toString(),options:["validation","simulation"],account_address:e,data:r,metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}});var dr=async(t,e,r)=>{if(!t.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.ethers.Contract(t.to,mr__default.default.abi,r),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),o=lr__default.default(a[0]),s=lr__default.default(a[1]),i=parseInt(a[2]),c={type:vmModuleTypes.TokenType.ERC20,name:o,chainId:e,symbol:s,decimals:i,address:t.to,contractType:"ERC-20"},l=new ethers.ethers.Interface(mr__default.default.abi),p=l.getFunction(t.data.slice(0,10)),d=l.decodeFunctionData(t.data.slice(0,10),t.data);if(p?.name==="transfer")return {balanceChange:{outs:[{items:[{displayValue:new coreUtilsSdk.TokenUnit(d.amount,c.decimals,c.symbol).toDisplay(),usdPrice:void 0}],token:c}],ins:[]}};if(p?.name==="approve")return {tokenApprovals:{isEditable:!0,approvals:[{token:c,spenderAddress:d.spender,value:d.amount}]}}}catch(n){console.error("parseErc20Tx error",n);}return {tokenApprovals:void 0,balanceChange:void 0}};function X(t){return !("type"in t)}function We(t){return t.type===vmModuleTypes.TokenType.ERC20}function ur(t){return typeof t.to=="string"}function fr(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}function ca(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}function la(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}function gt(t){return ca(t)?t.ins.length===0&&t.outs.length===0:la(t)?t.approvals.length===0:!1}var W={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious Transaction",description:"Use caution, this transaction may be malicious."}},[vmModuleTypes.AlertType.DANGER]:{type:vmModuleTypes.AlertType.DANGER,details:{title:"Scam Transaction",description:"This transaction has been flagged as malicious, I understand the risk.",actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};var hr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,blockaid:o})=>{let s;try{s=await ir({chainId:n,params:r,domain:e,blockaid:o});}catch(i){console.error("simulateTransaction error",i);}return Tt({rpcMethod:t,params:r,chainId:n,provider:a,simulationResult:s})},Tt=async({rpcMethod:t,params:e,chainId:r,provider:n,simulationResult:a})=>{let o,s,i,c=!1,l;if(a){let{validation:p,simulation:d,gas_estimation:m}=a;!p||p.result_type==="Error"||p.result_type==="Warning"?o=W[vmModuleTypes.AlertType.WARNING]:p.result_type==="Malicious"&&(o=W[vmModuleTypes.AlertType.DANGER]),d?.status==="Success"&&(c=!0,i=gr(t,d.account_summary),s=Tr(d.account_summary.assets_diffs)),m?.status==="Success"&&(l=Number(m.estimate));}if(!c&&ur(e)){let p=await dr(e,r,n);s=p.balanceChange,i=p.tokenApprovals;}return {alert:o,balanceChange:s,tokenApprovals:i,isSimulationSuccessful:c,estimatedGasLimit:l}},ya=t=>t.trace_type==="ExposureTrace",ha=(t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,ga=t=>t===void 0||t.length===0?{}:t.reduce((e,r)=>ya(r)?{[ha(r.spender,r.asset.address)]:r}:e,{}),gr=(t,e)=>{let{traces:r}=e,n=ga(r),a=Object.entries(n).map(([s,i])=>{let c=kr(i.asset);if(!c)return;let l={token:c,spenderAddress:i.spender,logoUri:c.logoUri};if(i.type==="ERC20ExposureTrace"){let{exposed:{raw_value:p,usd_price:d}}=i;l.value=p,l.usdPrice=`${d}`;}if(i.type==="ERC721ExposureTrace")if(!i.exposed)l.value=`0x${ethers.MaxUint256.toString(16)}`;else {let{usd_price:p,amount:d}=i.exposed;l.value=`${d}`,l.usdPrice=`${p}`;}return l}).filter(Boolean);return a.length===0?void 0:{isEditable:a.length===1&&a[0]?.token.type===vmModuleTypes.TokenType.ERC20&&t===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:a}},Tr=t=>{let e=yr(t,"in"),r=yr(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},yr=(t,e)=>t.filter(r=>r[e].length>0).sort((r,n)=>r[e].length-n[e].length).map(r=>{let n=r.asset,a="address"in n?kr(n):Ta(n);if(!a)return;let o=r[e].map(s=>{let i;if("value"in s&&s.value)if("decimals"in a){let c=coreUtilsSdk.numberToBN(s.value,a.decimals);i=coreUtilsSdk.balanceToDisplayValue(c,a.decimals);}else ethers.isHexString(s.value)&&(i=parseInt(s.value,16).toString());else "type"in a&&a.type===vmModuleTypes.TokenType.ERC721&&(i="1");return i?{displayValue:i,usdPrice:s.usd_price}:void 0}).filter(s=>s!==void 0);return {token:a,items:o}}).filter(r=>r!==void 0),kr=t=>{let e;return t.type==="ERC20"?e={type:vmModuleTypes.TokenType.ERC20,address:t.address,decimals:t.decimals,name:t.name??t.symbol??"",symbol:t.symbol??"",logoUri:t.logo_url}:t.type==="ERC1155"?e={type:vmModuleTypes.TokenType.ERC1155,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="ERC721"?e={type:vmModuleTypes.TokenType.ERC721,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="NONERC"&&(e={type:vmModuleTypes.TokenType.NONERC,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}),e},Ta=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),Er=async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:a,blockaid:o})=>{let s,i,c;try{let{validation:l,simulation:p}=await cr({chainId:n,accountAddress:r,data:a,domain:e,blockaid:o});!l||l.result_type==="Error"||l.result_type==="Warning"?s=W[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"&&(s=W[vmModuleTypes.AlertType.DANGER]),p?.status==="Success"&&(c=gr(t.method,p.account_summary),i=Tr(p.account_summary.assets_diffs));}catch(l){console.error("processJsonRpcSimulation error",l),s=W[vmModuleTypes.AlertType.WARNING];}return {alert:s,balanceChange:i,tokenApprovals:c}};var se=zod.z.object({from:zod.z.string().length(42),to:zod.z.string().length(42).optional(),data:zod.z.string().optional(),value:zod.z.string().startsWith("0x").optional(),gas:zod.z.string().startsWith("0x").optional(),gasPrice:zod.z.string().startsWith("0x").optional(),maxFeePerGas:zod.z.string().startsWith("0x").optional(),maxPriorityFeePerGas:zod.z.string().startsWith("0x").optional(),nonce:zod.z.string().optional(),chainId:zod.z.string().optional().or(zod.z.number().optional()),accessList:zod.z.array(zod.z.object({address:zod.z.string().startsWith("0x"),storageKeys:zod.z.array(zod.z.string())})).optional()});var Ea=zod.z.tuple([se]),vr=t=>Ea.safeParse(t);var je=async({explorerUrl:t,provider:e,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:o,request:s})=>{try{n({txHash:r,request:s});let c=(await Te({operation:async()=>e.getTransactionReceipt(r),isSuccess:p=>!!p,backoffPolicy:M.linearThenExponential(4,1e3),maxRetries:20}))?.status===1,l=$(t,r);if(c)return a({txHash:r,explorerLink:l,request:s}),!0}catch(i){console.error(i);}return o({txHash:r,request:s}),!1};var ze=async(t,e)=>"txHash"in e?e.txHash:await t.send("eth_sendRawTransaction",[e.signedData]);var br=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:o,error:s,success:i}=vr(a);if(!i)return console.error("invalid params",s),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:s}})};let[c]=o,l=await w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});if(!c.gas||Number(c.gas)<0)try{let k=await or({transactionParams:{from:c.from,to:c.to,data:c.data,value:c.value,accessList:c.accessList},provider:l});c.gas="0x"+k.toString(16);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate gas limit")}}if(!c.nonce)try{let k=await Ve({from:c.from,provider:l});c.nonce=String(k);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate nonce")}}let p=await hr({rpcMethod:t.method,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:l,blockaid:n}),{displayData:d,signingData:m}=$e(t,e,c,p),{updateTx:u,cleanup:y}=ar(t.requestId,m,d),g=await r.requestApproval({request:t,displayData:d,signingData:m,updateTx:u});if(y(),"error"in g)return {error:g.error};let v;try{v=await ze(l,g);}catch(k){return {error:rpcErrors.rpcErrors.internal({message:"Unable to get transaction hash",data:{cause:k}})}}return je({explorerUrl:e.explorerUrl??"",provider:l,txHash:v,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),{result:v}};async function Pr(t,e){let r=t.map(async(o,s)=>({index:s,result:await e(o)})),a=(await Promise.allSettled(r)).filter(o=>o.status==="fulfilled").map(o=>o).find(o=>o.value.result);return a?t[a.value.index]:void 0}function ie(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}async function ce(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},{}))}var A,le,Z,Pe,Ye=class{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:a}){chunkTKL4UUHE_cjs.c(this,A,void 0);chunkTKL4UUHE_cjs.c(this,le,void 0);chunkTKL4UUHE_cjs.c(this,Z,void 0);chunkTKL4UUHE_cjs.c(this,Pe,void 0);chunkTKL4UUHE_cjs.d(this,A,e),chunkTKL4UUHE_cjs.d(this,le,r),chunkTKL4UUHE_cjs.d(this,Z,n),chunkTKL4UUHE_cjs.d(this,Pe,a);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let a=await w({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,A).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,A).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,A).utilityAddresses?.multicall}),o=chunkTKL4UUHE_cjs.b(this,A).pricingProviders?.coingecko.nativeTokenId,s=chunkTKL4UUHE_cjs.b(this,A).networkToken,i=new H({storage:chunkTKL4UUHE_cjs.b(this,le),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,Z)}),c=o?await i.getSimplePrice({coinIds:[o],currencies:[n]}):{},l=c?.[o??""]?.[n]?.price??void 0,p=c?.[o??""]?.[n]?.marketCap??void 0,d=c?.[o??""]?.[n]?.vol24??void 0,m=c?.[o??""]?.[n]?.change24??void 0,u=await a.getBalance(r),y=new coreUtilsSdk.TokenUnit(u,s.decimals,s.symbol),g=l!==void 0?y.mul(l):void 0;return {...s,coingeckoId:o??"",type:vmModuleTypes.TokenType.NATIVE,balance:u,balanceDisplayValue:y.toDisplay(),balanceInCurrency:g?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:g?.toDisplay({fixedDp:2}),priceInCurrency:l,marketCap:p,vol24:d,change24:m}}async listErc20Balances({chainId:e,address:r,currency:n}){let a=await w({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,A).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,A).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,A).utilityAddresses?.multicall}),o=chunkTKL4UUHE_cjs.b(this,A).pricingProviders?.coingecko.assetPlatformId,s=chunkTKL4UUHE_cjs.b(this,A).pricingProviders?.coingecko.nativeTokenId,i=await Ne({chainId:Number(e),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,Z)}),c=i.map(k=>k.address),l=[...i,...chunkTKL4UUHE_cjs.b(this,Pe)].filter(We),p=async k=>{let E=await new ethers.ethers.Contract(k.address,mr__default.default.abi,a).balanceOf?.(r)||0n;return {...k,balance:E}},d=l.map(k=>ie(p(k),k.address)),m=await ce(d),u=new H({storage:chunkTKL4UUHE_cjs.b(this,le),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,Z)}),y=o&&await u.getPricesByAddresses(c,o,n)||{},g=Object.keys(m),v={};for(let k=0;k<g.length;k++){let C=g[k];if(C===void 0)continue;let h=m[C];if(h===void 0||"error"in h){v[C]={error:`rpcService:getTokenWithBalance failed: ${h?.error??"unknown error"}`};continue}let E=y?.[s??""]?.[n]?.price??void 0,_=y?.[s??""]?.[n]?.marketCap??void 0,it=y?.[s??""]?.[n]?.vol24??void 0,L=y?.[s??""]?.[n]?.change24??void 0,he=new coreUtilsSdk.TokenUnit(h.balance,h.decimals,h.symbol),x=E!==void 0?he.mul(E):void 0;v[h.address.toLowerCase()]={...h,type:vmModuleTypes.TokenType.ERC20,balance:h.balance,balanceDisplayValue:he.toDisplay(),balanceInCurrency:x?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:x?.toDisplay({fixedDp:2}),priceInCurrency:E,marketCap:_,change24:L,vol24:it,reputation:null};}return v}async listNftBalances(){return {}}};A=new WeakMap,le=new WeakMap,Z=new WeakMap,Pe=new WeakMap;var xr=async({addresses:t,currency:e,network:r,proxyApiUrl:n,tokenTypes:a=[vmModuleTypes.TokenType.NATIVE,vmModuleTypes.TokenType.ERC20,vmModuleTypes.TokenType.ERC721,vmModuleTypes.TokenType.ERC1155],customTokens:o=[],storage:s,balanceServices:i=[],tokenService:c})=>{let l=r.chainId,p=[...i,new Ye({network:r,storage:s,proxyApiUrl:n,customTokens:o})],d=await Pr(p,u=>u.isNetworkSupported(r.chainId)),m={};if(d){let u=[],y=[],g=[];t.forEach(h=>{a.includes(vmModuleTypes.TokenType.NATIVE)&&u.push(ie(d.getNativeBalance({address:h,currency:e.toUpperCase(),chainId:l}).then(async E=>{if(E.symbol==="AVAX"){let _=await c.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:e.toUpperCase()});return {...E,priceInCurrency:_.priceInCurrency,marketCap:_.marketCap,vol24:_.vol24,change24:_.change24}}return E}),h)),a.includes(vmModuleTypes.TokenType.ERC20)&&y.push(ie(d.listErc20Balances({customTokens:o.filter(We),currency:e.toUpperCase(),chainId:l,address:h,pageSize:100}),h)),(a.includes(vmModuleTypes.TokenType.ERC721)||a.includes(vmModuleTypes.TokenType.ERC1155))&&g.push(ie(d.listNftBalances({chainId:l,address:h}),h));});let v=await ce(u),k=await ce(y),C=await ce(g);Object.keys(v).forEach(h=>{let E=v[h];if(!E||"error"in E){m[h]={error:`getNativeBalance failed: ${E?.error??"unknown error"}`};return}let _=E.symbol;m[h]={[_]:E};}),Object.keys(k).forEach(h=>{let E=k[h];!E||"error"in E&&typeof E.error!="string"?m[h]={...m[h],error:"listErc20Balances failed: unknown error"}:"error"in E&&typeof E.error=="string"?m[h]={...m[h],error:`listErc20Balances failed: ${E.error}`}:m[h]={...m[h],...E};}),Object.keys(C).forEach(h=>{let E=C[h];!E||"error"in E&&typeof E.error!="string"?m[h]={...m[h],error:"listNftBalances failed: unknown error"}:"error"in E&&typeof E.error=="string"?m[h]={...m[h],error:`listNftBalances failed: ${E.error}`}:m[h]={...m[h],...E};});}else t.forEach(u=>{m[u]={error:"unsupported network"};});return m};var Pa={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Ra={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Ar=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return Pa;case vmModuleTypes.Environment.DEV:return Ra}};var wr="DUMMY_API_KEY";var xa="https://ipfs.io";function Cr(t,e=xa){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}var Ia="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Ke(t,e="256"){let r=Cr(t);return `${Ia}/width=${e},fit/${r}`}var G=class extends Error{constructor(){super(...arguments);chunkTKL4UUHE_cjs.a(this,"message","Glacier is unhealthy. Try again later.");}},Ba=[coreChainsSdk.ChainId.ETHEREUM_HOMESTEAD],Xe=class{constructor({glacierApiUrl:e,headers:r}){chunkTKL4UUHE_cjs.a(this,"glacierSdk");chunkTKL4UUHE_cjs.a(this,"isGlacierHealthy",!0);chunkTKL4UUHE_cjs.a(this,"supportedChainIds",[]);chunkTKL4UUHE_cjs.a(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:e,HEADERS:r},ve),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=>!Ba.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 G&&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 G&&this.setGlacierToUnhealthy(),a}}async getNativeBalance({chainId:e,address:r,currency:n,coingeckoId:a}){try{let s=(await this.glacierSdk.evmBalances.getNativeBalance({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase()})).nativeTokenBalance,i=new coreUtilsSdk.TokenUnit(s.balance,s.decimals,s.symbol),c=s.price?.value,l=c!==void 0?i.mul(c):void 0;return {name:s.name,symbol:s.symbol,decimals:s.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:s.logoUri,balance:i.toSubUnit(),balanceDisplayValue:i.toDisplay(),balanceInCurrency:l?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:l?.toDisplay({fixedDp:2}),priceInCurrency:c,coingeckoId:a??""}}catch(o){throw o instanceof G&&this.setGlacierToUnhealthy(),o}}async listErc721Balances({chainId:e,address:r}){let n,a=[];do try{let o=await this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...o.erc721TokenBalances),n=o.nextPageToken;}catch(o){throw o instanceof G&&this.setGlacierToUnhealthy(),o}while(n);return a}async listErc1155Balances({chainId:e,address:r}){let n,a=[];do try{let o=await this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...o.erc1155TokenBalances),n=o.nextPageToken;}catch(o){throw o instanceof G&&this.setGlacierToUnhealthy(),o}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(o=>o.status==="fulfilled").flatMap(o=>o.value.filter(s=>s.ercType===glacierSdk.Erc721Token.ercType.ERC_721||BigInt(s.balance)>0n).map(s=>[`${s.address}-${s.tokenId}`,{address:s.address,description:s.metadata.description??"",logoUri:s.metadata.imageUri??"",logoSmall:Ke(s.metadata.imageUri??""),name:s.metadata.name??"",symbol:s.metadata.symbol??"",tokenId:s.tokenId,tokenUri:s.tokenUri,chainId:e,collectionName:"Unknown",balance:s.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?BigInt(s.balance):1,balanceDisplayValue:s.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?s.balance:"1",type:s.ercType===glacierSdk.Erc721Token.ercType.ERC_721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{indexStatus:s.metadata.indexStatus,description:s.metadata.description,lastUpdatedTimestamp:s.metadata.metadataLastUpdatedTimestamp,properties:s.ercType===glacierSdk.Erc721Token.ercType.ERC_721?s.metadata.attributes:s.metadata.properties}}]));return Object.fromEntries(a)}async listErc20Balances({chainId:e,address:r,currency:n,customTokens:a}){try{let o=[],s;do{let i=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:s});o.push(..._a(i.erc20TokenBalances,Number(e))),s=i.nextPageToken;}while(s);return [...Na(a),...o].reduce((i,c)=>({...i,[c.address.toLowerCase()]:c}),{})}catch(o){throw o instanceof G&&this.setGlacierToUnhealthy(),o}}async listTransactions({chainId:e,address:r,pageToken:n,pageSize:a}){try{return this.glacierSdk.evmTransactions.listTransactions({chainId:e,address:r,pageToken:n,pageSize:a})}catch(o){throw o instanceof G&&this.setGlacierToUnhealthy(),o}}},Na=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})),_a=(t,e)=>t.map(r=>{let n=new coreUtilsSdk.TokenUnit(r.balance,r.decimals,r.symbol),a=n.toDisplay(),o=r.balanceValue?.value.toString(),s=r.price?.value,i=s!==void 0?n.mul(s).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:o,balanceDisplayValue:a,balanceInCurrency:i,priceInCurrency:s,reputation:r.tokenReputation,type:vmModuleTypes.TokenType.ERC20}});var Et=t=>{let e="";e+=`Domain
26
+ async function Ne({chainId:t,proxyApiUrl:e}){let r=await fetch(`${e}/tokens?evmChainId=${t}`);if(!r.ok)throw rpcErrors.rpcErrors.internal(`Failed to fetch tokens for chainId ${t}`);return r.json()}var Te=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=M.exponential()})=>{let a=0,o=0,s;for(;o<r;){o>0&&await gn(a);try{let c=await t(o);if(e(c))return c}catch(c){s=c;}a=n(o),o++;}let i=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(i)},M=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return r=>e*1e3}static constantMs(e){return r=>e}static linearThenExponential(e,r){return n=>{if(n<e)return (n+1)*r;let a=n-e+1,o=e*r,s=2*r*(Math.pow(2,a)-1);return o+s}}};function gn(t){return new Promise(e=>setTimeout(e,t))}var ct=t=>Te({operation:e=>t(e>0),maxRetries:2,backoffPolicy:M.constant(1),isSuccess:e=>e?.status?.error_code!==429});function At(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function lt(t){let e,r=0;for(e=0;e<t.length;e++){let n=At(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}async function N(t,e){let r=await fetch(...t);if(!r.ok)throw new Error(`Request failed with status ${r.status}`);let n=await r.json();return e.parse(n)}var ke=class{constructor(e){this.proxyApiUrl=e;}simplePrice(e){let r=new URLSearchParams(e);return N([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(e){let{id:r,...n}=e,a=new URLSearchParams(n);return N([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}};var Tn=zod.z.array(zod.z.object({internalId:zod.z.string(),id:zod.z.string(),symbol:zod.z.string(),name:zod.z.string(),image:zod.z.string().optional().nullable(),current_price:zod.z.number().optional().nullable(),price_change_percentage_24h:zod.z.number().optional().nullable(),market_cap:zod.z.number().optional().nullable(),total_volume:zod.z.number().optional().nullable(),platforms:zod.z.record(zod.z.string(),zod.z.string())})),_e=class{constructor(e){this.proxyApiUrl=e;}watchlistToken(e){let r=new URLSearchParams(e);return N([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],Tn)}};var Ct=coreCoingeckoSdk.getBasicCoingeckoHttp(),O,Y,H=class{constructor({storage:e,proxyApiUrl:r}){chunkTKL4UUHE_cjs.c(this,O,void 0);chunkTKL4UUHE_cjs.c(this,Y,void 0);chunkTKL4UUHE_cjs.a(this,"transformSimplePriceResponse",(e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(a=>{let o=e[a];n[a]={},r.forEach(s=>{n[a]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),n});chunkTKL4UUHE_cjs.d(this,O,e),chunkTKL4UUHE_cjs.d(this,Y,r);}async getWatchlistDataForToken({tokenDetails:e,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let a=(await new _e(chunkTKL4UUHE_cjs.b(this,Y)).watchlistToken({tokens:e.symbol,currency:r})).filter(o=>e.isNative?o.internalId===`NATIVE-${e.symbol.toLowerCase()}`:o.platforms[e.caip2Id]===e.address)[0];return a?{priceInCurrency:a.current_price??0,change24:a.price_change_percentage_24h??0,marketCap:a.market_cap??0,vol24:a.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${e?`${lt(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkTKL4UUHE_cjs.b(this,O)?.get?.(o),n)return n;try{n=await ct(s=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{n=void 0;}return chunkTKL4UUHE_cjs.b(this,O)?.set?.(o,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,s=`getPricesWithMarketDataByAddresses-${`${lt(e)}-${r}-${n}`}`;if(a=chunkTKL4UUHE_cjs.b(this,O)?.get?.(s),a)return a;try{a=await ct(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:i}));}catch(i){console.error(i),a=void 0;}return chunkTKL4UUHE_cjs.b(this,O)?.set?.(s,a),a}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let o=await new ke(chunkTKL4UUHE_cjs.b(this,Y)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(o,[n])}return coreCoingeckoSdk.simpleTokenPrice(Ct,{assetPlatformId:e,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:a=!1,change24:o=!1,lastUpdated:s=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await new ke(chunkTKL4UUHE_cjs.b(this,Y)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:o,include_last_updated_at:s});return this.transformSimplePriceResponse(l,r)}return coreCoingeckoSdk.simplePrice(Ct,{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:o,lastUpdated:s,shouldThrow:c})}};O=new WeakMap,Y=new WeakMap;var xn="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",In="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",Bt=zod.object({date:zod.string(),usd:zod.record(zod.number())}),De=async()=>{try{return await N([xn],Bt)}catch{return await N([In],Bt)}};var pt=(t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),Ge=(t,e)=>({label:t,value:e,type:vmModuleTypes.DetailItemType.LINK}),re=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e});var Fe=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.NETWORK,value:e});var mt=({name:t,version:e})=>{switch(t){case vmModuleTypes.AppName.CORE_MOBILE_IOS:case vmModuleTypes.AppName.CORE_MOBILE_ANDROID:case vmModuleTypes.AppName.CORE_WEB:case vmModuleTypes.AppName.CORE_EXTENSION:case vmModuleTypes.AppName.EXPLORER:return {"x-application-name":t,"x-application-version":e};case vmModuleTypes.AppName.OTHER:return}};var Nt=process.env.GLACIER_API_KEY;var Ee=()=>Nt;var wn={rltoken:Ee()},ve=class extends glacierSdk.FetchHttpRequest{constructor(e){super(e);}request(e){let r={...wn,...e.query||{}},n={...e,query:Object.keys(r).length>0?r:void 0};return super.request(n)}};var w=async t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:o=2e3}=t,s=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:a},_n(n),new ethers.Network(r,e));return s.pollingInterval=o,s},Nn=["glacier-api.avax.network","proxy-api.avax.network"];function _n(t){let e=new URL(t),r=Ee();if(r&&Nn.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}var ut={LOW:1n,MEDIUM:4n,HIGH:6n},ft=500000000n,Dn=t=>t===coreChainsSdk.ChainId.AVALANCHE_TESTNET_ID||t===coreChainsSdk.ChainId.AVALANCHE_MAINNET_ID;async function Ut({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,caipId:a,proxyApiUrl:o}){let s=await w({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n});if(!o)throw rpcErrors.rpcErrors.internal("Proxy API URL is needed");if(Dn(t))try{let k=await Un(s);return {...k,baseFee:k.medium.maxFeePerGas,displayDecimals:9,isFixedFee:!1}}catch{console.error("eth_suggestPriceOptions call failed, falling back to legacy fee fetching");}let i=await s.getBlock("latest",!1);if(!i)throw rpcErrors.rpcErrors.internal("There is no block");let c=i.baseFeePerGas;if(!c)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let l=await Gn(o,a),p=new coreUtilsSdk.TokenUnit(l,0,""),d=new coreUtilsSdk.TokenUnit(c,0,""),m=BigInt("1000000000"),u=d.mul(p).add(m).toSubUnit(),y=ft*ut.LOW,g=ft*ut.MEDIUM,v=ft*ut.HIGH;return {baseFee:u,low:{maxFeePerGas:u+y,maxPriorityFeePerGas:y},medium:{maxFeePerGas:u+g,maxPriorityFeePerGas:g},high:{maxFeePerGas:u+v,maxPriorityFeePerGas:v},isFixedFee:!1,displayDecimals:9}}async function Un(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)}}}async function Gn(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}}function $(t,e,r="tx"){return `${t}/${r}/${e}`}var Ft=({tx:t,networkToken:e,chainId:r,explorerUrl:n,address:a})=>{let o=t.from.toLowerCase()===a.toLowerCase(),s=parseInt(t.timeStamp)*1e3,i=e.decimals,l=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol).toDisplay(),p=o?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,{from:d,to:m,gasPrice:u,gasUsed:y,hash:g}=t,v=$(n,g);return {isIncoming:!o,isOutgoing:o,isContractCall:Vn(t),timestamp:s,hash:g,isSender:o,from:d,to:m,tokens:[{decimal:i.toString(),name:e.name,symbol:e.symbol,amount:l,type:vmModuleTypes.TokenType.NATIVE}],gasUsed:y,gasPrice:u,chainId:r.toString(),txType:p,explorerLink:v}};function Vn(t){return t.input!=="0x"}function Vt({tx:t,address:e,explorerUrl:r,chainId:n}){let a=t.from.toLowerCase()===e.toLowerCase(),o=parseInt(t.timeStamp)*1e3,i=new coreUtilsSdk.TokenUnit(t.value,Number(t.tokenDecimal),t.tokenSymbol).toDisplay(),{from:c,to:l,gasPrice:p,gasUsed:d,hash:m,tokenDecimal:u,tokenName:y,tokenSymbol:g,contractAddress:v}=t,k=a?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,C=$(r,m);return {isIncoming:!a,isOutgoing:a,isContractCall:!1,timestamp:o,hash:m,isSender:a,from:c,to:l,tokens:[{decimal:u,name:y,symbol:g,type:vmModuleTypes.TokenType.ERC20,amount:i,address:v}],gasUsed:d,gasPrice:p,chainId:n.toString(),txType:k,explorerLink:C}}var Mt=async({isTestnet:t,networkToken:e,explorerUrl:r,chainId:n,address:a,nextPageToken:o,offset:s})=>{let i=o?JSON.parse(o):void 0,c=i?.page||1,l=i?.queries||["normal","erc20"],p=(l.includes("normal")?await coreEtherscanSdk.getNormalTxs(a,!t,{page:c,offset:s}):[]).map(g=>Ft({tx:g,chainId:n,networkToken:e,explorerUrl:r,address:a})),d=(l.includes("erc20")?await coreEtherscanSdk.getErc20Txs(a,!t,void 0,{page:c,offset:s}):[]).map(g=>Vt({tx:g,address:a,explorerUrl:r,chainId:n})),m=d.map(g=>g.hash),u=p.filter(g=>!m.includes(g.hash)),y={queries:[],page:c+1};return p.length&&y.queries.push("normal"),d.length&&y.queries.push("erc20"),{transactions:[...u,...d],nextPageToken:y.queries.length?JSON.stringify(y):""}};var Ot=t=>t===1||t===5||t===4||t===11155111;var Wt=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a,o)=>{let s=!e&&!r&&!n,i=qn(t.method?.methodName),c=a.toLowerCase(),l=i.toLowerCase().includes("swap"),p=s&&t.from.address.toLowerCase()===c,d=s&&t.to.address.toLowerCase()===c,m=i==="Market Buy Orders With Eth"||i==="Buy NFT",u=i==="Approve",y=i.toLowerCase().includes("transfer"),g=i.toLowerCase().includes("airdrop"),v=i.toLowerCase().includes("unwrap"),k=i==="Fill Order",C=!!o[0]&&$t(o[0].type)&&o[0].from?.address.toLowerCase()===c,h=!!o[0]&&$t(o[0].type)&&o[0].to?.address.toLowerCase()===c;return l?vmModuleTypes.TransactionType.SWAP:p?vmModuleTypes.TransactionType.SEND:d?vmModuleTypes.TransactionType.RECEIVE:m?vmModuleTypes.TransactionType.NFT_BUY:u?vmModuleTypes.TransactionType.APPROVE:C?vmModuleTypes.TransactionType.NFT_SEND:h?vmModuleTypes.TransactionType.NFT_RECEIVE:y?vmModuleTypes.TransactionType.TRANSFER:g?vmModuleTypes.TransactionType.AIRDROP:v?vmModuleTypes.TransactionType.UNWRAP:k?vmModuleTypes.TransactionType.FILL_ORDER:vmModuleTypes.TransactionType.UNKNOWN};function $t(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}var qn=(t="")=>t.includes("(")?Wn__default.default(t.split("(",1)[0]):t;var qt=(t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},a)=>{let o=t===vmModuleTypes.TransactionType.TRANSFER,s=t===vmModuleTypes.TransactionType.SEND,i=t===vmModuleTypes.TransactionType.RECEIVE,c=e?.from?.address,l=e?.to?.address;o&&r&&r[0]&&(c=r[0].from.address,l=r[0].to.address),o&&n&&n[0]&&(c=n[0].from.address,l=n[0].to.address);let p=s||o&&c.toLowerCase()===a.toLowerCase(),d=i||o&&l.toLowerCase()===a.toLowerCase();return {isOutgoing:p,isIncoming:d,isSender:c===a,from:c,to:l}};async function jt(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var zn="https://ipfs.io";function ae(t,e=zn){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}async function Jn(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}async function zt(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 Jn(ae(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}var Yn="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Jt(t,e="256"){let r=ae(t);return `${Yn}/width=${e},fit/${r}`}var Xt=async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a)=>{let o=[];if(t.value!=="0"){let s=a.decimals,c=new coreUtilsSdk.TokenUnit(t.value,a.decimals,a.symbol).toDisplay();o.push({decimal:s.toString(),name:a.name,symbol:a.symbol,amount:c,from:t.from,to:t.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(s=>{let i=s.erc20Token.decimals,l=new coreUtilsSdk.TokenUnit(s.value,i,s.erc20Token.symbol).toDisplay();o.push({decimal:i.toString(),address:s.erc20Token.address,name:s.erc20Token.name,symbol:s.erc20Token.symbol,amount:l,from:s.from,to:s.to,imageUri:s.erc20Token.logoUri,type:vmModuleTypes.TokenType.ERC20});}),r&&await Promise.allSettled(r.map(async s=>{let i=s.erc721Token,c=await Kt(i.tokenUri,i.metadata.imageUri);o.push({name:s.erc721Token.name,symbol:s.erc721Token.symbol,address:s.erc721Token.address,amount:"1",imageUri:c,from:s.from,to:s.to,collectableTokenId:s.erc721Token.tokenId,type:vmModuleTypes.TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async s=>{let i=s.erc1155Token,c=await Kt(i.tokenUri,i.metadata.imageUri);o.push({name:s.erc1155Token.metadata.name??"",symbol:s.erc1155Token.metadata.symbol??"",address:s.erc1155Token.address,amount:s.value,imageUri:c,from:s.from,to:s.to,collectableTokenId:s.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),o},Kt=async(t,e)=>{if(e)return e.startsWith("ipfs://")?ae(e):e;{let[r,n]=await jt(zt(t));return n?"":r.image?Jt(r.image):""}};var Zt=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER],K=(s=>(s.TOTAL_SUPPLY="totalSupply",s.BALANCE_OF="balanceOf",s.TRANSFER="transfer",s.TRANSFER_FROM="transferFrom",s.APPROVE="approve",s.ALLOWANCE="allowance",s))(K||{});var Qt=async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:a})=>{let o=await Xt(t,r),s=Wt(t,a,o),{isOutgoing:i,isIncoming:c,isSender:l,from:p,to:d}=qt(s,t,a),{blockTimestamp:m,txHash:u,gasPrice:y,gasUsed:g}=t.nativeTransaction,v=$(e,u);return {isContractCall:!Zt.includes(s),isIncoming:c,isOutgoing:i,isSender:l,timestamp:m*1e3,hash:u,from:p,to:d,tokens:o,gasPrice:y,gasUsed:g,chainId:n.toString(),txType:s,explorerLink:v}};var er=async({chainId:t,explorerUrl:e,networkToken:r,address:n,nextPageToken:a,offset:o,glacierService:s})=>{try{let i=await s.listTransactions({chainId:t.toString(),address:n,pageToken:a,pageSize:o});return {transactions:(await Promise.all(i.transactions.filter(p=>p.nativeTransaction.txStatus==="1").map(p=>Qt({transactions:p,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(d=>d)))).filter(p=>p.tokens.find(d=>Number(d.amount)!==0)),nextPageToken:i.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var tr=async({chainId:t,isTestnet:e,networkToken:r,explorerUrl:n,address:a,nextPageToken:o,offset:s,glacierService:i})=>Ot(t)?Mt({isTestnet:e,networkToken:r,explorerUrl:n,chainId:t,address:a,nextPageToken:o,offset:s}):i.isHealthy()?er({networkToken:r,explorerUrl:n,chainId:t,address:a,nextPageToken:o,offset:s,glacierService:i}):{transactions:[],nextPageToken:""};var rr={name:"EVM",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/index.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider/index.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:[],namespaces:["eip155"]},cointype:"60",permissions:{rpc:{dapps:!0,methods:["personal_sign","eth_sendTransaction","eth_sendTransactionBatch","eth_*","web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"],nonRestrictedMethods:["eth_requestAccounts","eth_decrypt","eth_getEncryptionPublicKey","eth_subscribe","eth_unsubscribe","eth_blockNumber","eth_call","eth_chainId","eth_coinbase","eth_estimateGas","eth_feeHistory","eth_gasPrice","eth_getBalance","eth_getBlockByHash","eth_getBlockByNumber","eth_getBlockTransactionCountByHash","eth_getBlockTransactionCountByNumber","eth_getCode","eth_getFilterChanges","eth_getFilterLogs","eth_getLogs","eth_getProof","eth_getStorageAt","eth_getTransactionByBlockHashAndIndex","eth_getTransactionByBlockNumberAndIndex","eth_getTransactionByHash","eth_getTransactionCount","eth_getTransactionReceipt","eth_getUncleCountByBlockHash","eth_getUncleCountByBlockNumber","eth_newBlockFilter","eth_newFilter","eth_newPendingTransactionFilter","eth_syncing","eth_uninstallFilter","net_version","net_peerCount","net_listening","web3_sha3","web3_clientVersion"]}},manifestVersion:"0.1"};var Ve=async({from:t,provider:e})=>e.getTransactionCount(t);var Me=t=>{if(t.data)try{let r=new ethers.Interface(mr__default.default.abi).parseTransaction({data:t.data,value:t.value}),n=r?.name??r?.fragment?.name;return n&&Qn(n)?n:void 0}catch{return}};function Qn(t){return Object.values(K).includes(t)}function nr(t,e,r){return new ethers.ethers.Contract(t,mr__default.default.abi).interface.encodeFunctionData("approve",[e,r])}var Oe=new Map,ar=(t,e,r)=>(Oe.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a,approvalLimit:o,gasLimit:s})=>{let i=Oe.get(t);if(!i)throw rpcErrors.rpcErrors.resourceNotFound();let{signingData:c,displayData:l}=i,p={...c,data:{...c.data,gasLimit:s??c.data.gasLimit,maxFeePerGas:n??c.data.maxFeePerGas,maxPriorityFeePerGas:a??c.data.maxPriorityFeePerGas}},d={...l};if(typeof o=="string"){if(!o.startsWith("0x"))throw rpcErrors.rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let u=l.tokenApprovals;ra(u),na(c.data.data);let y=u.approvals[0];p.data.data=nr(y.token.address,y.spenderAddress,o),d.tokenApprovals={approvals:[{...y,value:o}],isEditable:!0};}let m={signingData:p,displayData:d};return Oe.set(t,m),m},cleanup:()=>Oe.delete(t)});function ra(t){if(!t||!t.isEditable||t.approvals.length!==1)throw rpcErrors.rpcErrors.invalidInput("Cannot edit the token approval for this request. Please start a new request instead.")}function na(t){if((!t||t==="0x"?null:Me({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}var or=async({transactionParams:{from:t,to:e,data:r,value:n,accessList:a},provider:o})=>{let s=await o.getTransactionCount(t);return Number(await o.estimateGas({from:t,to:e,nonce:s,data:r,value:n,accessList:a}))};var $e=(t,e,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:o,alert:s})=>{let{dappInfo:i}=t,c=Me(r),l="Do you approve this transaction?";c==="approve"&&(l="Do you approve this spend limit?");let p=[re("Account",r.from),Fe("Network",{name:e.chainName,logoUri:e.logoUri}),Ge("Website",i)];r.to&&p.push(re("Contract",r.to));let d={title:l,details:[{title:"Transaction Details",items:p}],networkFeeSelector:!0,alert:s,balanceChange:a,tokenApprovals:o,isSimulationSuccessful:n},m={type:vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,account:r.from,data:{type:2,nonce:Number(r.nonce),gasLimit:Number(r.gas),maxFeePerGas:r.maxFeePerGas,maxPriorityFeePerGas:r.maxPriorityFeePerGas,to:r.to,from:r.from,data:r.data,value:r.value,chainId:r.chainId??e.chainId,accessList:r.accessList}};return {displayData:d,signingData:m}};var sr=async({chainId:t,params:e,domain:r,withGasEstimation:n,blockaid:a})=>{let o=["validation","simulation"];return n&&o.push("gas_estimation"),a.evm.transactionBulk.scan({chain:t.toString(),options:o,data:e,metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}})},ir=async({chainId:t,params:e,domain:r,blockaid:n})=>n.evm.transaction.scan({account_address:e.from,chain:t.toString(),options:["validation","simulation"],data:{from:e.from,to:e.to,data:e.data,value:e.value,gas:e.gas,gas_price:e.gasPrice},metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}}),cr=async({chainId:t,accountAddress:e,data:r,domain:n,blockaid:a})=>a.evm.jsonRpc.scan({chain:t.toString(),options:["validation","simulation"],account_address:e,data:r,metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}});var dr=async(t,e,r)=>{if(!t.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.ethers.Contract(t.to,mr__default.default.abi,r),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),o=lr__default.default(a[0]),s=lr__default.default(a[1]),i=parseInt(a[2]),c={type:vmModuleTypes.TokenType.ERC20,name:o,chainId:e,symbol:s,decimals:i,address:t.to,contractType:"ERC-20"},l=new ethers.ethers.Interface(mr__default.default.abi),p=l.getFunction(t.data.slice(0,10)),d=l.decodeFunctionData(t.data.slice(0,10),t.data);if(p?.name==="transfer")return {balanceChange:{outs:[{items:[{displayValue:new coreUtilsSdk.TokenUnit(d.amount,c.decimals,c.symbol).toDisplay(),usdPrice:void 0}],token:c}],ins:[]}};if(p?.name==="approve")return {tokenApprovals:{isEditable:!0,approvals:[{token:c,spenderAddress:d.spender,value:d.amount}]}}}catch(n){console.error("parseErc20Tx error",n);}return {tokenApprovals:void 0,balanceChange:void 0}};function X(t){return !("type"in t)}function We(t){return t.type===vmModuleTypes.TokenType.ERC20}function ur(t){return typeof t.to=="string"}function fr(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}function ca(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}function la(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}function gt(t){return ca(t)?t.ins.length===0&&t.outs.length===0:la(t)?t.approvals.length===0:!1}var W={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious transaction",description:"Use caution, this transaction might be malicious."}},[vmModuleTypes.AlertType.DANGER]:{type:vmModuleTypes.AlertType.DANGER,details:{title:"Scam transaction",description:"This transaction has been flagged as malicious, I understand the risk.",body:["This transaction is malicious","do not proceed"],actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};var hr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,blockaid:o})=>{let s;try{s=await ir({chainId:n,params:r,domain:e,blockaid:o});}catch(i){console.error("simulateTransaction error",i);}return Tt({rpcMethod:t,params:r,chainId:n,provider:a,simulationResult:s})},Tt=async({rpcMethod:t,params:e,chainId:r,provider:n,simulationResult:a})=>{let o,s,i,c=!1,l;if(a){let{validation:p,simulation:d,gas_estimation:m}=a;!p||p.result_type==="Error"||p.result_type==="Warning"?o=W[vmModuleTypes.AlertType.WARNING]:p.result_type==="Malicious"&&(o=W[vmModuleTypes.AlertType.DANGER]),d?.status==="Success"&&(c=!0,i=gr(t,d.account_summary),s=Tr(d.account_summary.assets_diffs)),m?.status==="Success"&&(l=Number(m.estimate));}if(!c&&ur(e)){let p=await dr(e,r,n);s=p.balanceChange,i=p.tokenApprovals;}return {alert:o,balanceChange:s,tokenApprovals:i,isSimulationSuccessful:c,estimatedGasLimit:l}},ya=t=>t.trace_type==="ExposureTrace",ha=(t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,ga=t=>t===void 0||t.length===0?{}:t.reduce((e,r)=>ya(r)?{[ha(r.spender,r.asset.address)]:r}:e,{}),gr=(t,e)=>{let{traces:r}=e,n=ga(r),a=Object.entries(n).map(([s,i])=>{let c=kr(i.asset);if(!c)return;let l={token:c,spenderAddress:i.spender,logoUri:c.logoUri};if(i.type==="ERC20ExposureTrace"){let{exposed:{raw_value:p,usd_price:d}}=i;l.value=p,l.usdPrice=`${d}`;}if(i.type==="ERC721ExposureTrace")if(!i.exposed)l.value=`0x${ethers.MaxUint256.toString(16)}`;else {let{usd_price:p,amount:d}=i.exposed;l.value=`${d}`,l.usdPrice=`${p}`;}return l}).filter(Boolean);return a.length===0?void 0:{isEditable:a.length===1&&a[0]?.token.type===vmModuleTypes.TokenType.ERC20&&t===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:a}},Tr=t=>{let e=yr(t,"in"),r=yr(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},yr=(t,e)=>t.filter(r=>r[e].length>0).sort((r,n)=>r[e].length-n[e].length).map(r=>{let n=r.asset,a="address"in n?kr(n):Ta(n);if(!a)return;let o=r[e].map(s=>{let i;if("value"in s&&s.value)if("decimals"in a){let c=coreUtilsSdk.numberToBN(s.value,a.decimals);i=coreUtilsSdk.balanceToDisplayValue(c,a.decimals);}else ethers.isHexString(s.value)&&(i=parseInt(s.value,16).toString());else "type"in a&&a.type===vmModuleTypes.TokenType.ERC721&&(i="1");return i?{displayValue:i,usdPrice:s.usd_price}:void 0}).filter(s=>s!==void 0);return {token:a,items:o}}).filter(r=>r!==void 0),kr=t=>{let e;return t.type==="ERC20"?e={type:vmModuleTypes.TokenType.ERC20,address:t.address,decimals:t.decimals,name:t.name??t.symbol??"",symbol:t.symbol??"",logoUri:t.logo_url}:t.type==="ERC1155"?e={type:vmModuleTypes.TokenType.ERC1155,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="ERC721"?e={type:vmModuleTypes.TokenType.ERC721,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="NONERC"&&(e={type:vmModuleTypes.TokenType.NONERC,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}),e},Ta=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),Er=async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:a,blockaid:o})=>{let s,i,c;try{let{validation:l,simulation:p}=await cr({chainId:n,accountAddress:r,data:a,domain:e,blockaid:o});!l||l.result_type==="Error"||l.result_type==="Warning"?s=W[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"&&(s=W[vmModuleTypes.AlertType.DANGER]),p?.status==="Success"&&(c=gr(t.method,p.account_summary),i=Tr(p.account_summary.assets_diffs));}catch(l){console.error("processJsonRpcSimulation error",l),s=W[vmModuleTypes.AlertType.WARNING];}return {alert:s,balanceChange:i,tokenApprovals:c}};var se=zod.z.object({from:zod.z.string().length(42),to:zod.z.string().length(42).optional(),data:zod.z.string().optional(),value:zod.z.string().startsWith("0x").optional(),gas:zod.z.string().startsWith("0x").optional(),gasPrice:zod.z.string().startsWith("0x").optional(),maxFeePerGas:zod.z.string().startsWith("0x").optional(),maxPriorityFeePerGas:zod.z.string().startsWith("0x").optional(),nonce:zod.z.string().optional(),chainId:zod.z.string().optional().or(zod.z.number().optional()),accessList:zod.z.array(zod.z.object({address:zod.z.string().startsWith("0x"),storageKeys:zod.z.array(zod.z.string())})).optional()});var Ea=zod.z.tuple([se]),vr=t=>Ea.safeParse(t);var je=async({explorerUrl:t,provider:e,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:o,request:s})=>{try{n({txHash:r,request:s});let c=(await Te({operation:async()=>e.getTransactionReceipt(r),isSuccess:p=>!!p,backoffPolicy:M.linearThenExponential(4,1e3),maxRetries:20}))?.status===1,l=$(t,r);if(c)return a({txHash:r,explorerLink:l,request:s}),!0}catch(i){console.error(i);}return o({txHash:r,request:s}),!1};var ze=async(t,e)=>"txHash"in e?e.txHash:await t.send("eth_sendRawTransaction",[e.signedData]);var br=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:o,error:s,success:i}=vr(a);if(!i)return console.error("invalid params",s),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:s}})};let[c]=o,l=await w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});if(!c.gas||Number(c.gas)<0)try{let k=await or({transactionParams:{from:c.from,to:c.to,data:c.data,value:c.value,accessList:c.accessList},provider:l});c.gas="0x"+k.toString(16);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate gas limit")}}if(!c.nonce)try{let k=await Ve({from:c.from,provider:l});c.nonce=String(k);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate nonce")}}let p=await hr({rpcMethod:t.method,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:l,blockaid:n}),{displayData:d,signingData:m}=$e(t,e,c,p),{updateTx:u,cleanup:y}=ar(t.requestId,m,d),g=await r.requestApproval({request:t,displayData:d,signingData:m,updateTx:u});if(y(),"error"in g)return {error:g.error};let v;try{v=await ze(l,g);}catch(k){return {error:rpcErrors.rpcErrors.internal({message:"Unable to get transaction hash",data:{cause:k}})}}return je({explorerUrl:e.explorerUrl??"",provider:l,txHash:v,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),{result:v}};async function Pr(t,e){let r=t.map(async(o,s)=>({index:s,result:await e(o)})),a=(await Promise.allSettled(r)).filter(o=>o.status==="fulfilled").map(o=>o).find(o=>o.value.result);return a?t[a.value.index]:void 0}function ie(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}async function ce(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},{}))}var A,le,Z,Pe,Ye=class{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:a}){chunkTKL4UUHE_cjs.c(this,A,void 0);chunkTKL4UUHE_cjs.c(this,le,void 0);chunkTKL4UUHE_cjs.c(this,Z,void 0);chunkTKL4UUHE_cjs.c(this,Pe,void 0);chunkTKL4UUHE_cjs.d(this,A,e),chunkTKL4UUHE_cjs.d(this,le,r),chunkTKL4UUHE_cjs.d(this,Z,n),chunkTKL4UUHE_cjs.d(this,Pe,a);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let a=await w({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,A).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,A).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,A).utilityAddresses?.multicall}),o=chunkTKL4UUHE_cjs.b(this,A).pricingProviders?.coingecko.nativeTokenId,s=chunkTKL4UUHE_cjs.b(this,A).networkToken,i=new H({storage:chunkTKL4UUHE_cjs.b(this,le),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,Z)}),c=o?await i.getSimplePrice({coinIds:[o],currencies:[n]}):{},l=c?.[o??""]?.[n]?.price??void 0,p=c?.[o??""]?.[n]?.marketCap??void 0,d=c?.[o??""]?.[n]?.vol24??void 0,m=c?.[o??""]?.[n]?.change24??void 0,u=await a.getBalance(r),y=new coreUtilsSdk.TokenUnit(u,s.decimals,s.symbol),g=l!==void 0?y.mul(l):void 0;return {...s,coingeckoId:o??"",type:vmModuleTypes.TokenType.NATIVE,balance:u,balanceDisplayValue:y.toDisplay(),balanceInCurrency:g?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:g?.toDisplay({fixedDp:2}),priceInCurrency:l,marketCap:p,vol24:d,change24:m}}async listErc20Balances({chainId:e,address:r,currency:n}){let a=await w({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,A).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,A).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,A).utilityAddresses?.multicall}),o=chunkTKL4UUHE_cjs.b(this,A).pricingProviders?.coingecko.assetPlatformId,s=chunkTKL4UUHE_cjs.b(this,A).pricingProviders?.coingecko.nativeTokenId,i=await Ne({chainId:Number(e),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,Z)}),c=i.map(k=>k.address),l=[...i,...chunkTKL4UUHE_cjs.b(this,Pe)].filter(We),p=async k=>{let E=await new ethers.ethers.Contract(k.address,mr__default.default.abi,a).balanceOf?.(r)||0n;return {...k,balance:E}},d=l.map(k=>ie(p(k),k.address)),m=await ce(d),u=new H({storage:chunkTKL4UUHE_cjs.b(this,le),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,Z)}),y=o&&await u.getPricesByAddresses(c,o,n)||{},g=Object.keys(m),v={};for(let k=0;k<g.length;k++){let C=g[k];if(C===void 0)continue;let h=m[C];if(h===void 0||"error"in h){v[C]={error:`rpcService:getTokenWithBalance failed: ${h?.error??"unknown error"}`};continue}let E=y?.[s??""]?.[n]?.price??void 0,_=y?.[s??""]?.[n]?.marketCap??void 0,it=y?.[s??""]?.[n]?.vol24??void 0,L=y?.[s??""]?.[n]?.change24??void 0,he=new coreUtilsSdk.TokenUnit(h.balance,h.decimals,h.symbol),x=E!==void 0?he.mul(E):void 0;v[h.address.toLowerCase()]={...h,type:vmModuleTypes.TokenType.ERC20,balance:h.balance,balanceDisplayValue:he.toDisplay(),balanceInCurrency:x?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:x?.toDisplay({fixedDp:2}),priceInCurrency:E,marketCap:_,change24:L,vol24:it,reputation:null};}return v}async listNftBalances(){return {}}};A=new WeakMap,le=new WeakMap,Z=new WeakMap,Pe=new WeakMap;var xr=async({addresses:t,currency:e,network:r,proxyApiUrl:n,tokenTypes:a=[vmModuleTypes.TokenType.NATIVE,vmModuleTypes.TokenType.ERC20,vmModuleTypes.TokenType.ERC721,vmModuleTypes.TokenType.ERC1155],customTokens:o=[],storage:s,balanceServices:i=[],tokenService:c})=>{let l=r.chainId,p=[...i,new Ye({network:r,storage:s,proxyApiUrl:n,customTokens:o})],d=await Pr(p,u=>u.isNetworkSupported(r.chainId)),m={};if(d){let u=[],y=[],g=[];t.forEach(h=>{a.includes(vmModuleTypes.TokenType.NATIVE)&&u.push(ie(d.getNativeBalance({address:h,currency:e.toUpperCase(),chainId:l}).then(async E=>{if(E.symbol==="AVAX"){let _=await c.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:e.toUpperCase()});return {...E,priceInCurrency:_.priceInCurrency,marketCap:_.marketCap,vol24:_.vol24,change24:_.change24}}return E}),h)),a.includes(vmModuleTypes.TokenType.ERC20)&&y.push(ie(d.listErc20Balances({customTokens:o.filter(We),currency:e.toUpperCase(),chainId:l,address:h,pageSize:100}),h)),(a.includes(vmModuleTypes.TokenType.ERC721)||a.includes(vmModuleTypes.TokenType.ERC1155))&&g.push(ie(d.listNftBalances({chainId:l,address:h}),h));});let v=await ce(u),k=await ce(y),C=await ce(g);Object.keys(v).forEach(h=>{let E=v[h];if(!E||"error"in E){m[h]={error:`getNativeBalance failed: ${E?.error??"unknown error"}`};return}let _=E.symbol;m[h]={[_]:E};}),Object.keys(k).forEach(h=>{let E=k[h];!E||"error"in E&&typeof E.error!="string"?m[h]={...m[h],error:"listErc20Balances failed: unknown error"}:"error"in E&&typeof E.error=="string"?m[h]={...m[h],error:`listErc20Balances failed: ${E.error}`}:m[h]={...m[h],...E};}),Object.keys(C).forEach(h=>{let E=C[h];!E||"error"in E&&typeof E.error!="string"?m[h]={...m[h],error:"listNftBalances failed: unknown error"}:"error"in E&&typeof E.error=="string"?m[h]={...m[h],error:`listNftBalances failed: ${E.error}`}:m[h]={...m[h],...E};});}else t.forEach(u=>{m[u]={error:"unsupported network"};});return m};var Pa={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Ra={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Ar=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return Pa;case vmModuleTypes.Environment.DEV:return Ra}};var wr="DUMMY_API_KEY";var xa="https://ipfs.io";function Cr(t,e=xa){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}var Ia="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Ke(t,e="256"){let r=Cr(t);return `${Ia}/width=${e},fit/${r}`}var G=class extends Error{constructor(){super(...arguments);chunkTKL4UUHE_cjs.a(this,"message","Glacier is unhealthy. Try again later.");}},Ba=[coreChainsSdk.ChainId.ETHEREUM_HOMESTEAD],Xe=class{constructor({glacierApiUrl:e,headers:r}){chunkTKL4UUHE_cjs.a(this,"glacierSdk");chunkTKL4UUHE_cjs.a(this,"isGlacierHealthy",!0);chunkTKL4UUHE_cjs.a(this,"supportedChainIds",[]);chunkTKL4UUHE_cjs.a(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:e,HEADERS:r},ve),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=>!Ba.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 G&&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 G&&this.setGlacierToUnhealthy(),a}}async getNativeBalance({chainId:e,address:r,currency:n,coingeckoId:a}){try{let s=(await this.glacierSdk.evmBalances.getNativeBalance({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase()})).nativeTokenBalance,i=new coreUtilsSdk.TokenUnit(s.balance,s.decimals,s.symbol),c=s.price?.value,l=c!==void 0?i.mul(c):void 0;return {name:s.name,symbol:s.symbol,decimals:s.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:s.logoUri,balance:i.toSubUnit(),balanceDisplayValue:i.toDisplay(),balanceInCurrency:l?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:l?.toDisplay({fixedDp:2}),priceInCurrency:c,coingeckoId:a??""}}catch(o){throw o instanceof G&&this.setGlacierToUnhealthy(),o}}async listErc721Balances({chainId:e,address:r}){let n,a=[];do try{let o=await this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...o.erc721TokenBalances),n=o.nextPageToken;}catch(o){throw o instanceof G&&this.setGlacierToUnhealthy(),o}while(n);return a}async listErc1155Balances({chainId:e,address:r}){let n,a=[];do try{let o=await this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...o.erc1155TokenBalances),n=o.nextPageToken;}catch(o){throw o instanceof G&&this.setGlacierToUnhealthy(),o}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(o=>o.status==="fulfilled").flatMap(o=>o.value.filter(s=>s.ercType===glacierSdk.Erc721Token.ercType.ERC_721||BigInt(s.balance)>0n).map(s=>[`${s.address}-${s.tokenId}`,{address:s.address,description:s.metadata.description??"",logoUri:s.metadata.imageUri??"",logoSmall:Ke(s.metadata.imageUri??""),name:s.metadata.name??"",symbol:s.metadata.symbol??"",tokenId:s.tokenId,tokenUri:s.tokenUri,chainId:e,collectionName:"Unknown",balance:s.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?BigInt(s.balance):1,balanceDisplayValue:s.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?s.balance:"1",type:s.ercType===glacierSdk.Erc721Token.ercType.ERC_721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{indexStatus:s.metadata.indexStatus,description:s.metadata.description,lastUpdatedTimestamp:s.metadata.metadataLastUpdatedTimestamp,properties:s.ercType===glacierSdk.Erc721Token.ercType.ERC_721?s.metadata.attributes:s.metadata.properties}}]));return Object.fromEntries(a)}async listErc20Balances({chainId:e,address:r,currency:n,customTokens:a}){try{let o=[],s;do{let i=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:s});o.push(..._a(i.erc20TokenBalances,Number(e))),s=i.nextPageToken;}while(s);return [...Na(a),...o].reduce((i,c)=>({...i,[c.address.toLowerCase()]:c}),{})}catch(o){throw o instanceof G&&this.setGlacierToUnhealthy(),o}}async listTransactions({chainId:e,address:r,pageToken:n,pageSize:a}){try{return this.glacierSdk.evmTransactions.listTransactions({chainId:e,address:r,pageToken:n,pageSize:a})}catch(o){throw o instanceof G&&this.setGlacierToUnhealthy(),o}}},Na=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})),_a=(t,e)=>t.map(r=>{let n=new coreUtilsSdk.TokenUnit(r.balance,r.decimals,r.symbol),a=n.toDisplay(),o=r.balanceValue?.value.toString(),s=r.price?.value,i=s!==void 0?n.mul(s).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:o,balanceDisplayValue:a,balanceInCurrency:i,priceInCurrency:s,reputation:r.tokenReputation,type:vmModuleTypes.TokenType.ERC20}});var Et=t=>{let e="";e+=`Domain
27
27
  `;for(let r in t.domain)e+=` ${r}: ${Q(String(t.domain[r]))}
28
28
  `;e+=`
29
29
  Message