@avalabs/evm-module 3.9.1 → 3.9.2
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 +5 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -14,16 +14,16 @@ var Br = require('@openzeppelin/contracts/build/contracts/ERC20.json');
|
|
|
14
14
|
var coreUtilsSdk = require('@avalabs/core-utils-sdk');
|
|
15
15
|
var _r = require('xss');
|
|
16
16
|
var coreChainsSdk = require('@avalabs/core-chains-sdk');
|
|
17
|
-
var
|
|
17
|
+
var Ro = require('lodash.startcase');
|
|
18
18
|
|
|
19
19
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
20
|
|
|
21
21
|
var rs__default = /*#__PURE__*/_interopDefault(rs);
|
|
22
22
|
var Br__default = /*#__PURE__*/_interopDefault(Br);
|
|
23
23
|
var _r__default = /*#__PURE__*/_interopDefault(_r);
|
|
24
|
-
var
|
|
24
|
+
var Ro__default = /*#__PURE__*/_interopDefault(Ro);
|
|
25
25
|
|
|
26
|
-
function sr(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}chunkVYIKXRYZ_cjs.a(sr,"charsum");function Ct(t){let e,r=0;for(e=0;e<t.length;e++){let n=sr(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}chunkVYIKXRYZ_cjs.a(Ct,"arrayHash");var re=chunkVYIKXRYZ_cjs.a(async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=G.exponential()})=>{let a=0,s=0,o;for(;s<r;){s>0&&await Yn(a);try{let l=await t(s);if(e(l))return l}catch(l){o=l;}a=n(s),s++;}let c=o?`Max retry exceeded. ${o}`:"Max retry exceeded.";throw new Error(c)},"retry"),Nt=class Nt{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return r=>e*1e3}static constantMs(e){return r=>e}static linearThenExponential(e,r){return n=>{if(n<e)return (n+1)*r;let a=n-e+1,s=e*r,o=2*r*(Math.pow(2,a)-1);return s+o}}};chunkVYIKXRYZ_cjs.a(Nt,"RetryBackoffPolicy");var G=Nt;function Yn(t){return new Promise(e=>setTimeout(e,t))}chunkVYIKXRYZ_cjs.a(Yn,"delay");var wt=chunkVYIKXRYZ_cjs.a(t=>re({operation:e=>t(e>0),maxRetries:2,backoffPolicy:G.constant(1),isSuccess:e=>e?.status?.error_code!==429}),"coingeckoRetry");async function U(t,e,r=fetch){let n=await r(...t);if(!n.ok)throw new Error(`Request failed with status ${n.status}`);let a=await n.json();return e.parse(a)}chunkVYIKXRYZ_cjs.a(U,"fetchAndVerify");var _t=class _t{constructor(e,r){this.proxyApiUrl=e;this.fetchFn=r;}simplePrice(e){let r=new URLSearchParams(e);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(e){let{id:r,...n}=e,a=new URLSearchParams(n);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}};chunkVYIKXRYZ_cjs.a(_t,"CoingeckoProxyClient");var De=_t;var Kn=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())})),Dt=class Dt{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"}}],Kn)}};chunkVYIKXRYZ_cjs.a(Dt,"WatchlistProxyClient");var Xe=Dt;var Y,ne,ae,fe,Bt=class Bt{constructor({storage:e,proxyApiUrl:r,fetch:n}){chunkVYIKXRYZ_cjs.d(this,Y,void 0);chunkVYIKXRYZ_cjs.d(this,ne,void 0);chunkVYIKXRYZ_cjs.d(this,ae,void 0);chunkVYIKXRYZ_cjs.d(this,fe,void 0);chunkVYIKXRYZ_cjs.b(this,"transformSimplePriceResponse",chunkVYIKXRYZ_cjs.a((e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(a=>{let s=e[a];n[a]={},r.forEach(o=>{n[a]={[o]:{price:s?.[o],change24:s?.[`${o}_24h_change`],vol24:s?.[`${o}_24h_vol`],marketCap:s?.[`${o}_market_cap`]}};});}),n},"transformSimplePriceResponse"));chunkVYIKXRYZ_cjs.e(this,Y,e),chunkVYIKXRYZ_cjs.e(this,ne,r),chunkVYIKXRYZ_cjs.e(this,ae,n??globalThis.fetch),chunkVYIKXRYZ_cjs.e(this,fe,coreCoingeckoSdk.getBasicCoingeckoHttp(void 0,chunkVYIKXRYZ_cjs.c(this,ae)));}async getWatchlistDataForToken({tokenDetails:e,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new Xe(chunkVYIKXRYZ_cjs.c(this,ne)).watchlistToken({tokens:e.symbol,currency:r})).filter(s=>e.isNative?s.internalId===`NATIVE-${e.symbol.toLowerCase()}`:s.platforms[e.caip2Id]===e.address),[a]=n;return a?{priceInCurrency:a.current_price??0,change24:a.price_change_percentage_24h??0,marketCap:a.market_cap??0,vol24:a.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,s=`getSimplePrice-${e?`${Ct(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkVYIKXRYZ_cjs.c(this,Y)?.get?.(s),n)return n;try{n=await wt(o=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:o}));}catch{n=void 0;}return chunkVYIKXRYZ_cjs.c(this,Y)?.set?.(s,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,o=`getPricesWithMarketDataByAddresses-${`${Ct(e)}-${r}-${n}`}`;if(a=chunkVYIKXRYZ_cjs.c(this,Y)?.get?.(o),a)return a;try{a=await wt(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),a=void 0;}return chunkVYIKXRYZ_cjs.c(this,Y)?.set?.(o,a),a}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let s=await new De(chunkVYIKXRYZ_cjs.c(this,ne),chunkVYIKXRYZ_cjs.c(this,ae)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(s,[n])}return coreCoingeckoSdk.simpleTokenPrice(chunkVYIKXRYZ_cjs.c(this,fe),{assetPlatformId:e,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:a=!1,change24:s=!1,lastUpdated:o=!1,useCoingeckoProxy:c=!1,shouldThrow:l=!0}){if(c){let p=await new De(chunkVYIKXRYZ_cjs.c(this,ne),chunkVYIKXRYZ_cjs.c(this,ae)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:s,include_last_updated_at:o});return this.transformSimplePriceResponse(p,r)}return coreCoingeckoSdk.simplePrice(chunkVYIKXRYZ_cjs.c(this,fe),{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:s,lastUpdated:o,shouldThrow:l})}};Y=new WeakMap,ne=new WeakMap,ae=new WeakMap,fe=new WeakMap,chunkVYIKXRYZ_cjs.a(Bt,"TokenService");var K=Bt;var na="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",aa="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",cr=zod.object({date:zod.string(),usd:zod.record(zod.number())}),Ze=chunkVYIKXRYZ_cjs.a(async()=>{try{return await U([na],cr)}catch{return await U([aa],cr)}},"getExchangeRates");var Ut=chunkVYIKXRYZ_cjs.a((t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),"textItem"),et=chunkVYIKXRYZ_cjs.a((t,e)=>({label:t,value:e,type:vmModuleTypes.DetailItemType.LINK}),"linkItem"),ye=chunkVYIKXRYZ_cjs.a((t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e}),"addressItem");var tt=chunkVYIKXRYZ_cjs.a((t,e)=>({label:t,type:vmModuleTypes.DetailItemType.NETWORK,value:e}),"networkItem");var Ft=chunkVYIKXRYZ_cjs.a(({name:t,version:e})=>{switch(t){case vmModuleTypes.AppName.CORE_MOBILE_IOS:case vmModuleTypes.AppName.CORE_MOBILE_ANDROID:case vmModuleTypes.AppName.CORE_WEB:case vmModuleTypes.AppName.CORE_EXTENSION:case vmModuleTypes.AppName.EXPLORER:return {"x-application-name":t,"x-application-version":e};case vmModuleTypes.AppName.OTHER:return}},"getCoreHeaders");var lr=process.env.GLACIER_API_KEY;var Be=chunkVYIKXRYZ_cjs.a(()=>lr,"getGlacierApiKey");var ia={rltoken:Be()},oe,rt,nt,mr,at,dr,Gt=class Gt extends glacierSdk.FetchHttpRequest{constructor(r){super(r);chunkVYIKXRYZ_cjs.d(this,nt);chunkVYIKXRYZ_cjs.d(this,at);chunkVYIKXRYZ_cjs.d(this,oe,0);chunkVYIKXRYZ_cjs.d(this,rt,G.exponential());}request(r){let n={...ia,...r.query||{}},a={...r,query:Object.keys(n).length>0?n:void 0},s=chunkVYIKXRYZ_cjs.a(()=>super.request(a),"getRequest");return chunkVYIKXRYZ_cjs.c(this,oe)>0?chunkVYIKXRYZ_cjs.f(this,at,dr).call(this,s):chunkVYIKXRYZ_cjs.f(this,nt,mr).call(this,s)}};oe=new WeakMap,rt=new WeakMap,nt=new WeakSet,mr=chunkVYIKXRYZ_cjs.a(function(r){let n=r();return new glacierSdk.CancelablePromise((a,s,o)=>{o(()=>n.cancel()),n.then(c=>{chunkVYIKXRYZ_cjs.e(this,oe,0),a(c);}).catch(c=>{if(c instanceof glacierSdk.ApiError){let l=c.status===429,p=c.status>=500&&c.status<600;chunkVYIKXRYZ_cjs.e(this,oe,chunkVYIKXRYZ_cjs.c(this,oe)+Number(l||p));}s(c);});})},"#request"),at=new WeakSet,dr=chunkVYIKXRYZ_cjs.a(function(r){let n=chunkVYIKXRYZ_cjs.c(this,rt).call(this,chunkVYIKXRYZ_cjs.c(this,oe));return new glacierSdk.CancelablePromise((a,s,o)=>{let c=setTimeout(()=>{let l=r();o(()=>{l.cancel(),clearTimeout(c);}),l.then(a).catch(s);},n);})},"#postponeRequest"),chunkVYIKXRYZ_cjs.a(Gt,"GlacierFetchHttpRequest");var Ue=Gt;var M=chunkVYIKXRYZ_cjs.a((t,e)=>({message:`${t}${e instanceof Error?`: ${e.message}`:""}`,data:{cause:e}}),"rpcErrorOpts");var ur={name:"EVM",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/index.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider/index.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:[],namespaces:["eip155"]},cointype:"60",permissions:{rpc:{dapps:!0,methods:["personal_sign","eth_sendTransaction","eth_sendTransactionBatch","eth_*","web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"],nonRestrictedMethods:["eth_requestAccounts","eth_decrypt","eth_getEncryptionPublicKey","eth_subscribe","eth_unsubscribe","eth_blockNumber","eth_call","eth_chainId","eth_coinbase","eth_estimateGas","eth_feeHistory","eth_gasPrice","eth_getBalance","eth_getBlockByHash","eth_getBlockByNumber","eth_getBlockTransactionCountByHash","eth_getBlockTransactionCountByNumber","eth_getCode","eth_getFilterChanges","eth_getFilterLogs","eth_getLogs","eth_getProof","eth_getStorageAt","eth_getTransactionByBlockHashAndIndex","eth_getTransactionByBlockNumberAndIndex","eth_getTransactionByHash","eth_getTransactionCount","eth_getTransactionReceipt","eth_getUncleCountByBlockHash","eth_getUncleCountByBlockNumber","eth_newBlockFilter","eth_newFilter","eth_newPendingTransactionFilter","eth_syncing","eth_uninstallFilter","net_version","net_peerCount","net_listening","web3_sha3","web3_clientVersion"]}},manifestVersion:"0.1"};var fr="DUMMY_API_KEY";var la={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},pa={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},hr=chunkVYIKXRYZ_cjs.a(t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return la;case vmModuleTypes.Environment.DEV:return pa}},"getEnv");var ge=chunkVYIKXRYZ_cjs.a(({accountIndex:t,derivationPathType:e})=>{if(t<0)throw rpcErrors.rpcErrors.invalidParams("Account index must be a non-negative integer");switch(e){case"bip44":return {[vmModuleTypes.NetworkVMType.EVM]:`m/44'/60'/0'/0/${t}`};case"ledger_live":return {[vmModuleTypes.NetworkVMType.EVM]:`m/44'/60'/${t}'/0/0`};default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported derivation path type: ${e}`)}},"buildDerivationPath");var kr=chunkVYIKXRYZ_cjs.a(t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string","hasDerivationDetails");var br=chunkVYIKXRYZ_cjs.a(async t=>{let{secretId:e,approvalController:r}=t,n=kr(t)?ge(t).EVM:void 0,a=await r.requestPublicKey({curve:"secp256k1",secretId:e,derivationPath:n});return {[vmModuleTypes.NetworkVMType.EVM]:ethers.computeAddress(`0x${a}`)}},"deriveAddress");var vr=chunkVYIKXRYZ_cjs.a(async t=>{let{approvalController:e,secretId:r,accountIndices:n,derivationPathType:a}=t;if(n.length===0)return [];await cryptoSdk.init();let s=await Promise.all(n.map(async c=>{let l=ge({accountIndex:c,derivationPathType:a}).EVM,p=await e.requestPublicKey({curve:"secp256k1",secretId:r,derivationPath:l});return Uint8Array.from(Buffer.from(p,"hex"))}));return (await cryptoSdk.deriveAddressesForEvm(s)).map(c=>({[vmModuleTypes.NetworkVMType.EVM]:c}))},"deriveAddresses");var F=chunkVYIKXRYZ_cjs.a(async t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:s=2e3,customRpcHeaders:o}=t,c=ba(n),l=c;if(o){let m=new ethers.FetchRequest(c);for(let[u,f]of Object.entries(o))m.setHeader(u,f);l=m;}let p=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:a},l,new ethers.Network(r,e));return p.pollingInterval=s,p},"getProvider"),ka=["glacier-api.avax.network","proxy-api.avax.network"];function ba(t){let e=new URL(t),r=Be();if(r&&ka.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}chunkVYIKXRYZ_cjs.a(ba,"addGlacierAPIKeyIfNeeded");var Te=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 Pr=zod.z.tuple([Te,Te]).rest(Te).refine(t=>Mt(t,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(t=>Mt(t,"from"),{message:'All transactions must use the same "from" address'}).refine(t=>Ra(t,"nonce")||Ea(t,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'}),va=zod.z.object({skipIntermediateTxs:zod.z.boolean().optional()}),Pa=zod.z.union([Pr,zod.z.object({transactions:Pr,options:va.optional()})]);function Ea(t,e){return !Mt(t,e)}chunkVYIKXRYZ_cjs.a(Ea,"areAllDifferentByProp");function Ra(t,e){return t.every(r=>r[e]===void 0||r[e]==="")}chunkVYIKXRYZ_cjs.a(Ra,"areAllEmptyByProp");function Mt(t,e){return new Set(t.map(n=>n[e])).size===1}chunkVYIKXRYZ_cjs.a(Mt,"areAllEqualByProp");var Er=chunkVYIKXRYZ_cjs.a(t=>{let e=Pa.safeParse(t);return e.success?Array.isArray(e.data)?{success:!0,data:{transactions:e.data,options:{}}}:{success:!0,data:{transactions:e.data.transactions,options:e.data.options??{}}}:e},"parseRequestParams");var ot=chunkVYIKXRYZ_cjs.a(async({from:t,provider:e})=>e.getTransactionCount(t),"getNonce");var Rr=chunkVYIKXRYZ_cjs.a(async(t,e)=>{if(t[0].nonce)return;let r=await ot({from:t[0].from,provider:e});return Promise.all(t.map(async(n,a)=>{n.nonce=String(r+a);}))},"ensureProperNonces");var xr=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER,vmModuleTypes.TransactionType.NFT_SEND,vmModuleTypes.TransactionType.NFT_RECEIVE],se=(o=>(o.TOTAL_SUPPLY="totalSupply",o.BALANCE_OF="balanceOf",o.TRANSFER="transfer",o.TRANSFER_FROM="transferFrom",o.APPROVE="approve",o.ALLOWANCE="allowance",o))(se||{});var st=chunkVYIKXRYZ_cjs.a(t=>{if(t.data)try{let r=new ethers.Interface(Br__default.default.abi).parseTransaction({data:t.data,value:t.value}),n=r?.name??r?.fragment?.name;return n&&Sa(n)?n:void 0}catch{return}},"parseERC20TransactionType");function Sa(t){return Object.values(se).includes(t)}chunkVYIKXRYZ_cjs.a(Sa,"isERC20TransactionType");var it=chunkVYIKXRYZ_cjs.a((t,e,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:s,alert:o})=>{let{dappInfo:c}=t,l=st(r),p="Do you approve this transaction?";l==="approve"&&(p="Do you approve this spend limit?");let m=[ye("Account",r.from),tt("Network",{name:e.chainName,logoUri:e.logoUri}),et("Website",c)];r.to&&m.push(ye("Contract",r.to));let u={title:p,details:[{title:"Transaction Details",items:m}],networkFeeSelector:!0,alert:o,balanceChange:a,tokenApprovals:s,isSimulationSuccessful:n},f={type:vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,account:r.from,data:{type:2,nonce:Number(r.nonce),gasLimit:Number(r.gas),maxFeePerGas:r.maxFeePerGas,maxPriorityFeePerGas:r.maxPriorityFeePerGas,to:r.to,from:r.from,data:r.data,value:r.value,chainId:r.chainId??e.chainId,accessList:r.accessList}};return {displayData:u,signingData:f}},"buildTxApprovalRequest");var ct=chunkVYIKXRYZ_cjs.a(async(t,e,r)=>{if("txHash"in e)return e.txHash;let n=chunkVYIKXRYZ_cjs.a(()=>t.send("eth_sendRawTransaction",[e.signedData]),"broadcast");return r?.shouldRetry?re({operation:()=>n(),isSuccess:()=>!0,maxRetries:6,backoffPolicy:G.linearThenExponential(4,1e3)}):n()},"getTxHash");function ke(t,e,r="tx"){return `${t}/${r}/${e}`}chunkVYIKXRYZ_cjs.a(ke,"getExplorerAddressByNetwork");var Me=chunkVYIKXRYZ_cjs.a(async({explorerUrl:t,provider:e,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:s,request:o})=>{try{let c=ke(t,r);if(n({txHash:r,request:o,explorerLink:c}),(await re({operation:async()=>e.getTransactionReceipt(r),isSuccess:m=>!!m,backoffPolicy:G.linearThenExponential(15,750),maxRetries:20}))?.status===1)return a({txHash:r,explorerLink:c,request:o}),!0}catch(c){console.error(c);}return s({txHash:r,request:o}),!1},"waitForTransactionReceipt");var lt=new Map,Ar=chunkVYIKXRYZ_cjs.a((t,e,r)=>(lt.set(t,{signingRequests:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a},s)=>{let o=lt.get(t);if(!o)throw rpcErrors.rpcErrors.resourceNotFound();let{signingRequests:c}=o,p={signingRequests:c.map((m,u)=>{if(s===void 0||s===u){let{signingData:f}=m;return {signingData:{...f,data:{...f.data,maxFeePerGas:n??f.data.maxFeePerGas,maxPriorityFeePerGas:a??f.data.maxPriorityFeePerGas}},displayData:m.displayData}}return m}),displayData:r};return lt.set(t,p),p},cleanup:()=>lt.delete(t)}),"getTxBatchUpdater");function ie(t){return !("type"in t)}chunkVYIKXRYZ_cjs.a(ie,"isNetworkToken");function pt(t){return t.type===vmModuleTypes.TokenType.ERC20}chunkVYIKXRYZ_cjs.a(pt,"isERC20Token");function Sr(t){return typeof t.to=="string"}chunkVYIKXRYZ_cjs.a(Sr,"hasToField");function Ir(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}chunkVYIKXRYZ_cjs.a(Ir,"supportsBatchApprovals");function wa(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}chunkVYIKXRYZ_cjs.a(wa,"isBalanceChange");function _a(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}chunkVYIKXRYZ_cjs.a(_a,"isTokenApprovals");function Lt(t){return wa(t)?t.ins.length===0&&t.outs.length===0:_a(t)?t.approvals.length===0:!1}chunkVYIKXRYZ_cjs.a(Lt,"isEmpty");var Cr=chunkVYIKXRYZ_cjs.a(async({chainId:t,params:e,domain:r,withGasEstimation:n,blockaid:a})=>{let s=["validation","simulation"];return n&&s.push("gas_estimation"),a.evm.transactionBulk.scan({chain:t.toString(),options:s,data:e,metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}})},"scanTransactionBatch"),Nr=chunkVYIKXRYZ_cjs.a(async({chainId:t,params:e,domain:r,blockaid:n})=>n.evm.transaction.scan({account_address:e.from,chain:t.toString(),options:["validation","simulation"],data:{from:e.from,to:e.to,data:e.data,value:e.value,gas:e.gas,gas_price:e.gasPrice},metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}}),"scanTransaction"),wr=chunkVYIKXRYZ_cjs.a(async({chainId:t,accountAddress:e,data:r,domain:n,blockaid:a})=>a.evm.jsonRpc.scan({chain:t.toString(),options:["validation","simulation"],account_address:e,data:r,metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}}),"scanJsonRpc");var Ur=chunkVYIKXRYZ_cjs.a(async(t,e,r)=>{if(!t.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.ethers.Contract(t.to,Br__default.default.abi,r),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),s=_r__default.default(a[0]),o=_r__default.default(a[1]),c=parseInt(a[2]),l={type:vmModuleTypes.TokenType.ERC20,name:s,chainId:e,symbol:o,decimals:c,address:t.to,contractType:"ERC-20"},p=new ethers.ethers.Interface(Br__default.default.abi),m=p.getFunction(t.data.slice(0,10)),u=p.decodeFunctionData(t.data.slice(0,10),t.data);if(m?.name==="transfer")return {balanceChange:{outs:[{items:[{displayValue:new coreUtilsSdk.TokenUnit(u.amount,l.decimals,l.symbol).toDisplay(),usdPrice:void 0}],token:l}],ins:[]}};if(m?.name==="approve")return {tokenApprovals:{isEditable:!0,approvals:[{token:l,spenderAddress:u.spender,value:u.amount}]}}}catch(n){console.error("parseErc20Tx error",n);}return {tokenApprovals:void 0,balanceChange:void 0}},"parseWithErc20Abi");var J={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious transaction",description:"Use caution, this transaction might be malicious."}},[vmModuleTypes.AlertType.DANGER]:{type:vmModuleTypes.AlertType.DANGER,details:{title:"Scam transaction",description:"This transaction has been flagged as malicious, I understand the risk.",body:["This transaction is malicious","do not proceed"],actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};var Gr=chunkVYIKXRYZ_cjs.a(async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,blockaid:s})=>{let o;try{o=await Nr({chainId:n,params:r,domain:e,blockaid:s});}catch(c){console.error("simulateTransaction error",c);}return Vt({rpcMethod:t,params:r,chainId:n,provider:a,simulationResult:o})},"simulateTransaction"),Vt=chunkVYIKXRYZ_cjs.a(async({rpcMethod:t,params:e,chainId:r,provider:n,simulationResult:a})=>{let s,o,c,l=!1,p;if(a){let{validation:m,simulation:u,gas_estimation:f}=a;!m||m.result_type==="Error"||m.result_type==="Warning"?s=J[vmModuleTypes.AlertType.WARNING]:m.result_type==="Malicious"&&(s=J[vmModuleTypes.AlertType.DANGER]),u?.status==="Success"&&(l=!0,c=Mr(t,u.account_summary),o=Lr(u.account_summary.assets_diffs)),f?.status==="Success"&&(p=Number(f.estimate));}if(!l&&Sr(e)){let m=await Ur(e,r,n);o=m.balanceChange,c=m.tokenApprovals;}return {alert:s,balanceChange:o,tokenApprovals:c,isSimulationSuccessful:l,estimatedGasLimit:p}},"processTransactionSimulation"),Va=chunkVYIKXRYZ_cjs.a(t=>t.trace_type==="ExposureTrace","isExposureTrace"),Oa=chunkVYIKXRYZ_cjs.a((t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,"normalizeAddresses"),Ha=chunkVYIKXRYZ_cjs.a(t=>t===void 0||t.length===0?{}:t.reduce((e,r)=>Va(r)?{[Oa(r.spender,r.asset.address)]:r}:e,{}),"mapExposureTracesToSpenderAsset"),Mr=chunkVYIKXRYZ_cjs.a((t,e)=>{let{traces:r}=e,n=Ha(r),a=Object.entries(n).map(([o,c])=>{let l=Vr(c.asset);if(!l)return;let p={token:l,spenderAddress:c.spender,logoUri:l.logoUri};if(c.type==="ERC20ExposureTrace"){let{exposed:{raw_value:m,value:u,usd_price:f}}=c;if(!u||u<=0)return;p.value=m,p.usdPrice=`${f}`;}if(c.type==="ERC721ExposureTrace")if(!c.exposed)p.value=`0x${ethers.MaxUint256.toString(16)}`;else {let{usd_price:m,amount:u}=c.exposed;p.value=`${u}`,p.usdPrice=`${m}`;}return p}).filter(Boolean);return a.length===0?void 0:{isEditable:a.length===1&&a[0]?.token.type===vmModuleTypes.TokenType.ERC20&&t===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:a}},"processTokenApprovals"),Lr=chunkVYIKXRYZ_cjs.a(t=>{let e=Fr(t,"in"),r=Fr(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},"processBalanceChange"),Fr=chunkVYIKXRYZ_cjs.a((t,e)=>t.filter(r=>r[e].length>0).sort((r,n)=>r[e].length-n[e].length).map(r=>{let n=r.asset,a="address"in n?Vr(n):$a(n);if(!a)return;let s=r[e].map(o=>{let c;if("value"in o&&o.value)if("decimals"in a){let u=coreUtilsSdk.numberToBN(o.value,a.decimals);c=coreUtilsSdk.balanceToDisplayValue(u,a.decimals);}else ethers.isHexString(o.value)&&(c=parseInt(o.value,16).toString());else "type"in a&&a.type===vmModuleTypes.TokenType.ERC721&&(c="1");if(!c)return;let l="logo_url"in o?o.logo_url:void 0,p="token_id"in o?o.token_id:void 0;return {displayValue:c,usdPrice:o.usd_price,...l!==void 0&&{logoUri:l},...p!==void 0&&{tokenId:p}}}).filter(o=>o!==void 0);return {token:a,items:s}}).filter(r=>r!==void 0),"processAssetDiffs"),Vr=chunkVYIKXRYZ_cjs.a(t=>{let e;return t.type==="ERC20"?e={type:vmModuleTypes.TokenType.ERC20,address:t.address,decimals:t.decimals,name:t.name??t.symbol??"",symbol:t.symbol??"",logoUri:t.logo_url}:t.type==="ERC1155"?e={type:vmModuleTypes.TokenType.ERC1155,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="ERC721"?e={type:vmModuleTypes.TokenType.ERC721,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="NONERC"&&(e={type:vmModuleTypes.TokenType.NONERC,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}),e},"convertAssetToNetworkContractToken"),$a=chunkVYIKXRYZ_cjs.a(t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),"convertNativeAssetToToken"),Or=chunkVYIKXRYZ_cjs.a(async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:a,blockaid:s})=>{let o,c,l;try{let{validation:p,simulation:m}=await wr({chainId:n,accountAddress:r,data:a,domain:e,blockaid:s});!p||p.result_type==="Error"||p.result_type==="Warning"?o=J[vmModuleTypes.AlertType.WARNING]:p.result_type==="Malicious"&&(o=J[vmModuleTypes.AlertType.DANGER]),m?.status==="Success"&&(l=Mr(t.method,m.account_summary),c=Lr(m.account_summary.assets_diffs));}catch(p){console.error("processJsonRpcSimulation error",p),o=J[vmModuleTypes.AlertType.WARNING];}return {alert:o,balanceChange:c,tokenApprovals:l}},"processJsonRpcSimulation");var $r=chunkVYIKXRYZ_cjs.a(async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,populateMissingGas:s,blockaid:o})=>{let c;try{c=await Cr({chainId:n,params:r,domain:e,withGasEstimation:s,blockaid:o});}catch(y){return console.error("simulateTransactionBatch error",y),{isSimulationSuccessful:!1,alert:J[vmModuleTypes.AlertType.WARNING],scans:[]}}let l=await Promise.all(c.map(async(y,h)=>{let P=r[h],x=await Vt({chainId:n,params:r[h],provider:a,rpcMethod:t,simulationResult:y});return s&&!P.gas&&x.estimatedGasLimit&&(P.gas=`0x${x.estimatedGasLimit.toString(16)}`),{transaction:P,...x}})),p=l.every(y=>y.isSimulationSuccessful),m=Wa(l),u=qa(l),f=ja(l);return {isSimulationSuccessful:p,alert:m,balanceChange:u,tokenApprovals:f,scans:l.map(y=>(y.tokenApprovals&&(y.tokenApprovals.isEditable=!1),y))}},"simulateTransactionBatch"),Wa=chunkVYIKXRYZ_cjs.a(t=>{let e={[vmModuleTypes.AlertType.INFO]:0,[vmModuleTypes.AlertType.WARNING]:1,[vmModuleTypes.AlertType.DANGER]:2};return t.reduce((r,{alert:n})=>n&&(!r||e[n.type]>e[r.type])?n:r,void 0)},"getHighestAlert"),ja=chunkVYIKXRYZ_cjs.a(t=>{let e=t.reduce((r,{tokenApprovals:n})=>(n&&n.approvals.forEach(a=>{let s=r.approvals.find(o=>a.token.address===o.token.address&&a.spenderAddress===o.spenderAddress);if(!s){r.approvals.push({...a});return}s.value=a.value,s.usdPrice=a.usdPrice;}),r),{approvals:[],isEditable:!1});return za(e,t),Lt(e)?void 0:e},"aggregateTokenApprovals"),qa=chunkVYIKXRYZ_cjs.a(t=>{let e=t.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(a=>{let s=Hr(r.ins,a);s?s.items.push(...a.items):r.ins.push(a);}),n.outs.forEach(a=>{let s=Hr(r.outs,a);s?s.items.push(...a.items):r.outs.push({...a});})),r),{ins:[],outs:[]});return Lt(e)?void 0:e},"aggregateBalanceChange"),Hr=chunkVYIKXRYZ_cjs.a((t,e)=>t.find(r=>ie(r.token)&&ie(e.token)?r.token.symbol===e.token.symbol:!ie(r.token)&&!ie(e.token)?r.token.address===e.token.address:!1),"findTokenDiff"),za=chunkVYIKXRYZ_cjs.a((t,e)=>{for(let r of t.approvals)for(let n of e)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(s=>!ie(s.token)&&!ie(r.token)&&s.token.address===r.token.address)))if(!n.tokenApprovals)t.approvals=t.approvals.filter(s=>s.spenderAddress!==r.spenderAddress&&r.token.address!==s.token.address);else {let s=n.tokenApprovals.approvals.find(o=>o.spenderAddress===r.spenderAddress&&o.token.address===r.token.address);if(!s)continue;r.usdPrice=s.usdPrice,r.value=s.value;}},"clearSpentApprovals");var Wr=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:s,success:o,error:c}=Er(a);if(!o)return console.error("invalid params",c),{error:rpcErrors.rpcErrors.invalidParams(M("Transaction params are invalid",c))};let{transactions:l,options:p={}}=s,{skipIntermediateTxs:m=!1}=p,u=await F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders});try{await Rr(l,u);}catch(D){return console.error("Unable to calculate nonce",D),{error:rpcErrors.rpcErrors.internal(M("Unable to calculate nonce",D))}}let f=l.every(D=>Number(D.gas)>0),{alert:y,balanceChange:h,isSimulationSuccessful:P,tokenApprovals:x,scans:E}=await $r({rpcMethod:t.method,chainId:e.chainId,params:l,dAppUrl:t.dappInfo.url,provider:u,populateMissingGas:!f,blockaid:n});if(!E.every(({transaction:D})=>Number(D.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:[ye("Account",l[0].from),tt("Network",{name:e.chainName,logoUri:e.logoUri}),et("Website",t.dappInfo)]}],isSimulationSuccessful:P,balanceChange:h,alert:y,tokenApprovals:x,networkFeeSelector:!0},k=E.map(D=>it(t,e,D.transaction,D)),{cleanup:v,updateTx:L}=Ar(t.requestId,k,I),j=await r.requestBatchApproval({request:t,signingRequests:k,displayData:I,updateTx:L});if(v(),"error"in j)return {error:j.error};if(j.result.length!==l.length)return {error:rpcErrors.rpcErrors.internal({message:`Invalid number of signatures. Expected ${l.length}, got ${j.result.length}`})};let _e=[];for(let[D,zn]of j.result.entries()){let or=D===j.result.length-1,It=await ct(u,zn);if(or&&Me({explorerUrl:e.explorerUrl??"",provider:u,txHash:It,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),!or&&!m&&!await Me({explorerUrl:e.explorerUrl??"",provider:u,txHash:It,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}))return {error:rpcErrors.rpcErrors.internal({message:`Transaction ${D+1} failed! Batch execution stopped`})};_e.push(It);}return {result:_e}},"ethSendTransactionBatch");function jr(t,e,r){return new ethers.ethers.Contract(t,Br__default.default.abi).interface.encodeFunctionData("approve",[e,r])}chunkVYIKXRYZ_cjs.a(jr,"encodeApprovalLimit");var ut=new Map,qr=chunkVYIKXRYZ_cjs.a((t,e,r)=>(ut.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a,approvalLimit:s,gasLimit:o})=>{let c=ut.get(t);if(!c)throw rpcErrors.rpcErrors.resourceNotFound();let{signingData:l,displayData:p}=c,m={...l,data:{...l.data,gasLimit:o??l.data.gasLimit,maxFeePerGas:n??l.data.maxFeePerGas,maxPriorityFeePerGas:a??l.data.maxPriorityFeePerGas}},u={...p};if(typeof s=="string"){if(!s.startsWith("0x"))throw rpcErrors.rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let y=p.tokenApprovals;Ja(y),Xa(l.data.data);let h=y.approvals[0];m.data.data=jr(h.token.address,h.spenderAddress,s),u.tokenApprovals={approvals:[{...h,value:s}],isEditable:!0};}let f={signingData:m,displayData:u};return ut.set(t,f),f},cleanup:()=>ut.delete(t)}),"getTxUpdater");function Ja(t){if(!t||!t.isEditable||t.approvals.length!==1)throw rpcErrors.rpcErrors.invalidInput("Cannot edit the token approval for this request. Please start a new request instead.")}chunkVYIKXRYZ_cjs.a(Ja,"ensureTokenApprovalCanBeEdited");function Xa(t){if((!t||t==="0x"?null:st({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}chunkVYIKXRYZ_cjs.a(Xa,"ensureApproveWasCalled");var zr=chunkVYIKXRYZ_cjs.a(async({transactionParams:{from:t,to:e,data:r,value:n,accessList:a},provider:s})=>{let o=await s.getTransactionCount(t);return Number(await s.estimateGas({from:t,to:e,nonce:o,data:r,value:n,accessList:a}))},"estimateGasLimit");var Qa=zod.z.tuple([Te]),Yr=chunkVYIKXRYZ_cjs.a(t=>Qa.safeParse(t),"parseRequestParams");var Kr=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:s,error:o,success:c}=Yr(a);if(!c)return console.error("invalid params",o),{error:rpcErrors.rpcErrors.invalidParams(M("Transaction params are invalid",o))};let[l]=s,p=await F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders});if(!l.gas||Number(l.gas)<0)try{let T=await zr({transactionParams:{from:l.from,to:l.to,data:l.data,value:l.value,accessList:l.accessList},provider:p});l.gas="0x"+T.toString(16);}catch(T){return {error:rpcErrors.rpcErrors.internal(M("Unable to calculate gas limit",T))}}if(!l.nonce)try{let T=await ot({from:l.from,provider:p});l.nonce=String(T);}catch(T){return {error:rpcErrors.rpcErrors.internal(M("Unable to calculate nonce",T))}}let m=await Gr({rpcMethod:t.method,chainId:e.chainId,params:l,dAppUrl:t.dappInfo.url,provider:p,blockaid:n}),{displayData:u,signingData:f}=it(t,e,l,m),{updateTx:y,cleanup:h}=qr(t.requestId,f,u),P=await r.requestApproval({request:t,displayData:u,signingData:f,updateTx:y});if(h(),"error"in P)return {error:P.error};let x,E=t.context?.shouldRetry===!0;try{x=await ct(p,P,{shouldRetry:E});}catch(T){return {error:rpcErrors.rpcErrors.internal(M("Unable to get transaction hash",T))}}return Me({explorerUrl:e.explorerUrl??"",provider:p,txHash:x,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),{result:x}},"ethSendTransaction");var Ot=chunkVYIKXRYZ_cjs.a(t=>{let e="";e+=`Domain
|
|
26
|
+
function sr(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}chunkVYIKXRYZ_cjs.a(sr,"charsum");function Ct(t){let e,r=0;for(e=0;e<t.length;e++){let n=sr(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}chunkVYIKXRYZ_cjs.a(Ct,"arrayHash");var re=chunkVYIKXRYZ_cjs.a(async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=G.exponential()})=>{let a=0,s=0,o;for(;s<r;){s>0&&await Yn(a);try{let l=await t(s);if(e(l))return l}catch(l){o=l;}a=n(s),s++;}let c=o?`Max retry exceeded. ${o}`:"Max retry exceeded.";throw new Error(c)},"retry"),Nt=class Nt{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return r=>e*1e3}static constantMs(e){return r=>e}static linearThenExponential(e,r){return n=>{if(n<e)return (n+1)*r;let a=n-e+1,s=e*r,o=2*r*(Math.pow(2,a)-1);return s+o}}};chunkVYIKXRYZ_cjs.a(Nt,"RetryBackoffPolicy");var G=Nt;function Yn(t){return new Promise(e=>setTimeout(e,t))}chunkVYIKXRYZ_cjs.a(Yn,"delay");var wt=chunkVYIKXRYZ_cjs.a(t=>re({operation:e=>t(e>0),maxRetries:2,backoffPolicy:G.constant(1),isSuccess:e=>e?.status?.error_code!==429}),"coingeckoRetry");async function U(t,e,r=fetch){let n=await r(...t);if(!n.ok)throw new Error(`Request failed with status ${n.status}`);let a=await n.json();return e.parse(a)}chunkVYIKXRYZ_cjs.a(U,"fetchAndVerify");var _t=class _t{constructor(e,r){this.proxyApiUrl=e;this.fetchFn=r;}simplePrice(e){let r=new URLSearchParams(e);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(e){let{id:r,...n}=e,a=new URLSearchParams(n);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}};chunkVYIKXRYZ_cjs.a(_t,"CoingeckoProxyClient");var De=_t;var Kn=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())})),Dt=class Dt{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"}}],Kn)}};chunkVYIKXRYZ_cjs.a(Dt,"WatchlistProxyClient");var Xe=Dt;var Y,ne,ae,fe,Bt=class Bt{constructor({storage:e,proxyApiUrl:r,fetch:n}){chunkVYIKXRYZ_cjs.d(this,Y,void 0);chunkVYIKXRYZ_cjs.d(this,ne,void 0);chunkVYIKXRYZ_cjs.d(this,ae,void 0);chunkVYIKXRYZ_cjs.d(this,fe,void 0);chunkVYIKXRYZ_cjs.b(this,"transformSimplePriceResponse",chunkVYIKXRYZ_cjs.a((e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(a=>{let s=e[a];n[a]={},r.forEach(o=>{n[a]={[o]:{price:s?.[o],change24:s?.[`${o}_24h_change`],vol24:s?.[`${o}_24h_vol`],marketCap:s?.[`${o}_market_cap`]}};});}),n},"transformSimplePriceResponse"));chunkVYIKXRYZ_cjs.e(this,Y,e),chunkVYIKXRYZ_cjs.e(this,ne,r),chunkVYIKXRYZ_cjs.e(this,ae,n??globalThis.fetch),chunkVYIKXRYZ_cjs.e(this,fe,coreCoingeckoSdk.getBasicCoingeckoHttp(void 0,chunkVYIKXRYZ_cjs.c(this,ae)));}async getWatchlistDataForToken({tokenDetails:e,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new Xe(chunkVYIKXRYZ_cjs.c(this,ne)).watchlistToken({tokens:e.symbol,currency:r})).filter(s=>e.isNative?s.internalId===`NATIVE-${e.symbol.toLowerCase()}`:s.platforms[e.caip2Id]===e.address),[a]=n;return a?{priceInCurrency:a.current_price??0,change24:a.price_change_percentage_24h??0,marketCap:a.market_cap??0,vol24:a.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,s=`getSimplePrice-${e?`${Ct(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkVYIKXRYZ_cjs.c(this,Y)?.get?.(s),n)return n;try{n=await wt(o=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:o}));}catch{n=void 0;}return chunkVYIKXRYZ_cjs.c(this,Y)?.set?.(s,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,o=`getPricesWithMarketDataByAddresses-${`${Ct(e)}-${r}-${n}`}`;if(a=chunkVYIKXRYZ_cjs.c(this,Y)?.get?.(o),a)return a;try{a=await wt(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),a=void 0;}return chunkVYIKXRYZ_cjs.c(this,Y)?.set?.(o,a),a}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let s=await new De(chunkVYIKXRYZ_cjs.c(this,ne),chunkVYIKXRYZ_cjs.c(this,ae)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(s,[n])}return coreCoingeckoSdk.simpleTokenPrice(chunkVYIKXRYZ_cjs.c(this,fe),{assetPlatformId:e,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:a=!1,change24:s=!1,lastUpdated:o=!1,useCoingeckoProxy:c=!1,shouldThrow:l=!0}){if(c){let p=await new De(chunkVYIKXRYZ_cjs.c(this,ne),chunkVYIKXRYZ_cjs.c(this,ae)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:s,include_last_updated_at:o});return this.transformSimplePriceResponse(p,r)}return coreCoingeckoSdk.simplePrice(chunkVYIKXRYZ_cjs.c(this,fe),{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:s,lastUpdated:o,shouldThrow:l})}};Y=new WeakMap,ne=new WeakMap,ae=new WeakMap,fe=new WeakMap,chunkVYIKXRYZ_cjs.a(Bt,"TokenService");var K=Bt;var na="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",aa="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",cr=zod.object({date:zod.string(),usd:zod.record(zod.number())}),Ze=chunkVYIKXRYZ_cjs.a(async()=>{try{return await U([na],cr)}catch{return await U([aa],cr)}},"getExchangeRates");var Ut=chunkVYIKXRYZ_cjs.a((t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),"textItem"),et=chunkVYIKXRYZ_cjs.a((t,e)=>({label:t,value:e,type:vmModuleTypes.DetailItemType.LINK}),"linkItem"),ye=chunkVYIKXRYZ_cjs.a((t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e}),"addressItem");var tt=chunkVYIKXRYZ_cjs.a((t,e)=>({label:t,type:vmModuleTypes.DetailItemType.NETWORK,value:e}),"networkItem");var Ft=chunkVYIKXRYZ_cjs.a(({name:t,version:e})=>{switch(t){case vmModuleTypes.AppName.CORE_MOBILE_IOS:case vmModuleTypes.AppName.CORE_MOBILE_ANDROID:case vmModuleTypes.AppName.CORE_WEB:case vmModuleTypes.AppName.CORE_EXTENSION:case vmModuleTypes.AppName.EXPLORER:return {"x-application-name":t,"x-application-version":e};case vmModuleTypes.AppName.OTHER:return}},"getCoreHeaders");var lr=process.env.GLACIER_API_KEY;var Be=chunkVYIKXRYZ_cjs.a(()=>lr,"getGlacierApiKey");var ia={rltoken:Be()},oe,rt,nt,mr,at,dr,Gt=class Gt extends glacierSdk.FetchHttpRequest{constructor(r){super(r);chunkVYIKXRYZ_cjs.d(this,nt);chunkVYIKXRYZ_cjs.d(this,at);chunkVYIKXRYZ_cjs.d(this,oe,0);chunkVYIKXRYZ_cjs.d(this,rt,G.exponential());}request(r){let n={...ia,...r.query||{}},a={...r,query:Object.keys(n).length>0?n:void 0},s=chunkVYIKXRYZ_cjs.a(()=>super.request(a),"getRequest");return chunkVYIKXRYZ_cjs.c(this,oe)>0?chunkVYIKXRYZ_cjs.f(this,at,dr).call(this,s):chunkVYIKXRYZ_cjs.f(this,nt,mr).call(this,s)}};oe=new WeakMap,rt=new WeakMap,nt=new WeakSet,mr=chunkVYIKXRYZ_cjs.a(function(r){let n=r();return new glacierSdk.CancelablePromise((a,s,o)=>{o(()=>n.cancel()),n.then(c=>{chunkVYIKXRYZ_cjs.e(this,oe,0),a(c);}).catch(c=>{if(c instanceof glacierSdk.ApiError){let l=c.status===429,p=c.status>=500&&c.status<600;chunkVYIKXRYZ_cjs.e(this,oe,chunkVYIKXRYZ_cjs.c(this,oe)+Number(l||p));}s(c);});})},"#request"),at=new WeakSet,dr=chunkVYIKXRYZ_cjs.a(function(r){let n=chunkVYIKXRYZ_cjs.c(this,rt).call(this,chunkVYIKXRYZ_cjs.c(this,oe));return new glacierSdk.CancelablePromise((a,s,o)=>{let c=setTimeout(()=>{let l=r();o(()=>{l.cancel(),clearTimeout(c);}),l.then(a).catch(s);},n);})},"#postponeRequest"),chunkVYIKXRYZ_cjs.a(Gt,"GlacierFetchHttpRequest");var Ue=Gt;var M=chunkVYIKXRYZ_cjs.a((t,e)=>({message:`${t}${e instanceof Error?`: ${e.message}`:""}`,data:{cause:e}}),"rpcErrorOpts");var ur={name:"EVM",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/index.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider/index.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:[],namespaces:["eip155"]},cointype:"60",permissions:{rpc:{dapps:!0,methods:["personal_sign","eth_sendTransaction","eth_sendTransactionBatch","eth_*","web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"],nonRestrictedMethods:["eth_requestAccounts","eth_decrypt","eth_getEncryptionPublicKey","eth_subscribe","eth_unsubscribe","eth_blockNumber","eth_call","eth_chainId","eth_coinbase","eth_estimateGas","eth_feeHistory","eth_gasPrice","eth_getBalance","eth_getBlockByHash","eth_getBlockByNumber","eth_getBlockTransactionCountByHash","eth_getBlockTransactionCountByNumber","eth_getCode","eth_getFilterChanges","eth_getFilterLogs","eth_getLogs","eth_getProof","eth_getStorageAt","eth_getTransactionByBlockHashAndIndex","eth_getTransactionByBlockNumberAndIndex","eth_getTransactionByHash","eth_getTransactionCount","eth_getTransactionReceipt","eth_getUncleCountByBlockHash","eth_getUncleCountByBlockNumber","eth_newBlockFilter","eth_newFilter","eth_newPendingTransactionFilter","eth_syncing","eth_uninstallFilter","net_version","net_peerCount","net_listening","web3_sha3","web3_clientVersion"]}},manifestVersion:"0.1"};var fr="DUMMY_API_KEY";var la={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},pa={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},hr=chunkVYIKXRYZ_cjs.a(t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return la;case vmModuleTypes.Environment.DEV:return pa}},"getEnv");var ge=chunkVYIKXRYZ_cjs.a(({accountIndex:t,derivationPathType:e})=>{if(t<0)throw rpcErrors.rpcErrors.invalidParams("Account index must be a non-negative integer");switch(e){case"bip44":return {[vmModuleTypes.NetworkVMType.EVM]:`m/44'/60'/0'/0/${t}`};case"ledger_live":return {[vmModuleTypes.NetworkVMType.EVM]:`m/44'/60'/${t}'/0/0`};default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported derivation path type: ${e}`)}},"buildDerivationPath");var kr=chunkVYIKXRYZ_cjs.a(t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string","hasDerivationDetails");var br=chunkVYIKXRYZ_cjs.a(async t=>{let{secretId:e,approvalController:r}=t,n=kr(t)?ge(t).EVM:void 0,a=await r.requestPublicKey({curve:"secp256k1",secretId:e,derivationPath:n});return {[vmModuleTypes.NetworkVMType.EVM]:ethers.computeAddress(`0x${a}`)}},"deriveAddress");var vr=chunkVYIKXRYZ_cjs.a(async t=>{let{approvalController:e,secretId:r,accountIndices:n,derivationPathType:a}=t;if(n.length===0)return [];await cryptoSdk.init();let s=await Promise.all(n.map(async c=>{let l=ge({accountIndex:c,derivationPathType:a}).EVM,p=await e.requestPublicKey({curve:"secp256k1",secretId:r,derivationPath:l});return Uint8Array.from(Buffer.from(p,"hex"))}));return (await cryptoSdk.deriveAddressesForEvm(s)).map(c=>({[vmModuleTypes.NetworkVMType.EVM]:c}))},"deriveAddresses");var F=chunkVYIKXRYZ_cjs.a(async t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:s=2e3,customRpcHeaders:o}=t,c=ba(n),l=c;if(o){let m=new ethers.FetchRequest(c);for(let[u,f]of Object.entries(o))m.setHeader(u,f);l=m;}let p=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:a},l,new ethers.Network(r,e));return p.pollingInterval=s,p},"getProvider"),ka=["glacier-api.avax.network","proxy-api.avax.network"];function ba(t){let e=new URL(t),r=Be();if(r&&ka.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}chunkVYIKXRYZ_cjs.a(ba,"addGlacierAPIKeyIfNeeded");var Te=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 Pr=zod.z.tuple([Te,Te]).rest(Te).refine(t=>Mt(t,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(t=>Mt(t,"from"),{message:'All transactions must use the same "from" address'}).refine(t=>Ea(t,"nonce")||Ra(t,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'}),va=zod.z.object({skipIntermediateTxs:zod.z.boolean().optional()}),Pa=zod.z.union([Pr,zod.z.object({transactions:Pr,options:va.optional()})]);function Ra(t,e){return !Mt(t,e)}chunkVYIKXRYZ_cjs.a(Ra,"areAllDifferentByProp");function Ea(t,e){return t.every(r=>r[e]===void 0||r[e]==="")}chunkVYIKXRYZ_cjs.a(Ea,"areAllEmptyByProp");function Mt(t,e){return new Set(t.map(n=>n[e])).size===1}chunkVYIKXRYZ_cjs.a(Mt,"areAllEqualByProp");var Rr=chunkVYIKXRYZ_cjs.a(t=>{let e=Pa.safeParse(t);return e.success?Array.isArray(e.data)?{success:!0,data:{transactions:e.data,options:{}}}:{success:!0,data:{transactions:e.data.transactions,options:e.data.options??{}}}:e},"parseRequestParams");var ot=chunkVYIKXRYZ_cjs.a(async({from:t,provider:e})=>e.getTransactionCount(t),"getNonce");var Er=chunkVYIKXRYZ_cjs.a(async(t,e)=>{if(t[0].nonce)return;let r=await ot({from:t[0].from,provider:e});return Promise.all(t.map(async(n,a)=>{n.nonce=String(r+a);}))},"ensureProperNonces");var xr=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER,vmModuleTypes.TransactionType.NFT_SEND,vmModuleTypes.TransactionType.NFT_RECEIVE],se=(o=>(o.TOTAL_SUPPLY="totalSupply",o.BALANCE_OF="balanceOf",o.TRANSFER="transfer",o.TRANSFER_FROM="transferFrom",o.APPROVE="approve",o.ALLOWANCE="allowance",o))(se||{});var st=chunkVYIKXRYZ_cjs.a(t=>{if(t.data)try{let r=new ethers.Interface(Br__default.default.abi).parseTransaction({data:t.data,value:t.value}),n=r?.name??r?.fragment?.name;return n&&Sa(n)?n:void 0}catch{return}},"parseERC20TransactionType");function Sa(t){return Object.values(se).includes(t)}chunkVYIKXRYZ_cjs.a(Sa,"isERC20TransactionType");var it=chunkVYIKXRYZ_cjs.a((t,e,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:s,alert:o})=>{let{dappInfo:c}=t,l=st(r),p="Do you approve this transaction?";l==="approve"&&(p="Do you approve this spend limit?");let m=[ye("Account",r.from),tt("Network",{name:e.chainName,logoUri:e.logoUri}),et("Website",c)];r.to&&m.push(ye("Contract",r.to));let u={title:p,details:[{title:"Transaction Details",items:m}],networkFeeSelector:!0,alert:o,balanceChange:a,tokenApprovals:s,isSimulationSuccessful:n},f={type:vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,account:r.from,data:{type:2,nonce:Number(r.nonce),gasLimit:Number(r.gas),maxFeePerGas:r.maxFeePerGas,maxPriorityFeePerGas:r.maxPriorityFeePerGas,to:r.to,from:r.from,data:r.data,value:r.value,chainId:r.chainId??e.chainId,accessList:r.accessList}};return {displayData:u,signingData:f}},"buildTxApprovalRequest");var ct=chunkVYIKXRYZ_cjs.a(async(t,e,r)=>{if("txHash"in e)return e.txHash;let n=chunkVYIKXRYZ_cjs.a(()=>t.send("eth_sendRawTransaction",[e.signedData]),"broadcast");return r?.shouldRetry?re({operation:()=>n(),isSuccess:()=>!0,maxRetries:6,backoffPolicy:G.linearThenExponential(4,1e3)}):n()},"getTxHash");function ke(t,e,r="tx"){return `${t}/${r}/${e}`}chunkVYIKXRYZ_cjs.a(ke,"getExplorerAddressByNetwork");var Me=chunkVYIKXRYZ_cjs.a(async({explorerUrl:t,provider:e,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:s,request:o})=>{try{let c=ke(t,r);if(n({txHash:r,request:o,explorerLink:c}),(await re({operation:async()=>e.getTransactionReceipt(r),isSuccess:m=>!!m,backoffPolicy:G.linearThenExponential(15,750),maxRetries:20}))?.status===1)return a({txHash:r,explorerLink:c,request:o}),!0}catch(c){console.error(c);}return s({txHash:r,request:o}),!1},"waitForTransactionReceipt");var lt=new Map,Ar=chunkVYIKXRYZ_cjs.a((t,e,r)=>(lt.set(t,{signingRequests:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a},s)=>{let o=lt.get(t);if(!o)throw rpcErrors.rpcErrors.resourceNotFound();let{signingRequests:c}=o,p={signingRequests:c.map((m,u)=>{if(s===void 0||s===u){let{signingData:f}=m;return {signingData:{...f,data:{...f.data,maxFeePerGas:n??f.data.maxFeePerGas,maxPriorityFeePerGas:a??f.data.maxPriorityFeePerGas}},displayData:m.displayData}}return m}),displayData:r};return lt.set(t,p),p},cleanup:()=>lt.delete(t)}),"getTxBatchUpdater");function ie(t){return !("type"in t)}chunkVYIKXRYZ_cjs.a(ie,"isNetworkToken");function pt(t){return t.type===vmModuleTypes.TokenType.ERC20}chunkVYIKXRYZ_cjs.a(pt,"isERC20Token");function Sr(t){return typeof t.to=="string"}chunkVYIKXRYZ_cjs.a(Sr,"hasToField");function Ir(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}chunkVYIKXRYZ_cjs.a(Ir,"supportsBatchApprovals");function wa(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}chunkVYIKXRYZ_cjs.a(wa,"isBalanceChange");function _a(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}chunkVYIKXRYZ_cjs.a(_a,"isTokenApprovals");function Lt(t){return wa(t)?t.ins.length===0&&t.outs.length===0:_a(t)?t.approvals.length===0:!1}chunkVYIKXRYZ_cjs.a(Lt,"isEmpty");var Cr=chunkVYIKXRYZ_cjs.a(async({chainId:t,params:e,domain:r,withGasEstimation:n,blockaid:a})=>{let s=["validation","simulation"];return n&&s.push("gas_estimation"),a.evm.transactionBulk.scan({chain:t.toString(),options:s,data:e,metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}})},"scanTransactionBatch"),Nr=chunkVYIKXRYZ_cjs.a(async({chainId:t,params:e,domain:r,blockaid:n})=>n.evm.transaction.scan({account_address:e.from,chain:t.toString(),options:["validation","simulation"],data:{from:e.from,to:e.to,data:e.data,value:e.value,gas:e.gas,gas_price:e.gasPrice},metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}}),"scanTransaction"),wr=chunkVYIKXRYZ_cjs.a(async({chainId:t,accountAddress:e,data:r,domain:n,blockaid:a})=>a.evm.jsonRpc.scan({chain:t.toString(),options:["validation","simulation"],account_address:e,data:r,metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}}),"scanJsonRpc");var Ur=chunkVYIKXRYZ_cjs.a(async(t,e,r)=>{if(!t.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.ethers.Contract(t.to,Br__default.default.abi,r),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),s=_r__default.default(a[0]),o=_r__default.default(a[1]),c=parseInt(a[2]),l={type:vmModuleTypes.TokenType.ERC20,name:s,chainId:e,symbol:o,decimals:c,address:t.to,contractType:"ERC-20"},p=new ethers.ethers.Interface(Br__default.default.abi),m=p.getFunction(t.data.slice(0,10)),u=p.decodeFunctionData(t.data.slice(0,10),t.data);if(m?.name==="transfer")return {balanceChange:{outs:[{items:[{displayValue:new coreUtilsSdk.TokenUnit(u.amount,l.decimals,l.symbol).toDisplay(),usdPrice:void 0}],token:l}],ins:[]}};if(m?.name==="approve")return {tokenApprovals:{isEditable:!0,approvals:[{token:l,spenderAddress:u.spender,value:u.amount}]}}}catch(n){console.error("parseErc20Tx error",n);}return {tokenApprovals:void 0,balanceChange:void 0}},"parseWithErc20Abi");var J={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious transaction",description:"Use caution, this transaction might be malicious."}},[vmModuleTypes.AlertType.DANGER]:{type:vmModuleTypes.AlertType.DANGER,details:{title:"Scam transaction",description:"This transaction has been flagged as malicious, I understand the risk.",body:["This transaction is malicious","do not proceed"],actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};var Gr=chunkVYIKXRYZ_cjs.a(async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,blockaid:s})=>{let o;try{o=await Nr({chainId:n,params:r,domain:e,blockaid:s});}catch(c){console.error("simulateTransaction error",c);}return Vt({rpcMethod:t,params:r,chainId:n,provider:a,simulationResult:o})},"simulateTransaction"),Vt=chunkVYIKXRYZ_cjs.a(async({rpcMethod:t,params:e,chainId:r,provider:n,simulationResult:a})=>{let s,o,c,l=!1,p;if(a){let{validation:m,simulation:u,gas_estimation:f}=a;m?.result_type==="Warning"?s=J[vmModuleTypes.AlertType.WARNING]:m?.result_type==="Malicious"&&(s=J[vmModuleTypes.AlertType.DANGER]),u?.status==="Success"&&(l=!0,c=Mr(t,u.account_summary),o=Lr(u.account_summary.assets_diffs)),f?.status==="Success"&&(p=Number(f.estimate));}if(!l&&Sr(e)){let m=await Ur(e,r,n);o=m.balanceChange,c=m.tokenApprovals;}return {alert:s,balanceChange:o,tokenApprovals:c,isSimulationSuccessful:l,estimatedGasLimit:p}},"processTransactionSimulation"),Va=chunkVYIKXRYZ_cjs.a(t=>t.trace_type==="ExposureTrace","isExposureTrace"),Oa=chunkVYIKXRYZ_cjs.a((t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,"normalizeAddresses"),Ha=chunkVYIKXRYZ_cjs.a(t=>t===void 0||t.length===0?{}:t.reduce((e,r)=>Va(r)?{[Oa(r.spender,r.asset.address)]:r}:e,{}),"mapExposureTracesToSpenderAsset"),Mr=chunkVYIKXRYZ_cjs.a((t,e)=>{let{traces:r}=e,n=Ha(r),a=Object.entries(n).map(([o,c])=>{let l=Vr(c.asset);if(!l)return;let p={token:l,spenderAddress:c.spender,logoUri:l.logoUri};if(c.type==="ERC20ExposureTrace"){let{exposed:{raw_value:m,value:u,usd_price:f}}=c;if(!u||u<=0)return;p.value=m,p.usdPrice=`${f}`;}if(c.type==="ERC721ExposureTrace")if(!c.exposed)p.value=`0x${ethers.MaxUint256.toString(16)}`;else {let{usd_price:m,amount:u}=c.exposed;p.value=`${u}`,p.usdPrice=`${m}`;}return p}).filter(Boolean);return a.length===0?void 0:{isEditable:a.length===1&&a[0]?.token.type===vmModuleTypes.TokenType.ERC20&&t===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:a}},"processTokenApprovals"),Lr=chunkVYIKXRYZ_cjs.a(t=>{let e=Fr(t,"in"),r=Fr(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},"processBalanceChange"),Fr=chunkVYIKXRYZ_cjs.a((t,e)=>t.filter(r=>r[e].length>0).sort((r,n)=>r[e].length-n[e].length).map(r=>{let n=r.asset,a="address"in n?Vr(n):$a(n);if(!a)return;let s=r[e].map(o=>{let c;if("value"in o&&o.value)if("decimals"in a){let u=coreUtilsSdk.numberToBN(o.value,a.decimals);c=coreUtilsSdk.balanceToDisplayValue(u,a.decimals);}else ethers.isHexString(o.value)&&(c=parseInt(o.value,16).toString());else "type"in a&&a.type===vmModuleTypes.TokenType.ERC721&&(c="1");if(!c)return;let l="logo_url"in o?o.logo_url:void 0,p="token_id"in o?o.token_id:void 0;return {displayValue:c,usdPrice:o.usd_price,...l!==void 0&&{logoUri:l},...p!==void 0&&{tokenId:p}}}).filter(o=>o!==void 0);return {token:a,items:s}}).filter(r=>r!==void 0),"processAssetDiffs"),Vr=chunkVYIKXRYZ_cjs.a(t=>{let e;return t.type==="ERC20"?e={type:vmModuleTypes.TokenType.ERC20,address:t.address,decimals:t.decimals,name:t.name??t.symbol??"",symbol:t.symbol??"",logoUri:t.logo_url}:t.type==="ERC1155"?e={type:vmModuleTypes.TokenType.ERC1155,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="ERC721"?e={type:vmModuleTypes.TokenType.ERC721,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="NONERC"&&(e={type:vmModuleTypes.TokenType.NONERC,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}),e},"convertAssetToNetworkContractToken"),$a=chunkVYIKXRYZ_cjs.a(t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),"convertNativeAssetToToken"),Or=chunkVYIKXRYZ_cjs.a(async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:a,blockaid:s})=>{let o,c,l;try{let{validation:p,simulation:m}=await wr({chainId:n,accountAddress:r,data:a,domain:e,blockaid:s});p?.result_type==="Warning"?o=J[vmModuleTypes.AlertType.WARNING]:p?.result_type==="Malicious"&&(o=J[vmModuleTypes.AlertType.DANGER]),m?.status==="Success"&&(l=Mr(t.method,m.account_summary),c=Lr(m.account_summary.assets_diffs));}catch(p){console.error("processJsonRpcSimulation error",p),o=J[vmModuleTypes.AlertType.WARNING];}return {alert:o,balanceChange:c,tokenApprovals:l}},"processJsonRpcSimulation");var $r=chunkVYIKXRYZ_cjs.a(async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,populateMissingGas:s,blockaid:o})=>{let c;try{c=await Cr({chainId:n,params:r,domain:e,withGasEstimation:s,blockaid:o});}catch(y){return console.error("simulateTransactionBatch error",y),{isSimulationSuccessful:!1,alert:J[vmModuleTypes.AlertType.WARNING],scans:[]}}let l=await Promise.all(c.map(async(y,h)=>{let P=r[h],x=await Vt({chainId:n,params:r[h],provider:a,rpcMethod:t,simulationResult:y});return s&&!P.gas&&x.estimatedGasLimit&&(P.gas=`0x${x.estimatedGasLimit.toString(16)}`),{transaction:P,...x}})),p=l.every(y=>y.isSimulationSuccessful),m=Wa(l),u=qa(l),f=ja(l);return {isSimulationSuccessful:p,alert:m,balanceChange:u,tokenApprovals:f,scans:l.map(y=>(y.tokenApprovals&&(y.tokenApprovals.isEditable=!1),y))}},"simulateTransactionBatch"),Wa=chunkVYIKXRYZ_cjs.a(t=>{let e={[vmModuleTypes.AlertType.INFO]:0,[vmModuleTypes.AlertType.WARNING]:1,[vmModuleTypes.AlertType.DANGER]:2};return t.reduce((r,{alert:n})=>n&&(!r||e[n.type]>e[r.type])?n:r,void 0)},"getHighestAlert"),ja=chunkVYIKXRYZ_cjs.a(t=>{let e=t.reduce((r,{tokenApprovals:n})=>(n&&n.approvals.forEach(a=>{let s=r.approvals.find(o=>a.token.address===o.token.address&&a.spenderAddress===o.spenderAddress);if(!s){r.approvals.push({...a});return}s.value=a.value,s.usdPrice=a.usdPrice;}),r),{approvals:[],isEditable:!1});return za(e,t),Lt(e)?void 0:e},"aggregateTokenApprovals"),qa=chunkVYIKXRYZ_cjs.a(t=>{let e=t.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(a=>{let s=Hr(r.ins,a);s?s.items.push(...a.items):r.ins.push(a);}),n.outs.forEach(a=>{let s=Hr(r.outs,a);s?s.items.push(...a.items):r.outs.push({...a});})),r),{ins:[],outs:[]});return Lt(e)?void 0:e},"aggregateBalanceChange"),Hr=chunkVYIKXRYZ_cjs.a((t,e)=>t.find(r=>ie(r.token)&&ie(e.token)?r.token.symbol===e.token.symbol:!ie(r.token)&&!ie(e.token)?r.token.address===e.token.address:!1),"findTokenDiff"),za=chunkVYIKXRYZ_cjs.a((t,e)=>{for(let r of t.approvals)for(let n of e)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(s=>!ie(s.token)&&!ie(r.token)&&s.token.address===r.token.address)))if(!n.tokenApprovals)t.approvals=t.approvals.filter(s=>s.spenderAddress!==r.spenderAddress&&r.token.address!==s.token.address);else {let s=n.tokenApprovals.approvals.find(o=>o.spenderAddress===r.spenderAddress&&o.token.address===r.token.address);if(!s)continue;r.usdPrice=s.usdPrice,r.value=s.value;}},"clearSpentApprovals");var Wr=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:s,success:o,error:c}=Rr(a);if(!o)return console.error("invalid params",c),{error:rpcErrors.rpcErrors.invalidParams(M("Transaction params are invalid",c))};let{transactions:l,options:p={}}=s,{skipIntermediateTxs:m=!1}=p,u=await F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders});try{await Er(l,u);}catch(D){return console.error("Unable to calculate nonce",D),{error:rpcErrors.rpcErrors.internal(M("Unable to calculate nonce",D))}}let f=l.every(D=>Number(D.gas)>0),{alert:y,balanceChange:h,isSimulationSuccessful:P,tokenApprovals:x,scans:R}=await $r({rpcMethod:t.method,chainId:e.chainId,params:l,dAppUrl:t.dappInfo.url,provider:u,populateMissingGas:!f,blockaid:n});if(!R.every(({transaction:D})=>Number(D.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:[ye("Account",l[0].from),tt("Network",{name:e.chainName,logoUri:e.logoUri}),et("Website",t.dappInfo)]}],isSimulationSuccessful:P,balanceChange:h,alert:y,tokenApprovals:x,networkFeeSelector:!0},k=R.map(D=>it(t,e,D.transaction,D)),{cleanup:v,updateTx:L}=Ar(t.requestId,k,I),j=await r.requestBatchApproval({request:t,signingRequests:k,displayData:I,updateTx:L});if(v(),"error"in j)return {error:j.error};if(j.result.length!==l.length)return {error:rpcErrors.rpcErrors.internal({message:`Invalid number of signatures. Expected ${l.length}, got ${j.result.length}`})};let _e=[];for(let[D,zn]of j.result.entries()){let or=D===j.result.length-1,It=await ct(u,zn);if(or&&Me({explorerUrl:e.explorerUrl??"",provider:u,txHash:It,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),!or&&!m&&!await Me({explorerUrl:e.explorerUrl??"",provider:u,txHash:It,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}))return {error:rpcErrors.rpcErrors.internal({message:`Transaction ${D+1} failed! Batch execution stopped`})};_e.push(It);}return {result:_e}},"ethSendTransactionBatch");function jr(t,e,r){return new ethers.ethers.Contract(t,Br__default.default.abi).interface.encodeFunctionData("approve",[e,r])}chunkVYIKXRYZ_cjs.a(jr,"encodeApprovalLimit");var ut=new Map,qr=chunkVYIKXRYZ_cjs.a((t,e,r)=>(ut.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a,approvalLimit:s,gasLimit:o})=>{let c=ut.get(t);if(!c)throw rpcErrors.rpcErrors.resourceNotFound();let{signingData:l,displayData:p}=c,m={...l,data:{...l.data,gasLimit:o??l.data.gasLimit,maxFeePerGas:n??l.data.maxFeePerGas,maxPriorityFeePerGas:a??l.data.maxPriorityFeePerGas}},u={...p};if(typeof s=="string"){if(!s.startsWith("0x"))throw rpcErrors.rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let y=p.tokenApprovals;Ja(y),Xa(l.data.data);let h=y.approvals[0];m.data.data=jr(h.token.address,h.spenderAddress,s),u.tokenApprovals={approvals:[{...h,value:s}],isEditable:!0};}let f={signingData:m,displayData:u};return ut.set(t,f),f},cleanup:()=>ut.delete(t)}),"getTxUpdater");function Ja(t){if(!t||!t.isEditable||t.approvals.length!==1)throw rpcErrors.rpcErrors.invalidInput("Cannot edit the token approval for this request. Please start a new request instead.")}chunkVYIKXRYZ_cjs.a(Ja,"ensureTokenApprovalCanBeEdited");function Xa(t){if((!t||t==="0x"?null:st({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}chunkVYIKXRYZ_cjs.a(Xa,"ensureApproveWasCalled");var zr=chunkVYIKXRYZ_cjs.a(async({transactionParams:{from:t,to:e,data:r,value:n,accessList:a},provider:s})=>{let o=await s.getTransactionCount(t);return Number(await s.estimateGas({from:t,to:e,nonce:o,data:r,value:n,accessList:a}))},"estimateGasLimit");var Qa=zod.z.tuple([Te]),Yr=chunkVYIKXRYZ_cjs.a(t=>Qa.safeParse(t),"parseRequestParams");var Kr=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:s,error:o,success:c}=Yr(a);if(!c)return console.error("invalid params",o),{error:rpcErrors.rpcErrors.invalidParams(M("Transaction params are invalid",o))};let[l]=s,p=await F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders});if(!l.gas||Number(l.gas)<0)try{let T=await zr({transactionParams:{from:l.from,to:l.to,data:l.data,value:l.value,accessList:l.accessList},provider:p});l.gas="0x"+T.toString(16);}catch(T){return {error:rpcErrors.rpcErrors.internal(M("Unable to calculate gas limit",T))}}if(!l.nonce)try{let T=await ot({from:l.from,provider:p});l.nonce=String(T);}catch(T){return {error:rpcErrors.rpcErrors.internal(M("Unable to calculate nonce",T))}}let m=await Gr({rpcMethod:t.method,chainId:e.chainId,params:l,dAppUrl:t.dappInfo.url,provider:p,blockaid:n}),{displayData:u,signingData:f}=it(t,e,l,m),{updateTx:y,cleanup:h}=qr(t.requestId,f,u),P=await r.requestApproval({request:t,displayData:u,signingData:f,updateTx:y});if(h(),"error"in P)return {error:P.error};let x,R=t.context?.shouldRetry===!0;try{x=await ct(p,P,{shouldRetry:R});}catch(T){return {error:rpcErrors.rpcErrors.internal(M("Unable to get transaction hash",T))}}return Me({explorerUrl:e.explorerUrl??"",provider:p,txHash:x,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),{result:x}},"ethSendTransaction");var Ot=chunkVYIKXRYZ_cjs.a(t=>{let e="";e+=`Domain
|
|
27
27
|
`;for(let r in t.domain)e+=` ${r}: ${ce(String(t.domain[r]))}
|
|
28
28
|
`;e+=`
|
|
29
29
|
Message
|
|
@@ -40,12 +40,12 @@ Message
|
|
|
40
40
|
`;return e},"beautifyComplexMessage"),Jr=chunkVYIKXRYZ_cjs.a(t=>{let e="";return t.forEach(r=>{e+=`${r.name}:
|
|
41
41
|
`,e+=`${ce(String(r.value))}
|
|
42
42
|
|
|
43
|
-
`;}),e},"beautifySimpleMessage"),ce=chunkVYIKXRYZ_cjs.a(t=>{let e={0:"\u{1D7EC}",1:"\u{1D7ED}",2:"\u{1D7EE}",3:"\u{1D7EF}",4:"\u{1D7F0}",5:"\u{1D7F1}",6:"\u{1D7F2}",7:"\u{1D7F3}",8:"\u{1D7F4}",9:"\u{1D7F5}",a:"\u{1D5EE}",b:"\u{1D5EF}",c:"\u{1D5F0}",d:"\u{1D5F1}",e:"\u{1D5F2}",f:"\u{1D5F3}",g:"\u{1D5F4}",h:"\u{1D5F5}",i:"\u{1D5F6}",j:"\u{1D5F7}",k:"\u{1D5F8}",l:"\u{1D5F9}",m:"\u{1D5FA}",n:"\u{1D5FB}",o:"\u{1D5FC}",p:"\u{1D5FD}",q:"\u{1D5FE}",r:"\u{1D5FF}",s:"\u{1D600}",t:"\u{1D601}",u:"\u{1D602}",v:"\u{1D603}",w:"\u{1D604}",x:"\u{1D605}",y:"\u{1D606}",z:"\u{1D607}",A:"\u{1D5D4}",B:"\u{1D5D5}",C:"\u{1D5D6}",D:"\u{1D5D7}",E:"\u{1D5D8}",F:"\u{1D5D9}",G:"\u{1D5DA}",H:"\u{1D5DB}",I:"\u{1D5DC}",J:"\u{1D5DD}",K:"\u{1D5DE}",L:"\u{1D5DF}",M:"\u{1D5E0}",N:"\u{1D5E1}",O:"\u{1D5E2}",P:"\u{1D5E3}",Q:"\u{1D5E4}",R:"\u{1D5E5}",S:"\u{1D5E6}",T:"\u{1D5E7}",U:"\u{1D5E8}",V:"\u{1D5E9}",W:"\u{1D5EA}",X:"\u{1D5EB}",Y:"\u{1D5EC}",Z:"\u{1D5ED}"};return t.split("").map(r=>e[r]||r).join("")},"toUnicodeBold");var Oe=zod.z.string().describe("message"),V=zod.z.string().describe("address");var Zr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([V,Oe])});var Qr=zod.z.object({name:zod.z.string(),type:zod.z.string()}),ve=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(Qr)}).catchall(zod.z.array(Qr)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),$t=zod.z.array(zod.z.object({type:zod.z.string(),name:zod.z.string(),value:zod.z.union([zod.z.string(),zod.z.number(),zod.z.boolean(),zod.z.object({}).passthrough(),zod.z.array(zod.z.unknown()),zod.z.null()])})).nonempty(),Wt=ve.or($t),en=zod.z.union([zod.z.string().describe("data string"),ve]),tn=zod.z.union([zod.z.string().describe("data string"),Wt]),rn=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([V,tn])}),nn=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([V,tn])}),an=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([V,en])}),on=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([V,en])});var sn=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([Oe,V]),zod.z.tuple([Oe,V,zod.z.string().optional().describe("password")])])});var ro=zod.z.discriminatedUnion("method",[sn,Zr,rn,nn,an,on]).transform((t,e)=>{let{method:r,params:n}=t;switch(r){case vmModuleTypes.RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:r};case vmModuleTypes.RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:r};case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:{let a=n[0],s=n[1];if(typeof s!="string")return {data:s,address:a,method:r};try{let o=JSON.parse(s);return {data:Wt.parse(o),address:a,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:{let a=n[0],s=n[1];if(typeof s!="string")return {data:s,address:a,method:r};try{let o=JSON.parse(s);return {data:ve.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 cn(t){return ro.safeParse(t)}chunkVYIKXRYZ_cjs.a(cn,"parseRequestParams");var ln=chunkVYIKXRYZ_cjs.a(t=>$t.safeParse(t).success,"isTypedDataV1"),Ap=chunkVYIKXRYZ_cjs.a(t=>ve.safeParse(t).success,"isTypedData");var pn=chunkVYIKXRYZ_cjs.a(t=>{try{let{EIP712Domain:e,...r}=t.types;return ethers.TypedDataEncoder.getPayload(t.domain,r,t.message),{isValid:!0}}catch(e){return {isValid:!1,error:e}}},"isTypedDataValid");var mn=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r,blockaid:n})=>{let a=cn({method:t.method,params:t.params});if(!a.success)return console.error("invalid params",a.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams(M("Params are invalid",a.error))};let{method:s,data:o,address:c}=a.data,l;(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(l=pn(o));let p,m,u;if(l&&!l.isValid&&(u={type:vmModuleTypes.AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements. Please verify message content!",detailedDescription:l.error.toString()}}),s===vmModuleTypes.RpcMethod.ETH_SIGN)p={type:s,account:c,data:o},m=o;else if(s===vmModuleTypes.RpcMethod.PERSONAL_SIGN)p={type:s,account:c,data:o},m=ethers.toUtf8String(o);else if(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)p={type:s,account:c,data:o},m=ln(o)?Jr(o):Ot(o);else if(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){p={type:s,account:c,data:o};let{types:P,primaryType:x,...E}=o;m=Ot(E);}if(!p||!m)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let f=await Or({request:t,accountAddress:c,chainId:e.chainId,data:{method:s,params:t.params},dAppUrl:t.dappInfo.url,blockaid:n}),y={title:"Sign Message",dAppInfo:{name:t.dappInfo.name,action:`${t.dappInfo.name} is requesting to sign the following message`,logoUri:t.dappInfo.icon},network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},account:c,details:[{title:"Message",items:[Ut("Message",m,"vertical")]}],alert:f?.alert??u,balanceChange:f?.balanceChange,tokenApprovals:f?.tokenApprovals},h=await r.requestApproval({request:t,displayData:y,signingData:p});return "error"in h?{error:h.error}:"signedData"in h?{result:h.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}},"ethSign");var dn=chunkVYIKXRYZ_cjs.a(async(t,e)=>{try{return {result:await(await F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders})).send(t.method,t.params)}}catch(r){let n=r.info?.error?.message||r.error?.message||r.message;return {error:rpcErrors.rpcErrors.internal(n)}}},"forwardToRpcNode");var fn=chunkVYIKXRYZ_cjs.a(async({accountIndex:t,xpub:e,walletType:r})=>{switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getAddressFromXPub(e,t)};case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{let n=Buffer.from(e,"hex");return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getEvmAddressFromPubKey(n)}}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}},"getAddress");function Re(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}chunkVYIKXRYZ_cjs.a(Re,"addIdToPromise");async function xe(t){return await Promise.allSettled(t).then(e=>e.reduce((r,n)=>{if(n.status==="fulfilled"){let a=n.value;a.status==="fulfilled"?r[a.id]=a.value:r[a.id]={error:a.reason};}return r},{}))}chunkVYIKXRYZ_cjs.a(xe,"settleAllIdPromises");var po={"ERC-20":vmModuleTypes.TokenType.ERC20,"ERC-721":vmModuleTypes.TokenType.ERC721,"ERC-1155":vmModuleTypes.TokenType.ERC1155,"NON-ERC":vmModuleTypes.TokenType.NONERC,SPL:vmModuleTypes.TokenType.SPL},mo=zod.z.string().transform((t,e)=>{let r=po[t];return r||(e.addIssue({code:zod.z.ZodIssueCode.custom,message:`Unknown contractType: ${t}`}),zod.z.NEVER)}),uo=zod.z.object({address:zod.z.string(),chainId:zod.z.number(),contractType:mo,decimals:zod.z.number(),internalId:zod.z.string().nullish(),isNative:zod.z.boolean(),logoUri:zod.z.string().nullish(),name:zod.z.string(),symbol:zod.z.string(),caip2Id:zod.z.string().nullish(),color:zod.z.string().nullish()}),fo=zod.z.array(zod.z.unknown()).transform(t=>t.flatMap(e=>{let r=uo.safeParse(e);return r.success?[r.data]:[]}));async function gt({chainId:t,proxyApiUrl:e}){return (await U([`${e}/tokens?evmChainId=${t}`],fo)).map(n=>({...n,type:n.contractType}))}chunkVYIKXRYZ_cjs.a(gt,"getTokens");var _,Ae,le,je,Se,qt=class qt{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:a,fetch:s}){chunkVYIKXRYZ_cjs.d(this,_,void 0);chunkVYIKXRYZ_cjs.d(this,Ae,void 0);chunkVYIKXRYZ_cjs.d(this,le,void 0);chunkVYIKXRYZ_cjs.d(this,je,void 0);chunkVYIKXRYZ_cjs.d(this,Se,void 0);chunkVYIKXRYZ_cjs.e(this,_,e),chunkVYIKXRYZ_cjs.e(this,Ae,r),chunkVYIKXRYZ_cjs.e(this,le,n),chunkVYIKXRYZ_cjs.e(this,je,a),chunkVYIKXRYZ_cjs.e(this,Se,s);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let a=await F({chainId:e,chainName:chunkVYIKXRYZ_cjs.c(this,_).chainName,rpcUrl:chunkVYIKXRYZ_cjs.c(this,_).rpcUrl,multiContractAddress:chunkVYIKXRYZ_cjs.c(this,_).utilityAddresses?.multicall,customRpcHeaders:chunkVYIKXRYZ_cjs.c(this,_).customRpcHeaders}),s=chunkVYIKXRYZ_cjs.c(this,_).pricingProviders?.coingecko.nativeTokenId,o=chunkVYIKXRYZ_cjs.c(this,_).networkToken,c=new K({storage:chunkVYIKXRYZ_cjs.c(this,Ae),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,le),fetch:chunkVYIKXRYZ_cjs.c(this,Se)}),l=s?await c.getSimplePrice({coinIds:[s],currencies:[n]}):{},p=l?.[s??""]?.[n]?.price??void 0,m=l?.[s??""]?.[n]?.marketCap??void 0,u=l?.[s??""]?.[n]?.vol24??void 0,f=l?.[s??""]?.[n]?.change24??void 0,y=await a.getBalance(r),h=new coreUtilsSdk.TokenUnit(y,o.decimals,o.symbol),P=p!==void 0?h.mul(p):void 0;return {...o,coingeckoId:s??"",type:vmModuleTypes.TokenType.NATIVE,balance:y,balanceDisplayValue:h.toDisplay(),balanceInCurrency:P?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:P?.toDisplay({fixedDp:2}),priceInCurrency:p,marketCap:m,vol24:u,change24:f}}async listErc20Balances({chainId:e,address:r,currency:n}){let a=await F({chainId:e,chainName:chunkVYIKXRYZ_cjs.c(this,_).chainName,rpcUrl:chunkVYIKXRYZ_cjs.c(this,_).rpcUrl,multiContractAddress:chunkVYIKXRYZ_cjs.c(this,_).utilityAddresses?.multicall,customRpcHeaders:chunkVYIKXRYZ_cjs.c(this,_).customRpcHeaders}),s=chunkVYIKXRYZ_cjs.c(this,_).pricingProviders?.coingecko.assetPlatformId,o=chunkVYIKXRYZ_cjs.c(this,_).pricingProviders?.coingecko.nativeTokenId,c=await gt({chainId:Number(e),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,le)}),l=c.map(E=>E.address),p=[...c,...chunkVYIKXRYZ_cjs.c(this,je)].filter(pt),m=chunkVYIKXRYZ_cjs.a(async E=>{let k=await new ethers.ethers.Contract(E.address,Br__default.default.abi,a).balanceOf?.(r)||0n;return {...E,balance:k}},"getTokenWithBalance"),u=p.map(E=>Re(m(E),E.address)),f=await xe(u),y=new K({storage:chunkVYIKXRYZ_cjs.c(this,Ae),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,le),fetch:chunkVYIKXRYZ_cjs.c(this,Se)}),h=s&&await y.getPricesByAddresses(l,s,n)||{},P=Object.keys(f),x={};for(let E=0;E<P.length;E++){let T=P[E];if(T===void 0)continue;let I=f[T];if(I===void 0||"error"in I){x[T]={error:`rpcService:getTokenWithBalance failed: ${I?.error??"unknown error"}`};continue}let k=h?.[o??""]?.[n]?.price??void 0,v=h?.[o??""]?.[n]?.marketCap??void 0,L=h?.[o??""]?.[n]?.vol24??void 0,j=h?.[o??""]?.[n]?.change24??void 0,_e=new coreUtilsSdk.TokenUnit(I.balance,I.decimals,I.symbol),D=k!==void 0?_e.mul(k):void 0;x[I.address.toLowerCase()]={...I,type:vmModuleTypes.TokenType.ERC20,balance:I.balance,balanceDisplayValue:_e.toDisplay(),balanceInCurrency:D?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:D?.toDisplay({fixedDp:2}),priceInCurrency:k,marketCap:v,change24:j,vol24:L,reputation:null};}return x}async listNftBalances(){return {}}};_=new WeakMap,Ae=new WeakMap,le=new WeakMap,je=new WeakMap,Se=new WeakMap,chunkVYIKXRYZ_cjs.a(qt,"RpcService");var Tt=qt;async function gn(t,e){let r=t.map(async(s,o)=>({index:o,result:await e(s)})),a=(await Promise.allSettled(r)).filter(s=>s.status==="fulfilled").map(s=>s).find(s=>s.value.result);return a?t[a.value.index]:void 0}chunkVYIKXRYZ_cjs.a(gn,"findAsync");var Tn=chunkVYIKXRYZ_cjs.a(async({addresses:t,currency:e,network:r,proxyApiUrl:n,tokenTypes:a=[vmModuleTypes.TokenType.NATIVE,vmModuleTypes.TokenType.ERC20,vmModuleTypes.TokenType.ERC721,vmModuleTypes.TokenType.ERC1155],customTokens:s=[],storage:o,balanceServices:c=[],tokenService:l,fetch:p})=>{let m=r.chainId,u=[...c,new Tt({network:r,storage:o,proxyApiUrl:n,customTokens:s,fetch:p})],f=await gn(u,h=>h.isNetworkSupported(r.chainId)),y={};if(f){let h=[],P=[],x=[];t.forEach(k=>{a.includes(vmModuleTypes.TokenType.NATIVE)&&h.push(Re(f.getNativeBalance({address:k,currency:e.toUpperCase(),chainId:m}).then(async v=>{if(v.symbol==="AVAX"){let L=await l.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:e.toUpperCase()});return {...v,priceInCurrency:L.priceInCurrency,marketCap:L.marketCap,vol24:L.vol24,change24:L.change24}}return v}),k)),a.includes(vmModuleTypes.TokenType.ERC20)&&P.push(Re(f.listErc20Balances({customTokens:s.filter(pt),currency:e.toUpperCase(),chainId:m,address:k,pageSize:100}),k)),(a.includes(vmModuleTypes.TokenType.ERC721)||a.includes(vmModuleTypes.TokenType.ERC1155))&&x.push(Re(f.listNftBalances({chainId:m,address:k}),k));});let E=await xe(h),T=await xe(P),I=await xe(x);Object.keys(E).forEach(k=>{let v=E[k];if(!v||"error"in v){y[k]={error:`getNativeBalance failed: ${v?.error??"unknown error"}`};return}let L=v.symbol;y[k]={[L]:v};}),Object.keys(T).forEach(k=>{let v=T[k];!v||"error"in v&&typeof v.error!="string"?y[k]={...y[k],error:"listErc20Balances failed: unknown error"}:"error"in v&&typeof v.error=="string"?y[k]={...y[k],error:`listErc20Balances failed: ${v.error}`}:y[k]={...y[k],...v};}),Object.keys(I).forEach(k=>{let v=I[k];!v||"error"in v&&typeof v.error!="string"?y[k]={...y[k],error:"listNftBalances failed: unknown error"}:"error"in v&&typeof v.error=="string"?y[k]={...y[k],error:`listNftBalances failed: ${v.error}`}:y[k]={...y[k],...v};});}else t.forEach(h=>{y[h]={error:"unsupported network"};});return y},"getBalances");var Yt={LOW:1n,MEDIUM:4n,HIGH:6n},Kt=500000000n,go=chunkVYIKXRYZ_cjs.a(t=>t===coreChainsSdk.ChainId.AVALANCHE_TESTNET_ID||t===coreChainsSdk.ChainId.AVALANCHE_MAINNET_ID,"isCChain"),vn=137,Pn=80002,To=chunkVYIKXRYZ_cjs.a(t=>t===vn||t===Pn,"isPolygon"),ko={[vn]:"https://gasstation.polygon.technology/v2",[Pn]:"https://gasstation.polygon.technology/amoy"};function pe(t){return BigInt(Math.round(t*1e9))}chunkVYIKXRYZ_cjs.a(pe,"gweiToWei");async function bo(t){let e=ko[t];if(!e)throw new Error(`No gas station URL for Polygon chain ${t}`);let r=await fetch(e);if(!r.ok)throw new Error(`Polygon Gas Station returned ${r.status}`);let n=await r.json();return {baseFee:pe(n.estimatedBaseFee),low:{maxFeePerGas:pe(n.safeLow.maxFee),maxPriorityFeePerGas:pe(n.safeLow.maxPriorityFee)},medium:{maxFeePerGas:pe(n.standard.maxFee),maxPriorityFeePerGas:pe(n.standard.maxPriorityFee)},high:{maxFeePerGas:pe(n.fast.maxFee),maxPriorityFeePerGas:pe(n.fast.maxPriorityFee)},isFixedFee:!1,displayDecimals:9}}chunkVYIKXRYZ_cjs.a(bo,"getPolygonGasStationFees");async function En({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,caipId:a,proxyApiUrl:s,customRpcHeaders:o}){let c=await F({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,customRpcHeaders:o});if(!s)throw rpcErrors.rpcErrors.internal("Proxy API URL is needed");if(go(t))try{let T=await vo(c);return {...T,baseFee:T.medium.maxFeePerGas,displayDecimals:9,isFixedFee:!1}}catch{console.error("eth_suggestPriceOptions call failed, falling back to legacy fee fetching");}if(To(t))try{return await bo(t)}catch{console.error("Polygon Gas Station call failed, falling back to generic fee fetching");}let l=await c.getBlock("latest",!1);if(!l)throw rpcErrors.rpcErrors.internal("There is no block");let p=l.baseFeePerGas;if(!p)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let m=await Po(s,a),u=new coreUtilsSdk.TokenUnit(m,0,""),f=new coreUtilsSdk.TokenUnit(p,0,""),y=BigInt("1000000000"),h=f.mul(u).add(y).toSubUnit(),P=Kt*Yt.LOW,x=Kt*Yt.MEDIUM,E=Kt*Yt.HIGH;return {baseFee:h,low:{maxFeePerGas:h+P,maxPriorityFeePerGas:P},medium:{maxFeePerGas:h+x,maxPriorityFeePerGas:x},high:{maxFeePerGas:h+E,maxPriorityFeePerGas:E},isFixedFee:!1,displayDecimals:9}}chunkVYIKXRYZ_cjs.a(En,"getNetworkFee");async function vo(t){let e=await t.send("eth_suggestPriceOptions",[]);return {low:{maxFeePerGas:BigInt(e.slow.maxFeePerGas),maxPriorityFeePerGas:BigInt(e.slow.maxPriorityFeePerGas)},medium:{maxFeePerGas:BigInt(e.normal.maxFeePerGas),maxPriorityFeePerGas:BigInt(e.normal.maxPriorityFeePerGas)},high:{maxFeePerGas:BigInt(e.fast.maxFeePerGas),maxPriorityFeePerGas:BigInt(e.fast.maxPriorityFeePerGas)}}}chunkVYIKXRYZ_cjs.a(vo,"suggestPriceOptions");async function Po(t,e){if(!e)return 1.5;try{let n=await fetch(`${t}/gas/multiplier`);if(!n.ok)throw new Error(n.statusText);let a=await n.json();return a[e]??a.default}catch{return 1.5}}chunkVYIKXRYZ_cjs.a(Po,"getGasMultiplier");function xn(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}chunkVYIKXRYZ_cjs.a(xn,"isNftTokenType");function Jt(t){let{txType:e,isSender:r,walletAddress:n,tokens:a}=t;if(a.length===0)return e;let s=n.toLowerCase(),o=a.some(m=>xn(m.type)&&m.to?.address?.toLowerCase()===s),c=a.some(m=>xn(m.type)&&m.from?.address?.toLowerCase()===s),l=e===vmModuleTypes.TransactionType.RECEIVE||e===vmModuleTypes.TransactionType.UNKNOWN||e===vmModuleTypes.TransactionType.TRANSFER||e===vmModuleTypes.TransactionType.AIRDROP,p=e===vmModuleTypes.TransactionType.SEND||e===vmModuleTypes.TransactionType.UNKNOWN||e===vmModuleTypes.TransactionType.TRANSFER||e===vmModuleTypes.TransactionType.AIRDROP;return !r&&o&&l?vmModuleTypes.TransactionType.NFT_RECEIVE:r&&c&&p?vmModuleTypes.TransactionType.NFT_SEND:e}chunkVYIKXRYZ_cjs.a(Jt,"convertTransactionType");var An=chunkVYIKXRYZ_cjs.a(({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a,s)=>{let o=!e&&!r&&!n,c=Ro(t.method?.methodName),l=a.toLowerCase(),p=c.toLowerCase().includes("swap"),m=o&&t.from.address.toLowerCase()===l,u=o&&t.to.address.toLowerCase()===l,f=c==="Market Buy Orders With Eth"||c==="Buy NFT",y=c==="Approve",h=c.toLowerCase().includes("transfer"),P=c.toLowerCase().includes("airdrop"),x=c.toLowerCase().includes("unwrap"),E=c==="Fill Order",T;p?T=vmModuleTypes.TransactionType.SWAP:m?T=vmModuleTypes.TransactionType.SEND:u?T=vmModuleTypes.TransactionType.RECEIVE:f?T=vmModuleTypes.TransactionType.NFT_BUY:y?T=vmModuleTypes.TransactionType.APPROVE:h?T=vmModuleTypes.TransactionType.TRANSFER:P?T=vmModuleTypes.TransactionType.AIRDROP:x?T=vmModuleTypes.TransactionType.UNWRAP:E?T=vmModuleTypes.TransactionType.FILL_ORDER:T=vmModuleTypes.TransactionType.UNKNOWN;let I=t.from.address.toLowerCase()===l;return Jt({txType:T,isSender:I,walletAddress:a,tokens:s})},"getTxType"),Ro=chunkVYIKXRYZ_cjs.a((t="")=>t.includes("(")?Eo__default.default(t.split("(",1)[0]):t,"parseRawMethod");function Sn({tx:t,networkToken:e,explorerUrl:r,chainId:n,address:a}){let s=t.from_address.toLowerCase()===a.toLowerCase(),o=new Date(t.block_timestamp).getTime(),c=So(t.category),l=!xo.has(t.category),p=No(t,e,a),m=ke(r,t.hash);return c=Jt({txType:c,isSender:s,walletAddress:a,tokens:p}),{isContractCall:l,isIncoming:!s,isOutgoing:s,isSender:s,timestamp:o,hash:t.hash,from:t.from_address,to:t.to_address??"",tokens:p,gasPrice:t.gas_price,gasUsed:t.receipt_gas_used,chainId:n.toString(),txType:c,method:t.method_label??void 0,explorerLink:m}}chunkVYIKXRYZ_cjs.a(Sn,"convertMoralisTransaction");var xo=new Set(["send","receive","token send","token receive"]),Ao={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 So(t){return Ao[t]??vmModuleTypes.TransactionType.UNKNOWN}chunkVYIKXRYZ_cjs.a(So,"getMoralisTransactionType");function Q(t){if(!(t==null||t===""))return {address:t}}chunkVYIKXRYZ_cjs.a(Q,"getTransferAddress");function kt(t){return t?.trim()??""}chunkVYIKXRYZ_cjs.a(kt,"trimOrEmpty");function Io(t){let e=t.trim().toLowerCase();return !e.startsWith("0x")||e.length<12?t.trim():`${e.slice(0,6)}\u2026${e.slice(-4)}`}chunkVYIKXRYZ_cjs.a(Io,"shortenHexAddress");function Co(t){let e=kt(t.token_symbol);if(e!=="")return e;let r=kt(t.token_name);return r!==""?r:Io(t.address)}chunkVYIKXRYZ_cjs.a(Co,"getErc20DisplaySymbol");function No(t,e,r){let n=[],a=t.native_transfers.map(o=>wo(o,e)),s=t.erc20_transfers.map(o=>_o(o));n.push(...a,...s);for(let o of t.nft_transfers)n.push(Do(o));return n.length===0&&n.push(Bo(t,e,r)),n}chunkVYIKXRYZ_cjs.a(No,"buildTokens");function wo(t,e){let r=kt(t.token_symbol)||e.symbol,n=new coreUtilsSdk.TokenUnit(t.value,e.decimals,r);return {decimal:e.decimals.toString(),name:e.name,symbol:r,amount:n.toDisplay(),from:Q(t.from_address),to:Q(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}chunkVYIKXRYZ_cjs.a(wo,"buildNativeToken");function _o(t){let e=Number(t.token_decimals),r=Co(t),n=new coreUtilsSdk.TokenUnit(t.value,e,r),a=kt(t.token_name)||r;return {decimal:t.token_decimals,name:a,symbol:r,amount:n.toDisplay(),from:Q(t.from_address),to:Q(t.to_address),type:vmModuleTypes.TokenType.ERC20,address:t.address}}chunkVYIKXRYZ_cjs.a(_o,"buildErc20Token");function Do(t){let e=t.contract_type==="ERC1155"?vmModuleTypes.TokenType.ERC1155:vmModuleTypes.TokenType.ERC721;return {name:"",symbol:"",amount:t.amount,collectableTokenId:t.token_id,from:Q(t.from_address),to:Q(t.to_address),type:e,address:t.token_address}}chunkVYIKXRYZ_cjs.a(Do,"buildNftToken");function Bo(t,e,r){let n=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol),s=t.from_address.toLowerCase()===r.toLowerCase()?`-${n.toDisplay()}`:n.toDisplay();return {decimal:e.decimals.toString(),name:e.name,symbol:e.symbol,amount:s,from:Q(t.from_address),to:Q(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}chunkVYIKXRYZ_cjs.a(Bo,"buildFallbackNativeToken");var Uo="https://proxy-api.avax.network/proxy/moralis-evm";async function In({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s}){try{let o=`0x${t.toString(16)}`,c=new URLSearchParams({chain:o,limit:(s??25).toString()});a&&c.set("cursor",a);let l=`${Uo}/wallets/${n}/history?${c.toString()}`,p=await fetch(l);if(!p.ok)return {transactions:[],nextPageToken:""};let m=await p.json();return Array.isArray(m.result)?{transactions:m.result.filter(f=>f.receipt_status==="1").map(f=>Sn({tx:f,networkToken:e,explorerUrl:r,chainId:t,address:n})),nextPageToken:m.cursor??""}:{transactions:[],nextPageToken:""}}catch{return {transactions:[],nextPageToken:""}}}chunkVYIKXRYZ_cjs.a(In,"getTransactionsFromMoralis");var Fo=new Set([1,4,5,11155111,8453,42161,10]);function Cn(t){return Fo.has(t)}chunkVYIKXRYZ_cjs.a(Cn,"isMoralisSupportedChain");var Nn=chunkVYIKXRYZ_cjs.a((t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},a)=>{let s=t===vmModuleTypes.TransactionType.TRANSFER,o=t===vmModuleTypes.TransactionType.SEND||t===vmModuleTypes.TransactionType.NFT_SEND,c=t===vmModuleTypes.TransactionType.RECEIVE||t===vmModuleTypes.TransactionType.NFT_RECEIVE,l=e?.from?.address,p=e?.to?.address;s&&r&&r[0]&&(l=r[0].from.address,p=r[0].to.address),s&&n&&n[0]&&(l=n[0].from.address,p=n[0].to.address);let m=o||s&&l.toLowerCase()===a.toLowerCase(),u=c||s&&p.toLowerCase()===a.toLowerCase();return {isOutgoing:m,isIncoming:u,isSender:l===a,from:l,to:p}},"getSenderInfo");async function wn(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}chunkVYIKXRYZ_cjs.a(wn,"resolve");var Mo="https://ipfs.io";function Ie(t,e=Mo){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}chunkVYIKXRYZ_cjs.a(Ie,"ipfsResolverWithFallback");async function Lo(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}chunkVYIKXRYZ_cjs.a(Lo,"fetchWithTimeout");async function _n(t){let e={};if(t)if(t.startsWith("data:application/json;base64,")){let r=t.substring(29);try{let n=Buffer.from(r,"base64").toString();e=JSON.parse(n);}catch{e={};}}else e=await Lo(Ie(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}chunkVYIKXRYZ_cjs.a(_n,"getNftMetadata");var Vo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Dn(t,e="256"){let r=Ie(t);return `${Vo}/width=${e},fit/${r}`}chunkVYIKXRYZ_cjs.a(Dn,"getSmallImageForNFT");var Fn=chunkVYIKXRYZ_cjs.a(async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a)=>{let s=[];if(t.value!=="0"){let o=a.decimals,l=new coreUtilsSdk.TokenUnit(t.value,a.decimals,a.symbol).toDisplay();s.push({decimal:o.toString(),name:a.name,symbol:a.symbol,amount:l,from:t.from,to:t.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(o=>{let c=o.erc20Token.decimals,p=new coreUtilsSdk.TokenUnit(o.value,c,o.erc20Token.symbol).toDisplay();s.push({decimal:c.toString(),address:o.erc20Token.address,name:o.erc20Token.name,symbol:o.erc20Token.symbol,amount:p,from:o.from,to:o.to,imageUri:o.erc20Token.logoUri,type:vmModuleTypes.TokenType.ERC20});}),r&&await Promise.allSettled(r.map(async o=>{let c=o.erc721Token,l=await Un(c.tokenUri,c.metadata.imageUri);s.push({name:o.erc721Token.name,symbol:o.erc721Token.symbol,address:o.erc721Token.address,amount:"1",imageUri:l,from:o.from,to:o.to,collectableTokenId:o.erc721Token.tokenId,type:vmModuleTypes.TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async o=>{let c=o.erc1155Token,l=await Un(c.tokenUri,c.metadata.imageUri);s.push({name:o.erc1155Token.metadata.name??"",symbol:o.erc1155Token.metadata.symbol??"",address:o.erc1155Token.address,amount:o.value,imageUri:l,from:o.from,to:o.to,collectableTokenId:o.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),s},"getTokens"),Un=chunkVYIKXRYZ_cjs.a(async(t,e)=>{if(e)return e.startsWith("ipfs://")?Ie(e):e;{let[r,n]=await wn(_n(t));return n?"":r.image?Dn(r.image):""}},"getImageUri");var Gn=chunkVYIKXRYZ_cjs.a(async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:a})=>{let s=await Fn(t,r),o=An(t,a,s),{isOutgoing:c,isIncoming:l,isSender:p,from:m,to:u}=Nn(o,t,a),{blockTimestamp:f,txHash:y,gasPrice:h,gasUsed:P}=t.nativeTransaction,x=ke(e,y);return {isContractCall:!xr.includes(o),isIncoming:l,isOutgoing:c,isSender:p,timestamp:f*1e3,hash:y,from:m,to:u,tokens:s,gasPrice:h,gasUsed:P,chainId:n.toString(),txType:o,explorerLink:x}},"convertTransaction");var Mn=chunkVYIKXRYZ_cjs.a(async({chainId:t,explorerUrl:e,networkToken:r,address:n,nextPageToken:a,offset:s,glacierService:o})=>{try{let c=await o.listTransactions({chainId:t.toString(),address:n,pageToken:a,pageSize:s});return {transactions:(await Promise.all(c.transactions.filter(m=>m.nativeTransaction.txStatus==="1").map(m=>Gn({transactions:m,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(u=>u)))).filter(m=>m.tokens.find(u=>Number(u.amount)!==0)),nextPageToken:c.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}},"getTransactionsFromGlacier");var Ln=chunkVYIKXRYZ_cjs.a(async({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s,glacierService:o})=>Cn(t)?In({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s}):o.isHealthy()?Mn({networkToken:e,explorerUrl:r,chainId:t,address:n,nextPageToken:a,offset:s,glacierService:o}):{transactions:[],nextPageToken:""},"getTransactionHistory");var Ho="https://ipfs.io";function Vn(t,e=Ho){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}chunkVYIKXRYZ_cjs.a(Vn,"ipfsResolverWithFallback");var $o="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function vt(t,e="256"){let r=Vn(t);return `${$o}/width=${e},fit/${r}`}chunkVYIKXRYZ_cjs.a(vt,"getSmallImageForNFT");var Ce,$,Zt=class Zt{constructor(e,r){this.baseUrl=e;chunkVYIKXRYZ_cjs.d(this,Ce,[]);chunkVYIKXRYZ_cjs.d(this,$,void 0);chunkVYIKXRYZ_cjs.e(this,$,r??fetch);}async isNetworkSupported(e){return (await this.getChainList()).some(n=>n.community_id===e)}async getChainInfo({chainId:e}){return (await this.getChainList()).find(n=>n.id===e)}async getTokenBalance({chainId:e,address:r,tokenId:n}){let a=await chunkVYIKXRYZ_cjs.c(this,$).call(this,`${this.baseUrl}/v1/user/token?id=${r}&chain_id=${e}&token_id=${n}`);if(a.ok)return await a.json();throw new Error(`${a.status}:${a.statusText}`)}async getTokensBalanceOnChain({chainId:e,address:r}){let n=await chunkVYIKXRYZ_cjs.c(this,$).call(this,`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getTokenList({chainId:e,address:r}){let n=await(chunkVYIKXRYZ_cjs.c(this,$)??globalThis.fetch)(`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getChainList(){if(chunkVYIKXRYZ_cjs.c(this,Ce).length===0){let e=await chunkVYIKXRYZ_cjs.c(this,$).call(this,`${this.baseUrl}/v1/chain/list`);if(e.ok)chunkVYIKXRYZ_cjs.e(this,Ce,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return chunkVYIKXRYZ_cjs.c(this,Ce)}async getNftList({address:e,chainId:r}){return U([`${this.baseUrl}/v1/user/nft_list?id=${e}&chain_id=${r}`],zo,chunkVYIKXRYZ_cjs.c(this,$))}};Ce=new WeakMap,$=new WeakMap,chunkVYIKXRYZ_cjs.a(Zt,"DeBank");var Pt=Zt,jo=zod.z.object({id:zod.z.union([zod.z.custom(ethers.isHexString),zod.z.string()]),chain:zod.z.string(),name:zod.z.string()}),qo=jo.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()})),zo=zod.z.array(qo);var O,Ne,Rt,At,Hn,er=class er{constructor({proxyApiUrl:e,fetch:r}){chunkVYIKXRYZ_cjs.d(this,Ne);chunkVYIKXRYZ_cjs.d(this,At);chunkVYIKXRYZ_cjs.d(this,O,void 0);chunkVYIKXRYZ_cjs.e(this,O,new Pt(`${e}/proxy/debank`,r));}async isNetworkSupported(e){return chunkVYIKXRYZ_cjs.c(this,O).isNetworkSupported(e)}async getNativeBalance({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid address: "+r);let{chainInfo:a,chainIdString:s}=await chunkVYIKXRYZ_cjs.f(this,Ne,Rt).call(this,e),o=a.native_token_id,c=await chunkVYIKXRYZ_cjs.c(this,O).getTokenBalance({address:r,chainId:s,tokenId:o}),l=new coreUtilsSdk.TokenUnit(c.raw_amount,c.decimals,c.symbol),p=l.toDisplay(),u=(await Ze()).usd[n.toLowerCase()],f=u?u*c.price:void 0,y=f?l.mul(f).toDisplay({fixedDp:2}):void 0,h=f?l.mul(f).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {name:c.name,symbol:c.symbol,decimals:c.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:c.logo_url,balance:l.toSubUnit(),balanceDisplayValue:p,balanceInCurrency:h,balanceCurrencyDisplayValue:y,priceInCurrency:f}}async listErc20Balances({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:a,chainIdString:s}=await chunkVYIKXRYZ_cjs.f(this,Ne,Rt).call(this,e),o=await chunkVYIKXRYZ_cjs.c(this,O).getTokensBalanceOnChain({chainId:s,address:r}),c=await Ze(),l={};for(let p of o){if(p.id===a.native_token_id||p.is_core===!1)continue;let m=new coreUtilsSdk.TokenUnit(p.raw_amount,p.decimals,p.symbol),u=m.toDisplay(),f=c.usd[n.toLowerCase()],y=f?f*p.price:void 0,h=y?m.mul(y).toDisplay({fixedDp:2}):void 0,P=y?m.mul(y).toDisplay({fixedDp:2,asNumber:!0}):void 0;l[p.id]={chainId:a.community_id,address:p.id,name:p.name,symbol:p.symbol,decimals:p.decimals,logoUri:p.logo_url,balance:m.toSubUnit(),balanceCurrencyDisplayValue:h,balanceDisplayValue:u,balanceInCurrency:P,priceInCurrency:y,type:vmModuleTypes.TokenType.ERC20,reputation:null};}return l}async listNftBalances({chainId:e,address:r}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listNftBalances: not valid address");let{chainIdString:n}=await chunkVYIKXRYZ_cjs.f(this,Ne,Rt).call(this,e),a=await chunkVYIKXRYZ_cjs.c(this,O).getNftList({chainId:n,address:r});return chunkVYIKXRYZ_cjs.f(this,At,Hn).call(this,a,e)}};O=new WeakMap,Ne=new WeakSet,Rt=chunkVYIKXRYZ_cjs.a(async function(e){let n=(await chunkVYIKXRYZ_cjs.c(this,O).getChainList()).find(s=>s.community_id===e)?.id;if(!n)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let a=await chunkVYIKXRYZ_cjs.c(this,O).getChainInfo({chainId:n});if(!a)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);return {chainInfo:a,chainIdString:n}},"#getChainInfo"),At=new WeakSet,Hn=chunkVYIKXRYZ_cjs.a(function(e,r){return e.reduce((n,a)=>({...n,[`${a.contract_id}-${a.id}`]:{chainId:r,address:a.contract_id,description:a.description??"",logoUri:a.thumbnail_url,logoSmall:vt(a.content),name:a.name,symbol:"",tokenId:`${a.inner_id}`,tokenUri:a.detail_url,collectionName:a.collection_name,balance:BigInt(a.amount),balanceDisplayValue:`${a.amount}`,type:a.is_erc721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{indexStatus:glacierSdk.NftTokenMetadataStatus.UNINDEXED,description:a.description??"",properties:""}}}),{})},"#mapNftList"),chunkVYIKXRYZ_cjs.a(er,"DeBankService");var xt=er;var rr=class rr extends Error{constructor(){super(...arguments);chunkVYIKXRYZ_cjs.b(this,"message","Glacier is unhealthy. Try again later.");}};chunkVYIKXRYZ_cjs.a(rr,"GlacierUnhealthyError");var W=rr,Zo=[coreChainsSdk.ChainId.ETHEREUM_HOMESTEAD],nr=class nr{constructor({glacierApiUrl:e,headers:r}){chunkVYIKXRYZ_cjs.b(this,"glacierSdk");chunkVYIKXRYZ_cjs.b(this,"isGlacierHealthy",!0);chunkVYIKXRYZ_cjs.b(this,"supportedChainIds",[]);chunkVYIKXRYZ_cjs.b(this,"isHealthy",chunkVYIKXRYZ_cjs.a(()=>this.isGlacierHealthy,"isHealthy"));this.glacierSdk=new glacierSdk.Glacier({BASE:e,HEADERS:r},Ue),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=>!Zo.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 W&&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 W&&this.setGlacierToUnhealthy(),a}}async getNativeBalance({chainId:e,address:r,currency:n,coingeckoId:a}){try{let o=(await this.glacierSdk.evmBalances.getNativeBalance({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase()})).nativeTokenBalance,c=new coreUtilsSdk.TokenUnit(o.balance,o.decimals,o.symbol),l=o.price?.value,p=l!==void 0?c.mul(l):void 0;return {name:o.name,symbol:o.symbol,decimals:o.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:o.logoUri,balance:c.toSubUnit(),balanceDisplayValue:c.toDisplay(),balanceInCurrency:p?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:p?.toDisplay({fixedDp:2}),priceInCurrency:l,coingeckoId:a??""}}catch(s){throw s instanceof W&&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 W&&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 W&&this.setGlacierToUnhealthy(),s}while(n);return a}async listNftBalances({chainId:e,address:r}){let a=(await Promise.allSettled([this.listErc721Balances({chainId:e.toString(),address:r}),this.listErc1155Balances({chainId:e.toString(),address:r})])).filter(s=>s.status==="fulfilled").flatMap(s=>s.value.filter(o=>o.ercType===glacierSdk.Erc721Token.ercType.ERC_721||BigInt(o.balance)>0n).map(o=>[`${o.address}-${o.tokenId}`,{address:o.address,description:o.metadata.description??"",logoUri:o.metadata.imageUri??"",logoSmall:vt(o.metadata.imageUri??""),name:o.metadata.name??"",symbol:o.metadata.symbol??"",tokenId:o.tokenId,tokenUri:o.tokenUri,chainId:e,collectionName:"Unknown",balance:o.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?BigInt(o.balance):1,balanceDisplayValue:o.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?o.balance:"1",type:o.ercType===glacierSdk.Erc721Token.ercType.ERC_721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{indexStatus:o.metadata.indexStatus,description:o.metadata.description,lastUpdatedTimestamp:o.metadata.metadataLastUpdatedTimestamp,properties:o.ercType===glacierSdk.Erc721Token.ercType.ERC_721?o.metadata.attributes:o.metadata.properties}}]));return Object.fromEntries(a)}async listErc20Balances({chainId:e,address:r,currency:n,customTokens:a}){try{let s=[],o;do{let c=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:o});s.push(...es(c.erc20TokenBalances,Number(e))),o=c.nextPageToken;}while(o);return [...Qo(a),...s].reduce((c,l)=>({...c,[l.address.toLowerCase()]:l}),{})}catch(s){throw s instanceof W&&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 W&&this.setGlacierToUnhealthy(),s}}};chunkVYIKXRYZ_cjs.a(nr,"EvmGlacierService");var St=nr,Qo=chunkVYIKXRYZ_cjs.a(t=>t.map(e=>({...e,decimals:e.decimals??18,type:vmModuleTypes.TokenType.ERC20,balance:0n,balanceInCurrency:0,balanceDisplayValue:"0",balanceCurrencyDisplayValue:"0",priceInCurrency:0,marketCap:0,change24:0,vol24:0,reputation:null})),"convertErc20TokenToTokenWithBalance"),es=chunkVYIKXRYZ_cjs.a((t,e)=>t.map(r=>{let n=new coreUtilsSdk.TokenUnit(r.balance,r.decimals,r.symbol),a=n.toDisplay(),s=r.balanceValue?.value.toString(),o=r.price?.value,c=o!==void 0?n.mul(o).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {chainId:e,address:r.address,name:r.name,symbol:r.symbol,decimals:r.decimals,logoUri:r.logoUri,balance:n.toSubUnit(),balanceCurrencyDisplayValue:s,balanceDisplayValue:a,balanceInCurrency:c,priceInCurrency:o,reputation:r.tokenReputation,type:vmModuleTypes.TokenType.ERC20}}),"convertErc20TokenWithBalanceToTokenWithBalance");var we,Je,te,H,me,de,ar=class ar{constructor({approvalController:e,environment:r,appInfo:n,runtime:a}){chunkVYIKXRYZ_cjs.d(this,we,void 0);chunkVYIKXRYZ_cjs.d(this,Je,void 0);chunkVYIKXRYZ_cjs.d(this,te,void 0);chunkVYIKXRYZ_cjs.d(this,H,void 0);chunkVYIKXRYZ_cjs.d(this,me,void 0);chunkVYIKXRYZ_cjs.d(this,de,void 0);let{glacierApiUrl:s,proxyApiUrl:o}=hr(r);chunkVYIKXRYZ_cjs.e(this,de,a),chunkVYIKXRYZ_cjs.e(this,we,new St({glacierApiUrl:s,headers:Ft(n)})),chunkVYIKXRYZ_cjs.e(this,Je,new xt({proxyApiUrl:o,fetch:chunkVYIKXRYZ_cjs.c(this,de)?.fetch})),chunkVYIKXRYZ_cjs.e(this,te,o),chunkVYIKXRYZ_cjs.e(this,H,e),chunkVYIKXRYZ_cjs.e(this,me,new rs__default.default({baseURL:o+"/proxy/blockaid/",apiKey:fr,httpAgent:a?.httpAgent,fetch:a?.fetch}));}getProvider(e){return F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders})}getAddress({accountIndex:e,xpub:r,walletType:n}){return fn({accountIndex:e,xpub:r,walletType:n})}buildDerivationPath(e){return ge(e)}deriveAddress(e){return br({...e,approvalController:chunkVYIKXRYZ_cjs.c(this,H)})}deriveAddresses(e){return vr({...e,approvalController:chunkVYIKXRYZ_cjs.c(this,H)})}getBalances({addresses:e,network:r,currency:n,customTokens:a,storage:s,tokenTypes:o}){let c=new K({storage:s,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te),fetch:chunkVYIKXRYZ_cjs.c(this,de)?.fetch});return Tn({addresses:e,currency:n,network:r,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te),customTokens:a,balanceServices:[chunkVYIKXRYZ_cjs.c(this,we),chunkVYIKXRYZ_cjs.c(this,Je)],storage:s,tokenTypes:o,tokenService:c,fetch:chunkVYIKXRYZ_cjs.c(this,de)?.fetch})}getManifest(){let e=vmModuleTypes.parseManifest(ur);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:a,utilityAddresses:s,caipId:o,customRpcHeaders:c}=e;return En({chainId:r,chainName:n,rpcUrl:a,multiContractAddress:s?.multicall,caipId:o,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te),customRpcHeaders:c})}getTransactionHistory(e){let{network:r,address:n,nextPageToken:a,offset:s}=e,{chainId:o,networkToken:c,explorerUrl:l=""}=r;return Ln({chainId:o,networkToken:c,explorerUrl:l,address:n,nextPageToken:a,offset:s,glacierService:chunkVYIKXRYZ_cjs.c(this,we)})}getTokens(e){let{chainId:r}=e;return gt({chainId:r,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return Kr({request:e,network:r,approvalController:chunkVYIKXRYZ_cjs.c(this,H),blockaid:chunkVYIKXRYZ_cjs.c(this,me)});case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION_BATCH:return Ir(chunkVYIKXRYZ_cjs.c(this,H))?Wr({request:e,network:r,approvalController:chunkVYIKXRYZ_cjs.c(this,H),blockaid:chunkVYIKXRYZ_cjs.c(this,me)}):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} requires BatchApprovalController`)};case vmModuleTypes.RpcMethod.PERSONAL_SIGN:case vmModuleTypes.RpcMethod.ETH_SIGN:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:return mn({request:e,network:r,approvalController:chunkVYIKXRYZ_cjs.c(this,H),blockaid:chunkVYIKXRYZ_cjs.c(this,me)});default:return ns(e.method)?dn(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};we=new WeakMap,Je=new WeakMap,te=new WeakMap,H=new WeakMap,me=new WeakMap,de=new WeakMap,chunkVYIKXRYZ_cjs.a(ar,"EvmModule");var qn=ar,ns=chunkVYIKXRYZ_cjs.a(t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t),"shouldForwardToRpcNode");
|
|
43
|
+
`;}),e},"beautifySimpleMessage"),ce=chunkVYIKXRYZ_cjs.a(t=>{let e={0:"\u{1D7EC}",1:"\u{1D7ED}",2:"\u{1D7EE}",3:"\u{1D7EF}",4:"\u{1D7F0}",5:"\u{1D7F1}",6:"\u{1D7F2}",7:"\u{1D7F3}",8:"\u{1D7F4}",9:"\u{1D7F5}",a:"\u{1D5EE}",b:"\u{1D5EF}",c:"\u{1D5F0}",d:"\u{1D5F1}",e:"\u{1D5F2}",f:"\u{1D5F3}",g:"\u{1D5F4}",h:"\u{1D5F5}",i:"\u{1D5F6}",j:"\u{1D5F7}",k:"\u{1D5F8}",l:"\u{1D5F9}",m:"\u{1D5FA}",n:"\u{1D5FB}",o:"\u{1D5FC}",p:"\u{1D5FD}",q:"\u{1D5FE}",r:"\u{1D5FF}",s:"\u{1D600}",t:"\u{1D601}",u:"\u{1D602}",v:"\u{1D603}",w:"\u{1D604}",x:"\u{1D605}",y:"\u{1D606}",z:"\u{1D607}",A:"\u{1D5D4}",B:"\u{1D5D5}",C:"\u{1D5D6}",D:"\u{1D5D7}",E:"\u{1D5D8}",F:"\u{1D5D9}",G:"\u{1D5DA}",H:"\u{1D5DB}",I:"\u{1D5DC}",J:"\u{1D5DD}",K:"\u{1D5DE}",L:"\u{1D5DF}",M:"\u{1D5E0}",N:"\u{1D5E1}",O:"\u{1D5E2}",P:"\u{1D5E3}",Q:"\u{1D5E4}",R:"\u{1D5E5}",S:"\u{1D5E6}",T:"\u{1D5E7}",U:"\u{1D5E8}",V:"\u{1D5E9}",W:"\u{1D5EA}",X:"\u{1D5EB}",Y:"\u{1D5EC}",Z:"\u{1D5ED}"};return t.split("").map(r=>e[r]||r).join("")},"toUnicodeBold");var Oe=zod.z.string().describe("message"),V=zod.z.string().describe("address");var Zr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([V,Oe])});var Qr=zod.z.object({name:zod.z.string(),type:zod.z.string()}),ve=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(Qr)}).catchall(zod.z.array(Qr)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),$t=zod.z.array(zod.z.object({type:zod.z.string(),name:zod.z.string(),value:zod.z.union([zod.z.string(),zod.z.number(),zod.z.boolean(),zod.z.object({}).passthrough(),zod.z.array(zod.z.unknown()),zod.z.null()])})).nonempty(),Wt=ve.or($t),en=zod.z.union([zod.z.string().describe("data string"),ve]),tn=zod.z.union([zod.z.string().describe("data string"),Wt]),rn=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([V,tn])}),nn=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([V,tn])}),an=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([V,en])}),on=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([V,en])});var sn=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([Oe,V]),zod.z.tuple([Oe,V,zod.z.string().optional().describe("password")])])});var ro=zod.z.discriminatedUnion("method",[sn,Zr,rn,nn,an,on]).transform((t,e)=>{let{method:r,params:n}=t;switch(r){case vmModuleTypes.RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:r};case vmModuleTypes.RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:r};case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:{let a=n[0],s=n[1];if(typeof s!="string")return {data:s,address:a,method:r};try{let o=JSON.parse(s);return {data:Wt.parse(o),address:a,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:{let a=n[0],s=n[1];if(typeof s!="string")return {data:s,address:a,method:r};try{let o=JSON.parse(s);return {data:ve.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 cn(t){return ro.safeParse(t)}chunkVYIKXRYZ_cjs.a(cn,"parseRequestParams");var ln=chunkVYIKXRYZ_cjs.a(t=>$t.safeParse(t).success,"isTypedDataV1"),Ap=chunkVYIKXRYZ_cjs.a(t=>ve.safeParse(t).success,"isTypedData");var pn=chunkVYIKXRYZ_cjs.a(t=>{try{let{EIP712Domain:e,...r}=t.types;return ethers.TypedDataEncoder.getPayload(t.domain,r,t.message),{isValid:!0}}catch(e){return {isValid:!1,error:e}}},"isTypedDataValid");var mn=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r,blockaid:n})=>{let a=cn({method:t.method,params:t.params});if(!a.success)return console.error("invalid params",a.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams(M("Params are invalid",a.error))};let{method:s,data:o,address:c}=a.data,l;(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(l=pn(o));let p,m,u;if(l&&!l.isValid&&(u={type:vmModuleTypes.AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements. Please verify message content!",detailedDescription:l.error.toString()}}),s===vmModuleTypes.RpcMethod.ETH_SIGN)p={type:s,account:c,data:o},m=o;else if(s===vmModuleTypes.RpcMethod.PERSONAL_SIGN)p={type:s,account:c,data:o},m=ethers.toUtf8String(o);else if(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)p={type:s,account:c,data:o},m=ln(o)?Jr(o):Ot(o);else if(s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||s===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){p={type:s,account:c,data:o};let{types:P,primaryType:x,...R}=o;m=Ot(R);}if(!p||!m)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let f=await Or({request:t,accountAddress:c,chainId:e.chainId,data:{method:s,params:t.params},dAppUrl:t.dappInfo.url,blockaid:n}),y={title:"Sign Message",dAppInfo:{name:t.dappInfo.name,action:`${t.dappInfo.name} is requesting to sign the following message`,logoUri:t.dappInfo.icon},network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},account:c,details:[{title:"Message",items:[Ut("Message",m,"vertical")]}],alert:f?.alert??u,balanceChange:f?.balanceChange,tokenApprovals:f?.tokenApprovals},h=await r.requestApproval({request:t,displayData:y,signingData:p});return "error"in h?{error:h.error}:"signedData"in h?{result:h.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}},"ethSign");var dn=chunkVYIKXRYZ_cjs.a(async(t,e)=>{try{return {result:await(await F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders})).send(t.method,t.params)}}catch(r){let n=r.info?.error?.message||r.error?.message||r.message;return {error:rpcErrors.rpcErrors.internal(n)}}},"forwardToRpcNode");var fn=chunkVYIKXRYZ_cjs.a(async({accountIndex:t,xpub:e,walletType:r})=>{switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getAddressFromXPub(e,t)};case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{let n=Buffer.from(e,"hex");return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getEvmAddressFromPubKey(n)}}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}},"getAddress");function Ee(t,e){return t.then(r=>({id:e,status:"fulfilled",value:r})).catch(r=>({id:e,status:"rejected",reason:r}))}chunkVYIKXRYZ_cjs.a(Ee,"addIdToPromise");async function xe(t){return await Promise.allSettled(t).then(e=>e.reduce((r,n)=>{if(n.status==="fulfilled"){let a=n.value;a.status==="fulfilled"?r[a.id]=a.value:r[a.id]={error:a.reason};}return r},{}))}chunkVYIKXRYZ_cjs.a(xe,"settleAllIdPromises");var po={"ERC-20":vmModuleTypes.TokenType.ERC20,"ERC-721":vmModuleTypes.TokenType.ERC721,"ERC-1155":vmModuleTypes.TokenType.ERC1155,"NON-ERC":vmModuleTypes.TokenType.NONERC,SPL:vmModuleTypes.TokenType.SPL},mo=zod.z.string().transform((t,e)=>{let r=po[t];return r||(e.addIssue({code:zod.z.ZodIssueCode.custom,message:`Unknown contractType: ${t}`}),zod.z.NEVER)}),uo=zod.z.object({address:zod.z.string(),chainId:zod.z.number(),contractType:mo,decimals:zod.z.number(),internalId:zod.z.string().nullish(),isNative:zod.z.boolean(),logoUri:zod.z.string().nullish(),name:zod.z.string(),symbol:zod.z.string(),caip2Id:zod.z.string().nullish(),color:zod.z.string().nullish()}),fo=zod.z.array(zod.z.unknown()).transform(t=>t.flatMap(e=>{let r=uo.safeParse(e);return r.success?[r.data]:[]}));async function gt({chainId:t,proxyApiUrl:e}){return (await U([`${e}/tokens?evmChainId=${t}`],fo)).map(n=>({...n,type:n.contractType}))}chunkVYIKXRYZ_cjs.a(gt,"getTokens");var _,Ae,le,je,Se,qt=class qt{constructor({network:e,storage:r,proxyApiUrl:n,customTokens:a,fetch:s}){chunkVYIKXRYZ_cjs.d(this,_,void 0);chunkVYIKXRYZ_cjs.d(this,Ae,void 0);chunkVYIKXRYZ_cjs.d(this,le,void 0);chunkVYIKXRYZ_cjs.d(this,je,void 0);chunkVYIKXRYZ_cjs.d(this,Se,void 0);chunkVYIKXRYZ_cjs.e(this,_,e),chunkVYIKXRYZ_cjs.e(this,Ae,r),chunkVYIKXRYZ_cjs.e(this,le,n),chunkVYIKXRYZ_cjs.e(this,je,a),chunkVYIKXRYZ_cjs.e(this,Se,s);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:e,address:r,currency:n}){let a=await F({chainId:e,chainName:chunkVYIKXRYZ_cjs.c(this,_).chainName,rpcUrl:chunkVYIKXRYZ_cjs.c(this,_).rpcUrl,multiContractAddress:chunkVYIKXRYZ_cjs.c(this,_).utilityAddresses?.multicall,customRpcHeaders:chunkVYIKXRYZ_cjs.c(this,_).customRpcHeaders}),s=chunkVYIKXRYZ_cjs.c(this,_).pricingProviders?.coingecko.nativeTokenId,o=chunkVYIKXRYZ_cjs.c(this,_).networkToken,c=new K({storage:chunkVYIKXRYZ_cjs.c(this,Ae),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,le),fetch:chunkVYIKXRYZ_cjs.c(this,Se)}),l=s?await c.getSimplePrice({coinIds:[s],currencies:[n]}):{},p=l?.[s??""]?.[n]?.price??void 0,m=l?.[s??""]?.[n]?.marketCap??void 0,u=l?.[s??""]?.[n]?.vol24??void 0,f=l?.[s??""]?.[n]?.change24??void 0,y=await a.getBalance(r),h=new coreUtilsSdk.TokenUnit(y,o.decimals,o.symbol),P=p!==void 0?h.mul(p):void 0;return {...o,coingeckoId:s??"",type:vmModuleTypes.TokenType.NATIVE,balance:y,balanceDisplayValue:h.toDisplay(),balanceInCurrency:P?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:P?.toDisplay({fixedDp:2}),priceInCurrency:p,marketCap:m,vol24:u,change24:f}}async listErc20Balances({chainId:e,address:r,currency:n}){let a=await F({chainId:e,chainName:chunkVYIKXRYZ_cjs.c(this,_).chainName,rpcUrl:chunkVYIKXRYZ_cjs.c(this,_).rpcUrl,multiContractAddress:chunkVYIKXRYZ_cjs.c(this,_).utilityAddresses?.multicall,customRpcHeaders:chunkVYIKXRYZ_cjs.c(this,_).customRpcHeaders}),s=chunkVYIKXRYZ_cjs.c(this,_).pricingProviders?.coingecko.assetPlatformId,o=chunkVYIKXRYZ_cjs.c(this,_).pricingProviders?.coingecko.nativeTokenId,c=await gt({chainId:Number(e),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,le)}),l=c.map(R=>R.address),p=[...c,...chunkVYIKXRYZ_cjs.c(this,je)].filter(pt),m=chunkVYIKXRYZ_cjs.a(async R=>{let k=await new ethers.ethers.Contract(R.address,Br__default.default.abi,a).balanceOf?.(r)||0n;return {...R,balance:k}},"getTokenWithBalance"),u=p.map(R=>Ee(m(R),R.address)),f=await xe(u),y=new K({storage:chunkVYIKXRYZ_cjs.c(this,Ae),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,le),fetch:chunkVYIKXRYZ_cjs.c(this,Se)}),h=s&&await y.getPricesByAddresses(l,s,n)||{},P=Object.keys(f),x={};for(let R=0;R<P.length;R++){let T=P[R];if(T===void 0)continue;let I=f[T];if(I===void 0||"error"in I){x[T]={error:`rpcService:getTokenWithBalance failed: ${I?.error??"unknown error"}`};continue}let k=h?.[o??""]?.[n]?.price??void 0,v=h?.[o??""]?.[n]?.marketCap??void 0,L=h?.[o??""]?.[n]?.vol24??void 0,j=h?.[o??""]?.[n]?.change24??void 0,_e=new coreUtilsSdk.TokenUnit(I.balance,I.decimals,I.symbol),D=k!==void 0?_e.mul(k):void 0;x[I.address.toLowerCase()]={...I,type:vmModuleTypes.TokenType.ERC20,balance:I.balance,balanceDisplayValue:_e.toDisplay(),balanceInCurrency:D?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:D?.toDisplay({fixedDp:2}),priceInCurrency:k,marketCap:v,change24:j,vol24:L,reputation:null};}return x}async listNftBalances(){return {}}};_=new WeakMap,Ae=new WeakMap,le=new WeakMap,je=new WeakMap,Se=new WeakMap,chunkVYIKXRYZ_cjs.a(qt,"RpcService");var Tt=qt;async function gn(t,e){let r=t.map(async(s,o)=>({index:o,result:await e(s)})),a=(await Promise.allSettled(r)).filter(s=>s.status==="fulfilled").map(s=>s).find(s=>s.value.result);return a?t[a.value.index]:void 0}chunkVYIKXRYZ_cjs.a(gn,"findAsync");var Tn=chunkVYIKXRYZ_cjs.a(async({addresses:t,currency:e,network:r,proxyApiUrl:n,tokenTypes:a=[vmModuleTypes.TokenType.NATIVE,vmModuleTypes.TokenType.ERC20,vmModuleTypes.TokenType.ERC721,vmModuleTypes.TokenType.ERC1155],customTokens:s=[],storage:o,balanceServices:c=[],tokenService:l,fetch:p})=>{let m=r.chainId,u=[...c,new Tt({network:r,storage:o,proxyApiUrl:n,customTokens:s,fetch:p})],f=await gn(u,h=>h.isNetworkSupported(r.chainId)),y={};if(f){let h=[],P=[],x=[];t.forEach(k=>{a.includes(vmModuleTypes.TokenType.NATIVE)&&h.push(Ee(f.getNativeBalance({address:k,currency:e.toUpperCase(),chainId:m}).then(async v=>{if(v.symbol==="AVAX"){let L=await l.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:e.toUpperCase()});return {...v,priceInCurrency:L.priceInCurrency,marketCap:L.marketCap,vol24:L.vol24,change24:L.change24}}return v}),k)),a.includes(vmModuleTypes.TokenType.ERC20)&&P.push(Ee(f.listErc20Balances({customTokens:s.filter(pt),currency:e.toUpperCase(),chainId:m,address:k,pageSize:100}),k)),(a.includes(vmModuleTypes.TokenType.ERC721)||a.includes(vmModuleTypes.TokenType.ERC1155))&&x.push(Ee(f.listNftBalances({chainId:m,address:k}),k));});let R=await xe(h),T=await xe(P),I=await xe(x);Object.keys(R).forEach(k=>{let v=R[k];if(!v||"error"in v){y[k]={error:`getNativeBalance failed: ${v?.error??"unknown error"}`};return}let L=v.symbol;y[k]={[L]:v};}),Object.keys(T).forEach(k=>{let v=T[k];!v||"error"in v&&typeof v.error!="string"?y[k]={...y[k],error:"listErc20Balances failed: unknown error"}:"error"in v&&typeof v.error=="string"?y[k]={...y[k],error:`listErc20Balances failed: ${v.error}`}:y[k]={...y[k],...v};}),Object.keys(I).forEach(k=>{let v=I[k];!v||"error"in v&&typeof v.error!="string"?y[k]={...y[k],error:"listNftBalances failed: unknown error"}:"error"in v&&typeof v.error=="string"?y[k]={...y[k],error:`listNftBalances failed: ${v.error}`}:y[k]={...y[k],...v};});}else t.forEach(h=>{y[h]={error:"unsupported network"};});return y},"getBalances");var Yt={LOW:1n,MEDIUM:4n,HIGH:6n},Kt=500000000n,go=chunkVYIKXRYZ_cjs.a(t=>t===coreChainsSdk.ChainId.AVALANCHE_TESTNET_ID||t===coreChainsSdk.ChainId.AVALANCHE_MAINNET_ID,"isCChain"),vn=137,Pn=80002,To=chunkVYIKXRYZ_cjs.a(t=>t===vn||t===Pn,"isPolygon"),ko={[vn]:"https://gasstation.polygon.technology/v2",[Pn]:"https://gasstation.polygon.technology/amoy"};function pe(t){return BigInt(Math.round(t*1e9))}chunkVYIKXRYZ_cjs.a(pe,"gweiToWei");async function bo(t){let e=ko[t];if(!e)throw new Error(`No gas station URL for Polygon chain ${t}`);let r=await fetch(e);if(!r.ok)throw new Error(`Polygon Gas Station returned ${r.status}`);let n=await r.json();return {baseFee:pe(n.estimatedBaseFee),low:{maxFeePerGas:pe(n.safeLow.maxFee),maxPriorityFeePerGas:pe(n.safeLow.maxPriorityFee)},medium:{maxFeePerGas:pe(n.standard.maxFee),maxPriorityFeePerGas:pe(n.standard.maxPriorityFee)},high:{maxFeePerGas:pe(n.fast.maxFee),maxPriorityFeePerGas:pe(n.fast.maxPriorityFee)},isFixedFee:!1,displayDecimals:9}}chunkVYIKXRYZ_cjs.a(bo,"getPolygonGasStationFees");async function Rn({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,caipId:a,proxyApiUrl:s,customRpcHeaders:o}){let c=await F({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n,customRpcHeaders:o});if(!s)throw rpcErrors.rpcErrors.internal("Proxy API URL is needed");if(go(t))try{let T=await vo(c);return {...T,baseFee:T.medium.maxFeePerGas,displayDecimals:9,isFixedFee:!1}}catch{console.error("eth_suggestPriceOptions call failed, falling back to legacy fee fetching");}if(To(t))try{return await bo(t)}catch{console.error("Polygon Gas Station call failed, falling back to generic fee fetching");}let l=await c.getBlock("latest",!1);if(!l)throw rpcErrors.rpcErrors.internal("There is no block");let p=l.baseFeePerGas;if(!p)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let m=await Po(s,a),u=new coreUtilsSdk.TokenUnit(m,0,""),f=new coreUtilsSdk.TokenUnit(p,0,""),y=BigInt("1000000000"),h=f.mul(u).add(y).toSubUnit(),P=Kt*Yt.LOW,x=Kt*Yt.MEDIUM,R=Kt*Yt.HIGH;return {baseFee:h,low:{maxFeePerGas:h+P,maxPriorityFeePerGas:P},medium:{maxFeePerGas:h+x,maxPriorityFeePerGas:x},high:{maxFeePerGas:h+R,maxPriorityFeePerGas:R},isFixedFee:!1,displayDecimals:9}}chunkVYIKXRYZ_cjs.a(Rn,"getNetworkFee");async function vo(t){let e=await t.send("eth_suggestPriceOptions",[]);return {low:{maxFeePerGas:BigInt(e.slow.maxFeePerGas),maxPriorityFeePerGas:BigInt(e.slow.maxPriorityFeePerGas)},medium:{maxFeePerGas:BigInt(e.normal.maxFeePerGas),maxPriorityFeePerGas:BigInt(e.normal.maxPriorityFeePerGas)},high:{maxFeePerGas:BigInt(e.fast.maxFeePerGas),maxPriorityFeePerGas:BigInt(e.fast.maxPriorityFeePerGas)}}}chunkVYIKXRYZ_cjs.a(vo,"suggestPriceOptions");async function Po(t,e){if(!e)return 1.5;try{let n=await fetch(`${t}/gas/multiplier`);if(!n.ok)throw new Error(n.statusText);let a=await n.json();return a[e]??a.default}catch{return 1.5}}chunkVYIKXRYZ_cjs.a(Po,"getGasMultiplier");function xn(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}chunkVYIKXRYZ_cjs.a(xn,"isNftTokenType");function Jt(t){let{txType:e,isSender:r,walletAddress:n,tokens:a}=t;if(a.length===0)return e;let s=n.toLowerCase(),o=a.some(m=>xn(m.type)&&m.to?.address?.toLowerCase()===s),c=a.some(m=>xn(m.type)&&m.from?.address?.toLowerCase()===s),l=e===vmModuleTypes.TransactionType.RECEIVE||e===vmModuleTypes.TransactionType.UNKNOWN||e===vmModuleTypes.TransactionType.TRANSFER||e===vmModuleTypes.TransactionType.AIRDROP,p=e===vmModuleTypes.TransactionType.SEND||e===vmModuleTypes.TransactionType.UNKNOWN||e===vmModuleTypes.TransactionType.TRANSFER||e===vmModuleTypes.TransactionType.AIRDROP;return !r&&o&&l?vmModuleTypes.TransactionType.NFT_RECEIVE:r&&c&&p?vmModuleTypes.TransactionType.NFT_SEND:e}chunkVYIKXRYZ_cjs.a(Jt,"convertTransactionType");var An=chunkVYIKXRYZ_cjs.a(({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a,s)=>{let o=!e&&!r&&!n,c=Eo(t.method?.methodName),l=a.toLowerCase(),p=c.toLowerCase().includes("swap"),m=o&&t.from.address.toLowerCase()===l,u=o&&t.to.address.toLowerCase()===l,f=c==="Market Buy Orders With Eth"||c==="Buy NFT",y=c==="Approve",h=c.toLowerCase().includes("transfer"),P=c.toLowerCase().includes("airdrop"),x=c.toLowerCase().includes("unwrap"),R=c==="Fill Order",T;p?T=vmModuleTypes.TransactionType.SWAP:m?T=vmModuleTypes.TransactionType.SEND:u?T=vmModuleTypes.TransactionType.RECEIVE:f?T=vmModuleTypes.TransactionType.NFT_BUY:y?T=vmModuleTypes.TransactionType.APPROVE:h?T=vmModuleTypes.TransactionType.TRANSFER:P?T=vmModuleTypes.TransactionType.AIRDROP:x?T=vmModuleTypes.TransactionType.UNWRAP:R?T=vmModuleTypes.TransactionType.FILL_ORDER:T=vmModuleTypes.TransactionType.UNKNOWN;let I=t.from.address.toLowerCase()===l;return Jt({txType:T,isSender:I,walletAddress:a,tokens:s})},"getTxType"),Eo=chunkVYIKXRYZ_cjs.a((t="")=>t.includes("(")?Ro__default.default(t.split("(",1)[0]):t,"parseRawMethod");function Sn({tx:t,networkToken:e,explorerUrl:r,chainId:n,address:a}){let s=t.from_address.toLowerCase()===a.toLowerCase(),o=new Date(t.block_timestamp).getTime(),c=So(t.category),l=!xo.has(t.category),p=No(t,e,a),m=ke(r,t.hash);return c=Jt({txType:c,isSender:s,walletAddress:a,tokens:p}),{isContractCall:l,isIncoming:!s,isOutgoing:s,isSender:s,timestamp:o,hash:t.hash,from:t.from_address,to:t.to_address??"",tokens:p,gasPrice:t.gas_price,gasUsed:t.receipt_gas_used,chainId:n.toString(),txType:c,method:t.method_label??void 0,explorerLink:m}}chunkVYIKXRYZ_cjs.a(Sn,"convertMoralisTransaction");var xo=new Set(["send","receive","token send","token receive"]),Ao={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 So(t){return Ao[t]??vmModuleTypes.TransactionType.UNKNOWN}chunkVYIKXRYZ_cjs.a(So,"getMoralisTransactionType");function Q(t){if(!(t==null||t===""))return {address:t}}chunkVYIKXRYZ_cjs.a(Q,"getTransferAddress");function kt(t){return t?.trim()??""}chunkVYIKXRYZ_cjs.a(kt,"trimOrEmpty");function Io(t){let e=t.trim().toLowerCase();return !e.startsWith("0x")||e.length<12?t.trim():`${e.slice(0,6)}\u2026${e.slice(-4)}`}chunkVYIKXRYZ_cjs.a(Io,"shortenHexAddress");function Co(t){let e=kt(t.token_symbol);if(e!=="")return e;let r=kt(t.token_name);return r!==""?r:Io(t.address)}chunkVYIKXRYZ_cjs.a(Co,"getErc20DisplaySymbol");function No(t,e,r){let n=[],a=t.native_transfers.map(o=>wo(o,e)),s=t.erc20_transfers.map(o=>_o(o));n.push(...a,...s);for(let o of t.nft_transfers)n.push(Do(o));return n.length===0&&n.push(Bo(t,e,r)),n}chunkVYIKXRYZ_cjs.a(No,"buildTokens");function wo(t,e){let r=kt(t.token_symbol)||e.symbol,n=new coreUtilsSdk.TokenUnit(t.value,e.decimals,r);return {decimal:e.decimals.toString(),name:e.name,symbol:r,amount:n.toDisplay(),from:Q(t.from_address),to:Q(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}chunkVYIKXRYZ_cjs.a(wo,"buildNativeToken");function _o(t){let e=Number(t.token_decimals),r=Co(t),n=new coreUtilsSdk.TokenUnit(t.value,e,r),a=kt(t.token_name)||r;return {decimal:t.token_decimals,name:a,symbol:r,amount:n.toDisplay(),from:Q(t.from_address),to:Q(t.to_address),type:vmModuleTypes.TokenType.ERC20,address:t.address}}chunkVYIKXRYZ_cjs.a(_o,"buildErc20Token");function Do(t){let e=t.contract_type==="ERC1155"?vmModuleTypes.TokenType.ERC1155:vmModuleTypes.TokenType.ERC721;return {name:"",symbol:"",amount:t.amount,collectableTokenId:t.token_id,from:Q(t.from_address),to:Q(t.to_address),type:e,address:t.token_address}}chunkVYIKXRYZ_cjs.a(Do,"buildNftToken");function Bo(t,e,r){let n=new coreUtilsSdk.TokenUnit(t.value,e.decimals,e.symbol),s=t.from_address.toLowerCase()===r.toLowerCase()?`-${n.toDisplay()}`:n.toDisplay();return {decimal:e.decimals.toString(),name:e.name,symbol:e.symbol,amount:s,from:Q(t.from_address),to:Q(t.to_address),type:vmModuleTypes.TokenType.NATIVE}}chunkVYIKXRYZ_cjs.a(Bo,"buildFallbackNativeToken");var Uo="https://proxy-api.avax.network/proxy/moralis-evm";async function In({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s}){try{let o=`0x${t.toString(16)}`,c=new URLSearchParams({chain:o,limit:(s??25).toString()});a&&c.set("cursor",a);let l=`${Uo}/wallets/${n}/history?${c.toString()}`,p=await fetch(l);if(!p.ok)return {transactions:[],nextPageToken:""};let m=await p.json();return Array.isArray(m.result)?{transactions:m.result.filter(f=>f.receipt_status==="1").map(f=>Sn({tx:f,networkToken:e,explorerUrl:r,chainId:t,address:n})),nextPageToken:m.cursor??""}:{transactions:[],nextPageToken:""}}catch{return {transactions:[],nextPageToken:""}}}chunkVYIKXRYZ_cjs.a(In,"getTransactionsFromMoralis");var Fo=new Set([1,4,5,11155111,8453,42161,10]);function Cn(t){return Fo.has(t)}chunkVYIKXRYZ_cjs.a(Cn,"isMoralisSupportedChain");var Nn=chunkVYIKXRYZ_cjs.a((t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},a)=>{let s=t===vmModuleTypes.TransactionType.TRANSFER,o=t===vmModuleTypes.TransactionType.SEND||t===vmModuleTypes.TransactionType.NFT_SEND,c=t===vmModuleTypes.TransactionType.RECEIVE||t===vmModuleTypes.TransactionType.NFT_RECEIVE,l=e?.from?.address,p=e?.to?.address;s&&r&&r[0]&&(l=r[0].from.address,p=r[0].to.address),s&&n&&n[0]&&(l=n[0].from.address,p=n[0].to.address);let m=o||s&&l.toLowerCase()===a.toLowerCase(),u=c||s&&p.toLowerCase()===a.toLowerCase();return {isOutgoing:m,isIncoming:u,isSender:l===a,from:l,to:p}},"getSenderInfo");async function wn(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}chunkVYIKXRYZ_cjs.a(wn,"resolve");var Mo="https://ipfs.io";function Ie(t,e=Mo){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}chunkVYIKXRYZ_cjs.a(Ie,"ipfsResolverWithFallback");async function Lo(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}chunkVYIKXRYZ_cjs.a(Lo,"fetchWithTimeout");async function _n(t){let e={};if(t)if(t.startsWith("data:application/json;base64,")){let r=t.substring(29);try{let n=Buffer.from(r,"base64").toString();e=JSON.parse(n);}catch{e={};}}else e=await Lo(Ie(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}chunkVYIKXRYZ_cjs.a(_n,"getNftMetadata");var Vo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Dn(t,e="256"){let r=Ie(t);return `${Vo}/width=${e},fit/${r}`}chunkVYIKXRYZ_cjs.a(Dn,"getSmallImageForNFT");var Fn=chunkVYIKXRYZ_cjs.a(async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},a)=>{let s=[];if(t.value!=="0"){let o=a.decimals,l=new coreUtilsSdk.TokenUnit(t.value,a.decimals,a.symbol).toDisplay();s.push({decimal:o.toString(),name:a.name,symbol:a.symbol,amount:l,from:t.from,to:t.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(o=>{let c=o.erc20Token.decimals,p=new coreUtilsSdk.TokenUnit(o.value,c,o.erc20Token.symbol).toDisplay();s.push({decimal:c.toString(),address:o.erc20Token.address,name:o.erc20Token.name,symbol:o.erc20Token.symbol,amount:p,from:o.from,to:o.to,imageUri:o.erc20Token.logoUri,type:vmModuleTypes.TokenType.ERC20});}),r&&await Promise.allSettled(r.map(async o=>{let c=o.erc721Token,l=await Un(c.tokenUri,c.metadata.imageUri);s.push({name:o.erc721Token.name,symbol:o.erc721Token.symbol,address:o.erc721Token.address,amount:"1",imageUri:l,from:o.from,to:o.to,collectableTokenId:o.erc721Token.tokenId,type:vmModuleTypes.TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async o=>{let c=o.erc1155Token,l=await Un(c.tokenUri,c.metadata.imageUri);s.push({name:o.erc1155Token.metadata.name??"",symbol:o.erc1155Token.metadata.symbol??"",address:o.erc1155Token.address,amount:o.value,imageUri:l,from:o.from,to:o.to,collectableTokenId:o.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),s},"getTokens"),Un=chunkVYIKXRYZ_cjs.a(async(t,e)=>{if(e)return e.startsWith("ipfs://")?Ie(e):e;{let[r,n]=await wn(_n(t));return n?"":r.image?Dn(r.image):""}},"getImageUri");var Gn=chunkVYIKXRYZ_cjs.a(async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:a})=>{let s=await Fn(t,r),o=An(t,a,s),{isOutgoing:c,isIncoming:l,isSender:p,from:m,to:u}=Nn(o,t,a),{blockTimestamp:f,txHash:y,gasPrice:h,gasUsed:P}=t.nativeTransaction,x=ke(e,y);return {isContractCall:!xr.includes(o),isIncoming:l,isOutgoing:c,isSender:p,timestamp:f*1e3,hash:y,from:m,to:u,tokens:s,gasPrice:h,gasUsed:P,chainId:n.toString(),txType:o,explorerLink:x}},"convertTransaction");var Mn=chunkVYIKXRYZ_cjs.a(async({chainId:t,explorerUrl:e,networkToken:r,address:n,nextPageToken:a,offset:s,glacierService:o})=>{try{let c=await o.listTransactions({chainId:t.toString(),address:n,pageToken:a,pageSize:s});return {transactions:(await Promise.all(c.transactions.filter(m=>m.nativeTransaction.txStatus==="1").map(m=>Gn({transactions:m,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(u=>u)))).filter(m=>m.tokens.find(u=>Number(u.amount)!==0)),nextPageToken:c.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}},"getTransactionsFromGlacier");var Ln=chunkVYIKXRYZ_cjs.a(async({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s,glacierService:o})=>Cn(t)?In({chainId:t,networkToken:e,explorerUrl:r,address:n,nextPageToken:a,offset:s}):o.isHealthy()?Mn({networkToken:e,explorerUrl:r,chainId:t,address:n,nextPageToken:a,offset:s,glacierService:o}):{transactions:[],nextPageToken:""},"getTransactionHistory");var Ho="https://ipfs.io";function Vn(t,e=Ho){if(!t)return "";try{return coreUtilsSdk.ipfsResolver(t,e)}catch{return t}}chunkVYIKXRYZ_cjs.a(Vn,"ipfsResolverWithFallback");var $o="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function vt(t,e="256"){let r=Vn(t);return `${$o}/width=${e},fit/${r}`}chunkVYIKXRYZ_cjs.a(vt,"getSmallImageForNFT");var Ce,$,Zt=class Zt{constructor(e,r){this.baseUrl=e;chunkVYIKXRYZ_cjs.d(this,Ce,[]);chunkVYIKXRYZ_cjs.d(this,$,void 0);chunkVYIKXRYZ_cjs.e(this,$,r??fetch);}async isNetworkSupported(e){return (await this.getChainList()).some(n=>n.community_id===e)}async getChainInfo({chainId:e}){return (await this.getChainList()).find(n=>n.id===e)}async getTokenBalance({chainId:e,address:r,tokenId:n}){let a=await chunkVYIKXRYZ_cjs.c(this,$).call(this,`${this.baseUrl}/v1/user/token?id=${r}&chain_id=${e}&token_id=${n}`);if(a.ok)return await a.json();throw new Error(`${a.status}:${a.statusText}`)}async getTokensBalanceOnChain({chainId:e,address:r}){let n=await chunkVYIKXRYZ_cjs.c(this,$).call(this,`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getTokenList({chainId:e,address:r}){let n=await(chunkVYIKXRYZ_cjs.c(this,$)??globalThis.fetch)(`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getChainList(){if(chunkVYIKXRYZ_cjs.c(this,Ce).length===0){let e=await chunkVYIKXRYZ_cjs.c(this,$).call(this,`${this.baseUrl}/v1/chain/list`);if(e.ok)chunkVYIKXRYZ_cjs.e(this,Ce,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return chunkVYIKXRYZ_cjs.c(this,Ce)}async getNftList({address:e,chainId:r}){return U([`${this.baseUrl}/v1/user/nft_list?id=${e}&chain_id=${r}`],zo,chunkVYIKXRYZ_cjs.c(this,$))}};Ce=new WeakMap,$=new WeakMap,chunkVYIKXRYZ_cjs.a(Zt,"DeBank");var Pt=Zt,jo=zod.z.object({id:zod.z.union([zod.z.custom(ethers.isHexString),zod.z.string()]),chain:zod.z.string(),name:zod.z.string()}),qo=jo.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()})),zo=zod.z.array(qo);var O,Ne,Et,At,Hn,er=class er{constructor({proxyApiUrl:e,fetch:r}){chunkVYIKXRYZ_cjs.d(this,Ne);chunkVYIKXRYZ_cjs.d(this,At);chunkVYIKXRYZ_cjs.d(this,O,void 0);chunkVYIKXRYZ_cjs.e(this,O,new Pt(`${e}/proxy/debank`,r));}async isNetworkSupported(e){return chunkVYIKXRYZ_cjs.c(this,O).isNetworkSupported(e)}async getNativeBalance({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid address: "+r);let{chainInfo:a,chainIdString:s}=await chunkVYIKXRYZ_cjs.f(this,Ne,Et).call(this,e),o=a.native_token_id,c=await chunkVYIKXRYZ_cjs.c(this,O).getTokenBalance({address:r,chainId:s,tokenId:o}),l=new coreUtilsSdk.TokenUnit(c.raw_amount,c.decimals,c.symbol),p=l.toDisplay(),u=(await Ze()).usd[n.toLowerCase()],f=u?u*c.price:void 0,y=f?l.mul(f).toDisplay({fixedDp:2}):void 0,h=f?l.mul(f).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {name:c.name,symbol:c.symbol,decimals:c.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:c.logo_url,balance:l.toSubUnit(),balanceDisplayValue:p,balanceInCurrency:h,balanceCurrencyDisplayValue:y,priceInCurrency:f}}async listErc20Balances({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:a,chainIdString:s}=await chunkVYIKXRYZ_cjs.f(this,Ne,Et).call(this,e),o=await chunkVYIKXRYZ_cjs.c(this,O).getTokensBalanceOnChain({chainId:s,address:r}),c=await Ze(),l={};for(let p of o){if(p.id===a.native_token_id||p.is_core===!1)continue;let m=new coreUtilsSdk.TokenUnit(p.raw_amount,p.decimals,p.symbol),u=m.toDisplay(),f=c.usd[n.toLowerCase()],y=f?f*p.price:void 0,h=y?m.mul(y).toDisplay({fixedDp:2}):void 0,P=y?m.mul(y).toDisplay({fixedDp:2,asNumber:!0}):void 0;l[p.id]={chainId:a.community_id,address:p.id,name:p.name,symbol:p.symbol,decimals:p.decimals,logoUri:p.logo_url,balance:m.toSubUnit(),balanceCurrencyDisplayValue:h,balanceDisplayValue:u,balanceInCurrency:P,priceInCurrency:y,type:vmModuleTypes.TokenType.ERC20,reputation:null};}return l}async listNftBalances({chainId:e,address:r}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listNftBalances: not valid address");let{chainIdString:n}=await chunkVYIKXRYZ_cjs.f(this,Ne,Et).call(this,e),a=await chunkVYIKXRYZ_cjs.c(this,O).getNftList({chainId:n,address:r});return chunkVYIKXRYZ_cjs.f(this,At,Hn).call(this,a,e)}};O=new WeakMap,Ne=new WeakSet,Et=chunkVYIKXRYZ_cjs.a(async function(e){let n=(await chunkVYIKXRYZ_cjs.c(this,O).getChainList()).find(s=>s.community_id===e)?.id;if(!n)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let a=await chunkVYIKXRYZ_cjs.c(this,O).getChainInfo({chainId:n});if(!a)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);return {chainInfo:a,chainIdString:n}},"#getChainInfo"),At=new WeakSet,Hn=chunkVYIKXRYZ_cjs.a(function(e,r){return e.reduce((n,a)=>({...n,[`${a.contract_id}-${a.id}`]:{chainId:r,address:a.contract_id,description:a.description??"",logoUri:a.thumbnail_url,logoSmall:vt(a.content),name:a.name,symbol:"",tokenId:`${a.inner_id}`,tokenUri:a.detail_url,collectionName:a.collection_name,balance:BigInt(a.amount),balanceDisplayValue:`${a.amount}`,type:a.is_erc721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{indexStatus:glacierSdk.NftTokenMetadataStatus.UNINDEXED,description:a.description??"",properties:""}}}),{})},"#mapNftList"),chunkVYIKXRYZ_cjs.a(er,"DeBankService");var xt=er;var rr=class rr extends Error{constructor(){super(...arguments);chunkVYIKXRYZ_cjs.b(this,"message","Glacier is unhealthy. Try again later.");}};chunkVYIKXRYZ_cjs.a(rr,"GlacierUnhealthyError");var W=rr,Zo=[coreChainsSdk.ChainId.ETHEREUM_HOMESTEAD],nr=class nr{constructor({glacierApiUrl:e,headers:r}){chunkVYIKXRYZ_cjs.b(this,"glacierSdk");chunkVYIKXRYZ_cjs.b(this,"isGlacierHealthy",!0);chunkVYIKXRYZ_cjs.b(this,"supportedChainIds",[]);chunkVYIKXRYZ_cjs.b(this,"isHealthy",chunkVYIKXRYZ_cjs.a(()=>this.isGlacierHealthy,"isHealthy"));this.glacierSdk=new glacierSdk.Glacier({BASE:e,HEADERS:r},Ue),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=>!Zo.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 W&&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 W&&this.setGlacierToUnhealthy(),a}}async getNativeBalance({chainId:e,address:r,currency:n,coingeckoId:a}){try{let o=(await this.glacierSdk.evmBalances.getNativeBalance({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase()})).nativeTokenBalance,c=new coreUtilsSdk.TokenUnit(o.balance,o.decimals,o.symbol),l=o.price?.value,p=l!==void 0?c.mul(l):void 0;return {name:o.name,symbol:o.symbol,decimals:o.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:o.logoUri,balance:c.toSubUnit(),balanceDisplayValue:c.toDisplay(),balanceInCurrency:p?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:p?.toDisplay({fixedDp:2}),priceInCurrency:l,coingeckoId:a??""}}catch(s){throw s instanceof W&&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 W&&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 W&&this.setGlacierToUnhealthy(),s}while(n);return a}async listNftBalances({chainId:e,address:r}){let a=(await Promise.allSettled([this.listErc721Balances({chainId:e.toString(),address:r}),this.listErc1155Balances({chainId:e.toString(),address:r})])).filter(s=>s.status==="fulfilled").flatMap(s=>s.value.filter(o=>o.ercType===glacierSdk.Erc721Token.ercType.ERC_721||BigInt(o.balance)>0n).map(o=>[`${o.address}-${o.tokenId}`,{address:o.address,description:o.metadata.description??"",logoUri:o.metadata.imageUri??"",logoSmall:vt(o.metadata.imageUri??""),name:o.metadata.name??"",symbol:o.metadata.symbol??"",tokenId:o.tokenId,tokenUri:o.tokenUri,chainId:e,collectionName:"Unknown",balance:o.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?BigInt(o.balance):1,balanceDisplayValue:o.ercType===glacierSdk.Erc1155Token.ercType.ERC_1155?o.balance:"1",type:o.ercType===glacierSdk.Erc721Token.ercType.ERC_721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{indexStatus:o.metadata.indexStatus,description:o.metadata.description,lastUpdatedTimestamp:o.metadata.metadataLastUpdatedTimestamp,properties:o.ercType===glacierSdk.Erc721Token.ercType.ERC_721?o.metadata.attributes:o.metadata.properties}}]));return Object.fromEntries(a)}async listErc20Balances({chainId:e,address:r,currency:n,customTokens:a}){try{let s=[],o;do{let c=await this.glacierSdk.evmBalances.listErc20Balances({chainId:e.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:o});s.push(...es(c.erc20TokenBalances,Number(e))),o=c.nextPageToken;}while(o);return [...Qo(a),...s].reduce((c,l)=>({...c,[l.address.toLowerCase()]:l}),{})}catch(s){throw s instanceof W&&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 W&&this.setGlacierToUnhealthy(),s}}};chunkVYIKXRYZ_cjs.a(nr,"EvmGlacierService");var St=nr,Qo=chunkVYIKXRYZ_cjs.a(t=>t.map(e=>({...e,decimals:e.decimals??18,type:vmModuleTypes.TokenType.ERC20,balance:0n,balanceInCurrency:0,balanceDisplayValue:"0",balanceCurrencyDisplayValue:"0",priceInCurrency:0,marketCap:0,change24:0,vol24:0,reputation:null})),"convertErc20TokenToTokenWithBalance"),es=chunkVYIKXRYZ_cjs.a((t,e)=>t.map(r=>{let n=new coreUtilsSdk.TokenUnit(r.balance,r.decimals,r.symbol),a=n.toDisplay(),s=r.balanceValue?.value.toString(),o=r.price?.value,c=o!==void 0?n.mul(o).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {chainId:e,address:r.address,name:r.name,symbol:r.symbol,decimals:r.decimals,logoUri:r.logoUri,balance:n.toSubUnit(),balanceCurrencyDisplayValue:s,balanceDisplayValue:a,balanceInCurrency:c,priceInCurrency:o,reputation:r.tokenReputation,type:vmModuleTypes.TokenType.ERC20}}),"convertErc20TokenWithBalanceToTokenWithBalance");var we,Je,te,H,me,de,ar=class ar{constructor({approvalController:e,environment:r,appInfo:n,runtime:a}){chunkVYIKXRYZ_cjs.d(this,we,void 0);chunkVYIKXRYZ_cjs.d(this,Je,void 0);chunkVYIKXRYZ_cjs.d(this,te,void 0);chunkVYIKXRYZ_cjs.d(this,H,void 0);chunkVYIKXRYZ_cjs.d(this,me,void 0);chunkVYIKXRYZ_cjs.d(this,de,void 0);let{glacierApiUrl:s,proxyApiUrl:o}=hr(r);chunkVYIKXRYZ_cjs.e(this,de,a),chunkVYIKXRYZ_cjs.e(this,we,new St({glacierApiUrl:s,headers:Ft(n)})),chunkVYIKXRYZ_cjs.e(this,Je,new xt({proxyApiUrl:o,fetch:chunkVYIKXRYZ_cjs.c(this,de)?.fetch})),chunkVYIKXRYZ_cjs.e(this,te,o),chunkVYIKXRYZ_cjs.e(this,H,e),chunkVYIKXRYZ_cjs.e(this,me,new rs__default.default({baseURL:o+"/proxy/blockaid/",apiKey:fr,httpAgent:a?.httpAgent,fetch:a?.fetch}));}getProvider(e){return F({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:e.customRpcHeaders})}getAddress({accountIndex:e,xpub:r,walletType:n}){return fn({accountIndex:e,xpub:r,walletType:n})}buildDerivationPath(e){return ge(e)}deriveAddress(e){return br({...e,approvalController:chunkVYIKXRYZ_cjs.c(this,H)})}deriveAddresses(e){return vr({...e,approvalController:chunkVYIKXRYZ_cjs.c(this,H)})}getBalances({addresses:e,network:r,currency:n,customTokens:a,storage:s,tokenTypes:o}){let c=new K({storage:s,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te),fetch:chunkVYIKXRYZ_cjs.c(this,de)?.fetch});return Tn({addresses:e,currency:n,network:r,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te),customTokens:a,balanceServices:[chunkVYIKXRYZ_cjs.c(this,we),chunkVYIKXRYZ_cjs.c(this,Je)],storage:s,tokenTypes:o,tokenService:c,fetch:chunkVYIKXRYZ_cjs.c(this,de)?.fetch})}getManifest(){let e=vmModuleTypes.parseManifest(ur);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:a,utilityAddresses:s,caipId:o,customRpcHeaders:c}=e;return Rn({chainId:r,chainName:n,rpcUrl:a,multiContractAddress:s?.multicall,caipId:o,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te),customRpcHeaders:c})}getTransactionHistory(e){let{network:r,address:n,nextPageToken:a,offset:s}=e,{chainId:o,networkToken:c,explorerUrl:l=""}=r;return Ln({chainId:o,networkToken:c,explorerUrl:l,address:n,nextPageToken:a,offset:s,glacierService:chunkVYIKXRYZ_cjs.c(this,we)})}getTokens(e){let{chainId:r}=e;return gt({chainId:r,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,te)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return Kr({request:e,network:r,approvalController:chunkVYIKXRYZ_cjs.c(this,H),blockaid:chunkVYIKXRYZ_cjs.c(this,me)});case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION_BATCH:return Ir(chunkVYIKXRYZ_cjs.c(this,H))?Wr({request:e,network:r,approvalController:chunkVYIKXRYZ_cjs.c(this,H),blockaid:chunkVYIKXRYZ_cjs.c(this,me)}):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} requires BatchApprovalController`)};case vmModuleTypes.RpcMethod.PERSONAL_SIGN:case vmModuleTypes.RpcMethod.ETH_SIGN:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:return mn({request:e,network:r,approvalController:chunkVYIKXRYZ_cjs.c(this,H),blockaid:chunkVYIKXRYZ_cjs.c(this,me)});default:return ns(e.method)?dn(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};we=new WeakMap,Je=new WeakMap,te=new WeakMap,H=new WeakMap,me=new WeakMap,de=new WeakMap,chunkVYIKXRYZ_cjs.a(ar,"EvmModule");var qn=ar,ns=chunkVYIKXRYZ_cjs.a(t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t),"shouldForwardToRpcNode");
|
|
44
44
|
|
|
45
45
|
exports.ERC20TransactionType = se;
|
|
46
46
|
exports.EvmModule = qn;
|
|
47
47
|
exports.NonContractCallTypes = xr;
|
|
48
|
-
exports.addIdToPromise =
|
|
48
|
+
exports.addIdToPromise = Ee;
|
|
49
49
|
exports.isTypedData = Ap;
|
|
50
50
|
exports.isTypedDataV1 = ln;
|
|
51
51
|
exports.settleAllIdPromises = xe;
|