@avalabs/evm-module 3.6.2 → 3.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +23 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +17 -17
- package/dist/index.js.map +1 -1
- package/package.json +9 -9
package/dist/index.cjs
CHANGED
|
@@ -2,51 +2,51 @@
|
|
|
2
2
|
|
|
3
3
|
var chunkTKL4UUHE_cjs = require('./chunk-TKL4UUHE.cjs');
|
|
4
4
|
var vmModuleTypes = require('@avalabs/vm-module-types');
|
|
5
|
-
var
|
|
5
|
+
var Bo = 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
|
|
12
|
+
var br = require('@openzeppelin/contracts/build/contracts/ERC20.json');
|
|
13
13
|
var coreUtilsSdk = require('@avalabs/core-utils-sdk');
|
|
14
|
-
var
|
|
14
|
+
var Tr = require('xss');
|
|
15
15
|
var coreChainsSdk = require('@avalabs/core-chains-sdk');
|
|
16
|
-
var
|
|
16
|
+
var Qa = require('lodash.startcase');
|
|
17
17
|
|
|
18
18
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var Bo__default = /*#__PURE__*/_interopDefault(Bo);
|
|
21
|
+
var br__default = /*#__PURE__*/_interopDefault(br);
|
|
21
22
|
var Tr__default = /*#__PURE__*/_interopDefault(Tr);
|
|
22
|
-
var
|
|
23
|
-
var Ka__default = /*#__PURE__*/_interopDefault(Ka);
|
|
23
|
+
var Qa__default = /*#__PURE__*/_interopDefault(Qa);
|
|
24
24
|
|
|
25
|
-
function jt(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function St(t){let e,r=0;for(e=0;e<t.length;e++){let n=jt(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}var ee=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=D.exponential()})=>{let a=0,s=0,o;for(;s<r;){s>0&&await wn(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)},D=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 wn(t){return new Promise(e=>setTimeout(e,t))}var xt=t=>ee({operation:e=>t(e>0),maxRetries:2,backoffPolicy:D.constant(1),isSuccess:e=>e?.status?.error_code!==429});async function U(t,e,r=fetch){let n=await r(...t);if(!n.ok)throw new Error(`Request failed with status ${n.status}`);let a=await n.json();return e.parse(a)}var Ce=class{constructor(e,r){this.proxyApiUrl=e;this.fetchFn=r;}simplePrice(e){let r=new URLSearchParams(e);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(e){let{id:r,...n}=e,a=new URLSearchParams(n);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}};var Nn=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())})),qe=class{constructor(e){this.proxyApiUrl=e;}watchlistToken(e){let r=new URLSearchParams(e);return U([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],Nn)}};var q,te,re,me,z=class{constructor({storage:e,proxyApiUrl:r,fetch:n}){chunkTKL4UUHE_cjs.c(this,q,void 0);chunkTKL4UUHE_cjs.c(this,te,void 0);chunkTKL4UUHE_cjs.c(this,re,void 0);chunkTKL4UUHE_cjs.c(this,me,void 0);chunkTKL4UUHE_cjs.a(this,"transformSimplePriceResponse",(e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(a=>{let 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,q,e),chunkTKL4UUHE_cjs.d(this,te,r),chunkTKL4UUHE_cjs.d(this,re,n??globalThis.fetch),chunkTKL4UUHE_cjs.d(this,me,coreCoingeckoSdk.getBasicCoingeckoHttp(void 0,chunkTKL4UUHE_cjs.b(this,re)));}async getWatchlistDataForToken({tokenDetails:e,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new qe(chunkTKL4UUHE_cjs.b(this,te)).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?`${St(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkTKL4UUHE_cjs.b(this,q)?.get?.(s),n)return n;try{n=await xt(o=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:o}));}catch{n=void 0;}return chunkTKL4UUHE_cjs.b(this,q)?.set?.(s,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,o=`getPricesWithMarketDataByAddresses-${`${St(e)}-${r}-${n}`}`;if(a=chunkTKL4UUHE_cjs.b(this,q)?.get?.(o),a)return a;try{a=await xt(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:i}));}catch(i){console.error(i),a=void 0;}return chunkTKL4UUHE_cjs.b(this,q)?.set?.(o,a),a}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let s=await new Ce(chunkTKL4UUHE_cjs.b(this,te),chunkTKL4UUHE_cjs.b(this,re)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(s,[n])}return coreCoingeckoSdk.simpleTokenPrice(chunkTKL4UUHE_cjs.b(this,me),{assetPlatformId:e,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:a=!1,change24:s=!1,lastUpdated:o=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await new Ce(chunkTKL4UUHE_cjs.b(this,te),chunkTKL4UUHE_cjs.b(this,re)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:s,include_last_updated_at:o});return this.transformSimplePriceResponse(l,r)}return coreCoingeckoSdk.simplePrice(chunkTKL4UUHE_cjs.b(this,me),{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:s,lastUpdated:o,shouldThrow:c})}};q=new WeakMap,te=new WeakMap,re=new WeakMap,me=new WeakMap;var Ln="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",Vn="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",zt=zod.object({date:zod.string(),usd:zod.record(zod.number())}),ze=async()=>{try{return await U([Ln],zt)}catch{return await U([Vn],zt)}};var It=(t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),Ye=(t,e)=>({label:t,value:e,type:vmModuleTypes.DetailItemType.LINK}),de=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e});var Je=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.NETWORK,value:e});var At=({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 Kt=process.env.GLACIER_API_KEY;var we=()=>Kt;var Wn={rltoken:we()},ne,Xe,Ze,Jt,Qe,Xt,Ne=class extends glacierSdk.FetchHttpRequest{constructor(r){super(r);chunkTKL4UUHE_cjs.c(this,Ze);chunkTKL4UUHE_cjs.c(this,Qe);chunkTKL4UUHE_cjs.c(this,ne,0);chunkTKL4UUHE_cjs.c(this,Xe,D.exponential());}request(r){let n={...Wn,...r.query||{}},a={...r,query:Object.keys(n).length>0?n:void 0},s=()=>super.request(a);return chunkTKL4UUHE_cjs.b(this,ne)>0?chunkTKL4UUHE_cjs.e(this,Qe,Xt).call(this,s):chunkTKL4UUHE_cjs.e(this,Ze,Jt).call(this,s)}};ne=new WeakMap,Xe=new WeakMap,Ze=new WeakSet,Jt=function(r){let n=r();return new glacierSdk.CancelablePromise((a,s,o)=>{o(()=>n.cancel()),n.then(i=>{chunkTKL4UUHE_cjs.d(this,ne,0),a(i);}).catch(i=>{if(i instanceof glacierSdk.ApiError){let c=i.status===429,l=i.status>=500&&i.status<600;chunkTKL4UUHE_cjs.d(this,ne,chunkTKL4UUHE_cjs.b(this,ne)+Number(c||l));}s(i);});})},Qe=new WeakSet,Xt=function(r){let n=chunkTKL4UUHE_cjs.b(this,Xe).call(this,chunkTKL4UUHE_cjs.b(this,ne));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 F=(t,e)=>({message:`${t}${e instanceof Error?`: ${e.message}`:""}`,data:{cause:e}});var Zt={name:"EVM",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/index.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider/index.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:[],namespaces:["eip155"]},cointype:"60",permissions:{rpc:{dapps:!0,methods:["personal_sign","eth_sendTransaction","eth_sendTransactionBatch","eth_*","web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"],nonRestrictedMethods:["eth_requestAccounts","eth_decrypt","eth_getEncryptionPublicKey","eth_subscribe","eth_unsubscribe","eth_blockNumber","eth_call","eth_chainId","eth_coinbase","eth_estimateGas","eth_feeHistory","eth_gasPrice","eth_getBalance","eth_getBlockByHash","eth_getBlockByNumber","eth_getBlockTransactionCountByHash","eth_getBlockTransactionCountByNumber","eth_getCode","eth_getFilterChanges","eth_getFilterLogs","eth_getLogs","eth_getProof","eth_getStorageAt","eth_getTransactionByBlockHashAndIndex","eth_getTransactionByBlockNumberAndIndex","eth_getTransactionByHash","eth_getTransactionCount","eth_getTransactionReceipt","eth_getUncleCountByBlockHash","eth_getUncleCountByBlockNumber","eth_newBlockFilter","eth_newFilter","eth_newPendingTransactionFilter","eth_syncing","eth_uninstallFilter","net_version","net_peerCount","net_listening","web3_sha3","web3_clientVersion"]}},manifestVersion:"0.1"};var Qt="DUMMY_API_KEY";var jn={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},qn={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},tr=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return jn;case vmModuleTypes.Environment.DEV:return qn}};var et=({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 ar=t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string";var or=async t=>{let{secretId:e,approvalController:r}=t,n=ar(t)?et(t).EVM:void 0,a=await r.requestPublicKey({curve:"secp256k1",secretId:e,derivationPath:n});return {[vmModuleTypes.NetworkVMType.EVM]:ethers.computeAddress(`0x${a}`)}};var B=async t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:s=2e3}=t,o=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:a},Zn(n),new ethers.Network(r,e));return o.pollingInterval=s,o},Xn=["glacier-api.avax.network","proxy-api.avax.network"];function Zn(t){let e=new URL(t),r=we();if(r&&Xn.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}var fe=zod.z.object({from:zod.z.string().length(42),to:zod.z.string().length(42).optional(),data:zod.z.string().optional(),value:zod.z.string().startsWith("0x").optional(),gas:zod.z.string().startsWith("0x").optional(),gasPrice:zod.z.string().startsWith("0x").optional(),maxFeePerGas:zod.z.string().startsWith("0x").optional(),maxPriorityFeePerGas:zod.z.string().startsWith("0x").optional(),nonce:zod.z.string().optional(),chainId:zod.z.string().optional().or(zod.z.number().optional()),accessList:zod.z.array(zod.z.object({address:zod.z.string().startsWith("0x"),storageKeys:zod.z.array(zod.z.string())})).optional()});var sr=zod.z.tuple([fe,fe]).rest(fe).refine(t=>Ct(t,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(t=>Ct(t,"from"),{message:'All transactions must use the same "from" address'}).refine(t=>ra(t,"nonce")||ta(t,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'}),Qn=zod.z.object({skipIntermediateTxs:zod.z.boolean().optional()}),ea=zod.z.union([sr,zod.z.object({transactions:sr,options:Qn.optional()})]);function ta(t,e){return !Ct(t,e)}function ra(t,e){return t.every(r=>r[e]===void 0||r[e]==="")}function Ct(t,e){return new Set(t.map(n=>n[e])).size===1}var ir=t=>{let e=ea.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 tt=async({from:t,provider:e})=>e.getTransactionCount(t);var cr=async(t,e)=>{if(t[0].nonce)return;let r=await tt({from:t[0].from,provider:e});return Promise.all(t.map(async(n,a)=>{n.nonce=String(r+a);}))};var lr=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER,vmModuleTypes.TransactionType.NFT_SEND,vmModuleTypes.TransactionType.NFT_RECEIVE],ae=(o=>(o.TOTAL_SUPPLY="totalSupply",o.BALANCE_OF="balanceOf",o.TRANSFER="transfer",o.TRANSFER_FROM="transferFrom",o.APPROVE="approve",o.ALLOWANCE="allowance",o))(ae||{});var rt=t=>{if(t.data)try{let r=new ethers.Interface(Tr__default.default.abi).parseTransaction({data:t.data,value:t.value}),n=r?.name??r?.fragment?.name;return n&&oa(n)?n:void 0}catch{return}};function oa(t){return Object.values(ae).includes(t)}var nt=(t,e,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:s,alert:o})=>{let{dappInfo:i}=t,c=rt(r),l="Do you approve this transaction?";c==="approve"&&(l="Do you approve this spend limit?");let p=[de("Account",r.from),Je("Network",{name:e.chainName,logoUri:e.logoUri}),Ye("Website",i)];r.to&&p.push(de("Contract",r.to));let u={title:l,details:[{title:"Transaction Details",items:p}],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}};var at=async(t,e,r)=>{if("txHash"in e)return e.txHash;let n=()=>t.send("eth_sendRawTransaction",[e.signedData]);return r?.shouldRetry?ee({operation:()=>n(),isSuccess:()=>!0,maxRetries:6,backoffPolicy:D.linearThenExponential(4,1e3)}):n()};function ye(t,e,r="tx"){return `${t}/${r}/${e}`}var De=async({explorerUrl:t,provider:e,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:s,request:o})=>{try{let i=ye(t,r);if(n({txHash:r,request:o,explorerLink:i}),(await ee({operation:async()=>e.getTransactionReceipt(r),isSuccess:p=>!!p,backoffPolicy:D.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 ot=new Map,pr=(t,e,r)=>(ot.set(t,{signingRequests:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a},s)=>{let o=ot.get(t);if(!o)throw rpcErrors.rpcErrors.resourceNotFound();let{signingRequests:i}=o,l={signingRequests:i.map((p,u)=>{if(s===void 0||s===u){let{signingData:f}=p;return {signingData:{...f,data:{...f.data,maxFeePerGas:n??f.data.maxFeePerGas,maxPriorityFeePerGas:a??f.data.maxPriorityFeePerGas}},displayData:p.displayData}}return p}),displayData:r};return ot.set(t,l),l},cleanup:()=>ot.delete(t)});function oe(t){return !("type"in t)}function st(t){return t.type===vmModuleTypes.TokenType.ERC20}function mr(t){return typeof t.to=="string"}function dr(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}function la(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}function pa(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}function wt(t){return la(t)?t.ins.length===0&&t.outs.length===0:pa(t)?t.approvals.length===0:!1}var ur=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}})},fr=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}}),yr=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 kr=async(t,e,r)=>{if(!t.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.ethers.Contract(t.to,Tr__default.default.abi,r),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),s=hr__default.default(a[0]),o=hr__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(Tr__default.default.abi),p=l.getFunction(t.data.slice(0,10)),u=l.decodeFunctionData(t.data.slice(0,10),t.data);if(p?.name==="transfer")return {balanceChange:{outs:[{items:[{displayValue:new coreUtilsSdk.TokenUnit(u.amount,c.decimals,c.symbol).toDisplay(),usdPrice:void 0}],token:c}],ins:[]}};if(p?.name==="approve")return {tokenApprovals:{isEditable:!0,approvals:[{token:c,spenderAddress:u.spender,value:u.amount}]}}}catch(n){console.error("parseErc20Tx error",n);}return {tokenApprovals:void 0,balanceChange:void 0}};var 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 br=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,blockaid:s})=>{let o;try{o=await fr({chainId:n,params:r,domain:e,blockaid:s});}catch(i){console.error("simulateTransaction error",i);}return Nt({rpcMethod:t,params:r,chainId:n,provider:a,simulationResult:o})},Nt=async({rpcMethod:t,params:e,chainId:r,provider:n,simulationResult:a})=>{let s,o,i,c=!1,l;if(a){let{validation:p,simulation:u,gas_estimation:f}=a;!p||p.result_type==="Error"||p.result_type==="Warning"?s=K[vmModuleTypes.AlertType.WARNING]:p.result_type==="Malicious"&&(s=K[vmModuleTypes.AlertType.DANGER]),u?.status==="Success"&&(c=!0,i=Er(t,u.account_summary),o=Pr(u.account_summary.assets_diffs)),f?.status==="Success"&&(l=Number(f.estimate));}if(!c&&mr(e)){let p=await kr(e,r,n);o=p.balanceChange,i=p.tokenApprovals;}return {alert:s,balanceChange:o,tokenApprovals:i,isSimulationSuccessful:c,estimatedGasLimit:l}},Ta=t=>t.trace_type==="ExposureTrace",ka=(t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,va=t=>t===void 0||t.length===0?{}:t.reduce((e,r)=>Ta(r)?{[ka(r.spender,r.asset.address)]:r}:e,{}),Er=(t,e)=>{let{traces:r}=e,n=va(r),a=Object.entries(n).map(([o,i])=>{let c=Rr(i.asset);if(!c)return;let l={token:c,spenderAddress:i.spender,logoUri:c.logoUri};if(i.type==="ERC20ExposureTrace"){let{exposed:{raw_value:p,value:u,usd_price:f}}=i;if(!u||u<=0)return;l.value=p,l.usdPrice=`${f}`;}if(i.type==="ERC721ExposureTrace")if(!i.exposed)l.value=`0x${ethers.MaxUint256.toString(16)}`;else {let{usd_price:p,amount:u}=i.exposed;l.value=`${u}`,l.usdPrice=`${p}`;}return l}).filter(Boolean);return a.length===0?void 0:{isEditable:a.length===1&&a[0]?.token.type===vmModuleTypes.TokenType.ERC20&&t===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:a}},Pr=t=>{let e=vr(t,"in"),r=vr(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},vr=(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?Rr(n):ba(n);if(!a)return;let s=r[e].map(o=>{let i;if("value"in o&&o.value)if("decimals"in a){let u=coreUtilsSdk.numberToBN(o.value,a.decimals);i=coreUtilsSdk.balanceToDisplayValue(u,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),Rr=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},ba=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),Sr=async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:a,blockaid:s})=>{let o,i,c;try{let{validation:l,simulation:p}=await yr({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=Er(t.method,p.account_summary),i=Pr(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 Ir=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,populateMissingGas:s,blockaid:o})=>{let i;try{i=await ur({chainId:n,params:r,domain:e,withGasEstimation:s,blockaid:o});}catch(d){return console.error("simulateTransactionBatch error",d),{isSimulationSuccessful:!1,alert:K[vmModuleTypes.AlertType.WARNING],scans:[]}}let c=await Promise.all(i.map(async(d,y)=>{let b=r[y],R=await Nt({chainId:n,params:r[y],provider:a,rpcMethod:t,simulationResult:d});return s&&!b.gas&&R.estimatedGasLimit&&(b.gas=`0x${R.estimatedGasLimit.toString(16)}`),{transaction:b,...R}})),l=c.every(d=>d.isSimulationSuccessful),p=Ea(c),u=Ra(c),f=Pa(c);return {isSimulationSuccessful:l,alert:p,balanceChange:u,tokenApprovals:f,scans:c.map(d=>(d.tokenApprovals&&(d.tokenApprovals.isEditable=!1),d))}},Ea=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)},Pa=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 Sa(e,t),wt(e)?void 0:e},Ra=t=>{let e=t.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(a=>{let s=xr(r.ins,a);s?s.items.push(...a.items):r.ins.push(a);}),n.outs.forEach(a=>{let s=xr(r.outs,a);s?s.items.push(...a.items):r.outs.push({...a});})),r),{ins:[],outs:[]});return wt(e)?void 0:e},xr=(t,e)=>t.find(r=>oe(r.token)&&oe(e.token)?r.token.symbol===e.token.symbol:!oe(r.token)&&!oe(e.token)?r.token.address===e.token.address:!1),Sa=(t,e)=>{for(let r of t.approvals)for(let n of e)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(s=>!oe(s.token)&&!oe(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 Ar=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:s,success:o,error:i}=ir(a);if(!o)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams(F("Transaction params are invalid",i))};let{transactions:c,options:l={}}=s,{skipIntermediateTxs:p=!1}=l,u=await B({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});try{await cr(c,u);}catch(w){return console.error("Unable to calculate nonce",w),{error:rpcErrors.rpcErrors.internal(F("Unable to calculate nonce",w))}}let f=c.every(w=>Number(w.gas)>0),{alert:d,balanceChange:y,isSimulationSuccessful:b,tokenApprovals:R,scans:E}=await Ir({rpcMethod:t.method,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:u,populateMissingGas:!f,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:[de("Account",c[0].from),Je("Network",{name:e.chainName,logoUri:e.logoUri}),Ye("Website",t.dappInfo)]}],isSimulationSuccessful:b,balanceChange:y,alert:d,tokenApprovals:R,networkFeeSelector:!0},g=E.map(w=>nt(t,e,w.transaction,w)),{cleanup:v,updateTx:G}=pr(t.requestId,g,I),W=await r.requestBatchApproval({request:t,signingRequests:g,displayData:I,updateTx:G});if(v(),"error"in W)return {error:W.error};if(W.result.length!==c.length)return {error:rpcErrors.rpcErrors.internal({message:`Invalid number of signatures. Expected ${c.length}, got ${W.result.length}`})};let Ae=[];for(let[w,Cn]of W.result.entries()){let Ht=w===W.result.length-1,Rt=await at(u,Cn);if(Ht&&De({explorerUrl:e.explorerUrl??"",provider:u,txHash:Rt,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),!Ht&&!p&&!await De({explorerUrl:e.explorerUrl??"",provider:u,txHash:Rt,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}))return {error:rpcErrors.rpcErrors.internal({message:`Transaction ${w+1} failed! Batch execution stopped`})};Ae.push(Rt);}return {result:Ae}};function Cr(t,e,r){return new ethers.ethers.Contract(t,Tr__default.default.abi).interface.encodeFunctionData("approve",[e,r])}var lt=new Map,wr=(t,e,r)=>(lt.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a,approvalLimit:s,gasLimit:o})=>{let i=lt.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}},u={...l};if(typeof s=="string"){if(!s.startsWith("0x"))throw rpcErrors.rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let d=l.tokenApprovals;Aa(d),Ca(c.data.data);let y=d.approvals[0];p.data.data=Cr(y.token.address,y.spenderAddress,s),u.tokenApprovals={approvals:[{...y,value:s}],isEditable:!0};}let f={signingData:p,displayData:u};return lt.set(t,f),f},cleanup:()=>lt.delete(t)});function Aa(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 Ca(t){if((!t||t==="0x"?null:rt({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}var Nr=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 Na=zod.z.tuple([fe]),_r=t=>Na.safeParse(t);var Br=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:s,error:o,success:i}=_r(a);if(!i)return console.error("invalid params",o),{error:rpcErrors.rpcErrors.invalidParams(F("Transaction params are invalid",o))};let[c]=s,l=await B({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});if(!c.gas||Number(c.gas)<0)try{let T=await Nr({transactionParams:{from:c.from,to:c.to,data:c.data,value:c.value,accessList:c.accessList},provider:l});c.gas="0x"+T.toString(16);}catch(T){return {error:rpcErrors.rpcErrors.internal(F("Unable to calculate gas limit",T))}}if(!c.nonce)try{let T=await tt({from:c.from,provider:l});c.nonce=String(T);}catch(T){return {error:rpcErrors.rpcErrors.internal(F("Unable to calculate nonce",T))}}let p=await br({rpcMethod:t.method,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:l,blockaid:n}),{displayData:u,signingData:f}=nt(t,e,c,p),{updateTx:d,cleanup:y}=wr(t.requestId,f,u),b=await r.requestApproval({request:t,displayData:u,signingData:f,updateTx:d});if(y(),"error"in b)return {error:b.error};let R,E=t.context?.shouldRetry===!0;try{R=await at(l,b,{shouldRetry:E});}catch(T){return {error:rpcErrors.rpcErrors.internal(F("Unable to get transaction hash",T))}}return De({explorerUrl:e.explorerUrl??"",provider:l,txHash:R,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),{result:R}};var _t=t=>{let e="";e+=`Domain
|
|
26
|
-
`;for(let r in t.domain)e+=` ${r}: ${
|
|
25
|
+
function zt(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function xt(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 _n(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 _n(t){return new Promise(e=>setTimeout(e,t))}var At=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 Ne=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 Bn=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())})),Ye=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"}}],Bn)}};var z,re,ne,de,Y=class{constructor({storage:e,proxyApiUrl:r,fetch:n}){chunkTKL4UUHE_cjs.c(this,z,void 0);chunkTKL4UUHE_cjs.c(this,re,void 0);chunkTKL4UUHE_cjs.c(this,ne,void 0);chunkTKL4UUHE_cjs.c(this,de,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,z,e),chunkTKL4UUHE_cjs.d(this,re,r),chunkTKL4UUHE_cjs.d(this,ne,n??globalThis.fetch),chunkTKL4UUHE_cjs.d(this,de,coreCoingeckoSdk.getBasicCoingeckoHttp(void 0,chunkTKL4UUHE_cjs.b(this,ne)));}async getWatchlistDataForToken({tokenDetails:e,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new Ye(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?`${xt(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkTKL4UUHE_cjs.b(this,z)?.get?.(s),n)return n;try{n=await At(o=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:o}));}catch{n=void 0;}return chunkTKL4UUHE_cjs.b(this,z)?.set?.(s,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,o=`getPricesWithMarketDataByAddresses-${`${xt(e)}-${r}-${n}`}`;if(a=chunkTKL4UUHE_cjs.b(this,z)?.get?.(o),a)return a;try{a=await At(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:i}));}catch(i){console.error(i),a=void 0;}return chunkTKL4UUHE_cjs.b(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 Ne(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,de),{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 Ne(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,de),{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:s,lastUpdated:o,shouldThrow:c})}};z=new WeakMap,re=new WeakMap,ne=new WeakMap,de=new WeakMap;var On="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",Hn="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",Kt=zod.object({date:zod.string(),usd:zod.record(zod.number())}),Ke=async()=>{try{return await D([On],Kt)}catch{return await D([Hn],Kt)}};var Ct=(t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),Xe=(t,e)=>({label:t,value:e,type:vmModuleTypes.DetailItemType.LINK}),ue=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e});var Ze=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.NETWORK,value:e});var Nt=({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 Jt=process.env.GLACIER_API_KEY;var we=()=>Jt;var qn={rltoken:we()},ae,Qe,et,Zt,tt,Qt,_e=class extends glacierSdk.FetchHttpRequest{constructor(r){super(r);chunkTKL4UUHE_cjs.c(this,et);chunkTKL4UUHE_cjs.c(this,tt);chunkTKL4UUHE_cjs.c(this,ae,0);chunkTKL4UUHE_cjs.c(this,Qe,F.exponential());}request(r){let n={...qn,...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,tt,Qt).call(this,s):chunkTKL4UUHE_cjs.e(this,et,Zt).call(this,s)}};ae=new WeakMap,Qe=new WeakMap,et=new WeakSet,Zt=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);});})},tt=new WeakSet,Qt=function(r){let n=chunkTKL4UUHE_cjs.b(this,Qe).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 er={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 tr="DUMMY_API_KEY";var zn={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Yn={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},nr=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return zn;case vmModuleTypes.Environment.DEV:return Yn}};var rt=({accountIndex:t,derivationPathType:e})=>{if(t<0)throw rpcErrors.rpcErrors.invalidParams("Account index must be a non-negative integer");switch(e){case"bip44":return {[vmModuleTypes.NetworkVMType.EVM]:`m/44'/60'/0'/0/${t}`};case"ledger_live":return {[vmModuleTypes.NetworkVMType.EVM]:`m/44'/60'/${t}'/0/0`};default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported derivation path type: ${e}`)}};var sr=t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string";var ir=async t=>{let{secretId:e,approvalController:r}=t,n=sr(t)?rt(t).EVM:void 0,a=await r.requestPublicKey({curve:"secp256k1",secretId:e,derivationPath:n});return {[vmModuleTypes.NetworkVMType.EVM]:ethers.computeAddress(`0x${a}`)}};var U=async t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:s=2e3,customRpcHeaders:o}=t,i=ta(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},ea=["glacier-api.avax.network","proxy-api.avax.network"];function ta(t){let e=new URL(t),r=we();if(r&&ea.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}var ye=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 cr=zod.z.tuple([ye,ye]).rest(ye).refine(t=>wt(t,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(t=>wt(t,"from"),{message:'All transactions must use the same "from" address'}).refine(t=>oa(t,"nonce")||aa(t,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'}),ra=zod.z.object({skipIntermediateTxs:zod.z.boolean().optional()}),na=zod.z.union([cr,zod.z.object({transactions:cr,options:ra.optional()})]);function aa(t,e){return !wt(t,e)}function oa(t,e){return t.every(r=>r[e]===void 0||r[e]==="")}function wt(t,e){return new Set(t.map(n=>n[e])).size===1}var lr=t=>{let e=na.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 nt=async({from:t,provider:e})=>e.getTransactionCount(t);var pr=async(t,e)=>{if(t[0].nonce)return;let r=await nt({from:t[0].from,provider:e});return Promise.all(t.map(async(n,a)=>{n.nonce=String(r+a);}))};var mr=[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 at=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&&ca(n)?n:void 0}catch{return}};function ca(t){return Object.values(oe).includes(t)}var ot=(t,e,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:s,alert:o})=>{let{dappInfo:i}=t,c=at(r),l="Do you approve this transaction?";c==="approve"&&(l="Do you approve this spend limit?");let p=[ue("Account",r.from),Ze("Network",{name:e.chainName,logoUri:e.logoUri}),Xe("Website",i)];r.to&&p.push(ue("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 st=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 he(t,e,r="tx"){return `${t}/${r}/${e}`}var Ue=async({explorerUrl:t,provider:e,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:s,request:o})=>{try{let i=he(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 it=new Map,dr=(t,e,r)=>(it.set(t,{signingRequests:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a},s)=>{let o=it.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 it.set(t,l),l},cleanup:()=>it.delete(t)});function se(t){return !("type"in t)}function ct(t){return t.type===vmModuleTypes.TokenType.ERC20}function ur(t){return typeof t.to=="string"}function fr(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}function da(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}function ua(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}function _t(t){return da(t)?t.ins.length===0&&t.outs.length===0:ua(t)?t.approvals.length===0:!1}var yr=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}})},hr=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}}),gr=async({chainId:t,accountAddress:e,data:r,domain:n,blockaid:a})=>a.evm.jsonRpc.scan({chain:t.toString(),options:["validation","simulation"],account_address:e,data:r,metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}});var vr=async(t,e,r)=>{if(!t.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.ethers.Contract(t.to,br__default.default.abi,r),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),s=Tr__default.default(a[0]),o=Tr__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(br__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 Rr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,blockaid:s})=>{let o;try{o=await hr({chainId:n,params:r,domain:e,blockaid:s});}catch(i){console.error("simulateTransaction error",i);}return Bt({rpcMethod:t,params:r,chainId:n,provider:a,simulationResult:o})},Bt=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=Pr(t,d.account_summary),o=Sr(d.account_summary.assets_diffs)),u?.status==="Success"&&(l=Number(u.estimate));}if(!c&&ur(e)){let p=await vr(e,r,n);o=p.balanceChange,i=p.tokenApprovals;}return {alert:s,balanceChange:o,tokenApprovals:i,isSimulationSuccessful:c,estimatedGasLimit:l}},va=t=>t.trace_type==="ExposureTrace",Ea=(t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,Ra=t=>t===void 0||t.length===0?{}:t.reduce((e,r)=>va(r)?{[Ea(r.spender,r.asset.address)]:r}:e,{}),Pr=(t,e)=>{let{traces:r}=e,n=Ra(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}},Sr=t=>{let e=Er(t,"in"),r=Er(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},Er=(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):Pa(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},Pa=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),xr=async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:a,blockaid:s})=>{let o,i,c;try{let{validation:l,simulation:p}=await gr({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=Pr(t.method,p.account_summary),i=Sr(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 Cr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,populateMissingGas:s,blockaid:o})=>{let i;try{i=await yr({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 Bt({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=Sa(c),d=xa(c),u=Ia(c);return {isSimulationSuccessful:l,alert:p,balanceChange:d,tokenApprovals:u,scans:c.map(f=>(f.tokenApprovals&&(f.tokenApprovals.isEditable=!1),f))}},Sa=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)},Ia=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 Aa(e,t),_t(e)?void 0:e},xa=t=>{let e=t.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(a=>{let s=Ar(r.ins,a);s?s.items.push(...a.items):r.ins.push(a);}),n.outs.forEach(a=>{let s=Ar(r.outs,a);s?s.items.push(...a.items):r.outs.push({...a});})),r),{ins:[],outs:[]});return _t(e)?void 0:e},Ar=(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),Aa=(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 Nr=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:s,success:o,error:i}=lr(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 pr(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 Cr({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 x={title:"Do you approve these transactions?",details:[{title:"Transaction Details",items:[ue("Account",c[0].from),Ze("Network",{name:e.chainName,logoUri:e.logoUri}),Xe("Website",t.dappInfo)]}],isSimulationSuccessful:v,balanceChange:y,alert:f,tokenApprovals:P,networkFeeSelector:!0},g=E.map(w=>ot(t,e,w.transaction,w)),{cleanup:b,updateTx:M}=dr(t.requestId,g,x),W=await r.requestBatchApproval({request:t,signingRequests:g,displayData:x,updateTx:M});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 Ce=[];for(let[w,wn]of W.result.entries()){let jt=w===W.result.length-1,It=await st(d,wn);if(jt&&Ue({explorerUrl:e.explorerUrl??"",provider:d,txHash:It,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),!jt&&!p&&!await Ue({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`})};Ce.push(It);}return {result:Ce}};function wr(t,e,r){return new ethers.ethers.Contract(t,br__default.default.abi).interface.encodeFunctionData("approve",[e,r])}var mt=new Map,_r=(t,e,r)=>(mt.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a,approvalLimit:s,gasLimit:o})=>{let i=mt.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;wa(f),_a(c.data.data);let y=f.approvals[0];p.data.data=wr(y.token.address,y.spenderAddress,s),d.tokenApprovals={approvals:[{...y,value:s}],isEditable:!0};}let u={signingData:p,displayData:d};return mt.set(t,u),u},cleanup:()=>mt.delete(t)});function wa(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 _a(t){if((!t||t==="0x"?null:at({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}var Br=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 Da=zod.z.tuple([ye]),Dr=t=>Da.safeParse(t);var Ur=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:s,error:o,success:i}=Dr(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 T=await Br({transactionParams:{from:c.from,to:c.to,data:c.data,value:c.value,accessList:c.accessList},provider:l});c.gas="0x"+T.toString(16);}catch(T){return {error:rpcErrors.rpcErrors.internal(G("Unable to calculate gas limit",T))}}if(!c.nonce)try{let T=await nt({from:c.from,provider:l});c.nonce=String(T);}catch(T){return {error:rpcErrors.rpcErrors.internal(G("Unable to calculate nonce",T))}}let p=await Rr({rpcMethod:t.method,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:l,blockaid:n}),{displayData:d,signingData:u}=ot(t,e,c,p),{updateTx:f,cleanup:y}=_r(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 st(l,v,{shouldRetry:E});}catch(T){return {error:rpcErrors.rpcErrors.internal(G("Unable to get transaction hash",T))}}return Ue({explorerUrl:e.explorerUrl??"",provider:l,txHash:P,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),{result:P}};var Dt=t=>{let e="";e+=`Domain
|
|
26
|
+
`;for(let r in t.domain)e+=` ${r}: ${ie(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}: ${
|
|
32
|
-
`;})):e+=` ${n}: ${
|
|
31
|
+
`,t.message[r][n].forEach((a,s)=>{e+=` ${s}: ${ie(a)}
|
|
32
|
+
`;})):e+=` ${n}: ${ie(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}: ${
|
|
37
|
-
`;})):e+=` ${s}: ${
|
|
38
|
-
`;})):e+=` ${r}: ${
|
|
39
|
-
`;return e},
|
|
40
|
-
`,e+=`${
|
|
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},Fr=t=>{let e="";return t.forEach(r=>{e+=`${r.name}:
|
|
40
|
+
`,e+=`${ie(String(r.value))}
|
|
41
41
|
|
|
42
|
-
`;}),e},se=t=>{let e={0:"\u{1D7EC}",1:"\u{1D7ED}",2:"\u{1D7EE}",3:"\u{1D7EF}",4:"\u{1D7F0}",5:"\u{1D7F1}",6:"\u{1D7F2}",7:"\u{1D7F3}",8:"\u{1D7F4}",9:"\u{1D7F5}",a:"\u{1D5EE}",b:"\u{1D5EF}",c:"\u{1D5F0}",d:"\u{1D5F1}",e:"\u{1D5F2}",f:"\u{1D5F3}",g:"\u{1D5F4}",h:"\u{1D5F5}",i:"\u{1D5F6}",j:"\u{1D5F7}",k:"\u{1D5F8}",l:"\u{1D5F9}",m:"\u{1D5FA}",n:"\u{1D5FB}",o:"\u{1D5FC}",p:"\u{1D5FD}",q:"\u{1D5FE}",r:"\u{1D5FF}",s:"\u{1D600}",t:"\u{1D601}",u:"\u{1D602}",v:"\u{1D603}",w:"\u{1D604}",x:"\u{1D605}",y:"\u{1D606}",z:"\u{1D607}",A:"\u{1D5D4}",B:"\u{1D5D5}",C:"\u{1D5D6}",D:"\u{1D5D7}",E:"\u{1D5D8}",F:"\u{1D5D9}",G:"\u{1D5DA}",H:"\u{1D5DB}",I:"\u{1D5DC}",J:"\u{1D5DD}",K:"\u{1D5DE}",L:"\u{1D5DF}",M:"\u{1D5E0}",N:"\u{1D5E1}",O:"\u{1D5E2}",P:"\u{1D5E3}",Q:"\u{1D5E4}",R:"\u{1D5E5}",S:"\u{1D5E6}",T:"\u{1D5E7}",U:"\u{1D5E8}",V:"\u{1D5E9}",W:"\u{1D5EA}",X:"\u{1D5EB}",Y:"\u{1D5EC}",Z:"\u{1D5ED}"};return t.split("").map(r=>e[r]||r).join("")};var Ge=zod.z.string().describe("message"),M=zod.z.string().describe("address");var Fr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([M,Ge])});var Gr=zod.z.object({name:zod.z.string(),type:zod.z.string()}),ge=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(Gr)}).catchall(zod.z.array(Gr)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),Dt=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(),Ut=ge.or(Dt),Mr=zod.z.union([zod.z.string().describe("data string"),ge]),Lr=zod.z.union([zod.z.string().describe("data string"),Ut]),Vr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([M,Lr])}),Or=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([M,Lr])}),$r=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([M,Mr])}),Wr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([M,Mr])});var Hr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([Ge,M]),zod.z.tuple([Ge,M,zod.z.string().optional().describe("password")])])});var Da=zod.z.discriminatedUnion("method",[Hr,Fr,Vr,Or,$r,Wr]).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:Ut.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:ge.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 jr(t){return Da.safeParse(t)}var qr=t=>Dt.safeParse(t).success,cl=t=>ge.safeParse(t).success;var zr=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 Kr=async({request:t,network:e,approvalController:r,blockaid:n})=>{let a=jr({method:t.method,params:t.params});if(!a.success)return console.error("invalid params",a.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams(F("Params are invalid",a.error))};let{method:s,data:o,address:i}=a.data,c;(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(c=zr(o));let l,p,u;if(c&&!c.isValid&&(u={type:vmModuleTypes.AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements. Please verify message content!",detailedDescription:c.error.toString()}}),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=qr(o)?Dr(o):_t(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:b,primaryType:R,...E}=o;p=_t(E);}if(!l||!p)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let f=await Sr({request:t,accountAddress:i,chainId:e.chainId,data:{method:s,params:t.params},dAppUrl:t.dappInfo.url,blockaid:n}),d={title:"Sign Message",dAppInfo:{name:t.dappInfo.name,action:`${t.dappInfo.name} is requesting to sign the following message`,logoUri:t.dappInfo.icon},network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},account:i,details:[{title:"Message",items:[It("Message",p,"vertical")]}],alert:f?.alert??u,balanceChange:f?.balanceChange,tokenApprovals:f?.tokenApprovals},y=await r.requestApproval({request:t,displayData:d,signingData:l});return "error"in y?{error:y.error}:"signedData"in y?{result:y.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var Yr=async(t,e)=>{try{return {result:await(await B({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3})).send(t.method,t.params)}}catch(r){let n=r.info?.error?.message||r.error?.message||r.message;return {error:rpcErrors.rpcErrors.internal(n)}}};var Xr=async({accountIndex:t,xpub:e,walletType:r})=>{switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getAddressFromXPub(e,t)};case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{let n=Buffer.from(e,"hex");return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getEvmAddressFromPubKey(n)}}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}};function ve(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}async function be(t){return await Promise.allSettled(t).then(e=>e.reduce((r,n)=>{if(n.status==="fulfilled"){let a=n.value;a.status==="fulfilled"?r[a.id]=a.value:r[a.id]={error:a.reason};}return r},{}))}async function ut({chainId:t,proxyApiUrl:e}){let r=await fetch(`${e}/tokens?evmChainId=${t}`);if(!r.ok)throw rpcErrors.rpcErrors.internal(`Failed to fetch tokens for chainId ${t}`);return r.json()}var _,Ee,ie,Ve,Pe,ft=class{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:a,fetch:s}){chunkTKL4UUHE_cjs.c(this,_,void 0);chunkTKL4UUHE_cjs.c(this,Ee,void 0);chunkTKL4UUHE_cjs.c(this,ie,void 0);chunkTKL4UUHE_cjs.c(this,Ve,void 0);chunkTKL4UUHE_cjs.c(this,Pe,void 0);chunkTKL4UUHE_cjs.d(this,_,e),chunkTKL4UUHE_cjs.d(this,Ee,r),chunkTKL4UUHE_cjs.d(this,ie,n),chunkTKL4UUHE_cjs.d(this,Ve,a),chunkTKL4UUHE_cjs.d(this,Pe,s);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let a=await B({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,_).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,_).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,_).utilityAddresses?.multicall}),s=chunkTKL4UUHE_cjs.b(this,_).pricingProviders?.coingecko.nativeTokenId,o=chunkTKL4UUHE_cjs.b(this,_).networkToken,i=new z({storage:chunkTKL4UUHE_cjs.b(this,Ee),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ie),fetch:chunkTKL4UUHE_cjs.b(this,Pe)}),c=s?await i.getSimplePrice({coinIds:[s],currencies:[n]}):{},l=c?.[s??""]?.[n]?.price??void 0,p=c?.[s??""]?.[n]?.marketCap??void 0,u=c?.[s??""]?.[n]?.vol24??void 0,f=c?.[s??""]?.[n]?.change24??void 0,d=await a.getBalance(r),y=new coreUtilsSdk.TokenUnit(d,o.decimals,o.symbol),b=l!==void 0?y.mul(l):void 0;return {...o,coingeckoId:s??"",type:vmModuleTypes.TokenType.NATIVE,balance:d,balanceDisplayValue:y.toDisplay(),balanceInCurrency:b?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:b?.toDisplay({fixedDp:2}),priceInCurrency:l,marketCap:p,vol24:u,change24:f}}async listErc20Balances({chainId:e,address:r,currency:n}){let a=await B({chainId:e,chainName:chunkTKL4UUHE_cjs.b(this,_).chainName,rpcUrl:chunkTKL4UUHE_cjs.b(this,_).rpcUrl,multiContractAddress:chunkTKL4UUHE_cjs.b(this,_).utilityAddresses?.multicall}),s=chunkTKL4UUHE_cjs.b(this,_).pricingProviders?.coingecko.assetPlatformId,o=chunkTKL4UUHE_cjs.b(this,_).pricingProviders?.coingecko.nativeTokenId,i=await ut({chainId:Number(e),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ie)}),c=i.map(E=>E.address),l=[...i,...chunkTKL4UUHE_cjs.b(this,Ve)].filter(st),p=async E=>{let g=await new ethers.ethers.Contract(E.address,Tr__default.default.abi,a).balanceOf?.(r)||0n;return {...E,balance:g}},u=l.map(E=>ve(p(E),E.address)),f=await be(u),d=new z({storage:chunkTKL4UUHE_cjs.b(this,Ee),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ie),fetch:chunkTKL4UUHE_cjs.b(this,Pe)}),y=s&&await d.getPricesByAddresses(c,s,n)||{},b=Object.keys(f),R={};for(let E=0;E<b.length;E++){let T=b[E];if(T===void 0)continue;let I=f[T];if(I===void 0||"error"in I){R[T]={error:`rpcService:getTokenWithBalance failed: ${I?.error??"unknown error"}`};continue}let g=y?.[o??""]?.[n]?.price??void 0,v=y?.[o??""]?.[n]?.marketCap??void 0,G=y?.[o??""]?.[n]?.vol24??void 0,W=y?.[o??""]?.[n]?.change24??void 0,Ae=new coreUtilsSdk.TokenUnit(I.balance,I.decimals,I.symbol),w=g!==void 0?Ae.mul(g):void 0;R[I.address.toLowerCase()]={...I,type:vmModuleTypes.TokenType.ERC20,balance:I.balance,balanceDisplayValue:Ae.toDisplay(),balanceInCurrency:w?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:w?.toDisplay({fixedDp:2}),priceInCurrency:g,marketCap:v,change24:W,vol24:G,reputation:null};}return R}async listNftBalances(){return {}}};_=new WeakMap,Ee=new WeakMap,ie=new WeakMap,Ve=new WeakMap,Pe=new WeakMap;async function en(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 tn=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,u=[...i,new ft({network:r,storage:o,proxyApiUrl:n,customTokens:s,fetch:l})],f=await en(u,y=>y.isNetworkSupported(r.chainId)),d={};if(f){let y=[],b=[],R=[];t.forEach(g=>{a.includes(vmModuleTypes.TokenType.NATIVE)&&y.push(ve(f.getNativeBalance({address:g,currency:e.toUpperCase(),chainId:p}).then(async v=>{if(v.symbol==="AVAX"){let G=await c.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:e.toUpperCase()});return {...v,priceInCurrency:G.priceInCurrency,marketCap:G.marketCap,vol24:G.vol24,change24:G.change24}}return v}),g)),a.includes(vmModuleTypes.TokenType.ERC20)&&b.push(ve(f.listErc20Balances({customTokens:s.filter(st),currency:e.toUpperCase(),chainId:p,address:g,pageSize:100}),g)),(a.includes(vmModuleTypes.TokenType.ERC721)||a.includes(vmModuleTypes.TokenType.ERC1155))&&R.push(ve(f.listNftBalances({chainId:p,address:g}),g));});let E=await be(y),T=await be(b),I=await be(R);Object.keys(E).forEach(g=>{let v=E[g];if(!v||"error"in v){d[g]={error:`getNativeBalance failed: ${v?.error??"unknown error"}`};return}let G=v.symbol;d[g]={[G]:v};}),Object.keys(T).forEach(g=>{let v=T[g];!v||"error"in v&&typeof v.error!="string"?d[g]={...d[g],error:"listErc20Balances failed: unknown error"}:"error"in v&&typeof v.error=="string"?d[g]={...d[g],error:`listErc20Balances failed: ${v.error}`}:d[g]={...d[g],...v};}),Object.keys(I).forEach(g=>{let v=I[g];!v||"error"in v&&typeof v.error!="string"?d[g]={...d[g],error:"listNftBalances failed: unknown error"}:"error"in v&&typeof v.error=="string"?d[g]={...d[g],error:`listNftBalances failed: ${v.error}`}:d[g]={...d[g],...v};});}else t.forEach(y=>{d[y]={error:"unsupported network"};});return d};var Mt={LOW:1n,MEDIUM:4n,HIGH:6n},Lt=500000000n,ja=t=>t===coreChainsSdk.ChainId.AVALANCHE_TESTNET_ID||t===coreChainsSdk.ChainId.AVALANCHE_MAINNET_ID;async function an({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,caipId:a,proxyApiUrl:s}){let o=await B({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n});if(!s)throw rpcErrors.rpcErrors.internal("Proxy API URL is needed");if(ja(t))try{let E=await qa(o);return {...E,baseFee:E.medium.maxFeePerGas,displayDecimals:9,isFixedFee:!1}}catch{console.error("eth_suggestPriceOptions call failed, falling back to legacy fee fetching");}let i=await o.getBlock("latest",!1);if(!i)throw rpcErrors.rpcErrors.internal("There is no block");let c=i.baseFeePerGas;if(!c)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let l=await za(s,a),p=new coreUtilsSdk.TokenUnit(l,0,""),u=new coreUtilsSdk.TokenUnit(c,0,""),f=BigInt("1000000000"),d=u.mul(p).add(f).toSubUnit(),y=Lt*Mt.LOW,b=Lt*Mt.MEDIUM,R=Lt*Mt.HIGH;return {baseFee:d,low:{maxFeePerGas:d+y,maxPriorityFeePerGas:y},medium:{maxFeePerGas:d+b,maxPriorityFeePerGas:b},high:{maxFeePerGas:d+R,maxPriorityFeePerGas:R},isFixedFee:!1,displayDecimals:9}}async function qa(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 za(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 sn(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}function Vt(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=>sn(p.type)&&p.to?.address?.toLowerCase()===s),i=a.some(p=>sn(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 cn=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a,s)=>{let o=!e&&!r&&!n,i=Ya(t.method?.methodName),c=a.toLowerCase(),l=i.toLowerCase().includes("swap"),p=o&&t.from.address.toLowerCase()===c,u=o&&t.to.address.toLowerCase()===c,f=i==="Market Buy Orders With Eth"||i==="Buy NFT",d=i==="Approve",y=i.toLowerCase().includes("transfer"),b=i.toLowerCase().includes("airdrop"),R=i.toLowerCase().includes("unwrap"),E=i==="Fill Order",T;l?T=vmModuleTypes.TransactionType.SWAP:p?T=vmModuleTypes.TransactionType.SEND:u?T=vmModuleTypes.TransactionType.RECEIVE:f?T=vmModuleTypes.TransactionType.NFT_BUY:d?T=vmModuleTypes.TransactionType.APPROVE:y?T=vmModuleTypes.TransactionType.TRANSFER:b?T=vmModuleTypes.TransactionType.AIRDROP:R?T=vmModuleTypes.TransactionType.UNWRAP:E?T=vmModuleTypes.TransactionType.FILL_ORDER:T=vmModuleTypes.TransactionType.UNKNOWN;let I=t.from.address.toLowerCase()===c;return Vt({txType:T,isSender:I,walletAddress:a,tokens:s})},Ya=(t="")=>t.includes("(")?Ka__default.default(t.split("(",1)[0]):t;function ln({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=Za(t.category),c=!Ja.has(t.category),l=to(t,e,a),p=ye(r,t.hash);return i=Vt({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 Ja=new Set(["send","receive","token send","token receive"]),Xa={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 Za(t){return Xa[t]??vmModuleTypes.TransactionType.UNKNOWN}function X(t){if(!(t==null||t===""))return {address:t}}function yt(t){return t?.trim()??""}function Qa(t){let e=t.trim().toLowerCase();return !e.startsWith("0x")||e.length<12?t.trim():`${e.slice(0,6)}\u2026${e.slice(-4)}`}function eo(t){let e=yt(t.token_symbol);if(e!=="")return e;let r=yt(t.token_name);return r!==""?r:Qa(t.address)}function to(t,e,r){let n=[],a=t.native_transfers.map(o=>ro(o,e)),s=t.erc20_transfers.map(o=>no(o));n.push(...a,...s);for(let o of t.nft_transfers)n.push(ao(o));return n.length===0&&n.push(oo(t,e,r)),n}function ro(t,e){let r=yt(t.token_symbol)||e.symbol,n=new coreUtilsSdk.TokenUnit(t.value,e.decimals,r);return {decimal:e.decimals.toString(),name:e.name,symbol:r,amount:n.toDisplay(),from:X(t.from_address),to:X(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}function no(t){let e=Number(t.token_decimals),r=eo(t),n=new coreUtilsSdk.TokenUnit(t.value,e,r),a=yt(t.token_name)||r;return {decimal:t.token_decimals,name:a,symbol:r,amount:n.toDisplay(),from:X(t.from_address),to:X(t.to_address),type:vmModuleTypes.TokenType.ERC20,address:t.address}}function 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:X(t.from_address),to:X(t.to_address),type:e,address:t.token_address}}function oo(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:X(t.from_address),to:X(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}var so="https://proxy-api.avax.network/proxy/moralis-evm";async function pn({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=`${so}/wallets/${n}/history?${i.toString()}`,l=await fetch(c);if(!l.ok)return {transactions:[],nextPageToken:""};let p=await l.json();return Array.isArray(p.result)?{transactions:p.result.filter(f=>f.receipt_status==="1").map(f=>ln({tx:f,networkToken:e,explorerUrl:r,chainId:t,address:n})),nextPageToken:p.cursor??""}:{transactions:[],nextPageToken:""}}catch{return {transactions:[],nextPageToken:""}}}var io=new Set([1,4,5,11155111,8453,42161,10]);function mn(t){return io.has(t)}var dn=(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(),u=i||s&&l.toLowerCase()===a.toLowerCase();return {isOutgoing:p,isIncoming:u,isSender:c===a,from:c,to:l}};async function un(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var lo="https://ipfs.io";function Re(t,e=lo){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}async function po(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}async function fn(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 po(Re(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}var mo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function yn(t,e="256"){let r=Re(t);return `${mo}/width=${e},fit/${r}`}var Tn=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 gn(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 gn(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},gn=async(t,e)=>{if(e)return e.startsWith("ipfs://")?Re(e):e;{let[r,n]=await un(fn(t));return n?"":r.image?yn(r.image):""}};var kn=async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:a})=>{let s=await Tn(t,r),o=cn(t,a,s),{isOutgoing:i,isIncoming:c,isSender:l,from:p,to:u}=dn(o,t,a),{blockTimestamp:f,txHash:d,gasPrice:y,gasUsed:b}=t.nativeTransaction,R=ye(e,d);return {isContractCall:!lr.includes(o),isIncoming:c,isOutgoing:i,isSender:l,timestamp:f*1e3,hash:d,from:p,to:u,tokens:s,gasPrice:y,gasUsed:b,chainId:n.toString(),txType:o,explorerLink:R}};var vn=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=>kn({transactions:p,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(u=>u)))).filter(p=>p.tokens.find(u=>Number(u.amount)!==0)),nextPageToken:i.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var bn=async({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s,glacierService:o})=>mn(t)?pn({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s}):o.isHealthy()?vn({networkToken:e,explorerUrl:r,chainId:t,address:n,nextPageToken:a,offset:s,glacierService:o}):{transactions:[],nextPageToken:""};var fo="https://ipfs.io";function En(t,e=fo){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}var yo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function gt(t,e="256"){let r=En(t);return `${yo}/width=${e},fit/${r}`}var Se,V,Tt=class{constructor(e,r){this.baseUrl=e;chunkTKL4UUHE_cjs.c(this,Se,[]);chunkTKL4UUHE_cjs.c(this,V,void 0);chunkTKL4UUHE_cjs.d(this,V,r??fetch);}async isNetworkSupported(e){return (await this.getChainList()).some(n=>n.community_id===e)}async getChainInfo({chainId:e}){return (await this.getChainList()).find(n=>n.id===e)}async getTokenBalance({chainId:e,address:r,tokenId:n}){let a=await chunkTKL4UUHE_cjs.b(this,V).call(this,`${this.baseUrl}/v1/user/token?id=${r}&chain_id=${e}&token_id=${n}`);if(a.ok)return await a.json();throw new Error(`${a.status}:${a.statusText}`)}async getTokensBalanceOnChain({chainId:e,address:r}){let n=await chunkTKL4UUHE_cjs.b(this,V).call(this,`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getTokenList({chainId:e,address:r}){let n=await(chunkTKL4UUHE_cjs.b(this,V)??globalThis.fetch)(`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getChainList(){if(chunkTKL4UUHE_cjs.b(this,Se).length===0){let e=await chunkTKL4UUHE_cjs.b(this,V).call(this,`${this.baseUrl}/v1/chain/list`);if(e.ok)chunkTKL4UUHE_cjs.d(this,Se,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return chunkTKL4UUHE_cjs.b(this,Se)}async getNftList({address:e,chainId:r}){return U([`${this.baseUrl}/v1/user/nft_list?id=${e}&chain_id=${r}`],ko,chunkTKL4UUHE_cjs.b(this,V))}};Se=new WeakMap,V=new WeakMap;var go=zod.z.object({id:zod.z.union([zod.z.custom(ethers.isHexString),zod.z.string()]),chain:zod.z.string(),name:zod.z.string()}),To=go.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()})),ko=zod.z.array(To);var L,xe,vt,Et,Rn,bt=class{constructor({proxyApiUrl:e,fetch:r}){chunkTKL4UUHE_cjs.c(this,xe);chunkTKL4UUHE_cjs.c(this,Et);chunkTKL4UUHE_cjs.c(this,L,void 0);chunkTKL4UUHE_cjs.d(this,L,new Tt(`${e}/proxy/debank`,r));}async isNetworkSupported(e){return chunkTKL4UUHE_cjs.b(this,L).isNetworkSupported(e)}async getNativeBalance({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid address: "+r);let{chainInfo:a,chainIdString:s}=await chunkTKL4UUHE_cjs.e(this,xe,vt).call(this,e),o=a.native_token_id,i=await chunkTKL4UUHE_cjs.b(this,L).getTokenBalance({address:r,chainId:s,tokenId:o}),c=new coreUtilsSdk.TokenUnit(i.raw_amount,i.decimals,i.symbol),l=c.toDisplay(),u=(await ze()).usd[n.toLowerCase()],f=u?u*i.price:void 0,d=f?c.mul(f).toDisplay({fixedDp:2}):void 0,y=f?c.mul(f).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {name:i.name,symbol:i.symbol,decimals:i.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:i.logo_url,balance:c.toSubUnit(),balanceDisplayValue:l,balanceInCurrency:y,balanceCurrencyDisplayValue:d,priceInCurrency:f}}async listErc20Balances({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:a,chainIdString:s}=await chunkTKL4UUHE_cjs.e(this,xe,vt).call(this,e),o=await chunkTKL4UUHE_cjs.b(this,L).getTokensBalanceOnChain({chainId:s,address:r}),i=await ze(),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),u=p.toDisplay(),f=i.usd[n.toLowerCase()],d=f?f*l.price:void 0,y=d?p.mul(d).toDisplay({fixedDp:2}):void 0,b=d?p.mul(d).toDisplay({fixedDp:2,asNumber:!0}):void 0;c[l.id]={chainId:a.community_id,address:l.id,name:l.name,symbol:l.symbol,decimals:l.decimals,logoUri:l.logo_url,balance:p.toSubUnit(),balanceCurrencyDisplayValue:y,balanceDisplayValue:u,balanceInCurrency:b,priceInCurrency:d,type:vmModuleTypes.TokenType.ERC20,reputation:null};}return c}async listNftBalances({chainId:e,address:r}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listNftBalances: not valid address");let{chainIdString:n}=await chunkTKL4UUHE_cjs.e(this,xe,vt).call(this,e),a=await chunkTKL4UUHE_cjs.b(this,L).getNftList({chainId:n,address:r});return chunkTKL4UUHE_cjs.e(this,Et,Rn).call(this,a,e)}};L=new WeakMap,xe=new WeakSet,vt=async function(e){let n=(await chunkTKL4UUHE_cjs.b(this,L).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,L).getChainInfo({chainId:n});if(!a)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);return {chainInfo:a,chainIdString:n}},Et=new WeakSet,Rn=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:gt(a.content),name:a.name,symbol:"",tokenId:`${a.inner_id}`,tokenUri:a.detail_url,collectionName:a.collection_name,balance:BigInt(a.amount),balanceDisplayValue:`${a.amount}`,type:a.is_erc721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{indexStatus:glacierSdk.NftTokenMetadataStatus.UNINDEXED,description:a.description??"",properties:""}}}),{})};var O=class extends Error{constructor(){super(...arguments);chunkTKL4UUHE_cjs.a(this,"message","Glacier is unhealthy. Try again later.");}},Ro=[coreChainsSdk.ChainId.ETHEREUM_HOMESTEAD],Pt=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},Ne),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=>!Ro.includes(Number(r))),this.supportedChainIds}catch{return []}}async reindexNft({address:e,chainId:r,tokenId:n}){try{await this.glacierSdk.nfTs.reindexNft({address:e,chainId:r,tokenId:n});}catch(a){throw a instanceof O&&this.setGlacierToUnhealthy(),a}}async getTokenDetails({address:e,chainId:r,tokenId:n}){try{return this.glacierSdk.nfTs.getTokenDetails({address:e,chainId:r,tokenId:n})}catch(a){throw a instanceof O&&this.setGlacierToUnhealthy(),a}}async getNativeBalance({chainId:e,address:r,currency:n,coingeckoId:a}){try{let 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 O&&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 O&&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 O&&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:gt(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(...xo(i.erc20TokenBalances,Number(e))),o=i.nextPageToken;}while(o);return [...So(a),...s].reduce((i,c)=>({...i,[c.address.toLowerCase()]:c}),{})}catch(s){throw s instanceof O&&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 O&&this.setGlacierToUnhealthy(),s}}},So=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})),xo=(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 Ie,je,Q,$,ce,le,An=class{constructor({approvalController:e,environment:r,appInfo:n,runtime:a}){chunkTKL4UUHE_cjs.c(this,Ie,void 0);chunkTKL4UUHE_cjs.c(this,je,void 0);chunkTKL4UUHE_cjs.c(this,Q,void 0);chunkTKL4UUHE_cjs.c(this,$,void 0);chunkTKL4UUHE_cjs.c(this,ce,void 0);chunkTKL4UUHE_cjs.c(this,le,void 0);let{glacierApiUrl:s,proxyApiUrl:o}=tr(r);chunkTKL4UUHE_cjs.d(this,le,a),chunkTKL4UUHE_cjs.d(this,Ie,new Pt({glacierApiUrl:s,headers:At(n)})),chunkTKL4UUHE_cjs.d(this,je,new bt({proxyApiUrl:o,fetch:chunkTKL4UUHE_cjs.b(this,le)?.fetch})),chunkTKL4UUHE_cjs.d(this,Q,o),chunkTKL4UUHE_cjs.d(this,$,e),chunkTKL4UUHE_cjs.d(this,ce,new Ao__default.default({baseURL:o+"/proxy/blockaid/",apiKey:Qt,httpAgent:a?.httpAgent,fetch:a?.fetch}));}getProvider(e){return B({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3})}getAddress({accountIndex:e,xpub:r,walletType:n}){return Xr({accountIndex:e,xpub:r,walletType:n})}buildDerivationPath(e){return et(e)}deriveAddress(e){return or({...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,Q),fetch:chunkTKL4UUHE_cjs.b(this,le)?.fetch});return tn({addresses:e,currency:n,network:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,Q),customTokens:a,balanceServices:[chunkTKL4UUHE_cjs.b(this,Ie),chunkTKL4UUHE_cjs.b(this,je)],storage:s,tokenTypes:o,tokenService:i,fetch:chunkTKL4UUHE_cjs.b(this,le)?.fetch})}getManifest(){let e=vmModuleTypes.parseManifest(Zt);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:a,utilityAddresses:s,caipId:o}=e;return an({chainId:r,chainName:n,rpcUrl:a,multiContractAddress:s?.multicall,caipId:o,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,Q)})}getTransactionHistory(e){let{network:r,address:n,nextPageToken:a,offset:s}=e,{chainId:o,networkToken:i,explorerUrl:c=""}=r;return bn({chainId:o,networkToken:i,explorerUrl:c,address:n,nextPageToken:a,offset:s,glacierService:chunkTKL4UUHE_cjs.b(this,Ie)})}getTokens(e){let{chainId:r}=e;return ut({chainId:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,Q)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return Br({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),blockaid:chunkTKL4UUHE_cjs.b(this,ce)});case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION_BATCH:return dr(chunkTKL4UUHE_cjs.b(this,$))?Ar({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),blockaid:chunkTKL4UUHE_cjs.b(this,ce)}):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} requires BatchApprovalController`)};case vmModuleTypes.RpcMethod.PERSONAL_SIGN:case vmModuleTypes.RpcMethod.ETH_SIGN:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:return Kr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),blockaid:chunkTKL4UUHE_cjs.b(this,ce)});default:return Co(e.method)?Yr(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};Ie=new WeakMap,je=new WeakMap,Q=new WeakMap,$=new WeakMap,ce=new WeakMap,le=new WeakMap;var Co=t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t);
|
|
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"),L=zod.z.string().describe("address");var Mr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([L,Me])});var Lr=zod.z.object({name:zod.z.string(),type:zod.z.string()}),Te=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(Lr)}).catchall(zod.z.array(Lr)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),Ft=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(),Gt=Te.or(Ft),Vr=zod.z.union([zod.z.string().describe("data string"),Te]),Or=zod.z.union([zod.z.string().describe("data string"),Gt]),Hr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([L,Or])}),$r=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([L,Or])}),Wr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([L,Vr])}),qr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([L,Vr])});var jr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([Me,L]),zod.z.tuple([Me,L,zod.z.string().optional().describe("password")])])});var Ga=zod.z.discriminatedUnion("method",[jr,Mr,Hr,$r,Wr,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:Gt.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:Te.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 Ga.safeParse(t)}var Yr=t=>Ft.safeParse(t).success,ul=t=>Te.safeParse(t).success;var Kr=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 Jr=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=Kr(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=Yr(o)?Fr(o):Dt(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=Dt(E);}if(!l||!p)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let u=await xr({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:[Ct("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 Xr=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 Qr=async({accountIndex:t,xpub:e,walletType:r})=>{switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getAddressFromXPub(e,t)};case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{let n=Buffer.from(e,"hex");return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getEvmAddressFromPubKey(n)}}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}};function ve(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}async function Ee(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 qa={"ERC-20":vmModuleTypes.TokenType.ERC20,"ERC-721":vmModuleTypes.TokenType.ERC721,"ERC-1155":vmModuleTypes.TokenType.ERC1155,"NON-ERC":vmModuleTypes.TokenType.NONERC,SPL:vmModuleTypes.TokenType.SPL},ja=zod.z.string().transform((t,e)=>{let r=qa[t];return r||(e.addIssue({code:zod.z.ZodIssueCode.custom,message:`Unknown contractType: ${t}`}),zod.z.NEVER)}),za=zod.z.array(zod.z.object({address:zod.z.string(),chainId:zod.z.number(),contractType:ja,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 yt({chainId:t,proxyApiUrl:e}){return (await D([`${e}/tokens?evmChainId=${t}`],za)).map(n=>({...n,type:n.contractType}))}var N,Re,ce,He,Pe,ht=class{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:a,fetch:s}){chunkTKL4UUHE_cjs.c(this,N,void 0);chunkTKL4UUHE_cjs.c(this,Re,void 0);chunkTKL4UUHE_cjs.c(this,ce,void 0);chunkTKL4UUHE_cjs.c(this,He,void 0);chunkTKL4UUHE_cjs.c(this,Pe,void 0);chunkTKL4UUHE_cjs.d(this,N,e),chunkTKL4UUHE_cjs.d(this,Re,r),chunkTKL4UUHE_cjs.d(this,ce,n),chunkTKL4UUHE_cjs.d(this,He,a),chunkTKL4UUHE_cjs.d(this,Pe,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 Y({storage:chunkTKL4UUHE_cjs.b(this,Re),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ce),fetch:chunkTKL4UUHE_cjs.b(this,Pe)}),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 yt({chainId:Number(e),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ce)}),c=i.map(E=>E.address),l=[...i,...chunkTKL4UUHE_cjs.b(this,He)].filter(ct),p=async E=>{let g=await new ethers.ethers.Contract(E.address,br__default.default.abi,a).balanceOf?.(r)||0n;return {...E,balance:g}},d=l.map(E=>ve(p(E),E.address)),u=await Ee(d),f=new Y({storage:chunkTKL4UUHE_cjs.b(this,Re),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ce),fetch:chunkTKL4UUHE_cjs.b(this,Pe)}),y=s&&await f.getPricesByAddresses(c,s,n)||{},v=Object.keys(u),P={};for(let E=0;E<v.length;E++){let T=v[E];if(T===void 0)continue;let x=u[T];if(x===void 0||"error"in x){P[T]={error:`rpcService:getTokenWithBalance failed: ${x?.error??"unknown error"}`};continue}let g=y?.[o??""]?.[n]?.price??void 0,b=y?.[o??""]?.[n]?.marketCap??void 0,M=y?.[o??""]?.[n]?.vol24??void 0,W=y?.[o??""]?.[n]?.change24??void 0,Ce=new coreUtilsSdk.TokenUnit(x.balance,x.decimals,x.symbol),w=g!==void 0?Ce.mul(g):void 0;P[x.address.toLowerCase()]={...x,type:vmModuleTypes.TokenType.ERC20,balance:x.balance,balanceDisplayValue:Ce.toDisplay(),balanceInCurrency:w?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:w?.toDisplay({fixedDp:2}),priceInCurrency:g,marketCap:b,change24:W,vol24:M,reputation:null};}return P}async listNftBalances(){return {}}};N=new WeakMap,Re=new WeakMap,ce=new WeakMap,He=new WeakMap,Pe=new WeakMap;async function rn(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 nn=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 ht({network:r,storage:o,proxyApiUrl:n,customTokens:s,fetch:l})],u=await rn(d,y=>y.isNetworkSupported(r.chainId)),f={};if(u){let y=[],v=[],P=[];t.forEach(g=>{a.includes(vmModuleTypes.TokenType.NATIVE)&&y.push(ve(u.getNativeBalance({address:g,currency:e.toUpperCase(),chainId:p}).then(async b=>{if(b.symbol==="AVAX"){let M=await c.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:e.toUpperCase()});return {...b,priceInCurrency:M.priceInCurrency,marketCap:M.marketCap,vol24:M.vol24,change24:M.change24}}return b}),g)),a.includes(vmModuleTypes.TokenType.ERC20)&&v.push(ve(u.listErc20Balances({customTokens:s.filter(ct),currency:e.toUpperCase(),chainId:p,address:g,pageSize:100}),g)),(a.includes(vmModuleTypes.TokenType.ERC721)||a.includes(vmModuleTypes.TokenType.ERC1155))&&P.push(ve(u.listNftBalances({chainId:p,address:g}),g));});let E=await Ee(y),T=await Ee(v),x=await Ee(P);Object.keys(E).forEach(g=>{let b=E[g];if(!b||"error"in b){f[g]={error:`getNativeBalance failed: ${b?.error??"unknown error"}`};return}let M=b.symbol;f[g]={[M]:b};}),Object.keys(T).forEach(g=>{let b=T[g];!b||"error"in b&&typeof b.error!="string"?f[g]={...f[g],error:"listErc20Balances failed: unknown error"}:"error"in b&&typeof b.error=="string"?f[g]={...f[g],error:`listErc20Balances failed: ${b.error}`}:f[g]={...f[g],...b};}),Object.keys(x).forEach(g=>{let b=x[g];!b||"error"in b&&typeof b.error!="string"?f[g]={...f[g],error:"listNftBalances failed: unknown error"}:"error"in b&&typeof b.error=="string"?f[g]={...f[g],error:`listNftBalances failed: ${b.error}`}:f[g]={...f[g],...b};});}else t.forEach(y=>{f[y]={error:"unsupported network"};});return f};var Vt={LOW:1n,MEDIUM:4n,HIGH:6n},Ot=500000000n,Ja=t=>t===coreChainsSdk.ChainId.AVALANCHE_TESTNET_ID||t===coreChainsSdk.ChainId.AVALANCHE_MAINNET_ID;async function sn({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(Ja(t))try{let T=await Xa(i);return {...T,baseFee:T.medium.maxFeePerGas,displayDecimals:9,isFixedFee:!1}}catch{console.error("eth_suggestPriceOptions call failed, falling back to legacy 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 Za(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=Ot*Vt.LOW,P=Ot*Vt.MEDIUM,E=Ot*Vt.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 Xa(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 Za(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 ln(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}function Ht(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=>ln(p.type)&&p.to?.address?.toLowerCase()===s),i=a.some(p=>ln(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 pn=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a,s)=>{let o=!e&&!r&&!n,i=eo(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",T;l?T=vmModuleTypes.TransactionType.SWAP:p?T=vmModuleTypes.TransactionType.SEND:d?T=vmModuleTypes.TransactionType.RECEIVE:u?T=vmModuleTypes.TransactionType.NFT_BUY:f?T=vmModuleTypes.TransactionType.APPROVE:y?T=vmModuleTypes.TransactionType.TRANSFER:v?T=vmModuleTypes.TransactionType.AIRDROP:P?T=vmModuleTypes.TransactionType.UNWRAP:E?T=vmModuleTypes.TransactionType.FILL_ORDER:T=vmModuleTypes.TransactionType.UNKNOWN;let x=t.from.address.toLowerCase()===c;return Ht({txType:T,isSender:x,walletAddress:a,tokens:s})},eo=(t="")=>t.includes("(")?Qa__default.default(t.split("(",1)[0]):t;function mn({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=no(t.category),c=!to.has(t.category),l=so(t,e,a),p=he(r,t.hash);return i=Ht({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 to=new Set(["send","receive","token send","token receive"]),ro={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 no(t){return ro[t]??vmModuleTypes.TransactionType.UNKNOWN}function Z(t){if(!(t==null||t===""))return {address:t}}function gt(t){return t?.trim()??""}function ao(t){let e=t.trim().toLowerCase();return !e.startsWith("0x")||e.length<12?t.trim():`${e.slice(0,6)}\u2026${e.slice(-4)}`}function oo(t){let e=gt(t.token_symbol);if(e!=="")return e;let r=gt(t.token_name);return r!==""?r:ao(t.address)}function so(t,e,r){let n=[],a=t.native_transfers.map(o=>io(o,e)),s=t.erc20_transfers.map(o=>co(o));n.push(...a,...s);for(let o of t.nft_transfers)n.push(lo(o));return n.length===0&&n.push(po(t,e,r)),n}function io(t,e){let r=gt(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 co(t){let e=Number(t.token_decimals),r=oo(t),n=new coreUtilsSdk.TokenUnit(t.value,e,r),a=gt(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 lo(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 po(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 mo="https://proxy-api.avax.network/proxy/moralis-evm";async function dn({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=`${mo}/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=>mn({tx:u,networkToken:e,explorerUrl:r,chainId:t,address:n})),nextPageToken:p.cursor??""}:{transactions:[],nextPageToken:""}}catch{return {transactions:[],nextPageToken:""}}}var uo=new Set([1,4,5,11155111,8453,42161,10]);function un(t){return uo.has(t)}var fn=(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 yn(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var yo="https://ipfs.io";function Se(t,e=yo){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}async function ho(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}async function hn(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 ho(Se(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}var go="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function gn(t,e="256"){let r=Se(t);return `${go}/width=${e},fit/${r}`}var bn=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 kn(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 kn(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},kn=async(t,e)=>{if(e)return e.startsWith("ipfs://")?Se(e):e;{let[r,n]=await yn(hn(t));return n?"":r.image?gn(r.image):""}};var vn=async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:a})=>{let s=await bn(t,r),o=pn(t,a,s),{isOutgoing:i,isIncoming:c,isSender:l,from:p,to:d}=fn(o,t,a),{blockTimestamp:u,txHash:f,gasPrice:y,gasUsed:v}=t.nativeTransaction,P=he(e,f);return {isContractCall:!mr.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 En=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=>vn({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 Rn=async({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s,glacierService:o})=>un(t)?dn({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s}):o.isHealthy()?En({networkToken:e,explorerUrl:r,chainId:t,address:n,nextPageToken:a,offset:s,glacierService:o}):{transactions:[],nextPageToken:""};var ko="https://ipfs.io";function Pn(t,e=ko){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}var bo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function kt(t,e="256"){let r=Pn(t);return `${bo}/width=${e},fit/${r}`}var Ie,O,bt=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}`],Po,chunkTKL4UUHE_cjs.b(this,O))}};Ie=new WeakMap,O=new WeakMap;var Eo=zod.z.object({id:zod.z.union([zod.z.custom(ethers.isHexString),zod.z.string()]),chain:zod.z.string(),name:zod.z.string()}),Ro=Eo.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()})),Po=zod.z.array(Ro);var V,xe,Et,Pt,In,Rt=class{constructor({proxyApiUrl:e,fetch:r}){chunkTKL4UUHE_cjs.c(this,xe);chunkTKL4UUHE_cjs.c(this,Pt);chunkTKL4UUHE_cjs.c(this,V,void 0);chunkTKL4UUHE_cjs.d(this,V,new bt(`${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,xe,Et).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 Ke()).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,xe,Et).call(this,e),o=await chunkTKL4UUHE_cjs.b(this,V).getTokensBalanceOnChain({chainId:s,address:r}),i=await Ke(),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,xe,Et).call(this,e),a=await chunkTKL4UUHE_cjs.b(this,V).getNftList({chainId:n,address:r});return chunkTKL4UUHE_cjs.e(this,Pt,In).call(this,a,e)}};V=new WeakMap,xe=new WeakSet,Et=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}},Pt=new WeakSet,In=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:kt(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.");}},Co=[coreChainsSdk.ChainId.ETHEREUM_HOMESTEAD],St=class{constructor({glacierApiUrl:e,headers:r}){chunkTKL4UUHE_cjs.a(this,"glacierSdk");chunkTKL4UUHE_cjs.a(this,"isGlacierHealthy",!0);chunkTKL4UUHE_cjs.a(this,"supportedChainIds",[]);chunkTKL4UUHE_cjs.a(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:e,HEADERS:r},_e),this.getSupportedChainIds().catch(()=>{});}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async isNetworkSupported(e){return (await this.getSupportedChainIds()).some(n=>n===e.toString())}async getSupportedChainIds(){if(this.supportedChainIds.length)return this.supportedChainIds;try{let e=await this.glacierSdk.evmChains.supportedChains({});return this.supportedChainIds=e.chains.map(r=>r.chainId).filter(r=>!Co.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:kt(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(...wo(i.erc20TokenBalances,Number(e))),o=i.nextPageToken;}while(o);return [...No(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}}},No=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})),wo=(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 Ae,ze,ee,$,le,pe,Nn=class{constructor({approvalController:e,environment:r,appInfo:n,runtime:a}){chunkTKL4UUHE_cjs.c(this,Ae,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,le,void 0);chunkTKL4UUHE_cjs.c(this,pe,void 0);let{glacierApiUrl:s,proxyApiUrl:o}=nr(r);chunkTKL4UUHE_cjs.d(this,pe,a),chunkTKL4UUHE_cjs.d(this,Ae,new St({glacierApiUrl:s,headers:Nt(n)})),chunkTKL4UUHE_cjs.d(this,ze,new Rt({proxyApiUrl:o,fetch:chunkTKL4UUHE_cjs.b(this,pe)?.fetch})),chunkTKL4UUHE_cjs.d(this,ee,o),chunkTKL4UUHE_cjs.d(this,$,e),chunkTKL4UUHE_cjs.d(this,le,new Bo__default.default({baseURL:o+"/proxy/blockaid/",apiKey:tr,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 Qr({accountIndex:e,xpub:r,walletType:n})}buildDerivationPath(e){return rt(e)}deriveAddress(e){return ir({...e,approvalController:chunkTKL4UUHE_cjs.b(this,$)})}getBalances({addresses:e,network:r,currency:n,customTokens:a,storage:s,tokenTypes:o}){let i=new Y({storage:s,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ee),fetch:chunkTKL4UUHE_cjs.b(this,pe)?.fetch});return nn({addresses:e,currency:n,network:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ee),customTokens:a,balanceServices:[chunkTKL4UUHE_cjs.b(this,Ae),chunkTKL4UUHE_cjs.b(this,ze)],storage:s,tokenTypes:o,tokenService:i,fetch:chunkTKL4UUHE_cjs.b(this,pe)?.fetch})}getManifest(){let e=vmModuleTypes.parseManifest(er);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:a,utilityAddresses:s,caipId:o,customRpcHeaders:i}=e;return sn({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 Rn({chainId:o,networkToken:i,explorerUrl:c,address:n,nextPageToken:a,offset:s,glacierService:chunkTKL4UUHE_cjs.b(this,Ae)})}getTokens(e){let{chainId:r}=e;return yt({chainId:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,ee)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return Ur({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),blockaid:chunkTKL4UUHE_cjs.b(this,le)});case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION_BATCH:return fr(chunkTKL4UUHE_cjs.b(this,$))?Nr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),blockaid:chunkTKL4UUHE_cjs.b(this,le)}):{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 Jr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),blockaid:chunkTKL4UUHE_cjs.b(this,le)});default:return Do(e.method)?Xr(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};Ae=new WeakMap,ze=new WeakMap,ee=new WeakMap,$=new WeakMap,le=new WeakMap,pe=new WeakMap;var Do=t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t);
|
|
43
43
|
|
|
44
|
-
exports.ERC20TransactionType =
|
|
45
|
-
exports.EvmModule =
|
|
46
|
-
exports.NonContractCallTypes =
|
|
44
|
+
exports.ERC20TransactionType = oe;
|
|
45
|
+
exports.EvmModule = Nn;
|
|
46
|
+
exports.NonContractCallTypes = mr;
|
|
47
47
|
exports.addIdToPromise = ve;
|
|
48
|
-
exports.isTypedData =
|
|
49
|
-
exports.isTypedDataV1 =
|
|
50
|
-
exports.settleAllIdPromises =
|
|
48
|
+
exports.isTypedData = ul;
|
|
49
|
+
exports.isTypedDataV1 = Yr;
|
|
50
|
+
exports.settleAllIdPromises = Ee;
|
|
51
51
|
//# sourceMappingURL=out.js.map
|
|
52
52
|
//# sourceMappingURL=index.cjs.map
|