@avalabs/evm-module 1.2.0 → 1.2.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
@@ -22,7 +22,7 @@ var Wt__default = /*#__PURE__*/_interopDefault(Wt);
22
22
  var Qe__default = /*#__PURE__*/_interopDefault(Qe);
23
23
  var Ot__default = /*#__PURE__*/_interopDefault(Ot);
24
24
 
25
- async function Re({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 zr=process.env.GLACIER_API_KEY,x=async t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:s,pollingInterval:a=2e3}=t,o=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:s},Xr(n,zr),new ethers.Network(r,e));return o.pollingInterval=a,o},Kr=["glacier-api.avax.network","proxy-api.avax.network"];function Xr(t,e){let r=new URL(t);if(e&&Kr.includes(r.hostname)){let n=r.searchParams;return n.set("token",e),r.search=n.toString(),r.toString()}return t}var Je={LOW:1n,MEDIUM:4n,HIGH:6n},Ye=500000000n;async function ft({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,caipId:s,proxyApiUrl:a}){let o=await x({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n});if(!a)throw rpcErrors.rpcErrors.internal("Proxy API URL is needed");let c=await o.getBlock("latest",!1);if(!c)throw rpcErrors.rpcErrors.internal("There is no block");let i=c.baseFeePerGas;if(!i)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let l=await Zr(a,s),p=new coreUtilsSdk.TokenUnit(l,0,""),m=new coreUtilsSdk.TokenUnit(i,0,""),u=BigInt("1000000000"),d=m.mul(p).add(u).toSubUnit(),h=Ye*Je.LOW,y=Ye*Je.MEDIUM,v=Ye*Je.HIGH;return {baseFee:d,low:{maxFeePerGas:d+h,maxPriorityFeePerGas:h},medium:{maxFeePerGas:d+y,maxPriorityFeePerGas:y},high:{maxFeePerGas:d+v,maxPriorityFeePerGas:v},isFixedFee:!1,displayDecimals:9}}async function Zr(t,e){if(!e)return 1.5;try{let n=await fetch(`${t}/gas/multiplier`);if(!n.ok)throw new Error(n.statusText);let s=await n.json();return s[e]??s.default}catch{return 1.5}}function j(t,e,r="tx"){return `${t}/${r}/${e}`}var ht=({tx:t,networkToken:e,chainId:r,explorerUrl:n,address:s})=>{let a=t.from.toLowerCase()===s.toLowerCase(),o=parseInt(t.timeStamp)*1e3,c=e.decimals,l=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol).toDisplay(),p=a?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,{from:m,to:u,gasPrice:d,gasUsed:h,hash:y}=t,v=j(n,y);return {isIncoming:!a,isOutgoing:a,isContractCall:tn(t),timestamp:o,hash:y,isSender:a,from:m,to:u,tokens:[{decimal:c.toString(),name:e.name,symbol:e.symbol,amount:l,type:vmModuleTypes.TokenType.NATIVE}],gasUsed:h,gasPrice:d,chainId:r.toString(),txType:p,explorerLink:v}};function tn(t){return t.input!=="0x"}function Tt({tx:t,address:e,explorerUrl:r,chainId:n}){let s=t.from.toLowerCase()===e.toLowerCase(),a=parseInt(t.timeStamp)*1e3,c=new coreUtilsSdk.TokenUnit(t.value,Number(t.tokenDecimal),t.tokenSymbol).toDisplay(),{from:i,to:l,gasPrice:p,gasUsed:m,hash:u,tokenDecimal:d,tokenName:h,tokenSymbol:y}=t,v=s?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,E=j(r,u);return {isIncoming:!s,isOutgoing:s,isContractCall:!1,timestamp:a,hash:u,isSender:s,from:i,to:l,tokens:[{decimal:d,name:h,symbol:y,type:vmModuleTypes.TokenType.ERC20,amount:c}],gasUsed:m,gasPrice:p,chainId:n.toString(),txType:v,explorerLink:E}}var kt=async({isTestnet:t,networkToken:e,explorerUrl:r,chainId:n,address:s,nextPageToken:a,offset:o})=>{let c=a?JSON.parse(a):void 0,i=c?.page||1,l=c?.queries||["normal","erc20"],p=(l.includes("normal")?await coreEtherscanSdk.getNormalTxs(s,!t,{page:i,offset:o}):[]).map(y=>ht({tx:y,chainId:n,networkToken:e,explorerUrl:r,address:s})),m=(l.includes("erc20")?await coreEtherscanSdk.getErc20Txs(s,!t,void 0,{page:i,offset:o}):[]).map(y=>Tt({tx:y,address:s,explorerUrl:r,chainId:n})),u=m.map(y=>y.hash),d=p.filter(y=>!u.includes(y.hash)),h={queries:[],page:i+1};return p.length&&h.queries.push("normal"),m.length&&h.queries.push("erc20"),{transactions:[...d,...m],nextPageToken:h.queries.length?JSON.stringify(h):""}};var vt=t=>t===1||t===5||t===4||t===11155111;var Rt=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},s,a)=>{let o=!e&&!r&&!n,c=cn(t.method?.methodName),i=s.toLowerCase(),l=c.toLowerCase().includes("swap"),p=o&&t.from.address.toLowerCase()===i,m=o&&t.to.address.toLowerCase()===i,u=c==="Market Buy Orders With Eth"||c==="Buy NFT",d=c==="Approve",h=c.toLowerCase().includes("transfer"),y=c.toLowerCase().includes("airdrop"),v=c.toLowerCase().includes("unwrap"),E=c==="Fill Order",T=!!a[0]&&bt(a[0].type)&&a[0].from?.address.toLowerCase()===i,k=!!a[0]&&bt(a[0].type)&&a[0].to?.address.toLowerCase()===i;return l?vmModuleTypes.TransactionType.SWAP:p?vmModuleTypes.TransactionType.SEND:m?vmModuleTypes.TransactionType.RECEIVE:u?vmModuleTypes.TransactionType.NFT_BUY:d?vmModuleTypes.TransactionType.APPROVE:T?vmModuleTypes.TransactionType.NFT_SEND:k?vmModuleTypes.TransactionType.NFT_RECEIVE:h?vmModuleTypes.TransactionType.TRANSFER:y?vmModuleTypes.TransactionType.AIRDROP:v?vmModuleTypes.TransactionType.UNWRAP:E?vmModuleTypes.TransactionType.FILL_ORDER:vmModuleTypes.TransactionType.UNKNOWN};function bt(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}var cn=(t="")=>t.includes("(")?sn__default.default(t.split("(",1)[0]):t;var St=(t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},s)=>{let a=t===vmModuleTypes.TransactionType.TRANSFER,o=t===vmModuleTypes.TransactionType.SEND,c=t===vmModuleTypes.TransactionType.RECEIVE,i=e?.from?.address,l=e?.to?.address;a&&r&&r[0]&&(i=r[0].from.address,l=r[0].to.address),a&&n&&n[0]&&(i=n[0].from.address,l=n[0].to.address);let p=o||a&&i.toLowerCase()===s.toLowerCase(),m=c||a&&l.toLowerCase()===s.toLowerCase();return {isOutgoing:p,isIncoming:m,isSender:i===s,from:i,to:l}};async function It(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var pn="https://ipfs.io";function q(t,e=pn){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}async function mn(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}async function Pt(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 mn(q(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}var dn="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function xt(t,e="256"){let r=q(t);return `${dn}/width=${e},fit/${r}`}var Ct=async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},s)=>{let a=[];if(t.value!=="0"){let o=s.decimals,i=new coreUtilsSdk.TokenUnit(t.value,s.decimals,s.symbol).toDisplay();a.push({decimal:o.toString(),name:s.name,symbol:s.symbol,amount:i,from:t.from,to:t.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(o=>{let c=o.erc20Token.decimals,l=new coreUtilsSdk.TokenUnit(o.value,c,o.erc20Token.symbol).toDisplay();a.push({decimal:c.toString(),name:o.erc20Token.name,symbol:o.erc20Token.symbol,amount:l,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,i=await wt(c.tokenUri,c.metadata.imageUri);a.push({name:o.erc721Token.name,symbol:o.erc721Token.symbol,amount:"1",imageUri:i,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,i=await wt(c.tokenUri,c.metadata.imageUri);a.push({name:o.erc1155Token.metadata.name??"",symbol:o.erc1155Token.metadata.symbol??"",amount:o.value,imageUri:i,from:o.from,to:o.to,collectableTokenId:o.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),a},wt=async(t,e)=>{if(e)return e.startsWith("ipfs://")?q(e):e;{let[r,n]=await It(Pt(t));return n?"":r.image?xt(r.image):""}};var Nt=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER],H=(o=>(o.TOTAL_SUPPLY="totalSupply",o.BALANCE_OF="balanceOf",o.TRANSFER="transfer",o.TRANSFER_FROM="transferFrom",o.APPROVE="approve",o.ALLOWANCE="allowance",o))(H||{});var _t=async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:s})=>{let a=await Ct(t,r),o=Rt(t,s,a),{isOutgoing:c,isIncoming:i,isSender:l,from:p,to:m}=St(o,t,s),{blockTimestamp:u,txHash:d,gasPrice:h,gasUsed:y}=t.nativeTransaction,v=j(e,d);return {isContractCall:!Nt.includes(o),isIncoming:i,isOutgoing:c,isSender:l,timestamp:u*1e3,hash:d,from:p,to:m,tokens:a,gasPrice:h,gasUsed:y,chainId:n.toString(),txType:o,explorerLink:v}};var Bt=async({chainId:t,explorerUrl:e,networkToken:r,address:n,nextPageToken:s,offset:a,glacierService:o})=>{try{let c=await o.listTransactions({chainId:t.toString(),address:n,pageToken:s,pageSize:a});return {transactions:(await Promise.all(c.transactions.filter(p=>p.nativeTransaction.txStatus==="1").map(p=>_t({transactions:p,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(m=>m)))).filter(p=>p.tokens.find(m=>Number(m.amount)!==0)),nextPageToken:c.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var Dt=async({chainId:t,isTestnet:e,networkToken:r,explorerUrl:n,address:s,nextPageToken:a,offset:o,glacierService:c})=>vt(t)?kt({isTestnet:e,networkToken:r,explorerUrl:n,chainId:t,address:s,nextPageToken:a,offset:o}):c.isHealthy()?Bt({networkToken:r,explorerUrl:n,chainId:t,address:s,nextPageToken:a,offset:o,glacierService:c}):{transactions:[],nextPageToken:""};var Ut={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 Ie=async({from:t,provider:e})=>e.getTransactionCount(t);var Pe=t=>{if(t.data)try{let r=new ethers.Interface(Wt__default.default.abi).parseTransaction({data:t.data,value:t.value}),n=r?.name??r?.fragment?.name;return n&&hn(n)?n:void 0}catch{return}};function hn(t){return Object.values(H).includes(t)}function Gt(t,e,r){return new ethers.ethers.Contract(t,Wt__default.default.abi).interface.encodeFunctionData("approve",[e,r])}var xe=new Map,Ft=(t,e,r)=>(xe.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:s,approvalLimit:a})=>{let o=xe.get(t);if(!o)throw rpcErrors.rpcErrors.resourceNotFound();let{signingData:c,displayData:i}=o,l={...c,data:{...c.data,maxFeePerGas:n??c.data.maxFeePerGas,maxPriorityFeePerGas:s??c.data.maxPriorityFeePerGas}},p={...i};if(typeof a=="string"){if(!a.startsWith("0x"))throw rpcErrors.rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let u=i.tokenApprovals;kn(u),vn(c.data.data);let d=u.approvals[0];l.data.data=Gt(d.token.address,d.spenderAddress,a),p.tokenApprovals={approvals:[{...d,value:a}],isEditable:!0};}let m={signingData:l,displayData:p};return xe.set(t,m),m},cleanup:()=>xe.delete(t)});function kn(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 vn(t){if((!t||t==="0x"?null:Pe({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}var Mt=async({transactionParams:{from:t,to:e,data:r,value:n},provider:s})=>{let a=await s.getTransactionCount(t);return Number(await s.estimateGas({from:t,to:e,nonce:a,data:r,value:n}))};var Xe=(t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),Ce=(t,e)=>({label:t,value:e,type:vmModuleTypes.DetailItemType.LINK}),J=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e});var Ze=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.DATA,value:e});var Ne=(t,e,r,{isSimulationSuccessful:n,balanceChange:s,tokenApprovals:a,alert:o})=>{let{dappInfo:c}=t,i=Pe(r),l="Approve Transaction";i==="approve"&&(l="Token Spend Approval");let p=[Ce("Website",c),J("From",r.from)];r.to&&p.push(J("To",r.to)),i&&p.push(Xe("Type",i)),r.data&&p.push(Ze("Data",r.data));let m={title:l,network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:[{title:"Transaction Details",items:p}],networkFeeSelector:!0,alert:o,balanceChange:s,tokenApprovals:a,isSimulationSuccessful:n},u={type:vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,account:r.from,data:{type:2,nonce:Number(r.nonce),gasLimit:Number(r.gas),to:r.to,from:r.from,data:r.data,value:r.value,chainId:r.chainId??e.chainId}};return {displayData:m,signingData:u}};var et="DUMMY_API_KEY",Vt=async({proxyApiUrl:t,chainId:e,params:r,domain:n,withGasEstimation:s})=>{let a=new Qe__default.default({baseURL:t+"/proxy/blockaid/",apiKey:et}),o=["validation","simulation"];return s&&o.push("gas_estimation"),a.evm.transactionBulk.scan({chain:e.toString(),options:o,data:r,metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}})},Lt=async({proxyApiUrl:t,chainId:e,params:r,domain:n})=>new Qe__default.default({baseURL:t+"/proxy/blockaid/",apiKey:et}).evm.transaction.scan({account_address:r.from,chain:e.toString(),options:["validation","simulation"],data:{from:r.from,to:r.to,data:r.data,value:r.value,gas:r.gas,gas_price:r.gasPrice},metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}}),Ht=async({proxyApiUrl:t,chainId:e,accountAddress:r,data:n,domain:s})=>new Qe__default.default({baseURL:t+"/proxy/blockaid/",apiKey:et}).evm.jsonRpc.scan({chain:e.toString(),options:["validation","simulation"],account_address:r,data:n,metadata:s&&s.length>0?{domain:s}:{non_dapp:!0}});var jt=async(t,e,r)=>{if(!t.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.ethers.Contract(t.to,Wt__default.default.abi,r),s=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),a=Ot__default.default(s[0]),o=Ot__default.default(s[1]),c=parseInt(s[2]),i={type:vmModuleTypes.TokenType.ERC20,name:a,chainId:e,symbol:o,decimals:c,address:t.to,contractType:"ERC-20"},l=new ethers.ethers.Interface(Wt__default.default.abi),p=l.getFunction(t.data.slice(0,10)),m=l.decodeFunctionData(t.data.slice(0,10),t.data);if(p?.name==="transfer")return {balanceChange:{outs:[{items:[{displayValue:new coreUtilsSdk.TokenUnit(m.amount,i.decimals,i.symbol).toDisplay(),usdPrice:void 0}],token:i}],ins:[]}};if(p?.name==="approve")return {tokenApprovals:{isEditable:!0,approvals:[{token:i,spenderAddress:m.spender,value:m.amount}]}}}catch(n){console.error("parseErc20Tx error",n);}return {tokenApprovals:void 0,balanceChange:void 0}};function O(t){return !("type"in t)}function _e(t){return t.type===vmModuleTypes.TokenType.ERC20}function qt(t){return typeof t.to=="string"}function Jt(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}function In(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}function Pn(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}function tt(t){return In(t)?t.ins.length===0&&t.outs.length===0:Pn(t)?t.approvals.length===0:!1}var U={[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 is malicious, do not proceed.",actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};var zt=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:s,proxyApiUrl:a})=>{let o={};try{o=await Lt({proxyApiUrl:a,chainId:n,params:r,domain:e});}catch(c){console.error("simulateTransaction error",c);}return rt({rpcMethod:t,params:r,chainId:n,provider:s,simulationResult:o})},rt=async({rpcMethod:t,params:e,chainId:r,provider:n,simulationResult:s})=>{let a,o,c,i=!1,l,{validation:p,simulation:m,gas_estimation:u}=s;if(!p||p.result_type==="Error"||p.result_type==="Warning"?a=U[vmModuleTypes.AlertType.WARNING]:p.result_type==="Malicious"&&(a=U[vmModuleTypes.AlertType.DANGER]),m?.status==="Success"&&(i=!0,c=Kt(t,m.account_summary.exposures),o=Xt(m.account_summary.assets_diffs)),u?.status==="Success"&&(l=Number(u.estimate)),!i&&qt(e)){let d=await jt(e,r,n);o=d.balanceChange,c=d.tokenApprovals;}return {alert:a,balanceChange:o,tokenApprovals:c,isSimulationSuccessful:i,estimatedGasLimit:l}},Kt=(t,e)=>{let r=[];for(let s of e){let a=Zt(s.asset);if(a)for(let[o,c]of Object.entries(s.spenders))if(c.exposure.length===0)r.push({token:a,spenderAddress:o,logoUri:a.logoUri});else for(let i of c.exposure)"raw_value"in i?r.push({token:a,spenderAddress:o,value:i.raw_value,usdPrice:i.usd_price,logoUri:a.logoUri}):r.push({token:a,spenderAddress:o,logoUri:i.logo_url,usdPrice:i.usd_price});}return r.length===0?void 0:{isEditable:r.length===1&&r[0]?.token.type===vmModuleTypes.TokenType.ERC20&&t===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:r}},Xt=t=>{let e=Yt(t,"in"),r=Yt(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},Yt=(t,e)=>t.filter(r=>r[e].length>0).sort((r,n)=>r[e].length-n[e].length).map(r=>{let n=r.asset,s="address"in n?Zt(n):Nn(n);if(!s)return;let a=r[e].map(o=>{let c;if("value"in o&&o.value)if("decimals"in s){let i=coreUtilsSdk.numberToBN(o.value,s.decimals);c=coreUtilsSdk.balanceToDisplayValue(i,s.decimals);}else ethers.isHexString(o.value)&&(c=parseInt(o.value,16).toString());else "type"in s&&s.type===vmModuleTypes.TokenType.ERC721&&(c="1");return c?{displayValue:c,usdPrice:o.usd_price}:void 0}).filter(o=>o!==void 0);return {token:s,items:a}}).filter(r=>r!==void 0),Zt=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},Nn=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),Qt=async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:s,proxyApiUrl:a})=>{let o,c,i;try{let{validation:l,simulation:p}=await Ht({proxyApiUrl:a,chainId:n,accountAddress:r,data:s,domain:e});!l||l.result_type==="Error"||l.result_type==="Warning"?o=U[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"&&(o=U[vmModuleTypes.AlertType.DANGER]),p?.status==="Success"&&(i=Kt(t.method,p.account_summary.exposures),c=Xt(p.account_summary.assets_diffs));}catch(l){console.error("processJsonRpcSimulation error",l),o=U[vmModuleTypes.AlertType.WARNING];}return {alert:o,balanceChange:c,tokenApprovals:i}};var z=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())});var Bn=zod.z.tuple([z]),er=t=>Bn.safeParse(t);var De=async({provider:t,txHash:e,onTransactionConfirmed:r,onTransactionReverted:n,requestId:s})=>{try{if((await t.waitForTransaction(e))?.status===1)return r(e,s),!0}catch(a){console.error(a);}return n(e,s),!1};var Ue=async(t,e)=>"txHash"in e?e.txHash:await t.send("eth_sendRawTransaction",[e.signedData]);var tr=async({request:t,network:e,approvalController:r,proxyApiUrl:n})=>{let{params:s}=t,{data:a,error:o,success:c}=er(s);if(!c)return console.error("invalid params",o),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:o}})};let[i]=a,l=await x({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});if(!i.gas||Number(i.gas)<0)try{let E=await Mt({transactionParams:{from:i.from,to:i.to,data:i.data,value:i.value},provider:l});i.gas="0x"+E.toString(16);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate gas limit")}}if(!i.nonce)try{let E=await Ie({from:i.from,provider:l});i.nonce=String(E);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate nonce")}}let p=await zt({rpcMethod:t.method,proxyApiUrl:n,chainId:e.chainId,params:i,dAppUrl:t.dappInfo.url,provider:l}),{displayData:m,signingData:u}=Ne(t,e,i,p),{updateTx:d,cleanup:h}=Ft(t.requestId,u,m),y=await r.requestApproval({request:t,displayData:m,signingData:u,updateTx:d});if(h(),"error"in y)return {error:y.error};let v;try{v=await Ue(l,y);}catch(E){return {error:rpcErrors.rpcErrors.internal({message:"Unable to get transaction hash",data:{cause:E}})}}return De({provider:l,txHash:v,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,requestId:t.requestId}),{result:v}};async function rr(t,e){let r=t.map(async(a,o)=>({index:o,result:await e(a)})),s=(await Promise.allSettled(r)).filter(a=>a.status==="fulfilled").map(a=>a).find(a=>a.value.result);return s?t[s.value.index]:void 0}function K(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}async function X(t){return await Promise.allSettled(t).then(e=>e.reduce((r,n)=>{if(n.status==="fulfilled"){let s=n.value;s.status==="fulfilled"?r[s.id]=s.value:r[s.id]={error:s.reason};}return r},{}))}var nt=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=me.exponential()})=>{let s=0,a=0,o;for(;a<r;){a>0&&await Dn(s);try{let i=await t(a);if(e(i))return i}catch(i){o=i;}s=n(a),a++;}let c=o?`Max retry exceeded. ${o}`:"Max retry exceeded.";throw new Error(c)},me=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return r=>e*1e3}static constantMs(e){return r=>e}};function Dn(t){return new Promise(e=>setTimeout(e,t))}var at=t=>nt({operation:e=>t(e>0),maxRetries:2,backoffPolicy:me.constant(1),isSuccess:e=>e?.status?.error_code!==429});function nr(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function ot(t){let e,r=0;for(e=0;e<t.length;e++){let n=nr(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}async function Z(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 de=class{constructor(e){this.proxyApiUrl=e;}simplePrice(e){let r=new URLSearchParams(e);return Z([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(e){let{id:r,...n}=e,s=new URLSearchParams(n);return Z([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${s}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.SimplePriceResponseSchema)}};var ar=coreCoingeckoSdk.getBasicCoingeckoHttp(),G,Q,ee=class{constructor({storage:e,proxyApiUrl:r}){chunkTKL4UUHE_cjs.c(this,G,void 0);chunkTKL4UUHE_cjs.c(this,Q,void 0);chunkTKL4UUHE_cjs.a(this,"transformSimplePriceResponse",(e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(s=>{let a=e[s];n[s]={},r.forEach(o=>{n[s]={[o]:{price:a?.[o],change24:a?.[`${o}_24h_change`],vol24:a?.[`${o}_24h_vol`],marketCap:a?.[`${o}_market_cap`]}};});}),n});chunkTKL4UUHE_cjs.d(this,G,e),chunkTKL4UUHE_cjs.d(this,Q,r);}async getSimplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,a=`getSimplePrice-${e?`${ot(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkTKL4UUHE_cjs.b(this,G)?.get?.(a),n)return n;try{n=await at(o=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:o}));}catch{n=void 0;}return chunkTKL4UUHE_cjs.b(this,G)?.set?.(a,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let s,o=`getPricesWithMarketDataByAddresses-${`${ot(e)}-${r}-${n}`}`;if(s=chunkTKL4UUHE_cjs.b(this,G)?.get?.(o),s)return s;try{s=await at(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:c}));}catch{s=void 0;}return chunkTKL4UUHE_cjs.b(this,G)?.set?.(o,s),s}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:s=!1}){return s?new de(chunkTKL4UUHE_cjs.b(this,Q)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}):coreCoingeckoSdk.simpleTokenPrice(ar,{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:s=!1,change24:a=!1,lastUpdated:o=!1,useCoingeckoProxy:c=!1,shouldThrow:i=!0}){if(c){let l=await new de(chunkTKL4UUHE_cjs.b(this,Q)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:s,include_24hr_change:a,include_last_updated_at:o});return this.transformSimplePriceResponse(l,r)}return coreCoingeckoSdk.simplePrice(ar,{coinIds:e,currencies:r,marketCap:n,vol24:s,change24:a,lastUpdated:o,shouldThrow:i})}};G=new WeakMap,Q=new WeakMap;var Wn="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",jn="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",or=zod.object({date:zod.string(),usd:zod.record(zod.number())}),Fe=async()=>{try{return await Z([Wn],or)}catch{return await Z([jn],or)}};var st=({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 P,re,$,fe,Me=class{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:s}){chunkTKL4UUHE_cjs.c(this,P,void 0);chunkTKL4UUHE_cjs.c(this,re,void 0);chunkTKL4UUHE_cjs.c(this,$,void 0);chunkTKL4UUHE_cjs.c(this,fe,void 0);chunkTKL4UUHE_cjs.d(this,P,e),chunkTKL4UUHE_cjs.d(this,re,r),chunkTKL4UUHE_cjs.d(this,$,n),chunkTKL4UUHE_cjs.d(this,fe,s);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let s=await x({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,P).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,P).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,P).utilityAddresses?.multicall}),a=chunkTKL4UUHE_cjs.b(this,P).pricingProviders?.coingecko.nativeTokenId,o=chunkTKL4UUHE_cjs.b(this,P).networkToken,c=new ee({storage:chunkTKL4UUHE_cjs.b(this,re),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,$)}),i=a?await c.getSimplePrice({coinIds:[a],currencies:[n]}):{},l=i?.[a??""]?.[n]?.price??void 0,p=i?.[a??""]?.[n]?.marketCap??void 0,m=i?.[a??""]?.[n]?.vol24??void 0,u=i?.[a??""]?.[n]?.change24??void 0,d=await s.getBalance(r),h=new coreUtilsSdk.TokenUnit(d,o.decimals,o.symbol),y=l!==void 0?h.mul(l):void 0;return {...o,coingeckoId:a??"",type:vmModuleTypes.TokenType.NATIVE,balance:d,balanceDisplayValue:h.toDisplay(),balanceInCurrency:y?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:y?.toDisplay({fixedDp:2}),priceInCurrency:l,marketCap:p,vol24:m,change24:u}}async listErc20Balances({chainId:e,address:r,currency:n}){let s=await x({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,P).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,P).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,P).utilityAddresses?.multicall}),a=chunkTKL4UUHE_cjs.b(this,P).pricingProviders?.coingecko.assetPlatformId,o=chunkTKL4UUHE_cjs.b(this,P).pricingProviders?.coingecko.nativeTokenId,c=await Re({chainId:Number(e),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,$)}),i=c.map(E=>E.address),l=[...c,...chunkTKL4UUHE_cjs.b(this,fe)].filter(_e),p=async E=>{let S=await new ethers.ethers.Contract(E.address,Wt__default.default.abi,s).balanceOf?.(r)||0n;return {...E,balance:S}},m=l.map(E=>K(p(E),E.address)),u=await X(m),d=new ee({storage:chunkTKL4UUHE_cjs.b(this,re),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,$)}),h=a&&await d.getPricesByAddresses(i,a,n)||{},y=Object.keys(u),v={};for(let E=0;E<y.length;E++){let T=y[E];if(T===void 0)continue;let k=u[T];if(k===void 0||"error"in k){v[T]={error:`rpcService:getTokenWithBalance failed: ${k?.error??"unknown error"}`};continue}let S=h?.[o??""]?.[n]?.price??void 0,Ee=h?.[o??""]?.[n]?.marketCap??void 0,I=h?.[o??""]?.[n]?.vol24??void 0,je=h?.[o??""]?.[n]?.change24??void 0,be=new coreUtilsSdk.TokenUnit(k.balance,k.decimals,k.symbol),le=S!==void 0?be.mul(S):void 0;v[k.address.toLowerCase()]={...k,type:vmModuleTypes.TokenType.ERC20,balance:k.balance,balanceDisplayValue:be.toDisplay(),balanceInCurrency:le?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:le?.toDisplay({fixedDp:2}),priceInCurrency:S,marketCap:Ee,change24:je,vol24:I,reputation:null};}return v}async listNftBalances(){return {}}};P=new WeakMap,re=new WeakMap,$=new WeakMap,fe=new WeakMap;var cr=async({addresses:t,currency:e,network:r,proxyApiUrl:n,tokenTypes:s=[vmModuleTypes.TokenType.NATIVE,vmModuleTypes.TokenType.ERC20,vmModuleTypes.TokenType.ERC721,vmModuleTypes.TokenType.ERC1155],customTokens:a=[],storage:o,balanceServices:c=[]})=>{let i=r.chainId,l=[...c,new Me({network:r,storage:o,proxyApiUrl:n,customTokens:a})],p=await rr(l,u=>u.isNetworkSupported(r.chainId)),m={};if(p){let u=[],d=[],h=[];t.forEach(T=>{s.includes(vmModuleTypes.TokenType.NATIVE)&&u.push(K(p.getNativeBalance({address:T,currency:e.toUpperCase(),chainId:i}),T)),s.includes(vmModuleTypes.TokenType.ERC20)&&d.push(K(p.listErc20Balances({customTokens:a.filter(_e),currency:e.toUpperCase(),chainId:i,address:T,pageSize:100}),T)),(s.includes(vmModuleTypes.TokenType.ERC721)||s.includes(vmModuleTypes.TokenType.ERC1155))&&h.push(K(p.listNftBalances({chainId:i,address:T}),T));});let y=await X(u),v=await X(d),E=await X(h);Object.keys(y).forEach(T=>{let k=y[T];if(!k||"error"in k){m[T]={error:`getNativeBalance failed: ${k?.error??"unknown error"}`};return}let S=k.symbol;m[T]={[S]:k};}),Object.keys(v).forEach(T=>{let k=v[T];!k||"error"in k&&typeof k.error!="string"?m[T]={...m[T],error:"listErc20Balances failed: unknown error"}:"error"in k&&typeof k.error=="string"?m[T]={...m[T],error:`listErc20Balances failed: ${k.error}`}:m[T]={...m[T],...k};}),Object.keys(E).forEach(T=>{let k=E[T];!k||"error"in k&&typeof k.error!="string"?m[T]={...m[T],error:"listNftBalances failed: unknown error"}:"error"in k&&typeof k.error=="string"?m[T]={...m[T],error:`listNftBalances failed: ${k.error}`}:m[T]={...m[T],...k};});}else t.forEach(u=>{m[u]={error:"unsupported network"};});return m};var Yn={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},zn={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},pr=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return Yn;case vmModuleTypes.Environment.DEV:return zn}};var Xn="https://ipfs.io";function mr(t,e=Xn){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}var Zn="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function dr(t,e="256"){let r=mr(t);return `${Zn}/width=${e},fit/${r}`}var B=class extends Error{constructor(){super(...arguments);chunkTKL4UUHE_cjs.a(this,"message","Glacier is unhealthy. Try again later.");}},Ve=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}),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),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(s){throw s instanceof B&&this.setGlacierToUnhealthy(),s}}async getTokenDetails({address:e,chainId:r,tokenId:n}){try{return this.glacierSdk.nfTs.getTokenDetails({address:e,chainId:r,tokenId:n})}catch(s){throw s instanceof B&&this.setGlacierToUnhealthy(),s}}async getNativeBalance({chainId:e,address:r,currency:n,coingeckoId:s}){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),i=o.price?.value,l=i!==void 0?c.mul(i):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:l?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:l?.toDisplay({fixedDp:2}),priceInCurrency:i,coingeckoId:s??""}}catch(a){throw a instanceof B&&this.setGlacierToUnhealthy(),a}}async listErc721Balances({chainId:e,address:r}){let n,s=[];do try{let a=await this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:r,pageSize:100,pageToken:n});s.push(...a.erc721TokenBalances),n=a.nextPageToken;}catch(a){throw a instanceof B&&this.setGlacierToUnhealthy(),a}while(n);return s}async listErc1155Balances({chainId:e,address:r}){let n,s=[];do try{let a=await this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:r,pageSize:100,pageToken:n});s.push(...a.erc1155TokenBalances),n=a.nextPageToken;}catch(a){throw a instanceof B&&this.setGlacierToUnhealthy(),a}while(n);return s}async listNftBalances({chainId:e,address:r}){let s=(await Promise.allSettled([this.listErc721Balances({chainId:e.toString(),address:r}),this.listErc1155Balances({chainId:e.toString(),address:r})])).filter(a=>a.status==="fulfilled").flatMap(a=>a.value.map(o=>[`${o.address}-${o.tokenId}`,{address:o.address,description:o.metadata.description??"",logoUri:o.metadata.imageUri??"",logoSmall:dr(o.metadata.imageUri??""),name:o.metadata.name??"",symbol:o.metadata.symbol??"",tokenId:o.tokenId,tokenUri:o.tokenUri,collectionName:"Unkown",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:{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(s)}async listErc20Balances({chainId:e,address:r,currency:n,customTokens:s}){try{let a=[],o;do{let c=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:o});a.push(...ra(c.erc20TokenBalances,Number(e))),o=c.nextPageToken;}while(o);return [...ta(s),...a].reduce((c,i)=>({...c,[i.address.toLowerCase()]:i}),{})}catch(a){throw a instanceof B&&this.setGlacierToUnhealthy(),a}}async listTransactions({chainId:e,address:r,pageToken:n,pageSize:s}){try{return this.glacierSdk.evmTransactions.listTransactions({chainId:e,address:r,pageToken:n,pageSize:s})}catch(a){throw a instanceof B&&this.setGlacierToUnhealthy(),a}}},ta=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})),ra=(t,e)=>t.map(r=>{let n=new coreUtilsSdk.TokenUnit(r.balance,r.decimals,r.symbol),s=n.toDisplay(),a=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:a,balanceDisplayValue:s,balanceInCurrency:c,priceInCurrency:o,reputation:r.tokenReputation,type:vmModuleTypes.TokenType.ERC20}});var it=t=>{let e="";e+=`Domain
25
+ async function Re({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 zr=process.env.GLACIER_API_KEY,x=async t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:s,pollingInterval:a=2e3}=t,o=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:s},Xr(n,zr),new ethers.Network(r,e));return o.pollingInterval=a,o},Kr=["glacier-api.avax.network","proxy-api.avax.network"];function Xr(t,e){let r=new URL(t);if(e&&Kr.includes(r.hostname)){let n=r.searchParams;return n.set("token",e),r.search=n.toString(),r.toString()}return t}var Je={LOW:1n,MEDIUM:4n,HIGH:6n},Ye=500000000n;async function ft({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,caipId:s,proxyApiUrl:a}){let o=await x({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n});if(!a)throw rpcErrors.rpcErrors.internal("Proxy API URL is needed");let c=await o.getBlock("latest",!1);if(!c)throw rpcErrors.rpcErrors.internal("There is no block");let i=c.baseFeePerGas;if(!i)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let l=await Zr(a,s),p=new coreUtilsSdk.TokenUnit(l,0,""),m=new coreUtilsSdk.TokenUnit(i,0,""),u=BigInt("1000000000"),d=m.mul(p).add(u).toSubUnit(),h=Ye*Je.LOW,y=Ye*Je.MEDIUM,v=Ye*Je.HIGH;return {baseFee:d,low:{maxFeePerGas:d+h,maxPriorityFeePerGas:h},medium:{maxFeePerGas:d+y,maxPriorityFeePerGas:y},high:{maxFeePerGas:d+v,maxPriorityFeePerGas:v},isFixedFee:!1,displayDecimals:9}}async function Zr(t,e){if(!e)return 1.5;try{let n=await fetch(`${t}/gas/multiplier`);if(!n.ok)throw new Error(n.statusText);let s=await n.json();return s[e]??s.default}catch{return 1.5}}function j(t,e,r="tx"){return `${t}/${r}/${e}`}var ht=({tx:t,networkToken:e,chainId:r,explorerUrl:n,address:s})=>{let a=t.from.toLowerCase()===s.toLowerCase(),o=parseInt(t.timeStamp)*1e3,c=e.decimals,l=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol).toDisplay(),p=a?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,{from:m,to:u,gasPrice:d,gasUsed:h,hash:y}=t,v=j(n,y);return {isIncoming:!a,isOutgoing:a,isContractCall:tn(t),timestamp:o,hash:y,isSender:a,from:m,to:u,tokens:[{decimal:c.toString(),name:e.name,symbol:e.symbol,amount:l,type:vmModuleTypes.TokenType.NATIVE}],gasUsed:h,gasPrice:d,chainId:r.toString(),txType:p,explorerLink:v}};function tn(t){return t.input!=="0x"}function Tt({tx:t,address:e,explorerUrl:r,chainId:n}){let s=t.from.toLowerCase()===e.toLowerCase(),a=parseInt(t.timeStamp)*1e3,c=new coreUtilsSdk.TokenUnit(t.value,Number(t.tokenDecimal),t.tokenSymbol).toDisplay(),{from:i,to:l,gasPrice:p,gasUsed:m,hash:u,tokenDecimal:d,tokenName:h,tokenSymbol:y}=t,v=s?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,E=j(r,u);return {isIncoming:!s,isOutgoing:s,isContractCall:!1,timestamp:a,hash:u,isSender:s,from:i,to:l,tokens:[{decimal:d,name:h,symbol:y,type:vmModuleTypes.TokenType.ERC20,amount:c}],gasUsed:m,gasPrice:p,chainId:n.toString(),txType:v,explorerLink:E}}var kt=async({isTestnet:t,networkToken:e,explorerUrl:r,chainId:n,address:s,nextPageToken:a,offset:o})=>{let c=a?JSON.parse(a):void 0,i=c?.page||1,l=c?.queries||["normal","erc20"],p=(l.includes("normal")?await coreEtherscanSdk.getNormalTxs(s,!t,{page:i,offset:o}):[]).map(y=>ht({tx:y,chainId:n,networkToken:e,explorerUrl:r,address:s})),m=(l.includes("erc20")?await coreEtherscanSdk.getErc20Txs(s,!t,void 0,{page:i,offset:o}):[]).map(y=>Tt({tx:y,address:s,explorerUrl:r,chainId:n})),u=m.map(y=>y.hash),d=p.filter(y=>!u.includes(y.hash)),h={queries:[],page:i+1};return p.length&&h.queries.push("normal"),m.length&&h.queries.push("erc20"),{transactions:[...d,...m],nextPageToken:h.queries.length?JSON.stringify(h):""}};var vt=t=>t===1||t===5||t===4||t===11155111;var Rt=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},s,a)=>{let o=!e&&!r&&!n,c=cn(t.method?.methodName),i=s.toLowerCase(),l=c.toLowerCase().includes("swap"),p=o&&t.from.address.toLowerCase()===i,m=o&&t.to.address.toLowerCase()===i,u=c==="Market Buy Orders With Eth"||c==="Buy NFT",d=c==="Approve",h=c.toLowerCase().includes("transfer"),y=c.toLowerCase().includes("airdrop"),v=c.toLowerCase().includes("unwrap"),E=c==="Fill Order",T=!!a[0]&&bt(a[0].type)&&a[0].from?.address.toLowerCase()===i,k=!!a[0]&&bt(a[0].type)&&a[0].to?.address.toLowerCase()===i;return l?vmModuleTypes.TransactionType.SWAP:p?vmModuleTypes.TransactionType.SEND:m?vmModuleTypes.TransactionType.RECEIVE:u?vmModuleTypes.TransactionType.NFT_BUY:d?vmModuleTypes.TransactionType.APPROVE:T?vmModuleTypes.TransactionType.NFT_SEND:k?vmModuleTypes.TransactionType.NFT_RECEIVE:h?vmModuleTypes.TransactionType.TRANSFER:y?vmModuleTypes.TransactionType.AIRDROP:v?vmModuleTypes.TransactionType.UNWRAP:E?vmModuleTypes.TransactionType.FILL_ORDER:vmModuleTypes.TransactionType.UNKNOWN};function bt(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}var cn=(t="")=>t.includes("(")?sn__default.default(t.split("(",1)[0]):t;var St=(t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},s)=>{let a=t===vmModuleTypes.TransactionType.TRANSFER,o=t===vmModuleTypes.TransactionType.SEND,c=t===vmModuleTypes.TransactionType.RECEIVE,i=e?.from?.address,l=e?.to?.address;a&&r&&r[0]&&(i=r[0].from.address,l=r[0].to.address),a&&n&&n[0]&&(i=n[0].from.address,l=n[0].to.address);let p=o||a&&i.toLowerCase()===s.toLowerCase(),m=c||a&&l.toLowerCase()===s.toLowerCase();return {isOutgoing:p,isIncoming:m,isSender:i===s,from:i,to:l}};async function It(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var pn="https://ipfs.io";function q(t,e=pn){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}async function mn(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}async function Pt(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 mn(q(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}var dn="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function xt(t,e="256"){let r=q(t);return `${dn}/width=${e},fit/${r}`}var Ct=async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},s)=>{let a=[];if(t.value!=="0"){let o=s.decimals,i=new coreUtilsSdk.TokenUnit(t.value,s.decimals,s.symbol).toDisplay();a.push({decimal:o.toString(),name:s.name,symbol:s.symbol,amount:i,from:t.from,to:t.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(o=>{let c=o.erc20Token.decimals,l=new coreUtilsSdk.TokenUnit(o.value,c,o.erc20Token.symbol).toDisplay();a.push({decimal:c.toString(),name:o.erc20Token.name,symbol:o.erc20Token.symbol,amount:l,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,i=await wt(c.tokenUri,c.metadata.imageUri);a.push({name:o.erc721Token.name,symbol:o.erc721Token.symbol,amount:"1",imageUri:i,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,i=await wt(c.tokenUri,c.metadata.imageUri);a.push({name:o.erc1155Token.metadata.name??"",symbol:o.erc1155Token.metadata.symbol??"",amount:o.value,imageUri:i,from:o.from,to:o.to,collectableTokenId:o.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),a},wt=async(t,e)=>{if(e)return e.startsWith("ipfs://")?q(e):e;{let[r,n]=await It(Pt(t));return n?"":r.image?xt(r.image):""}};var Nt=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER],H=(o=>(o.TOTAL_SUPPLY="totalSupply",o.BALANCE_OF="balanceOf",o.TRANSFER="transfer",o.TRANSFER_FROM="transferFrom",o.APPROVE="approve",o.ALLOWANCE="allowance",o))(H||{});var _t=async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:s})=>{let a=await Ct(t,r),o=Rt(t,s,a),{isOutgoing:c,isIncoming:i,isSender:l,from:p,to:m}=St(o,t,s),{blockTimestamp:u,txHash:d,gasPrice:h,gasUsed:y}=t.nativeTransaction,v=j(e,d);return {isContractCall:!Nt.includes(o),isIncoming:i,isOutgoing:c,isSender:l,timestamp:u*1e3,hash:d,from:p,to:m,tokens:a,gasPrice:h,gasUsed:y,chainId:n.toString(),txType:o,explorerLink:v}};var Bt=async({chainId:t,explorerUrl:e,networkToken:r,address:n,nextPageToken:s,offset:a,glacierService:o})=>{try{let c=await o.listTransactions({chainId:t.toString(),address:n,pageToken:s,pageSize:a});return {transactions:(await Promise.all(c.transactions.filter(p=>p.nativeTransaction.txStatus==="1").map(p=>_t({transactions:p,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(m=>m)))).filter(p=>p.tokens.find(m=>Number(m.amount)!==0)),nextPageToken:c.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var Dt=async({chainId:t,isTestnet:e,networkToken:r,explorerUrl:n,address:s,nextPageToken:a,offset:o,glacierService:c})=>vt(t)?kt({isTestnet:e,networkToken:r,explorerUrl:n,chainId:t,address:s,nextPageToken:a,offset:o}):c.isHealthy()?Bt({networkToken:r,explorerUrl:n,chainId:t,address:s,nextPageToken:a,offset:o,glacierService:c}):{transactions:[],nextPageToken:""};var Ut={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 Ie=async({from:t,provider:e})=>e.getTransactionCount(t);var Pe=t=>{if(t.data)try{let r=new ethers.Interface(Wt__default.default.abi).parseTransaction({data:t.data,value:t.value}),n=r?.name??r?.fragment?.name;return n&&hn(n)?n:void 0}catch{return}};function hn(t){return Object.values(H).includes(t)}function Gt(t,e,r){return new ethers.ethers.Contract(t,Wt__default.default.abi).interface.encodeFunctionData("approve",[e,r])}var xe=new Map,Ft=(t,e,r)=>(xe.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:s,approvalLimit:a})=>{let o=xe.get(t);if(!o)throw rpcErrors.rpcErrors.resourceNotFound();let{signingData:c,displayData:i}=o,l={...c,data:{...c.data,maxFeePerGas:n??c.data.maxFeePerGas,maxPriorityFeePerGas:s??c.data.maxPriorityFeePerGas}},p={...i};if(typeof a=="string"){if(!a.startsWith("0x"))throw rpcErrors.rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let u=i.tokenApprovals;kn(u),vn(c.data.data);let d=u.approvals[0];l.data.data=Gt(d.token.address,d.spenderAddress,a),p.tokenApprovals={approvals:[{...d,value:a}],isEditable:!0};}let m={signingData:l,displayData:p};return xe.set(t,m),m},cleanup:()=>xe.delete(t)});function kn(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 vn(t){if((!t||t==="0x"?null:Pe({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}var Mt=async({transactionParams:{from:t,to:e,data:r,value:n},provider:s})=>{let a=await s.getTransactionCount(t);return Number(await s.estimateGas({from:t,to:e,nonce:a,data:r,value:n}))};var Xe=(t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),Ce=(t,e)=>({label:t,value:e,type:vmModuleTypes.DetailItemType.LINK}),J=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e});var Ze=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.DATA,value:e});var Ne=(t,e,r,{isSimulationSuccessful:n,balanceChange:s,tokenApprovals:a,alert:o})=>{let{dappInfo:c}=t,i=Pe(r),l="Approve Transaction";i==="approve"&&(l="Token Spend Approval");let p=[Ce("Website",c),J("From",r.from)];r.to&&p.push(J("To",r.to)),i&&p.push(Xe("Type",i)),r.data&&p.push(Ze("Data",r.data));let m={title:l,network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:[{title:"Transaction Details",items:p}],networkFeeSelector:!0,alert:o,balanceChange:s,tokenApprovals:a,isSimulationSuccessful:n},u={type:vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,account:r.from,data:{type:2,nonce:Number(r.nonce),gasLimit:Number(r.gas),to:r.to,from:r.from,data:r.data,value:r.value,chainId:r.chainId??e.chainId}};return {displayData:m,signingData:u}};var et="DUMMY_API_KEY",Vt=async({proxyApiUrl:t,chainId:e,params:r,domain:n,withGasEstimation:s})=>{let a=new Qe__default.default({baseURL:t+"/proxy/blockaid/",apiKey:et}),o=["validation","simulation"];return s&&o.push("gas_estimation"),a.evm.transactionBulk.scan({chain:e.toString(),options:o,data:r,metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}})},Lt=async({proxyApiUrl:t,chainId:e,params:r,domain:n})=>new Qe__default.default({baseURL:t+"/proxy/blockaid/",apiKey:et}).evm.transaction.scan({account_address:r.from,chain:e.toString(),options:["validation","simulation"],data:{from:r.from,to:r.to,data:r.data,value:r.value,gas:r.gas,gas_price:r.gasPrice},metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}}),Ht=async({proxyApiUrl:t,chainId:e,accountAddress:r,data:n,domain:s})=>new Qe__default.default({baseURL:t+"/proxy/blockaid/",apiKey:et}).evm.jsonRpc.scan({chain:e.toString(),options:["validation","simulation"],account_address:r,data:n,metadata:s&&s.length>0?{domain:s}:{non_dapp:!0}});var jt=async(t,e,r)=>{if(!t.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.ethers.Contract(t.to,Wt__default.default.abi,r),s=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),a=Ot__default.default(s[0]),o=Ot__default.default(s[1]),c=parseInt(s[2]),i={type:vmModuleTypes.TokenType.ERC20,name:a,chainId:e,symbol:o,decimals:c,address:t.to,contractType:"ERC-20"},l=new ethers.ethers.Interface(Wt__default.default.abi),p=l.getFunction(t.data.slice(0,10)),m=l.decodeFunctionData(t.data.slice(0,10),t.data);if(p?.name==="transfer")return {balanceChange:{outs:[{items:[{displayValue:new coreUtilsSdk.TokenUnit(m.amount,i.decimals,i.symbol).toDisplay(),usdPrice:void 0}],token:i}],ins:[]}};if(p?.name==="approve")return {tokenApprovals:{isEditable:!0,approvals:[{token:i,spenderAddress:m.spender,value:m.amount}]}}}catch(n){console.error("parseErc20Tx error",n);}return {tokenApprovals:void 0,balanceChange:void 0}};function O(t){return !("type"in t)}function _e(t){return t.type===vmModuleTypes.TokenType.ERC20}function qt(t){return typeof t.to=="string"}function Jt(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}function In(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}function Pn(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}function tt(t){return In(t)?t.ins.length===0&&t.outs.length===0:Pn(t)?t.approvals.length===0:!1}var U={[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 is malicious, do not proceed.",actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};var zt=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:s,proxyApiUrl:a})=>{let o;try{o=await Lt({proxyApiUrl:a,chainId:n,params:r,domain:e});}catch(c){console.error("simulateTransaction error",c);}return rt({rpcMethod:t,params:r,chainId:n,provider:s,simulationResult:o})},rt=async({rpcMethod:t,params:e,chainId:r,provider:n,simulationResult:s})=>{let a,o,c,i=!1,l;if(s){let{validation:p,simulation:m,gas_estimation:u}=s;!p||p.result_type==="Error"||p.result_type==="Warning"?a=U[vmModuleTypes.AlertType.WARNING]:p.result_type==="Malicious"&&(a=U[vmModuleTypes.AlertType.DANGER]),m?.status==="Success"&&(i=!0,c=Kt(t,m.account_summary.exposures),o=Xt(m.account_summary.assets_diffs)),u?.status==="Success"&&(l=Number(u.estimate));}if(!i&&qt(e)){let p=await jt(e,r,n);o=p.balanceChange,c=p.tokenApprovals;}return {alert:a,balanceChange:o,tokenApprovals:c,isSimulationSuccessful:i,estimatedGasLimit:l}},Kt=(t,e)=>{let r=[];for(let s of e){let a=Zt(s.asset);if(a)for(let[o,c]of Object.entries(s.spenders))if(c.exposure.length===0)r.push({token:a,spenderAddress:o,logoUri:a.logoUri});else for(let i of c.exposure)"raw_value"in i?r.push({token:a,spenderAddress:o,value:i.raw_value,usdPrice:i.usd_price,logoUri:a.logoUri}):r.push({token:a,spenderAddress:o,logoUri:i.logo_url,usdPrice:i.usd_price});}return r.length===0?void 0:{isEditable:r.length===1&&r[0]?.token.type===vmModuleTypes.TokenType.ERC20&&t===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:r}},Xt=t=>{let e=Yt(t,"in"),r=Yt(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},Yt=(t,e)=>t.filter(r=>r[e].length>0).sort((r,n)=>r[e].length-n[e].length).map(r=>{let n=r.asset,s="address"in n?Zt(n):Nn(n);if(!s)return;let a=r[e].map(o=>{let c;if("value"in o&&o.value)if("decimals"in s){let i=coreUtilsSdk.numberToBN(o.value,s.decimals);c=coreUtilsSdk.balanceToDisplayValue(i,s.decimals);}else ethers.isHexString(o.value)&&(c=parseInt(o.value,16).toString());else "type"in s&&s.type===vmModuleTypes.TokenType.ERC721&&(c="1");return c?{displayValue:c,usdPrice:o.usd_price}:void 0}).filter(o=>o!==void 0);return {token:s,items:a}}).filter(r=>r!==void 0),Zt=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},Nn=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),Qt=async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:s,proxyApiUrl:a})=>{let o,c,i;try{let{validation:l,simulation:p}=await Ht({proxyApiUrl:a,chainId:n,accountAddress:r,data:s,domain:e});!l||l.result_type==="Error"||l.result_type==="Warning"?o=U[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"&&(o=U[vmModuleTypes.AlertType.DANGER]),p?.status==="Success"&&(i=Kt(t.method,p.account_summary.exposures),c=Xt(p.account_summary.assets_diffs));}catch(l){console.error("processJsonRpcSimulation error",l),o=U[vmModuleTypes.AlertType.WARNING];}return {alert:o,balanceChange:c,tokenApprovals:i}};var z=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())});var Bn=zod.z.tuple([z]),er=t=>Bn.safeParse(t);var De=async({provider:t,txHash:e,onTransactionConfirmed:r,onTransactionReverted:n,requestId:s})=>{try{if((await t.waitForTransaction(e))?.status===1)return r(e,s),!0}catch(a){console.error(a);}return n(e,s),!1};var Ue=async(t,e)=>"txHash"in e?e.txHash:await t.send("eth_sendRawTransaction",[e.signedData]);var tr=async({request:t,network:e,approvalController:r,proxyApiUrl:n})=>{let{params:s}=t,{data:a,error:o,success:c}=er(s);if(!c)return console.error("invalid params",o),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:o}})};let[i]=a,l=await x({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});if(!i.gas||Number(i.gas)<0)try{let E=await Mt({transactionParams:{from:i.from,to:i.to,data:i.data,value:i.value},provider:l});i.gas="0x"+E.toString(16);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate gas limit")}}if(!i.nonce)try{let E=await Ie({from:i.from,provider:l});i.nonce=String(E);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate nonce")}}let p=await zt({rpcMethod:t.method,proxyApiUrl:n,chainId:e.chainId,params:i,dAppUrl:t.dappInfo.url,provider:l}),{displayData:m,signingData:u}=Ne(t,e,i,p),{updateTx:d,cleanup:h}=Ft(t.requestId,u,m),y=await r.requestApproval({request:t,displayData:m,signingData:u,updateTx:d});if(h(),"error"in y)return {error:y.error};let v;try{v=await Ue(l,y);}catch(E){return {error:rpcErrors.rpcErrors.internal({message:"Unable to get transaction hash",data:{cause:E}})}}return De({provider:l,txHash:v,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,requestId:t.requestId}),{result:v}};async function rr(t,e){let r=t.map(async(a,o)=>({index:o,result:await e(a)})),s=(await Promise.allSettled(r)).filter(a=>a.status==="fulfilled").map(a=>a).find(a=>a.value.result);return s?t[s.value.index]:void 0}function K(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}async function X(t){return await Promise.allSettled(t).then(e=>e.reduce((r,n)=>{if(n.status==="fulfilled"){let s=n.value;s.status==="fulfilled"?r[s.id]=s.value:r[s.id]={error:s.reason};}return r},{}))}var nt=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=me.exponential()})=>{let s=0,a=0,o;for(;a<r;){a>0&&await Dn(s);try{let i=await t(a);if(e(i))return i}catch(i){o=i;}s=n(a),a++;}let c=o?`Max retry exceeded. ${o}`:"Max retry exceeded.";throw new Error(c)},me=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return r=>e*1e3}static constantMs(e){return r=>e}};function Dn(t){return new Promise(e=>setTimeout(e,t))}var at=t=>nt({operation:e=>t(e>0),maxRetries:2,backoffPolicy:me.constant(1),isSuccess:e=>e?.status?.error_code!==429});function nr(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function ot(t){let e,r=0;for(e=0;e<t.length;e++){let n=nr(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}async function Z(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 de=class{constructor(e){this.proxyApiUrl=e;}simplePrice(e){let r=new URLSearchParams(e);return Z([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(e){let{id:r,...n}=e,s=new URLSearchParams(n);return Z([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${s}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.SimplePriceResponseSchema)}};var ar=coreCoingeckoSdk.getBasicCoingeckoHttp(),G,Q,ee=class{constructor({storage:e,proxyApiUrl:r}){chunkTKL4UUHE_cjs.c(this,G,void 0);chunkTKL4UUHE_cjs.c(this,Q,void 0);chunkTKL4UUHE_cjs.a(this,"transformSimplePriceResponse",(e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(s=>{let a=e[s];n[s]={},r.forEach(o=>{n[s]={[o]:{price:a?.[o],change24:a?.[`${o}_24h_change`],vol24:a?.[`${o}_24h_vol`],marketCap:a?.[`${o}_market_cap`]}};});}),n});chunkTKL4UUHE_cjs.d(this,G,e),chunkTKL4UUHE_cjs.d(this,Q,r);}async getSimplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,a=`getSimplePrice-${e?`${ot(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkTKL4UUHE_cjs.b(this,G)?.get?.(a),n)return n;try{n=await at(o=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:o}));}catch{n=void 0;}return chunkTKL4UUHE_cjs.b(this,G)?.set?.(a,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let s,o=`getPricesWithMarketDataByAddresses-${`${ot(e)}-${r}-${n}`}`;if(s=chunkTKL4UUHE_cjs.b(this,G)?.get?.(o),s)return s;try{s=await at(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:c}));}catch{s=void 0;}return chunkTKL4UUHE_cjs.b(this,G)?.set?.(o,s),s}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:s=!1}){return s?new de(chunkTKL4UUHE_cjs.b(this,Q)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}):coreCoingeckoSdk.simpleTokenPrice(ar,{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:s=!1,change24:a=!1,lastUpdated:o=!1,useCoingeckoProxy:c=!1,shouldThrow:i=!0}){if(c){let l=await new de(chunkTKL4UUHE_cjs.b(this,Q)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:s,include_24hr_change:a,include_last_updated_at:o});return this.transformSimplePriceResponse(l,r)}return coreCoingeckoSdk.simplePrice(ar,{coinIds:e,currencies:r,marketCap:n,vol24:s,change24:a,lastUpdated:o,shouldThrow:i})}};G=new WeakMap,Q=new WeakMap;var Wn="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",jn="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",or=zod.object({date:zod.string(),usd:zod.record(zod.number())}),Fe=async()=>{try{return await Z([Wn],or)}catch{return await Z([jn],or)}};var st=({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 P,re,$,fe,Me=class{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:s}){chunkTKL4UUHE_cjs.c(this,P,void 0);chunkTKL4UUHE_cjs.c(this,re,void 0);chunkTKL4UUHE_cjs.c(this,$,void 0);chunkTKL4UUHE_cjs.c(this,fe,void 0);chunkTKL4UUHE_cjs.d(this,P,e),chunkTKL4UUHE_cjs.d(this,re,r),chunkTKL4UUHE_cjs.d(this,$,n),chunkTKL4UUHE_cjs.d(this,fe,s);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let s=await x({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,P).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,P).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,P).utilityAddresses?.multicall}),a=chunkTKL4UUHE_cjs.b(this,P).pricingProviders?.coingecko.nativeTokenId,o=chunkTKL4UUHE_cjs.b(this,P).networkToken,c=new ee({storage:chunkTKL4UUHE_cjs.b(this,re),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,$)}),i=a?await c.getSimplePrice({coinIds:[a],currencies:[n]}):{},l=i?.[a??""]?.[n]?.price??void 0,p=i?.[a??""]?.[n]?.marketCap??void 0,m=i?.[a??""]?.[n]?.vol24??void 0,u=i?.[a??""]?.[n]?.change24??void 0,d=await s.getBalance(r),h=new coreUtilsSdk.TokenUnit(d,o.decimals,o.symbol),y=l!==void 0?h.mul(l):void 0;return {...o,coingeckoId:a??"",type:vmModuleTypes.TokenType.NATIVE,balance:d,balanceDisplayValue:h.toDisplay(),balanceInCurrency:y?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:y?.toDisplay({fixedDp:2}),priceInCurrency:l,marketCap:p,vol24:m,change24:u}}async listErc20Balances({chainId:e,address:r,currency:n}){let s=await x({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,P).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,P).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,P).utilityAddresses?.multicall}),a=chunkTKL4UUHE_cjs.b(this,P).pricingProviders?.coingecko.assetPlatformId,o=chunkTKL4UUHE_cjs.b(this,P).pricingProviders?.coingecko.nativeTokenId,c=await Re({chainId:Number(e),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,$)}),i=c.map(E=>E.address),l=[...c,...chunkTKL4UUHE_cjs.b(this,fe)].filter(_e),p=async E=>{let S=await new ethers.ethers.Contract(E.address,Wt__default.default.abi,s).balanceOf?.(r)||0n;return {...E,balance:S}},m=l.map(E=>K(p(E),E.address)),u=await X(m),d=new ee({storage:chunkTKL4UUHE_cjs.b(this,re),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,$)}),h=a&&await d.getPricesByAddresses(i,a,n)||{},y=Object.keys(u),v={};for(let E=0;E<y.length;E++){let T=y[E];if(T===void 0)continue;let k=u[T];if(k===void 0||"error"in k){v[T]={error:`rpcService:getTokenWithBalance failed: ${k?.error??"unknown error"}`};continue}let S=h?.[o??""]?.[n]?.price??void 0,Ee=h?.[o??""]?.[n]?.marketCap??void 0,I=h?.[o??""]?.[n]?.vol24??void 0,je=h?.[o??""]?.[n]?.change24??void 0,be=new coreUtilsSdk.TokenUnit(k.balance,k.decimals,k.symbol),le=S!==void 0?be.mul(S):void 0;v[k.address.toLowerCase()]={...k,type:vmModuleTypes.TokenType.ERC20,balance:k.balance,balanceDisplayValue:be.toDisplay(),balanceInCurrency:le?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:le?.toDisplay({fixedDp:2}),priceInCurrency:S,marketCap:Ee,change24:je,vol24:I,reputation:null};}return v}async listNftBalances(){return {}}};P=new WeakMap,re=new WeakMap,$=new WeakMap,fe=new WeakMap;var cr=async({addresses:t,currency:e,network:r,proxyApiUrl:n,tokenTypes:s=[vmModuleTypes.TokenType.NATIVE,vmModuleTypes.TokenType.ERC20,vmModuleTypes.TokenType.ERC721,vmModuleTypes.TokenType.ERC1155],customTokens:a=[],storage:o,balanceServices:c=[]})=>{let i=r.chainId,l=[...c,new Me({network:r,storage:o,proxyApiUrl:n,customTokens:a})],p=await rr(l,u=>u.isNetworkSupported(r.chainId)),m={};if(p){let u=[],d=[],h=[];t.forEach(T=>{s.includes(vmModuleTypes.TokenType.NATIVE)&&u.push(K(p.getNativeBalance({address:T,currency:e.toUpperCase(),chainId:i}),T)),s.includes(vmModuleTypes.TokenType.ERC20)&&d.push(K(p.listErc20Balances({customTokens:a.filter(_e),currency:e.toUpperCase(),chainId:i,address:T,pageSize:100}),T)),(s.includes(vmModuleTypes.TokenType.ERC721)||s.includes(vmModuleTypes.TokenType.ERC1155))&&h.push(K(p.listNftBalances({chainId:i,address:T}),T));});let y=await X(u),v=await X(d),E=await X(h);Object.keys(y).forEach(T=>{let k=y[T];if(!k||"error"in k){m[T]={error:`getNativeBalance failed: ${k?.error??"unknown error"}`};return}let S=k.symbol;m[T]={[S]:k};}),Object.keys(v).forEach(T=>{let k=v[T];!k||"error"in k&&typeof k.error!="string"?m[T]={...m[T],error:"listErc20Balances failed: unknown error"}:"error"in k&&typeof k.error=="string"?m[T]={...m[T],error:`listErc20Balances failed: ${k.error}`}:m[T]={...m[T],...k};}),Object.keys(E).forEach(T=>{let k=E[T];!k||"error"in k&&typeof k.error!="string"?m[T]={...m[T],error:"listNftBalances failed: unknown error"}:"error"in k&&typeof k.error=="string"?m[T]={...m[T],error:`listNftBalances failed: ${k.error}`}:m[T]={...m[T],...k};});}else t.forEach(u=>{m[u]={error:"unsupported network"};});return m};var Yn={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},zn={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},pr=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return Yn;case vmModuleTypes.Environment.DEV:return zn}};var Xn="https://ipfs.io";function mr(t,e=Xn){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}var Zn="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function dr(t,e="256"){let r=mr(t);return `${Zn}/width=${e},fit/${r}`}var B=class extends Error{constructor(){super(...arguments);chunkTKL4UUHE_cjs.a(this,"message","Glacier is unhealthy. Try again later.");}},Ve=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}),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),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(s){throw s instanceof B&&this.setGlacierToUnhealthy(),s}}async getTokenDetails({address:e,chainId:r,tokenId:n}){try{return this.glacierSdk.nfTs.getTokenDetails({address:e,chainId:r,tokenId:n})}catch(s){throw s instanceof B&&this.setGlacierToUnhealthy(),s}}async getNativeBalance({chainId:e,address:r,currency:n,coingeckoId:s}){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),i=o.price?.value,l=i!==void 0?c.mul(i):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:l?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:l?.toDisplay({fixedDp:2}),priceInCurrency:i,coingeckoId:s??""}}catch(a){throw a instanceof B&&this.setGlacierToUnhealthy(),a}}async listErc721Balances({chainId:e,address:r}){let n,s=[];do try{let a=await this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:r,pageSize:100,pageToken:n});s.push(...a.erc721TokenBalances),n=a.nextPageToken;}catch(a){throw a instanceof B&&this.setGlacierToUnhealthy(),a}while(n);return s}async listErc1155Balances({chainId:e,address:r}){let n,s=[];do try{let a=await this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:r,pageSize:100,pageToken:n});s.push(...a.erc1155TokenBalances),n=a.nextPageToken;}catch(a){throw a instanceof B&&this.setGlacierToUnhealthy(),a}while(n);return s}async listNftBalances({chainId:e,address:r}){let s=(await Promise.allSettled([this.listErc721Balances({chainId:e.toString(),address:r}),this.listErc1155Balances({chainId:e.toString(),address:r})])).filter(a=>a.status==="fulfilled").flatMap(a=>a.value.map(o=>[`${o.address}-${o.tokenId}`,{address:o.address,description:o.metadata.description??"",logoUri:o.metadata.imageUri??"",logoSmall:dr(o.metadata.imageUri??""),name:o.metadata.name??"",symbol:o.metadata.symbol??"",tokenId:o.tokenId,tokenUri:o.tokenUri,collectionName:"Unkown",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:{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(s)}async listErc20Balances({chainId:e,address:r,currency:n,customTokens:s}){try{let a=[],o;do{let c=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:o});a.push(...ra(c.erc20TokenBalances,Number(e))),o=c.nextPageToken;}while(o);return [...ta(s),...a].reduce((c,i)=>({...c,[i.address.toLowerCase()]:i}),{})}catch(a){throw a instanceof B&&this.setGlacierToUnhealthy(),a}}async listTransactions({chainId:e,address:r,pageToken:n,pageSize:s}){try{return this.glacierSdk.evmTransactions.listTransactions({chainId:e,address:r,pageToken:n,pageSize:s})}catch(a){throw a instanceof B&&this.setGlacierToUnhealthy(),a}}},ta=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})),ra=(t,e)=>t.map(r=>{let n=new coreUtilsSdk.TokenUnit(r.balance,r.decimals,r.symbol),s=n.toDisplay(),a=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:a,balanceDisplayValue:s,balanceInCurrency:c,priceInCurrency:o,reputation:r.tokenReputation,type:vmModuleTypes.TokenType.ERC20}});var it=t=>{let e="";e+=`Domain
26
26
  `;for(let r in t.domain)e+=` ${r}: ${W(String(t.domain[r]))}
27
27
  `;e+=`
28
28
  Message