@avalabs/evm-module 3.7.3 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ var f=Object.defineProperty;var g=(b,a,c)=>a in b?f(b,a,{enumerable:!0,configurable:!0,writable:!0,value:c}):b[a]=c;var h=(b,a)=>f(b,"name",{value:a,configurable:!0});var i=(b,a,c)=>(g(b,typeof a!="symbol"?a+"":a,c),c),d=(b,a,c)=>{if(!a.has(b))throw TypeError("Cannot "+c)};var j=(b,a,c)=>(d(b,a,"read from private field"),c?c.call(b):a.get(b)),k=(b,a,c)=>{if(a.has(b))throw TypeError("Cannot add the same private member more than once");a instanceof WeakSet?a.add(b):a.set(b,c);},l=(b,a,c,e)=>(d(b,a,"write to private field"),e?e.call(b,c):a.set(b,c),c);var m=(b,a,c)=>(d(b,a,"access private method"),c);
2
+
3
+ export { h as a, i as b, j as c, k as d, l as e, m as f };
4
+ //# sourceMappingURL=out.js.map
5
+ //# sourceMappingURL=chunk-F6EK5R7B.js.map
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var f=Object.defineProperty;var g=(b,a,c)=>a in b?f(b,a,{enumerable:!0,configurable:!0,writable:!0,value:c}):b[a]=c;var h=(b,a)=>f(b,"name",{value:a,configurable:!0});var i=(b,a,c)=>(g(b,typeof a!="symbol"?a+"":a,c),c),d=(b,a,c)=>{if(!a.has(b))throw TypeError("Cannot "+c)};var j=(b,a,c)=>(d(b,a,"read from private field"),c?c.call(b):a.get(b)),k=(b,a,c)=>{if(a.has(b))throw TypeError("Cannot add the same private member more than once");a instanceof WeakSet?a.add(b):a.set(b,c);},l=(b,a,c,e)=>(d(b,a,"write to private field"),e?e.call(b,c):a.set(b,c),c);var m=(b,a,c)=>(d(b,a,"access private method"),c);
4
+
5
+ exports.a = h;
6
+ exports.b = i;
7
+ exports.c = j;
8
+ exports.d = k;
9
+ exports.e = l;
10
+ exports.f = m;
11
+ //# sourceMappingURL=out.js.map
12
+ //# sourceMappingURL=chunk-VYIKXRYZ.cjs.map
package/dist/index.cjs CHANGED
@@ -1,52 +1,52 @@
1
1
  'use strict';
2
2
 
3
- var chunkTKL4UUHE_cjs = require('./chunk-TKL4UUHE.cjs');
3
+ var chunkVYIKXRYZ_cjs = require('./chunk-VYIKXRYZ.cjs');
4
4
  var vmModuleTypes = require('@avalabs/vm-module-types');
5
- var Mo = require('@blockaid/client');
5
+ var Xo = require('@blockaid/client');
6
6
  var coreCoingeckoSdk = require('@avalabs/core-coingecko-sdk');
7
7
  var zod = require('zod');
8
8
  var glacierSdk = require('@avalabs/glacier-sdk');
9
9
  var rpcErrors = require('@metamask/rpc-errors');
10
10
  var ethers = require('ethers');
11
11
  var coreWalletsSdk = require('@avalabs/core-wallets-sdk');
12
- var vr = require('@openzeppelin/contracts/build/contracts/ERC20.json');
12
+ var Br = require('@openzeppelin/contracts/build/contracts/ERC20.json');
13
13
  var coreUtilsSdk = require('@avalabs/core-utils-sdk');
14
- var kr = require('xss');
14
+ var wr = require('xss');
15
15
  var coreChainsSdk = require('@avalabs/core-chains-sdk');
16
- var oo = require('lodash.startcase');
16
+ var To = require('lodash.startcase');
17
17
 
18
18
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
19
19
 
20
- var Mo__default = /*#__PURE__*/_interopDefault(Mo);
21
- var vr__default = /*#__PURE__*/_interopDefault(vr);
22
- var kr__default = /*#__PURE__*/_interopDefault(kr);
23
- var oo__default = /*#__PURE__*/_interopDefault(oo);
20
+ var Xo__default = /*#__PURE__*/_interopDefault(Xo);
21
+ var Br__default = /*#__PURE__*/_interopDefault(Br);
22
+ var wr__default = /*#__PURE__*/_interopDefault(wr);
23
+ var To__default = /*#__PURE__*/_interopDefault(To);
24
24
 
25
- function zt(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function At(t){let e,r=0;for(e=0;e<t.length;e++){let n=zt(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}var te=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=F.exponential()})=>{let a=0,s=0,o;for(;s<r;){s>0&&await Un(a);try{let c=await t(s);if(e(c))return c}catch(c){o=c;}a=n(s),s++;}let i=o?`Max retry exceeded. ${o}`:"Max retry exceeded.";throw new Error(i)},F=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,s=e*r,o=2*r*(Math.pow(2,a)-1);return s+o}}};function Un(t){return new Promise(e=>setTimeout(e,t))}var Ct=t=>te({operation:e=>t(e>0),maxRetries:2,backoffPolicy:F.constant(1),isSuccess:e=>e?.status?.error_code!==429});async function D(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 we=class{constructor(e,r){this.proxyApiUrl=e;this.fetchFn=r;}simplePrice(e){let r=new URLSearchParams(e);return D([`${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 D([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}};var Fn=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())})),Ke=class{constructor(e){this.proxyApiUrl=e;}watchlistToken(e){let r=new URLSearchParams(e);return D([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],Fn)}};var Y,re,ne,ue,z=class{constructor({storage:e,proxyApiUrl:r,fetch:n}){chunkTKL4UUHE_cjs.c(this,Y,void 0);chunkTKL4UUHE_cjs.c(this,re,void 0);chunkTKL4UUHE_cjs.c(this,ne,void 0);chunkTKL4UUHE_cjs.c(this,ue,void 0);chunkTKL4UUHE_cjs.a(this,"transformSimplePriceResponse",(e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(a=>{let s=e[a];n[a]={},r.forEach(o=>{n[a]={[o]:{price:s?.[o],change24:s?.[`${o}_24h_change`],vol24:s?.[`${o}_24h_vol`],marketCap:s?.[`${o}_market_cap`]}};});}),n});chunkTKL4UUHE_cjs.d(this,Y,e),chunkTKL4UUHE_cjs.d(this,re,r),chunkTKL4UUHE_cjs.d(this,ne,n??globalThis.fetch),chunkTKL4UUHE_cjs.d(this,ue,coreCoingeckoSdk.getBasicCoingeckoHttp(void 0,chunkTKL4UUHE_cjs.b(this,ne)));}async getWatchlistDataForToken({tokenDetails:e,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new Ke(chunkTKL4UUHE_cjs.b(this,re)).watchlistToken({tokens:e.symbol,currency:r})).filter(s=>e.isNative?s.internalId===`NATIVE-${e.symbol.toLowerCase()}`:s.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,s=`getSimplePrice-${e?`${At(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkTKL4UUHE_cjs.b(this,Y)?.get?.(s),n)return n;try{n=await Ct(o=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:o}));}catch{n=void 0;}return chunkTKL4UUHE_cjs.b(this,Y)?.set?.(s,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,o=`getPricesWithMarketDataByAddresses-${`${At(e)}-${r}-${n}`}`;if(a=chunkTKL4UUHE_cjs.b(this,Y)?.get?.(o),a)return a;try{a=await Ct(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:i}));}catch(i){console.error(i),a=void 0;}return chunkTKL4UUHE_cjs.b(this,Y)?.set?.(o,a),a}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let s=await new we(chunkTKL4UUHE_cjs.b(this,re),chunkTKL4UUHE_cjs.b(this,ne)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(s,[n])}return coreCoingeckoSdk.simpleTokenPrice(chunkTKL4UUHE_cjs.b(this,ue),{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:s=!1,lastUpdated:o=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await new we(chunkTKL4UUHE_cjs.b(this,re),chunkTKL4UUHE_cjs.b(this,ne)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:s,include_last_updated_at:o});return this.transformSimplePriceResponse(l,r)}return coreCoingeckoSdk.simplePrice(chunkTKL4UUHE_cjs.b(this,ue),{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:s,lastUpdated:o,shouldThrow:c})}};Y=new WeakMap,re=new WeakMap,ne=new WeakMap,ue=new WeakMap;var Wn="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",jn="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",Jt=zod.object({date:zod.string(),usd:zod.record(zod.number())}),Je=async()=>{try{return await D([Wn],Jt)}catch{return await D([jn],Jt)}};var Nt=(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}),fe=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e});var Qe=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.NETWORK,value:e});var wt=({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 Xt=process.env.GLACIER_API_KEY;var _e=()=>Xt;var zn={rltoken:_e()},ae,et,tt,Qt,rt,er,Be=class extends glacierSdk.FetchHttpRequest{constructor(r){super(r);chunkTKL4UUHE_cjs.c(this,tt);chunkTKL4UUHE_cjs.c(this,rt);chunkTKL4UUHE_cjs.c(this,ae,0);chunkTKL4UUHE_cjs.c(this,et,F.exponential());}request(r){let n={...zn,...r.query||{}},a={...r,query:Object.keys(n).length>0?n:void 0},s=()=>super.request(a);return chunkTKL4UUHE_cjs.b(this,ae)>0?chunkTKL4UUHE_cjs.e(this,rt,er).call(this,s):chunkTKL4UUHE_cjs.e(this,tt,Qt).call(this,s)}};ae=new WeakMap,et=new WeakMap,tt=new WeakSet,Qt=function(r){let n=r();return new glacierSdk.CancelablePromise((a,s,o)=>{o(()=>n.cancel()),n.then(i=>{chunkTKL4UUHE_cjs.d(this,ae,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,ae,chunkTKL4UUHE_cjs.b(this,ae)+Number(c||l));}s(i);});})},rt=new WeakSet,er=function(r){let n=chunkTKL4UUHE_cjs.b(this,et).call(this,chunkTKL4UUHE_cjs.b(this,ae));return new glacierSdk.CancelablePromise((a,s,o)=>{let i=setTimeout(()=>{let c=r();o(()=>{c.cancel(),clearTimeout(i);}),c.then(a).catch(s);},n);})};var G=(t,e)=>({message:`${t}${e instanceof Error?`: ${e.message}`:""}`,data:{cause:e}});var tr={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 rr="DUMMY_API_KEY";var Jn={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Xn={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},ar=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return Jn;case vmModuleTypes.Environment.DEV:return Xn}};var nt=({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 ir=t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string";var cr=async t=>{let{secretId:e,approvalController:r}=t,n=ir(t)?nt(t).EVM:void 0,a=await r.requestPublicKey({curve:"secp256k1",secretId:e,derivationPath:n});return {[vmModuleTypes.NetworkVMType.EVM]:ethers.computeAddress(`0x${a}`)}};var U=async t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:s=2e3,customRpcHeaders:o}=t,i=aa(n),c=i;if(o){let p=new ethers.FetchRequest(i);for(let[d,u]of Object.entries(o))p.setHeader(d,u);c=p;}let l=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:a},c,new ethers.Network(r,e));return l.pollingInterval=s,l},na=["glacier-api.avax.network","proxy-api.avax.network"];function aa(t){let e=new URL(t),r=_e();if(r&&na.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}var he=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 lr=zod.z.tuple([he,he]).rest(he).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=>ca(t,"nonce")||ia(t,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'}),oa=zod.z.object({skipIntermediateTxs:zod.z.boolean().optional()}),sa=zod.z.union([lr,zod.z.object({transactions:lr,options:oa.optional()})]);function ia(t,e){return !_t(t,e)}function ca(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 pr=t=>{let e=sa.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 at=async({from:t,provider:e})=>e.getTransactionCount(t);var mr=async(t,e)=>{if(t[0].nonce)return;let r=await at({from:t[0].from,provider:e});return Promise.all(t.map(async(n,a)=>{n.nonce=String(r+a);}))};var dr=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER,vmModuleTypes.TransactionType.NFT_SEND,vmModuleTypes.TransactionType.NFT_RECEIVE],oe=(o=>(o.TOTAL_SUPPLY="totalSupply",o.BALANCE_OF="balanceOf",o.TRANSFER="transfer",o.TRANSFER_FROM="transferFrom",o.APPROVE="approve",o.ALLOWANCE="allowance",o))(oe||{});var ot=t=>{if(t.data)try{let r=new ethers.Interface(vr__default.default.abi).parseTransaction({data:t.data,value:t.value}),n=r?.name??r?.fragment?.name;return n&&ma(n)?n:void 0}catch{return}};function ma(t){return Object.values(oe).includes(t)}var st=(t,e,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:s,alert:o})=>{let{dappInfo:i}=t,c=ot(r),l="Do you approve this transaction?";c==="approve"&&(l="Do you approve this spend limit?");let p=[fe("Account",r.from),Qe("Network",{name:e.chainName,logoUri:e.logoUri}),Ze("Website",i)];r.to&&p.push(fe("Contract",r.to));let d={title:l,details:[{title:"Transaction Details",items:p}],networkFeeSelector:!0,alert:o,balanceChange:a,tokenApprovals:s,isSimulationSuccessful:n},u={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:u}};var it=async(t,e,r)=>{if("txHash"in e)return e.txHash;let n=()=>t.send("eth_sendRawTransaction",[e.signedData]);return r?.shouldRetry?te({operation:()=>n(),isSuccess:()=>!0,maxRetries:6,backoffPolicy:F.linearThenExponential(4,1e3)}):n()};function ge(t,e,r="tx"){return `${t}/${r}/${e}`}var Fe=async({explorerUrl:t,provider:e,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:s,request:o})=>{try{let i=ge(t,r);if(n({txHash:r,request:o,explorerLink:i}),(await te({operation:async()=>e.getTransactionReceipt(r),isSuccess:p=>!!p,backoffPolicy:F.linearThenExponential(15,750),maxRetries:20}))?.status===1)return a({txHash:r,explorerLink:i,request:o}),!0}catch(i){console.error(i);}return s({txHash:r,request:o}),!1};var ct=new Map,ur=(t,e,r)=>(ct.set(t,{signingRequests:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a},s)=>{let o=ct.get(t);if(!o)throw rpcErrors.rpcErrors.resourceNotFound();let{signingRequests:i}=o,l={signingRequests:i.map((p,d)=>{if(s===void 0||s===d){let{signingData:u}=p;return {signingData:{...u,data:{...u.data,maxFeePerGas:n??u.data.maxFeePerGas,maxPriorityFeePerGas:a??u.data.maxPriorityFeePerGas}},displayData:p.displayData}}return p}),displayData:r};return ct.set(t,l),l},cleanup:()=>ct.delete(t)});function se(t){return !("type"in t)}function lt(t){return t.type===vmModuleTypes.TokenType.ERC20}function fr(t){return typeof t.to=="string"}function yr(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}function ya(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}function ha(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}function Bt(t){return ya(t)?t.ins.length===0&&t.outs.length===0:ha(t)?t.approvals.length===0:!1}var hr=async({chainId:t,params:e,domain:r,withGasEstimation:n,blockaid:a})=>{let s=["validation","simulation"];return n&&s.push("gas_estimation"),a.evm.transactionBulk.scan({chain:t.toString(),options:s,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}}),Tr=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 Er=async(t,e,r)=>{if(!t.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.ethers.Contract(t.to,vr__default.default.abi,r),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),s=kr__default.default(a[0]),o=kr__default.default(a[1]),i=parseInt(a[2]),c={type:vmModuleTypes.TokenType.ERC20,name:s,chainId:e,symbol:o,decimals:i,address:t.to,contractType:"ERC-20"},l=new ethers.ethers.Interface(vr__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}};var K={[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 Pr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,blockaid:s})=>{let o;try{o=await gr({chainId:n,params:r,domain:e,blockaid:s});}catch(i){console.error("simulateTransaction error",i);}return Dt({rpcMethod:t,params:r,chainId:n,provider:a,simulationResult:o})},Dt=async({rpcMethod:t,params:e,chainId:r,provider:n,simulationResult:a})=>{let s,o,i,c=!1,l;if(a){let{validation:p,simulation:d,gas_estimation:u}=a;!p||p.result_type==="Error"||p.result_type==="Warning"?s=K[vmModuleTypes.AlertType.WARNING]:p.result_type==="Malicious"&&(s=K[vmModuleTypes.AlertType.DANGER]),d?.status==="Success"&&(c=!0,i=Sr(t,d.account_summary),o=xr(d.account_summary.assets_diffs)),u?.status==="Success"&&(l=Number(u.estimate));}if(!c&&fr(e)){let p=await Er(e,r,n);o=p.balanceChange,i=p.tokenApprovals;}return {alert:s,balanceChange:o,tokenApprovals:i,isSimulationSuccessful:c,estimatedGasLimit:l}},Pa=t=>t.trace_type==="ExposureTrace",Sa=(t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,xa=t=>t===void 0||t.length===0?{}:t.reduce((e,r)=>Pa(r)?{[Sa(r.spender,r.asset.address)]:r}:e,{}),Sr=(t,e)=>{let{traces:r}=e,n=xa(r),a=Object.entries(n).map(([o,i])=>{let c=Ir(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:u}}=i;if(!d||d<=0)return;l.value=p,l.usdPrice=`${u}`;}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}},xr=t=>{let e=Rr(t,"in"),r=Rr(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},Rr=(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?Ir(n):Ia(n);if(!a)return;let s=r[e].map(o=>{let i;if("value"in o&&o.value)if("decimals"in a){let d=coreUtilsSdk.numberToBN(o.value,a.decimals);i=coreUtilsSdk.balanceToDisplayValue(d,a.decimals);}else ethers.isHexString(o.value)&&(i=parseInt(o.value,16).toString());else "type"in a&&a.type===vmModuleTypes.TokenType.ERC721&&(i="1");if(!i)return;let c="logo_url"in o?o.logo_url:void 0,l="token_id"in o?o.token_id:void 0;return {displayValue:i,usdPrice:o.usd_price,...c!==void 0&&{logoUri:c},...l!==void 0&&{tokenId:l}}}).filter(o=>o!==void 0);return {token:a,items:s}}).filter(r=>r!==void 0),Ir=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},Ia=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),Ar=async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:a,blockaid:s})=>{let o,i,c;try{let{validation:l,simulation:p}=await Tr({chainId:n,accountAddress:r,data:a,domain:e,blockaid:s});!l||l.result_type==="Error"||l.result_type==="Warning"?o=K[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"&&(o=K[vmModuleTypes.AlertType.DANGER]),p?.status==="Success"&&(c=Sr(t.method,p.account_summary),i=xr(p.account_summary.assets_diffs));}catch(l){console.error("processJsonRpcSimulation error",l),o=K[vmModuleTypes.AlertType.WARNING];}return {alert:o,balanceChange:i,tokenApprovals:c}};var Nr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,populateMissingGas:s,blockaid:o})=>{let i;try{i=await hr({chainId:n,params:r,domain:e,withGasEstimation:s,blockaid:o});}catch(f){return console.error("simulateTransactionBatch error",f),{isSimulationSuccessful:!1,alert:K[vmModuleTypes.AlertType.WARNING],scans:[]}}let c=await Promise.all(i.map(async(f,y)=>{let v=r[y],P=await Dt({chainId:n,params:r[y],provider:a,rpcMethod:t,simulationResult:f});return s&&!v.gas&&P.estimatedGasLimit&&(v.gas=`0x${P.estimatedGasLimit.toString(16)}`),{transaction:v,...P}})),l=c.every(f=>f.isSimulationSuccessful),p=Aa(c),d=Na(c),u=Ca(c);return {isSimulationSuccessful:l,alert:p,balanceChange:d,tokenApprovals:u,scans:c.map(f=>(f.tokenApprovals&&(f.tokenApprovals.isEditable=!1),f))}},Aa=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)},Ca=t=>{let e=t.reduce((r,{tokenApprovals:n})=>(n&&n.approvals.forEach(a=>{let s=r.approvals.find(o=>a.token.address===o.token.address&&a.spenderAddress===o.spenderAddress);if(!s){r.approvals.push({...a});return}s.value=a.value,s.usdPrice=a.usdPrice;}),r),{approvals:[],isEditable:!1});return wa(e,t),Bt(e)?void 0:e},Na=t=>{let e=t.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(a=>{let s=Cr(r.ins,a);s?s.items.push(...a.items):r.ins.push(a);}),n.outs.forEach(a=>{let s=Cr(r.outs,a);s?s.items.push(...a.items):r.outs.push({...a});})),r),{ins:[],outs:[]});return Bt(e)?void 0:e},Cr=(t,e)=>t.find(r=>se(r.token)&&se(e.token)?r.token.symbol===e.token.symbol:!se(r.token)&&!se(e.token)?r.token.address===e.token.address:!1),wa=(t,e)=>{for(let r of t.approvals)for(let n of e)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(s=>!se(s.token)&&!se(r.token)&&s.token.address===r.token.address)))if(!n.tokenApprovals)t.approvals=t.approvals.filter(s=>s.spenderAddress!==r.spenderAddress&&r.token.address!==s.token.address);else {let s=n.tokenApprovals.approvals.find(o=>o.spenderAddress===r.spenderAddress&&o.token.address===r.token.address);if(!s)continue;r.usdPrice=s.usdPrice,r.value=s.value;}};var wr=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:s,success:o,error:i}=pr(a);if(!o)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams(G("Transaction params are invalid",i))};let{transactions:c,options:l={}}=s,{skipIntermediateTxs:p=!1}=l,d=await U({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders});try{await mr(c,d);}catch(w){return console.error("Unable to calculate nonce",w),{error:rpcErrors.rpcErrors.internal(G("Unable to calculate nonce",w))}}let u=c.every(w=>Number(w.gas)>0),{alert:f,balanceChange:y,isSimulationSuccessful:v,tokenApprovals:P,scans:E}=await Nr({rpcMethod:t.method,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:d,populateMissingGas:!u,blockaid:n});if(!E.every(({transaction:w})=>Number(w.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 I={title:"Do you approve these transactions?",details:[{title:"Transaction Details",items:[fe("Account",c[0].from),Qe("Network",{name:e.chainName,logoUri:e.logoUri}),Ze("Website",t.dappInfo)]}],isSimulationSuccessful:v,balanceChange:y,alert:f,tokenApprovals:P,networkFeeSelector:!0},T=E.map(w=>st(t,e,w.transaction,w)),{cleanup:b,updateTx:L}=ur(t.requestId,T,I),W=await r.requestBatchApproval({request:t,signingRequests:T,displayData:I,updateTx:L});if(b(),"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 Ne=[];for(let[w,Dn]of W.result.entries()){let Yt=w===W.result.length-1,It=await it(d,Dn);if(Yt&&Fe({explorerUrl:e.explorerUrl??"",provider:d,txHash:It,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),!Yt&&!p&&!await Fe({explorerUrl:e.explorerUrl??"",provider:d,txHash:It,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}))return {error:rpcErrors.rpcErrors.internal({message:`Transaction ${w+1} failed! Batch execution stopped`})};Ne.push(It);}return {result:Ne}};function _r(t,e,r){return new ethers.ethers.Contract(t,vr__default.default.abi).interface.encodeFunctionData("approve",[e,r])}var dt=new Map,Br=(t,e,r)=>(dt.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a,approvalLimit:s,gasLimit:o})=>{let i=dt.get(t);if(!i)throw rpcErrors.rpcErrors.resourceNotFound();let{signingData:c,displayData:l}=i,p={...c,data:{...c.data,gasLimit:o??c.data.gasLimit,maxFeePerGas:n??c.data.maxFeePerGas,maxPriorityFeePerGas:a??c.data.maxPriorityFeePerGas}},d={...l};if(typeof s=="string"){if(!s.startsWith("0x"))throw rpcErrors.rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let f=l.tokenApprovals;Da(f),Ua(c.data.data);let y=f.approvals[0];p.data.data=_r(y.token.address,y.spenderAddress,s),d.tokenApprovals={approvals:[{...y,value:s}],isEditable:!0};}let u={signingData:p,displayData:d};return dt.set(t,u),u},cleanup:()=>dt.delete(t)});function Da(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 Ua(t){if((!t||t==="0x"?null:ot({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}var Dr=async({transactionParams:{from:t,to:e,data:r,value:n,accessList:a},provider:s})=>{let o=await s.getTransactionCount(t);return Number(await s.estimateGas({from:t,to:e,nonce:o,data:r,value:n,accessList:a}))};var Ga=zod.z.tuple([he]),Ur=t=>Ga.safeParse(t);var Fr=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:s,error:o,success:i}=Ur(a);if(!i)return console.error("invalid params",o),{error:rpcErrors.rpcErrors.invalidParams(G("Transaction params are invalid",o))};let[c]=s,l=await U({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders});if(!c.gas||Number(c.gas)<0)try{let g=await Dr({transactionParams:{from:c.from,to:c.to,data:c.data,value:c.value,accessList:c.accessList},provider:l});c.gas="0x"+g.toString(16);}catch(g){return {error:rpcErrors.rpcErrors.internal(G("Unable to calculate gas limit",g))}}if(!c.nonce)try{let g=await at({from:c.from,provider:l});c.nonce=String(g);}catch(g){return {error:rpcErrors.rpcErrors.internal(G("Unable to calculate nonce",g))}}let p=await Pr({rpcMethod:t.method,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:l,blockaid:n}),{displayData:d,signingData:u}=st(t,e,c,p),{updateTx:f,cleanup:y}=Br(t.requestId,u,d),v=await r.requestApproval({request:t,displayData:d,signingData:u,updateTx:f});if(y(),"error"in v)return {error:v.error};let P,E=t.context?.shouldRetry===!0;try{P=await it(l,v,{shouldRetry:E});}catch(g){return {error:rpcErrors.rpcErrors.internal(G("Unable to get transaction hash",g))}}return Fe({explorerUrl:e.explorerUrl??"",provider:l,txHash:P,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),{result:P}};var Ut=t=>{let e="";e+=`Domain
26
- `;for(let r in t.domain)e+=` ${r}: ${ie(String(t.domain[r]))}
25
+ function sr(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}chunkVYIKXRYZ_cjs.a(sr,"charsum");function Nt(t){let e,r=0;for(e=0;e<t.length;e++){let n=sr(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}chunkVYIKXRYZ_cjs.a(Nt,"arrayHash");var re=chunkVYIKXRYZ_cjs.a(async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=G.exponential()})=>{let a=0,s=0,o;for(;s<r;){s>0&&await Yn(a);try{let l=await t(s);if(e(l))return l}catch(l){o=l;}a=n(s),s++;}let c=o?`Max retry exceeded. ${o}`:"Max retry exceeded.";throw new Error(c)},"retry"),Ct=class Ct{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,s=e*r,o=2*r*(Math.pow(2,a)-1);return s+o}}};chunkVYIKXRYZ_cjs.a(Ct,"RetryBackoffPolicy");var G=Ct;function Yn(t){return new Promise(e=>setTimeout(e,t))}chunkVYIKXRYZ_cjs.a(Yn,"delay");var wt=chunkVYIKXRYZ_cjs.a(t=>re({operation:e=>t(e>0),maxRetries:2,backoffPolicy:G.constant(1),isSuccess:e=>e?.status?.error_code!==429}),"coingeckoRetry");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)}chunkVYIKXRYZ_cjs.a(U,"fetchAndVerify");var _t=class _t{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)}};chunkVYIKXRYZ_cjs.a(_t,"CoingeckoProxyClient");var _e=_t;var zn=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())})),Bt=class Bt{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"}}],zn)}};chunkVYIKXRYZ_cjs.a(Bt,"WatchlistProxyClient");var Je=Bt;var z,ne,ae,fe,Dt=class Dt{constructor({storage:e,proxyApiUrl:r,fetch:n}){chunkVYIKXRYZ_cjs.d(this,z,void 0);chunkVYIKXRYZ_cjs.d(this,ne,void 0);chunkVYIKXRYZ_cjs.d(this,ae,void 0);chunkVYIKXRYZ_cjs.d(this,fe,void 0);chunkVYIKXRYZ_cjs.b(this,"transformSimplePriceResponse",chunkVYIKXRYZ_cjs.a((e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(a=>{let s=e[a];n[a]={},r.forEach(o=>{n[a]={[o]:{price:s?.[o],change24:s?.[`${o}_24h_change`],vol24:s?.[`${o}_24h_vol`],marketCap:s?.[`${o}_market_cap`]}};});}),n},"transformSimplePriceResponse"));chunkVYIKXRYZ_cjs.e(this,z,e),chunkVYIKXRYZ_cjs.e(this,ne,r),chunkVYIKXRYZ_cjs.e(this,ae,n??globalThis.fetch),chunkVYIKXRYZ_cjs.e(this,fe,coreCoingeckoSdk.getBasicCoingeckoHttp(void 0,chunkVYIKXRYZ_cjs.c(this,ae)));}async getWatchlistDataForToken({tokenDetails:e,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new Je(chunkVYIKXRYZ_cjs.c(this,ne)).watchlistToken({tokens:e.symbol,currency:r})).filter(s=>e.isNative?s.internalId===`NATIVE-${e.symbol.toLowerCase()}`:s.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,s=`getSimplePrice-${e?`${Nt(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkVYIKXRYZ_cjs.c(this,z)?.get?.(s),n)return n;try{n=await wt(o=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:o}));}catch{n=void 0;}return chunkVYIKXRYZ_cjs.c(this,z)?.set?.(s,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,o=`getPricesWithMarketDataByAddresses-${`${Nt(e)}-${r}-${n}`}`;if(a=chunkVYIKXRYZ_cjs.c(this,z)?.get?.(o),a)return a;try{a=await wt(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),a=void 0;}return chunkVYIKXRYZ_cjs.c(this,z)?.set?.(o,a),a}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let s=await new _e(chunkVYIKXRYZ_cjs.c(this,ne),chunkVYIKXRYZ_cjs.c(this,ae)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(s,[n])}return coreCoingeckoSdk.simpleTokenPrice(chunkVYIKXRYZ_cjs.c(this,fe),{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:s=!1,lastUpdated:o=!1,useCoingeckoProxy:c=!1,shouldThrow:l=!0}){if(c){let p=await new _e(chunkVYIKXRYZ_cjs.c(this,ne),chunkVYIKXRYZ_cjs.c(this,ae)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:s,include_last_updated_at:o});return this.transformSimplePriceResponse(p,r)}return coreCoingeckoSdk.simplePrice(chunkVYIKXRYZ_cjs.c(this,fe),{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:s,lastUpdated:o,shouldThrow:l})}};z=new WeakMap,ne=new WeakMap,ae=new WeakMap,fe=new WeakMap,chunkVYIKXRYZ_cjs.a(Dt,"TokenService");var K=Dt;var ra="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",na="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",cr=zod.object({date:zod.string(),usd:zod.record(zod.number())}),Xe=chunkVYIKXRYZ_cjs.a(async()=>{try{return await U([ra],cr)}catch{return await U([na],cr)}},"getExchangeRates");var Ut=chunkVYIKXRYZ_cjs.a((t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),"textItem"),Qe=chunkVYIKXRYZ_cjs.a((t,e)=>({label:t,value:e,type:vmModuleTypes.DetailItemType.LINK}),"linkItem"),ye=chunkVYIKXRYZ_cjs.a((t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e}),"addressItem");var et=chunkVYIKXRYZ_cjs.a((t,e)=>({label:t,type:vmModuleTypes.DetailItemType.NETWORK,value:e}),"networkItem");var Ft=chunkVYIKXRYZ_cjs.a(({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}},"getCoreHeaders");var lr=process.env.GLACIER_API_KEY;var Be=chunkVYIKXRYZ_cjs.a(()=>lr,"getGlacierApiKey");var sa={rltoken:Be()},oe,tt,rt,mr,nt,dr,Gt=class Gt extends glacierSdk.FetchHttpRequest{constructor(r){super(r);chunkVYIKXRYZ_cjs.d(this,rt);chunkVYIKXRYZ_cjs.d(this,nt);chunkVYIKXRYZ_cjs.d(this,oe,0);chunkVYIKXRYZ_cjs.d(this,tt,G.exponential());}request(r){let n={...sa,...r.query||{}},a={...r,query:Object.keys(n).length>0?n:void 0},s=chunkVYIKXRYZ_cjs.a(()=>super.request(a),"getRequest");return chunkVYIKXRYZ_cjs.c(this,oe)>0?chunkVYIKXRYZ_cjs.f(this,nt,dr).call(this,s):chunkVYIKXRYZ_cjs.f(this,rt,mr).call(this,s)}};oe=new WeakMap,tt=new WeakMap,rt=new WeakSet,mr=chunkVYIKXRYZ_cjs.a(function(r){let n=r();return new glacierSdk.CancelablePromise((a,s,o)=>{o(()=>n.cancel()),n.then(c=>{chunkVYIKXRYZ_cjs.e(this,oe,0),a(c);}).catch(c=>{if(c instanceof glacierSdk.ApiError){let l=c.status===429,p=c.status>=500&&c.status<600;chunkVYIKXRYZ_cjs.e(this,oe,chunkVYIKXRYZ_cjs.c(this,oe)+Number(l||p));}s(c);});})},"#request"),nt=new WeakSet,dr=chunkVYIKXRYZ_cjs.a(function(r){let n=chunkVYIKXRYZ_cjs.c(this,tt).call(this,chunkVYIKXRYZ_cjs.c(this,oe));return new glacierSdk.CancelablePromise((a,s,o)=>{let c=setTimeout(()=>{let l=r();o(()=>{l.cancel(),clearTimeout(c);}),l.then(a).catch(s);},n);})},"#postponeRequest"),chunkVYIKXRYZ_cjs.a(Gt,"GlacierFetchHttpRequest");var De=Gt;var L=chunkVYIKXRYZ_cjs.a((t,e)=>({message:`${t}${e instanceof Error?`: ${e.message}`:""}`,data:{cause:e}}),"rpcErrorOpts");var ur={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 fr="DUMMY_API_KEY";var ca={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},la={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},hr=chunkVYIKXRYZ_cjs.a(t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return ca;case vmModuleTypes.Environment.DEV:return la}},"getEnv");var at=chunkVYIKXRYZ_cjs.a(({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}`)}},"buildDerivationPath");var kr=chunkVYIKXRYZ_cjs.a(t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string","hasDerivationDetails");var br=chunkVYIKXRYZ_cjs.a(async t=>{let{secretId:e,approvalController:r}=t,n=kr(t)?at(t).EVM:void 0,a=await r.requestPublicKey({curve:"secp256k1",secretId:e,derivationPath:n});return {[vmModuleTypes.NetworkVMType.EVM]:ethers.computeAddress(`0x${a}`)}},"deriveAddress");var F=chunkVYIKXRYZ_cjs.a(async t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:s=2e3,customRpcHeaders:o}=t,c=ha(n),l=c;if(o){let m=new ethers.FetchRequest(c);for(let[u,f]of Object.entries(o))m.setHeader(u,f);l=m;}let p=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:a},l,new ethers.Network(r,e));return p.pollingInterval=s,p},"getProvider"),ya=["glacier-api.avax.network","proxy-api.avax.network"];function ha(t){let e=new URL(t),r=Be();if(r&&ya.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}chunkVYIKXRYZ_cjs.a(ha,"addGlacierAPIKeyIfNeeded");var ge=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 vr=zod.z.tuple([ge,ge]).rest(ge).refine(t=>Lt(t,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(t=>Lt(t,"from"),{message:'All transactions must use the same "from" address'}).refine(t=>ba(t,"nonce")||ka(t,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'}),ga=zod.z.object({skipIntermediateTxs:zod.z.boolean().optional()}),Ta=zod.z.union([vr,zod.z.object({transactions:vr,options:ga.optional()})]);function ka(t,e){return !Lt(t,e)}chunkVYIKXRYZ_cjs.a(ka,"areAllDifferentByProp");function ba(t,e){return t.every(r=>r[e]===void 0||r[e]==="")}chunkVYIKXRYZ_cjs.a(ba,"areAllEmptyByProp");function Lt(t,e){return new Set(t.map(n=>n[e])).size===1}chunkVYIKXRYZ_cjs.a(Lt,"areAllEqualByProp");var Er=chunkVYIKXRYZ_cjs.a(t=>{let e=Ta.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},"parseRequestParams");var ot=chunkVYIKXRYZ_cjs.a(async({from:t,provider:e})=>e.getTransactionCount(t),"getNonce");var Rr=chunkVYIKXRYZ_cjs.a(async(t,e)=>{if(t[0].nonce)return;let r=await ot({from:t[0].from,provider:e});return Promise.all(t.map(async(n,a)=>{n.nonce=String(r+a);}))},"ensureProperNonces");var Pr=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER,vmModuleTypes.TransactionType.NFT_SEND,vmModuleTypes.TransactionType.NFT_RECEIVE],se=(o=>(o.TOTAL_SUPPLY="totalSupply",o.BALANCE_OF="balanceOf",o.TRANSFER="transfer",o.TRANSFER_FROM="transferFrom",o.APPROVE="approve",o.ALLOWANCE="allowance",o))(se||{});var st=chunkVYIKXRYZ_cjs.a(t=>{if(t.data)try{let r=new ethers.Interface(Br__default.default.abi).parseTransaction({data:t.data,value:t.value}),n=r?.name??r?.fragment?.name;return n&&Ra(n)?n:void 0}catch{return}},"parseERC20TransactionType");function Ra(t){return Object.values(se).includes(t)}chunkVYIKXRYZ_cjs.a(Ra,"isERC20TransactionType");var it=chunkVYIKXRYZ_cjs.a((t,e,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:s,alert:o})=>{let{dappInfo:c}=t,l=st(r),p="Do you approve this transaction?";l==="approve"&&(p="Do you approve this spend limit?");let m=[ye("Account",r.from),et("Network",{name:e.chainName,logoUri:e.logoUri}),Qe("Website",c)];r.to&&m.push(ye("Contract",r.to));let u={title:p,details:[{title:"Transaction Details",items:m}],networkFeeSelector:!0,alert:o,balanceChange:a,tokenApprovals:s,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}},"buildTxApprovalRequest");var ct=chunkVYIKXRYZ_cjs.a(async(t,e,r)=>{if("txHash"in e)return e.txHash;let n=chunkVYIKXRYZ_cjs.a(()=>t.send("eth_sendRawTransaction",[e.signedData]),"broadcast");return r?.shouldRetry?re({operation:()=>n(),isSuccess:()=>!0,maxRetries:6,backoffPolicy:G.linearThenExponential(4,1e3)}):n()},"getTxHash");function Te(t,e,r="tx"){return `${t}/${r}/${e}`}chunkVYIKXRYZ_cjs.a(Te,"getExplorerAddressByNetwork");var Ge=chunkVYIKXRYZ_cjs.a(async({explorerUrl:t,provider:e,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:s,request:o})=>{try{let c=Te(t,r);if(n({txHash:r,request:o,explorerLink:c}),(await re({operation:async()=>e.getTransactionReceipt(r),isSuccess:m=>!!m,backoffPolicy:G.linearThenExponential(15,750),maxRetries:20}))?.status===1)return a({txHash:r,explorerLink:c,request:o}),!0}catch(c){console.error(c);}return s({txHash:r,request:o}),!1},"waitForTransactionReceipt");var lt=new Map,Sr=chunkVYIKXRYZ_cjs.a((t,e,r)=>(lt.set(t,{signingRequests:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a},s)=>{let o=lt.get(t);if(!o)throw rpcErrors.rpcErrors.resourceNotFound();let{signingRequests:c}=o,p={signingRequests:c.map((m,u)=>{if(s===void 0||s===u){let{signingData:f}=m;return {signingData:{...f,data:{...f.data,maxFeePerGas:n??f.data.maxFeePerGas,maxPriorityFeePerGas:a??f.data.maxPriorityFeePerGas}},displayData:m.displayData}}return m}),displayData:r};return lt.set(t,p),p},cleanup:()=>lt.delete(t)}),"getTxBatchUpdater");function ie(t){return !("type"in t)}chunkVYIKXRYZ_cjs.a(ie,"isNetworkToken");function pt(t){return t.type===vmModuleTypes.TokenType.ERC20}chunkVYIKXRYZ_cjs.a(pt,"isERC20Token");function xr(t){return typeof t.to=="string"}chunkVYIKXRYZ_cjs.a(xr,"hasToField");function Ir(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}chunkVYIKXRYZ_cjs.a(Ir,"supportsBatchApprovals");function Ia(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}chunkVYIKXRYZ_cjs.a(Ia,"isBalanceChange");function Aa(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}chunkVYIKXRYZ_cjs.a(Aa,"isTokenApprovals");function Mt(t){return Ia(t)?t.ins.length===0&&t.outs.length===0:Aa(t)?t.approvals.length===0:!1}chunkVYIKXRYZ_cjs.a(Mt,"isEmpty");var Ar=chunkVYIKXRYZ_cjs.a(async({chainId:t,params:e,domain:r,withGasEstimation:n,blockaid:a})=>{let s=["validation","simulation"];return n&&s.push("gas_estimation"),a.evm.transactionBulk.scan({chain:t.toString(),options:s,data:e,metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}})},"scanTransactionBatch"),Nr=chunkVYIKXRYZ_cjs.a(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}}),"scanTransaction"),Cr=chunkVYIKXRYZ_cjs.a(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}}),"scanJsonRpc");var Dr=chunkVYIKXRYZ_cjs.a(async(t,e,r)=>{if(!t.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.ethers.Contract(t.to,Br__default.default.abi,r),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),s=wr__default.default(a[0]),o=wr__default.default(a[1]),c=parseInt(a[2]),l={type:vmModuleTypes.TokenType.ERC20,name:s,chainId:e,symbol:o,decimals:c,address:t.to,contractType:"ERC-20"},p=new ethers.ethers.Interface(Br__default.default.abi),m=p.getFunction(t.data.slice(0,10)),u=p.decodeFunctionData(t.data.slice(0,10),t.data);if(m?.name==="transfer")return {balanceChange:{outs:[{items:[{displayValue:new coreUtilsSdk.TokenUnit(u.amount,l.decimals,l.symbol).toDisplay(),usdPrice:void 0}],token:l}],ins:[]}};if(m?.name==="approve")return {tokenApprovals:{isEditable:!0,approvals:[{token:l,spenderAddress:u.spender,value:u.amount}]}}}catch(n){console.error("parseErc20Tx error",n);}return {tokenApprovals:void 0,balanceChange:void 0}},"parseWithErc20Abi");var J={[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 Fr=chunkVYIKXRYZ_cjs.a(async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,blockaid:s})=>{let o;try{o=await Nr({chainId:n,params:r,domain:e,blockaid:s});}catch(c){console.error("simulateTransaction error",c);}return Vt({rpcMethod:t,params:r,chainId:n,provider:a,simulationResult:o})},"simulateTransaction"),Vt=chunkVYIKXRYZ_cjs.a(async({rpcMethod:t,params:e,chainId:r,provider:n,simulationResult:a})=>{let s,o,c,l=!1,p;if(a){let{validation:m,simulation:u,gas_estimation:f}=a;!m||m.result_type==="Error"||m.result_type==="Warning"?s=J[vmModuleTypes.AlertType.WARNING]:m.result_type==="Malicious"&&(s=J[vmModuleTypes.AlertType.DANGER]),u?.status==="Success"&&(l=!0,c=Gr(t,u.account_summary),o=Lr(u.account_summary.assets_diffs)),f?.status==="Success"&&(p=Number(f.estimate));}if(!l&&xr(e)){let m=await Dr(e,r,n);o=m.balanceChange,c=m.tokenApprovals;}return {alert:s,balanceChange:o,tokenApprovals:c,isSimulationSuccessful:l,estimatedGasLimit:p}},"processTransactionSimulation"),Fa=chunkVYIKXRYZ_cjs.a(t=>t.trace_type==="ExposureTrace","isExposureTrace"),Ga=chunkVYIKXRYZ_cjs.a((t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,"normalizeAddresses"),La=chunkVYIKXRYZ_cjs.a(t=>t===void 0||t.length===0?{}:t.reduce((e,r)=>Fa(r)?{[Ga(r.spender,r.asset.address)]:r}:e,{}),"mapExposureTracesToSpenderAsset"),Gr=chunkVYIKXRYZ_cjs.a((t,e)=>{let{traces:r}=e,n=La(r),a=Object.entries(n).map(([o,c])=>{let l=Mr(c.asset);if(!l)return;let p={token:l,spenderAddress:c.spender,logoUri:l.logoUri};if(c.type==="ERC20ExposureTrace"){let{exposed:{raw_value:m,value:u,usd_price:f}}=c;if(!u||u<=0)return;p.value=m,p.usdPrice=`${f}`;}if(c.type==="ERC721ExposureTrace")if(!c.exposed)p.value=`0x${ethers.MaxUint256.toString(16)}`;else {let{usd_price:m,amount:u}=c.exposed;p.value=`${u}`,p.usdPrice=`${m}`;}return p}).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}},"processTokenApprovals"),Lr=chunkVYIKXRYZ_cjs.a(t=>{let e=Ur(t,"in"),r=Ur(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},"processBalanceChange"),Ur=chunkVYIKXRYZ_cjs.a((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?Mr(n):Ma(n);if(!a)return;let s=r[e].map(o=>{let c;if("value"in o&&o.value)if("decimals"in a){let u=coreUtilsSdk.numberToBN(o.value,a.decimals);c=coreUtilsSdk.balanceToDisplayValue(u,a.decimals);}else ethers.isHexString(o.value)&&(c=parseInt(o.value,16).toString());else "type"in a&&a.type===vmModuleTypes.TokenType.ERC721&&(c="1");if(!c)return;let l="logo_url"in o?o.logo_url:void 0,p="token_id"in o?o.token_id:void 0;return {displayValue:c,usdPrice:o.usd_price,...l!==void 0&&{logoUri:l},...p!==void 0&&{tokenId:p}}}).filter(o=>o!==void 0);return {token:a,items:s}}).filter(r=>r!==void 0),"processAssetDiffs"),Mr=chunkVYIKXRYZ_cjs.a(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},"convertAssetToNetworkContractToken"),Ma=chunkVYIKXRYZ_cjs.a(t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),"convertNativeAssetToToken"),Vr=chunkVYIKXRYZ_cjs.a(async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:a,blockaid:s})=>{let o,c,l;try{let{validation:p,simulation:m}=await Cr({chainId:n,accountAddress:r,data:a,domain:e,blockaid:s});!p||p.result_type==="Error"||p.result_type==="Warning"?o=J[vmModuleTypes.AlertType.WARNING]:p.result_type==="Malicious"&&(o=J[vmModuleTypes.AlertType.DANGER]),m?.status==="Success"&&(l=Gr(t.method,m.account_summary),c=Lr(m.account_summary.assets_diffs));}catch(p){console.error("processJsonRpcSimulation error",p),o=J[vmModuleTypes.AlertType.WARNING];}return {alert:o,balanceChange:c,tokenApprovals:l}},"processJsonRpcSimulation");var Hr=chunkVYIKXRYZ_cjs.a(async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,populateMissingGas:s,blockaid:o})=>{let c;try{c=await Ar({chainId:n,params:r,domain:e,withGasEstimation:s,blockaid:o});}catch(y){return console.error("simulateTransactionBatch error",y),{isSimulationSuccessful:!1,alert:J[vmModuleTypes.AlertType.WARNING],scans:[]}}let l=await Promise.all(c.map(async(y,h)=>{let E=r[h],S=await Vt({chainId:n,params:r[h],provider:a,rpcMethod:t,simulationResult:y});return s&&!E.gas&&S.estimatedGasLimit&&(E.gas=`0x${S.estimatedGasLimit.toString(16)}`),{transaction:E,...S}})),p=l.every(y=>y.isSimulationSuccessful),m=Va(l),u=Ha(l),f=Oa(l);return {isSimulationSuccessful:p,alert:m,balanceChange:u,tokenApprovals:f,scans:l.map(y=>(y.tokenApprovals&&(y.tokenApprovals.isEditable=!1),y))}},"simulateTransactionBatch"),Va=chunkVYIKXRYZ_cjs.a(t=>{let e={[vmModuleTypes.AlertType.INFO]:0,[vmModuleTypes.AlertType.WARNING]:1,[vmModuleTypes.AlertType.DANGER]:2};return t.reduce((r,{alert:n})=>n&&(!r||e[n.type]>e[r.type])?n:r,void 0)},"getHighestAlert"),Oa=chunkVYIKXRYZ_cjs.a(t=>{let e=t.reduce((r,{tokenApprovals:n})=>(n&&n.approvals.forEach(a=>{let s=r.approvals.find(o=>a.token.address===o.token.address&&a.spenderAddress===o.spenderAddress);if(!s){r.approvals.push({...a});return}s.value=a.value,s.usdPrice=a.usdPrice;}),r),{approvals:[],isEditable:!1});return $a(e,t),Mt(e)?void 0:e},"aggregateTokenApprovals"),Ha=chunkVYIKXRYZ_cjs.a(t=>{let e=t.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(a=>{let s=Or(r.ins,a);s?s.items.push(...a.items):r.ins.push(a);}),n.outs.forEach(a=>{let s=Or(r.outs,a);s?s.items.push(...a.items):r.outs.push({...a});})),r),{ins:[],outs:[]});return Mt(e)?void 0:e},"aggregateBalanceChange"),Or=chunkVYIKXRYZ_cjs.a((t,e)=>t.find(r=>ie(r.token)&&ie(e.token)?r.token.symbol===e.token.symbol:!ie(r.token)&&!ie(e.token)?r.token.address===e.token.address:!1),"findTokenDiff"),$a=chunkVYIKXRYZ_cjs.a((t,e)=>{for(let r of t.approvals)for(let n of e)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(s=>!ie(s.token)&&!ie(r.token)&&s.token.address===r.token.address)))if(!n.tokenApprovals)t.approvals=t.approvals.filter(s=>s.spenderAddress!==r.spenderAddress&&r.token.address!==s.token.address);else {let s=n.tokenApprovals.approvals.find(o=>o.spenderAddress===r.spenderAddress&&o.token.address===r.token.address);if(!s)continue;r.usdPrice=s.usdPrice,r.value=s.value;}},"clearSpentApprovals");var $r=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:s,success:o,error:c}=Er(a);if(!o)return console.error("invalid params",c),{error:rpcErrors.rpcErrors.invalidParams(L("Transaction params are invalid",c))};let{transactions:l,options:p={}}=s,{skipIntermediateTxs:m=!1}=p,u=await F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders});try{await Rr(l,u);}catch(_){return console.error("Unable to calculate nonce",_),{error:rpcErrors.rpcErrors.internal(L("Unable to calculate nonce",_))}}let f=l.every(_=>Number(_.gas)>0),{alert:y,balanceChange:h,isSimulationSuccessful:E,tokenApprovals:S,scans:R}=await Hr({rpcMethod:t.method,chainId:e.chainId,params:l,dAppUrl:t.dappInfo.url,provider:u,populateMissingGas:!f,blockaid:n});if(!R.every(({transaction:_})=>Number(_.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 A={title:"Do you approve these transactions?",details:[{title:"Transaction Details",items:[ye("Account",l[0].from),et("Network",{name:e.chainName,logoUri:e.logoUri}),Qe("Website",t.dappInfo)]}],isSimulationSuccessful:E,balanceChange:h,alert:y,tokenApprovals:S,networkFeeSelector:!0},k=R.map(_=>it(t,e,_.transaction,_)),{cleanup:v,updateTx:M}=Sr(t.requestId,k,A),j=await r.requestBatchApproval({request:t,signingRequests:k,displayData:A,updateTx:M});if(v(),"error"in j)return {error:j.error};if(j.result.length!==l.length)return {error:rpcErrors.rpcErrors.internal({message:`Invalid number of signatures. Expected ${l.length}, got ${j.result.length}`})};let we=[];for(let[_,qn]of j.result.entries()){let or=_===j.result.length-1,At=await ct(u,qn);if(or&&Ge({explorerUrl:e.explorerUrl??"",provider:u,txHash:At,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),!or&&!m&&!await Ge({explorerUrl:e.explorerUrl??"",provider:u,txHash:At,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}))return {error:rpcErrors.rpcErrors.internal({message:`Transaction ${_+1} failed! Batch execution stopped`})};we.push(At);}return {result:we}},"ethSendTransactionBatch");function Wr(t,e,r){return new ethers.ethers.Contract(t,Br__default.default.abi).interface.encodeFunctionData("approve",[e,r])}chunkVYIKXRYZ_cjs.a(Wr,"encodeApprovalLimit");var ut=new Map,jr=chunkVYIKXRYZ_cjs.a((t,e,r)=>(ut.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a,approvalLimit:s,gasLimit:o})=>{let c=ut.get(t);if(!c)throw rpcErrors.rpcErrors.resourceNotFound();let{signingData:l,displayData:p}=c,m={...l,data:{...l.data,gasLimit:o??l.data.gasLimit,maxFeePerGas:n??l.data.maxFeePerGas,maxPriorityFeePerGas:a??l.data.maxPriorityFeePerGas}},u={...p};if(typeof s=="string"){if(!s.startsWith("0x"))throw rpcErrors.rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let y=p.tokenApprovals;qa(y),Ya(l.data.data);let h=y.approvals[0];m.data.data=Wr(h.token.address,h.spenderAddress,s),u.tokenApprovals={approvals:[{...h,value:s}],isEditable:!0};}let f={signingData:m,displayData:u};return ut.set(t,f),f},cleanup:()=>ut.delete(t)}),"getTxUpdater");function qa(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.")}chunkVYIKXRYZ_cjs.a(qa,"ensureTokenApprovalCanBeEdited");function Ya(t){if((!t||t==="0x"?null:st({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}chunkVYIKXRYZ_cjs.a(Ya,"ensureApproveWasCalled");var qr=chunkVYIKXRYZ_cjs.a(async({transactionParams:{from:t,to:e,data:r,value:n,accessList:a},provider:s})=>{let o=await s.getTransactionCount(t);return Number(await s.estimateGas({from:t,to:e,nonce:o,data:r,value:n,accessList:a}))},"estimateGasLimit");var Ka=zod.z.tuple([ge]),Yr=chunkVYIKXRYZ_cjs.a(t=>Ka.safeParse(t),"parseRequestParams");var zr=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:s,error:o,success:c}=Yr(a);if(!c)return console.error("invalid params",o),{error:rpcErrors.rpcErrors.invalidParams(L("Transaction params are invalid",o))};let[l]=s,p=await F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders});if(!l.gas||Number(l.gas)<0)try{let T=await qr({transactionParams:{from:l.from,to:l.to,data:l.data,value:l.value,accessList:l.accessList},provider:p});l.gas="0x"+T.toString(16);}catch(T){return {error:rpcErrors.rpcErrors.internal(L("Unable to calculate gas limit",T))}}if(!l.nonce)try{let T=await ot({from:l.from,provider:p});l.nonce=String(T);}catch(T){return {error:rpcErrors.rpcErrors.internal(L("Unable to calculate nonce",T))}}let m=await Fr({rpcMethod:t.method,chainId:e.chainId,params:l,dAppUrl:t.dappInfo.url,provider:p,blockaid:n}),{displayData:u,signingData:f}=it(t,e,l,m),{updateTx:y,cleanup:h}=jr(t.requestId,f,u),E=await r.requestApproval({request:t,displayData:u,signingData:f,updateTx:y});if(h(),"error"in E)return {error:E.error};let S,R=t.context?.shouldRetry===!0;try{S=await ct(p,E,{shouldRetry:R});}catch(T){return {error:rpcErrors.rpcErrors.internal(L("Unable to get transaction hash",T))}}return Ge({explorerUrl:e.explorerUrl??"",provider:p,txHash:S,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),{result:S}},"ethSendTransaction");var Ot=chunkVYIKXRYZ_cjs.a(t=>{let e="";e+=`Domain
26
+ `;for(let r in t.domain)e+=` ${r}: ${ce(String(t.domain[r]))}
27
27
  `;e+=`
28
28
  Message
29
29
  `;for(let r in t.message)if(typeof t.message[r]=="object"&&!Array.isArray(t.message[r])){e+=` ${r}:
30
30
  `;for(let n in t.message[r])Array.isArray(t.message[r][n])?(e+=` ${n}:
31
- `,t.message[r][n].forEach((a,s)=>{e+=` ${s}: ${ie(a)}
32
- `;})):e+=` ${n}: ${ie(String(t.message[r][n]))}
31
+ `,t.message[r][n].forEach((a,s)=>{e+=` ${s}: ${ce(a)}
32
+ `;})):e+=` ${n}: ${ce(String(t.message[r][n]))}
33
33
  `;}else Array.isArray(t.message[r])?(e+=` ${r}:
34
34
  `,t.message[r].forEach((n,a)=>{e+=` ${a}:
35
35
  `;for(let s in n)Array.isArray(n[s])?(e+=` ${s}:
36
- `,n[s].forEach((o,i)=>{e+=` ${i}: ${ie(o)}
37
- `;})):e+=` ${s}: ${ie(String(n[s]))}
38
- `;})):e+=` ${r}: ${ie(String(t.message[r]))}
39
- `;return e},Gr=t=>{let e="";return t.forEach(r=>{e+=`${r.name}:
40
- `,e+=`${ie(String(r.value))}
36
+ `,n[s].forEach((o,c)=>{e+=` ${c}: ${ce(o)}
37
+ `;})):e+=` ${s}: ${ce(String(n[s]))}
38
+ `;})):e+=` ${r}: ${ce(String(t.message[r]))}
39
+ `;return e},"beautifyComplexMessage"),Kr=chunkVYIKXRYZ_cjs.a(t=>{let e="";return t.forEach(r=>{e+=`${r.name}:
40
+ `,e+=`${ce(String(r.value))}
41
41
 
42
- `;}),e},ie=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 Me=zod.z.string().describe("message"),M=zod.z.string().describe("address");var Mr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([M,Me])});var Vr=zod.z.object({name:zod.z.string(),type:zod.z.string()}),ke=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(Vr)}).catchall(zod.z.array(Vr)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),Gt=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(),Lt=ke.or(Gt),Or=zod.z.union([zod.z.string().describe("data string"),ke]),Hr=zod.z.union([zod.z.string().describe("data string"),Lt]),$r=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([M,Hr])}),Wr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([M,Hr])}),jr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([M,Or])}),qr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([M,Or])});var Yr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([Me,M]),zod.z.tuple([Me,M,zod.z.string().optional().describe("password")])])});var Va=zod.z.discriminatedUnion("method",[Yr,Mr,$r,Wr,jr,qr]).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],s=n[1];if(typeof s!="string")return {data:s,address:a,method:r};try{let o=JSON.parse(s);return {data:Lt.parse(o),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],s=n[1];if(typeof s!="string")return {data:s,address:a,method:r};try{let o=JSON.parse(s);return {data:ke.parse(o),address:a,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}}});function zr(t){return Va.safeParse(t)}var Kr=t=>Gt.safeParse(t).success,kl=t=>ke.safeParse(t).success;var Jr=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 Xr=async({request:t,network:e,approvalController:r,blockaid:n})=>{let a=zr({method:t.method,params:t.params});if(!a.success)return console.error("invalid params",a.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams(G("Params are invalid",a.error))};let{method:s,data:o,address:i}=a.data,c;(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(c=Jr(o));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()}}),s===vmModuleTypes.RpcMethod.ETH_SIGN)l={type:s,account:i,data:o},p=o;else if(s===vmModuleTypes.RpcMethod.PERSONAL_SIGN)l={type:s,account:i,data:o},p=ethers.toUtf8String(o);else if(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)l={type:s,account:i,data:o},p=Kr(o)?Gr(o):Ut(o);else if(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){l={type:s,account:i,data:o};let{types:v,primaryType:P,...E}=o;p=Ut(E);}if(!l||!p)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let u=await Ar({request:t,accountAddress:i,chainId:e.chainId,data:{method:s,params:t.params},dAppUrl:t.dappInfo.url,blockaid:n}),f={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:[Nt("Message",p,"vertical")]}],alert:u?.alert??d,balanceChange:u?.balanceChange,tokenApprovals:u?.tokenApprovals},y=await r.requestApproval({request:t,displayData:f,signingData:l});return "error"in y?{error:y.error}:"signedData"in y?{result:y.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var Zr=async(t,e)=>{try{return {result:await(await U({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders})).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 en=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 Ee(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}async function Re(t){return await Promise.allSettled(t).then(e=>e.reduce((r,n)=>{if(n.status==="fulfilled"){let a=n.value;a.status==="fulfilled"?r[a.id]=a.value:r[a.id]={error:a.reason};}return r},{}))}var za={"ERC-20":vmModuleTypes.TokenType.ERC20,"ERC-721":vmModuleTypes.TokenType.ERC721,"ERC-1155":vmModuleTypes.TokenType.ERC1155,"NON-ERC":vmModuleTypes.TokenType.NONERC,SPL:vmModuleTypes.TokenType.SPL},Ka=zod.z.string().transform((t,e)=>{let r=za[t];return r||(e.addIssue({code:zod.z.ZodIssueCode.custom,message:`Unknown contractType: ${t}`}),zod.z.NEVER)}),Ja=zod.z.array(zod.z.object({address:zod.z.string(),chainId:zod.z.number(),contractType:Ka,decimals:zod.z.number(),internalId:zod.z.string().optional(),isNative:zod.z.boolean(),logoUri:zod.z.string().optional(),name:zod.z.string(),symbol:zod.z.string(),caip2Id:zod.z.string().optional(),color:zod.z.string().optional()}));async function ht({chainId:t,proxyApiUrl:e}){return (await D([`${e}/tokens?evmChainId=${t}`],Ja)).map(n=>({...n,type:n.contractType}))}var N,Pe,ce,$e,Se,gt=class{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:a,fetch:s}){chunkTKL4UUHE_cjs.c(this,N,void 0);chunkTKL4UUHE_cjs.c(this,Pe,void 0);chunkTKL4UUHE_cjs.c(this,ce,void 0);chunkTKL4UUHE_cjs.c(this,$e,void 0);chunkTKL4UUHE_cjs.c(this,Se,void 0);chunkTKL4UUHE_cjs.d(this,N,e),chunkTKL4UUHE_cjs.d(this,Pe,r),chunkTKL4UUHE_cjs.d(this,ce,n),chunkTKL4UUHE_cjs.d(this,$e,a),chunkTKL4UUHE_cjs.d(this,Se,s);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let a=await U({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,N).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,N).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,N).utilityAddresses?.multicall,customRpcHeaders:chunkTKL4UUHE_cjs.b(this,N).customRpcHeaders}),s=chunkTKL4UUHE_cjs.b(this,N).pricingProviders?.coingecko.nativeTokenId,o=chunkTKL4UUHE_cjs.b(this,N).networkToken,i=new z({storage:chunkTKL4UUHE_cjs.b(this,Pe),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ce),fetch:chunkTKL4UUHE_cjs.b(this,Se)}),c=s?await i.getSimplePrice({coinIds:[s],currencies:[n]}):{},l=c?.[s??""]?.[n]?.price??void 0,p=c?.[s??""]?.[n]?.marketCap??void 0,d=c?.[s??""]?.[n]?.vol24??void 0,u=c?.[s??""]?.[n]?.change24??void 0,f=await a.getBalance(r),y=new coreUtilsSdk.TokenUnit(f,o.decimals,o.symbol),v=l!==void 0?y.mul(l):void 0;return {...o,coingeckoId:s??"",type:vmModuleTypes.TokenType.NATIVE,balance:f,balanceDisplayValue:y.toDisplay(),balanceInCurrency:v?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:v?.toDisplay({fixedDp:2}),priceInCurrency:l,marketCap:p,vol24:d,change24:u}}async listErc20Balances({chainId:e,address:r,currency:n}){let a=await U({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,N).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,N).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,N).utilityAddresses?.multicall,customRpcHeaders:chunkTKL4UUHE_cjs.b(this,N).customRpcHeaders}),s=chunkTKL4UUHE_cjs.b(this,N).pricingProviders?.coingecko.assetPlatformId,o=chunkTKL4UUHE_cjs.b(this,N).pricingProviders?.coingecko.nativeTokenId,i=await ht({chainId:Number(e),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ce)}),c=i.map(E=>E.address),l=[...i,...chunkTKL4UUHE_cjs.b(this,$e)].filter(lt),p=async E=>{let T=await new ethers.ethers.Contract(E.address,vr__default.default.abi,a).balanceOf?.(r)||0n;return {...E,balance:T}},d=l.map(E=>Ee(p(E),E.address)),u=await Re(d),f=new z({storage:chunkTKL4UUHE_cjs.b(this,Pe),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ce),fetch:chunkTKL4UUHE_cjs.b(this,Se)}),y=s&&await f.getPricesByAddresses(c,s,n)||{},v=Object.keys(u),P={};for(let E=0;E<v.length;E++){let g=v[E];if(g===void 0)continue;let I=u[g];if(I===void 0||"error"in I){P[g]={error:`rpcService:getTokenWithBalance failed: ${I?.error??"unknown error"}`};continue}let T=y?.[o??""]?.[n]?.price??void 0,b=y?.[o??""]?.[n]?.marketCap??void 0,L=y?.[o??""]?.[n]?.vol24??void 0,W=y?.[o??""]?.[n]?.change24??void 0,Ne=new coreUtilsSdk.TokenUnit(I.balance,I.decimals,I.symbol),w=T!==void 0?Ne.mul(T):void 0;P[I.address.toLowerCase()]={...I,type:vmModuleTypes.TokenType.ERC20,balance:I.balance,balanceDisplayValue:Ne.toDisplay(),balanceInCurrency:w?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:w?.toDisplay({fixedDp:2}),priceInCurrency:T,marketCap:b,change24:W,vol24:L,reputation:null};}return P}async listNftBalances(){return {}}};N=new WeakMap,Pe=new WeakMap,ce=new WeakMap,$e=new WeakMap,Se=new WeakMap;async function nn(t,e){let r=t.map(async(s,o)=>({index:o,result:await e(s)})),a=(await Promise.allSettled(r)).filter(s=>s.status==="fulfilled").map(s=>s).find(s=>s.value.result);return a?t[a.value.index]:void 0}var an=async({addresses:t,currency:e,network:r,proxyApiUrl:n,tokenTypes:a=[vmModuleTypes.TokenType.NATIVE,vmModuleTypes.TokenType.ERC20,vmModuleTypes.TokenType.ERC721,vmModuleTypes.TokenType.ERC1155],customTokens:s=[],storage:o,balanceServices:i=[],tokenService:c,fetch:l})=>{let p=r.chainId,d=[...i,new gt({network:r,storage:o,proxyApiUrl:n,customTokens:s,fetch:l})],u=await nn(d,y=>y.isNetworkSupported(r.chainId)),f={};if(u){let y=[],v=[],P=[];t.forEach(T=>{a.includes(vmModuleTypes.TokenType.NATIVE)&&y.push(Ee(u.getNativeBalance({address:T,currency:e.toUpperCase(),chainId:p}).then(async b=>{if(b.symbol==="AVAX"){let L=await c.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:e.toUpperCase()});return {...b,priceInCurrency:L.priceInCurrency,marketCap:L.marketCap,vol24:L.vol24,change24:L.change24}}return b}),T)),a.includes(vmModuleTypes.TokenType.ERC20)&&v.push(Ee(u.listErc20Balances({customTokens:s.filter(lt),currency:e.toUpperCase(),chainId:p,address:T,pageSize:100}),T)),(a.includes(vmModuleTypes.TokenType.ERC721)||a.includes(vmModuleTypes.TokenType.ERC1155))&&P.push(Ee(u.listNftBalances({chainId:p,address:T}),T));});let E=await Re(y),g=await Re(v),I=await Re(P);Object.keys(E).forEach(T=>{let b=E[T];if(!b||"error"in b){f[T]={error:`getNativeBalance failed: ${b?.error??"unknown error"}`};return}let L=b.symbol;f[T]={[L]:b};}),Object.keys(g).forEach(T=>{let b=g[T];!b||"error"in b&&typeof b.error!="string"?f[T]={...f[T],error:"listErc20Balances failed: unknown error"}:"error"in b&&typeof b.error=="string"?f[T]={...f[T],error:`listErc20Balances failed: ${b.error}`}:f[T]={...f[T],...b};}),Object.keys(I).forEach(T=>{let b=I[T];!b||"error"in b&&typeof b.error!="string"?f[T]={...f[T],error:"listNftBalances failed: unknown error"}:"error"in b&&typeof b.error=="string"?f[T]={...f[T],error:`listNftBalances failed: ${b.error}`}:f[T]={...f[T],...b};});}else t.forEach(y=>{f[y]={error:"unsupported network"};});return f};var Ot={LOW:1n,MEDIUM:4n,HIGH:6n},Ht=500000000n,Qa=t=>t===coreChainsSdk.ChainId.AVALANCHE_TESTNET_ID||t===coreChainsSdk.ChainId.AVALANCHE_MAINNET_ID,cn=137,ln=80002,eo=t=>t===cn||t===ln,to={[cn]:"https://gasstation.polygon.technology/v2",[ln]:"https://gasstation.polygon.technology/amoy"};function le(t){return BigInt(Math.round(t*1e9))}async function ro(t){let e=to[t];if(!e)throw new Error(`No gas station URL for Polygon chain ${t}`);let r=await fetch(e);if(!r.ok)throw new Error(`Polygon Gas Station returned ${r.status}`);let n=await r.json();return {baseFee:le(n.estimatedBaseFee),low:{maxFeePerGas:le(n.safeLow.maxFee),maxPriorityFeePerGas:le(n.safeLow.maxPriorityFee)},medium:{maxFeePerGas:le(n.standard.maxFee),maxPriorityFeePerGas:le(n.standard.maxPriorityFee)},high:{maxFeePerGas:le(n.fast.maxFee),maxPriorityFeePerGas:le(n.fast.maxPriorityFee)},isFixedFee:!1,displayDecimals:9}}async function pn({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,caipId:a,proxyApiUrl:s,customRpcHeaders:o}){let i=await U({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,customRpcHeaders:o});if(!s)throw rpcErrors.rpcErrors.internal("Proxy API URL is needed");if(Qa(t))try{let g=await no(i);return {...g,baseFee:g.medium.maxFeePerGas,displayDecimals:9,isFixedFee:!1}}catch{console.error("eth_suggestPriceOptions call failed, falling back to legacy fee fetching");}if(eo(t))try{return await ro(t)}catch{console.error("Polygon Gas Station call failed, falling back to generic fee fetching");}let c=await i.getBlock("latest",!1);if(!c)throw rpcErrors.rpcErrors.internal("There is no block");let l=c.baseFeePerGas;if(!l)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let p=await ao(s,a),d=new coreUtilsSdk.TokenUnit(p,0,""),u=new coreUtilsSdk.TokenUnit(l,0,""),f=BigInt("1000000000"),y=u.mul(d).add(f).toSubUnit(),v=Ht*Ot.LOW,P=Ht*Ot.MEDIUM,E=Ht*Ot.HIGH;return {baseFee:y,low:{maxFeePerGas:y+v,maxPriorityFeePerGas:v},medium:{maxFeePerGas:y+P,maxPriorityFeePerGas:P},high:{maxFeePerGas:y+E,maxPriorityFeePerGas:E},isFixedFee:!1,displayDecimals:9}}async function no(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 ao(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 dn(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}function $t(t){let{txType:e,isSender:r,walletAddress:n,tokens:a}=t;if(a.length===0)return e;let s=n.toLowerCase(),o=a.some(p=>dn(p.type)&&p.to?.address?.toLowerCase()===s),i=a.some(p=>dn(p.type)&&p.from?.address?.toLowerCase()===s),c=e===vmModuleTypes.TransactionType.RECEIVE||e===vmModuleTypes.TransactionType.UNKNOWN||e===vmModuleTypes.TransactionType.TRANSFER||e===vmModuleTypes.TransactionType.AIRDROP,l=e===vmModuleTypes.TransactionType.SEND||e===vmModuleTypes.TransactionType.UNKNOWN||e===vmModuleTypes.TransactionType.TRANSFER||e===vmModuleTypes.TransactionType.AIRDROP;return !r&&o&&c?vmModuleTypes.TransactionType.NFT_RECEIVE:r&&i&&l?vmModuleTypes.TransactionType.NFT_SEND:e}var un=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a,s)=>{let o=!e&&!r&&!n,i=so(t.method?.methodName),c=a.toLowerCase(),l=i.toLowerCase().includes("swap"),p=o&&t.from.address.toLowerCase()===c,d=o&&t.to.address.toLowerCase()===c,u=i==="Market Buy Orders With Eth"||i==="Buy NFT",f=i==="Approve",y=i.toLowerCase().includes("transfer"),v=i.toLowerCase().includes("airdrop"),P=i.toLowerCase().includes("unwrap"),E=i==="Fill Order",g;l?g=vmModuleTypes.TransactionType.SWAP:p?g=vmModuleTypes.TransactionType.SEND:d?g=vmModuleTypes.TransactionType.RECEIVE:u?g=vmModuleTypes.TransactionType.NFT_BUY:f?g=vmModuleTypes.TransactionType.APPROVE:y?g=vmModuleTypes.TransactionType.TRANSFER:v?g=vmModuleTypes.TransactionType.AIRDROP:P?g=vmModuleTypes.TransactionType.UNWRAP:E?g=vmModuleTypes.TransactionType.FILL_ORDER:g=vmModuleTypes.TransactionType.UNKNOWN;let I=t.from.address.toLowerCase()===c;return $t({txType:g,isSender:I,walletAddress:a,tokens:s})},so=(t="")=>t.includes("(")?oo__default.default(t.split("(",1)[0]):t;function fn({tx:t,networkToken:e,explorerUrl:r,chainId:n,address:a}){let s=t.from_address.toLowerCase()===a.toLowerCase(),o=new Date(t.block_timestamp).getTime(),i=lo(t.category),c=!io.has(t.category),l=uo(t,e,a),p=ge(r,t.hash);return i=$t({txType:i,isSender:s,walletAddress:a,tokens:l}),{isContractCall:c,isIncoming:!s,isOutgoing:s,isSender:s,timestamp:o,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 io=new Set(["send","receive","token send","token receive"]),co={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 lo(t){return co[t]??vmModuleTypes.TransactionType.UNKNOWN}function Z(t){if(!(t==null||t===""))return {address:t}}function Tt(t){return t?.trim()??""}function po(t){let e=t.trim().toLowerCase();return !e.startsWith("0x")||e.length<12?t.trim():`${e.slice(0,6)}\u2026${e.slice(-4)}`}function mo(t){let e=Tt(t.token_symbol);if(e!=="")return e;let r=Tt(t.token_name);return r!==""?r:po(t.address)}function uo(t,e,r){let n=[],a=t.native_transfers.map(o=>fo(o,e)),s=t.erc20_transfers.map(o=>yo(o));n.push(...a,...s);for(let o of t.nft_transfers)n.push(ho(o));return n.length===0&&n.push(go(t,e,r)),n}function fo(t,e){let r=Tt(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:Z(t.from_address),to:Z(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}function yo(t){let e=Number(t.token_decimals),r=mo(t),n=new coreUtilsSdk.TokenUnit(t.value,e,r),a=Tt(t.token_name)||r;return {decimal:t.token_decimals,name:a,symbol:r,amount:n.toDisplay(),from:Z(t.from_address),to:Z(t.to_address),type:vmModuleTypes.TokenType.ERC20,address:t.address}}function ho(t){let e=t.contract_type==="ERC1155"?vmModuleTypes.TokenType.ERC1155:vmModuleTypes.TokenType.ERC721;return {name:"",symbol:"",amount:t.amount,collectableTokenId:t.token_id,from:Z(t.from_address),to:Z(t.to_address),type:e,address:t.token_address}}function go(t,e,r){let n=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol),s=t.from_address.toLowerCase()===r.toLowerCase()?`-${n.toDisplay()}`:n.toDisplay();return {decimal:e.decimals.toString(),name:e.name,symbol:e.symbol,amount:s,from:Z(t.from_address),to:Z(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}var To="https://proxy-api.avax.network/proxy/moralis-evm";async function yn({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s}){try{let o=`0x${t.toString(16)}`,i=new URLSearchParams({chain:o,limit:(s??25).toString()});a&&i.set("cursor",a);let c=`${To}/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(u=>u.receipt_status==="1").map(u=>fn({tx:u,networkToken:e,explorerUrl:r,chainId:t,address:n})),nextPageToken:p.cursor??""}:{transactions:[],nextPageToken:""}}catch{return {transactions:[],nextPageToken:""}}}var ko=new Set([1,4,5,11155111,8453,42161,10]);function hn(t){return ko.has(t)}var gn=(t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},a)=>{let s=t===vmModuleTypes.TransactionType.TRANSFER,o=t===vmModuleTypes.TransactionType.SEND||t===vmModuleTypes.TransactionType.NFT_SEND,i=t===vmModuleTypes.TransactionType.RECEIVE||t===vmModuleTypes.TransactionType.NFT_RECEIVE,c=e?.from?.address,l=e?.to?.address;s&&r&&r[0]&&(c=r[0].from.address,l=r[0].to.address),s&&n&&n[0]&&(c=n[0].from.address,l=n[0].to.address);let p=o||s&&c.toLowerCase()===a.toLowerCase(),d=i||s&&l.toLowerCase()===a.toLowerCase();return {isOutgoing:p,isIncoming:d,isSender:c===a,from:c,to:l}};async function Tn(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var vo="https://ipfs.io";function xe(t,e=vo){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}async function Eo(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}async function kn(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 Eo(xe(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}var Ro="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function bn(t,e="256"){let r=xe(t);return `${Ro}/width=${e},fit/${r}`}var Rn=async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a)=>{let s=[];if(t.value!=="0"){let o=a.decimals,c=new coreUtilsSdk.TokenUnit(t.value,a.decimals,a.symbol).toDisplay();s.push({decimal:o.toString(),name:a.name,symbol:a.symbol,amount:c,from:t.from,to:t.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(o=>{let i=o.erc20Token.decimals,l=new coreUtilsSdk.TokenUnit(o.value,i,o.erc20Token.symbol).toDisplay();s.push({decimal:i.toString(),address:o.erc20Token.address,name:o.erc20Token.name,symbol:o.erc20Token.symbol,amount:l,from:o.from,to:o.to,imageUri:o.erc20Token.logoUri,type:vmModuleTypes.TokenType.ERC20});}),r&&await Promise.allSettled(r.map(async o=>{let i=o.erc721Token,c=await En(i.tokenUri,i.metadata.imageUri);s.push({name:o.erc721Token.name,symbol:o.erc721Token.symbol,address:o.erc721Token.address,amount:"1",imageUri:c,from:o.from,to:o.to,collectableTokenId:o.erc721Token.tokenId,type:vmModuleTypes.TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async o=>{let i=o.erc1155Token,c=await En(i.tokenUri,i.metadata.imageUri);s.push({name:o.erc1155Token.metadata.name??"",symbol:o.erc1155Token.metadata.symbol??"",address:o.erc1155Token.address,amount:o.value,imageUri:c,from:o.from,to:o.to,collectableTokenId:o.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),s},En=async(t,e)=>{if(e)return e.startsWith("ipfs://")?xe(e):e;{let[r,n]=await Tn(kn(t));return n?"":r.image?bn(r.image):""}};var Pn=async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:a})=>{let s=await Rn(t,r),o=un(t,a,s),{isOutgoing:i,isIncoming:c,isSender:l,from:p,to:d}=gn(o,t,a),{blockTimestamp:u,txHash:f,gasPrice:y,gasUsed:v}=t.nativeTransaction,P=ge(e,f);return {isContractCall:!dr.includes(o),isIncoming:c,isOutgoing:i,isSender:l,timestamp:u*1e3,hash:f,from:p,to:d,tokens:s,gasPrice:y,gasUsed:v,chainId:n.toString(),txType:o,explorerLink:P}};var Sn=async({chainId:t,explorerUrl:e,networkToken:r,address:n,nextPageToken:a,offset:s,glacierService:o})=>{try{let i=await o.listTransactions({chainId:t.toString(),address:n,pageToken:a,pageSize:s});return {transactions:(await Promise.all(i.transactions.filter(p=>p.nativeTransaction.txStatus==="1").map(p=>Pn({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 xn=async({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s,glacierService:o})=>hn(t)?yn({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s}):o.isHealthy()?Sn({networkToken:e,explorerUrl:r,chainId:t,address:n,nextPageToken:a,offset:s,glacierService:o}):{transactions:[],nextPageToken:""};var So="https://ipfs.io";function In(t,e=So){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}var xo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function bt(t,e="256"){let r=In(t);return `${xo}/width=${e},fit/${r}`}var Ie,O,vt=class{constructor(e,r){this.baseUrl=e;chunkTKL4UUHE_cjs.c(this,Ie,[]);chunkTKL4UUHE_cjs.c(this,O,void 0);chunkTKL4UUHE_cjs.d(this,O,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,O).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,O).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,O)??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,Ie).length===0){let e=await chunkTKL4UUHE_cjs.b(this,O).call(this,`${this.baseUrl}/v1/chain/list`);if(e.ok)chunkTKL4UUHE_cjs.d(this,Ie,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return chunkTKL4UUHE_cjs.b(this,Ie)}async getNftList({address:e,chainId:r}){return D([`${this.baseUrl}/v1/user/nft_list?id=${e}&chain_id=${r}`],No,chunkTKL4UUHE_cjs.b(this,O))}};Ie=new WeakMap,O=new WeakMap;var Ao=zod.z.object({id:zod.z.union([zod.z.custom(ethers.isHexString),zod.z.string()]),chain:zod.z.string(),name:zod.z.string()}),Co=Ao.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()})),No=zod.z.array(Co);var V,Ae,Rt,St,Cn,Pt=class{constructor({proxyApiUrl:e,fetch:r}){chunkTKL4UUHE_cjs.c(this,Ae);chunkTKL4UUHE_cjs.c(this,St);chunkTKL4UUHE_cjs.c(this,V,void 0);chunkTKL4UUHE_cjs.d(this,V,new vt(`${e}/proxy/debank`,r));}async isNetworkSupported(e){return chunkTKL4UUHE_cjs.b(this,V).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:s}=await chunkTKL4UUHE_cjs.e(this,Ae,Rt).call(this,e),o=a.native_token_id,i=await chunkTKL4UUHE_cjs.b(this,V).getTokenBalance({address:r,chainId:s,tokenId:o}),c=new coreUtilsSdk.TokenUnit(i.raw_amount,i.decimals,i.symbol),l=c.toDisplay(),d=(await Je()).usd[n.toLowerCase()],u=d?d*i.price:void 0,f=u?c.mul(u).toDisplay({fixedDp:2}):void 0,y=u?c.mul(u).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:f,priceInCurrency:u}}async listErc20Balances({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:a,chainIdString:s}=await chunkTKL4UUHE_cjs.e(this,Ae,Rt).call(this,e),o=await chunkTKL4UUHE_cjs.b(this,V).getTokensBalanceOnChain({chainId:s,address:r}),i=await Je(),c={};for(let l of o){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(),u=i.usd[n.toLowerCase()],f=u?u*l.price:void 0,y=f?p.mul(f).toDisplay({fixedDp:2}):void 0,v=f?p.mul(f).toDisplay({fixedDp:2,asNumber:!0}):void 0;c[l.id]={chainId:a.community_id,address:l.id,name:l.name,symbol:l.symbol,decimals:l.decimals,logoUri:l.logo_url,balance:p.toSubUnit(),balanceCurrencyDisplayValue:y,balanceDisplayValue:d,balanceInCurrency:v,priceInCurrency:f,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,Ae,Rt).call(this,e),a=await chunkTKL4UUHE_cjs.b(this,V).getNftList({chainId:n,address:r});return chunkTKL4UUHE_cjs.e(this,St,Cn).call(this,a,e)}};V=new WeakMap,Ae=new WeakSet,Rt=async function(e){let n=(await chunkTKL4UUHE_cjs.b(this,V).getChainList()).find(s=>s.community_id===e)?.id;if(!n)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let a=await chunkTKL4UUHE_cjs.b(this,V).getChainInfo({chainId:n});if(!a)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);return {chainInfo:a,chainIdString:n}},St=new WeakSet,Cn=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:bt(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 H=class extends Error{constructor(){super(...arguments);chunkTKL4UUHE_cjs.a(this,"message","Glacier is unhealthy. Try again later.");}},Uo=[coreChainsSdk.ChainId.ETHEREUM_HOMESTEAD],xt=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},Be),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=>!Uo.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 H&&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 H&&this.setGlacierToUnhealthy(),a}}async getNativeBalance({chainId:e,address:r,currency:n,coingeckoId:a}){try{let o=(await this.glacierSdk.evmBalances.getNativeBalance({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase()})).nativeTokenBalance,i=new coreUtilsSdk.TokenUnit(o.balance,o.decimals,o.symbol),c=o.price?.value,l=c!==void 0?i.mul(c):void 0;return {name:o.name,symbol:o.symbol,decimals:o.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:o.logoUri,balance:i.toSubUnit(),balanceDisplayValue:i.toDisplay(),balanceInCurrency:l?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:l?.toDisplay({fixedDp:2}),priceInCurrency:c,coingeckoId:a??""}}catch(s){throw s instanceof H&&this.setGlacierToUnhealthy(),s}}async listErc721Balances({chainId:e,address:r}){let n,a=[];do try{let s=await this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...s.erc721TokenBalances),n=s.nextPageToken;}catch(s){throw s instanceof H&&this.setGlacierToUnhealthy(),s}while(n);return a}async listErc1155Balances({chainId:e,address:r}){let n,a=[];do try{let s=await this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...s.erc1155TokenBalances),n=s.nextPageToken;}catch(s){throw s instanceof H&&this.setGlacierToUnhealthy(),s}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(s=>s.status==="fulfilled").flatMap(s=>s.value.filter(o=>o.ercType===glacierSdk.Erc721Token.ercType.ERC_721||BigInt(o.balance)>0n).map(o=>[`${o.address}-${o.tokenId}`,{address:o.address,description:o.metadata.description??"",logoUri:o.metadata.imageUri??"",logoSmall:bt(o.metadata.imageUri??""),name:o.metadata.name??"",symbol:o.metadata.symbol??"",tokenId:o.tokenId,tokenUri:o.tokenUri,chainId:e,collectionName:"Unknown",balance:o.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?BigInt(o.balance):1,balanceDisplayValue:o.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?o.balance:"1",type:o.ercType===glacierSdk.Erc721Token.ercType.ERC_721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{indexStatus:o.metadata.indexStatus,description:o.metadata.description,lastUpdatedTimestamp:o.metadata.metadataLastUpdatedTimestamp,properties:o.ercType===glacierSdk.Erc721Token.ercType.ERC_721?o.metadata.attributes:o.metadata.properties}}]));return Object.fromEntries(a)}async listErc20Balances({chainId:e,address:r,currency:n,customTokens:a}){try{let s=[],o;do{let i=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:o});s.push(...Go(i.erc20TokenBalances,Number(e))),o=i.nextPageToken;}while(o);return [...Fo(a),...s].reduce((i,c)=>({...i,[c.address.toLowerCase()]:c}),{})}catch(s){throw s instanceof H&&this.setGlacierToUnhealthy(),s}}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(s){throw s instanceof H&&this.setGlacierToUnhealthy(),s}}},Fo=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})),Go=(t,e)=>t.map(r=>{let n=new coreUtilsSdk.TokenUnit(r.balance,r.decimals,r.symbol),a=n.toDisplay(),s=r.balanceValue?.value.toString(),o=r.price?.value,i=o!==void 0?n.mul(o).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {chainId:e,address:r.address,name:r.name,symbol:r.symbol,decimals:r.decimals,logoUri:r.logoUri,balance:n.toSubUnit(),balanceCurrencyDisplayValue:s,balanceDisplayValue:a,balanceInCurrency:i,priceInCurrency:o,reputation:r.tokenReputation,type:vmModuleTypes.TokenType.ERC20}});var Ce,ze,ee,$,pe,me,Bn=class{constructor({approvalController:e,environment:r,appInfo:n,runtime:a}){chunkTKL4UUHE_cjs.c(this,Ce,void 0);chunkTKL4UUHE_cjs.c(this,ze,void 0);chunkTKL4UUHE_cjs.c(this,ee,void 0);chunkTKL4UUHE_cjs.c(this,$,void 0);chunkTKL4UUHE_cjs.c(this,pe,void 0);chunkTKL4UUHE_cjs.c(this,me,void 0);let{glacierApiUrl:s,proxyApiUrl:o}=ar(r);chunkTKL4UUHE_cjs.d(this,me,a),chunkTKL4UUHE_cjs.d(this,Ce,new xt({glacierApiUrl:s,headers:wt(n)})),chunkTKL4UUHE_cjs.d(this,ze,new Pt({proxyApiUrl:o,fetch:chunkTKL4UUHE_cjs.b(this,me)?.fetch})),chunkTKL4UUHE_cjs.d(this,ee,o),chunkTKL4UUHE_cjs.d(this,$,e),chunkTKL4UUHE_cjs.d(this,pe,new Mo__default.default({baseURL:o+"/proxy/blockaid/",apiKey:rr,httpAgent:a?.httpAgent,fetch:a?.fetch}));}getProvider(e){return U({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders})}getAddress({accountIndex:e,xpub:r,walletType:n}){return en({accountIndex:e,xpub:r,walletType:n})}buildDerivationPath(e){return nt(e)}deriveAddress(e){return cr({...e,approvalController:chunkTKL4UUHE_cjs.b(this,$)})}getBalances({addresses:e,network:r,currency:n,customTokens:a,storage:s,tokenTypes:o}){let i=new z({storage:s,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ee),fetch:chunkTKL4UUHE_cjs.b(this,me)?.fetch});return an({addresses:e,currency:n,network:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ee),customTokens:a,balanceServices:[chunkTKL4UUHE_cjs.b(this,Ce),chunkTKL4UUHE_cjs.b(this,ze)],storage:s,tokenTypes:o,tokenService:i,fetch:chunkTKL4UUHE_cjs.b(this,me)?.fetch})}getManifest(){let e=vmModuleTypes.parseManifest(tr);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:a,utilityAddresses:s,caipId:o,customRpcHeaders:i}=e;return pn({chainId:r,chainName:n,rpcUrl:a,multiContractAddress:s?.multicall,caipId:o,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ee),customRpcHeaders:i})}getTransactionHistory(e){let{network:r,address:n,nextPageToken:a,offset:s}=e,{chainId:o,networkToken:i,explorerUrl:c=""}=r;return xn({chainId:o,networkToken:i,explorerUrl:c,address:n,nextPageToken:a,offset:s,glacierService:chunkTKL4UUHE_cjs.b(this,Ce)})}getTokens(e){let{chainId:r}=e;return ht({chainId:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ee)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return Fr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),blockaid:chunkTKL4UUHE_cjs.b(this,pe)});case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION_BATCH:return yr(chunkTKL4UUHE_cjs.b(this,$))?wr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),blockaid:chunkTKL4UUHE_cjs.b(this,pe)}):{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 Xr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),blockaid:chunkTKL4UUHE_cjs.b(this,pe)});default:return Vo(e.method)?Zr(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};Ce=new WeakMap,ze=new WeakMap,ee=new WeakMap,$=new WeakMap,pe=new WeakMap,me=new WeakMap;var Vo=t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t);
42
+ `;}),e},"beautifySimpleMessage"),ce=chunkVYIKXRYZ_cjs.a(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("")},"toUnicodeBold");var Ve=zod.z.string().describe("message"),V=zod.z.string().describe("address");var Xr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([V,Ve])});var Zr=zod.z.object({name:zod.z.string(),type:zod.z.string()}),be=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(Zr)}).catchall(zod.z.array(Zr)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),$t=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(),Wt=be.or($t),Qr=zod.z.union([zod.z.string().describe("data string"),be]),en=zod.z.union([zod.z.string().describe("data string"),Wt]),tn=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([V,en])}),rn=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([V,en])}),nn=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([V,Qr])}),an=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([V,Qr])});var on=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([Ve,V]),zod.z.tuple([Ve,V,zod.z.string().optional().describe("password")])])});var Za=zod.z.discriminatedUnion("method",[on,Xr,tn,rn,nn,an]).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],s=n[1];if(typeof s!="string")return {data:s,address:a,method:r};try{let o=JSON.parse(s);return {data:Wt.parse(o),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],s=n[1];if(typeof s!="string")return {data:s,address:a,method:r};try{let o=JSON.parse(s);return {data:be.parse(o),address:a,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}}});function sn(t){return Za.safeParse(t)}chunkVYIKXRYZ_cjs.a(sn,"parseRequestParams");var cn=chunkVYIKXRYZ_cjs.a(t=>$t.safeParse(t).success,"isTypedDataV1"),hp=chunkVYIKXRYZ_cjs.a(t=>be.safeParse(t).success,"isTypedData");var ln=chunkVYIKXRYZ_cjs.a(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}}},"isTypedDataValid");var pn=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r,blockaid:n})=>{let a=sn({method:t.method,params:t.params});if(!a.success)return console.error("invalid params",a.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams(L("Params are invalid",a.error))};let{method:s,data:o,address:c}=a.data,l;(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(l=ln(o));let p,m,u;if(l&&!l.isValid&&(u={type:vmModuleTypes.AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements. Please verify message content!",detailedDescription:l.error.toString()}}),s===vmModuleTypes.RpcMethod.ETH_SIGN)p={type:s,account:c,data:o},m=o;else if(s===vmModuleTypes.RpcMethod.PERSONAL_SIGN)p={type:s,account:c,data:o},m=ethers.toUtf8String(o);else if(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)p={type:s,account:c,data:o},m=cn(o)?Kr(o):Ot(o);else if(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){p={type:s,account:c,data:o};let{types:E,primaryType:S,...R}=o;m=Ot(R);}if(!p||!m)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let f=await Vr({request:t,accountAddress:c,chainId:e.chainId,data:{method:s,params:t.params},dAppUrl:t.dappInfo.url,blockaid:n}),y={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:c,details:[{title:"Message",items:[Ut("Message",m,"vertical")]}],alert:f?.alert??u,balanceChange:f?.balanceChange,tokenApprovals:f?.tokenApprovals},h=await r.requestApproval({request:t,displayData:y,signingData:p});return "error"in h?{error:h.error}:"signedData"in h?{result:h.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}},"ethSign");var mn=chunkVYIKXRYZ_cjs.a(async(t,e)=>{try{return {result:await(await F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders})).send(t.method,t.params)}}catch(r){let n=r.info?.error?.message||r.error?.message||r.message;return {error:rpcErrors.rpcErrors.internal(n)}}},"forwardToRpcNode");var un=chunkVYIKXRYZ_cjs.a(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}`)}},"getAddress");function Re(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}chunkVYIKXRYZ_cjs.a(Re,"addIdToPromise");async function Pe(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},{}))}chunkVYIKXRYZ_cjs.a(Pe,"settleAllIdPromises");var so={"ERC-20":vmModuleTypes.TokenType.ERC20,"ERC-721":vmModuleTypes.TokenType.ERC721,"ERC-1155":vmModuleTypes.TokenType.ERC1155,"NON-ERC":vmModuleTypes.TokenType.NONERC,SPL:vmModuleTypes.TokenType.SPL},io=zod.z.string().transform((t,e)=>{let r=so[t];return r||(e.addIssue({code:zod.z.ZodIssueCode.custom,message:`Unknown contractType: ${t}`}),zod.z.NEVER)}),co=zod.z.array(zod.z.object({address:zod.z.string(),chainId:zod.z.number(),contractType:io,decimals:zod.z.number(),internalId:zod.z.string().optional(),isNative:zod.z.boolean(),logoUri:zod.z.string().optional(),name:zod.z.string(),symbol:zod.z.string(),caip2Id:zod.z.string().optional(),color:zod.z.string().optional()}));async function gt({chainId:t,proxyApiUrl:e}){return (await U([`${e}/tokens?evmChainId=${t}`],co)).map(n=>({...n,type:n.contractType}))}chunkVYIKXRYZ_cjs.a(gt,"getTokens");var w,Se,le,We,xe,qt=class qt{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:a,fetch:s}){chunkVYIKXRYZ_cjs.d(this,w,void 0);chunkVYIKXRYZ_cjs.d(this,Se,void 0);chunkVYIKXRYZ_cjs.d(this,le,void 0);chunkVYIKXRYZ_cjs.d(this,We,void 0);chunkVYIKXRYZ_cjs.d(this,xe,void 0);chunkVYIKXRYZ_cjs.e(this,w,e),chunkVYIKXRYZ_cjs.e(this,Se,r),chunkVYIKXRYZ_cjs.e(this,le,n),chunkVYIKXRYZ_cjs.e(this,We,a),chunkVYIKXRYZ_cjs.e(this,xe,s);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let a=await F({chainId:e,chainName:chunkVYIKXRYZ_cjs.c(this,w).chainName,rpcUrl:chunkVYIKXRYZ_cjs.c(this,w).rpcUrl,multiContractAddress:chunkVYIKXRYZ_cjs.c(this,w).utilityAddresses?.multicall,customRpcHeaders:chunkVYIKXRYZ_cjs.c(this,w).customRpcHeaders}),s=chunkVYIKXRYZ_cjs.c(this,w).pricingProviders?.coingecko.nativeTokenId,o=chunkVYIKXRYZ_cjs.c(this,w).networkToken,c=new K({storage:chunkVYIKXRYZ_cjs.c(this,Se),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,le),fetch:chunkVYIKXRYZ_cjs.c(this,xe)}),l=s?await c.getSimplePrice({coinIds:[s],currencies:[n]}):{},p=l?.[s??""]?.[n]?.price??void 0,m=l?.[s??""]?.[n]?.marketCap??void 0,u=l?.[s??""]?.[n]?.vol24??void 0,f=l?.[s??""]?.[n]?.change24??void 0,y=await a.getBalance(r),h=new coreUtilsSdk.TokenUnit(y,o.decimals,o.symbol),E=p!==void 0?h.mul(p):void 0;return {...o,coingeckoId:s??"",type:vmModuleTypes.TokenType.NATIVE,balance:y,balanceDisplayValue:h.toDisplay(),balanceInCurrency:E?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:E?.toDisplay({fixedDp:2}),priceInCurrency:p,marketCap:m,vol24:u,change24:f}}async listErc20Balances({chainId:e,address:r,currency:n}){let a=await F({chainId:e,chainName:chunkVYIKXRYZ_cjs.c(this,w).chainName,rpcUrl:chunkVYIKXRYZ_cjs.c(this,w).rpcUrl,multiContractAddress:chunkVYIKXRYZ_cjs.c(this,w).utilityAddresses?.multicall,customRpcHeaders:chunkVYIKXRYZ_cjs.c(this,w).customRpcHeaders}),s=chunkVYIKXRYZ_cjs.c(this,w).pricingProviders?.coingecko.assetPlatformId,o=chunkVYIKXRYZ_cjs.c(this,w).pricingProviders?.coingecko.nativeTokenId,c=await gt({chainId:Number(e),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,le)}),l=c.map(R=>R.address),p=[...c,...chunkVYIKXRYZ_cjs.c(this,We)].filter(pt),m=chunkVYIKXRYZ_cjs.a(async R=>{let k=await new ethers.ethers.Contract(R.address,Br__default.default.abi,a).balanceOf?.(r)||0n;return {...R,balance:k}},"getTokenWithBalance"),u=p.map(R=>Re(m(R),R.address)),f=await Pe(u),y=new K({storage:chunkVYIKXRYZ_cjs.c(this,Se),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,le),fetch:chunkVYIKXRYZ_cjs.c(this,xe)}),h=s&&await y.getPricesByAddresses(l,s,n)||{},E=Object.keys(f),S={};for(let R=0;R<E.length;R++){let T=E[R];if(T===void 0)continue;let A=f[T];if(A===void 0||"error"in A){S[T]={error:`rpcService:getTokenWithBalance failed: ${A?.error??"unknown error"}`};continue}let k=h?.[o??""]?.[n]?.price??void 0,v=h?.[o??""]?.[n]?.marketCap??void 0,M=h?.[o??""]?.[n]?.vol24??void 0,j=h?.[o??""]?.[n]?.change24??void 0,we=new coreUtilsSdk.TokenUnit(A.balance,A.decimals,A.symbol),_=k!==void 0?we.mul(k):void 0;S[A.address.toLowerCase()]={...A,type:vmModuleTypes.TokenType.ERC20,balance:A.balance,balanceDisplayValue:we.toDisplay(),balanceInCurrency:_?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:_?.toDisplay({fixedDp:2}),priceInCurrency:k,marketCap:v,change24:j,vol24:M,reputation:null};}return S}async listNftBalances(){return {}}};w=new WeakMap,Se=new WeakMap,le=new WeakMap,We=new WeakMap,xe=new WeakMap,chunkVYIKXRYZ_cjs.a(qt,"RpcService");var Tt=qt;async function hn(t,e){let r=t.map(async(s,o)=>({index:o,result:await e(s)})),a=(await Promise.allSettled(r)).filter(s=>s.status==="fulfilled").map(s=>s).find(s=>s.value.result);return a?t[a.value.index]:void 0}chunkVYIKXRYZ_cjs.a(hn,"findAsync");var gn=chunkVYIKXRYZ_cjs.a(async({addresses:t,currency:e,network:r,proxyApiUrl:n,tokenTypes:a=[vmModuleTypes.TokenType.NATIVE,vmModuleTypes.TokenType.ERC20,vmModuleTypes.TokenType.ERC721,vmModuleTypes.TokenType.ERC1155],customTokens:s=[],storage:o,balanceServices:c=[],tokenService:l,fetch:p})=>{let m=r.chainId,u=[...c,new Tt({network:r,storage:o,proxyApiUrl:n,customTokens:s,fetch:p})],f=await hn(u,h=>h.isNetworkSupported(r.chainId)),y={};if(f){let h=[],E=[],S=[];t.forEach(k=>{a.includes(vmModuleTypes.TokenType.NATIVE)&&h.push(Re(f.getNativeBalance({address:k,currency:e.toUpperCase(),chainId:m}).then(async v=>{if(v.symbol==="AVAX"){let M=await l.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:e.toUpperCase()});return {...v,priceInCurrency:M.priceInCurrency,marketCap:M.marketCap,vol24:M.vol24,change24:M.change24}}return v}),k)),a.includes(vmModuleTypes.TokenType.ERC20)&&E.push(Re(f.listErc20Balances({customTokens:s.filter(pt),currency:e.toUpperCase(),chainId:m,address:k,pageSize:100}),k)),(a.includes(vmModuleTypes.TokenType.ERC721)||a.includes(vmModuleTypes.TokenType.ERC1155))&&S.push(Re(f.listNftBalances({chainId:m,address:k}),k));});let R=await Pe(h),T=await Pe(E),A=await Pe(S);Object.keys(R).forEach(k=>{let v=R[k];if(!v||"error"in v){y[k]={error:`getNativeBalance failed: ${v?.error??"unknown error"}`};return}let M=v.symbol;y[k]={[M]:v};}),Object.keys(T).forEach(k=>{let v=T[k];!v||"error"in v&&typeof v.error!="string"?y[k]={...y[k],error:"listErc20Balances failed: unknown error"}:"error"in v&&typeof v.error=="string"?y[k]={...y[k],error:`listErc20Balances failed: ${v.error}`}:y[k]={...y[k],...v};}),Object.keys(A).forEach(k=>{let v=A[k];!v||"error"in v&&typeof v.error!="string"?y[k]={...y[k],error:"listNftBalances failed: unknown error"}:"error"in v&&typeof v.error=="string"?y[k]={...y[k],error:`listNftBalances failed: ${v.error}`}:y[k]={...y[k],...v};});}else t.forEach(h=>{y[h]={error:"unsupported network"};});return y},"getBalances");var zt={LOW:1n,MEDIUM:4n,HIGH:6n},Kt=500000000n,mo=chunkVYIKXRYZ_cjs.a(t=>t===coreChainsSdk.ChainId.AVALANCHE_TESTNET_ID||t===coreChainsSdk.ChainId.AVALANCHE_MAINNET_ID,"isCChain"),bn=137,vn=80002,uo=chunkVYIKXRYZ_cjs.a(t=>t===bn||t===vn,"isPolygon"),fo={[bn]:"https://gasstation.polygon.technology/v2",[vn]:"https://gasstation.polygon.technology/amoy"};function pe(t){return BigInt(Math.round(t*1e9))}chunkVYIKXRYZ_cjs.a(pe,"gweiToWei");async function yo(t){let e=fo[t];if(!e)throw new Error(`No gas station URL for Polygon chain ${t}`);let r=await fetch(e);if(!r.ok)throw new Error(`Polygon Gas Station returned ${r.status}`);let n=await r.json();return {baseFee:pe(n.estimatedBaseFee),low:{maxFeePerGas:pe(n.safeLow.maxFee),maxPriorityFeePerGas:pe(n.safeLow.maxPriorityFee)},medium:{maxFeePerGas:pe(n.standard.maxFee),maxPriorityFeePerGas:pe(n.standard.maxPriorityFee)},high:{maxFeePerGas:pe(n.fast.maxFee),maxPriorityFeePerGas:pe(n.fast.maxPriorityFee)},isFixedFee:!1,displayDecimals:9}}chunkVYIKXRYZ_cjs.a(yo,"getPolygonGasStationFees");async function En({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,caipId:a,proxyApiUrl:s,customRpcHeaders:o}){let c=await F({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,customRpcHeaders:o});if(!s)throw rpcErrors.rpcErrors.internal("Proxy API URL is needed");if(mo(t))try{let T=await ho(c);return {...T,baseFee:T.medium.maxFeePerGas,displayDecimals:9,isFixedFee:!1}}catch{console.error("eth_suggestPriceOptions call failed, falling back to legacy fee fetching");}if(uo(t))try{return await yo(t)}catch{console.error("Polygon Gas Station call failed, falling back to generic fee fetching");}let l=await c.getBlock("latest",!1);if(!l)throw rpcErrors.rpcErrors.internal("There is no block");let p=l.baseFeePerGas;if(!p)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let m=await go(s,a),u=new coreUtilsSdk.TokenUnit(m,0,""),f=new coreUtilsSdk.TokenUnit(p,0,""),y=BigInt("1000000000"),h=f.mul(u).add(y).toSubUnit(),E=Kt*zt.LOW,S=Kt*zt.MEDIUM,R=Kt*zt.HIGH;return {baseFee:h,low:{maxFeePerGas:h+E,maxPriorityFeePerGas:E},medium:{maxFeePerGas:h+S,maxPriorityFeePerGas:S},high:{maxFeePerGas:h+R,maxPriorityFeePerGas:R},isFixedFee:!1,displayDecimals:9}}chunkVYIKXRYZ_cjs.a(En,"getNetworkFee");async function ho(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)}}}chunkVYIKXRYZ_cjs.a(ho,"suggestPriceOptions");async function go(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}}chunkVYIKXRYZ_cjs.a(go,"getGasMultiplier");function Pn(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}chunkVYIKXRYZ_cjs.a(Pn,"isNftTokenType");function Jt(t){let{txType:e,isSender:r,walletAddress:n,tokens:a}=t;if(a.length===0)return e;let s=n.toLowerCase(),o=a.some(m=>Pn(m.type)&&m.to?.address?.toLowerCase()===s),c=a.some(m=>Pn(m.type)&&m.from?.address?.toLowerCase()===s),l=e===vmModuleTypes.TransactionType.RECEIVE||e===vmModuleTypes.TransactionType.UNKNOWN||e===vmModuleTypes.TransactionType.TRANSFER||e===vmModuleTypes.TransactionType.AIRDROP,p=e===vmModuleTypes.TransactionType.SEND||e===vmModuleTypes.TransactionType.UNKNOWN||e===vmModuleTypes.TransactionType.TRANSFER||e===vmModuleTypes.TransactionType.AIRDROP;return !r&&o&&l?vmModuleTypes.TransactionType.NFT_RECEIVE:r&&c&&p?vmModuleTypes.TransactionType.NFT_SEND:e}chunkVYIKXRYZ_cjs.a(Jt,"convertTransactionType");var Sn=chunkVYIKXRYZ_cjs.a(({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a,s)=>{let o=!e&&!r&&!n,c=ko(t.method?.methodName),l=a.toLowerCase(),p=c.toLowerCase().includes("swap"),m=o&&t.from.address.toLowerCase()===l,u=o&&t.to.address.toLowerCase()===l,f=c==="Market Buy Orders With Eth"||c==="Buy NFT",y=c==="Approve",h=c.toLowerCase().includes("transfer"),E=c.toLowerCase().includes("airdrop"),S=c.toLowerCase().includes("unwrap"),R=c==="Fill Order",T;p?T=vmModuleTypes.TransactionType.SWAP:m?T=vmModuleTypes.TransactionType.SEND:u?T=vmModuleTypes.TransactionType.RECEIVE:f?T=vmModuleTypes.TransactionType.NFT_BUY:y?T=vmModuleTypes.TransactionType.APPROVE:h?T=vmModuleTypes.TransactionType.TRANSFER:E?T=vmModuleTypes.TransactionType.AIRDROP:S?T=vmModuleTypes.TransactionType.UNWRAP:R?T=vmModuleTypes.TransactionType.FILL_ORDER:T=vmModuleTypes.TransactionType.UNKNOWN;let A=t.from.address.toLowerCase()===l;return Jt({txType:T,isSender:A,walletAddress:a,tokens:s})},"getTxType"),ko=chunkVYIKXRYZ_cjs.a((t="")=>t.includes("(")?To__default.default(t.split("(",1)[0]):t,"parseRawMethod");function xn({tx:t,networkToken:e,explorerUrl:r,chainId:n,address:a}){let s=t.from_address.toLowerCase()===a.toLowerCase(),o=new Date(t.block_timestamp).getTime(),c=Eo(t.category),l=!bo.has(t.category),p=So(t,e,a),m=Te(r,t.hash);return c=Jt({txType:c,isSender:s,walletAddress:a,tokens:p}),{isContractCall:l,isIncoming:!s,isOutgoing:s,isSender:s,timestamp:o,hash:t.hash,from:t.from_address,to:t.to_address??"",tokens:p,gasPrice:t.gas_price,gasUsed:t.receipt_gas_used,chainId:n.toString(),txType:c,method:t.method_label??void 0,explorerLink:m}}chunkVYIKXRYZ_cjs.a(xn,"convertMoralisTransaction");var bo=new Set(["send","receive","token send","token receive"]),vo={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 Eo(t){return vo[t]??vmModuleTypes.TransactionType.UNKNOWN}chunkVYIKXRYZ_cjs.a(Eo,"getMoralisTransactionType");function Q(t){if(!(t==null||t===""))return {address:t}}chunkVYIKXRYZ_cjs.a(Q,"getTransferAddress");function kt(t){return t?.trim()??""}chunkVYIKXRYZ_cjs.a(kt,"trimOrEmpty");function Ro(t){let e=t.trim().toLowerCase();return !e.startsWith("0x")||e.length<12?t.trim():`${e.slice(0,6)}\u2026${e.slice(-4)}`}chunkVYIKXRYZ_cjs.a(Ro,"shortenHexAddress");function Po(t){let e=kt(t.token_symbol);if(e!=="")return e;let r=kt(t.token_name);return r!==""?r:Ro(t.address)}chunkVYIKXRYZ_cjs.a(Po,"getErc20DisplaySymbol");function So(t,e,r){let n=[],a=t.native_transfers.map(o=>xo(o,e)),s=t.erc20_transfers.map(o=>Io(o));n.push(...a,...s);for(let o of t.nft_transfers)n.push(Ao(o));return n.length===0&&n.push(No(t,e,r)),n}chunkVYIKXRYZ_cjs.a(So,"buildTokens");function xo(t,e){let r=kt(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:Q(t.from_address),to:Q(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}chunkVYIKXRYZ_cjs.a(xo,"buildNativeToken");function Io(t){let e=Number(t.token_decimals),r=Po(t),n=new coreUtilsSdk.TokenUnit(t.value,e,r),a=kt(t.token_name)||r;return {decimal:t.token_decimals,name:a,symbol:r,amount:n.toDisplay(),from:Q(t.from_address),to:Q(t.to_address),type:vmModuleTypes.TokenType.ERC20,address:t.address}}chunkVYIKXRYZ_cjs.a(Io,"buildErc20Token");function Ao(t){let e=t.contract_type==="ERC1155"?vmModuleTypes.TokenType.ERC1155:vmModuleTypes.TokenType.ERC721;return {name:"",symbol:"",amount:t.amount,collectableTokenId:t.token_id,from:Q(t.from_address),to:Q(t.to_address),type:e,address:t.token_address}}chunkVYIKXRYZ_cjs.a(Ao,"buildNftToken");function No(t,e,r){let n=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol),s=t.from_address.toLowerCase()===r.toLowerCase()?`-${n.toDisplay()}`:n.toDisplay();return {decimal:e.decimals.toString(),name:e.name,symbol:e.symbol,amount:s,from:Q(t.from_address),to:Q(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}chunkVYIKXRYZ_cjs.a(No,"buildFallbackNativeToken");var Co="https://proxy-api.avax.network/proxy/moralis-evm";async function In({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s}){try{let o=`0x${t.toString(16)}`,c=new URLSearchParams({chain:o,limit:(s??25).toString()});a&&c.set("cursor",a);let l=`${Co}/wallets/${n}/history?${c.toString()}`,p=await fetch(l);if(!p.ok)return {transactions:[],nextPageToken:""};let m=await p.json();return Array.isArray(m.result)?{transactions:m.result.filter(f=>f.receipt_status==="1").map(f=>xn({tx:f,networkToken:e,explorerUrl:r,chainId:t,address:n})),nextPageToken:m.cursor??""}:{transactions:[],nextPageToken:""}}catch{return {transactions:[],nextPageToken:""}}}chunkVYIKXRYZ_cjs.a(In,"getTransactionsFromMoralis");var wo=new Set([1,4,5,11155111,8453,42161,10]);function An(t){return wo.has(t)}chunkVYIKXRYZ_cjs.a(An,"isMoralisSupportedChain");var Nn=chunkVYIKXRYZ_cjs.a((t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},a)=>{let s=t===vmModuleTypes.TransactionType.TRANSFER,o=t===vmModuleTypes.TransactionType.SEND||t===vmModuleTypes.TransactionType.NFT_SEND,c=t===vmModuleTypes.TransactionType.RECEIVE||t===vmModuleTypes.TransactionType.NFT_RECEIVE,l=e?.from?.address,p=e?.to?.address;s&&r&&r[0]&&(l=r[0].from.address,p=r[0].to.address),s&&n&&n[0]&&(l=n[0].from.address,p=n[0].to.address);let m=o||s&&l.toLowerCase()===a.toLowerCase(),u=c||s&&p.toLowerCase()===a.toLowerCase();return {isOutgoing:m,isIncoming:u,isSender:l===a,from:l,to:p}},"getSenderInfo");async function Cn(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}chunkVYIKXRYZ_cjs.a(Cn,"resolve");var Bo="https://ipfs.io";function Ie(t,e=Bo){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}chunkVYIKXRYZ_cjs.a(Ie,"ipfsResolverWithFallback");async function Do(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}chunkVYIKXRYZ_cjs.a(Do,"fetchWithTimeout");async function wn(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 Do(Ie(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}chunkVYIKXRYZ_cjs.a(wn,"getNftMetadata");var Uo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function _n(t,e="256"){let r=Ie(t);return `${Uo}/width=${e},fit/${r}`}chunkVYIKXRYZ_cjs.a(_n,"getSmallImageForNFT");var Un=chunkVYIKXRYZ_cjs.a(async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a)=>{let s=[];if(t.value!=="0"){let o=a.decimals,l=new coreUtilsSdk.TokenUnit(t.value,a.decimals,a.symbol).toDisplay();s.push({decimal:o.toString(),name:a.name,symbol:a.symbol,amount:l,from:t.from,to:t.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(o=>{let c=o.erc20Token.decimals,p=new coreUtilsSdk.TokenUnit(o.value,c,o.erc20Token.symbol).toDisplay();s.push({decimal:c.toString(),address:o.erc20Token.address,name:o.erc20Token.name,symbol:o.erc20Token.symbol,amount:p,from:o.from,to:o.to,imageUri:o.erc20Token.logoUri,type:vmModuleTypes.TokenType.ERC20});}),r&&await Promise.allSettled(r.map(async o=>{let c=o.erc721Token,l=await Dn(c.tokenUri,c.metadata.imageUri);s.push({name:o.erc721Token.name,symbol:o.erc721Token.symbol,address:o.erc721Token.address,amount:"1",imageUri:l,from:o.from,to:o.to,collectableTokenId:o.erc721Token.tokenId,type:vmModuleTypes.TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async o=>{let c=o.erc1155Token,l=await Dn(c.tokenUri,c.metadata.imageUri);s.push({name:o.erc1155Token.metadata.name??"",symbol:o.erc1155Token.metadata.symbol??"",address:o.erc1155Token.address,amount:o.value,imageUri:l,from:o.from,to:o.to,collectableTokenId:o.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),s},"getTokens"),Dn=chunkVYIKXRYZ_cjs.a(async(t,e)=>{if(e)return e.startsWith("ipfs://")?Ie(e):e;{let[r,n]=await Cn(wn(t));return n?"":r.image?_n(r.image):""}},"getImageUri");var Fn=chunkVYIKXRYZ_cjs.a(async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:a})=>{let s=await Un(t,r),o=Sn(t,a,s),{isOutgoing:c,isIncoming:l,isSender:p,from:m,to:u}=Nn(o,t,a),{blockTimestamp:f,txHash:y,gasPrice:h,gasUsed:E}=t.nativeTransaction,S=Te(e,y);return {isContractCall:!Pr.includes(o),isIncoming:l,isOutgoing:c,isSender:p,timestamp:f*1e3,hash:y,from:m,to:u,tokens:s,gasPrice:h,gasUsed:E,chainId:n.toString(),txType:o,explorerLink:S}},"convertTransaction");var Gn=chunkVYIKXRYZ_cjs.a(async({chainId:t,explorerUrl:e,networkToken:r,address:n,nextPageToken:a,offset:s,glacierService:o})=>{try{let c=await o.listTransactions({chainId:t.toString(),address:n,pageToken:a,pageSize:s});return {transactions:(await Promise.all(c.transactions.filter(m=>m.nativeTransaction.txStatus==="1").map(m=>Fn({transactions:m,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(u=>u)))).filter(m=>m.tokens.find(u=>Number(u.amount)!==0)),nextPageToken:c.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}},"getTransactionsFromGlacier");var Ln=chunkVYIKXRYZ_cjs.a(async({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s,glacierService:o})=>An(t)?In({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s}):o.isHealthy()?Gn({networkToken:e,explorerUrl:r,chainId:t,address:n,nextPageToken:a,offset:s,glacierService:o}):{transactions:[],nextPageToken:""},"getTransactionHistory");var Go="https://ipfs.io";function Mn(t,e=Go){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}chunkVYIKXRYZ_cjs.a(Mn,"ipfsResolverWithFallback");var Lo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function vt(t,e="256"){let r=Mn(t);return `${Lo}/width=${e},fit/${r}`}chunkVYIKXRYZ_cjs.a(vt,"getSmallImageForNFT");var Ae,H,Zt=class Zt{constructor(e,r){this.baseUrl=e;chunkVYIKXRYZ_cjs.d(this,Ae,[]);chunkVYIKXRYZ_cjs.d(this,H,void 0);chunkVYIKXRYZ_cjs.e(this,H,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 chunkVYIKXRYZ_cjs.c(this,H).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 chunkVYIKXRYZ_cjs.c(this,H).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(chunkVYIKXRYZ_cjs.c(this,H)??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(chunkVYIKXRYZ_cjs.c(this,Ae).length===0){let e=await chunkVYIKXRYZ_cjs.c(this,H).call(this,`${this.baseUrl}/v1/chain/list`);if(e.ok)chunkVYIKXRYZ_cjs.e(this,Ae,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return chunkVYIKXRYZ_cjs.c(this,Ae)}async getNftList({address:e,chainId:r}){return U([`${this.baseUrl}/v1/user/nft_list?id=${e}&chain_id=${r}`],Ho,chunkVYIKXRYZ_cjs.c(this,H))}};Ae=new WeakMap,H=new WeakMap,chunkVYIKXRYZ_cjs.a(Zt,"DeBank");var Et=Zt,Vo=zod.z.object({id:zod.z.union([zod.z.custom(ethers.isHexString),zod.z.string()]),chain:zod.z.string(),name:zod.z.string()}),Oo=Vo.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()})),Ho=zod.z.array(Oo);var O,Ne,Pt,xt,On,er=class er{constructor({proxyApiUrl:e,fetch:r}){chunkVYIKXRYZ_cjs.d(this,Ne);chunkVYIKXRYZ_cjs.d(this,xt);chunkVYIKXRYZ_cjs.d(this,O,void 0);chunkVYIKXRYZ_cjs.e(this,O,new Et(`${e}/proxy/debank`,r));}async isNetworkSupported(e){return chunkVYIKXRYZ_cjs.c(this,O).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:s}=await chunkVYIKXRYZ_cjs.f(this,Ne,Pt).call(this,e),o=a.native_token_id,c=await chunkVYIKXRYZ_cjs.c(this,O).getTokenBalance({address:r,chainId:s,tokenId:o}),l=new coreUtilsSdk.TokenUnit(c.raw_amount,c.decimals,c.symbol),p=l.toDisplay(),u=(await Xe()).usd[n.toLowerCase()],f=u?u*c.price:void 0,y=f?l.mul(f).toDisplay({fixedDp:2}):void 0,h=f?l.mul(f).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {name:c.name,symbol:c.symbol,decimals:c.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:c.logo_url,balance:l.toSubUnit(),balanceDisplayValue:p,balanceInCurrency:h,balanceCurrencyDisplayValue:y,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:s}=await chunkVYIKXRYZ_cjs.f(this,Ne,Pt).call(this,e),o=await chunkVYIKXRYZ_cjs.c(this,O).getTokensBalanceOnChain({chainId:s,address:r}),c=await Xe(),l={};for(let p of o){if(p.id===a.native_token_id||p.is_core===!1)continue;let m=new coreUtilsSdk.TokenUnit(p.raw_amount,p.decimals,p.symbol),u=m.toDisplay(),f=c.usd[n.toLowerCase()],y=f?f*p.price:void 0,h=y?m.mul(y).toDisplay({fixedDp:2}):void 0,E=y?m.mul(y).toDisplay({fixedDp:2,asNumber:!0}):void 0;l[p.id]={chainId:a.community_id,address:p.id,name:p.name,symbol:p.symbol,decimals:p.decimals,logoUri:p.logo_url,balance:m.toSubUnit(),balanceCurrencyDisplayValue:h,balanceDisplayValue:u,balanceInCurrency:E,priceInCurrency:y,type:vmModuleTypes.TokenType.ERC20,reputation:null};}return l}async listNftBalances({chainId:e,address:r}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listNftBalances: not valid address");let{chainIdString:n}=await chunkVYIKXRYZ_cjs.f(this,Ne,Pt).call(this,e),a=await chunkVYIKXRYZ_cjs.c(this,O).getNftList({chainId:n,address:r});return chunkVYIKXRYZ_cjs.f(this,xt,On).call(this,a,e)}};O=new WeakMap,Ne=new WeakSet,Pt=chunkVYIKXRYZ_cjs.a(async function(e){let n=(await chunkVYIKXRYZ_cjs.c(this,O).getChainList()).find(s=>s.community_id===e)?.id;if(!n)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let a=await chunkVYIKXRYZ_cjs.c(this,O).getChainInfo({chainId:n});if(!a)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);return {chainInfo:a,chainIdString:n}},"#getChainInfo"),xt=new WeakSet,On=chunkVYIKXRYZ_cjs.a(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:vt(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:""}}}),{})},"#mapNftList"),chunkVYIKXRYZ_cjs.a(er,"DeBankService");var St=er;var rr=class rr extends Error{constructor(){super(...arguments);chunkVYIKXRYZ_cjs.b(this,"message","Glacier is unhealthy. Try again later.");}};chunkVYIKXRYZ_cjs.a(rr,"GlacierUnhealthyError");var $=rr,Yo=[coreChainsSdk.ChainId.ETHEREUM_HOMESTEAD],nr=class nr{constructor({glacierApiUrl:e,headers:r}){chunkVYIKXRYZ_cjs.b(this,"glacierSdk");chunkVYIKXRYZ_cjs.b(this,"isGlacierHealthy",!0);chunkVYIKXRYZ_cjs.b(this,"supportedChainIds",[]);chunkVYIKXRYZ_cjs.b(this,"isHealthy",chunkVYIKXRYZ_cjs.a(()=>this.isGlacierHealthy,"isHealthy"));this.glacierSdk=new glacierSdk.Glacier({BASE:e,HEADERS:r},De),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=>!Yo.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 $&&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 $&&this.setGlacierToUnhealthy(),a}}async getNativeBalance({chainId:e,address:r,currency:n,coingeckoId:a}){try{let o=(await this.glacierSdk.evmBalances.getNativeBalance({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase()})).nativeTokenBalance,c=new coreUtilsSdk.TokenUnit(o.balance,o.decimals,o.symbol),l=o.price?.value,p=l!==void 0?c.mul(l):void 0;return {name:o.name,symbol:o.symbol,decimals:o.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:o.logoUri,balance:c.toSubUnit(),balanceDisplayValue:c.toDisplay(),balanceInCurrency:p?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:p?.toDisplay({fixedDp:2}),priceInCurrency:l,coingeckoId:a??""}}catch(s){throw s instanceof $&&this.setGlacierToUnhealthy(),s}}async listErc721Balances({chainId:e,address:r}){let n,a=[];do try{let s=await this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...s.erc721TokenBalances),n=s.nextPageToken;}catch(s){throw s instanceof $&&this.setGlacierToUnhealthy(),s}while(n);return a}async listErc1155Balances({chainId:e,address:r}){let n,a=[];do try{let s=await this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:r,pageSize:100,pageToken:n});a.push(...s.erc1155TokenBalances),n=s.nextPageToken;}catch(s){throw s instanceof $&&this.setGlacierToUnhealthy(),s}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(s=>s.status==="fulfilled").flatMap(s=>s.value.filter(o=>o.ercType===glacierSdk.Erc721Token.ercType.ERC_721||BigInt(o.balance)>0n).map(o=>[`${o.address}-${o.tokenId}`,{address:o.address,description:o.metadata.description??"",logoUri:o.metadata.imageUri??"",logoSmall:vt(o.metadata.imageUri??""),name:o.metadata.name??"",symbol:o.metadata.symbol??"",tokenId:o.tokenId,tokenUri:o.tokenUri,chainId:e,collectionName:"Unknown",balance:o.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?BigInt(o.balance):1,balanceDisplayValue:o.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?o.balance:"1",type:o.ercType===glacierSdk.Erc721Token.ercType.ERC_721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{indexStatus:o.metadata.indexStatus,description:o.metadata.description,lastUpdatedTimestamp:o.metadata.metadataLastUpdatedTimestamp,properties:o.ercType===glacierSdk.Erc721Token.ercType.ERC_721?o.metadata.attributes:o.metadata.properties}}]));return Object.fromEntries(a)}async listErc20Balances({chainId:e,address:r,currency:n,customTokens:a}){try{let s=[],o;do{let c=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:o});s.push(...Ko(c.erc20TokenBalances,Number(e))),o=c.nextPageToken;}while(o);return [...zo(a),...s].reduce((c,l)=>({...c,[l.address.toLowerCase()]:l}),{})}catch(s){throw s instanceof $&&this.setGlacierToUnhealthy(),s}}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(s){throw s instanceof $&&this.setGlacierToUnhealthy(),s}}};chunkVYIKXRYZ_cjs.a(nr,"EvmGlacierService");var It=nr,zo=chunkVYIKXRYZ_cjs.a(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})),"convertErc20TokenToTokenWithBalance"),Ko=chunkVYIKXRYZ_cjs.a((t,e)=>t.map(r=>{let n=new coreUtilsSdk.TokenUnit(r.balance,r.decimals,r.symbol),a=n.toDisplay(),s=r.balanceValue?.value.toString(),o=r.price?.value,c=o!==void 0?n.mul(o).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {chainId:e,address:r.address,name:r.name,symbol:r.symbol,decimals:r.decimals,logoUri:r.logoUri,balance:n.toSubUnit(),balanceCurrencyDisplayValue:s,balanceDisplayValue:a,balanceInCurrency:c,priceInCurrency:o,reputation:r.tokenReputation,type:vmModuleTypes.TokenType.ERC20}}),"convertErc20TokenWithBalanceToTokenWithBalance");var Ce,Ke,te,W,me,de,ar=class ar{constructor({approvalController:e,environment:r,appInfo:n,runtime:a}){chunkVYIKXRYZ_cjs.d(this,Ce,void 0);chunkVYIKXRYZ_cjs.d(this,Ke,void 0);chunkVYIKXRYZ_cjs.d(this,te,void 0);chunkVYIKXRYZ_cjs.d(this,W,void 0);chunkVYIKXRYZ_cjs.d(this,me,void 0);chunkVYIKXRYZ_cjs.d(this,de,void 0);let{glacierApiUrl:s,proxyApiUrl:o}=hr(r);chunkVYIKXRYZ_cjs.e(this,de,a),chunkVYIKXRYZ_cjs.e(this,Ce,new It({glacierApiUrl:s,headers:Ft(n)})),chunkVYIKXRYZ_cjs.e(this,Ke,new St({proxyApiUrl:o,fetch:chunkVYIKXRYZ_cjs.c(this,de)?.fetch})),chunkVYIKXRYZ_cjs.e(this,te,o),chunkVYIKXRYZ_cjs.e(this,W,e),chunkVYIKXRYZ_cjs.e(this,me,new Xo__default.default({baseURL:o+"/proxy/blockaid/",apiKey:fr,httpAgent:a?.httpAgent,fetch:a?.fetch}));}getProvider(e){return F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders})}getAddress({accountIndex:e,xpub:r,walletType:n}){return un({accountIndex:e,xpub:r,walletType:n})}buildDerivationPath(e){return at(e)}deriveAddress(e){return br({...e,approvalController:chunkVYIKXRYZ_cjs.c(this,W)})}getBalances({addresses:e,network:r,currency:n,customTokens:a,storage:s,tokenTypes:o}){let c=new K({storage:s,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te),fetch:chunkVYIKXRYZ_cjs.c(this,de)?.fetch});return gn({addresses:e,currency:n,network:r,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te),customTokens:a,balanceServices:[chunkVYIKXRYZ_cjs.c(this,Ce),chunkVYIKXRYZ_cjs.c(this,Ke)],storage:s,tokenTypes:o,tokenService:c,fetch:chunkVYIKXRYZ_cjs.c(this,de)?.fetch})}getManifest(){let e=vmModuleTypes.parseManifest(ur);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:a,utilityAddresses:s,caipId:o,customRpcHeaders:c}=e;return En({chainId:r,chainName:n,rpcUrl:a,multiContractAddress:s?.multicall,caipId:o,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te),customRpcHeaders:c})}getTransactionHistory(e){let{network:r,address:n,nextPageToken:a,offset:s}=e,{chainId:o,networkToken:c,explorerUrl:l=""}=r;return Ln({chainId:o,networkToken:c,explorerUrl:l,address:n,nextPageToken:a,offset:s,glacierService:chunkVYIKXRYZ_cjs.c(this,Ce)})}getTokens(e){let{chainId:r}=e;return gt({chainId:r,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return zr({request:e,network:r,approvalController:chunkVYIKXRYZ_cjs.c(this,W),blockaid:chunkVYIKXRYZ_cjs.c(this,me)});case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION_BATCH:return Ir(chunkVYIKXRYZ_cjs.c(this,W))?$r({request:e,network:r,approvalController:chunkVYIKXRYZ_cjs.c(this,W),blockaid:chunkVYIKXRYZ_cjs.c(this,me)}):{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 pn({request:e,network:r,approvalController:chunkVYIKXRYZ_cjs.c(this,W),blockaid:chunkVYIKXRYZ_cjs.c(this,me)});default:return Zo(e.method)?mn(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};Ce=new WeakMap,Ke=new WeakMap,te=new WeakMap,W=new WeakMap,me=new WeakMap,de=new WeakMap,chunkVYIKXRYZ_cjs.a(ar,"EvmModule");var jn=ar,Zo=chunkVYIKXRYZ_cjs.a(t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t),"shouldForwardToRpcNode");
43
43
 
44
- exports.ERC20TransactionType = oe;
45
- exports.EvmModule = Bn;
46
- exports.NonContractCallTypes = dr;
47
- exports.addIdToPromise = Ee;
48
- exports.isTypedData = kl;
49
- exports.isTypedDataV1 = Kr;
50
- exports.settleAllIdPromises = Re;
44
+ exports.ERC20TransactionType = se;
45
+ exports.EvmModule = jn;
46
+ exports.NonContractCallTypes = Pr;
47
+ exports.addIdToPromise = Re;
48
+ exports.isTypedData = hp;
49
+ exports.isTypedDataV1 = cn;
50
+ exports.settleAllIdPromises = Pe;
51
51
  //# sourceMappingURL=out.js.map
52
52
  //# sourceMappingURL=index.cjs.map