@avalabs/svm-module 1.10.1 → 1.10.3

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
@@ -11,14 +11,14 @@ var coreUtilsSdk = require('@avalabs/core-utils-sdk');
11
11
  var kit = require('@solana/kit');
12
12
  var system = require('@solana-program/system');
13
13
  var token = require('@solana-program/token');
14
- var Or = require('@blockaid/client');
14
+ var Gr = require('@blockaid/client');
15
15
 
16
16
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
17
17
 
18
- var Or__default = /*#__PURE__*/_interopDefault(Or);
18
+ var Gr__default = /*#__PURE__*/_interopDefault(Gr);
19
19
 
20
- var ge=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=j.exponential()})=>{let a=0,o=0,i;for(;o<r;){o>0&&await Dt(a);try{let s=await t(o);if(e(s))return s}catch(s){i=s;}a=n(o),o++;}let c=i?`Max retry exceeded. ${i}`:"Max retry exceeded.";throw new Error(c)},j=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,i=2*r*(Math.pow(2,a)-1);return o+i}}};function Dt(t){return new Promise(e=>setTimeout(e,t))}var ye=t=>ge({operation:e=>t(e>0),maxRetries:2,backoffPolicy:j.constant(1),isSuccess:e=>e?.status?.error_code!==429});function De(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function Te(t){let e,r=0;for(e=0;e<t.length;e++){let n=De(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}async function M(t,e){let r=await fetch(...t);if(!r.ok)throw new Error(`Request failed with status ${r.status}`);let n=await r.json();return e.parse(n)}var Q=class{constructor(e){this.proxyApiUrl=e;}simplePrice(e){let r=new URLSearchParams(e);return M([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(e){let{id:r,...n}=e,a=new URLSearchParams(n);return M([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}};var Ee=coreCoingeckoSdk.getBasicCoingeckoHttp(),G,q,te=class{constructor({storage:e,proxyApiUrl:r}){chunkTKL4UUHE_cjs.c(this,G,void 0);chunkTKL4UUHE_cjs.c(this,q,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(i=>{n[a]={[i]:{price:o?.[i],change24:o?.[`${i}_24h_change`],vol24:o?.[`${i}_24h_vol`],marketCap:o?.[`${i}_market_cap`]}};});}),n});chunkTKL4UUHE_cjs.d(this,G,e),chunkTKL4UUHE_cjs.d(this,q,r);}async getSimplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${e?`${Te(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkTKL4UUHE_cjs.b(this,G)?.get?.(o),n)return n;try{n=await ye(i=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{n=void 0;}return chunkTKL4UUHE_cjs.b(this,G)?.set?.(o,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,i=`getPricesWithMarketDataByAddresses-${`${Te(e)}-${r}-${n}`}`;if(a=chunkTKL4UUHE_cjs.b(this,G)?.get?.(i),a)return a;try{a=await ye(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),a=void 0;}return chunkTKL4UUHE_cjs.b(this,G)?.set?.(i,a),a}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let o=await new Q(chunkTKL4UUHE_cjs.b(this,q)).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(Ee,{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:i=!1,useCoingeckoProxy:c=!1,shouldThrow:s=!0}){if(c){let m=await new Q(chunkTKL4UUHE_cjs.b(this,q)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:o,include_last_updated_at:i});return this.transformSimplePriceResponse(m,r)}return coreCoingeckoSdk.simplePrice(Ee,{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:o,lastUpdated:i,shouldThrow:s})}};G=new WeakMap,q=new WeakMap;zod.object({date:zod.string(),usd:zod.record(zod.number())});var he=(t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e});var b=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e}),Se=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS_LIST,value:e});var re=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.DATA,value:e});process.env.GLACIER_API_KEY;var Be={name:"SVM",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/index.js",packageName:"@avalabs/svm-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider/index.js",packageName:"@avalabs/svm-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1","solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z"],namespaces:["solana"]},cointype:"501",permissions:{rpc:{dapps:!0,methods:["solana_signTransaction","solana_signAndSendTransaction","solana_signMessage"],nonRestrictedMethods:[]}},manifestVersion:"0.1"};var Ft={proxyApiUrl:"https://proxy-api.avax.network"},Vt={proxyApiUrl:"https://proxy-api-dev.avax.network"},Ue=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return Ft;case vmModuleTypes.Environment.DEV:return Vt}};var Me=t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string";var ie=({accountIndex:t})=>{if(t<0)throw rpcErrors.rpcErrors.invalidParams("Account index must be a non-negative integer");return {[vmModuleTypes.NetworkVMType.SVM]:`m/44'/501'/${t}'/0'`}};var Oe=async t=>{let{approvalController:e,secretId:r}=t,n=Me(t)?ie(t).SVM:void 0,a=await e.requestPublicKey({curve:"ed25519",secretId:r,derivationPath:n});return {[vmModuleTypes.NetworkVMType.SVM]:base.base58.encode(base.hex.decode(a))}};var Fe="solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",Ve="solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",Ge="solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z",$e="/proxy/nownodes/sol",ze="https://api.devnet.solana.com";var Ke="DUMMY_API_KEY";var L=({isTestnet:t,proxyApiUrl:e})=>coreWalletsSdk.getSolanaProvider({isTestnet:t,rpcUrl:t?ze:e+$e});var ke=1e6,U={high:150*ke,medium:75*ke,low:2*ke},qt=t=>(t.length===0?[U.low,U.low]:t.length===1?[t[0],U.low]:t).slice().sort((r,n)=>r-n);async function We(t,e){let a=await(await L({isTestnet:!!t.isTestnet,proxyApiUrl:e}).getRecentPrioritizationFees()).send();if(a.length===0||a.every(h=>h.prioritizationFee===0n))return {high:{maxFeePerGas:BigInt(U.high),maxPriorityFeePerGas:BigInt(U.high)},medium:{maxFeePerGas:BigInt(U.medium),maxPriorityFeePerGas:BigInt(U.medium)},low:{maxFeePerGas:BigInt(U.low),maxPriorityFeePerGas:BigInt(U.low)},baseFee:BigInt(U.low),displayDecimals:9,isFixedFee:!1};let i=qt(a.map(h=>Number(h.prioritizationFee))),c=i.at(0),s=i.at(-1),m=Math.floor(i.length/2),p=i.length%2===1?i[m]:(i[m-1]+i[m])/2,l=BigInt(Math.ceil(s*1.05)),d=BigInt(Math.ceil(p*1.05)),u=BigInt(Math.ceil(c*1.05));return {high:{maxFeePerGas:l,maxPriorityFeePerGas:l},medium:{maxFeePerGas:d,maxPriorityFeePerGas:d},low:{maxFeePerGas:u,maxPriorityFeePerGas:u},baseFee:u,displayDecimals:9,isFixedFee:!1}}var Yt=zod.z.object({address:zod.z.string(),name:zod.z.string(),symbol:zod.z.string(),contractType:zod.z.literal(vmModuleTypes.TokenType.SPL),caip2Id:zod.z.string().startsWith("solana:"),decimals:zod.z.number(),chainId:zod.z.number().optional(),logoUri:zod.z.string().optional(),color:zod.z.string().optional()}),je=zod.z.array(Yt);async function qe({caip2Id:t,proxyApiUrl:e}){try{return (await M([`${e}/solana-tokens?caip2Id=${t}`],je)).map(n=>({...n,type:n.contractType}))}catch(r){throw console.error("getTokens() failed for",t,r),rpcErrors.rpcErrors.internal(`Failed to fetch tokens for caip2Id "${t}"`)}}var W=t=>t.status==="fulfilled";var He=zod.z.object({nativeBalance:zod.z.object({lamports:zod.z.string(),solana:zod.z.string()}),nfts:zod.z.array(zod.z.object({associatedTokenAddress:zod.z.string(),mint:zod.z.string(),name:zod.z.string(),symbol:zod.z.string()})),tokens:zod.z.array(zod.z.object({associatedTokenAddress:zod.z.string(),mint:zod.z.string(),amountRaw:zod.z.string(),amount:zod.z.string(),decimals:zod.z.number(),name:zod.z.string(),symbol:zod.z.string(),logo:zod.z.string().optional().nullable()}))});var ne,pe,Ye,H=class{constructor({proxyApiUrl:e}){chunkTKL4UUHE_cjs.c(this,pe);chunkTKL4UUHE_cjs.c(this,ne,void 0);chunkTKL4UUHE_cjs.d(this,ne,`${e}/proxy/moralis`);}async getPortfolio({address:e,network:r}){try{let n=chunkTKL4UUHE_cjs.e(this,pe,Ye).call(this,`/account/${r}/${e}/portfolio`),a=await M([n],He);return {address:e,portfolio:a}}catch(n){console.error("getPortfolio() failed:",n);let a=n instanceof Error?n.message:"unknown error";return {address:e,error:`getPortfolio() failed: ${a}`}}}};ne=new WeakMap,pe=new WeakSet,Ye=function(e){return `${chunkTKL4UUHE_cjs.b(this,ne)}${e}`};var $=t=>{switch(t.caipId){case Fe:return "mainnet";case Ve:return "devnet";case Ge:return "testnet";default:throw new Error("Unrecognized CAIP-2 id: "+t.caipId)}};var Qe=async({addresses:t,proxyApiUrl:e,currency:r,network:n,tokenService:a})=>{let o=new H({proxyApiUrl:e}),i=n.pricingProviders?.coingecko.nativeTokenId??"",c=n.pricingProviders?.coingecko.assetPlatformId??"",s=r.toLowerCase(),m=$(n),p=await Promise.all(t.map(f=>o.getPortfolio({address:f,network:m}))),l=new Set(p.flatMap(f=>"portfolio"in f?f.portfolio.tokens.map(({mint:g})=>g):[])),d=await Promise.allSettled([i?await a.getSimplePrice({coinIds:[i],currencies:[s]}):Promise.resolve(void 0),c?await a.getPricesByAddresses(Array.from(l),c,s):Promise.resolve(void 0)]),[u,h]=d.map(f=>W(f)?f.value:void 0);return p.reduce((f,g)=>{if("error"in g)return {...f,[g.address]:{error:g.error}};let P=new coreUtilsSdk.TokenUnit(g.portfolio.nativeBalance.lamports,9,"SOL"),y=Ze(i,s,u),A=y.priceInCurrency!==void 0?P.mul(y.priceInCurrency):void 0,D={type:vmModuleTypes.TokenType.NATIVE,name:n.networkToken.name,symbol:n.networkToken.symbol,decimals:n.networkToken.decimals,balance:P.toSubUnit(),balanceDisplayValue:P.toString(),balanceInCurrency:A?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:A?.toDisplay({fixedDp:2}),logoUri:n.networkToken.logoUri??"",coingeckoId:i,...y},x=g.portfolio.tokens.reduce((R,{amountRaw:S,symbol:k,decimals:I,mint:w,name:_,logo:V})=>{let ae=new coreUtilsSdk.TokenUnit(S,I,k),Z=Ze(w,s,h),z=Z.priceInCurrency!==void 0?ae.mul(Z.priceInCurrency):void 0,K={type:vmModuleTypes.TokenType.SPL,address:w,name:_,symbol:k,decimals:I,balance:ae.toSubUnit(),balanceDisplayValue:ae.toString(),balanceInCurrency:z?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:z?.toDisplay({fixedDp:2}),logoUri:V??void 0,reputation:null,...Z};return {...R,[w]:K}},{});return {...f,[g.address]:{[n.networkToken.symbol]:D,...x}}},{})},Ze=(t,e,r)=>({priceInCurrency:r?.[t??""]?.[e]?.price??void 0,marketCap:r?.[t??""]?.[e]?.marketCap??void 0,vol24:r?.[t??""]?.[e]?.vol24??void 0,change24:r?.[t??""]?.[e]?.change24??void 0});var Ae=t=>({mint:t.mint,owner:t.owner,amount:BigInt(t.uiTokenAmount.amount),decimals:t.uiTokenAmount.decimals}),et=(t,e,r,n)=>{let a=e!==-1?t[e]:r.preTokenBalances.find(s=>!t.includes(s.owner))?.owner||r.postTokenBalances.find(s=>!t.includes(s.owner))?.owner,o=r.preTokenBalances.reduce((s,{owner:m,mint:p,amount:l})=>({...s,[`${m}-${p}`]:l}),{}),i=r.postTokenBalances.reduce((s,{owner:m,mint:p,amount:l,decimals:d})=>{let u=`${m}-${p}`,h=o[u]??0n,f=l-h;if(f===0n)return s;let g=f>0n&&m===a,P=f<0n&&m===a;if(g){let y=Object.keys(o).find(x=>{let[R,S]=x.split("-");if(S!==p||R===a)return !1;let k=o[x],I=r.postTokenBalances.find(({owner:_,mint:V})=>_===R&&V===p);return !I||I.amount<k});if(!y)return s;let A=n.tokens?.filter(x=>"contractType"in x).find(x=>x.address===p)??{contractType:vmModuleTypes.TokenType.SPL,decimals:d,address:p,symbol:"Unknown",name:"Unknown"},D={...A,type:A.contractType,from:{...A,address:y.split("-")[0]},to:{...A,address:m},amount:new coreUtilsSdk.TokenUnit(f,d,"").toDisplay()};return [...s,D]}else if(P){let y=r.postTokenBalances.find(({owner:x,mint:R})=>R===p&&x!==a&&(o[`${x}-${p}`]??0n)<(r.postTokenBalances.find(S=>S.owner===x&&S.mint===p)?.amount??0n));if(!y)return s;let A=n.tokens?.filter(x=>"contractType"in x).find(x=>x.address===p)??{contractType:vmModuleTypes.TokenType.SPL,decimals:d,address:p,symbol:"Unknown",name:"Unknown"},D={...A,type:A.contractType,from:{...A,address:a},to:{...A,address:y.owner},amount:new coreUtilsSdk.TokenUnit(-f,d,"").toDisplay()};return [...s,D]}return s},[]),c=Jt(t,e,r,n,i,a);return c&&i.push(c),i},Jt=(t,e,{paidFee:r,preBalances:n,postBalances:a},o,i=[],c)=>{if(e===-1){if(i.length>0&&c&&i.some(S=>S.to?.address===c)){let S=t.findIndex(k=>k===c);if(S!==-1){let k=n[S],w=a[S]-k;if(w<=0){let _=Math.abs(w)+r;if(_>r){let V=new coreUtilsSdk.TokenUnit(_,o.networkToken.decimals,""),Z=a.map((z,K)=>z-n[K]).reduce((z,K,we)=>we!==S&&K>z.amount&&K>0?{index:we,amount:K}:z,{index:0,amount:0});return {amount:V.toDisplay(),from:{address:c},to:{address:t[Z.index]},name:o.networkToken.name,symbol:o.networkToken.symbol,type:vmModuleTypes.TokenType.NATIVE}}}}}return null}let s=t[e],m=n[e],l=a[e]-m,d=a.map((R,S)=>R-n[S]),u=i.length>0,h=l!==0?l+r:0,f=h>0,g=0,P=!1;if(u&&e===0&&c){let R=i.some(k=>k.to?.address===c),S=i.some(k=>k.from?.address===c);R&&!S&&(f=!1,P=!0,g=a.map((w,_)=>w-n[_]).reduce((w,_,V)=>V!==e&&_>w.amount&&_>0?{index:V,amount:_}:w,{index:0,amount:0}).index);}if(u&&l<0){let R=d.reduce((S,k,I)=>I!==e&&k>S.amount?{index:I,amount:k}:S,{index:0,amount:0});R.amount>r*2&&!P&&(h=R.amount,f=!0,g=R.index);}else u&&l<=0&&i.some(S=>S.to?.address===s)&&(h=Math.abs(l)+r,f=!1,g=d.reduce((k,I,w)=>w!==e&&I>k.amount&&I>0?{index:w,amount:I}:k,{index:0,amount:0}).index);if(!h)return null;let y=new coreUtilsSdk.TokenUnit(Math.abs(h),o.networkToken.decimals,"");if(!u){let R=d.reduce(({index:S,change:k},I,w)=>I>k?{index:w,change:I}:{index:S,change:k},{index:0,change:d[0]});g=f?0:R.index;}let A=t[g],D=f?A||s:c||s,x=f?c||s:A||c||s;return {amount:y.toDisplay(),from:{address:D},to:{address:x},name:o.networkToken.name,symbol:o.networkToken.symbol,type:vmModuleTypes.TokenType.NATIVE}};function tt(t){return e=>!!e[t]}var nt=async({network:t,address:e,proxyApiUrl:r})=>{let n=L({isTestnet:!!t.isTestnet,proxyApiUrl:r}),o=(await n.getSignaturesForAddress(kit.address(e),{limit:25}).send()).map(s=>s.signature),i=o;try{let s=new H({proxyApiUrl:r}),m=$(t),p=await s.getPortfolio({address:e,network:m});if("portfolio"in p){let l=p.portfolio.tokens.map(P=>P.associatedTokenAddress),d=p.portfolio.nfts.map(P=>P.associatedTokenAddress),h=[...l,...d].map(async P=>{try{return (await n.getSignaturesForAddress(kit.address(P),{limit:25}).send()).map(A=>A.signature)}catch(y){return console.error("Failed to get signatures for ATA:",P,y),[]}}),g=(await Promise.allSettled(h)).filter(W).map(P=>P.value).flat();i=Array.from(new Set([...o,...g]));}}catch(s){console.error("ATA discovery failed with error:",s);}return (await Promise.allSettled(i.map(async s=>({txHash:s.toString(),tx:await n.getTransaction(s,{encoding:"json",maxSupportedTransactionVersion:0}).send()})))).filter(W).map(s=>s.value).filter(tt("tx"))};var ot=(t,e)=>{let r=e?new URL(e):null;return r&&(r.pathname=`/tx/${t}`),r?.toString()??""};async function at({network:t,address:e,proxyApiUrl:r}){return t.caipId?{transactions:(await nt({network:t,address:e,proxyApiUrl:r})).map(({txHash:o,tx:i})=>{if(!i.meta)return null;let{meta:c,transaction:{message:s}}=i,m=s.accountKeys.map(f=>f.toString()),p=m.indexOf(e),l=p!==-1;!l&&c.preTokenBalances&&(c.preTokenBalances.some(g=>g.owner===e)||(c.postTokenBalances??[]).some(g=>g.owner===e))&&(l=!0,p=-1);let d=p!==-1&&p<s.header.numRequiredSignatures,u=et(m,p,{paidFee:d?Number(c.fee):0,preBalances:c.preBalances.map(Number),postBalances:c.postBalances.map(Number),preTokenBalances:(c.preTokenBalances??[]).map(Ae),postTokenBalances:(c.postTokenBalances??[]).map(Ae)},t),h=Qt(u,e);return {hash:o,txType:h,gasUsed:String(i.meta.computeUnitsConsumed??"0"),tokens:u,from:u[0]?.from?.address??m[0],to:u[0]?.to?.address??(d?"":e),isOutgoing:d,isIncoming:!d,isSender:d,timestamp:Number(i.blockTime)*1e3,isContractCall:!1,gasPrice:String(Number(i.meta.fee)/Number(i.meta.computeUnitsConsumed)),chainId:String(t.chainId),explorerLink:ot(o,t.explorerUrl)}}).filter(o=>o!==null)}:Promise.reject({error:rpcErrors.rpcErrors.invalidParams("Network must have a CAIP-2 id")})}var Qt=(t,e)=>{if(t.length===0)return vmModuleTypes.TransactionType.UNKNOWN;let r=t.filter(o=>o.from?.address===e||o.to?.address===e);if(r.length===0)return vmModuleTypes.TransactionType.UNKNOWN;let n=r.some(o=>o.from?.address===e),a=r.some(o=>o.to?.address===e);return n&&a?vmModuleTypes.TransactionType.SWAP:n?vmModuleTypes.TransactionType.SEND:a?vmModuleTypes.TransactionType.RECEIVE:vmModuleTypes.TransactionType.UNKNOWN};var st=t=>{if(t?.type==="InstructionError")switch(t.code){case"ResultWithNegativeLamports":return {type:vmModuleTypes.AlertType.WARNING,details:{title:"This transaction will likely be reverted",description:"Your account does not have enough SOL to perform the operation"}}}return {type:vmModuleTypes.AlertType.WARNING,details:{title:"Transaction simulation has failed",description:"It is possible that this transaction will fail. Please proceed with caution."}}},xe={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious Transaction",description:"Use caution, this transaction may be malicious."}},[vmModuleTypes.AlertType.DANGER]:{type:vmModuleTypes.AlertType.DANGER,details:{title:"Scam Transaction",description:"This transaction is malicious, do not proceed.",actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};function it(t){return t.ins.length===0&&t.outs.length===0}function ct(t){return t!=null}var pt=(t,e,r,n)=>{if(!kit.isInstructionForProgram(t,system.SYSTEM_PROGRAM_ADDRESS)||!kit.isInstructionWithAccounts(t)||!kit.isInstructionWithData(t))return null;try{if(system.identifySystemInstruction(t)!==system.SystemInstruction.TransferSol)return null;let{accounts:o,data:i}=system.parseTransferSolInstruction({...t,data:Uint8Array.from(t.data)}),s=o.source.address===r===!0?"outs":"ins";return e[s].push({token:{...n,address:""},items:[{displayValue:new coreUtilsSdk.TokenUnit(i.amount,n.decimals,"").toString(),usdPrice:void 0}]}),{title:"Transfer SOL",items:[b("From",o.source.address),b("To",o.destination.address)]}}catch{return null}};var fr=async(t,e)=>{try{let r=await t.getAccountInfo(e,{encoding:"jsonParsed"}).send();if(Array.isArray(r.value?.data))return null;let n=r.value?.data.parsed.info;return typeof n?.mint=="string"?n.mint:null}catch{return null}},lt=async(t,e,r,n,a)=>{if(!a?.length||!kit.isInstructionWithAccounts(e)||!kit.isInstructionWithData(e))return null;try{let o=token.identifyTokenInstruction(e);if(o!==token.TokenInstruction.Transfer&&o!==token.TokenInstruction.TransferChecked)return null;let i=o===token.TokenInstruction.TransferChecked?token.parseTransferCheckedInstruction:token.parseTransferInstruction,{accounts:c,data:s}=i({...e,data:Uint8Array.from(e.data)}),m=await fr(t,c.source.address);if(!m)return null;let p=a.find(h=>h.address.toLowerCase()===m.toLowerCase());if(!p)return null;let d=(c.source.address===n||c.authority.address===n)===!0?"outs":"ins",u="decimals"in s?s.decimals:p.decimals;return r[d].push({token:p,items:[{displayValue:new coreUtilsSdk.TokenUnit(s.amount,u,"").toString(),usdPrice:void 0}]}),{title:`Transfer ${p.symbol}`,items:[b("From",c.source.address),b("To",c.destination.address)]}}catch{return null}};var mt=async(t,e,r,n)=>{let a=await coreWalletsSdk.deserializeTransactionMessage(t,n),o={ins:[],outs:[]},i=await Promise.allSettled(a.instructions.map(async c=>pt(c,o,e,r.networkToken)??await lt(n,c,o,e,r.tokens)??null)).then(c=>c.filter(W).map(s=>s.value).filter(ct));return {balanceChange:o,details:i}};var ut=(t,e,r)=>{let n=e.account_summary.account_assets_diff??[],a={},o={},i=Object.keys(e.assets_diff??{}).filter(c=>c!==t);return n.forEach(({asset:c,in:s,out:m})=>{let p=hr(c,r);if(!p)return;let l="address"in p?p.address:p.symbol;s&&(a[l]||(a[l]={token:p,items:[]}),a[l].items.push({displayValue:String(s.value),usdPrice:typeof s.usd_price=="number"?String(s.usd_price):void 0})),m&&(o[l]||(o[l]={token:p,items:[]}),o[l].items.push({displayValue:String(m.value),usdPrice:typeof m.usd_price=="number"?String(m.usd_price):void 0}));}),{balanceChange:{ins:Object.values(a),outs:Object.values(o)},otherAffectedAddresses:i}},yr=t=>({name:t.type,symbol:t.type,decimals:t.decimals,description:"",logoUri:t.logo??void 0}),Tr=(t,e)=>({type:vmModuleTypes.TokenType.SPL,address:t.address,caip2Id:e.caipId??"",contractType:vmModuleTypes.TokenType.SPL,decimals:t.decimals,name:t.name,symbol:t.symbol,logoUri:t.logo||void 0}),hr=(t,e)=>t.type==="TOKEN"?Tr(t,e):t.type==="SOL"||t.type==="ETH"?yr(t):null;var ft=async({params:t,dAppUrl:e,blockaid:r})=>{try{return await r.solana.message.scan({chain:t.chain,options:["simulation","validation"],encoding:"base64",metadata:{url:e},transactions:[t.transactionBase64],account_address:base.base64.encode(base.base58.decode(t.account))})}catch(n){return console.error("solana.message.scan() error",n),null}};var de=async({simulationParams:t,network:e,provider:r})=>{let{params:n}=t,a=await ft(t),{simulation:o,validation:i}=a?.result??{},c={title:"Transaction Details",items:[re("Raw Data",t.params.transactionBase64)]},s=[c],m=!1,p,l;if(!i||i.result_type==="Warning"?l=xe[vmModuleTypes.AlertType.WARNING]:i.result_type==="Malicious"?l=xe[vmModuleTypes.AlertType.DANGER]:a?.error_details&&(l=st(a.error_details)),o){let{balanceChange:d,otherAffectedAddresses:u}=ut(n.account,o,e);if(p=d,u.length>0){let h=o.account_summary.account_assets_diff,f=h?.filter(y=>y.out&&y.out.raw_value>0)??[],g=h?.filter(y=>y.in&&y.in.raw_value>0)??[];f.length>0&&g.length>0?(c.items.push(b("Account",n.account)),c.items.push(Se("Interacting with",u))):(c.items.push(b(u.length===1?"From":"Account",n.account)),c.items.push(u.length===1?b("To",u[0]):Se("Interacting with",u)));}else c.items.push(b("Account",n.account));m=!0;}else {let{balanceChange:d,details:u}=await mt(n.transactionBase64,n.account,e,r);p=d,s.push(...u);}return {isSimulationSuccessful:m,details:s,alert:l,balanceChange:p}};var kr="https://explorer.solana.com";function yt(t,e,r="tx"){try{let n=t.explorerUrl?new URL(t.explorerUrl):new URL(kr);return n.pathname+=`${r}/${e}`,n.toString()}catch{return `${t.explorerUrl}/${r}/${e}`}}var Re=400,xr=15,Tt=async({provider:t,txHash:e,approvalController:r,request:n,network:a,commitment:o="confirmed",maxRetries:i=xr})=>{let c=0,s=null,m=yt(a,e,"tx");for(;c<i;)try{let p=await t.getSignatureStatuses([kit.signature(e)],{searchTransactionHistory:!0}).send();if(!p?.value?.[0]){await new Promise(u=>setTimeout(u,Re)),c++;continue}let{confirmationStatus:l,err:d}=p.value[0];if(d)return console.error("[waitForTransactionConfirmation] Transaction failed:",d),r.onTransactionReverted({txHash:e,request:n}),!1;if(l&&l!==s&&(s=l,l==="processed"&&r.onTransactionPending({txHash:e,request:n}),o==="processed"&&l==="processed"||o==="confirmed"&&["confirmed","finalized"].includes(l)||o==="finalized"&&l==="finalized"))return r.onTransactionConfirmed({txHash:e,request:n,explorerLink:m}),!0;await new Promise(u=>setTimeout(u,Re)),c++;}catch(p){if(p instanceof Error&&p.message.includes("Transaction failed"))return console.error("[waitForTransactionConfirmation] Transaction explicitly failed"),r.onTransactionReverted({txHash:e,request:n}),!1;await new Promise(l=>setTimeout(l,Re)),c++;}return s==="confirmed"||s==="finalized"?(r.onTransactionConfirmed({txHash:e,request:n,explorerLink:m}),!0):(r.onTransactionReverted({txHash:e,request:n}),!1)};var vr=zod.z.object({account:zod.z.string(),serializedTx:zod.z.string().base64(),sendOptions:zod.z.object({preflightCommitment:zod.z.enum(["processed","confirmed","finalized"]).optional(),maxRetries:zod.z.bigint().optional(),minContextSlot:zod.z.bigint().optional(),skipPreflight:zod.z.boolean().optional()}).optional()}),Rr=zod.z.tuple([vr]),ht=t=>Rr.safeParse(t);var Pt=async({request:t,network:e,approvalController:r,proxyApiUrl:n,blockaid:a})=>{let{params:o}=t,{data:i,success:c,error:s}=ht(o);if(!c)return console.error("invalid params",s),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:s}})};let[{account:m,serializedTx:p,sendOptions:l}]=i,d=L({isTestnet:!!e.isTestnet,proxyApiUrl:n}),{details:u,isSimulationSuccessful:h,alert:f,balanceChange:g}=await de({simulationParams:{dAppUrl:t.dappInfo.url,params:{account:m,chain:$(e),transactionBase64:p},blockaid:a},network:e,provider:d}),P={title:"Do you approve this transaction?",network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:u,alert:f,balanceChange:g,networkFeeSelector:!1,isSimulationSuccessful:h},y={type:vmModuleTypes.RpcMethod.SOLANA_SIGN_AND_SEND_TRANSACTION,account:m,data:p},A=await r.requestApproval({request:t,displayData:P,signingData:y});if("error"in A)return {error:A.error};let D;try{return D=await wr(d,A,l),await r.onTransactionPending({txHash:D,request:t}),Tt({provider:d,txHash:D,approvalController:r,request:t,network:e,commitment:l?.preflightCommitment}),{result:D}}catch(x){return console.error(x),{error:rpcErrors.rpcErrors.internal({message:"Transaction failed",data:{cause:x}})}}},wr=async(t,e,r)=>"txHash"in e?e.txHash:await t.sendTransaction(e.signedData,{...r,encoding:"base64"}).send();var br=zod.z.object({account:zod.z.string(),serializedTx:zod.z.string().base64()}),Nr=zod.z.tuple([br]),kt=t=>Nr.safeParse(t);var xt=async({request:t,network:e,approvalController:r,proxyApiUrl:n,blockaid:a})=>{let{params:o}=t,{data:i,success:c,error:s}=kt(o);if(!c)return console.error("invalid params",s),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:s}})};let[{account:m,serializedTx:p}]=i,l=L({isTestnet:!!e.isTestnet,proxyApiUrl:n}),{details:d,isSimulationSuccessful:u,alert:h,balanceChange:f}=await de({simulationParams:{dAppUrl:t.dappInfo.url,params:{account:m,chain:$(e),transactionBase64:p},blockaid:a},network:e,provider:l}),g={title:"Do you approve this transaction?",network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:d,alert:h,balanceChange:f&&it(f)?void 0:f,networkFeeSelector:!1,isSimulationSuccessful:u},P={type:vmModuleTypes.RpcMethod.SOLANA_SIGN_TRANSACTION,account:m,data:p},y=await r.requestApproval({request:t,displayData:g,signingData:P});return "error"in y?{error:y.error}:"signedData"in y?{result:y.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var vt=t=>{try{let e=base.base64.decode(t);return kit.getCompiledTransactionMessageDecoder().decode(e),!0}catch{return !1}};var Cr=zod.z.object({account:zod.z.string(),serializedMessage:zod.z.string().base64()}).refine(({serializedMessage:t})=>!vt(t),{message:"Cannot use signMessage() calls for signing transactions"}),Br=zod.z.tuple([Cr]),Rt=t=>Br.safeParse(t);var wt=async({request:t,network:e,approvalController:r})=>{let{params:n}=t,{data:a,success:o,error:i}=Rt(n);if(!o)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams({message:"Message signing params are invalid",data:{cause:i}})};let[{account:c,serializedMessage:s}]=a,m=new TextDecoder,p={title:"Sign Message",network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},dAppInfo:{name:t.dappInfo.name,action:`${t.dappInfo.name} is requesting to sign the following message`,logoUri:t.dappInfo.icon},details:[{title:"Message Details",items:[b("Account",c),he("Message",m.decode(base.base64.decode(s))),re("Raw Message (Base-64)",s)]}],networkFeeSelector:!1},l={type:vmModuleTypes.RpcMethod.SOLANA_SIGN_MESSAGE,account:c,data:s},d=await r.requestApproval({request:t,displayData:p,signingData:l});return "error"in d?{error:d.error}:"signedData"in d?{result:d.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var N,F,oe,J,Nt=class{constructor({approvalController:e,environment:r,appInfo:n,runtime:a}){chunkTKL4UUHE_cjs.c(this,N,void 0);chunkTKL4UUHE_cjs.c(this,F,void 0);chunkTKL4UUHE_cjs.c(this,oe,void 0);chunkTKL4UUHE_cjs.c(this,J,void 0);let{proxyApiUrl:o}=Ue(r);chunkTKL4UUHE_cjs.d(this,oe,n),chunkTKL4UUHE_cjs.d(this,N,o),chunkTKL4UUHE_cjs.d(this,F,e),chunkTKL4UUHE_cjs.b(this,N),chunkTKL4UUHE_cjs.b(this,F),chunkTKL4UUHE_cjs.b(this,oe),chunkTKL4UUHE_cjs.d(this,J,new Or__default.default({baseURL:o+"/proxy/blockaid/",apiKey:Ke,httpAgent:a?.httpAgent,fetch:a?.fetch}));}async getProvider(e){return L({isTestnet:!!e.isTestnet,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,N)})}getAddress(){return Promise.resolve({})}buildDerivationPath(e){return ie(e)}deriveAddress(e){return Oe({...e,approvalController:chunkTKL4UUHE_cjs.b(this,F)})}getBalances(e){let r=new te({storage:e.storage,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,N)});return Qe({...e,tokenService:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,N)})}getManifest(){let e=vmModuleTypes.parseManifest(Be);return e.success?e.data:void 0}getNetworkFee(e){return We(e,chunkTKL4UUHE_cjs.b(this,N))}getTransactionHistory(e){return at({network:e.network,address:e.address,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,N)})}getTokens(e){return e.caipId?qe({caip2Id:e.caipId,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,N)}):Promise.reject({error:rpcErrors.rpcErrors.invalidParams("Network must have a CAIP-2 id")})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.SOLANA_SIGN_TRANSACTION:return xt({approvalController:chunkTKL4UUHE_cjs.b(this,F),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,N),network:r,request:e,blockaid:chunkTKL4UUHE_cjs.b(this,J)});case vmModuleTypes.RpcMethod.SOLANA_SIGN_AND_SEND_TRANSACTION:return Pt({approvalController:chunkTKL4UUHE_cjs.b(this,F),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,N),network:r,request:e,blockaid:chunkTKL4UUHE_cjs.b(this,J)});case vmModuleTypes.RpcMethod.SOLANA_SIGN_MESSAGE:return wt({approvalController:chunkTKL4UUHE_cjs.b(this,F),network:r,request:e})}return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}};N=new WeakMap,F=new WeakMap,oe=new WeakMap,J=new WeakMap;
20
+ var Te=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=K.exponential()})=>{let a=0,o=0,i;for(;o<r;){o>0&&await _t(a);try{let s=await t(o);if(e(s))return s}catch(s){i=s;}a=n(o),o++;}let c=i?`Max retry exceeded. ${i}`:"Max retry exceeded.";throw new Error(c)},K=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,i=2*r*(Math.pow(2,a)-1);return o+i}}};function _t(t){return new Promise(e=>setTimeout(e,t))}var he=t=>Te({operation:e=>t(e>0),maxRetries:2,backoffPolicy:K.constant(1),isSuccess:e=>e?.status?.error_code!==429});function Ce(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function Se(t){let e,r=0;for(e=0;e<t.length;e++){let n=Ce(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}async function B(t,e){let r=await fetch(...t);if(!r.ok)throw new Error(`Request failed with status ${r.status}`);let n=await r.json();return e.parse(n)}var Z=class{constructor(e){this.proxyApiUrl=e;}simplePrice(e){let r=new URLSearchParams(e);return B([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(e){let{id:r,...n}=e,a=new URLSearchParams(n);return B([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}};var Ct=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())})),ae=class{constructor(e){this.proxyApiUrl=e;}watchlistToken(e){let r=new URLSearchParams(e);return B([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],Ct)}};var Be=coreCoingeckoSdk.getBasicCoingeckoHttp(),$,W,Q=class{constructor({storage:e,proxyApiUrl:r}){chunkTKL4UUHE_cjs.c(this,$,void 0);chunkTKL4UUHE_cjs.c(this,W,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(i=>{n[a]={[i]:{price:o?.[i],change24:o?.[`${i}_24h_change`],vol24:o?.[`${i}_24h_vol`],marketCap:o?.[`${i}_market_cap`]}};});}),n});chunkTKL4UUHE_cjs.d(this,$,e),chunkTKL4UUHE_cjs.d(this,W,r);}async getWatchlistDataForToken({tokenDetails:e,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let a=(await new ae(chunkTKL4UUHE_cjs.b(this,W)).watchlistToken({tokens:e.symbol,currency:r})).filter(o=>e.isNative?o.internalId===`NATIVE-${e.symbol.toLowerCase()}`:o.platforms[e.caip2Id]===e.address)[0];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?`${Se(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkTKL4UUHE_cjs.b(this,$)?.get?.(o),n)return n;try{n=await he(i=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{n=void 0;}return chunkTKL4UUHE_cjs.b(this,$)?.set?.(o,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,i=`getPricesWithMarketDataByAddresses-${`${Se(e)}-${r}-${n}`}`;if(a=chunkTKL4UUHE_cjs.b(this,$)?.get?.(i),a)return a;try{a=await he(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),a=void 0;}return chunkTKL4UUHE_cjs.b(this,$)?.set?.(i,a),a}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let o=await new Z(chunkTKL4UUHE_cjs.b(this,W)).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(Be,{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:i=!1,useCoingeckoProxy:c=!1,shouldThrow:s=!0}){if(c){let m=await new Z(chunkTKL4UUHE_cjs.b(this,W)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:o,include_last_updated_at:i});return this.transformSimplePriceResponse(m,r)}return coreCoingeckoSdk.simplePrice(Be,{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:o,lastUpdated:i,shouldThrow:s})}};$=new WeakMap,W=new WeakMap;zod.object({date:zod.string(),usd:zod.record(zod.number())});var Pe=(t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e});var D=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e}),ke=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS_LIST,value:e});var ee=(t,e)=>({label:t,type:vmModuleTypes.DetailItemType.DATA,value:e});process.env.GLACIER_API_KEY;var Ue={name:"SVM",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/index.js",packageName:"@avalabs/svm-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider/index.js",packageName:"@avalabs/svm-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1","solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z"],namespaces:["solana"]},cointype:"501",permissions:{rpc:{dapps:!0,methods:["solana_signTransaction","solana_signAndSendTransaction","solana_signMessage"],nonRestrictedMethods:[]}},manifestVersion:"0.1"};var Gt={proxyApiUrl:"https://proxy-api.avax.network"},$t={proxyApiUrl:"https://proxy-api-dev.avax.network"},Oe=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return Gt;case vmModuleTypes.Environment.DEV:return $t}};var Fe=t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string";var ie=({accountIndex:t})=>{if(t<0)throw rpcErrors.rpcErrors.invalidParams("Account index must be a non-negative integer");return {[vmModuleTypes.NetworkVMType.SVM]:`m/44'/501'/${t}'/0'`}};var Ve=async t=>{let{approvalController:e,secretId:r}=t,n=Fe(t)?ie(t).SVM:void 0,a=await e.requestPublicKey({curve:"ed25519",secretId:r,derivationPath:n});return {[vmModuleTypes.NetworkVMType.SVM]:base.base58.encode(base.hex.decode(a))}};var Ge="solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",$e="solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",ze="solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z",We="/proxy/nownodes/sol",Ke="https://api.devnet.solana.com";var je="DUMMY_API_KEY";var O=({isTestnet:t,proxyApiUrl:e})=>coreWalletsSdk.getSolanaProvider({isTestnet:t,rpcUrl:t?Ke:e+We});var xe=1e6,F={high:150*xe,medium:75*xe,low:2*xe},Yt=t=>(t.length===0?[F.low,F.low]:t.length===1?[t[0],F.low]:t).slice().sort((r,n)=>r-n);async function qe(t,e){let a=await(await O({isTestnet:!!t.isTestnet,proxyApiUrl:e}).getRecentPrioritizationFees()).send();if(a.length===0||a.every(g=>g.prioritizationFee===0n))return {high:{maxFeePerGas:BigInt(F.high),maxPriorityFeePerGas:BigInt(F.high)},medium:{maxFeePerGas:BigInt(F.medium),maxPriorityFeePerGas:BigInt(F.medium)},low:{maxFeePerGas:BigInt(F.low),maxPriorityFeePerGas:BigInt(F.low)},baseFee:BigInt(F.low),displayDecimals:9,isFixedFee:!1};let i=Yt(a.map(g=>Number(g.prioritizationFee))),c=i.at(0),s=i.at(-1),m=Math.floor(i.length/2),p=i.length%2===1?i[m]:(i[m-1]+i[m])/2,l=BigInt(Math.ceil(s*1.05)),d=BigInt(Math.ceil(p*1.05)),u=BigInt(Math.ceil(c*1.05));return {high:{maxFeePerGas:l,maxPriorityFeePerGas:l},medium:{maxFeePerGas:d,maxPriorityFeePerGas:d},low:{maxFeePerGas:u,maxPriorityFeePerGas:u},baseFee:u,displayDecimals:9,isFixedFee:!1}}var Jt=zod.z.object({address:zod.z.string(),name:zod.z.string(),symbol:zod.z.string(),contractType:zod.z.literal(vmModuleTypes.TokenType.SPL),caip2Id:zod.z.string().startsWith("solana:"),decimals:zod.z.number(),chainId:zod.z.number().optional(),logoUri:zod.z.string().optional(),color:zod.z.string().optional()}),He=zod.z.array(Jt);async function Ye({caip2Id:t,proxyApiUrl:e}){try{return (await B([`${e}/solana-tokens?caip2Id=${t}`],He)).map(n=>({...n,type:n.contractType}))}catch(r){throw console.error("getTokens() failed for",t,r),rpcErrors.rpcErrors.internal(`Failed to fetch tokens for caip2Id "${t}"`)}}var Xe=zod.z.object({nativeBalance:zod.z.object({lamports:zod.z.string(),solana:zod.z.string()}),nfts:zod.z.array(zod.z.object({associatedTokenAddress:zod.z.string(),mint:zod.z.string(),name:zod.z.string(),symbol:zod.z.string()})),tokens:zod.z.array(zod.z.object({associatedTokenAddress:zod.z.string(),mint:zod.z.string(),amountRaw:zod.z.string(),amount:zod.z.string(),decimals:zod.z.number(),name:zod.z.string(),symbol:zod.z.string(),logo:zod.z.string().optional().nullable()}))});var te,pe,Je,q=class{constructor({proxyApiUrl:e}){chunkTKL4UUHE_cjs.c(this,pe);chunkTKL4UUHE_cjs.c(this,te,void 0);chunkTKL4UUHE_cjs.d(this,te,`${e}/proxy/moralis`);}async getPortfolio({address:e,network:r}){try{let n=chunkTKL4UUHE_cjs.e(this,pe,Je).call(this,`/account/${r}/${e}/portfolio`),a=await B([n],Xe);return {address:e,portfolio:a}}catch(n){console.error("getPortfolio() failed:",n);let a=n instanceof Error?n.message:"unknown error";return {address:e,error:`getPortfolio() failed: ${a}`}}}};te=new WeakMap,pe=new WeakSet,Je=function(e){return `${chunkTKL4UUHE_cjs.b(this,te)}${e}`};var z=t=>{switch(t.caipId){case Ge:return "mainnet";case $e:return "devnet";case ze:return "testnet";default:throw new Error("Unrecognized CAIP-2 id: "+t.caipId)}};var et=async({addresses:t,proxyApiUrl:e,currency:r,network:n,tokenService:a})=>{let o=new q({proxyApiUrl:e}),i=n.pricingProviders?.coingecko.nativeTokenId??"",c=n.pricingProviders?.coingecko.assetPlatformId??"",s=r.toLowerCase(),m=z(n),p=await Promise.all(t.map(g=>o.getPortfolio({address:g,network:m}))),l=new Set(p.flatMap(g=>"portfolio"in g?g.portfolio.tokens.map(({mint:f})=>f):[])),d=await(c?a.getPricesByAddresses(Array.from(l),c,s):Promise.resolve(void 0)),u=await a.getWatchlistDataForToken({tokenDetails:{symbol:n.networkToken.symbol,isNative:!0,caip2Id:n.caipId??""},currency:s});return p.reduce((g,f)=>{if("error"in f)return {...g,[f.address]:{error:f.error}};let S=new coreUtilsSdk.TokenUnit(f.portfolio.nativeBalance.lamports,9,"SOL"),k=u.priceInCurrency!==void 0?S.mul(u.priceInCurrency):void 0,h={type:vmModuleTypes.TokenType.NATIVE,name:n.networkToken.name,symbol:n.networkToken.symbol,decimals:n.networkToken.decimals,balance:S.toSubUnit(),balanceDisplayValue:S.toString(),balanceInCurrency:k?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:k?.toDisplay({fixedDp:2}),logoUri:n.networkToken.logoUri??"",coingeckoId:i,...u},x=f.portfolio.tokens.reduce((C,{amountRaw:A,symbol:R,decimals:T,mint:P,name:I,logo:b})=>{let w=new coreUtilsSdk.TokenUnit(A,T,R),U=Qt(P,s,d),ge=U.priceInCurrency!==void 0?w.mul(U.priceInCurrency):void 0,ye={type:vmModuleTypes.TokenType.SPL,address:P,name:I,symbol:R,decimals:T,balance:w.toSubUnit(),balanceDisplayValue:w.toString(),balanceInCurrency:ge?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:ge?.toDisplay({fixedDp:2}),logoUri:b??void 0,reputation:null,...U};return {...C,[P]:ye}},{});return {...g,[f.address]:{[n.networkToken.symbol]:h,...x}}},{})},Qt=(t,e,r)=>({priceInCurrency:r?.[t??""]?.[e]?.price??void 0,marketCap:r?.[t??""]?.[e]?.marketCap??void 0,vol24:r?.[t??""]?.[e]?.vol24??void 0,change24:r?.[t??""]?.[e]?.change24??void 0});var ve=t=>({mint:t.mint,owner:t.owner,amount:BigInt(t.uiTokenAmount.amount),decimals:t.uiTokenAmount.decimals}),tt=(t,e,r,n)=>{let a=e!==-1?t[e]:r.preTokenBalances.find(s=>!t.includes(s.owner))?.owner||r.postTokenBalances.find(s=>!t.includes(s.owner))?.owner,o=r.preTokenBalances.reduce((s,{owner:m,mint:p,amount:l})=>({...s,[`${m}-${p}`]:l}),{}),i=r.postTokenBalances.reduce((s,{owner:m,mint:p,amount:l,decimals:d})=>{let u=`${m}-${p}`,g=o[u]??0n,f=l-g;if(f===0n)return s;let S=f>0n&&m===a,k=f<0n&&m===a;if(S){let h=Object.keys(o).find(A=>{let[R,T]=A.split("-");if(T!==p||R===a)return !1;let P=o[A],I=r.postTokenBalances.find(({owner:w,mint:U})=>w===R&&U===p);return !I||I.amount<P});if(!h)return s;let x=n.tokens?.filter(A=>"contractType"in A).find(A=>A.address===p)??{contractType:vmModuleTypes.TokenType.SPL,decimals:d,address:p,symbol:"Unknown",name:"Unknown"},C={...x,type:x.contractType,from:{...x,address:h.split("-")[0]},to:{...x,address:m},amount:new coreUtilsSdk.TokenUnit(f,d,"").toDisplay()};return [...s,C]}else if(k){let h=r.postTokenBalances.find(({owner:A,mint:R})=>R===p&&A!==a&&(o[`${A}-${p}`]??0n)<(r.postTokenBalances.find(T=>T.owner===A&&T.mint===p)?.amount??0n));if(!h)return s;let x=n.tokens?.filter(A=>"contractType"in A).find(A=>A.address===p)??{contractType:vmModuleTypes.TokenType.SPL,decimals:d,address:p,symbol:"Unknown",name:"Unknown"},C={...x,type:x.contractType,from:{...x,address:a},to:{...x,address:h.owner},amount:new coreUtilsSdk.TokenUnit(-f,d,"").toDisplay()};return [...s,C]}return s},[]),c=er(t,e,r,n,i,a);return c&&i.push(c),i},er=(t,e,{paidFee:r,preBalances:n,postBalances:a},o,i=[],c)=>{if(e===-1){if(i.length>0&&c&&i.some(T=>T.to?.address===c)){let T=t.findIndex(P=>P===c);if(T!==-1){let P=n[T],b=a[T]-P;if(b<=0){let w=Math.abs(b)+r;if(w>r){let U=new coreUtilsSdk.TokenUnit(w,o.networkToken.decimals,""),ye=a.map((oe,J)=>oe-n[J]).reduce((oe,J,Ne)=>Ne!==T&&J>oe.amount&&J>0?{index:Ne,amount:J}:oe,{index:0,amount:0});return {amount:U.toDisplay(),from:{address:c},to:{address:t[ye.index]},name:o.networkToken.name,symbol:o.networkToken.symbol,type:vmModuleTypes.TokenType.NATIVE}}}}}return null}let s=t[e],m=n[e],l=a[e]-m,d=a.map((R,T)=>R-n[T]),u=i.length>0,g=l!==0?l+r:0,f=g>0,S=0,k=!1;if(u&&e===0&&c){let R=i.some(P=>P.to?.address===c),T=i.some(P=>P.from?.address===c);R&&!T&&(f=!1,k=!0,S=a.map((b,w)=>b-n[w]).reduce((b,w,U)=>U!==e&&w>b.amount&&w>0?{index:U,amount:w}:b,{index:0,amount:0}).index);}if(u&&l<0){let R=d.reduce((T,P,I)=>I!==e&&P>T.amount?{index:I,amount:P}:T,{index:0,amount:0});R.amount>r*2&&!k&&(g=R.amount,f=!0,S=R.index);}else u&&l<=0&&i.some(T=>T.to?.address===s)&&(g=Math.abs(l)+r,f=!1,S=d.reduce((P,I,b)=>b!==e&&I>P.amount&&I>0?{index:b,amount:I}:P,{index:0,amount:0}).index);if(!g)return null;let h=new coreUtilsSdk.TokenUnit(Math.abs(g),o.networkToken.decimals,"");if(!u){let R=d.reduce(({index:T,change:P},I,b)=>I>P?{index:b,change:I}:{index:T,change:P},{index:0,change:d[0]});S=f?0:R.index;}let x=t[S],C=f?x||s:c||s,A=f?c||s:x||c||s;return {amount:h.toDisplay(),from:{address:C},to:{address:A},name:o.networkToken.name,symbol:o.networkToken.symbol,type:vmModuleTypes.TokenType.NATIVE}};var re=t=>t.status==="fulfilled";function rt(t){return e=>!!e[t]}var ot=async({network:t,address:e,proxyApiUrl:r})=>{let n=O({isTestnet:!!t.isTestnet,proxyApiUrl:r}),o=(await n.getSignaturesForAddress(kit.address(e),{limit:25}).send()).map(s=>s.signature),i=o;try{let s=new q({proxyApiUrl:r}),m=z(t),p=await s.getPortfolio({address:e,network:m});if("portfolio"in p){let l=p.portfolio.tokens.map(k=>k.associatedTokenAddress),d=p.portfolio.nfts.map(k=>k.associatedTokenAddress),g=[...l,...d].map(async k=>{try{return (await n.getSignaturesForAddress(kit.address(k),{limit:25}).send()).map(x=>x.signature)}catch(h){return console.error("Failed to get signatures for ATA:",k,h),[]}}),S=(await Promise.allSettled(g)).filter(re).map(k=>k.value).flat();i=Array.from(new Set([...o,...S]));}}catch(s){console.error("ATA discovery failed with error:",s);}return (await Promise.allSettled(i.map(async s=>({txHash:s.toString(),tx:await n.getTransaction(s,{encoding:"json",maxSupportedTransactionVersion:0}).send()})))).filter(re).map(s=>s.value).filter(rt("tx"))};var at=(t,e)=>{let r=e?new URL(e):null;return r&&(r.pathname=`/tx/${t}`),r?.toString()??""};async function st({network:t,address:e,proxyApiUrl:r}){return t.caipId?{transactions:(await ot({network:t,address:e,proxyApiUrl:r})).map(({txHash:o,tx:i})=>{if(!i.meta)return null;let{meta:c,transaction:{message:s}}=i,m=s.accountKeys.map(f=>f.toString()),p=m.indexOf(e),l=p!==-1;!l&&c.preTokenBalances&&(c.preTokenBalances.some(S=>S.owner===e)||(c.postTokenBalances??[]).some(S=>S.owner===e))&&(l=!0,p=-1);let d=p!==-1&&p<s.header.numRequiredSignatures,u=tt(m,p,{paidFee:d?Number(c.fee):0,preBalances:c.preBalances.map(Number),postBalances:c.postBalances.map(Number),preTokenBalances:(c.preTokenBalances??[]).map(ve),postTokenBalances:(c.postTokenBalances??[]).map(ve)},t),g=rr(u,e);return {hash:o,txType:g,gasUsed:String(i.meta.computeUnitsConsumed??"0"),tokens:u,from:u[0]?.from?.address??m[0],to:u[0]?.to?.address??(d?"":e),isOutgoing:d,isIncoming:!d,isSender:d,timestamp:Number(i.blockTime)*1e3,isContractCall:!1,gasPrice:String(Number(i.meta.fee)/Number(i.meta.computeUnitsConsumed)),chainId:String(t.chainId),explorerLink:at(o,t.explorerUrl)}}).filter(o=>o!==null)}:Promise.reject({error:rpcErrors.rpcErrors.invalidParams("Network must have a CAIP-2 id")})}var rr=(t,e)=>{if(t.length===0)return vmModuleTypes.TransactionType.UNKNOWN;let r=t.filter(o=>o.from?.address===e||o.to?.address===e);if(r.length===0)return vmModuleTypes.TransactionType.UNKNOWN;let n=r.some(o=>o.from?.address===e),a=r.some(o=>o.to?.address===e);return n&&a?vmModuleTypes.TransactionType.SWAP:n?vmModuleTypes.TransactionType.SEND:a?vmModuleTypes.TransactionType.RECEIVE:vmModuleTypes.TransactionType.UNKNOWN};var it=t=>{if(t?.type==="InstructionError")switch(t.code){case"ResultWithNegativeLamports":return {type:vmModuleTypes.AlertType.WARNING,details:{title:"This transaction will likely be reverted",description:"Your account does not have enough SOL to perform the operation"}}}return {type:vmModuleTypes.AlertType.WARNING,details:{title:"Transaction simulation has failed",description:"It is possible that this transaction will fail. Please proceed with caution."}}},Re={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious Transaction",description:"Use caution, this transaction may be malicious."}},[vmModuleTypes.AlertType.DANGER]:{type:vmModuleTypes.AlertType.DANGER,details:{title:"Scam Transaction",description:"This transaction is malicious, do not proceed.",actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};function ct(t){return t.ins.length===0&&t.outs.length===0}function pt(t){return t!=null}var lt=(t,e,r,n)=>{if(!kit.isInstructionForProgram(t,system.SYSTEM_PROGRAM_ADDRESS)||!kit.isInstructionWithAccounts(t)||!kit.isInstructionWithData(t))return null;try{if(system.identifySystemInstruction(t)!==system.SystemInstruction.TransferSol)return null;let{accounts:o,data:i}=system.parseTransferSolInstruction({...t,data:Uint8Array.from(t.data)}),s=o.source.address===r===!0?"outs":"ins";return e[s].push({token:{...n,address:""},items:[{displayValue:new coreUtilsSdk.TokenUnit(i.amount,n.decimals,"").toString(),usdPrice:void 0}]}),{title:"Transfer SOL",items:[D("From",o.source.address),D("To",o.destination.address)]}}catch{return null}};var Tr=async(t,e)=>{try{let r=await t.getAccountInfo(e,{encoding:"jsonParsed"}).send();if(Array.isArray(r.value?.data))return null;let n=r.value?.data.parsed.info;return typeof n?.mint=="string"?n.mint:null}catch{return null}},mt=async(t,e,r,n,a)=>{if(!a?.length||!kit.isInstructionWithAccounts(e)||!kit.isInstructionWithData(e))return null;try{let o=token.identifyTokenInstruction(e);if(o!==token.TokenInstruction.Transfer&&o!==token.TokenInstruction.TransferChecked)return null;let i=o===token.TokenInstruction.TransferChecked?token.parseTransferCheckedInstruction:token.parseTransferInstruction,{accounts:c,data:s}=i({...e,data:Uint8Array.from(e.data)}),m=await Tr(t,c.source.address);if(!m)return null;let p=a.find(g=>g.address.toLowerCase()===m.toLowerCase());if(!p)return null;let d=(c.source.address===n||c.authority.address===n)===!0?"outs":"ins",u="decimals"in s?s.decimals:p.decimals;return r[d].push({token:p,items:[{displayValue:new coreUtilsSdk.TokenUnit(s.amount,u,"").toString(),usdPrice:void 0}]}),{title:`Transfer ${p.symbol}`,items:[D("From",c.source.address),D("To",c.destination.address)]}}catch{return null}};var dt=async(t,e,r,n)=>{let a=await coreWalletsSdk.deserializeTransactionMessage(t,n),o={ins:[],outs:[]},i=await Promise.allSettled(a.instructions.map(async c=>lt(c,o,e,r.networkToken)??await mt(n,c,o,e,r.tokens)??null)).then(c=>c.filter(re).map(s=>s.value).filter(pt));return {balanceChange:o,details:i}};var ft=(t,e,r)=>{let n=e.account_summary.account_assets_diff??[],a={},o={},i=Object.keys(e.assets_diff??{}).filter(c=>c!==t);return n.forEach(({asset:c,in:s,out:m})=>{let p=kr(c,r);if(!p)return;let l="address"in p?p.address:p.symbol;s&&(a[l]||(a[l]={token:p,items:[]}),a[l].items.push({displayValue:String(s.value),usdPrice:typeof s.usd_price=="number"?String(s.usd_price):void 0})),m&&(o[l]||(o[l]={token:p,items:[]}),o[l].items.push({displayValue:String(m.value),usdPrice:typeof m.usd_price=="number"?String(m.usd_price):void 0}));}),{balanceChange:{ins:Object.values(a),outs:Object.values(o)},otherAffectedAddresses:i}},Sr=t=>({name:t.type,symbol:t.type,decimals:t.decimals,description:"",logoUri:t.logo??void 0}),Pr=(t,e)=>({type:vmModuleTypes.TokenType.SPL,address:t.address,caip2Id:e.caipId??"",contractType:vmModuleTypes.TokenType.SPL,decimals:t.decimals,name:t.name,symbol:t.symbol,logoUri:t.logo||void 0}),kr=(t,e)=>t.type==="TOKEN"?Pr(t,e):t.type==="SOL"||t.type==="ETH"?Sr(t):null;var gt=async({params:t,dAppUrl:e,blockaid:r})=>{try{return await r.solana.message.scan({chain:t.chain,options:["simulation","validation"],encoding:"base64",metadata:{url:e},transactions:[t.transactionBase64],account_address:base.base64.encode(base.base58.decode(t.account))})}catch(n){return console.error("solana.message.scan() error",n),null}};var de=async({simulationParams:t,network:e,provider:r})=>{let{params:n}=t,a=await gt(t),{simulation:o,validation:i}=a?.result??{},c={title:"Transaction Details",items:[ee("Raw Data",t.params.transactionBase64)]},s=[c],m=!1,p,l;if(!i||i.result_type==="Warning"?l=Re[vmModuleTypes.AlertType.WARNING]:i.result_type==="Malicious"?l=Re[vmModuleTypes.AlertType.DANGER]:a?.error_details&&(l=it(a.error_details)),o){let{balanceChange:d,otherAffectedAddresses:u}=ft(n.account,o,e);if(p=d,u.length>0){let g=o.account_summary.account_assets_diff,f=g?.filter(h=>h.out&&h.out.raw_value>0)??[],S=g?.filter(h=>h.in&&h.in.raw_value>0)??[];f.length>0&&S.length>0?(c.items.push(D("Account",n.account)),c.items.push(ke("Interacting with",u))):(c.items.push(D(u.length===1?"From":"Account",n.account)),c.items.push(u.length===1?D("To",u[0]):ke("Interacting with",u)));}else c.items.push(D("Account",n.account));m=!0;}else {let{balanceChange:d,details:u}=await dt(n.transactionBase64,n.account,e,r);p=d,s.push(...u);}return {isSimulationSuccessful:m,details:s,alert:l,balanceChange:p}};var vr="https://explorer.solana.com";function Tt(t,e,r="tx"){try{let n=t.explorerUrl?new URL(t.explorerUrl):new URL(vr);return n.pathname+=`${r}/${e}`,n.toString()}catch{return `${t.explorerUrl}/${r}/${e}`}}var be=400,Ir=15,ht=async({provider:t,txHash:e,approvalController:r,request:n,network:a,commitment:o="confirmed",maxRetries:i=Ir})=>{let c=0,s=null,m=Tt(a,e,"tx");for(;c<i;)try{let p=await t.getSignatureStatuses([kit.signature(e)],{searchTransactionHistory:!0}).send();if(!p?.value?.[0]){await new Promise(u=>setTimeout(u,be)),c++;continue}let{confirmationStatus:l,err:d}=p.value[0];if(d)return console.error("[waitForTransactionConfirmation] Transaction failed:",d),r.onTransactionReverted({txHash:e,request:n}),!1;if(l&&l!==s&&(s=l,l==="processed"&&r.onTransactionPending({txHash:e,request:n}),o==="processed"&&l==="processed"||o==="confirmed"&&["confirmed","finalized"].includes(l)||o==="finalized"&&l==="finalized"))return r.onTransactionConfirmed({txHash:e,request:n,explorerLink:m}),!0;await new Promise(u=>setTimeout(u,be)),c++;}catch(p){if(p instanceof Error&&p.message.includes("Transaction failed"))return console.error("[waitForTransactionConfirmation] Transaction explicitly failed"),r.onTransactionReverted({txHash:e,request:n}),!1;await new Promise(l=>setTimeout(l,be)),c++;}return s==="confirmed"||s==="finalized"?(r.onTransactionConfirmed({txHash:e,request:n,explorerLink:m}),!0):(r.onTransactionReverted({txHash:e,request:n}),!1)};var br=zod.z.object({account:zod.z.string(),serializedTx:zod.z.string().base64(),sendOptions:zod.z.object({preflightCommitment:zod.z.enum(["processed","confirmed","finalized"]).optional(),maxRetries:zod.z.bigint().optional(),minContextSlot:zod.z.bigint().optional(),skipPreflight:zod.z.boolean().optional()}).optional()}),wr=zod.z.tuple([br]),St=t=>wr.safeParse(t);var kt=async({request:t,network:e,approvalController:r,proxyApiUrl:n,blockaid:a})=>{let{params:o}=t,{data:i,success:c,error:s}=St(o);if(!c)return console.error("invalid params",s),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:s}})};let[{account:m,serializedTx:p,sendOptions:l}]=i,d=O({isTestnet:!!e.isTestnet,proxyApiUrl:n}),{details:u,isSimulationSuccessful:g,alert:f,balanceChange:S}=await de({simulationParams:{dAppUrl:t.dappInfo.url,params:{account:m,chain:z(e),transactionBase64:p},blockaid:a},network:e,provider:d}),k={title:"Do you approve this transaction?",network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:u,alert:f,balanceChange:S,networkFeeSelector:!1,isSimulationSuccessful:g},h={type:vmModuleTypes.RpcMethod.SOLANA_SIGN_AND_SEND_TRANSACTION,account:m,data:p},x=await r.requestApproval({request:t,displayData:k,signingData:h});if("error"in x)return {error:x.error};let C;try{return C=await Dr(d,x,l),await r.onTransactionPending({txHash:C,request:t}),ht({provider:d,txHash:C,approvalController:r,request:t,network:e,commitment:l?.preflightCommitment}),{result:C}}catch(A){return console.error(A),{error:rpcErrors.rpcErrors.internal({message:"Transaction failed",data:{cause:A}})}}},Dr=async(t,e,r)=>"txHash"in e?e.txHash:await t.sendTransaction(e.signedData,{...r,encoding:"base64"}).send();var _r=zod.z.object({account:zod.z.string(),serializedTx:zod.z.string().base64()}),Cr=zod.z.tuple([_r]),At=t=>Cr.safeParse(t);var vt=async({request:t,network:e,approvalController:r,proxyApiUrl:n,blockaid:a})=>{let{params:o}=t,{data:i,success:c,error:s}=At(o);if(!c)return console.error("invalid params",s),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:s}})};let[{account:m,serializedTx:p}]=i,l=O({isTestnet:!!e.isTestnet,proxyApiUrl:n}),{details:d,isSimulationSuccessful:u,alert:g,balanceChange:f}=await de({simulationParams:{dAppUrl:t.dappInfo.url,params:{account:m,chain:z(e),transactionBase64:p},blockaid:a},network:e,provider:l}),S={title:"Do you approve this transaction?",network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:d,alert:g,balanceChange:f&&ct(f)?void 0:f,networkFeeSelector:!1,isSimulationSuccessful:u},k={type:vmModuleTypes.RpcMethod.SOLANA_SIGN_TRANSACTION,account:m,data:p},h=await r.requestApproval({request:t,displayData:S,signingData:k});return "error"in h?{error:h.error}:"signedData"in h?{result:h.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var Rt=t=>{try{let e=base.base64.decode(t);return kit.getCompiledTransactionMessageDecoder().decode(e),!0}catch{return !1}};var Ur=zod.z.object({account:zod.z.string(),serializedMessage:zod.z.string().base64()}).refine(({serializedMessage:t})=>!Rt(t),{message:"Cannot use signMessage() calls for signing transactions"}),Mr=zod.z.tuple([Ur]),It=t=>Mr.safeParse(t);var wt=async({request:t,network:e,approvalController:r})=>{let{params:n}=t,{data:a,success:o,error:i}=It(n);if(!o)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams({message:"Message signing params are invalid",data:{cause:i}})};let[{account:c,serializedMessage:s}]=a,m=new TextDecoder,p={title:"Sign Message",network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},dAppInfo:{name:t.dappInfo.name,action:`${t.dappInfo.name} is requesting to sign the following message`,logoUri:t.dappInfo.icon},details:[{title:"Message Details",items:[D("Account",c),Pe("Message",m.decode(base.base64.decode(s))),ee("Raw Message (Base-64)",s)]}],networkFeeSelector:!1},l={type:vmModuleTypes.RpcMethod.SOLANA_SIGN_MESSAGE,account:c,data:s},d=await r.requestApproval({request:t,displayData:p,signingData:l});return "error"in d?{error:d.error}:"signedData"in d?{result:d.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var _,G,ne,X,Dt=class{constructor({approvalController:e,environment:r,appInfo:n,runtime:a}){chunkTKL4UUHE_cjs.c(this,_,void 0);chunkTKL4UUHE_cjs.c(this,G,void 0);chunkTKL4UUHE_cjs.c(this,ne,void 0);chunkTKL4UUHE_cjs.c(this,X,void 0);let{proxyApiUrl:o}=Oe(r);chunkTKL4UUHE_cjs.d(this,ne,n),chunkTKL4UUHE_cjs.d(this,_,o),chunkTKL4UUHE_cjs.d(this,G,e),chunkTKL4UUHE_cjs.b(this,_),chunkTKL4UUHE_cjs.b(this,G),chunkTKL4UUHE_cjs.b(this,ne),chunkTKL4UUHE_cjs.d(this,X,new Gr__default.default({baseURL:o+"/proxy/blockaid/",apiKey:je,httpAgent:a?.httpAgent,fetch:a?.fetch}));}async getProvider(e){return O({isTestnet:!!e.isTestnet,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_)})}getAddress(){return Promise.resolve({})}buildDerivationPath(e){return ie(e)}deriveAddress(e){return Ve({...e,approvalController:chunkTKL4UUHE_cjs.b(this,G)})}getBalances(e){let r=new Q({storage:e.storage,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_)});return et({...e,tokenService:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_)})}getManifest(){let e=vmModuleTypes.parseManifest(Ue);return e.success?e.data:void 0}getNetworkFee(e){return qe(e,chunkTKL4UUHE_cjs.b(this,_))}getTransactionHistory(e){return st({network:e.network,address:e.address,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_)})}getTokens(e){return e.caipId?Ye({caip2Id:e.caipId,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_)}):Promise.reject({error:rpcErrors.rpcErrors.invalidParams("Network must have a CAIP-2 id")})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.SOLANA_SIGN_TRANSACTION:return vt({approvalController:chunkTKL4UUHE_cjs.b(this,G),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_),network:r,request:e,blockaid:chunkTKL4UUHE_cjs.b(this,X)});case vmModuleTypes.RpcMethod.SOLANA_SIGN_AND_SEND_TRANSACTION:return kt({approvalController:chunkTKL4UUHE_cjs.b(this,G),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_),network:r,request:e,blockaid:chunkTKL4UUHE_cjs.b(this,X)});case vmModuleTypes.RpcMethod.SOLANA_SIGN_MESSAGE:return wt({approvalController:chunkTKL4UUHE_cjs.b(this,G),network:r,request:e})}return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}};_=new WeakMap,G=new WeakMap,ne=new WeakMap,X=new WeakMap;
21
21
 
22
- exports.SvmModule = Nt;
22
+ exports.SvmModule = Dt;
23
23
  //# sourceMappingURL=out.js.map
24
24
  //# sourceMappingURL=index.cjs.map