@avalabs/evm-module 3.4.0 → 3.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +26 -27
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +53 -53
- package/dist/index.d.ts +53 -53
- package/dist/index.js +20 -21
- package/dist/index.js.map +1 -1
- package/package.json +9 -10
package/dist/index.cjs
CHANGED
|
@@ -2,52 +2,51 @@
|
|
|
2
2
|
|
|
3
3
|
var chunkTKL4UUHE_cjs = require('./chunk-TKL4UUHE.cjs');
|
|
4
4
|
var vmModuleTypes = require('@avalabs/vm-module-types');
|
|
5
|
-
var
|
|
6
|
-
var coreWalletsSdk = require('@avalabs/core-wallets-sdk');
|
|
5
|
+
var Io = require('@blockaid/client');
|
|
7
6
|
var coreCoingeckoSdk = require('@avalabs/core-coingecko-sdk');
|
|
8
7
|
var zod = require('zod');
|
|
9
8
|
var glacierSdk = require('@avalabs/glacier-sdk');
|
|
9
|
+
var rpcErrors = require('@metamask/rpc-errors');
|
|
10
10
|
var ethers = require('ethers');
|
|
11
|
+
var coreWalletsSdk = require('@avalabs/core-wallets-sdk');
|
|
12
|
+
var gr = require('@openzeppelin/contracts/build/contracts/ERC20.json');
|
|
11
13
|
var coreUtilsSdk = require('@avalabs/core-utils-sdk');
|
|
14
|
+
var yr = require('xss');
|
|
12
15
|
var coreChainsSdk = require('@avalabs/core-chains-sdk');
|
|
13
|
-
var
|
|
14
|
-
var la = require('lodash.startcase');
|
|
15
|
-
var Er = require('@openzeppelin/contracts/build/contracts/ERC20.json');
|
|
16
|
-
var Io = require('@blockaid/client');
|
|
17
|
-
var Tr = require('xss');
|
|
16
|
+
var oo = require('lodash.startcase');
|
|
18
17
|
|
|
19
18
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
19
|
|
|
21
|
-
var la__default = /*#__PURE__*/_interopDefault(la);
|
|
22
|
-
var Er__default = /*#__PURE__*/_interopDefault(Er);
|
|
23
20
|
var Io__default = /*#__PURE__*/_interopDefault(Io);
|
|
24
|
-
var
|
|
21
|
+
var gr__default = /*#__PURE__*/_interopDefault(gr);
|
|
22
|
+
var yr__default = /*#__PURE__*/_interopDefault(yr);
|
|
23
|
+
var oo__default = /*#__PURE__*/_interopDefault(oo);
|
|
25
24
|
|
|
26
|
-
async function Me({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 X=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=M.exponential()})=>{let a=0,o=0,s;for(;o<r;){o>0&&await Pn(a);try{let c=await t(o);if(e(c))return c}catch(c){s=c;}a=n(o),o++;}let i=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(i)},M=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return r=>e*1e3}static constantMs(e){return r=>e}static linearThenExponential(e,r){return n=>{if(n<e)return (n+1)*r;let a=n-e+1,o=e*r,s=2*r*(Math.pow(2,a)-1);return o+s}}};function Pn(t){return new Promise(e=>setTimeout(e,t))}var dt=t=>X({operation:e=>t(e>0),maxRetries:2,backoffPolicy:M.constant(1),isSuccess:e=>e?.status?.error_code!==429});function Dt(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=Dt(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}async function B(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 ve=class{constructor(e){this.proxyApiUrl=e;}simplePrice(e){let r=new URLSearchParams(e);return B([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(e){let{id:r,...n}=e,a=new URLSearchParams(n);return B([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}};var Sn=zod.z.array(zod.z.object({internalId:zod.z.string(),id:zod.z.string(),symbol:zod.z.string(),name:zod.z.string(),image:zod.z.string().optional().nullable(),current_price:zod.z.number().optional().nullable(),price_change_percentage_24h:zod.z.number().optional().nullable(),market_cap:zod.z.number().optional().nullable(),total_volume:zod.z.number().optional().nullable(),platforms:zod.z.record(zod.z.string(),zod.z.string())})),Ge=class{constructor(e){this.proxyApiUrl=e;}watchlistToken(e){let r=new URLSearchParams(e);return B([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],Sn)}};var Mt=coreCoingeckoSdk.getBasicCoingeckoHttp(),W,Z,j=class{constructor({storage:e,proxyApiUrl:r}){chunkTKL4UUHE_cjs.c(this,W,void 0);chunkTKL4UUHE_cjs.c(this,Z,void 0);chunkTKL4UUHE_cjs.a(this,"transformSimplePriceResponse",(e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(a=>{let o=e[a];n[a]={},r.forEach(s=>{n[a]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),n});chunkTKL4UUHE_cjs.d(this,W,e),chunkTKL4UUHE_cjs.d(this,Z,r);}async getWatchlistDataForToken({tokenDetails:e,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let a=(await new Ge(chunkTKL4UUHE_cjs.b(this,Z)).watchlistToken({tokens:e.symbol,currency:r})).filter(o=>e.isNative?o.internalId===`NATIVE-${e.symbol.toLowerCase()}`:o.platforms[e.caip2Id]===e.address)[0];return a?{priceInCurrency:a.current_price??0,change24:a.price_change_percentage_24h??0,marketCap:a.market_cap??0,vol24:a.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${e?`${ut(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkTKL4UUHE_cjs.b(this,W)?.get?.(o),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,W)?.set?.(o,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,s=`getPricesWithMarketDataByAddresses-${`${ut(e)}-${r}-${n}`}`;if(a=chunkTKL4UUHE_cjs.b(this,W)?.get?.(s),a)return a;try{a=await dt(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:i}));}catch(i){console.error(i),a=void 0;}return chunkTKL4UUHE_cjs.b(this,W)?.set?.(s,a),a}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let o=await new ve(chunkTKL4UUHE_cjs.b(this,Z)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(o,[n])}return coreCoingeckoSdk.simpleTokenPrice(Mt,{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:a=!1,change24:o=!1,lastUpdated:s=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await new ve(chunkTKL4UUHE_cjs.b(this,Z)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:o,include_last_updated_at:s});return this.transformSimplePriceResponse(l,r)}return coreCoingeckoSdk.simplePrice(Mt,{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:o,lastUpdated:s,shouldThrow:c})}};W=new WeakMap,Z=new WeakMap;var Bn="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",Dn="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",Gt=zod.object({date:zod.string(),usd:zod.record(zod.number())}),Le=async()=>{try{return await B([Bn],Gt)}catch{return await B([Dn],Gt)}};var ft=(t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),Ve=(t,e)=>({label:t,value:e,type:vmModuleTypes.DetailItemType.LINK}),oe=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e});var Oe=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.NETWORK,value:e});var yt=({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 Lt=process.env.GLACIER_API_KEY;var be=()=>Lt;var Mn={rltoken:be()},Re=class extends glacierSdk.FetchHttpRequest{constructor(e){super(e);}request(e){let r={...Mn,...e.query||{}},n={...e,query:Object.keys(r).length>0?r:void 0};return super.request(n)}};var D=(t,e)=>({message:`${t}${e instanceof Error?`: ${e.message}`:""}`,data:{cause:e}});var w=async t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:o=2e3}=t,s=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:a},Vn(n),new ethers.Network(r,e));return s.pollingInterval=o,s},Fn=["glacier-api.avax.network","proxy-api.avax.network"];function Vn(t){let e=new URL(t),r=be();if(r&&Fn.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}var ht={LOW:1n,MEDIUM:4n,HIGH:6n},Tt=500000000n,On=t=>t===coreChainsSdk.ChainId.AVALANCHE_TESTNET_ID||t===coreChainsSdk.ChainId.AVALANCHE_MAINNET_ID;async function Ot({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,caipId:a,proxyApiUrl:o}){let s=await w({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n});if(!o)throw rpcErrors.rpcErrors.internal("Proxy API URL is needed");if(On(t))try{let E=await $n(s);return {...E,baseFee:E.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 Hn(o,a),p=new coreUtilsSdk.TokenUnit(l,0,""),d=new coreUtilsSdk.TokenUnit(c,0,""),m=BigInt("1000000000"),u=d.mul(p).add(m).toSubUnit(),y=Tt*ht.LOW,h=Tt*ht.MEDIUM,v=Tt*ht.HIGH;return {baseFee:u,low:{maxFeePerGas:u+y,maxPriorityFeePerGas:y},medium:{maxFeePerGas:u+h,maxPriorityFeePerGas:h},high:{maxFeePerGas:u+v,maxPriorityFeePerGas:v},isFixedFee:!1,displayDecimals:9}}async function $n(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 Hn(t,e){if(!e)return 1.5;try{let n=await fetch(`${t}/gas/multiplier`);if(!n.ok)throw new Error(n.statusText);let a=await n.json();return a[e]??a.default}catch{return 1.5}}function G(t,e,r="tx"){return `${t}/${r}/${e}`}var Ht=({tx:t,networkToken:e,chainId:r,explorerUrl:n,address:a})=>{let o=t.from.toLowerCase()===a.toLowerCase(),s=parseInt(t.timeStamp)*1e3,i=e.decimals,l=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol).toDisplay(),p=$t(t)&&zn(t)?vmModuleTypes.TransactionType.APPROVE:o?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,{from:d,to:m,gasPrice:u,gasUsed:y,hash:h}=t,v=G(n,h);return {isIncoming:!o,isOutgoing:o,isContractCall:$t(t),timestamp:s,hash:h,isSender:o,from:d,to:m,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 $t(t){return t.input!=="0x"}var qn="0x095ea7b3",Yn="0x39509351";function zn(t){let e=t.input?.slice(0,10)?.toLowerCase();return e===qn||e===Yn}function jt({tx:t,address:e,explorerUrl:r,chainId:n}){let a=t.from.toLowerCase()===e.toLowerCase(),o=parseInt(t.timeStamp)*1e3,i=new coreUtilsSdk.TokenUnit(t.value,Number(t.tokenDecimal),t.tokenSymbol).toDisplay(),{from:c,to:l,gasPrice:p,gasUsed:d,hash:m,tokenDecimal:u,tokenName:y,tokenSymbol:h,contractAddress:v}=t,E=a?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,R=G(r,m);return {isIncoming:!a,isOutgoing:a,isContractCall:!1,timestamp:o,hash:m,isSender:a,from:c,to:l,tokens:[{decimal:u,name:y,symbol:h,type:vmModuleTypes.TokenType.ERC20,amount:i,address:v}],gasUsed:d,gasPrice:p,chainId:n.toString(),txType:E,explorerLink:R}}var qt=async({isTestnet:t,networkToken:e,explorerUrl:r,chainId:n,address:a,nextPageToken:o,offset:s})=>{let i=o?JSON.parse(o):void 0,c=i?.page||1,l=i?.queries||["normal","erc20"],p=(l.includes("normal")?await coreEtherscanSdk.getNormalTxs(a,!t,{page:c,offset:s}):[]).map(h=>Ht({tx:h,chainId:n,networkToken:e,explorerUrl:r,address:a})),d=(l.includes("erc20")?await coreEtherscanSdk.getErc20Txs(a,!t,void 0,{page:c,offset:s}):[]).map(h=>jt({tx:h,address:a,explorerUrl:r,chainId:n})),m=d.map(h=>h.hash),u=p.filter(h=>!m.includes(h.hash)),y={queries:[],page:c+1};return p.length&&y.queries.push("normal"),d.length&&y.queries.push("erc20"),{transactions:[...u,...d],nextPageToken:y.queries.length?JSON.stringify(y):""}};function Yt({tx:t,networkToken:e,explorerUrl:r,chainId:n,address:a}){let o=t.from_address.toLowerCase()===a.toLowerCase(),s=new Date(t.block_timestamp).getTime(),i=ta(t.category),c=!Qn.has(t.category),l=ra(t,e,a),p=G(r,t.hash);return {isContractCall:c,isIncoming:!o,isOutgoing:o,isSender:o,timestamp:s,hash:t.hash,from:t.from_address,to:t.to_address??"",tokens:l,gasPrice:t.gas_price,gasUsed:t.receipt_gas_used,chainId:n.toString(),txType:i,method:t.method_label??void 0,explorerLink:p}}var Qn=new Set(["send","receive","token send","token receive"]),ea={send:vmModuleTypes.TransactionType.SEND,receive:vmModuleTypes.TransactionType.RECEIVE,"token send":vmModuleTypes.TransactionType.SEND,"token receive":vmModuleTypes.TransactionType.RECEIVE,"nft send":vmModuleTypes.TransactionType.NFT_SEND,"nft receive":vmModuleTypes.TransactionType.NFT_RECEIVE,"token swap":vmModuleTypes.TransactionType.SWAP,"nft purchase":vmModuleTypes.TransactionType.NFT_BUY,"nft sale":vmModuleTypes.TransactionType.NFT_SEND,airdrop:vmModuleTypes.TransactionType.AIRDROP,mint:vmModuleTypes.TransactionType.NFT_BUY,burn:vmModuleTypes.TransactionType.UNKNOWN,deposit:vmModuleTypes.TransactionType.UNKNOWN,withdraw:vmModuleTypes.TransactionType.UNKNOWN,borrow:vmModuleTypes.TransactionType.UNKNOWN,"contract interaction":vmModuleTypes.TransactionType.UNKNOWN};function ta(t){return ea[t]??vmModuleTypes.TransactionType.UNKNOWN}function ra(t,e,r){let n=[];for(let a of t.native_transfers)n.push(na(a,e));for(let a of t.erc20_transfers)n.push(aa(a));for(let a of t.nft_transfers)n.push(oa(a));return n.length===0&&n.push(sa(t,e,r)),n}function na(t,e){let r=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol);return {decimal:e.decimals.toString(),name:e.name,symbol:t.token_symbol||e.symbol,amount:r.toDisplay(),type:vmModuleTypes.TokenType.NATIVE}}function aa(t){let e=Number(t.token_decimals),r=new coreUtilsSdk.TokenUnit(t.value,e,t.token_symbol);return {decimal:t.token_decimals,name:t.token_name,symbol:t.token_symbol,amount:r.toDisplay(),type:vmModuleTypes.TokenType.ERC20,address:t.address}}function oa(t){let e=t.contract_type==="ERC1155"?vmModuleTypes.TokenType.ERC1155:vmModuleTypes.TokenType.ERC721;return {name:"",symbol:"",amount:t.amount,collectableTokenId:t.token_id,type:e,address:t.token_address}}function sa(t,e,r){let n=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol),o=t.from_address.toLowerCase()===r.toLowerCase()?`-${n.toDisplay()}`:n.toDisplay();return {decimal:e.decimals.toString(),name:e.name,symbol:e.symbol,amount:o,type:vmModuleTypes.TokenType.NATIVE}}var ia="https://proxy-api.avax.network/proxy/moralis-evm";async function zt({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:o}){try{let s=`0x${t.toString(16)}`,i=new URLSearchParams({chain:s,limit:(o??25).toString()});a&&i.set("cursor",a);let c=`${ia}/wallets/${n}/history?${i.toString()}`,l=await fetch(c);if(!l.ok)return {transactions:[],nextPageToken:""};let p=await l.json();return Array.isArray(p.result)?{transactions:p.result.filter(m=>m.receipt_status==="1").map(m=>Yt({tx:m,networkToken:e,explorerUrl:r,chainId:t,address:n})),nextPageToken:p.cursor??""}:{transactions:[],nextPageToken:""}}catch{return {transactions:[],nextPageToken:""}}}var Kt=t=>t===1||t===5||t===4||t===11155111;var ca=new Set([8453,42161,10]);function Jt(t){return ca.has(t)}var Qt=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a,o)=>{let s=!e&&!r&&!n,i=pa(t.method?.methodName),c=a.toLowerCase(),l=i.toLowerCase().includes("swap"),p=s&&t.from.address.toLowerCase()===c,d=s&&t.to.address.toLowerCase()===c,m=i==="Market Buy Orders With Eth"||i==="Buy NFT",u=i==="Approve",y=i.toLowerCase().includes("transfer"),h=i.toLowerCase().includes("airdrop"),v=i.toLowerCase().includes("unwrap"),E=i==="Fill Order",R=!!o[0]&&Zt(o[0].type)&&o[0].from?.address.toLowerCase()===c,g=!!o[0]&&Zt(o[0].type)&&o[0].to?.address.toLowerCase()===c;return l?vmModuleTypes.TransactionType.SWAP:p?vmModuleTypes.TransactionType.SEND:d?vmModuleTypes.TransactionType.RECEIVE:m?vmModuleTypes.TransactionType.NFT_BUY:u?vmModuleTypes.TransactionType.APPROVE:R?vmModuleTypes.TransactionType.NFT_SEND:g?vmModuleTypes.TransactionType.NFT_RECEIVE:y?vmModuleTypes.TransactionType.TRANSFER:h?vmModuleTypes.TransactionType.AIRDROP:v?vmModuleTypes.TransactionType.UNWRAP:E?vmModuleTypes.TransactionType.FILL_ORDER:vmModuleTypes.TransactionType.UNKNOWN};function Zt(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}var pa=(t="")=>t.includes("(")?la__default.default(t.split("(",1)[0]):t;var er=(t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},a)=>{let o=t===vmModuleTypes.TransactionType.TRANSFER,s=t===vmModuleTypes.TransactionType.SEND,i=t===vmModuleTypes.TransactionType.RECEIVE,c=e?.from?.address,l=e?.to?.address;o&&r&&r[0]&&(c=r[0].from.address,l=r[0].to.address),o&&n&&n[0]&&(c=n[0].from.address,l=n[0].to.address);let p=s||o&&c.toLowerCase()===a.toLowerCase(),d=i||o&&l.toLowerCase()===a.toLowerCase();return {isOutgoing:p,isIncoming:d,isSender:c===a,from:c,to:l}};async function tr(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var da="https://ipfs.io";function ie(t,e=da){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}async function ua(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}async function rr(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 ua(ie(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}var fa="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function nr(t,e="256"){let r=ie(t);return `${fa}/width=${e},fit/${r}`}var sr=async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a)=>{let o=[];if(t.value!=="0"){let s=a.decimals,c=new coreUtilsSdk.TokenUnit(t.value,a.decimals,a.symbol).toDisplay();o.push({decimal:s.toString(),name:a.name,symbol:a.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();o.push({decimal:i.toString(),address:s.erc20Token.address,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 or(i.tokenUri,i.metadata.imageUri);o.push({name:s.erc721Token.name,symbol:s.erc721Token.symbol,address:s.erc721Token.address,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 or(i.tokenUri,i.metadata.imageUri);o.push({name:s.erc1155Token.metadata.name??"",symbol:s.erc1155Token.metadata.symbol??"",address:s.erc1155Token.address,amount:s.value,imageUri:c,from:s.from,to:s.to,collectableTokenId:s.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),o},or=async(t,e)=>{if(e)return e.startsWith("ipfs://")?ie(e):e;{let[r,n]=await tr(rr(t));return n?"":r.image?nr(r.image):""}};var ir=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER],Q=(s=>(s.TOTAL_SUPPLY="totalSupply",s.BALANCE_OF="balanceOf",s.TRANSFER="transfer",s.TRANSFER_FROM="transferFrom",s.APPROVE="approve",s.ALLOWANCE="allowance",s))(Q||{});var cr=async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:a})=>{let o=await sr(t,r),s=Qt(t,a,o),{isOutgoing:i,isIncoming:c,isSender:l,from:p,to:d}=er(s,t,a),{blockTimestamp:m,txHash:u,gasPrice:y,gasUsed:h}=t.nativeTransaction,v=G(e,u);return {isContractCall:!ir.includes(s),isIncoming:c,isOutgoing:i,isSender:l,timestamp:m*1e3,hash:u,from:p,to:d,tokens:o,gasPrice:y,gasUsed:h,chainId:n.toString(),txType:s,explorerLink:v}};var lr=async({chainId:t,explorerUrl:e,networkToken:r,address:n,nextPageToken:a,offset:o,glacierService:s})=>{try{let i=await s.listTransactions({chainId:t.toString(),address:n,pageToken:a,pageSize:o});return {transactions:(await Promise.all(i.transactions.filter(p=>p.nativeTransaction.txStatus==="1").map(p=>cr({transactions:p,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(d=>d)))).filter(p=>p.tokens.find(d=>Number(d.amount)!==0)),nextPageToken:i.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var pr=async({chainId:t,isTestnet:e,networkToken:r,explorerUrl:n,address:a,nextPageToken:o,offset:s,glacierService:i})=>Kt(t)?qt({isTestnet:e,networkToken:r,explorerUrl:n,chainId:t,address:a,nextPageToken:o,offset:s}):Jt(t)?zt({chainId:t,networkToken:r,explorerUrl:n,address:a,nextPageToken:o,offset:s}):i.isHealthy()?lr({networkToken:r,explorerUrl:n,chainId:t,address:a,nextPageToken:o,offset:s,glacierService:i}):{transactions:[],nextPageToken:""};var mr={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 He=async({from:t,provider:e})=>e.getTransactionCount(t);var We=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&&Ta(n)?n:void 0}catch{return}};function Ta(t){return Object.values(Q).includes(t)}function dr(t,e,r){return new ethers.ethers.Contract(t,Er__default.default.abi).interface.encodeFunctionData("approve",[e,r])}var je=new Map,ur=(t,e,r)=>(je.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a,approvalLimit:o,gasLimit:s})=>{let i=je.get(t);if(!i)throw rpcErrors.rpcErrors.resourceNotFound();let{signingData:c,displayData:l}=i,p={...c,data:{...c.data,gasLimit:s??c.data.gasLimit,maxFeePerGas:n??c.data.maxFeePerGas,maxPriorityFeePerGas:a??c.data.maxPriorityFeePerGas}},d={...l};if(typeof o=="string"){if(!o.startsWith("0x"))throw rpcErrors.rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let u=l.tokenApprovals;va(u),ba(c.data.data);let y=u.approvals[0];p.data.data=dr(y.token.address,y.spenderAddress,o),d.tokenApprovals={approvals:[{...y,value:o}],isEditable:!0};}let m={signingData:p,displayData:d};return je.set(t,m),m},cleanup:()=>je.delete(t)});function va(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 ba(t){if((!t||t==="0x"?null:We({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}var fr=async({transactionParams:{from:t,to:e,data:r,value:n,accessList:a},provider:o})=>{let s=await o.getTransactionCount(t);return Number(await o.estimateGas({from:t,to:e,nonce:s,data:r,value:n,accessList:a}))};var Ye=(t,e,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:o,alert:s})=>{let{dappInfo:i}=t,c=We(r),l="Do you approve this transaction?";c==="approve"&&(l="Do you approve this spend limit?");let p=[oe("Account",r.from),Oe("Network",{name:e.chainName,logoUri:e.logoUri}),Ve("Website",i)];r.to&&p.push(oe("Contract",r.to));let d={title:l,details:[{title:"Transaction Details",items:p}],networkFeeSelector:!0,alert:s,balanceChange:a,tokenApprovals:o,isSimulationSuccessful:n},m={type:vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,account:r.from,data:{type:2,nonce:Number(r.nonce),gasLimit:Number(r.gas),maxFeePerGas:r.maxFeePerGas,maxPriorityFeePerGas:r.maxPriorityFeePerGas,to:r.to,from:r.from,data:r.data,value:r.value,chainId:r.chainId??e.chainId,accessList:r.accessList}};return {displayData:d,signingData:m}};var yr=async({chainId:t,params:e,domain:r,withGasEstimation:n,blockaid:a})=>{let o=["validation","simulation"];return n&&o.push("gas_estimation"),a.evm.transactionBulk.scan({chain:t.toString(),options:o,data:e,metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}})},gr=async({chainId:t,params:e,domain:r,blockaid:n})=>n.evm.transaction.scan({account_address:e.from,chain:t.toString(),options:["validation","simulation"],data:{from:e.from,to:e.to,data:e.data,value:e.value,gas:e.gas,gas_price:e.gasPrice},metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}}),hr=async({chainId:t,accountAddress:e,data:r,domain:n,blockaid:a})=>a.evm.jsonRpc.scan({chain:t.toString(),options:["validation","simulation"],account_address:e,data:r,metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}});var vr=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),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),o=Tr__default.default(a[0]),s=Tr__default.default(a[1]),i=parseInt(a[2]),c={type:vmModuleTypes.TokenType.ERC20,name:o,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)),d=l.decodeFunctionData(t.data.slice(0,10),t.data);if(p?.name==="transfer")return {balanceChange:{outs:[{items:[{displayValue:new coreUtilsSdk.TokenUnit(d.amount,c.decimals,c.symbol).toDisplay(),usdPrice:void 0}],token:c}],ins:[]}};if(p?.name==="approve")return {tokenApprovals:{isEditable:!0,approvals:[{token:c,spenderAddress:d.spender,value:d.amount}]}}}catch(n){console.error("parseErc20Tx error",n);}return {tokenApprovals:void 0,balanceChange:void 0}};function ee(t){return !("type"in t)}function ze(t){return t.type===vmModuleTypes.TokenType.ERC20}function br(t){return typeof t.to=="string"}function Rr(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}function Ia(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}function Aa(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}function Rt(t){return Ia(t)?t.ins.length===0&&t.outs.length===0:Aa(t)?t.approvals.length===0:!1}var q={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious transaction",description:"Use caution, this transaction might 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.",body:["This transaction is malicious","do not proceed"],actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};var Sr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,blockaid:o})=>{let s;try{s=await gr({chainId:n,params:r,domain:e,blockaid:o});}catch(i){console.error("simulateTransaction error",i);}return Pt({rpcMethod:t,params:r,chainId:n,provider:a,simulationResult:s})},Pt=async({rpcMethod:t,params:e,chainId:r,provider:n,simulationResult:a})=>{let o,s,i,c=!1,l;if(a){let{validation:p,simulation:d,gas_estimation:m}=a;!p||p.result_type==="Error"||p.result_type==="Warning"?o=q[vmModuleTypes.AlertType.WARNING]:p.result_type==="Malicious"&&(o=q[vmModuleTypes.AlertType.DANGER]),d?.status==="Success"&&(c=!0,i=xr(t,d.account_summary),s=Ir(d.account_summary.assets_diffs)),m?.status==="Success"&&(l=Number(m.estimate));}if(!c&&br(e)){let p=await vr(e,r,n);s=p.balanceChange,i=p.tokenApprovals;}return {alert:o,balanceChange:s,tokenApprovals:i,isSimulationSuccessful:c,estimatedGasLimit:l}},Da=t=>t.trace_type==="ExposureTrace",Ua=(t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,Ma=t=>t===void 0||t.length===0?{}:t.reduce((e,r)=>Da(r)?{[Ua(r.spender,r.asset.address)]:r}:e,{}),xr=(t,e)=>{let{traces:r}=e,n=Ma(r),a=Object.entries(n).map(([s,i])=>{let c=Ar(i.asset);if(!c)return;let l={token:c,spenderAddress:i.spender,logoUri:c.logoUri};if(i.type==="ERC20ExposureTrace"){let{exposed:{raw_value:p,value:d,usd_price:m}}=i;if(!d||d<=0)return;l.value=p,l.usdPrice=`${m}`;}if(i.type==="ERC721ExposureTrace")if(!i.exposed)l.value=`0x${ethers.MaxUint256.toString(16)}`;else {let{usd_price:p,amount:d}=i.exposed;l.value=`${d}`,l.usdPrice=`${p}`;}return l}).filter(Boolean);return a.length===0?void 0:{isEditable:a.length===1&&a[0]?.token.type===vmModuleTypes.TokenType.ERC20&&t===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:a}},Ir=t=>{let e=Pr(t,"in"),r=Pr(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},Pr=(t,e)=>t.filter(r=>r[e].length>0).sort((r,n)=>r[e].length-n[e].length).map(r=>{let n=r.asset,a="address"in n?Ar(n):Ga(n);if(!a)return;let o=r[e].map(s=>{let i;if("value"in s&&s.value)if("decimals"in a){let d=coreUtilsSdk.numberToBN(s.value,a.decimals);i=coreUtilsSdk.balanceToDisplayValue(d,a.decimals);}else ethers.isHexString(s.value)&&(i=parseInt(s.value,16).toString());else "type"in a&&a.type===vmModuleTypes.TokenType.ERC721&&(i="1");if(!i)return;let c="logo_url"in s?s.logo_url:void 0,l="token_id"in s?s.token_id:void 0;return {displayValue:i,usdPrice:s.usd_price,...c!==void 0&&{logoUri:c},...l!==void 0&&{tokenId:l}}}).filter(s=>s!==void 0);return {token:a,items:o}}).filter(r=>r!==void 0),Ar=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},Ga=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),Nr=async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:a,blockaid:o})=>{let s,i,c;try{let{validation:l,simulation:p}=await hr({chainId:n,accountAddress:r,data:a,domain:e,blockaid:o});!l||l.result_type==="Error"||l.result_type==="Warning"?s=q[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"&&(s=q[vmModuleTypes.AlertType.DANGER]),p?.status==="Success"&&(c=xr(t.method,p.account_summary),i=Ir(p.account_summary.assets_diffs));}catch(l){console.error("processJsonRpcSimulation error",l),s=q[vmModuleTypes.AlertType.WARNING];}return {alert:s,balanceChange:i,tokenApprovals:c}};var le=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 Fa=zod.z.tuple([le]),Cr=t=>Fa.safeParse(t);var xe=async({explorerUrl:t,provider:e,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:o,request:s})=>{try{let i=G(t,r);if(n({txHash:r,request:s,explorerLink:i}),(await X({operation:async()=>e.getTransactionReceipt(r),isSuccess:p=>!!p,backoffPolicy:M.linearThenExponential(15,750),maxRetries:20}))?.status===1)return a({txHash:r,explorerLink:i,request:s}),!0}catch(i){console.error(i);}return o({txHash:r,request:s}),!1};var Je=async(t,e,r)=>{if("txHash"in e)return e.txHash;let n=()=>t.send("eth_sendRawTransaction",[e.signedData]);return r?.shouldRetry?X({operation:()=>n(),isSuccess:()=>!0,maxRetries:6,backoffPolicy:M.linearThenExponential(4,1e3)}):n()};var wr=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:o,error:s,success:i}=Cr(a);if(!i)return console.error("invalid params",s),{error:rpcErrors.rpcErrors.invalidParams(D("Transaction params are invalid",s))};let[c]=o,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 R=await fr({transactionParams:{from:c.from,to:c.to,data:c.data,value:c.value,accessList:c.accessList},provider:l});c.gas="0x"+R.toString(16);}catch(R){return {error:rpcErrors.rpcErrors.internal(D("Unable to calculate gas limit",R))}}if(!c.nonce)try{let R=await He({from:c.from,provider:l});c.nonce=String(R);}catch(R){return {error:rpcErrors.rpcErrors.internal(D("Unable to calculate nonce",R))}}let p=await Sr({rpcMethod:t.method,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:l,blockaid:n}),{displayData:d,signingData:m}=Ye(t,e,c,p),{updateTx:u,cleanup:y}=ur(t.requestId,m,d),h=await r.requestApproval({request:t,displayData:d,signingData:m,updateTx:u});if(y(),"error"in h)return {error:h.error};let v,E=t.context?.shouldRetry===!0;try{v=await Je(l,h,{shouldRetry:E});}catch(R){return {error:rpcErrors.rpcErrors.internal(D("Unable to get transaction hash",R))}}return xe({explorerUrl:e.explorerUrl??"",provider:l,txHash:v,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),{result:v}};async function _r(t,e){let r=t.map(async(o,s)=>({index:s,result:await e(o)})),a=(await Promise.allSettled(r)).filter(o=>o.status==="fulfilled").map(o=>o).find(o=>o.value.result);return a?t[a.value.index]:void 0}function pe(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}async function me(t){return await Promise.allSettled(t).then(e=>e.reduce((r,n)=>{if(n.status==="fulfilled"){let a=n.value;a.status==="fulfilled"?r[a.id]=a.value:r[a.id]={error:a.reason};}return r},{}))}var C,de,te,Ie,Ze=class{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:a}){chunkTKL4UUHE_cjs.c(this,C,void 0);chunkTKL4UUHE_cjs.c(this,de,void 0);chunkTKL4UUHE_cjs.c(this,te,void 0);chunkTKL4UUHE_cjs.c(this,Ie,void 0);chunkTKL4UUHE_cjs.d(this,C,e),chunkTKL4UUHE_cjs.d(this,de,r),chunkTKL4UUHE_cjs.d(this,te,n),chunkTKL4UUHE_cjs.d(this,Ie,a);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let a=await w({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,C).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,C).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,C).utilityAddresses?.multicall}),o=chunkTKL4UUHE_cjs.b(this,C).pricingProviders?.coingecko.nativeTokenId,s=chunkTKL4UUHE_cjs.b(this,C).networkToken,i=new j({storage:chunkTKL4UUHE_cjs.b(this,de),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,te)}),c=o?await i.getSimplePrice({coinIds:[o],currencies:[n]}):{},l=c?.[o??""]?.[n]?.price??void 0,p=c?.[o??""]?.[n]?.marketCap??void 0,d=c?.[o??""]?.[n]?.vol24??void 0,m=c?.[o??""]?.[n]?.change24??void 0,u=await a.getBalance(r),y=new coreUtilsSdk.TokenUnit(u,s.decimals,s.symbol),h=l!==void 0?y.mul(l):void 0;return {...s,coingeckoId:o??"",type:vmModuleTypes.TokenType.NATIVE,balance:u,balanceDisplayValue:y.toDisplay(),balanceInCurrency:h?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:h?.toDisplay({fixedDp:2}),priceInCurrency:l,marketCap:p,vol24:d,change24:m}}async listErc20Balances({chainId:e,address:r,currency:n}){let a=await w({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,C).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,C).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,C).utilityAddresses?.multicall}),o=chunkTKL4UUHE_cjs.b(this,C).pricingProviders?.coingecko.assetPlatformId,s=chunkTKL4UUHE_cjs.b(this,C).pricingProviders?.coingecko.nativeTokenId,i=await Me({chainId:Number(e),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,te)}),c=i.map(E=>E.address),l=[...i,...chunkTKL4UUHE_cjs.b(this,Ie)].filter(ze),p=async E=>{let k=await new ethers.ethers.Contract(E.address,Er__default.default.abi,a).balanceOf?.(r)||0n;return {...E,balance:k}},d=l.map(E=>pe(p(E),E.address)),m=await me(d),u=new j({storage:chunkTKL4UUHE_cjs.b(this,de),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,te)}),y=o&&await u.getPricesByAddresses(c,o,n)||{},h=Object.keys(m),v={};for(let E=0;E<h.length;E++){let R=h[E];if(R===void 0)continue;let g=m[R];if(g===void 0||"error"in g){v[R]={error:`rpcService:getTokenWithBalance failed: ${g?.error??"unknown error"}`};continue}let k=y?.[s??""]?.[n]?.price??void 0,U=y?.[s??""]?.[n]?.marketCap??void 0,pt=y?.[s??""]?.[n]?.vol24??void 0,$=y?.[s??""]?.[n]?.change24??void 0,ke=new coreUtilsSdk.TokenUnit(g.balance,g.decimals,g.symbol),A=k!==void 0?ke.mul(k):void 0;v[g.address.toLowerCase()]={...g,type:vmModuleTypes.TokenType.ERC20,balance:g.balance,balanceDisplayValue:ke.toDisplay(),balanceInCurrency:A?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:A?.toDisplay({fixedDp:2}),priceInCurrency:k,marketCap:U,change24:$,vol24:pt,reputation:null};}return v}async listNftBalances(){return {}}};C=new WeakMap,de=new WeakMap,te=new WeakMap,Ie=new WeakMap;var Ur=async({addresses:t,currency:e,network:r,proxyApiUrl:n,tokenTypes:a=[vmModuleTypes.TokenType.NATIVE,vmModuleTypes.TokenType.ERC20,vmModuleTypes.TokenType.ERC721,vmModuleTypes.TokenType.ERC1155],customTokens:o=[],storage:s,balanceServices:i=[],tokenService:c})=>{let l=r.chainId,p=[...i,new Ze({network:r,storage:s,proxyApiUrl:n,customTokens:o})],d=await _r(p,u=>u.isNetworkSupported(r.chainId)),m={};if(d){let u=[],y=[],h=[];t.forEach(g=>{a.includes(vmModuleTypes.TokenType.NATIVE)&&u.push(pe(d.getNativeBalance({address:g,currency:e.toUpperCase(),chainId:l}).then(async k=>{if(k.symbol==="AVAX"){let U=await c.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:e.toUpperCase()});return {...k,priceInCurrency:U.priceInCurrency,marketCap:U.marketCap,vol24:U.vol24,change24:U.change24}}return k}),g)),a.includes(vmModuleTypes.TokenType.ERC20)&&y.push(pe(d.listErc20Balances({customTokens:o.filter(ze),currency:e.toUpperCase(),chainId:l,address:g,pageSize:100}),g)),(a.includes(vmModuleTypes.TokenType.ERC721)||a.includes(vmModuleTypes.TokenType.ERC1155))&&h.push(pe(d.listNftBalances({chainId:l,address:g}),g));});let v=await me(u),E=await me(y),R=await me(h);Object.keys(v).forEach(g=>{let k=v[g];if(!k||"error"in k){m[g]={error:`getNativeBalance failed: ${k?.error??"unknown error"}`};return}let U=k.symbol;m[g]={[U]:k};}),Object.keys(E).forEach(g=>{let k=E[g];!k||"error"in k&&typeof k.error!="string"?m[g]={...m[g],error:"listErc20Balances failed: unknown error"}:"error"in k&&typeof k.error=="string"?m[g]={...m[g],error:`listErc20Balances failed: ${k.error}`}:m[g]={...m[g],...k};}),Object.keys(R).forEach(g=>{let k=R[g];!k||"error"in k&&typeof k.error!="string"?m[g]={...m[g],error:"listNftBalances failed: unknown error"}:"error"in k&&typeof k.error=="string"?m[g]={...m[g],error:`listNftBalances failed: ${k.error}`}:m[g]={...m[g],...k};});}else t.forEach(u=>{m[u]={error:"unsupported network"};});return m};var $a={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Ha={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Gr=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return $a;case vmModuleTypes.Environment.DEV:return Ha}};var Lr="DUMMY_API_KEY";var ja="https://ipfs.io";function Fr(t,e=ja){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}var qa="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Qe(t,e="256"){let r=Fr(t);return `${qa}/width=${e},fit/${r}`}var V=class extends Error{constructor(){super(...arguments);chunkTKL4UUHE_cjs.a(this,"message","Glacier is unhealthy. Try again later.");}},Ja=[coreChainsSdk.ChainId.ETHEREUM_HOMESTEAD],et=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},Re),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=>!Ja.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(a){throw a instanceof V&&this.setGlacierToUnhealthy(),a}}async getTokenDetails({address:e,chainId:r,tokenId:n}){try{return this.glacierSdk.nfTs.getTokenDetails({address:e,chainId:r,tokenId:n})}catch(a){throw a instanceof V&&this.setGlacierToUnhealthy(),a}}async getNativeBalance({chainId:e,address:r,currency:n,coingeckoId:a}){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:a??""}}catch(o){throw o instanceof V&&this.setGlacierToUnhealthy(),o}}async listErc721Balances({chainId:e,address:r}){let n,a=[];do try{let o=await this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...o.erc721TokenBalances),n=o.nextPageToken;}catch(o){throw o instanceof V&&this.setGlacierToUnhealthy(),o}while(n);return a}async listErc1155Balances({chainId:e,address:r}){let n,a=[];do try{let o=await this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...o.erc1155TokenBalances),n=o.nextPageToken;}catch(o){throw o instanceof V&&this.setGlacierToUnhealthy(),o}while(n);return a}async listNftBalances({chainId:e,address:r}){let a=(await Promise.allSettled([this.listErc721Balances({chainId:e.toString(),address:r}),this.listErc1155Balances({chainId:e.toString(),address:r})])).filter(o=>o.status==="fulfilled").flatMap(o=>o.value.filter(s=>s.ercType===glacierSdk.Erc721Token.ercType.ERC_721||BigInt(s.balance)>0n).map(s=>[`${s.address}-${s.tokenId}`,{address:s.address,description:s.metadata.description??"",logoUri:s.metadata.imageUri??"",logoSmall:Qe(s.metadata.imageUri??""),name:s.metadata.name??"",symbol:s.metadata.symbol??"",tokenId:s.tokenId,tokenUri:s.tokenUri,chainId:e,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:{indexStatus:s.metadata.indexStatus,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(a)}async listErc20Balances({chainId:e,address:r,currency:n,customTokens:a}){try{let o=[],s;do{let i=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:s});o.push(...Za(i.erc20TokenBalances,Number(e))),s=i.nextPageToken;}while(s);return [...Xa(a),...o].reduce((i,c)=>({...i,[c.address.toLowerCase()]:c}),{})}catch(o){throw o instanceof V&&this.setGlacierToUnhealthy(),o}}async listTransactions({chainId:e,address:r,pageToken:n,pageSize:a}){try{return this.glacierSdk.evmTransactions.listTransactionsV2({chainId:e,address:r,pageToken:n,pageSize:a,filterSpamTokens:!0})}catch(o){throw o instanceof V&&this.setGlacierToUnhealthy(),o}}},Xa=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})),Za=(t,e)=>t.map(r=>{let n=new coreUtilsSdk.TokenUnit(r.balance,r.decimals,r.symbol),a=n.toDisplay(),o=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:o,balanceDisplayValue:a,balanceInCurrency:i,priceInCurrency:s,reputation:r.tokenReputation,type:vmModuleTypes.TokenType.ERC20}});var xt=t=>{let e="";e+=`Domain
|
|
27
|
-
`;for(let r in t.domain)e+=` ${r}: ${
|
|
25
|
+
function Ht(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function Pt(t){let e,r=0;for(e=0;e<t.length;e++){let n=Ht(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}var ee=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=B.exponential()})=>{let a=0,o=0,s;for(;o<r;){o>0&&await Cn(a);try{let c=await t(o);if(e(c))return c}catch(c){s=c;}a=n(o),o++;}let i=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(i)},B=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return r=>e*1e3}static constantMs(e){return r=>e}static linearThenExponential(e,r){return n=>{if(n<e)return (n+1)*r;let a=n-e+1,o=e*r,s=2*r*(Math.pow(2,a)-1);return o+s}}};function Cn(t){return new Promise(e=>setTimeout(e,t))}var Rt=t=>ee({operation:e=>t(e>0),maxRetries:2,backoffPolicy:B.constant(1),isSuccess:e=>e?.status?.error_code!==429});async function U(t,e,r=fetch){let n=await r(...t);if(!n.ok)throw new Error(`Request failed with status ${n.status}`);let a=await n.json();return e.parse(a)}var Ce=class{constructor(e,r){this.proxyApiUrl=e;this.fetchFn=r;}simplePrice(e){let r=new URLSearchParams(e);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(e){let{id:r,...n}=e,a=new URLSearchParams(n);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}};var wn=zod.z.array(zod.z.object({internalId:zod.z.string(),id:zod.z.string(),symbol:zod.z.string(),name:zod.z.string(),image:zod.z.string().optional().nullable(),current_price:zod.z.number().optional().nullable(),price_change_percentage_24h:zod.z.number().optional().nullable(),market_cap:zod.z.number().optional().nullable(),total_volume:zod.z.number().optional().nullable(),platforms:zod.z.record(zod.z.string(),zod.z.string())})),He=class{constructor(e){this.proxyApiUrl=e;}watchlistToken(e){let r=new URLSearchParams(e);return U([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],wn)}};var q,te,re,me,z=class{constructor({storage:e,proxyApiUrl:r,fetch:n}){chunkTKL4UUHE_cjs.c(this,q,void 0);chunkTKL4UUHE_cjs.c(this,te,void 0);chunkTKL4UUHE_cjs.c(this,re,void 0);chunkTKL4UUHE_cjs.c(this,me,void 0);chunkTKL4UUHE_cjs.a(this,"transformSimplePriceResponse",(e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(a=>{let o=e[a];n[a]={},r.forEach(s=>{n[a]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),n});chunkTKL4UUHE_cjs.d(this,q,e),chunkTKL4UUHE_cjs.d(this,te,r),chunkTKL4UUHE_cjs.d(this,re,n??globalThis.fetch),chunkTKL4UUHE_cjs.d(this,me,coreCoingeckoSdk.getBasicCoingeckoHttp(void 0,chunkTKL4UUHE_cjs.b(this,re)));}async getWatchlistDataForToken({tokenDetails:e,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new He(chunkTKL4UUHE_cjs.b(this,te)).watchlistToken({tokens:e.symbol,currency:r})).filter(o=>e.isNative?o.internalId===`NATIVE-${e.symbol.toLowerCase()}`:o.platforms[e.caip2Id]===e.address),[a]=n;return a?{priceInCurrency:a.current_price??0,change24:a.price_change_percentage_24h??0,marketCap:a.market_cap??0,vol24:a.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${e?`${Pt(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkTKL4UUHE_cjs.b(this,q)?.get?.(o),n)return n;try{n=await Rt(s=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{n=void 0;}return chunkTKL4UUHE_cjs.b(this,q)?.set?.(o,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,s=`getPricesWithMarketDataByAddresses-${`${Pt(e)}-${r}-${n}`}`;if(a=chunkTKL4UUHE_cjs.b(this,q)?.get?.(s),a)return a;try{a=await Rt(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:i}));}catch(i){console.error(i),a=void 0;}return chunkTKL4UUHE_cjs.b(this,q)?.set?.(s,a),a}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let o=await new Ce(chunkTKL4UUHE_cjs.b(this,te),chunkTKL4UUHE_cjs.b(this,re)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(o,[n])}return coreCoingeckoSdk.simpleTokenPrice(chunkTKL4UUHE_cjs.b(this,me),{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:a=!1,change24:o=!1,lastUpdated:s=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await new Ce(chunkTKL4UUHE_cjs.b(this,te),chunkTKL4UUHE_cjs.b(this,re)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:o,include_last_updated_at:s});return this.transformSimplePriceResponse(l,r)}return coreCoingeckoSdk.simplePrice(chunkTKL4UUHE_cjs.b(this,me),{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:o,lastUpdated:s,shouldThrow:c})}};q=new WeakMap,te=new WeakMap,re=new WeakMap,me=new WeakMap;var Mn="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",Ln="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",qt=zod.object({date:zod.string(),usd:zod.record(zod.number())}),je=async()=>{try{return await U([Mn],qt)}catch{return await U([Ln],qt)}};var St=(t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),ze=(t,e)=>({label:t,value:e,type:vmModuleTypes.DetailItemType.LINK}),de=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e});var Ye=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.NETWORK,value:e});var xt=({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 zt=process.env.GLACIER_API_KEY;var we=()=>zt;var $n={rltoken:we()},ne,Ke,Je,Kt,Xe,Jt,_e=class extends glacierSdk.FetchHttpRequest{constructor(r){super(r);chunkTKL4UUHE_cjs.c(this,Je);chunkTKL4UUHE_cjs.c(this,Xe);chunkTKL4UUHE_cjs.c(this,ne,3);chunkTKL4UUHE_cjs.c(this,Ke,B.exponential());}request(r){let n={...$n,...r.query||{}},a={...r,query:Object.keys(n).length>0?n:void 0},o=()=>super.request(a);return chunkTKL4UUHE_cjs.b(this,ne)>0?chunkTKL4UUHE_cjs.e(this,Xe,Jt).call(this,o):chunkTKL4UUHE_cjs.e(this,Je,Kt).call(this,o)}};ne=new WeakMap,Ke=new WeakMap,Je=new WeakSet,Kt=function(r){let n=r();return new glacierSdk.CancelablePromise((a,o,s)=>{s(()=>n.cancel()),n.then(i=>{chunkTKL4UUHE_cjs.d(this,ne,0),a(i);}).catch(i=>{if(i instanceof glacierSdk.ApiError){let c=i.status===429,l=i.status>=500&&i.status<600;chunkTKL4UUHE_cjs.d(this,ne,chunkTKL4UUHE_cjs.b(this,ne)+Number(c||l));}o(i);});})},Xe=new WeakSet,Jt=function(r){let n=chunkTKL4UUHE_cjs.b(this,Ke).call(this,chunkTKL4UUHE_cjs.b(this,ne));return new glacierSdk.CancelablePromise((a,o,s)=>{let i=setTimeout(()=>{let c=r();s(()=>{c.cancel(),clearTimeout(i);}),c.then(a).catch(o);},n);})};var F=(t,e)=>({message:`${t}${e instanceof Error?`: ${e.message}`:""}`,data:{cause:e}});var Xt={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 Zt="DUMMY_API_KEY";var Hn={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},jn={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},er=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return Hn;case vmModuleTypes.Environment.DEV:return jn}};var Ze=({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 nr=t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string";var ar=async t=>{let{secretId:e,approvalController:r}=t,n=nr(t)?Ze(t).EVM:void 0,a=await r.requestPublicKey({curve:"secp256k1",secretId:e,derivationPath:n});return {[vmModuleTypes.NetworkVMType.EVM]:ethers.computeAddress(`0x${a}`)}};var N=async t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:o=2e3}=t,s=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:a},Xn(n),new ethers.Network(r,e));return s.pollingInterval=o,s},Jn=["glacier-api.avax.network","proxy-api.avax.network"];function Xn(t){let e=new URL(t),r=we();if(r&&Jn.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}var fe=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 or=zod.z.tuple([fe,fe]).rest(fe).refine(t=>It(t,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(t=>It(t,"from"),{message:'All transactions must use the same "from" address'}).refine(t=>ta(t,"nonce")||ea(t,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'}),Zn=zod.z.object({skipIntermediateTxs:zod.z.boolean().optional()}),Qn=zod.z.union([or,zod.z.object({transactions:or,options:Zn.optional()})]);function ea(t,e){return !It(t,e)}function ta(t,e){return t.every(r=>r[e]===void 0||r[e]==="")}function It(t,e){return new Set(t.map(n=>n[e])).size===1}var sr=t=>{let e=Qn.safeParse(t);return e.success?Array.isArray(e.data)?{success:!0,data:{transactions:e.data,options:{}}}:{success:!0,data:{transactions:e.data.transactions,options:e.data.options??{}}}:e};var Qe=async({from:t,provider:e})=>e.getTransactionCount(t);var ir=async(t,e)=>{if(t[0].nonce)return;let r=await Qe({from:t[0].from,provider:e});return Promise.all(t.map(async(n,a)=>{n.nonce=String(r+a);}))};var cr=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER],ae=(s=>(s.TOTAL_SUPPLY="totalSupply",s.BALANCE_OF="balanceOf",s.TRANSFER="transfer",s.TRANSFER_FROM="transferFrom",s.APPROVE="approve",s.ALLOWANCE="allowance",s))(ae||{});var et=t=>{if(t.data)try{let r=new ethers.Interface(gr__default.default.abi).parseTransaction({data:t.data,value:t.value}),n=r?.name??r?.fragment?.name;return n&&aa(n)?n:void 0}catch{return}};function aa(t){return Object.values(ae).includes(t)}var tt=(t,e,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:o,alert:s})=>{let{dappInfo:i}=t,c=et(r),l="Do you approve this transaction?";c==="approve"&&(l="Do you approve this spend limit?");let p=[de("Account",r.from),Ye("Network",{name:e.chainName,logoUri:e.logoUri}),ze("Website",i)];r.to&&p.push(de("Contract",r.to));let u={title:l,details:[{title:"Transaction Details",items:p}],networkFeeSelector:!0,alert:s,balanceChange:a,tokenApprovals:o,isSimulationSuccessful:n},f={type:vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,account:r.from,data:{type:2,nonce:Number(r.nonce),gasLimit:Number(r.gas),maxFeePerGas:r.maxFeePerGas,maxPriorityFeePerGas:r.maxPriorityFeePerGas,to:r.to,from:r.from,data:r.data,value:r.value,chainId:r.chainId??e.chainId,accessList:r.accessList}};return {displayData:u,signingData:f}};var rt=async(t,e,r)=>{if("txHash"in e)return e.txHash;let n=()=>t.send("eth_sendRawTransaction",[e.signedData]);return r?.shouldRetry?ee({operation:()=>n(),isSuccess:()=>!0,maxRetries:6,backoffPolicy:B.linearThenExponential(4,1e3)}):n()};function ye(t,e,r="tx"){return `${t}/${r}/${e}`}var Be=async({explorerUrl:t,provider:e,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:o,request:s})=>{try{let i=ye(t,r);if(n({txHash:r,request:s,explorerLink:i}),(await ee({operation:async()=>e.getTransactionReceipt(r),isSuccess:p=>!!p,backoffPolicy:B.linearThenExponential(15,750),maxRetries:20}))?.status===1)return a({txHash:r,explorerLink:i,request:s}),!0}catch(i){console.error(i);}return o({txHash:r,request:s}),!1};var nt=new Map,lr=(t,e,r)=>(nt.set(t,{signingRequests:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a},o)=>{let s=nt.get(t);if(!s)throw rpcErrors.rpcErrors.resourceNotFound();let{signingRequests:i}=s,l={signingRequests:i.map((p,u)=>{if(o===void 0||o===u){let{signingData:f}=p;return {signingData:{...f,data:{...f.data,maxFeePerGas:n??f.data.maxFeePerGas,maxPriorityFeePerGas:a??f.data.maxPriorityFeePerGas}},displayData:p.displayData}}return p}),displayData:r};return nt.set(t,l),l},cleanup:()=>nt.delete(t)});function oe(t){return !("type"in t)}function at(t){return t.type===vmModuleTypes.TokenType.ERC20}function pr(t){return typeof t.to=="string"}function mr(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}function ca(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}function la(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}function Ct(t){return ca(t)?t.ins.length===0&&t.outs.length===0:la(t)?t.approvals.length===0:!1}var dr=async({chainId:t,params:e,domain:r,withGasEstimation:n,blockaid:a})=>{let o=["validation","simulation"];return n&&o.push("gas_estimation"),a.evm.transactionBulk.scan({chain:t.toString(),options:o,data:e,metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}})},ur=async({chainId:t,params:e,domain:r,blockaid:n})=>n.evm.transaction.scan({account_address:e.from,chain:t.toString(),options:["validation","simulation"],data:{from:e.from,to:e.to,data:e.data,value:e.value,gas:e.gas,gas_price:e.gasPrice},metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}}),fr=async({chainId:t,accountAddress:e,data:r,domain:n,blockaid:a})=>a.evm.jsonRpc.scan({chain:t.toString(),options:["validation","simulation"],account_address:e,data:r,metadata:n&&n.length>0?{domain:n}:{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,gr__default.default.abi,r),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),o=yr__default.default(a[0]),s=yr__default.default(a[1]),i=parseInt(a[2]),c={type:vmModuleTypes.TokenType.ERC20,name:o,chainId:e,symbol:s,decimals:i,address:t.to,contractType:"ERC-20"},l=new ethers.ethers.Interface(gr__default.default.abi),p=l.getFunction(t.data.slice(0,10)),u=l.decodeFunctionData(t.data.slice(0,10),t.data);if(p?.name==="transfer")return {balanceChange:{outs:[{items:[{displayValue:new coreUtilsSdk.TokenUnit(u.amount,c.decimals,c.symbol).toDisplay(),usdPrice:void 0}],token:c}],ins:[]}};if(p?.name==="approve")return {tokenApprovals:{isEditable:!0,approvals:[{token:c,spenderAddress:u.spender,value:u.amount}]}}}catch(n){console.error("parseErc20Tx error",n);}return {tokenApprovals:void 0,balanceChange:void 0}};var Y={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious transaction",description:"Use caution, this transaction might 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.",body:["This transaction is malicious","do not proceed"],actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};var vr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,blockaid:o})=>{let s;try{s=await ur({chainId:n,params:r,domain:e,blockaid:o});}catch(i){console.error("simulateTransaction error",i);}return wt({rpcMethod:t,params:r,chainId:n,provider:a,simulationResult:s})},wt=async({rpcMethod:t,params:e,chainId:r,provider:n,simulationResult:a})=>{let o,s,i,c=!1,l;if(a){let{validation:p,simulation:u,gas_estimation:f}=a;!p||p.result_type==="Error"||p.result_type==="Warning"?o=Y[vmModuleTypes.AlertType.WARNING]:p.result_type==="Malicious"&&(o=Y[vmModuleTypes.AlertType.DANGER]),u?.status==="Success"&&(c=!0,i=br(t,u.account_summary),s=Er(u.account_summary.assets_diffs)),f?.status==="Success"&&(l=Number(f.estimate));}if(!c&&pr(e)){let p=await Tr(e,r,n);s=p.balanceChange,i=p.tokenApprovals;}return {alert:o,balanceChange:s,tokenApprovals:i,isSimulationSuccessful:c,estimatedGasLimit:l}},ga=t=>t.trace_type==="ExposureTrace",Ta=(t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,ka=t=>t===void 0||t.length===0?{}:t.reduce((e,r)=>ga(r)?{[Ta(r.spender,r.asset.address)]:r}:e,{}),br=(t,e)=>{let{traces:r}=e,n=ka(r),a=Object.entries(n).map(([s,i])=>{let c=Pr(i.asset);if(!c)return;let l={token:c,spenderAddress:i.spender,logoUri:c.logoUri};if(i.type==="ERC20ExposureTrace"){let{exposed:{raw_value:p,value:u,usd_price:f}}=i;if(!u||u<=0)return;l.value=p,l.usdPrice=`${f}`;}if(i.type==="ERC721ExposureTrace")if(!i.exposed)l.value=`0x${ethers.MaxUint256.toString(16)}`;else {let{usd_price:p,amount:u}=i.exposed;l.value=`${u}`,l.usdPrice=`${p}`;}return l}).filter(Boolean);return a.length===0?void 0:{isEditable:a.length===1&&a[0]?.token.type===vmModuleTypes.TokenType.ERC20&&t===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:a}},Er=t=>{let e=kr(t,"in"),r=kr(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},kr=(t,e)=>t.filter(r=>r[e].length>0).sort((r,n)=>r[e].length-n[e].length).map(r=>{let n=r.asset,a="address"in n?Pr(n):va(n);if(!a)return;let o=r[e].map(s=>{let i;if("value"in s&&s.value)if("decimals"in a){let u=coreUtilsSdk.numberToBN(s.value,a.decimals);i=coreUtilsSdk.balanceToDisplayValue(u,a.decimals);}else ethers.isHexString(s.value)&&(i=parseInt(s.value,16).toString());else "type"in a&&a.type===vmModuleTypes.TokenType.ERC721&&(i="1");if(!i)return;let c="logo_url"in s?s.logo_url:void 0,l="token_id"in s?s.token_id:void 0;return {displayValue:i,usdPrice:s.usd_price,...c!==void 0&&{logoUri:c},...l!==void 0&&{tokenId:l}}}).filter(s=>s!==void 0);return {token:a,items:o}}).filter(r=>r!==void 0),Pr=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},va=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),Rr=async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:a,blockaid:o})=>{let s,i,c;try{let{validation:l,simulation:p}=await fr({chainId:n,accountAddress:r,data:a,domain:e,blockaid:o});!l||l.result_type==="Error"||l.result_type==="Warning"?s=Y[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"&&(s=Y[vmModuleTypes.AlertType.DANGER]),p?.status==="Success"&&(c=br(t.method,p.account_summary),i=Er(p.account_summary.assets_diffs));}catch(l){console.error("processJsonRpcSimulation error",l),s=Y[vmModuleTypes.AlertType.WARNING];}return {alert:s,balanceChange:i,tokenApprovals:c}};var xr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,populateMissingGas:o,blockaid:s})=>{let i;try{i=await dr({chainId:n,params:r,domain:e,withGasEstimation:o,blockaid:s});}catch(d){return console.error("simulateTransactionBatch error",d),{isSimulationSuccessful:!1,alert:Y[vmModuleTypes.AlertType.WARNING],scans:[]}}let c=await Promise.all(i.map(async(d,y)=>{let v=r[y],P=await wt({chainId:n,params:r[y],provider:a,rpcMethod:t,simulationResult:d});return o&&!v.gas&&P.estimatedGasLimit&&(v.gas=`0x${P.estimatedGasLimit.toString(16)}`),{transaction:v,...P}})),l=c.every(d=>d.isSimulationSuccessful),p=ba(c),u=Pa(c),f=Ea(c);return {isSimulationSuccessful:l,alert:p,balanceChange:u,tokenApprovals:f,scans:c.map(d=>(d.tokenApprovals&&(d.tokenApprovals.isEditable=!1),d))}},ba=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)},Ea=t=>{let e=t.reduce((r,{tokenApprovals:n})=>(n&&n.approvals.forEach(a=>{let o=r.approvals.find(s=>a.token.address===s.token.address&&a.spenderAddress===s.spenderAddress);if(!o){r.approvals.push({...a});return}o.value=a.value,o.usdPrice=a.usdPrice;}),r),{approvals:[],isEditable:!1});return Ra(e,t),Ct(e)?void 0:e},Pa=t=>{let e=t.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(a=>{let o=Sr(r.ins,a);o?o.items.push(...a.items):r.ins.push(a);}),n.outs.forEach(a=>{let o=Sr(r.outs,a);o?o.items.push(...a.items):r.outs.push({...a});})),r),{ins:[],outs:[]});return Ct(e)?void 0:e},Sr=(t,e)=>t.find(r=>oe(r.token)&&oe(e.token)?r.token.symbol===e.token.symbol:!oe(r.token)&&!oe(e.token)?r.token.address===e.token.address:!1),Ra=(t,e)=>{for(let r of t.approvals)for(let n of e)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(o=>!oe(o.token)&&!oe(r.token)&&o.token.address===r.token.address)))if(!n.tokenApprovals)t.approvals=t.approvals.filter(o=>o.spenderAddress!==r.spenderAddress&&r.token.address!==o.token.address);else {let o=n.tokenApprovals.approvals.find(s=>s.spenderAddress===r.spenderAddress&&s.token.address===r.token.address);if(!o)continue;r.usdPrice=o.usdPrice,r.value=o.value;}};var Ir=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:o,success:s,error:i}=sr(a);if(!s)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams(F("Transaction params are invalid",i))};let{transactions:c,options:l={}}=o,{skipIntermediateTxs:p=!1}=l,u=await N({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});try{await ir(c,u);}catch(C){return console.error("Unable to calculate nonce",C),{error:rpcErrors.rpcErrors.internal(F("Unable to calculate nonce",C))}}let f=c.every(C=>Number(C.gas)>0),{alert:d,balanceChange:y,isSimulationSuccessful:v,tokenApprovals:P,scans:b}=await xr({rpcMethod:t.method,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:u,populateMissingGas:!f,blockaid:n});if(!b.every(({transaction:C})=>Number(C.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 x={title:"Do you approve these transactions?",details:[{title:"Transaction Details",items:[de("Account",c[0].from),Ye("Network",{name:e.chainName,logoUri:e.logoUri}),ze("Website",t.dappInfo)]}],isSimulationSuccessful:v,balanceChange:y,alert:d,tokenApprovals:P,networkFeeSelector:!0},g=b.map(C=>tt(t,e,C.transaction,C)),{cleanup:k,updateTx:G}=lr(t.requestId,g,x),W=await r.requestBatchApproval({request:t,signingRequests:g,displayData:x,updateTx:G});if(k(),"error"in W)return {error:W.error};if(W.result.length!==c.length)return {error:rpcErrors.rpcErrors.internal({message:`Invalid number of signatures. Expected ${c.length}, got ${W.result.length}`})};let Ae=[];for(let[C,An]of W.result.entries()){let Wt=C===W.result.length-1,Et=await rt(u,An);if(Wt&&Be({explorerUrl:e.explorerUrl??"",provider:u,txHash:Et,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),!Wt&&!p&&!await Be({explorerUrl:e.explorerUrl??"",provider:u,txHash:Et,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}))return {error:rpcErrors.rpcErrors.internal({message:`Transaction ${C+1} failed! Batch execution stopped`})};Ae.push(Et);}return {result:Ae}};function Ar(t,e,r){return new ethers.ethers.Contract(t,gr__default.default.abi).interface.encodeFunctionData("approve",[e,r])}var it=new Map,Cr=(t,e,r)=>(it.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a,approvalLimit:o,gasLimit:s})=>{let i=it.get(t);if(!i)throw rpcErrors.rpcErrors.resourceNotFound();let{signingData:c,displayData:l}=i,p={...c,data:{...c.data,gasLimit:s??c.data.gasLimit,maxFeePerGas:n??c.data.maxFeePerGas,maxPriorityFeePerGas:a??c.data.maxPriorityFeePerGas}},u={...l};if(typeof o=="string"){if(!o.startsWith("0x"))throw rpcErrors.rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let d=l.tokenApprovals;Ia(d),Aa(c.data.data);let y=d.approvals[0];p.data.data=Ar(y.token.address,y.spenderAddress,o),u.tokenApprovals={approvals:[{...y,value:o}],isEditable:!0};}let f={signingData:p,displayData:u};return it.set(t,f),f},cleanup:()=>it.delete(t)});function Ia(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 Aa(t){if((!t||t==="0x"?null:et({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}var wr=async({transactionParams:{from:t,to:e,data:r,value:n,accessList:a},provider:o})=>{let s=await o.getTransactionCount(t);return Number(await o.estimateGas({from:t,to:e,nonce:s,data:r,value:n,accessList:a}))};var wa=zod.z.tuple([fe]),_r=t=>wa.safeParse(t);var Nr=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:o,error:s,success:i}=_r(a);if(!i)return console.error("invalid params",s),{error:rpcErrors.rpcErrors.invalidParams(F("Transaction params are invalid",s))};let[c]=o,l=await N({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});if(!c.gas||Number(c.gas)<0)try{let S=await wr({transactionParams:{from:c.from,to:c.to,data:c.data,value:c.value,accessList:c.accessList},provider:l});c.gas="0x"+S.toString(16);}catch(S){return {error:rpcErrors.rpcErrors.internal(F("Unable to calculate gas limit",S))}}if(!c.nonce)try{let S=await Qe({from:c.from,provider:l});c.nonce=String(S);}catch(S){return {error:rpcErrors.rpcErrors.internal(F("Unable to calculate nonce",S))}}let p=await vr({rpcMethod:t.method,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:l,blockaid:n}),{displayData:u,signingData:f}=tt(t,e,c,p),{updateTx:d,cleanup:y}=Cr(t.requestId,f,u),v=await r.requestApproval({request:t,displayData:u,signingData:f,updateTx:d});if(y(),"error"in v)return {error:v.error};let P,b=t.context?.shouldRetry===!0;try{P=await rt(l,v,{shouldRetry:b});}catch(S){return {error:rpcErrors.rpcErrors.internal(F("Unable to get transaction hash",S))}}return Be({explorerUrl:e.explorerUrl??"",provider:l,txHash:P,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),{result:P}};var _t=t=>{let e="";e+=`Domain
|
|
26
|
+
`;for(let r in t.domain)e+=` ${r}: ${se(String(t.domain[r]))}
|
|
28
27
|
`;e+=`
|
|
29
28
|
Message
|
|
30
29
|
`;for(let r in t.message)if(typeof t.message[r]=="object"&&!Array.isArray(t.message[r])){e+=` ${r}:
|
|
31
30
|
`;for(let n in t.message[r])Array.isArray(t.message[r][n])?(e+=` ${n}:
|
|
32
|
-
`,t.message[r][n].forEach((a,o)=>{e+=` ${o}: ${
|
|
33
|
-
`;})):e+=` ${n}: ${
|
|
31
|
+
`,t.message[r][n].forEach((a,o)=>{e+=` ${o}: ${se(a)}
|
|
32
|
+
`;})):e+=` ${n}: ${se(String(t.message[r][n]))}
|
|
34
33
|
`;}else Array.isArray(t.message[r])?(e+=` ${r}:
|
|
35
34
|
`,t.message[r].forEach((n,a)=>{e+=` ${a}:
|
|
36
35
|
`;for(let o in n)Array.isArray(n[o])?(e+=` ${o}:
|
|
37
|
-
`,n[o].forEach((s,i)=>{e+=` ${i}: ${
|
|
38
|
-
`;})):e+=` ${o}: ${
|
|
39
|
-
`;})):e+=` ${r}: ${
|
|
40
|
-
`;return e}
|
|
41
|
-
`,e+=`${
|
|
36
|
+
`,n[o].forEach((s,i)=>{e+=` ${i}: ${se(s)}
|
|
37
|
+
`;})):e+=` ${o}: ${se(String(n[o]))}
|
|
38
|
+
`;})):e+=` ${r}: ${se(String(t.message[r]))}
|
|
39
|
+
`;return e},Br=t=>{let e="";return t.forEach(r=>{e+=`${r.name}:
|
|
40
|
+
`,e+=`${se(String(r.value))}
|
|
42
41
|
|
|
43
|
-
`;}),e},re=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 Ne=zod.z.string().describe("message"),L=zod.z.string().describe("address");var Wr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([L,Ne])});var jr=zod.z.object({name:zod.z.string(),type:zod.z.string()}),ue=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(jr)}).catchall(zod.z.array(jr)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),At=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(),Nt=ue.or(At),qr=zod.z.union([zod.z.string().describe("data string"),ue]),Yr=zod.z.union([zod.z.string().describe("data string"),Nt]),zr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([L,Yr])}),Kr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([L,Yr])}),Jr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([L,qr])}),Xr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([L,qr])});var Zr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([Ne,L]),zod.z.tuple([Ne,L,zod.z.string().optional().describe("password")])])});var to=zod.z.discriminatedUnion("method",[Zr,Wr,zr,Kr,Jr,Xr]).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 a=n[0],o=n[1];if(typeof o!="string")return {data:o,address:a,method:r};try{let s=JSON.parse(o);return {data:Nt.parse(s),address:a,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 a=n[0],o=n[1];if(typeof o!="string")return {data:o,address:a,method:r};try{let s=JSON.parse(o);return {data:ue.parse(s),address:a,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}}});function Qr(t){return to.safeParse(t)}var en=t=>At.safeParse(t).success,yp=t=>ue.safeParse(t).success;var tn=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 rn=async({request:t,network:e,approvalController:r,blockaid:n})=>{let a=Qr({method:t.method,params:t.params});if(!a.success)return console.error("invalid params",a.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams(D("Params are invalid",a.error))};let{method:o,data:s,address:i}=a.data,c;(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(c=tn(s));let l,p,d;if(c&&!c.isValid&&(d={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()}}),o===vmModuleTypes.RpcMethod.ETH_SIGN)l={type:o,account:i,data:s},p=s;else if(o===vmModuleTypes.RpcMethod.PERSONAL_SIGN)l={type:o,account:i,data:s},p=ethers.toUtf8String(s);else if(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)l={type:o,account:i,data:s},p=en(s)?$r(s):xt(s);else if(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){l={type:o,account:i,data:s};let{types:h,primaryType:v,...E}=s;p=xt(E);}if(!l||!p)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let m=await Nr({request:t,accountAddress:i,chainId:e.chainId,data:{method:o,params:t.params},dAppUrl:t.dappInfo.url,blockaid:n}),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:[ft("Message",p,"vertical")]}],alert:m?.alert??d,balanceChange:m?.balanceChange,tokenApprovals:m?.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 nn=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 on=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 sn=t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string";var rt=({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 pn=async t=>{let{secretId:e,approvalController:r}=t,n=sn(t)?rt(t).EVM:void 0,a=await r.requestPublicKey({curve:"secp256k1",secretId:e,derivationPath:n});return {[vmModuleTypes.NetworkVMType.EVM]:ethers.computeAddress(`0x${a}`)}};var ge,nt=class{constructor(e){this.baseUrl=e;chunkTKL4UUHE_cjs.c(this,ge,[]);}async isNetworkSupported(e){return (await this.getChainList()).map(a=>a.community_id).some(a=>a===e)}async getChainInfo({chainId:e}){return (await this.getChainList()).find(n=>n.id===e)}async getTokenBalance({chainId:e,address:r,tokenId:n}){let a=await fetch(`${this.baseUrl}/v1/user/token?id=${r}&chain_id=${e}&token_id=${n}`);if(a.ok)return await a.json();throw new Error(`${a.status}:${a.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,ge).length===0){let e=await fetch(`${this.baseUrl}/v1/chain/list`);if(e.ok)chunkTKL4UUHE_cjs.d(this,ge,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return chunkTKL4UUHE_cjs.b(this,ge)}async getNftList({address:e,chainId:r}){return B([`${this.baseUrl}/v1/user/nft_list?id=${e}&chain_id=${r}`],yo)}};ge=new WeakMap;var uo=zod.z.object({id:zod.z.union([zod.z.custom(ethers.isHexString),zod.z.string()]),chain:zod.z.string(),name:zod.z.string()}),fo=uo.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()})),yo=zod.z.array(fo);var F,he,ot,it,dn,st=class{constructor({proxyApiUrl:e}){chunkTKL4UUHE_cjs.c(this,he);chunkTKL4UUHE_cjs.c(this,it);chunkTKL4UUHE_cjs.c(this,F,void 0);chunkTKL4UUHE_cjs.d(this,F,new nt(`${e}/proxy/debank`));}async isNetworkSupported(e){return chunkTKL4UUHE_cjs.b(this,F).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:a,chainIdString:o}=await chunkTKL4UUHE_cjs.e(this,he,ot).call(this,e),s=a.native_token_id,i=await chunkTKL4UUHE_cjs.b(this,F).getTokenBalance({address:r,chainId:o,tokenId:s}),c=new coreUtilsSdk.TokenUnit(i.raw_amount,i.decimals,i.symbol),l=c.toDisplay(),d=(await Le()).usd[n.toLowerCase()],m=d?d*i.price:void 0,u=m?c.mul(m).toDisplay({fixedDp:2}):void 0,y=m?c.mul(m).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:m}}async listErc20Balances({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:a,chainIdString:o}=await chunkTKL4UUHE_cjs.e(this,he,ot).call(this,e),s=await chunkTKL4UUHE_cjs.b(this,F).getTokensBalanceOnChain({chainId:o,address:r}),i=await Le(),c={};for(let l of s){if(l.id===a.native_token_id||l.is_core===!1)continue;let p=new coreUtilsSdk.TokenUnit(l.raw_amount,l.decimals,l.symbol),d=p.toDisplay(),m=i.usd[n.toLowerCase()],u=m?m*l.price:void 0,y=u?p.mul(u).toDisplay({fixedDp:2}):void 0,h=u?p.mul(u).toDisplay({fixedDp:2,asNumber:!0}):void 0;c[l.id]={chainId:a.community_id,address:l.id,name:l.name,symbol:l.symbol,decimals:l.decimals,logoUri:l.logo_url,balance:p.toSubUnit(),balanceCurrencyDisplayValue:y,balanceDisplayValue:d,balanceInCurrency:h,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,he,ot).call(this,e),a=await chunkTKL4UUHE_cjs.b(this,F).getNftList({chainId:n,address:r});return chunkTKL4UUHE_cjs.e(this,it,dn).call(this,a,e)}};F=new WeakMap,he=new WeakSet,ot=async function(e){let n=(await chunkTKL4UUHE_cjs.b(this,F).getChainList()).find(o=>o.community_id===e)?.id;if(!n)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let a=await chunkTKL4UUHE_cjs.b(this,F).getChainInfo({chainId:n});if(!a)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);return {chainInfo:a,chainIdString:n}},it=new WeakSet,dn=function(e,r){return e.reduce((n,a)=>({...n,[`${a.contract_id}-${a.id}`]:{chainId:r,address:a.contract_id,description:a.description??"",logoUri:a.thumbnail_url,logoSmall:Qe(a.content),name:a.name,symbol:"",tokenId:`${a.inner_id}`,tokenUri:a.detail_url,collectionName:a.collection_name,balance:BigInt(a.amount),balanceDisplayValue:`${a.amount}`,type:a.is_erc721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{indexStatus:glacierSdk.NftTokenMetadataStatus.UNINDEXED,description:a.description??"",properties:""}}}),{})};var un=zod.z.tuple([le,le]).rest(le).refine(t=>_t(t,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(t=>_t(t,"from"),{message:'All transactions must use the same "from" address'}).refine(t=>Eo(t,"nonce")||ko(t,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'}),ho=zod.z.object({skipIntermediateTxs:zod.z.boolean().optional()}),To=zod.z.union([un,zod.z.object({transactions:un,options:ho.optional()})]);function ko(t,e){return !_t(t,e)}function Eo(t,e){return t.every(r=>r[e]===void 0||r[e]==="")}function _t(t,e){return new Set(t.map(n=>n[e])).size===1}var fn=t=>{let e=To.safeParse(t);return e.success?Array.isArray(e.data)?{success:!0,data:{transactions:e.data,options:{}}}:{success:!0,data:{transactions:e.data.transactions,options:e.data.options??{}}}:e};var yn=async(t,e)=>{if(t[0].nonce)return;let r=await He({from:t[0].from,provider:e});return Promise.all(t.map(async(n,a)=>{n.nonce=String(r+a);}))};var ct=new Map,gn=(t,e,r)=>(ct.set(t,{signingRequests:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a},o)=>{let s=ct.get(t);if(!s)throw rpcErrors.rpcErrors.resourceNotFound();let{signingRequests:i}=s,l={signingRequests:i.map((p,d)=>{if(o===void 0||o===d){let{signingData:m}=p;return {signingData:{...m,data:{...m.data,maxFeePerGas:n??m.data.maxFeePerGas,maxPriorityFeePerGas:a??m.data.maxPriorityFeePerGas}},displayData:p.displayData}}return p}),displayData:r};return ct.set(t,l),l},cleanup:()=>ct.delete(t)});var Tn=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,populateMissingGas:o,blockaid:s})=>{let i;try{i=await yr({chainId:n,params:r,domain:e,withGasEstimation:o,blockaid:s});}catch(u){return console.error("simulateTransactionBatch error",u),{isSimulationSuccessful:!1,alert:q[vmModuleTypes.AlertType.WARNING],scans:[]}}let c=await Promise.all(i.map(async(u,y)=>{let h=r[y],v=await Pt({chainId:n,params:r[y],provider:a,rpcMethod:t,simulationResult:u});return o&&!h.gas&&v.estimatedGasLimit&&(h.gas=`0x${v.estimatedGasLimit.toString(16)}`),{transaction:h,...v}})),l=c.every(u=>u.isSimulationSuccessful),p=bo(c),d=Po(c),m=Ro(c);return {isSimulationSuccessful:l,alert:p,balanceChange:d,tokenApprovals:m,scans:c.map(u=>(u.tokenApprovals&&(u.tokenApprovals.isEditable=!1),u))}},bo=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)},Ro=t=>{let e=t.reduce((r,{tokenApprovals:n})=>(n&&n.approvals.forEach(a=>{let o=r.approvals.find(s=>a.token.address===s.token.address&&a.spenderAddress===s.spenderAddress);if(!o){r.approvals.push({...a});return}o.value=a.value,o.usdPrice=a.usdPrice;}),r),{approvals:[],isEditable:!1});return So(e,t),Rt(e)?void 0:e},Po=t=>{let e=t.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(a=>{let o=hn(r.ins,a);o?o.items.push(...a.items):r.ins.push(a);}),n.outs.forEach(a=>{let o=hn(r.outs,a);o?o.items.push(...a.items):r.outs.push({...a});})),r),{ins:[],outs:[]});return Rt(e)?void 0:e},hn=(t,e)=>t.find(r=>ee(r.token)&&ee(e.token)?r.token.symbol===e.token.symbol:!ee(r.token)&&!ee(e.token)?r.token.address===e.token.address:!1),So=(t,e)=>{for(let r of t.approvals)for(let n of e)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(o=>!ee(o.token)&&!ee(r.token)&&o.token.address===r.token.address)))if(!n.tokenApprovals)t.approvals=t.approvals.filter(o=>o.spenderAddress!==r.spenderAddress&&r.token.address!==o.token.address);else {let o=n.tokenApprovals.approvals.find(s=>s.spenderAddress===r.spenderAddress&&s.token.address===r.token.address);if(!o)continue;r.usdPrice=o.usdPrice,r.value=o.value;}};var kn=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:o,success:s,error:i}=fn(a);if(!s)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams(D("Transaction params are invalid",i))};let{transactions:c,options:l={}}=o,{skipIntermediateTxs:p=!1}=l,d=await w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});try{await yn(c,d);}catch(A){return console.error("Unable to calculate nonce",A),{error:rpcErrors.rpcErrors.internal(D("Unable to calculate nonce",A))}}let m=c.every(A=>Number(A.gas)>0),{alert:u,balanceChange:y,isSimulationSuccessful:h,tokenApprovals:v,scans:E}=await Tn({rpcMethod:t.method,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:d,populateMissingGas:!m,blockaid:n});if(!E.every(({transaction:A})=>Number(A.gas)>0))return console.error("Gas limit is missing in some transactions"),{error:rpcErrors.rpcErrors.internal({message:"Gas limit is missing in some transactions"})};let g={title:"Do you approve these transactions?",details:[{title:"Transaction Details",items:[oe("Account",c[0].from),Oe("Network",{name:e.chainName,logoUri:e.logoUri}),Ve("Website",t.dappInfo)]}],isSimulationSuccessful:h,balanceChange:y,alert:u,tokenApprovals:v,networkFeeSelector:!0},k=E.map(A=>Ye(t,e,A.transaction,A)),{cleanup:U,updateTx:pt}=gn(t.requestId,k,g),$=await r.requestBatchApproval({request:t,signingRequests:k,displayData:g,updateTx:pt});if(U(),"error"in $)return {error:$.error};if($.result.length!==c.length)return {error:rpcErrors.rpcErrors.internal({message:`Invalid number of signatures. Expected ${c.length}, got ${$.result.length}`})};let ke=[];for(let[A,bn]of $.result.entries()){let Bt=A===$.result.length-1,mt=await Je(d,bn);if(Bt&&xe({explorerUrl:e.explorerUrl??"",provider:d,txHash:mt,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),!Bt&&!p&&!await xe({explorerUrl:e.explorerUrl??"",provider:d,txHash:mt,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}))return {error:rpcErrors.rpcErrors.internal({message:`Transaction ${A+1} failed! Batch execution stopped`})};ke.push(mt);}return {result:ke}};var Te,Ue,J,O,ne,vn=class{constructor({approvalController:e,environment:r,appInfo:n,runtime:a}){chunkTKL4UUHE_cjs.c(this,Te,void 0);chunkTKL4UUHE_cjs.c(this,Ue,void 0);chunkTKL4UUHE_cjs.c(this,J,void 0);chunkTKL4UUHE_cjs.c(this,O,void 0);chunkTKL4UUHE_cjs.c(this,ne,void 0);let{glacierApiUrl:o,proxyApiUrl:s}=Gr(r);chunkTKL4UUHE_cjs.d(this,Te,new et({glacierApiUrl:o,headers:yt(n)})),chunkTKL4UUHE_cjs.d(this,Ue,new st({proxyApiUrl:s})),chunkTKL4UUHE_cjs.d(this,J,s),chunkTKL4UUHE_cjs.d(this,O,e),chunkTKL4UUHE_cjs.d(this,ne,new Io__default.default({baseURL:s+"/proxy/blockaid/",apiKey:Lr,httpAgent:a?.httpAgent,fetch:a?.fetch}));}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 on({accountIndex:e,xpub:r,walletType:n})}buildDerivationPath(e){return rt(e)}deriveAddress(e){return pn({...e,approvalController:chunkTKL4UUHE_cjs.b(this,O)})}getBalances({addresses:e,network:r,currency:n,customTokens:a,storage:o,tokenTypes:s}){let i=new j({storage:o,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,J)});return Ur({addresses:e,currency:n,network:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,J),customTokens:a,balanceServices:[chunkTKL4UUHE_cjs.b(this,Te),chunkTKL4UUHE_cjs.b(this,Ue)],storage:o,tokenTypes:s,tokenService:i})}getManifest(){let e=vmModuleTypes.parseManifest(mr);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:a,utilityAddresses:o,caipId:s}=e;return Ot({chainId:r,chainName:n,rpcUrl:a,multiContractAddress:o?.multicall,caipId:s,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,J)})}getTransactionHistory(e){let{network:r,address:n,nextPageToken:a,offset:o}=e,{chainId:s,isTestnet:i,networkToken:c,explorerUrl:l=""}=r;return pr({chainId:s,isTestnet:i,networkToken:c,explorerUrl:l,address:n,nextPageToken:a,offset:o,glacierService:chunkTKL4UUHE_cjs.b(this,Te)})}getTokens(e){let{chainId:r}=e;return Me({chainId:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,J)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return wr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,O),blockaid:chunkTKL4UUHE_cjs.b(this,ne)});case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION_BATCH:return Rr(chunkTKL4UUHE_cjs.b(this,O))?kn({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,O),blockaid:chunkTKL4UUHE_cjs.b(this,ne)}):{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 rn({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,O),blockaid:chunkTKL4UUHE_cjs.b(this,ne)});default:return Ao(e.method)?nn(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};Te=new WeakMap,Ue=new WeakMap,J=new WeakMap,O=new WeakMap,ne=new WeakMap;var Ao=t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t);
|
|
42
|
+
`;}),e},se=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 Fe=zod.z.string().describe("message"),M=zod.z.string().describe("address");var Ur=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([M,Fe])});var Fr=zod.z.object({name:zod.z.string(),type:zod.z.string()}),ge=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(Fr)}).catchall(zod.z.array(Fr)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),Bt=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(),Dt=ge.or(Bt),Gr=zod.z.union([zod.z.string().describe("data string"),ge]),Mr=zod.z.union([zod.z.string().describe("data string"),Dt]),Lr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([M,Mr])}),Vr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([M,Mr])}),Or=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([M,Gr])}),$r=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([M,Gr])});var Wr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([Fe,M]),zod.z.tuple([Fe,M,zod.z.string().optional().describe("password")])])});var Ba=zod.z.discriminatedUnion("method",[Wr,Ur,Lr,Vr,Or,$r]).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 a=n[0],o=n[1];if(typeof o!="string")return {data:o,address:a,method:r};try{let s=JSON.parse(o);return {data:Dt.parse(s),address:a,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 a=n[0],o=n[1];if(typeof o!="string")return {data:o,address:a,method:r};try{let s=JSON.parse(o);return {data:ge.parse(s),address:a,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}}});function Hr(t){return Ba.safeParse(t)}var jr=t=>Bt.safeParse(t).success,il=t=>ge.safeParse(t).success;var qr=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 zr=async({request:t,network:e,approvalController:r,blockaid:n})=>{let a=Hr({method:t.method,params:t.params});if(!a.success)return console.error("invalid params",a.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams(F("Params are invalid",a.error))};let{method:o,data:s,address:i}=a.data,c;(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(c=qr(s));let l,p,u;if(c&&!c.isValid&&(u={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()}}),o===vmModuleTypes.RpcMethod.ETH_SIGN)l={type:o,account:i,data:s},p=s;else if(o===vmModuleTypes.RpcMethod.PERSONAL_SIGN)l={type:o,account:i,data:s},p=ethers.toUtf8String(s);else if(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)l={type:o,account:i,data:s},p=jr(s)?Br(s):_t(s);else if(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){l={type:o,account:i,data:s};let{types:v,primaryType:P,...b}=s;p=_t(b);}if(!l||!p)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let f=await Rr({request:t,accountAddress:i,chainId:e.chainId,data:{method:o,params:t.params},dAppUrl:t.dappInfo.url,blockaid:n}),d={title:"Sign Message",dAppInfo:{name:t.dappInfo.name,action:`${t.dappInfo.name} is requesting to sign the following message`,logoUri:t.dappInfo.icon},network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},account:i,details:[{title:"Message",items:[St("Message",p,"vertical")]}],alert:f?.alert??u,balanceChange:f?.balanceChange,tokenApprovals:f?.tokenApprovals},y=await r.requestApproval({request:t,displayData:d,signingData:l});return "error"in y?{error:y.error}:"signedData"in y?{result:y.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var Yr=async(t,e)=>{try{return {result:await(await N({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}`)}};function ve(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}async function be(t){return await Promise.allSettled(t).then(e=>e.reduce((r,n)=>{if(n.status==="fulfilled"){let a=n.value;a.status==="fulfilled"?r[a.id]=a.value:r[a.id]={error:a.reason};}return r},{}))}async function mt({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 _,Ee,ie,Le,Pe,dt=class{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:a,fetch:o}){chunkTKL4UUHE_cjs.c(this,_,void 0);chunkTKL4UUHE_cjs.c(this,Ee,void 0);chunkTKL4UUHE_cjs.c(this,ie,void 0);chunkTKL4UUHE_cjs.c(this,Le,void 0);chunkTKL4UUHE_cjs.c(this,Pe,void 0);chunkTKL4UUHE_cjs.d(this,_,e),chunkTKL4UUHE_cjs.d(this,Ee,r),chunkTKL4UUHE_cjs.d(this,ie,n),chunkTKL4UUHE_cjs.d(this,Le,a),chunkTKL4UUHE_cjs.d(this,Pe,o);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let a=await N({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,_).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,_).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,_).utilityAddresses?.multicall}),o=chunkTKL4UUHE_cjs.b(this,_).pricingProviders?.coingecko.nativeTokenId,s=chunkTKL4UUHE_cjs.b(this,_).networkToken,i=new z({storage:chunkTKL4UUHE_cjs.b(this,Ee),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ie),fetch:chunkTKL4UUHE_cjs.b(this,Pe)}),c=o?await i.getSimplePrice({coinIds:[o],currencies:[n]}):{},l=c?.[o??""]?.[n]?.price??void 0,p=c?.[o??""]?.[n]?.marketCap??void 0,u=c?.[o??""]?.[n]?.vol24??void 0,f=c?.[o??""]?.[n]?.change24??void 0,d=await a.getBalance(r),y=new coreUtilsSdk.TokenUnit(d,s.decimals,s.symbol),v=l!==void 0?y.mul(l):void 0;return {...s,coingeckoId:o??"",type:vmModuleTypes.TokenType.NATIVE,balance:d,balanceDisplayValue:y.toDisplay(),balanceInCurrency:v?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:v?.toDisplay({fixedDp:2}),priceInCurrency:l,marketCap:p,vol24:u,change24:f}}async listErc20Balances({chainId:e,address:r,currency:n}){let a=await N({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,_).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,_).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,_).utilityAddresses?.multicall}),o=chunkTKL4UUHE_cjs.b(this,_).pricingProviders?.coingecko.assetPlatformId,s=chunkTKL4UUHE_cjs.b(this,_).pricingProviders?.coingecko.nativeTokenId,i=await mt({chainId:Number(e),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ie)}),c=i.map(b=>b.address),l=[...i,...chunkTKL4UUHE_cjs.b(this,Le)].filter(at),p=async b=>{let g=await new ethers.ethers.Contract(b.address,gr__default.default.abi,a).balanceOf?.(r)||0n;return {...b,balance:g}},u=l.map(b=>ve(p(b),b.address)),f=await be(u),d=new z({storage:chunkTKL4UUHE_cjs.b(this,Ee),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ie),fetch:chunkTKL4UUHE_cjs.b(this,Pe)}),y=o&&await d.getPricesByAddresses(c,o,n)||{},v=Object.keys(f),P={};for(let b=0;b<v.length;b++){let S=v[b];if(S===void 0)continue;let x=f[S];if(x===void 0||"error"in x){P[S]={error:`rpcService:getTokenWithBalance failed: ${x?.error??"unknown error"}`};continue}let g=y?.[s??""]?.[n]?.price??void 0,k=y?.[s??""]?.[n]?.marketCap??void 0,G=y?.[s??""]?.[n]?.vol24??void 0,W=y?.[s??""]?.[n]?.change24??void 0,Ae=new coreUtilsSdk.TokenUnit(x.balance,x.decimals,x.symbol),C=g!==void 0?Ae.mul(g):void 0;P[x.address.toLowerCase()]={...x,type:vmModuleTypes.TokenType.ERC20,balance:x.balance,balanceDisplayValue:Ae.toDisplay(),balanceInCurrency:C?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:C?.toDisplay({fixedDp:2}),priceInCurrency:g,marketCap:k,change24:W,vol24:G,reputation:null};}return P}async listNftBalances(){return {}}};_=new WeakMap,Ee=new WeakMap,ie=new WeakMap,Le=new WeakMap,Pe=new WeakMap;async function Qr(t,e){let r=t.map(async(o,s)=>({index:s,result:await e(o)})),a=(await Promise.allSettled(r)).filter(o=>o.status==="fulfilled").map(o=>o).find(o=>o.value.result);return a?t[a.value.index]:void 0}var en=async({addresses:t,currency:e,network:r,proxyApiUrl:n,tokenTypes:a=[vmModuleTypes.TokenType.NATIVE,vmModuleTypes.TokenType.ERC20,vmModuleTypes.TokenType.ERC721,vmModuleTypes.TokenType.ERC1155],customTokens:o=[],storage:s,balanceServices:i=[],tokenService:c,fetch:l})=>{let p=r.chainId,u=[...i,new dt({network:r,storage:s,proxyApiUrl:n,customTokens:o,fetch:l})],f=await Qr(u,y=>y.isNetworkSupported(r.chainId)),d={};if(f){let y=[],v=[],P=[];t.forEach(g=>{a.includes(vmModuleTypes.TokenType.NATIVE)&&y.push(ve(f.getNativeBalance({address:g,currency:e.toUpperCase(),chainId:p}).then(async k=>{if(k.symbol==="AVAX"){let G=await c.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:e.toUpperCase()});return {...k,priceInCurrency:G.priceInCurrency,marketCap:G.marketCap,vol24:G.vol24,change24:G.change24}}return k}),g)),a.includes(vmModuleTypes.TokenType.ERC20)&&v.push(ve(f.listErc20Balances({customTokens:o.filter(at),currency:e.toUpperCase(),chainId:p,address:g,pageSize:100}),g)),(a.includes(vmModuleTypes.TokenType.ERC721)||a.includes(vmModuleTypes.TokenType.ERC1155))&&P.push(ve(f.listNftBalances({chainId:p,address:g}),g));});let b=await be(y),S=await be(v),x=await be(P);Object.keys(b).forEach(g=>{let k=b[g];if(!k||"error"in k){d[g]={error:`getNativeBalance failed: ${k?.error??"unknown error"}`};return}let G=k.symbol;d[g]={[G]:k};}),Object.keys(S).forEach(g=>{let k=S[g];!k||"error"in k&&typeof k.error!="string"?d[g]={...d[g],error:"listErc20Balances failed: unknown error"}:"error"in k&&typeof k.error=="string"?d[g]={...d[g],error:`listErc20Balances failed: ${k.error}`}:d[g]={...d[g],...k};}),Object.keys(x).forEach(g=>{let k=x[g];!k||"error"in k&&typeof k.error!="string"?d[g]={...d[g],error:"listNftBalances failed: unknown error"}:"error"in k&&typeof k.error=="string"?d[g]={...d[g],error:`listNftBalances failed: ${k.error}`}:d[g]={...d[g],...k};});}else t.forEach(y=>{d[y]={error:"unsupported network"};});return d};var Gt={LOW:1n,MEDIUM:4n,HIGH:6n},Mt=500000000n,Ha=t=>t===coreChainsSdk.ChainId.AVALANCHE_TESTNET_ID||t===coreChainsSdk.ChainId.AVALANCHE_MAINNET_ID;async function nn({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,caipId:a,proxyApiUrl:o}){let s=await N({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n});if(!o)throw rpcErrors.rpcErrors.internal("Proxy API URL is needed");if(Ha(t))try{let b=await ja(s);return {...b,baseFee:b.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 qa(o,a),p=new coreUtilsSdk.TokenUnit(l,0,""),u=new coreUtilsSdk.TokenUnit(c,0,""),f=BigInt("1000000000"),d=u.mul(p).add(f).toSubUnit(),y=Mt*Gt.LOW,v=Mt*Gt.MEDIUM,P=Mt*Gt.HIGH;return {baseFee:d,low:{maxFeePerGas:d+y,maxPriorityFeePerGas:y},medium:{maxFeePerGas:d+v,maxPriorityFeePerGas:v},high:{maxFeePerGas:d+P,maxPriorityFeePerGas:P},isFixedFee:!1,displayDecimals:9}}async function ja(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 qa(t,e){if(!e)return 1.5;try{let n=await fetch(`${t}/gas/multiplier`);if(!n.ok)throw new Error(n.statusText);let a=await n.json();return a[e]??a.default}catch{return 1.5}}function an({tx:t,networkToken:e,explorerUrl:r,chainId:n,address:a}){let o=t.from_address.toLowerCase()===a.toLowerCase(),s=new Date(t.block_timestamp).getTime(),i=Ka(t.category),c=!za.has(t.category),l=Za(t,e,a),p=ye(r,t.hash);return {isContractCall:c,isIncoming:!o,isOutgoing:o,isSender:o,timestamp:s,hash:t.hash,from:t.from_address,to:t.to_address??"",tokens:l,gasPrice:t.gas_price,gasUsed:t.receipt_gas_used,chainId:n.toString(),txType:i,method:t.method_label??void 0,explorerLink:p}}var za=new Set(["send","receive","token send","token receive"]),Ya={send:vmModuleTypes.TransactionType.SEND,receive:vmModuleTypes.TransactionType.RECEIVE,"token send":vmModuleTypes.TransactionType.SEND,"token receive":vmModuleTypes.TransactionType.RECEIVE,"nft send":vmModuleTypes.TransactionType.NFT_SEND,"nft receive":vmModuleTypes.TransactionType.NFT_RECEIVE,"token swap":vmModuleTypes.TransactionType.SWAP,"nft purchase":vmModuleTypes.TransactionType.NFT_BUY,"nft sale":vmModuleTypes.TransactionType.NFT_SEND,airdrop:vmModuleTypes.TransactionType.AIRDROP,mint:vmModuleTypes.TransactionType.NFT_BUY,burn:vmModuleTypes.TransactionType.UNKNOWN,deposit:vmModuleTypes.TransactionType.UNKNOWN,withdraw:vmModuleTypes.TransactionType.UNKNOWN,borrow:vmModuleTypes.TransactionType.UNKNOWN,"contract interaction":vmModuleTypes.TransactionType.UNKNOWN};function Ka(t){return Ya[t]??vmModuleTypes.TransactionType.UNKNOWN}function X(t){if(!(t==null||t===""))return {address:t}}function ut(t){return t?.trim()??""}function Ja(t){let e=t.trim().toLowerCase();return !e.startsWith("0x")||e.length<12?t.trim():`${e.slice(0,6)}\u2026${e.slice(-4)}`}function Xa(t){let e=ut(t.token_symbol);if(e!=="")return e;let r=ut(t.token_name);return r!==""?r:Ja(t.address)}function Za(t,e,r){let n=[];for(let a of t.native_transfers)n.push(Qa(a,e));for(let a of t.erc20_transfers)n.push(eo(a));for(let a of t.nft_transfers)n.push(to(a));return n.length===0&&n.push(ro(t,e,r)),n}function Qa(t,e){let r=ut(t.token_symbol)||e.symbol,n=new coreUtilsSdk.TokenUnit(t.value,e.decimals,r);return {decimal:e.decimals.toString(),name:e.name,symbol:r,amount:n.toDisplay(),from:X(t.from_address),to:X(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}function eo(t){let e=Number(t.token_decimals),r=Xa(t),n=new coreUtilsSdk.TokenUnit(t.value,e,r),a=ut(t.token_name)||r;return {decimal:t.token_decimals,name:a,symbol:r,amount:n.toDisplay(),from:X(t.from_address),to:X(t.to_address),type:vmModuleTypes.TokenType.ERC20,address:t.address}}function to(t){let e=t.contract_type==="ERC1155"?vmModuleTypes.TokenType.ERC1155:vmModuleTypes.TokenType.ERC721;return {name:"",symbol:"",amount:t.amount,collectableTokenId:t.token_id,from:X(t.from_address),to:X(t.to_address),type:e,address:t.token_address}}function ro(t,e,r){let n=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol),o=t.from_address.toLowerCase()===r.toLowerCase()?`-${n.toDisplay()}`:n.toDisplay();return {decimal:e.decimals.toString(),name:e.name,symbol:e.symbol,amount:o,from:X(t.from_address),to:X(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}var no="https://proxy-api.avax.network/proxy/moralis-evm";async function on({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:o}){try{let s=`0x${t.toString(16)}`,i=new URLSearchParams({chain:s,limit:(o??25).toString()});a&&i.set("cursor",a);let c=`${no}/wallets/${n}/history?${i.toString()}`,l=await fetch(c);if(!l.ok)return {transactions:[],nextPageToken:""};let p=await l.json();return Array.isArray(p.result)?{transactions:p.result.filter(f=>f.receipt_status==="1").map(f=>an({tx:f,networkToken:e,explorerUrl:r,chainId:t,address:n})),nextPageToken:p.cursor??""}:{transactions:[],nextPageToken:""}}catch{return {transactions:[],nextPageToken:""}}}var ao=new Set([1,4,5,11155111,8453,42161,10]);function sn(t){return ao.has(t)}var pn=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a,o)=>{let s=!e&&!r&&!n,i=so(t.method?.methodName),c=a.toLowerCase(),l=i.toLowerCase().includes("swap"),p=s&&t.from.address.toLowerCase()===c,u=s&&t.to.address.toLowerCase()===c,f=i==="Market Buy Orders With Eth"||i==="Buy NFT",d=i==="Approve",y=i.toLowerCase().includes("transfer"),v=i.toLowerCase().includes("airdrop"),P=i.toLowerCase().includes("unwrap"),b=i==="Fill Order",S=!!o[0]&&ln(o[0].type)&&o[0].from?.address.toLowerCase()===c,x=!!o[0]&&ln(o[0].type)&&o[0].to?.address.toLowerCase()===c;return l?vmModuleTypes.TransactionType.SWAP:p?vmModuleTypes.TransactionType.SEND:u?vmModuleTypes.TransactionType.RECEIVE:f?vmModuleTypes.TransactionType.NFT_BUY:d?vmModuleTypes.TransactionType.APPROVE:S?vmModuleTypes.TransactionType.NFT_SEND:x?vmModuleTypes.TransactionType.NFT_RECEIVE:y?vmModuleTypes.TransactionType.TRANSFER:v?vmModuleTypes.TransactionType.AIRDROP:P?vmModuleTypes.TransactionType.UNWRAP:b?vmModuleTypes.TransactionType.FILL_ORDER:vmModuleTypes.TransactionType.UNKNOWN};function ln(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}var so=(t="")=>t.includes("(")?oo__default.default(t.split("(",1)[0]):t;var mn=(t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},a)=>{let o=t===vmModuleTypes.TransactionType.TRANSFER,s=t===vmModuleTypes.TransactionType.SEND,i=t===vmModuleTypes.TransactionType.RECEIVE,c=e?.from?.address,l=e?.to?.address;o&&r&&r[0]&&(c=r[0].from.address,l=r[0].to.address),o&&n&&n[0]&&(c=n[0].from.address,l=n[0].to.address);let p=s||o&&c.toLowerCase()===a.toLowerCase(),u=i||o&&l.toLowerCase()===a.toLowerCase();return {isOutgoing:p,isIncoming:u,isSender:c===a,from:c,to:l}};async function dn(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var co="https://ipfs.io";function Re(t,e=co){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}async function lo(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}async function un(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 lo(Re(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}var po="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function fn(t,e="256"){let r=Re(t);return `${po}/width=${e},fit/${r}`}var gn=async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a)=>{let o=[];if(t.value!=="0"){let s=a.decimals,c=new coreUtilsSdk.TokenUnit(t.value,a.decimals,a.symbol).toDisplay();o.push({decimal:s.toString(),name:a.name,symbol:a.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();o.push({decimal:i.toString(),address:s.erc20Token.address,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 hn(i.tokenUri,i.metadata.imageUri);o.push({name:s.erc721Token.name,symbol:s.erc721Token.symbol,address:s.erc721Token.address,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 hn(i.tokenUri,i.metadata.imageUri);o.push({name:s.erc1155Token.metadata.name??"",symbol:s.erc1155Token.metadata.symbol??"",address:s.erc1155Token.address,amount:s.value,imageUri:c,from:s.from,to:s.to,collectableTokenId:s.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),o},hn=async(t,e)=>{if(e)return e.startsWith("ipfs://")?Re(e):e;{let[r,n]=await dn(un(t));return n?"":r.image?fn(r.image):""}};var Tn=async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:a})=>{let o=await gn(t,r),s=pn(t,a,o),{isOutgoing:i,isIncoming:c,isSender:l,from:p,to:u}=mn(s,t,a),{blockTimestamp:f,txHash:d,gasPrice:y,gasUsed:v}=t.nativeTransaction,P=ye(e,d);return {isContractCall:!cr.includes(s),isIncoming:c,isOutgoing:i,isSender:l,timestamp:f*1e3,hash:d,from:p,to:u,tokens:o,gasPrice:y,gasUsed:v,chainId:n.toString(),txType:s,explorerLink:P}};var kn=async({chainId:t,explorerUrl:e,networkToken:r,address:n,nextPageToken:a,offset:o,glacierService:s})=>{try{let i=await s.listTransactions({chainId:t.toString(),address:n,pageToken:a,pageSize:o});return {transactions:(await Promise.all(i.transactions.filter(p=>p.nativeTransaction.txStatus==="1").map(p=>Tn({transactions:p,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(u=>u)))).filter(p=>p.tokens.find(u=>Number(u.amount)!==0)),nextPageToken:i.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var vn=async({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:o,glacierService:s})=>sn(t)?on({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:o}):s.isHealthy()?kn({networkToken:e,explorerUrl:r,chainId:t,address:n,nextPageToken:a,offset:o,glacierService:s}):{transactions:[],nextPageToken:""};var uo="https://ipfs.io";function bn(t,e=uo){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}var fo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function yt(t,e="256"){let r=bn(t);return `${fo}/width=${e},fit/${r}`}var Se,V,ht=class{constructor(e,r){this.baseUrl=e;chunkTKL4UUHE_cjs.c(this,Se,[]);chunkTKL4UUHE_cjs.c(this,V,void 0);chunkTKL4UUHE_cjs.d(this,V,r??fetch);}async isNetworkSupported(e){return (await this.getChainList()).some(n=>n.community_id===e)}async getChainInfo({chainId:e}){return (await this.getChainList()).find(n=>n.id===e)}async getTokenBalance({chainId:e,address:r,tokenId:n}){let a=await chunkTKL4UUHE_cjs.b(this,V).call(this,`${this.baseUrl}/v1/user/token?id=${r}&chain_id=${e}&token_id=${n}`);if(a.ok)return await a.json();throw new Error(`${a.status}:${a.statusText}`)}async getTokensBalanceOnChain({chainId:e,address:r}){let n=await chunkTKL4UUHE_cjs.b(this,V).call(this,`${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(chunkTKL4UUHE_cjs.b(this,V)??globalThis.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,Se).length===0){let e=await chunkTKL4UUHE_cjs.b(this,V).call(this,`${this.baseUrl}/v1/chain/list`);if(e.ok)chunkTKL4UUHE_cjs.d(this,Se,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return chunkTKL4UUHE_cjs.b(this,Se)}async getNftList({address:e,chainId:r}){return U([`${this.baseUrl}/v1/user/nft_list?id=${e}&chain_id=${r}`],To,chunkTKL4UUHE_cjs.b(this,V))}};Se=new WeakMap,V=new WeakMap;var ho=zod.z.object({id:zod.z.union([zod.z.custom(ethers.isHexString),zod.z.string()]),chain:zod.z.string(),name:zod.z.string()}),go=ho.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()})),To=zod.z.array(go);var L,xe,Tt,vt,Pn,kt=class{constructor({proxyApiUrl:e,fetch:r}){chunkTKL4UUHE_cjs.c(this,xe);chunkTKL4UUHE_cjs.c(this,vt);chunkTKL4UUHE_cjs.c(this,L,void 0);chunkTKL4UUHE_cjs.d(this,L,new ht(`${e}/proxy/debank`,r));}async isNetworkSupported(e){return chunkTKL4UUHE_cjs.b(this,L).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:a,chainIdString:o}=await chunkTKL4UUHE_cjs.e(this,xe,Tt).call(this,e),s=a.native_token_id,i=await chunkTKL4UUHE_cjs.b(this,L).getTokenBalance({address:r,chainId:o,tokenId:s}),c=new coreUtilsSdk.TokenUnit(i.raw_amount,i.decimals,i.symbol),l=c.toDisplay(),u=(await je()).usd[n.toLowerCase()],f=u?u*i.price:void 0,d=f?c.mul(f).toDisplay({fixedDp:2}):void 0,y=f?c.mul(f).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:d,priceInCurrency:f}}async listErc20Balances({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:a,chainIdString:o}=await chunkTKL4UUHE_cjs.e(this,xe,Tt).call(this,e),s=await chunkTKL4UUHE_cjs.b(this,L).getTokensBalanceOnChain({chainId:o,address:r}),i=await je(),c={};for(let l of s){if(l.id===a.native_token_id||l.is_core===!1)continue;let p=new coreUtilsSdk.TokenUnit(l.raw_amount,l.decimals,l.symbol),u=p.toDisplay(),f=i.usd[n.toLowerCase()],d=f?f*l.price:void 0,y=d?p.mul(d).toDisplay({fixedDp:2}):void 0,v=d?p.mul(d).toDisplay({fixedDp:2,asNumber:!0}):void 0;c[l.id]={chainId:a.community_id,address:l.id,name:l.name,symbol:l.symbol,decimals:l.decimals,logoUri:l.logo_url,balance:p.toSubUnit(),balanceCurrencyDisplayValue:y,balanceDisplayValue:u,balanceInCurrency:v,priceInCurrency:d,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,xe,Tt).call(this,e),a=await chunkTKL4UUHE_cjs.b(this,L).getNftList({chainId:n,address:r});return chunkTKL4UUHE_cjs.e(this,vt,Pn).call(this,a,e)}};L=new WeakMap,xe=new WeakSet,Tt=async function(e){let n=(await chunkTKL4UUHE_cjs.b(this,L).getChainList()).find(o=>o.community_id===e)?.id;if(!n)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let a=await chunkTKL4UUHE_cjs.b(this,L).getChainInfo({chainId:n});if(!a)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);return {chainInfo:a,chainIdString:n}},vt=new WeakSet,Pn=function(e,r){return e.reduce((n,a)=>({...n,[`${a.contract_id}-${a.id}`]:{chainId:r,address:a.contract_id,description:a.description??"",logoUri:a.thumbnail_url,logoSmall:yt(a.content),name:a.name,symbol:"",tokenId:`${a.inner_id}`,tokenUri:a.detail_url,collectionName:a.collection_name,balance:BigInt(a.amount),balanceDisplayValue:`${a.amount}`,type:a.is_erc721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{indexStatus:glacierSdk.NftTokenMetadataStatus.UNINDEXED,description:a.description??"",properties:""}}}),{})};var O=class extends Error{constructor(){super(...arguments);chunkTKL4UUHE_cjs.a(this,"message","Glacier is unhealthy. Try again later.");}},Po=[coreChainsSdk.ChainId.ETHEREUM_HOMESTEAD],bt=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},_e),this.getSupportedChainIds().catch(()=>{});}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async isNetworkSupported(e){return (await this.getSupportedChainIds()).some(n=>n===e.toString())}async getSupportedChainIds(){if(this.supportedChainIds.length)return this.supportedChainIds;try{let e=await this.glacierSdk.evmChains.supportedChains({});return this.supportedChainIds=e.chains.map(r=>r.chainId).filter(r=>!Po.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(a){throw a instanceof O&&this.setGlacierToUnhealthy(),a}}async getTokenDetails({address:e,chainId:r,tokenId:n}){try{return this.glacierSdk.nfTs.getTokenDetails({address:e,chainId:r,tokenId:n})}catch(a){throw a instanceof O&&this.setGlacierToUnhealthy(),a}}async getNativeBalance({chainId:e,address:r,currency:n,coingeckoId:a}){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:a??""}}catch(o){throw o instanceof O&&this.setGlacierToUnhealthy(),o}}async listErc721Balances({chainId:e,address:r}){let n,a=[];do try{let o=await this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...o.erc721TokenBalances),n=o.nextPageToken;}catch(o){throw o instanceof O&&this.setGlacierToUnhealthy(),o}while(n);return a}async listErc1155Balances({chainId:e,address:r}){let n,a=[];do try{let o=await this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...o.erc1155TokenBalances),n=o.nextPageToken;}catch(o){throw o instanceof O&&this.setGlacierToUnhealthy(),o}while(n);return a}async listNftBalances({chainId:e,address:r}){let a=(await Promise.allSettled([this.listErc721Balances({chainId:e.toString(),address:r}),this.listErc1155Balances({chainId:e.toString(),address:r})])).filter(o=>o.status==="fulfilled").flatMap(o=>o.value.filter(s=>s.ercType===glacierSdk.Erc721Token.ercType.ERC_721||BigInt(s.balance)>0n).map(s=>[`${s.address}-${s.tokenId}`,{address:s.address,description:s.metadata.description??"",logoUri:s.metadata.imageUri??"",logoSmall:yt(s.metadata.imageUri??""),name:s.metadata.name??"",symbol:s.metadata.symbol??"",tokenId:s.tokenId,tokenUri:s.tokenUri,chainId:e,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:{indexStatus:s.metadata.indexStatus,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(a)}async listErc20Balances({chainId:e,address:r,currency:n,customTokens:a}){try{let o=[],s;do{let i=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:s});o.push(...So(i.erc20TokenBalances,Number(e))),s=i.nextPageToken;}while(s);return [...Ro(a),...o].reduce((i,c)=>({...i,[c.address.toLowerCase()]:c}),{})}catch(o){throw o instanceof O&&this.setGlacierToUnhealthy(),o}}async listTransactions({chainId:e,address:r,pageToken:n,pageSize:a}){try{return this.glacierSdk.evmTransactions.listTransactionsV2({chainId:e,address:r,pageToken:n,pageSize:a,filterSpamTokens:!0})}catch(o){throw o instanceof O&&this.setGlacierToUnhealthy(),o}}},Ro=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})),So=(t,e)=>t.map(r=>{let n=new coreUtilsSdk.TokenUnit(r.balance,r.decimals,r.symbol),a=n.toDisplay(),o=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:o,balanceDisplayValue:a,balanceInCurrency:i,priceInCurrency:s,reputation:r.tokenReputation,type:vmModuleTypes.TokenType.ERC20}});var Ie,We,Q,$,ce,le,In=class{constructor({approvalController:e,environment:r,appInfo:n,runtime:a}){chunkTKL4UUHE_cjs.c(this,Ie,void 0);chunkTKL4UUHE_cjs.c(this,We,void 0);chunkTKL4UUHE_cjs.c(this,Q,void 0);chunkTKL4UUHE_cjs.c(this,$,void 0);chunkTKL4UUHE_cjs.c(this,ce,void 0);chunkTKL4UUHE_cjs.c(this,le,void 0);let{glacierApiUrl:o,proxyApiUrl:s}=er(r);chunkTKL4UUHE_cjs.d(this,le,a),chunkTKL4UUHE_cjs.d(this,Ie,new bt({glacierApiUrl:o,headers:xt(n)})),chunkTKL4UUHE_cjs.d(this,We,new kt({proxyApiUrl:s,fetch:chunkTKL4UUHE_cjs.b(this,le)?.fetch})),chunkTKL4UUHE_cjs.d(this,Q,s),chunkTKL4UUHE_cjs.d(this,$,e),chunkTKL4UUHE_cjs.d(this,ce,new Io__default.default({baseURL:s+"/proxy/blockaid/",apiKey:Zt,httpAgent:a?.httpAgent,fetch:a?.fetch}));}getProvider(e){return N({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 Ze(e)}deriveAddress(e){return ar({...e,approvalController:chunkTKL4UUHE_cjs.b(this,$)})}getBalances({addresses:e,network:r,currency:n,customTokens:a,storage:o,tokenTypes:s}){let i=new z({storage:o,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,Q),fetch:chunkTKL4UUHE_cjs.b(this,le)?.fetch});return en({addresses:e,currency:n,network:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,Q),customTokens:a,balanceServices:[chunkTKL4UUHE_cjs.b(this,Ie),chunkTKL4UUHE_cjs.b(this,We)],storage:o,tokenTypes:s,tokenService:i,fetch:chunkTKL4UUHE_cjs.b(this,le)?.fetch})}getManifest(){let e=vmModuleTypes.parseManifest(Xt);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:a,utilityAddresses:o,caipId:s}=e;return nn({chainId:r,chainName:n,rpcUrl:a,multiContractAddress:o?.multicall,caipId:s,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,Q)})}getTransactionHistory(e){let{network:r,address:n,nextPageToken:a,offset:o}=e,{chainId:s,networkToken:i,explorerUrl:c=""}=r;return vn({chainId:s,networkToken:i,explorerUrl:c,address:n,nextPageToken:a,offset:o,glacierService:chunkTKL4UUHE_cjs.b(this,Ie)})}getTokens(e){let{chainId:r}=e;return mt({chainId:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,Q)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return Nr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),blockaid:chunkTKL4UUHE_cjs.b(this,ce)});case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION_BATCH:return mr(chunkTKL4UUHE_cjs.b(this,$))?Ir({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),blockaid:chunkTKL4UUHE_cjs.b(this,ce)}):{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 zr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),blockaid:chunkTKL4UUHE_cjs.b(this,ce)});default:return Ao(e.method)?Yr(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};Ie=new WeakMap,We=new WeakMap,Q=new WeakMap,$=new WeakMap,ce=new WeakMap,le=new WeakMap;var Ao=t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t);
|
|
44
43
|
|
|
45
|
-
exports.ERC20TransactionType =
|
|
46
|
-
exports.EvmModule =
|
|
47
|
-
exports.NonContractCallTypes =
|
|
48
|
-
exports.addIdToPromise =
|
|
49
|
-
exports.isTypedData =
|
|
50
|
-
exports.isTypedDataV1 =
|
|
51
|
-
exports.settleAllIdPromises =
|
|
44
|
+
exports.ERC20TransactionType = ae;
|
|
45
|
+
exports.EvmModule = In;
|
|
46
|
+
exports.NonContractCallTypes = cr;
|
|
47
|
+
exports.addIdToPromise = ve;
|
|
48
|
+
exports.isTypedData = il;
|
|
49
|
+
exports.isTypedDataV1 = jr;
|
|
50
|
+
exports.settleAllIdPromises = be;
|
|
52
51
|
//# sourceMappingURL=out.js.map
|
|
53
52
|
//# sourceMappingURL=index.cjs.map
|