@avalabs/evm-module 3.14.0 → 4.0.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 +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -12,7 +12,12 @@ type EvmRuntimeParams = RuntimeParams & {
|
|
|
12
12
|
features?: Partial<EvmModuleFeatures>;
|
|
13
13
|
};
|
|
14
14
|
type EvmConstructorParams = Omit<ConstructorParams, 'runtime'> & {
|
|
15
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Required: the module's internal Glacier calls (EVM balances, transaction
|
|
17
|
+
* history) go through core-proxy-api, which rejects requests without auth
|
|
18
|
+
* headers (Firebase AppCheck) — so `getAuthHeaders` must be supplied.
|
|
19
|
+
*/
|
|
20
|
+
runtime: EvmRuntimeParams & Required<Pick<RuntimeParams, 'getAuthHeaders'>>;
|
|
16
21
|
};
|
|
17
22
|
declare class EvmModule implements Module {
|
|
18
23
|
#private;
|
package/dist/index.d.ts
CHANGED
|
@@ -12,7 +12,12 @@ type EvmRuntimeParams = RuntimeParams & {
|
|
|
12
12
|
features?: Partial<EvmModuleFeatures>;
|
|
13
13
|
};
|
|
14
14
|
type EvmConstructorParams = Omit<ConstructorParams, 'runtime'> & {
|
|
15
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Required: the module's internal Glacier calls (EVM balances, transaction
|
|
17
|
+
* history) go through core-proxy-api, which rejects requests without auth
|
|
18
|
+
* headers (Firebase AppCheck) — so `getAuthHeaders` must be supplied.
|
|
19
|
+
*/
|
|
20
|
+
runtime: EvmRuntimeParams & Required<Pick<RuntimeParams, 'getAuthHeaders'>>;
|
|
16
21
|
};
|
|
17
22
|
declare class EvmModule implements Module {
|
|
18
23
|
#private;
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ import yn from 'xss';
|
|
|
14
14
|
import { ChainId } from '@avalabs/core-chains-sdk';
|
|
15
15
|
import Bo from 'lodash.startcase';
|
|
16
16
|
|
|
17
|
-
function _r(e){let t,r=0;for(t=0;t<e.length;t++)r+=e.charCodeAt(t)*(t+1);return r}a(_r,"charsum");function qt(e){let t,r=0;for(t=0;t<e.length;t++){let n=_r(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=$.exponential()})=>{let a=0,i=0,s;for(;i<r;){i>0&&await Ua(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 $=zt;function Ua(e){return new Promise(t=>setTimeout(t,e))}a(Ua,"delay");var Kt=a(e=>me({operation:t=>e(t>0),maxRetries:2,backoffPolicy:$.constant(1),isSuccess:t=>t?.status?.error_code!==429}),"coingeckoRetry");async function G(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(G,"fetchAndVerify");var Yt=class Yt{constructor(t,r){this.proxyApiUrl=t;this.fetchFn=r;}simplePrice(t){let r=new URLSearchParams(t);return G([`${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 G([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],RawSimplePriceResponseSchema,this.fetchFn)}};a(Yt,"CoingeckoProxyClient");var je=Yt;var Fa=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 G([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],Fa)}};a(Jt,"WatchlistProxyClient");var dt=Jt;var re,de,ue,ve,Xt=class Xt{constructor({storage:t,proxyApiUrl:r,fetch:n}){d(this,re,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,re,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,re)?.get?.(i),n)return n;try{n=await Kt(s=>this.simplePrice({coinIds:t,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{n=void 0;}return c(this,re)?.set?.(i,n),n}async getPricesByAddresses(t,r,n=VsCurrencyType.USD){let a,s=`getPricesWithMarketDataByAddresses-${`${qt(t)}-${r}-${n}`}`;if(a=c(this,re)?.get?.(s),a)return a;try{a=await Kt(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:t,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),a=void 0;}return c(this,re)?.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})}};re=new WeakMap,de=new WeakMap,ue=new WeakMap,ve=new WeakMap,a(Xt,"TokenService");var ne=Xt;var Wa="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",ja="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",Br=object({date:string(),usd:record(number())}),ut=a(async()=>{try{return await G([Wa],Br)}catch{return await G([ja],Br)}},"getExchangeRates");var V=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 ft=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 Ur=process.env.GLACIER_API_KEY;var qe=a(()=>Ur,"getGlacierApiKey");var qa=["glacier-api.avax.network","proxy-api.avax.network","proxy-api-dev.avax.network"];function Qt(e){let t=new URL(e),r=qe();if(r&&qa.includes(t.hostname)){let n=t.searchParams;return n.set("token",r),t.search=n.toString(),t.toString()}return e}a(Qt,"addGlacierAPIKeyIfNeeded");var Ya={rltoken:qe()},ge,yt,ht,Mr,Tt,Lr,er=class er extends FetchHttpRequest{constructor(r){super(r);d(this,ht);d(this,Tt);d(this,ge,0);d(this,yt,$.exponential());}request(r){let n={...Ya,...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,Lr).call(this,i):f(this,ht,Mr).call(this,i)}};ge=new WeakMap,yt=new WeakMap,ht=new WeakSet,Mr=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,Lr=a(function(r){let n=c(this,yt).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(er,"GlacierFetchHttpRequest");var ze=er;var j=a((e,t)=>({message:`${e}${t instanceof Error?`: ${t.message}`:""}`,data:{cause:t}}),"rpcErrorOpts");var Gr={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 Vr="DUMMY_API_KEY";var Xa={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"},Or=a(e=>{switch(e){case Environment.PRODUCTION:return Xa;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 M=a(async e=>{let{chainId:t,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:i=2e3,customRpcHeaders:s}=e,c=Qt(n),l=c;if(s){let m=new FetchRequest(c);for(let[u,f]of Object.entries(s))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");var ns=5*60*1e3,as={43114:"0x8004BAa17C55a88189AE136b182e5fdA19dE9b63"},ss=["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)"],os=["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)"],qr=new Map,is=a(e=>e===null?"unknown":e>=75?"high":e>=40?"medium":"low","getTrustLevel"),cs=a(e=>e===null||!Number.isFinite(e)?null:Math.max(0,Math.min(100,Math.trunc(e))),"clampScore"),nr=a(e=>{let t=typeof e=="bigint"?Number(e):e;return Number.isFinite(t)?t:null},"toNumber"),zr=a((e,t)=>{let r=nr(e),n=nr(t);return r===null||n===null||n<0?null:r/10**n},"scaleFixedPoint"),ls=a(e=>Array.isArray(e),"isReputationSummaryTuple"),Ie=a(e=>Array.isArray(e),"isReputationFeedbackTuple"),ps=a(e=>ls(e)?{count:e[0],summaryValue:e[1],summaryValueDecimals:e[2]}:e,"getSummaryValue"),ms=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"),ds=a(e=>{let t=e.filter(r=>r!==null);return t.length?t.reduce((r,n)=>r+n,0)/t.length:null},"averageScores"),tr="starred",us=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"),gs=a(e=>Ie(e)?e[0]:e.clients,"getFeedbackClients"),fs=a(async(e,t,r)=>{try{if(getAddress(await e.getIdentityRegistry())!==t)return null;let a=await e.readAllFeedback(r,[],tr,"",!1),i=ms(a).filter(c=>c.tag1===void 0||c.tag1===tr).filter(c=>!c.isRevoked),s=us(gs(a));if(s.length)try{let c=ps(await e.getSummary(r,s,tr,""));if(nr(c.count))return zr(c.summaryValue,c.summaryValueDecimals)}catch{}return ds(i.map(c=>zr(c.value,c.valueDecimals)))}catch{return null}},"resolveReputationScore"),ys=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"),rr=a(e=>({agentId:e.agentId,agentRegistry:e.agentRegistry,owner:null,reputationScore:null,metadataUri:null,trustLevel:"unknown"}),"buildFallback"),Kr=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"),ae=a(async({declaration:e,rpcUrl:t,chainId:r,chainName:n,customRpcHeaders:a})=>{let i=qr.get(`${t}:${e.agentRegistry}:${e.agentId}`);if(i&&i.expiresAt>Date.now())return i.value;let s=ys(e.agentRegistry);if(!s)return rr(e);if(!/^\d+$/.test(e.agentId))return rr({...e,agentRegistry:`eip155:${s.chainId}:${s.address}`});let c={...e,agentRegistry:`eip155:${s.chainId}:${s.address}`},l=rr(c),p=await M({chainId:r,chainName:n,rpcUrl:t,customRpcHeaders:a}),m=new Contract(s.address,ss,p),u=as[s.chainId],f=u?new Contract(u,os,p):null,[y,g,k]=await Promise.all([Kr([async()=>getAddress(await m.ownerOf(BigInt(e.agentId)))]),Kr([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"))]),f?fs(f,s.address,BigInt(e.agentId)):Promise.resolve(null)]),T=cs(k??null),P={...l,owner:y??null,metadataUri:g??null,reputationScore:T,trustLevel:is(T)};return qr.set(`${t}:${e.agentRegistry}:${e.agentId}`,{expiresAt:Date.now()+ns,value:P}),P},"resolveAgentIdentity");var Ts=z$1.object({agentId:z$1.coerce.string().regex(/^\d+$/),agentRegistry:z$1.string().min(1)}),Jr=a(async({request:e,network:t})=>{let r=Ts.safeParse(e.params);return r.success?{result:await ae({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 Xr=a(e=>"derivationPathType"in e&&"accountIndex"in e&&typeof e.accountIndex=="number"&&typeof e.derivationPathType=="string","hasDerivationDetails");var Zr=a(async e=>{let{secretId:t,approvalController:r}=e,n=Xr(e)?Pe(e).EVM:void 0,a=await r.requestPublicKey({curve:"secp256k1",secretId:t,derivationPath:n});return {[NetworkVMType.EVM]:computeAddress(`0x${a}`)}},"deriveAddress");var Qr=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 en=z$1.tuple([Ae,Ae]).rest(Ae).refine(e=>sr(e,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(e=>sr(e,"from"),{message:'All transactions must use the same "from" address'}).refine(e=>Ss(e,"nonce")||As(e,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'}),Ps=z$1.object({skipIntermediateTxs:z$1.boolean().optional()}),Is=z$1.union([en,z$1.object({transactions:en,options:Ps.optional()})]);function As(e,t){return !sr(e,t)}a(As,"areAllDifferentByProp");function Ss(e,t){return e.every(r=>r[t]===void 0||r[t]==="")}a(Ss,"areAllEmptyByProp");function sr(e,t){return new Set(e.map(n=>n[t])).size===1}a(sr,"areAllEqualByProp");var tn=a(e=>{let t=Is.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 rn=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 xs=a(e=>e.startsWith("https://")||e.startsWith("http://")||e.startsWith("ipfs://"),"isNavigableMetadataUri"),Cs=a(e=>e.startsWith("data:"),"isEmbeddedDataUri"),Se=a(e=>{let t=[V("Agent ID",e.agentId),V("Registry",e.agentRegistry,"vertical"),V("Trust level",e.trustLevel)];return e.reputationScore!==null&&t.push(V("Reputation score",String(e.reputationScore))),e.owner&&t.push(Y("Owner",e.owner)),e.metadataUri&&t.push(xs(e.metadataUri)?Re("Metadata",{url:e.metadataUri,name:e.metadataUri}):Cs(e.metadataUri)?V("Metadata","Embedded data URI","vertical"):V("Metadata",e.metadataUri,"vertical")),{title:"Agent Identity",items:t}},"buildAgentIdentityDetailSection");var nn=[TransactionType.SEND,TransactionType.RECEIVE,TransactionType.TRANSFER,TransactionType.NFT_SEND,TransactionType.NFT_RECEIVE],J=(s=>(s.TOTAL_SUPPLY="totalSupply",s.BALANCE_OF="balanceOf",s.TRANSFER="transfer",s.TRANSFER_FROM="transferFrom",s.APPROVE="approve",s.ALLOWANCE="allowance",s))(J||{}),or=(n=>(n.NATIVE_TRANSFER="native_transfer",n.ERC20_TRANSFER="erc20_transfer",n.CONTRACT_CALL="contract_call",n))(or||{});var xe=a(e=>{if(e.data)try{let r=new Interface(Tn.abi).parseTransaction({data:e.data,value:e.value}),n=r?.name??r?.fragment?.name;return n&&_s(n)?n:void 0}catch{return}},"parseERC20TransactionType");function _s(e){return Object.values(J).includes(e)}a(_s,"isERC20TransactionType");var an=a(e=>{if(e.data)try{let r=new Interface(Tn.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 sn=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 on=["function register(((uint256[2],uint256[2][2],uint256[2]),uint256[5]) proof)","function setAuditorPublicKey(address user)","function privateMint(address user, ((uint256[2],uint256[2][2],uint256[2]),uint256[24]) proof)","function privateMint(address user, ((uint256[2],uint256[2][2],uint256[2]),uint256[24]) proof, bytes message)","function deposit(uint256 amount, address tokenAddress, uint256[7] amountPCT)","function deposit(uint256 amount, address tokenAddress, uint256[7] amountPCT, bytes message)","function transfer(address to, uint256 tokenId, ((uint256[2],uint256[2][2],uint256[2]),uint256[32]) proof, uint256[7] balancePCT)","function transfer(address to, uint256 tokenId, ((uint256[2],uint256[2][2],uint256[2]),uint256[32]) proof, uint256[7] balancePCT, bytes message)","function withdraw(uint256 tokenId, ((uint256[2],uint256[2][2],uint256[2]),uint256[16]) proof, uint256[7] balancePCT)","function withdraw(uint256 tokenId, ((uint256[2],uint256[2][2],uint256[2]),uint256[16]) proof, uint256[7] balancePCT, bytes message)"];var cn=(s=>(s.REGISTER="register",s.DEPOSIT="deposit",s.TRANSFER="transfer",s.WITHDRAW="withdraw",s.PRIVATE_MINT="privateMint",s.SET_AUDITOR_PUBLIC_KEY="setAuditorPublicKey",s))(cn||{}),Fs=new Interface(on),ln=a(e=>{if(!(!e.data||e.data==="0x"))try{let t=Fs.parseTransaction({data:e.data,value:e.value}),r=t?.name??t?.fragment?.name;return r&&Ms(r)?{operation:r}:void 0}catch{return}},"parseEercTransaction");function Ms(e){return Object.values(cn).includes(e)}a(Ms,"isEercOperation");var vt=a((e,t,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:i,alert:s},c,l=!1)=>{let{dappInfo:p}=e,m=xe(r),u="Do you approve this transaction?";m==="approve"&&(u="Do you approve this spend limit?");let f=an(r),y=[Y("Account",r.from),ft("Network",{name:t.chainName,logoUri:t.logoUri}),Re("Website",p)].filter(P=>!!P),g=sn(r);if(g!=="contract_call"&&f&&y.push(Y("To",f)),r.to&&["erc20_transfer","contract_call"].includes(g)&&y.push(Y("Contract",r.to)),l){let P=ln(r);P&&(y.push(V("Operation",P.operation)),y.push(V("Privacy","eERC20")));}let k={title:u,details:[{title:"Transaction Details",items:y},...c?[Se(c)]:[]],networkFeeSelector:!0,alert:s,balanceChange:a,tokenApprovals:i,isSimulationSuccessful:n},T={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:k,signingData:T}},"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:$.linearThenExponential(4,1e3)}):n()},"getTxHash");function se(e,t,r="tx"){return `${e}/${r}/${t}`}a(se,"getExplorerAddressByNetwork");var Je=a(async({explorerUrl:e,provider:t,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:i,request:s})=>{try{let c=se(e,r);if(n({txHash:r,request:s,explorerLink:c}),(await me({operation:async()=>t.getTransactionReceipt(r),isSuccess:m=>!!m,backoffPolicy:$.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,pn=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: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 Et.set(e,p),p},cleanup:()=>Et.delete(e)}),"getTxBatchUpdater");function fe(e){return !("type"in e)}a(fe,"isNetworkToken");function Pt(e){return e.type===TokenType.ERC20}a(Pt,"isERC20Token");function mn(e){return typeof e.to=="string"}a(mn,"hasToField");function dn(e){return "requestBatchApproval"in e&&typeof e.requestBatchApproval=="function"}a(dn,"supportsBatchApprovals");function Hs(e){return typeof e=="object"&&e!==null&&"ins"in e&&"outs"in e&&Array.isArray(e.ins)&&Array.isArray(e.outs)}a(Hs,"isBalanceChange");function Os(e){return typeof e=="object"&&e!==null&&"approvals"in e&&"isEditable"in e&&Array.isArray(e.approvals)}a(Os,"isTokenApprovals");function ir(e){return Hs(e)?e.ins.length===0&&e.outs.length===0:Os(e)?e.approvals.length===0:!1}a(ir,"isEmpty");var un=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"),gn=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"),fn=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 kn=a(async(e,t,r)=>{if(!e.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.Contract(e.to,Tn.abi,r),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),i=yn(a[0]),s=yn(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(Tn.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 oe={[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 vn=a(async({rpcMethod:e,dAppUrl:t,params:r,chainId:n,provider:a,blockaid:i})=>{let s;try{s=await gn({chainId:n,params:r,domain:t,blockaid:i});}catch(c){console.error("simulateTransaction error",c);}return cr({rpcMethod:e,params:r,chainId:n,provider:a,simulationResult:s})},"simulateTransaction"),cr=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:f}=a;m?.result_type==="Warning"?i=oe[AlertType.WARNING]:m?.result_type==="Malicious"&&(i=oe[AlertType.DANGER]),u?.status==="Success"&&(l=!0,c=Rn(e,u.account_summary),s=En(u.account_summary.assets_diffs)),f?.status==="Success"&&(p=Number(f.estimate));}if(!l&&mn(t)){let m=await kn(t,r,n);s=m.balanceChange,c=m.tokenApprovals;}return {alert:i,balanceChange:s,tokenApprovals:c,isSimulationSuccessful:l,estimatedGasLimit:p}},"processTransactionSimulation"),Js=a(e=>e.trace_type==="ExposureTrace","isExposureTrace"),Xs=a((e,t)=>`${e.toLowerCase()}.${t.toLowerCase()}`,"normalizeAddresses"),Zs=a(e=>e===void 0||e.length===0?{}:e.reduce((t,r)=>Js(r)?{[Xs(r.spender,r.asset.address)]:r}:t,{}),"mapExposureTracesToSpenderAsset"),Rn=a((e,t)=>{let{traces:r}=t,n=Zs(r),a=Object.entries(n).map(([s,c])=>{let l=Pn(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"),En=a(e=>{let t=bn(e,"in"),r=bn(e,"out");if(!(t.length===0&&r.length===0))return {ins:t,outs:r}},"processBalanceChange"),bn=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?Pn(n):Qs(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"),Pn=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"),Qs=a(e=>({name:e.name??"",symbol:e.symbol??"",decimals:e.decimals,description:"",logoUri:e.logo_url}),"convertNativeAssetToToken"),In=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 fn({chainId:n,accountAddress:r,data:a,domain:t,blockaid:i});p?.result_type==="Warning"?s=oe[AlertType.WARNING]:p?.result_type==="Malicious"&&(s=oe[AlertType.DANGER]),m?.status==="Success"&&(l=Rn(e.method,m.account_summary),c=En(m.account_summary.assets_diffs));}catch(p){console.error("processJsonRpcSimulation error",p),s=oe[AlertType.WARNING];}return {alert:s,balanceChange:c,tokenApprovals:l}},"processJsonRpcSimulation");var Sn=a(async({rpcMethod:e,dAppUrl:t,params:r,chainId:n,provider:a,populateMissingGas:i,blockaid:s})=>{let c;try{c=await un({chainId:n,params:r,domain:t,withGasEstimation:i,blockaid:s});}catch(y){return console.error("simulateTransactionBatch error",y),{isSimulationSuccessful:!1,alert:oe[AlertType.WARNING],scans:[]}}let l=await Promise.all(c.map(async(y,g)=>{let k=r[g],T=await cr({chainId:n,params:r[g],provider:a,rpcMethod:e,simulationResult:y});return i&&!k.gas&&T.estimatedGasLimit&&(k.gas=`0x${T.estimatedGasLimit.toString(16)}`),{transaction:k,...T}})),p=l.every(y=>y.isSimulationSuccessful),m=eo(l),u=ro(l),f=to(l);return {isSimulationSuccessful:p,alert:m,balanceChange:u,tokenApprovals:f,scans:l.map(y=>(y.tokenApprovals&&(y.tokenApprovals.isEditable=!1),y))}},"simulateTransactionBatch"),eo=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"),to=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 no(t,e),ir(t)?void 0:t},"aggregateTokenApprovals"),ro=a(e=>{let t=e.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(a=>{let i=An(r.ins,a);i?i.items.push(...a.items):r.ins.push(a);}),n.outs.forEach(a=>{let i=An(r.outs,a);i?i.items.push(...a.items):r.outs.push({...a});})),r),{ins:[],outs:[]});return ir(t)?void 0:t},"aggregateBalanceChange"),An=a((e,t)=>e.find(r=>fe(r.token)&&fe(t.token)?r.token.symbol===t.token.symbol:!fe(r.token)&&!fe(t.token)?r.token.address===t.token.address:!1),"findTokenDiff"),no=a((e,t)=>{for(let r of e.approvals)for(let n of t)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(i=>!fe(i.token)&&!fe(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 ao=a(e=>{if(!e||typeof e!="object")return !1;let t=e;return typeof t.agentId=="string"&&typeof t.agentRegistry=="string"},"isAgentIdentityDeclaration"),Ne=a(e=>{let t=e.context?.agentIdentity;return ao(t)?t:null},"getAgentIdentityFromContext");var xn=a(async({request:e,network:t,approvalController:r,blockaid:n})=>{let{params:a}=e,{data:i,success:s,error:c}=tn(a);if(!s)return console.error("invalid params",c),{error:rpcErrors.invalidParams(j("Transaction params are invalid",c))};let{transactions:l,options:p={}}=i,{skipIntermediateTxs:m=!1}=p,u=await M({chainId:t.chainId,chainName:t.chainName,rpcUrl:t.rpcUrl,multiContractAddress:t.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:t.customRpcHeaders});try{await rn(l,u);}catch(H){return console.error("Unable to calculate nonce",H),{error:rpcErrors.internal(j("Unable to calculate nonce",H))}}let f=l.every(H=>Number(H.gas)>0),{alert:y,balanceChange:g,isSimulationSuccessful:k,tokenApprovals:T,scans:P}=await Sn({rpcMethod:e.method,chainId:t.chainId,params:l,dAppUrl:e.dappInfo.url,provider:u,populateMissingGas:!f,blockaid:n});if(!P.every(({transaction:H})=>Number(H.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=Ne(e),N=w?await ae({declaration:w,rpcUrl:t.rpcUrl,chainId:t.chainId,chainName:t.chainName,customRpcHeaders:t.customRpcHeaders}):void 0,x={title:"Do you approve these transactions?",details:[{title:"Transaction Details",items:[Y("Account",l[0].from),ft("Network",{name:t.chainName,logoUri:t.logoUri}),Re("Website",e.dappInfo)]},...N?[Se(N)]:[]],isSimulationSuccessful:k,balanceChange:g,alert:y,tokenApprovals:T,networkFeeSelector:!0},pe=P.map(H=>vt(e,t,H.transaction,H,N)),{cleanup:I,updateTx:A}=pn(e.requestId,pe,x),B=await r.requestBatchApproval({request:e,signingRequests:pe,displayData:x,updateTx:A});if(I(),"error"in B)return {error:B.error};if(B.result.length!==l.length)return {error:rpcErrors.internal({message:`Invalid number of signatures. Expected ${l.length}, got ${B.result.length}`})};let We=[];for(let[H,Ba]of B.result.entries()){let wr=H===B.result.length-1,jt=await Rt(u,Ba);if(wr&&Je({explorerUrl:t.explorerUrl??"",provider:u,txHash:jt,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),!wr&&!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 ${H+1} failed! Batch execution stopped`})};We.push(jt);}return {result:We}},"ethSendTransactionBatch");function Cn(e,t,r){return new ethers.Contract(e,Tn.abi).interface.encodeFunctionData("approve",[t,r])}a(Cn,"encodeApprovalLimit");var St=new Map,Nn=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 y=p.tokenApprovals;io(y),co(l.data.data);let g=y.approvals[0];m.data.data=Cn(g.token.address,g.spenderAddress,i),u.tokenApprovals={approvals:[{...g,value:i}],isEditable:!0};}let f={signingData:m,displayData:u};return St.set(e,f),f},cleanup:()=>St.delete(e)}),"getTxUpdater");function io(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(io,"ensureTokenApprovalCanBeEdited");function co(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(co,"ensureApproveWasCalled");var wn=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 po=z$1.tuple([Ae]),_n=a(e=>po.safeParse(e),"parseRequestParams");var Dn=a(async({request:e,network:t,approvalController:r,blockaid:n,eercEnabled:a=!1})=>{let{params:i}=e,{data:s,error:c,success:l}=_n(i);if(!l)return console.error("invalid params",c),{error:rpcErrors.invalidParams(j("Transaction params are invalid",c))};let[p]=s,m=await M({chainId:t.chainId,chainName:t.chainName,rpcUrl:t.rpcUrl,multiContractAddress:t.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:t.customRpcHeaders});if(!p.gas||Number(p.gas)<0)try{let x=await wn({transactionParams:{from:p.from,to:p.to,data:p.data,value:p.value,accessList:p.accessList},provider:m});p.gas="0x"+x.toString(16);}catch(x){return {error:rpcErrors.internal(j("Unable to calculate gas limit",x))}}if(!p.nonce)try{let x=await bt({from:p.from,provider:m});p.nonce=String(x);}catch(x){return {error:rpcErrors.internal(j("Unable to calculate nonce",x))}}let u=Ne(e),f=u?await ae({declaration:u,rpcUrl:t.rpcUrl,chainId:t.chainId,chainName:t.chainName,customRpcHeaders:t.customRpcHeaders}):void 0,y=await vn({rpcMethod:e.method,chainId:t.chainId,params:p,dAppUrl:e.dappInfo.url,provider:m,blockaid:n}),{displayData:g,signingData:k}=vt(e,t,p,y,f,a),{updateTx:T,cleanup:P}=Nn(e.requestId,k,g),v=await r.requestApproval({request:e,displayData:g,signingData:k,updateTx:T});if(P(),"error"in v)return {error:v.error};let w,N=e.context?.shouldRetry===!0;try{w=await Rt(m,v,{shouldRetry:N});}catch(x){return {error:rpcErrors.internal(j("Unable to get transaction hash",x))}}return Je({explorerUrl:t.explorerUrl??"",provider:m,txHash:w,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),{result:w}},"ethSendTransaction");var lr=a(e=>{let t="";t+=`Domain
|
|
17
|
+
function _r(e){let t,r=0;for(t=0;t<e.length;t++)r+=e.charCodeAt(t)*(t+1);return r}a(_r,"charsum");function qt(e){let t,r=0;for(t=0;t<e.length;t++){let n=_r(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=W.exponential()})=>{let a=0,i=0,s;for(;i<r;){i>0&&await Ua(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 W=zt;function Ua(e){return new Promise(t=>setTimeout(t,e))}a(Ua,"delay");var Kt=a(e=>me({operation:t=>e(t>0),maxRetries:2,backoffPolicy:W.constant(1),isSuccess:t=>t?.status?.error_code!==429}),"coingeckoRetry");async function G(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(G,"fetchAndVerify");var Yt=class Yt{constructor(t,r){this.proxyApiUrl=t;this.fetchFn=r;}simplePrice(t){let r=new URLSearchParams(t);return G([`${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 G([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],RawSimplePriceResponseSchema,this.fetchFn)}};a(Yt,"CoingeckoProxyClient");var je=Yt;var Fa=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 G([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],Fa)}};a(Jt,"WatchlistProxyClient");var dt=Jt;var re,de,ue,ve,Xt=class Xt{constructor({storage:t,proxyApiUrl:r,fetch:n}){d(this,re,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,re,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,re)?.get?.(i),n)return n;try{n=await Kt(s=>this.simplePrice({coinIds:t,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{n=void 0;}return c(this,re)?.set?.(i,n),n}async getPricesByAddresses(t,r,n=VsCurrencyType.USD){let a,s=`getPricesWithMarketDataByAddresses-${`${qt(t)}-${r}-${n}`}`;if(a=c(this,re)?.get?.(s),a)return a;try{a=await Kt(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:t,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),a=void 0;}return c(this,re)?.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})}};re=new WeakMap,de=new WeakMap,ue=new WeakMap,ve=new WeakMap,a(Xt,"TokenService");var ne=Xt;var Wa="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",ja="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",Br=object({date:string(),usd:record(number())}),ut=a(async()=>{try{return await G([Wa],Br)}catch{return await G([ja],Br)}},"getExchangeRates");var V=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 ft=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 Ur=process.env.GLACIER_API_KEY;var qe=a(()=>Ur,"getGlacierApiKey");var qa=["glacier-api.avax.network","proxy-api.avax.network","proxy-api-dev.avax.network","core-proxy-api.avax.network","core-proxy-api.avax-test.network"];function Qt(e){let t=new URL(e),r=qe();if(r&&qa.includes(t.hostname)){let n=t.searchParams;return n.set("token",r),t.search=n.toString(),t.toString()}return e}a(Qt,"addGlacierAPIKeyIfNeeded");var Ya={rltoken:qe()},ge,yt,ht,Mr,Tt,Lr,er=class er extends FetchHttpRequest{constructor(r){super(r);d(this,ht);d(this,Tt);d(this,ge,0);d(this,yt,W.exponential());}request(r){let n={...Ya,...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,Lr).call(this,i):f(this,ht,Mr).call(this,i)}};ge=new WeakMap,yt=new WeakMap,ht=new WeakSet,Mr=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,Lr=a(function(r){let n=c(this,yt).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(er,"GlacierFetchHttpRequest");var ze=er;var j=a((e,t)=>({message:`${e}${t instanceof Error?`: ${t.message}`:""}`,data:{cause:t}}),"rpcErrorOpts");var Gr={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 Vr="DUMMY_API_KEY";var Xa={glacierApiUrl:"https://core-proxy-api.avax.network/v1/proxy/glacier",proxyApiUrl:"https://proxy-api.avax.network"},Za={glacierApiUrl:"https://core-proxy-api.avax-test.network/v1/proxy/glacier",proxyApiUrl:"https://proxy-api-dev.avax.network"},Or=a(e=>{switch(e){case Environment.PRODUCTION:return Xa;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 M=a(async e=>{let{chainId:t,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:i=2e3,customRpcHeaders:s}=e,c=Qt(n),l=c;if(s){let m=new FetchRequest(c);for(let[u,f]of Object.entries(s))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");var ns=5*60*1e3,as={43114:"0x8004BAa17C55a88189AE136b182e5fdA19dE9b63"},ss=["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)"],os=["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)"],qr=new Map,is=a(e=>e===null?"unknown":e>=75?"high":e>=40?"medium":"low","getTrustLevel"),cs=a(e=>e===null||!Number.isFinite(e)?null:Math.max(0,Math.min(100,Math.trunc(e))),"clampScore"),nr=a(e=>{let t=typeof e=="bigint"?Number(e):e;return Number.isFinite(t)?t:null},"toNumber"),zr=a((e,t)=>{let r=nr(e),n=nr(t);return r===null||n===null||n<0?null:r/10**n},"scaleFixedPoint"),ls=a(e=>Array.isArray(e),"isReputationSummaryTuple"),Ie=a(e=>Array.isArray(e),"isReputationFeedbackTuple"),ps=a(e=>ls(e)?{count:e[0],summaryValue:e[1],summaryValueDecimals:e[2]}:e,"getSummaryValue"),ms=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"),ds=a(e=>{let t=e.filter(r=>r!==null);return t.length?t.reduce((r,n)=>r+n,0)/t.length:null},"averageScores"),tr="starred",us=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"),gs=a(e=>Ie(e)?e[0]:e.clients,"getFeedbackClients"),fs=a(async(e,t,r)=>{try{if(getAddress(await e.getIdentityRegistry())!==t)return null;let a=await e.readAllFeedback(r,[],tr,"",!1),i=ms(a).filter(c=>c.tag1===void 0||c.tag1===tr).filter(c=>!c.isRevoked),s=us(gs(a));if(s.length)try{let c=ps(await e.getSummary(r,s,tr,""));if(nr(c.count))return zr(c.summaryValue,c.summaryValueDecimals)}catch{}return ds(i.map(c=>zr(c.value,c.valueDecimals)))}catch{return null}},"resolveReputationScore"),ys=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"),rr=a(e=>({agentId:e.agentId,agentRegistry:e.agentRegistry,owner:null,reputationScore:null,metadataUri:null,trustLevel:"unknown"}),"buildFallback"),Kr=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"),ae=a(async({declaration:e,rpcUrl:t,chainId:r,chainName:n,customRpcHeaders:a})=>{let i=qr.get(`${t}:${e.agentRegistry}:${e.agentId}`);if(i&&i.expiresAt>Date.now())return i.value;let s=ys(e.agentRegistry);if(!s)return rr(e);if(!/^\d+$/.test(e.agentId))return rr({...e,agentRegistry:`eip155:${s.chainId}:${s.address}`});let c={...e,agentRegistry:`eip155:${s.chainId}:${s.address}`},l=rr(c),p=await M({chainId:r,chainName:n,rpcUrl:t,customRpcHeaders:a}),m=new Contract(s.address,ss,p),u=as[s.chainId],f=u?new Contract(u,os,p):null,[y,g,k]=await Promise.all([Kr([async()=>getAddress(await m.ownerOf(BigInt(e.agentId)))]),Kr([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"))]),f?fs(f,s.address,BigInt(e.agentId)):Promise.resolve(null)]),T=cs(k??null),P={...l,owner:y??null,metadataUri:g??null,reputationScore:T,trustLevel:is(T)};return qr.set(`${t}:${e.agentRegistry}:${e.agentId}`,{expiresAt:Date.now()+ns,value:P}),P},"resolveAgentIdentity");var Ts=z$1.object({agentId:z$1.coerce.string().regex(/^\d+$/),agentRegistry:z$1.string().min(1)}),Jr=a(async({request:e,network:t})=>{let r=Ts.safeParse(e.params);return r.success?{result:await ae({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 Xr=a(e=>"derivationPathType"in e&&"accountIndex"in e&&typeof e.accountIndex=="number"&&typeof e.derivationPathType=="string","hasDerivationDetails");var Zr=a(async e=>{let{secretId:t,approvalController:r}=e,n=Xr(e)?Pe(e).EVM:void 0,a=await r.requestPublicKey({curve:"secp256k1",secretId:t,derivationPath:n});return {[NetworkVMType.EVM]:computeAddress(`0x${a}`)}},"deriveAddress");var Qr=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 en=z$1.tuple([Ae,Ae]).rest(Ae).refine(e=>sr(e,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(e=>sr(e,"from"),{message:'All transactions must use the same "from" address'}).refine(e=>Ss(e,"nonce")||As(e,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'}),Ps=z$1.object({skipIntermediateTxs:z$1.boolean().optional()}),Is=z$1.union([en,z$1.object({transactions:en,options:Ps.optional()})]);function As(e,t){return !sr(e,t)}a(As,"areAllDifferentByProp");function Ss(e,t){return e.every(r=>r[t]===void 0||r[t]==="")}a(Ss,"areAllEmptyByProp");function sr(e,t){return new Set(e.map(n=>n[t])).size===1}a(sr,"areAllEqualByProp");var tn=a(e=>{let t=Is.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 rn=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 xs=a(e=>e.startsWith("https://")||e.startsWith("http://")||e.startsWith("ipfs://"),"isNavigableMetadataUri"),Cs=a(e=>e.startsWith("data:"),"isEmbeddedDataUri"),Se=a(e=>{let t=[V("Agent ID",e.agentId),V("Registry",e.agentRegistry,"vertical"),V("Trust level",e.trustLevel)];return e.reputationScore!==null&&t.push(V("Reputation score",String(e.reputationScore))),e.owner&&t.push(Y("Owner",e.owner)),e.metadataUri&&t.push(xs(e.metadataUri)?Re("Metadata",{url:e.metadataUri,name:e.metadataUri}):Cs(e.metadataUri)?V("Metadata","Embedded data URI","vertical"):V("Metadata",e.metadataUri,"vertical")),{title:"Agent Identity",items:t}},"buildAgentIdentityDetailSection");var nn=[TransactionType.SEND,TransactionType.RECEIVE,TransactionType.TRANSFER,TransactionType.NFT_SEND,TransactionType.NFT_RECEIVE],J=(s=>(s.TOTAL_SUPPLY="totalSupply",s.BALANCE_OF="balanceOf",s.TRANSFER="transfer",s.TRANSFER_FROM="transferFrom",s.APPROVE="approve",s.ALLOWANCE="allowance",s))(J||{}),or=(n=>(n.NATIVE_TRANSFER="native_transfer",n.ERC20_TRANSFER="erc20_transfer",n.CONTRACT_CALL="contract_call",n))(or||{});var xe=a(e=>{if(e.data)try{let r=new Interface(Tn.abi).parseTransaction({data:e.data,value:e.value}),n=r?.name??r?.fragment?.name;return n&&_s(n)?n:void 0}catch{return}},"parseERC20TransactionType");function _s(e){return Object.values(J).includes(e)}a(_s,"isERC20TransactionType");var an=a(e=>{if(e.data)try{let r=new Interface(Tn.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 sn=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 on=["function register(((uint256[2],uint256[2][2],uint256[2]),uint256[5]) proof)","function setAuditorPublicKey(address user)","function privateMint(address user, ((uint256[2],uint256[2][2],uint256[2]),uint256[24]) proof)","function privateMint(address user, ((uint256[2],uint256[2][2],uint256[2]),uint256[24]) proof, bytes message)","function deposit(uint256 amount, address tokenAddress, uint256[7] amountPCT)","function deposit(uint256 amount, address tokenAddress, uint256[7] amountPCT, bytes message)","function transfer(address to, uint256 tokenId, ((uint256[2],uint256[2][2],uint256[2]),uint256[32]) proof, uint256[7] balancePCT)","function transfer(address to, uint256 tokenId, ((uint256[2],uint256[2][2],uint256[2]),uint256[32]) proof, uint256[7] balancePCT, bytes message)","function withdraw(uint256 tokenId, ((uint256[2],uint256[2][2],uint256[2]),uint256[16]) proof, uint256[7] balancePCT)","function withdraw(uint256 tokenId, ((uint256[2],uint256[2][2],uint256[2]),uint256[16]) proof, uint256[7] balancePCT, bytes message)"];var cn=(s=>(s.REGISTER="register",s.DEPOSIT="deposit",s.TRANSFER="transfer",s.WITHDRAW="withdraw",s.PRIVATE_MINT="privateMint",s.SET_AUDITOR_PUBLIC_KEY="setAuditorPublicKey",s))(cn||{}),Fs=new Interface(on),ln=a(e=>{if(!(!e.data||e.data==="0x"))try{let t=Fs.parseTransaction({data:e.data,value:e.value}),r=t?.name??t?.fragment?.name;return r&&Ms(r)?{operation:r}:void 0}catch{return}},"parseEercTransaction");function Ms(e){return Object.values(cn).includes(e)}a(Ms,"isEercOperation");var vt=a((e,t,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:i,alert:s},c,l=!1)=>{let{dappInfo:p}=e,m=xe(r),u="Do you approve this transaction?";m==="approve"&&(u="Do you approve this spend limit?");let f=an(r),y=[Y("Account",r.from),ft("Network",{name:t.chainName,logoUri:t.logoUri}),Re("Website",p)].filter(P=>!!P),g=sn(r);if(g!=="contract_call"&&f&&y.push(Y("To",f)),r.to&&["erc20_transfer","contract_call"].includes(g)&&y.push(Y("Contract",r.to)),l){let P=ln(r);P&&(y.push(V("Operation",P.operation)),y.push(V("Privacy","eERC20")));}let k={title:u,details:[{title:"Transaction Details",items:y},...c?[Se(c)]:[]],networkFeeSelector:!0,alert:s,balanceChange:a,tokenApprovals:i,isSimulationSuccessful:n},T={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:k,signingData:T}},"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:W.linearThenExponential(4,1e3)}):n()},"getTxHash");function se(e,t,r="tx"){return `${e}/${r}/${t}`}a(se,"getExplorerAddressByNetwork");var Je=a(async({explorerUrl:e,provider:t,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:i,request:s})=>{try{let c=se(e,r);if(n({txHash:r,request:s,explorerLink:c}),(await me({operation:async()=>t.getTransactionReceipt(r),isSuccess:m=>!!m,backoffPolicy:W.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,pn=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: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 Et.set(e,p),p},cleanup:()=>Et.delete(e)}),"getTxBatchUpdater");function fe(e){return !("type"in e)}a(fe,"isNetworkToken");function Pt(e){return e.type===TokenType.ERC20}a(Pt,"isERC20Token");function mn(e){return typeof e.to=="string"}a(mn,"hasToField");function dn(e){return "requestBatchApproval"in e&&typeof e.requestBatchApproval=="function"}a(dn,"supportsBatchApprovals");function Hs(e){return typeof e=="object"&&e!==null&&"ins"in e&&"outs"in e&&Array.isArray(e.ins)&&Array.isArray(e.outs)}a(Hs,"isBalanceChange");function Os(e){return typeof e=="object"&&e!==null&&"approvals"in e&&"isEditable"in e&&Array.isArray(e.approvals)}a(Os,"isTokenApprovals");function ir(e){return Hs(e)?e.ins.length===0&&e.outs.length===0:Os(e)?e.approvals.length===0:!1}a(ir,"isEmpty");var un=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"),gn=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"),fn=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 kn=a(async(e,t,r)=>{if(!e.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.Contract(e.to,Tn.abi,r),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),i=yn(a[0]),s=yn(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(Tn.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 oe={[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 vn=a(async({rpcMethod:e,dAppUrl:t,params:r,chainId:n,provider:a,blockaid:i})=>{let s;try{s=await gn({chainId:n,params:r,domain:t,blockaid:i});}catch(c){console.error("simulateTransaction error",c);}return cr({rpcMethod:e,params:r,chainId:n,provider:a,simulationResult:s})},"simulateTransaction"),cr=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:f}=a;m?.result_type==="Warning"?i=oe[AlertType.WARNING]:m?.result_type==="Malicious"&&(i=oe[AlertType.DANGER]),u?.status==="Success"&&(l=!0,c=Rn(e,u.account_summary),s=En(u.account_summary.assets_diffs)),f?.status==="Success"&&(p=Number(f.estimate));}if(!l&&mn(t)){let m=await kn(t,r,n);s=m.balanceChange,c=m.tokenApprovals;}return {alert:i,balanceChange:s,tokenApprovals:c,isSimulationSuccessful:l,estimatedGasLimit:p}},"processTransactionSimulation"),Js=a(e=>e.trace_type==="ExposureTrace","isExposureTrace"),Xs=a((e,t)=>`${e.toLowerCase()}.${t.toLowerCase()}`,"normalizeAddresses"),Zs=a(e=>e===void 0||e.length===0?{}:e.reduce((t,r)=>Js(r)?{[Xs(r.spender,r.asset.address)]:r}:t,{}),"mapExposureTracesToSpenderAsset"),Rn=a((e,t)=>{let{traces:r}=t,n=Zs(r),a=Object.entries(n).map(([s,c])=>{let l=Pn(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"),En=a(e=>{let t=bn(e,"in"),r=bn(e,"out");if(!(t.length===0&&r.length===0))return {ins:t,outs:r}},"processBalanceChange"),bn=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?Pn(n):Qs(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"),Pn=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"),Qs=a(e=>({name:e.name??"",symbol:e.symbol??"",decimals:e.decimals,description:"",logoUri:e.logo_url}),"convertNativeAssetToToken"),In=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 fn({chainId:n,accountAddress:r,data:a,domain:t,blockaid:i});p?.result_type==="Warning"?s=oe[AlertType.WARNING]:p?.result_type==="Malicious"&&(s=oe[AlertType.DANGER]),m?.status==="Success"&&(l=Rn(e.method,m.account_summary),c=En(m.account_summary.assets_diffs));}catch(p){console.error("processJsonRpcSimulation error",p),s=oe[AlertType.WARNING];}return {alert:s,balanceChange:c,tokenApprovals:l}},"processJsonRpcSimulation");var Sn=a(async({rpcMethod:e,dAppUrl:t,params:r,chainId:n,provider:a,populateMissingGas:i,blockaid:s})=>{let c;try{c=await un({chainId:n,params:r,domain:t,withGasEstimation:i,blockaid:s});}catch(y){return console.error("simulateTransactionBatch error",y),{isSimulationSuccessful:!1,alert:oe[AlertType.WARNING],scans:[]}}let l=await Promise.all(c.map(async(y,g)=>{let k=r[g],T=await cr({chainId:n,params:r[g],provider:a,rpcMethod:e,simulationResult:y});return i&&!k.gas&&T.estimatedGasLimit&&(k.gas=`0x${T.estimatedGasLimit.toString(16)}`),{transaction:k,...T}})),p=l.every(y=>y.isSimulationSuccessful),m=eo(l),u=ro(l),f=to(l);return {isSimulationSuccessful:p,alert:m,balanceChange:u,tokenApprovals:f,scans:l.map(y=>(y.tokenApprovals&&(y.tokenApprovals.isEditable=!1),y))}},"simulateTransactionBatch"),eo=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"),to=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 no(t,e),ir(t)?void 0:t},"aggregateTokenApprovals"),ro=a(e=>{let t=e.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(a=>{let i=An(r.ins,a);i?i.items.push(...a.items):r.ins.push(a);}),n.outs.forEach(a=>{let i=An(r.outs,a);i?i.items.push(...a.items):r.outs.push({...a});})),r),{ins:[],outs:[]});return ir(t)?void 0:t},"aggregateBalanceChange"),An=a((e,t)=>e.find(r=>fe(r.token)&&fe(t.token)?r.token.symbol===t.token.symbol:!fe(r.token)&&!fe(t.token)?r.token.address===t.token.address:!1),"findTokenDiff"),no=a((e,t)=>{for(let r of e.approvals)for(let n of t)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(i=>!fe(i.token)&&!fe(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 ao=a(e=>{if(!e||typeof e!="object")return !1;let t=e;return typeof t.agentId=="string"&&typeof t.agentRegistry=="string"},"isAgentIdentityDeclaration"),Ne=a(e=>{let t=e.context?.agentIdentity;return ao(t)?t:null},"getAgentIdentityFromContext");var xn=a(async({request:e,network:t,approvalController:r,blockaid:n})=>{let{params:a}=e,{data:i,success:s,error:c}=tn(a);if(!s)return console.error("invalid params",c),{error:rpcErrors.invalidParams(j("Transaction params are invalid",c))};let{transactions:l,options:p={}}=i,{skipIntermediateTxs:m=!1}=p,u=await M({chainId:t.chainId,chainName:t.chainName,rpcUrl:t.rpcUrl,multiContractAddress:t.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:t.customRpcHeaders});try{await rn(l,u);}catch(O){return console.error("Unable to calculate nonce",O),{error:rpcErrors.internal(j("Unable to calculate nonce",O))}}let f=l.every(O=>Number(O.gas)>0),{alert:y,balanceChange:g,isSimulationSuccessful:k,tokenApprovals:T,scans:P}=await Sn({rpcMethod:e.method,chainId:t.chainId,params:l,dAppUrl:e.dappInfo.url,provider:u,populateMissingGas:!f,blockaid:n});if(!P.every(({transaction:O})=>Number(O.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=Ne(e),N=w?await ae({declaration:w,rpcUrl:t.rpcUrl,chainId:t.chainId,chainName:t.chainName,customRpcHeaders:t.customRpcHeaders}):void 0,x={title:"Do you approve these transactions?",details:[{title:"Transaction Details",items:[Y("Account",l[0].from),ft("Network",{name:t.chainName,logoUri:t.logoUri}),Re("Website",e.dappInfo)]},...N?[Se(N)]:[]],isSimulationSuccessful:k,balanceChange:g,alert:y,tokenApprovals:T,networkFeeSelector:!0},pe=P.map(O=>vt(e,t,O.transaction,O,N)),{cleanup:I,updateTx:A}=pn(e.requestId,pe,x),B=await r.requestBatchApproval({request:e,signingRequests:pe,displayData:x,updateTx:A});if(I(),"error"in B)return {error:B.error};if(B.result.length!==l.length)return {error:rpcErrors.internal({message:`Invalid number of signatures. Expected ${l.length}, got ${B.result.length}`})};let We=[];for(let[O,Ba]of B.result.entries()){let wr=O===B.result.length-1,jt=await Rt(u,Ba);if(wr&&Je({explorerUrl:t.explorerUrl??"",provider:u,txHash:jt,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),!wr&&!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 ${O+1} failed! Batch execution stopped`})};We.push(jt);}return {result:We}},"ethSendTransactionBatch");function Cn(e,t,r){return new ethers.Contract(e,Tn.abi).interface.encodeFunctionData("approve",[t,r])}a(Cn,"encodeApprovalLimit");var St=new Map,Nn=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 y=p.tokenApprovals;io(y),co(l.data.data);let g=y.approvals[0];m.data.data=Cn(g.token.address,g.spenderAddress,i),u.tokenApprovals={approvals:[{...g,value:i}],isEditable:!0};}let f={signingData:m,displayData:u};return St.set(e,f),f},cleanup:()=>St.delete(e)}),"getTxUpdater");function io(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(io,"ensureTokenApprovalCanBeEdited");function co(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(co,"ensureApproveWasCalled");var wn=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 po=z$1.tuple([Ae]),_n=a(e=>po.safeParse(e),"parseRequestParams");var Dn=a(async({request:e,network:t,approvalController:r,blockaid:n,eercEnabled:a=!1})=>{let{params:i}=e,{data:s,error:c,success:l}=_n(i);if(!l)return console.error("invalid params",c),{error:rpcErrors.invalidParams(j("Transaction params are invalid",c))};let[p]=s,m=await M({chainId:t.chainId,chainName:t.chainName,rpcUrl:t.rpcUrl,multiContractAddress:t.utilityAddresses?.multicall,pollingInterval:1e3,customRpcHeaders:t.customRpcHeaders});if(!p.gas||Number(p.gas)<0)try{let x=await wn({transactionParams:{from:p.from,to:p.to,data:p.data,value:p.value,accessList:p.accessList},provider:m});p.gas="0x"+x.toString(16);}catch(x){return {error:rpcErrors.internal(j("Unable to calculate gas limit",x))}}if(!p.nonce)try{let x=await bt({from:p.from,provider:m});p.nonce=String(x);}catch(x){return {error:rpcErrors.internal(j("Unable to calculate nonce",x))}}let u=Ne(e),f=u?await ae({declaration:u,rpcUrl:t.rpcUrl,chainId:t.chainId,chainName:t.chainName,customRpcHeaders:t.customRpcHeaders}):void 0,y=await vn({rpcMethod:e.method,chainId:t.chainId,params:p,dAppUrl:e.dappInfo.url,provider:m,blockaid:n}),{displayData:g,signingData:k}=vt(e,t,p,y,f,a),{updateTx:T,cleanup:P}=Nn(e.requestId,k,g),v=await r.requestApproval({request:e,displayData:g,signingData:k,updateTx:T});if(P(),"error"in v)return {error:v.error};let w,N=e.context?.shouldRetry===!0;try{w=await Rt(m,v,{shouldRetry:N});}catch(x){return {error:rpcErrors.internal(j("Unable to get transaction hash",x))}}return Je({explorerUrl:t.explorerUrl??"",provider:m,txHash:w,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),{result:w}},"ethSendTransaction");var lr=a(e=>{let t="";t+=`Domain
|
|
18
18
|
`;for(let r in e.domain)t+=` ${r}: ${ye(String(e.domain[r]))}
|
|
19
19
|
`;t+=`
|
|
20
20
|
Message
|
|
@@ -31,7 +31,7 @@ Message
|
|
|
31
31
|
`;return t},"beautifyComplexMessage"),Bn=a(e=>{let t="";return e.forEach(r=>{t+=`${r.name}:
|
|
32
32
|
`,t+=`${ye(String(r.value))}
|
|
33
33
|
|
|
34
|
-
`;}),t},"beautifySimpleMessage"),ye=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"),q=z$1.string().describe("address");var Fn=z$1.object({method:z$1.literal(RpcMethod.ETH_SIGN),params:z$1.tuple([q,Qe])});var Mn=z$1.object({name:z$1.string(),type:z$1.string()}),we=z$1.object({types:z$1.object({EIP712Domain:z$1.array(Mn)}).catchall(z$1.array(Mn)),primaryType:z$1.string(),domain:z$1.record(z$1.any()),message:z$1.record(z$1.any())}),mr=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(),dr=we.or(mr),Ln=z$1.union([z$1.string().describe("data string"),we]),Gn=z$1.union([z$1.string().describe("data string"),dr]),Vn=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA),params:z$1.tuple([q,Gn])}),Hn=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V1),params:z$1.tuple([q,Gn])}),On=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V3),params:z$1.tuple([q,Ln])}),$n=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V4),params:z$1.tuple([q,Ln])});var Wn=z$1.object({method:z$1.literal(RpcMethod.PERSONAL_SIGN),params:z$1.union([z$1.tuple([Qe,q]),z$1.tuple([Qe,q,z$1.string().optional().describe("password")])])});var go=z$1.discriminatedUnion("method",[Wn,Fn,Vn,Hn,On,$n]).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:dr.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 jn(e){return go.safeParse(e)}a(jn,"parseRequestParams");var qn=a(e=>mr.safeParse(e).success,"isTypedDataV1"),wd=a(e=>we.safeParse(e).success,"isTypedData");var zn=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 Kn=a(async({request:e,network:t,approvalController:r,blockaid:n})=>{let a=jn({method:e.method,params:e.params});if(!a.success)return console.error("invalid params",a.error),{success:!1,error:rpcErrors.invalidParams(j("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=zn(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=qn(s)?Bn(s):lr(s);else if(i===RpcMethod.SIGN_TYPED_DATA_V3||i===RpcMethod.SIGN_TYPED_DATA_V4){p={type:i,account:c,data:s};let{types:P,primaryType:v,...w}=s;m=lr(w);}if(!p||!m)return {success:!1,error:rpcErrors.internal("Unable to generate signing data")};let f=await In({request:e,accountAddress:c,chainId:t.chainId,data:{method:i,params:e.params},dAppUrl:e.dappInfo.url,blockaid:n}),y=Ne(e),g=y?await ae({declaration:y,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:[V("Message",m,"vertical")]},...g?[Se(g)]:[]],alert:f?.alert??u,balanceChange:f?.balanceChange,tokenApprovals:f?.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 Yn=a(async(e,t)=>{try{return {result:await(await M({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 Xn=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 Ro={"ERC-20":TokenType.ERC20,"ERC-721":TokenType.ERC721,"ERC-1155":TokenType.ERC1155,"NON-ERC":TokenType.NONERC,SPL:TokenType.SPL},Eo=z$1.string().transform((e,t)=>{let r=Ro[e];return r||(t.addIssue({code:z$1.ZodIssueCode.custom,message:`Unknown contractType: ${e}`}),z$1.NEVER)}),Po=z$1.object({address:z$1.string(),chainId:z$1.number(),contractType:Eo,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()}),Io=z$1.array(z$1.unknown()).transform(e=>e.flatMap(t=>{let r=Po.safeParse(t);return r.success?[r.data]:[]}));async function wt({chainId:e,proxyApiUrl:t}){return (await G([`${t}/tokens?evmChainId=${e}`],Io)).map(n=>({...n,type:n.contractType}))}a(wt,"getTokens");var F,Fe,he,nt,Me,gr=class gr{constructor({network:t,storage:r,proxyApiUrl:n,customTokens:a,fetch:i}){d(this,F,void 0);d(this,Fe,void 0);d(this,he,void 0);d(this,nt,void 0);d(this,Me,void 0);e(this,F,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 M({chainId:t,chainName:c(this,F).chainName,rpcUrl:c(this,F).rpcUrl,multiContractAddress:c(this,F).utilityAddresses?.multicall,customRpcHeaders:c(this,F).customRpcHeaders}),i=c(this,F).pricingProviders?.coingecko.nativeTokenId,s=c(this,F).networkToken,c$1=new ne({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,f=l?.[i??""]?.[n]?.change24??void 0,y=await a.getBalance(r),g=new TokenUnit(y,s.decimals,s.symbol),k=p!==void 0?g.mul(p):void 0;return {...s,coingeckoId:i??"",type:TokenType.NATIVE,balance:y,balanceDisplayValue:g.toDisplay(),balanceInCurrency:k?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:k?.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 M({chainId:t,chainName:c(this,F).chainName,rpcUrl:c(this,F).rpcUrl,multiContractAddress:c(this,F).utilityAddresses?.multicall,customRpcHeaders:c(this,F).customRpcHeaders}),s=c(this,F).pricingProviders?.coingecko.assetPlatformId,c$1=c(this,F).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 x=await new ethers.Contract(v.address,Tn.abi,i).balanceOf?.(r)||0n;return {...v,balance:x}},"getTokenWithBalance"),f=m.map(v=>Be(u(v),v.address)),y=await Ue(f),g=new ne({storage:c(this,Fe),proxyApiUrl:c(this,he),fetch:c(this,Me)}),k=s&&await g.getPricesByAddresses(p,s,n)||{},T=Object.keys(y),P={};for(let v=0;v<T.length;v++){let w=T[v];if(w===void 0)continue;let N=y[w];if(N===void 0||"error"in N){P[w]={error:`rpcService:getTokenWithBalance failed: ${N?.error??"unknown error"}`};continue}let x=k?.[c$1??""]?.[n]?.price??void 0,pe=k?.[c$1??""]?.[n]?.marketCap??void 0,I=k?.[c$1??""]?.[n]?.vol24??void 0,A=k?.[c$1??""]?.[n]?.change24??void 0,B=new TokenUnit(N.balance,N.decimals,N.symbol),We=x!==void 0?B.mul(x):void 0;P[N.address.toLowerCase()]={...N,type:TokenType.ERC20,balance:N.balance,balanceDisplayValue:B.toDisplay(),balanceInCurrency:We?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:We?.toDisplay({fixedDp:2}),priceInCurrency:x,marketCap:pe,change24:A,vol24:I,reputation:null};}return P}async listNftBalances(){return {}}};F=new WeakMap,Fe=new WeakMap,he=new WeakMap,nt=new WeakMap,Me=new WeakMap,a(gr,"RpcService");var _t=gr;async function ea(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(ea,"findAsync");var ta=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,f=new _t({network:r,storage:c,proxyApiUrl:n,customTokens:i,fetch:m}),y=s?[f]:[...l,f],g=s?[TokenType.ERC20]:a,k=await ea(y,P=>P.isNetworkSupported(r.chainId)),T={};if(k){let P=[],v=[],w=[];e.forEach(I=>{g.includes(TokenType.NATIVE)&&P.push(Be(k.getNativeBalance({address:I,currency:t.toUpperCase(),chainId:u}).then(async A=>{if(A.symbol==="AVAX"){let B=await p.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:t.toUpperCase()});return {...A,priceInCurrency:B.priceInCurrency,marketCap:B.marketCap,vol24:B.vol24,change24:B.change24}}return A}),I)),g.includes(TokenType.ERC20)&&v.push(Be(k.listErc20Balances({customTokens:i.filter(Pt),customTokensOnly:s,currency:t.toUpperCase(),chainId:u,address:I,pageSize:100}),I)),(g.includes(TokenType.ERC721)||g.includes(TokenType.ERC1155))&&w.push(Be(k.listNftBalances({chainId:u,address:I}),I));});let N=await Ue(P),x=await Ue(v),pe=await Ue(w);Object.keys(N).forEach(I=>{let A=N[I];if(!A||"error"in A){T[I]={error:`getNativeBalance failed: ${A?.error??"unknown error"}`};return}let B=A.symbol;T[I]={[B]:A};}),Object.keys(x).forEach(I=>{let A=x[I];!A||"error"in A&&typeof A.error!="string"?T[I]={...T[I],error:"listErc20Balances failed: unknown error"}:"error"in A&&typeof A.error=="string"?T[I]={...T[I],error:`listErc20Balances failed: ${A.error}`}:T[I]={...T[I],...A};}),Object.keys(pe).forEach(I=>{let A=pe[I];!A||"error"in A&&typeof A.error!="string"?T[I]={...T[I],error:"listNftBalances failed: unknown error"}:"error"in A&&typeof A.error=="string"?T[I]={...T[I],error:`listNftBalances failed: ${A.error}`}:T[I]={...T[I],...A};});}else e.forEach(P=>{T[P]={error:"unsupported network"};});return T},"getBalances");var yr={LOW:1n,MEDIUM:4n,HIGH:6n},hr=500000000n,xo=a(e=>e===ChainId.AVALANCHE_TESTNET_ID||e===ChainId.AVALANCHE_MAINNET_ID,"isCChain"),aa=137,sa=80002,Co=a(e=>e===aa||e===sa,"isPolygon"),No={[aa]:"https://gasstation.polygon.technology/v2",[sa]:"https://gasstation.polygon.technology/amoy"};function Te(e){return BigInt(Math.round(e*1e9))}a(Te,"gweiToWei");async function wo(e){let t=No[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(wo,"getPolygonGasStationFees");async function oa({chainId:e,chainName:t,rpcUrl:r,multiContractAddress:n,caipId:a,proxyApiUrl:i,customRpcHeaders:s}){let c=await M({chainId:e,chainName:t,rpcUrl:r,multiContractAddress:n,customRpcHeaders:s});if(!i)throw rpcErrors.internal("Proxy API URL is needed");if(xo(e))try{let v=await _o(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(Co(e))try{return await wo(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 Do(i,a),u=new TokenUnit(m,0,""),f=new TokenUnit(p,0,""),y=BigInt("1000000000"),g=f.mul(u).add(y).toSubUnit(),k=hr*yr.LOW,T=hr*yr.MEDIUM,P=hr*yr.HIGH;return {baseFee:g,low:{maxFeePerGas:g+k,maxPriorityFeePerGas:k},medium:{maxFeePerGas:g+T,maxPriorityFeePerGas:T},high:{maxFeePerGas:g+P,maxPriorityFeePerGas:P},isFixedFee:!1,displayDecimals:9}}a(oa,"getNetworkFee");async function _o(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(_o,"suggestPriceOptions");async function Do(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(Do,"getGasMultiplier");function ca(e){return e===TokenType.ERC721||e===TokenType.ERC1155}a(ca,"isNftTokenType");function Tr(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=>ca(m.type)&&m.to?.address?.toLowerCase()===i),c=a.some(m=>ca(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(Tr,"convertTransactionType");var la=a(({nativeTransaction:e,erc20Transfers:t,erc721Transfers:r,erc1155Transfers:n},a,i)=>{let s=!t&&!r&&!n,c=Uo(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,f=c==="Market Buy Orders With Eth"||c==="Buy NFT",y=c==="Approve",g=c.toLowerCase().includes("transfer"),k=c.toLowerCase().includes("airdrop"),T=c.toLowerCase().includes("unwrap"),P=c==="Fill Order",v;p?v=TransactionType.SWAP:m?v=TransactionType.SEND:u?v=TransactionType.RECEIVE:f?v=TransactionType.NFT_BUY:y?v=TransactionType.APPROVE:g?v=TransactionType.TRANSFER:k?v=TransactionType.AIRDROP:T?v=TransactionType.UNWRAP:P?v=TransactionType.FILL_ORDER:v=TransactionType.UNKNOWN;let w=e.from.address.toLowerCase()===l;return Tr({txType:v,isSender:w,walletAddress:a,tokens:i})},"getTxType"),Uo=a((e="")=>e.includes("(")?Bo(e.split("(",1)[0]):e,"parseRawMethod");function pa({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=Lo(e.category),l=!Fo.has(e.category),p=Ho(e,t,a),m=se(r,e.hash);return c=Tr({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(pa,"convertMoralisTransaction");var Fo=new Set(["send","receive","token send","token receive"]),Mo={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 Lo(e){return Mo[e]??TransactionType.UNKNOWN}a(Lo,"getMoralisTransactionType");function ce(e){if(!(e==null||e===""))return {address:e}}a(ce,"getTransferAddress");function Dt(e){return e?.trim()??""}a(Dt,"trimOrEmpty");function Go(e){let t=e.trim().toLowerCase();return !t.startsWith("0x")||t.length<12?e.trim():`${t.slice(0,6)}\u2026${t.slice(-4)}`}a(Go,"shortenHexAddress");function Vo(e){let t=Dt(e.token_symbol);if(t!=="")return t;let r=Dt(e.token_name);return r!==""?r:Go(e.address)}a(Vo,"getErc20DisplaySymbol");function Ho(e,t,r){let n=[],a=e.native_transfers.map(s=>Oo(s,t)),i=e.erc20_transfers.map(s=>$o(s));n.push(...a,...i);for(let s of e.nft_transfers)n.push(Wo(s));return n.length===0&&n.push(jo(e,t,r)),n}a(Ho,"buildTokens");function Oo(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:ce(e.from_address),to:ce(e.to_address),type:TokenType.NATIVE}}a(Oo,"buildNativeToken");function $o(e){let t=Number(e.token_decimals),r=Vo(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:ce(e.from_address),to:ce(e.to_address),type:TokenType.ERC20,address:e.address}}a($o,"buildErc20Token");function Wo(e){let t=e.contract_type==="ERC1155"?TokenType.ERC1155:TokenType.ERC721;return {name:"",symbol:"",amount:e.amount,collectableTokenId:e.token_id,from:ce(e.from_address),to:ce(e.to_address),type:t,address:e.token_address}}a(Wo,"buildNftToken");function jo(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:ce(e.from_address),to:ce(e.to_address),type:TokenType.NATIVE}}a(jo,"buildFallbackNativeToken");var qo="https://proxy-api.avax.network/proxy/moralis-evm";async function ma({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=`${qo}/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=>pa({tx:f,networkToken:t,explorerUrl:r,chainId:e,address:n})),nextPageToken:m.cursor??""}:{transactions:[],nextPageToken:""}}catch{return {transactions:[],nextPageToken:""}}}a(ma,"getTransactionsFromMoralis");var zo=new Set([1,4,5,11155111,8453,42161,10]);function da(e){return zo.has(e)}a(da,"isMoralisSupportedChain");var ua=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 ga(e){try{return e.then(t=>[t,null]).catch(t=>[null,t])}catch(t){return Promise.resolve([null,t])}}a(ga,"resolve");var Yo="https://ipfs.io";function Le(e,t=Yo){if(!e)return "";try{return ipfsResolver(e,t)}catch{return e}}a(Le,"ipfsResolverWithFallback");async function Jo(e,t=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),t),fetch(e,{signal:r.signal})}a(Jo,"fetchWithTimeout");async function fa(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 Jo(Le(e)).then(r=>r.json()).catch(()=>({}));else return {};return t}a(fa,"getNftMetadata");var Xo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function ya(e,t="256"){let r=Le(e);return `${Xo}/width=${t},fit/${r}`}a(ya,"getSmallImageForNFT");var ka=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 Ta(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 Ta(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"),Ta=a(async(e,t)=>{if(t)return t.startsWith("ipfs://")?Le(t):t;{let[r,n]=await ga(fa(e));return n?"":r.image?ya(r.image):""}},"getImageUri");var ba=a(async({transactions:e,explorerUrl:t,networkToken:r,chainId:n,address:a})=>{let i=await ka(e,r),s=la(e,a,i),{isOutgoing:c,isIncoming:l,isSender:p,from:m,to:u}=ua(s,e,a),{blockTimestamp:f,txHash:y,gasPrice:g,gasUsed:k}=e.nativeTransaction,T=se(t,y);return {isContractCall:!nn.includes(s),isIncoming:l,isOutgoing:c,isSender:p,timestamp:f*1e3,hash:y,from:m,to:u,tokens:i,gasPrice:g,gasUsed:k,chainId:n.toString(),txType:s,explorerLink:T}},"convertTransaction");var va=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=>ba({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 Ra({client:e,chainId:t,networkToken:r,explorerUrl:n,address:a,nextPageToken:i,offset:s=25}){try{let c=Zo(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 g of l){if(g.isError!=="0"||g.txreceipt_status!=="1")continue;let k=vr(u,g),T=Qo(g,r);T&&k.tokens.push(T);}for(let g of p)vr(u,g).tokens.push(ti(g));for(let g of m){if(g.isError!=="0")continue;let k=vr(u,g),T=ei(g,r);T&&k.tokens.push(T);}let f=Array.from(u.values()).map(g=>ri(g,a,n,r,t)).sort((g,k)=>k.timestamp-g.timestamp),y=[l,p,m].some(g=>g.length===s);return {transactions:f,nextPageToken:y?String(c+1):""}}catch{return {transactions:[],nextPageToken:""}}}a(Ra,"getTransactionsFromHyperEvm");function Zo(e){let t=Number(e);return Number.isSafeInteger(t)&&t>0?t:1}a(Zo,"getPage");function vr(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(vr,"getAggregate");function Qo(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(Qo,"nativeToken");function ei(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(ei,"internalToken");function ti(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(ti,"erc20Token");function ri(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:se(r,e.hash)}}a(ri,"toTransaction");var ni=999,Ea=a(async({chainId:e,networkToken:t,explorerUrl:r,address:n,nextPageToken:a,offset:i,glacierService:s,hyperEvmEtherscanClient:c})=>e===ni?c?Ra({client:c,chainId:e,networkToken:t,explorerUrl:r,address:n,nextPageToken:a,offset:i}):{transactions:[],nextPageToken:""}:da(e)?ma({chainId:e,networkToken:t,explorerUrl:r,address:n,nextPageToken:a,offset:i}):s.isHealthy()?va({networkToken:t,explorerUrl:r,chainId:e,address:n,nextPageToken:a,offset:i,glacierService:s}):{transactions:[],nextPageToken:""},"getTransactionHistory");var si="https://ipfs.io";function Pa(e,t=si){if(!e)return "";try{return ipfsResolver(e,t)}catch{return e}}a(Pa,"ipfsResolverWithFallback");var oi="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Ft(e,t="256"){let r=Pa(e);return `${oi}/width=${t},fit/${r}`}a(Ft,"getSmallImageForNFT");var Ge,Z,Er=class Er{constructor(t,r){this.baseUrl=t;d(this,Ge,[]);d(this,Z,void 0);e(this,Z,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,Z).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,Z).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,Z)??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,Z).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 G([`${this.baseUrl}/v1/user/nft_list?id=${t}&chain_id=${r}`],pi,c(this,Z))}};Ge=new WeakMap,Z=new WeakMap,a(Er,"DeBank");var Mt=Er,ci=z$1.object({id:z$1.union([z$1.custom(isHexString),z$1.string()]),chain:z$1.string(),name:z$1.string()}),li=ci.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()})),pi=z$1.array(li);var z,Ve,Gt,Ht,Aa,Ir=class Ir{constructor({proxyApiUrl:t,fetch:r}){d(this,Ve);d(this,Ht);d(this,z,void 0);e(this,z,new Mt(`${t}/proxy/debank`,r));}async isNetworkSupported(t){return c(this,z).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,z).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()],f$1=u?u*c$1.price:void 0,y=f$1?l.mul(f$1).toDisplay({fixedDp:2}):void 0,g=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:g,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,Ve,Gt).call(this,t),s=await c(this,z).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(),f=c$1.usd[n.toLowerCase()],y=f?f*p.price:void 0,g=y?m.mul(y).toDisplay({fixedDp:2}):void 0,k=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:g,balanceDisplayValue:u,balanceInCurrency:k,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,Ve,Gt).call(this,t),a=await c(this,z).getNftList({chainId:n,address:r});return f(this,Ht,Aa).call(this,a,t)}};z=new WeakMap,Ve=new WeakSet,Gt=a(async function(t){let n=(await c(this,z).getChainList()).find(i=>i.community_id===t)?.id;if(!n)throw rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+t);let a=await c(this,z).getChainInfo({chainId:n});if(!a)throw rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+t);return {chainInfo:a,chainIdString:n}},"#getChainInfo"),Ht=new WeakSet,Aa=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(Ir,"DeBankService");var Vt=Ir;var Sr=class Sr extends Error{constructor(){super(...arguments);b(this,"message","Glacier is unhealthy. Try again later.");}};a(Sr,"GlacierUnhealthyError");var Q=Sr,fi=[ChainId.ETHEREUM_HOMESTEAD],xr=class xr{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=>!fi.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 Q&&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 Q&&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 Q&&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 Q&&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 Q&&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(...hi(c.erc20TokenBalances,Number(t))),s=c.nextPageToken;}while(s);return [...yi(a),...i].reduce((c,l)=>({...c,[l.address.toLowerCase()]:l}),{})}catch(i){throw i instanceof Q&&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 Q&&this.setGlacierToUnhealthy(),i}}};a(xr,"EvmGlacierService");var Ot=xr,yi=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"),hi=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 Ca=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()}),Na=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()}),wa=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 Ti=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,Cr=class Cr{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,Ti(r));}listNormalTransactions(t,r){return f(this,Oe,$t).call(this,"txlist",t,Ca,r)}listErc20Transfers(t,r){return f(this,Oe,$t).call(this,"tokentx",t,Na,r)}listInternalTransactions(t,r){return f(this,Oe,$t).call(this,"txlistinternal",t,wa,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(Cr,"HyperEvmEtherscanClient");var Wt=Cr;var $e,pt,le,K,ke,W,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,le,void 0);d(this,K,void 0);d(this,ke,void 0);d(this,W,void 0);d(this,mt,void 0);let{glacierApiUrl:i,proxyApiUrl:s}=Or(r);e(this,W,a),e(this,$e,new Ot({glacierApiUrl:i,headers:Zt(n)})),e(this,pt,new Vt({proxyApiUrl:s,fetch:c(this,W)?.fetch})),e(this,le,s),e(this,mt,new Wt({proxyApiUrl:s,fetch:c(this,W)?.fetch})),e(this,K,t),e(this,ke,new bi({baseURL:s+"/proxy/blockaid/",apiKey:Vr,httpAgent:a?.httpAgent,fetch:a?.fetch}));}updateRuntimeParams(t){e(this,W,{...c(this,W),...t,features:{...c(this,W)?.features,...t.features}});}getProvider(t){return M({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 Xn({accountIndex:t,xpub:r,walletType:n})}buildDerivationPath(t){return Pe(t)}deriveAddress(t){return Zr({...t,approvalController:c(this,K)})}deriveAddresses(t){return Qr({...t,approvalController:c(this,K)})}getBalances({addresses:t,network:r,currency:n,customTokens:a,storage:i,tokenTypes:s,customTokensOnly:c$1}){let l=new ne({storage:i,proxyApiUrl:c(this,le),fetch:c(this,W)?.fetch});return ta({addresses:t,currency:n,network:r,proxyApiUrl:c(this,le),customTokens:a,customTokensOnly:c$1,balanceServices:[c(this,$e),c(this,pt)],storage:i,tokenTypes:s,tokenService:l,fetch:c(this,W)?.fetch})}getManifest(){let t=parseManifest(Gr);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 oa({chainId:r,chainName:n,rpcUrl:a,multiContractAddress:i?.multicall,caipId:s,proxyApiUrl:c(this,le),customRpcHeaders:c$1})}getTransactionHistory(t){let{network:r,address:n,nextPageToken:a,offset:i}=t,{chainId:s,networkToken:c$1,explorerUrl:l=""}=r;return Ea({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,le)})}async onRpcRequest(t,r){switch(t.method){case RpcMethod.ETH_SEND_TRANSACTION:return Dn({request:t,network:r,approvalController:c(this,K),blockaid:c(this,ke),eercEnabled:c(this,W)?.features?.encryptedERCs===!0});case RpcMethod.ETH_SEND_TRANSACTION_BATCH:return dn(c(this,K))?xn({request:t,network:r,approvalController:c(this,K),blockaid:c(this,ke)}):{error:rpcErrors.methodNotSupported(`Method ${t.method} requires BatchApprovalController`)};case RpcMethod.AVALANCHE_DECLARE_AGENT_IDENTITY:return Jr({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 Kn({request:t,network:r,approvalController:c(this,K),blockaid:c(this,ke)});default:return vi(t.method)?Yn(t,r):{error:rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}};$e=new WeakMap,pt=new WeakMap,le=new WeakMap,K=new WeakMap,ke=new WeakMap,W=new WeakMap,mt=new WeakMap,a(Nr,"EvmModule");var Da=Nr,vi=a(e=>e.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(e),"shouldForwardToRpcNode");
|
|
34
|
+
`;}),t},"beautifySimpleMessage"),ye=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"),q=z$1.string().describe("address");var Fn=z$1.object({method:z$1.literal(RpcMethod.ETH_SIGN),params:z$1.tuple([q,Qe])});var Mn=z$1.object({name:z$1.string(),type:z$1.string()}),we=z$1.object({types:z$1.object({EIP712Domain:z$1.array(Mn)}).catchall(z$1.array(Mn)),primaryType:z$1.string(),domain:z$1.record(z$1.any()),message:z$1.record(z$1.any())}),mr=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(),dr=we.or(mr),Ln=z$1.union([z$1.string().describe("data string"),we]),Gn=z$1.union([z$1.string().describe("data string"),dr]),Vn=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA),params:z$1.tuple([q,Gn])}),Hn=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V1),params:z$1.tuple([q,Gn])}),On=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V3),params:z$1.tuple([q,Ln])}),$n=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V4),params:z$1.tuple([q,Ln])});var Wn=z$1.object({method:z$1.literal(RpcMethod.PERSONAL_SIGN),params:z$1.union([z$1.tuple([Qe,q]),z$1.tuple([Qe,q,z$1.string().optional().describe("password")])])});var go=z$1.discriminatedUnion("method",[Wn,Fn,Vn,Hn,On,$n]).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:dr.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 jn(e){return go.safeParse(e)}a(jn,"parseRequestParams");var qn=a(e=>mr.safeParse(e).success,"isTypedDataV1"),wd=a(e=>we.safeParse(e).success,"isTypedData");var zn=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 Kn=a(async({request:e,network:t,approvalController:r,blockaid:n})=>{let a=jn({method:e.method,params:e.params});if(!a.success)return console.error("invalid params",a.error),{success:!1,error:rpcErrors.invalidParams(j("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=zn(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=qn(s)?Bn(s):lr(s);else if(i===RpcMethod.SIGN_TYPED_DATA_V3||i===RpcMethod.SIGN_TYPED_DATA_V4){p={type:i,account:c,data:s};let{types:P,primaryType:v,...w}=s;m=lr(w);}if(!p||!m)return {success:!1,error:rpcErrors.internal("Unable to generate signing data")};let f=await In({request:e,accountAddress:c,chainId:t.chainId,data:{method:i,params:e.params},dAppUrl:e.dappInfo.url,blockaid:n}),y=Ne(e),g=y?await ae({declaration:y,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:[V("Message",m,"vertical")]},...g?[Se(g)]:[]],alert:f?.alert??u,balanceChange:f?.balanceChange,tokenApprovals:f?.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 Yn=a(async(e,t)=>{try{return {result:await(await M({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 Xn=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 Ro={"ERC-20":TokenType.ERC20,"ERC-721":TokenType.ERC721,"ERC-1155":TokenType.ERC1155,"NON-ERC":TokenType.NONERC,SPL:TokenType.SPL},Eo=z$1.string().transform((e,t)=>{let r=Ro[e];return r||(t.addIssue({code:z$1.ZodIssueCode.custom,message:`Unknown contractType: ${e}`}),z$1.NEVER)}),Po=z$1.object({address:z$1.string(),chainId:z$1.number(),contractType:Eo,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()}),Io=z$1.array(z$1.unknown()).transform(e=>e.flatMap(t=>{let r=Po.safeParse(t);return r.success?[r.data]:[]}));async function wt({chainId:e,proxyApiUrl:t}){return (await G([`${t}/tokens?evmChainId=${e}`],Io)).map(n=>({...n,type:n.contractType}))}a(wt,"getTokens");var F,Fe,he,nt,Me,gr=class gr{constructor({network:t,storage:r,proxyApiUrl:n,customTokens:a,fetch:i}){d(this,F,void 0);d(this,Fe,void 0);d(this,he,void 0);d(this,nt,void 0);d(this,Me,void 0);e(this,F,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 M({chainId:t,chainName:c(this,F).chainName,rpcUrl:c(this,F).rpcUrl,multiContractAddress:c(this,F).utilityAddresses?.multicall,customRpcHeaders:c(this,F).customRpcHeaders}),i=c(this,F).pricingProviders?.coingecko.nativeTokenId,s=c(this,F).networkToken,c$1=new ne({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,f=l?.[i??""]?.[n]?.change24??void 0,y=await a.getBalance(r),g=new TokenUnit(y,s.decimals,s.symbol),k=p!==void 0?g.mul(p):void 0;return {...s,coingeckoId:i??"",type:TokenType.NATIVE,balance:y,balanceDisplayValue:g.toDisplay(),balanceInCurrency:k?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:k?.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 M({chainId:t,chainName:c(this,F).chainName,rpcUrl:c(this,F).rpcUrl,multiContractAddress:c(this,F).utilityAddresses?.multicall,customRpcHeaders:c(this,F).customRpcHeaders}),s=c(this,F).pricingProviders?.coingecko.assetPlatformId,c$1=c(this,F).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 x=await new ethers.Contract(v.address,Tn.abi,i).balanceOf?.(r)||0n;return {...v,balance:x}},"getTokenWithBalance"),f=m.map(v=>Be(u(v),v.address)),y=await Ue(f),g=new ne({storage:c(this,Fe),proxyApiUrl:c(this,he),fetch:c(this,Me)}),k=s&&await g.getPricesByAddresses(p,s,n)||{},T=Object.keys(y),P={};for(let v=0;v<T.length;v++){let w=T[v];if(w===void 0)continue;let N=y[w];if(N===void 0||"error"in N){P[w]={error:`rpcService:getTokenWithBalance failed: ${N?.error??"unknown error"}`};continue}let x=k?.[c$1??""]?.[n]?.price??void 0,pe=k?.[c$1??""]?.[n]?.marketCap??void 0,I=k?.[c$1??""]?.[n]?.vol24??void 0,A=k?.[c$1??""]?.[n]?.change24??void 0,B=new TokenUnit(N.balance,N.decimals,N.symbol),We=x!==void 0?B.mul(x):void 0;P[N.address.toLowerCase()]={...N,type:TokenType.ERC20,balance:N.balance,balanceDisplayValue:B.toDisplay(),balanceInCurrency:We?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:We?.toDisplay({fixedDp:2}),priceInCurrency:x,marketCap:pe,change24:A,vol24:I,reputation:null};}return P}async listNftBalances(){return {}}};F=new WeakMap,Fe=new WeakMap,he=new WeakMap,nt=new WeakMap,Me=new WeakMap,a(gr,"RpcService");var _t=gr;async function ea(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(ea,"findAsync");var ta=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,f=new _t({network:r,storage:c,proxyApiUrl:n,customTokens:i,fetch:m}),y=s?[f]:[...l,f],g=s?[TokenType.ERC20]:a,k=await ea(y,P=>P.isNetworkSupported(r.chainId)),T={};if(k){let P=[],v=[],w=[];e.forEach(I=>{g.includes(TokenType.NATIVE)&&P.push(Be(k.getNativeBalance({address:I,currency:t.toUpperCase(),chainId:u}).then(async A=>{if(A.symbol==="AVAX"){let B=await p.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:t.toUpperCase()});return {...A,priceInCurrency:B.priceInCurrency,marketCap:B.marketCap,vol24:B.vol24,change24:B.change24}}return A}),I)),g.includes(TokenType.ERC20)&&v.push(Be(k.listErc20Balances({customTokens:i.filter(Pt),customTokensOnly:s,currency:t.toUpperCase(),chainId:u,address:I,pageSize:100}),I)),(g.includes(TokenType.ERC721)||g.includes(TokenType.ERC1155))&&w.push(Be(k.listNftBalances({chainId:u,address:I}),I));});let N=await Ue(P),x=await Ue(v),pe=await Ue(w);Object.keys(N).forEach(I=>{let A=N[I];if(!A||"error"in A){T[I]={error:`getNativeBalance failed: ${A?.error??"unknown error"}`};return}let B=A.symbol;T[I]={[B]:A};}),Object.keys(x).forEach(I=>{let A=x[I];!A||"error"in A&&typeof A.error!="string"?T[I]={...T[I],error:"listErc20Balances failed: unknown error"}:"error"in A&&typeof A.error=="string"?T[I]={...T[I],error:`listErc20Balances failed: ${A.error}`}:T[I]={...T[I],...A};}),Object.keys(pe).forEach(I=>{let A=pe[I];!A||"error"in A&&typeof A.error!="string"?T[I]={...T[I],error:"listNftBalances failed: unknown error"}:"error"in A&&typeof A.error=="string"?T[I]={...T[I],error:`listNftBalances failed: ${A.error}`}:T[I]={...T[I],...A};});}else e.forEach(P=>{T[P]={error:"unsupported network"};});return T},"getBalances");var yr={LOW:1n,MEDIUM:4n,HIGH:6n},hr=500000000n,xo=a(e=>e===ChainId.AVALANCHE_TESTNET_ID||e===ChainId.AVALANCHE_MAINNET_ID,"isCChain"),aa=137,sa=80002,Co=a(e=>e===aa||e===sa,"isPolygon"),No={[aa]:"https://gasstation.polygon.technology/v2",[sa]:"https://gasstation.polygon.technology/amoy"};function Te(e){return BigInt(Math.round(e*1e9))}a(Te,"gweiToWei");async function wo(e){let t=No[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(wo,"getPolygonGasStationFees");async function oa({chainId:e,chainName:t,rpcUrl:r,multiContractAddress:n,caipId:a,proxyApiUrl:i,customRpcHeaders:s}){let c=await M({chainId:e,chainName:t,rpcUrl:r,multiContractAddress:n,customRpcHeaders:s});if(!i)throw rpcErrors.internal("Proxy API URL is needed");if(xo(e))try{let v=await _o(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(Co(e))try{return await wo(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 Do(i,a),u=new TokenUnit(m,0,""),f=new TokenUnit(p,0,""),y=BigInt("1000000000"),g=f.mul(u).add(y).toSubUnit(),k=hr*yr.LOW,T=hr*yr.MEDIUM,P=hr*yr.HIGH;return {baseFee:g,low:{maxFeePerGas:g+k,maxPriorityFeePerGas:k},medium:{maxFeePerGas:g+T,maxPriorityFeePerGas:T},high:{maxFeePerGas:g+P,maxPriorityFeePerGas:P},isFixedFee:!1,displayDecimals:9}}a(oa,"getNetworkFee");async function _o(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(_o,"suggestPriceOptions");async function Do(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(Do,"getGasMultiplier");function ca(e){return e===TokenType.ERC721||e===TokenType.ERC1155}a(ca,"isNftTokenType");function Tr(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=>ca(m.type)&&m.to?.address?.toLowerCase()===i),c=a.some(m=>ca(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(Tr,"convertTransactionType");var la=a(({nativeTransaction:e,erc20Transfers:t,erc721Transfers:r,erc1155Transfers:n},a,i)=>{let s=!t&&!r&&!n,c=Uo(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,f=c==="Market Buy Orders With Eth"||c==="Buy NFT",y=c==="Approve",g=c.toLowerCase().includes("transfer"),k=c.toLowerCase().includes("airdrop"),T=c.toLowerCase().includes("unwrap"),P=c==="Fill Order",v;p?v=TransactionType.SWAP:m?v=TransactionType.SEND:u?v=TransactionType.RECEIVE:f?v=TransactionType.NFT_BUY:y?v=TransactionType.APPROVE:g?v=TransactionType.TRANSFER:k?v=TransactionType.AIRDROP:T?v=TransactionType.UNWRAP:P?v=TransactionType.FILL_ORDER:v=TransactionType.UNKNOWN;let w=e.from.address.toLowerCase()===l;return Tr({txType:v,isSender:w,walletAddress:a,tokens:i})},"getTxType"),Uo=a((e="")=>e.includes("(")?Bo(e.split("(",1)[0]):e,"parseRawMethod");function pa({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=Lo(e.category),l=!Fo.has(e.category),p=Ho(e,t,a),m=se(r,e.hash);return c=Tr({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(pa,"convertMoralisTransaction");var Fo=new Set(["send","receive","token send","token receive"]),Mo={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 Lo(e){return Mo[e]??TransactionType.UNKNOWN}a(Lo,"getMoralisTransactionType");function ce(e){if(!(e==null||e===""))return {address:e}}a(ce,"getTransferAddress");function Dt(e){return e?.trim()??""}a(Dt,"trimOrEmpty");function Go(e){let t=e.trim().toLowerCase();return !t.startsWith("0x")||t.length<12?e.trim():`${t.slice(0,6)}\u2026${t.slice(-4)}`}a(Go,"shortenHexAddress");function Vo(e){let t=Dt(e.token_symbol);if(t!=="")return t;let r=Dt(e.token_name);return r!==""?r:Go(e.address)}a(Vo,"getErc20DisplaySymbol");function Ho(e,t,r){let n=[],a=e.native_transfers.map(s=>Oo(s,t)),i=e.erc20_transfers.map(s=>$o(s));n.push(...a,...i);for(let s of e.nft_transfers)n.push(Wo(s));return n.length===0&&n.push(jo(e,t,r)),n}a(Ho,"buildTokens");function Oo(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:ce(e.from_address),to:ce(e.to_address),type:TokenType.NATIVE}}a(Oo,"buildNativeToken");function $o(e){let t=Number(e.token_decimals),r=Vo(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:ce(e.from_address),to:ce(e.to_address),type:TokenType.ERC20,address:e.address}}a($o,"buildErc20Token");function Wo(e){let t=e.contract_type==="ERC1155"?TokenType.ERC1155:TokenType.ERC721;return {name:"",symbol:"",amount:e.amount,collectableTokenId:e.token_id,from:ce(e.from_address),to:ce(e.to_address),type:t,address:e.token_address}}a(Wo,"buildNftToken");function jo(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:ce(e.from_address),to:ce(e.to_address),type:TokenType.NATIVE}}a(jo,"buildFallbackNativeToken");var qo="https://proxy-api.avax.network/proxy/moralis-evm";async function ma({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=`${qo}/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=>pa({tx:f,networkToken:t,explorerUrl:r,chainId:e,address:n})),nextPageToken:m.cursor??""}:{transactions:[],nextPageToken:""}}catch{return {transactions:[],nextPageToken:""}}}a(ma,"getTransactionsFromMoralis");var zo=new Set([1,4,5,11155111,8453,42161,10]);function da(e){return zo.has(e)}a(da,"isMoralisSupportedChain");var ua=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 ga(e){try{return e.then(t=>[t,null]).catch(t=>[null,t])}catch(t){return Promise.resolve([null,t])}}a(ga,"resolve");var Yo="https://ipfs.io";function Le(e,t=Yo){if(!e)return "";try{return ipfsResolver(e,t)}catch{return e}}a(Le,"ipfsResolverWithFallback");async function Jo(e,t=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),t),fetch(e,{signal:r.signal})}a(Jo,"fetchWithTimeout");async function fa(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 Jo(Le(e)).then(r=>r.json()).catch(()=>({}));else return {};return t}a(fa,"getNftMetadata");var Xo="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function ya(e,t="256"){let r=Le(e);return `${Xo}/width=${t},fit/${r}`}a(ya,"getSmallImageForNFT");var ka=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 Ta(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 Ta(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"),Ta=a(async(e,t)=>{if(t)return t.startsWith("ipfs://")?Le(t):t;{let[r,n]=await ga(fa(e));return n?"":r.image?ya(r.image):""}},"getImageUri");var ba=a(async({transactions:e,explorerUrl:t,networkToken:r,chainId:n,address:a})=>{let i=await ka(e,r),s=la(e,a,i),{isOutgoing:c,isIncoming:l,isSender:p,from:m,to:u}=ua(s,e,a),{blockTimestamp:f,txHash:y,gasPrice:g,gasUsed:k}=e.nativeTransaction,T=se(t,y);return {isContractCall:!nn.includes(s),isIncoming:l,isOutgoing:c,isSender:p,timestamp:f*1e3,hash:y,from:m,to:u,tokens:i,gasPrice:g,gasUsed:k,chainId:n.toString(),txType:s,explorerLink:T}},"convertTransaction");var va=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=>ba({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 Ra({client:e,chainId:t,networkToken:r,explorerUrl:n,address:a,nextPageToken:i,offset:s=25}){try{let c=Zo(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 g of l){if(g.isError!=="0"||g.txreceipt_status!=="1")continue;let k=vr(u,g),T=Qo(g,r);T&&k.tokens.push(T);}for(let g of p)vr(u,g).tokens.push(ti(g));for(let g of m){if(g.isError!=="0")continue;let k=vr(u,g),T=ei(g,r);T&&k.tokens.push(T);}let f=Array.from(u.values()).map(g=>ri(g,a,n,r,t)).sort((g,k)=>k.timestamp-g.timestamp),y=[l,p,m].some(g=>g.length===s);return {transactions:f,nextPageToken:y?String(c+1):""}}catch{return {transactions:[],nextPageToken:""}}}a(Ra,"getTransactionsFromHyperEvm");function Zo(e){let t=Number(e);return Number.isSafeInteger(t)&&t>0?t:1}a(Zo,"getPage");function vr(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(vr,"getAggregate");function Qo(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(Qo,"nativeToken");function ei(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(ei,"internalToken");function ti(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(ti,"erc20Token");function ri(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:se(r,e.hash)}}a(ri,"toTransaction");var ni=999,Ea=a(async({chainId:e,networkToken:t,explorerUrl:r,address:n,nextPageToken:a,offset:i,glacierService:s,hyperEvmEtherscanClient:c})=>e===ni?c?Ra({client:c,chainId:e,networkToken:t,explorerUrl:r,address:n,nextPageToken:a,offset:i}):{transactions:[],nextPageToken:""}:da(e)?ma({chainId:e,networkToken:t,explorerUrl:r,address:n,nextPageToken:a,offset:i}):s.isHealthy()?va({networkToken:t,explorerUrl:r,chainId:e,address:n,nextPageToken:a,offset:i,glacierService:s}):{transactions:[],nextPageToken:""},"getTransactionHistory");var si="https://ipfs.io";function Pa(e,t=si){if(!e)return "";try{return ipfsResolver(e,t)}catch{return e}}a(Pa,"ipfsResolverWithFallback");var oi="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Ft(e,t="256"){let r=Pa(e);return `${oi}/width=${t},fit/${r}`}a(Ft,"getSmallImageForNFT");var Ge,Z,Er=class Er{constructor(t,r){this.baseUrl=t;d(this,Ge,[]);d(this,Z,void 0);e(this,Z,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,Z).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,Z).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,Z)??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,Z).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 G([`${this.baseUrl}/v1/user/nft_list?id=${t}&chain_id=${r}`],pi,c(this,Z))}};Ge=new WeakMap,Z=new WeakMap,a(Er,"DeBank");var Mt=Er,ci=z$1.object({id:z$1.union([z$1.custom(isHexString),z$1.string()]),chain:z$1.string(),name:z$1.string()}),li=ci.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()})),pi=z$1.array(li);var z,Ve,Gt,Ht,Aa,Ir=class Ir{constructor({proxyApiUrl:t,fetch:r}){d(this,Ve);d(this,Ht);d(this,z,void 0);e(this,z,new Mt(`${t}/proxy/debank`,r));}async isNetworkSupported(t){return c(this,z).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,z).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()],f$1=u?u*c$1.price:void 0,y=f$1?l.mul(f$1).toDisplay({fixedDp:2}):void 0,g=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:g,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,Ve,Gt).call(this,t),s=await c(this,z).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(),f=c$1.usd[n.toLowerCase()],y=f?f*p.price:void 0,g=y?m.mul(y).toDisplay({fixedDp:2}):void 0,k=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:g,balanceDisplayValue:u,balanceInCurrency:k,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,Ve,Gt).call(this,t),a=await c(this,z).getNftList({chainId:n,address:r});return f(this,Ht,Aa).call(this,a,t)}};z=new WeakMap,Ve=new WeakSet,Gt=a(async function(t){let n=(await c(this,z).getChainList()).find(i=>i.community_id===t)?.id;if(!n)throw rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+t);let a=await c(this,z).getChainInfo({chainId:n});if(!a)throw rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+t);return {chainInfo:a,chainIdString:n}},"#getChainInfo"),Ht=new WeakSet,Aa=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(Ir,"DeBankService");var Vt=Ir;var Sr=class Sr extends Error{constructor(){super(...arguments);b(this,"message","Glacier is unhealthy. Try again later.");}};a(Sr,"GlacierUnhealthyError");var Q=Sr,fi=[ChainId.ETHEREUM_HOMESTEAD],xr=class xr{constructor({glacierApiUrl:t,headers:r,getAuthHeaders:n}){b(this,"glacierSdk");b(this,"isGlacierHealthy",!0);b(this,"supportedChainIds",[]);b(this,"isHealthy",a(()=>this.isGlacierHealthy,"isHealthy"));this.glacierSdk=new Glacier({BASE:t,HEADERS:n?async()=>({...r,...await n()}):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=>!fi.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 Q&&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 Q&&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 Q&&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 Q&&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 Q&&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(...hi(c.erc20TokenBalances,Number(t))),s=c.nextPageToken;}while(s);return [...yi(a),...i].reduce((c,l)=>({...c,[l.address.toLowerCase()]:l}),{})}catch(i){throw i instanceof Q&&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 Q&&this.setGlacierToUnhealthy(),i}}};a(xr,"EvmGlacierService");var Ot=xr,yi=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"),hi=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 Ca=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()}),Na=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()}),wa=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 Ti=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,Cr=class Cr{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,Ti(r));}listNormalTransactions(t,r){return f(this,Oe,$t).call(this,"txlist",t,Ca,r)}listErc20Transfers(t,r){return f(this,Oe,$t).call(this,"tokentx",t,Na,r)}listInternalTransactions(t,r){return f(this,Oe,$t).call(this,"txlistinternal",t,wa,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(Cr,"HyperEvmEtherscanClient");var Wt=Cr;var $e,pt,le,K,ke,H,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,le,void 0);d(this,K,void 0);d(this,ke,void 0);d(this,H,void 0);d(this,mt,void 0);let{glacierApiUrl:i,proxyApiUrl:s}=Or(r);e(this,H,a),e(this,$e,new Ot({glacierApiUrl:i,headers:Zt(n),getAuthHeaders:async()=>c(this,H)?.getAuthHeaders?.()})),e(this,pt,new Vt({proxyApiUrl:s,fetch:c(this,H)?.fetch})),e(this,le,s),e(this,mt,new Wt({proxyApiUrl:s,fetch:c(this,H)?.fetch})),e(this,K,t),e(this,ke,new bi({baseURL:s+"/proxy/blockaid/",apiKey:Vr,httpAgent:a?.httpAgent,fetch:a?.fetch}));}updateRuntimeParams(t){e(this,H,{...c(this,H),...t,features:{...c(this,H)?.features,...t.features}});}getProvider(t){return M({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 Xn({accountIndex:t,xpub:r,walletType:n})}buildDerivationPath(t){return Pe(t)}deriveAddress(t){return Zr({...t,approvalController:c(this,K)})}deriveAddresses(t){return Qr({...t,approvalController:c(this,K)})}getBalances({addresses:t,network:r,currency:n,customTokens:a,storage:i,tokenTypes:s,customTokensOnly:c$1}){let l=new ne({storage:i,proxyApiUrl:c(this,le),fetch:c(this,H)?.fetch});return ta({addresses:t,currency:n,network:r,proxyApiUrl:c(this,le),customTokens:a,customTokensOnly:c$1,balanceServices:[c(this,$e),c(this,pt)],storage:i,tokenTypes:s,tokenService:l,fetch:c(this,H)?.fetch})}getManifest(){let t=parseManifest(Gr);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 oa({chainId:r,chainName:n,rpcUrl:a,multiContractAddress:i?.multicall,caipId:s,proxyApiUrl:c(this,le),customRpcHeaders:c$1})}getTransactionHistory(t){let{network:r,address:n,nextPageToken:a,offset:i}=t,{chainId:s,networkToken:c$1,explorerUrl:l=""}=r;return Ea({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,le)})}async onRpcRequest(t,r){switch(t.method){case RpcMethod.ETH_SEND_TRANSACTION:return Dn({request:t,network:r,approvalController:c(this,K),blockaid:c(this,ke),eercEnabled:c(this,H)?.features?.encryptedERCs===!0});case RpcMethod.ETH_SEND_TRANSACTION_BATCH:return dn(c(this,K))?xn({request:t,network:r,approvalController:c(this,K),blockaid:c(this,ke)}):{error:rpcErrors.methodNotSupported(`Method ${t.method} requires BatchApprovalController`)};case RpcMethod.AVALANCHE_DECLARE_AGENT_IDENTITY:return Jr({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 Kn({request:t,network:r,approvalController:c(this,K),blockaid:c(this,ke)});default:return vi(t.method)?Yn(t,r):{error:rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}};$e=new WeakMap,pt=new WeakMap,le=new WeakMap,K=new WeakMap,ke=new WeakMap,H=new WeakMap,mt=new WeakMap,a(Nr,"EvmModule");var Da=Nr,vi=a(e=>e.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(e),"shouldForwardToRpcNode");
|
|
35
35
|
|
|
36
36
|
export { J as ERC20TransactionType, cn as EercOperation, Da as EvmModule, nn as NonContractCallTypes, or as TransactionKind, Be as addIdToPromise, wd as isTypedData, qn as isTypedDataV1, ln as parseEercTransaction, Ue as settleAllIdPromises };
|
|
37
37
|
//# sourceMappingURL=out.js.map
|