@avalabs/avalanche-module 0.3.1 → 0.4.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 CHANGED
@@ -17,8 +17,8 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
17
17
  var B__default = /*#__PURE__*/_interopDefault(B);
18
18
  var ha__default = /*#__PURE__*/_interopDefault(ha);
19
19
 
20
- var Lt=Object.defineProperty;var Xt=(e,t,a)=>t in e?Lt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var U=(e,t,a)=>(Xt(e,typeof t!="symbol"?t+"":t,a),a),Fe=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var f=(e,t,a)=>(Fe(e,t,"read from private field"),a?a.call(e):t.get(e)),D=(e,t,a)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,a);},R=(e,t,a,r)=>(Fe(e,t,"write to private field"),r?r.call(e,a):t.set(e,a),a);var je={name:"Avalanche",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/bundle.js",packageName:"@avalabs/avalanche-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider.js",packageName:"@avalabs/avalanche-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:["avax:8aDU0Kqh-5d23op-B-r-4YbQFRbsgF9a","avax:YRLfeDBJpfEqUWe2FYR1OpXsnDDZeKWd","avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo","avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG","avax:imji8papUf2EhV3le337w1vgFauqkJg-","avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl"],namespaces:["avax"]},cointype:"9000",permissions:{rpc:{dapps:!0,methods:["avalanche_sendTransaction","avalanche_signTransaction","avalanche_signMessage"]}},manifestVersion:"0.0"};async function Oe(){return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0}}var qe=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,Je=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function pe(e,t,a="tx"){return `${e}/${a}/${t}`}function G({amount:e,decimals:t}){return e===void 0?new B__default.default(0):new B__default.default(e/10**t)}function ze({tx:e,address:t,networkToken:a,chainId:r,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(l=>l.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(l=>l.addresses)||[]),i=Ft({tx:e,isTestnet:o,networkToken:a,froms:s}),p=jt({tx:e,isTestnet:o,networkToken:a}),m=t.toLowerCase().startsWith("p-")?t.slice(2):t,d=s.has(m);return {hash:e.txHash,isContractCall:!1,isIncoming:!d,isOutgoing:d,from:[...s.values()].join(","),to:[...c.values()].join(","),isSender:d,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:i.toString()}],gasUsed:p.toString(),explorerLink:pe(n??"",e.txHash,"tx"),txType:e.txType,chainId:r.toString()}}function Ft({tx:e,isTestnet:t,networkToken:a,froms:r}){let n=["ImportTx","ExportTx"].includes(e.txType),o=e.txType==="BaseTx",s=e.emittedUtxos.filter(l=>l.asset.assetId===Z(!!t)&&!l.addresses.some(u=>r.has(u))).reduce((l,u)=>l.add(u.asset.amount),new B__default.default(0)),c=e.value.find(l=>l.assetId===Z(!!t))?.amount,i=s.gt(new B__default.default(0))?s:c?new B__default.default(c):new B__default.default(0)??new B__default.default(0),p=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,m=e.emittedUtxos.filter(l=>l.asset.assetId===Z(!!t)&&(e.txType==="ImportTx"&&l.consumedOnChainId===p||e.txType==="ExportTx"&&l.consumedOnChainId!==p)).reduce((l,u)=>l.add(u.amount),new B__default.default(0)),d=o?i:n?m:e.amountStaked.length===0?Ke(e.value,!!t):Ke(e.amountStaked,!!t);return G({amount:d?.toNumber(),decimals:a.decimals})}function jt({tx:e,isTestnet:t,networkToken:a}){let r=e.amountBurned?.filter(n=>n.assetId===Z(!!t)).reduce((n,o)=>n.add(o.amount),new B__default.default(0));return G({amount:r?.toNumber(),decimals:a.decimals})}function Ke(e,t){return e.filter(a=>a.assetId===Z(t)).reduce((a,r)=>a.add(r.amount),new B__default.default(0))}function Z(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function Qe({tx:e,address:t,networkToken:a,chainId:r,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(l=>l.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(l=>l.addresses)||[]),i=Wt({tx:e,isTestnet:o,networkToken:a}),p=$t({isTestnet:o,tx:e,totalAmountCreated:i,networkToken:a}),m=t.toLowerCase().startsWith("x-")?t.slice(2):t,d=s.has(m);return {hash:e.txHash,isContractCall:!1,isIncoming:!d,isOutgoing:d,from:[...s.values()].join(","),to:[...c.values()].join(","),isSender:d,timestamp:e.timestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:i.toString()}],gasUsed:p.toString(),explorerLink:pe(n??"",e.txHash,"tx"),txType:e.txType,chainId:r.toString()}}function Wt({tx:e,isTestnet:t,networkToken:a}){let r=["ImportTx","ExportTx"].includes(e.txType),n=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,o=e.emittedUtxos.filter(i=>i.asset.assetId===Ce(!!t)&&(e.txType==="ImportTx"&&i.consumedOnChainId===n||e.txType==="ExportTx"&&i.consumedOnChainId!==n)).reduce((i,p)=>i.add(p.asset.amount),new B__default.default(0)),s=e.amountCreated.filter(i=>i.assetId===Ce(!!t)).reduce((i,p)=>i.add(p.amount),new B__default.default(0));return G({amount:(r?o:s).toNumber(),decimals:a.decimals})}function $t({isTestnet:e,tx:t,totalAmountCreated:a,networkToken:r}){let o=t.amountUnlocked.filter(s=>s.assetId===Ce(!!e)).reduce((s,c)=>s.add(c.amount),new B__default.default(0)).minus(a);return G({amount:o.toNumber(),decimals:r.decimals})}function Ce(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var et=async({address:e,nextPageToken:t,offset:a,network:r,glacierService:n})=>{let{isTestnet:o,networkToken:s,explorerUrl:c,chainId:i}=r;if(!n.isHealthy())return {transactions:[],nextPageToken:""};let m=await n.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:Jt(e),network:o?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,pageSize:a,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),d=[];return qe(m)&&(d=m.transactions.map(l=>ze({tx:l,isTestnet:o,address:e,networkToken:s,explorerUrl:c,chainId:i}))),Je(m)&&(d=m.transactions.map(l=>Qe({tx:l,isTestnet:o,address:e,networkToken:s,explorerUrl:c,chainId:i}))),{transactions:d,nextPageToken:m.nextPageToken}},Jt=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var Kt={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},zt={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},at=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return Kt;case vmModuleTypes.Environment.DEV:return zt}};var ue=class extends Error{constructor(){super(...arguments);U(this,"message","Glacier is unhealthy. Try again later.");}},he=class{constructor({glacierApiUrl:t}){U(this,"glacierSdk");U(this,"isGlacierHealthy",!0);U(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:t});}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async listLatestPrimaryNetworkTransactions(t){try{return this.glacierSdk.primaryNetworkTransactions.listLatestPrimaryNetworkTransactions(t)}catch(a){throw a instanceof ue&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof ue&&this.setGlacierToUnhealthy(),a}}};var _=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:r=ee.exponential()})=>{let n=0,o=0,s;for(;o<a;){o>0&&await Yt(n);try{let i=await e(o);if(t(i))return i}catch(i){s=i;}n=r(o),o++;}let c=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(c)},ee=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function Yt(e){return new Promise(t=>setTimeout(t,e))}var Se=e=>_({operation:t=>e(t>0),maxRetries:2,backoffPolicy:ee.constant(1),isSuccess:t=>t?.status?.error_code!==429});function nt(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function be(e){let t,a=0;for(t=0;t<e.length;t++){let r=nt(e[t]??"");a=a+65027/r;}return (""+a).slice(0,16)}var De=e=>new core.Zodios(`${e}/proxy/coingecko`,[{method:"post",path:"/simple/price",parameters:[{name:"ids",type:"Query",schema:zod.string()},{name:"vs_currencies",type:"Query",schema:zod.string()},{name:"include_market_cap",type:"Query",schema:zod.string().optional()},{name:"include_24hr_vol",type:"Query",schema:zod.string().optional()},{name:"include_24hr_change",type:"Query",schema:zod.string().optional()},{name:"include_last_updated_at",type:"Query",schema:zod.string().optional()}],alias:"simplePrice",response:vmModuleTypes.RawSimplePriceResponseSchema},{method:"post",path:"/simple/token_price/:id",parameters:[{name:"id",type:"Path",schema:zod.string()},{name:"contract_addresses",type:"Query",schema:zod.string().array()},{name:"vs_currencies",type:"Query",schema:zod.string().array()},{name:"include_market_cap",type:"Query",schema:zod.boolean().optional()},{name:"include_24hr_vol",type:"Query",schema:zod.boolean().optional()},{name:"include_24hr_change",type:"Query",schema:zod.boolean().optional()}],alias:"simplePriceByContractAddresses",response:vmModuleTypes.SimplePriceResponseSchema}],{axiosConfig:{headers:{"Content-Type":"application/json"}}});var rt=coreCoingeckoSdk.getBasicCoingeckoHttp(),w,H,ae=class{constructor({storage:t,proxyApiUrl:a}){D(this,w,void 0);D(this,H,void 0);U(this,"transformSimplePriceResponse",(t,a=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let r={};return Object.keys(t).forEach(n=>{let o=t[n];r[n]={},a.forEach(s=>{r[n]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),r});R(this,w,t),R(this,H,a);}async getSimplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD]}){let r,o=`getSimplePrice-${t?`${be(t)}-${a.toString()}`:`${a.toString()}`}`;if(r=f(this,w)?.get?.(o),r)return r;try{r=await Se(s=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{r=void 0;}return f(this,w)?.set?.(o,r),r}async getPricesByAddresses(t,a,r=coreCoingeckoSdk.VsCurrencyType.USD){let n,s=`getPricesWithMarketDataByAddresses-${`${be(t)}-${a}-${r}`}`;if(n=f(this,w)?.get?.(s),n)return n;try{n=await Se(c=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:r,useCoingeckoProxy:c}));}catch{n=void 0;}return f(this,w)?.set?.(s,n),n}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:r=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:n=!1}){return n?De(f(this,H)).simplePriceByContractAddresses(void 0,{params:{id:t},queries:{contract_addresses:a,vs_currencies:[r],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}}):coreCoingeckoSdk.simpleTokenPrice(rt,{assetPlatformId:t,tokenAddresses:a,currencies:[r],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:r=!1,vol24:n=!1,change24:o=!1,lastUpdated:s=!1,useCoingeckoProxy:c=!1,shouldThrow:i=!0}){if(c){let p=await De(f(this,H)).simplePrice(void 0,{queries:{ids:t?.join(","),vs_currencies:a.join(","),include_market_cap:String(r),include_24hr_vol:String(n),include_24hr_change:String(o),include_last_updated_at:String(s)}});return this.transformSimplePriceResponse(p,a)}return coreCoingeckoSdk.simplePrice(rt,{coinIds:t,currencies:a,marketCap:r,vol24:n,change24:o,lastUpdated:s,shouldThrow:i})}};w=new WeakMap,H=new WeakMap;var la="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",pa="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",ot=zod.object({date:zod.string(),usd:zod.record(zod.number())});new core.Zodios(la,[{method:"get",path:"",alias:"getExchangeRates",response:ot}]);new core.Zodios(pa,[{method:"get",path:"",alias:"getExchangeRates",response:ot}]);var N=(e,t,a,r)=>({label:e,type:vmModuleTypes.DetailItemType.CURRENCY,value:t,maxDecimals:a,symbol:r}),g=(e,t,a="horizontal")=>({label:e,alignment:a,type:vmModuleTypes.DetailItemType.TEXT,value:t}),Re=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t}),v=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t});var E=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t});var it=e=>Object.keys(e).includes("unlockedUnstaked"),ct=e=>Object.keys(e).includes("locked");function ge(e){let t=Object.values(e).reduce(function(a,r){let n=r.reduce(function(o,s){let c=Number(s.amount);return o+c},0);return a+n},0);return BigInt(t)}function T(e,t){return t===void 0?0:t/10**e}var pt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:r,vol24:n,change24:o,coingeckoId:s})=>{let c=t.decimals,i={},p={unlockedUnstaked:e.unlockedUnstaked,unlockedStaked:e.unlockedStaked,pendingStaked:e.pendingStaked,lockedStaked:e.lockedStaked,lockedStakeable:e.lockedStakeable,lockedPlatform:e.lockedPlatform,atomicMemoryLocked:e.atomicMemoryLocked,atomicMemoryUnlocked:e.atomicMemoryUnlocked};for(let h in p){let y=p[h];if(!y||!y.length){i[h]=0;continue}y.forEach(k=>{let x=(i[h]??0)+Number(k.amount);i[h]=x;});}let m=new coreUtilsSdk.TokenUnit(i.unlockedUnstaked?i.unlockedUnstaked:0n,t.decimals,t.symbol),d=a?m.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,l=new coreUtilsSdk.TokenUnit(ge(e),t.decimals,t.symbol),u=a?l.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:l.toSubUnit(),balanceInCurrency:u,balanceDisplayValue:l.toDisplay(),balanceCurrencyDisplayValue:u?.toFixed(2),available:m.toSubUnit(),availableInCurrency:d,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:d?.toFixed(2),utxos:e,balancePerType:{lockedStaked:T(c,i.lockedStaked),lockedStakeable:T(c,i.lockedStakeable),lockedPlatform:T(c,i.lockedPlatform),atomicMemoryLocked:T(c,i.atomicMemoryLocked),atomicMemoryUnlocked:T(c,i.atomicMemoryUnlocked),unlockedUnstaked:T(c,i.unlockedUnstaked),unlockedStaked:T(c,i.unlockedStaked),pendingStaked:T(c,i.pendingStaked)},marketCap:r,vol24:n,change24:o,coingeckoId:s}};var dt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:r,vol24:n,change24:o,coingeckoId:s})=>{let c=t.decimals,i={},p={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let h in p){let y=p[h];if(!y||!y.length){i[h]=0;continue}y.forEach(k=>{let x=(i[h]??0)+Number(k.amount);i[h]=x;});}let m=new coreUtilsSdk.TokenUnit(i.unlocked?i.unlocked:0n,t.decimals,t.symbol),d=a?m.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,l=new coreUtilsSdk.TokenUnit(ge(e),t.decimals,t.symbol),u=a!==void 0?l.mul(a):void 0;return {...t,coingeckoId:s,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:l.toSubUnit(),balanceInCurrency:u?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:l.toDisplay(),balanceCurrencyDisplayValue:u?.toDisplay({fixedDp:2}),available:m.toSubUnit(),availableInCurrency:d,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:d?.toFixed(2),utxos:e,balancePerType:{unlocked:T(c,i.unlocked),locked:T(c,i.locked),atomicMemoryUnlocked:T(c,i.atomicMemoryUnlocked),atomicMemoryLocked:T(c,i.atomicMemoryLocked)},marketCap:r,vol24:n,change24:o}};var gt=async({addresses:e,currency:t,network:a,glacierService:r,tokenService:n})=>{if(!r.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let s=t.toLowerCase(),c=e[0]??"",i=a.networkToken,p=a.pricingProviders?.coingecko.nativeTokenId,m=a.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,d=a.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,l=await r.getChainBalance({blockchainId:m,network:d,addresses:e.join(",")}).then(K=>K.balances),u=p?await n.getSimplePrice({coinIds:[p],currencies:[s]}):{},h=u?.[p??""]?.[s]?.price??void 0,y=u?.[p??""]?.[s]?.marketCap??void 0,k=u?.[p??""]?.[s]?.vol24??void 0,A=u?.[p??""]?.[s]?.change24??void 0,x;return it(l)?(x=pt({balance:l,networkToken:i,priceInCurrency:h,marketCap:y,vol24:k,change24:A,coingeckoId:p??""}),{[c]:{[i.symbol]:x}}):ct(l)?(x=dt({balance:l,networkToken:i,priceInCurrency:h,marketCap:y,vol24:k,change24:A,coingeckoId:p??""}),{[c]:{[i.symbol]:x}}):Promise.reject("Incorrect type balance was returned from glacier")};function yt({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,r=ha__default.default.createHash("sha256").update(a).digest("base64");return "avax:"+ga(r).substring(0,32)}var ga=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var Tt=async({accountIndex:e,isTestnet:t,xpubXP:a,walletType:r})=>{if(a===void 0)throw rpcErrors.rpcErrors.invalidParams("xpubXP is required to get address");let n=t?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider(),o;switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:{o=coreWalletsSdk.Avalanche.getAddressPublicKeyFromXpub(a,e);break}case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{o=Buffer.from(a,"hex");break}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}return {[vmModuleTypes.NetworkVMType.AVM]:n.getAddress(o,"X"),[vmModuleTypes.NetworkVMType.PVM]:n.getAddress(o,"P")}};var ya=zod.z.union([zod.z.tuple([zod.z.string()]).describe("message to sign"),zod.z.tuple([zod.z.string().describe("message to sign"),zod.z.number().nonnegative().describe("account index")])]),At=e=>ya.safeParse(e);var vt=async({request:e,network:t,approvalController:a})=>{let r=At(e.params);if(!r.success)return console.error("invalid params",r.error),{error:rpcErrors.rpcErrors.invalidParams({message:"Params are invalid",data:{cause:r.error}})};let[n,o]=r.data,s=Buffer.from(n,"utf-8").toString("hex"),c={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE,data:s,accountIndex:o},i={title:"Sign Message",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} requests you to sign the following message`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:[{title:"Message",items:[n]}]},p=await a.requestApproval({request:e,displayData:i,signingData:c});return "error"in p?{error:p.error}:"signedData"in p?{result:p.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var xa=zod.z.object({transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"]),externalIndices:zod.z.number().array().optional(),internalIndices:zod.z.number().array().optional(),utxos:zod.z.string().array().optional()}),Pt=e=>xa.safeParse(e);var M=({isTestnet:e})=>e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider();var bt=({utxoHexes:e=[],vm:t})=>{try{let a=avalanchejs.utils.getManagerForVM(t).getDefaultCodec();return e.map(r=>{let n=avalanchejs.utils.hexToBuffer(r);return avalanchejs.Utxo.fromBytes(n,a)[0]})}catch{return []}};var ye=e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:case vmModuleTypes.TxType.AddSubnetValidator:case vmModuleTypes.TxType.CreateChain:case vmModuleTypes.TxType.CreateSubnet:case vmModuleTypes.TxType.RemoveSubnetValidator:case vmModuleTypes.TxType.AddPermissionlessValidator:return e;case vmModuleTypes.TxType.Export:return {...e,type:vmModuleTypes.TxType.Export,chain:e.chain,destination:e.destination};case vmModuleTypes.TxType.Import:return {...e,type:vmModuleTypes.TxType.Import,chain:e.chain,source:e.source};case vmModuleTypes.TxType.Base:return {...e,type:vmModuleTypes.TxType.Base,chain:e.chain};default:return}};var It=e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:return "Add Delegator";case vmModuleTypes.TxType.AddPermissionlessValidator:return "Add Validator";case vmModuleTypes.TxType.Export:return "Approve Export";case vmModuleTypes.TxType.Import:return "Approve Import";case vmModuleTypes.TxType.Base:return "Approve Transaction";case vmModuleTypes.TxType.AddSubnetValidator:return "Add Subnet Validator";case vmModuleTypes.TxType.CreateChain:return "Approve Create Chain";case vmModuleTypes.TxType.CreateSubnet:return "Approve Create Subnet";case vmModuleTypes.TxType.RemoveSubnetValidator:return "Remove Subnet Validator";default:return "Sign Message"}};var we=async({indices:e,chainAlias:t,isChange:a,isTestnet:r,xpubXP:n})=>{if(a&&t!=="X")return [];let o=M({isTestnet:r});return e.map(s=>coreWalletsSdk.Avalanche.getAddressFromXpub(n,s,o,t,a))};var Ne=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,Ee=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,Me=e=>e.type===vmModuleTypes.TxType.Export,Ve=e=>e.type===vmModuleTypes.TxType.Import,ka=e=>e.type===vmModuleTypes.TxType.Base,Ue=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,va=e=>e.type===vmModuleTypes.TxType.CreateChain,Pa=e=>e.type===vmModuleTypes.TxType.CreateSubnet,_e=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,Gr=e=>Ne(e)||Ee(e)||Ue(e)||_e(e),Hr=e=>Me(e)||Ve(e),Dt=e=>ka(e),Rt=e=>va(e),Bt=e=>Pa(e);function Le(e){return e===coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID}var fe=(e,t)=>{let a=[];if(Dt(e)){let{chain:n,outputs:o,memo:s}=e;a.push({title:"Chain Details",items:[g("Active chain",`Avalanche ${W[n]}`)]}),o.forEach((c,i)=>{let p=c.owners.flatMap(m=>[Re("To",m),N("Amount",c.amount,9,t)]);c.owners.length>1&&p.push(g("Threshold",c.threshold.toString())),a.push({title:i===0?"Balance Change":void 0,items:p});}),n!==avalanchejs.PVM&&s&&a.push({title:"Memo",items:[s]});}else if(Me(e)){let{amount:n,chain:o,destination:s,type:c}=e;a.push({title:"Transaction Details",items:[g("Source Chain",`Avalanche ${W[o]}`),g("Target Chain",`Avalanche ${W[s]}`),g("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),N("Amount",n,9,t)]});}else if(Ve(e)){let{amount:n,chain:o,source:s,type:c}=e;a.push({title:"Transaction Details",items:[g("Source Chain",`Avalanche ${W[s]}`),g("Destination Chain",`Avalanche ${W[o]}`),g("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),N("Amount",n,9,t)]});}else if(Bt(e)){let{threshold:n,controlKeys:o}=e;a.push({title:"Subnet Details",items:[g(o.length>1?"Owners":"Owner",o.join(`
21
- `),"vertical"),g("Signature Threshold",`${n}/${o.length}`,"vertical")]});}else if(Ne(e)){let{nodeID:n,start:o,end:s,stake:c,subnetID:i}=e,p=[v("Node ID",n),Le(i)?g("Subnet ID","Primary Network"):v("Subnet ID",i),N("Stake Amount",c,9,t),E("Start Date",o),E("End Date",s)];a.push({title:"Staking Details",items:p});}else if(Ee(e)){let{nodeID:n,delegationFee:o,start:s,end:c,stake:i,subnetID:p,signature:m,publicKey:d}=e,l=[v("Node ID",n),Le(p)?g("Subnet ID","Primary Network"):v("Subnet ID",p)];d&&m&&l.push(v("Public Key",d),v("Proof",m)),l.push(N("Stake Amount",i,9,t),g("Delegation Fee",`${o/1e4} %`),E("Start Date",s),E("End Date",c)),a.push({title:"Staking Details",items:l});}else if(Rt(e)){let{chainID:n,chainName:o,vmID:s,genesisData:c}=e,i=[g("Blockchain name",o,"vertical"),g("Blockchain ID",n,"vertical"),g("Virtual Machine ID",s,"vertical"),g("Genesis Data",c,"vertical")];a.push({title:"Blockchain Details",items:i});}else if(Ue(e)){let{nodeID:n,start:o,end:s,subnetID:c}=e,i=[v("Subnet ID",c),v("Node ID",n),E("Start Date",o),E("End Date",s)];a.push({title:"Staking Details",items:i});}else if(_e(e)){let{nodeID:n,subnetID:o}=e,s=[v("Node ID",n),v("Subnet ID",o)];a.push({title:"Staking Details",items:s});}let{txFee:r}=e;return r&&a.push({title:"Network Fee",items:[N("Fee Amount",r,9,t)]}),a},W=(r=>(r.AVM="X Chain",r.PVM="P Chain",r.EVM="C Chain",r))(W||{});var Ra=process.env.GLACIER_API_KEY,wt=async({request:e,network:t,approvalController:a,glacierApiUrl:r})=>{let n=Pt(e.params);if(!n.success)return {error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:n.error}})};try{let{transactionHex:o,chainAlias:s,externalIndices:c,internalIndices:i,utxos:p}=n.data,m=coreWalletsSdk.Avalanche.getVmByChainAlias(s),d=avalanchejs.utils.hexToBuffer(o),l=t.isTestnet??!1,u=M({isTestnet:l}),h=e.context?.currentAddress;if(!h||typeof h!="string")return {error:rpcErrors.rpcErrors.invalidRequest("No active account found")};let y=bt({utxoHexes:p,vm:m}),k=y.length?y:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:o,chainAlias:s,isTestnet:l,url:r,token:Ra}),A;if(s==="C")A=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:d,vm:m,utxos:k,fromAddress:h});else {let Y=avalanchejs.utils.unpackWithManager(m,d),C=e.context?.xpubXP;if(!C||typeof C!="string")return {error:rpcErrors.rpcErrors.invalidParams("Request should have xpubXP in context")};let ke=await we({indices:c??[],chainAlias:s,isChange:!1,isTestnet:l,xpubXP:C}),ve=await we({indices:i??[],chainAlias:s,isChange:!0,isTestnet:l,xpubXP:C}),Ut=[...new Set([h,...ke,...ve])].map(_t=>avalanchejs.utils.parse(_t)[2]);A=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:Y,utxos:k,provider:u,fromAddressBytes:Ut});}let x=await coreWalletsSdk.Avalanche.parseAvalancheTx(A,u,h),K=ye(x),z=It(x);if(x.type==="unknown"||K===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let le={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(A.toJSON()),data:x,vm:m,externalIndices:c,internalIndices:i},Te=fe(K,t.networkToken.symbol),Ae={title:z,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:Te,networkFeeSelector:!1},Q=await a.requestApproval({request:e,displayData:Ae,signingData:le});if("error"in Q)return {error:Q.error};let V=await Ba(u,Q,m);return wa({provider:u,txHash:V,vm:m,onTransactionConfirmed:a.onTransactionConfirmed,onTransactionReverted:a.onTransactionReverted}),{result:V}}catch(o){return console.error(o),{error:rpcErrors.rpcErrors.internal({message:"Unable to create transaction",data:{cause:o}})}}},Ba=async(e,t,a)=>{if("txHash"in t)return t.txHash;let{txID:r}=await e.issueTxHex(t.signedData,a);return r},wa=async({provider:e,txHash:t,vm:a,onTransactionConfirmed:r,onTransactionReverted:n})=>{try{a===avalanchejs.PVM?(await _({operation:()=>e.getApiP().getTxStatus({txID:t}),isSuccess:c=>["Committed","Dropped"].includes(c.status),maxRetries:7})).status==="Committed"?r(t):n(t):a===avalanchejs.AVM?(await _({operation:()=>e.getApiX().getTxStatus({txID:t}),isSuccess:c=>["Accepted","Rejected"].includes(c.status),maxRetries:7})).status==="Accepted"?r(t):n(t):(await _({operation:()=>e.getApiC().getAtomicTxStatus(t),isSuccess:c=>["Accepted","Dropped"].includes(c.status),maxRetries:7})).status==="Accepted"?r(t):n(t);}catch(s){console.error(s),s instanceof Error&&s.message.startsWith("Max retry exceeded.")||n(t);}};var Na=zod.z.object({from:zod.z.string().describe("Avalanche receiving address"),transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"])}),Nt=e=>Na.safeParse(e);var Va=process.env.GLACIER_API_KEY,Mt=async({request:e,network:t,approvalController:a,glacierApiUrl:r})=>{let n=Nt(e.params);if(!n.success)return console.error("invalid params",n.error),{error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let{transactionHex:o,chainAlias:s,from:c}=n.data,i=coreWalletsSdk.Avalanche.getVmByChainAlias(s),p=avalanchejs.utils.hexToBuffer(o),m=t.isTestnet??!1,d=M({isTestnet:m}),l=avalanchejs.utils.unpackWithManager(i,p),u=await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:o,chainAlias:s,isTestnet:m,url:r,token:Va}),h;try{let C=avalanchejs.utils.getManagerForVM(i).unpack(p,avalanchejs.avaxSerial.SignedTx),ke=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:l,utxos:u,provider:d,credentials:C.getCredentials()});h=l.getSigIndices().map((ve,He)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(ve,{unsignedTx:ke,credentialIndex:He})));}catch{h=l.getSigIndices().map(C=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(C)));}let y=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:l,provider:d,credentials:h,utxos:u}),k=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(c)[2]])[0];if(!k)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let A=y.getSigIndicesForAddress(k);if(!A)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let x=y.getSigIndices();if(!A.some(([Y,C])=>x[Y]?.includes(C)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let z=await coreWalletsSdk.Avalanche.parseAvalancheTx(y,d,c),le=ye(z);if(z.type==="unknown"||le===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let Te={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:z,vm:i,unsignedTxJson:JSON.stringify(y.toJSON()),ownSignatureIndices:A},Ae=fe(le,t.networkToken.symbol),Q={title:"Sign Transaction",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} requests you to sign the following transaction`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:Ae},V=await a.requestApproval({request:e,displayData:Q,signingData:Te});return "error"in V?{error:V.error}:"signedData"in V?{result:V.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var q,ce,J,X,Vt=class{constructor({approvalController:t,environment:a}){D(this,q,void 0);D(this,ce,void 0);D(this,J,void 0);D(this,X,void 0);let{glacierApiUrl:r,proxyApiUrl:n}=at(a);R(this,q,new he({glacierApiUrl:r})),R(this,ce,n),R(this,J,r),R(this,X,t);}getProvider(t){return M({isTestnet:!!t.isTestnet})}getAddress({accountIndex:t,xpubXP:a,isTestnet:r,walletType:n}){return Tt({accountIndex:t,xpubXP:a,isTestnet:r,walletType:n})}getBalances({addresses:t,network:a,storage:r,currency:n}){let o=new ae({storage:r,proxyApiUrl:f(this,ce)});return gt({addresses:t,currency:n,network:a,glacierService:f(this,q),tokenService:o})}getManifest(){let t=vmModuleTypes.parseManifest(je);return t.success?t.data:void 0}getNetworkFee(t){return Oe()}getTransactionHistory({network:t,address:a,nextPageToken:r,offset:n}){return et({network:t,address:a,nextPageToken:r,offset:n,glacierService:f(this,q)})}getTokens(t){return Promise.resolve([])}async onRpcRequest(t,a){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return vt({request:t,network:a,approvalController:f(this,X)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return Mt({request:t,network:a,approvalController:f(this,X),glacierApiUrl:f(this,J)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return wt({request:t,network:a,approvalController:f(this,X),glacierApiUrl:f(this,J)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:a}){return yt({blockchainId:t,isTestnet:a})}};q=new WeakMap,ce=new WeakMap,J=new WeakMap,X=new WeakMap;var Fs=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,js=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
20
+ var Lt=Object.defineProperty;var Xt=(e,t,a)=>t in e?Lt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var U=(e,t,a)=>(Xt(e,typeof t!="symbol"?t+"":t,a),a),Fe=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var f=(e,t,a)=>(Fe(e,t,"read from private field"),a?a.call(e):t.get(e)),D=(e,t,a)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,a);},R=(e,t,a,r)=>(Fe(e,t,"write to private field"),r?r.call(e,a):t.set(e,a),a);var je={name:"Avalanche",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/bundle.js",packageName:"@avalabs/avalanche-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider.js",packageName:"@avalabs/avalanche-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:["avax:8aDU0Kqh-5d23op-B-r-4YbQFRbsgF9a","avax:YRLfeDBJpfEqUWe2FYR1OpXsnDDZeKWd","avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo","avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG","avax:imji8papUf2EhV3le337w1vgFauqkJg-","avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl"],namespaces:["avax"]},cointype:"9000",permissions:{rpc:{dapps:!0,methods:["avalanche_sendTransaction","avalanche_signTransaction","avalanche_signMessage"]}},manifestVersion:"0.0"};async function Oe(){return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0}}var qe=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,Je=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function pe(e,t,a="tx"){return `${e}/${a}/${t}`}function G({amount:e,decimals:t}){return e===void 0?new B__default.default(0):new B__default.default(e/10**t)}function ze({tx:e,address:t,networkToken:a,chainId:r,explorerUrl:n,isTestnet:s}){let i=new Set(e.consumedUtxos.flatMap(l=>l.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(l=>l.addresses)||[]),o=Ft({tx:e,isTestnet:s,networkToken:a,froms:i}),p=jt({tx:e,isTestnet:s,networkToken:a}),m=t.toLowerCase().startsWith("p-")?t.slice(2):t,d=i.has(m);return {hash:e.txHash,isContractCall:!1,isIncoming:!d,isOutgoing:d,from:[...i.values()].join(","),to:[...c.values()].join(","),isSender:d,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:o.toString()}],gasUsed:p.toString(),explorerLink:pe(n??"",e.txHash,"tx"),txType:e.txType,chainId:r.toString()}}function Ft({tx:e,isTestnet:t,networkToken:a,froms:r}){let n=["ImportTx","ExportTx"].includes(e.txType),s=e.txType==="BaseTx",i=e.emittedUtxos.filter(l=>l.asset.assetId===Z(!!t)&&!l.addresses.some(u=>r.has(u))).reduce((l,u)=>l.add(u.asset.amount),new B__default.default(0)),c=e.value.find(l=>l.assetId===Z(!!t))?.amount,o=i.gt(new B__default.default(0))?i:c?new B__default.default(c):new B__default.default(0)??new B__default.default(0),p=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,m=e.emittedUtxos.filter(l=>l.asset.assetId===Z(!!t)&&(e.txType==="ImportTx"&&l.consumedOnChainId===p||e.txType==="ExportTx"&&l.consumedOnChainId!==p)).reduce((l,u)=>l.add(u.amount),new B__default.default(0)),d=s?o:n?m:e.amountStaked.length===0?Ke(e.value,!!t):Ke(e.amountStaked,!!t);return G({amount:d?.toNumber(),decimals:a.decimals})}function jt({tx:e,isTestnet:t,networkToken:a}){let r=e.amountBurned?.filter(n=>n.assetId===Z(!!t)).reduce((n,s)=>n.add(s.amount),new B__default.default(0));return G({amount:r?.toNumber(),decimals:a.decimals})}function Ke(e,t){return e.filter(a=>a.assetId===Z(t)).reduce((a,r)=>a.add(r.amount),new B__default.default(0))}function Z(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function Qe({tx:e,address:t,networkToken:a,chainId:r,explorerUrl:n,isTestnet:s}){let i=new Set(e.consumedUtxos.flatMap(l=>l.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(l=>l.addresses)||[]),o=Wt({tx:e,isTestnet:s,networkToken:a}),p=$t({isTestnet:s,tx:e,totalAmountCreated:o,networkToken:a}),m=t.toLowerCase().startsWith("x-")?t.slice(2):t,d=i.has(m);return {hash:e.txHash,isContractCall:!1,isIncoming:!d,isOutgoing:d,from:[...i.values()].join(","),to:[...c.values()].join(","),isSender:d,timestamp:e.timestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:o.toString()}],gasUsed:p.toString(),explorerLink:pe(n??"",e.txHash,"tx"),txType:e.txType,chainId:r.toString()}}function Wt({tx:e,isTestnet:t,networkToken:a}){let r=["ImportTx","ExportTx"].includes(e.txType),n=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,s=e.emittedUtxos.filter(o=>o.asset.assetId===Ce(!!t)&&(e.txType==="ImportTx"&&o.consumedOnChainId===n||e.txType==="ExportTx"&&o.consumedOnChainId!==n)).reduce((o,p)=>o.add(p.asset.amount),new B__default.default(0)),i=e.amountCreated.filter(o=>o.assetId===Ce(!!t)).reduce((o,p)=>o.add(p.amount),new B__default.default(0));return G({amount:(r?s:i).toNumber(),decimals:a.decimals})}function $t({isTestnet:e,tx:t,totalAmountCreated:a,networkToken:r}){let s=t.amountUnlocked.filter(i=>i.assetId===Ce(!!e)).reduce((i,c)=>i.add(c.amount),new B__default.default(0)).minus(a);return G({amount:s.toNumber(),decimals:r.decimals})}function Ce(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var et=async({address:e,nextPageToken:t,offset:a,network:r,glacierService:n})=>{let{isTestnet:s,networkToken:i,explorerUrl:c,chainId:o}=r;if(!n.isHealthy())return {transactions:[],nextPageToken:""};let m=await n.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:Jt(e),network:s?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,pageSize:a,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),d=[];return qe(m)&&(d=m.transactions.map(l=>ze({tx:l,isTestnet:s,address:e,networkToken:i,explorerUrl:c,chainId:o}))),Je(m)&&(d=m.transactions.map(l=>Qe({tx:l,isTestnet:s,address:e,networkToken:i,explorerUrl:c,chainId:o}))),{transactions:d,nextPageToken:m.nextPageToken}},Jt=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var Kt={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},zt={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},at=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return Kt;case vmModuleTypes.Environment.DEV:return zt}};var ue=class extends Error{constructor(){super(...arguments);U(this,"message","Glacier is unhealthy. Try again later.");}},he=class{constructor({glacierApiUrl:t}){U(this,"glacierSdk");U(this,"isGlacierHealthy",!0);U(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:t});}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async listLatestPrimaryNetworkTransactions(t){try{return this.glacierSdk.primaryNetworkTransactions.listLatestPrimaryNetworkTransactions(t)}catch(a){throw a instanceof ue&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof ue&&this.setGlacierToUnhealthy(),a}}};var _=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:r=ee.exponential()})=>{let n=0,s=0,i;for(;s<a;){s>0&&await Yt(n);try{let o=await e(s);if(t(o))return o}catch(o){i=o;}n=r(s),s++;}let c=i?`Max retry exceeded. ${i}`:"Max retry exceeded.";throw new Error(c)},ee=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function Yt(e){return new Promise(t=>setTimeout(t,e))}var Se=e=>_({operation:t=>e(t>0),maxRetries:2,backoffPolicy:ee.constant(1),isSuccess:t=>t?.status?.error_code!==429});function nt(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function be(e){let t,a=0;for(t=0;t<e.length;t++){let r=nt(e[t]??"");a=a+65027/r;}return (""+a).slice(0,16)}var De=e=>new core.Zodios(`${e}/proxy/coingecko`,[{method:"post",path:"/simple/price",parameters:[{name:"ids",type:"Query",schema:zod.string()},{name:"vs_currencies",type:"Query",schema:zod.string()},{name:"include_market_cap",type:"Query",schema:zod.string().optional()},{name:"include_24hr_vol",type:"Query",schema:zod.string().optional()},{name:"include_24hr_change",type:"Query",schema:zod.string().optional()},{name:"include_last_updated_at",type:"Query",schema:zod.string().optional()}],alias:"simplePrice",response:vmModuleTypes.RawSimplePriceResponseSchema},{method:"post",path:"/simple/token_price/:id",parameters:[{name:"id",type:"Path",schema:zod.string()},{name:"contract_addresses",type:"Query",schema:zod.string().array()},{name:"vs_currencies",type:"Query",schema:zod.string().array()},{name:"include_market_cap",type:"Query",schema:zod.boolean().optional()},{name:"include_24hr_vol",type:"Query",schema:zod.boolean().optional()},{name:"include_24hr_change",type:"Query",schema:zod.boolean().optional()}],alias:"simplePriceByContractAddresses",response:vmModuleTypes.SimplePriceResponseSchema}],{axiosConfig:{headers:{"Content-Type":"application/json"}}});var rt=coreCoingeckoSdk.getBasicCoingeckoHttp(),w,H,ae=class{constructor({storage:t,proxyApiUrl:a}){D(this,w,void 0);D(this,H,void 0);U(this,"transformSimplePriceResponse",(t,a=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let r={};return Object.keys(t).forEach(n=>{let s=t[n];r[n]={},a.forEach(i=>{r[n]={[i]:{price:s?.[i],change24:s?.[`${i}_24h_change`],vol24:s?.[`${i}_24h_vol`],marketCap:s?.[`${i}_market_cap`]}};});}),r});R(this,w,t),R(this,H,a);}async getSimplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD]}){let r,s=`getSimplePrice-${t?`${be(t)}-${a.toString()}`:`${a.toString()}`}`;if(r=f(this,w)?.get?.(s),r)return r;try{r=await Se(i=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{r=void 0;}return f(this,w)?.set?.(s,r),r}async getPricesByAddresses(t,a,r=coreCoingeckoSdk.VsCurrencyType.USD){let n,i=`getPricesWithMarketDataByAddresses-${`${be(t)}-${a}-${r}`}`;if(n=f(this,w)?.get?.(i),n)return n;try{n=await Se(c=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:r,useCoingeckoProxy:c}));}catch{n=void 0;}return f(this,w)?.set?.(i,n),n}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:r=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:n=!1}){return n?De(f(this,H)).simplePriceByContractAddresses(void 0,{params:{id:t},queries:{contract_addresses:a,vs_currencies:[r],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}}):coreCoingeckoSdk.simpleTokenPrice(rt,{assetPlatformId:t,tokenAddresses:a,currencies:[r],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:r=!1,vol24:n=!1,change24:s=!1,lastUpdated:i=!1,useCoingeckoProxy:c=!1,shouldThrow:o=!0}){if(c){let p=await De(f(this,H)).simplePrice(void 0,{queries:{ids:t?.join(","),vs_currencies:a.join(","),include_market_cap:String(r),include_24hr_vol:String(n),include_24hr_change:String(s),include_last_updated_at:String(i)}});return this.transformSimplePriceResponse(p,a)}return coreCoingeckoSdk.simplePrice(rt,{coinIds:t,currencies:a,marketCap:r,vol24:n,change24:s,lastUpdated:i,shouldThrow:o})}};w=new WeakMap,H=new WeakMap;var la="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",pa="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",ot=zod.object({date:zod.string(),usd:zod.record(zod.number())});new core.Zodios(la,[{method:"get",path:"",alias:"getExchangeRates",response:ot}]);new core.Zodios(pa,[{method:"get",path:"",alias:"getExchangeRates",response:ot}]);var N=(e,t,a,r)=>({label:e,type:vmModuleTypes.DetailItemType.CURRENCY,value:t,maxDecimals:a,symbol:r}),g=(e,t,a="horizontal")=>({label:e,alignment:a,type:vmModuleTypes.DetailItemType.TEXT,value:t});var Re=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t}),v=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t});var E=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t});var it=e=>Object.keys(e).includes("unlockedUnstaked"),ct=e=>Object.keys(e).includes("locked");function ge(e){let t=Object.values(e).reduce(function(a,r){let n=r.reduce(function(s,i){let c=Number(i.amount);return s+c},0);return a+n},0);return BigInt(t)}function T(e,t){return t===void 0?0:t/10**e}var pt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:r,vol24:n,change24:s,coingeckoId:i})=>{let c=t.decimals,o={},p={unlockedUnstaked:e.unlockedUnstaked,unlockedStaked:e.unlockedStaked,pendingStaked:e.pendingStaked,lockedStaked:e.lockedStaked,lockedStakeable:e.lockedStakeable,lockedPlatform:e.lockedPlatform,atomicMemoryLocked:e.atomicMemoryLocked,atomicMemoryUnlocked:e.atomicMemoryUnlocked};for(let h in p){let y=p[h];if(!y||!y.length){o[h]=0;continue}y.forEach(k=>{let x=(o[h]??0)+Number(k.amount);o[h]=x;});}let m=new coreUtilsSdk.TokenUnit(o.unlockedUnstaked?o.unlockedUnstaked:0n,t.decimals,t.symbol),d=a?m.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,l=new coreUtilsSdk.TokenUnit(ge(e),t.decimals,t.symbol),u=a?l.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:l.toSubUnit(),balanceInCurrency:u,balanceDisplayValue:l.toDisplay(),balanceCurrencyDisplayValue:u?.toFixed(2),available:m.toSubUnit(),availableInCurrency:d,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:d?.toFixed(2),utxos:e,balancePerType:{lockedStaked:T(c,o.lockedStaked),lockedStakeable:T(c,o.lockedStakeable),lockedPlatform:T(c,o.lockedPlatform),atomicMemoryLocked:T(c,o.atomicMemoryLocked),atomicMemoryUnlocked:T(c,o.atomicMemoryUnlocked),unlockedUnstaked:T(c,o.unlockedUnstaked),unlockedStaked:T(c,o.unlockedStaked),pendingStaked:T(c,o.pendingStaked)},marketCap:r,vol24:n,change24:s,coingeckoId:i}};var dt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:r,vol24:n,change24:s,coingeckoId:i})=>{let c=t.decimals,o={},p={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let h in p){let y=p[h];if(!y||!y.length){o[h]=0;continue}y.forEach(k=>{let x=(o[h]??0)+Number(k.amount);o[h]=x;});}let m=new coreUtilsSdk.TokenUnit(o.unlocked?o.unlocked:0n,t.decimals,t.symbol),d=a?m.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,l=new coreUtilsSdk.TokenUnit(ge(e),t.decimals,t.symbol),u=a!==void 0?l.mul(a):void 0;return {...t,coingeckoId:i,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:l.toSubUnit(),balanceInCurrency:u?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:l.toDisplay(),balanceCurrencyDisplayValue:u?.toDisplay({fixedDp:2}),available:m.toSubUnit(),availableInCurrency:d,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:d?.toFixed(2),utxos:e,balancePerType:{unlocked:T(c,o.unlocked),locked:T(c,o.locked),atomicMemoryUnlocked:T(c,o.atomicMemoryUnlocked),atomicMemoryLocked:T(c,o.atomicMemoryLocked)},marketCap:r,vol24:n,change24:s}};var gt=async({addresses:e,currency:t,network:a,glacierService:r,tokenService:n})=>{if(!r.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let i=t.toLowerCase(),c=e[0]??"",o=a.networkToken,p=a.pricingProviders?.coingecko.nativeTokenId,m=a.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,d=a.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,l=await r.getChainBalance({blockchainId:m,network:d,addresses:e.join(",")}).then(K=>K.balances),u=p?await n.getSimplePrice({coinIds:[p],currencies:[i]}):{},h=u?.[p??""]?.[i]?.price??void 0,y=u?.[p??""]?.[i]?.marketCap??void 0,k=u?.[p??""]?.[i]?.vol24??void 0,A=u?.[p??""]?.[i]?.change24??void 0,x;return it(l)?(x=pt({balance:l,networkToken:o,priceInCurrency:h,marketCap:y,vol24:k,change24:A,coingeckoId:p??""}),{[c]:{[o.symbol]:x}}):ct(l)?(x=dt({balance:l,networkToken:o,priceInCurrency:h,marketCap:y,vol24:k,change24:A,coingeckoId:p??""}),{[c]:{[o.symbol]:x}}):Promise.reject("Incorrect type balance was returned from glacier")};function yt({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,r=ha__default.default.createHash("sha256").update(a).digest("base64");return "avax:"+ga(r).substring(0,32)}var ga=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var Tt=async({accountIndex:e,isTestnet:t,xpubXP:a,walletType:r})=>{if(a===void 0)throw rpcErrors.rpcErrors.invalidParams("xpubXP is required to get address");let n=t?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider(),s;switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:{s=coreWalletsSdk.Avalanche.getAddressPublicKeyFromXpub(a,e);break}case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{s=Buffer.from(a,"hex");break}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}return {[vmModuleTypes.NetworkVMType.AVM]:n.getAddress(s,"X"),[vmModuleTypes.NetworkVMType.PVM]:n.getAddress(s,"P")}};var ya=zod.z.union([zod.z.tuple([zod.z.string()]).describe("message to sign"),zod.z.tuple([zod.z.string().describe("message to sign"),zod.z.number().nonnegative().describe("account index")])]),At=e=>ya.safeParse(e);var vt=async({request:e,network:t,approvalController:a})=>{let r=At(e.params);if(!r.success)return console.error("invalid params",r.error),{error:rpcErrors.rpcErrors.invalidParams({message:"Params are invalid",data:{cause:r.error}})};let[n,s]=r.data,i=Buffer.from(n,"utf-8").toString("hex"),c={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE,data:i,accountIndex:s},o={title:"Sign Message",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} requests you to sign the following message`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:[{title:"Message",items:[n]}]},p=await a.requestApproval({request:e,displayData:o,signingData:c});return "error"in p?{error:p.error}:"signedData"in p?{result:p.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var xa=zod.z.object({transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"]),externalIndices:zod.z.number().array().optional(),internalIndices:zod.z.number().array().optional(),utxos:zod.z.string().array().optional()}),Pt=e=>xa.safeParse(e);var M=({isTestnet:e})=>e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider();var bt=({utxoHexes:e=[],vm:t})=>{try{let a=avalanchejs.utils.getManagerForVM(t).getDefaultCodec();return e.map(r=>{let n=avalanchejs.utils.hexToBuffer(r);return avalanchejs.Utxo.fromBytes(n,a)[0]})}catch{return []}};var ye=e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:case vmModuleTypes.TxType.AddSubnetValidator:case vmModuleTypes.TxType.CreateChain:case vmModuleTypes.TxType.CreateSubnet:case vmModuleTypes.TxType.RemoveSubnetValidator:case vmModuleTypes.TxType.AddPermissionlessValidator:return e;case vmModuleTypes.TxType.Export:return {...e,type:vmModuleTypes.TxType.Export,chain:e.chain,destination:e.destination};case vmModuleTypes.TxType.Import:return {...e,type:vmModuleTypes.TxType.Import,chain:e.chain,source:e.source};case vmModuleTypes.TxType.Base:return {...e,type:vmModuleTypes.TxType.Base,chain:e.chain};default:return}};var It=e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:return "Add Delegator";case vmModuleTypes.TxType.AddPermissionlessValidator:return "Add Validator";case vmModuleTypes.TxType.Export:return "Approve Export";case vmModuleTypes.TxType.Import:return "Approve Import";case vmModuleTypes.TxType.Base:return "Approve Transaction";case vmModuleTypes.TxType.AddSubnetValidator:return "Add Subnet Validator";case vmModuleTypes.TxType.CreateChain:return "Approve Create Chain";case vmModuleTypes.TxType.CreateSubnet:return "Approve Create Subnet";case vmModuleTypes.TxType.RemoveSubnetValidator:return "Remove Subnet Validator";default:return "Sign Message"}};var we=async({indices:e,chainAlias:t,isChange:a,isTestnet:r,xpubXP:n})=>{if(a&&t!=="X")return [];let s=M({isTestnet:r});return e.map(i=>coreWalletsSdk.Avalanche.getAddressFromXpub(n,i,s,t,a))};var Ne=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,Ee=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,Me=e=>e.type===vmModuleTypes.TxType.Export,Ve=e=>e.type===vmModuleTypes.TxType.Import,ka=e=>e.type===vmModuleTypes.TxType.Base,Ue=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,va=e=>e.type===vmModuleTypes.TxType.CreateChain,Pa=e=>e.type===vmModuleTypes.TxType.CreateSubnet,_e=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,Gr=e=>Ne(e)||Ee(e)||Ue(e)||_e(e),Hr=e=>Me(e)||Ve(e),Dt=e=>ka(e),Rt=e=>va(e),Bt=e=>Pa(e);function Le(e){return e===coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID}var fe=(e,t)=>{let a=[];if(Dt(e)){let{chain:n,outputs:s,memo:i}=e;a.push({title:"Chain Details",items:[g("Active chain",`Avalanche ${W[n]}`)]}),s.forEach((c,o)=>{let p=c.owners.flatMap(m=>[Re("To",m),N("Amount",c.amount,9,t)]);c.owners.length>1&&p.push(g("Threshold",c.threshold.toString())),a.push({title:o===0?"Balance Change":void 0,items:p});}),n!==avalanchejs.PVM&&i&&a.push({title:"Memo",items:[i]});}else if(Me(e)){let{amount:n,chain:s,destination:i,type:c}=e;a.push({title:"Transaction Details",items:[g("Source Chain",`Avalanche ${W[s]}`),g("Target Chain",`Avalanche ${W[i]}`),g("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),N("Amount",n,9,t)]});}else if(Ve(e)){let{amount:n,chain:s,source:i,type:c}=e;a.push({title:"Transaction Details",items:[g("Source Chain",`Avalanche ${W[i]}`),g("Destination Chain",`Avalanche ${W[s]}`),g("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),N("Amount",n,9,t)]});}else if(Bt(e)){let{threshold:n,controlKeys:s}=e;a.push({title:"Subnet Details",items:[g(s.length>1?"Owners":"Owner",s.join(`
21
+ `),"vertical"),g("Signature Threshold",`${n}/${s.length}`,"vertical")]});}else if(Ne(e)){let{nodeID:n,start:s,end:i,stake:c,subnetID:o}=e,p=[v("Node ID",n),Le(o)?g("Subnet ID","Primary Network"):v("Subnet ID",o),N("Stake Amount",c,9,t),E("Start Date",s),E("End Date",i)];a.push({title:"Staking Details",items:p});}else if(Ee(e)){let{nodeID:n,delegationFee:s,start:i,end:c,stake:o,subnetID:p,signature:m,publicKey:d}=e,l=[v("Node ID",n),Le(p)?g("Subnet ID","Primary Network"):v("Subnet ID",p)];d&&m&&l.push(v("Public Key",d),v("Proof",m)),l.push(N("Stake Amount",o,9,t),g("Delegation Fee",`${s/1e4} %`),E("Start Date",i),E("End Date",c)),a.push({title:"Staking Details",items:l});}else if(Rt(e)){let{chainID:n,chainName:s,vmID:i,genesisData:c}=e,o=[g("Blockchain name",s,"vertical"),g("Blockchain ID",n,"vertical"),g("Virtual Machine ID",i,"vertical"),g("Genesis Data",c,"vertical")];a.push({title:"Blockchain Details",items:o});}else if(Ue(e)){let{nodeID:n,start:s,end:i,subnetID:c}=e,o=[v("Subnet ID",c),v("Node ID",n),E("Start Date",s),E("End Date",i)];a.push({title:"Staking Details",items:o});}else if(_e(e)){let{nodeID:n,subnetID:s}=e,i=[v("Node ID",n),v("Subnet ID",s)];a.push({title:"Staking Details",items:i});}let{txFee:r}=e;return r&&a.push({title:"Network Fee",items:[N("Fee Amount",r,9,t)]}),a},W=(r=>(r.AVM="X Chain",r.PVM="P Chain",r.EVM="C Chain",r))(W||{});var Ra=process.env.GLACIER_API_KEY,wt=async({request:e,network:t,approvalController:a,glacierApiUrl:r})=>{let n=Pt(e.params);if(!n.success)return {error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:n.error}})};try{let{transactionHex:s,chainAlias:i,externalIndices:c,internalIndices:o,utxos:p}=n.data,m=coreWalletsSdk.Avalanche.getVmByChainAlias(i),d=avalanchejs.utils.hexToBuffer(s),l=t.isTestnet??!1,u=M({isTestnet:l}),h=e.context?.currentAddress;if(!h||typeof h!="string")return {error:rpcErrors.rpcErrors.invalidRequest("No active account found")};let y=bt({utxoHexes:p,vm:m}),k=y.length?y:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:s,chainAlias:i,isTestnet:l,url:r,token:Ra}),A;if(i==="C")A=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:d,vm:m,utxos:k,fromAddress:h});else {let Y=avalanchejs.utils.unpackWithManager(m,d),C=e.context?.xpubXP;if(!C||typeof C!="string")return {error:rpcErrors.rpcErrors.invalidParams("Request should have xpubXP in context")};let ke=await we({indices:c??[],chainAlias:i,isChange:!1,isTestnet:l,xpubXP:C}),ve=await we({indices:o??[],chainAlias:i,isChange:!0,isTestnet:l,xpubXP:C}),Ut=[...new Set([h,...ke,...ve])].map(_t=>avalanchejs.utils.parse(_t)[2]);A=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:Y,utxos:k,provider:u,fromAddressBytes:Ut});}let x=await coreWalletsSdk.Avalanche.parseAvalancheTx(A,u,h),K=ye(x),z=It(x);if(x.type==="unknown"||K===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let le={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(A.toJSON()),data:x,vm:m,externalIndices:c,internalIndices:o},Te=fe(K,t.networkToken.symbol),Ae={title:z,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:Te,networkFeeSelector:!1},Q=await a.requestApproval({request:e,displayData:Ae,signingData:le});if("error"in Q)return {error:Q.error};let V=await Ba(u,Q,m);return wa({provider:u,txHash:V,vm:m,onTransactionConfirmed:a.onTransactionConfirmed,onTransactionReverted:a.onTransactionReverted,requestId:e.requestId}),{result:V}}catch(s){return console.error(s),{error:rpcErrors.rpcErrors.internal({message:"Unable to create transaction",data:{cause:s}})}}},Ba=async(e,t,a)=>{if("txHash"in t)return t.txHash;let{txID:r}=await e.issueTxHex(t.signedData,a);return r},wa=async({provider:e,txHash:t,vm:a,onTransactionConfirmed:r,onTransactionReverted:n,requestId:s})=>{try{a===avalanchejs.PVM?(await _({operation:()=>e.getApiP().getTxStatus({txID:t}),isSuccess:o=>["Committed","Dropped"].includes(o.status),maxRetries:7})).status==="Committed"?r(t,s):n(t,s):a===avalanchejs.AVM?(await _({operation:()=>e.getApiX().getTxStatus({txID:t}),isSuccess:o=>["Accepted","Rejected"].includes(o.status),maxRetries:7})).status==="Accepted"?r(t,s):n(t,s):(await _({operation:()=>e.getApiC().getAtomicTxStatus(t),isSuccess:o=>["Accepted","Dropped"].includes(o.status),maxRetries:7})).status==="Accepted"?r(t,s):n(t,s);}catch(c){console.error(c),c instanceof Error&&c.message.startsWith("Max retry exceeded.")||n(t,s);}};var Na=zod.z.object({from:zod.z.string().describe("Avalanche receiving address"),transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"])}),Nt=e=>Na.safeParse(e);var Va=process.env.GLACIER_API_KEY,Mt=async({request:e,network:t,approvalController:a,glacierApiUrl:r})=>{let n=Nt(e.params);if(!n.success)return console.error("invalid params",n.error),{error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let{transactionHex:s,chainAlias:i,from:c}=n.data,o=coreWalletsSdk.Avalanche.getVmByChainAlias(i),p=avalanchejs.utils.hexToBuffer(s),m=t.isTestnet??!1,d=M({isTestnet:m}),l=avalanchejs.utils.unpackWithManager(o,p),u=await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:s,chainAlias:i,isTestnet:m,url:r,token:Va}),h;try{let C=avalanchejs.utils.getManagerForVM(o).unpack(p,avalanchejs.avaxSerial.SignedTx),ke=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:l,utxos:u,provider:d,credentials:C.getCredentials()});h=l.getSigIndices().map((ve,He)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(ve,{unsignedTx:ke,credentialIndex:He})));}catch{h=l.getSigIndices().map(C=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(C)));}let y=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:l,provider:d,credentials:h,utxos:u}),k=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(c)[2]])[0];if(!k)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let A=y.getSigIndicesForAddress(k);if(!A)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let x=y.getSigIndices();if(!A.some(([Y,C])=>x[Y]?.includes(C)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let z=await coreWalletsSdk.Avalanche.parseAvalancheTx(y,d,c),le=ye(z);if(z.type==="unknown"||le===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let Te={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:z,vm:o,unsignedTxJson:JSON.stringify(y.toJSON()),ownSignatureIndices:A},Ae=fe(le,t.networkToken.symbol),Q={title:"Sign Transaction",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} requests you to sign the following transaction`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:Ae},V=await a.requestApproval({request:e,displayData:Q,signingData:Te});return "error"in V?{error:V.error}:"signedData"in V?{result:V.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var q,ce,J,X,Vt=class{constructor({approvalController:t,environment:a}){D(this,q,void 0);D(this,ce,void 0);D(this,J,void 0);D(this,X,void 0);let{glacierApiUrl:r,proxyApiUrl:n}=at(a);R(this,q,new he({glacierApiUrl:r})),R(this,ce,n),R(this,J,r),R(this,X,t);}getProvider(t){return M({isTestnet:!!t.isTestnet})}getAddress({accountIndex:t,xpubXP:a,isTestnet:r,walletType:n}){return Tt({accountIndex:t,xpubXP:a,isTestnet:r,walletType:n})}getBalances({addresses:t,network:a,storage:r,currency:n}){let s=new ae({storage:r,proxyApiUrl:f(this,ce)});return gt({addresses:t,currency:n,network:a,glacierService:f(this,q),tokenService:s})}getManifest(){let t=vmModuleTypes.parseManifest(je);return t.success?t.data:void 0}getNetworkFee(t){return Oe()}getTransactionHistory({network:t,address:a,nextPageToken:r,offset:n}){return et({network:t,address:a,nextPageToken:r,offset:n,glacierService:f(this,q)})}getTokens(t){return Promise.resolve([])}async onRpcRequest(t,a){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return vt({request:t,network:a,approvalController:f(this,X)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return Mt({request:t,network:a,approvalController:f(this,X),glacierApiUrl:f(this,J)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return wt({request:t,network:a,approvalController:f(this,X),glacierApiUrl:f(this,J)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:a}){return yt({blockchainId:t,isTestnet:a})}};q=new WeakMap,ce=new WeakMap,J=new WeakMap,X=new WeakMap;var Fs=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,js=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
22
22
 
23
23
  exports.AvalancheModule = Vt;
24
24
  exports.isAddPermissionlessDelegatorTx = Ne;