@avalabs/evm-module 3.10.0 → 3.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +26 -26
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +15 -15
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a, e, c, d, b, f } from './chunk-F6EK5R7B.js';
|
|
2
2
|
import { DetailItemType, AppName, Environment, NetworkVMType, TransactionType, RpcMethod, TokenType, AlertType, WalletType, RawSimplePriceResponseSchema, parseManifest } from '@avalabs/vm-module-types';
|
|
3
|
-
import
|
|
3
|
+
import gi from '@blockaid/client';
|
|
4
4
|
import { VsCurrencyType, getBasicCoingeckoHttp, simpleTokenPrice, simplePrice } from '@avalabs/core-coingecko-sdk';
|
|
5
5
|
import { z as z$1, object, string, record, number } from 'zod';
|
|
6
6
|
import { CancelablePromise, ApiError, NftTokenMetadataStatus, FetchHttpRequest, Glacier, Erc721Token, Erc1155Token } from '@avalabs/glacier-sdk';
|
|
@@ -8,31 +8,31 @@ import { rpcErrors } from '@metamask/rpc-errors';
|
|
|
8
8
|
import { FetchRequest, Network, getAddress, toUtf8String, Contract, computeAddress, Interface, ethers, MaxUint256, isHexString, TypedDataEncoder } from 'ethers';
|
|
9
9
|
import { JsonRpcBatchInternal, getEvmAddressFromPubKey, getAddressFromXPub } from '@avalabs/core-wallets-sdk';
|
|
10
10
|
import { init, deriveAddressesForEvm } from '@avalabs/crypto-sdk';
|
|
11
|
-
import
|
|
11
|
+
import gn from '@openzeppelin/contracts/build/contracts/ERC20.json';
|
|
12
12
|
import { TokenUnit, numberToBN, balanceToDisplayValue, ipfsResolver } from '@avalabs/core-utils-sdk';
|
|
13
|
-
import
|
|
13
|
+
import dn from 'xss';
|
|
14
14
|
import { ChainId } from '@avalabs/core-chains-sdk';
|
|
15
|
-
import
|
|
15
|
+
import xo from 'lodash.startcase';
|
|
16
16
|
|
|
17
|
-
function Tr(e){let t,r=0;for(t=0;t<e.length;t++)r+=e.charCodeAt(t)*(t+1);return r}a(Tr,"charsum");function Mt(e){let t,r=0;for(t=0;t<e.length;t++){let n=Tr(e[t]??"");r=r+65027/n;}return (""+r).slice(0,16)}a(Mt,"arrayHash");var ce=a(async({operation:e,isSuccess:t,maxRetries:r=10,backoffPolicy:n=G.exponential()})=>{let a=0,i=0,o;for(;i<r;){i>0&&await fa(a);try{let l=await e(i);if(t(l))return l}catch(l){o=l;}a=n(i),i++;}let c=o?`Max retry exceeded. ${o}`:"Max retry exceeded.";throw new Error(c)},"retry"),Lt=class Lt{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return r=>t*1e3}static constantMs(t){return r=>t}static linearThenExponential(t,r){return n=>{if(n<t)return (n+1)*r;let a=n-t+1,i=t*r,o=2*r*(Math.pow(2,a)-1);return i+o}}};a(Lt,"RetryBackoffPolicy");var G=Lt;function fa(e){return new Promise(t=>setTimeout(t,e))}a(fa,"delay");var Gt=a(e=>ce({operation:t=>e(t>0),maxRetries:2,backoffPolicy:G.constant(1),isSuccess:t=>t?.status?.error_code!==429}),"coingeckoRetry");async function M(e,t,r=fetch){let n=await r(...e);if(!n.ok)throw new Error(`Request failed with status ${n.status}`);let a=await n.json();return t.parse(a)}a(M,"fetchAndVerify");var Vt=class Vt{constructor(t,r){this.proxyApiUrl=t;this.fetchFn=r;}simplePrice(t){let r=new URLSearchParams(t);return M([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(t){let{id:r,...n}=t,a=new URLSearchParams(n);return M([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],RawSimplePriceResponseSchema,this.fetchFn)}};a(Vt,"CoingeckoProxyClient");var He=Vt;var ya=z$1.array(z$1.object({internalId:z$1.string(),id:z$1.string(),symbol:z$1.string(),name:z$1.string(),image:z$1.string().optional().nullable(),current_price:z$1.number().optional().nullable(),price_change_percentage_24h:z$1.number().optional().nullable(),market_cap:z$1.number().optional().nullable(),total_volume:z$1.number().optional().nullable(),platforms:z$1.record(z$1.string(),z$1.string())})),Ot=class Ot{constructor(t){this.proxyApiUrl=t;}watchlistToken(t){let r=new URLSearchParams(t);return M([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],ya)}};a(Ot,"WatchlistProxyClient");var st=Ot;var ee,le,pe,ke,Ht=class Ht{constructor({storage:t,proxyApiUrl:r,fetch:n}){d(this,ee,void 0);d(this,le,void 0);d(this,pe,void 0);d(this,ke,void 0);b(this,"transformSimplePriceResponse",a((t,r=[VsCurrencyType.USD])=>{let n={};return Object.keys(t).forEach(a=>{let i=t[a];n[a]={},r.forEach(o=>{n[a]={[o]:{price:i?.[o],change24:i?.[`${o}_24h_change`],vol24:i?.[`${o}_24h_vol`],marketCap:i?.[`${o}_market_cap`]}};});}),n},"transformSimplePriceResponse"));e(this,ee,t),e(this,le,r),e(this,pe,n??globalThis.fetch),e(this,ke,getBasicCoingeckoHttp(void 0,c(this,pe)));}async getWatchlistDataForToken({tokenDetails:t,currency:r=VsCurrencyType.USD}){let n=(await new st(c(this,le)).watchlistToken({tokens:t.symbol,currency:r})).filter(i=>t.isNative?i.internalId===`NATIVE-${t.symbol.toLowerCase()}`:i.platforms[t.caip2Id]===t.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:t=[],currencies:r=[VsCurrencyType.USD]}){let n,i=`getSimplePrice-${t?`${Mt(t)}-${r.toString()}`:`${r.toString()}`}`;if(n=c(this,ee)?.get?.(i),n)return n;try{n=await Gt(o=>this.simplePrice({coinIds:t,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:o}));}catch{n=void 0;}return c(this,ee)?.set?.(i,n),n}async getPricesByAddresses(t,r,n=VsCurrencyType.USD){let a,o=`getPricesWithMarketDataByAddresses-${`${Mt(t)}-${r}-${n}`}`;if(a=c(this,ee)?.get?.(o),a)return a;try{a=await Gt(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:t,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),a=void 0;}return c(this,ee)?.set?.(o,a),a}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:r,currency:n=VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let i=await new He(c(this,le),c(this,pe)).simplePriceByContractAddresses({id:t,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(i,[n])}return simpleTokenPrice(c(this,ke),{assetPlatformId:t,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:r=[VsCurrencyType.USD],marketCap:n=!1,vol24:a=!1,change24:i=!1,lastUpdated:o=!1,useCoingeckoProxy:c$1=!1,shouldThrow:l=!0}){if(c$1){let p=await new He(c(this,le),c(this,pe)).simplePrice({ids:t,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:i,include_last_updated_at:o});return this.transformSimplePriceResponse(p,r)}return simplePrice(c(this,ke),{coinIds:t,currencies:r,marketCap:n,vol24:a,change24:i,lastUpdated:o,shouldThrow:l})}};ee=new WeakMap,le=new WeakMap,pe=new WeakMap,ke=new WeakMap,a(Ht,"TokenService");var te=Ht;var Ea="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",Ia="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",Rr=object({date:string(),usd:record(number())}),it=a(async()=>{try{return await M([Ea],Rr)}catch{return await M([Ia],Rr)}},"getExchangeRates");var H=a((e,t,r="horizontal")=>({label:e,alignment:r,type:DetailItemType.TEXT,value:t}),"textItem"),Re=a((e,t)=>({label:e,value:t,type:DetailItemType.LINK}),"linkItem"),q=a((e,t)=>({label:e,type:DetailItemType.ADDRESS,value:t}),"addressItem");var lt=a((e,t)=>({label:e,type:DetailItemType.NETWORK,value:t}),"networkItem");var $t=a(({name:e,version:t})=>{switch(e){case AppName.CORE_MOBILE_IOS:case AppName.CORE_MOBILE_ANDROID:case AppName.CORE_WEB:case AppName.CORE_EXTENSION:case AppName.EXPLORER:return {"x-application-name":e,"x-application-version":t};case AppName.OTHER:return}},"getCoreHeaders");var br=process.env.GLACIER_API_KEY;var $e=a(()=>br,"getGlacierApiKey");var Sa={rltoken:$e()},me,pt,mt,Er,dt,Ir,Wt=class Wt extends FetchHttpRequest{constructor(r){super(r);d(this,mt);d(this,dt);d(this,me,0);d(this,pt,G.exponential());}request(r){let n={...Sa,...r.query||{}},a$1={...r,query:Object.keys(n).length>0?n:void 0},i=a(()=>super.request(a$1),"getRequest");return c(this,me)>0?f(this,dt,Ir).call(this,i):f(this,mt,Er).call(this,i)}};me=new WeakMap,pt=new WeakMap,mt=new WeakSet,Er=a(function(r){let n=r();return new CancelablePromise((a,i,o)=>{o(()=>n.cancel()),n.then(c=>{e(this,me,0),a(c);}).catch(c$1=>{if(c$1 instanceof ApiError){let l=c$1.status===429,p=c$1.status>=500&&c$1.status<600;e(this,me,c(this,me)+Number(l||p));}i(c$1);});})},"#request"),dt=new WeakSet,Ir=a(function(r){let n=c(this,pt).call(this,c(this,me));return new CancelablePromise((a,i,o)=>{let c=setTimeout(()=>{let l=r();o(()=>{l.cancel(),clearTimeout(c);}),l.then(a).catch(i);},n);})},"#postponeRequest"),a(Wt,"GlacierFetchHttpRequest");var We=Wt;var O=a((e,t)=>({message:`${e}${t instanceof Error?`: ${t.message}`:""}`,data:{cause:t}}),"rpcErrorOpts");var Pr={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","avalanche_declareAgentIdentity","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 Ar="DUMMY_API_KEY";var Ca={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Na={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},xr=a(e=>{switch(e){case Environment.PRODUCTION:return Ca;case Environment.DEV:return Na}},"getEnv");var ve=a(({accountIndex:e,derivationPathType:t})=>{if(e<0)throw rpcErrors.invalidParams("Account index must be a non-negative integer");switch(t){case"bip44":return {[NetworkVMType.EVM]:`m/44'/60'/0'/0/${e}`};case"ledger_live":return {[NetworkVMType.EVM]:`m/44'/60'/${e}'/0/0`};default:throw rpcErrors.invalidParams(`Unsupported derivation path type: ${t}`)}},"buildDerivationPath");var F=a(async e=>{let{chainId:t,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:i=2e3,customRpcHeaders:o}=e,c=Fa(n),l=c;if(o){let m=new FetchRequest(c);for(let[u,f]of Object.entries(o))m.setHeader(u,f);l=m;}let p=new JsonRpcBatchInternal({maxCalls:40,multiContractAddress:a},l,new Network(r,t));return p.pollingInterval=i,p},"getProvider"),Ba=["glacier-api.avax.network","proxy-api.avax.network"];function Fa(e){let t=new URL(e),r=$e();if(r&&Ba.includes(t.hostname)){let n=t.searchParams;return n.set("token",r),t.search=n.toString(),t.toString()}return e}a(Fa,"addGlacierAPIKeyIfNeeded");var Ma=5*60*1e3,La={43114:"0x8004BAa17C55a88189AE136b182e5fdA19dE9b63"},Ga=["function ownerOf(uint256 tokenId) view returns (address)","function tokenURI(uint256 tokenId) view returns (string)","function agentURI(uint256 agentId) view returns (string)","function getMetadata(uint256 agentId, string metadataKey) view returns (bytes)"],Va=["function getSummary(uint256 agentId, address[] clientAddresses, string tag1, string tag2) view returns (uint64 count, int128 summaryValue, uint8 summaryValueDecimals)","function readAllFeedback(uint256 agentId, address[] clientAddresses, string tag1, string tag2, bool includeRevoked) view returns (address[] clients, uint64[] feedbackIndexes, int128[] values, uint8[] valueDecimals, string[] tag1s, string[] tag2s, bool[] isRevoked)","function getIdentityRegistry() view returns (address)"],_r=new Map,Oa=a(e=>e===null?"unknown":e>=75?"high":e>=40?"medium":"low","getTrustLevel"),Ha=a(e=>e===null||!Number.isFinite(e)?null:Math.max(0,Math.min(100,Math.trunc(e))),"clampScore"),zt=a(e=>{let t=typeof e=="bigint"?Number(e):e;return Number.isFinite(t)?t:null},"toNumber"),Dr=a((e,t)=>{let r=zt(e),n=zt(t);return r===null||n===null||n<0?null:r/10**n},"scaleFixedPoint"),$a=a(e=>Array.isArray(e),"isReputationSummaryTuple"),Ee=a(e=>Array.isArray(e),"isReputationFeedbackTuple"),Wa=a(e=>$a(e)?{count:e[0],summaryValue:e[1],summaryValueDecimals:e[2]}:e,"getSummaryValue"),ja=a(e=>{let t=Ee(e)?e[2]:e.values,r=Ee(e)?e[3]:e.valueDecimals,n=Ee(e)?e[4]:e.tag1s,a=Ee(e)?e[5]:e.tag2s,i=Ee(e)?e[6]:e.isRevoked;return t.map((o,c)=>({value:o,valueDecimals:r[c]??0,tag1:n[c],tag2:a[c],isRevoked:i[c]}))},"getFeedbackValues"),qa=a(e=>{let t=e.filter(r=>r!==null);return t.length?t.reduce((r,n)=>r+n,0)/t.length:null},"averageScores"),jt="starred",za=a(e=>{let t=new Set,r=[];for(let n of e)try{let a=getAddress(n);t.has(a)||(t.add(a),r.push(a));}catch{continue}return r},"dedupeAddresses"),Ya=a(e=>Ee(e)?e[0]:e.clients,"getFeedbackClients"),Ka=a(async(e,t,r)=>{try{if(getAddress(await e.getIdentityRegistry())!==t)return null;let a=await e.readAllFeedback(r,[],jt,"",!1),i=ja(a).filter(c=>c.tag1===void 0||c.tag1===jt).filter(c=>!c.isRevoked),o=za(Ya(a));if(o.length)try{let c=Wa(await e.getSummary(r,o,jt,""));if(zt(c.count))return Dr(c.summaryValue,c.summaryValueDecimals)}catch{}return qa(i.map(c=>Dr(c.value,c.valueDecimals)))}catch{return null}},"resolveReputationScore"),Ja=a(e=>{let[t,r,n]=e.split(":");if(t!=="eip155"||!r||!n)return null;let a=Number(r);if(!Number.isInteger(a))return null;try{return {chainId:a,address:getAddress(n)}}catch{return null}},"parseAgentRegistry"),qt=a(e=>({agentId:e.agentId,agentRegistry:e.agentRegistry,owner:null,reputationScore:null,metadataUri:null,trustLevel:"unknown"}),"buildFallback"),Br=a(async e=>{let t=await Promise.allSettled(e.map(r=>r()));for(let r of t)if(r.status==="fulfilled"&&r.value!=null)return r.value;return null},"callFirst"),Fr=a(e=>{if(!e||e==="0x")return null;try{return toUtf8String(e)}catch{return null}},"decodeMetadata"),re=a(async({declaration:e,rpcUrl:t,chainId:r,chainName:n,customRpcHeaders:a})=>{let i=_r.get(`${t}:${e.agentRegistry}:${e.agentId}`);if(i&&i.expiresAt>Date.now())return i.value;let o=Ja(e.agentRegistry);if(!o)return qt(e);if(!/^\d+$/.test(e.agentId))return qt({...e,agentRegistry:`eip155:${o.chainId}:${o.address}`});let c={...e,agentRegistry:`eip155:${o.chainId}:${o.address}`},l=qt(c),p=await F({chainId:r,chainName:n,rpcUrl:t,customRpcHeaders:a}),m=new Contract(o.address,Ga,p),u=La[o.chainId],f=u?new Contract(u,Va,p):null,[y,h,R]=await Promise.all([Br([async()=>getAddress(await m.ownerOf(BigInt(e.agentId)))]),Br([async()=>await m.tokenURI(BigInt(e.agentId)),async()=>await m.agentURI(BigInt(e.agentId)),async()=>Fr(await m.getMetadata(BigInt(e.agentId),"agentURI")),async()=>Fr(await m.getMetadata(BigInt(e.agentId),"uri"))]),f?Ka(f,o.address,BigInt(e.agentId)):Promise.resolve(null)]),g=Ha(R??null),I={...l,owner:y??null,metadataUri:h??null,reputationScore:g,trustLevel:Oa(g)};return _r.set(`${t}:${e.agentRegistry}:${e.agentId}`,{expiresAt:Date.now()+Ma,value:I}),I},"resolveAgentIdentity");var Za=z$1.object({agentId:z$1.coerce.string().regex(/^\d+$/),agentRegistry:z$1.string().min(1)}),Ur=a(async({request:e,network:t})=>{let r=Za.safeParse(e.params);return r.success?{result:await re({declaration:r.data,rpcUrl:t.rpcUrl,chainId:t.chainId,chainName:t.chainName,customRpcHeaders:t.customRpcHeaders})}:(console.error("invalid params",r.error),{error:rpcErrors.invalidParams({message:"Agent identity params are invalid",data:{cause:r.error.flatten()}})})},"avalancheDeclareAgentIdentity");var Mr=a(e=>"derivationPathType"in e&&"accountIndex"in e&&typeof e.accountIndex=="number"&&typeof e.derivationPathType=="string","hasDerivationDetails");var Lr=a(async e=>{let{secretId:t,approvalController:r}=e,n=Mr(e)?ve(e).EVM:void 0,a=await r.requestPublicKey({curve:"secp256k1",secretId:t,derivationPath:n});return {[NetworkVMType.EVM]:computeAddress(`0x${a}`)}},"deriveAddress");var Gr=a(async e=>{let{approvalController:t,secretId:r,accountIndices:n,derivationPathType:a}=e;if(n.length===0)return [];await init();let i=await Promise.all(n.map(async c=>{let l=ve({accountIndex:c,derivationPathType:a}).EVM,p=await t.requestPublicKey({curve:"secp256k1",secretId:r,derivationPath:l});return Uint8Array.from(Buffer.from(p,"hex"))}));return (await deriveAddressesForEvm(i)).map(c=>({[NetworkVMType.EVM]:c}))},"deriveAddresses");var Ie=z$1.object({from:z$1.string().length(42),to:z$1.string().length(42).optional(),data:z$1.string().optional(),value:z$1.string().startsWith("0x").optional(),gas:z$1.string().startsWith("0x").optional(),gasPrice:z$1.string().startsWith("0x").optional(),maxFeePerGas:z$1.string().startsWith("0x").optional(),maxPriorityFeePerGas:z$1.string().startsWith("0x").optional(),nonce:z$1.string().optional(),chainId:z$1.string().optional().or(z$1.number().optional()),accessList:z$1.array(z$1.object({address:z$1.string().startsWith("0x"),storageKeys:z$1.array(z$1.string())})).optional()});var Vr=z$1.tuple([Ie,Ie]).rest(Ie).refine(e=>Kt(e,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(e=>Kt(e,"from"),{message:'All transactions must use the same "from" address'}).refine(e=>io(e,"nonce")||so(e,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'}),ao=z$1.object({skipIntermediateTxs:z$1.boolean().optional()}),oo=z$1.union([Vr,z$1.object({transactions:Vr,options:ao.optional()})]);function so(e,t){return !Kt(e,t)}a(so,"areAllDifferentByProp");function io(e,t){return e.every(r=>r[t]===void 0||r[t]==="")}a(io,"areAllEmptyByProp");function Kt(e,t){return new Set(e.map(n=>n[t])).size===1}a(Kt,"areAllEqualByProp");var Or=a(e=>{let t=oo.safeParse(e);return t.success?Array.isArray(t.data)?{success:!0,data:{transactions:t.data,options:{}}}:{success:!0,data:{transactions:t.data.transactions,options:t.data.options??{}}}:t},"parseRequestParams");var ft=a(async({from:e,provider:t})=>t.getTransactionCount(e),"getNonce");var Hr=a(async(e,t)=>{if(e[0].nonce)return;let r=await ft({from:e[0].from,provider:t});return Promise.all(e.map(async(n,a)=>{n.nonce=String(r+a);}))},"ensureProperNonces");var co=a(e=>e.startsWith("https://")||e.startsWith("http://")||e.startsWith("ipfs://"),"isNavigableMetadataUri"),lo=a(e=>e.startsWith("data:"),"isEmbeddedDataUri"),Pe=a(e=>{let t=[H("Agent ID",e.agentId),H("Registry",e.agentRegistry,"vertical"),H("Trust level",e.trustLevel)];return e.reputationScore!==null&&t.push(H("Reputation score",String(e.reputationScore))),e.owner&&t.push(q("Owner",e.owner)),e.metadataUri&&t.push(co(e.metadataUri)?Re("Metadata",{url:e.metadataUri,name:e.metadataUri}):lo(e.metadataUri)?H("Metadata","Embedded data URI","vertical"):H("Metadata",e.metadataUri,"vertical")),{title:"Agent Identity",items:t}},"buildAgentIdentityDetailSection");var $r=[TransactionType.SEND,TransactionType.RECEIVE,TransactionType.TRANSFER,TransactionType.NFT_SEND,TransactionType.NFT_RECEIVE],z=(o=>(o.TOTAL_SUPPLY="totalSupply",o.BALANCE_OF="balanceOf",o.TRANSFER="transfer",o.TRANSFER_FROM="transferFrom",o.APPROVE="approve",o.ALLOWANCE="allowance",o))(z||{}),Jt=(n=>(n.NATIVE_TRANSFER="native_transfer",n.ERC20_TRANSFER="erc20_transfer",n.CONTRACT_CALL="contract_call",n))(Jt||{});var Ae=a(e=>{if(e.data)try{let r=new Interface(en.abi).parseTransaction({data:e.data,value:e.value}),n=r?.name??r?.fragment?.name;return n&&uo(n)?n:void 0}catch{return}},"parseERC20TransactionType");function uo(e){return Object.values(z).includes(e)}a(uo,"isERC20TransactionType");var Wr=a(e=>{if(e.data)try{let r=new Interface(en.abi).parseTransaction({data:e.data,value:e.value}),n=r?.name??r?.fragment?.name;if(n==="transfer"||n==="transferFrom"){let a=r?.args.to;if(typeof a=="string")return a}}catch{}return e.to},"getRecipientAddress");var jr=a(e=>{if(!!!(e.data&&e.data!=="0x"))return "native_transfer";let r=Ae(e);return r==="transfer"||r==="transferFrom"?"erc20_transfer":"contract_call"},"classifyTransaction");var yt=a((e,t,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:i,alert:o},c)=>{let{dappInfo:l}=e,p=Ae(r),m="Do you approve this transaction?";p==="approve"&&(m="Do you approve this spend limit?");let u=Wr(r),f=[q("Account",r.from),lt("Network",{name:t.chainName,logoUri:t.logoUri}),Re("Website",l)].filter(g=>!!g),y=jr(r);y!=="contract_call"&&u&&f.push(q("To",u)),r.to&&["erc20_transfer","contract_call"].includes(y)&&f.push(q("Contract",r.to));let h={title:m,details:[{title:"Transaction Details",items:f},...c?[Pe(c)]:[]],networkFeeSelector:!0,alert:o,balanceChange:a,tokenApprovals:i,isSimulationSuccessful:n},R={type: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??t.chainId,accessList:r.accessList}};return {displayData:h,signingData:R}},"buildTxApprovalRequest");var gt=a(async(e,t,r)=>{if("txHash"in t)return t.txHash;let n=a(()=>e.send("eth_sendRawTransaction",[t.signedData]),"broadcast");return r?.shouldRetry?ce({operation:()=>n(),isSuccess:()=>!0,maxRetries:6,backoffPolicy:G.linearThenExponential(4,1e3)}):n()},"getTxHash");function Se(e,t,r="tx"){return `${e}/${r}/${t}`}a(Se,"getExplorerAddressByNetwork");var ze=a(async({explorerUrl:e,provider:t,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:i,request:o})=>{try{let c=Se(e,r);if(n({txHash:r,request:o,explorerLink:c}),(await ce({operation:async()=>t.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 i({txHash:r,request:o}),!1},"waitForTransactionReceipt");var ht=new Map,qr=a((e,t,r)=>(ht.set(e,{signingRequests:t,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a},i)=>{let o=ht.get(e);if(!o)throw rpcErrors.resourceNotFound();let{signingRequests:c}=o,p={signingRequests:c.map((m,u)=>{if(i===void 0||i===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 ht.set(e,p),p},cleanup:()=>ht.delete(e)}),"getTxBatchUpdater");function de(e){return !("type"in e)}a(de,"isNetworkToken");function Tt(e){return e.type===TokenType.ERC20}a(Tt,"isERC20Token");function zr(e){return typeof e.to=="string"}a(zr,"hasToField");function Yr(e){return "requestBatchApproval"in e&&typeof e.requestBatchApproval=="function"}a(Yr,"supportsBatchApprovals");function ko(e){return typeof e=="object"&&e!==null&&"ins"in e&&"outs"in e&&Array.isArray(e.ins)&&Array.isArray(e.outs)}a(ko,"isBalanceChange");function Ro(e){return typeof e=="object"&&e!==null&&"approvals"in e&&"isEditable"in e&&Array.isArray(e.approvals)}a(Ro,"isTokenApprovals");function Xt(e){return ko(e)?e.ins.length===0&&e.outs.length===0:Ro(e)?e.approvals.length===0:!1}a(Xt,"isEmpty");var Kr=a(async({chainId:e,params:t,domain:r,withGasEstimation:n,blockaid:a})=>{let i=["validation","simulation"];return n&&i.push("gas_estimation"),a.evm.transactionBulk.scan({chain:e.toString(),options:i,data:t,metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}})},"scanTransactionBatch"),Jr=a(async({chainId:e,params:t,domain:r,blockaid:n})=>n.evm.transaction.scan({account_address:t.from,chain:e.toString(),options:["validation","simulation"],data:{from:t.from,to:t.to,data:t.data,value:t.value,gas:t.gas,gas_price:t.gasPrice},metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}}),"scanTransaction"),Xr=a(async({chainId:e,accountAddress:t,data:r,domain:n,blockaid:a})=>a.evm.jsonRpc.scan({chain:e.toString(),options:["validation","simulation"],account_address:t,data:r,metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}}),"scanJsonRpc");var tn=a(async(e,t,r)=>{if(!e.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.Contract(e.to,en.abi,r),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),i=Zr(a[0]),o=Zr(a[1]),c=parseInt(a[2]),l={type:TokenType.ERC20,name:i,chainId:t,symbol:o,decimals:c,address:e.to,contractType:"ERC-20"},p=new ethers.Interface(en.abi),m=p.getFunction(e.data.slice(0,10)),u=p.decodeFunctionData(e.data.slice(0,10),e.data);if(m?.name==="transfer")return {balanceChange:{outs:[{items:[{displayValue:new 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 ne={[AlertType.WARNING]:{type:AlertType.WARNING,details:{title:"Suspicious transaction",description:"Use caution, this transaction might be malicious."}},[AlertType.DANGER]:{type: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 nn=a(async({rpcMethod:e,dAppUrl:t,params:r,chainId:n,provider:a,blockaid:i})=>{let o;try{o=await Jr({chainId:n,params:r,domain:t,blockaid:i});}catch(c){console.error("simulateTransaction error",c);}return Zt({rpcMethod:e,params:r,chainId:n,provider:a,simulationResult:o})},"simulateTransaction"),Zt=a(async({rpcMethod:e,params:t,chainId:r,provider:n,simulationResult:a})=>{let i,o,c,l=!1,p;if(a){let{validation:m,simulation:u,gas_estimation:f}=a;m?.result_type==="Warning"?i=ne[AlertType.WARNING]:m?.result_type==="Malicious"&&(i=ne[AlertType.DANGER]),u?.status==="Success"&&(l=!0,c=an(e,u.account_summary),o=on(u.account_summary.assets_diffs)),f?.status==="Success"&&(p=Number(f.estimate));}if(!l&&zr(t)){let m=await tn(t,r,n);o=m.balanceChange,c=m.tokenApprovals;}return {alert:i,balanceChange:o,tokenApprovals:c,isSimulationSuccessful:l,estimatedGasLimit:p}},"processTransactionSimulation"),xo=a(e=>e.trace_type==="ExposureTrace","isExposureTrace"),Co=a((e,t)=>`${e.toLowerCase()}.${t.toLowerCase()}`,"normalizeAddresses"),No=a(e=>e===void 0||e.length===0?{}:e.reduce((t,r)=>xo(r)?{[Co(r.spender,r.asset.address)]:r}:t,{}),"mapExposureTracesToSpenderAsset"),an=a((e,t)=>{let{traces:r}=t,n=No(r),a=Object.entries(n).map(([o,c])=>{let l=sn(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${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===TokenType.ERC20&&e===RpcMethod.ETH_SEND_TRANSACTION,approvals:a}},"processTokenApprovals"),on=a(e=>{let t=rn(e,"in"),r=rn(e,"out");if(!(t.length===0&&r.length===0))return {ins:t,outs:r}},"processBalanceChange"),rn=a((e,t)=>e.filter(r=>r[t].length>0).sort((r,n)=>r[t].length-n[t].length).map(r=>{let n=r.asset,a="address"in n?sn(n):wo(n);if(!a)return;let i=r[t].map(o=>{let c;if("value"in o&&o.value)if("decimals"in a){let u=numberToBN(o.value,a.decimals);c=balanceToDisplayValue(u,a.decimals);}else isHexString(o.value)&&(c=parseInt(o.value,16).toString());else "type"in a&&a.type===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:i}}).filter(r=>r!==void 0),"processAssetDiffs"),sn=a(e=>{let t;return e.type==="ERC20"?t={type:TokenType.ERC20,address:e.address,decimals:e.decimals,name:e.name??e.symbol??"",symbol:e.symbol??"",logoUri:e.logo_url}:e.type==="ERC1155"?t={type:TokenType.ERC1155,address:e.address,logoUri:e.logo_url,name:e.name,symbol:e.symbol}:e.type==="ERC721"?t={type:TokenType.ERC721,address:e.address,logoUri:e.logo_url,name:e.name,symbol:e.symbol}:e.type==="NONERC"&&(t={type:TokenType.NONERC,address:e.address,logoUri:e.logo_url,name:e.name,symbol:e.symbol}),t},"convertAssetToNetworkContractToken"),wo=a(e=>({name:e.name??"",symbol:e.symbol??"",decimals:e.decimals,description:"",logoUri:e.logo_url}),"convertNativeAssetToToken"),cn=a(async({request:e,dAppUrl:t,accountAddress:r,chainId:n,data:a,blockaid:i})=>{let o,c,l;try{let{validation:p,simulation:m}=await Xr({chainId:n,accountAddress:r,data:a,domain:t,blockaid:i});p?.result_type==="Warning"?o=ne[AlertType.WARNING]:p?.result_type==="Malicious"&&(o=ne[AlertType.DANGER]),m?.status==="Success"&&(l=an(e.method,m.account_summary),c=on(m.account_summary.assets_diffs));}catch(p){console.error("processJsonRpcSimulation error",p),o=ne[AlertType.WARNING];}return {alert:o,balanceChange:c,tokenApprovals:l}},"processJsonRpcSimulation");var pn=a(async({rpcMethod:e,dAppUrl:t,params:r,chainId:n,provider:a,populateMissingGas:i,blockaid:o})=>{let c;try{c=await Kr({chainId:n,params:r,domain:t,withGasEstimation:i,blockaid:o});}catch(y){return console.error("simulateTransactionBatch error",y),{isSimulationSuccessful:!1,alert:ne[AlertType.WARNING],scans:[]}}let l=await Promise.all(c.map(async(y,h)=>{let R=r[h],g=await Zt({chainId:n,params:r[h],provider:a,rpcMethod:e,simulationResult:y});return i&&!R.gas&&g.estimatedGasLimit&&(R.gas=`0x${g.estimatedGasLimit.toString(16)}`),{transaction:R,...g}})),p=l.every(y=>y.isSimulationSuccessful),m=_o(l),u=Bo(l),f=Do(l);return {isSimulationSuccessful:p,alert:m,balanceChange:u,tokenApprovals:f,scans:l.map(y=>(y.tokenApprovals&&(y.tokenApprovals.isEditable=!1),y))}},"simulateTransactionBatch"),_o=a(e=>{let t={[AlertType.INFO]:0,[AlertType.WARNING]:1,[AlertType.DANGER]:2};return e.reduce((r,{alert:n})=>n&&(!r||t[n.type]>t[r.type])?n:r,void 0)},"getHighestAlert"),Do=a(e=>{let t=e.reduce((r,{tokenApprovals:n})=>(n&&n.approvals.forEach(a=>{let i=r.approvals.find(o=>a.token.address===o.token.address&&a.spenderAddress===o.spenderAddress);if(!i){r.approvals.push({...a});return}i.value=a.value,i.usdPrice=a.usdPrice;}),r),{approvals:[],isEditable:!1});return Fo(t,e),Xt(t)?void 0:t},"aggregateTokenApprovals"),Bo=a(e=>{let t=e.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(a=>{let i=ln(r.ins,a);i?i.items.push(...a.items):r.ins.push(a);}),n.outs.forEach(a=>{let i=ln(r.outs,a);i?i.items.push(...a.items):r.outs.push({...a});})),r),{ins:[],outs:[]});return Xt(t)?void 0:t},"aggregateBalanceChange"),ln=a((e,t)=>e.find(r=>de(r.token)&&de(t.token)?r.token.symbol===t.token.symbol:!de(r.token)&&!de(t.token)?r.token.address===t.token.address:!1),"findTokenDiff"),Fo=a((e,t)=>{for(let r of e.approvals)for(let n of t)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(i=>!de(i.token)&&!de(r.token)&&i.token.address===r.token.address)))if(!n.tokenApprovals)e.approvals=e.approvals.filter(i=>i.spenderAddress!==r.spenderAddress&&r.token.address!==i.token.address);else {let i=n.tokenApprovals.approvals.find(o=>o.spenderAddress===r.spenderAddress&&o.token.address===r.token.address);if(!i)continue;r.usdPrice=i.usdPrice,r.value=i.value;}},"clearSpentApprovals");var Uo=a(e=>{if(!e||typeof e!="object")return !1;let t=e;return typeof t.agentId=="string"&&typeof t.agentRegistry=="string"},"isAgentIdentityDeclaration"),Ce=a(e=>{let t=e.context?.agentIdentity;return Uo(t)?t:null},"getAgentIdentityFromContext");var mn=a(async({request:e,network:t,approvalController:r,blockaid:n})=>{let{params:a}=e,{data:i,success:o,error:c}=Or(a);if(!o)return console.error("invalid params",c),{error:rpcErrors.invalidParams(O("Transaction params are invalid",c))};let{transactions:l,options:p={}}=i,{skipIntermediateTxs:m=!1}=p,u=await F({chainId:t.chainId,chainName:t.chainName,rpcUrl:t.rpcUrl,multiContractAddress:t.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:t.customRpcHeaders});try{await Hr(l,u);}catch(L){return console.error("Unable to calculate nonce",L),{error:rpcErrors.internal(O("Unable to calculate nonce",L))}}let f=l.every(L=>Number(L.gas)>0),{alert:y,balanceChange:h,isSimulationSuccessful:R,tokenApprovals:g,scans:I}=await pn({rpcMethod:e.method,chainId:t.chainId,params:l,dAppUrl:e.dappInfo.url,provider:u,populateMissingGas:!f,blockaid:n});if(!I.every(({transaction:L})=>Number(L.gas)>0))return console.error("Gas limit is missing in some transactions"),{error:rpcErrors.internal({message:"Gas limit is missing in some transactions"})};let w=Ce(e),P=w?await re({declaration:w,rpcUrl:t.rpcUrl,chainId:t.chainId,chainName:t.chainName,customRpcHeaders:t.customRpcHeaders}):void 0,V={title:"Do you approve these transactions?",details:[{title:"Transaction Details",items:[q("Account",l[0].from),lt("Network",{name:t.chainName,logoUri:t.logoUri}),Re("Website",e.dappInfo)]},...P?[Pe(P)]:[]],isSimulationSuccessful:R,balanceChange:h,alert:y,tokenApprovals:g,networkFeeSelector:!0},ie=I.map(L=>yt(e,t,L.transaction,L,P)),{cleanup:b,updateTx:E}=qr(e.requestId,ie,V),_=await r.requestBatchApproval({request:e,signingRequests:ie,displayData:V,updateTx:E});if(b(),"error"in _)return {error:_.error};if(_.result.length!==l.length)return {error:rpcErrors.internal({message:`Invalid number of signatures. Expected ${l.length}, got ${_.result.length}`})};let Oe=[];for(let[L,ua]of _.result.entries()){let hr=L===_.result.length-1,Ut=await gt(u,ua);if(hr&&ze({explorerUrl:t.explorerUrl??"",provider:u,txHash:Ut,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),!hr&&!m&&!await ze({explorerUrl:t.explorerUrl??"",provider:u,txHash:Ut,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}))return {error:rpcErrors.internal({message:`Transaction ${L+1} failed! Batch execution stopped`})};Oe.push(Ut);}return {result:Oe}},"ethSendTransactionBatch");function dn(e,t,r){return new ethers.Contract(e,en.abi).interface.encodeFunctionData("approve",[t,r])}a(dn,"encodeApprovalLimit");var bt=new Map,un=a((e,t,r)=>(bt.set(e,{signingData:t,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a,approvalLimit:i,gasLimit:o})=>{let c=bt.get(e);if(!c)throw 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 i=="string"){if(!i.startsWith("0x"))throw rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let y=p.tokenApprovals;Go(y),Vo(l.data.data);let h=y.approvals[0];m.data.data=dn(h.token.address,h.spenderAddress,i),u.tokenApprovals={approvals:[{...h,value:i}],isEditable:!0};}let f={signingData:m,displayData:u};return bt.set(e,f),f},cleanup:()=>bt.delete(e)}),"getTxUpdater");function Go(e){if(!e||!e.isEditable||e.approvals.length!==1)throw rpcErrors.invalidInput("Cannot edit the token approval for this request. Please start a new request instead.")}a(Go,"ensureTokenApprovalCanBeEdited");function Vo(e){if((!e||e==="0x"?null:Ae({data:e??void 0}))!=="approve")throw rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}a(Vo,"ensureApproveWasCalled");var fn=a(async({transactionParams:{from:e,to:t,data:r,value:n,accessList:a},provider:i})=>{let o=await i.getTransactionCount(e);return Number(await i.estimateGas({from:e,to:t,nonce:o,data:r,value:n,accessList:a}))},"estimateGasLimit");var Ho=z$1.tuple([Ie]),yn=a(e=>Ho.safeParse(e),"parseRequestParams");var gn=a(async({request:e,network:t,approvalController:r,blockaid:n})=>{let{params:a}=e,{data:i,error:o,success:c}=yn(a);if(!c)return console.error("invalid params",o),{error:rpcErrors.invalidParams(O("Transaction params are invalid",o))};let[l]=i,p=await F({chainId:t.chainId,chainName:t.chainName,rpcUrl:t.rpcUrl,multiContractAddress:t.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:t.customRpcHeaders});if(!l.gas||Number(l.gas)<0)try{let P=await fn({transactionParams:{from:l.from,to:l.to,data:l.data,value:l.value,accessList:l.accessList},provider:p});l.gas="0x"+P.toString(16);}catch(P){return {error:rpcErrors.internal(O("Unable to calculate gas limit",P))}}if(!l.nonce)try{let P=await ft({from:l.from,provider:p});l.nonce=String(P);}catch(P){return {error:rpcErrors.internal(O("Unable to calculate nonce",P))}}let m=Ce(e),u=m?await re({declaration:m,rpcUrl:t.rpcUrl,chainId:t.chainId,chainName:t.chainName,customRpcHeaders:t.customRpcHeaders}):void 0,f=await nn({rpcMethod:e.method,chainId:t.chainId,params:l,dAppUrl:e.dappInfo.url,provider:p,blockaid:n}),{displayData:y,signingData:h}=yt(e,t,l,f,u),{updateTx:R,cleanup:g}=un(e.requestId,h,y),I=await r.requestApproval({request:e,displayData:y,signingData:h,updateTx:R});if(g(),"error"in I)return {error:I.error};let k,w=e.context?.shouldRetry===!0;try{k=await gt(p,I,{shouldRetry:w});}catch(P){return {error:rpcErrors.internal(O("Unable to get transaction hash",P))}}return ze({explorerUrl:t.explorerUrl??"",provider:p,txHash:k,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),{result:k}},"ethSendTransaction");var Qt=a(e=>{let t="";t+=`Domain
|
|
18
|
-
`;for(let r in e.domain)t+=` ${r}: ${
|
|
17
|
+
function wr(e){let t,r=0;for(t=0;t<e.length;t++)r+=e.charCodeAt(t)*(t+1);return r}a(wr,"charsum");function qt(e){let t,r=0;for(t=0;t<e.length;t++){let n=wr(e[t]??"");r=r+65027/n;}return (""+r).slice(0,16)}a(qt,"arrayHash");var me=a(async({operation:e,isSuccess:t,maxRetries:r=10,backoffPolicy:n=H.exponential()})=>{let a=0,i=0,s;for(;i<r;){i>0&&await wa(a);try{let l=await e(i);if(t(l))return l}catch(l){s=l;}a=n(i),i++;}let c=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(c)},"retry"),zt=class zt{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return r=>t*1e3}static constantMs(t){return r=>t}static linearThenExponential(t,r){return n=>{if(n<t)return (n+1)*r;let a=n-t+1,i=t*r,s=2*r*(Math.pow(2,a)-1);return i+s}}};a(zt,"RetryBackoffPolicy");var H=zt;function wa(e){return new Promise(t=>setTimeout(t,e))}a(wa,"delay");var Yt=a(e=>me({operation:t=>e(t>0),maxRetries:2,backoffPolicy:H.constant(1),isSuccess:t=>t?.status?.error_code!==429}),"coingeckoRetry");async function L(e,t,r=fetch){let n=await r(...e);if(!n.ok)throw new Error(`Request failed with status ${n.status}`);let a=await n.json();return t.parse(a)}a(L,"fetchAndVerify");var Kt=class Kt{constructor(t,r){this.proxyApiUrl=t;this.fetchFn=r;}simplePrice(t){let r=new URLSearchParams(t);return L([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(t){let{id:r,...n}=t,a=new URLSearchParams(n);return L([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],RawSimplePriceResponseSchema,this.fetchFn)}};a(Kt,"CoingeckoProxyClient");var je=Kt;var _a=z$1.array(z$1.object({internalId:z$1.string(),id:z$1.string(),symbol:z$1.string(),name:z$1.string(),image:z$1.string().optional().nullable(),current_price:z$1.number().optional().nullable(),price_change_percentage_24h:z$1.number().optional().nullable(),market_cap:z$1.number().optional().nullable(),total_volume:z$1.number().optional().nullable(),platforms:z$1.record(z$1.string(),z$1.string())})),Jt=class Jt{constructor(t){this.proxyApiUrl=t;}watchlistToken(t){let r=new URLSearchParams(t);return L([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],_a)}};a(Jt,"WatchlistProxyClient");var dt=Jt;var te,de,ue,ve,Xt=class Xt{constructor({storage:t,proxyApiUrl:r,fetch:n}){d(this,te,void 0);d(this,de,void 0);d(this,ue,void 0);d(this,ve,void 0);b(this,"transformSimplePriceResponse",a((t,r=[VsCurrencyType.USD])=>{let n={};return Object.keys(t).forEach(a=>{let i=t[a];n[a]={},r.forEach(s=>{n[a]={[s]:{price:i?.[s],change24:i?.[`${s}_24h_change`],vol24:i?.[`${s}_24h_vol`],marketCap:i?.[`${s}_market_cap`]}};});}),n},"transformSimplePriceResponse"));e(this,te,t),e(this,de,r),e(this,ue,n??globalThis.fetch),e(this,ve,getBasicCoingeckoHttp(void 0,c(this,ue)));}async getWatchlistDataForToken({tokenDetails:t,currency:r=VsCurrencyType.USD}){let n=(await new dt(c(this,de)).watchlistToken({tokens:t.symbol,currency:r})).filter(i=>t.isNative?i.internalId===`NATIVE-${t.symbol.toLowerCase()}`:i.platforms[t.caip2Id]===t.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:t=[],currencies:r=[VsCurrencyType.USD]}){let n,i=`getSimplePrice-${t?`${qt(t)}-${r.toString()}`:`${r.toString()}`}`;if(n=c(this,te)?.get?.(i),n)return n;try{n=await Yt(s=>this.simplePrice({coinIds:t,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{n=void 0;}return c(this,te)?.set?.(i,n),n}async getPricesByAddresses(t,r,n=VsCurrencyType.USD){let a,s=`getPricesWithMarketDataByAddresses-${`${qt(t)}-${r}-${n}`}`;if(a=c(this,te)?.get?.(s),a)return a;try{a=await Yt(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:t,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),a=void 0;}return c(this,te)?.set?.(s,a),a}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:r,currency:n=VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let i=await new je(c(this,de),c(this,ue)).simplePriceByContractAddresses({id:t,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(i,[n])}return simpleTokenPrice(c(this,ve),{assetPlatformId:t,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:r=[VsCurrencyType.USD],marketCap:n=!1,vol24:a=!1,change24:i=!1,lastUpdated:s=!1,useCoingeckoProxy:c$1=!1,shouldThrow:l=!0}){if(c$1){let p=await new je(c(this,de),c(this,ue)).simplePrice({ids:t,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:i,include_last_updated_at:s});return this.transformSimplePriceResponse(p,r)}return simplePrice(c(this,ve),{coinIds:t,currencies:r,marketCap:n,vol24:a,change24:i,lastUpdated:s,shouldThrow:l})}};te=new WeakMap,de=new WeakMap,ue=new WeakMap,ve=new WeakMap,a(Xt,"TokenService");var re=Xt;var Va="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",Ha="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",Dr=object({date:string(),usd:record(number())}),ut=a(async()=>{try{return await L([Va],Dr)}catch{return await L([Ha],Dr)}},"getExchangeRates");var W=a((e,t,r="horizontal")=>({label:e,alignment:r,type:DetailItemType.TEXT,value:t}),"textItem"),Re=a((e,t)=>({label:e,value:t,type:DetailItemType.LINK}),"linkItem"),Y=a((e,t)=>({label:e,type:DetailItemType.ADDRESS,value:t}),"addressItem");var yt=a((e,t)=>({label:e,type:DetailItemType.NETWORK,value:t}),"networkItem");var Zt=a(({name:e,version:t})=>{switch(e){case AppName.CORE_MOBILE_IOS:case AppName.CORE_MOBILE_ANDROID:case AppName.CORE_WEB:case AppName.CORE_EXTENSION:case AppName.EXPLORER:return {"x-application-name":e,"x-application-version":t};case AppName.OTHER:return}},"getCoreHeaders");var Br=process.env.GLACIER_API_KEY;var qe=a(()=>Br,"getGlacierApiKey");var Wa={rltoken:qe()},ge,ft,ht,Fr,Tt,Mr,Qt=class Qt extends FetchHttpRequest{constructor(r){super(r);d(this,ht);d(this,Tt);d(this,ge,0);d(this,ft,H.exponential());}request(r){let n={...Wa,...r.query||{}},a$1={...r,query:Object.keys(n).length>0?n:void 0},i=a(()=>super.request(a$1),"getRequest");return c(this,ge)>0?f(this,Tt,Mr).call(this,i):f(this,ht,Fr).call(this,i)}};ge=new WeakMap,ft=new WeakMap,ht=new WeakSet,Fr=a(function(r){let n=r();return new CancelablePromise((a,i,s)=>{s(()=>n.cancel()),n.then(c=>{e(this,ge,0),a(c);}).catch(c$1=>{if(c$1 instanceof ApiError){let l=c$1.status===429,p=c$1.status>=500&&c$1.status<600;e(this,ge,c(this,ge)+Number(l||p));}i(c$1);});})},"#request"),Tt=new WeakSet,Mr=a(function(r){let n=c(this,ft).call(this,c(this,ge));return new CancelablePromise((a,i,s)=>{let c=setTimeout(()=>{let l=r();s(()=>{l.cancel(),clearTimeout(c);}),l.then(a).catch(i);},n);})},"#postponeRequest"),a(Qt,"GlacierFetchHttpRequest");var ze=Qt;var $=a((e,t)=>({message:`${e}${t instanceof Error?`: ${t.message}`:""}`,data:{cause:t}}),"rpcErrorOpts");var Lr={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","avalanche_declareAgentIdentity","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 Gr="DUMMY_API_KEY";var qa={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},za={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Hr=a(e=>{switch(e){case Environment.PRODUCTION:return qa;case Environment.DEV:return za}},"getEnv");var Pe=a(({accountIndex:e,derivationPathType:t})=>{if(e<0)throw rpcErrors.invalidParams("Account index must be a non-negative integer");switch(t){case"bip44":return {[NetworkVMType.EVM]:`m/44'/60'/0'/0/${e}`};case"ledger_live":return {[NetworkVMType.EVM]:`m/44'/60'/${e}'/0/0`};default:throw rpcErrors.invalidParams(`Unsupported derivation path type: ${t}`)}},"buildDerivationPath");var F=a(async e=>{let{chainId:t,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:i=2e3,customRpcHeaders:s}=e,c=Za(n),l=c;if(s){let m=new FetchRequest(c);for(let[u,g]of Object.entries(s))m.setHeader(u,g);l=m;}let p=new JsonRpcBatchInternal({maxCalls:40,multiContractAddress:a},l,new Network(r,t));return p.pollingInterval=i,p},"getProvider"),Xa=["glacier-api.avax.network","proxy-api.avax.network"];function Za(e){let t=new URL(e),r=qe();if(r&&Xa.includes(t.hostname)){let n=t.searchParams;return n.set("token",r),t.search=n.toString(),t.toString()}return e}a(Za,"addGlacierAPIKeyIfNeeded");var es=5*60*1e3,ts={43114:"0x8004BAa17C55a88189AE136b182e5fdA19dE9b63"},rs=["function ownerOf(uint256 tokenId) view returns (address)","function tokenURI(uint256 tokenId) view returns (string)","function agentURI(uint256 agentId) view returns (string)","function getMetadata(uint256 agentId, string metadataKey) view returns (bytes)"],ns=["function getSummary(uint256 agentId, address[] clientAddresses, string tag1, string tag2) view returns (uint64 count, int128 summaryValue, uint8 summaryValueDecimals)","function readAllFeedback(uint256 agentId, address[] clientAddresses, string tag1, string tag2, bool includeRevoked) view returns (address[] clients, uint64[] feedbackIndexes, int128[] values, uint8[] valueDecimals, string[] tag1s, string[] tag2s, bool[] isRevoked)","function getIdentityRegistry() view returns (address)"],jr=new Map,as=a(e=>e===null?"unknown":e>=75?"high":e>=40?"medium":"low","getTrustLevel"),ss=a(e=>e===null||!Number.isFinite(e)?null:Math.max(0,Math.min(100,Math.trunc(e))),"clampScore"),rr=a(e=>{let t=typeof e=="bigint"?Number(e):e;return Number.isFinite(t)?t:null},"toNumber"),qr=a((e,t)=>{let r=rr(e),n=rr(t);return r===null||n===null||n<0?null:r/10**n},"scaleFixedPoint"),os=a(e=>Array.isArray(e),"isReputationSummaryTuple"),Ie=a(e=>Array.isArray(e),"isReputationFeedbackTuple"),is=a(e=>os(e)?{count:e[0],summaryValue:e[1],summaryValueDecimals:e[2]}:e,"getSummaryValue"),cs=a(e=>{let t=Ie(e)?e[2]:e.values,r=Ie(e)?e[3]:e.valueDecimals,n=Ie(e)?e[4]:e.tag1s,a=Ie(e)?e[5]:e.tag2s,i=Ie(e)?e[6]:e.isRevoked;return t.map((s,c)=>({value:s,valueDecimals:r[c]??0,tag1:n[c],tag2:a[c],isRevoked:i[c]}))},"getFeedbackValues"),ls=a(e=>{let t=e.filter(r=>r!==null);return t.length?t.reduce((r,n)=>r+n,0)/t.length:null},"averageScores"),er="starred",ps=a(e=>{let t=new Set,r=[];for(let n of e)try{let a=getAddress(n);t.has(a)||(t.add(a),r.push(a));}catch{continue}return r},"dedupeAddresses"),ms=a(e=>Ie(e)?e[0]:e.clients,"getFeedbackClients"),ds=a(async(e,t,r)=>{try{if(getAddress(await e.getIdentityRegistry())!==t)return null;let a=await e.readAllFeedback(r,[],er,"",!1),i=cs(a).filter(c=>c.tag1===void 0||c.tag1===er).filter(c=>!c.isRevoked),s=ps(ms(a));if(s.length)try{let c=is(await e.getSummary(r,s,er,""));if(rr(c.count))return qr(c.summaryValue,c.summaryValueDecimals)}catch{}return ls(i.map(c=>qr(c.value,c.valueDecimals)))}catch{return null}},"resolveReputationScore"),us=a(e=>{let[t,r,n]=e.split(":");if(t!=="eip155"||!r||!n)return null;let a=Number(r);if(!Number.isInteger(a))return null;try{return {chainId:a,address:getAddress(n)}}catch{return null}},"parseAgentRegistry"),tr=a(e=>({agentId:e.agentId,agentRegistry:e.agentRegistry,owner:null,reputationScore:null,metadataUri:null,trustLevel:"unknown"}),"buildFallback"),zr=a(async e=>{let t=await Promise.allSettled(e.map(r=>r()));for(let r of t)if(r.status==="fulfilled"&&r.value!=null)return r.value;return null},"callFirst"),Yr=a(e=>{if(!e||e==="0x")return null;try{return toUtf8String(e)}catch{return null}},"decodeMetadata"),ne=a(async({declaration:e,rpcUrl:t,chainId:r,chainName:n,customRpcHeaders:a})=>{let i=jr.get(`${t}:${e.agentRegistry}:${e.agentId}`);if(i&&i.expiresAt>Date.now())return i.value;let s=us(e.agentRegistry);if(!s)return tr(e);if(!/^\d+$/.test(e.agentId))return tr({...e,agentRegistry:`eip155:${s.chainId}:${s.address}`});let c={...e,agentRegistry:`eip155:${s.chainId}:${s.address}`},l=tr(c),p=await F({chainId:r,chainName:n,rpcUrl:t,customRpcHeaders:a}),m=new Contract(s.address,rs,p),u=ts[s.chainId],g=u?new Contract(u,ns,p):null,[h,y,k]=await Promise.all([zr([async()=>getAddress(await m.ownerOf(BigInt(e.agentId)))]),zr([async()=>await m.tokenURI(BigInt(e.agentId)),async()=>await m.agentURI(BigInt(e.agentId)),async()=>Yr(await m.getMetadata(BigInt(e.agentId),"agentURI")),async()=>Yr(await m.getMetadata(BigInt(e.agentId),"uri"))]),g?ds(g,s.address,BigInt(e.agentId)):Promise.resolve(null)]),T=ss(k??null),A={...l,owner:h??null,metadataUri:y??null,reputationScore:T,trustLevel:as(T)};return jr.set(`${t}:${e.agentRegistry}:${e.agentId}`,{expiresAt:Date.now()+es,value:A}),A},"resolveAgentIdentity");var ys=z$1.object({agentId:z$1.coerce.string().regex(/^\d+$/),agentRegistry:z$1.string().min(1)}),Kr=a(async({request:e,network:t})=>{let r=ys.safeParse(e.params);return r.success?{result:await ne({declaration:r.data,rpcUrl:t.rpcUrl,chainId:t.chainId,chainName:t.chainName,customRpcHeaders:t.customRpcHeaders})}:(console.error("invalid params",r.error),{error:rpcErrors.invalidParams({message:"Agent identity params are invalid",data:{cause:r.error.flatten()}})})},"avalancheDeclareAgentIdentity");var Jr=a(e=>"derivationPathType"in e&&"accountIndex"in e&&typeof e.accountIndex=="number"&&typeof e.derivationPathType=="string","hasDerivationDetails");var Xr=a(async e=>{let{secretId:t,approvalController:r}=e,n=Jr(e)?Pe(e).EVM:void 0,a=await r.requestPublicKey({curve:"secp256k1",secretId:t,derivationPath:n});return {[NetworkVMType.EVM]:computeAddress(`0x${a}`)}},"deriveAddress");var Zr=a(async e=>{let{approvalController:t,secretId:r,accountIndices:n,derivationPathType:a}=e;if(n.length===0)return [];await init();let i=await Promise.all(n.map(async c=>{let l=Pe({accountIndex:c,derivationPathType:a}).EVM,p=await t.requestPublicKey({curve:"secp256k1",secretId:r,derivationPath:l});return Uint8Array.from(Buffer.from(p,"hex"))}));return (await deriveAddressesForEvm(i)).map(c=>({[NetworkVMType.EVM]:c}))},"deriveAddresses");var Ae=z$1.object({from:z$1.string().length(42),to:z$1.string().length(42).optional(),data:z$1.string().optional(),value:z$1.string().startsWith("0x").optional(),gas:z$1.string().startsWith("0x").optional(),gasPrice:z$1.string().startsWith("0x").optional(),maxFeePerGas:z$1.string().startsWith("0x").optional(),maxPriorityFeePerGas:z$1.string().startsWith("0x").optional(),nonce:z$1.string().optional(),chainId:z$1.string().optional().or(z$1.number().optional()),accessList:z$1.array(z$1.object({address:z$1.string().startsWith("0x"),storageKeys:z$1.array(z$1.string())})).optional()});var Qr=z$1.tuple([Ae,Ae]).rest(Ae).refine(e=>ar(e,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(e=>ar(e,"from"),{message:'All transactions must use the same "from" address'}).refine(e=>Ps(e,"nonce")||Es(e,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'}),vs=z$1.object({skipIntermediateTxs:z$1.boolean().optional()}),Rs=z$1.union([Qr,z$1.object({transactions:Qr,options:vs.optional()})]);function Es(e,t){return !ar(e,t)}a(Es,"areAllDifferentByProp");function Ps(e,t){return e.every(r=>r[t]===void 0||r[t]==="")}a(Ps,"areAllEmptyByProp");function ar(e,t){return new Set(e.map(n=>n[t])).size===1}a(ar,"areAllEqualByProp");var en=a(e=>{let t=Rs.safeParse(e);return t.success?Array.isArray(t.data)?{success:!0,data:{transactions:t.data,options:{}}}:{success:!0,data:{transactions:t.data.transactions,options:t.data.options??{}}}:t},"parseRequestParams");var bt=a(async({from:e,provider:t})=>t.getTransactionCount(e),"getNonce");var tn=a(async(e,t)=>{if(e[0].nonce)return;let r=await bt({from:e[0].from,provider:t});return Promise.all(e.map(async(n,a)=>{n.nonce=String(r+a);}))},"ensureProperNonces");var Is=a(e=>e.startsWith("https://")||e.startsWith("http://")||e.startsWith("ipfs://"),"isNavigableMetadataUri"),As=a(e=>e.startsWith("data:"),"isEmbeddedDataUri"),Se=a(e=>{let t=[W("Agent ID",e.agentId),W("Registry",e.agentRegistry,"vertical"),W("Trust level",e.trustLevel)];return e.reputationScore!==null&&t.push(W("Reputation score",String(e.reputationScore))),e.owner&&t.push(Y("Owner",e.owner)),e.metadataUri&&t.push(Is(e.metadataUri)?Re("Metadata",{url:e.metadataUri,name:e.metadataUri}):As(e.metadataUri)?W("Metadata","Embedded data URI","vertical"):W("Metadata",e.metadataUri,"vertical")),{title:"Agent Identity",items:t}},"buildAgentIdentityDetailSection");var rn=[TransactionType.SEND,TransactionType.RECEIVE,TransactionType.TRANSFER,TransactionType.NFT_SEND,TransactionType.NFT_RECEIVE],K=(s=>(s.TOTAL_SUPPLY="totalSupply",s.BALANCE_OF="balanceOf",s.TRANSFER="transfer",s.TRANSFER_FROM="transferFrom",s.APPROVE="approve",s.ALLOWANCE="allowance",s))(K||{}),sr=(n=>(n.NATIVE_TRANSFER="native_transfer",n.ERC20_TRANSFER="erc20_transfer",n.CONTRACT_CALL="contract_call",n))(sr||{});var xe=a(e=>{if(e.data)try{let r=new Interface(gn.abi).parseTransaction({data:e.data,value:e.value}),n=r?.name??r?.fragment?.name;return n&&Ns(n)?n:void 0}catch{return}},"parseERC20TransactionType");function Ns(e){return Object.values(K).includes(e)}a(Ns,"isERC20TransactionType");var nn=a(e=>{if(e.data)try{let r=new Interface(gn.abi).parseTransaction({data:e.data,value:e.value}),n=r?.name??r?.fragment?.name;if(n==="transfer"||n==="transferFrom"){let a=r?.args.to;if(typeof a=="string")return a}}catch{}return e.to},"getRecipientAddress");var an=a(e=>{if(!!!(e.data&&e.data!=="0x"))return "native_transfer";let r=xe(e);return r==="transfer"||r==="transferFrom"?"erc20_transfer":"contract_call"},"classifyTransaction");var vt=a((e,t,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:i,alert:s},c)=>{let{dappInfo:l}=e,p=xe(r),m="Do you approve this transaction?";p==="approve"&&(m="Do you approve this spend limit?");let u=nn(r),g=[Y("Account",r.from),yt("Network",{name:t.chainName,logoUri:t.logoUri}),Re("Website",l)].filter(T=>!!T),h=an(r);h!=="contract_call"&&u&&g.push(Y("To",u)),r.to&&["erc20_transfer","contract_call"].includes(h)&&g.push(Y("Contract",r.to));let y={title:m,details:[{title:"Transaction Details",items:g},...c?[Se(c)]:[]],networkFeeSelector:!0,alert:s,balanceChange:a,tokenApprovals:i,isSimulationSuccessful:n},k={type: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??t.chainId,accessList:r.accessList}};return {displayData:y,signingData:k}},"buildTxApprovalRequest");var Rt=a(async(e,t,r)=>{if("txHash"in t)return t.txHash;let n=a(()=>e.send("eth_sendRawTransaction",[t.signedData]),"broadcast");return r?.shouldRetry?me({operation:()=>n(),isSuccess:()=>!0,maxRetries:6,backoffPolicy:H.linearThenExponential(4,1e3)}):n()},"getTxHash");function ae(e,t,r="tx"){return `${e}/${r}/${t}`}a(ae,"getExplorerAddressByNetwork");var Je=a(async({explorerUrl:e,provider:t,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:i,request:s})=>{try{let c=ae(e,r);if(n({txHash:r,request:s,explorerLink:c}),(await me({operation:async()=>t.getTransactionReceipt(r),isSuccess:m=>!!m,backoffPolicy:H.linearThenExponential(15,750),maxRetries:20}))?.status===1)return a({txHash:r,explorerLink:c,request:s}),!0}catch(c){console.error(c);}return i({txHash:r,request:s}),!1},"waitForTransactionReceipt");var Et=new Map,sn=a((e,t,r)=>(Et.set(e,{signingRequests:t,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a},i)=>{let s=Et.get(e);if(!s)throw rpcErrors.resourceNotFound();let{signingRequests:c}=s,p={signingRequests:c.map((m,u)=>{if(i===void 0||i===u){let{signingData:g}=m;return {signingData:{...g,data:{...g.data,maxFeePerGas:n??g.data.maxFeePerGas,maxPriorityFeePerGas:a??g.data.maxPriorityFeePerGas}},displayData:m.displayData}}return m}),displayData:r};return Et.set(e,p),p},cleanup:()=>Et.delete(e)}),"getTxBatchUpdater");function ye(e){return !("type"in e)}a(ye,"isNetworkToken");function Pt(e){return e.type===TokenType.ERC20}a(Pt,"isERC20Token");function on(e){return typeof e.to=="string"}a(on,"hasToField");function cn(e){return "requestBatchApproval"in e&&typeof e.requestBatchApproval=="function"}a(cn,"supportsBatchApprovals");function Us(e){return typeof e=="object"&&e!==null&&"ins"in e&&"outs"in e&&Array.isArray(e.ins)&&Array.isArray(e.outs)}a(Us,"isBalanceChange");function Fs(e){return typeof e=="object"&&e!==null&&"approvals"in e&&"isEditable"in e&&Array.isArray(e.approvals)}a(Fs,"isTokenApprovals");function or(e){return Us(e)?e.ins.length===0&&e.outs.length===0:Fs(e)?e.approvals.length===0:!1}a(or,"isEmpty");var ln=a(async({chainId:e,params:t,domain:r,withGasEstimation:n,blockaid:a})=>{let i=["validation","simulation"];return n&&i.push("gas_estimation"),a.evm.transactionBulk.scan({chain:e.toString(),options:i,data:t,metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}})},"scanTransactionBatch"),pn=a(async({chainId:e,params:t,domain:r,blockaid:n})=>n.evm.transaction.scan({account_address:t.from,chain:e.toString(),options:["validation","simulation"],data:{from:t.from,to:t.to,data:t.data,value:t.value,gas:t.gas,gas_price:t.gasPrice},metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}}),"scanTransaction"),mn=a(async({chainId:e,accountAddress:t,data:r,domain:n,blockaid:a})=>a.evm.jsonRpc.scan({chain:e.toString(),options:["validation","simulation"],account_address:t,data:r,metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}}),"scanJsonRpc");var yn=a(async(e,t,r)=>{if(!e.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.Contract(e.to,gn.abi,r),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),i=dn(a[0]),s=dn(a[1]),c=parseInt(a[2]),l={type:TokenType.ERC20,name:i,chainId:t,symbol:s,decimals:c,address:e.to,contractType:"ERC-20"},p=new ethers.Interface(gn.abi),m=p.getFunction(e.data.slice(0,10)),u=p.decodeFunctionData(e.data.slice(0,10),e.data);if(m?.name==="transfer")return {balanceChange:{outs:[{items:[{displayValue:new 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 se={[AlertType.WARNING]:{type:AlertType.WARNING,details:{title:"Suspicious transaction",description:"Use caution, this transaction might be malicious."}},[AlertType.DANGER]:{type: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 hn=a(async({rpcMethod:e,dAppUrl:t,params:r,chainId:n,provider:a,blockaid:i})=>{let s;try{s=await pn({chainId:n,params:r,domain:t,blockaid:i});}catch(c){console.error("simulateTransaction error",c);}return ir({rpcMethod:e,params:r,chainId:n,provider:a,simulationResult:s})},"simulateTransaction"),ir=a(async({rpcMethod:e,params:t,chainId:r,provider:n,simulationResult:a})=>{let i,s,c,l=!1,p;if(a){let{validation:m,simulation:u,gas_estimation:g}=a;m?.result_type==="Warning"?i=se[AlertType.WARNING]:m?.result_type==="Malicious"&&(i=se[AlertType.DANGER]),u?.status==="Success"&&(l=!0,c=Tn(e,u.account_summary),s=kn(u.account_summary.assets_diffs)),g?.status==="Success"&&(p=Number(g.estimate));}if(!l&&on(t)){let m=await yn(t,r,n);s=m.balanceChange,c=m.tokenApprovals;}return {alert:i,balanceChange:s,tokenApprovals:c,isSimulationSuccessful:l,estimatedGasLimit:p}},"processTransactionSimulation"),Ws=a(e=>e.trace_type==="ExposureTrace","isExposureTrace"),js=a((e,t)=>`${e.toLowerCase()}.${t.toLowerCase()}`,"normalizeAddresses"),qs=a(e=>e===void 0||e.length===0?{}:e.reduce((t,r)=>Ws(r)?{[js(r.spender,r.asset.address)]:r}:t,{}),"mapExposureTracesToSpenderAsset"),Tn=a((e,t)=>{let{traces:r}=t,n=qs(r),a=Object.entries(n).map(([s,c])=>{let l=bn(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:g}}=c;if(!u||u<=0)return;p.value=m,p.usdPrice=`${g}`;}if(c.type==="ERC721ExposureTrace")if(!c.exposed)p.value=`0x${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===TokenType.ERC20&&e===RpcMethod.ETH_SEND_TRANSACTION,approvals:a}},"processTokenApprovals"),kn=a(e=>{let t=fn(e,"in"),r=fn(e,"out");if(!(t.length===0&&r.length===0))return {ins:t,outs:r}},"processBalanceChange"),fn=a((e,t)=>e.filter(r=>r[t].length>0).sort((r,n)=>r[t].length-n[t].length).map(r=>{let n=r.asset,a="address"in n?bn(n):zs(n);if(!a)return;let i=r[t].map(s=>{let c;if("value"in s&&s.value)if("decimals"in a){let u=numberToBN(s.value,a.decimals);c=balanceToDisplayValue(u,a.decimals);}else isHexString(s.value)&&(c=parseInt(s.value,16).toString());else "type"in a&&a.type===TokenType.ERC721&&(c="1");if(!c)return;let l="logo_url"in s?s.logo_url:void 0,p="token_id"in s?s.token_id:void 0;return {displayValue:c,usdPrice:s.usd_price,...l!==void 0&&{logoUri:l},...p!==void 0&&{tokenId:p}}}).filter(s=>s!==void 0);return {token:a,items:i}}).filter(r=>r!==void 0),"processAssetDiffs"),bn=a(e=>{let t;return e.type==="ERC20"?t={type:TokenType.ERC20,address:e.address,decimals:e.decimals,name:e.name??e.symbol??"",symbol:e.symbol??"",logoUri:e.logo_url}:e.type==="ERC1155"?t={type:TokenType.ERC1155,address:e.address,logoUri:e.logo_url,name:e.name,symbol:e.symbol}:e.type==="ERC721"?t={type:TokenType.ERC721,address:e.address,logoUri:e.logo_url,name:e.name,symbol:e.symbol}:e.type==="NONERC"&&(t={type:TokenType.NONERC,address:e.address,logoUri:e.logo_url,name:e.name,symbol:e.symbol}),t},"convertAssetToNetworkContractToken"),zs=a(e=>({name:e.name??"",symbol:e.symbol??"",decimals:e.decimals,description:"",logoUri:e.logo_url}),"convertNativeAssetToToken"),vn=a(async({request:e,dAppUrl:t,accountAddress:r,chainId:n,data:a,blockaid:i})=>{let s,c,l;try{let{validation:p,simulation:m}=await mn({chainId:n,accountAddress:r,data:a,domain:t,blockaid:i});p?.result_type==="Warning"?s=se[AlertType.WARNING]:p?.result_type==="Malicious"&&(s=se[AlertType.DANGER]),m?.status==="Success"&&(l=Tn(e.method,m.account_summary),c=kn(m.account_summary.assets_diffs));}catch(p){console.error("processJsonRpcSimulation error",p),s=se[AlertType.WARNING];}return {alert:s,balanceChange:c,tokenApprovals:l}},"processJsonRpcSimulation");var En=a(async({rpcMethod:e,dAppUrl:t,params:r,chainId:n,provider:a,populateMissingGas:i,blockaid:s})=>{let c;try{c=await ln({chainId:n,params:r,domain:t,withGasEstimation:i,blockaid:s});}catch(h){return console.error("simulateTransactionBatch error",h),{isSimulationSuccessful:!1,alert:se[AlertType.WARNING],scans:[]}}let l=await Promise.all(c.map(async(h,y)=>{let k=r[y],T=await ir({chainId:n,params:r[y],provider:a,rpcMethod:e,simulationResult:h});return i&&!k.gas&&T.estimatedGasLimit&&(k.gas=`0x${T.estimatedGasLimit.toString(16)}`),{transaction:k,...T}})),p=l.every(h=>h.isSimulationSuccessful),m=Ys(l),u=Js(l),g=Ks(l);return {isSimulationSuccessful:p,alert:m,balanceChange:u,tokenApprovals:g,scans:l.map(h=>(h.tokenApprovals&&(h.tokenApprovals.isEditable=!1),h))}},"simulateTransactionBatch"),Ys=a(e=>{let t={[AlertType.INFO]:0,[AlertType.WARNING]:1,[AlertType.DANGER]:2};return e.reduce((r,{alert:n})=>n&&(!r||t[n.type]>t[r.type])?n:r,void 0)},"getHighestAlert"),Ks=a(e=>{let t=e.reduce((r,{tokenApprovals:n})=>(n&&n.approvals.forEach(a=>{let i=r.approvals.find(s=>a.token.address===s.token.address&&a.spenderAddress===s.spenderAddress);if(!i){r.approvals.push({...a});return}i.value=a.value,i.usdPrice=a.usdPrice;}),r),{approvals:[],isEditable:!1});return Xs(t,e),or(t)?void 0:t},"aggregateTokenApprovals"),Js=a(e=>{let t=e.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(a=>{let i=Rn(r.ins,a);i?i.items.push(...a.items):r.ins.push(a);}),n.outs.forEach(a=>{let i=Rn(r.outs,a);i?i.items.push(...a.items):r.outs.push({...a});})),r),{ins:[],outs:[]});return or(t)?void 0:t},"aggregateBalanceChange"),Rn=a((e,t)=>e.find(r=>ye(r.token)&&ye(t.token)?r.token.symbol===t.token.symbol:!ye(r.token)&&!ye(t.token)?r.token.address===t.token.address:!1),"findTokenDiff"),Xs=a((e,t)=>{for(let r of e.approvals)for(let n of t)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(i=>!ye(i.token)&&!ye(r.token)&&i.token.address===r.token.address)))if(!n.tokenApprovals)e.approvals=e.approvals.filter(i=>i.spenderAddress!==r.spenderAddress&&r.token.address!==i.token.address);else {let i=n.tokenApprovals.approvals.find(s=>s.spenderAddress===r.spenderAddress&&s.token.address===r.token.address);if(!i)continue;r.usdPrice=i.usdPrice,r.value=i.value;}},"clearSpentApprovals");var Zs=a(e=>{if(!e||typeof e!="object")return !1;let t=e;return typeof t.agentId=="string"&&typeof t.agentRegistry=="string"},"isAgentIdentityDeclaration"),Ce=a(e=>{let t=e.context?.agentIdentity;return Zs(t)?t:null},"getAgentIdentityFromContext");var Pn=a(async({request:e,network:t,approvalController:r,blockaid:n})=>{let{params:a}=e,{data:i,success:s,error:c}=en(a);if(!s)return console.error("invalid params",c),{error:rpcErrors.invalidParams($("Transaction params are invalid",c))};let{transactions:l,options:p={}}=i,{skipIntermediateTxs:m=!1}=p,u=await F({chainId:t.chainId,chainName:t.chainName,rpcUrl:t.rpcUrl,multiContractAddress:t.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:t.customRpcHeaders});try{await tn(l,u);}catch(G){return console.error("Unable to calculate nonce",G),{error:rpcErrors.internal($("Unable to calculate nonce",G))}}let g=l.every(G=>Number(G.gas)>0),{alert:h,balanceChange:y,isSimulationSuccessful:k,tokenApprovals:T,scans:A}=await En({rpcMethod:e.method,chainId:t.chainId,params:l,dAppUrl:e.dappInfo.url,provider:u,populateMissingGas:!g,blockaid:n});if(!A.every(({transaction:G})=>Number(G.gas)>0))return console.error("Gas limit is missing in some transactions"),{error:rpcErrors.internal({message:"Gas limit is missing in some transactions"})};let _=Ce(e),S=_?await ne({declaration:_,rpcUrl:t.rpcUrl,chainId:t.chainId,chainName:t.chainName,customRpcHeaders:t.customRpcHeaders}):void 0,O={title:"Do you approve these transactions?",details:[{title:"Transaction Details",items:[Y("Account",l[0].from),yt("Network",{name:t.chainName,logoUri:t.logoUri}),Re("Website",e.dappInfo)]},...S?[Se(S)]:[]],isSimulationSuccessful:k,balanceChange:y,alert:h,tokenApprovals:T,networkFeeSelector:!0},pe=A.map(G=>vt(e,t,G.transaction,G,S)),{cleanup:E,updateTx:I}=sn(e.requestId,pe,O),D=await r.requestBatchApproval({request:e,signingRequests:pe,displayData:O,updateTx:I});if(E(),"error"in D)return {error:D.error};if(D.result.length!==l.length)return {error:rpcErrors.internal({message:`Invalid number of signatures. Expected ${l.length}, got ${D.result.length}`})};let We=[];for(let[G,Ca]of D.result.entries()){let Cr=G===D.result.length-1,jt=await Rt(u,Ca);if(Cr&&Je({explorerUrl:t.explorerUrl??"",provider:u,txHash:jt,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),!Cr&&!m&&!await Je({explorerUrl:t.explorerUrl??"",provider:u,txHash:jt,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}))return {error:rpcErrors.internal({message:`Transaction ${G+1} failed! Batch execution stopped`})};We.push(jt);}return {result:We}},"ethSendTransactionBatch");function In(e,t,r){return new ethers.Contract(e,gn.abi).interface.encodeFunctionData("approve",[t,r])}a(In,"encodeApprovalLimit");var St=new Map,An=a((e,t,r)=>(St.set(e,{signingData:t,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a,approvalLimit:i,gasLimit:s})=>{let c=St.get(e);if(!c)throw rpcErrors.resourceNotFound();let{signingData:l,displayData:p}=c,m={...l,data:{...l.data,gasLimit:s??l.data.gasLimit,maxFeePerGas:n??l.data.maxFeePerGas,maxPriorityFeePerGas:a??l.data.maxPriorityFeePerGas}},u={...p};if(typeof i=="string"){if(!i.startsWith("0x"))throw rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let h=p.tokenApprovals;to(h),ro(l.data.data);let y=h.approvals[0];m.data.data=In(y.token.address,y.spenderAddress,i),u.tokenApprovals={approvals:[{...y,value:i}],isEditable:!0};}let g={signingData:m,displayData:u};return St.set(e,g),g},cleanup:()=>St.delete(e)}),"getTxUpdater");function to(e){if(!e||!e.isEditable||e.approvals.length!==1)throw rpcErrors.invalidInput("Cannot edit the token approval for this request. Please start a new request instead.")}a(to,"ensureTokenApprovalCanBeEdited");function ro(e){if((!e||e==="0x"?null:xe({data:e??void 0}))!=="approve")throw rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}a(ro,"ensureApproveWasCalled");var Sn=a(async({transactionParams:{from:e,to:t,data:r,value:n,accessList:a},provider:i})=>{let s=await i.getTransactionCount(e);return Number(await i.estimateGas({from:e,to:t,nonce:s,data:r,value:n,accessList:a}))},"estimateGasLimit");var ao=z$1.tuple([Ae]),xn=a(e=>ao.safeParse(e),"parseRequestParams");var Nn=a(async({request:e,network:t,approvalController:r,blockaid:n})=>{let{params:a}=e,{data:i,error:s,success:c}=xn(a);if(!c)return console.error("invalid params",s),{error:rpcErrors.invalidParams($("Transaction params are invalid",s))};let[l]=i,p=await F({chainId:t.chainId,chainName:t.chainName,rpcUrl:t.rpcUrl,multiContractAddress:t.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:t.customRpcHeaders});if(!l.gas||Number(l.gas)<0)try{let S=await Sn({transactionParams:{from:l.from,to:l.to,data:l.data,value:l.value,accessList:l.accessList},provider:p});l.gas="0x"+S.toString(16);}catch(S){return {error:rpcErrors.internal($("Unable to calculate gas limit",S))}}if(!l.nonce)try{let S=await bt({from:l.from,provider:p});l.nonce=String(S);}catch(S){return {error:rpcErrors.internal($("Unable to calculate nonce",S))}}let m=Ce(e),u=m?await ne({declaration:m,rpcUrl:t.rpcUrl,chainId:t.chainId,chainName:t.chainName,customRpcHeaders:t.customRpcHeaders}):void 0,g=await hn({rpcMethod:e.method,chainId:t.chainId,params:l,dAppUrl:e.dappInfo.url,provider:p,blockaid:n}),{displayData:h,signingData:y}=vt(e,t,l,g,u),{updateTx:k,cleanup:T}=An(e.requestId,y,h),A=await r.requestApproval({request:e,displayData:h,signingData:y,updateTx:k});if(T(),"error"in A)return {error:A.error};let v,_=e.context?.shouldRetry===!0;try{v=await Rt(p,A,{shouldRetry:_});}catch(S){return {error:rpcErrors.internal($("Unable to get transaction hash",S))}}return Je({explorerUrl:t.explorerUrl??"",provider:p,txHash:v,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),{result:v}},"ethSendTransaction");var cr=a(e=>{let t="";t+=`Domain
|
|
18
|
+
`;for(let r in e.domain)t+=` ${r}: ${fe(String(e.domain[r]))}
|
|
19
19
|
`;t+=`
|
|
20
20
|
Message
|
|
21
21
|
`;for(let r in e.message)if(typeof e.message[r]=="object"&&!Array.isArray(e.message[r])){t+=` ${r}:
|
|
22
22
|
`;for(let n in e.message[r])Array.isArray(e.message[r][n])?(t+=` ${n}:
|
|
23
|
-
`,e.message[r][n].forEach((a,i)=>{t+=` ${i}: ${
|
|
24
|
-
`;})):t+=` ${n}: ${
|
|
23
|
+
`,e.message[r][n].forEach((a,i)=>{t+=` ${i}: ${fe(a)}
|
|
24
|
+
`;})):t+=` ${n}: ${fe(String(e.message[r][n]))}
|
|
25
25
|
`;}else Array.isArray(e.message[r])?(t+=` ${r}:
|
|
26
26
|
`,e.message[r].forEach((n,a)=>{t+=` ${a}:
|
|
27
27
|
`;for(let i in n)Array.isArray(n[i])?(t+=` ${i}:
|
|
28
|
-
`,n[i].forEach((
|
|
29
|
-
`;})):t+=` ${i}: ${
|
|
30
|
-
`;})):t+=` ${r}: ${
|
|
31
|
-
`;return t},"beautifyComplexMessage"),
|
|
32
|
-
`,t+=`${
|
|
28
|
+
`,n[i].forEach((s,c)=>{t+=` ${c}: ${fe(s)}
|
|
29
|
+
`;})):t+=` ${i}: ${fe(String(n[i]))}
|
|
30
|
+
`;})):t+=` ${r}: ${fe(String(e.message[r]))}
|
|
31
|
+
`;return t},"beautifyComplexMessage"),Cn=a(e=>{let t="";return e.forEach(r=>{t+=`${r.name}:
|
|
32
|
+
`,t+=`${fe(String(r.value))}
|
|
33
33
|
|
|
34
|
-
`;}),t},"beautifySimpleMessage"),ue=a(e=>{let t={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 e.split("").map(r=>t[r]||r).join("")},"toUnicodeBold");var Je=z$1.string().describe("message"),$=z$1.string().describe("address");var kn=z$1.object({method:z$1.literal(RpcMethod.ETH_SIGN),params:z$1.tuple([$,Je])});var Rn=z$1.object({name:z$1.string(),type:z$1.string()}),Ne=z$1.object({types:z$1.object({EIP712Domain:z$1.array(Rn)}).catchall(z$1.array(Rn)),primaryType:z$1.string(),domain:z$1.record(z$1.any()),message:z$1.record(z$1.any())}),tr=z$1.array(z$1.object({type:z$1.string(),name:z$1.string(),value:z$1.union([z$1.string(),z$1.number(),z$1.boolean(),z$1.object({}).passthrough(),z$1.array(z$1.unknown()),z$1.null()])})).nonempty(),rr=Ne.or(tr),bn=z$1.union([z$1.string().describe("data string"),Ne]),vn=z$1.union([z$1.string().describe("data string"),rr]),En=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA),params:z$1.tuple([$,vn])}),In=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V1),params:z$1.tuple([$,vn])}),Pn=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V3),params:z$1.tuple([$,bn])}),An=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V4),params:z$1.tuple([$,bn])});var Sn=z$1.object({method:z$1.literal(RpcMethod.PERSONAL_SIGN),params:z$1.union([z$1.tuple([Je,$]),z$1.tuple([Je,$,z$1.string().optional().describe("password")])])});var jo=z$1.discriminatedUnion("method",[Sn,kn,En,In,Pn,An]).transform((e,t)=>{let{method:r,params:n}=e;switch(r){case RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:r};case RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:r};case RpcMethod.SIGN_TYPED_DATA:case RpcMethod.SIGN_TYPED_DATA_V1:{let a=n[0],i=n[1];if(typeof i!="string")return {data:i,address:a,method:r};try{let o=JSON.parse(i);return {data:rr.parse(o),address:a,method:r}}catch{return t.addIssue({code:z$1.ZodIssueCode.custom,message:"param is not a valid json"}),z$1.NEVER}}case RpcMethod.SIGN_TYPED_DATA_V3:case RpcMethod.SIGN_TYPED_DATA_V4:{let a=n[0],i=n[1];if(typeof i!="string")return {data:i,address:a,method:r};try{let o=JSON.parse(i);return {data:Ne.parse(o),address:a,method:r}}catch{return t.addIssue({code:z$1.ZodIssueCode.custom,message:"param is not a valid json"}),z$1.NEVER}}}});function xn(e){return jo.safeParse(e)}a(xn,"parseRequestParams");var Cn=a(e=>tr.safeParse(e).success,"isTypedDataV1"),jm=a(e=>Ne.safeParse(e).success,"isTypedData");var Nn=a(e=>{try{let{EIP712Domain:t,...r}=e.types;return TypedDataEncoder.getPayload(e.domain,r,e.message),{isValid:!0}}catch(t){return {isValid:!1,error:t}}},"isTypedDataValid");var wn=a(async({request:e,network:t,approvalController:r,blockaid:n})=>{let a=xn({method:e.method,params:e.params});if(!a.success)return console.error("invalid params",a.error),{success:!1,error:rpcErrors.invalidParams(O("Params are invalid",a.error))};let{method:i,data:o,address:c}=a.data,l;(i===RpcMethod.SIGN_TYPED_DATA_V3||i===RpcMethod.SIGN_TYPED_DATA_V4)&&(l=Nn(o));let p,m,u;if(l&&!l.isValid&&(u={type:AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements. Please verify message content!",detailedDescription:l.error.toString()}}),i===RpcMethod.ETH_SIGN)p={type:i,account:c,data:o},m=o;else if(i===RpcMethod.PERSONAL_SIGN)p={type:i,account:c,data:o},m=toUtf8String(o);else if(i===RpcMethod.SIGN_TYPED_DATA||i===RpcMethod.SIGN_TYPED_DATA_V1)p={type:i,account:c,data:o},m=Cn(o)?hn(o):Qt(o);else if(i===RpcMethod.SIGN_TYPED_DATA_V3||i===RpcMethod.SIGN_TYPED_DATA_V4){p={type:i,account:c,data:o};let{types:I,primaryType:k,...w}=o;m=Qt(w);}if(!p||!m)return {success:!1,error:rpcErrors.internal("Unable to generate signing data")};let f=await cn({request:e,accountAddress:c,chainId:t.chainId,data:{method:i,params:e.params},dAppUrl:e.dappInfo.url,blockaid:n}),y=Ce(e),h=y?await re({declaration:y,rpcUrl:t.rpcUrl,chainId:t.chainId,chainName:t.chainName,customRpcHeaders:t.customRpcHeaders}):void 0,R={title:"Sign Message",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} is requesting to sign the following message`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},account:c,details:[{title:"Message",items:[H("Message",m,"vertical")]},...h?[Pe(h)]:[]],alert:f?.alert??u,balanceChange:f?.balanceChange,tokenApprovals:f?.tokenApprovals},g=await r.requestApproval({request:e,displayData:R,signingData:p});return "error"in g?{error:g.error}:"signedData"in g?{result:g.signedData}:{error:rpcErrors.internal("No signed data returned")}},"ethSign");var _n=a(async(e,t)=>{try{return {result:await(await F({chainId:t.chainId,chainName:t.chainName,rpcUrl:t.rpcUrl,pollingInterval:1e3,customRpcHeaders:t.customRpcHeaders})).send(e.method,e.params)}}catch(r){let n=r.info?.error??r.error;return n&&typeof n.code=="number"?{error:n}:{error:rpcErrors.internal(r.message)}}},"forwardToRpcNode");var Bn=a(async({accountIndex:e,xpub:t,walletType:r})=>{switch(r){case WalletType.Mnemonic:case WalletType.Ledger:case WalletType.Keystone:return {[NetworkVMType.EVM]:getAddressFromXPub(t,e)};case WalletType.LedgerLive:case WalletType.Seedless:{let n=Buffer.from(t,"hex");return {[NetworkVMType.EVM]:getEvmAddressFromPubKey(n)}}default:throw rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}},"getAddress");function De(e,t){return e.then(r=>({id:t,status:"fulfilled",value:r})).catch(r=>({id:t,status:"rejected",reason:r}))}a(De,"addIdToPromise");async function Be(e){return await Promise.allSettled(e).then(t=>t.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},{}))}a(Be,"settleAllIdPromises");var Qo={"ERC-20":TokenType.ERC20,"ERC-721":TokenType.ERC721,"ERC-1155":TokenType.ERC1155,"NON-ERC":TokenType.NONERC,SPL:TokenType.SPL},es=z$1.string().transform((e,t)=>{let r=Qo[e];return r||(t.addIssue({code:z$1.ZodIssueCode.custom,message:`Unknown contractType: ${e}`}),z$1.NEVER)}),ts=z$1.object({address:z$1.string(),chainId:z$1.number(),contractType:es,decimals:z$1.number(),internalId:z$1.string().nullish(),isNative:z$1.boolean(),logoUri:z$1.string().nullish(),name:z$1.string(),symbol:z$1.string(),caip2Id:z$1.string().nullish(),color:z$1.string().nullish()}),rs=z$1.array(z$1.unknown()).transform(e=>e.flatMap(t=>{let r=ts.safeParse(t);return r.success?[r.data]:[]}));async function Pt({chainId:e,proxyApiUrl:t}){return (await M([`${t}/tokens?evmChainId=${e}`],rs)).map(n=>({...n,type:n.contractType}))}a(Pt,"getTokens");var B,Fe,fe,et,Ue,ar=class ar{constructor({network:t,storage:r,proxyApiUrl:n,customTokens:a,fetch:i}){d(this,B,void 0);d(this,Fe,void 0);d(this,fe,void 0);d(this,et,void 0);d(this,Ue,void 0);e(this,B,t),e(this,Fe,r),e(this,fe,n),e(this,et,a),e(this,Ue,i);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:t,address:r,currency:n}){let a=await F({chainId:t,chainName:c(this,B).chainName,rpcUrl:c(this,B).rpcUrl,multiContractAddress:c(this,B).utilityAddresses?.multicall,customRpcHeaders:c(this,B).customRpcHeaders}),i=c(this,B).pricingProviders?.coingecko.nativeTokenId,o=c(this,B).networkToken,c$1=new te({storage:c(this,Fe),proxyApiUrl:c(this,fe),fetch:c(this,Ue)}),l=i?await c$1.getSimplePrice({coinIds:[i],currencies:[n]}):{},p=l?.[i??""]?.[n]?.price??void 0,m=l?.[i??""]?.[n]?.marketCap??void 0,u=l?.[i??""]?.[n]?.vol24??void 0,f=l?.[i??""]?.[n]?.change24??void 0,y=await a.getBalance(r),h=new TokenUnit(y,o.decimals,o.symbol),R=p!==void 0?h.mul(p):void 0;return {...o,coingeckoId:i??"",type:TokenType.NATIVE,balance:y,balanceDisplayValue:h.toDisplay(),balanceInCurrency:R?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:R?.toDisplay({fixedDp:2}),priceInCurrency:p,marketCap:m,vol24:u,change24:f}}async listErc20Balances({chainId:t,address:r,currency:n,customTokensOnly:a$1=!1}){let i=await F({chainId:t,chainName:c(this,B).chainName,rpcUrl:c(this,B).rpcUrl,multiContractAddress:c(this,B).utilityAddresses?.multicall,customRpcHeaders:c(this,B).customRpcHeaders}),o=c(this,B).pricingProviders?.coingecko.assetPlatformId,c$1=c(this,B).pricingProviders?.coingecko.nativeTokenId,l=a$1?[]:await Pt({chainId:Number(t),proxyApiUrl:c(this,fe)}),p=l.map(k=>k.address),m=[...l,...c(this,et)].filter(Tt),u=a(async k=>{let V=await new ethers.Contract(k.address,en.abi,i).balanceOf?.(r)||0n;return {...k,balance:V}},"getTokenWithBalance"),f=m.map(k=>De(u(k),k.address)),y=await Be(f),h=new te({storage:c(this,Fe),proxyApiUrl:c(this,fe),fetch:c(this,Ue)}),R=o&&await h.getPricesByAddresses(p,o,n)||{},g=Object.keys(y),I={};for(let k=0;k<g.length;k++){let w=g[k];if(w===void 0)continue;let P=y[w];if(P===void 0||"error"in P){I[w]={error:`rpcService:getTokenWithBalance failed: ${P?.error??"unknown error"}`};continue}let V=R?.[c$1??""]?.[n]?.price??void 0,ie=R?.[c$1??""]?.[n]?.marketCap??void 0,b=R?.[c$1??""]?.[n]?.vol24??void 0,E=R?.[c$1??""]?.[n]?.change24??void 0,_=new TokenUnit(P.balance,P.decimals,P.symbol),Oe=V!==void 0?_.mul(V):void 0;I[P.address.toLowerCase()]={...P,type:TokenType.ERC20,balance:P.balance,balanceDisplayValue:_.toDisplay(),balanceInCurrency:Oe?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:Oe?.toDisplay({fixedDp:2}),priceInCurrency:V,marketCap:ie,change24:E,vol24:b,reputation:null};}return I}async listNftBalances(){return {}}};B=new WeakMap,Fe=new WeakMap,fe=new WeakMap,et=new WeakMap,Ue=new WeakMap,a(ar,"RpcService");var At=ar;async function Mn(e,t){let r=e.map(async(i,o)=>({index:o,result:await t(i)})),a=(await Promise.allSettled(r)).filter(i=>i.status==="fulfilled").map(i=>i).find(i=>i.value.result);return a?e[a.value.index]:void 0}a(Mn,"findAsync");var Ln=a(async({addresses:e,currency:t,network:r,proxyApiUrl:n,tokenTypes:a=[TokenType.NATIVE,TokenType.ERC20,TokenType.ERC721,TokenType.ERC1155],customTokens:i=[],customTokensOnly:o=!1,storage:c,balanceServices:l=[],tokenService:p,fetch:m})=>{let u=r.chainId,f=new At({network:r,storage:c,proxyApiUrl:n,customTokens:i,fetch:m}),y=o?[f]:[...l,f],h=o?[TokenType.ERC20]:a,R=await Mn(y,I=>I.isNetworkSupported(r.chainId)),g={};if(R){let I=[],k=[],w=[];e.forEach(b=>{h.includes(TokenType.NATIVE)&&I.push(De(R.getNativeBalance({address:b,currency:t.toUpperCase(),chainId:u}).then(async E=>{if(E.symbol==="AVAX"){let _=await p.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:t.toUpperCase()});return {...E,priceInCurrency:_.priceInCurrency,marketCap:_.marketCap,vol24:_.vol24,change24:_.change24}}return E}),b)),h.includes(TokenType.ERC20)&&k.push(De(R.listErc20Balances({customTokens:i.filter(Tt),customTokensOnly:o,currency:t.toUpperCase(),chainId:u,address:b,pageSize:100}),b)),(h.includes(TokenType.ERC721)||h.includes(TokenType.ERC1155))&&w.push(De(R.listNftBalances({chainId:u,address:b}),b));});let P=await Be(I),V=await Be(k),ie=await Be(w);Object.keys(P).forEach(b=>{let E=P[b];if(!E||"error"in E){g[b]={error:`getNativeBalance failed: ${E?.error??"unknown error"}`};return}let _=E.symbol;g[b]={[_]:E};}),Object.keys(V).forEach(b=>{let E=V[b];!E||"error"in E&&typeof E.error!="string"?g[b]={...g[b],error:"listErc20Balances failed: unknown error"}:"error"in E&&typeof E.error=="string"?g[b]={...g[b],error:`listErc20Balances failed: ${E.error}`}:g[b]={...g[b],...E};}),Object.keys(ie).forEach(b=>{let E=ie[b];!E||"error"in E&&typeof E.error!="string"?g[b]={...g[b],error:"listNftBalances failed: unknown error"}:"error"in E&&typeof E.error=="string"?g[b]={...g[b],error:`listNftBalances failed: ${E.error}`}:g[b]={...g[b],...E};});}else e.forEach(I=>{g[I]={error:"unsupported network"};});return g},"getBalances");var sr={LOW:1n,MEDIUM:4n,HIGH:6n},ir=500000000n,os=a(e=>e===ChainId.AVALANCHE_TESTNET_ID||e===ChainId.AVALANCHE_MAINNET_ID,"isCChain"),On=137,Hn=80002,ss=a(e=>e===On||e===Hn,"isPolygon"),is={[On]:"https://gasstation.polygon.technology/v2",[Hn]:"https://gasstation.polygon.technology/amoy"};function ye(e){return BigInt(Math.round(e*1e9))}a(ye,"gweiToWei");async function cs(e){let t=is[e];if(!t)throw new Error(`No gas station URL for Polygon chain ${e}`);let r=await fetch(t);if(!r.ok)throw new Error(`Polygon Gas Station returned ${r.status}`);let n=await r.json();return {baseFee:ye(n.estimatedBaseFee),low:{maxFeePerGas:ye(n.safeLow.maxFee),maxPriorityFeePerGas:ye(n.safeLow.maxPriorityFee)},medium:{maxFeePerGas:ye(n.standard.maxFee),maxPriorityFeePerGas:ye(n.standard.maxPriorityFee)},high:{maxFeePerGas:ye(n.fast.maxFee),maxPriorityFeePerGas:ye(n.fast.maxPriorityFee)},isFixedFee:!1,displayDecimals:9}}a(cs,"getPolygonGasStationFees");async function $n({chainId:e,chainName:t,rpcUrl:r,multiContractAddress:n,caipId:a,proxyApiUrl:i,customRpcHeaders:o}){let c=await F({chainId:e,chainName:t,rpcUrl:r,multiContractAddress:n,customRpcHeaders:o});if(!i)throw rpcErrors.internal("Proxy API URL is needed");if(os(e))try{let k=await ls(c);return {...k,baseFee:k.medium.maxFeePerGas,displayDecimals:9,isFixedFee:!1}}catch{console.error("eth_suggestPriceOptions call failed, falling back to legacy fee fetching");}if(ss(e))try{return await cs(e)}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.internal("There is no block");let p=l.baseFeePerGas;if(!p)throw rpcErrors.internal("Pre-EIP-1559 networks are not supported");let m=await ps(i,a),u=new TokenUnit(m,0,""),f=new TokenUnit(p,0,""),y=BigInt("1000000000"),h=f.mul(u).add(y).toSubUnit(),R=ir*sr.LOW,g=ir*sr.MEDIUM,I=ir*sr.HIGH;return {baseFee:h,low:{maxFeePerGas:h+R,maxPriorityFeePerGas:R},medium:{maxFeePerGas:h+g,maxPriorityFeePerGas:g},high:{maxFeePerGas:h+I,maxPriorityFeePerGas:I},isFixedFee:!1,displayDecimals:9}}a($n,"getNetworkFee");async function ls(e){let t=await e.send("eth_suggestPriceOptions",[]);return {low:{maxFeePerGas:BigInt(t.slow.maxFeePerGas),maxPriorityFeePerGas:BigInt(t.slow.maxPriorityFeePerGas)},medium:{maxFeePerGas:BigInt(t.normal.maxFeePerGas),maxPriorityFeePerGas:BigInt(t.normal.maxPriorityFeePerGas)},high:{maxFeePerGas:BigInt(t.fast.maxFeePerGas),maxPriorityFeePerGas:BigInt(t.fast.maxPriorityFeePerGas)}}}a(ls,"suggestPriceOptions");async function ps(e,t){if(!t)return 1.5;try{let n=await fetch(`${e}/gas/multiplier`);if(!n.ok)throw new Error(n.statusText);let a=await n.json();return a[t]??a.default}catch{return 1.5}}a(ps,"getGasMultiplier");function jn(e){return e===TokenType.ERC721||e===TokenType.ERC1155}a(jn,"isNftTokenType");function cr(e){let{txType:t,isSender:r,walletAddress:n,tokens:a}=e;if(a.length===0)return t;let i=n.toLowerCase(),o=a.some(m=>jn(m.type)&&m.to?.address?.toLowerCase()===i),c=a.some(m=>jn(m.type)&&m.from?.address?.toLowerCase()===i),l=t===TransactionType.RECEIVE||t===TransactionType.UNKNOWN||t===TransactionType.TRANSFER||t===TransactionType.AIRDROP,p=t===TransactionType.SEND||t===TransactionType.UNKNOWN||t===TransactionType.TRANSFER||t===TransactionType.AIRDROP;return !r&&o&&l?TransactionType.NFT_RECEIVE:r&&c&&p?TransactionType.NFT_SEND:t}a(cr,"convertTransactionType");var qn=a(({nativeTransaction:e,erc20Transfers:t,erc721Transfers:r,erc1155Transfers:n},a,i)=>{let o=!t&&!r&&!n,c=ds(e.method?.methodName),l=a.toLowerCase(),p=c.toLowerCase().includes("swap"),m=o&&e.from.address.toLowerCase()===l,u=o&&e.to.address.toLowerCase()===l,f=c==="Market Buy Orders With Eth"||c==="Buy NFT",y=c==="Approve",h=c.toLowerCase().includes("transfer"),R=c.toLowerCase().includes("airdrop"),g=c.toLowerCase().includes("unwrap"),I=c==="Fill Order",k;p?k=TransactionType.SWAP:m?k=TransactionType.SEND:u?k=TransactionType.RECEIVE:f?k=TransactionType.NFT_BUY:y?k=TransactionType.APPROVE:h?k=TransactionType.TRANSFER:R?k=TransactionType.AIRDROP:g?k=TransactionType.UNWRAP:I?k=TransactionType.FILL_ORDER:k=TransactionType.UNKNOWN;let w=e.from.address.toLowerCase()===l;return cr({txType:k,isSender:w,walletAddress:a,tokens:i})},"getTxType"),ds=a((e="")=>e.includes("(")?ms(e.split("(",1)[0]):e,"parseRawMethod");function zn({tx:e,networkToken:t,explorerUrl:r,chainId:n,address:a}){let i=e.from_address.toLowerCase()===a.toLowerCase(),o=new Date(e.block_timestamp).getTime(),c=ys(e.category),l=!us.has(e.category),p=Ts(e,t,a),m=Se(r,e.hash);return c=cr({txType:c,isSender:i,walletAddress:a,tokens:p}),{isContractCall:l,isIncoming:!i,isOutgoing:i,isSender:i,timestamp:o,hash:e.hash,from:e.from_address,to:e.to_address??"",tokens:p,gasPrice:e.gas_price,gasUsed:e.receipt_gas_used,chainId:n.toString(),txType:c,method:e.method_label??void 0,explorerLink:m}}a(zn,"convertMoralisTransaction");var us=new Set(["send","receive","token send","token receive"]),fs={send:TransactionType.SEND,receive:TransactionType.RECEIVE,"token send":TransactionType.SEND,"token receive":TransactionType.RECEIVE,"nft send":TransactionType.NFT_SEND,"nft receive":TransactionType.NFT_RECEIVE,"token swap":TransactionType.SWAP,"nft purchase":TransactionType.NFT_BUY,"nft sale":TransactionType.NFT_SEND,airdrop:TransactionType.AIRDROP,mint:TransactionType.NFT_BUY,burn:TransactionType.UNKNOWN,deposit:TransactionType.UNKNOWN,withdraw:TransactionType.UNKNOWN,borrow:TransactionType.UNKNOWN,"contract interaction":TransactionType.UNKNOWN};function ys(e){return fs[e]??TransactionType.UNKNOWN}a(ys,"getMoralisTransactionType");function oe(e){if(!(e==null||e===""))return {address:e}}a(oe,"getTransferAddress");function St(e){return e?.trim()??""}a(St,"trimOrEmpty");function gs(e){let t=e.trim().toLowerCase();return !t.startsWith("0x")||t.length<12?e.trim():`${t.slice(0,6)}\u2026${t.slice(-4)}`}a(gs,"shortenHexAddress");function hs(e){let t=St(e.token_symbol);if(t!=="")return t;let r=St(e.token_name);return r!==""?r:gs(e.address)}a(hs,"getErc20DisplaySymbol");function Ts(e,t,r){let n=[],a=e.native_transfers.map(o=>ks(o,t)),i=e.erc20_transfers.map(o=>Rs(o));n.push(...a,...i);for(let o of e.nft_transfers)n.push(bs(o));return n.length===0&&n.push(vs(e,t,r)),n}a(Ts,"buildTokens");function ks(e,t){let r=St(e.token_symbol)||t.symbol,n=new TokenUnit(e.value,t.decimals,r);return {decimal:t.decimals.toString(),name:t.name,symbol:r,amount:n.toDisplay(),from:oe(e.from_address),to:oe(e.to_address),type:TokenType.NATIVE}}a(ks,"buildNativeToken");function Rs(e){let t=Number(e.token_decimals),r=hs(e),n=new TokenUnit(e.value,t,r),a=St(e.token_name)||r;return {decimal:e.token_decimals,name:a,symbol:r,amount:n.toDisplay(),from:oe(e.from_address),to:oe(e.to_address),type:TokenType.ERC20,address:e.address}}a(Rs,"buildErc20Token");function bs(e){let t=e.contract_type==="ERC1155"?TokenType.ERC1155:TokenType.ERC721;return {name:"",symbol:"",amount:e.amount,collectableTokenId:e.token_id,from:oe(e.from_address),to:oe(e.to_address),type:t,address:e.token_address}}a(bs,"buildNftToken");function vs(e,t,r){let n=new TokenUnit(e.value,t.decimals,t.symbol),i=e.from_address.toLowerCase()===r.toLowerCase()?`-${n.toDisplay()}`:n.toDisplay();return {decimal:t.decimals.toString(),name:t.name,symbol:t.symbol,amount:i,from:oe(e.from_address),to:oe(e.to_address),type:TokenType.NATIVE}}a(vs,"buildFallbackNativeToken");var Es="https://proxy-api.avax.network/proxy/moralis-evm";async function Yn({chainId:e,networkToken:t,explorerUrl:r,address:n,nextPageToken:a,offset:i}){try{let o=`0x${e.toString(16)}`,c=new URLSearchParams({chain:o,limit:(i??25).toString()});a&&c.set("cursor",a);let l=`${Es}/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=>zn({tx:f,networkToken:t,explorerUrl:r,chainId:e,address:n})),nextPageToken:m.cursor??""}:{transactions:[],nextPageToken:""}}catch{return {transactions:[],nextPageToken:""}}}a(Yn,"getTransactionsFromMoralis");var Is=new Set([1,4,5,11155111,8453,42161,10]);function Kn(e){return Is.has(e)}a(Kn,"isMoralisSupportedChain");var Jn=a((e,{nativeTransaction:t,erc20Transfers:r,erc721Transfers:n},a)=>{let i=e===TransactionType.TRANSFER,o=e===TransactionType.SEND||e===TransactionType.NFT_SEND,c=e===TransactionType.RECEIVE||e===TransactionType.NFT_RECEIVE,l=t?.from?.address,p=t?.to?.address;i&&r&&r[0]&&(l=r[0].from.address,p=r[0].to.address),i&&n&&n[0]&&(l=n[0].from.address,p=n[0].to.address);let m=o||i&&l.toLowerCase()===a.toLowerCase(),u=c||i&&p.toLowerCase()===a.toLowerCase();return {isOutgoing:m,isIncoming:u,isSender:l===a,from:l,to:p}},"getSenderInfo");async function Xn(e){try{return e.then(t=>[t,null]).catch(t=>[null,t])}catch(t){return Promise.resolve([null,t])}}a(Xn,"resolve");var As="https://ipfs.io";function Me(e,t=As){if(!e)return "";try{return ipfsResolver(e,t)}catch{return e}}a(Me,"ipfsResolverWithFallback");async function Ss(e,t=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),t),fetch(e,{signal:r.signal})}a(Ss,"fetchWithTimeout");async function Zn(e){let t={};if(e)if(e.startsWith("data:application/json;base64,")){let r=e.substring(29);try{let n=Buffer.from(r,"base64").toString();t=JSON.parse(n);}catch{t={};}}else t=await Ss(Me(e)).then(r=>r.json()).catch(()=>({}));else return {};return t}a(Zn,"getNftMetadata");var xs="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Qn(e,t="256"){let r=Me(e);return `${xs}/width=${t},fit/${r}`}a(Qn,"getSmallImageForNFT");var ra=a(async({nativeTransaction:e,erc20Transfers:t,erc721Transfers:r,erc1155Transfers:n},a)=>{let i=[];if(e.value!=="0"){let o=a.decimals,l=new TokenUnit(e.value,a.decimals,a.symbol).toDisplay();i.push({decimal:o.toString(),name:a.name,symbol:a.symbol,amount:l,from:e.from,to:e.to,type:TokenType.NATIVE});}return t?.forEach(o=>{let c=o.erc20Token.decimals,p=new TokenUnit(o.value,c,o.erc20Token.symbol).toDisplay();i.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:TokenType.ERC20});}),r&&await Promise.allSettled(r.map(async o=>{let c=o.erc721Token,l=await ta(c.tokenUri,c.metadata.imageUri);i.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:TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async o=>{let c=o.erc1155Token,l=await ta(c.tokenUri,c.metadata.imageUri);i.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:TokenType.ERC1155});})),i},"getTokens"),ta=a(async(e,t)=>{if(t)return t.startsWith("ipfs://")?Me(t):t;{let[r,n]=await Xn(Zn(e));return n?"":r.image?Qn(r.image):""}},"getImageUri");var na=a(async({transactions:e,explorerUrl:t,networkToken:r,chainId:n,address:a})=>{let i=await ra(e,r),o=qn(e,a,i),{isOutgoing:c,isIncoming:l,isSender:p,from:m,to:u}=Jn(o,e,a),{blockTimestamp:f,txHash:y,gasPrice:h,gasUsed:R}=e.nativeTransaction,g=Se(t,y);return {isContractCall:!$r.includes(o),isIncoming:l,isOutgoing:c,isSender:p,timestamp:f*1e3,hash:y,from:m,to:u,tokens:i,gasPrice:h,gasUsed:R,chainId:n.toString(),txType:o,explorerLink:g}},"convertTransaction");var aa=a(async({chainId:e,explorerUrl:t,networkToken:r,address:n,nextPageToken:a,offset:i,glacierService:o})=>{try{let c=await o.listTransactions({chainId:e.toString(),address:n,pageToken:a,pageSize:i});return {transactions:(await Promise.all(c.transactions.filter(m=>m.nativeTransaction.txStatus==="1").map(m=>na({transactions:m,explorerUrl:t,networkToken:r,chainId:e,address:n}).then(u=>u)))).filter(m=>m.tokens.find(u=>Number(u.amount)!==0)),nextPageToken:c.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}},"getTransactionsFromGlacier");var oa=a(async({chainId:e,networkToken:t,explorerUrl:r,address:n,nextPageToken:a,offset:i,glacierService:o})=>Kn(e)?Yn({chainId:e,networkToken:t,explorerUrl:r,address:n,nextPageToken:a,offset:i}):o.isHealthy()?aa({networkToken:t,explorerUrl:r,chainId:e,address:n,nextPageToken:a,offset:i,glacierService:o}):{transactions:[],nextPageToken:""},"getTransactionHistory");var Ns="https://ipfs.io";function sa(e,t=Ns){if(!e)return "";try{return ipfsResolver(e,t)}catch{return e}}a(sa,"ipfsResolverWithFallback");var ws="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Ct(e,t="256"){let r=sa(e);return `${ws}/width=${t},fit/${r}`}a(Ct,"getSmallImageForNFT");var Le,K,pr=class pr{constructor(t,r){this.baseUrl=t;d(this,Le,[]);d(this,K,void 0);e(this,K,r??fetch);}async isNetworkSupported(t){return (await this.getChainList()).some(n=>n.community_id===t)}async getChainInfo({chainId:t}){return (await this.getChainList()).find(n=>n.id===t)}async getTokenBalance({chainId:t,address:r,tokenId:n}){let a=await c(this,K).call(this,`${this.baseUrl}/v1/user/token?id=${r}&chain_id=${t}&token_id=${n}`);if(a.ok)return await a.json();throw new Error(`${a.status}:${a.statusText}`)}async getTokensBalanceOnChain({chainId:t,address:r}){let n=await c(this,K).call(this,`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${t}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getTokenList({chainId:t,address:r}){let n=await(c(this,K)??globalThis.fetch)(`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${t}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getChainList(){if(c(this,Le).length===0){let t=await c(this,K).call(this,`${this.baseUrl}/v1/chain/list`);if(t.ok)e(this,Le,await t.json());else throw new Error(`${t.status}:${t.statusText}`)}return c(this,Le)}async getNftList({address:t,chainId:r}){return M([`${this.baseUrl}/v1/user/nft_list?id=${t}&chain_id=${r}`],Fs,c(this,K))}};Le=new WeakMap,K=new WeakMap,a(pr,"DeBank");var Nt=pr,Ds=z$1.object({id:z$1.union([z$1.custom(isHexString),z$1.string()]),chain:z$1.string(),name:z$1.string()}),Bs=Ds.merge(z$1.object({contract_id:z$1.string(),description:z$1.string().nullable(),content_type:z$1.string().nullable(),content:z$1.string(),thumbnail_url:z$1.string(),total_supply:z$1.number(),detail_url:z$1.string(),collection_id:z$1.string(),is_core:z$1.boolean(),inner_id:z$1.string(),collection_name:z$1.string(),contract_name:z$1.string(),amount:z$1.number(),usd_price:z$1.number().optional(),is_erc721:z$1.boolean().optional(),is_erc1155:z$1.boolean().optional()})),Fs=z$1.array(Bs);var W,Ge,_t,Bt,ca,dr=class dr{constructor({proxyApiUrl:t,fetch:r}){d(this,Ge);d(this,Bt);d(this,W,void 0);e(this,W,new Nt(`${t}/proxy/debank`,r));}async isNetworkSupported(t){return c(this,W).isNetworkSupported(t)}async getNativeBalance({chainId:t,address:r,currency:n}){if(!isHexString(r))throw rpcErrors.invalidParams("getNativeBalance: not valid address: "+r);let{chainInfo:a,chainIdString:i}=await f(this,Ge,_t).call(this,t),o=a.native_token_id,c$1=await c(this,W).getTokenBalance({address:r,chainId:i,tokenId:o}),l=new TokenUnit(c$1.raw_amount,c$1.decimals,c$1.symbol),p=l.toDisplay(),u=(await it()).usd[n.toLowerCase()],f$1=u?u*c$1.price:void 0,y=f$1?l.mul(f$1).toDisplay({fixedDp:2}):void 0,h=f$1?l.mul(f$1).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {name:c$1.name,symbol:c$1.symbol,decimals:c$1.decimals,type:TokenType.NATIVE,logoUri:c$1.logo_url,balance:l.toSubUnit(),balanceDisplayValue:p,balanceInCurrency:h,balanceCurrencyDisplayValue:y,priceInCurrency:f$1}}async listErc20Balances({chainId:t,address:r,currency:n}){if(!isHexString(r))throw rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:a,chainIdString:i}=await f(this,Ge,_t).call(this,t),o=await c(this,W).getTokensBalanceOnChain({chainId:i,address:r}),c$1=await it(),l={};for(let p of o){if(p.id===a.native_token_id||p.is_core===!1)continue;let m=new TokenUnit(p.raw_amount,p.decimals,p.symbol),u=m.toDisplay(),f=c$1.usd[n.toLowerCase()],y=f?f*p.price:void 0,h=y?m.mul(y).toDisplay({fixedDp:2}):void 0,R=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:R,priceInCurrency:y,type:TokenType.ERC20,reputation:null};}return l}async listNftBalances({chainId:t,address:r}){if(!isHexString(r))throw rpcErrors.invalidParams("listNftBalances: not valid address");let{chainIdString:n}=await f(this,Ge,_t).call(this,t),a=await c(this,W).getNftList({chainId:n,address:r});return f(this,Bt,ca).call(this,a,t)}};W=new WeakMap,Ge=new WeakSet,_t=a(async function(t){let n=(await c(this,W).getChainList()).find(i=>i.community_id===t)?.id;if(!n)throw rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+t);let a=await c(this,W).getChainInfo({chainId:n});if(!a)throw rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+t);return {chainInfo:a,chainIdString:n}},"#getChainInfo"),Bt=new WeakSet,ca=a(function(t,r){return t.reduce((n,a)=>({...n,[`${a.contract_id}-${a.id}`]:{chainId:r,address:a.contract_id,description:a.description??"",logoUri:a.thumbnail_url,logoSmall:Ct(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?TokenType.ERC721:TokenType.ERC1155,metadata:{indexStatus:NftTokenMetadataStatus.UNINDEXED,description:a.description??"",properties:""}}}),{})},"#mapNftList"),a(dr,"DeBankService");var Dt=dr;var fr=class fr extends Error{constructor(){super(...arguments);b(this,"message","Glacier is unhealthy. Try again later.");}};a(fr,"GlacierUnhealthyError");var J=fr,Vs=[ChainId.ETHEREUM_HOMESTEAD],yr=class yr{constructor({glacierApiUrl:t,headers:r}){b(this,"glacierSdk");b(this,"isGlacierHealthy",!0);b(this,"supportedChainIds",[]);b(this,"isHealthy",a(()=>this.isGlacierHealthy,"isHealthy"));this.glacierSdk=new Glacier({BASE:t,HEADERS:r},We),this.getSupportedChainIds().catch(()=>{});}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async isNetworkSupported(t){return (await this.getSupportedChainIds()).some(n=>n===t.toString())}async getSupportedChainIds(){if(this.supportedChainIds.length)return this.supportedChainIds;try{let t=await this.glacierSdk.evmChains.supportedChains({});return this.supportedChainIds=t.chains.map(r=>r.chainId).filter(r=>!Vs.includes(Number(r))),this.supportedChainIds}catch{return []}}async reindexNft({address:t,chainId:r,tokenId:n}){try{await this.glacierSdk.nfTs.reindexNft({address:t,chainId:r,tokenId:n});}catch(a){throw a instanceof J&&this.setGlacierToUnhealthy(),a}}async getTokenDetails({address:t,chainId:r,tokenId:n}){try{return this.glacierSdk.nfTs.getTokenDetails({address:t,chainId:r,tokenId:n})}catch(a){throw a instanceof J&&this.setGlacierToUnhealthy(),a}}async getNativeBalance({chainId:t,address:r,currency:n,coingeckoId:a}){try{let o=(await this.glacierSdk.evmBalances.getNativeBalance({chainId:t.toString(),address:r,currency:n.toLocaleLowerCase()})).nativeTokenBalance,c=new 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: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(i){throw i instanceof J&&this.setGlacierToUnhealthy(),i}}async listErc721Balances({chainId:t,address:r}){let n,a=[];do try{let i=await this.glacierSdk.evmBalances.listErc721Balances({chainId:t,address:r,pageSize:100,pageToken:n});a.push(...i.erc721TokenBalances),n=i.nextPageToken;}catch(i){throw i instanceof J&&this.setGlacierToUnhealthy(),i}while(n);return a}async listErc1155Balances({chainId:t,address:r}){let n,a=[];do try{let i=await this.glacierSdk.evmBalances.listErc1155Balances({chainId:t,address:r,pageSize:100,pageToken:n});a.push(...i.erc1155TokenBalances),n=i.nextPageToken;}catch(i){throw i instanceof J&&this.setGlacierToUnhealthy(),i}while(n);return a}async listNftBalances({chainId:t,address:r}){let a=(await Promise.allSettled([this.listErc721Balances({chainId:t.toString(),address:r}),this.listErc1155Balances({chainId:t.toString(),address:r})])).filter(i=>i.status==="fulfilled").flatMap(i=>i.value.filter(o=>o.ercType===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:Ct(o.metadata.imageUri??""),name:o.metadata.name??"",symbol:o.metadata.symbol??"",tokenId:o.tokenId,tokenUri:o.tokenUri,chainId:t,collectionName:"Unknown",balance:o.ercType===Erc1155Token.ercType.ERC_1155?BigInt(o.balance):1,balanceDisplayValue:o.ercType===Erc1155Token.ercType.ERC_1155?o.balance:"1",type:o.ercType===Erc721Token.ercType.ERC_721?TokenType.ERC721:TokenType.ERC1155,metadata:{indexStatus:o.metadata.indexStatus,description:o.metadata.description,lastUpdatedTimestamp:o.metadata.metadataLastUpdatedTimestamp,properties:o.ercType===Erc721Token.ercType.ERC_721?o.metadata.attributes:o.metadata.properties}}]));return Object.fromEntries(a)}async listErc20Balances({chainId:t,address:r,currency:n,customTokens:a}){try{let i=[],o;do{let c=await this.glacierSdk.evmBalances.listErc20Balances({chainId:t.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:o});i.push(...Hs(c.erc20TokenBalances,Number(t))),o=c.nextPageToken;}while(o);return [...Os(a),...i].reduce((c,l)=>({...c,[l.address.toLowerCase()]:l}),{})}catch(i){throw i instanceof J&&this.setGlacierToUnhealthy(),i}}async listTransactions({chainId:t,address:r,pageToken:n,pageSize:a}){try{return this.glacierSdk.evmTransactions.listTransactionsV2({chainId:t,address:r,pageToken:n,pageSize:a,filterSpamTokens:!0})}catch(i){throw i instanceof J&&this.setGlacierToUnhealthy(),i}}};a(yr,"EvmGlacierService");var Ft=yr,Os=a(e=>e.map(t=>({...t,decimals:t.decimals??18,type:TokenType.ERC20,balance:0n,balanceInCurrency:0,balanceDisplayValue:"0",balanceCurrencyDisplayValue:"0",priceInCurrency:0,marketCap:0,change24:0,vol24:0,reputation:null})),"convertErc20TokenToTokenWithBalance"),Hs=a((e,t)=>e.map(r=>{let n=new TokenUnit(r.balance,r.decimals,r.symbol),a=n.toDisplay(),i=r.balanceValue?.value.toString(),o=r.price?.value,c=o!==void 0?n.mul(o).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {chainId:t,address:r.address,name:r.name,symbol:r.symbol,decimals:r.decimals,logoUri:r.logoUri,balance:n.toSubUnit(),balanceCurrencyDisplayValue:i,balanceDisplayValue:a,balanceInCurrency:c,priceInCurrency:o,reputation:r.tokenReputation,type:TokenType.ERC20}}),"convertErc20TokenWithBalanceToTokenWithBalance");var Ve,ot,se,j,ge,he,gr=class gr{constructor({approvalController:t,environment:r,appInfo:n,runtime:a}){d(this,Ve,void 0);d(this,ot,void 0);d(this,se,void 0);d(this,j,void 0);d(this,ge,void 0);d(this,he,void 0);let{glacierApiUrl:i,proxyApiUrl:o}=xr(r);e(this,he,a),e(this,Ve,new Ft({glacierApiUrl:i,headers:$t(n)})),e(this,ot,new Dt({proxyApiUrl:o,fetch:c(this,he)?.fetch})),e(this,se,o),e(this,j,t),e(this,ge,new Ws({baseURL:o+"/proxy/blockaid/",apiKey:Ar,httpAgent:a?.httpAgent,fetch:a?.fetch}));}getProvider(t){return F({chainId:t.chainId,chainName:t.chainName,rpcUrl:t.rpcUrl,multiContractAddress:t.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:t.customRpcHeaders})}getAddress({accountIndex:t,xpub:r,walletType:n}){return Bn({accountIndex:t,xpub:r,walletType:n})}buildDerivationPath(t){return ve(t)}deriveAddress(t){return Lr({...t,approvalController:c(this,j)})}deriveAddresses(t){return Gr({...t,approvalController:c(this,j)})}getBalances({addresses:t,network:r,currency:n,customTokens:a,storage:i,tokenTypes:o,customTokensOnly:c$1}){let l=new te({storage:i,proxyApiUrl:c(this,se),fetch:c(this,he)?.fetch});return Ln({addresses:t,currency:n,network:r,proxyApiUrl:c(this,se),customTokens:a,customTokensOnly:c$1,balanceServices:[c(this,Ve),c(this,ot)],storage:i,tokenTypes:o,tokenService:l,fetch:c(this,he)?.fetch})}getManifest(){let t=parseManifest(Pr);return t.success?t.data:void 0}getNetworkFee(t){let{chainId:r,chainName:n,rpcUrl:a,utilityAddresses:i,caipId:o,customRpcHeaders:c$1}=t;return $n({chainId:r,chainName:n,rpcUrl:a,multiContractAddress:i?.multicall,caipId:o,proxyApiUrl:c(this,se),customRpcHeaders:c$1})}getTransactionHistory(t){let{network:r,address:n,nextPageToken:a,offset:i}=t,{chainId:o,networkToken:c$1,explorerUrl:l=""}=r;return oa({chainId:o,networkToken:c$1,explorerUrl:l,address:n,nextPageToken:a,offset:i,glacierService:c(this,Ve)})}getTokens(t){let{chainId:r}=t;return Pt({chainId:r,proxyApiUrl:c(this,se)})}async onRpcRequest(t,r){switch(t.method){case RpcMethod.ETH_SEND_TRANSACTION:return gn({request:t,network:r,approvalController:c(this,j),blockaid:c(this,ge)});case RpcMethod.ETH_SEND_TRANSACTION_BATCH:return Yr(c(this,j))?mn({request:t,network:r,approvalController:c(this,j),blockaid:c(this,ge)}):{error:rpcErrors.methodNotSupported(`Method ${t.method} requires BatchApprovalController`)};case RpcMethod.AVALANCHE_DECLARE_AGENT_IDENTITY:return Ur({request:t,network:r});case RpcMethod.PERSONAL_SIGN:case RpcMethod.ETH_SIGN:case RpcMethod.SIGN_TYPED_DATA:case RpcMethod.SIGN_TYPED_DATA_V1:case RpcMethod.SIGN_TYPED_DATA_V3:case RpcMethod.SIGN_TYPED_DATA_V4:return wn({request:t,network:r,approvalController:c(this,j),blockaid:c(this,ge)});default:return js(t.method)?_n(t,r):{error:rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}};Ve=new WeakMap,ot=new WeakMap,se=new WeakMap,j=new WeakMap,ge=new WeakMap,he=new WeakMap,a(gr,"EvmModule");var da=gr,js=a(e=>e.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(e),"shouldForwardToRpcNode");
|
|
34
|
+
`;}),t},"beautifySimpleMessage"),fe=a(e=>{let t={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 e.split("").map(r=>t[r]||r).join("")},"toUnicodeBold");var Qe=z$1.string().describe("message"),j=z$1.string().describe("address");var _n=z$1.object({method:z$1.literal(RpcMethod.ETH_SIGN),params:z$1.tuple([j,Qe])});var Dn=z$1.object({name:z$1.string(),type:z$1.string()}),we=z$1.object({types:z$1.object({EIP712Domain:z$1.array(Dn)}).catchall(z$1.array(Dn)),primaryType:z$1.string(),domain:z$1.record(z$1.any()),message:z$1.record(z$1.any())}),pr=z$1.array(z$1.object({type:z$1.string(),name:z$1.string(),value:z$1.union([z$1.string(),z$1.number(),z$1.boolean(),z$1.object({}).passthrough(),z$1.array(z$1.unknown()),z$1.null()])})).nonempty(),mr=we.or(pr),Bn=z$1.union([z$1.string().describe("data string"),we]),Un=z$1.union([z$1.string().describe("data string"),mr]),Fn=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA),params:z$1.tuple([j,Un])}),Mn=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V1),params:z$1.tuple([j,Un])}),Ln=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V3),params:z$1.tuple([j,Bn])}),Gn=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V4),params:z$1.tuple([j,Bn])});var Vn=z$1.object({method:z$1.literal(RpcMethod.PERSONAL_SIGN),params:z$1.union([z$1.tuple([Qe,j]),z$1.tuple([Qe,j,z$1.string().optional().describe("password")])])});var io=z$1.discriminatedUnion("method",[Vn,_n,Fn,Mn,Ln,Gn]).transform((e,t)=>{let{method:r,params:n}=e;switch(r){case RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:r};case RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:r};case RpcMethod.SIGN_TYPED_DATA:case RpcMethod.SIGN_TYPED_DATA_V1:{let a=n[0],i=n[1];if(typeof i!="string")return {data:i,address:a,method:r};try{let s=JSON.parse(i);return {data:mr.parse(s),address:a,method:r}}catch{return t.addIssue({code:z$1.ZodIssueCode.custom,message:"param is not a valid json"}),z$1.NEVER}}case RpcMethod.SIGN_TYPED_DATA_V3:case RpcMethod.SIGN_TYPED_DATA_V4:{let a=n[0],i=n[1];if(typeof i!="string")return {data:i,address:a,method:r};try{let s=JSON.parse(i);return {data:we.parse(s),address:a,method:r}}catch{return t.addIssue({code:z$1.ZodIssueCode.custom,message:"param is not a valid json"}),z$1.NEVER}}}});function Hn(e){return io.safeParse(e)}a(Hn,"parseRequestParams");var On=a(e=>pr.safeParse(e).success,"isTypedDataV1"),yd=a(e=>we.safeParse(e).success,"isTypedData");var $n=a(e=>{try{let{EIP712Domain:t,...r}=e.types;return TypedDataEncoder.getPayload(e.domain,r,e.message),{isValid:!0}}catch(t){return {isValid:!1,error:t}}},"isTypedDataValid");var Wn=a(async({request:e,network:t,approvalController:r,blockaid:n})=>{let a=Hn({method:e.method,params:e.params});if(!a.success)return console.error("invalid params",a.error),{success:!1,error:rpcErrors.invalidParams($("Params are invalid",a.error))};let{method:i,data:s,address:c}=a.data,l;(i===RpcMethod.SIGN_TYPED_DATA_V3||i===RpcMethod.SIGN_TYPED_DATA_V4)&&(l=$n(s));let p,m,u;if(l&&!l.isValid&&(u={type:AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements. Please verify message content!",detailedDescription:l.error.toString()}}),i===RpcMethod.ETH_SIGN)p={type:i,account:c,data:s},m=s;else if(i===RpcMethod.PERSONAL_SIGN)p={type:i,account:c,data:s},m=toUtf8String(s);else if(i===RpcMethod.SIGN_TYPED_DATA||i===RpcMethod.SIGN_TYPED_DATA_V1)p={type:i,account:c,data:s},m=On(s)?Cn(s):cr(s);else if(i===RpcMethod.SIGN_TYPED_DATA_V3||i===RpcMethod.SIGN_TYPED_DATA_V4){p={type:i,account:c,data:s};let{types:A,primaryType:v,..._}=s;m=cr(_);}if(!p||!m)return {success:!1,error:rpcErrors.internal("Unable to generate signing data")};let g=await vn({request:e,accountAddress:c,chainId:t.chainId,data:{method:i,params:e.params},dAppUrl:e.dappInfo.url,blockaid:n}),h=Ce(e),y=h?await ne({declaration:h,rpcUrl:t.rpcUrl,chainId:t.chainId,chainName:t.chainName,customRpcHeaders:t.customRpcHeaders}):void 0,k={title:"Sign Message",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} is requesting to sign the following message`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},account:c,details:[{title:"Message",items:[W("Message",m,"vertical")]},...y?[Se(y)]:[]],alert:g?.alert??u,balanceChange:g?.balanceChange,tokenApprovals:g?.tokenApprovals},T=await r.requestApproval({request:e,displayData:k,signingData:p});return "error"in T?{error:T.error}:"signedData"in T?{result:T.signedData}:{error:rpcErrors.internal("No signed data returned")}},"ethSign");var jn=a(async(e,t)=>{try{return {result:await(await F({chainId:t.chainId,chainName:t.chainName,rpcUrl:t.rpcUrl,pollingInterval:1e3,customRpcHeaders:t.customRpcHeaders})).send(e.method,e.params)}}catch(r){let n=r.info?.error??r.error;return n&&typeof n.code=="number"?{error:n}:{error:rpcErrors.internal(r.message)}}},"forwardToRpcNode");var zn=a(async({accountIndex:e,xpub:t,walletType:r})=>{switch(r){case WalletType.Mnemonic:case WalletType.Ledger:case WalletType.Keystone:return {[NetworkVMType.EVM]:getAddressFromXPub(t,e)};case WalletType.LedgerLive:case WalletType.Seedless:{let n=Buffer.from(t,"hex");return {[NetworkVMType.EVM]:getEvmAddressFromPubKey(n)}}default:throw rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}},"getAddress");function Be(e,t){return e.then(r=>({id:t,status:"fulfilled",value:r})).catch(r=>({id:t,status:"rejected",reason:r}))}a(Be,"addIdToPromise");async function Ue(e){return await Promise.allSettled(e).then(t=>t.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},{}))}a(Ue,"settleAllIdPromises");var fo={"ERC-20":TokenType.ERC20,"ERC-721":TokenType.ERC721,"ERC-1155":TokenType.ERC1155,"NON-ERC":TokenType.NONERC,SPL:TokenType.SPL},ho=z$1.string().transform((e,t)=>{let r=fo[e];return r||(t.addIssue({code:z$1.ZodIssueCode.custom,message:`Unknown contractType: ${e}`}),z$1.NEVER)}),To=z$1.object({address:z$1.string(),chainId:z$1.number(),contractType:ho,decimals:z$1.number(),internalId:z$1.string().nullish(),isNative:z$1.boolean(),logoUri:z$1.string().nullish(),name:z$1.string(),symbol:z$1.string(),caip2Id:z$1.string().nullish(),color:z$1.string().nullish()}),ko=z$1.array(z$1.unknown()).transform(e=>e.flatMap(t=>{let r=To.safeParse(t);return r.success?[r.data]:[]}));async function wt({chainId:e,proxyApiUrl:t}){return (await L([`${t}/tokens?evmChainId=${e}`],ko)).map(n=>({...n,type:n.contractType}))}a(wt,"getTokens");var U,Fe,he,nt,Me,ur=class ur{constructor({network:t,storage:r,proxyApiUrl:n,customTokens:a,fetch:i}){d(this,U,void 0);d(this,Fe,void 0);d(this,he,void 0);d(this,nt,void 0);d(this,Me,void 0);e(this,U,t),e(this,Fe,r),e(this,he,n),e(this,nt,a),e(this,Me,i);}async isNetworkSupported(){return !0}async getNativeBalance({chainId:t,address:r,currency:n}){let a=await F({chainId:t,chainName:c(this,U).chainName,rpcUrl:c(this,U).rpcUrl,multiContractAddress:c(this,U).utilityAddresses?.multicall,customRpcHeaders:c(this,U).customRpcHeaders}),i=c(this,U).pricingProviders?.coingecko.nativeTokenId,s=c(this,U).networkToken,c$1=new re({storage:c(this,Fe),proxyApiUrl:c(this,he),fetch:c(this,Me)}),l=i?await c$1.getSimplePrice({coinIds:[i],currencies:[n]}):{},p=l?.[i??""]?.[n]?.price??void 0,m=l?.[i??""]?.[n]?.marketCap??void 0,u=l?.[i??""]?.[n]?.vol24??void 0,g=l?.[i??""]?.[n]?.change24??void 0,h=await a.getBalance(r),y=new TokenUnit(h,s.decimals,s.symbol),k=p!==void 0?y.mul(p):void 0;return {...s,coingeckoId:i??"",type:TokenType.NATIVE,balance:h,balanceDisplayValue:y.toDisplay(),balanceInCurrency:k?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:k?.toDisplay({fixedDp:2}),priceInCurrency:p,marketCap:m,vol24:u,change24:g}}async listErc20Balances({chainId:t,address:r,currency:n,customTokensOnly:a$1=!1}){let i=await F({chainId:t,chainName:c(this,U).chainName,rpcUrl:c(this,U).rpcUrl,multiContractAddress:c(this,U).utilityAddresses?.multicall,customRpcHeaders:c(this,U).customRpcHeaders}),s=c(this,U).pricingProviders?.coingecko.assetPlatformId,c$1=c(this,U).pricingProviders?.coingecko.nativeTokenId,l=a$1?[]:await wt({chainId:Number(t),proxyApiUrl:c(this,he)}),p=l.map(v=>v.address),m=[...l,...c(this,nt)].filter(Pt),u=a(async v=>{let O=await new ethers.Contract(v.address,gn.abi,i).balanceOf?.(r)||0n;return {...v,balance:O}},"getTokenWithBalance"),g=m.map(v=>Be(u(v),v.address)),h=await Ue(g),y=new re({storage:c(this,Fe),proxyApiUrl:c(this,he),fetch:c(this,Me)}),k=s&&await y.getPricesByAddresses(p,s,n)||{},T=Object.keys(h),A={};for(let v=0;v<T.length;v++){let _=T[v];if(_===void 0)continue;let S=h[_];if(S===void 0||"error"in S){A[_]={error:`rpcService:getTokenWithBalance failed: ${S?.error??"unknown error"}`};continue}let O=k?.[c$1??""]?.[n]?.price??void 0,pe=k?.[c$1??""]?.[n]?.marketCap??void 0,E=k?.[c$1??""]?.[n]?.vol24??void 0,I=k?.[c$1??""]?.[n]?.change24??void 0,D=new TokenUnit(S.balance,S.decimals,S.symbol),We=O!==void 0?D.mul(O):void 0;A[S.address.toLowerCase()]={...S,type:TokenType.ERC20,balance:S.balance,balanceDisplayValue:D.toDisplay(),balanceInCurrency:We?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:We?.toDisplay({fixedDp:2}),priceInCurrency:O,marketCap:pe,change24:I,vol24:E,reputation:null};}return A}async listNftBalances(){return {}}};U=new WeakMap,Fe=new WeakMap,he=new WeakMap,nt=new WeakMap,Me=new WeakMap,a(ur,"RpcService");var _t=ur;async function Jn(e,t){let r=e.map(async(i,s)=>({index:s,result:await t(i)})),a=(await Promise.allSettled(r)).filter(i=>i.status==="fulfilled").map(i=>i).find(i=>i.value.result);return a?e[a.value.index]:void 0}a(Jn,"findAsync");var Xn=a(async({addresses:e,currency:t,network:r,proxyApiUrl:n,tokenTypes:a=[TokenType.NATIVE,TokenType.ERC20,TokenType.ERC721,TokenType.ERC1155],customTokens:i=[],customTokensOnly:s=!1,storage:c,balanceServices:l=[],tokenService:p,fetch:m})=>{let u=r.chainId,g=new _t({network:r,storage:c,proxyApiUrl:n,customTokens:i,fetch:m}),h=s?[g]:[...l,g],y=s?[TokenType.ERC20]:a,k=await Jn(h,A=>A.isNetworkSupported(r.chainId)),T={};if(k){let A=[],v=[],_=[];e.forEach(E=>{y.includes(TokenType.NATIVE)&&A.push(Be(k.getNativeBalance({address:E,currency:t.toUpperCase(),chainId:u}).then(async I=>{if(I.symbol==="AVAX"){let D=await p.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:t.toUpperCase()});return {...I,priceInCurrency:D.priceInCurrency,marketCap:D.marketCap,vol24:D.vol24,change24:D.change24}}return I}),E)),y.includes(TokenType.ERC20)&&v.push(Be(k.listErc20Balances({customTokens:i.filter(Pt),customTokensOnly:s,currency:t.toUpperCase(),chainId:u,address:E,pageSize:100}),E)),(y.includes(TokenType.ERC721)||y.includes(TokenType.ERC1155))&&_.push(Be(k.listNftBalances({chainId:u,address:E}),E));});let S=await Ue(A),O=await Ue(v),pe=await Ue(_);Object.keys(S).forEach(E=>{let I=S[E];if(!I||"error"in I){T[E]={error:`getNativeBalance failed: ${I?.error??"unknown error"}`};return}let D=I.symbol;T[E]={[D]:I};}),Object.keys(O).forEach(E=>{let I=O[E];!I||"error"in I&&typeof I.error!="string"?T[E]={...T[E],error:"listErc20Balances failed: unknown error"}:"error"in I&&typeof I.error=="string"?T[E]={...T[E],error:`listErc20Balances failed: ${I.error}`}:T[E]={...T[E],...I};}),Object.keys(pe).forEach(E=>{let I=pe[E];!I||"error"in I&&typeof I.error!="string"?T[E]={...T[E],error:"listNftBalances failed: unknown error"}:"error"in I&&typeof I.error=="string"?T[E]={...T[E],error:`listNftBalances failed: ${I.error}`}:T[E]={...T[E],...I};});}else e.forEach(A=>{T[A]={error:"unsupported network"};});return T},"getBalances");var yr={LOW:1n,MEDIUM:4n,HIGH:6n},fr=500000000n,Ro=a(e=>e===ChainId.AVALANCHE_TESTNET_ID||e===ChainId.AVALANCHE_MAINNET_ID,"isCChain"),ea=137,ta=80002,Eo=a(e=>e===ea||e===ta,"isPolygon"),Po={[ea]:"https://gasstation.polygon.technology/v2",[ta]:"https://gasstation.polygon.technology/amoy"};function Te(e){return BigInt(Math.round(e*1e9))}a(Te,"gweiToWei");async function Io(e){let t=Po[e];if(!t)throw new Error(`No gas station URL for Polygon chain ${e}`);let r=await fetch(t);if(!r.ok)throw new Error(`Polygon Gas Station returned ${r.status}`);let n=await r.json();return {baseFee:Te(n.estimatedBaseFee),low:{maxFeePerGas:Te(n.safeLow.maxFee),maxPriorityFeePerGas:Te(n.safeLow.maxPriorityFee)},medium:{maxFeePerGas:Te(n.standard.maxFee),maxPriorityFeePerGas:Te(n.standard.maxPriorityFee)},high:{maxFeePerGas:Te(n.fast.maxFee),maxPriorityFeePerGas:Te(n.fast.maxPriorityFee)},isFixedFee:!1,displayDecimals:9}}a(Io,"getPolygonGasStationFees");async function ra({chainId:e,chainName:t,rpcUrl:r,multiContractAddress:n,caipId:a,proxyApiUrl:i,customRpcHeaders:s}){let c=await F({chainId:e,chainName:t,rpcUrl:r,multiContractAddress:n,customRpcHeaders:s});if(!i)throw rpcErrors.internal("Proxy API URL is needed");if(Ro(e))try{let v=await Ao(c);return {...v,baseFee:v.medium.maxFeePerGas,displayDecimals:9,isFixedFee:!1}}catch{console.error("eth_suggestPriceOptions call failed, falling back to legacy fee fetching");}if(Eo(e))try{return await Io(e)}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.internal("There is no block");let p=l.baseFeePerGas;if(!p)throw rpcErrors.internal("Pre-EIP-1559 networks are not supported");let m=await So(i,a),u=new TokenUnit(m,0,""),g=new TokenUnit(p,0,""),h=BigInt("1000000000"),y=g.mul(u).add(h).toSubUnit(),k=fr*yr.LOW,T=fr*yr.MEDIUM,A=fr*yr.HIGH;return {baseFee:y,low:{maxFeePerGas:y+k,maxPriorityFeePerGas:k},medium:{maxFeePerGas:y+T,maxPriorityFeePerGas:T},high:{maxFeePerGas:y+A,maxPriorityFeePerGas:A},isFixedFee:!1,displayDecimals:9}}a(ra,"getNetworkFee");async function Ao(e){let t=await e.send("eth_suggestPriceOptions",[]);return {low:{maxFeePerGas:BigInt(t.slow.maxFeePerGas),maxPriorityFeePerGas:BigInt(t.slow.maxPriorityFeePerGas)},medium:{maxFeePerGas:BigInt(t.normal.maxFeePerGas),maxPriorityFeePerGas:BigInt(t.normal.maxPriorityFeePerGas)},high:{maxFeePerGas:BigInt(t.fast.maxFeePerGas),maxPriorityFeePerGas:BigInt(t.fast.maxPriorityFeePerGas)}}}a(Ao,"suggestPriceOptions");async function So(e,t){if(!t)return 1.5;try{let n=await fetch(`${e}/gas/multiplier`);if(!n.ok)throw new Error(n.statusText);let a=await n.json();return a[t]??a.default}catch{return 1.5}}a(So,"getGasMultiplier");function aa(e){return e===TokenType.ERC721||e===TokenType.ERC1155}a(aa,"isNftTokenType");function hr(e){let{txType:t,isSender:r,walletAddress:n,tokens:a}=e;if(a.length===0)return t;let i=n.toLowerCase(),s=a.some(m=>aa(m.type)&&m.to?.address?.toLowerCase()===i),c=a.some(m=>aa(m.type)&&m.from?.address?.toLowerCase()===i),l=t===TransactionType.RECEIVE||t===TransactionType.UNKNOWN||t===TransactionType.TRANSFER||t===TransactionType.AIRDROP,p=t===TransactionType.SEND||t===TransactionType.UNKNOWN||t===TransactionType.TRANSFER||t===TransactionType.AIRDROP;return !r&&s&&l?TransactionType.NFT_RECEIVE:r&&c&&p?TransactionType.NFT_SEND:t}a(hr,"convertTransactionType");var sa=a(({nativeTransaction:e,erc20Transfers:t,erc721Transfers:r,erc1155Transfers:n},a,i)=>{let s=!t&&!r&&!n,c=No(e.method?.methodName),l=a.toLowerCase(),p=c.toLowerCase().includes("swap"),m=s&&e.from.address.toLowerCase()===l,u=s&&e.to.address.toLowerCase()===l,g=c==="Market Buy Orders With Eth"||c==="Buy NFT",h=c==="Approve",y=c.toLowerCase().includes("transfer"),k=c.toLowerCase().includes("airdrop"),T=c.toLowerCase().includes("unwrap"),A=c==="Fill Order",v;p?v=TransactionType.SWAP:m?v=TransactionType.SEND:u?v=TransactionType.RECEIVE:g?v=TransactionType.NFT_BUY:h?v=TransactionType.APPROVE:y?v=TransactionType.TRANSFER:k?v=TransactionType.AIRDROP:T?v=TransactionType.UNWRAP:A?v=TransactionType.FILL_ORDER:v=TransactionType.UNKNOWN;let _=e.from.address.toLowerCase()===l;return hr({txType:v,isSender:_,walletAddress:a,tokens:i})},"getTxType"),No=a((e="")=>e.includes("(")?xo(e.split("(",1)[0]):e,"parseRawMethod");function oa({tx:e,networkToken:t,explorerUrl:r,chainId:n,address:a}){let i=e.from_address.toLowerCase()===a.toLowerCase(),s=new Date(e.block_timestamp).getTime(),c=_o(e.category),l=!Co.has(e.category),p=Uo(e,t,a),m=ae(r,e.hash);return c=hr({txType:c,isSender:i,walletAddress:a,tokens:p}),{isContractCall:l,isIncoming:!i,isOutgoing:i,isSender:i,timestamp:s,hash:e.hash,from:e.from_address,to:e.to_address??"",tokens:p,gasPrice:e.gas_price,gasUsed:e.receipt_gas_used,chainId:n.toString(),txType:c,method:e.method_label??void 0,explorerLink:m}}a(oa,"convertMoralisTransaction");var Co=new Set(["send","receive","token send","token receive"]),wo={send:TransactionType.SEND,receive:TransactionType.RECEIVE,"token send":TransactionType.SEND,"token receive":TransactionType.RECEIVE,"nft send":TransactionType.NFT_SEND,"nft receive":TransactionType.NFT_RECEIVE,"token swap":TransactionType.SWAP,"nft purchase":TransactionType.NFT_BUY,"nft sale":TransactionType.NFT_SEND,airdrop:TransactionType.AIRDROP,mint:TransactionType.NFT_BUY,burn:TransactionType.UNKNOWN,deposit:TransactionType.UNKNOWN,withdraw:TransactionType.UNKNOWN,borrow:TransactionType.UNKNOWN,"contract interaction":TransactionType.UNKNOWN};function _o(e){return wo[e]??TransactionType.UNKNOWN}a(_o,"getMoralisTransactionType");function ie(e){if(!(e==null||e===""))return {address:e}}a(ie,"getTransferAddress");function Dt(e){return e?.trim()??""}a(Dt,"trimOrEmpty");function Do(e){let t=e.trim().toLowerCase();return !t.startsWith("0x")||t.length<12?e.trim():`${t.slice(0,6)}\u2026${t.slice(-4)}`}a(Do,"shortenHexAddress");function Bo(e){let t=Dt(e.token_symbol);if(t!=="")return t;let r=Dt(e.token_name);return r!==""?r:Do(e.address)}a(Bo,"getErc20DisplaySymbol");function Uo(e,t,r){let n=[],a=e.native_transfers.map(s=>Fo(s,t)),i=e.erc20_transfers.map(s=>Mo(s));n.push(...a,...i);for(let s of e.nft_transfers)n.push(Lo(s));return n.length===0&&n.push(Go(e,t,r)),n}a(Uo,"buildTokens");function Fo(e,t){let r=Dt(e.token_symbol)||t.symbol,n=new TokenUnit(e.value,t.decimals,r);return {decimal:t.decimals.toString(),name:t.name,symbol:r,amount:n.toDisplay(),from:ie(e.from_address),to:ie(e.to_address),type:TokenType.NATIVE}}a(Fo,"buildNativeToken");function Mo(e){let t=Number(e.token_decimals),r=Bo(e),n=new TokenUnit(e.value,t,r),a=Dt(e.token_name)||r;return {decimal:e.token_decimals,name:a,symbol:r,amount:n.toDisplay(),from:ie(e.from_address),to:ie(e.to_address),type:TokenType.ERC20,address:e.address}}a(Mo,"buildErc20Token");function Lo(e){let t=e.contract_type==="ERC1155"?TokenType.ERC1155:TokenType.ERC721;return {name:"",symbol:"",amount:e.amount,collectableTokenId:e.token_id,from:ie(e.from_address),to:ie(e.to_address),type:t,address:e.token_address}}a(Lo,"buildNftToken");function Go(e,t,r){let n=new TokenUnit(e.value,t.decimals,t.symbol),i=e.from_address.toLowerCase()===r.toLowerCase()?`-${n.toDisplay()}`:n.toDisplay();return {decimal:t.decimals.toString(),name:t.name,symbol:t.symbol,amount:i,from:ie(e.from_address),to:ie(e.to_address),type:TokenType.NATIVE}}a(Go,"buildFallbackNativeToken");var Vo="https://proxy-api.avax.network/proxy/moralis-evm";async function ia({chainId:e,networkToken:t,explorerUrl:r,address:n,nextPageToken:a,offset:i}){try{let s=`0x${e.toString(16)}`,c=new URLSearchParams({chain:s,limit:(i??25).toString()});a&&c.set("cursor",a);let l=`${Vo}/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(g=>g.receipt_status==="1").map(g=>oa({tx:g,networkToken:t,explorerUrl:r,chainId:e,address:n})),nextPageToken:m.cursor??""}:{transactions:[],nextPageToken:""}}catch{return {transactions:[],nextPageToken:""}}}a(ia,"getTransactionsFromMoralis");var Ho=new Set([1,4,5,11155111,8453,42161,10]);function ca(e){return Ho.has(e)}a(ca,"isMoralisSupportedChain");var la=a((e,{nativeTransaction:t,erc20Transfers:r,erc721Transfers:n},a)=>{let i=e===TransactionType.TRANSFER,s=e===TransactionType.SEND||e===TransactionType.NFT_SEND,c=e===TransactionType.RECEIVE||e===TransactionType.NFT_RECEIVE,l=t?.from?.address,p=t?.to?.address;i&&r&&r[0]&&(l=r[0].from.address,p=r[0].to.address),i&&n&&n[0]&&(l=n[0].from.address,p=n[0].to.address);let m=s||i&&l.toLowerCase()===a.toLowerCase(),u=c||i&&p.toLowerCase()===a.toLowerCase();return {isOutgoing:m,isIncoming:u,isSender:l===a,from:l,to:p}},"getSenderInfo");async function pa(e){try{return e.then(t=>[t,null]).catch(t=>[null,t])}catch(t){return Promise.resolve([null,t])}}a(pa,"resolve");var $o="https://ipfs.io";function Le(e,t=$o){if(!e)return "";try{return ipfsResolver(e,t)}catch{return e}}a(Le,"ipfsResolverWithFallback");async function Wo(e,t=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),t),fetch(e,{signal:r.signal})}a(Wo,"fetchWithTimeout");async function ma(e){let t={};if(e)if(e.startsWith("data:application/json;base64,")){let r=e.substring(29);try{let n=Buffer.from(r,"base64").toString();t=JSON.parse(n);}catch{t={};}}else t=await Wo(Le(e)).then(r=>r.json()).catch(()=>({}));else return {};return t}a(ma,"getNftMetadata");var jo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function da(e,t="256"){let r=Le(e);return `${jo}/width=${t},fit/${r}`}a(da,"getSmallImageForNFT");var ya=a(async({nativeTransaction:e,erc20Transfers:t,erc721Transfers:r,erc1155Transfers:n},a)=>{let i=[];if(e.value!=="0"){let s=a.decimals,l=new TokenUnit(e.value,a.decimals,a.symbol).toDisplay();i.push({decimal:s.toString(),name:a.name,symbol:a.symbol,amount:l,from:e.from,to:e.to,type:TokenType.NATIVE});}return t?.forEach(s=>{let c=s.erc20Token.decimals,p=new TokenUnit(s.value,c,s.erc20Token.symbol).toDisplay();i.push({decimal:c.toString(),address:s.erc20Token.address,name:s.erc20Token.name,symbol:s.erc20Token.symbol,amount:p,from:s.from,to:s.to,imageUri:s.erc20Token.logoUri,type:TokenType.ERC20});}),r&&await Promise.allSettled(r.map(async s=>{let c=s.erc721Token,l=await ga(c.tokenUri,c.metadata.imageUri);i.push({name:s.erc721Token.name,symbol:s.erc721Token.symbol,address:s.erc721Token.address,amount:"1",imageUri:l,from:s.from,to:s.to,collectableTokenId:s.erc721Token.tokenId,type:TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async s=>{let c=s.erc1155Token,l=await ga(c.tokenUri,c.metadata.imageUri);i.push({name:s.erc1155Token.metadata.name??"",symbol:s.erc1155Token.metadata.symbol??"",address:s.erc1155Token.address,amount:s.value,imageUri:l,from:s.from,to:s.to,collectableTokenId:s.erc1155Token.tokenId,type:TokenType.ERC1155});})),i},"getTokens"),ga=a(async(e,t)=>{if(t)return t.startsWith("ipfs://")?Le(t):t;{let[r,n]=await pa(ma(e));return n?"":r.image?da(r.image):""}},"getImageUri");var fa=a(async({transactions:e,explorerUrl:t,networkToken:r,chainId:n,address:a})=>{let i=await ya(e,r),s=sa(e,a,i),{isOutgoing:c,isIncoming:l,isSender:p,from:m,to:u}=la(s,e,a),{blockTimestamp:g,txHash:h,gasPrice:y,gasUsed:k}=e.nativeTransaction,T=ae(t,h);return {isContractCall:!rn.includes(s),isIncoming:l,isOutgoing:c,isSender:p,timestamp:g*1e3,hash:h,from:m,to:u,tokens:i,gasPrice:y,gasUsed:k,chainId:n.toString(),txType:s,explorerLink:T}},"convertTransaction");var ha=a(async({chainId:e,explorerUrl:t,networkToken:r,address:n,nextPageToken:a,offset:i,glacierService:s})=>{try{let c=await s.listTransactions({chainId:e.toString(),address:n,pageToken:a,pageSize:i});return {transactions:(await Promise.all(c.transactions.filter(m=>m.nativeTransaction.txStatus==="1").map(m=>fa({transactions:m,explorerUrl:t,networkToken:r,chainId:e,address:n}).then(u=>u)))).filter(m=>m.tokens.find(u=>Number(u.amount)!==0)),nextPageToken:c.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}},"getTransactionsFromGlacier");async function Ta({client:e,chainId:t,networkToken:r,explorerUrl:n,address:a,nextPageToken:i,offset:s=25}){try{let c=qo(i),[l,p,m]=await Promise.all([e.listNormalTransactions(a,{page:c,offset:s}),e.listErc20Transfers(a,{page:c,offset:s}),e.listInternalTransactions(a,{page:c,offset:s})]),u=new Map;for(let y of l){if(y.isError!=="0"||y.txreceipt_status!=="1")continue;let k=br(u,y),T=zo(y,r);T&&k.tokens.push(T);}for(let y of p)br(u,y).tokens.push(Ko(y));for(let y of m){if(y.isError!=="0")continue;let k=br(u,y),T=Yo(y,r);T&&k.tokens.push(T);}let g=Array.from(u.values()).map(y=>Jo(y,a,n,r,t)).sort((y,k)=>k.timestamp-y.timestamp),h=[l,p,m].some(y=>y.length===s);return {transactions:g,nextPageToken:h?String(c+1):""}}catch{return {transactions:[],nextPageToken:""}}}a(Ta,"getTransactionsFromHyperEvm");function qo(e){let t=Number(e);return Number.isSafeInteger(t)&&t>0?t:1}a(qo,"getPage");function br(e,t){let r=e.get(t.hash);if(r)return r;let n={hash:t.hash,timestamp:Number(t.timeStamp)*1e3,from:t.from,to:t.to,gasPrice:"gasPrice"in t?t.gasPrice:void 0,gasUsed:t.gasUsed,isContractCall:"input"in t&&t.input!=="0x",tokens:[]};return e.set(t.hash,n),n}a(br,"getAggregate");function zo(e,t){if(e.value!=="0")return {decimal:String(t.decimals),name:t.name,symbol:t.symbol,amount:new TokenUnit(e.value,t.decimals,t.symbol).toDisplay(),from:{address:e.from},to:{address:e.to},type:TokenType.NATIVE}}a(zo,"nativeToken");function Yo(e,t){if(e.value!=="0")return {decimal:String(t.decimals),name:t.name,symbol:t.symbol,amount:new TokenUnit(e.value,t.decimals,t.symbol).toDisplay(),from:{address:e.from},to:{address:e.to},type:TokenType.NATIVE}}a(Yo,"internalToken");function Ko(e){return {decimal:e.tokenDecimal,name:e.tokenName,symbol:e.tokenSymbol,amount:new TokenUnit(e.value,Number(e.tokenDecimal),e.tokenSymbol).toDisplay(),from:{address:e.from},to:{address:e.to},type:TokenType.ERC20,address:e.contractAddress}}a(Ko,"erc20Token");function Jo(e,t,r,n,a){let i=t.toLowerCase(),s=e.tokens.some(m=>m.to?.address.toLowerCase()===i),c=e.tokens.some(m=>m.from?.address.toLowerCase()===i),l=e.from.toLowerCase()===i||c,p=s&&c?TransactionType.SWAP:l?TransactionType.SEND:TransactionType.RECEIVE;return {isContractCall:e.isContractCall||s&&c,isIncoming:s&&!c,isOutgoing:c,isSender:l,timestamp:e.timestamp,hash:e.hash,from:e.from,to:e.to,tokens:e.tokens.length>0?e.tokens:[{decimal:String(n.decimals),name:n.name,symbol:n.symbol,amount:"0",type:TokenType.NATIVE}],gasPrice:e.gasPrice,gasUsed:e.gasUsed,chainId:a.toString(),txType:p,explorerLink:ae(r,e.hash)}}a(Jo,"toTransaction");var Xo=999,ka=a(async({chainId:e,networkToken:t,explorerUrl:r,address:n,nextPageToken:a,offset:i,glacierService:s,hyperEvmEtherscanClient:c})=>e===Xo?c?Ta({client:c,chainId:e,networkToken:t,explorerUrl:r,address:n,nextPageToken:a,offset:i}):{transactions:[],nextPageToken:""}:ca(e)?ia({chainId:e,networkToken:t,explorerUrl:r,address:n,nextPageToken:a,offset:i}):s.isHealthy()?ha({networkToken:t,explorerUrl:r,chainId:e,address:n,nextPageToken:a,offset:i,glacierService:s}):{transactions:[],nextPageToken:""},"getTransactionHistory");var Qo="https://ipfs.io";function ba(e,t=Qo){if(!e)return "";try{return ipfsResolver(e,t)}catch{return e}}a(ba,"ipfsResolverWithFallback");var ei="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Ft(e,t="256"){let r=ba(e);return `${ei}/width=${t},fit/${r}`}a(Ft,"getSmallImageForNFT");var Ge,X,Rr=class Rr{constructor(t,r){this.baseUrl=t;d(this,Ge,[]);d(this,X,void 0);e(this,X,r??fetch);}async isNetworkSupported(t){return (await this.getChainList()).some(n=>n.community_id===t)}async getChainInfo({chainId:t}){return (await this.getChainList()).find(n=>n.id===t)}async getTokenBalance({chainId:t,address:r,tokenId:n}){let a=await c(this,X).call(this,`${this.baseUrl}/v1/user/token?id=${r}&chain_id=${t}&token_id=${n}`);if(a.ok)return await a.json();throw new Error(`${a.status}:${a.statusText}`)}async getTokensBalanceOnChain({chainId:t,address:r}){let n=await c(this,X).call(this,`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${t}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getTokenList({chainId:t,address:r}){let n=await(c(this,X)??globalThis.fetch)(`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${t}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getChainList(){if(c(this,Ge).length===0){let t=await c(this,X).call(this,`${this.baseUrl}/v1/chain/list`);if(t.ok)e(this,Ge,await t.json());else throw new Error(`${t.status}:${t.statusText}`)}return c(this,Ge)}async getNftList({address:t,chainId:r}){return L([`${this.baseUrl}/v1/user/nft_list?id=${t}&chain_id=${r}`],ai,c(this,X))}};Ge=new WeakMap,X=new WeakMap,a(Rr,"DeBank");var Mt=Rr,ri=z$1.object({id:z$1.union([z$1.custom(isHexString),z$1.string()]),chain:z$1.string(),name:z$1.string()}),ni=ri.merge(z$1.object({contract_id:z$1.string(),description:z$1.string().nullable(),content_type:z$1.string().nullable(),content:z$1.string(),thumbnail_url:z$1.string(),total_supply:z$1.number(),detail_url:z$1.string(),collection_id:z$1.string(),is_core:z$1.boolean(),inner_id:z$1.string(),collection_name:z$1.string(),contract_name:z$1.string(),amount:z$1.number(),usd_price:z$1.number().optional(),is_erc721:z$1.boolean().optional(),is_erc1155:z$1.boolean().optional()})),ai=z$1.array(ni);var q,Ve,Gt,Ht,Ra,Pr=class Pr{constructor({proxyApiUrl:t,fetch:r}){d(this,Ve);d(this,Ht);d(this,q,void 0);e(this,q,new Mt(`${t}/proxy/debank`,r));}async isNetworkSupported(t){return c(this,q).isNetworkSupported(t)}async getNativeBalance({chainId:t,address:r,currency:n}){if(!isHexString(r))throw rpcErrors.invalidParams("getNativeBalance: not valid address: "+r);let{chainInfo:a,chainIdString:i}=await f(this,Ve,Gt).call(this,t),s=a.native_token_id,c$1=await c(this,q).getTokenBalance({address:r,chainId:i,tokenId:s}),l=new TokenUnit(c$1.raw_amount,c$1.decimals,c$1.symbol),p=l.toDisplay(),u=(await ut()).usd[n.toLowerCase()],g=u?u*c$1.price:void 0,h=g?l.mul(g).toDisplay({fixedDp:2}):void 0,y=g?l.mul(g).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {name:c$1.name,symbol:c$1.symbol,decimals:c$1.decimals,type:TokenType.NATIVE,logoUri:c$1.logo_url,balance:l.toSubUnit(),balanceDisplayValue:p,balanceInCurrency:y,balanceCurrencyDisplayValue:h,priceInCurrency:g}}async listErc20Balances({chainId:t,address:r,currency:n}){if(!isHexString(r))throw rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:a,chainIdString:i}=await f(this,Ve,Gt).call(this,t),s=await c(this,q).getTokensBalanceOnChain({chainId:i,address:r}),c$1=await ut(),l={};for(let p of s){if(p.id===a.native_token_id||p.is_core===!1)continue;let m=new TokenUnit(p.raw_amount,p.decimals,p.symbol),u=m.toDisplay(),g=c$1.usd[n.toLowerCase()],h=g?g*p.price:void 0,y=h?m.mul(h).toDisplay({fixedDp:2}):void 0,k=h?m.mul(h).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:y,balanceDisplayValue:u,balanceInCurrency:k,priceInCurrency:h,type:TokenType.ERC20,reputation:null};}return l}async listNftBalances({chainId:t,address:r}){if(!isHexString(r))throw rpcErrors.invalidParams("listNftBalances: not valid address");let{chainIdString:n}=await f(this,Ve,Gt).call(this,t),a=await c(this,q).getNftList({chainId:n,address:r});return f(this,Ht,Ra).call(this,a,t)}};q=new WeakMap,Ve=new WeakSet,Gt=a(async function(t){let n=(await c(this,q).getChainList()).find(i=>i.community_id===t)?.id;if(!n)throw rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+t);let a=await c(this,q).getChainInfo({chainId:n});if(!a)throw rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+t);return {chainInfo:a,chainIdString:n}},"#getChainInfo"),Ht=new WeakSet,Ra=a(function(t,r){return t.reduce((n,a)=>({...n,[`${a.contract_id}-${a.id}`]:{chainId:r,address:a.contract_id,description:a.description??"",logoUri:a.thumbnail_url,logoSmall:Ft(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?TokenType.ERC721:TokenType.ERC1155,metadata:{indexStatus:NftTokenMetadataStatus.UNINDEXED,description:a.description??"",properties:""}}}),{})},"#mapNftList"),a(Pr,"DeBankService");var Vt=Pr;var Ar=class Ar extends Error{constructor(){super(...arguments);b(this,"message","Glacier is unhealthy. Try again later.");}};a(Ar,"GlacierUnhealthyError");var Z=Ar,li=[ChainId.ETHEREUM_HOMESTEAD],Sr=class Sr{constructor({glacierApiUrl:t,headers:r}){b(this,"glacierSdk");b(this,"isGlacierHealthy",!0);b(this,"supportedChainIds",[]);b(this,"isHealthy",a(()=>this.isGlacierHealthy,"isHealthy"));this.glacierSdk=new Glacier({BASE:t,HEADERS:r},ze),this.getSupportedChainIds().catch(()=>{});}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async isNetworkSupported(t){return (await this.getSupportedChainIds()).some(n=>n===t.toString())}async getSupportedChainIds(){if(this.supportedChainIds.length)return this.supportedChainIds;try{let t=await this.glacierSdk.evmChains.supportedChains({});return this.supportedChainIds=t.chains.map(r=>r.chainId).filter(r=>!li.includes(Number(r))),this.supportedChainIds}catch{return []}}async reindexNft({address:t,chainId:r,tokenId:n}){try{await this.glacierSdk.nfTs.reindexNft({address:t,chainId:r,tokenId:n});}catch(a){throw a instanceof Z&&this.setGlacierToUnhealthy(),a}}async getTokenDetails({address:t,chainId:r,tokenId:n}){try{return this.glacierSdk.nfTs.getTokenDetails({address:t,chainId:r,tokenId:n})}catch(a){throw a instanceof Z&&this.setGlacierToUnhealthy(),a}}async getNativeBalance({chainId:t,address:r,currency:n,coingeckoId:a}){try{let s=(await this.glacierSdk.evmBalances.getNativeBalance({chainId:t.toString(),address:r,currency:n.toLocaleLowerCase()})).nativeTokenBalance,c=new TokenUnit(s.balance,s.decimals,s.symbol),l=s.price?.value,p=l!==void 0?c.mul(l):void 0;return {name:s.name,symbol:s.symbol,decimals:s.decimals,type:TokenType.NATIVE,logoUri:s.logoUri,balance:c.toSubUnit(),balanceDisplayValue:c.toDisplay(),balanceInCurrency:p?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:p?.toDisplay({fixedDp:2}),priceInCurrency:l,coingeckoId:a??""}}catch(i){throw i instanceof Z&&this.setGlacierToUnhealthy(),i}}async listErc721Balances({chainId:t,address:r}){let n,a=[];do try{let i=await this.glacierSdk.evmBalances.listErc721Balances({chainId:t,address:r,pageSize:100,pageToken:n});a.push(...i.erc721TokenBalances),n=i.nextPageToken;}catch(i){throw i instanceof Z&&this.setGlacierToUnhealthy(),i}while(n);return a}async listErc1155Balances({chainId:t,address:r}){let n,a=[];do try{let i=await this.glacierSdk.evmBalances.listErc1155Balances({chainId:t,address:r,pageSize:100,pageToken:n});a.push(...i.erc1155TokenBalances),n=i.nextPageToken;}catch(i){throw i instanceof Z&&this.setGlacierToUnhealthy(),i}while(n);return a}async listNftBalances({chainId:t,address:r}){let a=(await Promise.allSettled([this.listErc721Balances({chainId:t.toString(),address:r}),this.listErc1155Balances({chainId:t.toString(),address:r})])).filter(i=>i.status==="fulfilled").flatMap(i=>i.value.filter(s=>s.ercType===Erc721Token.ercType.ERC_721||BigInt(s.balance)>0n).map(s=>[`${s.address}-${s.tokenId}`,{address:s.address,description:s.metadata.description??"",logoUri:s.metadata.imageUri??"",logoSmall:Ft(s.metadata.imageUri??""),name:s.metadata.name??"",symbol:s.metadata.symbol??"",tokenId:s.tokenId,tokenUri:s.tokenUri,chainId:t,collectionName:"Unknown",balance:s.ercType===Erc1155Token.ercType.ERC_1155?BigInt(s.balance):1,balanceDisplayValue:s.ercType===Erc1155Token.ercType.ERC_1155?s.balance:"1",type:s.ercType===Erc721Token.ercType.ERC_721?TokenType.ERC721:TokenType.ERC1155,metadata:{indexStatus:s.metadata.indexStatus,description:s.metadata.description,lastUpdatedTimestamp:s.metadata.metadataLastUpdatedTimestamp,properties:s.ercType===Erc721Token.ercType.ERC_721?s.metadata.attributes:s.metadata.properties}}]));return Object.fromEntries(a)}async listErc20Balances({chainId:t,address:r,currency:n,customTokens:a}){try{let i=[],s;do{let c=await this.glacierSdk.evmBalances.listErc20Balances({chainId:t.toString(),address:r,currency:n.toLocaleLowerCase(),pageSize:100,pageToken:s});i.push(...mi(c.erc20TokenBalances,Number(t))),s=c.nextPageToken;}while(s);return [...pi(a),...i].reduce((c,l)=>({...c,[l.address.toLowerCase()]:l}),{})}catch(i){throw i instanceof Z&&this.setGlacierToUnhealthy(),i}}async listTransactions({chainId:t,address:r,pageToken:n,pageSize:a}){try{return this.glacierSdk.evmTransactions.listTransactionsV2({chainId:t,address:r,pageToken:n,pageSize:a,filterSpamTokens:!0})}catch(i){throw i instanceof Z&&this.setGlacierToUnhealthy(),i}}};a(Sr,"EvmGlacierService");var Ot=Sr,pi=a(e=>e.map(t=>({...t,decimals:t.decimals??18,type:TokenType.ERC20,balance:0n,balanceInCurrency:0,balanceDisplayValue:"0",balanceCurrencyDisplayValue:"0",priceInCurrency:0,marketCap:0,change24:0,vol24:0,reputation:null})),"convertErc20TokenToTokenWithBalance"),mi=a((e,t)=>e.map(r=>{let n=new TokenUnit(r.balance,r.decimals,r.symbol),a=n.toDisplay(),i=r.balanceValue?.value.toString(),s=r.price?.value,c=s!==void 0?n.mul(s).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {chainId:t,address:r.address,name:r.name,symbol:r.symbol,decimals:r.decimals,logoUri:r.logoUri,balance:n.toSubUnit(),balanceCurrencyDisplayValue:i,balanceDisplayValue:a,balanceInCurrency:c,priceInCurrency:s,reputation:r.tokenReputation,type:TokenType.ERC20}}),"convertErc20TokenWithBalanceToTokenWithBalance");var Ia=z$1.object({blockNumber:z$1.string(),timeStamp:z$1.string(),hash:z$1.string(),nonce:z$1.string(),blockHash:z$1.string(),transactionIndex:z$1.string(),from:z$1.string(),to:z$1.string(),value:z$1.string(),gas:z$1.string(),gasPrice:z$1.string(),isError:z$1.string(),txreceipt_status:z$1.string(),input:z$1.string(),contractAddress:z$1.string(),cumulativeGasUsed:z$1.string(),gasUsed:z$1.string(),confirmations:z$1.string()}),Aa=z$1.object({blockNumber:z$1.string(),timeStamp:z$1.string(),hash:z$1.string(),nonce:z$1.string(),blockHash:z$1.string(),from:z$1.string(),contractAddress:z$1.string(),to:z$1.string(),value:z$1.string(),tokenName:z$1.string(),tokenSymbol:z$1.string(),tokenDecimal:z$1.string(),transactionIndex:z$1.string(),gas:z$1.string(),gasPrice:z$1.string(),gasUsed:z$1.string(),cumulativeGasUsed:z$1.string(),input:z$1.string(),confirmations:z$1.string()}),Sa=z$1.object({blockNumber:z$1.string(),timeStamp:z$1.string(),hash:z$1.string(),from:z$1.string(),to:z$1.string(),value:z$1.string(),contractAddress:z$1.string(),input:z$1.string(),type:z$1.string(),gas:z$1.string(),gasUsed:z$1.string(),traceId:z$1.string(),isError:z$1.string(),errCode:z$1.string()});var di=a(e=>{if(e)return e;if(typeof globalThis.fetch=="function")return globalThis.fetch.bind(globalThis);throw new Error("HyperEvmEtherscanClient requires a fetch implementation")},"resolveFetch"),ct,lt,Oe,$t,xr=class xr{constructor({proxyApiUrl:t,fetch:r}){d(this,Oe);d(this,ct,void 0);d(this,lt,void 0);e(this,ct,`${t}/proxy/etherscan/hyperevm/api`),e(this,lt,di(r));}listNormalTransactions(t,r){return f(this,Oe,$t).call(this,"txlist",t,Ia,r)}listErc20Transfers(t,r){return f(this,Oe,$t).call(this,"tokentx",t,Aa,r)}listInternalTransactions(t,r){return f(this,Oe,$t).call(this,"txlistinternal",t,Sa,r)}};ct=new WeakMap,lt=new WeakMap,Oe=new WeakSet,$t=a(async function(t,r,n,a){let i=new URLSearchParams({module:"account",action:t,address:r,page:(a?.page??1).toString(),offset:(a?.offset??25).toString(),sort:"desc"}),s=await c(this,lt).call(this,`${c(this,ct)}?${i.toString()}`);if(!s.ok)throw new Error(`HyperEVM explorer request failed: ${s.status} ${s.statusText}`);let c$1=await s.json(),l=z$1.object({status:z$1.string(),message:z$1.string(),result:z$1.union([z$1.array(n),z$1.string()])}).parse(c$1);if(Array.isArray(l.result))return l.result;if(l.status==="0"&&l.message==="No transactions found")return [];throw new Error(l.result)},"#list"),a(xr,"HyperEvmEtherscanClient");var Wt=xr;var $e,pt,ce,z,ke,le,mt,Nr=class Nr{constructor({approvalController:t,environment:r,appInfo:n,runtime:a}){d(this,$e,void 0);d(this,pt,void 0);d(this,ce,void 0);d(this,z,void 0);d(this,ke,void 0);d(this,le,void 0);d(this,mt,void 0);let{glacierApiUrl:i,proxyApiUrl:s}=Hr(r);e(this,le,a),e(this,$e,new Ot({glacierApiUrl:i,headers:Zt(n)})),e(this,pt,new Vt({proxyApiUrl:s,fetch:c(this,le)?.fetch})),e(this,ce,s),e(this,mt,new Wt({proxyApiUrl:s,fetch:c(this,le)?.fetch})),e(this,z,t),e(this,ke,new gi({baseURL:s+"/proxy/blockaid/",apiKey:Gr,httpAgent:a?.httpAgent,fetch:a?.fetch}));}getProvider(t){return F({chainId:t.chainId,chainName:t.chainName,rpcUrl:t.rpcUrl,multiContractAddress:t.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:t.customRpcHeaders})}getAddress({accountIndex:t,xpub:r,walletType:n}){return zn({accountIndex:t,xpub:r,walletType:n})}buildDerivationPath(t){return Pe(t)}deriveAddress(t){return Xr({...t,approvalController:c(this,z)})}deriveAddresses(t){return Zr({...t,approvalController:c(this,z)})}getBalances({addresses:t,network:r,currency:n,customTokens:a,storage:i,tokenTypes:s,customTokensOnly:c$1}){let l=new re({storage:i,proxyApiUrl:c(this,ce),fetch:c(this,le)?.fetch});return Xn({addresses:t,currency:n,network:r,proxyApiUrl:c(this,ce),customTokens:a,customTokensOnly:c$1,balanceServices:[c(this,$e),c(this,pt)],storage:i,tokenTypes:s,tokenService:l,fetch:c(this,le)?.fetch})}getManifest(){let t=parseManifest(Lr);return t.success?t.data:void 0}getNetworkFee(t){let{chainId:r,chainName:n,rpcUrl:a,utilityAddresses:i,caipId:s,customRpcHeaders:c$1}=t;return ra({chainId:r,chainName:n,rpcUrl:a,multiContractAddress:i?.multicall,caipId:s,proxyApiUrl:c(this,ce),customRpcHeaders:c$1})}getTransactionHistory(t){let{network:r,address:n,nextPageToken:a,offset:i}=t,{chainId:s,networkToken:c$1,explorerUrl:l=""}=r;return ka({chainId:s,networkToken:c$1,explorerUrl:l,address:n,nextPageToken:a,offset:i,glacierService:c(this,$e),hyperEvmEtherscanClient:c(this,mt)})}getTokens(t){let{chainId:r}=t;return wt({chainId:r,proxyApiUrl:c(this,ce)})}async onRpcRequest(t,r){switch(t.method){case RpcMethod.ETH_SEND_TRANSACTION:return Nn({request:t,network:r,approvalController:c(this,z),blockaid:c(this,ke)});case RpcMethod.ETH_SEND_TRANSACTION_BATCH:return cn(c(this,z))?Pn({request:t,network:r,approvalController:c(this,z),blockaid:c(this,ke)}):{error:rpcErrors.methodNotSupported(`Method ${t.method} requires BatchApprovalController`)};case RpcMethod.AVALANCHE_DECLARE_AGENT_IDENTITY:return Kr({request:t,network:r});case RpcMethod.PERSONAL_SIGN:case RpcMethod.ETH_SIGN:case RpcMethod.SIGN_TYPED_DATA:case RpcMethod.SIGN_TYPED_DATA_V1:case RpcMethod.SIGN_TYPED_DATA_V3:case RpcMethod.SIGN_TYPED_DATA_V4:return Wn({request:t,network:r,approvalController:c(this,z),blockaid:c(this,ke)});default:return yi(t.method)?jn(t,r):{error:rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}};$e=new WeakMap,pt=new WeakMap,ce=new WeakMap,z=new WeakMap,ke=new WeakMap,le=new WeakMap,mt=new WeakMap,a(Nr,"EvmModule");var Na=Nr,yi=a(e=>e.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(e),"shouldForwardToRpcNode");
|
|
35
35
|
|
|
36
|
-
export {
|
|
36
|
+
export { K as ERC20TransactionType, Na as EvmModule, rn as NonContractCallTypes, sr as TransactionKind, Be as addIdToPromise, yd as isTypedData, On as isTypedDataV1, Ue as settleAllIdPromises };
|
|
37
37
|
//# sourceMappingURL=out.js.map
|
|
38
38
|
//# sourceMappingURL=index.js.map
|