@avalabs/evm-module 1.9.2 → 1.9.4

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,30 +23,30 @@ var ir__default = /*#__PURE__*/_interopDefault(ir);
23
23
  var ut__default = /*#__PURE__*/_interopDefault(ut);
24
24
  var or__default = /*#__PURE__*/_interopDefault(or);
25
25
 
26
- async function we({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 nt=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=de.exponential()})=>{let o=0,a=0,s;for(;a<r;){a>0&&await pn(o);try{let c=await t(a);if(e(c))return c}catch(c){s=c;}o=n(a),a++;}let i=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(i)},de=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return r=>e*1e3}static constantMs(e){return r=>e}};function pn(t){return new Promise(e=>setTimeout(e,t))}var at=t=>nt({operation:e=>t(e>0),maxRetries:2,backoffPolicy:de.constant(1),isSuccess:e=>e?.status?.error_code!==429});function Rt(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=Rt(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}async function _(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 ue=class{constructor(e){this.proxyApiUrl=e;}simplePrice(e){let r=new URLSearchParams(e);return _([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(e){let{id:r,...n}=e,o=new URLSearchParams(n);return _([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${o}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}};var It=coreCoingeckoSdk.getBasicCoingeckoHttp(),M,J,Y=class{constructor({storage:e,proxyApiUrl:r}){chunkTKL4UUHE_cjs.c(this,M,void 0);chunkTKL4UUHE_cjs.c(this,J,void 0);chunkTKL4UUHE_cjs.a(this,"transformSimplePriceResponse",(e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(o=>{let a=e[o];n[o]={},r.forEach(s=>{n[o]={[s]:{price:a?.[s],change24:a?.[`${s}_24h_change`],vol24:a?.[`${s}_24h_vol`],marketCap:a?.[`${s}_market_cap`]}};});}),n});chunkTKL4UUHE_cjs.d(this,M,e),chunkTKL4UUHE_cjs.d(this,J,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,M)?.get?.(a),n)return n;try{n=await at(s=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{n=void 0;}return chunkTKL4UUHE_cjs.b(this,M)?.set?.(a,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let o,s=`getPricesWithMarketDataByAddresses-${`${ot(e)}-${r}-${n}`}`;if(o=chunkTKL4UUHE_cjs.b(this,M)?.get?.(s),o)return o;try{o=await at(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:i}));}catch(i){console.error(i),o=void 0;}return chunkTKL4UUHE_cjs.b(this,M)?.set?.(s,o),o}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:o=!1}){if(o){let a=await new ue(chunkTKL4UUHE_cjs.b(this,J)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(a,[n])}return coreCoingeckoSdk.simpleTokenPrice(It,{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:o=!1,change24:a=!1,lastUpdated:s=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await new ue(chunkTKL4UUHE_cjs.b(this,J)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:o,include_24hr_change:a,include_last_updated_at:s});return this.transformSimplePriceResponse(l,r)}return coreCoingeckoSdk.simplePrice(It,{coinIds:e,currencies:r,marketCap:n,vol24:o,change24:a,lastUpdated:s,shouldThrow:c})}};M=new WeakMap,J=new WeakMap;var Tn="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",kn="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",xt=zod.object({date:zod.string(),usd:zod.record(zod.number())}),Ce=async()=>{try{return await _([Tn],xt)}catch{return await _([kn],xt)}};var ye=(t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),Ne=(t,e)=>({label:t,value:e,type:vmModuleTypes.DetailItemType.LINK}),z=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e});var st=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.DATA,value:e});var it=({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 At=process.env.GLACIER_API_KEY;var ge=()=>At;var vn={rltoken:ge()},he=class extends glacierSdk.FetchHttpRequest{constructor(e){super(e);}request(e){let r={...vn,...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:o,pollingInterval:a=2e3}=t,s=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:o},Sn(n),new ethers.Network(r,e));return s.pollingInterval=a,s},Rn=["glacier-api.avax.network","proxy-api.avax.network"];function Sn(t){let e=new URL(t),r=ge();if(r&&Rn.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}var lt={LOW:1n,MEDIUM:4n,HIGH:6n},pt=500000000n,In=t=>t===coreChainsSdk.ChainId.AVALANCHE_TESTNET_ID||t===coreChainsSdk.ChainId.AVALANCHE_MAINNET_ID;async function Dt({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,caipId:o,proxyApiUrl:a}){let s=await w({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n});if(!a)throw rpcErrors.rpcErrors.internal("Proxy API URL is needed");if(In(t))try{let T=await xn(s);return {...T,baseFee:T.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 An(a,o),p=new coreUtilsSdk.TokenUnit(l,0,""),m=new coreUtilsSdk.TokenUnit(c,0,""),d=BigInt("1000000000"),u=m.mul(p).add(d).toSubUnit(),y=pt*lt.LOW,g=pt*lt.MEDIUM,v=pt*lt.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 xn(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 An(t,e){if(!e)return 1.5;try{let n=await fetch(`${t}/gas/multiplier`);if(!n.ok)throw new Error(n.statusText);let o=await n.json();return o[e]??o.default}catch{return 1.5}}function X(t,e,r="tx"){return `${t}/${r}/${e}`}var Bt=({tx:t,networkToken:e,chainId:r,explorerUrl:n,address:o})=>{let a=t.from.toLowerCase()===o.toLowerCase(),s=parseInt(t.timeStamp)*1e3,i=e.decimals,l=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol).toDisplay(),p=a?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,{from:m,to:d,gasPrice:u,gasUsed:y,hash:g}=t,v=X(n,g);return {isIncoming:!a,isOutgoing:a,isContractCall:Dn(t),timestamp:s,hash:g,isSender:a,from:m,to:d,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 Dn(t){return t.input!=="0x"}function Ut({tx:t,address:e,explorerUrl:r,chainId:n}){let o=t.from.toLowerCase()===e.toLowerCase(),a=parseInt(t.timeStamp)*1e3,i=new coreUtilsSdk.TokenUnit(t.value,Number(t.tokenDecimal),t.tokenSymbol).toDisplay(),{from:c,to:l,gasPrice:p,gasUsed:m,hash:d,tokenDecimal:u,tokenName:y,tokenSymbol:g}=t,v=o?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,T=X(r,d);return {isIncoming:!o,isOutgoing:o,isContractCall:!1,timestamp:a,hash:d,isSender:o,from:c,to:l,tokens:[{decimal:u,name:y,symbol:g,type:vmModuleTypes.TokenType.ERC20,amount:i}],gasUsed:m,gasPrice:p,chainId:n.toString(),txType:v,explorerLink:T}}var Gt=async({isTestnet:t,networkToken:e,explorerUrl:r,chainId:n,address:o,nextPageToken:a,offset:s})=>{let i=a?JSON.parse(a):void 0,c=i?.page||1,l=i?.queries||["normal","erc20"],p=(l.includes("normal")?await coreEtherscanSdk.getNormalTxs(o,!t,{page:c,offset:s}):[]).map(g=>Bt({tx:g,chainId:n,networkToken:e,explorerUrl:r,address:o})),m=(l.includes("erc20")?await coreEtherscanSdk.getErc20Txs(o,!t,void 0,{page:c,offset:s}):[]).map(g=>Ut({tx:g,address:o,explorerUrl:r,chainId:n})),d=m.map(g=>g.hash),u=p.filter(g=>!d.includes(g.hash)),y={queries:[],page:c+1};return p.length&&y.queries.push("normal"),m.length&&y.queries.push("erc20"),{transactions:[...u,...m],nextPageToken:y.queries.length?JSON.stringify(y):""}};var Ft=t=>t===1||t===5||t===4||t===11155111;var Vt=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},o,a)=>{let s=!e&&!r&&!n,i=Fn(t.method?.methodName),c=o.toLowerCase(),l=i.toLowerCase().includes("swap"),p=s&&t.from.address.toLowerCase()===c,m=s&&t.to.address.toLowerCase()===c,d=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"),T=i==="Fill Order",E=!!a[0]&&Lt(a[0].type)&&a[0].from?.address.toLowerCase()===c,k=!!a[0]&&Lt(a[0].type)&&a[0].to?.address.toLowerCase()===c;return l?vmModuleTypes.TransactionType.SWAP:p?vmModuleTypes.TransactionType.SEND:m?vmModuleTypes.TransactionType.RECEIVE:d?vmModuleTypes.TransactionType.NFT_BUY:u?vmModuleTypes.TransactionType.APPROVE:E?vmModuleTypes.TransactionType.NFT_SEND:k?vmModuleTypes.TransactionType.NFT_RECEIVE:y?vmModuleTypes.TransactionType.TRANSFER:g?vmModuleTypes.TransactionType.AIRDROP:v?vmModuleTypes.TransactionType.UNWRAP:T?vmModuleTypes.TransactionType.FILL_ORDER:vmModuleTypes.TransactionType.UNKNOWN};function Lt(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}var Fn=(t="")=>t.includes("(")?Gn__default.default(t.split("(",1)[0]):t;var Ht=(t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},o)=>{let a=t===vmModuleTypes.TransactionType.TRANSFER,s=t===vmModuleTypes.TransactionType.SEND,i=t===vmModuleTypes.TransactionType.RECEIVE,c=e?.from?.address,l=e?.to?.address;a&&r&&r[0]&&(c=r[0].from.address,l=r[0].to.address),a&&n&&n[0]&&(c=n[0].from.address,l=n[0].to.address);let p=s||a&&c.toLowerCase()===o.toLowerCase(),m=i||a&&l.toLowerCase()===o.toLowerCase();return {isOutgoing:p,isIncoming:m,isSender:c===o,from:c,to:l}};async function Ot(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var Ln="https://ipfs.io";function Z(t,e=Ln){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}async function Vn(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}async function $t(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 Vn(Z(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}var Hn="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Wt(t,e="256"){let r=Z(t);return `${Hn}/width=${e},fit/${r}`}var Jt=async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},o)=>{let a=[];if(t.value!=="0"){let s=o.decimals,c=new coreUtilsSdk.TokenUnit(t.value,o.decimals,o.symbol).toDisplay();a.push({decimal:s.toString(),name:o.name,symbol:o.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();a.push({decimal:i.toString(),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 jt(i.tokenUri,i.metadata.imageUri);a.push({name:s.erc721Token.name,symbol:s.erc721Token.symbol,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 jt(i.tokenUri,i.metadata.imageUri);a.push({name:s.erc1155Token.metadata.name??"",symbol:s.erc1155Token.metadata.symbol??"",amount:s.value,imageUri:c,from:s.from,to:s.to,collectableTokenId:s.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),a},jt=async(t,e)=>{if(e)return e.startsWith("ipfs://")?Z(e):e;{let[r,n]=await Ot($t(t));return n?"":r.image?Wt(r.image):""}};var Yt=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER],$=(s=>(s.TOTAL_SUPPLY="totalSupply",s.BALANCE_OF="balanceOf",s.TRANSFER="transfer",s.TRANSFER_FROM="transferFrom",s.APPROVE="approve",s.ALLOWANCE="allowance",s))($||{});var zt=async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:o})=>{let a=await Jt(t,r),s=Vt(t,o,a),{isOutgoing:i,isIncoming:c,isSender:l,from:p,to:m}=Ht(s,t,o),{blockTimestamp:d,txHash:u,gasPrice:y,gasUsed:g}=t.nativeTransaction,v=X(e,u);return {isContractCall:!Yt.includes(s),isIncoming:c,isOutgoing:i,isSender:l,timestamp:d*1e3,hash:u,from:p,to:m,tokens:a,gasPrice:y,gasUsed:g,chainId:n.toString(),txType:s,explorerLink:v}};var Kt=async({chainId:t,explorerUrl:e,networkToken:r,address:n,nextPageToken:o,offset:a,glacierService:s})=>{try{let i=await s.listTransactions({chainId:t.toString(),address:n,pageToken:o,pageSize:a});return {transactions:(await Promise.all(i.transactions.filter(p=>p.nativeTransaction.txStatus==="1").map(p=>zt({transactions:p,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(m=>m)))).filter(p=>p.tokens.find(m=>Number(m.amount)!==0)),nextPageToken:i.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var Xt=async({chainId:t,isTestnet:e,networkToken:r,explorerUrl:n,address:o,nextPageToken:a,offset:s,glacierService:i})=>Ft(t)?Gt({isTestnet:e,networkToken:r,explorerUrl:n,chainId:t,address:o,nextPageToken:a,offset:s}):i.isHealthy()?Kt({networkToken:r,explorerUrl:n,chainId:t,address:o,nextPageToken:a,offset:s,glacierService:i}):{transactions:[],nextPageToken:""};var Zt={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 _e=async({from:t,provider:e})=>e.getTransactionCount(t);var Ue=t=>{if(t.data)try{let r=new ethers.Interface(ir__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($).includes(t)}function Qt(t,e,r){return new ethers.ethers.Contract(t,ir__default.default.abi).interface.encodeFunctionData("approve",[e,r])}var Ge=new Map,er=(t,e,r)=>(Ge.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:o,approvalLimit:a})=>{let s=Ge.get(t);if(!s)throw rpcErrors.rpcErrors.resourceNotFound();let{signingData:i,displayData:c}=s,l={...i,data:{...i.data,maxFeePerGas:n??i.data.maxFeePerGas,maxPriorityFeePerGas:o??i.data.maxPriorityFeePerGas}},p={...c};if(typeof a=="string"){if(!a.startsWith("0x"))throw rpcErrors.rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let d=c.tokenApprovals;Yn(d),zn(i.data.data);let u=d.approvals[0];l.data.data=Qt(u.token.address,u.spenderAddress,a),p.tokenApprovals={approvals:[{...u,value:a}],isEditable:!0};}let m={signingData:l,displayData:p};return Ge.set(t,m),m},cleanup:()=>Ge.delete(t)});function Yn(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 zn(t){if((!t||t==="0x"?null:Ue({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}var tr=async({transactionParams:{from:t,to:e,data:r,value:n,accessList:o},provider:a})=>{let s=await a.getTransactionCount(t);return Number(await a.estimateGas({from:t,to:e,nonce:s,data:r,value:n,accessList:o}))};var Me=(t,e,r,{isSimulationSuccessful:n,balanceChange:o,tokenApprovals:a,alert:s})=>{let{dappInfo:i}=t,c=Ue(r),l="Do you approve this transaction?";c==="approve"&&(l="Do you approve this spend limit?");let p=[Ne("Website",i),z("From",r.from)];r.to&&p.push(z("To",r.to)),c&&p.push(ye("Type",c)),r.data&&p.push(st("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:s,balanceChange:o,tokenApprovals:a,isSimulationSuccessful:n},d={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,accessList:r.accessList}};return {displayData:m,signingData:d}};var ft="DUMMY_API_KEY",rr=async({proxyApiUrl:t,chainId:e,params:r,domain:n,withGasEstimation:o})=>{let a=new ut__default.default({baseURL:t+"/proxy/blockaid/",apiKey:ft}),s=["validation","simulation"];return o&&s.push("gas_estimation"),a.evm.transactionBulk.scan({chain:e.toString(),options:s,data:r,metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}})},nr=async({proxyApiUrl:t,chainId:e,params:r,domain:n})=>new ut__default.default({baseURL:t+"/proxy/blockaid/",apiKey:ft}).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}}),ar=async({proxyApiUrl:t,chainId:e,accountAddress:r,data:n,domain:o})=>new ut__default.default({baseURL:t+"/proxy/blockaid/",apiKey:ft}).evm.jsonRpc.scan({chain:e.toString(),options:["validation","simulation"],account_address:r,data:n,metadata:o&&o.length>0?{domain:o}:{non_dapp:!0}});var cr=async(t,e,r)=>{if(!t.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.ethers.Contract(t.to,ir__default.default.abi,r),o=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),a=or__default.default(o[0]),s=or__default.default(o[1]),i=parseInt(o[2]),c={type:vmModuleTypes.TokenType.ERC20,name:a,chainId:e,symbol:s,decimals:i,address:t.to,contractType:"ERC-20"},l=new ethers.ethers.Interface(ir__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,c.decimals,c.symbol).toDisplay(),usdPrice:void 0}],token:c}],ins:[]}};if(p?.name==="approve")return {tokenApprovals:{isEditable:!0,approvals:[{token:c,spenderAddress:m.spender,value:m.amount}]}}}catch(n){console.error("parseErc20Tx error",n);}return {tokenApprovals:void 0,balanceChange:void 0}};function W(t){return !("type"in t)}function Le(t){return t.type===vmModuleTypes.TokenType.ERC20}function lr(t){return typeof t.to=="string"}function pr(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}function ea(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}function ta(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}function yt(t){return ea(t)?t.ins.length===0&&t.outs.length===0:ta(t)?t.approvals.length===0:!1}var L={[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 dr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:o,proxyApiUrl:a})=>{let s;try{s=await nr({proxyApiUrl:a,chainId:n,params:r,domain:e});}catch(i){console.error("simulateTransaction error",i);}return gt({rpcMethod:t,params:r,chainId:n,provider:o,simulationResult:s})},gt=async({rpcMethod:t,params:e,chainId:r,provider:n,simulationResult:o})=>{let a,s,i,c=!1,l;if(o){let{validation:p,simulation:m,gas_estimation:d}=o;!p||p.result_type==="Error"||p.result_type==="Warning"?a=L[vmModuleTypes.AlertType.WARNING]:p.result_type==="Malicious"&&(a=L[vmModuleTypes.AlertType.DANGER]),m?.status==="Success"&&(c=!0,i=ur(t,m.account_summary),s=fr(m.account_summary.assets_diffs)),d?.status==="Success"&&(l=Number(d.estimate));}if(!c&&lr(e)){let p=await cr(e,r,n);s=p.balanceChange,i=p.tokenApprovals;}return {alert:a,balanceChange:s,tokenApprovals:i,isSimulationSuccessful:c,estimatedGasLimit:l}},sa=t=>t.trace_type==="ExposureTrace",ia=(t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,ca=t=>t===void 0||t.length===0?{}:t.reduce((e,r)=>sa(r)?{[ia(r.spender,r.asset.address)]:r}:e,{}),ur=(t,e)=>{let{traces:r}=e,n=ca(r),o=Object.entries(n).map(([s,i])=>{let c=yr(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:m}}=i;l.value=p,l.usdPrice=`${m}`;}if(i.type==="ERC721ExposureTrace"){let{exposed:{usd_price:p,amount:m}}=i;l.value=`${m}`,l.usdPrice=`${p}`;}return l}).filter(Boolean);return o.length===0?void 0:{isEditable:o.length===1&&o[0]?.token.type===vmModuleTypes.TokenType.ERC20&&t===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:o}},fr=t=>{let e=mr(t,"in"),r=mr(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},mr=(t,e)=>t.filter(r=>r[e].length>0).sort((r,n)=>r[e].length-n[e].length).map(r=>{let n=r.asset,o="address"in n?yr(n):la(n);if(!o)return;let a=r[e].map(s=>{let i;if("value"in s&&s.value)if("decimals"in o){let c=coreUtilsSdk.numberToBN(s.value,o.decimals);i=coreUtilsSdk.balanceToDisplayValue(c,o.decimals);}else ethers.isHexString(s.value)&&(i=parseInt(s.value,16).toString());else "type"in o&&o.type===vmModuleTypes.TokenType.ERC721&&(i="1");return i?{displayValue:i,usdPrice:s.usd_price}:void 0}).filter(s=>s!==void 0);return {token:o,items:a}}).filter(r=>r!==void 0),yr=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},la=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),gr=async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:o,proxyApiUrl:a})=>{let s,i,c;try{let{validation:l,simulation:p}=await ar({proxyApiUrl:a,chainId:n,accountAddress:r,data:o,domain:e});!l||l.result_type==="Error"||l.result_type==="Warning"?s=L[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"&&(s=L[vmModuleTypes.AlertType.DANGER]),p?.status==="Success"&&(c=ur(t.method,p.account_summary),i=fr(p.account_summary.assets_diffs));}catch(l){console.error("processJsonRpcSimulation error",l),s=L[vmModuleTypes.AlertType.WARNING];}return {alert:s,balanceChange:i,tokenApprovals:c}};var ee=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 ma=zod.z.tuple([ee]),hr=t=>ma.safeParse(t);var He=async({provider:t,txHash:e,onTransactionConfirmed:r,onTransactionReverted:n,requestId:o})=>{try{if((await t.waitForTransaction(e))?.status===1)return r(e,o),!0}catch(a){console.error(a);}return n(e,o),!1};var Oe=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:o}=t,{data:a,error:s,success:i}=hr(o);if(!i)return console.error("invalid params",s),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:s}})};let[c]=a,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 T=await tr({transactionParams:{from:c.from,to:c.to,data:c.data,value:c.value,accessList:c.accessList},provider:l});c.gas="0x"+T.toString(16);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate gas limit")}}if(!c.nonce)try{let T=await _e({from:c.from,provider:l});c.nonce=String(T);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate nonce")}}let p=await dr({rpcMethod:t.method,proxyApiUrl:n,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:l}),{displayData:m,signingData:d}=Me(t,e,c,p),{updateTx:u,cleanup:y}=er(t.requestId,d,m),g=await r.requestApproval({request:t,displayData:m,signingData:d,updateTx:u});if(y(),"error"in g)return {error:g.error};let v;try{v=await Oe(l,g);}catch(T){return {error:rpcErrors.rpcErrors.internal({message:"Unable to get transaction hash",data:{cause:T}})}}return He({provider:l,txHash:v,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,requestId:t.requestId}),{result:v}};async function kr(t,e){let r=t.map(async(a,s)=>({index:s,result:await e(a)})),o=(await Promise.allSettled(r)).filter(a=>a.status==="fulfilled").map(a=>a).find(a=>a.value.result);return o?t[o.value.index]:void 0}function te(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}async function re(t){return await Promise.allSettled(t).then(e=>e.reduce((r,n)=>{if(n.status==="fulfilled"){let o=n.value;o.status==="fulfilled"?r[o.id]=o.value:r[o.id]={error:o.reason};}return r},{}))}var A,ne,q,ke,We=class{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:o}){chunkTKL4UUHE_cjs.c(this,A,void 0);chunkTKL4UUHE_cjs.c(this,ne,void 0);chunkTKL4UUHE_cjs.c(this,q,void 0);chunkTKL4UUHE_cjs.c(this,ke,void 0);chunkTKL4UUHE_cjs.d(this,A,e),chunkTKL4UUHE_cjs.d(this,ne,r),chunkTKL4UUHE_cjs.d(this,q,n),chunkTKL4UUHE_cjs.d(this,ke,o);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let o=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}),a=chunkTKL4UUHE_cjs.b(this,A).pricingProviders?.coingecko.nativeTokenId,s=chunkTKL4UUHE_cjs.b(this,A).networkToken,i=new Y({storage:chunkTKL4UUHE_cjs.b(this,ne),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,q)}),c=a?await i.getSimplePrice({coinIds:[a],currencies:[n]}):{},l=c?.[a??""]?.[n]?.price??void 0,p=c?.[a??""]?.[n]?.marketCap??void 0,m=c?.[a??""]?.[n]?.vol24??void 0,d=c?.[a??""]?.[n]?.change24??void 0,u=await o.getBalance(r),y=new coreUtilsSdk.TokenUnit(u,s.decimals,s.symbol),g=l!==void 0?y.mul(l):void 0;return {...s,coingeckoId:a??"",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:m,change24:d}}async listErc20Balances({chainId:e,address:r,currency:n}){let o=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}),a=chunkTKL4UUHE_cjs.b(this,A).pricingProviders?.coingecko.assetPlatformId,s=chunkTKL4UUHE_cjs.b(this,A).pricingProviders?.coingecko.nativeTokenId,i=await we({chainId:Number(e),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,q)}),c=i.map(T=>T.address),l=[...i,...chunkTKL4UUHE_cjs.b(this,ke)].filter(Le),p=async T=>{let I=await new ethers.ethers.Contract(T.address,ir__default.default.abi,o).balanceOf?.(r)||0n;return {...T,balance:I}},m=l.map(T=>te(p(T),T.address)),d=await re(m),u=new Y({storage:chunkTKL4UUHE_cjs.b(this,ne),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,q)}),y=a&&await u.getPricesByAddresses(c,a,n)||{},g=Object.keys(d),v={};for(let T=0;T<g.length;T++){let E=g[T];if(E===void 0)continue;let k=d[E];if(k===void 0||"error"in k){v[E]={error:`rpcService:getTokenWithBalance failed: ${k?.error??"unknown error"}`};continue}let I=y?.[s??""]?.[n]?.price??void 0,xe=y?.[s??""]?.[n]?.marketCap??void 0,x=y?.[s??""]?.[n]?.vol24??void 0,rt=y?.[s??""]?.[n]?.change24??void 0,Ae=new coreUtilsSdk.TokenUnit(k.balance,k.decimals,k.symbol),pe=I!==void 0?Ae.mul(I):void 0;v[k.address.toLowerCase()]={...k,type:vmModuleTypes.TokenType.ERC20,balance:k.balance,balanceDisplayValue:Ae.toDisplay(),balanceInCurrency:pe?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:pe?.toDisplay({fixedDp:2}),priceInCurrency:I,marketCap:xe,change24:rt,vol24:x,reputation:null};}return v}async listNftBalances(){return {}}};A=new WeakMap,ne=new WeakMap,q=new WeakMap,ke=new WeakMap;var br=async({addresses:t,currency:e,network:r,proxyApiUrl:n,tokenTypes:o=[vmModuleTypes.TokenType.NATIVE,vmModuleTypes.TokenType.ERC20,vmModuleTypes.TokenType.ERC721,vmModuleTypes.TokenType.ERC1155],customTokens:a=[],storage:s,balanceServices:i=[]})=>{let c=r.chainId,l=[...i,new We({network:r,storage:s,proxyApiUrl:n,customTokens:a})],p=await kr(l,d=>d.isNetworkSupported(r.chainId)),m={};if(p){let d=[],u=[],y=[];t.forEach(E=>{o.includes(vmModuleTypes.TokenType.NATIVE)&&d.push(te(p.getNativeBalance({address:E,currency:e.toUpperCase(),chainId:c}),E)),o.includes(vmModuleTypes.TokenType.ERC20)&&u.push(te(p.listErc20Balances({customTokens:a.filter(Le),currency:e.toUpperCase(),chainId:c,address:E,pageSize:100}),E)),(o.includes(vmModuleTypes.TokenType.ERC721)||o.includes(vmModuleTypes.TokenType.ERC1155))&&y.push(te(p.listNftBalances({chainId:c,address:E}),E));});let g=await re(d),v=await re(u),T=await re(y);Object.keys(g).forEach(E=>{let k=g[E];if(!k||"error"in k){m[E]={error:`getNativeBalance failed: ${k?.error??"unknown error"}`};return}let I=k.symbol;m[E]={[I]:k};}),Object.keys(v).forEach(E=>{let k=v[E];!k||"error"in k&&typeof k.error!="string"?m[E]={...m[E],error:"listErc20Balances failed: unknown error"}:"error"in k&&typeof k.error=="string"?m[E]={...m[E],error:`listErc20Balances failed: ${k.error}`}:m[E]={...m[E],...k};}),Object.keys(T).forEach(E=>{let k=T[E];!k||"error"in k&&typeof k.error!="string"?m[E]={...m[E],error:"listNftBalances failed: unknown error"}:"error"in k&&typeof k.error=="string"?m[E]={...m[E],error:`listNftBalances failed: ${k.error}`}:m[E]={...m[E],...k};});}else t.forEach(d=>{m[d]={error:"unsupported network"};});return m};var fa={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},ya={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Rr=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return fa;case vmModuleTypes.Environment.DEV:return ya}};var ha="https://ipfs.io";function Sr(t,e=ha){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}var Ta="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function qe(t,e="256"){let r=Sr(t);return `${Ta}/width=${e},fit/${r}`}var U=class extends Error{constructor(){super(...arguments);chunkTKL4UUHE_cjs.a(this,"message","Glacier is unhealthy. Try again later.");}},ba=[coreChainsSdk.ChainId.ETHEREUM_HOMESTEAD],je=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},he),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(o){throw o instanceof U&&this.setGlacierToUnhealthy(),o}}async getTokenDetails({address:e,chainId:r,tokenId:n}){try{return this.glacierSdk.nfTs.getTokenDetails({address:e,chainId:r,tokenId:n})}catch(o){throw o instanceof U&&this.setGlacierToUnhealthy(),o}}async getNativeBalance({chainId:e,address:r,currency:n,coingeckoId:o}){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:o??""}}catch(a){throw a instanceof U&&this.setGlacierToUnhealthy(),a}}async listErc721Balances({chainId:e,address:r}){let n,o=[];do try{let a=await this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:r,pageSize:100,pageToken:n});o.push(...a.erc721TokenBalances),n=a.nextPageToken;}catch(a){throw a instanceof U&&this.setGlacierToUnhealthy(),a}while(n);return o}async listErc1155Balances({chainId:e,address:r}){let n,o=[];do try{let a=await this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:r,pageSize:100,pageToken:n});o.push(...a.erc1155TokenBalances),n=a.nextPageToken;}catch(a){throw a instanceof U&&this.setGlacierToUnhealthy(),a}while(n);return o}async listNftBalances({chainId:e,address:r}){let o=(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(s=>[`${s.address}-${s.tokenId}`,{address:s.address,description:s.metadata.description??"",logoUri:s.metadata.imageUri??"",logoSmall:qe(s.metadata.imageUri??""),name:s.metadata.name??"",symbol:s.metadata.symbol??"",tokenId:s.tokenId,tokenUri:s.tokenUri,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:{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(o)}async listErc20Balances({chainId:e,address:r,currency:n,customTokens:o}){try{let a=[],s;do{let i=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:s});a.push(...Ra(i.erc20TokenBalances,Number(e))),s=i.nextPageToken;}while(s);return [...Pa(o),...a].reduce((i,c)=>({...i,[c.address.toLowerCase()]:c}),{})}catch(a){throw a instanceof U&&this.setGlacierToUnhealthy(),a}}async listTransactions({chainId:e,address:r,pageToken:n,pageSize:o}){try{return this.glacierSdk.evmTransactions.listTransactions({chainId:e,address:r,pageToken:n,pageSize:o})}catch(a){throw a instanceof U&&this.setGlacierToUnhealthy(),a}}},Pa=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),o=n.toDisplay(),a=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:a,balanceDisplayValue:o,balanceInCurrency:i,priceInCurrency:s,reputation:r.tokenReputation,type:vmModuleTypes.TokenType.ERC20}});var ht=t=>{let e="";e+=`Domain
27
- `;for(let r in t.domain)e+=` ${r}: ${j(String(t.domain[r]))}
26
+ async function Ie({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 nt=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=de.exponential()})=>{let s=0,a=0,o;for(;a<r;){a>0&&await pn(s);try{let c=await t(a);if(e(c))return c}catch(c){o=c;}s=n(a),a++;}let i=o?`Max retry exceeded. ${o}`:"Max retry exceeded.";throw new Error(i)},de=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return r=>e*1e3}static constantMs(e){return r=>e}};function pn(t){return new Promise(e=>setTimeout(e,t))}var at=t=>nt({operation:e=>t(e>0),maxRetries:2,backoffPolicy:de.constant(1),isSuccess:e=>e?.status?.error_code!==429});function Pt(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=Pt(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}async function _(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 ue=class{constructor(e){this.proxyApiUrl=e;}simplePrice(e){let r=new URLSearchParams(e);return _([`${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 _([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${s}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}};var St=coreCoingeckoSdk.getBasicCoingeckoHttp(),L,Y,z=class{constructor({storage:e,proxyApiUrl:r}){chunkTKL4UUHE_cjs.c(this,L,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(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,L,e),chunkTKL4UUHE_cjs.d(this,Y,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,L)?.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,L)?.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,L)?.get?.(o),s)return s;try{s=await at(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:i}));}catch(i){console.error(i),s=void 0;}return chunkTKL4UUHE_cjs.b(this,L)?.set?.(o,s),s}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:s=!1}){if(s){let a=await new ue(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(a,[n])}return coreCoingeckoSdk.simpleTokenPrice(St,{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:i=!1,shouldThrow:c=!0}){if(i){let l=await new ue(chunkTKL4UUHE_cjs.b(this,Y)).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(St,{coinIds:e,currencies:r,marketCap:n,vol24:s,change24:a,lastUpdated:o,shouldThrow:c})}};L=new WeakMap,Y=new WeakMap;var Tn="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",kn="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",At=zod.object({date:zod.string(),usd:zod.record(zod.number())}),we=async()=>{try{return await _([Tn],At)}catch{return await _([kn],At)}};var st=(t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),Ne=(t,e)=>({label:t,value:e,type:vmModuleTypes.DetailItemType.LINK}),K=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e});var De=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.NETWORK,value:e});var it=({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 It=process.env.GLACIER_API_KEY;var ye=()=>It;var vn={rltoken:ye()},ge=class extends glacierSdk.FetchHttpRequest{constructor(e){super(e);}request(e){let r={...vn,...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:s,pollingInterval:a=2e3}=t,o=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:s},xn(n),new ethers.Network(r,e));return o.pollingInterval=a,o},Pn=["glacier-api.avax.network","proxy-api.avax.network"];function xn(t){let e=new URL(t),r=ye();if(r&&Pn.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}var lt={LOW:1n,MEDIUM:4n,HIGH:6n},pt=500000000n,Sn=t=>t===coreChainsSdk.ChainId.AVALANCHE_TESTNET_ID||t===coreChainsSdk.ChainId.AVALANCHE_MAINNET_ID;async function Nt({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,caipId:s,proxyApiUrl:a}){let o=await w({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n});if(!a)throw rpcErrors.rpcErrors.internal("Proxy API URL is needed");if(Sn(t))try{let T=await An(o);return {...T,baseFee:T.medium.maxFeePerGas,displayDecimals:9,isFixedFee:!1}}catch{console.error("eth_suggestPriceOptions call failed, falling back to legacy fee fetching");}let i=await o.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 In(a,s),p=new coreUtilsSdk.TokenUnit(l,0,""),m=new coreUtilsSdk.TokenUnit(c,0,""),d=BigInt("1000000000"),u=m.mul(p).add(d).toSubUnit(),y=pt*lt.LOW,g=pt*lt.MEDIUM,v=pt*lt.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 An(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 In(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 M(t,e,r="tx"){return `${t}/${r}/${e}`}var Bt=({tx:t,networkToken:e,chainId:r,explorerUrl:n,address:s})=>{let a=t.from.toLowerCase()===s.toLowerCase(),o=parseInt(t.timeStamp)*1e3,i=e.decimals,l=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol).toDisplay(),p=a?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,{from:m,to:d,gasPrice:u,gasUsed:y,hash:g}=t,v=M(n,g);return {isIncoming:!a,isOutgoing:a,isContractCall:Nn(t),timestamp:o,hash:g,isSender:a,from:m,to:d,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 Nn(t){return t.input!=="0x"}function Ut({tx:t,address:e,explorerUrl:r,chainId:n}){let s=t.from.toLowerCase()===e.toLowerCase(),a=parseInt(t.timeStamp)*1e3,i=new coreUtilsSdk.TokenUnit(t.value,Number(t.tokenDecimal),t.tokenSymbol).toDisplay(),{from:c,to:l,gasPrice:p,gasUsed:m,hash:d,tokenDecimal:u,tokenName:y,tokenSymbol:g}=t,v=s?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,T=M(r,d);return {isIncoming:!s,isOutgoing:s,isContractCall:!1,timestamp:a,hash:d,isSender:s,from:c,to:l,tokens:[{decimal:u,name:y,symbol:g,type:vmModuleTypes.TokenType.ERC20,amount:i}],gasUsed:m,gasPrice:p,chainId:n.toString(),txType:v,explorerLink:T}}var Gt=async({isTestnet:t,networkToken:e,explorerUrl:r,chainId:n,address:s,nextPageToken:a,offset:o})=>{let i=a?JSON.parse(a):void 0,c=i?.page||1,l=i?.queries||["normal","erc20"],p=(l.includes("normal")?await coreEtherscanSdk.getNormalTxs(s,!t,{page:c,offset:o}):[]).map(g=>Bt({tx:g,chainId:n,networkToken:e,explorerUrl:r,address:s})),m=(l.includes("erc20")?await coreEtherscanSdk.getErc20Txs(s,!t,void 0,{page:c,offset:o}):[]).map(g=>Ut({tx:g,address:s,explorerUrl:r,chainId:n})),d=m.map(g=>g.hash),u=p.filter(g=>!d.includes(g.hash)),y={queries:[],page:c+1};return p.length&&y.queries.push("normal"),m.length&&y.queries.push("erc20"),{transactions:[...u,...m],nextPageToken:y.queries.length?JSON.stringify(y):""}};var Ft=t=>t===1||t===5||t===4||t===11155111;var Vt=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},s,a)=>{let o=!e&&!r&&!n,i=Fn(t.method?.methodName),c=s.toLowerCase(),l=i.toLowerCase().includes("swap"),p=o&&t.from.address.toLowerCase()===c,m=o&&t.to.address.toLowerCase()===c,d=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"),T=i==="Fill Order",E=!!a[0]&&Mt(a[0].type)&&a[0].from?.address.toLowerCase()===c,k=!!a[0]&&Mt(a[0].type)&&a[0].to?.address.toLowerCase()===c;return l?vmModuleTypes.TransactionType.SWAP:p?vmModuleTypes.TransactionType.SEND:m?vmModuleTypes.TransactionType.RECEIVE:d?vmModuleTypes.TransactionType.NFT_BUY:u?vmModuleTypes.TransactionType.APPROVE:E?vmModuleTypes.TransactionType.NFT_SEND:k?vmModuleTypes.TransactionType.NFT_RECEIVE:y?vmModuleTypes.TransactionType.TRANSFER:g?vmModuleTypes.TransactionType.AIRDROP:v?vmModuleTypes.TransactionType.UNWRAP:T?vmModuleTypes.TransactionType.FILL_ORDER:vmModuleTypes.TransactionType.UNKNOWN};function Mt(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}var Fn=(t="")=>t.includes("(")?Gn__default.default(t.split("(",1)[0]):t;var Ht=(t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},s)=>{let a=t===vmModuleTypes.TransactionType.TRANSFER,o=t===vmModuleTypes.TransactionType.SEND,i=t===vmModuleTypes.TransactionType.RECEIVE,c=e?.from?.address,l=e?.to?.address;a&&r&&r[0]&&(c=r[0].from.address,l=r[0].to.address),a&&n&&n[0]&&(c=n[0].from.address,l=n[0].to.address);let p=o||a&&c.toLowerCase()===s.toLowerCase(),m=i||a&&l.toLowerCase()===s.toLowerCase();return {isOutgoing:p,isIncoming:m,isSender:c===s,from:c,to:l}};async function Ot(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var Mn="https://ipfs.io";function Z(t,e=Mn){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}async function Vn(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}async function $t(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 Vn(Z(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}var Hn="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Wt(t,e="256"){let r=Z(t);return `${Hn}/width=${e},fit/${r}`}var Jt=async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},s)=>{let a=[];if(t.value!=="0"){let o=s.decimals,c=new coreUtilsSdk.TokenUnit(t.value,s.decimals,s.symbol).toDisplay();a.push({decimal:o.toString(),name:s.name,symbol:s.symbol,amount:c,from:t.from,to:t.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(o=>{let i=o.erc20Token.decimals,l=new coreUtilsSdk.TokenUnit(o.value,i,o.erc20Token.symbol).toDisplay();a.push({decimal:i.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 i=o.erc721Token,c=await jt(i.tokenUri,i.metadata.imageUri);a.push({name:o.erc721Token.name,symbol:o.erc721Token.symbol,amount:"1",imageUri:c,from:o.from,to:o.to,collectableTokenId:o.erc721Token.tokenId,type:vmModuleTypes.TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async o=>{let i=o.erc1155Token,c=await jt(i.tokenUri,i.metadata.imageUri);a.push({name:o.erc1155Token.metadata.name??"",symbol:o.erc1155Token.metadata.symbol??"",amount:o.value,imageUri:c,from:o.from,to:o.to,collectableTokenId:o.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),a},jt=async(t,e)=>{if(e)return e.startsWith("ipfs://")?Z(e):e;{let[r,n]=await Ot($t(t));return n?"":r.image?Wt(r.image):""}};var Yt=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER],W=(o=>(o.TOTAL_SUPPLY="totalSupply",o.BALANCE_OF="balanceOf",o.TRANSFER="transfer",o.TRANSFER_FROM="transferFrom",o.APPROVE="approve",o.ALLOWANCE="allowance",o))(W||{});var zt=async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:s})=>{let a=await Jt(t,r),o=Vt(t,s,a),{isOutgoing:i,isIncoming:c,isSender:l,from:p,to:m}=Ht(o,t,s),{blockTimestamp:d,txHash:u,gasPrice:y,gasUsed:g}=t.nativeTransaction,v=M(e,u);return {isContractCall:!Yt.includes(o),isIncoming:c,isOutgoing:i,isSender:l,timestamp:d*1e3,hash:u,from:p,to:m,tokens:a,gasPrice:y,gasUsed:g,chainId:n.toString(),txType:o,explorerLink:v}};var Kt=async({chainId:t,explorerUrl:e,networkToken:r,address:n,nextPageToken:s,offset:a,glacierService:o})=>{try{let i=await o.listTransactions({chainId:t.toString(),address:n,pageToken:s,pageSize:a});return {transactions:(await Promise.all(i.transactions.filter(p=>p.nativeTransaction.txStatus==="1").map(p=>zt({transactions:p,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(m=>m)))).filter(p=>p.tokens.find(m=>Number(m.amount)!==0)),nextPageToken:i.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var Xt=async({chainId:t,isTestnet:e,networkToken:r,explorerUrl:n,address:s,nextPageToken:a,offset:o,glacierService:i})=>Ft(t)?Gt({isTestnet:e,networkToken:r,explorerUrl:n,chainId:t,address:s,nextPageToken:a,offset:o}):i.isHealthy()?Kt({networkToken:r,explorerUrl:n,chainId:t,address:s,nextPageToken:a,offset:o,glacierService:i}):{transactions:[],nextPageToken:""};var Zt={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 _e=async({from:t,provider:e})=>e.getTransactionCount(t);var Ue=t=>{if(t.data)try{let r=new ethers.Interface(ir__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(W).includes(t)}function Qt(t,e,r){return new ethers.ethers.Contract(t,ir__default.default.abi).interface.encodeFunctionData("approve",[e,r])}var Ge=new Map,er=(t,e,r)=>(Ge.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:s,approvalLimit:a})=>{let o=Ge.get(t);if(!o)throw rpcErrors.rpcErrors.resourceNotFound();let{signingData:i,displayData:c}=o,l={...i,data:{...i.data,maxFeePerGas:n??i.data.maxFeePerGas,maxPriorityFeePerGas:s??i.data.maxPriorityFeePerGas}},p={...c};if(typeof a=="string"){if(!a.startsWith("0x"))throw rpcErrors.rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let d=c.tokenApprovals;Yn(d),zn(i.data.data);let u=d.approvals[0];l.data.data=Qt(u.token.address,u.spenderAddress,a),p.tokenApprovals={approvals:[{...u,value:a}],isEditable:!0};}let m={signingData:l,displayData:p};return Ge.set(t,m),m},cleanup:()=>Ge.delete(t)});function Yn(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 zn(t){if((!t||t==="0x"?null:Ue({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}var tr=async({transactionParams:{from:t,to:e,data:r,value:n,accessList:s},provider:a})=>{let o=await a.getTransactionCount(t);return Number(await a.estimateGas({from:t,to:e,nonce:o,data:r,value:n,accessList:s}))};var Le=(t,e,r,{isSimulationSuccessful:n,balanceChange:s,tokenApprovals:a,alert:o})=>{let{dappInfo:i}=t,c=Ue(r),l="Do you approve this transaction?";c==="approve"&&(l="Do you approve this spend limit?");let p=[Ne("Website",i),K("Account",r.from)];r.to&&p.push(K("Contract",r.to)),p.push(De("Network",{name:e.chainName,logoUri:e.logoUri}));let m={title:l,details:[{title:"Transaction Details",items:p}],networkFeeSelector:!0,alert:o,balanceChange:s,tokenApprovals:a,isSimulationSuccessful:n},d={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,accessList:r.accessList}};return {displayData:m,signingData:d}};var ft="DUMMY_API_KEY",rr=async({proxyApiUrl:t,chainId:e,params:r,domain:n,withGasEstimation:s})=>{let a=new ut__default.default({baseURL:t+"/proxy/blockaid/",apiKey:ft}),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}})},nr=async({proxyApiUrl:t,chainId:e,params:r,domain:n})=>new ut__default.default({baseURL:t+"/proxy/blockaid/",apiKey:ft}).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}}),ar=async({proxyApiUrl:t,chainId:e,accountAddress:r,data:n,domain:s})=>new ut__default.default({baseURL:t+"/proxy/blockaid/",apiKey:ft}).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 cr=async(t,e,r)=>{if(!t.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.ethers.Contract(t.to,ir__default.default.abi,r),s=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),a=or__default.default(s[0]),o=or__default.default(s[1]),i=parseInt(s[2]),c={type:vmModuleTypes.TokenType.ERC20,name:a,chainId:e,symbol:o,decimals:i,address:t.to,contractType:"ERC-20"},l=new ethers.ethers.Interface(ir__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,c.decimals,c.symbol).toDisplay(),usdPrice:void 0}],token:c}],ins:[]}};if(p?.name==="approve")return {tokenApprovals:{isEditable:!0,approvals:[{token:c,spenderAddress:m.spender,value:m.amount}]}}}catch(n){console.error("parseErc20Tx error",n);}return {tokenApprovals:void 0,balanceChange:void 0}};function q(t){return !("type"in t)}function Me(t){return t.type===vmModuleTypes.TokenType.ERC20}function lr(t){return typeof t.to=="string"}function pr(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}function ea(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}function ta(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}function yt(t){return ea(t)?t.ins.length===0&&t.outs.length===0:ta(t)?t.approvals.length===0:!1}var V={[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 dr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:s,proxyApiUrl:a})=>{let o;try{o=await nr({proxyApiUrl:a,chainId:n,params:r,domain:e});}catch(i){console.error("simulateTransaction error",i);}return gt({rpcMethod:t,params:r,chainId:n,provider:s,simulationResult:o})},gt=async({rpcMethod:t,params:e,chainId:r,provider:n,simulationResult:s})=>{let a,o,i,c=!1,l;if(s){let{validation:p,simulation:m,gas_estimation:d}=s;!p||p.result_type==="Error"||p.result_type==="Warning"?a=V[vmModuleTypes.AlertType.WARNING]:p.result_type==="Malicious"&&(a=V[vmModuleTypes.AlertType.DANGER]),m?.status==="Success"&&(c=!0,i=ur(t,m.account_summary),o=fr(m.account_summary.assets_diffs)),d?.status==="Success"&&(l=Number(d.estimate));}if(!c&&lr(e)){let p=await cr(e,r,n);o=p.balanceChange,i=p.tokenApprovals;}return {alert:a,balanceChange:o,tokenApprovals:i,isSimulationSuccessful:c,estimatedGasLimit:l}},sa=t=>t.trace_type==="ExposureTrace",ia=(t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,ca=t=>t===void 0||t.length===0?{}:t.reduce((e,r)=>sa(r)?{[ia(r.spender,r.asset.address)]:r}:e,{}),ur=(t,e)=>{let{traces:r}=e,n=ca(r),s=Object.entries(n).map(([o,i])=>{let c=yr(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:m}}=i;l.value=p,l.usdPrice=`${m}`;}if(i.type==="ERC721ExposureTrace"){let{exposed:{usd_price:p,amount:m}}=i;l.value=`${m}`,l.usdPrice=`${p}`;}return l}).filter(Boolean);return s.length===0?void 0:{isEditable:s.length===1&&s[0]?.token.type===vmModuleTypes.TokenType.ERC20&&t===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:s}},fr=t=>{let e=mr(t,"in"),r=mr(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},mr=(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?yr(n):la(n);if(!s)return;let a=r[e].map(o=>{let i;if("value"in o&&o.value)if("decimals"in s){let c=coreUtilsSdk.numberToBN(o.value,s.decimals);i=coreUtilsSdk.balanceToDisplayValue(c,s.decimals);}else ethers.isHexString(o.value)&&(i=parseInt(o.value,16).toString());else "type"in s&&s.type===vmModuleTypes.TokenType.ERC721&&(i="1");return i?{displayValue:i,usdPrice:o.usd_price}:void 0}).filter(o=>o!==void 0);return {token:s,items:a}}).filter(r=>r!==void 0),yr=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},la=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),gr=async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:s,proxyApiUrl:a})=>{let o,i,c;try{let{validation:l,simulation:p}=await ar({proxyApiUrl:a,chainId:n,accountAddress:r,data:s,domain:e});!l||l.result_type==="Error"||l.result_type==="Warning"?o=V[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"&&(o=V[vmModuleTypes.AlertType.DANGER]),p?.status==="Success"&&(c=ur(t.method,p.account_summary),i=fr(p.account_summary.assets_diffs));}catch(l){console.error("processJsonRpcSimulation error",l),o=V[vmModuleTypes.AlertType.WARNING];}return {alert:o,balanceChange:i,tokenApprovals:c}};var ee=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 ma=zod.z.tuple([ee]),hr=t=>ma.safeParse(t);var He=async({explorerUrl:t,provider:e,txHash:r,onTransactionPending:n,onTransactionConfirmed:s,onTransactionReverted:a,request:o})=>{try{n({txHash:r,request:o});let c=(await e.waitForTransaction(r))?.status===1,l=M(t,r);if(c)return s({txHash:r,explorerLink:l,request:o}),!0}catch(i){console.error(i);}return a({txHash:r,request:o}),!1};var Oe=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:i}=hr(s);if(!i)return console.error("invalid params",o),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:o}})};let[c]=a,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 T=await tr({transactionParams:{from:c.from,to:c.to,data:c.data,value:c.value,accessList:c.accessList},provider:l});c.gas="0x"+T.toString(16);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate gas limit")}}if(!c.nonce)try{let T=await _e({from:c.from,provider:l});c.nonce=String(T);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate nonce")}}let p=await dr({rpcMethod:t.method,proxyApiUrl:n,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:l}),{displayData:m,signingData:d}=Le(t,e,c,p),{updateTx:u,cleanup:y}=er(t.requestId,d,m),g=await r.requestApproval({request:t,displayData:m,signingData:d,updateTx:u});if(y(),"error"in g)return {error:g.error};let v;try{v=await Oe(l,g);}catch(T){return {error:rpcErrors.rpcErrors.internal({message:"Unable to get transaction hash",data:{cause:T}})}}return He({explorerUrl:e.explorerUrl??"",provider:l,txHash:v,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),{result:v}};async function kr(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 te(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}async function re(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 I,ne,j,Te,We=class{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:s}){chunkTKL4UUHE_cjs.c(this,I,void 0);chunkTKL4UUHE_cjs.c(this,ne,void 0);chunkTKL4UUHE_cjs.c(this,j,void 0);chunkTKL4UUHE_cjs.c(this,Te,void 0);chunkTKL4UUHE_cjs.d(this,I,e),chunkTKL4UUHE_cjs.d(this,ne,r),chunkTKL4UUHE_cjs.d(this,j,n),chunkTKL4UUHE_cjs.d(this,Te,s);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let s=await w({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,I).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,I).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,I).utilityAddresses?.multicall}),a=chunkTKL4UUHE_cjs.b(this,I).pricingProviders?.coingecko.nativeTokenId,o=chunkTKL4UUHE_cjs.b(this,I).networkToken,i=new z({storage:chunkTKL4UUHE_cjs.b(this,ne),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,j)}),c=a?await i.getSimplePrice({coinIds:[a],currencies:[n]}):{},l=c?.[a??""]?.[n]?.price??void 0,p=c?.[a??""]?.[n]?.marketCap??void 0,m=c?.[a??""]?.[n]?.vol24??void 0,d=c?.[a??""]?.[n]?.change24??void 0,u=await s.getBalance(r),y=new coreUtilsSdk.TokenUnit(u,o.decimals,o.symbol),g=l!==void 0?y.mul(l):void 0;return {...o,coingeckoId:a??"",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:m,change24:d}}async listErc20Balances({chainId:e,address:r,currency:n}){let s=await w({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,I).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,I).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,I).utilityAddresses?.multicall}),a=chunkTKL4UUHE_cjs.b(this,I).pricingProviders?.coingecko.assetPlatformId,o=chunkTKL4UUHE_cjs.b(this,I).pricingProviders?.coingecko.nativeTokenId,i=await Ie({chainId:Number(e),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,j)}),c=i.map(T=>T.address),l=[...i,...chunkTKL4UUHE_cjs.b(this,Te)].filter(Me),p=async T=>{let S=await new ethers.ethers.Contract(T.address,ir__default.default.abi,s).balanceOf?.(r)||0n;return {...T,balance:S}},m=l.map(T=>te(p(T),T.address)),d=await re(m),u=new z({storage:chunkTKL4UUHE_cjs.b(this,ne),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,j)}),y=a&&await u.getPricesByAddresses(c,a,n)||{},g=Object.keys(d),v={};for(let T=0;T<g.length;T++){let E=g[T];if(E===void 0)continue;let k=d[E];if(k===void 0||"error"in k){v[E]={error:`rpcService:getTokenWithBalance failed: ${k?.error??"unknown error"}`};continue}let S=y?.[o??""]?.[n]?.price??void 0,Se=y?.[o??""]?.[n]?.marketCap??void 0,A=y?.[o??""]?.[n]?.vol24??void 0,rt=y?.[o??""]?.[n]?.change24??void 0,Ae=new coreUtilsSdk.TokenUnit(k.balance,k.decimals,k.symbol),pe=S!==void 0?Ae.mul(S):void 0;v[k.address.toLowerCase()]={...k,type:vmModuleTypes.TokenType.ERC20,balance:k.balance,balanceDisplayValue:Ae.toDisplay(),balanceInCurrency:pe?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:pe?.toDisplay({fixedDp:2}),priceInCurrency:S,marketCap:Se,change24:rt,vol24:A,reputation:null};}return v}async listNftBalances(){return {}}};I=new WeakMap,ne=new WeakMap,j=new WeakMap,Te=new WeakMap;var br=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:i=[]})=>{let c=r.chainId,l=[...i,new We({network:r,storage:o,proxyApiUrl:n,customTokens:a})],p=await kr(l,d=>d.isNetworkSupported(r.chainId)),m={};if(p){let d=[],u=[],y=[];t.forEach(E=>{s.includes(vmModuleTypes.TokenType.NATIVE)&&d.push(te(p.getNativeBalance({address:E,currency:e.toUpperCase(),chainId:c}),E)),s.includes(vmModuleTypes.TokenType.ERC20)&&u.push(te(p.listErc20Balances({customTokens:a.filter(Me),currency:e.toUpperCase(),chainId:c,address:E,pageSize:100}),E)),(s.includes(vmModuleTypes.TokenType.ERC721)||s.includes(vmModuleTypes.TokenType.ERC1155))&&y.push(te(p.listNftBalances({chainId:c,address:E}),E));});let g=await re(d),v=await re(u),T=await re(y);Object.keys(g).forEach(E=>{let k=g[E];if(!k||"error"in k){m[E]={error:`getNativeBalance failed: ${k?.error??"unknown error"}`};return}let S=k.symbol;m[E]={[S]:k};}),Object.keys(v).forEach(E=>{let k=v[E];!k||"error"in k&&typeof k.error!="string"?m[E]={...m[E],error:"listErc20Balances failed: unknown error"}:"error"in k&&typeof k.error=="string"?m[E]={...m[E],error:`listErc20Balances failed: ${k.error}`}:m[E]={...m[E],...k};}),Object.keys(T).forEach(E=>{let k=T[E];!k||"error"in k&&typeof k.error!="string"?m[E]={...m[E],error:"listNftBalances failed: unknown error"}:"error"in k&&typeof k.error=="string"?m[E]={...m[E],error:`listNftBalances failed: ${k.error}`}:m[E]={...m[E],...k};});}else t.forEach(d=>{m[d]={error:"unsupported network"};});return m};var fa={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},ya={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Pr=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return fa;case vmModuleTypes.Environment.DEV:return ya}};var ha="https://ipfs.io";function xr(t,e=ha){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}var Ta="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function qe(t,e="256"){let r=xr(t);return `${Ta}/width=${e},fit/${r}`}var U=class extends Error{constructor(){super(...arguments);chunkTKL4UUHE_cjs.a(this,"message","Glacier is unhealthy. Try again later.");}},ba=[coreChainsSdk.ChainId.ETHEREUM_HOMESTEAD],je=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},ge),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(s){throw s instanceof U&&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 U&&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,i=new coreUtilsSdk.TokenUnit(o.balance,o.decimals,o.symbol),c=o.price?.value,l=c!==void 0?i.mul(c):void 0;return {name:o.name,symbol:o.symbol,decimals:o.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:o.logoUri,balance:i.toSubUnit(),balanceDisplayValue:i.toDisplay(),balanceInCurrency:l?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:l?.toDisplay({fixedDp:2}),priceInCurrency:c,coingeckoId:s??""}}catch(a){throw a instanceof U&&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 U&&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 U&&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:qe(o.metadata.imageUri??""),name:o.metadata.name??"",symbol:o.metadata.symbol??"",tokenId:o.tokenId,tokenUri:o.tokenUri,collectionName:"Unknown",balance:o.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?BigInt(o.balance):1,balanceDisplayValue:o.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?o.balance:"1",type:o.ercType===glacierSdk.Erc721Token.ercType.ERC_721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{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 i=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:o});a.push(...Pa(i.erc20TokenBalances,Number(e))),o=i.nextPageToken;}while(o);return [...Ra(s),...a].reduce((i,c)=>({...i,[c.address.toLowerCase()]:c}),{})}catch(a){throw a instanceof U&&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 U&&this.setGlacierToUnhealthy(),a}}},Ra=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})),Pa=(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,i=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:i,priceInCurrency:o,reputation:r.tokenReputation,type:vmModuleTypes.TokenType.ERC20}});var ht=t=>{let e="";e+=`Domain
27
+ `;for(let r in t.domain)e+=` ${r}: ${J(String(t.domain[r]))}
28
28
  `;e+=`
29
29
  Message
30
30
  `;for(let r in t.message)if(typeof t.message[r]=="object"&&!Array.isArray(t.message[r])){e+=` ${r}:
31
31
  `;for(let n in t.message[r])Array.isArray(t.message[r][n])?(e+=` ${n}:
32
- `,t.message[r][n].forEach((o,a)=>{e+=` ${a}: ${j(o)}
33
- `;})):e+=` ${n}: ${j(String(t.message[r][n]))}
32
+ `,t.message[r][n].forEach((s,a)=>{e+=` ${a}: ${J(s)}
33
+ `;})):e+=` ${n}: ${J(String(t.message[r][n]))}
34
34
  `;}else Array.isArray(t.message[r])?(e+=` ${r}:
35
- `,t.message[r].forEach((n,o)=>{e+=` ${o}:
35
+ `,t.message[r].forEach((n,s)=>{e+=` ${s}:
36
36
  `;for(let a in n)Array.isArray(n[a])?(e+=` ${a}:
37
- `,n[a].forEach((s,i)=>{e+=` ${i}: ${j(s)}
38
- `;})):e+=` ${a}: ${j(String(n[a]))}
39
- `;})):e+=` ${r}: ${j(String(t.message[r]))}
37
+ `,n[a].forEach((o,i)=>{e+=` ${i}: ${J(o)}
38
+ `;})):e+=` ${a}: ${J(String(n[a]))}
39
+ `;})):e+=` ${r}: ${J(String(t.message[r]))}
40
40
  `;return e},wr=t=>{let e="";return t.forEach(r=>{e+=`${r.name}:
41
- `,e+=`${j(String(r.value))}
41
+ `,e+=`${J(String(r.value))}
42
42
 
43
- `;}),e},j=t=>{let e={0:"\u{1D7EC}",1:"\u{1D7ED}",2:"\u{1D7EE}",3:"\u{1D7EF}",4:"\u{1D7F0}",5:"\u{1D7F1}",6:"\u{1D7F2}",7:"\u{1D7F3}",8:"\u{1D7F4}",9:"\u{1D7F5}",a:"\u{1D5EE}",b:"\u{1D5EF}",c:"\u{1D5F0}",d:"\u{1D5F1}",e:"\u{1D5F2}",f:"\u{1D5F3}",g:"\u{1D5F4}",h:"\u{1D5F5}",i:"\u{1D5F6}",j:"\u{1D5F7}",k:"\u{1D5F8}",l:"\u{1D5F9}",m:"\u{1D5FA}",n:"\u{1D5FB}",o:"\u{1D5FC}",p:"\u{1D5FD}",q:"\u{1D5FE}",r:"\u{1D5FF}",s:"\u{1D600}",t:"\u{1D601}",u:"\u{1D602}",v:"\u{1D603}",w:"\u{1D604}",x:"\u{1D605}",y:"\u{1D606}",z:"\u{1D607}",A:"\u{1D5D4}",B:"\u{1D5D5}",C:"\u{1D5D6}",D:"\u{1D5D7}",E:"\u{1D5D8}",F:"\u{1D5D9}",G:"\u{1D5DA}",H:"\u{1D5DB}",I:"\u{1D5DC}",J:"\u{1D5DD}",K:"\u{1D5DE}",L:"\u{1D5DF}",M:"\u{1D5E0}",N:"\u{1D5E1}",O:"\u{1D5E2}",P:"\u{1D5E3}",Q:"\u{1D5E4}",R:"\u{1D5E5}",S:"\u{1D5E6}",T:"\u{1D5E7}",U:"\u{1D5E8}",V:"\u{1D5E9}",W:"\u{1D5EA}",X:"\u{1D5EB}",Y:"\u{1D5EC}",Z:"\u{1D5ED}"};return t.split("").map(r=>e[r]||r).join("")};var ve=zod.z.string().describe("message"),D=zod.z.string().describe("address");var Dr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([D,ve])});var Nr=zod.z.object({name:zod.z.string(),type:zod.z.string()}),ae=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(Nr)}).catchall(zod.z.array(Nr)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),kt=zod.z.array(zod.z.object({type:zod.z.string(),name:zod.z.string(),value:zod.z.union([zod.z.string(),zod.z.number(),zod.z.boolean(),zod.z.object({}).passthrough(),zod.z.array(zod.z.unknown()),zod.z.null()])})).nonempty(),Et=ae.or(kt),Br=zod.z.union([zod.z.string().describe("data string"),ae]),_r=zod.z.union([zod.z.string().describe("data string"),Et]),Ur=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([D,_r])}),Gr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([D,_r])}),Fr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([D,Br])}),Mr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([D,Br])});var Lr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([ve,D]),zod.z.tuple([ve,D,zod.z.string().optional().describe("password")])])});var xa=zod.z.discriminatedUnion("method",[Lr,Dr,Ur,Gr,Fr,Mr]).transform((t,e)=>{let{method:r,params:n}=t;switch(r){case vmModuleTypes.RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:r};case vmModuleTypes.RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:r};case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:{let o=n[0],a=n[1];if(typeof a!="string")return {data:a,address:o,method:r};try{let s=JSON.parse(a);return {data:Et.parse(s),address:o,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:{let o=n[0],a=n[1];if(typeof a!="string")return {data:a,address:o,method:r};try{let s=JSON.parse(a);return {data:ae.parse(s),address:o,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}}});function Vr(t){return xa.safeParse(t)}var Hr=t=>kt.safeParse(t).success,Tl=t=>ae.safeParse(t).success;var Or=t=>{try{let{EIP712Domain:e,...r}=t.types;return ethers.TypedDataEncoder.getPayload(t.domain,r,t.message),{isValid:!0}}catch(e){return {isValid:!1,error:e}}};var $r=async({request:t,network:e,approvalController:r,proxyApiUrl:n})=>{let o=Vr({method:t.method,params:t.params});if(!o.success)return console.error("invalid params",o.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams({message:"Params are invalid",data:{cause:o.error}})};let{method:a,data:s,address:i}=o.data,c;(a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(c=Or(s));let l,p,m;if(c&&!c.isValid&&(m={type:vmModuleTypes.AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements. Please verify message content!",detailedDescription:c.error.toString()}}),a===vmModuleTypes.RpcMethod.ETH_SIGN)l={type:a,account:i,data:s},p=s;else if(a===vmModuleTypes.RpcMethod.PERSONAL_SIGN)l={type:a,account:i,data:s},p=ethers.toUtf8String(s);else if(a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)l={type:a,account:i,data:s},p=Hr(s)?wr(s):ht(s);else if(a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){l={type:a,account:i,data:s};let{types:g,primaryType:v,...T}=s;p=ht(T);}if(!l||!p)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let d=await gr({request:t,proxyApiUrl:n,accountAddress:i,chainId:e.chainId,data:{method:a,params:t.params},dAppUrl:t.dappInfo.url}),u={title:"Sign Message",dAppInfo:{name:t.dappInfo.name,action:`${t.dappInfo.name} is requesting to sign the following message`,logoUri:t.dappInfo.icon},network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},account:i,details:[{title:"Message",items:[ye("Message",p,"vertical")]}],alert:d?.alert??m,balanceChange:d?.balanceChange,tokenApprovals:d?.tokenApprovals},y=await r.requestApproval({request:t,displayData:u,signingData:l});return "error"in y?{error:y.error}:"signedData"in y?{result:y.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var Wr=async(t,e)=>{try{return {result:await(await w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3})).send(t.method,t.params)}}catch(r){let n=r.info?.error?.message||r.error?.message||r.message;return {error:rpcErrors.rpcErrors.internal(n)}}};var jr=async({accountIndex:t,xpub:e,walletType:r})=>{switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getAddressFromXPub(e,t)};case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{let n=Buffer.from(e,"hex");return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getEvmAddressFromPubKey(n)}}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}};var Jr=t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string";var Ye=({accountIndex:t,derivationPathType:e})=>{if(t<0)throw rpcErrors.rpcErrors.invalidParams("Account index must be a non-negative integer");switch(e){case"bip44":return {[vmModuleTypes.NetworkVMType.EVM]:`m/44'/60'/0'/0/${t}`};case"ledger_live":return {[vmModuleTypes.NetworkVMType.EVM]:`m/44'/60'/${t}'/0/0`};default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported derivation path type: ${e}`)}};var Kr=async t=>{let{secretId:e,approvalController:r}=t,n=Jr(t)?Ye(t).EVM:void 0,o=await r.requestPublicKey({curve:"secp256k1",secretId:e,derivationPath:n});return {[vmModuleTypes.NetworkVMType.EVM]:ethers.computeAddress(`0x${o}`)}};var ie,ze=class{constructor(e){this.baseUrl=e;chunkTKL4UUHE_cjs.c(this,ie,[]);}async isNetworkSupported(e){return (await this.getChainList()).map(o=>o.community_id).some(o=>o===e)}async getChainInfo({chainId:e}){return (await this.getChainList()).find(n=>n.id===e)}async getTokenBalance({chainId:e,address:r,tokenId:n}){let o=await fetch(`${this.baseUrl}/v1/user/token?id=${r}&chain_id=${e}&token_id=${n}`);if(o.ok)return await o.json();throw new Error(`${o.status}:${o.statusText}`)}async getTokensBalanceOnChain({chainId:e,address:r}){let n=await fetch(`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getTokenList({chainId:e,address:r}){let n=await fetch(`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getChainList(){if(chunkTKL4UUHE_cjs.b(this,ie).length===0){let e=await fetch(`${this.baseUrl}/v1/chain/list`);if(e.ok)chunkTKL4UUHE_cjs.d(this,ie,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return chunkTKL4UUHE_cjs.b(this,ie)}async getNftList({address:e,chainId:r}){return _([`${this.baseUrl}/v1/user/nft_list?id=${e}&chain_id=${r}`],Va)}};ie=new WeakMap;var Ma=zod.z.object({id:zod.z.union([zod.z.custom(ethers.isHexString),zod.z.string()]),chain:zod.z.string(),name:zod.z.string()}),La=Ma.merge(zod.z.object({contract_id:zod.z.string(),description:zod.z.string().nullable(),content_type:zod.z.string().nullable(),content:zod.z.string(),thumbnail_url:zod.z.string(),total_supply:zod.z.number(),detail_url:zod.z.string(),collection_id:zod.z.string(),is_core:zod.z.boolean(),inner_id:zod.z.string(),collection_name:zod.z.string(),contract_name:zod.z.string(),amount:zod.z.number(),usd_price:zod.z.number().optional(),is_erc721:zod.z.boolean().optional(),is_erc1155:zod.z.boolean().optional()})),Va=zod.z.array(La);var N,ce,Xe,Qe,Zr,Ze=class{constructor({proxyApiUrl:e}){chunkTKL4UUHE_cjs.c(this,ce);chunkTKL4UUHE_cjs.c(this,Qe);chunkTKL4UUHE_cjs.c(this,N,void 0);chunkTKL4UUHE_cjs.d(this,N,new ze(`${e}/proxy/debank`));}async isNetworkSupported(e){return chunkTKL4UUHE_cjs.b(this,N).isNetworkSupported(e)}async getNativeBalance({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid address: "+r);let{chainInfo:o,chainIdString:a}=await chunkTKL4UUHE_cjs.e(this,ce,Xe).call(this,e),s=o.native_token_id,i=await chunkTKL4UUHE_cjs.b(this,N).getTokenBalance({address:r,chainId:a,tokenId:s}),c=new coreUtilsSdk.TokenUnit(i.raw_amount,i.decimals,i.symbol),l=c.toDisplay(),m=(await Ce()).usd[n.toLowerCase()],d=m?m*i.price:void 0,u=d?c.mul(d).toDisplay({fixedDp:2}):void 0,y=d?c.mul(d).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {name:i.name,symbol:i.symbol,decimals:i.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:i.logo_url,balance:c.toSubUnit(),balanceDisplayValue:l,balanceInCurrency:y,balanceCurrencyDisplayValue:u,priceInCurrency:d}}async listErc20Balances({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:o,chainIdString:a}=await chunkTKL4UUHE_cjs.e(this,ce,Xe).call(this,e),s=await chunkTKL4UUHE_cjs.b(this,N).getTokensBalanceOnChain({chainId:a,address:r}),i=await Ce(),c={};for(let l of s){if(l.id===o.native_token_id||l.is_core===!1)continue;let p=new coreUtilsSdk.TokenUnit(l.raw_amount,l.decimals,l.symbol),m=p.toDisplay(),d=i.usd[n.toLowerCase()],u=d?d*l.price:void 0,y=u?p.mul(u).toDisplay({fixedDp:2}):void 0,g=u?p.mul(u).toDisplay({fixedDp:2,asNumber:!0}):void 0;c[l.id]={chainId:o.community_id,address:l.id,name:l.name,symbol:l.symbol,decimals:l.decimals,logoUri:l.logo_url,balance:p.toSubUnit(),balanceCurrencyDisplayValue:y,balanceDisplayValue:m,balanceInCurrency:g,priceInCurrency:u,type:vmModuleTypes.TokenType.ERC20,reputation:null};}return c}async listNftBalances({chainId:e,address:r}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listNftBalances: not valid address");let{chainIdString:n}=await chunkTKL4UUHE_cjs.e(this,ce,Xe).call(this,e),o=await chunkTKL4UUHE_cjs.b(this,N).getNftList({chainId:n,address:r});return chunkTKL4UUHE_cjs.e(this,Qe,Zr).call(this,o)}};N=new WeakMap,ce=new WeakSet,Xe=async function(e){let n=(await chunkTKL4UUHE_cjs.b(this,N).getChainList()).find(a=>a.community_id===e)?.id;if(!n)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let o=await chunkTKL4UUHE_cjs.b(this,N).getChainInfo({chainId:n});if(!o)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);return {chainInfo:o,chainIdString:n}},Qe=new WeakSet,Zr=function(e){return e.reduce((r,n)=>({...r,[`${n.contract_id}-${n.id}`]:{address:n.contract_id,description:n.description??"",logoUri:n.thumbnail_url,logoSmall:qe(n.content),name:n.name,symbol:"",tokenId:`${n.inner_id}`,tokenUri:n.detail_url,collectionName:n.collection_name,balance:BigInt(n.amount),balanceDisplayValue:`${n.amount}`,type:n.is_erc721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{description:n.description??"",properties:""}}}),{})};var Oa=zod.z.tuple([ee,ee]).rest(ee).refine(t=>Pt(t,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(t=>Pt(t,"from"),{message:'All transactions must use the same "from" address'}).refine(t=>Wa(t,"nonce")||$a(t,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'});function $a(t,e){return !Pt(t,e)}function Wa(t,e){return t.every(r=>r[e]===void 0||r[e]==="")}function Pt(t,e){return new Set(t.map(n=>n[e])).size===1}var Qr=t=>Oa.safeParse(t);var en=async(t,e)=>{if(t[0].nonce)return;let r=await _e({from:t[0].from,provider:e});return Promise.all(t.map(async(n,o)=>{n.nonce=String(r+o);}))};var et=new Map,tn=(t,e,r)=>(et.set(t,{signingRequests:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:o},a)=>{let s=et.get(t);if(!s)throw rpcErrors.rpcErrors.resourceNotFound();let{signingRequests:i}=s,l={signingRequests:i.map((p,m)=>{if(a===void 0||a===m){let{signingData:d}=p;return {signingData:{...d,data:{...d.data,maxFeePerGas:n??d.data.maxFeePerGas,maxPriorityFeePerGas:o??d.data.maxPriorityFeePerGas}},displayData:p.displayData}}return p}),displayData:r};return et.set(t,l),l},cleanup:()=>et.delete(t)});var nn=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,proxyApiUrl:o,provider:a,populateMissingGas:s})=>{let i;try{i=await rr({proxyApiUrl:o,chainId:n,params:r,domain:e,withGasEstimation:s});}catch(u){return console.error("simulateTransactionBatch error",u),{isSimulationSuccessful:!1,alert:L[vmModuleTypes.AlertType.WARNING],scans:[]}}let c=await Promise.all(i.map(async(u,y)=>{let g=r[y],v=await gt({chainId:n,params:r[y],provider:a,rpcMethod:t,simulationResult:u});return s&&!g.gas&&v.estimatedGasLimit&&(g.gas=`0x${v.estimatedGasLimit.toString(16)}`),{transaction:g,...v}})),l=c.every(u=>u.isSimulationSuccessful),p=ja(c),m=Ya(c),d=Ja(c);return {isSimulationSuccessful:l,alert:p,balanceChange:m,tokenApprovals:d,scans:c.map(u=>(u.tokenApprovals&&(u.tokenApprovals.isEditable=!1),u))}},ja=t=>{let e={[vmModuleTypes.AlertType.INFO]:0,[vmModuleTypes.AlertType.WARNING]:1,[vmModuleTypes.AlertType.DANGER]:2};return t.reduce((r,{alert:n})=>n&&(!r||e[n.type]>e[r.type])?n:r,void 0)},Ja=t=>{let e=t.reduce((r,{tokenApprovals:n})=>(n&&n.approvals.forEach(o=>{let a=r.approvals.find(s=>o.token.address===s.token.address&&o.spenderAddress===s.spenderAddress);if(!a){r.approvals.push({...o});return}a.value=o.value,a.usdPrice=o.usdPrice;}),r),{approvals:[],isEditable:!1});return za(e,t),yt(e)?void 0:e},Ya=t=>{let e=t.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(o=>{let a=rn(r.ins,o);a?a.items.push(...o.items):r.ins.push(o);}),n.outs.forEach(o=>{let a=rn(r.outs,o);a?a.items.push(...o.items):r.outs.push({...o});})),r),{ins:[],outs:[]});return yt(e)?void 0:e},rn=(t,e)=>t.find(r=>W(r.token)&&W(e.token)?r.token.symbol===e.token.symbol:!W(r.token)&&!W(e.token)?r.token.address===e.token.address:!1),za=(t,e)=>{for(let r of t.approvals)for(let n of e)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(a=>!W(a.token)&&!W(r.token)&&a.token.address===r.token.address)))if(!n.tokenApprovals)t.approvals=t.approvals.filter(a=>a.spenderAddress!==r.spenderAddress&&r.token.address!==a.token.address);else {let a=n.tokenApprovals.approvals.find(s=>s.spenderAddress===r.spenderAddress&&s.token.address===r.token.address);if(!a)continue;r.usdPrice=a.usdPrice,r.value=a.value;}};var an=async({request:t,network:e,approvalController:r,proxyApiUrl:n})=>{let{params:o}=t,{data:a,success:s,error:i}=Qr(o);if(!s)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:i}})};let c=await w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});try{await en(a,c);}catch(x){return console.error("Unable to calculate nonce",x),{error:rpcErrors.rpcErrors.internal({message:"Unable to calculate nonce",data:{originalError:x}})}}let l=a.every(x=>Number(x.gas)>0),{alert:p,balanceChange:m,isSimulationSuccessful:d,tokenApprovals:u,scans:y}=await nn({rpcMethod:t.method,proxyApiUrl:n,chainId:e.chainId,params:a,dAppUrl:t.dappInfo.url,provider:c,populateMissingGas:!l});if(!y.every(({transaction:x})=>Number(x.gas)>0))return console.error("Gas limit is missing in some transactions"),{error:rpcErrors.rpcErrors.internal({message:"Gas limit is missing in some transactions"})};let v={title:"Do you approve these transactions?",details:[{title:"Transaction Details",items:[Ne("Website",t.dappInfo),z("From",a[0].from)]}],network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},isSimulationSuccessful:d,balanceChange:m,alert:p,tokenApprovals:u,networkFeeSelector:!0},T=y.map(x=>Me(t,e,x.transaction,x)),{cleanup:E,updateTx:k}=tn(t.requestId,T,v),I=await r.requestBatchApproval({request:t,signingRequests:T,displayData:v,updateTx:k});if(E(),"error"in I)return {error:I.error};if(I.result.length!==a.length)return {error:rpcErrors.rpcErrors.internal({message:`Invalid number of signatures. Expected ${a.length}, got ${I.result.length}`})};let xe=[];for(let[x,rt]of I.result.entries()){let Ae=x===I.result.length-1,pe=await Oe(c,rt),cn=He({provider:c,txHash:pe,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,requestId:t.requestId});if(!Ae&&!await cn)return {error:rpcErrors.rpcErrors.internal({message:`Transaction ${x+1} failed! Batch execution stopped`})};xe.push(pe);}return {result:xe}};var le,Ie,B,G,sn=class{constructor({approvalController:e,environment:r,appInfo:n}){chunkTKL4UUHE_cjs.c(this,le,void 0);chunkTKL4UUHE_cjs.c(this,Ie,void 0);chunkTKL4UUHE_cjs.c(this,B,void 0);chunkTKL4UUHE_cjs.c(this,G,void 0);let{glacierApiUrl:o,proxyApiUrl:a}=Rr(r);chunkTKL4UUHE_cjs.d(this,le,new je({glacierApiUrl:o,headers:it(n)})),chunkTKL4UUHE_cjs.d(this,Ie,new Ze({proxyApiUrl:a})),chunkTKL4UUHE_cjs.d(this,B,a),chunkTKL4UUHE_cjs.d(this,G,e);}getProvider(e){return w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3})}getAddress({accountIndex:e,xpub:r,walletType:n}){return jr({accountIndex:e,xpub:r,walletType:n})}buildDerivationPath(e){return Ye(e)}deriveAddress(e){return Kr({...e,approvalController:chunkTKL4UUHE_cjs.b(this,G)})}getBalances({addresses:e,network:r,currency:n,customTokens:o,storage:a,tokenTypes:s}){return br({addresses:e,currency:n,network:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,B),customTokens:o,balanceServices:[chunkTKL4UUHE_cjs.b(this,le),chunkTKL4UUHE_cjs.b(this,Ie)],storage:a,tokenTypes:s})}getManifest(){let e=vmModuleTypes.parseManifest(Zt);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:o,utilityAddresses:a,caipId:s}=e;return Dt({chainId:r,chainName:n,rpcUrl:o,multiContractAddress:a?.multicall,caipId:s,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,B)})}getTransactionHistory(e){let{network:r,address:n,nextPageToken:o,offset:a}=e,{chainId:s,isTestnet:i,networkToken:c,explorerUrl:l=""}=r;return Xt({chainId:s,isTestnet:i,networkToken:c,explorerUrl:l,address:n,nextPageToken:o,offset:a,glacierService:chunkTKL4UUHE_cjs.b(this,le)})}getTokens(e){let{chainId:r}=e;return we({chainId:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,B)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return Tr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,G),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,B)});case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION_BATCH:return pr(chunkTKL4UUHE_cjs.b(this,G))?an({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,G),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,B)}):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} requires BatchApprovalController`)};case vmModuleTypes.RpcMethod.PERSONAL_SIGN:case vmModuleTypes.RpcMethod.ETH_SIGN:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:return $r({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,G),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,B)});default:return Xa(e.method)?Wr(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};le=new WeakMap,Ie=new WeakMap,B=new WeakMap,G=new WeakMap;var Xa=t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t);
43
+ `;}),e},J=t=>{let e={0:"\u{1D7EC}",1:"\u{1D7ED}",2:"\u{1D7EE}",3:"\u{1D7EF}",4:"\u{1D7F0}",5:"\u{1D7F1}",6:"\u{1D7F2}",7:"\u{1D7F3}",8:"\u{1D7F4}",9:"\u{1D7F5}",a:"\u{1D5EE}",b:"\u{1D5EF}",c:"\u{1D5F0}",d:"\u{1D5F1}",e:"\u{1D5F2}",f:"\u{1D5F3}",g:"\u{1D5F4}",h:"\u{1D5F5}",i:"\u{1D5F6}",j:"\u{1D5F7}",k:"\u{1D5F8}",l:"\u{1D5F9}",m:"\u{1D5FA}",n:"\u{1D5FB}",o:"\u{1D5FC}",p:"\u{1D5FD}",q:"\u{1D5FE}",r:"\u{1D5FF}",s:"\u{1D600}",t:"\u{1D601}",u:"\u{1D602}",v:"\u{1D603}",w:"\u{1D604}",x:"\u{1D605}",y:"\u{1D606}",z:"\u{1D607}",A:"\u{1D5D4}",B:"\u{1D5D5}",C:"\u{1D5D6}",D:"\u{1D5D7}",E:"\u{1D5D8}",F:"\u{1D5D9}",G:"\u{1D5DA}",H:"\u{1D5DB}",I:"\u{1D5DC}",J:"\u{1D5DD}",K:"\u{1D5DE}",L:"\u{1D5DF}",M:"\u{1D5E0}",N:"\u{1D5E1}",O:"\u{1D5E2}",P:"\u{1D5E3}",Q:"\u{1D5E4}",R:"\u{1D5E5}",S:"\u{1D5E6}",T:"\u{1D5E7}",U:"\u{1D5E8}",V:"\u{1D5E9}",W:"\u{1D5EA}",X:"\u{1D5EB}",Y:"\u{1D5EC}",Z:"\u{1D5ED}"};return t.split("").map(r=>e[r]||r).join("")};var Ee=zod.z.string().describe("message"),N=zod.z.string().describe("address");var Nr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([N,Ee])});var Dr=zod.z.object({name:zod.z.string(),type:zod.z.string()}),ae=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(Dr)}).catchall(zod.z.array(Dr)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),kt=zod.z.array(zod.z.object({type:zod.z.string(),name:zod.z.string(),value:zod.z.union([zod.z.string(),zod.z.number(),zod.z.boolean(),zod.z.object({}).passthrough(),zod.z.array(zod.z.unknown()),zod.z.null()])})).nonempty(),Et=ae.or(kt),Br=zod.z.union([zod.z.string().describe("data string"),ae]),_r=zod.z.union([zod.z.string().describe("data string"),Et]),Ur=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([N,_r])}),Gr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([N,_r])}),Fr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([N,Br])}),Lr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([N,Br])});var Mr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([Ee,N]),zod.z.tuple([Ee,N,zod.z.string().optional().describe("password")])])});var Aa=zod.z.discriminatedUnion("method",[Mr,Nr,Ur,Gr,Fr,Lr]).transform((t,e)=>{let{method:r,params:n}=t;switch(r){case vmModuleTypes.RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:r};case vmModuleTypes.RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:r};case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:{let s=n[0],a=n[1];if(typeof a!="string")return {data:a,address:s,method:r};try{let o=JSON.parse(a);return {data:Et.parse(o),address:s,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:{let s=n[0],a=n[1];if(typeof a!="string")return {data:a,address:s,method:r};try{let o=JSON.parse(a);return {data:ae.parse(o),address:s,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}}});function Vr(t){return Aa.safeParse(t)}var Hr=t=>kt.safeParse(t).success,El=t=>ae.safeParse(t).success;var Or=t=>{try{let{EIP712Domain:e,...r}=t.types;return ethers.TypedDataEncoder.getPayload(t.domain,r,t.message),{isValid:!0}}catch(e){return {isValid:!1,error:e}}};var $r=async({request:t,network:e,approvalController:r,proxyApiUrl:n})=>{let s=Vr({method:t.method,params:t.params});if(!s.success)return console.error("invalid params",s.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams({message:"Params are invalid",data:{cause:s.error}})};let{method:a,data:o,address:i}=s.data,c;(a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(c=Or(o));let l,p,m;if(c&&!c.isValid&&(m={type:vmModuleTypes.AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements. Please verify message content!",detailedDescription:c.error.toString()}}),a===vmModuleTypes.RpcMethod.ETH_SIGN)l={type:a,account:i,data:o},p=o;else if(a===vmModuleTypes.RpcMethod.PERSONAL_SIGN)l={type:a,account:i,data:o},p=ethers.toUtf8String(o);else if(a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)l={type:a,account:i,data:o},p=Hr(o)?wr(o):ht(o);else if(a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){l={type:a,account:i,data:o};let{types:g,primaryType:v,...T}=o;p=ht(T);}if(!l||!p)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let d=await gr({request:t,proxyApiUrl:n,accountAddress:i,chainId:e.chainId,data:{method:a,params:t.params},dAppUrl:t.dappInfo.url}),u={title:"Sign Message",dAppInfo:{name:t.dappInfo.name,action:`${t.dappInfo.name} is requesting to sign the following message`,logoUri:t.dappInfo.icon},network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},account:i,details:[{title:"Message",items:[st("Message",p,"vertical")]}],alert:d?.alert??m,balanceChange:d?.balanceChange,tokenApprovals:d?.tokenApprovals},y=await r.requestApproval({request:t,displayData:u,signingData:l});return "error"in y?{error:y.error}:"signedData"in y?{result:y.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var Wr=async(t,e)=>{try{return {result:await(await w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3})).send(t.method,t.params)}}catch(r){let n=r.info?.error?.message||r.error?.message||r.message;return {error:rpcErrors.rpcErrors.internal(n)}}};var jr=async({accountIndex:t,xpub:e,walletType:r})=>{switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getAddressFromXPub(e,t)};case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{let n=Buffer.from(e,"hex");return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getEvmAddressFromPubKey(n)}}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}};var Jr=t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string";var Ye=({accountIndex:t,derivationPathType:e})=>{if(t<0)throw rpcErrors.rpcErrors.invalidParams("Account index must be a non-negative integer");switch(e){case"bip44":return {[vmModuleTypes.NetworkVMType.EVM]:`m/44'/60'/0'/0/${t}`};case"ledger_live":return {[vmModuleTypes.NetworkVMType.EVM]:`m/44'/60'/${t}'/0/0`};default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported derivation path type: ${e}`)}};var Kr=async t=>{let{secretId:e,approvalController:r}=t,n=Jr(t)?Ye(t).EVM:void 0,s=await r.requestPublicKey({curve:"secp256k1",secretId:e,derivationPath:n});return {[vmModuleTypes.NetworkVMType.EVM]:ethers.computeAddress(`0x${s}`)}};var ie,ze=class{constructor(e){this.baseUrl=e;chunkTKL4UUHE_cjs.c(this,ie,[]);}async isNetworkSupported(e){return (await this.getChainList()).map(s=>s.community_id).some(s=>s===e)}async getChainInfo({chainId:e}){return (await this.getChainList()).find(n=>n.id===e)}async getTokenBalance({chainId:e,address:r,tokenId:n}){let s=await fetch(`${this.baseUrl}/v1/user/token?id=${r}&chain_id=${e}&token_id=${n}`);if(s.ok)return await s.json();throw new Error(`${s.status}:${s.statusText}`)}async getTokensBalanceOnChain({chainId:e,address:r}){let n=await fetch(`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getTokenList({chainId:e,address:r}){let n=await fetch(`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getChainList(){if(chunkTKL4UUHE_cjs.b(this,ie).length===0){let e=await fetch(`${this.baseUrl}/v1/chain/list`);if(e.ok)chunkTKL4UUHE_cjs.d(this,ie,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return chunkTKL4UUHE_cjs.b(this,ie)}async getNftList({address:e,chainId:r}){return _([`${this.baseUrl}/v1/user/nft_list?id=${e}&chain_id=${r}`],Va)}};ie=new WeakMap;var La=zod.z.object({id:zod.z.union([zod.z.custom(ethers.isHexString),zod.z.string()]),chain:zod.z.string(),name:zod.z.string()}),Ma=La.merge(zod.z.object({contract_id:zod.z.string(),description:zod.z.string().nullable(),content_type:zod.z.string().nullable(),content:zod.z.string(),thumbnail_url:zod.z.string(),total_supply:zod.z.number(),detail_url:zod.z.string(),collection_id:zod.z.string(),is_core:zod.z.boolean(),inner_id:zod.z.string(),collection_name:zod.z.string(),contract_name:zod.z.string(),amount:zod.z.number(),usd_price:zod.z.number().optional(),is_erc721:zod.z.boolean().optional(),is_erc1155:zod.z.boolean().optional()})),Va=zod.z.array(Ma);var D,ce,Xe,Qe,Zr,Ze=class{constructor({proxyApiUrl:e}){chunkTKL4UUHE_cjs.c(this,ce);chunkTKL4UUHE_cjs.c(this,Qe);chunkTKL4UUHE_cjs.c(this,D,void 0);chunkTKL4UUHE_cjs.d(this,D,new ze(`${e}/proxy/debank`));}async isNetworkSupported(e){return chunkTKL4UUHE_cjs.b(this,D).isNetworkSupported(e)}async getNativeBalance({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid address: "+r);let{chainInfo:s,chainIdString:a}=await chunkTKL4UUHE_cjs.e(this,ce,Xe).call(this,e),o=s.native_token_id,i=await chunkTKL4UUHE_cjs.b(this,D).getTokenBalance({address:r,chainId:a,tokenId:o}),c=new coreUtilsSdk.TokenUnit(i.raw_amount,i.decimals,i.symbol),l=c.toDisplay(),m=(await we()).usd[n.toLowerCase()],d=m?m*i.price:void 0,u=d?c.mul(d).toDisplay({fixedDp:2}):void 0,y=d?c.mul(d).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {name:i.name,symbol:i.symbol,decimals:i.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:i.logo_url,balance:c.toSubUnit(),balanceDisplayValue:l,balanceInCurrency:y,balanceCurrencyDisplayValue:u,priceInCurrency:d}}async listErc20Balances({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:s,chainIdString:a}=await chunkTKL4UUHE_cjs.e(this,ce,Xe).call(this,e),o=await chunkTKL4UUHE_cjs.b(this,D).getTokensBalanceOnChain({chainId:a,address:r}),i=await we(),c={};for(let l of o){if(l.id===s.native_token_id||l.is_core===!1)continue;let p=new coreUtilsSdk.TokenUnit(l.raw_amount,l.decimals,l.symbol),m=p.toDisplay(),d=i.usd[n.toLowerCase()],u=d?d*l.price:void 0,y=u?p.mul(u).toDisplay({fixedDp:2}):void 0,g=u?p.mul(u).toDisplay({fixedDp:2,asNumber:!0}):void 0;c[l.id]={chainId:s.community_id,address:l.id,name:l.name,symbol:l.symbol,decimals:l.decimals,logoUri:l.logo_url,balance:p.toSubUnit(),balanceCurrencyDisplayValue:y,balanceDisplayValue:m,balanceInCurrency:g,priceInCurrency:u,type:vmModuleTypes.TokenType.ERC20,reputation:null};}return c}async listNftBalances({chainId:e,address:r}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listNftBalances: not valid address");let{chainIdString:n}=await chunkTKL4UUHE_cjs.e(this,ce,Xe).call(this,e),s=await chunkTKL4UUHE_cjs.b(this,D).getNftList({chainId:n,address:r});return chunkTKL4UUHE_cjs.e(this,Qe,Zr).call(this,s)}};D=new WeakMap,ce=new WeakSet,Xe=async function(e){let n=(await chunkTKL4UUHE_cjs.b(this,D).getChainList()).find(a=>a.community_id===e)?.id;if(!n)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let s=await chunkTKL4UUHE_cjs.b(this,D).getChainInfo({chainId:n});if(!s)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);return {chainInfo:s,chainIdString:n}},Qe=new WeakSet,Zr=function(e){return e.reduce((r,n)=>({...r,[`${n.contract_id}-${n.id}`]:{address:n.contract_id,description:n.description??"",logoUri:n.thumbnail_url,logoSmall:qe(n.content),name:n.name,symbol:"",tokenId:`${n.inner_id}`,tokenUri:n.detail_url,collectionName:n.collection_name,balance:BigInt(n.amount),balanceDisplayValue:`${n.amount}`,type:n.is_erc721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{description:n.description??"",properties:""}}}),{})};var Oa=zod.z.tuple([ee,ee]).rest(ee).refine(t=>Rt(t,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(t=>Rt(t,"from"),{message:'All transactions must use the same "from" address'}).refine(t=>Wa(t,"nonce")||$a(t,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'});function $a(t,e){return !Rt(t,e)}function Wa(t,e){return t.every(r=>r[e]===void 0||r[e]==="")}function Rt(t,e){return new Set(t.map(n=>n[e])).size===1}var Qr=t=>Oa.safeParse(t);var en=async(t,e)=>{if(t[0].nonce)return;let r=await _e({from:t[0].from,provider:e});return Promise.all(t.map(async(n,s)=>{n.nonce=String(r+s);}))};var et=new Map,tn=(t,e,r)=>(et.set(t,{signingRequests:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:s},a)=>{let o=et.get(t);if(!o)throw rpcErrors.rpcErrors.resourceNotFound();let{signingRequests:i}=o,l={signingRequests:i.map((p,m)=>{if(a===void 0||a===m){let{signingData:d}=p;return {signingData:{...d,data:{...d.data,maxFeePerGas:n??d.data.maxFeePerGas,maxPriorityFeePerGas:s??d.data.maxPriorityFeePerGas}},displayData:p.displayData}}return p}),displayData:r};return et.set(t,l),l},cleanup:()=>et.delete(t)});var nn=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,proxyApiUrl:s,provider:a,populateMissingGas:o})=>{let i;try{i=await rr({proxyApiUrl:s,chainId:n,params:r,domain:e,withGasEstimation:o});}catch(u){return console.error("simulateTransactionBatch error",u),{isSimulationSuccessful:!1,alert:V[vmModuleTypes.AlertType.WARNING],scans:[]}}let c=await Promise.all(i.map(async(u,y)=>{let g=r[y],v=await gt({chainId:n,params:r[y],provider:a,rpcMethod:t,simulationResult:u});return o&&!g.gas&&v.estimatedGasLimit&&(g.gas=`0x${v.estimatedGasLimit.toString(16)}`),{transaction:g,...v}})),l=c.every(u=>u.isSimulationSuccessful),p=ja(c),m=Ya(c),d=Ja(c);return {isSimulationSuccessful:l,alert:p,balanceChange:m,tokenApprovals:d,scans:c.map(u=>(u.tokenApprovals&&(u.tokenApprovals.isEditable=!1),u))}},ja=t=>{let e={[vmModuleTypes.AlertType.INFO]:0,[vmModuleTypes.AlertType.WARNING]:1,[vmModuleTypes.AlertType.DANGER]:2};return t.reduce((r,{alert:n})=>n&&(!r||e[n.type]>e[r.type])?n:r,void 0)},Ja=t=>{let e=t.reduce((r,{tokenApprovals:n})=>(n&&n.approvals.forEach(s=>{let a=r.approvals.find(o=>s.token.address===o.token.address&&s.spenderAddress===o.spenderAddress);if(!a){r.approvals.push({...s});return}a.value=s.value,a.usdPrice=s.usdPrice;}),r),{approvals:[],isEditable:!1});return za(e,t),yt(e)?void 0:e},Ya=t=>{let e=t.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(s=>{let a=rn(r.ins,s);a?a.items.push(...s.items):r.ins.push(s);}),n.outs.forEach(s=>{let a=rn(r.outs,s);a?a.items.push(...s.items):r.outs.push({...s});})),r),{ins:[],outs:[]});return yt(e)?void 0:e},rn=(t,e)=>t.find(r=>q(r.token)&&q(e.token)?r.token.symbol===e.token.symbol:!q(r.token)&&!q(e.token)?r.token.address===e.token.address:!1),za=(t,e)=>{for(let r of t.approvals)for(let n of e)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(a=>!q(a.token)&&!q(r.token)&&a.token.address===r.token.address)))if(!n.tokenApprovals)t.approvals=t.approvals.filter(a=>a.spenderAddress!==r.spenderAddress&&r.token.address!==a.token.address);else {let a=n.tokenApprovals.approvals.find(o=>o.spenderAddress===r.spenderAddress&&o.token.address===r.token.address);if(!a)continue;r.usdPrice=a.usdPrice,r.value=a.value;}};var an=async({request:t,network:e,approvalController:r,proxyApiUrl:n})=>{let{params:s}=t,{data:a,success:o,error:i}=Qr(s);if(!o)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:i}})};let c=await w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});try{await en(a,c);}catch(A){return console.error("Unable to calculate nonce",A),{error:rpcErrors.rpcErrors.internal({message:"Unable to calculate nonce",data:{originalError:A}})}}let l=a.every(A=>Number(A.gas)>0),{alert:p,balanceChange:m,isSimulationSuccessful:d,tokenApprovals:u,scans:y}=await nn({rpcMethod:t.method,proxyApiUrl:n,chainId:e.chainId,params:a,dAppUrl:t.dappInfo.url,provider:c,populateMissingGas:!l});if(!y.every(({transaction:A})=>Number(A.gas)>0))return console.error("Gas limit is missing in some transactions"),{error:rpcErrors.rpcErrors.internal({message:"Gas limit is missing in some transactions"})};let v={title:"Do you approve these transactions?",details:[{title:"Transaction Details",items:[Ne("Website",t.dappInfo),K("Account",a[0].from),De("Network",{name:e.chainName,logoUri:e.logoUri})]}],isSimulationSuccessful:d,balanceChange:m,alert:p,tokenApprovals:u,networkFeeSelector:!0},T=y.map(A=>Le(t,e,A.transaction,A)),{cleanup:E,updateTx:k}=tn(t.requestId,T,v),S=await r.requestBatchApproval({request:t,signingRequests:T,displayData:v,updateTx:k});if(E(),"error"in S)return {error:S.error};if(S.result.length!==a.length)return {error:rpcErrors.rpcErrors.internal({message:`Invalid number of signatures. Expected ${a.length}, got ${S.result.length}`})};let Se=[];for(let[A,rt]of S.result.entries()){let Ae=A===S.result.length-1,pe=await Oe(c,rt),cn=He({explorerUrl:e.explorerUrl??"",provider:c,txHash:pe,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t});if(!Ae&&!await cn)return {error:rpcErrors.rpcErrors.internal({message:`Transaction ${A+1} failed! Batch execution stopped`})};Se.push(pe);}return {result:Se}};var le,xe,B,G,sn=class{constructor({approvalController:e,environment:r,appInfo:n}){chunkTKL4UUHE_cjs.c(this,le,void 0);chunkTKL4UUHE_cjs.c(this,xe,void 0);chunkTKL4UUHE_cjs.c(this,B,void 0);chunkTKL4UUHE_cjs.c(this,G,void 0);let{glacierApiUrl:s,proxyApiUrl:a}=Pr(r);chunkTKL4UUHE_cjs.d(this,le,new je({glacierApiUrl:s,headers:it(n)})),chunkTKL4UUHE_cjs.d(this,xe,new Ze({proxyApiUrl:a})),chunkTKL4UUHE_cjs.d(this,B,a),chunkTKL4UUHE_cjs.d(this,G,e);}getProvider(e){return w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3})}getAddress({accountIndex:e,xpub:r,walletType:n}){return jr({accountIndex:e,xpub:r,walletType:n})}buildDerivationPath(e){return Ye(e)}deriveAddress(e){return Kr({...e,approvalController:chunkTKL4UUHE_cjs.b(this,G)})}getBalances({addresses:e,network:r,currency:n,customTokens:s,storage:a,tokenTypes:o}){return br({addresses:e,currency:n,network:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,B),customTokens:s,balanceServices:[chunkTKL4UUHE_cjs.b(this,le),chunkTKL4UUHE_cjs.b(this,xe)],storage:a,tokenTypes:o})}getManifest(){let e=vmModuleTypes.parseManifest(Zt);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:s,utilityAddresses:a,caipId:o}=e;return Nt({chainId:r,chainName:n,rpcUrl:s,multiContractAddress:a?.multicall,caipId:o,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,B)})}getTransactionHistory(e){let{network:r,address:n,nextPageToken:s,offset:a}=e,{chainId:o,isTestnet:i,networkToken:c,explorerUrl:l=""}=r;return Xt({chainId:o,isTestnet:i,networkToken:c,explorerUrl:l,address:n,nextPageToken:s,offset:a,glacierService:chunkTKL4UUHE_cjs.b(this,le)})}getTokens(e){let{chainId:r}=e;return Ie({chainId:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,B)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return Tr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,G),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,B)});case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION_BATCH:return pr(chunkTKL4UUHE_cjs.b(this,G))?an({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,G),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,B)}):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} requires BatchApprovalController`)};case vmModuleTypes.RpcMethod.PERSONAL_SIGN:case vmModuleTypes.RpcMethod.ETH_SIGN:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:return $r({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,G),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,B)});default:return Xa(e.method)?Wr(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};le=new WeakMap,xe=new WeakMap,B=new WeakMap,G=new WeakMap;var Xa=t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t);
44
44
 
45
- exports.ERC20TransactionType = $;
45
+ exports.ERC20TransactionType = W;
46
46
  exports.EvmModule = sn;
47
47
  exports.NonContractCallTypes = Yt;
48
48
  exports.addIdToPromise = te;
49
- exports.isTypedData = Tl;
49
+ exports.isTypedData = El;
50
50
  exports.isTypedDataV1 = Hr;
51
51
  exports.settleAllIdPromises = re;
52
52
  //# sourceMappingURL=out.js.map