@avalabs/svm-module 4.1.1 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/dist/index.cjs
CHANGED
|
@@ -19,7 +19,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
|
19
19
|
|
|
20
20
|
var Sn__default = /*#__PURE__*/_interopDefault(Sn);
|
|
21
21
|
|
|
22
|
-
function Qe(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}chunkVYIKXRYZ_cjs.a(Qe,"charsum");function Ie(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)}chunkVYIKXRYZ_cjs.a(Ie,"arrayHash");var Ne=chunkVYIKXRYZ_cjs.a(async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=q.exponential()})=>{let a=0,s=0,l;for(;s<r;){s>0&&await Yt(a);try{let i=await t(s);if(e(i))return i}catch(i){l=i;}a=n(s),s++;}let c=l?`Max retry exceeded. ${l}`:"Max retry exceeded.";throw new Error(c)},"retry"),De=class De{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,s=e*r,l=2*r*(Math.pow(2,a)-1);return s+l}}};chunkVYIKXRYZ_cjs.a(De,"RetryBackoffPolicy");var q=De;function Yt(t){return new Promise(e=>setTimeout(e,t))}chunkVYIKXRYZ_cjs.a(Yt,"delay");var Ce=chunkVYIKXRYZ_cjs.a(t=>Ne({operation:e=>t(e>0),maxRetries:2,backoffPolicy:q.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 a=await n.json();return e.parse(a)}chunkVYIKXRYZ_cjs.a(U,"fetchAndVerify");var Ee=class Ee{constructor(e,r){this.proxyApiUrl=e;this.fetchFn=r;}simplePrice(e){let r=new URLSearchParams(e);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(e){let{id:r,...n}=e,a=new URLSearchParams(n);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}};chunkVYIKXRYZ_cjs.a(Ee,"CoingeckoProxyClient");var se=Ee;var Xt=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())})),_e=class _e{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"}}],Xt)}};chunkVYIKXRYZ_cjs.a(_e,"WatchlistProxyClient");var ge=_e;var K,j,H,Z,Be=class Be{constructor({storage:e,proxyApiUrl:r,fetch:n}){chunkVYIKXRYZ_cjs.d(this,K,void 0);chunkVYIKXRYZ_cjs.d(this,j,void 0);chunkVYIKXRYZ_cjs.d(this,H,void 0);chunkVYIKXRYZ_cjs.d(this,Z,void 0);chunkVYIKXRYZ_cjs.b(this,"transformSimplePriceResponse",chunkVYIKXRYZ_cjs.a((e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(a=>{let s=e[a];n[a]={},r.forEach(l=>{n[a]={[l]:{price:s?.[l],change24:s?.[`${l}_24h_change`],vol24:s?.[`${l}_24h_vol`],marketCap:s?.[`${l}_market_cap`]}};});}),n},"transformSimplePriceResponse"));chunkVYIKXRYZ_cjs.e(this,K,e),chunkVYIKXRYZ_cjs.e(this,j,r),chunkVYIKXRYZ_cjs.e(this,H,n??globalThis.fetch),chunkVYIKXRYZ_cjs.e(this,Z,coreCoingeckoSdk.getBasicCoingeckoHttp(void 0,chunkVYIKXRYZ_cjs.c(this,H)));}async getWatchlistDataForToken({tokenDetails:e,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new ge(chunkVYIKXRYZ_cjs.c(this,j)).watchlistToken({tokens:e.symbol,currency:r})).filter(s=>e.isNative?s.internalId===`NATIVE-${e.symbol.toLowerCase()}`:s.platforms[e.caip2Id]===e.address),[a]=n;return a?{priceInCurrency:a.current_price??0,change24:a.price_change_percentage_24h??0,marketCap:a.market_cap??0,vol24:a.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,s=`getSimplePrice-${e?`${Ie(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkVYIKXRYZ_cjs.c(this,K)?.get?.(s),n)return n;try{n=await Ce(l=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:l}));}catch{n=void 0;}return chunkVYIKXRYZ_cjs.c(this,K)?.set?.(s,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,l=`getPricesWithMarketDataByAddresses-${`${Ie(e)}-${r}-${n}`}`;if(a=chunkVYIKXRYZ_cjs.c(this,K)?.get?.(l),a)return a;try{a=await Ce(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),a=void 0;}return chunkVYIKXRYZ_cjs.c(this,K)?.set?.(l,a),a}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let s=await new se(chunkVYIKXRYZ_cjs.c(this,j),chunkVYIKXRYZ_cjs.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(s,[n])}return coreCoingeckoSdk.simpleTokenPrice(chunkVYIKXRYZ_cjs.c(this,Z),{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:s=!1,lastUpdated:l=!1,useCoingeckoProxy:c=!1,shouldThrow:i=!0}){if(c){let d=await new se(chunkVYIKXRYZ_cjs.c(this,j),chunkVYIKXRYZ_cjs.c(this,H)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:s,include_last_updated_at:l});return this.transformSimplePriceResponse(d,r)}return coreCoingeckoSdk.simplePrice(chunkVYIKXRYZ_cjs.c(this,Z),{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:s,lastUpdated:l,shouldThrow:i})}};K=new WeakMap,j=new WeakMap,H=new WeakMap,Z=new WeakMap,chunkVYIKXRYZ_cjs.a(Be,"TokenService");var ie=Be;zod.object({date:zod.string(),usd:zod.record(zod.number())});var Le=chunkVYIKXRYZ_cjs.a((t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),"textItem");var E=chunkVYIKXRYZ_cjs.a((t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e}),"addressItem"),Ue=chunkVYIKXRYZ_cjs.a((t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS_LIST,value:e}),"addressListItem");var ce=chunkVYIKXRYZ_cjs.a((t,e)=>({label:t,type:vmModuleTypes.DetailItemType.DATA,value:e}),"dataItem");var tt=process.env.GLACIER_API_KEY;var le=chunkVYIKXRYZ_cjs.a(()=>tt,"getGlacierApiKey");var or=["glacier-api.avax.network","proxy-api.avax.network","proxy-api-dev.avax.network","core-proxy-api.avax.network","core-proxy-api.avax-test.network"];function Me(t){let e=new URL(t),r=le();if(r&&or.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}chunkVYIKXRYZ_cjs.a(Me,"addGlacierAPIKeyIfNeeded");({rltoken:le()});var O=chunkVYIKXRYZ_cjs.a((t,e)=>({message:`${t}${e instanceof Error?`: ${e.message}`:""}`,data:{cause:e}}),"rpcErrorOpts");var rt={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 sr={proxyApiUrl:"https://proxy-api.avax.network"},ir={proxyApiUrl:"https://proxy-api-dev.avax.network"},ot=chunkVYIKXRYZ_cjs.a(t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return sr;case vmModuleTypes.Environment.DEV:return ir}},"getEnv");var at=chunkVYIKXRYZ_cjs.a(t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string","hasDerivationDetails");var Q=chunkVYIKXRYZ_cjs.a(({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'`}},"buildDerivationPath");var st=chunkVYIKXRYZ_cjs.a(async t=>{let{approvalController:e,secretId:r}=t,n=at(t)?Q(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))}},"deriveAddress");var it=chunkVYIKXRYZ_cjs.a(async t=>{let{approvalController:e,secretId:r,accountIndices:n,derivationPathType:a}=t;if(n.length===0)return [];await cryptoSdk.init();let s=await Promise.all(n.map(async c=>{let i=Q({accountIndex:c,derivationPathType:a}).SVM,d=await e.requestPublicKey({curve:"ed25519",secretId:r,derivationPath:i});return Uint8Array.from(Buffer.from(d,"hex"))}));return (await cryptoSdk.deriveAddressesForSvm(s)).map(c=>({[vmModuleTypes.NetworkVMType.SVM]:c}))},"deriveAddresses");var ct="solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",lt="solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",pt="solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z",Fe="/proxy/nownodes/sol",Oe="https://api.devnet.solana.com",mt="https://api.testnet.solana.com",dt="DUMMY_API_KEY";var hr=chunkVYIKXRYZ_cjs.a(({caipId:t,isTestnet:e,proxyApiUrl:r})=>{switch(t){case coreChainsSdk.SolanaCaip2ChainId.MAINNET:return r+Fe;case coreChainsSdk.SolanaCaip2ChainId.DEVNET:return Oe;case coreChainsSdk.SolanaCaip2ChainId.TESTNET:return mt;default:if(t)throw new Error(`Unsupported Solana CAIP-2 id: ${t}`);return e?Oe:r+Fe}},"getSolanaRpcUrl"),V=chunkVYIKXRYZ_cjs.a(({network:t,proxyApiUrl:e})=>{let r=!!t.isTestnet,n=Me(hr({caipId:t.caipId,isTestnet:r,proxyApiUrl:e}));return coreWalletsSdk.getSolanaProvider({isTestnet:r,rpcUrl:n})},"getProvider");var Ge=1e6,G={high:150*Ge,medium:75*Ge,low:2*Ge},Tr=chunkVYIKXRYZ_cjs.a(t=>(t.length===0?[G.low,G.low]:t.length===1?[t[0],G.low]:t).slice().sort((r,n)=>r-n),"ensureEnoughData");async function ut(t,e){let a=await(await V({network:t,proxyApiUrl:e}).getRecentPrioritizationFees()).send();if(a.length===0||a.every(g=>g.prioritizationFee===0n))return {high:{maxFeePerGas:BigInt(G.high),maxPriorityFeePerGas:BigInt(G.high)},medium:{maxFeePerGas:BigInt(G.medium),maxPriorityFeePerGas:BigInt(G.medium)},low:{maxFeePerGas:BigInt(G.low),maxPriorityFeePerGas:BigInt(G.low)},baseFee:BigInt(G.low),displayDecimals:9,isFixedFee:!1};let l=Tr(a.map(g=>Number(g.prioritizationFee))),c=l.at(0),i=l.at(-1),d=Math.floor(l.length/2),p=l.length%2===1?l[d]:(l[d-1]+l[d])/2,m=BigInt(Math.ceil(i*1.05)),u=BigInt(Math.ceil(p*1.05)),y=BigInt(Math.ceil(c*1.05));return {high:{maxFeePerGas:m,maxPriorityFeePerGas:m},medium:{maxFeePerGas:u,maxPriorityFeePerGas:u},low:{maxFeePerGas:y,maxPriorityFeePerGas:y},baseFee:y,displayDecimals:9,isFixedFee:!1}}chunkVYIKXRYZ_cjs.a(ut,"getNetworkFee");var Sr=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()}),ft=zod.z.array(Sr);async function yt({caip2Id:t,proxyApiUrl:e}){try{return (await U([`${e}/solana-tokens?caip2Id=${t}`],ft)).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}"`)}}chunkVYIKXRYZ_cjs.a(yt,"getTokens");var gt=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 pe,me,Pe,ht,$e=class $e{constructor(e){chunkVYIKXRYZ_cjs.d(this,Pe);chunkVYIKXRYZ_cjs.d(this,pe,void 0);chunkVYIKXRYZ_cjs.d(this,me,void 0);chunkVYIKXRYZ_cjs.e(this,pe,`${e.proxyApiUrl}/proxy/moralis`),chunkVYIKXRYZ_cjs.e(this,me,e.fetch??globalThis.fetch);}async getPortfolio({address:e,network:r}){try{let n=chunkVYIKXRYZ_cjs.f(this,Pe,ht).call(this,`/account/${r}/${e}/portfolio`),a=await U([n],gt,chunkVYIKXRYZ_cjs.c(this,me));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}`}}}};pe=new WeakMap,me=new WeakMap,Pe=new WeakSet,ht=chunkVYIKXRYZ_cjs.a(function(e){return `${chunkVYIKXRYZ_cjs.c(this,pe)}${e}`},"#buildUrl"),chunkVYIKXRYZ_cjs.a($e,"MoralisService");var ee=$e;var W=chunkVYIKXRYZ_cjs.a(t=>{switch(t.caipId){case ct:return "mainnet";case lt:return "devnet";case pt:return "testnet";default:throw new Error("Unrecognized CAIP-2 id: "+t.caipId)}},"getNetworkName");var St=chunkVYIKXRYZ_cjs.a(async({addresses:t,proxyApiUrl:e,currency:r,network:n,tokenService:a,fetch:s})=>{let l=new ee({proxyApiUrl:e,fetch:s}),c=n.pricingProviders?.coingecko.nativeTokenId??"",i=n.pricingProviders?.coingecko.assetPlatformId??"",d=r.toLowerCase(),p=W(n),m=await Promise.all(t.map(h=>l.getPortfolio({address:h,network:p}))),u=new Set(m.flatMap(h=>"portfolio"in h?h.portfolio.tokens.map(({mint:T})=>T):[])),y=await(i?a.getPricesByAddresses(Array.from(u),i,d):Promise.resolve(void 0)),g=await a.getWatchlistDataForToken({tokenDetails:{symbol:n.networkToken.symbol,isNative:!0,caip2Id:n.caipId??""},currency:d});return m.reduce((h,T)=>{if("error"in T)return {...h,[T.address]:{error:T.error}};let A=new coreUtilsSdk.TokenUnit(T.portfolio.nativeBalance.lamports,9,"SOL"),R=g.priceInCurrency!==void 0?A.mul(g.priceInCurrency):void 0,P={type:vmModuleTypes.TokenType.NATIVE,name:n.networkToken.name,symbol:n.networkToken.symbol,decimals:n.networkToken.decimals,balance:A.toSubUnit(),balanceDisplayValue:A.toString(),balanceInCurrency:R?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:R?.toDisplay({fixedDp:2}),logoUri:n.networkToken.logoUri??"",coingeckoId:c,...g},L=T.portfolio.tokens.reduce((k,{amountRaw:v,symbol:S,decimals:x,mint:w,name:N,logo:B})=>{let F=new coreUtilsSdk.TokenUnit(v,x,S),fe=Ar(w,d,y),ye=fe.priceInCurrency!==void 0?F.mul(fe.priceInCurrency):void 0,X={type:vmModuleTypes.TokenType.SPL,address:w,name:N,symbol:S,decimals:x,balance:F.toSubUnit(),balanceDisplayValue:F.toString(),balanceInCurrency:ye?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:ye?.toDisplay({fixedDp:2}),logoUri:B??void 0,reputation:null,...fe};return {...k,[w]:X}},{});return {...h,[T.address]:{[n.networkToken.symbol]:P,...L}}},{})},"getBalances"),Ar=chunkVYIKXRYZ_cjs.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 ze=chunkVYIKXRYZ_cjs.a(t=>({mint:t.mint,owner:t.owner,amount:BigInt(t.uiTokenAmount.amount),decimals:t.uiTokenAmount.decimals}),"simplifyTokenBalance"),kt=chunkVYIKXRYZ_cjs.a((t,e,r,n)=>{let a=e!==-1?t[e]:r.preTokenBalances.find(i=>!t.includes(i.owner))?.owner||r.postTokenBalances.find(i=>!t.includes(i.owner))?.owner,s=r.preTokenBalances.reduce((i,{owner:d,mint:p,amount:m})=>({...i,[`${d}-${p}`]:m}),{}),l=r.postTokenBalances.reduce((i,{owner:d,mint:p,amount:m,decimals:u})=>{let y=`${d}-${p}`,g=s[y]??0n,h=m-g;if(h===0n)return i;let T=h>0n&&d===a,A=h<0n&&d===a;if(T){let R=Object.keys(s).find(k=>{let[v,S]=k.split("-");if(S!==p||v===a)return !1;let x=s[k],w=r.postTokenBalances.find(({owner:B,mint:F})=>B===v&&F===p);return !w||w.amount<x});if(!R)return i;let P=n.tokens?.filter(k=>"contractType"in k).find(k=>k.address===p)??{contractType:vmModuleTypes.TokenType.SPL,decimals:u,address:p,symbol:"Unknown",name:"Unknown"},L={...P,type:P.contractType,from:{...P,address:R.split("-")[0]},to:{...P,address:d},amount:new coreUtilsSdk.TokenUnit(h,u,"").toDisplay()};return [...i,L]}else if(A){let R=r.postTokenBalances.find(({owner:k,mint:v})=>v===p&&k!==a&&(s[`${k}-${p}`]??0n)<(r.postTokenBalances.find(S=>S.owner===k&&S.mint===p)?.amount??0n));if(!R)return i;let P=n.tokens?.filter(k=>"contractType"in k).find(k=>k.address===p)??{contractType:vmModuleTypes.TokenType.SPL,decimals:u,address:p,symbol:"Unknown",name:"Unknown"},L={...P,type:P.contractType,from:{...P,address:a},to:{...P,address:R.owner},amount:new coreUtilsSdk.TokenUnit(-h,u,"").toDisplay()};return [...i,L]}return i},[]),c=vr(t,e,r,n,l,a);return c&&l.push(c),l},"extractTokenTranfers"),vr=chunkVYIKXRYZ_cjs.a((t,e,{paidFee:r,preBalances:n,postBalances:a},s,l=[],c)=>{if(e===-1){if(l.length>0&&c&&l.some(S=>S.to?.address===c)){let S=t.findIndex(x=>x===c);if(S!==-1){let x=n[S],N=a[S]-x;if(N<=0){let B=Math.abs(N)+r;if(B>r){let F=new coreUtilsSdk.TokenUnit(B,s.networkToken.decimals,""),ye=a.map((X,ae)=>X-n[ae]).reduce((X,ae,Je)=>Je!==S&&ae>X.amount&&ae>0?{index:Je,amount:ae}:X,{index:0,amount:0});return {amount:F.toDisplay(),from:{address:c},to:{address:t[ye.index]},name:s.networkToken.name,symbol:s.networkToken.symbol,type:vmModuleTypes.TokenType.NATIVE}}}}}return null}let i=t[e],d=n[e],m=a[e]-d,u=a.map((v,S)=>v-n[S]),y=l.length>0,g=m!==0?m+r:0,h=g>0,T=0,A=!1;if(y&&e===0&&c){let v=l.some(x=>x.to?.address===c),S=l.some(x=>x.from?.address===c);v&&!S&&(h=!1,A=!0,T=a.map((N,B)=>N-n[B]).reduce((N,B,F)=>F!==e&&B>N.amount&&B>0?{index:F,amount:B}:N,{index:0,amount:0}).index);}if(y&&m<0){let v=u.reduce((S,x,w)=>w!==e&&x>S.amount?{index:w,amount:x}:S,{index:0,amount:0});v.amount>r*2&&!A&&(g=v.amount,h=!0,T=v.index);}else y&&m<=0&&l.some(S=>S.to?.address===i)&&(g=Math.abs(m)+r,h=!1,T=u.reduce((x,w,N)=>N!==e&&w>x.amount&&w>0?{index:N,amount:w}:x,{index:0,amount:0}).index);if(!g)return null;let R=new coreUtilsSdk.TokenUnit(Math.abs(g),s.networkToken.decimals,"");if(!y){let v=u.reduce(({index:S,change:x},w,N)=>w>x?{index:N,change:w}:{index:S,change:x},{index:0,change:u[0]});T=h?0:v.index;}let P=t[T],L=h?P||i:c||i,k=h?c||i:P||c||i;return {amount:R.toDisplay(),from:{address:L},to:{address:k},name:s.networkToken.name,symbol:s.networkToken.symbol,type:vmModuleTypes.TokenType.NATIVE}},"extractNativeTransfer");var de=chunkVYIKXRYZ_cjs.a(t=>t.status==="fulfilled","isFulfilled");function At(t){return e=>!!e[t]}chunkVYIKXRYZ_cjs.a(At,"hasPropertyDefined");var xt=chunkVYIKXRYZ_cjs.a(async({network:t,address:e,proxyApiUrl:r})=>{let n=V({network:t,proxyApiUrl:r}),s=(await n.getSignaturesForAddress(kit.address(e),{limit:25}).send()).map(i=>i.signature),l=s;try{let i=new ee({proxyApiUrl:r}),d=W(t),p=await i.getPortfolio({address:e,network:d});if("portfolio"in p){let m=p.portfolio.tokens.map(A=>A.associatedTokenAddress),u=p.portfolio.nfts.map(A=>A.associatedTokenAddress),g=[...m,...u].map(async A=>{try{return (await n.getSignaturesForAddress(kit.address(A),{limit:25}).send()).map(P=>P.signature)}catch(R){return console.error("Failed to get signatures for ATA:",A,R),[]}}),T=(await Promise.allSettled(g)).filter(de).map(A=>A.value).flat();l=Array.from(new Set([...s,...T]));}}catch(i){console.error("ATA discovery failed with error:",i);}return (await Promise.allSettled(l.map(async i=>({txHash:i.toString(),tx:await n.getTransaction(i,{encoding:"json",maxSupportedTransactionVersion:0}).send()})))).filter(de).map(i=>i.value).filter(At("tx"))},"getWrappedTransactions");var bt=chunkVYIKXRYZ_cjs.a((t,e)=>{let r=e?new URL(e):null;return r&&(r.pathname=`/tx/${t}`),r?.toString()??""},"getExplorerLink");async function Rt({network:t,address:e,proxyApiUrl:r}){return t.caipId?{transactions:(await xt({network:t,address:e,proxyApiUrl:r})).map(({txHash:s,tx:l})=>{if(!l.meta)return null;let{meta:c,transaction:{message:i}}=l,d=i.accountKeys.map(h=>h.toString()),p=d.indexOf(e),m=p!==-1;!m&&c.preTokenBalances&&(c.preTokenBalances.some(T=>T.owner===e)||(c.postTokenBalances??[]).some(T=>T.owner===e))&&(m=!0,p=-1);let u=p!==-1&&p<i.header.numRequiredSignatures,y=kt(d,p,{paidFee:u?Number(c.fee):0,preBalances:c.preBalances.map(Number),postBalances:c.postBalances.map(Number),preTokenBalances:(c.preTokenBalances??[]).map(ze),postTokenBalances:(c.postTokenBalances??[]).map(ze)},t),g=br(y,e);return {hash:s,txType:g,gasUsed:String(l.meta.computeUnitsConsumed??"0"),tokens:y,from:y[0]?.from?.address??d[0],to:y[0]?.to?.address??(u?"":e),isOutgoing:u,isIncoming:!u,isSender:u,timestamp:Number(l.blockTime)*1e3,isContractCall:!1,gasPrice:String(Number(l.meta.fee)/Number(l.meta.computeUnitsConsumed)),chainId:String(t.chainId),explorerLink:bt(s,t.explorerUrl)}}).filter(s=>s!==null)}:Promise.reject({error:rpcErrors.rpcErrors.invalidParams("Network must have a CAIP-2 id")})}chunkVYIKXRYZ_cjs.a(Rt,"getTransactionHistory");var br=chunkVYIKXRYZ_cjs.a((t,e)=>{if(t.length===0)return vmModuleTypes.TransactionType.UNKNOWN;let r=t.filter(s=>s.from?.address===e||s.to?.address===e);if(r.length===0)return vmModuleTypes.TransactionType.UNKNOWN;let n=r.some(s=>s.from?.address===e),a=r.some(s=>s.to?.address===e);return n&&a?vmModuleTypes.TransactionType.SWAP:n?vmModuleTypes.TransactionType.SEND:a?vmModuleTypes.TransactionType.RECEIVE:vmModuleTypes.TransactionType.UNKNOWN},"inferTxType");var Nr="11111111111111111111111111111111",Dr=4,re=chunkVYIKXRYZ_cjs.a(t=>`Could not verify this transaction belongs to ${t}. Signing it could authorize a transfer on a different Solana cluster.`,"couldNotVerify"),wt=chunkVYIKXRYZ_cjs.a((t,e)=>`This transaction's ${e} is not valid on ${t}. It may have expired, or it may have been built for a different Solana cluster. Signing it could authorize a transfer on another network.`,"lifetimeNotValid"),Cr=chunkVYIKXRYZ_cjs.a(t=>{let[e]=t.instructions;if(!e?.data||t.staticAccounts[e.programAddressIndex]!==Nr)return !1;let{data:r}=e;return r.length>=4&&r[0]===Dr&&r[1]===0&&r[2]===0&&r[3]===0},"isDurableNonceTransaction"),Er=chunkVYIKXRYZ_cjs.a(async(t,e,r)=>{if(e<t.staticAccounts.length)return t.staticAccounts[e]??null;let n="addressTableLookups"in t?t.addressTableLookups??[]:[];if(n.length===0)return null;let a=await kit.fetchAddressesForLookupTables(n.map(c=>c.lookupTableAddress),r),s=n.flatMap(c=>c.writableIndices.map(i=>a[c.lookupTableAddress]?.[i])),l=n.flatMap(c=>c.readableIndices.map(i=>a[c.lookupTableAddress]?.[i]));return [...s,...l][e-t.staticAccounts.length]??null},"resolveAccountAddress"),_r=chunkVYIKXRYZ_cjs.a((t,e)=>{let r=t.instructions[0]?.accountIndices?.[0];return r===void 0?Promise.resolve(null):Er(t,r,e)},"getDurableNonceAccountAddress"),Br=chunkVYIKXRYZ_cjs.a(async({nonceAccountAddress:t,nonce:e,provider:r,network:n})=>{try{let s=(await r.getAccountInfo(t,{encoding:"jsonParsed",commitment:"processed"}).send()).value?.data;if(!s)return `This transaction's durable nonce account is unknown on ${n.chainName}. Signing it could authorize a transfer on a different Solana cluster.`;if(Array.isArray(s))return re(n.chainName);let l=s.parsed.info.blockhash;if(typeof l!="string"||l!==e)return wt(n.chainName,"durable nonce")}catch{return re(n.chainName)}return null},"assertDurableNonceBelongsToNetwork"),Ae=chunkVYIKXRYZ_cjs.a(async({serializedTx:t,provider:e,network:r})=>{let n;try{let a=kit.getTransactionDecoder().decode(Uint8Array.from(Buffer.from(t,"base64")));n=kit.getCompiledTransactionMessageDecoder().decode(a.messageBytes);}catch{return re(r.chainName)}if(Cr(n)){let a;try{a=await _r(n,e);}catch{return re(r.chainName)}return a?Br({nonceAccountAddress:a,nonce:n.lifetimeToken,provider:e,network:r}):re(r.chainName)}try{let{value:a}=await e.isBlockhashValid(n.lifetimeToken,{commitment:"processed"}).send();if(!a)return wt(r.chainName,"blockhash")}catch{return re(r.chainName)}return null},"assertTxBelongsToNetwork");var It=chunkVYIKXRYZ_cjs.a(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 t?.type==="TransactionError"&&t.message.toLowerCase().includes("insufficient funds for rent")?{type:vmModuleTypes.AlertType.WARNING,details:{title:"This transaction will likely be reverted",description:"The recipient account needs a minimum balance to exist on Solana (rent). Try increasing the amount you send."}}:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Transaction simulation has failed",description:"It is possible that this transaction will fail. Please proceed with caution."}}},"getAlertForError"),Ke={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious transaction",description:"Use caution, this transaction might be malicious."}},[vmModuleTypes.AlertType.DANGER]:{type:vmModuleTypes.AlertType.DANGER,details:{title:"Scam transaction",description:"This transaction is malicious, do not proceed.",body:["This transaction is malicious","do not proceed"],actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};function Nt(t){return t.ins.length===0&&t.outs.length===0}chunkVYIKXRYZ_cjs.a(Nt,"isBalanceChangeEmpty");function Dt(t){return t!=null}chunkVYIKXRYZ_cjs.a(Dt,"isNotNullish");var Ct=chunkVYIKXRYZ_cjs.a((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:s,data:l}=system.parseTransferSolInstruction({...t,data:Uint8Array.from(t.data)}),i=s.source.address===r===!0?"outs":"ins";return e[i].push({token:{...n,address:""},items:[{displayValue:new coreUtilsSdk.TokenUnit(l.amount,n.decimals,"").toString(),usdPrice:void 0}]}),{title:"Transfer SOL",items:[E("From",s.source.address),E("To",s.destination.address)]}}catch{return null}},"tryToParseSolTransfer");var Yr=chunkVYIKXRYZ_cjs.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"),Et=chunkVYIKXRYZ_cjs.a(async(t,e,r,n,a)=>{if(!a?.length||!kit.isInstructionWithAccounts(e)||!kit.isInstructionWithData(e))return null;try{let s=token.identifyTokenInstruction(e);if(s!==token.TokenInstruction.Transfer&&s!==token.TokenInstruction.TransferChecked)return null;let l=s===token.TokenInstruction.TransferChecked?token.parseTransferCheckedInstruction:token.parseTransferInstruction,{accounts:c,data:i}=l({...e,data:Uint8Array.from(e.data)}),d=await Yr(t,c.source.address);if(!d)return null;let p=a.find(g=>g.address.toLowerCase()===d.toLowerCase());if(!p)return null;let u=(c.source.address===n||c.authority.address===n)===!0?"outs":"ins",y="decimals"in i?i.decimals:p.decimals;return r[u].push({token:p,items:[{displayValue:new coreUtilsSdk.TokenUnit(i.amount,y,"").toString(),usdPrice:void 0}]}),{title:`Transfer ${p.symbol}`,items:[E("From",c.source.address),E("To",c.destination.address)]}}catch{return null}},"tryToParseSPLTransfer");var _t=chunkVYIKXRYZ_cjs.a(async(t,e,r,n)=>{let a=await coreWalletsSdk.deserializeTransactionMessage(t,n),s={ins:[],outs:[]},l=await Promise.allSettled(a.instructions.map(async c=>Ct(c,s,e,r.networkToken)??await Et(n,c,s,e,r.tokens)??null)).then(c=>c.filter(de).map(i=>i.value).filter(Dt));return {balanceChange:s,details:l}},"parseTransaction");var Lt=chunkVYIKXRYZ_cjs.a((t,e,r)=>{let n=e.account_summary.account_assets_diff??[],a={},s={},l=Object.keys(e.assets_diff??{}).filter(c=>c!==t);return n.forEach(({asset:c,in:i,out:d})=>{let p=Qr(c,r);if(!p)return;let m="address"in p?p.address:p.symbol;i&&(a[m]||(a[m]={token:p,items:[]}),a[m].items.push({displayValue:String(i.value),usdPrice:typeof i.usd_price=="number"?String(i.usd_price):void 0})),d&&(s[m]||(s[m]={token:p,items:[]}),s[m].items.push({displayValue:String(d.value),usdPrice:typeof d.usd_price=="number"?String(d.usd_price):void 0}));}),{balanceChange:{ins:Object.values(a),outs:Object.values(s)},otherAffectedAddresses:l}},"processBalanceChange"),Jr=chunkVYIKXRYZ_cjs.a(t=>({name:t.type,symbol:t.type,decimals:t.decimals,description:"",logoUri:t.logo??void 0}),"convertNativeAssetToToken"),Zr=chunkVYIKXRYZ_cjs.a((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}),"convertTokenAssetToToken"),Qr=chunkVYIKXRYZ_cjs.a((t,e)=>t.type==="TOKEN"?Zr(t,e):t.type==="SOL"||t.type==="ETH"?Jr(t):null,"convertDiffAssetToToken");var Ut=chunkVYIKXRYZ_cjs.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:base.base64.encode(base.base58.decode(t.account))})}catch(n){return console.error("solana.message.scan() error",n),null}},"scanSolanaTransaction");var ve=chunkVYIKXRYZ_cjs.a(async({simulationParams:t,network:e,provider:r})=>{let{params:n}=t,a=await Ut(t),{simulation:s,validation:l}=a?.result??{},c=s?.account_summary?s:void 0,i={title:"Transaction Details",items:[ce("Raw Data",t.params.transactionBase64)]},d=[i],p=!1,m,u;if(!l||l.result_type==="Warning"?u=Ke[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"?u=Ke[vmModuleTypes.AlertType.DANGER]:a?.error_details&&(u=It(a.error_details)),c){let{balanceChange:y,otherAffectedAddresses:g}=Lt(n.account,c,e);if(m=y,g.length>0){let h=c.account_summary.account_assets_diff,T=h?.filter(P=>P.out&&P.out.raw_value>0)??[],A=h?.filter(P=>P.in&&P.in.raw_value>0)??[];T.length>0&&A.length>0?(i.items.push(E("Account",n.account)),i.items.push(Ue("Interacting with",g))):(i.items.push(E(g.length===1?"From":"Account",n.account)),i.items.push(g.length===1?E("To",g[0]):Ue("Interacting with",g)));}else i.items.push(E("Account",n.account));p=!0;}else {let{balanceChange:y,details:g}=await _t(n.transactionBase64,n.account,e,r);m=y,d.push(...g);}return {isSimulationSuccessful:p,details:d,alert:u,balanceChange:m}},"explainTransaction");var rn="https://explorer.solana.com";function xe(t,e,r="tx"){try{let n=t.explorerUrl?new URL(t.explorerUrl):new URL(rn);return n.pathname+=`${r}/${e}`,n.toString()}catch{return `${t.explorerUrl}/${r}/${e}`}}chunkVYIKXRYZ_cjs.a(xe,"getExplorerAddressByNetwork");var qe=400,on=15,Ft=chunkVYIKXRYZ_cjs.a(async({provider:t,txHash:e,approvalController:r,request:n,network:a,commitment:s="confirmed",maxRetries:l=on})=>{let c=0,i=null,d=xe(a,e,"tx");for(;c<l;)try{let p=await t.getSignatureStatuses([kit.signature(e)],{searchTransactionHistory:!0}).send();if(!p?.value?.[0]){await new Promise(y=>setTimeout(y,qe)),c++;continue}let{confirmationStatus:m,err:u}=p.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}),s==="processed"&&m==="processed"||s==="confirmed"&&["confirmed","finalized"].includes(m)||s==="finalized"&&m==="finalized"))return r.onTransactionConfirmed({txHash:e,request:n,explorerLink:d}),!0;await new Promise(y=>setTimeout(y,qe)),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(m=>setTimeout(m,qe)),c++;}return i==="confirmed"||i==="finalized"?(r.onTransactionConfirmed({txHash:e,request:n,explorerLink:d}),!0):(r.onTransactionReverted({txHash:e,request:n}),!1)},"waitForTransactionConfirmation");var an=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()}),sn=zod.z.tuple([an]),Ot=chunkVYIKXRYZ_cjs.a(t=>sn.safeParse(t),"parseRequestParams");var Vt=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r,proxyApiUrl:n,blockaid:a})=>{let{params:s}=t,{data:l,success:c,error:i}=Ot(s);if(!c)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams(O("Transaction params are invalid",i))};let[{account:d,serializedTx:p,sendOptions:m}]=l,u=V({network:e,proxyApiUrl:n}),y=await Ae({serializedTx:p,provider:u,network:e});if(y)return {error:rpcErrors.rpcErrors.invalidParams(O(y,null))};let{details:g,isSimulationSuccessful:h,alert:T,balanceChange:A}=await ve({simulationParams:{dAppUrl:t.dappInfo.url,params:{account:d,chain:W(e),transactionBase64:p},blockaid:a},network:e,provider:u}),R={title:"Do you approve this transaction?",network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:g,alert:T,balanceChange:A,networkFeeSelector:!1,isSimulationSuccessful:h},P={type:vmModuleTypes.RpcMethod.SOLANA_SIGN_AND_SEND_TRANSACTION,account:d,data:p},L=await r.requestApproval({request:t,displayData:R,signingData:P});if("error"in L)return {error:L.error};let k;try{k=await ln(u,L,m);let v=xe(e,k);return await r.onTransactionPending({txHash:k,request:t,explorerLink:v}),Ft({provider:u,txHash:k,approvalController:r,request:t,network:e,commitment:m?.preflightCommitment}),{result:k}}catch(v){return console.error(v),{error:rpcErrors.rpcErrors.internal(O("Transaction failed",v))}}},"signAndSendTransaction"),ln=chunkVYIKXRYZ_cjs.a(async(t,e,r)=>"txHash"in e?e.txHash:await t.sendTransaction(e.signedData,{...r,encoding:"base64"}).send(),"getTxHash");var pn=zod.z.object({account:zod.z.string(),serializedTx:zod.z.string().base64()}),mn=zod.z.tuple([pn]),Gt=chunkVYIKXRYZ_cjs.a(t=>mn.safeParse(t),"parseRequestParams");var $t=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r,proxyApiUrl:n,blockaid:a})=>{let{params:s}=t,{data:l,success:c,error:i}=Gt(s);if(!c)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams(O("Transaction params are invalid",i))};let[{account:d,serializedTx:p}]=l,m=V({network:e,proxyApiUrl:n}),u=await Ae({serializedTx:p,provider:m,network:e});if(u)return {error:rpcErrors.rpcErrors.invalidParams(O(u,null))};let{details:y,isSimulationSuccessful:g,alert:h,balanceChange:T}=await ve({simulationParams:{dAppUrl:t.dappInfo.url,params:{account:d,chain:W(e),transactionBase64:p},blockaid:a},network:e,provider:m}),A={title:"Do you approve this transaction?",network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:y,alert:h,balanceChange:T&&Nt(T)?void 0:T,networkFeeSelector:!1,isSimulationSuccessful:g},R={type:vmModuleTypes.RpcMethod.SOLANA_SIGN_TRANSACTION,account:d,data:p},P=await r.requestApproval({request:t,displayData:A,signingData:R});return "error"in P?{error:P.error}:"signedData"in P?{result:P.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}},"signTransaction");var zt=chunkVYIKXRYZ_cjs.a(t=>{try{let e=base.base64.decode(t);return kit.getCompiledTransactionMessageDecoder().decode(e),!0}catch{return !1}},"isTransactionBytes");var yn=zod.z.object({account:zod.z.string(),serializedMessage:zod.z.string().base64()}).refine(({serializedMessage:t})=>!zt(t),{message:"Cannot use signMessage() calls for signing transactions"}),gn=zod.z.tuple([yn]),Kt=chunkVYIKXRYZ_cjs.a(t=>gn.safeParse(t),"parseRequestParams");var qt=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r})=>{let{params:n}=t,{data:a,success:s,error:l}=Kt(n);if(!s)return console.error("invalid params",l),{error:rpcErrors.rpcErrors.invalidParams(O("Message signing params are invalid",l))};let[{account:c,serializedMessage:i}]=a,d=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:[E("Account",c),Le("Message",d.decode(base.base64.decode(i))),ce("Raw Message (Base-64)",i)]}],networkFeeSelector:!1},m={type:vmModuleTypes.RpcMethod.SOLANA_SIGN_MESSAGE,account:c,data:i},u=await r.requestApproval({request:t,displayData:p,signingData:m});return "error"in u?{error:u.error}:"signedData"in u?{result:u.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}},"signMessage");var _,$,ue,ne,oe,Xe=class Xe{constructor({approvalController:e,environment:r,appInfo:n,runtime:a}){chunkVYIKXRYZ_cjs.d(this,_,void 0);chunkVYIKXRYZ_cjs.d(this,$,void 0);chunkVYIKXRYZ_cjs.d(this,ue,void 0);chunkVYIKXRYZ_cjs.d(this,ne,void 0);chunkVYIKXRYZ_cjs.d(this,oe,void 0);let{proxyApiUrl:s}=ot(r);chunkVYIKXRYZ_cjs.e(this,ue,n),chunkVYIKXRYZ_cjs.e(this,_,s),chunkVYIKXRYZ_cjs.e(this,$,e),chunkVYIKXRYZ_cjs.e(this,oe,a),chunkVYIKXRYZ_cjs.c(this,_),chunkVYIKXRYZ_cjs.c(this,$),chunkVYIKXRYZ_cjs.c(this,ue),chunkVYIKXRYZ_cjs.e(this,ne,new Sn__default.default({baseURL:s+"/proxy/blockaid/",apiKey:dt,httpAgent:a?.httpAgent,fetch:a?.fetch}));}async getProvider(e){return V({network:e,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,_)})}getAddress(){return Promise.resolve({})}buildDerivationPath(e){return Q(e)}deriveAddress(e){return st({...e,approvalController:chunkVYIKXRYZ_cjs.c(this,$)})}deriveAddresses(e){return it({...e,approvalController:chunkVYIKXRYZ_cjs.c(this,$)})}getBalances(e){let r=new ie({storage:e.storage,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,_),fetch:chunkVYIKXRYZ_cjs.c(this,oe)?.fetch});return St({...e,tokenService:r,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,_),fetch:chunkVYIKXRYZ_cjs.c(this,oe)?.fetch})}getManifest(){let e=vmModuleTypes.parseManifest(rt);return e.success?e.data:void 0}getNetworkFee(e){return ut(e,chunkVYIKXRYZ_cjs.c(this,_))}getTransactionHistory(e){return Rt({network:e.network,address:e.address,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,_)})}getTokens(e){return e.caipId?yt({caip2Id:e.caipId,proxyApiUrl:chunkVYIKXRYZ_cjs.c(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 $t({approvalController:chunkVYIKXRYZ_cjs.c(this,$),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,_),network:r,request:e,blockaid:chunkVYIKXRYZ_cjs.c(this,ne)});case vmModuleTypes.RpcMethod.SOLANA_SIGN_AND_SEND_TRANSACTION:return Vt({approvalController:chunkVYIKXRYZ_cjs.c(this,$),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,_),network:r,request:e,blockaid:chunkVYIKXRYZ_cjs.c(this,ne)});case vmModuleTypes.RpcMethod.SOLANA_SIGN_MESSAGE:return qt({approvalController:chunkVYIKXRYZ_cjs.c(this,$),network:r,request:e})}return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}};_=new WeakMap,$=new WeakMap,ue=new WeakMap,ne=new WeakMap,oe=new WeakMap,chunkVYIKXRYZ_cjs.a(Xe,"SvmModule");var Ht=Xe;
|
|
22
|
+
function Qe(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}chunkVYIKXRYZ_cjs.a(Qe,"charsum");function we(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)}chunkVYIKXRYZ_cjs.a(we,"arrayHash");var Ne=chunkVYIKXRYZ_cjs.a(async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=q.exponential()})=>{let a=0,s=0,l;for(;s<r;){s>0&&await Yt(a);try{let i=await t(s);if(e(i))return i}catch(i){l=i;}a=n(s),s++;}let c=l?`Max retry exceeded. ${l}`:"Max retry exceeded.";throw new Error(c)},"retry"),De=class De{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,s=e*r,l=2*r*(Math.pow(2,a)-1);return s+l}}};chunkVYIKXRYZ_cjs.a(De,"RetryBackoffPolicy");var q=De;function Yt(t){return new Promise(e=>setTimeout(e,t))}chunkVYIKXRYZ_cjs.a(Yt,"delay");var Ce=chunkVYIKXRYZ_cjs.a(t=>Ne({operation:e=>t(e>0),maxRetries:2,backoffPolicy:q.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 a=await n.json();return e.parse(a)}chunkVYIKXRYZ_cjs.a(U,"fetchAndVerify");var Ee=class Ee{constructor(e,r){this.proxyApiUrl=e;this.fetchFn=r;}simplePrice(e){let r=new URLSearchParams(e);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(e){let{id:r,...n}=e,a=new URLSearchParams(n);return U([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}};chunkVYIKXRYZ_cjs.a(Ee,"CoingeckoProxyClient");var se=Ee;var Xt=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())})),_e=class _e{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"}}],Xt)}};chunkVYIKXRYZ_cjs.a(_e,"WatchlistProxyClient");var ge=_e;var K,j,H,Z,Be=class Be{constructor({storage:e,proxyApiUrl:r,fetch:n}){chunkVYIKXRYZ_cjs.d(this,K,void 0);chunkVYIKXRYZ_cjs.d(this,j,void 0);chunkVYIKXRYZ_cjs.d(this,H,void 0);chunkVYIKXRYZ_cjs.d(this,Z,void 0);chunkVYIKXRYZ_cjs.b(this,"transformSimplePriceResponse",chunkVYIKXRYZ_cjs.a((e,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(a=>{let s=e[a];n[a]={},r.forEach(l=>{n[a]={[l]:{price:s?.[l],change24:s?.[`${l}_24h_change`],vol24:s?.[`${l}_24h_vol`],marketCap:s?.[`${l}_market_cap`]}};});}),n},"transformSimplePriceResponse"));chunkVYIKXRYZ_cjs.e(this,K,e),chunkVYIKXRYZ_cjs.e(this,j,r),chunkVYIKXRYZ_cjs.e(this,H,n??globalThis.fetch),chunkVYIKXRYZ_cjs.e(this,Z,coreCoingeckoSdk.getBasicCoingeckoHttp(void 0,chunkVYIKXRYZ_cjs.c(this,H)));}async getWatchlistDataForToken({tokenDetails:e,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new ge(chunkVYIKXRYZ_cjs.c(this,j)).watchlistToken({tokens:e.symbol,currency:r})).filter(s=>e.isNative?s.internalId===`NATIVE-${e.symbol.toLowerCase()}`:s.platforms[e.caip2Id]===e.address),[a]=n;return a?{priceInCurrency:a.current_price??0,change24:a.price_change_percentage_24h??0,marketCap:a.market_cap??0,vol24:a.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:e=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,s=`getSimplePrice-${e?`${we(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=chunkVYIKXRYZ_cjs.c(this,K)?.get?.(s),n)return n;try{n=await Ce(l=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:l}));}catch{n=void 0;}return chunkVYIKXRYZ_cjs.c(this,K)?.set?.(s,n),n}async getPricesByAddresses(e,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let a,l=`getPricesWithMarketDataByAddresses-${`${we(e)}-${r}-${n}`}`;if(a=chunkVYIKXRYZ_cjs.c(this,K)?.get?.(l),a)return a;try{a=await Ce(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),a=void 0;}return chunkVYIKXRYZ_cjs.c(this,K)?.set?.(l,a),a}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:a=!1}){if(a){let s=await new se(chunkVYIKXRYZ_cjs.c(this,j),chunkVYIKXRYZ_cjs.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(s,[n])}return coreCoingeckoSdk.simpleTokenPrice(chunkVYIKXRYZ_cjs.c(this,Z),{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:s=!1,lastUpdated:l=!1,useCoingeckoProxy:c=!1,shouldThrow:i=!0}){if(c){let d=await new se(chunkVYIKXRYZ_cjs.c(this,j),chunkVYIKXRYZ_cjs.c(this,H)).simplePrice({ids:e,vs_currencies:r,include_market_cap:n,include_24hr_vol:a,include_24hr_change:s,include_last_updated_at:l});return this.transformSimplePriceResponse(d,r)}return coreCoingeckoSdk.simplePrice(chunkVYIKXRYZ_cjs.c(this,Z),{coinIds:e,currencies:r,marketCap:n,vol24:a,change24:s,lastUpdated:l,shouldThrow:i})}};K=new WeakMap,j=new WeakMap,H=new WeakMap,Z=new WeakMap,chunkVYIKXRYZ_cjs.a(Be,"TokenService");var ie=Be;zod.object({date:zod.string(),usd:zod.record(zod.number())});var Le=chunkVYIKXRYZ_cjs.a((t,e,r="horizontal")=>({label:t,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:e}),"textItem");var E=chunkVYIKXRYZ_cjs.a((t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS,value:e}),"addressItem"),Ue=chunkVYIKXRYZ_cjs.a((t,e)=>({label:t,type:vmModuleTypes.DetailItemType.ADDRESS_LIST,value:e}),"addressListItem");var ce=chunkVYIKXRYZ_cjs.a((t,e)=>({label:t,type:vmModuleTypes.DetailItemType.DATA,value:e}),"dataItem");var tt=process.env.GLACIER_API_KEY;var le=chunkVYIKXRYZ_cjs.a(()=>tt,"getGlacierApiKey");var or=["glacier-api.avax.network","proxy-api.avax.network","proxy-api-dev.avax.network","core-proxy-api.avax.network","core-proxy-api.avax-test.network"];function Me(t){let e=new URL(t),r=le();if(r&&or.includes(e.hostname)){let n=e.searchParams;return n.set("token",r),e.search=n.toString(),e.toString()}return t}chunkVYIKXRYZ_cjs.a(Me,"addGlacierAPIKeyIfNeeded");({rltoken:le()});var O=chunkVYIKXRYZ_cjs.a((t,e)=>({message:`${t}${e instanceof Error?`: ${e.message}`:""}`,data:{cause:e}}),"rpcErrorOpts");var rt={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 sr={proxyApiUrl:"https://proxy-api.avax.network"},ir={proxyApiUrl:"https://proxy-api-dev.avax.network"},ot=chunkVYIKXRYZ_cjs.a(t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return sr;case vmModuleTypes.Environment.DEV:return ir}},"getEnv");var at=chunkVYIKXRYZ_cjs.a(t=>"derivationPathType"in t&&"accountIndex"in t&&typeof t.accountIndex=="number"&&typeof t.derivationPathType=="string","hasDerivationDetails");var Q=chunkVYIKXRYZ_cjs.a(({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'`}},"buildDerivationPath");var st=chunkVYIKXRYZ_cjs.a(async t=>{let{approvalController:e,secretId:r}=t,n=at(t)?Q(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))}},"deriveAddress");var it=chunkVYIKXRYZ_cjs.a(async t=>{let{approvalController:e,secretId:r,accountIndices:n,derivationPathType:a}=t;if(n.length===0)return [];await cryptoSdk.init();let s=await Promise.all(n.map(async c=>{let i=Q({accountIndex:c,derivationPathType:a}).SVM,d=await e.requestPublicKey({curve:"ed25519",secretId:r,derivationPath:i});return Uint8Array.from(Buffer.from(d,"hex"))}));return (await cryptoSdk.deriveAddressesForSvm(s)).map(c=>({[vmModuleTypes.NetworkVMType.SVM]:c}))},"deriveAddresses");var ct="solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",lt="solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",pt="solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z",Fe="/proxy/nownodes/sol",Oe="https://api.devnet.solana.com",mt="https://api.testnet.solana.com",dt="DUMMY_API_KEY";var hr=chunkVYIKXRYZ_cjs.a(({caipId:t,isTestnet:e,proxyApiUrl:r})=>{switch(t){case coreChainsSdk.SolanaCaip2ChainId.MAINNET:return r+Fe;case coreChainsSdk.SolanaCaip2ChainId.DEVNET:return Oe;case coreChainsSdk.SolanaCaip2ChainId.TESTNET:return mt;default:if(t)throw new Error(`Unsupported Solana CAIP-2 id: ${t}`);return e?Oe:r+Fe}},"getSolanaRpcUrl"),V=chunkVYIKXRYZ_cjs.a(({network:t,proxyApiUrl:e})=>{let r=!!t.isTestnet,n=Me(hr({caipId:t.caipId,isTestnet:r,proxyApiUrl:e}));return coreWalletsSdk.getSolanaProvider({isTestnet:r,rpcUrl:n})},"getProvider");var Ge=1e6,G={high:150*Ge,medium:75*Ge,low:2*Ge},Tr=chunkVYIKXRYZ_cjs.a(t=>(t.length===0?[G.low,G.low]:t.length===1?[t[0],G.low]:t).slice().sort((r,n)=>r-n),"ensureEnoughData");async function ut(t,e){let a=await(await V({network:t,proxyApiUrl:e}).getRecentPrioritizationFees()).send();if(a.length===0||a.every(g=>g.prioritizationFee===0n))return {high:{maxFeePerGas:BigInt(G.high),maxPriorityFeePerGas:BigInt(G.high)},medium:{maxFeePerGas:BigInt(G.medium),maxPriorityFeePerGas:BigInt(G.medium)},low:{maxFeePerGas:BigInt(G.low),maxPriorityFeePerGas:BigInt(G.low)},baseFee:BigInt(G.low),displayDecimals:9,isFixedFee:!1};let l=Tr(a.map(g=>Number(g.prioritizationFee))),c=l.at(0),i=l.at(-1),d=Math.floor(l.length/2),p=l.length%2===1?l[d]:(l[d-1]+l[d])/2,m=BigInt(Math.ceil(i*1.05)),u=BigInt(Math.ceil(p*1.05)),y=BigInt(Math.ceil(c*1.05));return {high:{maxFeePerGas:m,maxPriorityFeePerGas:m},medium:{maxFeePerGas:u,maxPriorityFeePerGas:u},low:{maxFeePerGas:y,maxPriorityFeePerGas:y},baseFee:y,displayDecimals:9,isFixedFee:!1}}chunkVYIKXRYZ_cjs.a(ut,"getNetworkFee");var Sr=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()}),ft=zod.z.array(Sr);async function yt({caip2Id:t,proxyApiUrl:e}){try{return (await U([`${e}/solana-tokens?caip2Id=${t}`],ft)).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}"`)}}chunkVYIKXRYZ_cjs.a(yt,"getTokens");var gt=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 pe,me,Pe,ht,$e=class $e{constructor(e){chunkVYIKXRYZ_cjs.d(this,Pe);chunkVYIKXRYZ_cjs.d(this,pe,void 0);chunkVYIKXRYZ_cjs.d(this,me,void 0);chunkVYIKXRYZ_cjs.e(this,pe,`${e.proxyApiUrl}/proxy/moralis`),chunkVYIKXRYZ_cjs.e(this,me,e.fetch??globalThis.fetch);}async getPortfolio({address:e,network:r}){try{let n=chunkVYIKXRYZ_cjs.f(this,Pe,ht).call(this,`/account/${r}/${e}/portfolio`),a=await U([n],gt,chunkVYIKXRYZ_cjs.c(this,me));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}`}}}};pe=new WeakMap,me=new WeakMap,Pe=new WeakSet,ht=chunkVYIKXRYZ_cjs.a(function(e){return `${chunkVYIKXRYZ_cjs.c(this,pe)}${e}`},"#buildUrl"),chunkVYIKXRYZ_cjs.a($e,"MoralisService");var ee=$e;var W=chunkVYIKXRYZ_cjs.a(t=>{switch(t.caipId){case ct:return "mainnet";case lt:return "devnet";case pt:return "testnet";default:throw new Error("Unrecognized CAIP-2 id: "+t.caipId)}},"getNetworkName");var St=chunkVYIKXRYZ_cjs.a(async({addresses:t,proxyApiUrl:e,currency:r,network:n,tokenService:a,fetch:s})=>{let l=new ee({proxyApiUrl:e,fetch:s}),c=n.pricingProviders?.coingecko.nativeTokenId??"",i=n.pricingProviders?.coingecko.assetPlatformId??"",d=r.toLowerCase(),p=W(n),m=await Promise.all(t.map(h=>l.getPortfolio({address:h,network:p}))),u=new Set(m.flatMap(h=>"portfolio"in h?h.portfolio.tokens.map(({mint:T})=>T):[])),y=await(i?a.getPricesByAddresses(Array.from(u),i,d):Promise.resolve(void 0)),g=await a.getWatchlistDataForToken({tokenDetails:{symbol:n.networkToken.symbol,isNative:!0,caip2Id:n.caipId??""},currency:d});return m.reduce((h,T)=>{if("error"in T)return {...h,[T.address]:{error:T.error}};let A=new coreUtilsSdk.TokenUnit(T.portfolio.nativeBalance.lamports,9,"SOL"),I=g.priceInCurrency!==void 0?A.mul(g.priceInCurrency):void 0,P={type:vmModuleTypes.TokenType.NATIVE,name:n.networkToken.name,symbol:n.networkToken.symbol,decimals:n.networkToken.decimals,balance:A.toSubUnit(),balanceDisplayValue:A.toString(),balanceInCurrency:I?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:I?.toDisplay({fixedDp:2}),logoUri:n.networkToken.logoUri??"",coingeckoId:c,...g},L=T.portfolio.tokens.reduce((k,{amountRaw:v,symbol:S,decimals:x,mint:R,name:N,logo:B})=>{let F=new coreUtilsSdk.TokenUnit(v,x,S),fe=Ar(R,d,y),ye=fe.priceInCurrency!==void 0?F.mul(fe.priceInCurrency):void 0,X={type:vmModuleTypes.TokenType.SPL,address:R,name:N,symbol:S,decimals:x,balance:F.toSubUnit(),balanceDisplayValue:F.toString(),balanceInCurrency:ye?.toDisplay({fixedDp:2,asNumber:!0}),balanceCurrencyDisplayValue:ye?.toDisplay({fixedDp:2}),logoUri:B??void 0,reputation:null,...fe};return {...k,[R]:X}},{});return {...h,[T.address]:{[n.networkToken.symbol]:P,...L}}},{})},"getBalances"),Ar=chunkVYIKXRYZ_cjs.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 ze=chunkVYIKXRYZ_cjs.a(t=>({mint:t.mint,owner:t.owner,amount:BigInt(t.uiTokenAmount.amount),decimals:t.uiTokenAmount.decimals}),"simplifyTokenBalance"),kt=chunkVYIKXRYZ_cjs.a((t,e,r,n)=>{let a=e!==-1?t[e]:r.preTokenBalances.find(i=>!t.includes(i.owner))?.owner||r.postTokenBalances.find(i=>!t.includes(i.owner))?.owner,s=r.preTokenBalances.reduce((i,{owner:d,mint:p,amount:m})=>({...i,[`${d}-${p}`]:m}),{}),l=r.postTokenBalances.reduce((i,{owner:d,mint:p,amount:m,decimals:u})=>{let y=`${d}-${p}`,g=s[y]??0n,h=m-g;if(h===0n)return i;let T=h>0n&&d===a,A=h<0n&&d===a;if(T){let I=Object.keys(s).find(k=>{let[v,S]=k.split("-");if(S!==p||v===a)return !1;let x=s[k],R=r.postTokenBalances.find(({owner:B,mint:F})=>B===v&&F===p);return !R||R.amount<x});if(!I)return i;let P=n.tokens?.filter(k=>"contractType"in k).find(k=>k.address===p)??{contractType:vmModuleTypes.TokenType.SPL,decimals:u,address:p,symbol:"Unknown",name:"Unknown"},L={...P,type:P.contractType,from:{...P,address:I.split("-")[0]},to:{...P,address:d},amount:new coreUtilsSdk.TokenUnit(h,u,"").toDisplay()};return [...i,L]}else if(A){let I=r.postTokenBalances.find(({owner:k,mint:v})=>v===p&&k!==a&&(s[`${k}-${p}`]??0n)<(r.postTokenBalances.find(S=>S.owner===k&&S.mint===p)?.amount??0n));if(!I)return i;let P=n.tokens?.filter(k=>"contractType"in k).find(k=>k.address===p)??{contractType:vmModuleTypes.TokenType.SPL,decimals:u,address:p,symbol:"Unknown",name:"Unknown"},L={...P,type:P.contractType,from:{...P,address:a},to:{...P,address:I.owner},amount:new coreUtilsSdk.TokenUnit(-h,u,"").toDisplay()};return [...i,L]}return i},[]),c=vr(t,e,r,n,l,a);return c&&l.push(c),l},"extractTokenTranfers"),vr=chunkVYIKXRYZ_cjs.a((t,e,{paidFee:r,preBalances:n,postBalances:a},s,l=[],c)=>{if(e===-1){if(l.length>0&&c&&l.some(S=>S.to?.address===c)){let S=t.findIndex(x=>x===c);if(S!==-1){let x=n[S],N=a[S]-x;if(N<=0){let B=Math.abs(N)+r;if(B>r){let F=new coreUtilsSdk.TokenUnit(B,s.networkToken.decimals,""),ye=a.map((X,ae)=>X-n[ae]).reduce((X,ae,Je)=>Je!==S&&ae>X.amount&&ae>0?{index:Je,amount:ae}:X,{index:0,amount:0});return {amount:F.toDisplay(),from:{address:c},to:{address:t[ye.index]},name:s.networkToken.name,symbol:s.networkToken.symbol,type:vmModuleTypes.TokenType.NATIVE}}}}}return null}let i=t[e],d=n[e],m=a[e]-d,u=a.map((v,S)=>v-n[S]),y=l.length>0,g=m!==0?m+r:0,h=g>0,T=0,A=!1;if(y&&e===0&&c){let v=l.some(x=>x.to?.address===c),S=l.some(x=>x.from?.address===c);v&&!S&&(h=!1,A=!0,T=a.map((N,B)=>N-n[B]).reduce((N,B,F)=>F!==e&&B>N.amount&&B>0?{index:F,amount:B}:N,{index:0,amount:0}).index);}if(y&&m<0){let v=u.reduce((S,x,R)=>R!==e&&x>S.amount?{index:R,amount:x}:S,{index:0,amount:0});v.amount>r*2&&!A&&(g=v.amount,h=!0,T=v.index);}else y&&m<=0&&l.some(S=>S.to?.address===i)&&(g=Math.abs(m)+r,h=!1,T=u.reduce((x,R,N)=>N!==e&&R>x.amount&&R>0?{index:N,amount:R}:x,{index:0,amount:0}).index);if(!g)return null;let I=new coreUtilsSdk.TokenUnit(Math.abs(g),s.networkToken.decimals,"");if(!y){let v=u.reduce(({index:S,change:x},R,N)=>R>x?{index:N,change:R}:{index:S,change:x},{index:0,change:u[0]});T=h?0:v.index;}let P=t[T],L=h?P||i:c||i,k=h?c||i:P||c||i;return {amount:I.toDisplay(),from:{address:L},to:{address:k},name:s.networkToken.name,symbol:s.networkToken.symbol,type:vmModuleTypes.TokenType.NATIVE}},"extractNativeTransfer");var de=chunkVYIKXRYZ_cjs.a(t=>t.status==="fulfilled","isFulfilled");function At(t){return e=>!!e[t]}chunkVYIKXRYZ_cjs.a(At,"hasPropertyDefined");var xt=chunkVYIKXRYZ_cjs.a(async({network:t,address:e,proxyApiUrl:r})=>{let n=V({network:t,proxyApiUrl:r}),s=(await n.getSignaturesForAddress(kit.address(e),{limit:25}).send()).map(i=>i.signature),l=s;try{let i=new ee({proxyApiUrl:r}),d=W(t),p=await i.getPortfolio({address:e,network:d});if("portfolio"in p){let m=p.portfolio.tokens.map(A=>A.associatedTokenAddress),u=p.portfolio.nfts.map(A=>A.associatedTokenAddress),g=[...m,...u].map(async A=>{try{return (await n.getSignaturesForAddress(kit.address(A),{limit:25}).send()).map(P=>P.signature)}catch(I){return console.error("Failed to get signatures for ATA:",A,I),[]}}),T=(await Promise.allSettled(g)).filter(de).map(A=>A.value).flat();l=Array.from(new Set([...s,...T]));}}catch(i){console.error("ATA discovery failed with error:",i);}return (await Promise.allSettled(l.map(async i=>({txHash:i.toString(),tx:await n.getTransaction(i,{encoding:"json",maxSupportedTransactionVersion:0}).send()})))).filter(de).map(i=>i.value).filter(At("tx"))},"getWrappedTransactions");var bt=chunkVYIKXRYZ_cjs.a((t,e)=>{let r=e?new URL(e):null;return r&&(r.pathname=`/tx/${t}`),r?.toString()??""},"getExplorerLink");async function It({network:t,address:e,proxyApiUrl:r}){return t.caipId?{transactions:(await xt({network:t,address:e,proxyApiUrl:r})).map(({txHash:s,tx:l})=>{if(!l.meta)return null;let{meta:c,transaction:{message:i}}=l,d=i.accountKeys.map(h=>h.toString()),p=d.indexOf(e),m=p!==-1;!m&&c.preTokenBalances&&(c.preTokenBalances.some(T=>T.owner===e)||(c.postTokenBalances??[]).some(T=>T.owner===e))&&(m=!0,p=-1);let u=p!==-1&&p<i.header.numRequiredSignatures,y=kt(d,p,{paidFee:u?Number(c.fee):0,preBalances:c.preBalances.map(Number),postBalances:c.postBalances.map(Number),preTokenBalances:(c.preTokenBalances??[]).map(ze),postTokenBalances:(c.postTokenBalances??[]).map(ze)},t),g=br(y,e);return {hash:s,txType:g,gasUsed:String(l.meta.computeUnitsConsumed??"0"),tokens:y,from:y[0]?.from?.address??d[0],to:y[0]?.to?.address??(u?"":e),isOutgoing:u,isIncoming:!u,isSender:u,timestamp:Number(l.blockTime)*1e3,isContractCall:!1,gasPrice:String(Number(l.meta.fee)/Number(l.meta.computeUnitsConsumed)),chainId:String(t.chainId),explorerLink:bt(s,t.explorerUrl)}}).filter(s=>s!==null)}:Promise.reject({error:rpcErrors.rpcErrors.invalidParams("Network must have a CAIP-2 id")})}chunkVYIKXRYZ_cjs.a(It,"getTransactionHistory");var br=chunkVYIKXRYZ_cjs.a((t,e)=>{if(t.length===0)return vmModuleTypes.TransactionType.UNKNOWN;let r=t.filter(s=>s.from?.address===e||s.to?.address===e);if(r.length===0)return vmModuleTypes.TransactionType.UNKNOWN;let n=r.some(s=>s.from?.address===e),a=r.some(s=>s.to?.address===e);return n&&a?vmModuleTypes.TransactionType.SWAP:n?vmModuleTypes.TransactionType.SEND:a?vmModuleTypes.TransactionType.RECEIVE:vmModuleTypes.TransactionType.UNKNOWN},"inferTxType");var Nr="11111111111111111111111111111111",Dr=4,re=chunkVYIKXRYZ_cjs.a(t=>`Could not verify this transaction belongs to ${t}. Signing it could authorize a transfer on a different Solana cluster.`,"couldNotVerify"),Rt=chunkVYIKXRYZ_cjs.a((t,e)=>`This transaction's ${e} is not valid on ${t}. It may have expired, or it may have been built for a different Solana cluster. Signing it could authorize a transfer on another network.`,"lifetimeNotValid"),Cr=chunkVYIKXRYZ_cjs.a(t=>{let[e]=t.instructions;if(!e?.data||t.staticAccounts[e.programAddressIndex]!==Nr)return !1;let{data:r}=e;return r.length>=4&&r[0]===Dr&&r[1]===0&&r[2]===0&&r[3]===0},"isDurableNonceTransaction"),Er=chunkVYIKXRYZ_cjs.a(async(t,e,r)=>{if(e<t.staticAccounts.length)return t.staticAccounts[e]??null;let n="addressTableLookups"in t?t.addressTableLookups??[]:[];if(n.length===0)return null;let a=await kit.fetchAddressesForLookupTables(n.map(c=>c.lookupTableAddress),r),s=n.flatMap(c=>c.writableIndices.map(i=>a[c.lookupTableAddress]?.[i])),l=n.flatMap(c=>c.readableIndices.map(i=>a[c.lookupTableAddress]?.[i]));return [...s,...l][e-t.staticAccounts.length]??null},"resolveAccountAddress"),_r=chunkVYIKXRYZ_cjs.a((t,e)=>{let r=t.instructions[0]?.accountIndices?.[0];return r===void 0?Promise.resolve(null):Er(t,r,e)},"getDurableNonceAccountAddress"),Br=chunkVYIKXRYZ_cjs.a(async({nonceAccountAddress:t,nonce:e,provider:r,network:n})=>{try{let s=(await r.getAccountInfo(t,{encoding:"jsonParsed",commitment:"processed"}).send()).value?.data;if(!s)return `This transaction's durable nonce account is unknown on ${n.chainName}. Signing it could authorize a transfer on a different Solana cluster.`;if(Array.isArray(s))return re(n.chainName);let l=s.parsed.info.blockhash;if(typeof l!="string"||l!==e)return Rt(n.chainName,"durable nonce")}catch{return re(n.chainName)}return null},"assertDurableNonceBelongsToNetwork"),Ae=chunkVYIKXRYZ_cjs.a(async({serializedTx:t,provider:e,network:r})=>{let n;try{let a=kit.getTransactionDecoder().decode(Uint8Array.from(Buffer.from(t,"base64")));n=kit.getCompiledTransactionMessageDecoder().decode(a.messageBytes);}catch{return re(r.chainName)}if(Cr(n)){let a;try{a=await _r(n,e);}catch{return re(r.chainName)}return a?Br({nonceAccountAddress:a,nonce:n.lifetimeToken,provider:e,network:r}):re(r.chainName)}try{let{value:a}=await e.isBlockhashValid(n.lifetimeToken,{commitment:"processed"}).send();if(!a)return Rt(r.chainName,"blockhash")}catch{return re(r.chainName)}return null},"assertTxBelongsToNetwork");var wt=chunkVYIKXRYZ_cjs.a(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 t?.type==="TransactionError"&&t.message.toLowerCase().includes("insufficient funds for rent")?{type:vmModuleTypes.AlertType.WARNING,details:{title:"This transaction will likely be reverted",description:"The recipient account needs a minimum balance to exist on Solana (rent). Try increasing the amount you send."}}:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Transaction simulation has failed",description:"It is possible that this transaction will fail. Please proceed with caution."}}},"getAlertForError"),Ke={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious transaction",description:"Use caution, this transaction might be malicious."}},[vmModuleTypes.AlertType.DANGER]:{type:vmModuleTypes.AlertType.DANGER,details:{title:"Scam transaction",description:"This transaction is malicious, do not proceed.",body:["This transaction is malicious","do not proceed"],actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};function Nt(t){return t.ins.length===0&&t.outs.length===0}chunkVYIKXRYZ_cjs.a(Nt,"isBalanceChangeEmpty");function Dt(t){return t!=null}chunkVYIKXRYZ_cjs.a(Dt,"isNotNullish");var Ct=chunkVYIKXRYZ_cjs.a((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:s,data:l}=system.parseTransferSolInstruction({...t,data:Uint8Array.from(t.data)}),i=s.source.address===r===!0?"outs":"ins";return e[i].push({token:{...n,address:""},items:[{displayValue:new coreUtilsSdk.TokenUnit(l.amount,n.decimals,"").toString(),usdPrice:void 0}]}),{title:"Transfer SOL",items:[E("From",s.source.address),E("To",s.destination.address)]}}catch{return null}},"tryToParseSolTransfer");var Yr=chunkVYIKXRYZ_cjs.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"),Et=chunkVYIKXRYZ_cjs.a(async(t,e,r,n,a)=>{if(!a?.length||!kit.isInstructionWithAccounts(e)||!kit.isInstructionWithData(e))return null;try{let s=token.identifyTokenInstruction(e);if(s!==token.TokenInstruction.Transfer&&s!==token.TokenInstruction.TransferChecked)return null;let l=s===token.TokenInstruction.TransferChecked?token.parseTransferCheckedInstruction:token.parseTransferInstruction,{accounts:c,data:i}=l({...e,data:Uint8Array.from(e.data)}),d=await Yr(t,c.source.address);if(!d)return null;let p=a.find(g=>g.address.toLowerCase()===d.toLowerCase());if(!p)return null;let u=(c.source.address===n||c.authority.address===n)===!0?"outs":"ins",y="decimals"in i?i.decimals:p.decimals;return r[u].push({token:p,items:[{displayValue:new coreUtilsSdk.TokenUnit(i.amount,y,"").toString(),usdPrice:void 0}]}),{title:`Transfer ${p.symbol}`,items:[E("From",c.source.address),E("To",c.destination.address)]}}catch{return null}},"tryToParseSPLTransfer");var _t=chunkVYIKXRYZ_cjs.a(async(t,e,r,n)=>{let a=await coreWalletsSdk.deserializeTransactionMessage(t,n),s={ins:[],outs:[]},l=await Promise.allSettled(a.instructions.map(async c=>Ct(c,s,e,r.networkToken)??await Et(n,c,s,e,r.tokens)??null)).then(c=>c.filter(de).map(i=>i.value).filter(Dt));return {balanceChange:s,details:l}},"parseTransaction");var Lt=chunkVYIKXRYZ_cjs.a((t,e,r)=>{let n=e.account_summary.account_assets_diff??[],a={},s={},l=Object.keys(e.assets_diff??{}).filter(c=>c!==t);return n.forEach(({asset:c,in:i,out:d})=>{let p=Qr(c,r);if(!p)return;let m="address"in p?p.address:p.symbol;i&&(a[m]||(a[m]={token:p,items:[]}),a[m].items.push({displayValue:String(i.value),usdPrice:typeof i.usd_price=="number"?String(i.usd_price):void 0})),d&&(s[m]||(s[m]={token:p,items:[]}),s[m].items.push({displayValue:String(d.value),usdPrice:typeof d.usd_price=="number"?String(d.usd_price):void 0}));}),{balanceChange:{ins:Object.values(a),outs:Object.values(s)},otherAffectedAddresses:l}},"processBalanceChange"),Jr=chunkVYIKXRYZ_cjs.a(t=>({name:t.type,symbol:t.type,decimals:t.decimals,description:"",logoUri:t.logo??void 0}),"convertNativeAssetToToken"),Zr=chunkVYIKXRYZ_cjs.a((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}),"convertTokenAssetToToken"),Qr=chunkVYIKXRYZ_cjs.a((t,e)=>t.type==="TOKEN"?Zr(t,e):t.type==="SOL"||t.type==="ETH"?Jr(t):null,"convertDiffAssetToToken");var Ut=chunkVYIKXRYZ_cjs.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:base.base64.encode(base.base58.decode(t.account))})}catch(n){return console.error("solana.message.scan() error",n),null}},"scanSolanaTransaction");var ve=chunkVYIKXRYZ_cjs.a(async({simulationParams:t,network:e,provider:r})=>{let{params:n}=t,a=await Ut(t),{simulation:s,validation:l}=a?.result??{},c=s?.account_summary?s:void 0,i={title:"Transaction Details",items:[ce("Raw Data",t.params.transactionBase64)]},d=[i],p=!1,m,u;if(!l||l.result_type==="Warning"?u=Ke[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"?u=Ke[vmModuleTypes.AlertType.DANGER]:a?.error_details&&(u=wt(a.error_details)),c){let{balanceChange:y,otherAffectedAddresses:g}=Lt(n.account,c,e);if(m=y,g.length>0){let h=c.account_summary.account_assets_diff,T=h?.filter(P=>P.out&&P.out.raw_value>0)??[],A=h?.filter(P=>P.in&&P.in.raw_value>0)??[];T.length>0&&A.length>0?(i.items.push(E("Account",n.account)),i.items.push(Ue("Interacting with",g))):(i.items.push(E(g.length===1?"From":"Account",n.account)),i.items.push(g.length===1?E("To",g[0]):Ue("Interacting with",g)));}else i.items.push(E("Account",n.account));p=!0;}else {let{balanceChange:y,details:g}=await _t(n.transactionBase64,n.account,e,r);m=y,d.push(...g);}return {isSimulationSuccessful:p,details:d,alert:u,balanceChange:m}},"explainTransaction");var rn="https://explorer.solana.com";function xe(t,e,r="tx"){try{let n=t.explorerUrl?new URL(t.explorerUrl):new URL(rn);return n.pathname+=`${r}/${e}`,n.toString()}catch{return `${t.explorerUrl}/${r}/${e}`}}chunkVYIKXRYZ_cjs.a(xe,"getExplorerAddressByNetwork");var qe=400,on=15,Ft=chunkVYIKXRYZ_cjs.a(async({provider:t,txHash:e,approvalController:r,request:n,network:a,commitment:s="confirmed",maxRetries:l=on})=>{let c=0,i=null,d=xe(a,e,"tx");for(;c<l;)try{let p=await t.getSignatureStatuses([kit.signature(e)],{searchTransactionHistory:!0}).send();if(!p?.value?.[0]){await new Promise(y=>setTimeout(y,qe)),c++;continue}let{confirmationStatus:m,err:u}=p.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}),s==="processed"&&m==="processed"||s==="confirmed"&&["confirmed","finalized"].includes(m)||s==="finalized"&&m==="finalized"))return r.onTransactionConfirmed({txHash:e,request:n,explorerLink:d}),!0;await new Promise(y=>setTimeout(y,qe)),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(m=>setTimeout(m,qe)),c++;}return i==="confirmed"||i==="finalized"?(r.onTransactionConfirmed({txHash:e,request:n,explorerLink:d}),!0):(r.onTransactionReverted({txHash:e,request:n}),!1)},"waitForTransactionConfirmation");var an=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()}),sn=zod.z.tuple([an]),Ot=chunkVYIKXRYZ_cjs.a(t=>sn.safeParse(t),"parseRequestParams");var Vt=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r,proxyApiUrl:n,blockaid:a})=>{let{params:s}=t,{data:l,success:c,error:i}=Ot(s);if(!c)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams(O("Transaction params are invalid",i))};let[{account:d,serializedTx:p,sendOptions:m}]=l,u=V({network:e,proxyApiUrl:n}),y=await Ae({serializedTx:p,provider:u,network:e});if(y)return {error:rpcErrors.rpcErrors.invalidParams(O(y,null))};let{details:g,isSimulationSuccessful:h,alert:T,balanceChange:A}=await ve({simulationParams:{dAppUrl:t.dappInfo.url,params:{account:d,chain:W(e),transactionBase64:p},blockaid:a},network:e,provider:u}),I={title:"Do you approve this transaction?",network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:g,alert:T,balanceChange:A,networkFeeSelector:!1,isSimulationSuccessful:h},P={type:vmModuleTypes.RpcMethod.SOLANA_SIGN_AND_SEND_TRANSACTION,account:d,data:p},L=await r.requestApproval({request:t,displayData:I,signingData:P});if("error"in L)return {error:L.error};let k;try{k=await ln(u,L,m);let v=xe(e,k);return await r.onTransactionPending({txHash:k,request:t,explorerLink:v}),Ft({provider:u,txHash:k,approvalController:r,request:t,network:e,commitment:m?.preflightCommitment}),{result:k}}catch(v){return console.error(v),{error:rpcErrors.rpcErrors.internal(O("Transaction failed",v))}}},"signAndSendTransaction"),ln=chunkVYIKXRYZ_cjs.a(async(t,e,r)=>"txHash"in e?e.txHash:await t.sendTransaction(e.signedData,{...r,encoding:"base64"}).send(),"getTxHash");var pn=zod.z.object({account:zod.z.string(),serializedTx:zod.z.string().base64()}),mn=zod.z.tuple([pn]),Gt=chunkVYIKXRYZ_cjs.a(t=>mn.safeParse(t),"parseRequestParams");var $t=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r,proxyApiUrl:n,blockaid:a})=>{let{params:s}=t,{data:l,success:c,error:i}=Gt(s);if(!c)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams(O("Transaction params are invalid",i))};let[{account:d,serializedTx:p}]=l,m=V({network:e,proxyApiUrl:n}),u=await Ae({serializedTx:p,provider:m,network:e});if(u)return {error:rpcErrors.rpcErrors.invalidParams(O(u,null))};let{details:y,isSimulationSuccessful:g,alert:h,balanceChange:T}=await ve({simulationParams:{dAppUrl:t.dappInfo.url,params:{account:d,chain:W(e),transactionBase64:p},blockaid:a},network:e,provider:m}),A={title:"Do you approve this transaction?",network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},details:y,alert:h,balanceChange:T&&Nt(T)?void 0:T,networkFeeSelector:!1,isSimulationSuccessful:g},I={type:vmModuleTypes.RpcMethod.SOLANA_SIGN_TRANSACTION,account:d,data:p},P=await r.requestApproval({request:t,displayData:A,signingData:I});return "error"in P?{error:P.error}:"signedData"in P?{result:P.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}},"signTransaction");var zt=chunkVYIKXRYZ_cjs.a(t=>{try{let e=base.base64.decode(t);return kit.getCompiledTransactionMessageDecoder().decode(e),!0}catch{return !1}},"isTransactionBytes");var yn=zod.z.object({account:zod.z.string(),serializedMessage:zod.z.string().base64()}).refine(({serializedMessage:t})=>!zt(t),{message:"Cannot use signMessage() calls for signing transactions"}),gn=zod.z.tuple([yn]),Kt=chunkVYIKXRYZ_cjs.a(t=>gn.safeParse(t),"parseRequestParams");var qt=chunkVYIKXRYZ_cjs.a(async({request:t,network:e,approvalController:r})=>{let{params:n}=t,{data:a,success:s,error:l}=Kt(n);if(!s)return console.error("invalid params",l),{error:rpcErrors.rpcErrors.invalidParams(O("Message signing params are invalid",l))};let[{account:c,serializedMessage:i}]=a,d=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:[E("Account",c),Le("Message",d.decode(base.base64.decode(i))),ce("Raw Message (Base-64)",i)]}],networkFeeSelector:!1},m={type:vmModuleTypes.RpcMethod.SOLANA_SIGN_MESSAGE,account:c,data:i},u=await r.requestApproval({request:t,displayData:p,signingData:m});return "error"in u?{error:u.error}:"signedData"in u?{result:u.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}},"signMessage");var _,$,ue,ne,oe,Xe=class Xe{constructor({approvalController:e,environment:r,appInfo:n,runtime:a}){chunkVYIKXRYZ_cjs.d(this,_,void 0);chunkVYIKXRYZ_cjs.d(this,$,void 0);chunkVYIKXRYZ_cjs.d(this,ue,void 0);chunkVYIKXRYZ_cjs.d(this,ne,void 0);chunkVYIKXRYZ_cjs.d(this,oe,void 0);let{proxyApiUrl:s}=ot(r);chunkVYIKXRYZ_cjs.e(this,ue,n),chunkVYIKXRYZ_cjs.e(this,_,s),chunkVYIKXRYZ_cjs.e(this,$,e),chunkVYIKXRYZ_cjs.e(this,oe,a),chunkVYIKXRYZ_cjs.c(this,_),chunkVYIKXRYZ_cjs.c(this,$),chunkVYIKXRYZ_cjs.c(this,ue),chunkVYIKXRYZ_cjs.e(this,ne,new Sn__default.default({baseURL:s+"/proxy/blockaid/",apiKey:dt,httpAgent:a?.httpAgent,fetch:a?.fetch}));}async getProvider(e){return V({network:e,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,_)})}getAddress(){return Promise.resolve({})}buildDerivationPath(e){return Q(e)}deriveAddress(e){return st({...e,approvalController:chunkVYIKXRYZ_cjs.c(this,$)})}deriveAddresses(e){return it({...e,approvalController:chunkVYIKXRYZ_cjs.c(this,$)})}getBalances(e){let r=new ie({storage:e.storage,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,_),fetch:chunkVYIKXRYZ_cjs.c(this,oe)?.fetch});return St({...e,tokenService:r,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,_),fetch:chunkVYIKXRYZ_cjs.c(this,oe)?.fetch})}getManifest(){let e=vmModuleTypes.parseManifest(rt);return e.success?e.data:void 0}getNetworkFee(e){return ut(e,chunkVYIKXRYZ_cjs.c(this,_))}getTransactionHistory(e){return It({network:e.network,address:e.address,proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,_)})}getTokens(e){return e.caipId?yt({caip2Id:e.caipId,proxyApiUrl:chunkVYIKXRYZ_cjs.c(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 $t({approvalController:chunkVYIKXRYZ_cjs.c(this,$),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,_),network:r,request:e,blockaid:chunkVYIKXRYZ_cjs.c(this,ne)});case vmModuleTypes.RpcMethod.SOLANA_SIGN_AND_SEND_TRANSACTION:return Vt({approvalController:chunkVYIKXRYZ_cjs.c(this,$),proxyApiUrl:chunkVYIKXRYZ_cjs.c(this,_),network:r,request:e,blockaid:chunkVYIKXRYZ_cjs.c(this,ne)});case vmModuleTypes.RpcMethod.SOLANA_SIGN_MESSAGE:return qt({approvalController:chunkVYIKXRYZ_cjs.c(this,$),network:r,request:e})}return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}};_=new WeakMap,$=new WeakMap,ue=new WeakMap,ne=new WeakMap,oe=new WeakMap,chunkVYIKXRYZ_cjs.a(Xe,"SvmModule");var Ht=Xe;
|
|
23
23
|
|
|
24
24
|
exports.SvmModule = Ht;
|
|
25
25
|
//# sourceMappingURL=out.js.map
|