@avalabs/avalanche-module 0.7.0 → 0.7.2

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
@@ -3,38 +3,38 @@
3
3
  var vmModuleTypes = require('@avalabs/vm-module-types');
4
4
  var rpcErrors = require('@metamask/rpc-errors');
5
5
  var glacierSdk = require('@avalabs/glacier-sdk');
6
- var R = require('big.js');
6
+ var B = require('big.js');
7
7
  var coreWalletsSdk = require('@avalabs/core-wallets-sdk');
8
8
  var coreCoingeckoSdk = require('@avalabs/core-coingecko-sdk');
9
9
  var zod = require('zod');
10
10
  var coreUtilsSdk = require('@avalabs/core-utils-sdk');
11
- var ca = require('crypto');
11
+ var da = require('crypto');
12
12
  var avalanchejs = require('@avalabs/avalanchejs');
13
13
 
14
14
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
15
 
16
- var R__default = /*#__PURE__*/_interopDefault(R);
17
- var ca__default = /*#__PURE__*/_interopDefault(ca);
16
+ var B__default = /*#__PURE__*/_interopDefault(B);
17
+ var da__default = /*#__PURE__*/_interopDefault(da);
18
18
 
19
- var Vt=Object.defineProperty;var Ut=(e,t,a)=>t in e?Vt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var V=(e,t,a)=>(Ut(e,typeof t!="symbol"?t+"":t,a),a),He=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var f=(e,t,a)=>(He(e,t,"read from private field"),a?a.call(e):t.get(e)),I=(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);},D=(e,t,a,r)=>(He(e,t,"write to private field"),r?r.call(e,a):t.set(e,a),a);var Fe={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 We=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 X({amount:e,decimals:t}){return e===void 0?new R__default.default(0):new R__default.default(e/10**t)}function Ke({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=Xt({tx:e,isTestnet:s,networkToken:a,froms:i}),p=Gt({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 Xt({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 R__default.default(0)),c=e.value.find(l=>l.assetId===Z(!!t))?.amount,o=i.gt(new R__default.default(0))?i:c?new R__default.default(c):new R__default.default(0)??new R__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 R__default.default(0)),d=s?o:n?m:e.amountStaked.length===0?qe(e.value,!!t):qe(e.amountStaked,!!t);return X({amount:d?.toNumber(),decimals:a.decimals})}function Gt({tx:e,isTestnet:t,networkToken:a}){let r=e.amountBurned?.filter(n=>n.assetId===Z(!!t)).reduce((n,s)=>n.add(s.amount),new R__default.default(0));return X({amount:r?.toNumber(),decimals:a.decimals})}function qe(e,t){return e.filter(a=>a.assetId===Z(t)).reduce((a,r)=>a.add(r.amount),new R__default.default(0))}function Z(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}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}),p=Ot({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 Ft({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 R__default.default(0)),i=e.amountCreated.filter(o=>o.assetId===Ce(!!t)).reduce((o,p)=>o.add(p.amount),new R__default.default(0));return X({amount:(r?s:i).toNumber(),decimals:a.decimals})}function Ot({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 R__default.default(0)).minus(a);return X({amount:s.toNumber(),decimals:r.decimals})}function Ce(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var Qe=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:$t(e),network:s?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,pageSize:a,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),d=[];return We(m)&&(d=m.transactions.map(l=>Ke({tx:l,isTestnet:s,address:e,networkToken:i,explorerUrl:c,chainId:o}))),Je(m)&&(d=m.transactions.map(l=>ze({tx:l,isTestnet:s,address:e,networkToken:i,explorerUrl:c,chainId:o}))),{transactions:d,nextPageToken:m.nextPageToken}},$t=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var Wt={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Jt={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},tt=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return Wt;case vmModuleTypes.Environment.DEV:return Jt}};var ue=class extends Error{constructor(){super(...arguments);V(this,"message","Glacier is unhealthy. Try again later.");}},he=class{constructor({glacierApiUrl:t}){V(this,"glacierSdk");V(this,"isGlacierHealthy",!0);V(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 U=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:r=Q.exponential()})=>{let n=0,s=0,i;for(;s<a;){s>0&&await Kt(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)},Q=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function Kt(e){return new Promise(t=>setTimeout(t,e))}var be=e=>U({operation:t=>e(t>0),maxRetries:2,backoffPolicy:Q.constant(1),isSuccess:t=>t?.status?.error_code!==429});function at(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function Ie(e){let t,a=0;for(t=0;t<e.length;t++){let r=at(e[t]??"");a=a+65027/r;}return (""+a).slice(0,16)}async function ge(e,t){let a=await fetch(...e);if(!a.ok)throw new Error(`Request failed with status ${a.status}`);let r=await a.json();return t.parse(r)}var ee=class{constructor(t){this.proxyApiUrl=t;}simplePrice(t){let a=new URLSearchParams(t);return ge([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(t){let{id:a,...r}=t,n=new URLSearchParams(r);return ge([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${a}?${n}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.SimplePriceResponseSchema)}};var nt=coreCoingeckoSdk.getBasicCoingeckoHttp(),B,G,ae=class{constructor({storage:t,proxyApiUrl:a}){I(this,B,void 0);I(this,G,void 0);V(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});D(this,B,t),D(this,G,a);}async getSimplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD]}){let r,s=`getSimplePrice-${t?`${Ie(t)}-${a.toString()}`:`${a.toString()}`}`;if(r=f(this,B)?.get?.(s),r)return r;try{r=await be(i=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{r=void 0;}return f(this,B)?.set?.(s,r),r}async getPricesByAddresses(t,a,r=coreCoingeckoSdk.VsCurrencyType.USD){let n,i=`getPricesWithMarketDataByAddresses-${`${Ie(t)}-${a}-${r}`}`;if(n=f(this,B)?.get?.(i),n)return n;try{n=await be(c=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:r,useCoingeckoProxy:c}));}catch{n=void 0;}return f(this,B)?.set?.(i,n),n}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:r=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:n=!1}){return n?new ee(f(this,G)).simplePriceByContractAddresses({id:t,contract_addresses:a,vs_currencies:[r],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}):coreCoingeckoSdk.simpleTokenPrice(nt,{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 new ee(f(this,G)).simplePrice({ids:t,vs_currencies:a,include_market_cap:r,include_24hr_vol:n,include_24hr_change:s,include_last_updated_at:i});return this.transformSimplePriceResponse(p,a)}return coreCoingeckoSdk.simplePrice(nt,{coinIds:t,currencies:a,marketCap:r,vol24:n,change24:s,lastUpdated:i,shouldThrow:o})}};B=new WeakMap,G=new WeakMap;zod.object({date:zod.string(),usd:zod.record(zod.number())});var w=(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 De=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t}),v=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t});var N=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t});var rt=e=>Object.keys(e).includes("unlockedUnstaked"),st=e=>Object.keys(e).includes("locked");function ye(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 it=({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(ye(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 lt=({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(ye(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 dt=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(q=>q.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 rt(l)?(x=it({balance:l,networkToken:o,priceInCurrency:h,marketCap:y,vol24:k,change24:A,coingeckoId:p??""}),{[c]:{[o.symbol]:x}}):st(l)?(x=lt({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 ut({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,r=ca__default.default.createHash("sha256").update(a).digest("base64");return "avax:"+la(r).substring(0,32)}var la=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var yt=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 pa=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")])]),ft=e=>pa.safeParse(e);var Tt=async({request:e,network:t,approvalController:a})=>{let r=ft(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 da=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()}),At=e=>da.safeParse(e);var E=({isTestnet:e})=>e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider();var Pt=({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 fe=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 St=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 Be=async({indices:e,chainAlias:t,isChange:a,isTestnet:r,xpubXP:n})=>{if(!n||a&&t!=="X")return [];let s=E({isTestnet:r});return e.map(i=>coreWalletsSdk.Avalanche.getAddressFromXpub(n,i,s,t,a))};var we=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,Ne=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,Ee=e=>e.type===vmModuleTypes.TxType.Export,Me=e=>e.type===vmModuleTypes.TxType.Import,ga=e=>e.type===vmModuleTypes.TxType.Base,Ve=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,ya=e=>e.type===vmModuleTypes.TxType.CreateChain,fa=e=>e.type===vmModuleTypes.TxType.CreateSubnet,Ue=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,Er=e=>we(e)||Ne(e)||Ve(e)||Ue(e),Mr=e=>Ee(e)||Me(e),Ct=e=>ga(e),bt=e=>ya(e),It=e=>fa(e);function _e(e){return e===coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID}var xe=(e,t)=>{let a=[];if(Ct(e)){let{chain:n,outputs:s,memo:i}=e;a.push({title:"Chain Details",items:[g("Active chain",`Avalanche ${j[n]}`)]}),s.forEach((c,o)=>{let p=c.owners.flatMap(m=>[De("To",m),w("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(Ee(e)){let{amount:n,chain:s,destination:i,type:c}=e;a.push({title:"Transaction Details",items:[g("Source Chain",`Avalanche ${j[s]}`),g("Target Chain",`Avalanche ${j[i]}`),g("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),w("Amount",n,9,t)]});}else if(Me(e)){let{amount:n,chain:s,source:i,type:c}=e;a.push({title:"Transaction Details",items:[g("Source Chain",`Avalanche ${j[i]}`),g("Destination Chain",`Avalanche ${j[s]}`),g("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),w("Amount",n,9,t)]});}else if(It(e)){let{threshold:n,controlKeys:s}=e;a.push({title:"Subnet Details",items:[g(s.length>1?"Owners":"Owner",s.join(`
20
- `),"vertical"),g("Signature Threshold",`${n}/${s.length}`,"vertical")]});}else if(we(e)){let{nodeID:n,start:s,end:i,stake:c,subnetID:o}=e,p=[v("Node ID",n),_e(o)?g("Subnet ID","Primary Network"):v("Subnet ID",o),w("Stake Amount",c,9,t),N("Start Date",s),N("End Date",i)];a.push({title:"Staking Details",items:p});}else if(Ne(e)){let{nodeID:n,delegationFee:s,start:i,end:c,stake:o,subnetID:p,signature:m,publicKey:d}=e,l=[v("Node ID",n),_e(p)?g("Subnet ID","Primary Network"):v("Subnet ID",p)];d&&m&&l.push(v("Public Key",d),v("Proof",m)),l.push(w("Stake Amount",o,9,t),g("Delegation Fee",`${s/1e4} %`),N("Start Date",i),N("End Date",c)),a.push({title:"Staking Details",items:l});}else if(bt(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(Ve(e)){let{nodeID:n,start:s,end:i,subnetID:c}=e,o=[v("Subnet ID",c),v("Node ID",n),N("Start Date",s),N("End Date",i)];a.push({title:"Staking Details",items:o});}else if(Ue(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:[w("Fee Amount",r,9,t)]}),a},j=(r=>(r.AVM="X Chain",r.PVM="P Chain",r.EVM="C Chain",r))(j||{});var Pa=process.env.GLACIER_API_KEY,Dt=async({request:e,network:t,approvalController:a,glacierApiUrl:r})=>{let n=At(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=E({isTestnet:l}),h=e.context?.currentAddress;if(!h||typeof h!="string")return {error:rpcErrors.rpcErrors.invalidRequest("No active account found")};let y=Pt({utxoHexes:p,vm:m}),k=y.length?y:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:s,chainAlias:i,isTestnet:l,url:r,token:Pa}),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),S=e.context?.xpubXP;if(S!==void 0&&typeof S!="string")return {error:rpcErrors.rpcErrors.invalidParams("xpubXP must be a string")};let ve=await Be({indices:c??[],chainAlias:i,isChange:!1,isTestnet:l,xpubXP:S}),Pe=await Be({indices:o??[],chainAlias:i,isChange:!0,isTestnet:l,xpubXP:S}),Et=[...new Set([h,...ve,...Pe])].map(Mt=>avalanchejs.utils.parse(Mt)[2]);A=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:Y,utxos:k,provider:u,fromAddressBytes:Et});}let x=await coreWalletsSdk.Avalanche.parseAvalancheTx(A,u,h),q=fe(x),K=St(x);if(x.type==="unknown"||q===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},Ae=xe(q,t.networkToken.symbol),ke={title:K,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:Ae,networkFeeSelector:!1},z=await a.requestApproval({request:e,displayData:ke,signingData:le});if("error"in z)return {error:z.error};let M=await Sa(u,z,m);return Ca({provider:u,txHash:M,vm:m,onTransactionConfirmed:a.onTransactionConfirmed,onTransactionReverted:a.onTransactionReverted,requestId:e.requestId}),{result:M}}catch(s){return console.error(s),{error:rpcErrors.rpcErrors.internal({message:"Unable to create transaction",data:{cause:s}})}}},Sa=async(e,t,a)=>{if("txHash"in t)return t.txHash;let{txID:r}=await e.issueTxHex(t.signedData,a);return r},Ca=async({provider:e,txHash:t,vm:a,onTransactionConfirmed:r,onTransactionReverted:n,requestId:s})=>{try{a===avalanchejs.PVM?(await U({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 U({operation:()=>e.getApiX().getTxStatus({txID:t}),isSuccess:o=>["Accepted","Rejected"].includes(o.status),maxRetries:7})).status==="Accepted"?r(t,s):n(t,s):(await U({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 ba=zod.z.object({from:zod.z.string().describe("Avalanche receiving address"),transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"])}),Rt=e=>ba.safeParse(e);var Ra=process.env.GLACIER_API_KEY,wt=async({request:e,network:t,approvalController:a,glacierApiUrl:r})=>{let n=Rt(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=E({isTestnet:m}),l=avalanchejs.utils.unpackWithManager(o,p),u=await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:s,chainAlias:i,isTestnet:m,url:r,token:Ra}),h;try{let S=avalanchejs.utils.getManagerForVM(o).unpack(p,avalanchejs.avaxSerial.SignedTx),ve=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:l,utxos:u,provider:d,credentials:S.getCredentials()});h=l.getSigIndices().map((Pe,Ge)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(Pe,{unsignedTx:ve,credentialIndex:Ge})));}catch{h=l.getSigIndices().map(S=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(S)));}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,S])=>x[Y]?.includes(S)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let K=await coreWalletsSdk.Avalanche.parseAvalancheTx(y,d,c),le=fe(K);if(K.type==="unknown"||le===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let Ae={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:K,vm:o,unsignedTxJson:JSON.stringify(y.toJSON()),ownSignatureIndices:A},ke=xe(le,t.networkToken.symbol),z={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:ke},M=await a.requestApproval({request:e,displayData:z,signingData:Ae});return "error"in M?{error:M.error}:"signedData"in M?{result:M.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var W,ce,J,L,Nt=class{constructor({approvalController:t,environment:a}){I(this,W,void 0);I(this,ce,void 0);I(this,J,void 0);I(this,L,void 0);let{glacierApiUrl:r,proxyApiUrl:n}=tt(a);D(this,W,new he({glacierApiUrl:r})),D(this,ce,n),D(this,J,r),D(this,L,t);}getProvider(t){return E({isTestnet:!!t.isTestnet})}getAddress({accountIndex:t,xpubXP:a,isTestnet:r,walletType:n}){return yt({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 dt({addresses:t,currency:n,network:a,glacierService:f(this,W),tokenService:s})}getManifest(){let t=vmModuleTypes.parseManifest(Fe);return t.success?t.data:void 0}getNetworkFee(t){return Oe()}getTransactionHistory({network:t,address:a,nextPageToken:r,offset:n}){return Qe({network:t,address:a,nextPageToken:r,offset:n,glacierService:f(this,W)})}getTokens(t){return Promise.resolve([])}async onRpcRequest(t,a){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return Tt({request:t,network:a,approvalController:f(this,L)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return wt({request:t,network:a,approvalController:f(this,L),glacierApiUrl:f(this,J)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return Dt({request:t,network:a,approvalController:f(this,L),glacierApiUrl:f(this,J)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:a}){return ut({blockchainId:t,isTestnet:a})}};W=new WeakMap,ce=new WeakMap,J=new WeakMap,L=new WeakMap;var Vs=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,Us=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
19
+ var Ht=Object.defineProperty;var Xt=(e,t,a)=>t in e?Ht(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),$e=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var f=(e,t,a)=>($e(e,t,"read from private field"),a?a.call(e):t.get(e)),S=(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);},I=(e,t,a,r)=>($e(e,t,"write to private field"),r?r.call(e,a):t.set(e,a),a);var We={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 Je(){return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0}}var ze=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,Ye=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function ue(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 Qe({tx:e,address:t,networkToken:a,chainId:r,explorerUrl:n,isTestnet:s}){let i=new Set(e.consumedUtxos.flatMap(p=>p.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(p=>p.addresses)||[]),o=Ft({tx:e,isTestnet:s,networkToken:a,froms:i}),l=jt({tx:e,isTestnet:s,networkToken:a}),d=t.toLowerCase().startsWith("p-")?t.slice(2):t,m=i.has(d);return {hash:e.txHash,isContractCall:!1,isIncoming:!m,isOutgoing:m,from:[...i.values()].join(","),to:[...c.values()].join(","),isSender:m,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:o.toString()}],gasUsed:l.toString(),explorerLink:ue(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(p=>p.asset.assetId===te(!!t)&&!p.addresses.some(u=>r.has(u))).reduce((p,u)=>p.add(u.asset.amount),new B__default.default(0)),c=e.value.find(p=>p.assetId===te(!!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),l=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,d=e.emittedUtxos.filter(p=>p.asset.assetId===te(!!t)&&(e.txType==="ImportTx"&&p.consumedOnChainId===l||e.txType==="ExportTx"&&p.consumedOnChainId!==l)).reduce((p,u)=>p.add(u.amount),new B__default.default(0)),m=s?o:n?d:e.amountStaked.length===0?Ze(e.value,!!t):Ze(e.amountStaked,!!t);return G({amount:m?.toNumber(),decimals:a.decimals})}function jt({tx:e,isTestnet:t,networkToken:a}){let r=e.amountBurned?.filter(n=>n.assetId===te(!!t)).reduce((n,s)=>n.add(s.amount),new B__default.default(0));return G({amount:r?.toNumber(),decimals:a.decimals})}function Ze(e,t){return e.filter(a=>a.assetId===te(t)).reduce((a,r)=>a.add(r.amount),new B__default.default(0))}function te(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function et({tx:e,address:t,networkToken:a,chainId:r,explorerUrl:n,isTestnet:s}){let i=new Set(e.consumedUtxos.flatMap(p=>p.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(p=>p.addresses)||[]),o=Wt({tx:e,isTestnet:s,networkToken:a}),l=Jt({isTestnet:s,tx:e,totalAmountCreated:o,networkToken:a}),d=t.toLowerCase().startsWith("x-")?t.slice(2):t,m=i.has(d);return {hash:e.txHash,isContractCall:!1,isIncoming:!m,isOutgoing:m,from:[...i.values()].join(","),to:[...c.values()].join(","),isSender:m,timestamp:e.timestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:o.toString()}],gasUsed:l.toString(),explorerLink:ue(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===Re(!!t)&&(e.txType==="ImportTx"&&o.consumedOnChainId===n||e.txType==="ExportTx"&&o.consumedOnChainId!==n)).reduce((o,l)=>o.add(l.asset.amount),new B__default.default(0)),i=e.amountCreated.filter(o=>o.assetId===Re(!!t)).reduce((o,l)=>o.add(l.amount),new B__default.default(0));return G({amount:(r?s:i).toNumber(),decimals:a.decimals})}function Jt({isTestnet:e,tx:t,totalAmountCreated:a,networkToken:r}){let s=t.amountUnlocked.filter(i=>i.assetId===Re(!!e)).reduce((i,c)=>i.add(c.amount),new B__default.default(0)).minus(a);return G({amount:s.toNumber(),decimals:r.decimals})}function Re(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var rt=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 d=await n.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:Kt(e),network:s?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,pageSize:a,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),m=[];return ze(d)&&(m=d.transactions.map(p=>Qe({tx:p,isTestnet:s,address:e,networkToken:i,explorerUrl:c,chainId:o}))),Ye(d)&&(m=d.transactions.map(p=>et({tx:p,isTestnet:s,address:e,networkToken:i,explorerUrl:c,chainId:o}))),{transactions:m,nextPageToken:d.nextPageToken}},Kt=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var zt={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Yt={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},st=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return zt;case vmModuleTypes.Environment.DEV:return Yt}};var ye=class extends Error{constructor(){super(...arguments);U(this,"message","Glacier is unhealthy. Try again later.");}},fe=class{constructor({glacierApiUrl:t,headers:a}){U(this,"glacierSdk");U(this,"isGlacierHealthy",!0);U(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:t,HEADERS:a});}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 ye&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof ye&&this.setGlacierToUnhealthy(),a}}};var _=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:r=ae.exponential()})=>{let n=0,s=0,i;for(;s<a;){s>0&&await Qt(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)},ae=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function Qt(e){return new Promise(t=>setTimeout(t,e))}var Be=e=>_({operation:t=>e(t>0),maxRetries:2,backoffPolicy:ae.constant(1),isSuccess:t=>t?.status?.error_code!==429});function ot(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function we(e){let t,a=0;for(t=0;t<e.length;t++){let r=ot(e[t]??"");a=a+65027/r;}return (""+a).slice(0,16)}async function xe(e,t){let a=await fetch(...e);if(!a.ok)throw new Error(`Request failed with status ${a.status}`);let r=await a.json();return t.parse(r)}var re=class{constructor(t){this.proxyApiUrl=t;}simplePrice(t){let a=new URLSearchParams(t);return xe([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(t){let{id:a,...r}=t,n=new URLSearchParams(r);return xe([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${a}?${n}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.SimplePriceResponseSchema)}};var it=coreCoingeckoSdk.getBasicCoingeckoHttp(),w,O,se=class{constructor({storage:t,proxyApiUrl:a}){S(this,w,void 0);S(this,O,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});I(this,w,t),I(this,O,a);}async getSimplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD]}){let r,s=`getSimplePrice-${t?`${we(t)}-${a.toString()}`:`${a.toString()}`}`;if(r=f(this,w)?.get?.(s),r)return r;try{r=await Be(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-${`${we(t)}-${a}-${r}`}`;if(n=f(this,w)?.get?.(i),n)return n;try{n=await Be(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?new re(f(this,O)).simplePriceByContractAddresses({id:t,contract_addresses:a,vs_currencies:[r],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}):coreCoingeckoSdk.simpleTokenPrice(it,{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 l=await new re(f(this,O)).simplePrice({ids:t,vs_currencies:a,include_market_cap:r,include_24hr_vol:n,include_24hr_change:s,include_last_updated_at:i});return this.transformSimplePriceResponse(l,a)}return coreCoingeckoSdk.simplePrice(it,{coinIds:t,currencies:a,marketCap:r,vol24:n,change24:s,lastUpdated:i,shouldThrow:o})}};w=new WeakMap,O=new WeakMap;zod.object({date:zod.string(),usd:zod.record(zod.number())});var N=(e,t,a,r)=>({label:e,type:vmModuleTypes.DetailItemType.CURRENCY,value:t,maxDecimals:a,symbol:r}),y=(e,t,a="horizontal")=>({label:e,alignment:a,type:vmModuleTypes.DetailItemType.TEXT,value:t});var Ne=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t}),k=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t});var E=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t});var L=({name:e,version:t})=>{switch(e){case vmModuleTypes.AppName.CORE_MOBILE_IOS:case vmModuleTypes.AppName.CORE_MOBILE_ANDROID:case vmModuleTypes.AppName.CORE_WEB:case vmModuleTypes.AppName.CORE_EXTENSION:case vmModuleTypes.AppName.EXPLORER:return {"x-application-name":e,"x-application-version":t};case vmModuleTypes.AppName.OTHER:return}};var ct=e=>Object.keys(e).includes("unlockedUnstaked"),lt=e=>Object.keys(e).includes("locked");function Te(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 A(e,t){return t===void 0?0:t/10**e}var mt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:r,vol24:n,change24:s,coingeckoId:i})=>{let c=t.decimals,o={},l={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 l){let g=l[h];if(!g||!g.length){o[h]=0;continue}g.forEach(T=>{let x=(o[h]??0)+Number(T.amount);o[h]=x;});}let d=new coreUtilsSdk.TokenUnit(o.unlockedUnstaked?o.unlockedUnstaked:0n,t.decimals,t.symbol),m=a?d.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,p=new coreUtilsSdk.TokenUnit(Te(e),t.decimals,t.symbol),u=a?p.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:p.toSubUnit(),balanceInCurrency:u,balanceDisplayValue:p.toDisplay(),balanceCurrencyDisplayValue:u?.toFixed(2),available:d.toSubUnit(),availableInCurrency:m,availableDisplayValue:d.toDisplay(),availableCurrencyDisplayValue:m?.toFixed(2),utxos:e,balancePerType:{lockedStaked:A(c,o.lockedStaked),lockedStakeable:A(c,o.lockedStakeable),lockedPlatform:A(c,o.lockedPlatform),atomicMemoryLocked:A(c,o.atomicMemoryLocked),atomicMemoryUnlocked:A(c,o.atomicMemoryUnlocked),unlockedUnstaked:A(c,o.unlockedUnstaked),unlockedStaked:A(c,o.unlockedStaked),pendingStaked:A(c,o.pendingStaked)},marketCap:r,vol24:n,change24:s,coingeckoId:i}};var ut=({balance:e,networkToken:t,priceInCurrency:a,marketCap:r,vol24:n,change24:s,coingeckoId:i})=>{let c=t.decimals,o={},l={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let h in l){let g=l[h];if(!g||!g.length){o[h]=0;continue}g.forEach(T=>{let x=(o[h]??0)+Number(T.amount);o[h]=x;});}let d=new coreUtilsSdk.TokenUnit(o.unlocked?o.unlocked:0n,t.decimals,t.symbol),m=a?d.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,p=new coreUtilsSdk.TokenUnit(Te(e),t.decimals,t.symbol),u=a!==void 0?p.mul(a):void 0;return {...t,coingeckoId:i,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:p.toSubUnit(),balanceInCurrency:u?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:p.toDisplay(),balanceCurrencyDisplayValue:u?.toDisplay({fixedDp:2}),available:d.toSubUnit(),availableInCurrency:m,availableDisplayValue:d.toDisplay(),availableCurrencyDisplayValue:m?.toFixed(2),utxos:e,balancePerType:{unlocked:A(c,o.unlocked),locked:A(c,o.locked),atomicMemoryUnlocked:A(c,o.atomicMemoryUnlocked),atomicMemoryLocked:A(c,o.atomicMemoryLocked)},marketCap:r,vol24:n,change24:s}};var yt=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,l=a.pricingProviders?.coingecko.nativeTokenId,d=a.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,m=a.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,p=await r.getChainBalance({blockchainId:d,network:m,addresses:e.join(",")}).then(R=>R.balances),u=l?await n.getSimplePrice({coinIds:[l],currencies:[i]}):{},h=u?.[l??""]?.[i]?.price??void 0,g=u?.[l??""]?.[i]?.marketCap??void 0,T=u?.[l??""]?.[i]?.vol24??void 0,P=u?.[l??""]?.[i]?.change24??void 0,x;return ct(p)?(x=mt({balance:p,networkToken:o,priceInCurrency:h,marketCap:g,vol24:T,change24:P,coingeckoId:l??""}),{[c]:{[o.symbol]:x}}):lt(p)?(x=ut({balance:p,networkToken:o,priceInCurrency:h,marketCap:g,vol24:T,change24:P,coingeckoId:l??""}),{[c]:{[o.symbol]:x}}):Promise.reject("Incorrect type balance was returned from glacier")};function ft({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,r=da__default.default.createHash("sha256").update(a).digest("base64");return "avax:"+ua(r).substring(0,32)}var ua=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var At=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 ha=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")])]),kt=e=>ha.safeParse(e);var Pt=async({request:e,network:t,approvalController:a})=>{let r=kt(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]}]},l=await a.requestApproval({request:e,displayData:o,signingData:c});return "error"in l?{error:l.error}:"signedData"in l?{result:l.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var ya=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()}),Ct=e=>ya.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 Ae=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 Dt=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 Me=async({indices:e,chainAlias:t,isChange:a,isTestnet:r,xpubXP:n})=>{if(!n||a&&t!=="X")return [];let s=M({isTestnet:r});return e.map(i=>coreWalletsSdk.Avalanche.getAddressFromXpub(n,i,s,t,a))};var Ve=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,Ue=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,_e=e=>e.type===vmModuleTypes.TxType.Export,Le=e=>e.type===vmModuleTypes.TxType.Import,Ta=e=>e.type===vmModuleTypes.TxType.Base,He=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,Aa=e=>e.type===vmModuleTypes.TxType.CreateChain,ka=e=>e.type===vmModuleTypes.TxType.CreateSubnet,Xe=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,Xn=e=>Ve(e)||Ue(e)||He(e)||Xe(e),Gn=e=>_e(e)||Le(e),Rt=e=>Ta(e),Bt=e=>Aa(e),wt=e=>ka(e);function Ge(e){return e===coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID}var ke=(e,t)=>{let a=[];if(Rt(e)){let{chain:n,outputs:s,memo:i}=e;a.push({title:"Chain Details",items:[y("Active chain",`Avalanche ${J[n]}`)]}),s.forEach((c,o)=>{let l=c.owners.flatMap(d=>[Ne("To",d),N("Amount",c.amount,9,t)]);c.owners.length>1&&l.push(y("Threshold",c.threshold.toString())),a.push({title:o===0?"Balance Change":void 0,items:l});}),n!==avalanchejs.PVM&&i&&a.push({title:"Memo",items:[i]});}else if(_e(e)){let{amount:n,chain:s,destination:i,type:c}=e;a.push({title:"Transaction Details",items:[y("Source Chain",`Avalanche ${J[s]}`),y("Target Chain",`Avalanche ${J[i]}`),y("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),N("Amount",n,9,t)]});}else if(Le(e)){let{amount:n,chain:s,source:i,type:c}=e;a.push({title:"Transaction Details",items:[y("Source Chain",`Avalanche ${J[i]}`),y("Destination Chain",`Avalanche ${J[s]}`),y("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),N("Amount",n,9,t)]});}else if(wt(e)){let{threshold:n,controlKeys:s}=e;a.push({title:"Subnet Details",items:[y(s.length>1?"Owners":"Owner",s.join(`
20
+ `),"vertical"),y("Signature Threshold",`${n}/${s.length}`,"vertical")]});}else if(Ve(e)){let{nodeID:n,start:s,end:i,stake:c,subnetID:o}=e,l=[k("Node ID",n),Ge(o)?y("Subnet ID","Primary Network"):k("Subnet ID",o),N("Stake Amount",c,9,t),E("Start Date",s),E("End Date",i)];a.push({title:"Staking Details",items:l});}else if(Ue(e)){let{nodeID:n,delegationFee:s,start:i,end:c,stake:o,subnetID:l,signature:d,publicKey:m}=e,p=[k("Node ID",n),Ge(l)?y("Subnet ID","Primary Network"):k("Subnet ID",l)];m&&d&&p.push(k("Public Key",m),k("Proof",d)),p.push(N("Stake Amount",o,9,t),y("Delegation Fee",`${s/1e4} %`),E("Start Date",i),E("End Date",c)),a.push({title:"Staking Details",items:p});}else if(Bt(e)){let{chainID:n,chainName:s,vmID:i,genesisData:c}=e,o=[y("Blockchain name",s,"vertical"),y("Blockchain ID",n,"vertical"),y("Virtual Machine ID",i,"vertical"),y("Genesis Data",c,"vertical")];a.push({title:"Blockchain Details",items:o});}else if(He(e)){let{nodeID:n,start:s,end:i,subnetID:c}=e,o=[k("Subnet ID",c),k("Node ID",n),E("Start Date",s),E("End Date",i)];a.push({title:"Staking Details",items:o});}else if(Xe(e)){let{nodeID:n,subnetID:s}=e,i=[k("Node ID",n),k("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},J=(r=>(r.AVM="X Chain",r.PVM="P Chain",r.EVM="C Chain",r))(J||{});var ba=process.env.GLACIER_API_KEY,Nt=async({request:e,network:t,approvalController:a,glacierApiUrl:r,appInfo:n})=>{let s=Ct(e.params);if(!s.success)return {error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:s.error}})};try{let{transactionHex:i,chainAlias:c,externalIndices:o,internalIndices:l,utxos:d}=s.data,m=coreWalletsSdk.Avalanche.getVmByChainAlias(c),p=avalanchejs.utils.hexToBuffer(i),u=t.isTestnet??!1,h=M({isTestnet:u}),g=e.context?.currentAddress;if(!g||typeof g!="string")return {error:rpcErrors.rpcErrors.invalidRequest("No active account found")};let T=bt({utxoHexes:d,vm:m}),P=T.length?T:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:c,isTestnet:u,url:r,token:ba,headers:L(n)}),x;if(c==="C")x=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:p,vm:m,utxos:P,fromAddress:g});else {let ee=avalanchejs.utils.unpackWithManager(m,p),C=e.context?.xpubXP;if(C!==void 0&&typeof C!="string")return {error:rpcErrors.rpcErrors.invalidParams("xpubXP must be a string")};let Ie=await Me({indices:o??[],chainAlias:c,isChange:!1,isTestnet:u,xpubXP:C}),be=await Me({indices:l??[],chainAlias:c,isChange:!0,isTestnet:u,xpubXP:C}),_t=[...new Set([g,...Ie,...be])].map(Lt=>avalanchejs.utils.parse(Lt)[2]);x=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:ee,utxos:P,provider:h,fromAddressBytes:_t});}let R=await coreWalletsSdk.Avalanche.parseAvalancheTx(x,h,g),Pe=Ae(R),Z=Dt(R);if(R.type==="unknown"||Pe===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let de={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(x.toJSON()),data:R,vm:m,externalIndices:o,internalIndices:l},Ce=ke(Pe,t.networkToken.symbol),Se={title:Z,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:Ce,networkFeeSelector:!1},Q=await a.requestApproval({request:e,displayData:Se,signingData:de});if("error"in Q)return {error:Q.error};let V=await Da(h,Q,m);return Ra({provider:h,txHash:V,vm:m,onTransactionConfirmed:a.onTransactionConfirmed,onTransactionReverted:a.onTransactionReverted,requestId:e.requestId}),{result:V}}catch(i){return console.error(i),{error:rpcErrors.rpcErrors.internal({message:"Unable to create transaction",data:{cause:i}})}}},Da=async(e,t,a)=>{if("txHash"in t)return t.txHash;let{txID:r}=await e.issueTxHex(t.signedData,a);return r},Ra=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 Ba=zod.z.object({from:zod.z.string().describe("Avalanche receiving address"),transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"])}),Et=e=>Ba.safeParse(e);var Ea=process.env.GLACIER_API_KEY,Vt=async({request:e,network:t,approvalController:a,glacierApiUrl:r,appInfo:n})=>{let s=Et(e.params);if(!s.success)return console.error("invalid params",s.error),{error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let{transactionHex:i,chainAlias:c,from:o}=s.data,l=coreWalletsSdk.Avalanche.getVmByChainAlias(c),d=avalanchejs.utils.hexToBuffer(i),m=t.isTestnet??!1,p=M({isTestnet:m}),u=avalanchejs.utils.unpackWithManager(l,d),h=await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:c,isTestnet:m,url:r,token:Ea,headers:L(n)}),g;try{let C=avalanchejs.utils.getManagerForVM(l).unpack(d,avalanchejs.avaxSerial.SignedTx),Ie=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:u,utxos:h,provider:p,credentials:C.getCredentials()});g=u.getSigIndices().map((be,je)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(be,{unsignedTx:Ie,credentialIndex:je})));}catch{g=u.getSigIndices().map(C=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(C)));}let T=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:u,provider:p,credentials:g,utxos:h}),P=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(o)[2]])[0];if(!P)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let x=T.getSigIndicesForAddress(P);if(!x)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let R=T.getSigIndices();if(!x.some(([ee,C])=>R[ee]?.includes(C)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let Z=await coreWalletsSdk.Avalanche.parseAvalancheTx(T,p,o),de=Ae(Z);if(Z.type==="unknown"||de===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let Ce={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:Z,vm:l,unsignedTxJson:JSON.stringify(T.toJSON()),ownSignatureIndices:x},Se=ke(de,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:Se},V=await a.requestApproval({request:e,displayData:Q,signingData:Ce});return "error"in V?{error:V.error}:"signedData"in V?{result:V.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var K,me,z,X,Y,Ut=class{constructor({approvalController:t,environment:a,appInfo:r}){S(this,K,void 0);S(this,me,void 0);S(this,z,void 0);S(this,X,void 0);S(this,Y,void 0);let{glacierApiUrl:n,proxyApiUrl:s}=st(a);I(this,Y,r),I(this,K,new fe({glacierApiUrl:n,headers:L(r)})),I(this,me,s),I(this,z,n),I(this,X,t);}getProvider(t){return M({isTestnet:!!t.isTestnet})}getAddress({accountIndex:t,xpubXP:a,isTestnet:r,walletType:n}){return At({accountIndex:t,xpubXP:a,isTestnet:r,walletType:n})}getBalances({addresses:t,network:a,storage:r,currency:n}){let s=new se({storage:r,proxyApiUrl:f(this,me)});return yt({addresses:t,currency:n,network:a,glacierService:f(this,K),tokenService:s})}getManifest(){let t=vmModuleTypes.parseManifest(We);return t.success?t.data:void 0}getNetworkFee(t){return Je()}getTransactionHistory({network:t,address:a,nextPageToken:r,offset:n}){return rt({network:t,address:a,nextPageToken:r,offset:n,glacierService:f(this,K)})}getTokens(t){return Promise.resolve([])}async onRpcRequest(t,a){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return Pt({request:t,network:a,approvalController:f(this,X)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return Vt({request:t,network:a,approvalController:f(this,X),glacierApiUrl:f(this,z),appInfo:f(this,Y)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return Nt({request:t,network:a,approvalController:f(this,X),glacierApiUrl:f(this,z),appInfo:f(this,Y)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:a}){return ft({blockchainId:t,isTestnet:a})}};K=new WeakMap,me=new WeakMap,z=new WeakMap,X=new WeakMap,Y=new WeakMap;var Fs=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,js=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
21
21
 
22
- exports.AvalancheModule = Nt;
23
- exports.isAddPermissionlessDelegatorTx = we;
24
- exports.isAddPermissionlessValidatorTx = Ne;
25
- exports.isAddSubnetValidatorTx = Ve;
26
- exports.isBaseTx = ga;
27
- exports.isBlockchainDetails = bt;
28
- exports.isChainDetails = Ct;
29
- exports.isCreateChainTx = ya;
30
- exports.isCreateSubnetTx = fa;
31
- exports.isExportImportTxDetails = Mr;
32
- exports.isExportTx = Ee;
33
- exports.isImportTx = Me;
34
- exports.isRemoveSubnetValidatorTx = Ue;
35
- exports.isStakingDetails = Er;
36
- exports.isSubnetDetails = It;
37
- exports.isTokenWithBalanceAVM = Us;
38
- exports.isTokenWithBalancePVM = Vs;
22
+ exports.AvalancheModule = Ut;
23
+ exports.isAddPermissionlessDelegatorTx = Ve;
24
+ exports.isAddPermissionlessValidatorTx = Ue;
25
+ exports.isAddSubnetValidatorTx = He;
26
+ exports.isBaseTx = Ta;
27
+ exports.isBlockchainDetails = Bt;
28
+ exports.isChainDetails = Rt;
29
+ exports.isCreateChainTx = Aa;
30
+ exports.isCreateSubnetTx = ka;
31
+ exports.isExportImportTxDetails = Gn;
32
+ exports.isExportTx = _e;
33
+ exports.isImportTx = Le;
34
+ exports.isRemoveSubnetValidatorTx = Xe;
35
+ exports.isStakingDetails = Xn;
36
+ exports.isSubnetDetails = wt;
37
+ exports.isTokenWithBalanceAVM = js;
38
+ exports.isTokenWithBalancePVM = Fs;
39
39
  //# sourceMappingURL=out.js.map
40
40
  //# sourceMappingURL=index.cjs.map