@avalabs/svm-module 3.7.3 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,18 +1,18 @@
1
- import { c, d, b, a, e } from './chunk-7VP42LRT.js';
2
- import { TokenType, AlertType, parseManifest, RpcMethod, Environment, NetworkVMType, TransactionType, RawSimplePriceResponseSchema, DetailItemType } from '@avalabs/vm-module-types';
1
+ import { a, c, d, b, e, f } from './chunk-F6EK5R7B.js';
2
+ import { DetailItemType, Environment, NetworkVMType, TokenType, TransactionType, AlertType, RpcMethod, RawSimplePriceResponseSchema, parseManifest } from '@avalabs/vm-module-types';
3
3
  import { rpcErrors } from '@metamask/rpc-errors';
4
4
  import { VsCurrencyType, getBasicCoingeckoHttp, simpleTokenPrice, simplePrice } from '@avalabs/core-coingecko-sdk';
5
5
  import { z as z$1, object, string, record, number } from 'zod';
6
- import { base64, base58, hex } from '@scure/base';
6
+ import { base58, hex, base64 } from '@scure/base';
7
7
  import { getSolanaProvider, deserializeTransactionMessage } from '@avalabs/core-wallets-sdk';
8
8
  import { TokenUnit } from '@avalabs/core-utils-sdk';
9
- import { getCompiledTransactionMessageDecoder, address, signature, isInstructionForProgram, isInstructionWithAccounts, isInstructionWithData } from '@solana/kit';
9
+ import { address, isInstructionForProgram, isInstructionWithAccounts, isInstructionWithData, signature, getCompiledTransactionMessageDecoder } from '@solana/kit';
10
10
  import { SYSTEM_PROGRAM_ADDRESS, identifySystemInstruction, SystemInstruction, parseTransferSolInstruction } from '@solana-program/system';
11
11
  import { identifyTokenInstruction, TokenInstruction, parseTransferCheckedInstruction, parseTransferInstruction } from '@solana-program/token';
12
- import qr from '@blockaid/client';
12
+ import Zr from '@blockaid/client';
13
13
 
14
- function Oe(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function ve(t){let e,r=0;for(e=0;e<t.length;e++){let n=Oe(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}var Re=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=q.exponential()})=>{let o=0,s=0,i;for(;s<r;){s>0&&await Lt(o);try{let a=await t(s);if(e(a))return a}catch(a){i=a;}o=n(s),s++;}let c=i?`Max retry exceeded. ${i}`:"Max retry exceeded.";throw new Error(c)},q=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 o=n-e+1,s=e*r,i=2*r*(Math.pow(2,o)-1);return s+i}}};function Lt(t){return new Promise(e=>setTimeout(e,t))}var be=t=>Re({operation:e=>t(e>0),maxRetries:2,backoffPolicy:q.constant(1),isSuccess:e=>e?.status?.error_code!==429});async function L(t,e,r=fetch){let n=await r(...t);if(!n.ok)throw new Error(`Request failed with status ${n.status}`);let o=await n.json();return e.parse(o)}var ne=class{constructor(e,r){this.proxyApiUrl=e;this.fetchFn=r;}simplePrice(e){let r=new URLSearchParams(e);return L([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(e){let{id:r,...n}=e,o=new URLSearchParams(n);return L([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${o}`,{method:"POST",headers:{"Content-Type":"application/json"}}],RawSimplePriceResponseSchema,this.fetchFn)}};var Ut=z$1.array(z$1.object({internalId:z$1.string(),id:z$1.string(),symbol:z$1.string(),name:z$1.string(),image:z$1.string().optional().nullable(),current_price:z$1.number().optional().nullable(),price_change_percentage_24h:z$1.number().optional().nullable(),market_cap:z$1.number().optional().nullable(),total_volume:z$1.number().optional().nullable(),platforms:z$1.record(z$1.string(),z$1.string())})),de=class{constructor(e){this.proxyApiUrl=e;}watchlistToken(e){let r=new URLSearchParams(e);return L([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],Ut)}};var $,K,j,X,oe=class{constructor({storage:e,proxyApiUrl:r,fetch:n}){c(this,$,void 0);c(this,K,void 0);c(this,j,void 0);c(this,X,void 0);a(this,"transformSimplePriceResponse",(e,r=[VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(o=>{let s=e[o];n[o]={},r.forEach(i=>{n[o]={[i]:{price:s?.[i],change24:s?.[`${i}_24h_change`],vol24:s?.[`${i}_24h_vol`],marketCap:s?.[`${i}_market_cap`]}};});}),n});d(this,$,e),d(this,K,r),d(this,j,n??globalThis.fetch),d(this,X,getBasicCoingeckoHttp(void 0,b(this,j)));}async getWatchlistDataForToken({tokenDetails:e,currency:r=VsCurrencyType.USD}){let n=(await new de(b(this,K)).watchlistToken({tokens:e.symbol,currency:r})).filter(s=>e.isNative?s.internalId===`NATIVE-${e.symbol.toLowerCase()}`:s.platforms[e.caip2Id]===e.address),[o]=n;return o?{priceInCurrency:o.current_price??0,change24:o.price_change_percentage_24h??0,marketCap:o.market_cap??0,vol24:o.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:e=[],currencies:r=[VsCurrencyType.USD]}){let n,s=`getSimplePrice-${e?`${ve(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=b(this,$)?.get?.(s),n)return n;try{n=await be(i=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{n=void 0;}return b(this,$)?.set?.(s,n),n}async getPricesByAddresses(e,r,n=VsCurrencyType.USD){let o,i=`getPricesWithMarketDataByAddresses-${`${ve(e)}-${r}-${n}`}`;if(o=b(this,$)?.get?.(i),o)return o;try{o=await be(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),o=void 0;}return b(this,$)?.set?.(i,o),o}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=VsCurrencyType.USD,useCoingeckoProxy:o=!1}){if(o){let s=await new ne(b(this,K),b(this,j)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(s,[n])}return simpleTokenPrice(b(this,X),{assetPlatformId:e,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:r=[VsCurrencyType.USD],marketCap:n=!1,vol24:o=!1,change24:s=!1,lastUpdated:i=!1,useCoingeckoProxy:c=!1,shouldThrow:a=!0}){if(c){let m=await new ne(b(this,K),b(this,j)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:o,include_24hr_change:s,include_last_updated_at:i});return this.transformSimplePriceResponse(m,r)}return simplePrice(b(this,X),{coinIds:e,currencies:r,marketCap:n,vol24:o,change24:s,lastUpdated:i,shouldThrow:a})}};$=new WeakMap,K=new WeakMap,j=new WeakMap,X=new WeakMap;object({date:string(),usd:record(number())});var Ie=(t,e,r="horizontal")=>({label:t,alignment:r,type:DetailItemType.TEXT,value:e});var _=(t,e)=>({label:t,type:DetailItemType.ADDRESS,value:e}),we=(t,e)=>({label:t,type:DetailItemType.ADDRESS_LIST,value:e});var se=(t,e)=>({label:t,type:DetailItemType.DATA,value:e});process.env.GLACIER_API_KEY;var z=(t,e)=>({message:`${t}${e instanceof Error?`: ${e.message}`:""}`,data:{cause:e}});var Ge={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 qt={proxyApiUrl:"https://proxy-api.avax.network"},Kt={proxyApiUrl:"https://proxy-api-dev.avax.network"},ze=t=>{switch(t){case Environment.PRODUCTION:return qt;case Environment.DEV:return Kt}};var We=t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string";var fe=({accountIndex:t})=>{if(t<0)throw rpcErrors.invalidParams("Account index must be a non-negative integer");return {[NetworkVMType.SVM]:`m/44'/501'/${t}'/0'`}};var qe=async t=>{let{approvalController:e,secretId:r}=t,n=We(t)?fe(t).SVM:void 0,o=await e.requestPublicKey({curve:"ed25519",secretId:r,derivationPath:n});return {[NetworkVMType.SVM]:base58.encode(hex.decode(o))}};var Ke="solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",je="solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",He="solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z",Ye="/proxy/nownodes/sol",Xe="https://api.devnet.solana.com";var Je="DUMMY_API_KEY";var O=({isTestnet:t,proxyApiUrl:e})=>getSolanaProvider({isTestnet:t,rpcUrl:t?Xe:e+Ye});var De=1e6,M={high:150*De,medium:75*De,low:2*De},Qt=t=>(t.length===0?[M.low,M.low]:t.length===1?[t[0],M.low]:t).slice().sort((r,n)=>r-n);async function Ze(t,e){let o=await(await O({isTestnet:!!t.isTestnet,proxyApiUrl:e}).getRecentPrioritizationFees()).send();if(o.length===0||o.every(y=>y.prioritizationFee===0n))return {high:{maxFeePerGas:BigInt(M.high),maxPriorityFeePerGas:BigInt(M.high)},medium:{maxFeePerGas:BigInt(M.medium),maxPriorityFeePerGas:BigInt(M.medium)},low:{maxFeePerGas:BigInt(M.low),maxPriorityFeePerGas:BigInt(M.low)},baseFee:BigInt(M.low),displayDecimals:9,isFixedFee:!1};let i=Qt(o.map(y=>Number(y.prioritizationFee))),c=i.at(0),a=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(a*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 tr=z$1.object({address:z$1.string(),name:z$1.string(),symbol:z$1.string(),contractType:z$1.literal(TokenType.SPL),caip2Id:z$1.string().startsWith("solana:"),decimals:z$1.number(),chainId:z$1.number().optional(),logoUri:z$1.string().optional(),color:z$1.string().optional()}),Qe=z$1.array(tr);async function et({caip2Id:t,proxyApiUrl:e}){try{return (await L([`${e}/solana-tokens?caip2Id=${t}`],Qe)).map(n=>({...n,type:n.contractType}))}catch(r){throw console.error("getTokens() failed for",t,r),rpcErrors.internal(`Failed to fetch tokens for caip2Id "${t}"`)}}var tt=z$1.object({nativeBalance:z$1.object({lamports:z$1.string(),solana:z$1.string()}),nfts:z$1.array(z$1.object({associatedTokenAddress:z$1.string(),mint:z$1.string(),name:z$1.string(),symbol:z$1.string()})),tokens:z$1.array(z$1.object({associatedTokenAddress:z$1.string(),mint:z$1.string(),amountRaw:z$1.string(),amount:z$1.string(),decimals:z$1.number(),name:z$1.string(),symbol:z$1.string(),logo:z$1.string().optional().nullable()}))});var ae,ie,ye,rt,J=class{constructor(e){c(this,ye);c(this,ae,void 0);c(this,ie,void 0);d(this,ae,`${e.proxyApiUrl}/proxy/moralis`),d(this,ie,e.fetch??globalThis.fetch);}async getPortfolio({address:e$1,network:r}){try{let n=e(this,ye,rt).call(this,`/account/${r}/${e$1}/portfolio`),o=await L([n],tt,b(this,ie));return {address:e$1,portfolio:o}}catch(n){console.error("getPortfolio() failed:",n);let o=n instanceof Error?n.message:"unknown error";return {address:e$1,error:`getPortfolio() failed: ${o}`}}}};ae=new WeakMap,ie=new WeakMap,ye=new WeakSet,rt=function(e){return `${b(this,ae)}${e}`};var W=t=>{switch(t.caipId){case Ke:return "mainnet";case je:return "devnet";case He:return "testnet";default:throw new Error("Unrecognized CAIP-2 id: "+t.caipId)}};var st=async({addresses:t,proxyApiUrl:e,currency:r,network:n,tokenService:o,fetch:s})=>{let i=new J({proxyApiUrl:e,fetch:s}),c=n.pricingProviders?.coingecko.nativeTokenId??"",a=n.pricingProviders?.coingecko.assetPlatformId??"",m=r.toLowerCase(),p=W(n),l=await Promise.all(t.map(g=>i.getPortfolio({address:g,network:p}))),d=new Set(l.flatMap(g=>"portfolio"in g?g.portfolio.tokens.map(({mint:T})=>T):[])),u=await(a?o.getPricesByAddresses(Array.from(d),a,m):Promise.resolve(void 0)),y=await o.getWatchlistDataForToken({tokenDetails:{symbol:n.networkToken.symbol,isNative:!0,caip2Id:n.caipId??""},currency:m});return l.reduce((g,T)=>{if("error"in T)return {...g,[T.address]:{error:T.error}};let k=new TokenUnit(T.portfolio.nativeBalance.lamports,9,"SOL"),h=y.priceInCurrency!==void 0?k.mul(y.priceInCurrency):void 0,x={type:TokenType.NATIVE,name:n.networkToken.name,symbol:n.networkToken.symbol,decimals:n.networkToken.decimals,balance:k.toSubUnit(),balanceDisplayValue:k.toString(),balanceInCurrency:h?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:h?.toDisplay({fixedDp:2}),logoUri:n.networkToken.logoUri??"",coingeckoId:c,...y},C=T.portfolio.tokens.reduce((S,{amountRaw:R,symbol:P,decimals:A,mint:b,name:w,logo:B})=>{let F=new TokenUnit(R,A,P),le=nr(b,m,u),me=le.priceInCurrency!==void 0?F.mul(le.priceInCurrency):void 0,H={type:TokenType.SPL,address:b,name:w,symbol:P,decimals:A,balance:F.toSubUnit(),balanceDisplayValue:F.toString(),balanceInCurrency:me?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:me?.toDisplay({fixedDp:2}),logoUri:B??void 0,reputation:null,...le};return {...S,[b]:H}},{});return {...g,[T.address]:{[n.networkToken.symbol]:x,...C}}},{})},nr=(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 _e=t=>({mint:t.mint,owner:t.owner,amount:BigInt(t.uiTokenAmount.amount),decimals:t.uiTokenAmount.decimals}),at=(t,e,r,n)=>{let o=e!==-1?t[e]:r.preTokenBalances.find(a=>!t.includes(a.owner))?.owner||r.postTokenBalances.find(a=>!t.includes(a.owner))?.owner,s=r.preTokenBalances.reduce((a,{owner:m,mint:p,amount:l})=>({...a,[`${m}-${p}`]:l}),{}),i=r.postTokenBalances.reduce((a,{owner:m,mint:p,amount:l,decimals:d})=>{let u=`${m}-${p}`,y=s[u]??0n,g=l-y;if(g===0n)return a;let T=g>0n&&m===o,k=g<0n&&m===o;if(T){let h=Object.keys(s).find(S=>{let[R,P]=S.split("-");if(P!==p||R===o)return !1;let A=s[S],b=r.postTokenBalances.find(({owner:B,mint:F})=>B===R&&F===p);return !b||b.amount<A});if(!h)return a;let x=n.tokens?.filter(S=>"contractType"in S).find(S=>S.address===p)??{contractType: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 TokenUnit(g,d,"").toDisplay()};return [...a,C]}else if(k){let h=r.postTokenBalances.find(({owner:S,mint:R})=>R===p&&S!==o&&(s[`${S}-${p}`]??0n)<(r.postTokenBalances.find(P=>P.owner===S&&P.mint===p)?.amount??0n));if(!h)return a;let x=n.tokens?.filter(S=>"contractType"in S).find(S=>S.address===p)??{contractType:TokenType.SPL,decimals:d,address:p,symbol:"Unknown",name:"Unknown"},C={...x,type:x.contractType,from:{...x,address:o},to:{...x,address:h.owner},amount:new TokenUnit(-g,d,"").toDisplay()};return [...a,C]}return a},[]),c=or(t,e,r,n,i,o);return c&&i.push(c),i},or=(t,e,{paidFee:r,preBalances:n,postBalances:o},s,i=[],c)=>{if(e===-1){if(i.length>0&&c&&i.some(P=>P.to?.address===c)){let P=t.findIndex(A=>A===c);if(P!==-1){let A=n[P],w=o[P]-A;if(w<=0){let B=Math.abs(w)+r;if(B>r){let F=new TokenUnit(B,s.networkToken.decimals,""),me=o.map((H,re)=>H-n[re]).reduce((H,re,Ue)=>Ue!==P&&re>H.amount&&re>0?{index:Ue,amount:re}:H,{index:0,amount:0});return {amount:F.toDisplay(),from:{address:c},to:{address:t[me.index]},name:s.networkToken.name,symbol:s.networkToken.symbol,type:TokenType.NATIVE}}}}}return null}let a=t[e],m=n[e],l=o[e]-m,d=o.map((R,P)=>R-n[P]),u=i.length>0,y=l!==0?l+r:0,g=y>0,T=0,k=!1;if(u&&e===0&&c){let R=i.some(A=>A.to?.address===c),P=i.some(A=>A.from?.address===c);R&&!P&&(g=!1,k=!0,T=o.map((w,B)=>w-n[B]).reduce((w,B,F)=>F!==e&&B>w.amount&&B>0?{index:F,amount:B}:w,{index:0,amount:0}).index);}if(u&&l<0){let R=d.reduce((P,A,b)=>b!==e&&A>P.amount?{index:b,amount:A}:P,{index:0,amount:0});R.amount>r*2&&!k&&(y=R.amount,g=!0,T=R.index);}else u&&l<=0&&i.some(P=>P.to?.address===a)&&(y=Math.abs(l)+r,g=!1,T=d.reduce((A,b,w)=>w!==e&&b>A.amount&&b>0?{index:w,amount:b}:A,{index:0,amount:0}).index);if(!y)return null;let h=new TokenUnit(Math.abs(y),s.networkToken.decimals,"");if(!u){let R=d.reduce(({index:P,change:A},b,w)=>b>A?{index:w,change:b}:{index:P,change:A},{index:0,change:d[0]});T=g?0:R.index;}let x=t[T],C=g?x||a:c||a,S=g?c||a:x||c||a;return {amount:h.toDisplay(),from:{address:C},to:{address:S},name:s.networkToken.name,symbol:s.networkToken.symbol,type:TokenType.NATIVE}};var ce=t=>t.status==="fulfilled";function it(t){return e=>!!e[t]}var pt=async({network:t,address:e,proxyApiUrl:r})=>{let n=O({isTestnet:!!t.isTestnet,proxyApiUrl:r}),s=(await n.getSignaturesForAddress(address(e),{limit:25}).send()).map(a=>a.signature),i=s;try{let a=new J({proxyApiUrl:r}),m=W(t),p=await a.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),y=[...l,...d].map(async k=>{try{return (await n.getSignaturesForAddress(address(k),{limit:25}).send()).map(x=>x.signature)}catch(h){return console.error("Failed to get signatures for ATA:",k,h),[]}}),T=(await Promise.allSettled(y)).filter(ce).map(k=>k.value).flat();i=Array.from(new Set([...s,...T]));}}catch(a){console.error("ATA discovery failed with error:",a);}return (await Promise.allSettled(i.map(async a=>({txHash:a.toString(),tx:await n.getTransaction(a,{encoding:"json",maxSupportedTransactionVersion:0}).send()})))).filter(ce).map(a=>a.value).filter(it("tx"))};var lt=(t,e)=>{let r=e?new URL(e):null;return r&&(r.pathname=`/tx/${t}`),r?.toString()??""};async function mt({network:t,address:e,proxyApiUrl:r}){return t.caipId?{transactions:(await pt({network:t,address:e,proxyApiUrl:r})).map(({txHash:s,tx:i})=>{if(!i.meta)return null;let{meta:c,transaction:{message:a}}=i,m=a.accountKeys.map(g=>g.toString()),p=m.indexOf(e),l=p!==-1;!l&&c.preTokenBalances&&(c.preTokenBalances.some(T=>T.owner===e)||(c.postTokenBalances??[]).some(T=>T.owner===e))&&(l=!0,p=-1);let d=p!==-1&&p<a.header.numRequiredSignatures,u=at(m,p,{paidFee:d?Number(c.fee):0,preBalances:c.preBalances.map(Number),postBalances:c.postBalances.map(Number),preTokenBalances:(c.preTokenBalances??[]).map(_e),postTokenBalances:(c.postTokenBalances??[]).map(_e)},t),y=ar(u,e);return {hash:s,txType:y,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:lt(s,t.explorerUrl)}}).filter(s=>s!==null)}:Promise.reject({error:rpcErrors.invalidParams("Network must have a CAIP-2 id")})}var ar=(t,e)=>{if(t.length===0)return TransactionType.UNKNOWN;let r=t.filter(s=>s.from?.address===e||s.to?.address===e);if(r.length===0)return TransactionType.UNKNOWN;let n=r.some(s=>s.from?.address===e),o=r.some(s=>s.to?.address===e);return n&&o?TransactionType.SWAP:n?TransactionType.SEND:o?TransactionType.RECEIVE:TransactionType.UNKNOWN};var dt=t=>{if(t?.type==="InstructionError")switch(t.code){case"ResultWithNegativeLamports":return {type:AlertType.WARNING,details:{title:"This transaction will likely be reverted",description:"Your account does not have enough SOL to perform the operation"}}}return {type:AlertType.WARNING,details:{title:"Transaction simulation has failed",description:"It is possible that this transaction will fail. Please proceed with caution."}}},Ce={[AlertType.WARNING]:{type:AlertType.WARNING,details:{title:"Suspicious transaction",description:"Use caution, this transaction might be malicious."}},[AlertType.DANGER]:{type:AlertType.DANGER,details:{title:"Scam transaction",description:"This transaction is malicious, do not proceed.",body:["This transaction is malicious","do not proceed"],actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};function ut(t){return t.ins.length===0&&t.outs.length===0}function ft(t){return t!=null}var gt=(t,e,r,n)=>{if(!isInstructionForProgram(t,SYSTEM_PROGRAM_ADDRESS)||!isInstructionWithAccounts(t)||!isInstructionWithData(t))return null;try{if(identifySystemInstruction(t)!==SystemInstruction.TransferSol)return null;let{accounts:s,data:i}=parseTransferSolInstruction({...t,data:Uint8Array.from(t.data)}),a=s.source.address===r===!0?"outs":"ins";return e[a].push({token:{...n,address:""},items:[{displayValue:new TokenUnit(i.amount,n.decimals,"").toString(),usdPrice:void 0}]}),{title:"Transfer SOL",items:[_("From",s.source.address),_("To",s.destination.address)]}}catch{return null}};var kr=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}},yt=async(t,e,r,n,o)=>{if(!o?.length||!isInstructionWithAccounts(e)||!isInstructionWithData(e))return null;try{let s=identifyTokenInstruction(e);if(s!==TokenInstruction.Transfer&&s!==TokenInstruction.TransferChecked)return null;let i=s===TokenInstruction.TransferChecked?parseTransferCheckedInstruction:parseTransferInstruction,{accounts:c,data:a}=i({...e,data:Uint8Array.from(e.data)}),m=await kr(t,c.source.address);if(!m)return null;let p=o.find(y=>y.address.toLowerCase()===m.toLowerCase());if(!p)return null;let d=(c.source.address===n||c.authority.address===n)===!0?"outs":"ins",u="decimals"in a?a.decimals:p.decimals;return r[d].push({token:p,items:[{displayValue:new TokenUnit(a.amount,u,"").toString(),usdPrice:void 0}]}),{title:`Transfer ${p.symbol}`,items:[_("From",c.source.address),_("To",c.destination.address)]}}catch{return null}};var Tt=async(t,e,r,n)=>{let o=await deserializeTransactionMessage(t,n),s={ins:[],outs:[]},i=await Promise.allSettled(o.instructions.map(async c=>gt(c,s,e,r.networkToken)??await yt(n,c,s,e,r.tokens)??null)).then(c=>c.filter(ce).map(a=>a.value).filter(ft));return {balanceChange:s,details:i}};var Pt=(t,e,r)=>{let n=e.account_summary.account_assets_diff??[],o={},s={},i=Object.keys(e.assets_diff??{}).filter(c=>c!==t);return n.forEach(({asset:c,in:a,out:m})=>{let p=Rr(c,r);if(!p)return;let l="address"in p?p.address:p.symbol;a&&(o[l]||(o[l]={token:p,items:[]}),o[l].items.push({displayValue:String(a.value),usdPrice:typeof a.usd_price=="number"?String(a.usd_price):void 0})),m&&(s[l]||(s[l]={token:p,items:[]}),s[l].items.push({displayValue:String(m.value),usdPrice:typeof m.usd_price=="number"?String(m.usd_price):void 0}));}),{balanceChange:{ins:Object.values(o),outs:Object.values(s)},otherAffectedAddresses:i}},xr=t=>({name:t.type,symbol:t.type,decimals:t.decimals,description:"",logoUri:t.logo??void 0}),vr=(t,e)=>({type:TokenType.SPL,address:t.address,caip2Id:e.caipId??"",contractType:TokenType.SPL,decimals:t.decimals,name:t.name,symbol:t.symbol,logoUri:t.logo||void 0}),Rr=(t,e)=>t.type==="TOKEN"?vr(t,e):t.type==="SOL"||t.type==="ETH"?xr(t):null;var St=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:base64.encode(base58.decode(t.account))})}catch(n){return console.error("solana.message.scan() error",n),null}};var Pe=async({simulationParams:t,network:e,provider:r})=>{let{params:n}=t,o=await St(t),{simulation:s,validation:i}=o?.result??{},c={title:"Transaction Details",items:[se("Raw Data",t.params.transactionBase64)]},a=[c],m=!1,p,l;if(!i||i.result_type==="Warning"?l=Ce[AlertType.WARNING]:i.result_type==="Malicious"?l=Ce[AlertType.DANGER]:o?.error_details&&(l=dt(o.error_details)),s){let{balanceChange:d,otherAffectedAddresses:u}=Pt(n.account,s,e);if(p=d,u.length>0){let y=s.account_summary.account_assets_diff,g=y?.filter(h=>h.out&&h.out.raw_value>0)??[],T=y?.filter(h=>h.in&&h.in.raw_value>0)??[];g.length>0&&T.length>0?(c.items.push(_("Account",n.account)),c.items.push(we("Interacting with",u))):(c.items.push(_(u.length===1?"From":"Account",n.account)),c.items.push(u.length===1?_("To",u[0]):we("Interacting with",u)));}else c.items.push(_("Account",n.account));m=!0;}else {let{balanceChange:d,details:u}=await Tt(n.transactionBase64,n.account,e,r);p=d,a.push(...u);}return {isSimulationSuccessful:m,details:a,alert:l,balanceChange:p}};var wr="https://explorer.solana.com";function Se(t,e,r="tx"){try{let n=t.explorerUrl?new URL(t.explorerUrl):new URL(wr);return n.pathname+=`${r}/${e}`,n.toString()}catch{return `${t.explorerUrl}/${r}/${e}`}}var Be=400,Dr=15,At=async({provider:t,txHash:e,approvalController:r,request:n,network:o,commitment:s="confirmed",maxRetries:i=Dr})=>{let c=0,a=null,m=Se(o,e,"tx");for(;c<i;)try{let p=await t.getSignatureStatuses([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!==a&&(a=l,l==="processed"&&r.onTransactionPending({txHash:e,request:n,explorerLink:m}),s==="processed"&&l==="processed"||s==="confirmed"&&["confirmed","finalized"].includes(l)||s==="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 a==="confirmed"||a==="finalized"?(r.onTransactionConfirmed({txHash:e,request:n,explorerLink:m}),!0):(r.onTransactionReverted({txHash:e,request:n}),!1)};var _r=z$1.object({account:z$1.string(),serializedTx:z$1.string().base64(),sendOptions:z$1.object({preflightCommitment:z$1.enum(["processed","confirmed","finalized"]).optional(),maxRetries:z$1.bigint().optional(),minContextSlot:z$1.bigint().optional(),skipPreflight:z$1.boolean().optional()}).optional()}),Cr=z$1.tuple([_r]),xt=t=>Cr.safeParse(t);var Rt=async({request:t,network:e,approvalController:r,proxyApiUrl:n,blockaid:o})=>{let{params:s}=t,{data:i,success:c,error:a}=xt(s);if(!c)return console.error("invalid params",a),{error:rpcErrors.invalidParams(z("Transaction params are invalid",a))};let[{account:m,serializedTx:p,sendOptions:l}]=i,d=O({isTestnet:!!e.isTestnet,proxyApiUrl:n}),{details:u,isSimulationSuccessful:y,alert:g,balanceChange:T}=await Pe({simulationParams:{dAppUrl:t.dappInfo.url,params:{account:m,chain:W(e),transactionBase64:p},blockaid:o},network:e,provider:d}),k={title:"Do you approve this transaction?",network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:u,alert:g,balanceChange:T,networkFeeSelector:!1,isSimulationSuccessful:y},h={type: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{C=await Br(d,x,l);let S=Se(e,C);return await r.onTransactionPending({txHash:C,request:t,explorerLink:S}),At({provider:d,txHash:C,approvalController:r,request:t,network:e,commitment:l?.preflightCommitment}),{result:C}}catch(S){return console.error(S),{error:rpcErrors.internal(z("Transaction failed",S))}}},Br=async(t,e,r)=>"txHash"in e?e.txHash:await t.sendTransaction(e.signedData,{...r,encoding:"base64"}).send();var Lr=z$1.object({account:z$1.string(),serializedTx:z$1.string().base64()}),Ur=z$1.tuple([Lr]),bt=t=>Ur.safeParse(t);var wt=async({request:t,network:e,approvalController:r,proxyApiUrl:n,blockaid:o})=>{let{params:s}=t,{data:i,success:c,error:a}=bt(s);if(!c)return console.error("invalid params",a),{error:rpcErrors.invalidParams(z("Transaction params are invalid",a))};let[{account:m,serializedTx:p}]=i,l=O({isTestnet:!!e.isTestnet,proxyApiUrl:n}),{details:d,isSimulationSuccessful:u,alert:y,balanceChange:g}=await Pe({simulationParams:{dAppUrl:t.dappInfo.url,params:{account:m,chain:W(e),transactionBase64:p},blockaid:o},network:e,provider:l}),T={title:"Do you approve this transaction?",network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:d,alert:y,balanceChange:g&&ut(g)?void 0:g,networkFeeSelector:!1,isSimulationSuccessful:u},k={type:RpcMethod.SOLANA_SIGN_TRANSACTION,account:m,data:p},h=await r.requestApproval({request:t,displayData:T,signingData:k});return "error"in h?{error:h.error}:"signedData"in h?{result:h.signedData}:{error:rpcErrors.invalidRequest("No signed data returned")}};var Nt=t=>{try{let e=base64.decode(t);return getCompiledTransactionMessageDecoder().decode(e),!0}catch{return !1}};var Vr=z$1.object({account:z$1.string(),serializedMessage:z$1.string().base64()}).refine(({serializedMessage:t})=>!Nt(t),{message:"Cannot use signMessage() calls for signing transactions"}),Gr=z$1.tuple([Vr]),Dt=t=>Gr.safeParse(t);var Ct=async({request:t,network:e,approvalController:r})=>{let{params:n}=t,{data:o,success:s,error:i}=Dt(n);if(!s)return console.error("invalid params",i),{error:rpcErrors.invalidParams(z("Message signing params are invalid",i))};let[{account:c,serializedMessage:a}]=o,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:[_("Account",c),Ie("Message",m.decode(base64.decode(a))),se("Raw Message (Base-64)",a)]}],networkFeeSelector:!1},l={type:RpcMethod.SOLANA_SIGN_MESSAGE,account:c,data:a},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.invalidRequest("No signed data returned")}};var E,G,pe,ee,te,Bt=class{constructor({approvalController:e,environment:r,appInfo:n,runtime:o}){c(this,E,void 0);c(this,G,void 0);c(this,pe,void 0);c(this,ee,void 0);c(this,te,void 0);let{proxyApiUrl:s}=ze(r);d(this,pe,n),d(this,E,s),d(this,G,e),d(this,te,o),b(this,E),b(this,G),b(this,pe),d(this,ee,new qr({baseURL:s+"/proxy/blockaid/",apiKey:Je,httpAgent:o?.httpAgent,fetch:o?.fetch}));}async getProvider(e){return O({isTestnet:!!e.isTestnet,proxyApiUrl:b(this,E)})}getAddress(){return Promise.resolve({})}buildDerivationPath(e){return fe(e)}deriveAddress(e){return qe({...e,approvalController:b(this,G)})}getBalances(e){let r=new oe({storage:e.storage,proxyApiUrl:b(this,E),fetch:b(this,te)?.fetch});return st({...e,tokenService:r,proxyApiUrl:b(this,E),fetch:b(this,te)?.fetch})}getManifest(){let e=parseManifest(Ge);return e.success?e.data:void 0}getNetworkFee(e){return Ze(e,b(this,E))}getTransactionHistory(e){return mt({network:e.network,address:e.address,proxyApiUrl:b(this,E)})}getTokens(e){return e.caipId?et({caip2Id:e.caipId,proxyApiUrl:b(this,E)}):Promise.reject({error:rpcErrors.invalidParams("Network must have a CAIP-2 id")})}async onRpcRequest(e,r){switch(e.method){case RpcMethod.SOLANA_SIGN_TRANSACTION:return wt({approvalController:b(this,G),proxyApiUrl:b(this,E),network:r,request:e,blockaid:b(this,ee)});case RpcMethod.SOLANA_SIGN_AND_SEND_TRANSACTION:return Rt({approvalController:b(this,G),proxyApiUrl:b(this,E),network:r,request:e,blockaid:b(this,ee)});case RpcMethod.SOLANA_SIGN_MESSAGE:return Ct({approvalController:b(this,G),network:r,request:e})}return {error:rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}};E=new WeakMap,G=new WeakMap,pe=new WeakMap,ee=new WeakMap,te=new WeakMap;
14
+ function qe(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}a(qe,"charsum");function Re(t){let e,r=0;for(e=0;e<t.length;e++){let n=qe(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}a(Re,"arrayHash");var be=a(async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=K.exponential()})=>{let s=0,a=0,c;for(;a<r;){a>0&&await $t(s);try{let i=await t(a);if(e(i))return i}catch(i){c=i;}s=n(a),a++;}let p=c?`Max retry exceeded. ${c}`:"Max retry exceeded.";throw new Error(p)},"retry"),Ie=class Ie{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 s=n-e+1,a=e*r,c=2*r*(Math.pow(2,s)-1);return a+c}}};a(Ie,"RetryBackoffPolicy");var K=Ie;function $t(t){return new Promise(e=>setTimeout(e,t))}a($t,"delay");var we=a(t=>be({operation:e=>t(e>0),maxRetries:2,backoffPolicy:K.constant(1),isSuccess:e=>e?.status?.error_code!==429}),"coingeckoRetry");async function U(t,e,r=fetch){let n=await r(...t);if(!n.ok)throw new Error(`Request failed with status ${n.status}`);let s=await n.json();return e.parse(s)}a(U,"fetchAndVerify");var Ne=class Ne{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"}}],RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(e){let{id:r,...n}=e,s=new URLSearchParams(n);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${s}`,{method:"POST",headers:{"Content-Type":"application/json"}}],RawSimplePriceResponseSchema,this.fetchFn)}};a(Ne,"CoingeckoProxyClient");var oe=Ne;var zt=z$1.array(z$1.object({internalId:z$1.string(),id:z$1.string(),symbol:z$1.string(),name:z$1.string(),image:z$1.string().optional().nullable(),current_price:z$1.number().optional().nullable(),price_change_percentage_24h:z$1.number().optional().nullable(),market_cap:z$1.number().optional().nullable(),total_volume:z$1.number().optional().nullable(),platforms:z$1.record(z$1.string(),z$1.string())})),De=class De{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"}}],zt)}};a(De,"WatchlistProxyClient");var ue=De;var z,j,H,J,Ce=class Ce{constructor({storage:e$1,proxyApiUrl:r,fetch:n}){d(this,z,void 0);d(this,j,void 0);d(this,H,void 0);d(this,J,void 0);b(this,"transformSimplePriceResponse",a((e,r=[VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(s=>{let a=e[s];n[s]={},r.forEach(c=>{n[s]={[c]:{price:a?.[c],change24:a?.[`${c}_24h_change`],vol24:a?.[`${c}_24h_vol`],marketCap:a?.[`${c}_market_cap`]}};});}),n},"transformSimplePriceResponse"));e(this,z,e$1),e(this,j,r),e(this,H,n??globalThis.fetch),e(this,J,getBasicCoingeckoHttp(void 0,c(this,H)));}async getWatchlistDataForToken({tokenDetails:e,currency:r=VsCurrencyType.USD}){let n=(await new ue(c(this,j)).watchlistToken({tokens:e.symbol,currency:r})).filter(a=>e.isNative?a.internalId===`NATIVE-${e.symbol.toLowerCase()}`:a.platforms[e.caip2Id]===e.address),[s]=n;return s?{priceInCurrency:s.current_price??0,change24:s.price_change_percentage_24h??0,marketCap:s.market_cap??0,vol24:s.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:e=[],currencies:r=[VsCurrencyType.USD]}){let n,a=`getSimplePrice-${e?`${Re(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=c(this,z)?.get?.(a),n)return n;try{n=await we(c=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:c}));}catch{n=void 0;}return c(this,z)?.set?.(a,n),n}async getPricesByAddresses(e,r,n=VsCurrencyType.USD){let s,c$1=`getPricesWithMarketDataByAddresses-${`${Re(e)}-${r}-${n}`}`;if(s=c(this,z)?.get?.(c$1),s)return s;try{s=await we(p=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:p}));}catch(p){console.error(p),s=void 0;}return c(this,z)?.set?.(c$1,s),s}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=VsCurrencyType.USD,useCoingeckoProxy:s=!1}){if(s){let a=await new oe(c(this,j),c(this,H)).simplePriceByContractAddresses({id:e,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(a,[n])}return simpleTokenPrice(c(this,J),{assetPlatformId:e,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:r=[VsCurrencyType.USD],marketCap:n=!1,vol24:s=!1,change24:a=!1,lastUpdated:c$1=!1,useCoingeckoProxy:p=!1,shouldThrow:i=!0}){if(p){let d=await new oe(c(this,j),c(this,H)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:s,include_24hr_change:a,include_last_updated_at:c$1});return this.transformSimplePriceResponse(d,r)}return simplePrice(c(this,J),{coinIds:e,currencies:r,marketCap:n,vol24:s,change24:a,lastUpdated:c$1,shouldThrow:i})}};z=new WeakMap,j=new WeakMap,H=new WeakMap,J=new WeakMap,a(Ce,"TokenService");var se=Ce;object({date:string(),usd:record(number())});var _e=a((t,e,r="horizontal")=>({label:t,alignment:r,type:DetailItemType.TEXT,value:e}),"textItem");var _=a((t,e)=>({label:t,type:DetailItemType.ADDRESS,value:e}),"addressItem"),Ee=a((t,e)=>({label:t,type:DetailItemType.ADDRESS_LIST,value:e}),"addressListItem");var ae=a((t,e)=>({label:t,type:DetailItemType.DATA,value:e}),"dataItem");var je=process.env.GLACIER_API_KEY;var Be=a(()=>je,"getGlacierApiKey");({rltoken:Be()});var W=a((t,e)=>({message:`${t}${e instanceof Error?`: ${e.message}`:""}`,data:{cause:e}}),"rpcErrorOpts");var He={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 Zt={proxyApiUrl:"https://proxy-api.avax.network"},Qt={proxyApiUrl:"https://proxy-api-dev.avax.network"},Xe=a(t=>{switch(t){case Environment.PRODUCTION:return Zt;case Environment.DEV:return Qt}},"getEnv");var Je=a(t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string","hasDerivationDetails");var ge=a(({accountIndex:t})=>{if(t<0)throw rpcErrors.invalidParams("Account index must be a non-negative integer");return {[NetworkVMType.SVM]:`m/44'/501'/${t}'/0'`}},"buildDerivationPath");var Ze=a(async t=>{let{approvalController:e,secretId:r}=t,n=Je(t)?ge(t).SVM:void 0,s=await e.requestPublicKey({curve:"ed25519",secretId:r,derivationPath:n});return {[NetworkVMType.SVM]:base58.encode(hex.decode(s))}},"deriveAddress");var Qe="solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",et="solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",tt="solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z",rt="/proxy/nownodes/sol",nt="https://api.devnet.solana.com";var ot="DUMMY_API_KEY";var M=a(({isTestnet:t,proxyApiUrl:e})=>getSolanaProvider({isTestnet:t,rpcUrl:t?nt:e+rt}),"getProvider");var Le=1e6,V={high:150*Le,medium:75*Le,low:2*Le},ar=a(t=>(t.length===0?[V.low,V.low]:t.length===1?[t[0],V.low]:t).slice().sort((r,n)=>r-n),"ensureEnoughData");async function st(t,e){let s=await(await M({isTestnet:!!t.isTestnet,proxyApiUrl:e}).getRecentPrioritizationFees()).send();if(s.length===0||s.every(T=>T.prioritizationFee===0n))return {high:{maxFeePerGas:BigInt(V.high),maxPriorityFeePerGas:BigInt(V.high)},medium:{maxFeePerGas:BigInt(V.medium),maxPriorityFeePerGas:BigInt(V.medium)},low:{maxFeePerGas:BigInt(V.low),maxPriorityFeePerGas:BigInt(V.low)},baseFee:BigInt(V.low),displayDecimals:9,isFixedFee:!1};let c=ar(s.map(T=>Number(T.prioritizationFee))),p=c.at(0),i=c.at(-1),d=Math.floor(c.length/2),l=c.length%2===1?c[d]:(c[d-1]+c[d])/2,m=BigInt(Math.ceil(i*1.05)),u=BigInt(Math.ceil(l*1.05)),f=BigInt(Math.ceil(p*1.05));return {high:{maxFeePerGas:m,maxPriorityFeePerGas:m},medium:{maxFeePerGas:u,maxPriorityFeePerGas:u},low:{maxFeePerGas:f,maxPriorityFeePerGas:f},baseFee:f,displayDecimals:9,isFixedFee:!1}}a(st,"getNetworkFee");var cr=z$1.object({address:z$1.string(),name:z$1.string(),symbol:z$1.string(),contractType:z$1.literal(TokenType.SPL),caip2Id:z$1.string().startsWith("solana:"),decimals:z$1.number(),chainId:z$1.number().optional(),logoUri:z$1.string().optional(),color:z$1.string().optional()}),at=z$1.array(cr);async function it({caip2Id:t,proxyApiUrl:e}){try{return (await U([`${e}/solana-tokens?caip2Id=${t}`],at)).map(n=>({...n,type:n.contractType}))}catch(r){throw console.error("getTokens() failed for",t,r),rpcErrors.internal(`Failed to fetch tokens for caip2Id "${t}"`)}}a(it,"getTokens");var ct=z$1.object({nativeBalance:z$1.object({lamports:z$1.string(),solana:z$1.string()}),nfts:z$1.array(z$1.object({associatedTokenAddress:z$1.string(),mint:z$1.string(),name:z$1.string(),symbol:z$1.string()})),tokens:z$1.array(z$1.object({associatedTokenAddress:z$1.string(),mint:z$1.string(),amountRaw:z$1.string(),amount:z$1.string(),decimals:z$1.number(),name:z$1.string(),symbol:z$1.string(),logo:z$1.string().optional().nullable()}))});var ie,ce,Te,pt,Ue=class Ue{constructor(e$1){d(this,Te);d(this,ie,void 0);d(this,ce,void 0);e(this,ie,`${e$1.proxyApiUrl}/proxy/moralis`),e(this,ce,e$1.fetch??globalThis.fetch);}async getPortfolio({address:e,network:r}){try{let n=f(this,Te,pt).call(this,`/account/${r}/${e}/portfolio`),s=await U([n],ct,c(this,ce));return {address:e,portfolio:s}}catch(n){console.error("getPortfolio() failed:",n);let s=n instanceof Error?n.message:"unknown error";return {address:e,error:`getPortfolio() failed: ${s}`}}}};ie=new WeakMap,ce=new WeakMap,Te=new WeakSet,pt=a(function(e){return `${c(this,ie)}${e}`},"#buildUrl"),a(Ue,"MoralisService");var Z=Ue;var q=a(t=>{switch(t.caipId){case Qe:return "mainnet";case et:return "devnet";case tt:return "testnet";default:throw new Error("Unrecognized CAIP-2 id: "+t.caipId)}},"getNetworkName");var dt=a(async({addresses:t,proxyApiUrl:e,currency:r,network:n,tokenService:s,fetch:a})=>{let c=new Z({proxyApiUrl:e,fetch:a}),p=n.pricingProviders?.coingecko.nativeTokenId??"",i=n.pricingProviders?.coingecko.assetPlatformId??"",d=r.toLowerCase(),l=q(n),m=await Promise.all(t.map(y=>c.getPortfolio({address:y,network:l}))),u=new Set(m.flatMap(y=>"portfolio"in y?y.portfolio.tokens.map(({mint:h})=>h):[])),f=await(i?s.getPricesByAddresses(Array.from(u),i,d):Promise.resolve(void 0)),T=await s.getWatchlistDataForToken({tokenDetails:{symbol:n.networkToken.symbol,isNative:!0,caip2Id:n.caipId??""},currency:d});return m.reduce((y,h)=>{if("error"in h)return {...y,[h.address]:{error:h.error}};let A=new TokenUnit(h.portfolio.nativeBalance.lamports,9,"SOL"),P=T.priceInCurrency!==void 0?A.mul(T.priceInCurrency):void 0,v={type:TokenType.NATIVE,name:n.networkToken.name,symbol:n.networkToken.symbol,decimals:n.networkToken.decimals,balance:A.toSubUnit(),balanceDisplayValue:A.toString(),balanceInCurrency:P?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:P?.toDisplay({fixedDp:2}),logoUri:n.networkToken.logoUri??"",coingeckoId:p,...T},E=h.portfolio.tokens.reduce((k,{amountRaw:b,symbol:S,decimals:x,mint:I,name:N,logo:L})=>{let O=new TokenUnit(b,x,S),me=lr(I,d,f),de=me.priceInCurrency!==void 0?O.mul(me.priceInCurrency):void 0,Y={type:TokenType.SPL,address:I,name:N,symbol:S,decimals:x,balance:O.toSubUnit(),balanceDisplayValue:O.toString(),balanceInCurrency:de?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:de?.toDisplay({fixedDp:2}),logoUri:L??void 0,reputation:null,...me};return {...k,[I]:Y}},{});return {...y,[h.address]:{[n.networkToken.symbol]:v,...E}}},{})},"getBalances"),lr=a((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}),"getMarketData");var Fe=a(t=>({mint:t.mint,owner:t.owner,amount:BigInt(t.uiTokenAmount.amount),decimals:t.uiTokenAmount.decimals}),"simplifyTokenBalance"),ut=a((t,e,r,n)=>{let s=e!==-1?t[e]:r.preTokenBalances.find(i=>!t.includes(i.owner))?.owner||r.postTokenBalances.find(i=>!t.includes(i.owner))?.owner,a=r.preTokenBalances.reduce((i,{owner:d,mint:l,amount:m})=>({...i,[`${d}-${l}`]:m}),{}),c=r.postTokenBalances.reduce((i,{owner:d,mint:l,amount:m,decimals:u})=>{let f=`${d}-${l}`,T=a[f]??0n,y=m-T;if(y===0n)return i;let h=y>0n&&d===s,A=y<0n&&d===s;if(h){let P=Object.keys(a).find(k=>{let[b,S]=k.split("-");if(S!==l||b===s)return !1;let x=a[k],I=r.postTokenBalances.find(({owner:L,mint:O})=>L===b&&O===l);return !I||I.amount<x});if(!P)return i;let v=n.tokens?.filter(k=>"contractType"in k).find(k=>k.address===l)??{contractType:TokenType.SPL,decimals:u,address:l,symbol:"Unknown",name:"Unknown"},E={...v,type:v.contractType,from:{...v,address:P.split("-")[0]},to:{...v,address:d},amount:new TokenUnit(y,u,"").toDisplay()};return [...i,E]}else if(A){let P=r.postTokenBalances.find(({owner:k,mint:b})=>b===l&&k!==s&&(a[`${k}-${l}`]??0n)<(r.postTokenBalances.find(S=>S.owner===k&&S.mint===l)?.amount??0n));if(!P)return i;let v=n.tokens?.filter(k=>"contractType"in k).find(k=>k.address===l)??{contractType:TokenType.SPL,decimals:u,address:l,symbol:"Unknown",name:"Unknown"},E={...v,type:v.contractType,from:{...v,address:s},to:{...v,address:P.owner},amount:new TokenUnit(-y,u,"").toDisplay()};return [...i,E]}return i},[]),p=mr(t,e,r,n,c,s);return p&&c.push(p),c},"extractTokenTranfers"),mr=a((t,e,{paidFee:r,preBalances:n,postBalances:s},a,c=[],p)=>{if(e===-1){if(c.length>0&&p&&c.some(S=>S.to?.address===p)){let S=t.findIndex(x=>x===p);if(S!==-1){let x=n[S],N=s[S]-x;if(N<=0){let L=Math.abs(N)+r;if(L>r){let O=new TokenUnit(L,a.networkToken.decimals,""),de=s.map((Y,ne)=>Y-n[ne]).reduce((Y,ne,ze)=>ze!==S&&ne>Y.amount&&ne>0?{index:ze,amount:ne}:Y,{index:0,amount:0});return {amount:O.toDisplay(),from:{address:p},to:{address:t[de.index]},name:a.networkToken.name,symbol:a.networkToken.symbol,type:TokenType.NATIVE}}}}}return null}let i=t[e],d=n[e],m=s[e]-d,u=s.map((b,S)=>b-n[S]),f=c.length>0,T=m!==0?m+r:0,y=T>0,h=0,A=!1;if(f&&e===0&&p){let b=c.some(x=>x.to?.address===p),S=c.some(x=>x.from?.address===p);b&&!S&&(y=!1,A=!0,h=s.map((N,L)=>N-n[L]).reduce((N,L,O)=>O!==e&&L>N.amount&&L>0?{index:O,amount:L}:N,{index:0,amount:0}).index);}if(f&&m<0){let b=u.reduce((S,x,I)=>I!==e&&x>S.amount?{index:I,amount:x}:S,{index:0,amount:0});b.amount>r*2&&!A&&(T=b.amount,y=!0,h=b.index);}else f&&m<=0&&c.some(S=>S.to?.address===i)&&(T=Math.abs(m)+r,y=!1,h=u.reduce((x,I,N)=>N!==e&&I>x.amount&&I>0?{index:N,amount:I}:x,{index:0,amount:0}).index);if(!T)return null;let P=new TokenUnit(Math.abs(T),a.networkToken.decimals,"");if(!f){let b=u.reduce(({index:S,change:x},I,N)=>I>x?{index:N,change:I}:{index:S,change:x},{index:0,change:u[0]});h=y?0:b.index;}let v=t[h],E=y?v||i:p||i,k=y?p||i:v||p||i;return {amount:P.toDisplay(),from:{address:E},to:{address:k},name:a.networkToken.name,symbol:a.networkToken.symbol,type:TokenType.NATIVE}},"extractNativeTransfer");var pe=a(t=>t.status==="fulfilled","isFulfilled");function ft(t){return e=>!!e[t]}a(ft,"hasPropertyDefined");var yt=a(async({network:t,address:e,proxyApiUrl:r})=>{let n=M({isTestnet:!!t.isTestnet,proxyApiUrl:r}),a=(await n.getSignaturesForAddress(address(e),{limit:25}).send()).map(i=>i.signature),c=a;try{let i=new Z({proxyApiUrl:r}),d=q(t),l=await i.getPortfolio({address:e,network:d});if("portfolio"in l){let m=l.portfolio.tokens.map(A=>A.associatedTokenAddress),u=l.portfolio.nfts.map(A=>A.associatedTokenAddress),T=[...m,...u].map(async A=>{try{return (await n.getSignaturesForAddress(address(A),{limit:25}).send()).map(v=>v.signature)}catch(P){return console.error("Failed to get signatures for ATA:",A,P),[]}}),h=(await Promise.allSettled(T)).filter(pe).map(A=>A.value).flat();c=Array.from(new Set([...a,...h]));}}catch(i){console.error("ATA discovery failed with error:",i);}return (await Promise.allSettled(c.map(async i=>({txHash:i.toString(),tx:await n.getTransaction(i,{encoding:"json",maxSupportedTransactionVersion:0}).send()})))).filter(pe).map(i=>i.value).filter(ft("tx"))},"getWrappedTransactions");var Tt=a((t,e)=>{let r=e?new URL(e):null;return r&&(r.pathname=`/tx/${t}`),r?.toString()??""},"getExplorerLink");async function ht({network:t,address:e,proxyApiUrl:r}){return t.caipId?{transactions:(await yt({network:t,address:e,proxyApiUrl:r})).map(({txHash:a,tx:c})=>{if(!c.meta)return null;let{meta:p,transaction:{message:i}}=c,d=i.accountKeys.map(y=>y.toString()),l=d.indexOf(e),m=l!==-1;!m&&p.preTokenBalances&&(p.preTokenBalances.some(h=>h.owner===e)||(p.postTokenBalances??[]).some(h=>h.owner===e))&&(m=!0,l=-1);let u=l!==-1&&l<i.header.numRequiredSignatures,f=ut(d,l,{paidFee:u?Number(p.fee):0,preBalances:p.preBalances.map(Number),postBalances:p.postBalances.map(Number),preTokenBalances:(p.preTokenBalances??[]).map(Fe),postTokenBalances:(p.postTokenBalances??[]).map(Fe)},t),T=ur(f,e);return {hash:a,txType:T,gasUsed:String(c.meta.computeUnitsConsumed??"0"),tokens:f,from:f[0]?.from?.address??d[0],to:f[0]?.to?.address??(u?"":e),isOutgoing:u,isIncoming:!u,isSender:u,timestamp:Number(c.blockTime)*1e3,isContractCall:!1,gasPrice:String(Number(c.meta.fee)/Number(c.meta.computeUnitsConsumed)),chainId:String(t.chainId),explorerLink:Tt(a,t.explorerUrl)}}).filter(a=>a!==null)}:Promise.reject({error:rpcErrors.invalidParams("Network must have a CAIP-2 id")})}a(ht,"getTransactionHistory");var ur=a((t,e)=>{if(t.length===0)return TransactionType.UNKNOWN;let r=t.filter(a=>a.from?.address===e||a.to?.address===e);if(r.length===0)return TransactionType.UNKNOWN;let n=r.some(a=>a.from?.address===e),s=r.some(a=>a.to?.address===e);return n&&s?TransactionType.SWAP:n?TransactionType.SEND:s?TransactionType.RECEIVE:TransactionType.UNKNOWN},"inferTxType");var Pt=a(t=>{if(t?.type==="InstructionError")switch(t.code){case"ResultWithNegativeLamports":return {type:AlertType.WARNING,details:{title:"This transaction will likely be reverted",description:"Your account does not have enough SOL to perform the operation"}}}return {type:AlertType.WARNING,details:{title:"Transaction simulation has failed",description:"It is possible that this transaction will fail. Please proceed with caution."}}},"getAlertForError"),Oe={[AlertType.WARNING]:{type:AlertType.WARNING,details:{title:"Suspicious transaction",description:"Use caution, this transaction might be malicious."}},[AlertType.DANGER]:{type:AlertType.DANGER,details:{title:"Scam transaction",description:"This transaction is malicious, do not proceed.",body:["This transaction is malicious","do not proceed"],actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};function St(t){return t.ins.length===0&&t.outs.length===0}a(St,"isBalanceChangeEmpty");function kt(t){return t!=null}a(kt,"isNotNullish");var At=a((t,e,r,n)=>{if(!isInstructionForProgram(t,SYSTEM_PROGRAM_ADDRESS)||!isInstructionWithAccounts(t)||!isInstructionWithData(t))return null;try{if(identifySystemInstruction(t)!==SystemInstruction.TransferSol)return null;let{accounts:a,data:c}=parseTransferSolInstruction({...t,data:Uint8Array.from(t.data)}),i=a.source.address===r===!0?"outs":"ins";return e[i].push({token:{...n,address:""},items:[{displayValue:new TokenUnit(c.amount,n.decimals,"").toString(),usdPrice:void 0}]}),{title:"Transfer SOL",items:[_("From",a.source.address),_("To",a.destination.address)]}}catch{return null}},"tryToParseSolTransfer");var wr=a(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}},"getTokenMintFromAccountInfo"),xt=a(async(t,e,r,n,s)=>{if(!s?.length||!isInstructionWithAccounts(e)||!isInstructionWithData(e))return null;try{let a=identifyTokenInstruction(e);if(a!==TokenInstruction.Transfer&&a!==TokenInstruction.TransferChecked)return null;let c=a===TokenInstruction.TransferChecked?parseTransferCheckedInstruction:parseTransferInstruction,{accounts:p,data:i}=c({...e,data:Uint8Array.from(e.data)}),d=await wr(t,p.source.address);if(!d)return null;let l=s.find(T=>T.address.toLowerCase()===d.toLowerCase());if(!l)return null;let u=(p.source.address===n||p.authority.address===n)===!0?"outs":"ins",f="decimals"in i?i.decimals:l.decimals;return r[u].push({token:l,items:[{displayValue:new TokenUnit(i.amount,f,"").toString(),usdPrice:void 0}]}),{title:`Transfer ${l.symbol}`,items:[_("From",p.source.address),_("To",p.destination.address)]}}catch{return null}},"tryToParseSPLTransfer");var vt=a(async(t,e,r,n)=>{let s=await deserializeTransactionMessage(t,n),a={ins:[],outs:[]},c=await Promise.allSettled(s.instructions.map(async p=>At(p,a,e,r.networkToken)??await xt(n,p,a,e,r.tokens)??null)).then(p=>p.filter(pe).map(i=>i.value).filter(kt));return {balanceChange:a,details:c}},"parseTransaction");var bt=a((t,e,r)=>{let n=e.account_summary.account_assets_diff??[],s={},a={},c=Object.keys(e.assets_diff??{}).filter(p=>p!==t);return n.forEach(({asset:p,in:i,out:d})=>{let l=_r(p,r);if(!l)return;let m="address"in l?l.address:l.symbol;i&&(s[m]||(s[m]={token:l,items:[]}),s[m].items.push({displayValue:String(i.value),usdPrice:typeof i.usd_price=="number"?String(i.usd_price):void 0})),d&&(a[m]||(a[m]={token:l,items:[]}),a[m].items.push({displayValue:String(d.value),usdPrice:typeof d.usd_price=="number"?String(d.usd_price):void 0}));}),{balanceChange:{ins:Object.values(s),outs:Object.values(a)},otherAffectedAddresses:c}},"processBalanceChange"),Dr=a(t=>({name:t.type,symbol:t.type,decimals:t.decimals,description:"",logoUri:t.logo??void 0}),"convertNativeAssetToToken"),Cr=a((t,e)=>({type:TokenType.SPL,address:t.address,caip2Id:e.caipId??"",contractType:TokenType.SPL,decimals:t.decimals,name:t.name,symbol:t.symbol,logoUri:t.logo||void 0}),"convertTokenAssetToToken"),_r=a((t,e)=>t.type==="TOKEN"?Cr(t,e):t.type==="SOL"||t.type==="ETH"?Dr(t):null,"convertDiffAssetToToken");var It=a(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:base64.encode(base58.decode(t.account))})}catch(n){return console.error("solana.message.scan() error",n),null}},"scanSolanaTransaction");var Se=a(async({simulationParams:t,network:e,provider:r})=>{let{params:n}=t,s=await It(t),{simulation:a,validation:c}=s?.result??{},p={title:"Transaction Details",items:[ae("Raw Data",t.params.transactionBase64)]},i=[p],d=!1,l,m;if(!c||c.result_type==="Warning"?m=Oe[AlertType.WARNING]:c.result_type==="Malicious"?m=Oe[AlertType.DANGER]:s?.error_details&&(m=Pt(s.error_details)),a){let{balanceChange:u,otherAffectedAddresses:f}=bt(n.account,a,e);if(l=u,f.length>0){let T=a.account_summary.account_assets_diff,y=T?.filter(P=>P.out&&P.out.raw_value>0)??[],h=T?.filter(P=>P.in&&P.in.raw_value>0)??[];y.length>0&&h.length>0?(p.items.push(_("Account",n.account)),p.items.push(Ee("Interacting with",f))):(p.items.push(_(f.length===1?"From":"Account",n.account)),p.items.push(f.length===1?_("To",f[0]):Ee("Interacting with",f)));}else p.items.push(_("Account",n.account));d=!0;}else {let{balanceChange:u,details:f}=await vt(n.transactionBase64,n.account,e,r);l=u,i.push(...f);}return {isSimulationSuccessful:d,details:i,alert:m,balanceChange:l}},"explainTransaction");var Lr="https://explorer.solana.com";function ke(t,e,r="tx"){try{let n=t.explorerUrl?new URL(t.explorerUrl):new URL(Lr);return n.pathname+=`${r}/${e}`,n.toString()}catch{return `${t.explorerUrl}/${r}/${e}`}}a(ke,"getExplorerAddressByNetwork");var Ve=400,Fr=15,Nt=a(async({provider:t,txHash:e,approvalController:r,request:n,network:s,commitment:a="confirmed",maxRetries:c=Fr})=>{let p=0,i=null,d=ke(s,e,"tx");for(;p<c;)try{let l=await t.getSignatureStatuses([signature(e)],{searchTransactionHistory:!0}).send();if(!l?.value?.[0]){await new Promise(f=>setTimeout(f,Ve)),p++;continue}let{confirmationStatus:m,err:u}=l.value[0];if(u)return console.error("[waitForTransactionConfirmation] Transaction failed:",u),r.onTransactionReverted({txHash:e,request:n}),!1;if(m&&m!==i&&(i=m,m==="processed"&&r.onTransactionPending({txHash:e,request:n,explorerLink:d}),a==="processed"&&m==="processed"||a==="confirmed"&&["confirmed","finalized"].includes(m)||a==="finalized"&&m==="finalized"))return r.onTransactionConfirmed({txHash:e,request:n,explorerLink:d}),!0;await new Promise(f=>setTimeout(f,Ve)),p++;}catch(l){if(l instanceof Error&&l.message.includes("Transaction failed"))return console.error("[waitForTransactionConfirmation] Transaction explicitly failed"),r.onTransactionReverted({txHash:e,request:n}),!1;await new Promise(m=>setTimeout(m,Ve)),p++;}return i==="confirmed"||i==="finalized"?(r.onTransactionConfirmed({txHash:e,request:n,explorerLink:d}),!0):(r.onTransactionReverted({txHash:e,request:n}),!1)},"waitForTransactionConfirmation");var Or=z$1.object({account:z$1.string(),serializedTx:z$1.string().base64(),sendOptions:z$1.object({preflightCommitment:z$1.enum(["processed","confirmed","finalized"]).optional(),maxRetries:z$1.bigint().optional(),minContextSlot:z$1.bigint().optional(),skipPreflight:z$1.boolean().optional()}).optional()}),Mr=z$1.tuple([Or]),Dt=a(t=>Mr.safeParse(t),"parseRequestParams");var _t=a(async({request:t,network:e,approvalController:r,proxyApiUrl:n,blockaid:s})=>{let{params:a}=t,{data:c,success:p,error:i}=Dt(a);if(!p)return console.error("invalid params",i),{error:rpcErrors.invalidParams(W("Transaction params are invalid",i))};let[{account:d,serializedTx:l,sendOptions:m}]=c,u=M({isTestnet:!!e.isTestnet,proxyApiUrl:n}),{details:f,isSimulationSuccessful:T,alert:y,balanceChange:h}=await Se({simulationParams:{dAppUrl:t.dappInfo.url,params:{account:d,chain:q(e),transactionBase64:l},blockaid:s},network:e,provider:u}),A={title:"Do you approve this transaction?",network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:f,alert:y,balanceChange:h,networkFeeSelector:!1,isSimulationSuccessful:T},P={type:RpcMethod.SOLANA_SIGN_AND_SEND_TRANSACTION,account:d,data:l},v=await r.requestApproval({request:t,displayData:A,signingData:P});if("error"in v)return {error:v.error};let E;try{E=await Gr(u,v,m);let k=ke(e,E);return await r.onTransactionPending({txHash:E,request:t,explorerLink:k}),Nt({provider:u,txHash:E,approvalController:r,request:t,network:e,commitment:m?.preflightCommitment}),{result:E}}catch(k){return console.error(k),{error:rpcErrors.internal(W("Transaction failed",k))}}},"signAndSendTransaction"),Gr=a(async(t,e,r)=>"txHash"in e?e.txHash:await t.sendTransaction(e.signedData,{...r,encoding:"base64"}).send(),"getTxHash");var $r=z$1.object({account:z$1.string(),serializedTx:z$1.string().base64()}),zr=z$1.tuple([$r]),Et=a(t=>zr.safeParse(t),"parseRequestParams");var Lt=a(async({request:t,network:e,approvalController:r,proxyApiUrl:n,blockaid:s})=>{let{params:a}=t,{data:c,success:p,error:i}=Et(a);if(!p)return console.error("invalid params",i),{error:rpcErrors.invalidParams(W("Transaction params are invalid",i))};let[{account:d,serializedTx:l}]=c,m=M({isTestnet:!!e.isTestnet,proxyApiUrl:n}),{details:u,isSimulationSuccessful:f,alert:T,balanceChange:y}=await Se({simulationParams:{dAppUrl:t.dappInfo.url,params:{account:d,chain:q(e),transactionBase64:l},blockaid:s},network:e,provider:m}),h={title:"Do you approve this transaction?",network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:u,alert:T,balanceChange:y&&St(y)?void 0:y,networkFeeSelector:!1,isSimulationSuccessful:f},A={type:RpcMethod.SOLANA_SIGN_TRANSACTION,account:d,data:l},P=await r.requestApproval({request:t,displayData:h,signingData:A});return "error"in P?{error:P.error}:"signedData"in P?{result:P.signedData}:{error:rpcErrors.invalidRequest("No signed data returned")}},"signTransaction");var Ut=a(t=>{try{let e=base64.decode(t);return getCompiledTransactionMessageDecoder().decode(e),!0}catch{return !1}},"isTransactionBytes");var jr=z$1.object({account:z$1.string(),serializedMessage:z$1.string().base64()}).refine(({serializedMessage:t})=>!Ut(t),{message:"Cannot use signMessage() calls for signing transactions"}),Hr=z$1.tuple([jr]),Ft=a(t=>Hr.safeParse(t),"parseRequestParams");var Mt=a(async({request:t,network:e,approvalController:r})=>{let{params:n}=t,{data:s,success:a,error:c}=Ft(n);if(!a)return console.error("invalid params",c),{error:rpcErrors.invalidParams(W("Message signing params are invalid",c))};let[{account:p,serializedMessage:i}]=s,d=new TextDecoder,l={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:[_("Account",p),_e("Message",d.decode(base64.decode(i))),ae("Raw Message (Base-64)",i)]}],networkFeeSelector:!1},m={type:RpcMethod.SOLANA_SIGN_MESSAGE,account:p,data:i},u=await r.requestApproval({request:t,displayData:l,signingData:m});return "error"in u?{error:u.error}:"signedData"in u?{result:u.signedData}:{error:rpcErrors.invalidRequest("No signed data returned")}},"signMessage");var B,$,le,te,re,$e=class $e{constructor({approvalController:e$1,environment:r,appInfo:n,runtime:s}){d(this,B,void 0);d(this,$,void 0);d(this,le,void 0);d(this,te,void 0);d(this,re,void 0);let{proxyApiUrl:a}=Xe(r);e(this,le,n),e(this,B,a),e(this,$,e$1),e(this,re,s),c(this,B),c(this,$),c(this,le),e(this,te,new Zr({baseURL:a+"/proxy/blockaid/",apiKey:ot,httpAgent:s?.httpAgent,fetch:s?.fetch}));}async getProvider(e){return M({isTestnet:!!e.isTestnet,proxyApiUrl:c(this,B)})}getAddress(){return Promise.resolve({})}buildDerivationPath(e){return ge(e)}deriveAddress(e){return Ze({...e,approvalController:c(this,$)})}getBalances(e){let r=new se({storage:e.storage,proxyApiUrl:c(this,B),fetch:c(this,re)?.fetch});return dt({...e,tokenService:r,proxyApiUrl:c(this,B),fetch:c(this,re)?.fetch})}getManifest(){let e=parseManifest(He);return e.success?e.data:void 0}getNetworkFee(e){return st(e,c(this,B))}getTransactionHistory(e){return ht({network:e.network,address:e.address,proxyApiUrl:c(this,B)})}getTokens(e){return e.caipId?it({caip2Id:e.caipId,proxyApiUrl:c(this,B)}):Promise.reject({error:rpcErrors.invalidParams("Network must have a CAIP-2 id")})}async onRpcRequest(e,r){switch(e.method){case RpcMethod.SOLANA_SIGN_TRANSACTION:return Lt({approvalController:c(this,$),proxyApiUrl:c(this,B),network:r,request:e,blockaid:c(this,te)});case RpcMethod.SOLANA_SIGN_AND_SEND_TRANSACTION:return _t({approvalController:c(this,$),proxyApiUrl:c(this,B),network:r,request:e,blockaid:c(this,te)});case RpcMethod.SOLANA_SIGN_MESSAGE:return Mt({approvalController:c(this,$),network:r,request:e})}return {error:rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}};B=new WeakMap,$=new WeakMap,le=new WeakMap,te=new WeakMap,re=new WeakMap,a($e,"SvmModule");var Gt=$e;
15
15
 
16
- export { Bt as SvmModule };
16
+ export { Gt as SvmModule };
17
17
  //# sourceMappingURL=out.js.map
18
18
  //# sourceMappingURL=index.js.map