@avalabs/evm-module 3.5.1 → 3.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -22,7 +22,7 @@ var gr__default = /*#__PURE__*/_interopDefault(gr);
22
22
  var yr__default = /*#__PURE__*/_interopDefault(yr);
23
23
  var oo__default = /*#__PURE__*/_interopDefault(oo);
24
24
 
25
- function Ht(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function Pt(t){let e,r=0;for(e=0;e<t.length;e++){let n=Ht(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}var ee=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=B.exponential()})=>{let a=0,o=0,s;for(;o<r;){o>0&&await Cn(a);try{let c=await t(o);if(e(c))return c}catch(c){s=c;}a=n(o),o++;}let i=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(i)},B=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return r=>e*1e3}static constantMs(e){return r=>e}static linearThenExponential(e,r){return n=>{if(n<e)return (n+1)*r;let a=n-e+1,o=e*r,s=2*r*(Math.pow(2,a)-1);return o+s}}};function Cn(t){return new Promise(e=>setTimeout(e,t))}var Rt=t=>ee({operation:e=>t(e>0),maxRetries:2,backoffPolicy:B.constant(1),isSuccess:e=>e?.status?.error_code!==429});async function U(t,e,r=fetch){let n=await r(...t);if(!n.ok)throw new Error(`Request failed with status ${n.status}`);let a=await n.json();return e.parse(a)}var Ce=class{constructor(e,r){this.proxyApiUrl=e;this.fetchFn=r;}simplePrice(e){let r=new URLSearchParams(e);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(e){let{id:r,...n}=e,a=new URLSearchParams(n);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}};var wn=zod.z.array(zod.z.object({internalId:zod.z.string(),id:zod.z.string(),symbol:zod.z.string(),name:zod.z.string(),image:zod.z.string().optional().nullable(),current_price:zod.z.number().optional().nullable(),price_change_percentage_24h:zod.z.number().optional().nullable(),market_cap:zod.z.number().optional().nullable(),total_volume:zod.z.number().optional().nullable(),platforms:zod.z.record(zod.z.string(),zod.z.string())})),He=class{constructor(e){this.proxyApiUrl=e;}watchlistToken(e){let r=new URLSearchParams(e);return U([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],wn)}};var q,te,re,me,z=class{constructor({storage:e,proxyApiUrl:r,fetch:n}){chunkTKL4UUHE_cjs.c(this,q,void 0);chunkTKL4UUHE_cjs.c(this,te,void 0);chunkTKL4UUHE_cjs.c(this,re,void 0);chunkTKL4UUHE_cjs.c(this,me,void 0);chunkTKL4UUHE_cjs.a(this,"transformSimplePriceResponse",(e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(a=>{let o=e[a];n[a]={},r.forEach(s=>{n[a]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),n});chunkTKL4UUHE_cjs.d(this,q,e),chunkTKL4UUHE_cjs.d(this,te,r),chunkTKL4UUHE_cjs.d(this,re,n??globalThis.fetch),chunkTKL4UUHE_cjs.d(this,me,coreCoingeckoSdk.getBasicCoingeckoHttp(void 0,chunkTKL4UUHE_cjs.b(this,re)));}async getWatchlistDataForToken({tokenDetails:e,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new He(chunkTKL4UUHE_cjs.b(this,te)).watchlistToken({tokens:e.symbol,currency:r})).filter(o=>e.isNative?o.internalId===`NATIVE-${e.symbol.toLowerCase()}`:o.platforms[e.caip2Id]===e.address),[a]=n;return a?{priceInCurrency:a.current_price??0,change24:a.price_change_percentage_24h??0,marketCap:a.market_cap??0,vol24:a.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${e?`${Pt(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkTKL4UUHE_cjs.b(this,q)?.get?.(o),n)return n;try{n=await Rt(s=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{n=void 0;}return chunkTKL4UUHE_cjs.b(this,q)?.set?.(o,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,s=`getPricesWithMarketDataByAddresses-${`${Pt(e)}-${r}-${n}`}`;if(a=chunkTKL4UUHE_cjs.b(this,q)?.get?.(s),a)return a;try{a=await Rt(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:i}));}catch(i){console.error(i),a=void 0;}return chunkTKL4UUHE_cjs.b(this,q)?.set?.(s,a),a}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let o=await new Ce(chunkTKL4UUHE_cjs.b(this,te),chunkTKL4UUHE_cjs.b(this,re)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(o,[n])}return coreCoingeckoSdk.simpleTokenPrice(chunkTKL4UUHE_cjs.b(this,me),{assetPlatformId:e,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:a=!1,change24:o=!1,lastUpdated:s=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await new Ce(chunkTKL4UUHE_cjs.b(this,te),chunkTKL4UUHE_cjs.b(this,re)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:o,include_last_updated_at:s});return this.transformSimplePriceResponse(l,r)}return coreCoingeckoSdk.simplePrice(chunkTKL4UUHE_cjs.b(this,me),{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:o,lastUpdated:s,shouldThrow:c})}};q=new WeakMap,te=new WeakMap,re=new WeakMap,me=new WeakMap;var Mn="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",Ln="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",qt=zod.object({date:zod.string(),usd:zod.record(zod.number())}),je=async()=>{try{return await U([Mn],qt)}catch{return await U([Ln],qt)}};var St=(t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),ze=(t,e)=>({label:t,value:e,type:vmModuleTypes.DetailItemType.LINK}),de=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e});var Ye=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.NETWORK,value:e});var xt=({name:t,version:e})=>{switch(t){case vmModuleTypes.AppName.CORE_MOBILE_IOS:case vmModuleTypes.AppName.CORE_MOBILE_ANDROID:case vmModuleTypes.AppName.CORE_WEB:case vmModuleTypes.AppName.CORE_EXTENSION:case vmModuleTypes.AppName.EXPLORER:return {"x-application-name":t,"x-application-version":e};case vmModuleTypes.AppName.OTHER:return}};var zt=process.env.GLACIER_API_KEY;var we=()=>zt;var $n={rltoken:we()},ne,Ke,Je,Kt,Xe,Jt,_e=class extends glacierSdk.FetchHttpRequest{constructor(r){super(r);chunkTKL4UUHE_cjs.c(this,Je);chunkTKL4UUHE_cjs.c(this,Xe);chunkTKL4UUHE_cjs.c(this,ne,3);chunkTKL4UUHE_cjs.c(this,Ke,B.exponential());}request(r){let n={...$n,...r.query||{}},a={...r,query:Object.keys(n).length>0?n:void 0},o=()=>super.request(a);return chunkTKL4UUHE_cjs.b(this,ne)>0?chunkTKL4UUHE_cjs.e(this,Xe,Jt).call(this,o):chunkTKL4UUHE_cjs.e(this,Je,Kt).call(this,o)}};ne=new WeakMap,Ke=new WeakMap,Je=new WeakSet,Kt=function(r){let n=r();return new glacierSdk.CancelablePromise((a,o,s)=>{s(()=>n.cancel()),n.then(i=>{chunkTKL4UUHE_cjs.d(this,ne,0),a(i);}).catch(i=>{if(i instanceof glacierSdk.ApiError){let c=i.status===429,l=i.status>=500&&i.status<600;chunkTKL4UUHE_cjs.d(this,ne,chunkTKL4UUHE_cjs.b(this,ne)+Number(c||l));}o(i);});})},Xe=new WeakSet,Jt=function(r){let n=chunkTKL4UUHE_cjs.b(this,Ke).call(this,chunkTKL4UUHE_cjs.b(this,ne));return new glacierSdk.CancelablePromise((a,o,s)=>{let i=setTimeout(()=>{let c=r();s(()=>{c.cancel(),clearTimeout(i);}),c.then(a).catch(o);},n);})};var F=(t,e)=>({message:`${t}${e instanceof Error?`: ${e.message}`:""}`,data:{cause:e}});var Xt={name:"EVM",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/index.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider/index.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:[],namespaces:["eip155"]},cointype:"60",permissions:{rpc:{dapps:!0,methods:["personal_sign","eth_sendTransaction","eth_sendTransactionBatch","eth_*","web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"],nonRestrictedMethods:["eth_requestAccounts","eth_decrypt","eth_getEncryptionPublicKey","eth_subscribe","eth_unsubscribe","eth_blockNumber","eth_call","eth_chainId","eth_coinbase","eth_estimateGas","eth_feeHistory","eth_gasPrice","eth_getBalance","eth_getBlockByHash","eth_getBlockByNumber","eth_getBlockTransactionCountByHash","eth_getBlockTransactionCountByNumber","eth_getCode","eth_getFilterChanges","eth_getFilterLogs","eth_getLogs","eth_getProof","eth_getStorageAt","eth_getTransactionByBlockHashAndIndex","eth_getTransactionByBlockNumberAndIndex","eth_getTransactionByHash","eth_getTransactionCount","eth_getTransactionReceipt","eth_getUncleCountByBlockHash","eth_getUncleCountByBlockNumber","eth_newBlockFilter","eth_newFilter","eth_newPendingTransactionFilter","eth_syncing","eth_uninstallFilter","net_version","net_peerCount","net_listening","web3_sha3","web3_clientVersion"]}},manifestVersion:"0.1"};var Zt="DUMMY_API_KEY";var Hn={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},jn={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},er=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return Hn;case vmModuleTypes.Environment.DEV:return jn}};var Ze=({accountIndex:t,derivationPathType:e})=>{if(t<0)throw rpcErrors.rpcErrors.invalidParams("Account index must be a non-negative integer");switch(e){case"bip44":return {[vmModuleTypes.NetworkVMType.EVM]:`m/44'/60'/0'/0/${t}`};case"ledger_live":return {[vmModuleTypes.NetworkVMType.EVM]:`m/44'/60'/${t}'/0/0`};default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported derivation path type: ${e}`)}};var nr=t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string";var ar=async t=>{let{secretId:e,approvalController:r}=t,n=nr(t)?Ze(t).EVM:void 0,a=await r.requestPublicKey({curve:"secp256k1",secretId:e,derivationPath:n});return {[vmModuleTypes.NetworkVMType.EVM]:ethers.computeAddress(`0x${a}`)}};var N=async t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:o=2e3}=t,s=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:a},Xn(n),new ethers.Network(r,e));return s.pollingInterval=o,s},Jn=["glacier-api.avax.network","proxy-api.avax.network"];function Xn(t){let e=new URL(t),r=we();if(r&&Jn.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}var fe=zod.z.object({from:zod.z.string().length(42),to:zod.z.string().length(42).optional(),data:zod.z.string().optional(),value:zod.z.string().startsWith("0x").optional(),gas:zod.z.string().startsWith("0x").optional(),gasPrice:zod.z.string().startsWith("0x").optional(),maxFeePerGas:zod.z.string().startsWith("0x").optional(),maxPriorityFeePerGas:zod.z.string().startsWith("0x").optional(),nonce:zod.z.string().optional(),chainId:zod.z.string().optional().or(zod.z.number().optional()),accessList:zod.z.array(zod.z.object({address:zod.z.string().startsWith("0x"),storageKeys:zod.z.array(zod.z.string())})).optional()});var or=zod.z.tuple([fe,fe]).rest(fe).refine(t=>It(t,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(t=>It(t,"from"),{message:'All transactions must use the same "from" address'}).refine(t=>ta(t,"nonce")||ea(t,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'}),Zn=zod.z.object({skipIntermediateTxs:zod.z.boolean().optional()}),Qn=zod.z.union([or,zod.z.object({transactions:or,options:Zn.optional()})]);function ea(t,e){return !It(t,e)}function ta(t,e){return t.every(r=>r[e]===void 0||r[e]==="")}function It(t,e){return new Set(t.map(n=>n[e])).size===1}var sr=t=>{let e=Qn.safeParse(t);return e.success?Array.isArray(e.data)?{success:!0,data:{transactions:e.data,options:{}}}:{success:!0,data:{transactions:e.data.transactions,options:e.data.options??{}}}:e};var Qe=async({from:t,provider:e})=>e.getTransactionCount(t);var ir=async(t,e)=>{if(t[0].nonce)return;let r=await Qe({from:t[0].from,provider:e});return Promise.all(t.map(async(n,a)=>{n.nonce=String(r+a);}))};var cr=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER],ae=(s=>(s.TOTAL_SUPPLY="totalSupply",s.BALANCE_OF="balanceOf",s.TRANSFER="transfer",s.TRANSFER_FROM="transferFrom",s.APPROVE="approve",s.ALLOWANCE="allowance",s))(ae||{});var et=t=>{if(t.data)try{let r=new ethers.Interface(gr__default.default.abi).parseTransaction({data:t.data,value:t.value}),n=r?.name??r?.fragment?.name;return n&&aa(n)?n:void 0}catch{return}};function aa(t){return Object.values(ae).includes(t)}var tt=(t,e,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:o,alert:s})=>{let{dappInfo:i}=t,c=et(r),l="Do you approve this transaction?";c==="approve"&&(l="Do you approve this spend limit?");let p=[de("Account",r.from),Ye("Network",{name:e.chainName,logoUri:e.logoUri}),ze("Website",i)];r.to&&p.push(de("Contract",r.to));let u={title:l,details:[{title:"Transaction Details",items:p}],networkFeeSelector:!0,alert:s,balanceChange:a,tokenApprovals:o,isSimulationSuccessful:n},f={type:vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,account:r.from,data:{type:2,nonce:Number(r.nonce),gasLimit:Number(r.gas),maxFeePerGas:r.maxFeePerGas,maxPriorityFeePerGas:r.maxPriorityFeePerGas,to:r.to,from:r.from,data:r.data,value:r.value,chainId:r.chainId??e.chainId,accessList:r.accessList}};return {displayData:u,signingData:f}};var rt=async(t,e,r)=>{if("txHash"in e)return e.txHash;let n=()=>t.send("eth_sendRawTransaction",[e.signedData]);return r?.shouldRetry?ee({operation:()=>n(),isSuccess:()=>!0,maxRetries:6,backoffPolicy:B.linearThenExponential(4,1e3)}):n()};function ye(t,e,r="tx"){return `${t}/${r}/${e}`}var Be=async({explorerUrl:t,provider:e,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:o,request:s})=>{try{let i=ye(t,r);if(n({txHash:r,request:s,explorerLink:i}),(await ee({operation:async()=>e.getTransactionReceipt(r),isSuccess:p=>!!p,backoffPolicy:B.linearThenExponential(15,750),maxRetries:20}))?.status===1)return a({txHash:r,explorerLink:i,request:s}),!0}catch(i){console.error(i);}return o({txHash:r,request:s}),!1};var nt=new Map,lr=(t,e,r)=>(nt.set(t,{signingRequests:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a},o)=>{let s=nt.get(t);if(!s)throw rpcErrors.rpcErrors.resourceNotFound();let{signingRequests:i}=s,l={signingRequests:i.map((p,u)=>{if(o===void 0||o===u){let{signingData:f}=p;return {signingData:{...f,data:{...f.data,maxFeePerGas:n??f.data.maxFeePerGas,maxPriorityFeePerGas:a??f.data.maxPriorityFeePerGas}},displayData:p.displayData}}return p}),displayData:r};return nt.set(t,l),l},cleanup:()=>nt.delete(t)});function oe(t){return !("type"in t)}function at(t){return t.type===vmModuleTypes.TokenType.ERC20}function pr(t){return typeof t.to=="string"}function mr(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}function ca(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}function la(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}function Ct(t){return ca(t)?t.ins.length===0&&t.outs.length===0:la(t)?t.approvals.length===0:!1}var dr=async({chainId:t,params:e,domain:r,withGasEstimation:n,blockaid:a})=>{let o=["validation","simulation"];return n&&o.push("gas_estimation"),a.evm.transactionBulk.scan({chain:t.toString(),options:o,data:e,metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}})},ur=async({chainId:t,params:e,domain:r,blockaid:n})=>n.evm.transaction.scan({account_address:e.from,chain:t.toString(),options:["validation","simulation"],data:{from:e.from,to:e.to,data:e.data,value:e.value,gas:e.gas,gas_price:e.gasPrice},metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}}),fr=async({chainId:t,accountAddress:e,data:r,domain:n,blockaid:a})=>a.evm.jsonRpc.scan({chain:t.toString(),options:["validation","simulation"],account_address:e,data:r,metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}});var Tr=async(t,e,r)=>{if(!t.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.ethers.Contract(t.to,gr__default.default.abi,r),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),o=yr__default.default(a[0]),s=yr__default.default(a[1]),i=parseInt(a[2]),c={type:vmModuleTypes.TokenType.ERC20,name:o,chainId:e,symbol:s,decimals:i,address:t.to,contractType:"ERC-20"},l=new ethers.ethers.Interface(gr__default.default.abi),p=l.getFunction(t.data.slice(0,10)),u=l.decodeFunctionData(t.data.slice(0,10),t.data);if(p?.name==="transfer")return {balanceChange:{outs:[{items:[{displayValue:new coreUtilsSdk.TokenUnit(u.amount,c.decimals,c.symbol).toDisplay(),usdPrice:void 0}],token:c}],ins:[]}};if(p?.name==="approve")return {tokenApprovals:{isEditable:!0,approvals:[{token:c,spenderAddress:u.spender,value:u.amount}]}}}catch(n){console.error("parseErc20Tx error",n);}return {tokenApprovals:void 0,balanceChange:void 0}};var Y={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious transaction",description:"Use caution, this transaction might be malicious."}},[vmModuleTypes.AlertType.DANGER]:{type:vmModuleTypes.AlertType.DANGER,details:{title:"Scam transaction",description:"This transaction has been flagged as malicious, I understand the risk.",body:["This transaction is malicious","do not proceed"],actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};var vr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,blockaid:o})=>{let s;try{s=await ur({chainId:n,params:r,domain:e,blockaid:o});}catch(i){console.error("simulateTransaction error",i);}return wt({rpcMethod:t,params:r,chainId:n,provider:a,simulationResult:s})},wt=async({rpcMethod:t,params:e,chainId:r,provider:n,simulationResult:a})=>{let o,s,i,c=!1,l;if(a){let{validation:p,simulation:u,gas_estimation:f}=a;!p||p.result_type==="Error"||p.result_type==="Warning"?o=Y[vmModuleTypes.AlertType.WARNING]:p.result_type==="Malicious"&&(o=Y[vmModuleTypes.AlertType.DANGER]),u?.status==="Success"&&(c=!0,i=br(t,u.account_summary),s=Er(u.account_summary.assets_diffs)),f?.status==="Success"&&(l=Number(f.estimate));}if(!c&&pr(e)){let p=await Tr(e,r,n);s=p.balanceChange,i=p.tokenApprovals;}return {alert:o,balanceChange:s,tokenApprovals:i,isSimulationSuccessful:c,estimatedGasLimit:l}},ga=t=>t.trace_type==="ExposureTrace",Ta=(t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,ka=t=>t===void 0||t.length===0?{}:t.reduce((e,r)=>ga(r)?{[Ta(r.spender,r.asset.address)]:r}:e,{}),br=(t,e)=>{let{traces:r}=e,n=ka(r),a=Object.entries(n).map(([s,i])=>{let c=Pr(i.asset);if(!c)return;let l={token:c,spenderAddress:i.spender,logoUri:c.logoUri};if(i.type==="ERC20ExposureTrace"){let{exposed:{raw_value:p,value:u,usd_price:f}}=i;if(!u||u<=0)return;l.value=p,l.usdPrice=`${f}`;}if(i.type==="ERC721ExposureTrace")if(!i.exposed)l.value=`0x${ethers.MaxUint256.toString(16)}`;else {let{usd_price:p,amount:u}=i.exposed;l.value=`${u}`,l.usdPrice=`${p}`;}return l}).filter(Boolean);return a.length===0?void 0:{isEditable:a.length===1&&a[0]?.token.type===vmModuleTypes.TokenType.ERC20&&t===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:a}},Er=t=>{let e=kr(t,"in"),r=kr(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},kr=(t,e)=>t.filter(r=>r[e].length>0).sort((r,n)=>r[e].length-n[e].length).map(r=>{let n=r.asset,a="address"in n?Pr(n):va(n);if(!a)return;let o=r[e].map(s=>{let i;if("value"in s&&s.value)if("decimals"in a){let u=coreUtilsSdk.numberToBN(s.value,a.decimals);i=coreUtilsSdk.balanceToDisplayValue(u,a.decimals);}else ethers.isHexString(s.value)&&(i=parseInt(s.value,16).toString());else "type"in a&&a.type===vmModuleTypes.TokenType.ERC721&&(i="1");if(!i)return;let c="logo_url"in s?s.logo_url:void 0,l="token_id"in s?s.token_id:void 0;return {displayValue:i,usdPrice:s.usd_price,...c!==void 0&&{logoUri:c},...l!==void 0&&{tokenId:l}}}).filter(s=>s!==void 0);return {token:a,items:o}}).filter(r=>r!==void 0),Pr=t=>{let e;return t.type==="ERC20"?e={type:vmModuleTypes.TokenType.ERC20,address:t.address,decimals:t.decimals,name:t.name??t.symbol??"",symbol:t.symbol??"",logoUri:t.logo_url}:t.type==="ERC1155"?e={type:vmModuleTypes.TokenType.ERC1155,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="ERC721"?e={type:vmModuleTypes.TokenType.ERC721,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="NONERC"&&(e={type:vmModuleTypes.TokenType.NONERC,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}),e},va=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),Rr=async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:a,blockaid:o})=>{let s,i,c;try{let{validation:l,simulation:p}=await fr({chainId:n,accountAddress:r,data:a,domain:e,blockaid:o});!l||l.result_type==="Error"||l.result_type==="Warning"?s=Y[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"&&(s=Y[vmModuleTypes.AlertType.DANGER]),p?.status==="Success"&&(c=br(t.method,p.account_summary),i=Er(p.account_summary.assets_diffs));}catch(l){console.error("processJsonRpcSimulation error",l),s=Y[vmModuleTypes.AlertType.WARNING];}return {alert:s,balanceChange:i,tokenApprovals:c}};var xr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,populateMissingGas:o,blockaid:s})=>{let i;try{i=await dr({chainId:n,params:r,domain:e,withGasEstimation:o,blockaid:s});}catch(d){return console.error("simulateTransactionBatch error",d),{isSimulationSuccessful:!1,alert:Y[vmModuleTypes.AlertType.WARNING],scans:[]}}let c=await Promise.all(i.map(async(d,y)=>{let v=r[y],P=await wt({chainId:n,params:r[y],provider:a,rpcMethod:t,simulationResult:d});return o&&!v.gas&&P.estimatedGasLimit&&(v.gas=`0x${P.estimatedGasLimit.toString(16)}`),{transaction:v,...P}})),l=c.every(d=>d.isSimulationSuccessful),p=ba(c),u=Pa(c),f=Ea(c);return {isSimulationSuccessful:l,alert:p,balanceChange:u,tokenApprovals:f,scans:c.map(d=>(d.tokenApprovals&&(d.tokenApprovals.isEditable=!1),d))}},ba=t=>{let e={[vmModuleTypes.AlertType.INFO]:0,[vmModuleTypes.AlertType.WARNING]:1,[vmModuleTypes.AlertType.DANGER]:2};return t.reduce((r,{alert:n})=>n&&(!r||e[n.type]>e[r.type])?n:r,void 0)},Ea=t=>{let e=t.reduce((r,{tokenApprovals:n})=>(n&&n.approvals.forEach(a=>{let o=r.approvals.find(s=>a.token.address===s.token.address&&a.spenderAddress===s.spenderAddress);if(!o){r.approvals.push({...a});return}o.value=a.value,o.usdPrice=a.usdPrice;}),r),{approvals:[],isEditable:!1});return Ra(e,t),Ct(e)?void 0:e},Pa=t=>{let e=t.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(a=>{let o=Sr(r.ins,a);o?o.items.push(...a.items):r.ins.push(a);}),n.outs.forEach(a=>{let o=Sr(r.outs,a);o?o.items.push(...a.items):r.outs.push({...a});})),r),{ins:[],outs:[]});return Ct(e)?void 0:e},Sr=(t,e)=>t.find(r=>oe(r.token)&&oe(e.token)?r.token.symbol===e.token.symbol:!oe(r.token)&&!oe(e.token)?r.token.address===e.token.address:!1),Ra=(t,e)=>{for(let r of t.approvals)for(let n of e)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(o=>!oe(o.token)&&!oe(r.token)&&o.token.address===r.token.address)))if(!n.tokenApprovals)t.approvals=t.approvals.filter(o=>o.spenderAddress!==r.spenderAddress&&r.token.address!==o.token.address);else {let o=n.tokenApprovals.approvals.find(s=>s.spenderAddress===r.spenderAddress&&s.token.address===r.token.address);if(!o)continue;r.usdPrice=o.usdPrice,r.value=o.value;}};var Ir=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:o,success:s,error:i}=sr(a);if(!s)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams(F("Transaction params are invalid",i))};let{transactions:c,options:l={}}=o,{skipIntermediateTxs:p=!1}=l,u=await N({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});try{await ir(c,u);}catch(C){return console.error("Unable to calculate nonce",C),{error:rpcErrors.rpcErrors.internal(F("Unable to calculate nonce",C))}}let f=c.every(C=>Number(C.gas)>0),{alert:d,balanceChange:y,isSimulationSuccessful:v,tokenApprovals:P,scans:b}=await xr({rpcMethod:t.method,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:u,populateMissingGas:!f,blockaid:n});if(!b.every(({transaction:C})=>Number(C.gas)>0))return console.error("Gas limit is missing in some transactions"),{error:rpcErrors.rpcErrors.internal({message:"Gas limit is missing in some transactions"})};let x={title:"Do you approve these transactions?",details:[{title:"Transaction Details",items:[de("Account",c[0].from),Ye("Network",{name:e.chainName,logoUri:e.logoUri}),ze("Website",t.dappInfo)]}],isSimulationSuccessful:v,balanceChange:y,alert:d,tokenApprovals:P,networkFeeSelector:!0},g=b.map(C=>tt(t,e,C.transaction,C)),{cleanup:k,updateTx:G}=lr(t.requestId,g,x),W=await r.requestBatchApproval({request:t,signingRequests:g,displayData:x,updateTx:G});if(k(),"error"in W)return {error:W.error};if(W.result.length!==c.length)return {error:rpcErrors.rpcErrors.internal({message:`Invalid number of signatures. Expected ${c.length}, got ${W.result.length}`})};let Ae=[];for(let[C,An]of W.result.entries()){let Wt=C===W.result.length-1,Et=await rt(u,An);if(Wt&&Be({explorerUrl:e.explorerUrl??"",provider:u,txHash:Et,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),!Wt&&!p&&!await Be({explorerUrl:e.explorerUrl??"",provider:u,txHash:Et,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}))return {error:rpcErrors.rpcErrors.internal({message:`Transaction ${C+1} failed! Batch execution stopped`})};Ae.push(Et);}return {result:Ae}};function Ar(t,e,r){return new ethers.ethers.Contract(t,gr__default.default.abi).interface.encodeFunctionData("approve",[e,r])}var it=new Map,Cr=(t,e,r)=>(it.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a,approvalLimit:o,gasLimit:s})=>{let i=it.get(t);if(!i)throw rpcErrors.rpcErrors.resourceNotFound();let{signingData:c,displayData:l}=i,p={...c,data:{...c.data,gasLimit:s??c.data.gasLimit,maxFeePerGas:n??c.data.maxFeePerGas,maxPriorityFeePerGas:a??c.data.maxPriorityFeePerGas}},u={...l};if(typeof o=="string"){if(!o.startsWith("0x"))throw rpcErrors.rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let d=l.tokenApprovals;Ia(d),Aa(c.data.data);let y=d.approvals[0];p.data.data=Ar(y.token.address,y.spenderAddress,o),u.tokenApprovals={approvals:[{...y,value:o}],isEditable:!0};}let f={signingData:p,displayData:u};return it.set(t,f),f},cleanup:()=>it.delete(t)});function Ia(t){if(!t||!t.isEditable||t.approvals.length!==1)throw rpcErrors.rpcErrors.invalidInput("Cannot edit the token approval for this request. Please start a new request instead.")}function Aa(t){if((!t||t==="0x"?null:et({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}var wr=async({transactionParams:{from:t,to:e,data:r,value:n,accessList:a},provider:o})=>{let s=await o.getTransactionCount(t);return Number(await o.estimateGas({from:t,to:e,nonce:s,data:r,value:n,accessList:a}))};var wa=zod.z.tuple([fe]),_r=t=>wa.safeParse(t);var Nr=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:o,error:s,success:i}=_r(a);if(!i)return console.error("invalid params",s),{error:rpcErrors.rpcErrors.invalidParams(F("Transaction params are invalid",s))};let[c]=o,l=await N({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});if(!c.gas||Number(c.gas)<0)try{let S=await wr({transactionParams:{from:c.from,to:c.to,data:c.data,value:c.value,accessList:c.accessList},provider:l});c.gas="0x"+S.toString(16);}catch(S){return {error:rpcErrors.rpcErrors.internal(F("Unable to calculate gas limit",S))}}if(!c.nonce)try{let S=await Qe({from:c.from,provider:l});c.nonce=String(S);}catch(S){return {error:rpcErrors.rpcErrors.internal(F("Unable to calculate nonce",S))}}let p=await vr({rpcMethod:t.method,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:l,blockaid:n}),{displayData:u,signingData:f}=tt(t,e,c,p),{updateTx:d,cleanup:y}=Cr(t.requestId,f,u),v=await r.requestApproval({request:t,displayData:u,signingData:f,updateTx:d});if(y(),"error"in v)return {error:v.error};let P,b=t.context?.shouldRetry===!0;try{P=await rt(l,v,{shouldRetry:b});}catch(S){return {error:rpcErrors.rpcErrors.internal(F("Unable to get transaction hash",S))}}return Be({explorerUrl:e.explorerUrl??"",provider:l,txHash:P,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),{result:P}};var _t=t=>{let e="";e+=`Domain
25
+ function Ht(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function Pt(t){let e,r=0;for(e=0;e<t.length;e++){let n=Ht(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}var ee=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=B.exponential()})=>{let a=0,o=0,s;for(;o<r;){o>0&&await Cn(a);try{let c=await t(o);if(e(c))return c}catch(c){s=c;}a=n(o),o++;}let i=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(i)},B=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return r=>e*1e3}static constantMs(e){return r=>e}static linearThenExponential(e,r){return n=>{if(n<e)return (n+1)*r;let a=n-e+1,o=e*r,s=2*r*(Math.pow(2,a)-1);return o+s}}};function Cn(t){return new Promise(e=>setTimeout(e,t))}var Rt=t=>ee({operation:e=>t(e>0),maxRetries:2,backoffPolicy:B.constant(1),isSuccess:e=>e?.status?.error_code!==429});async function U(t,e,r=fetch){let n=await r(...t);if(!n.ok)throw new Error(`Request failed with status ${n.status}`);let a=await n.json();return e.parse(a)}var Ce=class{constructor(e,r){this.proxyApiUrl=e;this.fetchFn=r;}simplePrice(e){let r=new URLSearchParams(e);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(e){let{id:r,...n}=e,a=new URLSearchParams(n);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}};var wn=zod.z.array(zod.z.object({internalId:zod.z.string(),id:zod.z.string(),symbol:zod.z.string(),name:zod.z.string(),image:zod.z.string().optional().nullable(),current_price:zod.z.number().optional().nullable(),price_change_percentage_24h:zod.z.number().optional().nullable(),market_cap:zod.z.number().optional().nullable(),total_volume:zod.z.number().optional().nullable(),platforms:zod.z.record(zod.z.string(),zod.z.string())})),He=class{constructor(e){this.proxyApiUrl=e;}watchlistToken(e){let r=new URLSearchParams(e);return U([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],wn)}};var q,te,re,me,z=class{constructor({storage:e,proxyApiUrl:r,fetch:n}){chunkTKL4UUHE_cjs.c(this,q,void 0);chunkTKL4UUHE_cjs.c(this,te,void 0);chunkTKL4UUHE_cjs.c(this,re,void 0);chunkTKL4UUHE_cjs.c(this,me,void 0);chunkTKL4UUHE_cjs.a(this,"transformSimplePriceResponse",(e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(a=>{let o=e[a];n[a]={},r.forEach(s=>{n[a]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),n});chunkTKL4UUHE_cjs.d(this,q,e),chunkTKL4UUHE_cjs.d(this,te,r),chunkTKL4UUHE_cjs.d(this,re,n??globalThis.fetch),chunkTKL4UUHE_cjs.d(this,me,coreCoingeckoSdk.getBasicCoingeckoHttp(void 0,chunkTKL4UUHE_cjs.b(this,re)));}async getWatchlistDataForToken({tokenDetails:e,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new He(chunkTKL4UUHE_cjs.b(this,te)).watchlistToken({tokens:e.symbol,currency:r})).filter(o=>e.isNative?o.internalId===`NATIVE-${e.symbol.toLowerCase()}`:o.platforms[e.caip2Id]===e.address),[a]=n;return a?{priceInCurrency:a.current_price??0,change24:a.price_change_percentage_24h??0,marketCap:a.market_cap??0,vol24:a.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${e?`${Pt(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkTKL4UUHE_cjs.b(this,q)?.get?.(o),n)return n;try{n=await Rt(s=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{n=void 0;}return chunkTKL4UUHE_cjs.b(this,q)?.set?.(o,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,s=`getPricesWithMarketDataByAddresses-${`${Pt(e)}-${r}-${n}`}`;if(a=chunkTKL4UUHE_cjs.b(this,q)?.get?.(s),a)return a;try{a=await Rt(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:i}));}catch(i){console.error(i),a=void 0;}return chunkTKL4UUHE_cjs.b(this,q)?.set?.(s,a),a}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let o=await new Ce(chunkTKL4UUHE_cjs.b(this,te),chunkTKL4UUHE_cjs.b(this,re)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(o,[n])}return coreCoingeckoSdk.simpleTokenPrice(chunkTKL4UUHE_cjs.b(this,me),{assetPlatformId:e,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:a=!1,change24:o=!1,lastUpdated:s=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await new Ce(chunkTKL4UUHE_cjs.b(this,te),chunkTKL4UUHE_cjs.b(this,re)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:o,include_last_updated_at:s});return this.transformSimplePriceResponse(l,r)}return coreCoingeckoSdk.simplePrice(chunkTKL4UUHE_cjs.b(this,me),{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:o,lastUpdated:s,shouldThrow:c})}};q=new WeakMap,te=new WeakMap,re=new WeakMap,me=new WeakMap;var Mn="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",Ln="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",qt=zod.object({date:zod.string(),usd:zod.record(zod.number())}),je=async()=>{try{return await U([Mn],qt)}catch{return await U([Ln],qt)}};var St=(t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),ze=(t,e)=>({label:t,value:e,type:vmModuleTypes.DetailItemType.LINK}),de=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e});var Ye=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.NETWORK,value:e});var xt=({name:t,version:e})=>{switch(t){case vmModuleTypes.AppName.CORE_MOBILE_IOS:case vmModuleTypes.AppName.CORE_MOBILE_ANDROID:case vmModuleTypes.AppName.CORE_WEB:case vmModuleTypes.AppName.CORE_EXTENSION:case vmModuleTypes.AppName.EXPLORER:return {"x-application-name":t,"x-application-version":e};case vmModuleTypes.AppName.OTHER:return}};var zt=process.env.GLACIER_API_KEY;var we=()=>zt;var $n={rltoken:we()},ne,Ke,Je,Kt,Xe,Jt,_e=class extends glacierSdk.FetchHttpRequest{constructor(r){super(r);chunkTKL4UUHE_cjs.c(this,Je);chunkTKL4UUHE_cjs.c(this,Xe);chunkTKL4UUHE_cjs.c(this,ne,0);chunkTKL4UUHE_cjs.c(this,Ke,B.exponential());}request(r){let n={...$n,...r.query||{}},a={...r,query:Object.keys(n).length>0?n:void 0},o=()=>super.request(a);return chunkTKL4UUHE_cjs.b(this,ne)>0?chunkTKL4UUHE_cjs.e(this,Xe,Jt).call(this,o):chunkTKL4UUHE_cjs.e(this,Je,Kt).call(this,o)}};ne=new WeakMap,Ke=new WeakMap,Je=new WeakSet,Kt=function(r){let n=r();return new glacierSdk.CancelablePromise((a,o,s)=>{s(()=>n.cancel()),n.then(i=>{chunkTKL4UUHE_cjs.d(this,ne,0),a(i);}).catch(i=>{if(i instanceof glacierSdk.ApiError){let c=i.status===429,l=i.status>=500&&i.status<600;chunkTKL4UUHE_cjs.d(this,ne,chunkTKL4UUHE_cjs.b(this,ne)+Number(c||l));}o(i);});})},Xe=new WeakSet,Jt=function(r){let n=chunkTKL4UUHE_cjs.b(this,Ke).call(this,chunkTKL4UUHE_cjs.b(this,ne));return new glacierSdk.CancelablePromise((a,o,s)=>{let i=setTimeout(()=>{let c=r();s(()=>{c.cancel(),clearTimeout(i);}),c.then(a).catch(o);},n);})};var F=(t,e)=>({message:`${t}${e instanceof Error?`: ${e.message}`:""}`,data:{cause:e}});var Xt={name:"EVM",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/index.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider/index.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:[],namespaces:["eip155"]},cointype:"60",permissions:{rpc:{dapps:!0,methods:["personal_sign","eth_sendTransaction","eth_sendTransactionBatch","eth_*","web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"],nonRestrictedMethods:["eth_requestAccounts","eth_decrypt","eth_getEncryptionPublicKey","eth_subscribe","eth_unsubscribe","eth_blockNumber","eth_call","eth_chainId","eth_coinbase","eth_estimateGas","eth_feeHistory","eth_gasPrice","eth_getBalance","eth_getBlockByHash","eth_getBlockByNumber","eth_getBlockTransactionCountByHash","eth_getBlockTransactionCountByNumber","eth_getCode","eth_getFilterChanges","eth_getFilterLogs","eth_getLogs","eth_getProof","eth_getStorageAt","eth_getTransactionByBlockHashAndIndex","eth_getTransactionByBlockNumberAndIndex","eth_getTransactionByHash","eth_getTransactionCount","eth_getTransactionReceipt","eth_getUncleCountByBlockHash","eth_getUncleCountByBlockNumber","eth_newBlockFilter","eth_newFilter","eth_newPendingTransactionFilter","eth_syncing","eth_uninstallFilter","net_version","net_peerCount","net_listening","web3_sha3","web3_clientVersion"]}},manifestVersion:"0.1"};var Zt="DUMMY_API_KEY";var Hn={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},jn={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},er=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return Hn;case vmModuleTypes.Environment.DEV:return jn}};var Ze=({accountIndex:t,derivationPathType:e})=>{if(t<0)throw rpcErrors.rpcErrors.invalidParams("Account index must be a non-negative integer");switch(e){case"bip44":return {[vmModuleTypes.NetworkVMType.EVM]:`m/44'/60'/0'/0/${t}`};case"ledger_live":return {[vmModuleTypes.NetworkVMType.EVM]:`m/44'/60'/${t}'/0/0`};default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported derivation path type: ${e}`)}};var nr=t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string";var ar=async t=>{let{secretId:e,approvalController:r}=t,n=nr(t)?Ze(t).EVM:void 0,a=await r.requestPublicKey({curve:"secp256k1",secretId:e,derivationPath:n});return {[vmModuleTypes.NetworkVMType.EVM]:ethers.computeAddress(`0x${a}`)}};var N=async t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:a,pollingInterval:o=2e3}=t,s=new coreWalletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:a},Xn(n),new ethers.Network(r,e));return s.pollingInterval=o,s},Jn=["glacier-api.avax.network","proxy-api.avax.network"];function Xn(t){let e=new URL(t),r=we();if(r&&Jn.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}var fe=zod.z.object({from:zod.z.string().length(42),to:zod.z.string().length(42).optional(),data:zod.z.string().optional(),value:zod.z.string().startsWith("0x").optional(),gas:zod.z.string().startsWith("0x").optional(),gasPrice:zod.z.string().startsWith("0x").optional(),maxFeePerGas:zod.z.string().startsWith("0x").optional(),maxPriorityFeePerGas:zod.z.string().startsWith("0x").optional(),nonce:zod.z.string().optional(),chainId:zod.z.string().optional().or(zod.z.number().optional()),accessList:zod.z.array(zod.z.object({address:zod.z.string().startsWith("0x"),storageKeys:zod.z.array(zod.z.string())})).optional()});var or=zod.z.tuple([fe,fe]).rest(fe).refine(t=>It(t,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(t=>It(t,"from"),{message:'All transactions must use the same "from" address'}).refine(t=>ta(t,"nonce")||ea(t,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'}),Zn=zod.z.object({skipIntermediateTxs:zod.z.boolean().optional()}),Qn=zod.z.union([or,zod.z.object({transactions:or,options:Zn.optional()})]);function ea(t,e){return !It(t,e)}function ta(t,e){return t.every(r=>r[e]===void 0||r[e]==="")}function It(t,e){return new Set(t.map(n=>n[e])).size===1}var sr=t=>{let e=Qn.safeParse(t);return e.success?Array.isArray(e.data)?{success:!0,data:{transactions:e.data,options:{}}}:{success:!0,data:{transactions:e.data.transactions,options:e.data.options??{}}}:e};var Qe=async({from:t,provider:e})=>e.getTransactionCount(t);var ir=async(t,e)=>{if(t[0].nonce)return;let r=await Qe({from:t[0].from,provider:e});return Promise.all(t.map(async(n,a)=>{n.nonce=String(r+a);}))};var cr=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER],ae=(s=>(s.TOTAL_SUPPLY="totalSupply",s.BALANCE_OF="balanceOf",s.TRANSFER="transfer",s.TRANSFER_FROM="transferFrom",s.APPROVE="approve",s.ALLOWANCE="allowance",s))(ae||{});var et=t=>{if(t.data)try{let r=new ethers.Interface(gr__default.default.abi).parseTransaction({data:t.data,value:t.value}),n=r?.name??r?.fragment?.name;return n&&aa(n)?n:void 0}catch{return}};function aa(t){return Object.values(ae).includes(t)}var tt=(t,e,r,{isSimulationSuccessful:n,balanceChange:a,tokenApprovals:o,alert:s})=>{let{dappInfo:i}=t,c=et(r),l="Do you approve this transaction?";c==="approve"&&(l="Do you approve this spend limit?");let p=[de("Account",r.from),Ye("Network",{name:e.chainName,logoUri:e.logoUri}),ze("Website",i)];r.to&&p.push(de("Contract",r.to));let u={title:l,details:[{title:"Transaction Details",items:p}],networkFeeSelector:!0,alert:s,balanceChange:a,tokenApprovals:o,isSimulationSuccessful:n},f={type:vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,account:r.from,data:{type:2,nonce:Number(r.nonce),gasLimit:Number(r.gas),maxFeePerGas:r.maxFeePerGas,maxPriorityFeePerGas:r.maxPriorityFeePerGas,to:r.to,from:r.from,data:r.data,value:r.value,chainId:r.chainId??e.chainId,accessList:r.accessList}};return {displayData:u,signingData:f}};var rt=async(t,e,r)=>{if("txHash"in e)return e.txHash;let n=()=>t.send("eth_sendRawTransaction",[e.signedData]);return r?.shouldRetry?ee({operation:()=>n(),isSuccess:()=>!0,maxRetries:6,backoffPolicy:B.linearThenExponential(4,1e3)}):n()};function ye(t,e,r="tx"){return `${t}/${r}/${e}`}var Be=async({explorerUrl:t,provider:e,txHash:r,onTransactionPending:n,onTransactionConfirmed:a,onTransactionReverted:o,request:s})=>{try{let i=ye(t,r);if(n({txHash:r,request:s,explorerLink:i}),(await ee({operation:async()=>e.getTransactionReceipt(r),isSuccess:p=>!!p,backoffPolicy:B.linearThenExponential(15,750),maxRetries:20}))?.status===1)return a({txHash:r,explorerLink:i,request:s}),!0}catch(i){console.error(i);}return o({txHash:r,request:s}),!1};var nt=new Map,lr=(t,e,r)=>(nt.set(t,{signingRequests:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a},o)=>{let s=nt.get(t);if(!s)throw rpcErrors.rpcErrors.resourceNotFound();let{signingRequests:i}=s,l={signingRequests:i.map((p,u)=>{if(o===void 0||o===u){let{signingData:f}=p;return {signingData:{...f,data:{...f.data,maxFeePerGas:n??f.data.maxFeePerGas,maxPriorityFeePerGas:a??f.data.maxPriorityFeePerGas}},displayData:p.displayData}}return p}),displayData:r};return nt.set(t,l),l},cleanup:()=>nt.delete(t)});function oe(t){return !("type"in t)}function at(t){return t.type===vmModuleTypes.TokenType.ERC20}function pr(t){return typeof t.to=="string"}function mr(t){return "requestBatchApproval"in t&&typeof t.requestBatchApproval=="function"}function ca(t){return typeof t=="object"&&t!==null&&"ins"in t&&"outs"in t&&Array.isArray(t.ins)&&Array.isArray(t.outs)}function la(t){return typeof t=="object"&&t!==null&&"approvals"in t&&"isEditable"in t&&Array.isArray(t.approvals)}function Ct(t){return ca(t)?t.ins.length===0&&t.outs.length===0:la(t)?t.approvals.length===0:!1}var dr=async({chainId:t,params:e,domain:r,withGasEstimation:n,blockaid:a})=>{let o=["validation","simulation"];return n&&o.push("gas_estimation"),a.evm.transactionBulk.scan({chain:t.toString(),options:o,data:e,metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}})},ur=async({chainId:t,params:e,domain:r,blockaid:n})=>n.evm.transaction.scan({account_address:e.from,chain:t.toString(),options:["validation","simulation"],data:{from:e.from,to:e.to,data:e.data,value:e.value,gas:e.gas,gas_price:e.gasPrice},metadata:r&&r.length>0?{domain:r}:{non_dapp:!0}}),fr=async({chainId:t,accountAddress:e,data:r,domain:n,blockaid:a})=>a.evm.jsonRpc.scan({chain:t.toString(),options:["validation","simulation"],account_address:e,data:r,metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}});var Tr=async(t,e,r)=>{if(!t.data)return {tokenApprovals:void 0,balanceChange:void 0};try{let n=new ethers.ethers.Contract(t.to,gr__default.default.abi,r),a=await Promise.all([n.name?.(),n.symbol?.(),n.decimals?.()]),o=yr__default.default(a[0]),s=yr__default.default(a[1]),i=parseInt(a[2]),c={type:vmModuleTypes.TokenType.ERC20,name:o,chainId:e,symbol:s,decimals:i,address:t.to,contractType:"ERC-20"},l=new ethers.ethers.Interface(gr__default.default.abi),p=l.getFunction(t.data.slice(0,10)),u=l.decodeFunctionData(t.data.slice(0,10),t.data);if(p?.name==="transfer")return {balanceChange:{outs:[{items:[{displayValue:new coreUtilsSdk.TokenUnit(u.amount,c.decimals,c.symbol).toDisplay(),usdPrice:void 0}],token:c}],ins:[]}};if(p?.name==="approve")return {tokenApprovals:{isEditable:!0,approvals:[{token:c,spenderAddress:u.spender,value:u.amount}]}}}catch(n){console.error("parseErc20Tx error",n);}return {tokenApprovals:void 0,balanceChange:void 0}};var Y={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious transaction",description:"Use caution, this transaction might be malicious."}},[vmModuleTypes.AlertType.DANGER]:{type:vmModuleTypes.AlertType.DANGER,details:{title:"Scam transaction",description:"This transaction has been flagged as malicious, I understand the risk.",body:["This transaction is malicious","do not proceed"],actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};var vr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,blockaid:o})=>{let s;try{s=await ur({chainId:n,params:r,domain:e,blockaid:o});}catch(i){console.error("simulateTransaction error",i);}return wt({rpcMethod:t,params:r,chainId:n,provider:a,simulationResult:s})},wt=async({rpcMethod:t,params:e,chainId:r,provider:n,simulationResult:a})=>{let o,s,i,c=!1,l;if(a){let{validation:p,simulation:u,gas_estimation:f}=a;!p||p.result_type==="Error"||p.result_type==="Warning"?o=Y[vmModuleTypes.AlertType.WARNING]:p.result_type==="Malicious"&&(o=Y[vmModuleTypes.AlertType.DANGER]),u?.status==="Success"&&(c=!0,i=br(t,u.account_summary),s=Er(u.account_summary.assets_diffs)),f?.status==="Success"&&(l=Number(f.estimate));}if(!c&&pr(e)){let p=await Tr(e,r,n);s=p.balanceChange,i=p.tokenApprovals;}return {alert:o,balanceChange:s,tokenApprovals:i,isSimulationSuccessful:c,estimatedGasLimit:l}},ga=t=>t.trace_type==="ExposureTrace",Ta=(t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,ka=t=>t===void 0||t.length===0?{}:t.reduce((e,r)=>ga(r)?{[Ta(r.spender,r.asset.address)]:r}:e,{}),br=(t,e)=>{let{traces:r}=e,n=ka(r),a=Object.entries(n).map(([s,i])=>{let c=Pr(i.asset);if(!c)return;let l={token:c,spenderAddress:i.spender,logoUri:c.logoUri};if(i.type==="ERC20ExposureTrace"){let{exposed:{raw_value:p,value:u,usd_price:f}}=i;if(!u||u<=0)return;l.value=p,l.usdPrice=`${f}`;}if(i.type==="ERC721ExposureTrace")if(!i.exposed)l.value=`0x${ethers.MaxUint256.toString(16)}`;else {let{usd_price:p,amount:u}=i.exposed;l.value=`${u}`,l.usdPrice=`${p}`;}return l}).filter(Boolean);return a.length===0?void 0:{isEditable:a.length===1&&a[0]?.token.type===vmModuleTypes.TokenType.ERC20&&t===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:a}},Er=t=>{let e=kr(t,"in"),r=kr(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},kr=(t,e)=>t.filter(r=>r[e].length>0).sort((r,n)=>r[e].length-n[e].length).map(r=>{let n=r.asset,a="address"in n?Pr(n):va(n);if(!a)return;let o=r[e].map(s=>{let i;if("value"in s&&s.value)if("decimals"in a){let u=coreUtilsSdk.numberToBN(s.value,a.decimals);i=coreUtilsSdk.balanceToDisplayValue(u,a.decimals);}else ethers.isHexString(s.value)&&(i=parseInt(s.value,16).toString());else "type"in a&&a.type===vmModuleTypes.TokenType.ERC721&&(i="1");if(!i)return;let c="logo_url"in s?s.logo_url:void 0,l="token_id"in s?s.token_id:void 0;return {displayValue:i,usdPrice:s.usd_price,...c!==void 0&&{logoUri:c},...l!==void 0&&{tokenId:l}}}).filter(s=>s!==void 0);return {token:a,items:o}}).filter(r=>r!==void 0),Pr=t=>{let e;return t.type==="ERC20"?e={type:vmModuleTypes.TokenType.ERC20,address:t.address,decimals:t.decimals,name:t.name??t.symbol??"",symbol:t.symbol??"",logoUri:t.logo_url}:t.type==="ERC1155"?e={type:vmModuleTypes.TokenType.ERC1155,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="ERC721"?e={type:vmModuleTypes.TokenType.ERC721,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="NONERC"&&(e={type:vmModuleTypes.TokenType.NONERC,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}),e},va=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),Rr=async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:a,blockaid:o})=>{let s,i,c;try{let{validation:l,simulation:p}=await fr({chainId:n,accountAddress:r,data:a,domain:e,blockaid:o});!l||l.result_type==="Error"||l.result_type==="Warning"?s=Y[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"&&(s=Y[vmModuleTypes.AlertType.DANGER]),p?.status==="Success"&&(c=br(t.method,p.account_summary),i=Er(p.account_summary.assets_diffs));}catch(l){console.error("processJsonRpcSimulation error",l),s=Y[vmModuleTypes.AlertType.WARNING];}return {alert:s,balanceChange:i,tokenApprovals:c}};var xr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,provider:a,populateMissingGas:o,blockaid:s})=>{let i;try{i=await dr({chainId:n,params:r,domain:e,withGasEstimation:o,blockaid:s});}catch(d){return console.error("simulateTransactionBatch error",d),{isSimulationSuccessful:!1,alert:Y[vmModuleTypes.AlertType.WARNING],scans:[]}}let c=await Promise.all(i.map(async(d,y)=>{let v=r[y],P=await wt({chainId:n,params:r[y],provider:a,rpcMethod:t,simulationResult:d});return o&&!v.gas&&P.estimatedGasLimit&&(v.gas=`0x${P.estimatedGasLimit.toString(16)}`),{transaction:v,...P}})),l=c.every(d=>d.isSimulationSuccessful),p=ba(c),u=Pa(c),f=Ea(c);return {isSimulationSuccessful:l,alert:p,balanceChange:u,tokenApprovals:f,scans:c.map(d=>(d.tokenApprovals&&(d.tokenApprovals.isEditable=!1),d))}},ba=t=>{let e={[vmModuleTypes.AlertType.INFO]:0,[vmModuleTypes.AlertType.WARNING]:1,[vmModuleTypes.AlertType.DANGER]:2};return t.reduce((r,{alert:n})=>n&&(!r||e[n.type]>e[r.type])?n:r,void 0)},Ea=t=>{let e=t.reduce((r,{tokenApprovals:n})=>(n&&n.approvals.forEach(a=>{let o=r.approvals.find(s=>a.token.address===s.token.address&&a.spenderAddress===s.spenderAddress);if(!o){r.approvals.push({...a});return}o.value=a.value,o.usdPrice=a.usdPrice;}),r),{approvals:[],isEditable:!1});return Ra(e,t),Ct(e)?void 0:e},Pa=t=>{let e=t.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(a=>{let o=Sr(r.ins,a);o?o.items.push(...a.items):r.ins.push(a);}),n.outs.forEach(a=>{let o=Sr(r.outs,a);o?o.items.push(...a.items):r.outs.push({...a});})),r),{ins:[],outs:[]});return Ct(e)?void 0:e},Sr=(t,e)=>t.find(r=>oe(r.token)&&oe(e.token)?r.token.symbol===e.token.symbol:!oe(r.token)&&!oe(e.token)?r.token.address===e.token.address:!1),Ra=(t,e)=>{for(let r of t.approvals)for(let n of e)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(o=>!oe(o.token)&&!oe(r.token)&&o.token.address===r.token.address)))if(!n.tokenApprovals)t.approvals=t.approvals.filter(o=>o.spenderAddress!==r.spenderAddress&&r.token.address!==o.token.address);else {let o=n.tokenApprovals.approvals.find(s=>s.spenderAddress===r.spenderAddress&&s.token.address===r.token.address);if(!o)continue;r.usdPrice=o.usdPrice,r.value=o.value;}};var Ir=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:o,success:s,error:i}=sr(a);if(!s)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams(F("Transaction params are invalid",i))};let{transactions:c,options:l={}}=o,{skipIntermediateTxs:p=!1}=l,u=await N({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});try{await ir(c,u);}catch(C){return console.error("Unable to calculate nonce",C),{error:rpcErrors.rpcErrors.internal(F("Unable to calculate nonce",C))}}let f=c.every(C=>Number(C.gas)>0),{alert:d,balanceChange:y,isSimulationSuccessful:v,tokenApprovals:P,scans:b}=await xr({rpcMethod:t.method,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:u,populateMissingGas:!f,blockaid:n});if(!b.every(({transaction:C})=>Number(C.gas)>0))return console.error("Gas limit is missing in some transactions"),{error:rpcErrors.rpcErrors.internal({message:"Gas limit is missing in some transactions"})};let x={title:"Do you approve these transactions?",details:[{title:"Transaction Details",items:[de("Account",c[0].from),Ye("Network",{name:e.chainName,logoUri:e.logoUri}),ze("Website",t.dappInfo)]}],isSimulationSuccessful:v,balanceChange:y,alert:d,tokenApprovals:P,networkFeeSelector:!0},g=b.map(C=>tt(t,e,C.transaction,C)),{cleanup:k,updateTx:G}=lr(t.requestId,g,x),W=await r.requestBatchApproval({request:t,signingRequests:g,displayData:x,updateTx:G});if(k(),"error"in W)return {error:W.error};if(W.result.length!==c.length)return {error:rpcErrors.rpcErrors.internal({message:`Invalid number of signatures. Expected ${c.length}, got ${W.result.length}`})};let Ae=[];for(let[C,An]of W.result.entries()){let Wt=C===W.result.length-1,Et=await rt(u,An);if(Wt&&Be({explorerUrl:e.explorerUrl??"",provider:u,txHash:Et,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),!Wt&&!p&&!await Be({explorerUrl:e.explorerUrl??"",provider:u,txHash:Et,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}))return {error:rpcErrors.rpcErrors.internal({message:`Transaction ${C+1} failed! Batch execution stopped`})};Ae.push(Et);}return {result:Ae}};function Ar(t,e,r){return new ethers.ethers.Contract(t,gr__default.default.abi).interface.encodeFunctionData("approve",[e,r])}var it=new Map,Cr=(t,e,r)=>(it.set(t,{signingData:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:a,approvalLimit:o,gasLimit:s})=>{let i=it.get(t);if(!i)throw rpcErrors.rpcErrors.resourceNotFound();let{signingData:c,displayData:l}=i,p={...c,data:{...c.data,gasLimit:s??c.data.gasLimit,maxFeePerGas:n??c.data.maxFeePerGas,maxPriorityFeePerGas:a??c.data.maxPriorityFeePerGas}},u={...l};if(typeof o=="string"){if(!o.startsWith("0x"))throw rpcErrors.rpcErrors.invalidInput("Expected approvalLimit to be a hexadecimal number (0x-prefixed)");let d=l.tokenApprovals;Ia(d),Aa(c.data.data);let y=d.approvals[0];p.data.data=Ar(y.token.address,y.spenderAddress,o),u.tokenApprovals={approvals:[{...y,value:o}],isEditable:!0};}let f={signingData:p,displayData:u};return it.set(t,f),f},cleanup:()=>it.delete(t)});function Ia(t){if(!t||!t.isEditable||t.approvals.length!==1)throw rpcErrors.rpcErrors.invalidInput("Cannot edit the token approval for this request. Please start a new request instead.")}function Aa(t){if((!t||t==="0x"?null:et({data:t??void 0}))!=="approve")throw rpcErrors.rpcErrors.invalidInput("Cannot change invoked method for requests in progress. Please start a new request instead.")}var wr=async({transactionParams:{from:t,to:e,data:r,value:n,accessList:a},provider:o})=>{let s=await o.getTransactionCount(t);return Number(await o.estimateGas({from:t,to:e,nonce:s,data:r,value:n,accessList:a}))};var wa=zod.z.tuple([fe]),_r=t=>wa.safeParse(t);var Nr=async({request:t,network:e,approvalController:r,blockaid:n})=>{let{params:a}=t,{data:o,error:s,success:i}=_r(a);if(!i)return console.error("invalid params",s),{error:rpcErrors.rpcErrors.invalidParams(F("Transaction params are invalid",s))};let[c]=o,l=await N({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});if(!c.gas||Number(c.gas)<0)try{let S=await wr({transactionParams:{from:c.from,to:c.to,data:c.data,value:c.value,accessList:c.accessList},provider:l});c.gas="0x"+S.toString(16);}catch(S){return {error:rpcErrors.rpcErrors.internal(F("Unable to calculate gas limit",S))}}if(!c.nonce)try{let S=await Qe({from:c.from,provider:l});c.nonce=String(S);}catch(S){return {error:rpcErrors.rpcErrors.internal(F("Unable to calculate nonce",S))}}let p=await vr({rpcMethod:t.method,chainId:e.chainId,params:c,dAppUrl:t.dappInfo.url,provider:l,blockaid:n}),{displayData:u,signingData:f}=tt(t,e,c,p),{updateTx:d,cleanup:y}=Cr(t.requestId,f,u),v=await r.requestApproval({request:t,displayData:u,signingData:f,updateTx:d});if(y(),"error"in v)return {error:v.error};let P,b=t.context?.shouldRetry===!0;try{P=await rt(l,v,{shouldRetry:b});}catch(S){return {error:rpcErrors.rpcErrors.internal(F("Unable to get transaction hash",S))}}return Be({explorerUrl:e.explorerUrl??"",provider:l,txHash:P,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:t}),{result:P}};var _t=t=>{let e="";e+=`Domain
26
26
  `;for(let r in t.domain)e+=` ${r}: ${se(String(t.domain[r]))}
27
27
  `;e+=`
28
28
  Message