@avalabs/evm-module 0.5.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +21 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +16 -17
- package/dist/index.js.map +1 -1
- package/dist/provider/index.cjs +3 -3
- package/dist/provider/index.cjs.map +1 -1
- package/dist/provider/index.js +3 -3
- package/dist/provider/index.js.map +1 -1
- package/package.json +4 -5
package/dist/index.cjs
CHANGED
|
@@ -7,43 +7,42 @@ var coreWalletsSdk = require('@avalabs/core-wallets-sdk');
|
|
|
7
7
|
var ethers = require('ethers');
|
|
8
8
|
var coreUtilsSdk = require('@avalabs/core-utils-sdk');
|
|
9
9
|
var coreEtherscanSdk = require('@avalabs/core-etherscan-sdk');
|
|
10
|
-
var
|
|
10
|
+
var Rr = require('lodash.startcase');
|
|
11
11
|
var zod = require('zod');
|
|
12
|
-
var
|
|
12
|
+
var ut = require('@blockaid/client');
|
|
13
13
|
var coreCoingeckoSdk = require('@avalabs/core-coingecko-sdk');
|
|
14
|
-
var core = require('@zodios/core');
|
|
15
14
|
var glacierSdk = require('@avalabs/glacier-sdk');
|
|
16
15
|
|
|
17
16
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
17
|
|
|
19
|
-
var
|
|
20
|
-
var
|
|
18
|
+
var Rr__default = /*#__PURE__*/_interopDefault(Rr);
|
|
19
|
+
var ut__default = /*#__PURE__*/_interopDefault(ut);
|
|
21
20
|
|
|
22
|
-
async function me({chainId:r,proxyApiUrl:e}){let t=await fetch(`${e}/tokens?evmChainId=${r}`);if(!t.ok)throw rpcErrors.rpcErrors.internal(`Failed to fetch tokens for chainId ${r}`);return t.json()}var mr=process.env.GLACIER_API_KEY,P=r=>{let{chainId:e,chainName:t,rpcUrl:n,multiContractAddress:s,pollingInterval:o=2e3}=r,a=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:s},ur(n,mr),new ethers.Network(t,e));return a.pollingInterval=o,a},dr=["glacier-api.avax.network","proxy-api.avax.network"];function ur(r,e){let t=new URL(r);if(e&&dr.includes(t.hostname)){let n=t.searchParams;return n.set("token",e),t.search=n.toString(),t.toString()}return r}var Ie={LOW:1n,MEDIUM:4n,HIGH:6n},Se=500000000n;async function $e({chainId:r,chainName:e,rpcUrl:t,multiContractAddress:n}){let s=P({chainId:r,chainName:e,rpcUrl:t,multiContractAddress:n}),{maxFeePerGas:o}=await s.getFeeData();if(!o)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let a=Se*Ie.LOW,i=Se*Ie.MEDIUM,c=Se*Ie.HIGH;return {baseFee:o,low:{maxFeePerGas:o+a,maxPriorityFeePerGas:a},medium:{maxFeePerGas:o+i,maxPriorityFeePerGas:i},high:{maxFeePerGas:o+c,maxPriorityFeePerGas:c},isFixedFee:!1}}function F(r,e,t="tx"){return `${r}/${t}/${e}`}var je=({tx:r,networkToken:e,chainId:t,explorerUrl:n,address:s})=>{let o=r.from.toLowerCase()===s.toLowerCase(),a=parseInt(r.timeStamp)*1e3,i=e.decimals,l=new coreUtilsSdk.TokenUnit(r.value,e.decimals,e.symbol).toDisplay(),p=o?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,{from:y,to:h,gasPrice:g,gasUsed:f,hash:m}=r,b=F(n,m);return {isIncoming:!o,isOutgoing:o,isContractCall:br(r),timestamp:a,hash:m,isSender:o,from:y,to:h,tokens:[{decimal:i.toString(),name:e.name,symbol:e.symbol,amount:l,type:vmModuleTypes.TokenType.NATIVE}],gasUsed:f,gasPrice:g,chainId:t.toString(),txType:p,explorerLink:b}};function br(r){return r.input!=="0x"}function Je({tx:r,address:e,explorerUrl:t,chainId:n}){let s=r.from.toLowerCase()===e.toLowerCase(),o=parseInt(r.timeStamp)*1e3,i=new coreUtilsSdk.TokenUnit(r.value,Number(r.tokenDecimal),r.tokenSymbol).toDisplay(),{from:c,to:l,gasPrice:p,gasUsed:y,hash:h,tokenDecimal:g,tokenName:f,tokenSymbol:m}=r,b=s?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,T=F(t,h);return {isIncoming:!s,isOutgoing:s,isContractCall:!1,timestamp:o,hash:h,isSender:s,from:c,to:l,tokens:[{decimal:g,name:f,symbol:m,type:vmModuleTypes.TokenType.ERC20,amount:i}],gasUsed:y,gasPrice:p,chainId:n.toString(),txType:b,explorerLink:T}}var qe=async({isTestnet:r,networkToken:e,explorerUrl:t,chainId:n,address:s,nextPageToken:o,offset:a})=>{let i=o?JSON.parse(o):void 0,c=i?.page||1,l=i?.queries||["normal","erc20"],p=(l.includes("normal")?await coreEtherscanSdk.getNormalTxs(s,!r,{page:c,offset:a}):[]).map(m=>je({tx:m,chainId:n,networkToken:e,explorerUrl:t,address:s})),y=(l.includes("erc20")?await coreEtherscanSdk.getErc20Txs(s,!r,void 0,{page:c,offset:a}):[]).map(m=>Je({tx:m,address:s,explorerUrl:t,chainId:n})),h=y.map(m=>m.hash),g=p.filter(m=>!h.includes(m.hash)),f={queries:[],page:c+1};return p.length&&f.queries.push("normal"),y.length&&f.queries.push("erc20"),{transactions:[...g,...y],nextPageToken:f.queries.length?JSON.stringify(f):""}};var ze=r=>r===1||r===5||r===4||r===11155111;var Xe=({nativeTransaction:r,erc20Transfers:e,erc721Transfers:t},n,s)=>{let o=!e&&!t,a=Ir(r.method?.methodName),i=n.toLowerCase(),c=a.toLowerCase().includes("swap"),l=o&&r.from.address.toLowerCase()===i,p=o&&r.to.address.toLowerCase()===i,y=a==="Market Buy Orders With Eth"||a==="Buy NFT",h=a==="Approve",g=a.toLowerCase().includes("transfer"),f=a.toLowerCase().includes("airdrop"),m=a.toLowerCase().includes("unwrap"),b=a==="Fill Order",T=g&&!!s[0]&&Qe(s[0].type)&&s[0].from?.address.toLowerCase()===i,S=g&&!!s[0]&&Qe(s[0].type)&&s[0].to?.address.toLowerCase()===i;return c?vmModuleTypes.TransactionType.SWAP:l?vmModuleTypes.TransactionType.SEND:p?vmModuleTypes.TransactionType.RECEIVE:y?vmModuleTypes.TransactionType.NFT_BUY:h?vmModuleTypes.TransactionType.APPROVE:T?vmModuleTypes.TransactionType.NFT_SEND:S?vmModuleTypes.TransactionType.NFT_RECEIVE:g?vmModuleTypes.TransactionType.TRANSFER:f?vmModuleTypes.TransactionType.AIRDROP:m?vmModuleTypes.TransactionType.UNWRAP:b?vmModuleTypes.TransactionType.FILL_ORDER:vmModuleTypes.TransactionType.UNKNOWN};function Qe(r){return r===vmModuleTypes.TokenType.ERC721||r===vmModuleTypes.TokenType.ERC1155}var Ir=(r="")=>r.includes("(")?vr__default.default(r.split("(",1)[0]):r;var Ze=(r,{nativeTransaction:e,erc20Transfers:t,erc721Transfers:n},s)=>{let o=r===vmModuleTypes.TransactionType.TRANSFER,a=r===vmModuleTypes.TransactionType.SEND,i=r===vmModuleTypes.TransactionType.RECEIVE,c=e?.from?.address,l=e?.to?.address;o&&t&&t[0]&&(c=t[0].from.address,l=t[0].to.address),o&&n&&n[0]&&(c=n[0].from.address,l=n[0].to.address);let p=a||o&&c.toLowerCase()===s.toLowerCase(),y=i||o&&l.toLowerCase()===s.toLowerCase();return {isOutgoing:p,isIncoming:y,isSender:c===s,from:c,to:l}};async function et(r){try{return r.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var Rr="https://ipfs.io";function H(r,e=Rr){if(!r)return "";try{return coreUtilsSdk.ipfsResolver(r,e)}catch{return r}}async function xr(r,e=5e3){let t=new AbortController;return setTimeout(()=>t.abort(),e),fetch(r,{signal:t.signal})}async function tt(r){let e={};if(r)if(r.startsWith("data:application/json;base64,")){let t=r.substring(29);try{let n=Buffer.from(t,"base64").toString();e=JSON.parse(n);}catch{e={};}}else e=await xr(H(r)).then(t=>t.json()).catch(()=>({}));else return {};return e}var Pr="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function rt(r,e="256"){let t=H(r);return `${Pr}/width=${e},fit/${t}`}var ot=async({nativeTransaction:r,erc20Transfers:e,erc721Transfers:t,erc1155Transfers:n},s)=>{let o=[];if(r.value!=="0"){let a=s.decimals,c=new coreUtilsSdk.TokenUnit(r.value,s.decimals,s.symbol).toDisplay();o.push({decimal:a.toString(),name:s.name,symbol:s.symbol,amount:c,from:r.from,to:r.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(a=>{let i=a.erc20Token.decimals,l=new coreUtilsSdk.TokenUnit(a.value,i,a.erc20Token.symbol).toDisplay();o.push({decimal:i.toString(),name:a.erc20Token.name,symbol:a.erc20Token.symbol,amount:l,from:a.from,to:a.to,imageUri:a.erc20Token.logoUri,type:vmModuleTypes.TokenType.ERC20});}),t&&await Promise.allSettled(t.map(async a=>{let i=a.erc721Token,c=await at(i.tokenUri,i.metadata.imageUri);o.push({name:a.erc721Token.name,symbol:a.erc721Token.symbol,amount:"1",imageUri:c,from:a.from,to:a.to,collectableTokenId:a.erc721Token.tokenId,type:vmModuleTypes.TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async a=>{let i=a.erc1155Token,c=await at(i.tokenUri,i.metadata.imageUri);o.push({name:a.erc1155Token.metadata.name??"",symbol:a.erc1155Token.metadata.symbol??"",amount:a.value,imageUri:c,from:a.from,to:a.to,collectableTokenId:a.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),o},at=async(r,e)=>{if(e)return e.startsWith("ipfs://")?H(e):e;{let[t,n]=await et(tt(r));return n?"":t.image?rt(t.image):""}};var st=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER],ue=(a=>(a.TOTAL_SUPPLY="totalSupply",a.BALANCE_OF="balanceOf",a.TRANSFER="transfer",a.TRANSFER_FROM="transferFrom",a.APPROVE="approve",a.ALLOWANCE="allowance",a))(ue||{});var it=async({transactions:r,explorerUrl:e,networkToken:t,chainId:n,address:s})=>{let o=await ot(r,t),a=Xe(r,s,o),{isOutgoing:i,isIncoming:c,isSender:l,from:p,to:y}=Ze(a,r,s),{blockTimestamp:h,txHash:g,gasPrice:f,gasUsed:m}=r.nativeTransaction,b=F(e,g);return {isContractCall:!st.includes(a),isIncoming:c,isOutgoing:i,isSender:l,timestamp:h*1e3,hash:g,from:p,to:y,tokens:o,gasPrice:f,gasUsed:m,chainId:n.toString(),txType:a,explorerLink:b}};var ct=async({chainId:r,explorerUrl:e,networkToken:t,address:n,nextPageToken:s,offset:o,glacierService:a})=>{try{let i=await a.listTransactions({chainId:r.toString(),address:n,pageToken:s,pageSize:o});return {transactions:(await Promise.all(i.transactions.filter(p=>p.nativeTransaction.txStatus==="1").map(p=>it({transactions:p,explorerUrl:e,networkToken:t,chainId:r,address:n}).then(y=>y)))).filter(p=>p.tokens.find(y=>Number(y.amount)!==0)),nextPageToken:i.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var lt=async({chainId:r,isTestnet:e,networkToken:t,explorerUrl:n,address:s,nextPageToken:o,offset:a,glacierService:i})=>ze(r)?qe({isTestnet:e,networkToken:t,explorerUrl:n,chainId:r,address:s,nextPageToken:o,offset:a}):i.isHealthy()?ct({networkToken:t,explorerUrl:n,chainId:r,address:s,nextPageToken:o,offset:a,glacierService:i}):{transactions:[],nextPageToken:""};var pt={name:"EVM",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/bundle.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:["eip155:*"],namespaces:["eip155"]},cointype:"60",permissions:{rpc:{dapps:!0,methods:["personal_sign","eth_sendTransaction","eth_*","web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"]}},manifestVersion:"0.0"};var Cr=zod.z.object({from:zod.z.string().length(42),to:zod.z.string().length(42),data:zod.z.string().optional(),value:zod.z.string().startsWith("0x").optional(),gas:zod.z.string().startsWith("0x").optional(),gasPrice:zod.z.string().startsWith("0x").optional(),maxFeePerGas:zod.z.string().startsWith("0x").optional(),maxPriorityFeePerGas:zod.z.string().startsWith("0x").optional(),nonce:zod.z.string().optional(),chainId:zod.z.string().optional()}),Nr=zod.z.array(Cr).length(1),mt=r=>Nr.safeParse(r);var dt=async({transactionParams:{from:r,to:e,data:t,value:n},provider:s})=>{let o=await s.getTransactionCount(r);return Number(await s.estimateGas({from:r,to:e,nonce:o,data:t,value:n}))};var ut=async({from:r,provider:e})=>e.getTransactionCount(r);var yt="DUMMY_API_KEY",gt=async({proxyApiUrl:r,chainId:e,params:t,domain:n})=>new ft__default.default({baseURL:r+"/proxy/blockaid/",apiKey:yt}).evm.transaction.scan({account_address:t.from,chain:e.toString(),options:["validation","simulation"],data:{from:t.from,to:t.to,data:t.data,value:t.value,gas:t.gas,gas_price:t.gasPrice},metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}}),bt=async({proxyApiUrl:r,chainId:e,accountAddress:t,data:n,domain:s})=>new ft__default.default({baseURL:r+"/proxy/blockaid/",apiKey:yt}).evm.jsonRpc.scan({chain:e.toString(),options:["validation","simulation"],account_address:t,data:n,metadata:s&&s.length>0?{domain:s}:{non_dapp:!0}});var Tt=async({request:r,dAppUrl:e,params:t,chainId:n,proxyApiUrl:s})=>{let o,a,i;try{let{validation:c,simulation:l}=await gt({proxyApiUrl:s,chainId:n,params:t,domain:e});!c||c.result_type==="Error"||c.result_type==="Warning"?o=$[vmModuleTypes.AlertType.WARNING]:c.result_type==="Malicious"&&(o=$[vmModuleTypes.AlertType.DANGER]),l?.status==="Success"&&(i=kt(r,l.account_summary.exposures),a=Et(l.account_summary.assets_diffs));}catch(c){console.error("processTransactionSimulation error",c),o=$[vmModuleTypes.AlertType.WARNING];}return {alert:o,balanceChange:a,tokenApprovals:i}},kt=(r,e)=>{let t=[];for(let s of e){let o=vt(s.asset);if(o)for(let[a,i]of Object.entries(s.spenders))if(i.exposure.length===0)t.push({token:o,spenderAddress:a,logoUri:o.logoUri});else for(let c of i.exposure)"raw_value"in c?t.push({token:o,spenderAddress:a,value:c.raw_value,usdPrice:c.usd_price,logoUri:o.logoUri}):t.push({token:o,spenderAddress:a,logoUri:c.logo_url,usdPrice:c.usd_price});}return t.length===0?void 0:{isEditable:t.length===1&&t[0]?.token.type===vmModuleTypes.TokenType.ERC20&&r.method===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:t}},Et=r=>{let e=ht(r,"in"),t=ht(r,"out");if(!(e.length===0&&t.length===0))return {ins:e,outs:t}},ht=(r,e)=>r.filter(t=>t[e].length>0).sort((t,n)=>t[e].length-n[e].length).map(t=>{let n=t.asset,s="address"in n?vt(n):Ur(n);if(!s)return;let o=t[e].map(a=>{let i;if("value"in a&&a.value)if("decimals"in s){let c=coreUtilsSdk.numberToBN(a.value,s.decimals);i=coreUtilsSdk.balanceToDisplayValue(c,s.decimals);}else ethers.isHexString(a.value)&&(i=parseInt(a.value,16).toString());else "type"in s&&s.type===vmModuleTypes.TokenType.ERC721&&(i="1");return i?{displayValue:i,usdPrice:a.usd_price}:void 0}).filter(a=>a!==void 0);return {token:s,items:o}}).filter(t=>t!==void 0),vt=r=>{let e;return r.type==="ERC20"?e={type:vmModuleTypes.TokenType.ERC20,address:r.address,decimals:r.decimals,name:r.name??r.symbol??"",symbol:r.symbol??"",logoUri:r.logo_url}:r.type==="ERC1155"?e={type:vmModuleTypes.TokenType.ERC1155,address:r.address,logoUri:r.logo_url,name:r.name,symbol:r.symbol}:r.type==="ERC721"?e={type:vmModuleTypes.TokenType.ERC721,address:r.address,logoUri:r.logo_url,name:r.name,symbol:r.symbol}:r.type==="NONERC"&&(e={type:vmModuleTypes.TokenType.NONERC,address:r.address,logoUri:r.logo_url,name:r.name,symbol:r.symbol}),e},Ur=r=>({name:r.name??"",symbol:r.symbol??"",decimals:r.decimals,description:"",logoUri:r.logo_url}),It=async({request:r,dAppUrl:e,accountAddress:t,chainId:n,data:s,proxyApiUrl:o})=>{let a,i,c;try{let{validation:l,simulation:p}=await bt({proxyApiUrl:o,chainId:n,accountAddress:t,data:s,domain:e});!l||l.result_type==="Error"||l.result_type==="Warning"?a=$[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"&&(a=$[vmModuleTypes.AlertType.DANGER]),p?.status==="Success"&&(c=kt(r,p.account_summary.exposures),i=Et(p.account_summary.assets_diffs));}catch(l){console.error("processJsonRpcSimulation error",l),a=$[vmModuleTypes.AlertType.WARNING];}return {alert:a,balanceChange:i,tokenApprovals:c}},$={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious Transaction",description:"Use caution, this transaction may be malicious."}},[vmModuleTypes.AlertType.DANGER]:{type:vmModuleTypes.AlertType.DANGER,details:{title:"Scam Transaction",description:"This transaction is malicious, do not proceed.",actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};var fe={_format:"hh-sol-artifact-1",contractName:"ERC20",sourceName:"contracts/token/ERC20/ERC20.sol",abi:[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],bytecode:"0x60806040523480156200001157600080fd5b5060405162000aed38038062000aed8339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000281565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b6020821081036200027b57634e487b7160e01b600052602260045260246000fd5b50919050565b61085c80620002916000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069a565b60405180910390f35b6100df6100da36600461070b565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610735565b61024a565b604051601281526020016100c3565b6100df61013136600461070b565b61026e565b6100f3610144366004610771565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df61017536600461070b565b61029f565b6100df61018836600461070b565b61031f565b6100f361019b366004610793565b61032d565b6060600380546101af906107c6565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c6565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b9190610800565b610358565b6060600480546101af906107c6565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f0565b600060208083528351808285015260005b818110156106c7578581018301518582016040015282016106ab565b818111156106d9576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461070657600080fd5b919050565b6000806040838503121561071e57600080fd5b610727836106ef565b946020939093013593505050565b60008060006060848603121561074a57600080fd5b610753846106ef565b9250610761602085016106ef565b9150604084013590509250925092565b60006020828403121561078357600080fd5b61078c826106ef565b9392505050565b600080604083850312156107a657600080fd5b6107af836106ef565b91506107bd602084016106ef565b90509250929050565b600181811c908216806107da57607f821691505b6020821081036107fa57634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561082157634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220e7dc257596a973556752e9db5f465b21aad78d068ae819d0395e1f99a95065a964736f6c634300080d0033",deployedBytecode:"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069a565b60405180910390f35b6100df6100da36600461070b565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610735565b61024a565b604051601281526020016100c3565b6100df61013136600461070b565b61026e565b6100f3610144366004610771565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df61017536600461070b565b61029f565b6100df61018836600461070b565b61031f565b6100f361019b366004610793565b61032d565b6060600380546101af906107c6565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c6565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b9190610800565b610358565b6060600480546101af906107c6565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f0565b600060208083528351808285015260005b818110156106c7578581018301518582016040015282016106ab565b818111156106d9576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461070657600080fd5b919050565b6000806040838503121561071e57600080fd5b610727836106ef565b946020939093013593505050565b60008060006060848603121561074a57600080fd5b610753846106ef565b9250610761602085016106ef565b9150604084013590509250925092565b60006020828403121561078357600080fd5b61078c826106ef565b9392505050565b600080604083850312156107a657600080fd5b6107af836106ef565b91506107bd602084016106ef565b90509250929050565b600181811c908216806107da57607f821691505b6020821081036107fa57634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561082157634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220e7dc257596a973556752e9db5f465b21aad78d068ae819d0395e1f99a95065a964736f6c634300080d0033",linkReferences:{},deployedLinkReferences:{}};var St=r=>{if(r.data)try{let t=new ethers.Interface(fe.abi).parseTransaction({data:r.data,value:r.value}),n=t?.name??t?.fragment?.name;return n&&Gr(n)?n:void 0}catch{return}};function Gr(r){return Object.values(ue).includes(r)}var Pe=async({operation:r,isSuccess:e,maxRetries:t=10,backoffPolicy:n=te.exponential()})=>{let s=0,o=0,a;for(;o<t;){o>0&&await Lr(s);try{let c=await r(o);if(e(c))return c}catch(c){a=c;}s=n(o),o++;}let i=a?`Max retry exceeded. ${a}`:"Max retry exceeded.";throw new Error(i)},te=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return t=>e*1e3}static constantMs(e){return t=>e}};function Lr(r){return new Promise(e=>setTimeout(e,r))}var we=r=>Pe({operation:e=>r(e>0),maxRetries:2,backoffPolicy:te.constant(1),isSuccess:e=>e?.status?.error_code!==429});function Rt(r){let e,t=0;for(e=0;e<r.length;e++)t+=r.charCodeAt(e)*(e+1);return t}function Ce(r){let e,t=0;for(e=0;e<r.length;e++){let n=Rt(r[e]??"");t=t+65027/n;}return (""+t).slice(0,16)}var Ae=r=>new core.Zodios(`${r}/proxy/coingecko`,[{method:"post",path:"/simple/price",parameters:[{name:"ids",type:"Query",schema:zod.string()},{name:"vs_currencies",type:"Query",schema:zod.string()},{name:"include_market_cap",type:"Query",schema:zod.string().optional()},{name:"include_24hr_vol",type:"Query",schema:zod.string().optional()},{name:"include_24hr_change",type:"Query",schema:zod.string().optional()},{name:"include_last_updated_at",type:"Query",schema:zod.string().optional()}],alias:"simplePrice",response:vmModuleTypes.RawSimplePriceResponseSchema},{method:"post",path:"/simple/token_price/:id",parameters:[{name:"id",type:"Path",schema:zod.string()},{name:"contract_addresses",type:"Query",schema:zod.string().array()},{name:"vs_currencies",type:"Query",schema:zod.string().array()},{name:"include_market_cap",type:"Query",schema:zod.boolean().optional()},{name:"include_24hr_vol",type:"Query",schema:zod.boolean().optional()},{name:"include_24hr_change",type:"Query",schema:zod.boolean().optional()}],alias:"simplePriceByContractAddresses",response:vmModuleTypes.SimplePriceResponseSchema}],{axiosConfig:{headers:{"Content-Type":"application/json"}}});var xt=coreCoingeckoSdk.getBasicCoingeckoHttp(),B,O,j=class{constructor({storage:e,proxyApiUrl:t}){chunkTKL4UUHE_cjs.c(this,B,void 0);chunkTKL4UUHE_cjs.c(this,O,void 0);chunkTKL4UUHE_cjs.a(this,"transformSimplePriceResponse",(e,t=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(s=>{let o=e[s];n[s]={},t.forEach(a=>{n[s]={[a]:{price:o?.[a],change24:o?.[`${a}_24h_change`],vol24:o?.[`${a}_24h_vol`],marketCap:o?.[`${a}_market_cap`]}};});}),n});chunkTKL4UUHE_cjs.d(this,B,e),chunkTKL4UUHE_cjs.d(this,O,t);}async getSimplePrice({coinIds:e=[],currencies:t=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${e?`${Ce(e)}-${t.toString()}`:`${t.toString()}`}`;if(n=chunkTKL4UUHE_cjs.b(this,B)?.get?.(o),n)return n;try{n=await we(a=>this.simplePrice({coinIds:e,currencies:t,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:a}));}catch{n=void 0;}return chunkTKL4UUHE_cjs.b(this,B)?.set?.(o,n),n}async getPricesByAddresses(e,t,n=coreCoingeckoSdk.VsCurrencyType.USD){let s,a=`getPricesWithMarketDataByAddresses-${`${Ce(e)}-${t}-${n}`}`;if(s=chunkTKL4UUHE_cjs.b(this,B)?.get?.(a),s)return s;try{s=await we(i=>this.fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:e,currency:n,useCoingeckoProxy:i}));}catch{s=void 0;}return chunkTKL4UUHE_cjs.b(this,B)?.set?.(a,s),s}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:t,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:s=!1}){return s?Ae(chunkTKL4UUHE_cjs.b(this,O)).simplePriceByContractAddresses(void 0,{params:{id:e},queries:{contract_addresses:t,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}}):coreCoingeckoSdk.simpleTokenPrice(xt,{assetPlatformId:e,tokenAddresses:t,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:t=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:s=!1,change24:o=!1,lastUpdated:a=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await Ae(chunkTKL4UUHE_cjs.b(this,O)).simplePrice(void 0,{queries:{ids:e?.join(","),vs_currencies:t.join(","),include_market_cap:String(n),include_24hr_vol:String(s),include_24hr_change:String(o),include_last_updated_at:String(a)}});return this.transformSimplePriceResponse(l,t)}return coreCoingeckoSdk.simplePrice(xt,{coinIds:e,currencies:t,marketCap:n,vol24:s,change24:o,lastUpdated:a,shouldThrow:c})}};B=new WeakMap,O=new WeakMap;var Kr="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",Qr="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",wt=zod.object({date:zod.string(),usd:zod.record(zod.number())}),Xr=new core.Zodios(Kr,[{method:"get",path:"",alias:"getExchangeRates",response:wt}]),Zr=new core.Zodios(Qr,[{method:"get",path:"",alias:"getExchangeRates",response:wt}]),ye=async()=>{try{return await Xr.getExchangeRates()}catch{return await Zr.getExchangeRates()}};var _e=(r,e,t="horizontal")=>({label:r,alignment:t,type:vmModuleTypes.DetailItemType.TEXT,value:e}),Ct=(r,e)=>({label:r,value:e,type:vmModuleTypes.DetailItemType.LINK}),be=(r,e)=>({label:r,type:vmModuleTypes.DetailItemType.ADDRESS,value:e});var De=(r,e)=>({label:r,type:vmModuleTypes.DetailItemType.DATA,value:e});var Nt=async({request:r,network:e,approvalController:t,proxyApiUrl:n})=>{let{dappInfo:s,params:o}=r,a=mt(o);if(!a.success)return console.error("invalid params",a.error),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:a.error}})};let i=a.data[0];if(!i)return {error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:a.error}})};let c=P({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});if(!i.gas||Number(i.gas)<0)try{let k=await dt({transactionParams:{from:i.from,to:i.to,data:i.data,value:i.value},provider:c});i.gas="0x"+k.toString(16);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate gas limit")}}if(!i.nonce)try{let k=await ut({from:i.from,provider:c});i.nonce=String(k);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate nonce")}}let l=St(i),{alert:p,balanceChange:y,tokenApprovals:h}=await Tt({request:r,proxyApiUrl:n,chainId:e.chainId,params:i,dAppUrl:r.dappInfo.url}),g="Approve Transaction";l==="approve"&&(g="Token Spend Approval");let f=[Ct("Website",s),be("From",i.from),be("To",i.to)];l&&f.push(_e("Type",l)),i.data&&f.push(De("Data",i.data));let m={title:g,network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:[{title:"Transaction Details",items:f}],networkFeeSelector:!0,alert:p,balanceChange:y,tokenApprovals:h},b={type:vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,account:i.from,data:{type:2,nonce:Number(i.nonce),gasLimit:Number(i.gas),to:i.to,from:i.from,data:i.data,value:i.value,chainId:i.chainId}},T=await t.requestApproval({request:r,displayData:m,signingData:b});if("error"in T)return {error:T.error};let S;try{S=await tn(c,T);}catch(k){return {error:rpcErrors.rpcErrors.internal({message:"Unable to get transaction hash",data:{cause:k}})}}return rn({provider:c,txHash:S,onTransactionConfirmed:t.onTransactionConfirmed,onTransactionReverted:t.onTransactionReverted,requestId:r.requestId}),{result:S}},tn=async(r,e)=>"txHash"in e?e.txHash:await r.send("eth_sendRawTransaction",[e.signedData]),rn=async({provider:r,txHash:e,onTransactionConfirmed:t,onTransactionReverted:n,requestId:s})=>{try{(await r.waitForTransaction(e))?.status===1?t(e,s):n(e,s);}catch(o){console.error(o),n(e,s);}};async function At(r,e){let t=r.map(async(o,a)=>({index:a,result:await e(o)})),s=(await Promise.allSettled(t)).filter(o=>o.status==="fulfilled").map(o=>o).find(o=>o.value.result);return s?r[s.value.index]:void 0}function ae(r,e){return r.then(t=>({id:e,status:"fulfilled",value:t})).catch(t=>({id:e,status:"rejected",reason:t}))}async function oe(r){return await Promise.allSettled(r).then(e=>e.reduce((t,n)=>{if(n.status==="fulfilled"){let s=n.value;s.status==="fulfilled"?t[s.id]=s.value:t[s.id]={error:s.reason};}return t},{}))}var I,Y,M,se,he=class{constructor({network:e,storage:t,proxyApiUrl:n,customTokens:s}){chunkTKL4UUHE_cjs.c(this,I,void 0);chunkTKL4UUHE_cjs.c(this,Y,void 0);chunkTKL4UUHE_cjs.c(this,M,void 0);chunkTKL4UUHE_cjs.c(this,se,void 0);chunkTKL4UUHE_cjs.d(this,I,e),chunkTKL4UUHE_cjs.d(this,Y,t),chunkTKL4UUHE_cjs.d(this,M,n),chunkTKL4UUHE_cjs.d(this,se,s);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:t,currency:n}){let s=P({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,I).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,I).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,I).utilityAddresses?.multicall}),o=chunkTKL4UUHE_cjs.b(this,I).pricingProviders?.coingecko.nativeTokenId,a=chunkTKL4UUHE_cjs.b(this,I).networkToken,i=new j({storage:chunkTKL4UUHE_cjs.b(this,Y),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,M)}),c=o?await i.getSimplePrice({coinIds:[o],currencies:[n]}):{},l=c?.[o??""]?.[n]?.price??void 0,p=c?.[o??""]?.[n]?.marketCap??void 0,y=c?.[o??""]?.[n]?.vol24??void 0,h=c?.[o??""]?.[n]?.change24??void 0,g=await s.getBalance(t),f=new coreUtilsSdk.TokenUnit(g,a.decimals,a.symbol),m=l!==void 0?f.mul(l):void 0;return {...a,coingeckoId:o??"",type:vmModuleTypes.TokenType.NATIVE,balance:g,balanceDisplayValue:f.toDisplay(),balanceInCurrency:m?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:m?.toDisplay({fixedDp:2}),priceInCurrency:l,marketCap:p,vol24:y,change24:h}}async listErc20Balances({chainId:e,address:t,currency:n}){let s=P({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,I).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,I).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,I).utilityAddresses?.multicall}),o=chunkTKL4UUHE_cjs.b(this,I).pricingProviders?.coingecko.assetPlatformId,a=chunkTKL4UUHE_cjs.b(this,I).pricingProviders?.coingecko.nativeTokenId,i=await me({chainId:Number(e),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,M)}),c=i.map(T=>T.address),l=[...i,...chunkTKL4UUHE_cjs.b(this,se)].filter(an),p=async T=>{let ee=await new ethers.ethers.Contract(T.address,fe.abi,s).balanceOf?.(t)||0n;return {...T,balance:ee}},y=l.map(T=>ae(p(T),T.address)),h=await oe(y),g=new j({storage:chunkTKL4UUHE_cjs.b(this,Y),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,M)}),f=o&&await g.getPricesByAddresses(c,o,n)||{},m=Object.keys(h),b={};for(let T=0;T<m.length;T++){let S=m[T];if(S===void 0)continue;let k=h[S];if(k===void 0||"error"in k){b[S]={error:`rpcService:getTokenWithBalance failed: ${k?.error??"unknown error"}`};continue}let ee=f?.[a??""]?.[n]?.price??void 0,or=f?.[a??""]?.[n]?.marketCap??void 0,sr=f?.[a??""]?.[n]?.vol24??void 0,ir=f?.[a??""]?.[n]?.change24??void 0,He=new coreUtilsSdk.TokenUnit(k.balance,k.decimals,k.symbol),We=ee!==void 0?He.mul(ee):void 0;b[k.address.toLowerCase()]={...k,type:vmModuleTypes.TokenType.ERC20,balance:k.balance,balanceDisplayValue:He.toDisplay(),balanceInCurrency:We?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:We?.toDisplay({fixedDp:2}),priceInCurrency:ee,marketCap:or,change24:ir,vol24:sr};}return b}};I=new WeakMap,Y=new WeakMap,M=new WeakMap,se=new WeakMap;function an(r){return r.type===vmModuleTypes.TokenType.ERC20}var Dt=async({addresses:r,currency:e,network:t,proxyApiUrl:n,customTokens:s=[],storage:o,balanceServices:a=[]})=>{let i=t.chainId,c=[...a,new he({network:t,storage:o,proxyApiUrl:n,customTokens:s})],l=await At(c,y=>y.isNetworkSupported(t.chainId)),p={};if(l){let y=[],h=[];r.forEach(m=>{y.push(ae(l.getNativeBalance({address:m,currency:e.toUpperCase(),chainId:i}),m)),h.push(ae(l.listErc20Balances({customTokens:s.filter(sn),currency:e.toUpperCase(),chainId:i,address:m,pageSize:100}),m));});let g=await oe(y),f=await oe(h);Object.keys(g).forEach(m=>{let b=g[m];if(!b||"error"in b){p[m]={error:`getNativeBalance failed: ${b?.error??"unknown error"}`};return}let T=b.symbol;p[m]={[T]:b};}),Object.keys(f).forEach(m=>{let b=f[m];!b||"error"in b&&typeof b.error!="string"?p[m]={...p[m],error:"listErc20Balances failed: unknown error"}:"error"in b&&typeof b.error=="string"?p[m]={...p[m],error:`listErc20Balances failed: ${b.error}`}:p[m]={...p[m],...b};});}else r.forEach(y=>{p[y]={error:"unsupported network"};});return p};function sn(r){return r.type===vmModuleTypes.TokenType.ERC20}var cn={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},ln={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Ut=r=>{switch(r){case vmModuleTypes.Environment.PRODUCTION:return cn;case vmModuleTypes.Environment.DEV:return ln}};var _=class extends Error{constructor(){super(...arguments);chunkTKL4UUHE_cjs.a(this,"message","Glacier is unhealthy. Try again later.");}},Te=class{constructor({glacierApiUrl:e}){chunkTKL4UUHE_cjs.a(this,"glacierSdk");chunkTKL4UUHE_cjs.a(this,"isGlacierHealthy",!0);chunkTKL4UUHE_cjs.a(this,"supportedChainIds",[]);chunkTKL4UUHE_cjs.a(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:e}),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(t=>t.chainId),this.supportedChainIds}catch{return []}}async reindexNft({address:e,chainId:t,tokenId:n}){try{await this.glacierSdk.nfTs.reindexNft({address:e,chainId:t,tokenId:n});}catch(s){throw s instanceof _&&this.setGlacierToUnhealthy(),s}}async getTokenDetails({address:e,chainId:t,tokenId:n}){try{return this.glacierSdk.nfTs.getTokenDetails({address:e,chainId:t,tokenId:n})}catch(s){throw s instanceof _&&this.setGlacierToUnhealthy(),s}}async getNativeBalance({chainId:e,address:t,currency:n,coingeckoId:s}){try{let a=(await this.glacierSdk.evmBalances.getNativeBalance({chainId:e.toString(),address:t,currency:n.toLocaleLowerCase()})).nativeTokenBalance,i=new coreUtilsSdk.TokenUnit(a.balance,a.decimals,a.symbol),c=a.price?.value,l=c!==void 0?i.mul(c):void 0;return {name:a.name,symbol:a.symbol,decimals:a.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:a.logoUri,balance:i.toSubUnit(),balanceDisplayValue:i.toDisplay(),balanceInCurrency:l?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:l?.toDisplay({fixedDp:2}),priceInCurrency:c,coingeckoId:s??""}}catch(o){throw o instanceof _&&this.setGlacierToUnhealthy(),o}}async listErc721Balances({chainId:e,address:t,pageSize:n,pageToken:s}){try{return this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:t,pageSize:n,pageToken:s})}catch(o){throw o instanceof _&&this.setGlacierToUnhealthy(),o}}async listErc1155Balances({chainId:e,address:t,pageSize:n,pageToken:s}){try{return this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:t,pageSize:n,pageToken:s})}catch(o){throw o instanceof _&&this.setGlacierToUnhealthy(),o}}async listErc20Balances({chainId:e,address:t,currency:n,customTokens:s}){try{let o=[],a;do{let i=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:t,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:a});o.push(...un(i.erc20TokenBalances,Number(e))),a=i.nextPageToken;}while(a);return [...dn(s),...o].reduce((i,c)=>({...i,[c.address.toLowerCase()]:c}),{})}catch(o){throw o instanceof _&&this.setGlacierToUnhealthy(),o}}async listTransactions({chainId:e,address:t,pageToken:n,pageSize:s}){try{return this.glacierSdk.evmTransactions.listTransactions({chainId:e,address:t,pageToken:n,pageSize:s})}catch(o){throw o instanceof _&&this.setGlacierToUnhealthy(),o}}},dn=r=>r.map(e=>({...e,decimals:e.decimals??18,type:vmModuleTypes.TokenType.ERC20,balance:0n,balanceInCurrency:0,balanceDisplayValue:"0",balanceCurrencyDisplayValue:"0",priceInCurrency:0,marketCap:0,change24:0,vol24:0})),un=(r,e)=>r.map(t=>{let n=new coreUtilsSdk.TokenUnit(t.balance,t.decimals,t.symbol),s=n.toDisplay(),o=t.balanceValue?.value.toString(),a=t.price?.value,i=a!==void 0?n.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {chainId:e,address:t.address,name:t.name,symbol:t.symbol,decimals:t.decimals,logoUri:t.logoUri,balance:n.toSubUnit(),balanceCurrencyDisplayValue:o,balanceDisplayValue:s,balanceInCurrency:i,priceInCurrency:a,type:vmModuleTypes.TokenType.ERC20}});var Ve=r=>{let e="";e+=`Domain
|
|
23
|
-
`;for(let t in r.domain)e+=` ${t}: ${
|
|
21
|
+
async function ue({chainId:r,proxyApiUrl:e}){let t=await fetch(`${e}/tokens?evmChainId=${r}`);if(!t.ok)throw rpcErrors.rpcErrors.internal(`Failed to fetch tokens for chainId ${r}`);return t.json()}var fr=process.env.GLACIER_API_KEY,w=r=>{let{chainId:e,chainName:t,rpcUrl:n,multiContractAddress:s,pollingInterval:o=2e3}=r,a=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:s},gr(n,fr),new ethers.Network(t,e));return a.pollingInterval=o,a},yr=["glacier-api.avax.network","proxy-api.avax.network"];function gr(r,e){let t=new URL(r);if(e&&yr.includes(t.hostname)){let n=t.searchParams;return n.set("token",e),t.search=n.toString(),t.toString()}return r}var Pe={LOW:1n,MEDIUM:4n,HIGH:6n},we=500000000n;async function We({chainId:r,chainName:e,rpcUrl:t,multiContractAddress:n}){let s=w({chainId:r,chainName:e,rpcUrl:t,multiContractAddress:n}),{maxFeePerGas:o}=await s.getFeeData();if(!o)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let a=we*Pe.LOW,i=we*Pe.MEDIUM,c=we*Pe.HIGH;return {baseFee:o,low:{maxFeePerGas:o+a,maxPriorityFeePerGas:a},medium:{maxFeePerGas:o+i,maxPriorityFeePerGas:i},high:{maxFeePerGas:o+c,maxPriorityFeePerGas:c},isFixedFee:!1}}function L(r,e,t="tx"){return `${r}/${t}/${e}`}var He=({tx:r,networkToken:e,chainId:t,explorerUrl:n,address:s})=>{let o=r.from.toLowerCase()===s.toLowerCase(),a=parseInt(r.timeStamp)*1e3,i=e.decimals,l=new coreUtilsSdk.TokenUnit(r.value,e.decimals,e.symbol).toDisplay(),p=o?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,{from:y,to:T,gasPrice:g,gasUsed:f,hash:b}=r,k=L(n,b);return {isIncoming:!o,isOutgoing:o,isContractCall:kr(r),timestamp:a,hash:b,isSender:o,from:y,to:T,tokens:[{decimal:i.toString(),name:e.name,symbol:e.symbol,amount:l,type:vmModuleTypes.TokenType.NATIVE}],gasUsed:f,gasPrice:g,chainId:t.toString(),txType:p,explorerLink:k}};function kr(r){return r.input!=="0x"}function Ye({tx:r,address:e,explorerUrl:t,chainId:n}){let s=r.from.toLowerCase()===e.toLowerCase(),o=parseInt(r.timeStamp)*1e3,i=new coreUtilsSdk.TokenUnit(r.value,Number(r.tokenDecimal),r.tokenSymbol).toDisplay(),{from:c,to:l,gasPrice:p,gasUsed:y,hash:T,tokenDecimal:g,tokenName:f,tokenSymbol:b}=r,k=s?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,m=L(t,T);return {isIncoming:!s,isOutgoing:s,isContractCall:!1,timestamp:o,hash:T,isSender:s,from:c,to:l,tokens:[{decimal:g,name:f,symbol:b,type:vmModuleTypes.TokenType.ERC20,amount:i}],gasUsed:y,gasPrice:p,chainId:n.toString(),txType:k,explorerLink:m}}var Je=async({isTestnet:r,networkToken:e,explorerUrl:t,chainId:n,address:s,nextPageToken:o,offset:a})=>{let i=o?JSON.parse(o):void 0,c=i?.page||1,l=i?.queries||["normal","erc20"],p=(l.includes("normal")?await coreEtherscanSdk.getNormalTxs(s,!r,{page:c,offset:a}):[]).map(b=>He({tx:b,chainId:n,networkToken:e,explorerUrl:t,address:s})),y=(l.includes("erc20")?await coreEtherscanSdk.getErc20Txs(s,!r,void 0,{page:c,offset:a}):[]).map(b=>Ye({tx:b,address:s,explorerUrl:t,chainId:n})),T=y.map(b=>b.hash),g=p.filter(b=>!T.includes(b.hash)),f={queries:[],page:c+1};return p.length&&f.queries.push("normal"),y.length&&f.queries.push("erc20"),{transactions:[...g,...y],nextPageToken:f.queries.length?JSON.stringify(f):""}};var qe=r=>r===1||r===5||r===4||r===11155111;var Xe=({nativeTransaction:r,erc20Transfers:e,erc721Transfers:t},n,s)=>{let o=!e&&!t,a=Pr(r.method?.methodName),i=n.toLowerCase(),c=a.toLowerCase().includes("swap"),l=o&&r.from.address.toLowerCase()===i,p=o&&r.to.address.toLowerCase()===i,y=a==="Market Buy Orders With Eth"||a==="Buy NFT",T=a==="Approve",g=a.toLowerCase().includes("transfer"),f=a.toLowerCase().includes("airdrop"),b=a.toLowerCase().includes("unwrap"),k=a==="Fill Order",m=g&&!!s[0]&&Ke(s[0].type)&&s[0].from?.address.toLowerCase()===i,h=g&&!!s[0]&&Ke(s[0].type)&&s[0].to?.address.toLowerCase()===i;return c?vmModuleTypes.TransactionType.SWAP:l?vmModuleTypes.TransactionType.SEND:p?vmModuleTypes.TransactionType.RECEIVE:y?vmModuleTypes.TransactionType.NFT_BUY:T?vmModuleTypes.TransactionType.APPROVE:m?vmModuleTypes.TransactionType.NFT_SEND:h?vmModuleTypes.TransactionType.NFT_RECEIVE:g?vmModuleTypes.TransactionType.TRANSFER:f?vmModuleTypes.TransactionType.AIRDROP:b?vmModuleTypes.TransactionType.UNWRAP:k?vmModuleTypes.TransactionType.FILL_ORDER:vmModuleTypes.TransactionType.UNKNOWN};function Ke(r){return r===vmModuleTypes.TokenType.ERC721||r===vmModuleTypes.TokenType.ERC1155}var Pr=(r="")=>r.includes("(")?Rr__default.default(r.split("(",1)[0]):r;var Ze=(r,{nativeTransaction:e,erc20Transfers:t,erc721Transfers:n},s)=>{let o=r===vmModuleTypes.TransactionType.TRANSFER,a=r===vmModuleTypes.TransactionType.SEND,i=r===vmModuleTypes.TransactionType.RECEIVE,c=e?.from?.address,l=e?.to?.address;o&&t&&t[0]&&(c=t[0].from.address,l=t[0].to.address),o&&n&&n[0]&&(c=n[0].from.address,l=n[0].to.address);let p=a||o&&c.toLowerCase()===s.toLowerCase(),y=i||o&&l.toLowerCase()===s.toLowerCase();return {isOutgoing:p,isIncoming:y,isSender:c===s,from:c,to:l}};async function Qe(r){try{return r.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var xr="https://ipfs.io";function F(r,e=xr){if(!r)return "";try{return coreUtilsSdk.ipfsResolver(r,e)}catch{return r}}async function Cr(r,e=5e3){let t=new AbortController;return setTimeout(()=>t.abort(),e),fetch(r,{signal:t.signal})}async function et(r){let e={};if(r)if(r.startsWith("data:application/json;base64,")){let t=r.substring(29);try{let n=Buffer.from(t,"base64").toString();e=JSON.parse(n);}catch{e={};}}else e=await Cr(F(r)).then(t=>t.json()).catch(()=>({}));else return {};return e}var Nr="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function tt(r,e="256"){let t=F(r);return `${Nr}/width=${e},fit/${t}`}var at=async({nativeTransaction:r,erc20Transfers:e,erc721Transfers:t,erc1155Transfers:n},s)=>{let o=[];if(r.value!=="0"){let a=s.decimals,c=new coreUtilsSdk.TokenUnit(r.value,s.decimals,s.symbol).toDisplay();o.push({decimal:a.toString(),name:s.name,symbol:s.symbol,amount:c,from:r.from,to:r.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(a=>{let i=a.erc20Token.decimals,l=new coreUtilsSdk.TokenUnit(a.value,i,a.erc20Token.symbol).toDisplay();o.push({decimal:i.toString(),name:a.erc20Token.name,symbol:a.erc20Token.symbol,amount:l,from:a.from,to:a.to,imageUri:a.erc20Token.logoUri,type:vmModuleTypes.TokenType.ERC20});}),t&&await Promise.allSettled(t.map(async a=>{let i=a.erc721Token,c=await nt(i.tokenUri,i.metadata.imageUri);o.push({name:a.erc721Token.name,symbol:a.erc721Token.symbol,amount:"1",imageUri:c,from:a.from,to:a.to,collectableTokenId:a.erc721Token.tokenId,type:vmModuleTypes.TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async a=>{let i=a.erc1155Token,c=await nt(i.tokenUri,i.metadata.imageUri);o.push({name:a.erc1155Token.metadata.name??"",symbol:a.erc1155Token.metadata.symbol??"",amount:a.value,imageUri:c,from:a.from,to:a.to,collectableTokenId:a.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),o},nt=async(r,e)=>{if(e)return e.startsWith("ipfs://")?F(e):e;{let[t,n]=await Qe(et(r));return n?"":t.image?tt(t.image):""}};var ot=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER],ye=(a=>(a.TOTAL_SUPPLY="totalSupply",a.BALANCE_OF="balanceOf",a.TRANSFER="transfer",a.TRANSFER_FROM="transferFrom",a.APPROVE="approve",a.ALLOWANCE="allowance",a))(ye||{});var st=async({transactions:r,explorerUrl:e,networkToken:t,chainId:n,address:s})=>{let o=await at(r,t),a=Xe(r,s,o),{isOutgoing:i,isIncoming:c,isSender:l,from:p,to:y}=Ze(a,r,s),{blockTimestamp:T,txHash:g,gasPrice:f,gasUsed:b}=r.nativeTransaction,k=L(e,g);return {isContractCall:!ot.includes(a),isIncoming:c,isOutgoing:i,isSender:l,timestamp:T*1e3,hash:g,from:p,to:y,tokens:o,gasPrice:f,gasUsed:b,chainId:n.toString(),txType:a,explorerLink:k}};var it=async({chainId:r,explorerUrl:e,networkToken:t,address:n,nextPageToken:s,offset:o,glacierService:a})=>{try{let i=await a.listTransactions({chainId:r.toString(),address:n,pageToken:s,pageSize:o});return {transactions:(await Promise.all(i.transactions.filter(p=>p.nativeTransaction.txStatus==="1").map(p=>st({transactions:p,explorerUrl:e,networkToken:t,chainId:r,address:n}).then(y=>y)))).filter(p=>p.tokens.find(y=>Number(y.amount)!==0)),nextPageToken:i.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var ct=async({chainId:r,isTestnet:e,networkToken:t,explorerUrl:n,address:s,nextPageToken:o,offset:a,glacierService:i})=>qe(r)?Je({isTestnet:e,networkToken:t,explorerUrl:n,chainId:r,address:s,nextPageToken:o,offset:a}):i.isHealthy()?it({networkToken:t,explorerUrl:n,chainId:r,address:s,nextPageToken:o,offset:a,glacierService:i}):{transactions:[],nextPageToken:""};var lt={name:"EVM",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/bundle.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:["eip155:*"],namespaces:["eip155"]},cointype:"60",permissions:{rpc:{dapps:!0,methods:["personal_sign","eth_sendTransaction","eth_*","web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"]}},manifestVersion:"0.0"};var _r=zod.z.object({from:zod.z.string().length(42),to:zod.z.string().length(42),data:zod.z.string().optional(),value:zod.z.string().startsWith("0x").optional(),gas:zod.z.string().startsWith("0x").optional(),gasPrice:zod.z.string().startsWith("0x").optional(),maxFeePerGas:zod.z.string().startsWith("0x").optional(),maxPriorityFeePerGas:zod.z.string().startsWith("0x").optional(),nonce:zod.z.string().optional(),chainId:zod.z.string().optional()}),Dr=zod.z.array(_r).length(1),pt=r=>Dr.safeParse(r);var mt=async({transactionParams:{from:r,to:e,data:t,value:n},provider:s})=>{let o=await s.getTransactionCount(r);return Number(await s.estimateGas({from:r,to:e,nonce:o,data:t,value:n}))};var dt=async({from:r,provider:e})=>e.getTransactionCount(r);var ft="DUMMY_API_KEY",yt=async({proxyApiUrl:r,chainId:e,params:t,domain:n})=>new ut__default.default({baseURL:r+"/proxy/blockaid/",apiKey:ft}).evm.transaction.scan({account_address:t.from,chain:e.toString(),options:["validation","simulation"],data:{from:t.from,to:t.to,data:t.data,value:t.value,gas:t.gas,gas_price:t.gasPrice},metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}}),gt=async({proxyApiUrl:r,chainId:e,accountAddress:t,data:n,domain:s})=>new ut__default.default({baseURL:r+"/proxy/blockaid/",apiKey:ft}).evm.jsonRpc.scan({chain:e.toString(),options:["validation","simulation"],account_address:t,data:n,metadata:s&&s.length>0?{domain:s}:{non_dapp:!0}});var ht=async({request:r,dAppUrl:e,params:t,chainId:n,proxyApiUrl:s})=>{let o,a,i;try{let{validation:c,simulation:l}=await yt({proxyApiUrl:s,chainId:n,params:t,domain:e});!c||c.result_type==="Error"||c.result_type==="Warning"?o=W[vmModuleTypes.AlertType.WARNING]:c.result_type==="Malicious"&&(o=W[vmModuleTypes.AlertType.DANGER]),l?.status==="Success"&&(i=Tt(r,l.account_summary.exposures),a=kt(l.account_summary.assets_diffs));}catch(c){console.error("processTransactionSimulation error",c),o=W[vmModuleTypes.AlertType.WARNING];}return {alert:o,balanceChange:a,tokenApprovals:i}},Tt=(r,e)=>{let t=[];for(let s of e){let o=Et(s.asset);if(o)for(let[a,i]of Object.entries(s.spenders))if(i.exposure.length===0)t.push({token:o,spenderAddress:a,logoUri:o.logoUri});else for(let c of i.exposure)"raw_value"in c?t.push({token:o,spenderAddress:a,value:c.raw_value,usdPrice:c.usd_price,logoUri:o.logoUri}):t.push({token:o,spenderAddress:a,logoUri:c.logo_url,usdPrice:c.usd_price});}return t.length===0?void 0:{isEditable:t.length===1&&t[0]?.token.type===vmModuleTypes.TokenType.ERC20&&r.method===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:t}},kt=r=>{let e=bt(r,"in"),t=bt(r,"out");if(!(e.length===0&&t.length===0))return {ins:e,outs:t}},bt=(r,e)=>r.filter(t=>t[e].length>0).sort((t,n)=>t[e].length-n[e].length).map(t=>{let n=t.asset,s="address"in n?Et(n):Gr(n);if(!s)return;let o=t[e].map(a=>{let i;if("value"in a&&a.value)if("decimals"in s){let c=coreUtilsSdk.numberToBN(a.value,s.decimals);i=coreUtilsSdk.balanceToDisplayValue(c,s.decimals);}else ethers.isHexString(a.value)&&(i=parseInt(a.value,16).toString());else "type"in s&&s.type===vmModuleTypes.TokenType.ERC721&&(i="1");return i?{displayValue:i,usdPrice:a.usd_price}:void 0}).filter(a=>a!==void 0);return {token:s,items:o}}).filter(t=>t!==void 0),Et=r=>{let e;return r.type==="ERC20"?e={type:vmModuleTypes.TokenType.ERC20,address:r.address,decimals:r.decimals,name:r.name??r.symbol??"",symbol:r.symbol??"",logoUri:r.logo_url}:r.type==="ERC1155"?e={type:vmModuleTypes.TokenType.ERC1155,address:r.address,logoUri:r.logo_url,name:r.name,symbol:r.symbol}:r.type==="ERC721"?e={type:vmModuleTypes.TokenType.ERC721,address:r.address,logoUri:r.logo_url,name:r.name,symbol:r.symbol}:r.type==="NONERC"&&(e={type:vmModuleTypes.TokenType.NONERC,address:r.address,logoUri:r.logo_url,name:r.name,symbol:r.symbol}),e},Gr=r=>({name:r.name??"",symbol:r.symbol??"",decimals:r.decimals,description:"",logoUri:r.logo_url}),vt=async({request:r,dAppUrl:e,accountAddress:t,chainId:n,data:s,proxyApiUrl:o})=>{let a,i,c;try{let{validation:l,simulation:p}=await gt({proxyApiUrl:o,chainId:n,accountAddress:t,data:s,domain:e});!l||l.result_type==="Error"||l.result_type==="Warning"?a=W[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"&&(a=W[vmModuleTypes.AlertType.DANGER]),p?.status==="Success"&&(c=Tt(r,p.account_summary.exposures),i=kt(p.account_summary.assets_diffs));}catch(l){console.error("processJsonRpcSimulation error",l),a=W[vmModuleTypes.AlertType.WARNING];}return {alert:a,balanceChange:i,tokenApprovals:c}},W={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious Transaction",description:"Use caution, this transaction may be malicious."}},[vmModuleTypes.AlertType.DANGER]:{type:vmModuleTypes.AlertType.DANGER,details:{title:"Scam Transaction",description:"This transaction is malicious, do not proceed.",actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};var ge={_format:"hh-sol-artifact-1",contractName:"ERC20",sourceName:"contracts/token/ERC20/ERC20.sol",abi:[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],bytecode:"0x60806040523480156200001157600080fd5b5060405162000aed38038062000aed8339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000281565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b6020821081036200027b57634e487b7160e01b600052602260045260246000fd5b50919050565b61085c80620002916000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069a565b60405180910390f35b6100df6100da36600461070b565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610735565b61024a565b604051601281526020016100c3565b6100df61013136600461070b565b61026e565b6100f3610144366004610771565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df61017536600461070b565b61029f565b6100df61018836600461070b565b61031f565b6100f361019b366004610793565b61032d565b6060600380546101af906107c6565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c6565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b9190610800565b610358565b6060600480546101af906107c6565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f0565b600060208083528351808285015260005b818110156106c7578581018301518582016040015282016106ab565b818111156106d9576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461070657600080fd5b919050565b6000806040838503121561071e57600080fd5b610727836106ef565b946020939093013593505050565b60008060006060848603121561074a57600080fd5b610753846106ef565b9250610761602085016106ef565b9150604084013590509250925092565b60006020828403121561078357600080fd5b61078c826106ef565b9392505050565b600080604083850312156107a657600080fd5b6107af836106ef565b91506107bd602084016106ef565b90509250929050565b600181811c908216806107da57607f821691505b6020821081036107fa57634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561082157634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220e7dc257596a973556752e9db5f465b21aad78d068ae819d0395e1f99a95065a964736f6c634300080d0033",deployedBytecode:"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069a565b60405180910390f35b6100df6100da36600461070b565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610735565b61024a565b604051601281526020016100c3565b6100df61013136600461070b565b61026e565b6100f3610144366004610771565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df61017536600461070b565b61029f565b6100df61018836600461070b565b61031f565b6100f361019b366004610793565b61032d565b6060600380546101af906107c6565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c6565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b9190610800565b610358565b6060600480546101af906107c6565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f0565b600060208083528351808285015260005b818110156106c7578581018301518582016040015282016106ab565b818111156106d9576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461070657600080fd5b919050565b6000806040838503121561071e57600080fd5b610727836106ef565b946020939093013593505050565b60008060006060848603121561074a57600080fd5b610753846106ef565b9250610761602085016106ef565b9150604084013590509250925092565b60006020828403121561078357600080fd5b61078c826106ef565b9392505050565b600080604083850312156107a657600080fd5b6107af836106ef565b91506107bd602084016106ef565b90509250929050565b600181811c908216806107da57607f821691505b6020821081036107fa57634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561082157634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220e7dc257596a973556752e9db5f465b21aad78d068ae819d0395e1f99a95065a964736f6c634300080d0033",linkReferences:{},deployedLinkReferences:{}};var It=r=>{if(r.data)try{let t=new ethers.Interface(ge.abi).parseTransaction({data:r.data,value:r.value}),n=t?.name??t?.fragment?.name;return n&&$r(n)?n:void 0}catch{return}};function $r(r){return Object.values(ye).includes(r)}var Ne=async({operation:r,isSuccess:e,maxRetries:t=10,backoffPolicy:n=ne.exponential()})=>{let s=0,o=0,a;for(;o<t;){o>0&&await Wr(s);try{let c=await r(o);if(e(c))return c}catch(c){a=c;}s=n(o),o++;}let i=a?`Max retry exceeded. ${a}`:"Max retry exceeded.";throw new Error(i)},ne=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return t=>e*1e3}static constantMs(e){return t=>e}};function Wr(r){return new Promise(e=>setTimeout(e,r))}var Ae=r=>Ne({operation:e=>r(e>0),maxRetries:2,backoffPolicy:ne.constant(1),isSuccess:e=>e?.status?.error_code!==429});function St(r){let e,t=0;for(e=0;e<r.length;e++)t+=r.charCodeAt(e)*(e+1);return t}function _e(r){let e,t=0;for(e=0;e<r.length;e++){let n=St(r[e]??"");t=t+65027/n;}return (""+t).slice(0,16)}async function O(r,e){let t=await fetch(...r);if(!t.ok)throw new Error(`Request failed with status ${t.status}`);let n=await t.json();return e.parse(n)}var ae=class{constructor(e){this.proxyApiUrl=e;}simplePrice(e){let t=new URLSearchParams(e);return O([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${t}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(e){let{id:t,...n}=e,s=new URLSearchParams(n);return O([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${t}?${s}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.SimplePriceResponseSchema)}};var Rt=coreCoingeckoSdk.getBasicCoingeckoHttp(),D,H,j=class{constructor({storage:e,proxyApiUrl:t}){chunkTKL4UUHE_cjs.c(this,D,void 0);chunkTKL4UUHE_cjs.c(this,H,void 0);chunkTKL4UUHE_cjs.a(this,"transformSimplePriceResponse",(e,t=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(s=>{let o=e[s];n[s]={},t.forEach(a=>{n[s]={[a]:{price:o?.[a],change24:o?.[`${a}_24h_change`],vol24:o?.[`${a}_24h_vol`],marketCap:o?.[`${a}_market_cap`]}};});}),n});chunkTKL4UUHE_cjs.d(this,D,e),chunkTKL4UUHE_cjs.d(this,H,t);}async getSimplePrice({coinIds:e=[],currencies:t=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${e?`${_e(e)}-${t.toString()}`:`${t.toString()}`}`;if(n=chunkTKL4UUHE_cjs.b(this,D)?.get?.(o),n)return n;try{n=await Ae(a=>this.simplePrice({coinIds:e,currencies:t,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:a}));}catch{n=void 0;}return chunkTKL4UUHE_cjs.b(this,D)?.set?.(o,n),n}async getPricesByAddresses(e,t,n=coreCoingeckoSdk.VsCurrencyType.USD){let s,a=`getPricesWithMarketDataByAddresses-${`${_e(e)}-${t}-${n}`}`;if(s=chunkTKL4UUHE_cjs.b(this,D)?.get?.(a),s)return s;try{s=await Ae(i=>this.fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:e,currency:n,useCoingeckoProxy:i}));}catch{s=void 0;}return chunkTKL4UUHE_cjs.b(this,D)?.set?.(a,s),s}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:t,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:s=!1}){return s?new ae(chunkTKL4UUHE_cjs.b(this,H)).simplePriceByContractAddresses({id:e,contract_addresses:t,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}):coreCoingeckoSdk.simpleTokenPrice(Rt,{assetPlatformId:e,tokenAddresses:t,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:t=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:s=!1,change24:o=!1,lastUpdated:a=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await new ae(chunkTKL4UUHE_cjs.b(this,H)).simplePrice({ids:e,vs_currencies:t,include_market_cap:n,include_24hr_vol:s,include_24hr_change:o,include_last_updated_at:a});return this.transformSimplePriceResponse(l,t)}return coreCoingeckoSdk.simplePrice(Rt,{coinIds:e,currencies:t,marketCap:n,vol24:s,change24:o,lastUpdated:a,shouldThrow:c})}};D=new WeakMap,H=new WeakMap;var Zr="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",Qr="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",Pt=zod.object({date:zod.string(),usd:zod.record(zod.number())}),be=async()=>{try{return await O([Zr],Pt)}catch{return await O([Qr],Pt)}};var De=(r,e,t="horizontal")=>({label:r,alignment:t,type:vmModuleTypes.DetailItemType.TEXT,value:e}),wt=(r,e)=>({label:r,value:e,type:vmModuleTypes.DetailItemType.LINK}),Te=(r,e)=>({label:r,type:vmModuleTypes.DetailItemType.ADDRESS,value:e});var Be=(r,e)=>({label:r,type:vmModuleTypes.DetailItemType.DATA,value:e});var xt=async({request:r,network:e,approvalController:t,proxyApiUrl:n})=>{let{dappInfo:s,params:o}=r,a=pt(o);if(!a.success)return console.error("invalid params",a.error),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:a.error}})};let i=a.data[0];if(!i)return {error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:a.error}})};let c=w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});if(!i.gas||Number(i.gas)<0)try{let E=await mt({transactionParams:{from:i.from,to:i.to,data:i.data,value:i.value},provider:c});i.gas="0x"+E.toString(16);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate gas limit")}}if(!i.nonce)try{let E=await dt({from:i.from,provider:c});i.nonce=String(E);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate nonce")}}let l=It(i),{alert:p,balanceChange:y,tokenApprovals:T}=await ht({request:r,proxyApiUrl:n,chainId:e.chainId,params:i,dAppUrl:r.dappInfo.url}),g="Approve Transaction";l==="approve"&&(g="Token Spend Approval");let f=[wt("Website",s),Te("From",i.from),Te("To",i.to)];l&&f.push(De("Type",l)),i.data&&f.push(Be("Data",i.data));let b={title:g,network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:[{title:"Transaction Details",items:f}],networkFeeSelector:!0,alert:p,balanceChange:y,tokenApprovals:T},k={type:vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,account:i.from,data:{type:2,nonce:Number(i.nonce),gasLimit:Number(i.gas),to:i.to,from:i.from,data:i.data,value:i.value,chainId:i.chainId}},m=await t.requestApproval({request:r,displayData:b,signingData:k});if("error"in m)return {error:m.error};let h;try{h=await tn(c,m);}catch(E){return {error:rpcErrors.rpcErrors.internal({message:"Unable to get transaction hash",data:{cause:E}})}}return rn({provider:c,txHash:h,onTransactionConfirmed:t.onTransactionConfirmed,onTransactionReverted:t.onTransactionReverted,requestId:r.requestId}),{result:h}},tn=async(r,e)=>"txHash"in e?e.txHash:await r.send("eth_sendRawTransaction",[e.signedData]),rn=async({provider:r,txHash:e,onTransactionConfirmed:t,onTransactionReverted:n,requestId:s})=>{try{(await r.waitForTransaction(e))?.status===1?t(e,s):n(e,s);}catch(o){console.error(o),n(e,s);}};async function Ct(r,e){let t=r.map(async(o,a)=>({index:a,result:await e(o)})),s=(await Promise.allSettled(t)).filter(o=>o.status==="fulfilled").map(o=>o).find(o=>o.value.result);return s?r[s.value.index]:void 0}function Y(r,e){return r.then(t=>({id:e,status:"fulfilled",value:t})).catch(t=>({id:e,status:"rejected",reason:t}))}async function J(r){return await Promise.allSettled(r).then(e=>e.reduce((t,n)=>{if(n.status==="fulfilled"){let s=n.value;s.status==="fulfilled"?t[s.id]=s.value:t[s.id]={error:s.reason};}return t},{}))}function ke(r){return r.type===vmModuleTypes.TokenType.ERC20}var S,q,V,ie,Ee=class{constructor({network:e,storage:t,proxyApiUrl:n,customTokens:s}){chunkTKL4UUHE_cjs.c(this,S,void 0);chunkTKL4UUHE_cjs.c(this,q,void 0);chunkTKL4UUHE_cjs.c(this,V,void 0);chunkTKL4UUHE_cjs.c(this,ie,void 0);chunkTKL4UUHE_cjs.d(this,S,e),chunkTKL4UUHE_cjs.d(this,q,t),chunkTKL4UUHE_cjs.d(this,V,n),chunkTKL4UUHE_cjs.d(this,ie,s);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:t,currency:n}){let s=w({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,S).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,S).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,S).utilityAddresses?.multicall}),o=chunkTKL4UUHE_cjs.b(this,S).pricingProviders?.coingecko.nativeTokenId,a=chunkTKL4UUHE_cjs.b(this,S).networkToken,i=new j({storage:chunkTKL4UUHE_cjs.b(this,q),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,V)}),c=o?await i.getSimplePrice({coinIds:[o],currencies:[n]}):{},l=c?.[o??""]?.[n]?.price??void 0,p=c?.[o??""]?.[n]?.marketCap??void 0,y=c?.[o??""]?.[n]?.vol24??void 0,T=c?.[o??""]?.[n]?.change24??void 0,g=await s.getBalance(t),f=new coreUtilsSdk.TokenUnit(g,a.decimals,a.symbol),b=l!==void 0?f.mul(l):void 0;return {...a,coingeckoId:o??"",type:vmModuleTypes.TokenType.NATIVE,balance:g,balanceDisplayValue:f.toDisplay(),balanceInCurrency:b?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:b?.toDisplay({fixedDp:2}),priceInCurrency:l,marketCap:p,vol24:y,change24:T}}async listErc20Balances({chainId:e,address:t,currency:n}){let s=w({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,S).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,S).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,S).utilityAddresses?.multicall}),o=chunkTKL4UUHE_cjs.b(this,S).pricingProviders?.coingecko.assetPlatformId,a=chunkTKL4UUHE_cjs.b(this,S).pricingProviders?.coingecko.nativeTokenId,i=await ue({chainId:Number(e),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,V)}),c=i.map(m=>m.address),l=[...i,...chunkTKL4UUHE_cjs.b(this,ie)].filter(ke),p=async m=>{let re=await new ethers.ethers.Contract(m.address,ge.abi,s).balanceOf?.(t)||0n;return {...m,balance:re}},y=l.map(m=>Y(p(m),m.address)),T=await J(y),g=new j({storage:chunkTKL4UUHE_cjs.b(this,q),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,V)}),f=o&&await g.getPricesByAddresses(c,o,n)||{},b=Object.keys(T),k={};for(let m=0;m<b.length;m++){let h=b[m];if(h===void 0)continue;let E=T[h];if(E===void 0||"error"in E){k[h]={error:`rpcService:getTokenWithBalance failed: ${E?.error??"unknown error"}`};continue}let re=f?.[a??""]?.[n]?.price??void 0,cr=f?.[a??""]?.[n]?.marketCap??void 0,lr=f?.[a??""]?.[n]?.vol24??void 0,pr=f?.[a??""]?.[n]?.change24??void 0,Fe=new coreUtilsSdk.TokenUnit(E.balance,E.decimals,E.symbol),$e=re!==void 0?Fe.mul(re):void 0;k[E.address.toLowerCase()]={...E,type:vmModuleTypes.TokenType.ERC20,balance:E.balance,balanceDisplayValue:Fe.toDisplay(),balanceInCurrency:$e?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:$e?.toDisplay({fixedDp:2}),priceInCurrency:re,marketCap:cr,change24:pr,vol24:lr};}return k}async listNftBalances(){return {}}};S=new WeakMap,q=new WeakMap,V=new WeakMap,ie=new WeakMap;var _t=async({addresses:r,currency:e,network:t,proxyApiUrl:n,customTokens:s=[],storage:o,balanceServices:a=[]})=>{let i=t.chainId,c=[...a,new Ee({network:t,storage:o,proxyApiUrl:n,customTokens:s})],l=await Ct(c,y=>y.isNetworkSupported(t.chainId)),p={};if(l){let y=[],T=[],g=[];r.forEach(m=>{y.push(Y(l.getNativeBalance({address:m,currency:e.toUpperCase(),chainId:i}),m)),T.push(Y(l.listErc20Balances({customTokens:s.filter(ke),currency:e.toUpperCase(),chainId:i,address:m,pageSize:100}),m)),g.push(Y(l.listNftBalances({chainId:i,address:m}),m));});let f=await J(y),b=await J(T),k=await J(g);Object.keys(f).forEach(m=>{let h=f[m];if(!h||"error"in h){p[m]={error:`getNativeBalance failed: ${h?.error??"unknown error"}`};return}let E=h.symbol;p[m]={[E]:h};}),Object.keys(b).forEach(m=>{let h=b[m];!h||"error"in h&&typeof h.error!="string"?p[m]={...p[m],error:"listErc20Balances failed: unknown error"}:"error"in h&&typeof h.error=="string"?p[m]={...p[m],error:`listErc20Balances failed: ${h.error}`}:p[m]={...p[m],...h};}),Object.keys(k).forEach(m=>{let h=k[m];!h||"error"in h&&typeof h.error!="string"?p[m]={...p[m],error:"listNftBalances failed: unknown error"}:"error"in h&&typeof h.error=="string"?p[m]={...p[m],error:`listNftBalances failed: ${h.error}`}:p[m]={...p[m],...h};});}else r.forEach(y=>{p[y]={error:"unsupported network"};});return p};var on={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},sn={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Bt=r=>{switch(r){case vmModuleTypes.Environment.PRODUCTION:return on;case vmModuleTypes.Environment.DEV:return sn}};var ln="https://ipfs.io";function Ut(r,e=ln){if(!r)return "";try{return coreUtilsSdk.ipfsResolver(r,e)}catch{return r}}var pn="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Vt(r,e="256"){let t=Ut(r);return `${pn}/width=${e},fit/${t}`}var A=class extends Error{constructor(){super(...arguments);chunkTKL4UUHE_cjs.a(this,"message","Glacier is unhealthy. Try again later.");}},ve=class{constructor({glacierApiUrl:e}){chunkTKL4UUHE_cjs.a(this,"glacierSdk");chunkTKL4UUHE_cjs.a(this,"isGlacierHealthy",!0);chunkTKL4UUHE_cjs.a(this,"supportedChainIds",[]);chunkTKL4UUHE_cjs.a(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:e}),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(t=>t.chainId),this.supportedChainIds}catch{return []}}async reindexNft({address:e,chainId:t,tokenId:n}){try{await this.glacierSdk.nfTs.reindexNft({address:e,chainId:t,tokenId:n});}catch(s){throw s instanceof A&&this.setGlacierToUnhealthy(),s}}async getTokenDetails({address:e,chainId:t,tokenId:n}){try{return this.glacierSdk.nfTs.getTokenDetails({address:e,chainId:t,tokenId:n})}catch(s){throw s instanceof A&&this.setGlacierToUnhealthy(),s}}async getNativeBalance({chainId:e,address:t,currency:n,coingeckoId:s}){try{let a=(await this.glacierSdk.evmBalances.getNativeBalance({chainId:e.toString(),address:t,currency:n.toLocaleLowerCase()})).nativeTokenBalance,i=new coreUtilsSdk.TokenUnit(a.balance,a.decimals,a.symbol),c=a.price?.value,l=c!==void 0?i.mul(c):void 0;return {name:a.name,symbol:a.symbol,decimals:a.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:a.logoUri,balance:i.toSubUnit(),balanceDisplayValue:i.toDisplay(),balanceInCurrency:l?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:l?.toDisplay({fixedDp:2}),priceInCurrency:c,coingeckoId:s??""}}catch(o){throw o instanceof A&&this.setGlacierToUnhealthy(),o}}async listErc721Balances({chainId:e,address:t}){let n,s=[];do try{let o=await this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:t,pageSize:100,pageToken:n});s.push(...o.erc721TokenBalances),n=o.nextPageToken;}catch(o){throw o instanceof A&&this.setGlacierToUnhealthy(),o}while(n);return s}async listErc1155Balances({chainId:e,address:t}){let n,s=[];do try{let o=await this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:t,pageSize:100,pageToken:n});s.push(...o.erc1155TokenBalances),n=o.nextPageToken;}catch(o){throw o instanceof A&&this.setGlacierToUnhealthy(),o}while(n);return s}async listNftBalances({chainId:e,address:t}){let s=(await Promise.allSettled([this.listErc721Balances({chainId:e.toString(),address:t}),this.listErc1155Balances({chainId:e.toString(),address:t})])).filter(o=>o.status==="fulfilled").flatMap(o=>o.value.map(a=>[`${a.address}-${a.tokenId}`,{address:a.address,description:a.metadata.description??"",logoUri:a.metadata.imageUri??"",logoSmall:Vt(a.metadata.imageUri??""),name:a.metadata.name??"",symbol:a.metadata.symbol??"",tokenId:a.tokenId,tokenUri:a.tokenUri,collectionName:"Unkown",balance:a.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?BigInt(a.balance):1,balanceDisplayValue:a.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?a.balance:"1",type:a.ercType===glacierSdk.Erc721Token.ercType.ERC_721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{description:a.metadata.description,lastUpdatedTimestamp:a.metadata.metadataLastUpdatedTimestamp,properties:a.ercType===glacierSdk.Erc721Token.ercType.ERC_721?a.metadata.attributes:a.metadata.properties}}]));return Object.fromEntries(s)}async listErc20Balances({chainId:e,address:t,currency:n,customTokens:s}){try{let o=[],a;do{let i=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:t,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:a});o.push(...fn(i.erc20TokenBalances,Number(e))),a=i.nextPageToken;}while(a);return [...un(s),...o].reduce((i,c)=>({...i,[c.address.toLowerCase()]:c}),{})}catch(o){throw o instanceof A&&this.setGlacierToUnhealthy(),o}}async listTransactions({chainId:e,address:t,pageToken:n,pageSize:s}){try{return this.glacierSdk.evmTransactions.listTransactions({chainId:e,address:t,pageToken:n,pageSize:s})}catch(o){throw o instanceof A&&this.setGlacierToUnhealthy(),o}}},un=r=>r.map(e=>({...e,decimals:e.decimals??18,type:vmModuleTypes.TokenType.ERC20,balance:0n,balanceInCurrency:0,balanceDisplayValue:"0",balanceCurrencyDisplayValue:"0",priceInCurrency:0,marketCap:0,change24:0,vol24:0})),fn=(r,e)=>r.map(t=>{let n=new coreUtilsSdk.TokenUnit(t.balance,t.decimals,t.symbol),s=n.toDisplay(),o=t.balanceValue?.value.toString(),a=t.price?.value,i=a!==void 0?n.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {chainId:e,address:t.address,name:t.name,symbol:t.symbol,decimals:t.decimals,logoUri:t.logoUri,balance:n.toSubUnit(),balanceCurrencyDisplayValue:o,balanceDisplayValue:s,balanceInCurrency:i,priceInCurrency:a,type:vmModuleTypes.TokenType.ERC20}});var Ue=r=>{let e="";e+=`Domain
|
|
22
|
+
`;for(let t in r.domain)e+=` ${t}: ${M(String(r.domain[t]))}
|
|
24
23
|
`;e+=`
|
|
25
24
|
Message
|
|
26
25
|
`;for(let t in r.message)if(typeof r.message[t]=="object"&&!Array.isArray(r.message[t])){e+=` ${t}:
|
|
27
26
|
`;for(let n in r.message[t])Array.isArray(r.message[t][n])?(e+=` ${n}:
|
|
28
|
-
`,r.message[t][n].forEach((s,o)=>{e+=` ${o}: ${
|
|
29
|
-
`;})):e+=` ${n}: ${
|
|
27
|
+
`,r.message[t][n].forEach((s,o)=>{e+=` ${o}: ${M(s)}
|
|
28
|
+
`;})):e+=` ${n}: ${M(String(r.message[t][n]))}
|
|
30
29
|
`;}else Array.isArray(r.message[t])?(e+=` ${t}:
|
|
31
30
|
`,r.message[t].forEach((n,s)=>{e+=` ${s}:
|
|
32
31
|
`;for(let o in n)Array.isArray(n[o])?(e+=` ${o}:
|
|
33
|
-
`,n[o].forEach((a,i)=>{e+=` ${i}: ${
|
|
34
|
-
`;})):e+=` ${o}: ${
|
|
35
|
-
`;})):e+=` ${t}: ${
|
|
36
|
-
`;return e},
|
|
37
|
-
`,e+=`${
|
|
32
|
+
`,n[o].forEach((a,i)=>{e+=` ${i}: ${M(a)}
|
|
33
|
+
`;})):e+=` ${o}: ${M(String(n[o]))}
|
|
34
|
+
`;})):e+=` ${t}: ${M(String(r.message[t]))}
|
|
35
|
+
`;return e},Ft=r=>{let e="";return r.forEach(t=>{e+=`${t.name}:
|
|
36
|
+
`,e+=`${M(String(t.value))}
|
|
38
37
|
|
|
39
|
-
`;}),e},G=r=>{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 r.split("").map(t=>e[t]||t).join("")};var ie=zod.z.string().describe("message"),N=zod.z.string().describe("address");var Lt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([N,ie])});var Ft=zod.z.object({name:zod.z.string(),type:zod.z.string()}),J=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(Ft)}).catchall(zod.z.array(Ft)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),Ge=zod.z.array(zod.z.object({type:zod.z.string(),name:zod.z.string(),value:zod.z.union([zod.z.string(),zod.z.number(),zod.z.boolean(),zod.z.object({}).passthrough(),zod.z.array(zod.z.unknown()),zod.z.null()])})).nonempty(),Le=J.or(Ge),Ht=zod.z.union([zod.z.string().describe("data string"),J]),Wt=zod.z.union([zod.z.string().describe("data string"),Le]),$t=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([N,Wt])}),Ot=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([N,Wt])}),jt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([N,Ht])}),Yt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([N,Ht])});var Jt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([ie,N]),zod.z.tuple([ie,N,zod.z.string().optional().describe("password")])])});var gn=zod.z.discriminatedUnion("method",[Jt,Lt,$t,Ot,jt,Yt]).transform((r,e)=>{let{method:t,params:n}=r;switch(t){case vmModuleTypes.RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:t};case vmModuleTypes.RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:t};case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:{let s=n[0],o=n[1];if(typeof o!="string")return {data:o,address:s,method:t};try{let a=JSON.parse(o);return {data:Le.parse(a),address:s,method:t}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:{let s=n[0],o=n[1];if(typeof o!="string")return {data:o,address:s,method:t};try{let a=JSON.parse(o);return {data:J.parse(a),address:s,method:t}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}}});function qt(r){return gn.safeParse(r)}var zt=r=>Ge.safeParse(r).success,Hs=r=>J.safeParse(r).success;var Kt=r=>{try{let{EIP712Domain:e,...t}=r.types;return ethers.TypedDataEncoder.getPayload(r.domain,t,r.message),{isValid:!0}}catch(e){return {isValid:!1,error:e}}};var Qt=async({request:r,network:e,approvalController:t,proxyApiUrl:n})=>{let s=qt({method:r.method,params:r.params});if(!s.success)return console.error("invalid params",s.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams({message:"Params are invalid",data:{cause:s.error}})};let{method:o,data:a,address:i}=s.data,c;(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(c=Kt(a));let l,p,y,h;if(c&&!c.isValid&&(h={type:vmModuleTypes.AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements.",detailedDescription:c.error.toString()}}),o===vmModuleTypes.RpcMethod.ETH_SIGN)l={type:o,account:i,data:a},p=a,y="Signing this message can be dangerous. This signature could potentially perform any operation on your account's behalf, including granting complete control of your account and all of its assets to the requesting site. Only sign this message if you know what you're doing or completely trust the requesting site";else if(o===vmModuleTypes.RpcMethod.PERSONAL_SIGN)l={type:o,account:i,data:a},p=ethers.toUtf8String(a);else if(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)l={type:o,account:i,data:a},p=zt(a)?Mt(a):Ve(a);else if(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){l={type:o,account:i,data:a};let{types:b,primaryType:T,...S}=a;p=Ve(S);}if(!l||!p)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let g=await It({request:r,proxyApiUrl:n,accountAddress:i,chainId:e.chainId,data:{method:o,params:r.params},dAppUrl:r.dappInfo.url}),f={title:"Sign Message",dAppInfo:{name:r.dappInfo.name,action:`${r.dappInfo.name} requests you to sign the following message`,logoUri:r.dappInfo.icon},network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},account:i,details:[{title:"Message",items:[p]}],disclaimer:y,alert:g?.alert??h,balanceChange:g?.balanceChange,tokenApprovals:g?.tokenApprovals},m=await t.requestApproval({request:r,displayData:f,signingData:l});return "error"in m?{error:m.error}:"signedData"in m?{result:m.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var Xt=async(r,e)=>{try{return {result:await P({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3}).send(r.method,r.params)}}catch(t){let n=t.info?.error?.message||t.error?.message||t.message;return {error:rpcErrors.rpcErrors.internal(n)}}};var er=async({accountIndex:r,xpub:e,walletType:t})=>{switch(t){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getAddressFromXPub(e,r)};case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{let n=Buffer.from(e,"hex");return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getEvmAddressFromPubKey(n)}}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${t}`)}};var K,Ee=class{constructor(e){this.baseUrl=e;chunkTKL4UUHE_cjs.c(this,K,[]);}async isNetworkSupported(e){return (await this.getChainList()).map(s=>s.community_id).some(s=>s===e)}async getChainInfo({chainId:e}){return (await this.getChainList()).find(n=>n.id===e)}async getTokenBalance({chainId:e,address:t,tokenId:n}){let s=await fetch(`${this.baseUrl}/v1/user/token?id=${t}&chain_id=${e}&token_id=${n}`);if(s.ok)return await s.json();throw new Error(`${s.status}:${s.statusText}`)}async getTokensBalanceOnChain({chainId:e,address:t}){let n=await fetch(`${this.baseUrl}/v1/user/all_token_list?id=${t}&chain_ids=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getTokenList({chainId:e,address:t}){let n=await fetch(`${this.baseUrl}/v1/user/token_list?id=${t}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getChainList(){if(chunkTKL4UUHE_cjs.b(this,K).length===0){let e=await fetch(`${this.baseUrl}/v1/chain/list`);if(e.ok)chunkTKL4UUHE_cjs.d(this,K,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return chunkTKL4UUHE_cjs.b(this,K)}};K=new WeakMap;var w,ve=class{constructor({proxyApiUrl:e}){chunkTKL4UUHE_cjs.c(this,w,void 0);chunkTKL4UUHE_cjs.d(this,w,new Ee(`${e}/proxy/debank`));}async isNetworkSupported(e){return chunkTKL4UUHE_cjs.b(this,w).isNetworkSupported(e)}async getNativeBalance({chainId:e,address:t,currency:n}){if(!ethers.isHexString(t))throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid address: "+t);let o=(await chunkTKL4UUHE_cjs.b(this,w).getChainList()).find(b=>b.community_id===e)?.id;if(!o)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let a=await chunkTKL4UUHE_cjs.b(this,w).getChainInfo({chainId:o});if(!a)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let i=a.native_token_id,c=await chunkTKL4UUHE_cjs.b(this,w).getTokenBalance({address:t,chainId:o,tokenId:i}),l=new coreUtilsSdk.TokenUnit(c.raw_amount,c.decimals,c.symbol),p=l.toDisplay(),h=(await ye()).usd[n.toLowerCase()],g=h?h*c.price:void 0,f=g?l.mul(g).toDisplay({fixedDp:2}):void 0,m=g?l.mul(g).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {name:c.name,symbol:c.symbol,decimals:c.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:c.logo_url,balance:l.toSubUnit(),balanceDisplayValue:p,balanceInCurrency:m,balanceCurrencyDisplayValue:f,priceInCurrency:g}}async listErc20Balances({chainId:e,address:t,currency:n}){if(!ethers.isHexString(t))throw rpcErrors.rpcErrors.invalidParams("listErc20Balances: not valid address");let o=(await chunkTKL4UUHE_cjs.b(this,w).getChainList()).find(l=>l.community_id===e)?.id;if(!o)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let a=await chunkTKL4UUHE_cjs.b(this,w).getChainInfo({chainId:o});if(!a)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let i=await chunkTKL4UUHE_cjs.b(this,w).getTokensBalanceOnChain({chainId:o,address:t}),c={};for(let l of i){if(l.id===a.native_token_id)continue;let p=new coreUtilsSdk.TokenUnit(l.raw_amount,l.decimals,l.symbol),y=p.toDisplay(),g=(await ye()).usd[n.toLowerCase()],f=g?g*l.price:void 0,m=f?p.mul(f).toDisplay({fixedDp:2}):void 0,b=f?p.mul(f).toDisplay({fixedDp:2,asNumber:!0}):void 0;c[l.id]={chainId:a.community_id,address:l.id,name:l.name,symbol:l.symbol,decimals:l.decimals,logoUri:l.logo_url,balance:p.toSubUnit(),balanceCurrencyDisplayValue:m,balanceDisplayValue:y,balanceInCurrency:b,priceInCurrency:f,type:vmModuleTypes.TokenType.ERC20};}return c}};w=new WeakMap;var X,pe,V,Z,ar=class{constructor({approvalController:e,environment:t}){chunkTKL4UUHE_cjs.c(this,X,void 0);chunkTKL4UUHE_cjs.c(this,pe,void 0);chunkTKL4UUHE_cjs.c(this,V,void 0);chunkTKL4UUHE_cjs.c(this,Z,void 0);let{glacierApiUrl:n,proxyApiUrl:s}=Ut(t);chunkTKL4UUHE_cjs.d(this,X,new Te({glacierApiUrl:n})),chunkTKL4UUHE_cjs.d(this,pe,new ve({proxyApiUrl:s})),chunkTKL4UUHE_cjs.d(this,V,s),chunkTKL4UUHE_cjs.d(this,Z,e);}getProvider(e){return P({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3})}getAddress({accountIndex:e,xpub:t,walletType:n}){return er({accountIndex:e,xpub:t,walletType:n})}getBalances({addresses:e,network:t,currency:n,customTokens:s,storage:o}){return Dt({addresses:e,currency:n,network:t,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,V),customTokens:s,balanceServices:[chunkTKL4UUHE_cjs.b(this,X),chunkTKL4UUHE_cjs.b(this,pe)],storage:o})}getManifest(){let e=vmModuleTypes.parseManifest(pt);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:t,chainName:n,rpcUrl:s,utilityAddresses:o}=e;return $e({chainId:t,chainName:n,rpcUrl:s,multiContractAddress:o?.multicall})}getTransactionHistory(e){let{network:t,address:n,nextPageToken:s,offset:o}=e,{chainId:a,isTestnet:i,networkToken:c,explorerUrl:l=""}=t;return lt({chainId:a,isTestnet:i,networkToken:c,explorerUrl:l,address:n,nextPageToken:s,offset:o,glacierService:chunkTKL4UUHE_cjs.b(this,X)})}getTokens(e){let{chainId:t}=e;return me({chainId:t,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,V)})}async onRpcRequest(e,t){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return Nt({request:e,network:t,approvalController:chunkTKL4UUHE_cjs.b(this,Z),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,V)});case vmModuleTypes.RpcMethod.PERSONAL_SIGN:case vmModuleTypes.RpcMethod.ETH_SIGN:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:return Qt({request:e,network:t,approvalController:chunkTKL4UUHE_cjs.b(this,Z),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,V)});default:return xn(e.method)?Xt(e,t):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};X=new WeakMap,pe=new WeakMap,V=new WeakMap,Z=new WeakMap;var xn=r=>r.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(r);
|
|
38
|
+
`;}),e},M=r=>{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 r.split("").map(t=>e[t]||t).join("")};var le=zod.z.string().describe("message"),N=zod.z.string().describe("address");var Wt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([N,le])});var Ot=zod.z.object({name:zod.z.string(),type:zod.z.string()}),z=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(Ot)}).catchall(zod.z.array(Ot)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),Me=zod.z.array(zod.z.object({type:zod.z.string(),name:zod.z.string(),value:zod.z.union([zod.z.string(),zod.z.number(),zod.z.boolean(),zod.z.object({}).passthrough(),zod.z.array(zod.z.unknown()),zod.z.null()])})).nonempty(),Ge=z.or(Me),Ht=zod.z.union([zod.z.string().describe("data string"),z]),jt=zod.z.union([zod.z.string().describe("data string"),Ge]),Yt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([N,jt])}),Jt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([N,jt])}),qt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([N,Ht])}),zt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([N,Ht])});var Kt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([le,N]),zod.z.tuple([le,N,zod.z.string().optional().describe("password")])])});var bn=zod.z.discriminatedUnion("method",[Kt,Wt,Yt,Jt,qt,zt]).transform((r,e)=>{let{method:t,params:n}=r;switch(t){case vmModuleTypes.RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:t};case vmModuleTypes.RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:t};case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:{let s=n[0],o=n[1];if(typeof o!="string")return {data:o,address:s,method:t};try{let a=JSON.parse(o);return {data:Ge.parse(a),address:s,method:t}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:{let s=n[0],o=n[1];if(typeof o!="string")return {data:o,address:s,method:t};try{let a=JSON.parse(o);return {data:z.parse(a),address:s,method:t}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}}});function Xt(r){return bn.safeParse(r)}var Zt=r=>Me.safeParse(r).success,Xs=r=>z.safeParse(r).success;var Qt=r=>{try{let{EIP712Domain:e,...t}=r.types;return ethers.TypedDataEncoder.getPayload(r.domain,t,r.message),{isValid:!0}}catch(e){return {isValid:!1,error:e}}};var er=async({request:r,network:e,approvalController:t,proxyApiUrl:n})=>{let s=Xt({method:r.method,params:r.params});if(!s.success)return console.error("invalid params",s.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams({message:"Params are invalid",data:{cause:s.error}})};let{method:o,data:a,address:i}=s.data,c;(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(c=Qt(a));let l,p,y,T;if(c&&!c.isValid&&(T={type:vmModuleTypes.AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements.",detailedDescription:c.error.toString()}}),o===vmModuleTypes.RpcMethod.ETH_SIGN)l={type:o,account:i,data:a},p=a,y="Signing this message can be dangerous. This signature could potentially perform any operation on your account's behalf, including granting complete control of your account and all of its assets to the requesting site. Only sign this message if you know what you're doing or completely trust the requesting site";else if(o===vmModuleTypes.RpcMethod.PERSONAL_SIGN)l={type:o,account:i,data:a},p=ethers.toUtf8String(a);else if(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)l={type:o,account:i,data:a},p=Zt(a)?Ft(a):Ue(a);else if(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){l={type:o,account:i,data:a};let{types:k,primaryType:m,...h}=a;p=Ue(h);}if(!l||!p)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let g=await vt({request:r,proxyApiUrl:n,accountAddress:i,chainId:e.chainId,data:{method:o,params:r.params},dAppUrl:r.dappInfo.url}),f={title:"Sign Message",dAppInfo:{name:r.dappInfo.name,action:`${r.dappInfo.name} requests you to sign the following message`,logoUri:r.dappInfo.icon},network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},account:i,details:[{title:"Message",items:[p]}],disclaimer:y,alert:g?.alert??T,balanceChange:g?.balanceChange,tokenApprovals:g?.tokenApprovals},b=await t.requestApproval({request:r,displayData:f,signingData:l});return "error"in b?{error:b.error}:"signedData"in b?{result:b.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var tr=async(r,e)=>{try{return {result:await w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3}).send(r.method,r.params)}}catch(t){let n=t.info?.error?.message||t.error?.message||t.message;return {error:rpcErrors.rpcErrors.internal(n)}}};var nr=async({accountIndex:r,xpub:e,walletType:t})=>{switch(t){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getAddressFromXPub(e,r)};case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{let n=Buffer.from(e,"hex");return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getEvmAddressFromPubKey(n)}}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${t}`)}};var Z,Se=class{constructor(e){this.baseUrl=e;chunkTKL4UUHE_cjs.c(this,Z,[]);}async isNetworkSupported(e){return (await this.getChainList()).map(s=>s.community_id).some(s=>s===e)}async getChainInfo({chainId:e}){return (await this.getChainList()).find(n=>n.id===e)}async getTokenBalance({chainId:e,address:t,tokenId:n}){let s=await fetch(`${this.baseUrl}/v1/user/token?id=${t}&chain_id=${e}&token_id=${n}`);if(s.ok)return await s.json();throw new Error(`${s.status}:${s.statusText}`)}async getTokensBalanceOnChain({chainId:e,address:t}){let n=await fetch(`${this.baseUrl}/v1/user/all_token_list?id=${t}&chain_ids=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getTokenList({chainId:e,address:t}){let n=await fetch(`${this.baseUrl}/v1/user/token_list?id=${t}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getChainList(){if(chunkTKL4UUHE_cjs.b(this,Z).length===0){let e=await fetch(`${this.baseUrl}/v1/chain/list`);if(e.ok)chunkTKL4UUHE_cjs.d(this,Z,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return chunkTKL4UUHE_cjs.b(this,Z)}};Z=new WeakMap;var x,Re=class{constructor({proxyApiUrl:e}){chunkTKL4UUHE_cjs.c(this,x,void 0);chunkTKL4UUHE_cjs.d(this,x,new Se(`${e}/proxy/debank`));}async isNetworkSupported(e){return chunkTKL4UUHE_cjs.b(this,x).isNetworkSupported(e)}async getNativeBalance({chainId:e,address:t,currency:n}){if(!ethers.isHexString(t))throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid address: "+t);let o=(await chunkTKL4UUHE_cjs.b(this,x).getChainList()).find(k=>k.community_id===e)?.id;if(!o)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let a=await chunkTKL4UUHE_cjs.b(this,x).getChainInfo({chainId:o});if(!a)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let i=a.native_token_id,c=await chunkTKL4UUHE_cjs.b(this,x).getTokenBalance({address:t,chainId:o,tokenId:i}),l=new coreUtilsSdk.TokenUnit(c.raw_amount,c.decimals,c.symbol),p=l.toDisplay(),T=(await be()).usd[n.toLowerCase()],g=T?T*c.price:void 0,f=g?l.mul(g).toDisplay({fixedDp:2}):void 0,b=g?l.mul(g).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {name:c.name,symbol:c.symbol,decimals:c.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:c.logo_url,balance:l.toSubUnit(),balanceDisplayValue:p,balanceInCurrency:b,balanceCurrencyDisplayValue:f,priceInCurrency:g}}async listErc20Balances({chainId:e,address:t,currency:n}){if(!ethers.isHexString(t))throw rpcErrors.rpcErrors.invalidParams("listErc20Balances: not valid address");let o=(await chunkTKL4UUHE_cjs.b(this,x).getChainList()).find(l=>l.community_id===e)?.id;if(!o)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let a=await chunkTKL4UUHE_cjs.b(this,x).getChainInfo({chainId:o});if(!a)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let i=await chunkTKL4UUHE_cjs.b(this,x).getTokensBalanceOnChain({chainId:o,address:t}),c={};for(let l of i){if(l.id===a.native_token_id)continue;let p=new coreUtilsSdk.TokenUnit(l.raw_amount,l.decimals,l.symbol),y=p.toDisplay(),g=(await be()).usd[n.toLowerCase()],f=g?g*l.price:void 0,b=f?p.mul(f).toDisplay({fixedDp:2}):void 0,k=f?p.mul(f).toDisplay({fixedDp:2,asNumber:!0}):void 0;c[l.id]={chainId:a.community_id,address:l.id,name:l.name,symbol:l.symbol,decimals:l.decimals,logoUri:l.logo_url,balance:p.toSubUnit(),balanceCurrencyDisplayValue:b,balanceDisplayValue:y,balanceInCurrency:k,priceInCurrency:f,type:vmModuleTypes.TokenType.ERC20};}return c}async listNftBalances(){return {}}};x=new WeakMap;var ee,de,U,te,ir=class{constructor({approvalController:e,environment:t}){chunkTKL4UUHE_cjs.c(this,ee,void 0);chunkTKL4UUHE_cjs.c(this,de,void 0);chunkTKL4UUHE_cjs.c(this,U,void 0);chunkTKL4UUHE_cjs.c(this,te,void 0);let{glacierApiUrl:n,proxyApiUrl:s}=Bt(t);chunkTKL4UUHE_cjs.d(this,ee,new ve({glacierApiUrl:n})),chunkTKL4UUHE_cjs.d(this,de,new Re({proxyApiUrl:s})),chunkTKL4UUHE_cjs.d(this,U,s),chunkTKL4UUHE_cjs.d(this,te,e);}getProvider(e){return w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3})}getAddress({accountIndex:e,xpub:t,walletType:n}){return nr({accountIndex:e,xpub:t,walletType:n})}getBalances({addresses:e,network:t,currency:n,customTokens:s,storage:o}){return _t({addresses:e,currency:n,network:t,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,U),customTokens:s,balanceServices:[chunkTKL4UUHE_cjs.b(this,ee),chunkTKL4UUHE_cjs.b(this,de)],storage:o})}getManifest(){let e=vmModuleTypes.parseManifest(lt);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:t,chainName:n,rpcUrl:s,utilityAddresses:o}=e;return We({chainId:t,chainName:n,rpcUrl:s,multiContractAddress:o?.multicall})}getTransactionHistory(e){let{network:t,address:n,nextPageToken:s,offset:o}=e,{chainId:a,isTestnet:i,networkToken:c,explorerUrl:l=""}=t;return ct({chainId:a,isTestnet:i,networkToken:c,explorerUrl:l,address:n,nextPageToken:s,offset:o,glacierService:chunkTKL4UUHE_cjs.b(this,ee)})}getTokens(e){let{chainId:t}=e;return ue({chainId:t,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,U)})}async onRpcRequest(e,t){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return xt({request:e,network:t,approvalController:chunkTKL4UUHE_cjs.b(this,te),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,U)});case vmModuleTypes.RpcMethod.PERSONAL_SIGN:case vmModuleTypes.RpcMethod.ETH_SIGN:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:return er({request:e,network:t,approvalController:chunkTKL4UUHE_cjs.b(this,te),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,U)});default:return wn(e.method)?tr(e,t):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};ee=new WeakMap,de=new WeakMap,U=new WeakMap,te=new WeakMap;var wn=r=>r.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(r);
|
|
40
39
|
|
|
41
|
-
exports.ERC20TransactionType =
|
|
42
|
-
exports.EvmModule =
|
|
43
|
-
exports.NonContractCallTypes =
|
|
44
|
-
exports.addIdToPromise =
|
|
45
|
-
exports.isTypedData =
|
|
46
|
-
exports.isTypedDataV1 =
|
|
47
|
-
exports.settleAllIdPromises =
|
|
40
|
+
exports.ERC20TransactionType = ye;
|
|
41
|
+
exports.EvmModule = ir;
|
|
42
|
+
exports.NonContractCallTypes = ot;
|
|
43
|
+
exports.addIdToPromise = Y;
|
|
44
|
+
exports.isTypedData = Xs;
|
|
45
|
+
exports.isTypedDataV1 = Zt;
|
|
46
|
+
exports.settleAllIdPromises = J;
|
|
48
47
|
//# sourceMappingURL=out.js.map
|
|
49
48
|
//# sourceMappingURL=index.cjs.map
|