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