@avalabs/evm-module 1.9.1 → 1.9.2

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.js CHANGED
@@ -2,37 +2,37 @@ import { c, d, b, a, e } from './chunk-7VP42LRT.js';
2
2
  import { TransactionType, AlertType, RpcMethod, parseManifest, AppName, TokenType, Environment, WalletType, NetworkVMType, DetailItemType, RawSimplePriceResponseSchema } from '@avalabs/vm-module-types';
3
3
  import { rpcErrors } from '@metamask/rpc-errors';
4
4
  import { JsonRpcBatchInternal, getEvmAddressFromPubKey, getAddressFromXPub } from '@avalabs/core-wallets-sdk';
5
+ import { getBasicCoingeckoHttp, VsCurrencyType, simpleTokenPrice, simplePrice } from '@avalabs/core-coingecko-sdk';
6
+ import { object, string, record, number, z as z$1 } from 'zod';
7
+ import { Glacier, Erc1155Token, Erc721Token, FetchHttpRequest } from '@avalabs/glacier-sdk';
5
8
  import { isHexString, Network, toUtf8String, computeAddress, TypedDataEncoder, Interface, ethers } from 'ethers';
6
9
  import { TokenUnit, numberToBN, balanceToDisplayValue, ipfsResolver } from '@avalabs/core-utils-sdk';
7
10
  import { ChainId } from '@avalabs/core-chains-sdk';
8
11
  import { getNormalTxs, getErc20Txs } from '@avalabs/core-etherscan-sdk';
9
- import bn from 'lodash.startcase';
10
- import er from '@openzeppelin/contracts/build/contracts/ERC20.json';
11
- import it from '@blockaid/client';
12
- import Zt from 'xss';
13
- import { z as z$1, object, string, record, number } from 'zod';
14
- import { Glacier, Erc1155Token, Erc721Token } from '@avalabs/glacier-sdk';
15
- import { getBasicCoingeckoHttp, VsCurrencyType, simpleTokenPrice, simplePrice } from '@avalabs/core-coingecko-sdk';
12
+ import Gn from 'lodash.startcase';
13
+ import ir from '@openzeppelin/contracts/build/contracts/ERC20.json';
14
+ import ut from '@blockaid/client';
15
+ import or from 'xss';
16
16
 
17
- async function xe({chainId:t,proxyApiUrl:e}){let r=await fetch(`${e}/tokens?evmChainId=${t}`);if(!r.ok)throw rpcErrors.internal(`Failed to fetch tokens for chainId ${t}`);return r.json()}var ln=process.env.GLACIER_API_KEY,w=async t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:o,pollingInterval:a=2e3}=t,s=new JsonRpcBatchInternal({maxCalls:40,multiContractAddress:o},mn(n,ln),new Network(r,e));return s.pollingInterval=a,s},pn=["glacier-api.avax.network","proxy-api.avax.network"];function mn(t,e){let r=new URL(t);if(e&&pn.includes(r.hostname)){let n=r.searchParams;return n.set("token",e),r.search=n.toString(),r.toString()}return t}var rt={LOW:1n,MEDIUM:4n,HIGH:6n},nt=500000000n,dn=t=>t===ChainId.AVALANCHE_TESTNET_ID||t===ChainId.AVALANCHE_MAINNET_ID;async function Rt({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.internal("Proxy API URL is needed");if(dn(t))try{let T=await un(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.internal("There is no block");let c=i.baseFeePerGas;if(!c)throw rpcErrors.internal("Pre-EIP-1559 networks are not supported");let l=await fn(a,o),p=new TokenUnit(l,0,""),m=new TokenUnit(c,0,""),d=BigInt("1000000000"),u=m.mul(p).add(d).toSubUnit(),y=nt*rt.LOW,g=nt*rt.MEDIUM,v=nt*rt.HIGH;return {baseFee:u,low:{maxFeePerGas:u+y,maxPriorityFeePerGas:y},medium:{maxFeePerGas:u+g,maxPriorityFeePerGas:g},high:{maxFeePerGas:u+v,maxPriorityFeePerGas:v},isFixedFee:!1,displayDecimals:9}}async function un(t){let e=await t.send("eth_suggestPriceOptions",[]);return {low:{maxFeePerGas:BigInt(e.slow.maxFeePerGas),maxPriorityFeePerGas:BigInt(e.slow.maxPriorityFeePerGas)},medium:{maxFeePerGas:BigInt(e.normal.maxFeePerGas),maxPriorityFeePerGas:BigInt(e.normal.maxPriorityFeePerGas)},high:{maxFeePerGas:BigInt(e.fast.maxFeePerGas),maxPriorityFeePerGas:BigInt(e.fast.maxPriorityFeePerGas)}}}async function fn(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 J(t,e,r="tx"){return `${t}/${r}/${e}`}var It=({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 TokenUnit(t.value,e.decimals,e.symbol).toDisplay(),p=a?TransactionType.SEND:TransactionType.RECEIVE,{from:m,to:d,gasPrice:u,gasUsed:y,hash:g}=t,v=J(n,g);return {isIncoming:!a,isOutgoing:a,isContractCall:hn(t),timestamp:s,hash:g,isSender:a,from:m,to:d,tokens:[{decimal:i.toString(),name:e.name,symbol:e.symbol,amount:l,type:TokenType.NATIVE}],gasUsed:y,gasPrice:u,chainId:r.toString(),txType:p,explorerLink:v}};function hn(t){return t.input!=="0x"}function At({tx:t,address:e,explorerUrl:r,chainId:n}){let o=t.from.toLowerCase()===e.toLowerCase(),a=parseInt(t.timeStamp)*1e3,i=new 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?TransactionType.SEND:TransactionType.RECEIVE,T=J(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:TokenType.ERC20,amount:i}],gasUsed:m,gasPrice:p,chainId:n.toString(),txType:v,explorerLink:T}}var wt=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 getNormalTxs(o,!t,{page:c,offset:s}):[]).map(g=>It({tx:g,chainId:n,networkToken:e,explorerUrl:r,address:o})),m=(l.includes("erc20")?await getErc20Txs(o,!t,void 0,{page:c,offset:s}):[]).map(g=>At({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 Ct=t=>t===1||t===5||t===4||t===11155111;var Bt=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},o,a)=>{let s=!e&&!r&&!n,i=Pn(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]&&Nt(a[0].type)&&a[0].from?.address.toLowerCase()===c,k=!!a[0]&&Nt(a[0].type)&&a[0].to?.address.toLowerCase()===c;return l?TransactionType.SWAP:p?TransactionType.SEND:m?TransactionType.RECEIVE:d?TransactionType.NFT_BUY:u?TransactionType.APPROVE:E?TransactionType.NFT_SEND:k?TransactionType.NFT_RECEIVE:y?TransactionType.TRANSFER:g?TransactionType.AIRDROP:v?TransactionType.UNWRAP:T?TransactionType.FILL_ORDER:TransactionType.UNKNOWN};function Nt(t){return t===TokenType.ERC721||t===TokenType.ERC1155}var Pn=(t="")=>t.includes("(")?bn(t.split("(",1)[0]):t;var _t=(t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},o)=>{let a=t===TransactionType.TRANSFER,s=t===TransactionType.SEND,i=t===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 Ut(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var Sn="https://ipfs.io";function z(t,e=Sn){if(!t)return "";try{return ipfsResolver(t,e)}catch{return t}}async function In(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}async function Ft(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 In(z(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}var xn="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Gt(t,e="256"){let r=z(t);return `${xn}/width=${e},fit/${r}`}var Lt=async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},o)=>{let a=[];if(t.value!=="0"){let s=o.decimals,c=new 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:TokenType.NATIVE});}return e?.forEach(s=>{let i=s.erc20Token.decimals,l=new 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:TokenType.ERC20});}),r&&await Promise.allSettled(r.map(async s=>{let i=s.erc721Token,c=await Vt(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:TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async s=>{let i=s.erc1155Token,c=await Vt(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:TokenType.ERC1155});})),a},Vt=async(t,e)=>{if(e)return e.startsWith("ipfs://")?z(e):e;{let[r,n]=await Ut(Ft(t));return n?"":r.image?Gt(r.image):""}};var Ht=[TransactionType.SEND,TransactionType.RECEIVE,TransactionType.TRANSFER],O=(s=>(s.TOTAL_SUPPLY="totalSupply",s.BALANCE_OF="balanceOf",s.TRANSFER="transfer",s.TRANSFER_FROM="transferFrom",s.APPROVE="approve",s.ALLOWANCE="allowance",s))(O||{});var $t=async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:o})=>{let a=await Lt(t,r),s=Bt(t,o,a),{isOutgoing:i,isIncoming:c,isSender:l,from:p,to:m}=_t(s,t,o),{blockTimestamp:d,txHash:u,gasPrice:y,gasUsed:g}=t.nativeTransaction,v=J(e,u);return {isContractCall:!Ht.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 Ot=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=>$t({transactions:p,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(m=>m)))).filter(p=>p.tokens.find(m=>Number(m.amount)!==0)),nextPageToken:i.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var Wt=async({chainId:t,isTestnet:e,networkToken:r,explorerUrl:n,address:o,nextPageToken:a,offset:s,glacierService:i})=>Ct(t)?wt({isTestnet:e,networkToken:r,explorerUrl:n,chainId:t,address:o,nextPageToken:a,offset:s}):i.isHealthy()?Ot({networkToken:r,explorerUrl:n,chainId:t,address:o,nextPageToken:a,offset:s,glacierService:i}):{transactions:[],nextPageToken:""};var jt={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 we=async({from:t,provider:e})=>e.getTransactionCount(t);var Ce=t=>{if(t.data)try{let r=new Interface(er.abi).parseTransaction({data:t.data,value:t.value}),n=r?.name??r?.fragment?.name;return n&&Dn(n)?n:void 0}catch{return}};function Dn(t){return Object.values(O).includes(t)}function qt(t,e,r){return new ethers.Contract(t,er.abi).interface.encodeFunctionData("approve",[e,r])}var De=new Map,Jt=(t,e,r)=>(De.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:o,approvalLimit:a})=>{let s=De.get(t);if(!s)throw 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.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let d=c.tokenApprovals;_n(d),Un(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 De.set(t,m),m},cleanup:()=>De.delete(t)});function _n(t){if(!t||!t.isEditable||t.approvals.length!==1)throw rpcErrors.invalidInput("Cannot edit the token approval for this request. Please start a new request instead.")}function Un(t){if((!t||t==="0x"?null:Ce({data:t??void 0}))!=="approve")throw rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}var zt=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 de=(t,e,r="horizontal")=>({label:t,alignment:r,type:DetailItemType.TEXT,value:e}),_e=(t,e)=>({label:t,value:e,type:DetailItemType.LINK}),Y=(t,e)=>({label:t,type:DetailItemType.ADDRESS,value:e});var st=(t,e)=>({label:t,type:DetailItemType.DATA,value:e});var Ue=(t,e,r,{isSimulationSuccessful:n,balanceChange:o,tokenApprovals:a,alert:s})=>{let{dappInfo:i}=t,c=Ce(r),l="Do you approve this transaction?";c==="approve"&&(l="Do you approve this spend limit?");let p=[_e("Website",i),Y("From",r.from)];r.to&&p.push(Y("To",r.to)),c&&p.push(de("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: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 ct="DUMMY_API_KEY",Yt=async({proxyApiUrl:t,chainId:e,params:r,domain:n,withGasEstimation:o})=>{let a=new it({baseURL:t+"/proxy/blockaid/",apiKey:ct}),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}})},Kt=async({proxyApiUrl:t,chainId:e,params:r,domain:n})=>new it({baseURL:t+"/proxy/blockaid/",apiKey:ct}).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}}),Xt=async({proxyApiUrl:t,chainId:e,accountAddress:r,data:n,domain:o})=>new it({baseURL:t+"/proxy/blockaid/",apiKey:ct}).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 tr=async(t,e,r)=>{if(!t.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.Contract(t.to,er.abi,r),o=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),a=Zt(o[0]),s=Zt(o[1]),i=parseInt(o[2]),c={type:TokenType.ERC20,name:a,chainId:e,symbol:s,decimals:i,address:t.to,contractType:"ERC-20"},l=new ethers.Interface(er.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 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 Fe(t){return t.type===TokenType.ERC20}function rr(t){return typeof t.to=="string"}function nr(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}function Ln(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}function Hn(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}function lt(t){return Ln(t)?t.ins.length===0&&t.outs.length===0:Hn(t)?t.approvals.length===0:!1}var M={[AlertType.WARNING]:{type:AlertType.WARNING,details:{title:"Suspicious Transaction",description:"Use caution, this transaction may be malicious."}},[AlertType.DANGER]:{type: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 or=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:o,proxyApiUrl:a})=>{let s;try{s=await Kt({proxyApiUrl:a,chainId:n,params:r,domain:e});}catch(i){console.error("simulateTransaction error",i);}return pt({rpcMethod:t,params:r,chainId:n,provider:o,simulationResult:s})},pt=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=M[AlertType.WARNING]:p.result_type==="Malicious"&&(a=M[AlertType.DANGER]),m?.status==="Success"&&(c=!0,i=sr(t,m.account_summary),s=ir(m.account_summary.assets_diffs)),d?.status==="Success"&&(l=Number(d.estimate));}if(!c&&rr(e)){let p=await tr(e,r,n);s=p.balanceChange,i=p.tokenApprovals;}return {alert:a,balanceChange:s,tokenApprovals:i,isSimulationSuccessful:c,estimatedGasLimit:l}},qn=t=>t.trace_type==="ExposureTrace",Jn=(t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,zn=t=>t===void 0||t.length===0?{}:t.reduce((e,r)=>qn(r)?{[Jn(r.spender,r.asset.address)]:r}:e,{}),sr=(t,e)=>{let{traces:r}=e,n=zn(r),o=Object.entries(n).map(([s,i])=>{let c=cr(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===TokenType.ERC20&&t===RpcMethod.ETH_SEND_TRANSACTION,approvals:o}},ir=t=>{let e=ar(t,"in"),r=ar(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},ar=(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?cr(n):Yn(n);if(!o)return;let a=r[e].map(s=>{let i;if("value"in s&&s.value)if("decimals"in o){let c=numberToBN(s.value,o.decimals);i=balanceToDisplayValue(c,o.decimals);}else isHexString(s.value)&&(i=parseInt(s.value,16).toString());else "type"in o&&o.type===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),cr=t=>{let e;return t.type==="ERC20"?e={type: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:TokenType.ERC1155,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="ERC721"?e={type:TokenType.ERC721,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="NONERC"&&(e={type:TokenType.NONERC,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}),e},Yn=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),lr=async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:o,proxyApiUrl:a})=>{let s,i,c;try{let{validation:l,simulation:p}=await Xt({proxyApiUrl:a,chainId:n,accountAddress:r,data:o,domain:e});!l||l.result_type==="Error"||l.result_type==="Warning"?s=M[AlertType.WARNING]:l.result_type==="Malicious"&&(s=M[AlertType.DANGER]),p?.status==="Success"&&(c=sr(t.method,p.account_summary),i=ir(p.account_summary.assets_diffs));}catch(l){console.error("processJsonRpcSimulation error",l),s=M[AlertType.WARNING];}return {alert:s,balanceChange:i,tokenApprovals:c}};var X=z$1.object({from:z$1.string().length(42),to:z$1.string().length(42).optional(),data:z$1.string().optional(),value:z$1.string().startsWith("0x").optional(),gas:z$1.string().startsWith("0x").optional(),gasPrice:z$1.string().startsWith("0x").optional(),maxFeePerGas:z$1.string().startsWith("0x").optional(),maxPriorityFeePerGas:z$1.string().startsWith("0x").optional(),nonce:z$1.string().optional(),chainId:z$1.string().optional().or(z$1.number().optional()),accessList:z$1.array(z$1.object({address:z$1.string().startsWith("0x"),storageKeys:z$1.array(z$1.string())})).optional()});var Xn=z$1.tuple([X]),pr=t=>Xn.safeParse(t);var Me=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 Ve=async(t,e)=>"txHash"in e?e.txHash:await t.send("eth_sendRawTransaction",[e.signedData]);var mr=async({request:t,network:e,approvalController:r,proxyApiUrl:n})=>{let{params:o}=t,{data:a,error:s,success:i}=pr(o);if(!i)return console.error("invalid params",s),{error: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 zt({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.internal("Unable to calculate gas limit")}}if(!c.nonce)try{let T=await we({from:c.from,provider:l});c.nonce=String(T);}catch{return {error:rpcErrors.internal("Unable to calculate nonce")}}let p=await or({rpcMethod:t.method,proxyApiUrl:n,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:l}),{displayData:m,signingData:d}=Ue(t,e,c,p),{updateTx:u,cleanup:y}=Jt(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 Ve(l,g);}catch(T){return {error:rpcErrors.internal({message:"Unable to get transaction hash",data:{cause:T}})}}return Me({provider:l,txHash:v,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,requestId:t.requestId}),{result:v}};async function dr(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 Z(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}async function Q(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 mt=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=fe.exponential()})=>{let o=0,a=0,s;for(;a<r;){a>0&&await Zn(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)},fe=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return r=>e*1e3}static constantMs(e){return r=>e}};function Zn(t){return new Promise(e=>setTimeout(e,t))}var dt=t=>mt({operation:e=>t(e>0),maxRetries:2,backoffPolicy:fe.constant(1),isSuccess:e=>e?.status?.error_code!==429});function ur(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function ut(t){let e,r=0;for(e=0;e<t.length;e++){let n=ur(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 ye=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"}}],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"}}],RawSimplePriceResponseSchema)}};var yr=getBasicCoingeckoHttp(),V,ee,te=class{constructor({storage:e,proxyApiUrl:r}){c(this,V,void 0);c(this,ee,void 0);a(this,"transformSimplePriceResponse",(e,r=[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});d(this,V,e),d(this,ee,r);}async getSimplePrice({coinIds:e=[],currencies:r=[VsCurrencyType.USD]}){let n,a=`getSimplePrice-${e?`${ut(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=b(this,V)?.get?.(a),n)return n;try{n=await dt(s=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{n=void 0;}return b(this,V)?.set?.(a,n),n}async getPricesByAddresses(e,r,n=VsCurrencyType.USD){let o,s=`getPricesWithMarketDataByAddresses-${`${ut(e)}-${r}-${n}`}`;if(o=b(this,V)?.get?.(s),o)return o;try{o=await dt(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:i}));}catch(i){console.error(i),o=void 0;}return b(this,V)?.set?.(s,o),o}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=VsCurrencyType.USD,useCoingeckoProxy:o=!1}){if(o){let a=await new ye(b(this,ee)).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 simpleTokenPrice(yr,{assetPlatformId:e,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:r=[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 ye(b(this,ee)).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 simplePrice(yr,{coinIds:e,currencies:r,marketCap:n,vol24:o,change24:a,lastUpdated:s,shouldThrow:c})}};V=new WeakMap,ee=new WeakMap;var sa="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",ia="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",gr=object({date:string(),usd:record(number())}),He=async()=>{try{return await _([sa],gr)}catch{return await _([ia],gr)}};var ft=({name:t,version:e})=>{switch(t){case AppName.CORE_MOBILE_IOS:case AppName.CORE_MOBILE_ANDROID:case AppName.CORE_WEB:case AppName.CORE_EXTENSION:case AppName.EXPLORER:return {"x-application-name":t,"x-application-version":e};case AppName.OTHER:return}};var A,ne,j,he,$e=class{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:o}){c(this,A,void 0);c(this,ne,void 0);c(this,j,void 0);c(this,he,void 0);d(this,A,e),d(this,ne,r),d(this,j,n),d(this,he,o);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let o=await w({chainId:e,chainName:b(this,A).chainName,rpcUrl:b(this,A).rpcUrl,multiContractAddress:b(this,A).utilityAddresses?.multicall}),a=b(this,A).pricingProviders?.coingecko.nativeTokenId,s=b(this,A).networkToken,i=new te({storage:b(this,ne),proxyApiUrl: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 o.getBalance(r),y=new TokenUnit(u,s.decimals,s.symbol),g=l!==void 0?y.mul(l):void 0;return {...s,coingeckoId:a??"",type: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:b(this,A).chainName,rpcUrl:b(this,A).rpcUrl,multiContractAddress:b(this,A).utilityAddresses?.multicall}),a=b(this,A).pricingProviders?.coingecko.assetPlatformId,s=b(this,A).pricingProviders?.coingecko.nativeTokenId,i=await xe({chainId:Number(e),proxyApiUrl:b(this,j)}),c=i.map(T=>T.address),l=[...i,...b(this,he)].filter(Fe),p=async T=>{let I=await new ethers.Contract(T.address,er.abi,o).balanceOf?.(r)||0n;return {...T,balance:I}},m=l.map(T=>Z(p(T),T.address)),d=await Q(m),u=new te({storage:b(this,ne),proxyApiUrl: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 I=y?.[s??""]?.[n]?.price??void 0,Se=y?.[s??""]?.[n]?.marketCap??void 0,x=y?.[s??""]?.[n]?.vol24??void 0,et=y?.[s??""]?.[n]?.change24??void 0,Ie=new TokenUnit(k.balance,k.decimals,k.symbol),pe=I!==void 0?Ie.mul(I):void 0;v[k.address.toLowerCase()]={...k,type:TokenType.ERC20,balance:k.balance,balanceDisplayValue:Ie.toDisplay(),balanceInCurrency:pe?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:pe?.toDisplay({fixedDp:2}),priceInCurrency:I,marketCap:Se,change24:et,vol24:x,reputation:null};}return v}async listNftBalances(){return {}}};A=new WeakMap,ne=new WeakMap,j=new WeakMap,he=new WeakMap;var kr=async({addresses:t,currency:e,network:r,proxyApiUrl:n,tokenTypes:o=[TokenType.NATIVE,TokenType.ERC20,TokenType.ERC721,TokenType.ERC1155],customTokens:a=[],storage:s,balanceServices:i=[]})=>{let c=r.chainId,l=[...i,new $e({network:r,storage:s,proxyApiUrl:n,customTokens:a})],p=await dr(l,d=>d.isNetworkSupported(r.chainId)),m={};if(p){let d=[],u=[],y=[];t.forEach(E=>{o.includes(TokenType.NATIVE)&&d.push(Z(p.getNativeBalance({address:E,currency:e.toUpperCase(),chainId:c}),E)),o.includes(TokenType.ERC20)&&u.push(Z(p.listErc20Balances({customTokens:a.filter(Fe),currency:e.toUpperCase(),chainId:c,address:E,pageSize:100}),E)),(o.includes(TokenType.ERC721)||o.includes(TokenType.ERC1155))&&y.push(Z(p.listNftBalances({chainId:c,address:E}),E));});let g=await Q(d),v=await Q(u),T=await Q(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 pa={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},ma={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},vr=t=>{switch(t){case Environment.PRODUCTION:return pa;case Environment.DEV:return ma}};var ua="https://ipfs.io";function br(t,e=ua){if(!t)return "";try{return ipfsResolver(t,e)}catch{return t}}var fa="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Oe(t,e="256"){let r=br(t);return `${fa}/width=${e},fit/${r}`}var U=class extends Error{constructor(){super(...arguments);a(this,"message","Glacier is unhealthy. Try again later.");}},Ta=[ChainId.ETHEREUM_HOMESTEAD],We=class{constructor({glacierApiUrl:e,headers:r}){a(this,"glacierSdk");a(this,"isGlacierHealthy",!0);a(this,"supportedChainIds",[]);a(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new Glacier({BASE:e,HEADERS:r}),this.getSupportedChainIds().catch(()=>{});}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async isNetworkSupported(e){return (await this.getSupportedChainIds()).some(n=>n===e.toString())}async getSupportedChainIds(){if(this.supportedChainIds.length)return this.supportedChainIds;try{let e=await this.glacierSdk.evmChains.supportedChains({});return this.supportedChainIds=e.chains.map(r=>r.chainId).filter(r=>!Ta.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 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: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:Oe(s.metadata.imageUri??""),name:s.metadata.name??"",symbol:s.metadata.symbol??"",tokenId:s.tokenId,tokenUri:s.tokenUri,collectionName:"Unknown",balance:s.ercType===Erc1155Token.ercType.ERC_1155?BigInt(s.balance):1,balanceDisplayValue:s.ercType===Erc1155Token.ercType.ERC_1155?s.balance:"1",type:s.ercType===Erc721Token.ercType.ERC_721?TokenType.ERC721:TokenType.ERC1155,metadata:{description:s.metadata.description,lastUpdatedTimestamp:s.metadata.metadataLastUpdatedTimestamp,properties:s.ercType===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(...Ea(i.erc20TokenBalances,Number(e))),s=i.nextPageToken;}while(s);return [...ka(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}}},ka=t=>t.map(e=>({...e,decimals:e.decimals??18,type:TokenType.ERC20,balance:0n,balanceInCurrency:0,balanceDisplayValue:"0",balanceCurrencyDisplayValue:"0",priceInCurrency:0,marketCap:0,change24:0,vol24:0,reputation:null})),Ea=(t,e)=>t.map(r=>{let n=new 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:TokenType.ERC20}});var yt=t=>{let e="";e+=`Domain
18
- `;for(let r in t.domain)e+=` ${r}: ${q(String(t.domain[r]))}
17
+ async function we({chainId:t,proxyApiUrl:e}){let r=await fetch(`${e}/tokens?evmChainId=${t}`);if(!r.ok)throw 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"}}],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"}}],RawSimplePriceResponseSchema)}};var It=getBasicCoingeckoHttp(),M,J,Y=class{constructor({storage:e,proxyApiUrl:r}){c(this,M,void 0);c(this,J,void 0);a(this,"transformSimplePriceResponse",(e,r=[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});d(this,M,e),d(this,J,r);}async getSimplePrice({coinIds:e=[],currencies:r=[VsCurrencyType.USD]}){let n,a=`getSimplePrice-${e?`${ot(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=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 b(this,M)?.set?.(a,n),n}async getPricesByAddresses(e,r,n=VsCurrencyType.USD){let o,s=`getPricesWithMarketDataByAddresses-${`${ot(e)}-${r}-${n}`}`;if(o=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 b(this,M)?.set?.(s,o),o}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=VsCurrencyType.USD,useCoingeckoProxy:o=!1}){if(o){let a=await new ue(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 simpleTokenPrice(It,{assetPlatformId:e,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:r=[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(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 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=object({date:string(),usd:record(number())}),Ce=async()=>{try{return await _([Tn],xt)}catch{return await _([kn],xt)}};var ye=(t,e,r="horizontal")=>({label:t,alignment:r,type:DetailItemType.TEXT,value:e}),Ne=(t,e)=>({label:t,value:e,type:DetailItemType.LINK}),z=(t,e)=>({label:t,type:DetailItemType.ADDRESS,value:e});var st=(t,e)=>({label:t,type:DetailItemType.DATA,value:e});var it=({name:t,version:e})=>{switch(t){case AppName.CORE_MOBILE_IOS:case AppName.CORE_MOBILE_ANDROID:case AppName.CORE_WEB:case AppName.CORE_EXTENSION:case AppName.EXPLORER:return {"x-application-name":t,"x-application-version":e};case AppName.OTHER:return}};var At=process.env.GLACIER_API_KEY;var ge=()=>At;var vn={rltoken:ge()},he=class extends 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 JsonRpcBatchInternal({maxCalls:40,multiContractAddress:o},Sn(n),new 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===ChainId.AVALANCHE_TESTNET_ID||t===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.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.internal("There is no block");let c=i.baseFeePerGas;if(!c)throw rpcErrors.internal("Pre-EIP-1559 networks are not supported");let l=await An(a,o),p=new TokenUnit(l,0,""),m=new 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 TokenUnit(t.value,e.decimals,e.symbol).toDisplay(),p=a?TransactionType.SEND: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: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 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?TransactionType.SEND: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: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 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 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?TransactionType.SWAP:p?TransactionType.SEND:m?TransactionType.RECEIVE:d?TransactionType.NFT_BUY:u?TransactionType.APPROVE:E?TransactionType.NFT_SEND:k?TransactionType.NFT_RECEIVE:y?TransactionType.TRANSFER:g?TransactionType.AIRDROP:v?TransactionType.UNWRAP:T?TransactionType.FILL_ORDER:TransactionType.UNKNOWN};function Lt(t){return t===TokenType.ERC721||t===TokenType.ERC1155}var Fn=(t="")=>t.includes("(")?Gn(t.split("(",1)[0]):t;var Ht=(t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},o)=>{let a=t===TransactionType.TRANSFER,s=t===TransactionType.SEND,i=t===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 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 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:TokenType.NATIVE});}return e?.forEach(s=>{let i=s.erc20Token.decimals,l=new 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: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: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: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=[TransactionType.SEND,TransactionType.RECEIVE,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 Interface(ir.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.Contract(t,ir.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.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.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.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.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: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({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({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({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.Contract(t.to,ir.abi,r),o=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),a=or(o[0]),s=or(o[1]),i=parseInt(o[2]),c={type:TokenType.ERC20,name:a,chainId:e,symbol:s,decimals:i,address:t.to,contractType:"ERC-20"},l=new ethers.Interface(ir.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 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===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={[AlertType.WARNING]:{type:AlertType.WARNING,details:{title:"Suspicious Transaction",description:"Use caution, this transaction may be malicious."}},[AlertType.DANGER]:{type: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[AlertType.WARNING]:p.result_type==="Malicious"&&(a=L[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===TokenType.ERC20&&t===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=numberToBN(s.value,o.decimals);i=balanceToDisplayValue(c,o.decimals);}else isHexString(s.value)&&(i=parseInt(s.value,16).toString());else "type"in o&&o.type===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: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:TokenType.ERC1155,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="ERC721"?e={type:TokenType.ERC721,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="NONERC"&&(e={type: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[AlertType.WARNING]:l.result_type==="Malicious"&&(s=L[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[AlertType.WARNING];}return {alert:s,balanceChange:i,tokenApprovals:c}};var ee=z$1.object({from:z$1.string().length(42),to:z$1.string().length(42).optional(),data:z$1.string().optional(),value:z$1.string().startsWith("0x").optional(),gas:z$1.string().startsWith("0x").optional(),gasPrice:z$1.string().startsWith("0x").optional(),maxFeePerGas:z$1.string().startsWith("0x").optional(),maxPriorityFeePerGas:z$1.string().startsWith("0x").optional(),nonce:z$1.string().optional(),chainId:z$1.string().optional().or(z$1.number().optional()),accessList:z$1.array(z$1.object({address:z$1.string().startsWith("0x"),storageKeys:z$1.array(z$1.string())})).optional()});var ma=z$1.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.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.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.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.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}){c(this,A,void 0);c(this,ne,void 0);c(this,q,void 0);c(this,ke,void 0);d(this,A,e),d(this,ne,r),d(this,q,n),d(this,ke,o);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let o=await w({chainId:e,chainName:b(this,A).chainName,rpcUrl:b(this,A).rpcUrl,multiContractAddress:b(this,A).utilityAddresses?.multicall}),a=b(this,A).pricingProviders?.coingecko.nativeTokenId,s=b(this,A).networkToken,i=new Y({storage:b(this,ne),proxyApiUrl: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 TokenUnit(u,s.decimals,s.symbol),g=l!==void 0?y.mul(l):void 0;return {...s,coingeckoId:a??"",type: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:b(this,A).chainName,rpcUrl:b(this,A).rpcUrl,multiContractAddress:b(this,A).utilityAddresses?.multicall}),a=b(this,A).pricingProviders?.coingecko.assetPlatformId,s=b(this,A).pricingProviders?.coingecko.nativeTokenId,i=await we({chainId:Number(e),proxyApiUrl:b(this,q)}),c=i.map(T=>T.address),l=[...i,...b(this,ke)].filter(Le),p=async T=>{let I=await new ethers.Contract(T.address,ir.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:b(this,ne),proxyApiUrl: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 TokenUnit(k.balance,k.decimals,k.symbol),pe=I!==void 0?Ae.mul(I):void 0;v[k.address.toLowerCase()]={...k,type: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=[TokenType.NATIVE,TokenType.ERC20,TokenType.ERC721,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(TokenType.NATIVE)&&d.push(te(p.getNativeBalance({address:E,currency:e.toUpperCase(),chainId:c}),E)),o.includes(TokenType.ERC20)&&u.push(te(p.listErc20Balances({customTokens:a.filter(Le),currency:e.toUpperCase(),chainId:c,address:E,pageSize:100}),E)),(o.includes(TokenType.ERC721)||o.includes(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 Environment.PRODUCTION:return fa;case Environment.DEV:return ya}};var ha="https://ipfs.io";function Sr(t,e=ha){if(!t)return "";try{return 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);a(this,"message","Glacier is unhealthy. Try again later.");}},ba=[ChainId.ETHEREUM_HOMESTEAD],je=class{constructor({glacierApiUrl:e,headers:r}){a(this,"glacierSdk");a(this,"isGlacierHealthy",!0);a(this,"supportedChainIds",[]);a(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new 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 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: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===Erc1155Token.ercType.ERC_1155?BigInt(s.balance):1,balanceDisplayValue:s.ercType===Erc1155Token.ercType.ERC_1155?s.balance:"1",type:s.ercType===Erc721Token.ercType.ERC_721?TokenType.ERC721:TokenType.ERC1155,metadata:{description:s.metadata.description,lastUpdatedTimestamp:s.metadata.metadataLastUpdatedTimestamp,properties:s.ercType===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: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 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:TokenType.ERC20}});var ht=t=>{let e="";e+=`Domain
18
+ `;for(let r in t.domain)e+=` ${r}: ${j(String(t.domain[r]))}
19
19
  `;e+=`
20
20
  Message
21
21
  `;for(let r in t.message)if(typeof t.message[r]=="object"&&!Array.isArray(t.message[r])){e+=` ${r}:
22
22
  `;for(let n in t.message[r])Array.isArray(t.message[r][n])?(e+=` ${n}:
23
- `,t.message[r][n].forEach((o,a)=>{e+=` ${a}: ${q(o)}
24
- `;})):e+=` ${n}: ${q(String(t.message[r][n]))}
23
+ `,t.message[r][n].forEach((o,a)=>{e+=` ${a}: ${j(o)}
24
+ `;})):e+=` ${n}: ${j(String(t.message[r][n]))}
25
25
  `;}else Array.isArray(t.message[r])?(e+=` ${r}:
26
26
  `,t.message[r].forEach((n,o)=>{e+=` ${o}:
27
27
  `;for(let a in n)Array.isArray(n[a])?(e+=` ${a}:
28
- `,n[a].forEach((s,i)=>{e+=` ${i}: ${q(s)}
29
- `;})):e+=` ${a}: ${q(String(n[a]))}
30
- `;})):e+=` ${r}: ${q(String(t.message[r]))}
31
- `;return e},Ir=t=>{let e="";return t.forEach(r=>{e+=`${r.name}:
32
- `,e+=`${q(String(r.value))}
28
+ `,n[a].forEach((s,i)=>{e+=` ${i}: ${j(s)}
29
+ `;})):e+=` ${a}: ${j(String(n[a]))}
30
+ `;})):e+=` ${r}: ${j(String(t.message[r]))}
31
+ `;return e},wr=t=>{let e="";return t.forEach(r=>{e+=`${r.name}:
32
+ `,e+=`${j(String(r.value))}
33
33
 
34
- `;}),e},q=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 ke=z$1.string().describe("message"),D=z$1.string().describe("address");var Ar=z$1.object({method:z$1.literal(RpcMethod.ETH_SIGN),params:z$1.tuple([D,ke])});var wr=z$1.object({name:z$1.string(),type:z$1.string()}),ae=z$1.object({types:z$1.object({EIP712Domain:z$1.array(wr)}).catchall(z$1.array(wr)),primaryType:z$1.string(),domain:z$1.record(z$1.any()),message:z$1.record(z$1.any())}),ht=z$1.array(z$1.object({type:z$1.string(),name:z$1.string(),value:z$1.union([z$1.string(),z$1.number(),z$1.boolean(),z$1.object({}).passthrough(),z$1.array(z$1.unknown()),z$1.null()])})).nonempty(),Tt=ae.or(ht),Cr=z$1.union([z$1.string().describe("data string"),ae]),Dr=z$1.union([z$1.string().describe("data string"),Tt]),Nr=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA),params:z$1.tuple([D,Dr])}),Br=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V1),params:z$1.tuple([D,Dr])}),_r=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V3),params:z$1.tuple([D,Cr])}),Ur=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V4),params:z$1.tuple([D,Cr])});var Fr=z$1.object({method:z$1.literal(RpcMethod.PERSONAL_SIGN),params:z$1.union([z$1.tuple([ke,D]),z$1.tuple([ke,D,z$1.string().optional().describe("password")])])});var Pa=z$1.discriminatedUnion("method",[Fr,Ar,Nr,Br,_r,Ur]).transform((t,e)=>{let{method:r,params:n}=t;switch(r){case RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:r};case RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:r};case RpcMethod.SIGN_TYPED_DATA:case 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:Tt.parse(s),address:o,method:r}}catch{return e.addIssue({code:z$1.ZodIssueCode.custom,message:"param is not a valid json"}),z$1.NEVER}}case RpcMethod.SIGN_TYPED_DATA_V3:case 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:z$1.ZodIssueCode.custom,message:"param is not a valid json"}),z$1.NEVER}}}});function Gr(t){return Pa.safeParse(t)}var Mr=t=>ht.safeParse(t).success,nl=t=>ae.safeParse(t).success;var Vr=t=>{try{let{EIP712Domain:e,...r}=t.types;return TypedDataEncoder.getPayload(t.domain,r,t.message),{isValid:!0}}catch(e){return {isValid:!1,error:e}}};var Lr=async({request:t,network:e,approvalController:r,proxyApiUrl:n})=>{let o=Gr({method:t.method,params:t.params});if(!o.success)return console.error("invalid params",o.error),{success:!1,error:rpcErrors.invalidParams({message:"Params are invalid",data:{cause:o.error}})};let{method:a,data:s,address:i}=o.data,c;(a===RpcMethod.SIGN_TYPED_DATA_V3||a===RpcMethod.SIGN_TYPED_DATA_V4)&&(c=Vr(s));let l,p,m;if(c&&!c.isValid&&(m={type:AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements. Please verify message content!",detailedDescription:c.error.toString()}}),a===RpcMethod.ETH_SIGN)l={type:a,account:i,data:s},p=s;else if(a===RpcMethod.PERSONAL_SIGN)l={type:a,account:i,data:s},p=toUtf8String(s);else if(a===RpcMethod.SIGN_TYPED_DATA||a===RpcMethod.SIGN_TYPED_DATA_V1)l={type:a,account:i,data:s},p=Mr(s)?Ir(s):yt(s);else if(a===RpcMethod.SIGN_TYPED_DATA_V3||a===RpcMethod.SIGN_TYPED_DATA_V4){l={type:a,account:i,data:s};let{types:g,primaryType:v,...T}=s;p=yt(T);}if(!l||!p)return {success:!1,error:rpcErrors.internal("Unable to generate signing data")};let d=await lr({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:[de("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.internal("No signed data returned")}};var Hr=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.internal(n)}}};var Or=async({accountIndex:t,xpub:e,walletType:r})=>{switch(r){case WalletType.Mnemonic:case WalletType.Ledger:case WalletType.Keystone:return {[NetworkVMType.EVM]:getAddressFromXPub(e,t)};case WalletType.LedgerLive:case WalletType.Seedless:{let n=Buffer.from(e,"hex");return {[NetworkVMType.EVM]:getEvmAddressFromPubKey(n)}}default:throw rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}};var Wr=t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string";var qe=({accountIndex:t,derivationPathType:e})=>{if(t<0)throw rpcErrors.invalidParams("Account index must be a non-negative integer");switch(e){case"bip44":return {[NetworkVMType.EVM]:`m/44'/60'/0'/0/${t}`};case"ledger_live":return {[NetworkVMType.EVM]:`m/44'/60'/${t}'/0/0`};default:throw rpcErrors.invalidParams(`Unsupported derivation path type: ${e}`)}};var Jr=async t=>{let{secretId:e,approvalController:r}=t,n=Wr(t)?qe(t).EVM:void 0,o=await r.requestPublicKey({curve:"secp256k1",secretId:e,derivationPath:n});return {[NetworkVMType.EVM]:computeAddress(`0x${o}`)}};var ie,Je=class{constructor(e){this.baseUrl=e;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(b(this,ie).length===0){let e=await fetch(`${this.baseUrl}/v1/chain/list`);if(e.ok)d(this,ie,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return b(this,ie)}async getNftList({address:e,chainId:r}){return _([`${this.baseUrl}/v1/user/nft_list?id=${e}&chain_id=${r}`],Fa)}};ie=new WeakMap;var _a=z$1.object({id:z$1.union([z$1.custom(isHexString),z$1.string()]),chain:z$1.string(),name:z$1.string()}),Ua=_a.merge(z$1.object({contract_id:z$1.string(),description:z$1.string().nullable(),content_type:z$1.string().nullable(),content:z$1.string(),thumbnail_url:z$1.string(),total_supply:z$1.number(),detail_url:z$1.string(),collection_id:z$1.string(),is_core:z$1.boolean(),inner_id:z$1.string(),collection_name:z$1.string(),contract_name:z$1.string(),amount:z$1.number(),usd_price:z$1.number().optional(),is_erc721:z$1.boolean().optional(),is_erc1155:z$1.boolean().optional()})),Fa=z$1.array(Ua);var N,ce,Ye,Xe,Yr,Ke=class{constructor({proxyApiUrl:e}){c(this,ce);c(this,Xe);c(this,N,void 0);d(this,N,new Je(`${e}/proxy/debank`));}async isNetworkSupported(e){return b(this,N).isNetworkSupported(e)}async getNativeBalance({chainId:e$1,address:r,currency:n}){if(!isHexString(r))throw rpcErrors.invalidParams("getNativeBalance: not valid address: "+r);let{chainInfo:o,chainIdString:a}=await e(this,ce,Ye).call(this,e$1),s=o.native_token_id,i=await b(this,N).getTokenBalance({address:r,chainId:a,tokenId:s}),c=new TokenUnit(i.raw_amount,i.decimals,i.symbol),l=c.toDisplay(),m=(await He()).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:TokenType.NATIVE,logoUri:i.logo_url,balance:c.toSubUnit(),balanceDisplayValue:l,balanceInCurrency:y,balanceCurrencyDisplayValue:u,priceInCurrency:d}}async listErc20Balances({chainId:e$1,address:r,currency:n}){if(!isHexString(r))throw rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:o,chainIdString:a}=await e(this,ce,Ye).call(this,e$1),s=await b(this,N).getTokensBalanceOnChain({chainId:a,address:r}),i=await He(),c={};for(let l of s){if(l.id===o.native_token_id||l.is_core===!1)continue;let p=new 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:TokenType.ERC20,reputation:null};}return c}async listNftBalances({chainId:e$1,address:r}){if(!isHexString(r))throw rpcErrors.invalidParams("listNftBalances: not valid address");let{chainIdString:n}=await e(this,ce,Ye).call(this,e$1),o=await b(this,N).getNftList({chainId:n,address:r});return e(this,Xe,Yr).call(this,o)}};N=new WeakMap,ce=new WeakSet,Ye=async function(e){let n=(await b(this,N).getChainList()).find(a=>a.community_id===e)?.id;if(!n)throw rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let o=await b(this,N).getChainInfo({chainId:n});if(!o)throw rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);return {chainInfo:o,chainIdString:n}},Xe=new WeakSet,Yr=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:Oe(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?TokenType.ERC721:TokenType.ERC1155,metadata:{description:n.description??"",properties:""}}}),{})};var Ma=z$1.tuple([X,X]).rest(X).refine(t=>vt(t,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(t=>vt(t,"from"),{message:'All transactions must use the same "from" address'}).refine(t=>La(t,"nonce")||Va(t,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'});function Va(t,e){return !vt(t,e)}function La(t,e){return t.every(r=>r[e]===void 0||r[e]==="")}function vt(t,e){return new Set(t.map(n=>n[e])).size===1}var Kr=t=>Ma.safeParse(t);var Xr=async(t,e)=>{if(t[0].nonce)return;let r=await we({from:t[0].from,provider:e});return Promise.all(t.map(async(n,o)=>{n.nonce=String(r+o);}))};var Ze=new Map,Zr=(t,e,r)=>(Ze.set(t,{signingRequests:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:o},a)=>{let s=Ze.get(t);if(!s)throw 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 Ze.set(t,l),l},cleanup:()=>Ze.delete(t)});var en=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,proxyApiUrl:o,provider:a,populateMissingGas:s})=>{let i;try{i=await Yt({proxyApiUrl:o,chainId:n,params:r,domain:e,withGasEstimation:s});}catch(u){return console.error("simulateTransactionBatch error",u),{isSimulationSuccessful:!1,alert:M[AlertType.WARNING],scans:[]}}let c=await Promise.all(i.map(async(u,y)=>{let g=r[y],v=await pt({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=$a(c),m=Wa(c),d=Oa(c);return {isSimulationSuccessful:l,alert:p,balanceChange:m,tokenApprovals:d,scans:c.map(u=>(u.tokenApprovals&&(u.tokenApprovals.isEditable=!1),u))}},$a=t=>{let e={[AlertType.INFO]:0,[AlertType.WARNING]:1,[AlertType.DANGER]:2};return t.reduce((r,{alert:n})=>n&&(!r||e[n.type]>e[r.type])?n:r,void 0)},Oa=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 ja(e,t),lt(e)?void 0:e},Wa=t=>{let e=t.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(o=>{let a=Qr(r.ins,o);a?a.items.push(...o.items):r.ins.push(o);}),n.outs.forEach(o=>{let a=Qr(r.outs,o);a?a.items.push(...o.items):r.outs.push({...o});})),r),{ins:[],outs:[]});return lt(e)?void 0:e},Qr=(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),ja=(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 tn=async({request:t,network:e,approvalController:r,proxyApiUrl:n})=>{let{params:o}=t,{data:a,success:s,error:i}=Kr(o);if(!s)return console.error("invalid params",i),{error: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 Xr(a,c);}catch(x){return console.error("Unable to calculate nonce",x),{error: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 en({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.internal({message:"Gas limit is missing in some transactions"})};let v={title:"Do you approve these transactions?",details:[{title:"Transaction Details",items:[_e("Website",t.dappInfo),Y("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=>Ue(t,e,x.transaction,x)),{cleanup:E,updateTx:k}=Zr(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.internal({message:`Invalid number of signatures. Expected ${a.length}, got ${I.result.length}`})};let Se=[];for(let[x,et]of I.result.entries()){let Ie=x===I.result.length-1,pe=await Ve(c,et),an=Me({provider:c,txHash:pe,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,requestId:t.requestId});if(!Ie&&!await an)return {error:rpcErrors.internal({message:`Transaction ${x+1} failed! Batch execution stopped`})};Se.push(pe);}return {result:Se}};var le,Re,B,F,nn=class{constructor({approvalController:e,environment:r,appInfo:n}){c(this,le,void 0);c(this,Re,void 0);c(this,B,void 0);c(this,F,void 0);let{glacierApiUrl:o,proxyApiUrl:a}=vr(r);d(this,le,new We({glacierApiUrl:o,headers:ft(n)})),d(this,Re,new Ke({proxyApiUrl:a})),d(this,B,a),d(this,F,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 Or({accountIndex:e,xpub:r,walletType:n})}buildDerivationPath(e){return qe(e)}deriveAddress(e){return Jr({...e,approvalController:b(this,F)})}getBalances({addresses:e,network:r,currency:n,customTokens:o,storage:a,tokenTypes:s}){return kr({addresses:e,currency:n,network:r,proxyApiUrl:b(this,B),customTokens:o,balanceServices:[b(this,le),b(this,Re)],storage:a,tokenTypes:s})}getManifest(){let e=parseManifest(jt);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:o,utilityAddresses:a,caipId:s}=e;return Rt({chainId:r,chainName:n,rpcUrl:o,multiContractAddress:a?.multicall,caipId:s,proxyApiUrl: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 Wt({chainId:s,isTestnet:i,networkToken:c,explorerUrl:l,address:n,nextPageToken:o,offset:a,glacierService:b(this,le)})}getTokens(e){let{chainId:r}=e;return xe({chainId:r,proxyApiUrl:b(this,B)})}async onRpcRequest(e,r){switch(e.method){case RpcMethod.ETH_SEND_TRANSACTION:return mr({request:e,network:r,approvalController:b(this,F),proxyApiUrl:b(this,B)});case RpcMethod.ETH_SEND_TRANSACTION_BATCH:return nr(b(this,F))?tn({request:e,network:r,approvalController:b(this,F),proxyApiUrl:b(this,B)}):{error:rpcErrors.methodNotSupported(`Method ${e.method} requires BatchApprovalController`)};case RpcMethod.PERSONAL_SIGN:case RpcMethod.ETH_SIGN:case RpcMethod.SIGN_TYPED_DATA:case RpcMethod.SIGN_TYPED_DATA_V1:case RpcMethod.SIGN_TYPED_DATA_V3:case RpcMethod.SIGN_TYPED_DATA_V4:return Lr({request:e,network:r,approvalController:b(this,F),proxyApiUrl:b(this,B)});default:return Ja(e.method)?Hr(e,r):{error:rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};le=new WeakMap,Re=new WeakMap,B=new WeakMap,F=new WeakMap;var Ja=t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t);
34
+ `;}),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=z$1.string().describe("message"),D=z$1.string().describe("address");var Dr=z$1.object({method:z$1.literal(RpcMethod.ETH_SIGN),params:z$1.tuple([D,ve])});var Nr=z$1.object({name:z$1.string(),type:z$1.string()}),ae=z$1.object({types:z$1.object({EIP712Domain:z$1.array(Nr)}).catchall(z$1.array(Nr)),primaryType:z$1.string(),domain:z$1.record(z$1.any()),message:z$1.record(z$1.any())}),kt=z$1.array(z$1.object({type:z$1.string(),name:z$1.string(),value:z$1.union([z$1.string(),z$1.number(),z$1.boolean(),z$1.object({}).passthrough(),z$1.array(z$1.unknown()),z$1.null()])})).nonempty(),Et=ae.or(kt),Br=z$1.union([z$1.string().describe("data string"),ae]),_r=z$1.union([z$1.string().describe("data string"),Et]),Ur=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA),params:z$1.tuple([D,_r])}),Gr=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V1),params:z$1.tuple([D,_r])}),Fr=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V3),params:z$1.tuple([D,Br])}),Mr=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V4),params:z$1.tuple([D,Br])});var Lr=z$1.object({method:z$1.literal(RpcMethod.PERSONAL_SIGN),params:z$1.union([z$1.tuple([ve,D]),z$1.tuple([ve,D,z$1.string().optional().describe("password")])])});var xa=z$1.discriminatedUnion("method",[Lr,Dr,Ur,Gr,Fr,Mr]).transform((t,e)=>{let{method:r,params:n}=t;switch(r){case RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:r};case RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:r};case RpcMethod.SIGN_TYPED_DATA:case 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:z$1.ZodIssueCode.custom,message:"param is not a valid json"}),z$1.NEVER}}case RpcMethod.SIGN_TYPED_DATA_V3:case 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:z$1.ZodIssueCode.custom,message:"param is not a valid json"}),z$1.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 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.invalidParams({message:"Params are invalid",data:{cause:o.error}})};let{method:a,data:s,address:i}=o.data,c;(a===RpcMethod.SIGN_TYPED_DATA_V3||a===RpcMethod.SIGN_TYPED_DATA_V4)&&(c=Or(s));let l,p,m;if(c&&!c.isValid&&(m={type:AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements. Please verify message content!",detailedDescription:c.error.toString()}}),a===RpcMethod.ETH_SIGN)l={type:a,account:i,data:s},p=s;else if(a===RpcMethod.PERSONAL_SIGN)l={type:a,account:i,data:s},p=toUtf8String(s);else if(a===RpcMethod.SIGN_TYPED_DATA||a===RpcMethod.SIGN_TYPED_DATA_V1)l={type:a,account:i,data:s},p=Hr(s)?wr(s):ht(s);else if(a===RpcMethod.SIGN_TYPED_DATA_V3||a===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.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.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.internal(n)}}};var jr=async({accountIndex:t,xpub:e,walletType:r})=>{switch(r){case WalletType.Mnemonic:case WalletType.Ledger:case WalletType.Keystone:return {[NetworkVMType.EVM]:getAddressFromXPub(e,t)};case WalletType.LedgerLive:case WalletType.Seedless:{let n=Buffer.from(e,"hex");return {[NetworkVMType.EVM]:getEvmAddressFromPubKey(n)}}default:throw 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.invalidParams("Account index must be a non-negative integer");switch(e){case"bip44":return {[NetworkVMType.EVM]:`m/44'/60'/0'/0/${t}`};case"ledger_live":return {[NetworkVMType.EVM]:`m/44'/60'/${t}'/0/0`};default:throw 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 {[NetworkVMType.EVM]:computeAddress(`0x${o}`)}};var ie,ze=class{constructor(e){this.baseUrl=e;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(b(this,ie).length===0){let e=await fetch(`${this.baseUrl}/v1/chain/list`);if(e.ok)d(this,ie,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return 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=z$1.object({id:z$1.union([z$1.custom(isHexString),z$1.string()]),chain:z$1.string(),name:z$1.string()}),La=Ma.merge(z$1.object({contract_id:z$1.string(),description:z$1.string().nullable(),content_type:z$1.string().nullable(),content:z$1.string(),thumbnail_url:z$1.string(),total_supply:z$1.number(),detail_url:z$1.string(),collection_id:z$1.string(),is_core:z$1.boolean(),inner_id:z$1.string(),collection_name:z$1.string(),contract_name:z$1.string(),amount:z$1.number(),usd_price:z$1.number().optional(),is_erc721:z$1.boolean().optional(),is_erc1155:z$1.boolean().optional()})),Va=z$1.array(La);var N,ce,Xe,Qe,Zr,Ze=class{constructor({proxyApiUrl:e}){c(this,ce);c(this,Qe);c(this,N,void 0);d(this,N,new ze(`${e}/proxy/debank`));}async isNetworkSupported(e){return b(this,N).isNetworkSupported(e)}async getNativeBalance({chainId:e$1,address:r,currency:n}){if(!isHexString(r))throw rpcErrors.invalidParams("getNativeBalance: not valid address: "+r);let{chainInfo:o,chainIdString:a}=await e(this,ce,Xe).call(this,e$1),s=o.native_token_id,i=await b(this,N).getTokenBalance({address:r,chainId:a,tokenId:s}),c=new 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:TokenType.NATIVE,logoUri:i.logo_url,balance:c.toSubUnit(),balanceDisplayValue:l,balanceInCurrency:y,balanceCurrencyDisplayValue:u,priceInCurrency:d}}async listErc20Balances({chainId:e$1,address:r,currency:n}){if(!isHexString(r))throw rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:o,chainIdString:a}=await e(this,ce,Xe).call(this,e$1),s=await 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 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:TokenType.ERC20,reputation:null};}return c}async listNftBalances({chainId:e$1,address:r}){if(!isHexString(r))throw rpcErrors.invalidParams("listNftBalances: not valid address");let{chainIdString:n}=await e(this,ce,Xe).call(this,e$1),o=await b(this,N).getNftList({chainId:n,address:r});return e(this,Qe,Zr).call(this,o)}};N=new WeakMap,ce=new WeakSet,Xe=async function(e){let n=(await b(this,N).getChainList()).find(a=>a.community_id===e)?.id;if(!n)throw rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let o=await b(this,N).getChainInfo({chainId:n});if(!o)throw 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?TokenType.ERC721:TokenType.ERC1155,metadata:{description:n.description??"",properties:""}}}),{})};var Oa=z$1.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.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[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={[AlertType.INFO]:0,[AlertType.WARNING]:1,[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.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.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.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.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.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}){c(this,le,void 0);c(this,Ie,void 0);c(this,B,void 0);c(this,G,void 0);let{glacierApiUrl:o,proxyApiUrl:a}=Rr(r);d(this,le,new je({glacierApiUrl:o,headers:it(n)})),d(this,Ie,new Ze({proxyApiUrl:a})),d(this,B,a),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: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:b(this,B),customTokens:o,balanceServices:[b(this,le),b(this,Ie)],storage:a,tokenTypes:s})}getManifest(){let e=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: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:b(this,le)})}getTokens(e){let{chainId:r}=e;return we({chainId:r,proxyApiUrl:b(this,B)})}async onRpcRequest(e,r){switch(e.method){case RpcMethod.ETH_SEND_TRANSACTION:return Tr({request:e,network:r,approvalController:b(this,G),proxyApiUrl:b(this,B)});case RpcMethod.ETH_SEND_TRANSACTION_BATCH:return pr(b(this,G))?an({request:e,network:r,approvalController:b(this,G),proxyApiUrl:b(this,B)}):{error:rpcErrors.methodNotSupported(`Method ${e.method} requires BatchApprovalController`)};case RpcMethod.PERSONAL_SIGN:case RpcMethod.ETH_SIGN:case RpcMethod.SIGN_TYPED_DATA:case RpcMethod.SIGN_TYPED_DATA_V1:case RpcMethod.SIGN_TYPED_DATA_V3:case RpcMethod.SIGN_TYPED_DATA_V4:return $r({request:e,network:r,approvalController:b(this,G),proxyApiUrl:b(this,B)});default:return Xa(e.method)?Wr(e,r):{error: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);
35
35
 
36
- export { O as ERC20TransactionType, nn as EvmModule, Ht as NonContractCallTypes, Z as addIdToPromise, nl as isTypedData, Mr as isTypedDataV1, Q as settleAllIdPromises };
36
+ export { $ as ERC20TransactionType, sn as EvmModule, Yt as NonContractCallTypes, te as addIdToPromise, Tl as isTypedData, Hr as isTypedDataV1, re as settleAllIdPromises };
37
37
  //# sourceMappingURL=out.js.map
38
38
  //# sourceMappingURL=index.js.map