@avalabs/avalanche-module 3.4.0 → 3.5.1

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
@@ -1,47 +1,47 @@
1
1
  'use strict';
2
2
 
3
3
  var vmModuleTypes = require('@avalabs/vm-module-types');
4
- var rpcErrors = require('@metamask/rpc-errors');
5
- var coreWalletsSdk = require('@avalabs/core-wallets-sdk');
6
- var glacierSdk = require('@avalabs/glacier-sdk');
7
- var L = require('big.js');
8
4
  var coreCoingeckoSdk = require('@avalabs/core-coingecko-sdk');
9
5
  var zod = require('zod');
10
- var coreUtilsSdk = require('@avalabs/core-utils-sdk');
11
- var ea = require('crypto');
6
+ var glacierSdk = require('@avalabs/glacier-sdk');
7
+ var rpcErrors = require('@metamask/rpc-errors');
8
+ var coreWalletsSdk = require('@avalabs/core-wallets-sdk');
12
9
  var avalanchejs = require('@avalabs/avalanchejs');
10
+ var F = require('big.js');
11
+ var coreUtilsSdk = require('@avalabs/core-utils-sdk');
12
+ var La = require('crypto');
13
13
 
14
14
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
15
 
16
- var L__default = /*#__PURE__*/_interopDefault(L);
17
- var ea__default = /*#__PURE__*/_interopDefault(ea);
16
+ var F__default = /*#__PURE__*/_interopDefault(F);
17
+ var La__default = /*#__PURE__*/_interopDefault(La);
18
18
 
19
- var Sr=Object.defineProperty;var Pr=(e,t,r)=>t in e?Sr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var O=(e,t,r)=>(Pr(e,typeof t!="symbol"?t+"":t,r),r),yt=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var A=(e,t,r)=>(yt(e,t,"read from private field"),r?r.call(e):t.get(e)),w=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r);},R=(e,t,r,a)=>(yt(e,t,"write to private field"),a?a.call(e,r):t.set(e,r),r);var At={name:"Avalanche",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/index.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","avax:N5PeRoKwDDREF0awn2GPsb9sHnGRzdEX"],namespaces:["avax"]},cointype:"9000",permissions:{rpc:{dapps:!0,methods:["avalanche_sendTransaction","avalanche_signTransaction","avalanche_signMessage"],nonRestrictedMethods:[]}},manifestVersion:"0.1"};var I=async({isTestnet:e})=>e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider();async function vt({isTestnet:e,vmName:t}){let r=await I({isTestnet:e});if(t===vmModuleTypes.NetworkVMType.AVM)return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0};let{price:a}=await r.getApiP().getFeeState(),n=100/Number(a)/100,o=Math.min(1,Math.max(n,.15)),s=Math.min(1,Math.max(n*2,.3)),i=1+o,c=1+s;return {baseFee:a,low:{maxFeePerGas:a},medium:{maxFeePerGas:a*BigInt(Math.round(100*i))/100n},high:{maxFeePerGas:a*BigInt(Math.round(100*c))/100n},isFixedFee:!1}}var Dt=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,St=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function Q(e,t,r="tx"){return `${e}/${r}/${t}`}function X({amount:e,decimals:t}){return e===void 0?new L__default.default(0):new L__default.default(e/10**t)}function bt({tx:e,address:t,networkToken:r,chainId:a,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(d=>d.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(d=>d.addresses)||[]),c=wr({tx:e,isTestnet:o,networkToken:r,froms:s}),l=Rr({tx:e,isTestnet:o,networkToken:r}),m=t.toLowerCase().startsWith("p-")?t.slice(2):t,p=s.has(m);return {hash:e.txHash,isContractCall:!1,isIncoming:!p,isOutgoing:p,from:[...s.values()].join(","),to:[...i.values()].join(","),isSender:p,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:c.toString()}],gasUsed:l.toString(),explorerLink:Q(n??"",e.txHash,"tx"),txType:e.txType,chainId:a.toString()}}function wr({tx:e,isTestnet:t,networkToken:r,froms:a}){let n=["ImportTx","ExportTx"].includes(e.txType),o=e.txType==="BaseTx",s=e.emittedUtxos.filter(d=>d.asset.assetId===ue(!!t)&&!d.addresses.some(h=>a.has(h))).reduce((d,h)=>d.add(h.asset.amount),new L__default.default(0)),i=e.value.find(d=>d.assetId===ue(!!t))?.amount,c=s.gt(new L__default.default(0))?s:i?new L__default.default(i):new L__default.default(0)??new L__default.default(0),l=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,m=e.emittedUtxos.filter(d=>d.asset.assetId===ue(!!t)&&(e.txType==="ImportTx"&&d.consumedOnChainId===l||e.txType==="ExportTx"&&d.consumedOnChainId!==l)).reduce((d,h)=>d.add(h.amount),new L__default.default(0)),p=o?c:n?m:e.amountStaked.length===0?Pt(e.value,!!t):Pt(e.amountStaked,!!t);return X({amount:p?.toNumber(),decimals:r.decimals})}function Rr({tx:e,isTestnet:t,networkToken:r}){let a=e.amountBurned?.filter(n=>n.assetId===ue(!!t)).reduce((n,o)=>n.add(o.amount),new L__default.default(0));return X({amount:a?.toNumber(),decimals:r.decimals})}function Pt(e,t){return e.filter(r=>r.assetId===ue(t)).reduce((r,a)=>r.add(a.amount),new L__default.default(0))}function ue(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function Ct({tx:e,address:t,networkToken:r,chainId:a,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(f=>f.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(f=>f.addresses)||[]),c=t.toLowerCase().startsWith("x-")?t.slice(2):t,l=["ImportTx","ExportTx"].includes(e.txType),{amount:m,isSender:p}=Br({tx:e,isTestnet:o,networkToken:r,chainAddress:c,isImportExport:l}),d=Er({isTestnet:o,tx:e,networkToken:r}),h=l?m.toString():p?m.minus(d).toString():m.toString();return {hash:e.txHash,isContractCall:!1,isIncoming:!p,isOutgoing:p,from:[...s.values()].join(","),to:[...i.values()].join(","),isSender:p,timestamp:e.timestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:h}],gasUsed:d.toString(),explorerLink:Q(n??"",e.txHash,"tx"),txType:e.txType,chainId:a.toString()}}function Br({tx:e,isTestnet:t,networkToken:r,chainAddress:a,isImportExport:n}){if(n){let l=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,m=e.emittedUtxos.filter(p=>p.asset.assetId===he(!!t)&&(e.txType==="ImportTx"&&p.consumedOnChainId===l||e.txType==="ExportTx"&&p.consumedOnChainId!==l)).reduce((p,d)=>p.add(d.asset.amount),new L__default.default(0));return {amount:X({amount:m.toNumber(),decimals:r.decimals}),isSender:!0}}let o=e.consumedUtxos.filter(l=>l.asset.assetId===he(!!t)&&l.addresses.includes(a)).reduce((l,m)=>l.add(m.asset.amount),new L__default.default(0)),s=e.emittedUtxos.filter(l=>l.asset.assetId===he(!!t)&&l.addresses.includes(a)).reduce((l,m)=>l.add(m.asset.amount),new L__default.default(0)),i=o.gte(s),c=i?o.minus(s):s.minus(o);return {amount:X({amount:c.toNumber(),decimals:r.decimals}),isSender:i}}function Er({isTestnet:e,tx:t,networkToken:r}){let a=t.amountUnlocked.filter(s=>s.assetId===he(!!e)).reduce((s,i)=>s.add(i.amount),new L__default.default(0)),n=t.amountCreated.filter(s=>s.assetId===he(!!e)).reduce((s,i)=>s.add(i.amount),new L__default.default(0)),o=a.minus(n);return X({amount:o.toNumber(),decimals:r.decimals})}function he(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var Rt=async({address:e,nextPageToken:t,offset:r,network:a,glacierService:n})=>{let{isTestnet:o,networkToken:s,explorerUrl:i,chainId:c}=a;if(!n.isHealthy())return {transactions:[],nextPageToken:""};let m=a.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,p=await n.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:Lr(e),network:m,pageSize:r,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),d=[];return Dt(p)&&(d=p.transactions.map(h=>bt({tx:h,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:c}))),St(p)&&(d=p.transactions.map(h=>Ct({tx:h,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:c}))),{transactions:d,nextPageToken:p.nextPageToken}},Lr=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var Ur={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},_r={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Bt=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return Ur;case vmModuleTypes.Environment.DEV:return _r}};var G=async({operation:e,isSuccess:t,maxRetries:r=10,backoffPolicy:a=Z.exponential()})=>{let n=0,o=0,s;for(;o<r;){o>0&&await Fr(n);try{let c=await e(o);if(t(c))return c}catch(c){s=c;}n=a(o),o++;}let i=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(i)},Z=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return r=>t*1e3}static constantMs(t){return r=>t}static linearThenExponential(t,r){return a=>{if(a<t)return (a+1)*r;let n=a-t+1,o=t*r,s=2*r*(Math.pow(2,n)-1);return o+s}}};function Fr(e){return new Promise(t=>setTimeout(t,e))}var Xe=e=>G({operation:t=>e(t>0),maxRetries:2,backoffPolicy:Z.constant(1),isSuccess:t=>t?.status?.error_code!==429});function Et(e){let t,r=0;for(t=0;t<e.length;t++)r+=e.charCodeAt(t)*(t+1);return r}function Ge(e){let t,r=0;for(t=0;t<e.length;t++){let a=Et(e[t]??"");r=r+65027/a;}return (""+r).slice(0,16)}async function H(e,t){let r=await fetch(...e);if(!r.ok)throw new Error(`Request failed with status ${r.status}`);let a=await r.json();return t.parse(a)}var fe=class{constructor(t){this.proxyApiUrl=t;}simplePrice(t){let r=new URLSearchParams(t);return H([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(t){let{id:r,...a}=t,n=new URLSearchParams(a);return H([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${n}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}};var Or=zod.z.array(zod.z.object({internalId:zod.z.string(),id:zod.z.string(),symbol:zod.z.string(),name:zod.z.string(),image:zod.z.string().optional().nullable(),current_price:zod.z.number().optional().nullable(),price_change_percentage_24h:zod.z.number().optional().nullable(),market_cap:zod.z.number().optional().nullable(),total_volume:zod.z.number().optional().nullable(),platforms:zod.z.record(zod.z.string(),zod.z.string())})),we=class{constructor(t){this.proxyApiUrl=t;}watchlistToken(t){let r=new URLSearchParams(t);return H([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],Or)}};var Lt=coreCoingeckoSdk.getBasicCoingeckoHttp(),U,W,xe=class{constructor({storage:t,proxyApiUrl:r}){w(this,U,void 0);w(this,W,void 0);O(this,"transformSimplePriceResponse",(t,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let a={};return Object.keys(t).forEach(n=>{let o=t[n];a[n]={},r.forEach(s=>{a[n]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),a});R(this,U,t),R(this,W,r);}async getWatchlistDataForToken({tokenDetails:t,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new we(A(this,W)).watchlistToken({tokens:t.symbol,currency:r})).filter(o=>t.isNative?o.internalId===`NATIVE-${t.symbol.toLowerCase()}`:o.platforms[t.caip2Id]===t.address)[0];return n?{priceInCurrency:n.current_price??0,change24:n.price_change_percentage_24h??0,marketCap:n.market_cap??0,vol24:n.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:t=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let a,o=`getSimplePrice-${t?`${Ge(t)}-${r.toString()}`:`${r.toString()}`}`;if(a=A(this,U)?.get?.(o),a)return a;try{a=await Xe(s=>this.simplePrice({coinIds:t,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{a=void 0;}return A(this,U)?.set?.(o,a),a}async getPricesByAddresses(t,r,a=coreCoingeckoSdk.VsCurrencyType.USD){let n,s=`getPricesWithMarketDataByAddresses-${`${Ge(t)}-${r}-${a}`}`;if(n=A(this,U)?.get?.(s),n)return n;try{n=await Xe(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:t,currency:a,useCoingeckoProxy:i}));}catch(i){console.error(i),n=void 0;}return A(this,U)?.set?.(s,n),n}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:r,currency:a=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:n=!1}){if(n){let o=await new fe(A(this,W)).simplePriceByContractAddresses({id:t,contract_addresses:r,vs_currencies:[a],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(o,[a])}return coreCoingeckoSdk.simpleTokenPrice(Lt,{assetPlatformId:t,tokenAddresses:r,currencies:[a],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:a=!1,vol24:n=!1,change24:o=!1,lastUpdated:s=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await new fe(A(this,W)).simplePrice({ids:t,vs_currencies:r,include_market_cap:a,include_24hr_vol:n,include_24hr_change:o,include_last_updated_at:s});return this.transformSimplePriceResponse(l,r)}return coreCoingeckoSdk.simplePrice(Lt,{coinIds:t,currencies:r,marketCap:a,vol24:n,change24:o,lastUpdated:s,shouldThrow:c})}};U=new WeakMap,W=new WeakMap;zod.object({date:zod.string(),usd:zod.record(zod.number())});var u=(e,t,r,a)=>({label:e,type:vmModuleTypes.DetailItemType.CURRENCY,value:t,maxDecimals:r,symbol:a}),x=(e,t,r="horizontal")=>({label:e,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:t});var V=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t});var T=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t}),He=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATA,value:t}),N=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t}),Re=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NETWORK,value:t});var $=({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 Ut=process.env.GLACIER_API_KEY;var j=()=>Ut;var Kr={rltoken:j()},ye=class extends glacierSdk.FetchHttpRequest{constructor(t){super(t);}request(t){let r={...Kr,...t.query||{}},a={...t,query:Object.keys(r).length>0?r:void 0};return super.request(a)}};var J=(e,t)=>({message:`${e}${t instanceof Error?`: ${t.message}`:""}`,data:{cause:t}});var Ve=class extends Error{constructor(){super(...arguments);O(this,"message","Glacier is unhealthy. Try again later.");}},Be=class{constructor({glacierApiUrl:t,headers:r}){O(this,"glacierSdk");O(this,"isGlacierHealthy",!0);O(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:t,HEADERS:r},ye);}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async listLatestPrimaryNetworkTransactions(t){try{return this.glacierSdk.primaryNetworkTransactions.listLatestPrimaryNetworkTransactions(t)}catch(r){throw r instanceof Ve&&this.setGlacierToUnhealthy(),r}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(r){throw r instanceof Ve&&this.setGlacierToUnhealthy(),r}}};var _t=e=>Object.keys(e).includes("unlockedUnstaked"),Ft=e=>Object.keys(e).includes("locked");function Ee(e,t){let r=Object.values(e).reduce(function(a,n){let o=n.reduce(function(s,i){if(i.assetId!==t)return s;let c=Number(i.amount);return s+c},0);return a+o},0);return BigInt(r)}var Xt=({balance:e,networkToken:t,priceInCurrency:r,marketCap:a,vol24:n,change24:o,coingeckoId:s,avaxAssetId:i})=>{let c={},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 f in l){let y=l[f];if(!y||!y.length){c[f]=0n;continue}y.forEach(k=>{if(k.assetId!==i)return;let C=(c[f]??0n)+BigInt(k.amount);c[f]=C;});}let m=new coreUtilsSdk.TokenUnit(c.unlockedUnstaked?c.unlockedUnstaked:0n,t.decimals,t.symbol),p=r?m.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,d=new coreUtilsSdk.TokenUnit(Ee(e,i),t.decimals,t.symbol),h=r?d.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:r,balance:d.toSubUnit(),balanceInCurrency:h,balanceDisplayValue:d.toDisplay(),balanceCurrencyDisplayValue:h?.toFixed(2),available:m.toSubUnit(),availableInCurrency:p,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:p?.toFixed(2),utxos:e,balancePerType:{lockedStaked:c.lockedStaked,lockedStakeable:c.lockedStakeable,lockedPlatform:c.lockedPlatform,atomicMemoryLocked:c.atomicMemoryLocked,atomicMemoryUnlocked:c.atomicMemoryUnlocked,unlockedUnstaked:c.unlockedUnstaked,unlockedStaked:c.unlockedStaked,pendingStaked:c.pendingStaked},marketCap:a,vol24:n,change24:o,coingeckoId:s}};var Ht=({balance:e,networkToken:t,priceInCurrency:r,marketCap:a,vol24:n,change24:o,coingeckoId:s,avaxAssetId:i})=>{let c={},l={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let f in l){let y=l[f];if(!y||!y.length){c[f]=0n;continue}y.forEach(k=>{if(k.assetId!==i)return;let C=(c[f]??0n)+BigInt(k.amount);c[f]=C;});}let m=new coreUtilsSdk.TokenUnit(c.unlocked?c.unlocked:0n,t.decimals,t.symbol),p=r?m.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,d=new coreUtilsSdk.TokenUnit(Ee(e,i),t.decimals,t.symbol),h=r!==void 0?d.mul(r):void 0;return {...t,coingeckoId:s,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:r,balance:d.toSubUnit(),balanceInCurrency:h?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:d.toDisplay(),balanceCurrencyDisplayValue:h?.toDisplay({fixedDp:2}),available:m.toSubUnit(),availableInCurrency:p,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:p?.toFixed(2),utxos:e,balancePerType:{unlocked:c.unlocked,locked:c.locked,atomicMemoryUnlocked:c.atomicMemoryUnlocked,atomicMemoryLocked:c.atomicMemoryLocked},marketCap:a,vol24:n,change24:o}};var $t=async({addresses:e,currency:t,network:r,glacierService:a,tokenService:n})=>{let o=await I({isTestnet:!!r.isTestnet});if(!a.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let i=t.toLowerCase(),c=e[0]??"",l=r.networkToken,m=r.pricingProviders?.coingecko.nativeTokenId,p=r.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,d=r.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,h=await a.getChainBalance({blockchainId:p,network:d,addresses:e.join(",")}).then(k=>k.balances),f=await n.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:i}),y;return _t(h)?(y=Xt({balance:h,networkToken:l,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:m??"",avaxAssetId:o.getContext().avaxAssetID}),{[c]:{[l.symbol]:y}}):Ft(h)?(y=Ht({balance:h,networkToken:l,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:m??"",avaxAssetId:o.getContext().avaxAssetID}),{[c]:{[l.symbol]:y}}):Promise.reject("Incorrect type balance was returned from glacier")};function jt({blockchainId:e,isTestnet:t}){let r=t?"fuji"+e:e,a=ea__default.default.createHash("sha256").update(r).digest("base64");return "avax:"+ta(a).substring(0,32)}var ta=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var zt=async({accountIndex:e,xpubXP:t,walletType:r,network:a})=>{let n=!!a?.isTestnet;if(t===void 0)throw rpcErrors.rpcErrors.invalidParams("xpubXP is required to get address");let o=await I({isTestnet:n}),s;switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:{s=coreWalletsSdk.Avalanche.getAddressPublicKeyFromXpub(t,e);break}case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{s=Buffer.from(t,"hex");break}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}return {[vmModuleTypes.NetworkVMType.AVM]:o.getAddress(s,"X"),[vmModuleTypes.NetworkVMType.PVM]:o.getAddress(s,"P")}};var aa=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")])]),Yt=e=>aa.safeParse(e);var Zt=async({request:e,network:t,approvalController:r})=>{let a=Yt(e.params);if(!a.success)return console.error("invalid params",a.error),{error:rpcErrors.rpcErrors.invalidParams(J("Params are invalid",a.error))};let[n,o]=a.data,s=Buffer.from(n,"utf-8").toString("hex"),i={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE,data:s,accountIndex:o},c={title:"Sign Message",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} is requesting 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 r.requestApproval({request:e,displayData:c,signingData:i});return "error"in l?{error:l.error}:"signedData"in l?{result:l.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var oa=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()}),er=e=>oa.safeParse(e);var Me=({utxoHexes:e=[],vm:t})=>{try{let r=avalanchejs.utils.getManagerForVM(t).getDefaultCodec();return e.map(a=>{let n=avalanchejs.utils.hexToBuffer(a);return avalanchejs.Utxo.fromBytes(n,r)[0]})}catch{return []}};var Le=e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:case vmModuleTypes.TxType.AddPermissionlessValidator:case vmModuleTypes.TxType.AddSubnetValidator:case vmModuleTypes.TxType.CreateChain:case vmModuleTypes.TxType.CreateSubnet:case vmModuleTypes.TxType.RemoveSubnetValidator:return e;case vmModuleTypes.TxType.ConvertSubnetToL1:case vmModuleTypes.TxType.SetL1ValidatorWeight:case vmModuleTypes.TxType.DisableL1Validator:case vmModuleTypes.TxType.IncreaseL1ValidatorBalance:case vmModuleTypes.TxType.RegisterL1Validator:return {...e,chain:e.chain};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 rr=e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:return "Do you want to add this delegator?";case vmModuleTypes.TxType.AddPermissionlessValidator:return "Do you want to add this validator?";case vmModuleTypes.TxType.Export:return "Do you approve this export?";case vmModuleTypes.TxType.Import:return "Do you approve this import?";case vmModuleTypes.TxType.Base:return "Do you approve this transaction?";case vmModuleTypes.TxType.AddSubnetValidator:return "Do you want to add this subnet validator?";case vmModuleTypes.TxType.CreateChain:return "Do you want to create this chain?";case vmModuleTypes.TxType.CreateSubnet:return "Do you want to create this subnet?";case vmModuleTypes.TxType.RemoveSubnetValidator:return "Do you want to remove this subnet validator?";case vmModuleTypes.TxType.ConvertSubnetToL1:return "Do you want to convert this subnet?";case vmModuleTypes.TxType.DisableL1Validator:return "Do you want to disable this validator?";case vmModuleTypes.TxType.IncreaseL1ValidatorBalance:return "Do you want to increase this validator balance?";case vmModuleTypes.TxType.RegisterL1Validator:return "Do you want to register this validator?";case vmModuleTypes.TxType.SetL1ValidatorWeight:return "Do you want to set this validator weight?";default:return "Sign Message"}};var We=async({indices:e,chainAlias:t,isChange:r,isTestnet:a,xpubXP:n,externalXPAddresses:o})=>{if(r&&t!=="X")return [];if(n){let s=await I({isTestnet:a});return e.map(i=>coreWalletsSdk.Avalanche.getAddressFromXpub(n,i,s,t,r))}return o&&Array.isArray(o)?e.map(i=>o.find(c=>c.index===i)).filter(i=>i!==void 0).map(i=>i.address):[]};var qe=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,$e=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,je=e=>e.type===vmModuleTypes.TxType.Export,Je=e=>e.type===vmModuleTypes.TxType.Import,ca=e=>e.type===vmModuleTypes.TxType.Base,Ke=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,la=e=>e.type===vmModuleTypes.TxType.CreateChain,pa=e=>e.type===vmModuleTypes.TxType.CreateSubnet,ze=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,ar=e=>e.type===vmModuleTypes.TxType.ConvertSubnetToL1,nr=e=>e.type===vmModuleTypes.TxType.DisableL1Validator,or=e=>e.type===vmModuleTypes.TxType.IncreaseL1ValidatorBalance,sr=e=>e.type===vmModuleTypes.TxType.RegisterL1Validator,ir=e=>e.type===vmModuleTypes.TxType.SetL1ValidatorWeight,ns=e=>qe(e)||$e(e)||Ke(e)||ze(e),os=e=>je(e)||Je(e),cr=e=>ca(e),lr=e=>la(e),pr=e=>pa(e);var B=(a=>(a.AVM="X-Chain",a.PVM="P-Chain",a.EVM="C-Chain",a))(B||{});var Ye=({tx:e,symbol:t,network:r,signerAccount:a})=>{let n=[],{txFee:o,nodeID:s,start:i,end:c,stake:l}=e,m={items:[V("Account",a),Re("Network",{name:r.chainName,logoUri:r.logoUri})]};n.push(m);let p=[T("Node",s),u("Stake Amount",l,9,t),N("Start",i),N("End",c)];return n.push({title:"Staking Details",items:p}),o&&n.push({title:"Network Fee",items:[u("Fee Amount",o,9,t)]}),n};var Qe=({tx:e,symbol:t,network:r,signerAccount:a})=>{let n=[],{txFee:o,nodeID:s,delegationFee:i,start:c,end:l,stake:m}=e,p={items:[V("Account",a),Re("Network",{name:r.chainName,logoUri:r.logoUri})]};n.push(p);let d=[T("Node",s)];return d.push(u("Stake Amount",m,9,t),x("Delegation Fee",`${i/1e4} %`),N("Start",c),N("End",l)),n.push({title:"Staking Details",items:d}),o&&n.push({title:"Network Fee",items:[u("Fee Amount",o,9,t)]}),n};var Ze=(e,t)=>{let r=[],{txFee:a,nodeID:n,start:o,end:s,subnetID:i}=e,c=[T("Subnet ID",i),T("Node ID",n),N("Start Date",o),N("End Date",s)];return r.push({title:"Staking Details",items:c}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var et=(e,t)=>{let r=[],{txFee:a,chainID:n,managerAddress:o,subnetID:s,validators:i}=e,c=[T("Subnet ID",s),T("Chain ID",n),V("Manager Address",o)];return r.push({title:"L1 Details",items:c}),i.forEach(({balance:l,stake:m,nodeId:p,remainingBalanceOwners:d,deactivationOwners:h},f)=>{let y=[T("Node ID",p),u("Balance",l,9,t),u("Stake",m,9,t)];h.length>0&&y.push(x(`${h.length>1?"Owners":"Owner"} Able to Deactivate`,h.join(`
20
- `),"vertical")),d.length>0&&y.push(x(`${d.length>1?"Owners":"Owner"} of the Remaining Balance`,d.join(`
21
- `),"vertical")),r.push({title:f===0?"Validators":void 0,items:y});}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var tt=(e,t)=>{let r=[],{txFee:a,amount:n,chain:o,destination:s,type:i}=e;return r.push({items:[x("Source Chain",`Avalanche ${B[o]}`),x("Target Chain",`Avalanche ${B[s]}`)]}),r.push({items:[x("Transaction Type",i?(i[0]||"").toUpperCase()+i.slice(1):""),u("Amount",n,9,t)]}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var rt=(e,t)=>{let r=[],{txFee:a,amount:n,chain:o,source:s,type:i}=e;return r.push({items:[x("Source Chain",`Avalanche ${B[s]}`),x("Destination Chain",`Avalanche ${B[o]}`)]}),r.push({items:[x("Transaction Type",i?(i[0]||"").toUpperCase()+i.slice(1):""),u("Amount",n,9,t)]}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var at=(e,t)=>{let r=[],{txFee:a,nodeID:n,subnetID:o}=e,s=[T("Node ID",n),T("Subnet ID",o)];return r.push({title:"Staking Details",items:s}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var nt=(e,t)=>{let r=[],{txFee:a,chain:n,outputs:o,memo:s}=e;return r.push({title:"Chain Details",items:[x("Active chain",`Avalanche ${B[n]}`)]}),o.forEach((i,c)=>{let l=i.owners.flatMap(m=>[V("To",m),u("Amount",i.amount,9,t)]);i.owners.length>1&&l.push(x("Threshold",i.threshold.toString())),r.push({title:c===0?"Balance Change":void 0,items:l});}),n!==avalanchejs.PVM&&s&&r.push({title:"Memo",items:[s]}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var ot=(e,t)=>{let r=[],{txFee:a,threshold:n,controlKeys:o}=e;return r.push({title:"Subnet Details",items:[x(o.length>1?"Owners":"Owner",o.join(`
22
- `),"vertical"),x("Signature Threshold",`${n}/${o.length}`,"vertical")]}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var da=e=>{try{let t=JSON.parse(e);return JSON.stringify(t,null,2)}catch(t){return console.error("Failed to format genesis data:",t),e}},st=(e,t)=>{let r=[],{txFee:a,chainID:n,chainName:o,vmID:s,genesisData:i}=e,c=[x("Blockchain name",o,"vertical"),x("Blockchain ID",n,"vertical"),x("Virtual Machine ID",s,"vertical"),He("Genesis Data",da(i))];return r.push({title:"Blockchain Details",items:c}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var it=(e,t)=>{let r=[],{txFee:a,validationId:n}=e,o=[T("Validation ID",n)];return r.push({title:"L1 Details",items:o}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var ct=(e,t)=>{let r=[],{txFee:a,balance:n,validationId:o}=e,s=[T("Validation ID",o),u("Increase by amount",n,9,t)];return r.push({title:"L1 Details",items:s}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var lt=(e,t)=>{let r=[],{txFee:a,balance:n}=e,o=[u("Initial balance",n,9,t)];return r.push({title:"L1 Details",items:o}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var pt=(e,t)=>{let r=[],{txFee:a}=e;return a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var Ue=(e,t,r)=>{if(cr(e))return nt(e,t);if(je(e))return tt(e,t);if(Je(e))return rt(e,t);if(pr(e))return ot(e,t);if(qe(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddPermissionlessDelegator");return Ye({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else if($e(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddPermissionlessValidator");return Qe({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else {if(lr(e))return st(e,t);if(Ke(e))return Ze(e,t);if(ze(e))return at(e,t);if(ar(e))return et(e,t);if(nr(e))return it(e,t);if(or(e))return ct(e,t);if(sr(e))return lt(e,t);if(ir(e))return pt(e,t)}};var ua=zod.z.object({currentAddress:zod.z.string({required_error:"No active account found"}),currentEvmAddress:zod.z.string().optional(),xpubXP:zod.z.string({invalid_type_error:"xpubXP must be a string"}).optional()}),ga=zod.z.object({account:zod.z.object({xpAddress:zod.z.string({required_error:"XP address is required",invalid_type_error:"XP address must be a string"}),evmAddress:zod.z.string().optional(),xpubXP:zod.z.string({invalid_type_error:"xpubXP must be a string"}).optional(),externalXPAddresses:zod.z.array(zod.z.object({index:zod.z.number(),address:zod.z.string()}))})}),ha=e=>({xpAddress:e.currentAddress,evmAddress:e.currentEvmAddress,xpubXP:e.xpubXP,externalXPAddresses:[]}),fa=e=>e.account,xa=e=>e!=null&&typeof e=="object"&&"account"in e&&e.account!=null&&typeof e.account=="object",_e=e=>{if(!e)return {success:!1,error:"Missing Avalanche transaction context"};if(xa(e)){let{success:n,data:o,error:s}=ga.safeParse(e);return n?{success:!0,data:fa(o)}:{success:!1,error:s.errors[0]?.message||"Invalid or missing Avalanche transaction context"}}let{success:t,data:r,error:a}=ua.safeParse(e);return t?{success:!0,data:ha(r)}:{success:!1,error:a.errors[0]?.message||"Invalid or missing Avalanche transaction context"}};var dr=async({request:e,network:t,approvalController:r,glacierApiUrl:a,appInfo:n})=>{let o=er(e.params);if(!o.success)return {error:rpcErrors.rpcErrors.invalidParams(J("Transaction params are invalid",o.error))};try{let{transactionHex:s,chainAlias:i,externalIndices:c,internalIndices:l,utxos:m}=o.data,p=coreWalletsSdk.Avalanche.getVmByChainAlias(i),d=avalanchejs.utils.hexToBuffer(s),h=t.isTestnet??!1,f=await I({isTestnet:h}),y=_e(e.context);if(!y.success)return {error:rpcErrors.rpcErrors.invalidParams(y.error)};let{xpAddress:k,xpubXP:E,externalXPAddresses:C}=y.data,ce=Me({utxoHexes:m,vm:p}),z=ce.length?ce:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:s,chainAlias:i,network:h?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:a,token:j(),headers:$(n)}),Y;if(i==="C")Y=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:d,vm:p,utxos:z,fromAddress:k});else {let de=avalanchejs.utils.unpackWithManager(p,d);if(E!==void 0&&typeof E!="string")return {error:rpcErrors.rpcErrors.invalidParams("xpubXP must be a string")};let Oe=await We({indices:c??[],chainAlias:i,isChange:!1,isTestnet:h,xpubXP:E,externalXPAddresses:C}),Ir=await We({indices:l??[],chainAlias:i,isChange:!0,isTestnet:h,xpubXP:E,externalXPAddresses:C}),kr=[...new Set([k,...Oe,...Ir])].map(Dr=>avalanchejs.utils.parse(Dr)[2]);Y=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:de,utxos:z,provider:f,fromAddressBytes:kr});}let le=await coreWalletsSdk.Avalanche.parseAvalancheTx(Y,f,k),De=Le(le),pe=rr(le);if(le.type==="unknown"||De===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let Se={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(Y.toJSON()),data:le,vm:p,externalIndices:c,internalIndices:l},Pe=Ue(De,t.networkToken.symbol,{network:t,signerAccount:k});if(Pe===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let be={title:pe,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:Pe,networkFeeSelector:!1},me=await r.requestApproval({request:e,displayData:be,signingData:Se});if("error"in me)return {error:me.error};let M;try{M=await va(f,me,p);}catch(de){return {error:rpcErrors.rpcErrors.internal(J("Unable to broadcast transaction",de))}}return Ia({explorerUrl:t.explorerUrl??"",provider:f,txHash:M,vm:p,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),{result:M}}catch(s){return console.error(s),{error:rpcErrors.rpcErrors.internal(J("Unable to create transaction",s))}}},va=async(e,t,r)=>{if("txHash"in t)return t.txHash;let{txID:a}=await e.issueTxHex(t.signedData,r);return a},Ia=async({explorerUrl:e,provider:t,txHash:r,vm:a,onTransactionPending:n,onTransactionConfirmed:o,onTransactionReverted:s,request:i})=>{let l=Q(e,r);try{n({txHash:r,request:i,explorerLink:l}),a===avalanchejs.PVM?(await G({operation:()=>t.getApiP().getTxStatus({txID:r}),isSuccess:p=>["Committed","Dropped"].includes(p.status),maxRetries:7})).status==="Committed"?o({txHash:r,explorerLink:l,request:i}):s({txHash:r,request:i}):a===avalanchejs.AVM?(await G({operation:()=>t.getApiX().getTxStatus({txID:r}),isSuccess:p=>["Accepted","Rejected"].includes(p.status),maxRetries:7})).status==="Accepted"?o({txHash:r,explorerLink:l,request:i}):s({txHash:r,request:i}):(await G({operation:()=>t.getApiC().getAtomicTxStatus(r),isSuccess:p=>["Accepted","Dropped"].includes(p.status),maxRetries:7})).status==="Accepted"?o({txHash:r,explorerLink:l,request:i}):s({txHash:r,request:i});}catch(m){console.error(m),m instanceof Error&&m.message.startsWith("Max retry exceeded.")||s({txHash:r,request:i});}};var ka=zod.z.object({from:zod.z.string().optional().describe("Avalanche receiving address"),transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"]),utxos:zod.z.string().array().optional()}),ur=e=>ka.safeParse(e);var xr=async({vm:e,txBytes:t,utxos:r,currentAddress:a,currentEvmAddress:n,provider:o})=>{let s,i,c=avalanchejs.utils.unpackWithManager(e,t);if(avalanchejs.evmSerial.isExportTx(c)){let l=c.ins[0]?.address.toHex();if(!n)throw rpcErrors.rpcErrors.invalidRequest("Missing EVM address");if(l?.toLowerCase()!==n.toLowerCase())throw new Error("This account has nothing to sign");return coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:a})}try{let m=avalanchejs.utils.getManagerForVM(e).unpack(t,avalanchejs.avaxSerial.SignedTx);avalanchejs.evmSerial.isImportTx(c)?i=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:a}):i=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:c,provider:o,credentials:m.getCredentials(),utxos:r}),s=c.getSigIndices().map((p,d)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(p,{unsignedTx:i,credentialIndex:d})));}catch{s=c.getSigIndices().map(m=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(m)));}return coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:c,provider:o,credentials:s,utxos:r})};var Ar=async({request:e,network:t,approvalController:r,glacierApiUrl:a,appInfo:n})=>{let o=ur(e.params);if(!o.success)return console.error("invalid params",o.error),{error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let{transactionHex:s,chainAlias:i,from:c,utxos:l}=o.data,m=coreWalletsSdk.Avalanche.getVmByChainAlias(i),p=t.isTestnet??!1,d=await I({isTestnet:p}),h=_e(e.context);if(!h.success)return {error:rpcErrors.rpcErrors.invalidParams(h.error)};let{xpAddress:f,evmAddress:y}=h.data,k=Me({utxoHexes:l,vm:m}),E=k.length?k:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:s,chainAlias:i,network:p?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:a,token:j(),headers:$(n)}),C=await xr({txBytes:avalanchejs.utils.hexToBuffer(s),vm:m,utxos:E,currentAddress:f,currentEvmAddress:y,provider:d}),ce=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(c??f)[2]])[0];if(!ce)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let z=C.getSigIndicesForAddress(ce);if(!z)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let Y=C.getSigIndices();if(!z.some(([de,Oe])=>Y[de]?.includes(Oe)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let De=c??f,pe=await coreWalletsSdk.Avalanche.parseAvalancheTx(C,d,c??f),Se=Le(pe);if(pe.type==="unknown"||Se===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let Pe={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:pe,vm:m,unsignedTxJson:JSON.stringify(C.toJSON()),ownSignatureIndices:z},be=Ue(Se,t.networkToken.symbol,{network:t,signerAccount:De});if(be===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let me={title:"Do you approve this 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:be},M=await r.requestApproval({request:e,displayData:me,signingData:Pe});return "error"in M?{error:M.error}:"signedData"in M?{result:M.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var gt=e=>"derivationPathType"in e&&"accountIndex"in e&&typeof e.accountIndex=="number"&&typeof e.derivationPathType=="string";var Ie=({accountIndex:e,derivationPathType:t,addressIndex:r=0})=>{if(e<0)throw rpcErrors.rpcErrors.invalidParams("Account index must be a non-negative integer");if(r!==void 0&&r<0)throw rpcErrors.rpcErrors.invalidParams("Address index must be a non-negative integer");switch(t){case"bip44":return {[vmModuleTypes.NetworkVMType.AVM]:`m/44'/9000'/${e}'/0/${r}`,[vmModuleTypes.NetworkVMType.CoreEth]:`m/44'/60'/0'/0/${e}`};case"ledger_live":return {[vmModuleTypes.NetworkVMType.AVM]:`m/44'/9000'/${e}'/0/${r}`,[vmModuleTypes.NetworkVMType.CoreEth]:`m/44'/60'/${e}'/0/0`};default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported derivation path type: ${t}`)}};var Tr=async e=>{let{approvalController:t,network:r,secretId:a}=e,n=gt(e)?Ie(e).AVM:void 0,o=gt(e)?Ie(e).CoreEth:void 0,s=await I({isTestnet:!!r.isTestnet}),i=await t.requestPublicKey({curve:"secp256k1",secretId:a,derivationPath:n}).catch(()=>null),c=await t.requestPublicKey({curve:"secp256k1",secretId:a,derivationPath:o}).catch(()=>null),l=c?{[vmModuleTypes.NetworkVMType.CoreEth]:s.getAddress(Buffer.from(c,"hex"),"C")}:{},m=i?{[vmModuleTypes.NetworkVMType.AVM]:s.getAddress(Buffer.from(i,"hex"),"X"),[vmModuleTypes.NetworkVMType.PVM]:s.getAddress(Buffer.from(i,"hex"),"P")}:{};return {...l,...m}};var oe,ke,se,F,ie,vr=class{constructor({approvalController:t,environment:r,appInfo:a}){w(this,oe,void 0);w(this,ke,void 0);w(this,se,void 0);w(this,F,void 0);w(this,ie,void 0);let{glacierApiUrl:n,proxyApiUrl:o}=Bt(r);R(this,ie,a),R(this,oe,new Be({glacierApiUrl:n,headers:$(a)})),R(this,ke,o),R(this,se,n),R(this,F,t);}getProvider(t){return I({isTestnet:!!t.isTestnet})}getAddress({accountIndex:t,xpubXP:r,walletType:a,network:n}){return zt({accountIndex:t,xpubXP:r,walletType:a,network:n})}getBalances({addresses:t,network:r,storage:a,currency:n}){let o=new xe({storage:a,proxyApiUrl:A(this,ke)});return $t({addresses:t,currency:n,network:r,glacierService:A(this,oe),tokenService:o})}getManifest(){let t=vmModuleTypes.parseManifest(At);return t.success?t.data:void 0}getNetworkFee(t){let{isTestnet:r,vmName:a}=t;return vt({isTestnet:!!r,vmName:a})}getTransactionHistory({network:t,address:r,nextPageToken:a,offset:n}){return Rt({network:t,address:r,nextPageToken:a,offset:n,glacierService:A(this,oe)})}getTokens(t){return Promise.resolve([])}buildDerivationPath(t){return Ie(t)}async deriveAddress(t){return Tr({...t,approvalController:A(this,F)})}async onRpcRequest(t,r){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return Zt({request:t,network:r,approvalController:A(this,F)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return Ar({request:t,network:r,approvalController:A(this,F),glacierApiUrl:A(this,se),appInfo:A(this,ie)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return dr({request:t,network:r,approvalController:A(this,F),glacierApiUrl:A(this,se),appInfo:A(this,ie)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:r}){return jt({blockchainId:t,isTestnet:r})}};oe=new WeakMap,ke=new WeakMap,se=new WeakMap,F=new WeakMap,ie=new WeakMap;var Bc=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,Ec=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
19
+ var Mr=Object.defineProperty;var Lr=(e,t,r)=>t in e?Mr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var X=(e,t,r)=>(Lr(e,typeof t!="symbol"?t+"":t,r),r),Je=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var y=(e,t,r)=>(Je(e,t,"read from private field"),r?r.call(e):t.get(e)),v=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r);},S=(e,t,r,a)=>(Je(e,t,"write to private field"),a?a.call(e,r):t.set(e,r),r);var Ke=(e,t,r)=>(Je(e,t,"access private method"),r);function bt(e){let t,r=0;for(t=0;t<e.length;t++)r+=e.charCodeAt(t)*(t+1);return r}function ze(e){let t,r=0;for(t=0;t<e.length;t++){let a=bt(e[t]??"");r=r+65027/a;}return (""+r).slice(0,16)}var H=async({operation:e,isSuccess:t,maxRetries:r=10,backoffPolicy:a=L.exponential()})=>{let n=0,o=0,s;for(;o<r;){o>0&&await Ur(n);try{let c=await e(o);if(t(c))return c}catch(c){s=c;}n=a(o),o++;}let i=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(i)},L=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return r=>t*1e3}static constantMs(t){return r=>t}static linearThenExponential(t,r){return a=>{if(a<t)return (a+1)*r;let n=a-t+1,o=t*r,s=2*r*(Math.pow(2,n)-1);return o+s}}};function Ur(e){return new Promise(t=>setTimeout(t,e))}var Ye=e=>H({operation:t=>e(t>0),maxRetries:2,backoffPolicy:L.constant(1),isSuccess:t=>t?.status?.error_code!==429});async function G(e,t,r=fetch){let a=await r(...e);if(!a.ok)throw new Error(`Request failed with status ${a.status}`);let n=await a.json();return t.parse(n)}var fe=class{constructor(t,r){this.proxyApiUrl=t;this.fetchFn=r;}simplePrice(t){let r=new URLSearchParams(t);return G([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(t){let{id:r,...a}=t,n=new URLSearchParams(a);return G([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${n}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}};var _r=zod.z.array(zod.z.object({internalId:zod.z.string(),id:zod.z.string(),symbol:zod.z.string(),name:zod.z.string(),image:zod.z.string().optional().nullable(),current_price:zod.z.number().optional().nullable(),price_change_percentage_24h:zod.z.number().optional().nullable(),market_cap:zod.z.number().optional().nullable(),total_volume:zod.z.number().optional().nullable(),platforms:zod.z.record(zod.z.string(),zod.z.string())})),Ve=class{constructor(t){this.proxyApiUrl=t;}watchlistToken(t){let r=new URLSearchParams(t);return G([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],_r)}};var U,q,W,re,ye=class{constructor({storage:t,proxyApiUrl:r,fetch:a}){v(this,U,void 0);v(this,q,void 0);v(this,W,void 0);v(this,re,void 0);X(this,"transformSimplePriceResponse",(t,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let a={};return Object.keys(t).forEach(n=>{let o=t[n];a[n]={},r.forEach(s=>{a[n]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),a});S(this,U,t),S(this,q,r),S(this,W,a??globalThis.fetch),S(this,re,coreCoingeckoSdk.getBasicCoingeckoHttp(void 0,y(this,W)));}async getWatchlistDataForToken({tokenDetails:t,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let a=(await new Ve(y(this,q)).watchlistToken({tokens:t.symbol,currency:r})).filter(o=>t.isNative?o.internalId===`NATIVE-${t.symbol.toLowerCase()}`:o.platforms[t.caip2Id]===t.address),[n]=a;return n?{priceInCurrency:n.current_price??0,change24:n.price_change_percentage_24h??0,marketCap:n.market_cap??0,vol24:n.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:t=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let a,o=`getSimplePrice-${t?`${ze(t)}-${r.toString()}`:`${r.toString()}`}`;if(a=y(this,U)?.get?.(o),a)return a;try{a=await Ye(s=>this.simplePrice({coinIds:t,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{a=void 0;}return y(this,U)?.set?.(o,a),a}async getPricesByAddresses(t,r,a=coreCoingeckoSdk.VsCurrencyType.USD){let n,s=`getPricesWithMarketDataByAddresses-${`${ze(t)}-${r}-${a}`}`;if(n=y(this,U)?.get?.(s),n)return n;try{n=await Ye(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:t,currency:a,useCoingeckoProxy:i}));}catch(i){console.error(i),n=void 0;}return y(this,U)?.set?.(s,n),n}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:r,currency:a=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:n=!1}){if(n){let o=await new fe(y(this,q),y(this,W)).simplePriceByContractAddresses({id:t,contract_addresses:r,vs_currencies:[a],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(o,[a])}return coreCoingeckoSdk.simpleTokenPrice(y(this,re),{assetPlatformId:t,tokenAddresses:r,currencies:[a],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:a=!1,vol24:n=!1,change24:o=!1,lastUpdated:s=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await new fe(y(this,q),y(this,W)).simplePrice({ids:t,vs_currencies:r,include_market_cap:a,include_24hr_vol:n,include_24hr_change:o,include_last_updated_at:s});return this.transformSimplePriceResponse(l,r)}return coreCoingeckoSdk.simplePrice(y(this,re),{coinIds:t,currencies:r,marketCap:a,vol24:n,change24:o,lastUpdated:s,shouldThrow:c})}};U=new WeakMap,q=new WeakMap,W=new WeakMap,re=new WeakMap;zod.object({date:zod.string(),usd:zod.record(zod.number())});var u=(e,t,r,a)=>({label:e,type:vmModuleTypes.DetailItemType.CURRENCY,value:t,maxDecimals:r,symbol:a}),x=(e,t,r="horizontal")=>({label:e,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:t});var V=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t});var A=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t}),Qe=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATA,value:t}),R=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t}),Be=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NETWORK,value:t});var j=({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 Nt=process.env.GLACIER_API_KEY;var J=()=>Nt;var Jr={rltoken:J()},K,Ee,Me,Rt,Le,Vt,xe=class extends glacierSdk.FetchHttpRequest{constructor(r){super(r);v(this,Me);v(this,Le);v(this,K,3);v(this,Ee,L.exponential());}request(r){let a={...Jr,...r.query||{}},n={...r,query:Object.keys(a).length>0?a:void 0},o=()=>super.request(n);return y(this,K)>0?Ke(this,Le,Vt).call(this,o):Ke(this,Me,Rt).call(this,o)}};K=new WeakMap,Ee=new WeakMap,Me=new WeakSet,Rt=function(r){let a=r();return new glacierSdk.CancelablePromise((n,o,s)=>{s(()=>a.cancel()),a.then(i=>{S(this,K,0),n(i);}).catch(i=>{if(i instanceof glacierSdk.ApiError){let c=i.status===429,l=i.status>=500&&i.status<600;S(this,K,y(this,K)+Number(c||l));}o(i);});})},Le=new WeakSet,Vt=function(r){let a=y(this,Ee).call(this,y(this,K));return new glacierSdk.CancelablePromise((n,o,s)=>{let i=setTimeout(()=>{let c=r();s(()=>{c.cancel(),clearTimeout(i);}),c.then(n).catch(o);},a);})};var z=(e,t)=>({message:`${e}${t instanceof Error?`: ${t.message}`:""}`,data:{cause:t}});var Bt={name:"Avalanche",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/index.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","avax:N5PeRoKwDDREF0awn2GPsb9sHnGRzdEX"],namespaces:["avax"]},cointype:"9000",permissions:{rpc:{dapps:!0,methods:["avalanche_sendTransaction","avalanche_signTransaction","avalanche_signMessage"],nonRestrictedMethods:[]}},manifestVersion:"0.1"};var zr={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Yr={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Mt=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return zr;case vmModuleTypes.Environment.DEV:return Yr}};var Qr=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()}),Lt=e=>Qr.safeParse(e);var k=async({isTestnet:e})=>e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider();var Ue=({utxoHexes:e=[],vm:t})=>{try{let r=avalanchejs.utils.getManagerForVM(t).getDefaultCodec();return e.map(a=>{let n=avalanchejs.utils.hexToBuffer(a);return avalanchejs.Utxo.fromBytes(n,r)[0]})}catch{return []}};var _e=e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:case vmModuleTypes.TxType.AddPermissionlessValidator:case vmModuleTypes.TxType.AddSubnetValidator:case vmModuleTypes.TxType.CreateChain:case vmModuleTypes.TxType.CreateSubnet:case vmModuleTypes.TxType.RemoveSubnetValidator:return e;case vmModuleTypes.TxType.ConvertSubnetToL1:case vmModuleTypes.TxType.SetL1ValidatorWeight:case vmModuleTypes.TxType.DisableL1Validator:case vmModuleTypes.TxType.IncreaseL1ValidatorBalance:case vmModuleTypes.TxType.RegisterL1Validator:return {...e,chain:e.chain};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 Ft=e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:return "Do you want to add this delegator?";case vmModuleTypes.TxType.AddPermissionlessValidator:return "Do you want to add this validator?";case vmModuleTypes.TxType.Export:return "Do you approve this export?";case vmModuleTypes.TxType.Import:return "Do you approve this import?";case vmModuleTypes.TxType.Base:return "Do you approve this transaction?";case vmModuleTypes.TxType.AddSubnetValidator:return "Do you want to add this subnet validator?";case vmModuleTypes.TxType.CreateChain:return "Do you want to create this chain?";case vmModuleTypes.TxType.CreateSubnet:return "Do you want to create this subnet?";case vmModuleTypes.TxType.RemoveSubnetValidator:return "Do you want to remove this subnet validator?";case vmModuleTypes.TxType.ConvertSubnetToL1:return "Do you want to convert this subnet?";case vmModuleTypes.TxType.DisableL1Validator:return "Do you want to disable this validator?";case vmModuleTypes.TxType.IncreaseL1ValidatorBalance:return "Do you want to increase this validator balance?";case vmModuleTypes.TxType.RegisterL1Validator:return "Do you want to register this validator?";case vmModuleTypes.TxType.SetL1ValidatorWeight:return "Do you want to set this validator weight?";default:return "Sign Message"}};var Ze=async({indices:e,chainAlias:t,isChange:r,isTestnet:a,xpubXP:n,externalXPAddresses:o})=>{if(r&&t!=="X")return [];if(n){let s=await k({isTestnet:a});return e.map(i=>coreWalletsSdk.Avalanche.getAddressFromXpub(n,i,s,t,r))}return o&&Array.isArray(o)?e.map(i=>o.find(c=>c.index===i)).filter(i=>i!==void 0).map(i=>i.address):[]};var et=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,tt=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,rt=e=>e.type===vmModuleTypes.TxType.Export,at=e=>e.type===vmModuleTypes.TxType.Import,ta=e=>e.type===vmModuleTypes.TxType.Base,nt=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,ra=e=>e.type===vmModuleTypes.TxType.CreateChain,aa=e=>e.type===vmModuleTypes.TxType.CreateSubnet,ot=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,Ot=e=>e.type===vmModuleTypes.TxType.ConvertSubnetToL1,Xt=e=>e.type===vmModuleTypes.TxType.DisableL1Validator,Ht=e=>e.type===vmModuleTypes.TxType.IncreaseL1ValidatorBalance,Gt=e=>e.type===vmModuleTypes.TxType.RegisterL1Validator,qt=e=>e.type===vmModuleTypes.TxType.SetL1ValidatorWeight,ao=e=>et(e)||tt(e)||nt(e)||ot(e),no=e=>rt(e)||at(e),Wt=e=>ta(e),$t=e=>ra(e),jt=e=>aa(e);var B=(a=>(a.AVM="X-Chain",a.PVM="P-Chain",a.EVM="C-Chain",a))(B||{});var st=({tx:e,symbol:t,network:r,signerAccount:a})=>{let n=[],{txFee:o,nodeID:s,start:i,end:c,stake:l}=e,m={items:[V("Account",a),Be("Network",{name:r.chainName,logoUri:r.logoUri})]};n.push(m);let p=[A("Node",s),u("Stake Amount",l,9,t),R("Start",i),R("End",c)];return n.push({title:"Staking Details",items:p}),o&&n.push({title:"Network Fee",items:[u("Fee Amount",o,9,t)]}),n};var it=({tx:e,symbol:t,network:r,signerAccount:a})=>{let n=[],{txFee:o,nodeID:s,delegationFee:i,start:c,end:l,stake:m}=e,p={items:[V("Account",a),Be("Network",{name:r.chainName,logoUri:r.logoUri})]};n.push(p);let d=[A("Node",s)];return d.push(u("Stake Amount",m,9,t),x("Delegation Fee",`${i/1e4} %`),R("Start",c),R("End",l)),n.push({title:"Staking Details",items:d}),o&&n.push({title:"Network Fee",items:[u("Fee Amount",o,9,t)]}),n};var ct=(e,t)=>{let r=[],{txFee:a,nodeID:n,start:o,end:s,subnetID:i}=e,c=[A("Subnet ID",i),A("Node ID",n),R("Start Date",o),R("End Date",s)];return r.push({title:"Staking Details",items:c}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var lt=(e,t)=>{let r=[],{txFee:a,chainID:n,managerAddress:o,subnetID:s,validators:i}=e,c=[A("Subnet ID",s),A("Chain ID",n),V("Manager Address",o)];return r.push({title:"L1 Details",items:c}),i.forEach(({balance:l,stake:m,nodeId:p,remainingBalanceOwners:d,deactivationOwners:g},f)=>{let T=[A("Node ID",p),u("Balance",l,9,t),u("Stake",m,9,t)];g.length>0&&T.push(x(`${g.length>1?"Owners":"Owner"} Able to Deactivate`,g.join(`
20
+ `),"vertical")),d.length>0&&T.push(x(`${d.length>1?"Owners":"Owner"} of the Remaining Balance`,d.join(`
21
+ `),"vertical")),r.push({title:f===0?"Validators":void 0,items:T});}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var pt=(e,t)=>{let r=[],{txFee:a,amount:n,chain:o,destination:s,type:i}=e;return r.push({items:[x("Source Chain",`Avalanche ${B[o]}`),x("Target Chain",`Avalanche ${B[s]}`)]}),r.push({items:[x("Transaction Type",i?(i[0]||"").toUpperCase()+i.slice(1):""),u("Amount",n,9,t)]}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var mt=(e,t)=>{let r=[],{txFee:a,amount:n,chain:o,source:s,type:i}=e;return r.push({items:[x("Source Chain",`Avalanche ${B[s]}`),x("Destination Chain",`Avalanche ${B[o]}`)]}),r.push({items:[x("Transaction Type",i?(i[0]||"").toUpperCase()+i.slice(1):""),u("Amount",n,9,t)]}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var dt=(e,t)=>{let r=[],{txFee:a,nodeID:n,subnetID:o}=e,s=[A("Node ID",n),A("Subnet ID",o)];return r.push({title:"Staking Details",items:s}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var ut=(e,t)=>{let r=[],{txFee:a,chain:n,outputs:o,memo:s}=e;return r.push({title:"Chain Details",items:[x("Active chain",`Avalanche ${B[n]}`)]}),o.forEach((i,c)=>{let l=i.owners.flatMap(m=>[V("To",m),u("Amount",i.amount,9,t)]);i.owners.length>1&&l.push(x("Threshold",i.threshold.toString())),r.push({title:c===0?"Balance Change":void 0,items:l});}),n!==avalanchejs.PVM&&s&&r.push({title:"Memo",items:[s]}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var ht=(e,t)=>{let r=[],{txFee:a,threshold:n,controlKeys:o}=e;return r.push({title:"Subnet Details",items:[x(o.length>1?"Owners":"Owner",o.join(`
22
+ `),"vertical"),x("Signature Threshold",`${n}/${o.length}`,"vertical")]}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var oa=e=>{try{let t=JSON.parse(e);return JSON.stringify(t,null,2)}catch(t){return console.error("Failed to format genesis data:",t),e}},gt=(e,t)=>{let r=[],{txFee:a,chainID:n,chainName:o,vmID:s,genesisData:i}=e,c=[x("Blockchain name",o,"vertical"),x("Blockchain ID",n,"vertical"),x("Virtual Machine ID",s,"vertical"),Qe("Genesis Data",oa(i))];return r.push({title:"Blockchain Details",items:c}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var ft=(e,t)=>{let r=[],{txFee:a,validationId:n}=e,o=[A("Validation ID",n)];return r.push({title:"L1 Details",items:o}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var yt=(e,t)=>{let r=[],{txFee:a,balance:n,validationId:o}=e,s=[A("Validation ID",o),u("Increase by amount",n,9,t)];return r.push({title:"L1 Details",items:s}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var xt=(e,t)=>{let r=[],{txFee:a,balance:n}=e,o=[u("Initial balance",n,9,t)];return r.push({title:"L1 Details",items:o}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var Tt=(e,t)=>{let r=[],{txFee:a}=e;return a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var Fe=(e,t,r)=>{if(Wt(e))return ut(e,t);if(rt(e))return pt(e,t);if(at(e))return mt(e,t);if(jt(e))return ht(e,t);if(et(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddPermissionlessDelegator");return st({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else if(tt(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddPermissionlessValidator");return it({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else {if($t(e))return gt(e,t);if(nt(e))return ct(e,t);if(ot(e))return dt(e,t);if(Ot(e))return lt(e,t);if(Xt(e))return ft(e,t);if(Ht(e))return yt(e,t);if(Gt(e))return xt(e,t);if(qt(e))return Tt(e,t)}};var zt=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,Yt=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function oe(e,t,r="tx"){return `${e}/${r}/${t}`}function Y({amount:e,decimals:t}){return e===void 0?new F__default.default(0):new F__default.default(e/10**t)}var sa=zod.z.object({currentAddress:zod.z.string({required_error:"No active account found"}),currentEvmAddress:zod.z.string().optional(),xpubXP:zod.z.string({invalid_type_error:"xpubXP must be a string"}).optional()}),ia=zod.z.object({account:zod.z.object({xpAddress:zod.z.string({required_error:"XP address is required",invalid_type_error:"XP address must be a string"}),evmAddress:zod.z.string().optional(),xpubXP:zod.z.string({invalid_type_error:"xpubXP must be a string"}).optional(),externalXPAddresses:zod.z.array(zod.z.object({index:zod.z.number(),address:zod.z.string()}))})}),ca=e=>({xpAddress:e.currentAddress,evmAddress:e.currentEvmAddress,xpubXP:e.xpubXP,externalXPAddresses:[]}),la=e=>e.account,pa=e=>e!=null&&typeof e=="object"&&"account"in e&&e.account!=null&&typeof e.account=="object",Oe=e=>{if(!e)return {success:!1,error:"Missing Avalanche transaction context"};if(pa(e)){let{success:n,data:o,error:s}=ia.safeParse(e);return n?{success:!0,data:la(o)}:{success:!1,error:s.errors[0]?.message||"Invalid or missing Avalanche transaction context"}}let{success:t,data:r,error:a}=sa.safeParse(e);return t?{success:!0,data:ca(r)}:{success:!1,error:a.errors[0]?.message||"Invalid or missing Avalanche transaction context"}};var Zt=async({request:e,network:t,approvalController:r,glacierApiUrl:a,appInfo:n})=>{let o=Lt(e.params);if(!o.success)return {error:rpcErrors.rpcErrors.invalidParams(z("Transaction params are invalid",o.error))};try{let{transactionHex:s,chainAlias:i,externalIndices:c,internalIndices:l,utxos:m}=o.data,p=coreWalletsSdk.Avalanche.getVmByChainAlias(i),d=avalanchejs.utils.hexToBuffer(s),g=t.isTestnet??!1,f=await k({isTestnet:g}),T=Oe(e.context);if(!T.success)return {error:rpcErrors.rpcErrors.invalidParams(T.error)};let{xpAddress:D,xpubXP:E,externalXPAddresses:w}=T.data,me=Ue({utxoHexes:m,vm:p}),Z=me.length?me:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:s,chainAlias:i,network:g?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:a,token:J(),headers:j(n)}),ee;if(i==="C")ee=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:d,vm:p,utxos:Z,fromAddress:D});else {let ge=avalanchejs.utils.unpackWithManager(p,d);if(E!==void 0&&typeof E!="string")return {error:rpcErrors.rpcErrors.invalidParams("xpubXP must be a string")};let je=await Ze({indices:c??[],chainAlias:i,isChange:!1,isTestnet:g,xpubXP:E,externalXPAddresses:w}),Vr=await Ze({indices:l??[],chainAlias:i,isChange:!0,isTestnet:g,xpubXP:E,externalXPAddresses:w}),Br=[...new Set([D,...je,...Vr])].map(Er=>avalanchejs.utils.parse(Er)[2]);ee=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:ge,utxos:Z,provider:f,fromAddressBytes:Br});}let de=await coreWalletsSdk.Avalanche.parseAvalancheTx(ee,f,D),Ce=_e(de),ue=Ft(de);if(de.type==="unknown"||Ce===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let Ne={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(ee.toJSON()),data:de,vm:p,externalIndices:c,internalIndices:l},we=Fe(Ce,t.networkToken.symbol,{network:t,signerAccount:D});if(we===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let Re={title:ue,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:we,networkFeeSelector:!1},he=await r.requestApproval({request:e,displayData:Re,signingData:Ne});if("error"in he)return {error:he.error};let M;try{M=await ha(f,he,p);}catch(ge){return {error:rpcErrors.rpcErrors.internal(z("Unable to broadcast transaction",ge))}}return ga({explorerUrl:t.explorerUrl??"",provider:f,txHash:M,vm:p,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),{result:M}}catch(s){return console.error(s),{error:rpcErrors.rpcErrors.internal(z("Unable to create transaction",s))}}},ha=async(e,t,r)=>{if("txHash"in t)return t.txHash;let{txID:a}=await e.issueTxHex(t.signedData,r);return a},ga=async({explorerUrl:e,provider:t,txHash:r,vm:a,onTransactionPending:n,onTransactionConfirmed:o,onTransactionReverted:s,request:i})=>{let l=oe(e,r);try{n({txHash:r,request:i,explorerLink:l}),a===avalanchejs.PVM?(await H({operation:()=>t.getApiP().getTxStatus({txID:r}),isSuccess:p=>["Committed","Dropped"].includes(p.status),maxRetries:7})).status==="Committed"?o({txHash:r,explorerLink:l,request:i}):s({txHash:r,request:i}):a===avalanchejs.AVM?(await H({operation:()=>t.getApiX().getTxStatus({txID:r}),isSuccess:p=>["Accepted","Rejected"].includes(p.status),maxRetries:7})).status==="Accepted"?o({txHash:r,explorerLink:l,request:i}):s({txHash:r,request:i}):(await H({operation:()=>t.getApiC().getAtomicTxStatus(r),isSuccess:p=>["Accepted","Dropped"].includes(p.status),maxRetries:7})).status==="Accepted"?o({txHash:r,explorerLink:l,request:i}):s({txHash:r,request:i});}catch(m){console.error(m),m instanceof Error&&m.message.startsWith("Max retry exceeded.")||s({txHash:r,request:i});}};var fa=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")])]),er=e=>fa.safeParse(e);var rr=async({request:e,network:t,approvalController:r})=>{let a=er(e.params);if(!a.success)return console.error("invalid params",a.error),{error:rpcErrors.rpcErrors.invalidParams(z("Params are invalid",a.error))};let[n,o]=a.data,s=Buffer.from(n,"utf-8").toString("hex"),i={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE,data:s,accountIndex:o},c={title:"Sign Message",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} is requesting 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 r.requestApproval({request:e,displayData:c,signingData:i});return "error"in l?{error:l.error}:"signedData"in l?{result:l.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var xa=zod.z.object({from:zod.z.string().optional().describe("Avalanche receiving address"),transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"]),utxos:zod.z.string().array().optional()}),ar=e=>xa.safeParse(e);var ir=async({vm:e,txBytes:t,utxos:r,currentAddress:a,currentEvmAddress:n,provider:o})=>{let s,i,c=avalanchejs.utils.unpackWithManager(e,t);if(avalanchejs.evmSerial.isExportTx(c)){let l=c.ins[0]?.address.toHex();if(!n)throw rpcErrors.rpcErrors.invalidRequest("Missing EVM address");if(l?.toLowerCase()!==n.toLowerCase())throw new Error("This account has nothing to sign");return coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:a})}try{let m=avalanchejs.utils.getManagerForVM(e).unpack(t,avalanchejs.avaxSerial.SignedTx);avalanchejs.evmSerial.isImportTx(c)?i=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:a}):i=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:c,provider:o,credentials:m.getCredentials(),utxos:r}),s=c.getSigIndices().map((p,d)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(p,{unsignedTx:i,credentialIndex:d})));}catch{s=c.getSigIndices().map(m=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(m)));}return coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:c,provider:o,credentials:s,utxos:r})};var lr=async({request:e,network:t,approvalController:r,glacierApiUrl:a,appInfo:n})=>{let o=ar(e.params);if(!o.success)return console.error("invalid params",o.error),{error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let{transactionHex:s,chainAlias:i,from:c,utxos:l}=o.data,m=coreWalletsSdk.Avalanche.getVmByChainAlias(i),p=t.isTestnet??!1,d=await k({isTestnet:p}),g=Oe(e.context);if(!g.success)return {error:rpcErrors.rpcErrors.invalidParams(g.error)};let{xpAddress:f,evmAddress:T}=g.data,D=Ue({utxoHexes:l,vm:m}),E=D.length?D:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:s,chainAlias:i,network:p?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:a,token:J(),headers:j(n)}),w=await ir({txBytes:avalanchejs.utils.hexToBuffer(s),vm:m,utxos:E,currentAddress:f,currentEvmAddress:T,provider:d}),me=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(c??f)[2]])[0];if(!me)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let Z=w.getSigIndicesForAddress(me);if(!Z)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let ee=w.getSigIndices();if(!Z.some(([ge,je])=>ee[ge]?.includes(je)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let Ce=c??f,ue=await coreWalletsSdk.Avalanche.parseAvalancheTx(w,d,c??f),Ne=_e(ue);if(ue.type==="unknown"||Ne===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let we={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:ue,vm:m,unsignedTxJson:JSON.stringify(w.toJSON()),ownSignatureIndices:Z},Re=Fe(Ne,t.networkToken.symbol,{network:t,signerAccount:Ce});if(Re===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let he={title:"Do you approve this 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:Re},M=await r.requestApproval({request:e,displayData:he,signingData:we});return "error"in M?{error:M.error}:"signedData"in M?{result:M.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var ve=({accountIndex:e,derivationPathType:t,addressIndex:r=0})=>{if(e<0)throw rpcErrors.rpcErrors.invalidParams("Account index must be a non-negative integer");if(r!==void 0&&r<0)throw rpcErrors.rpcErrors.invalidParams("Address index must be a non-negative integer");switch(t){case"bip44":return {[vmModuleTypes.NetworkVMType.AVM]:`m/44'/9000'/${e}'/0/${r}`,[vmModuleTypes.NetworkVMType.CoreEth]:`m/44'/60'/0'/0/${e}`};case"ledger_live":return {[vmModuleTypes.NetworkVMType.AVM]:`m/44'/9000'/${e}'/0/${r}`,[vmModuleTypes.NetworkVMType.CoreEth]:`m/44'/60'/${e}'/0/0`};default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported derivation path type: ${t}`)}};var Dt=e=>"derivationPathType"in e&&"accountIndex"in e&&typeof e.accountIndex=="number"&&typeof e.derivationPathType=="string";var pr=async e=>{let{approvalController:t,network:r,secretId:a}=e,n=Dt(e)?ve(e).AVM:void 0,o=Dt(e)?ve(e).CoreEth:void 0,s=await k({isTestnet:!!r.isTestnet}),i=await t.requestPublicKey({curve:"secp256k1",secretId:a,derivationPath:n}).catch(()=>null),c=await t.requestPublicKey({curve:"secp256k1",secretId:a,derivationPath:o}).catch(()=>null),l=c?{[vmModuleTypes.NetworkVMType.CoreEth]:s.getAddress(Buffer.from(c,"hex"),"C")}:{},m=i?{[vmModuleTypes.NetworkVMType.AVM]:s.getAddress(Buffer.from(i,"hex"),"X"),[vmModuleTypes.NetworkVMType.PVM]:s.getAddress(Buffer.from(i,"hex"),"P")}:{};return {...l,...m}};var ur=async({accountIndex:e,xpubXP:t,walletType:r,network:a})=>{let n=!!a?.isTestnet;if(t===void 0)throw rpcErrors.rpcErrors.invalidParams("xpubXP is required to get address");let o=await k({isTestnet:n}),s;switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:{s=coreWalletsSdk.Avalanche.getAddressPublicKeyFromXpub(t,e);break}case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{s=Buffer.from(t,"hex");break}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}return {[vmModuleTypes.NetworkVMType.AVM]:o.getAddress(s,"X"),[vmModuleTypes.NetworkVMType.PVM]:o.getAddress(s,"P")}};var He=class extends Error{constructor(){super(...arguments);X(this,"message","Glacier is unhealthy. Try again later.");}},Ge=class{constructor({glacierApiUrl:t,headers:r}){X(this,"glacierSdk");X(this,"isGlacierHealthy",!0);X(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:t,HEADERS:r},xe);}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async listLatestPrimaryNetworkTransactions(t){try{return this.glacierSdk.primaryNetworkTransactions.listLatestPrimaryNetworkTransactions(t)}catch(r){throw r instanceof He&&this.setGlacierToUnhealthy(),r}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(r){throw r instanceof He&&this.setGlacierToUnhealthy(),r}}};var hr=e=>Object.keys(e).includes("unlockedUnstaked"),gr=e=>Object.keys(e).includes("locked");function qe(e,t){let r=Object.values(e).reduce(function(a,n){let o=n.reduce(function(s,i){if(i.assetId!==t)return s;let c=Number(i.amount);return s+c},0);return a+o},0);return BigInt(r)}var yr=({balance:e,networkToken:t,priceInCurrency:r,marketCap:a,vol24:n,change24:o,coingeckoId:s,avaxAssetId:i})=>{let c={},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 f in l){let T=l[f];if(!T||!T.length){c[f]=0n;continue}T.forEach(D=>{if(D.assetId!==i)return;let w=(c[f]??0n)+BigInt(D.amount);c[f]=w;});}let m=new coreUtilsSdk.TokenUnit(c.unlockedUnstaked?c.unlockedUnstaked:0n,t.decimals,t.symbol),p=r?m.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,d=new coreUtilsSdk.TokenUnit(qe(e,i),t.decimals,t.symbol),g=r?d.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:r,balance:d.toSubUnit(),balanceInCurrency:g,balanceDisplayValue:d.toDisplay(),balanceCurrencyDisplayValue:g?.toFixed(2),available:m.toSubUnit(),availableInCurrency:p,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:p?.toFixed(2),utxos:e,balancePerType:{lockedStaked:c.lockedStaked,lockedStakeable:c.lockedStakeable,lockedPlatform:c.lockedPlatform,atomicMemoryLocked:c.atomicMemoryLocked,atomicMemoryUnlocked:c.atomicMemoryUnlocked,unlockedUnstaked:c.unlockedUnstaked,unlockedStaked:c.unlockedStaked,pendingStaked:c.pendingStaked},marketCap:a,vol24:n,change24:o,coingeckoId:s}};var Tr=({balance:e,networkToken:t,priceInCurrency:r,marketCap:a,vol24:n,change24:o,coingeckoId:s,avaxAssetId:i})=>{let c={},l={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let f in l){let T=l[f];if(!T||!T.length){c[f]=0n;continue}T.forEach(D=>{if(D.assetId!==i)return;let w=(c[f]??0n)+BigInt(D.amount);c[f]=w;});}let m=new coreUtilsSdk.TokenUnit(c.unlocked?c.unlocked:0n,t.decimals,t.symbol),p=r?m.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,d=new coreUtilsSdk.TokenUnit(qe(e,i),t.decimals,t.symbol),g=r!==void 0?d.mul(r):void 0;return {...t,coingeckoId:s,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:r,balance:d.toSubUnit(),balanceInCurrency:g?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:d.toDisplay(),balanceCurrencyDisplayValue:g?.toDisplay({fixedDp:2}),available:m.toSubUnit(),availableInCurrency:p,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:p?.toFixed(2),utxos:e,balancePerType:{unlocked:c.unlocked,locked:c.locked,atomicMemoryUnlocked:c.atomicMemoryUnlocked,atomicMemoryLocked:c.atomicMemoryLocked},marketCap:a,vol24:n,change24:o}};var Ir=async({addresses:e,currency:t,network:r,glacierService:a,tokenService:n})=>{let o=await k({isTestnet:!!r.isTestnet});if(!a.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let i=t.toLowerCase(),c=e[0]??"",l=r.networkToken,m=r.pricingProviders?.coingecko.nativeTokenId,p=r.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,d=r.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,g=await a.getChainBalance({blockchainId:p,network:d,addresses:e.join(",")}).then(D=>D.balances),f=await n.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:i}),T;return hr(g)?(T=yr({balance:g,networkToken:l,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:m??"",avaxAssetId:o.getContext().avaxAssetID}),{[c]:{[l.symbol]:T}}):gr(g)?(T=Tr({balance:g,networkToken:l,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:m??"",avaxAssetId:o.getContext().avaxAssetID}),{[c]:{[l.symbol]:T}}):Promise.reject("Incorrect type balance was returned from glacier")};async function kr({isTestnet:e,vmName:t}){let r=await k({isTestnet:e});if(t===vmModuleTypes.NetworkVMType.AVM)return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0};let{price:a}=await r.getApiP().getFeeState(),n=100/Number(a)/100,o=Math.min(1,Math.max(n,.15)),s=Math.min(1,Math.max(n*2,.3)),i=1+o,c=1+s;return {baseFee:a,low:{maxFeePerGas:a},medium:{maxFeePerGas:a*BigInt(Math.round(100*i))/100n},high:{maxFeePerGas:a*BigInt(Math.round(100*c))/100n},isFixedFee:!1}}function Sr({tx:e,address:t,networkToken:r,chainId:a,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(d=>d.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(d=>d.addresses)||[]),c=Na({tx:e,isTestnet:o,networkToken:r,froms:s}),l=wa({tx:e,isTestnet:o,networkToken:r}),m=t.toLowerCase().startsWith("p-")?t.slice(2):t,p=s.has(m);return {hash:e.txHash,isContractCall:!1,isIncoming:!p,isOutgoing:p,from:[...s.values()].join(","),to:[...i.values()].join(","),isSender:p,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:c.toString()}],gasUsed:l.toString(),explorerLink:oe(n??"",e.txHash,"tx"),txType:e.txType,chainId:a.toString()}}function Na({tx:e,isTestnet:t,networkToken:r,froms:a}){let n=["ImportTx","ExportTx"].includes(e.txType),o=e.txType==="BaseTx",s=e.emittedUtxos.filter(d=>d.asset.assetId===ke(!!t)&&!d.addresses.some(g=>a.has(g))).reduce((d,g)=>d.add(g.asset.amount),new F__default.default(0)),i=e.value.find(d=>d.assetId===ke(!!t))?.amount,c=s.gt(new F__default.default(0))?s:i?new F__default.default(i):new F__default.default(0)??new F__default.default(0),l=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,m=e.emittedUtxos.filter(d=>d.asset.assetId===ke(!!t)&&(e.txType==="ImportTx"&&d.consumedOnChainId===l||e.txType==="ExportTx"&&d.consumedOnChainId!==l)).reduce((d,g)=>d.add(g.amount),new F__default.default(0)),p=o?c:n?m:e.amountStaked.length===0?Dr(e.value,!!t):Dr(e.amountStaked,!!t);return Y({amount:p?.toNumber(),decimals:r.decimals})}function wa({tx:e,isTestnet:t,networkToken:r}){let a=e.amountBurned?.filter(n=>n.assetId===ke(!!t)).reduce((n,o)=>n.add(o.amount),new F__default.default(0));return Y({amount:a?.toNumber(),decimals:r.decimals})}function Dr(e,t){return e.filter(r=>r.assetId===ke(t)).reduce((r,a)=>r.add(a.amount),new F__default.default(0))}function ke(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function Pr({tx:e,address:t,networkToken:r,chainId:a,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(f=>f.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(f=>f.addresses)||[]),c=t.toLowerCase().startsWith("x-")?t.slice(2):t,l=["ImportTx","ExportTx"].includes(e.txType),{amount:m,isSender:p}=Va({tx:e,isTestnet:o,networkToken:r,chainAddress:c,isImportExport:l}),d=Ba({isTestnet:o,tx:e,networkToken:r}),g=l?m.toString():p?m.minus(d).toString():m.toString();return {hash:e.txHash,isContractCall:!1,isIncoming:!p,isOutgoing:p,from:[...s.values()].join(","),to:[...i.values()].join(","),isSender:p,timestamp:e.timestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:g}],gasUsed:d.toString(),explorerLink:oe(n??"",e.txHash,"tx"),txType:e.txType,chainId:a.toString()}}function Va({tx:e,isTestnet:t,networkToken:r,chainAddress:a,isImportExport:n}){if(n){let l=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,m=e.emittedUtxos.filter(p=>p.asset.assetId===Se(!!t)&&(e.txType==="ImportTx"&&p.consumedOnChainId===l||e.txType==="ExportTx"&&p.consumedOnChainId!==l)).reduce((p,d)=>p.add(d.asset.amount),new F__default.default(0));return {amount:Y({amount:m.toNumber(),decimals:r.decimals}),isSender:!0}}let o=e.consumedUtxos.filter(l=>l.asset.assetId===Se(!!t)&&l.addresses.includes(a)).reduce((l,m)=>l.add(m.asset.amount),new F__default.default(0)),s=e.emittedUtxos.filter(l=>l.asset.assetId===Se(!!t)&&l.addresses.includes(a)).reduce((l,m)=>l.add(m.asset.amount),new F__default.default(0)),i=o.gte(s),c=i?o.minus(s):s.minus(o);return {amount:Y({amount:c.toNumber(),decimals:r.decimals}),isSender:i}}function Ba({isTestnet:e,tx:t,networkToken:r}){let a=t.amountUnlocked.filter(s=>s.assetId===Se(!!e)).reduce((s,i)=>s.add(i.amount),new F__default.default(0)),n=t.amountCreated.filter(s=>s.assetId===Se(!!e)).reduce((s,i)=>s.add(i.amount),new F__default.default(0)),o=a.minus(n);return Y({amount:o.toNumber(),decimals:r.decimals})}function Se(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var Nr=async({address:e,nextPageToken:t,offset:r,network:a,glacierService:n})=>{let{isTestnet:o,networkToken:s,explorerUrl:i,chainId:c}=a;if(!n.isHealthy())return {transactions:[],nextPageToken:""};let m=a.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,p=await n.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:Ma(e),network:m,pageSize:r,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),d=[];return zt(p)&&(d=p.transactions.map(g=>Sr({tx:g,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:c}))),Yt(p)&&(d=p.transactions.map(g=>Pr({tx:g,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:c}))),{transactions:d,nextPageToken:p.nextPageToken}},Ma=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;function wr({blockchainId:e,isTestnet:t}){let r=t?"fuji"+e:e,a=La__default.default.createHash("sha256").update(r).digest("base64");return "avax:"+Ua(a).substring(0,32)}var Ua=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var ce,Pe,le,O,pe,be,Rr=class{constructor({approvalController:t,environment:r,appInfo:a,runtime:n}){v(this,ce,void 0);v(this,Pe,void 0);v(this,le,void 0);v(this,O,void 0);v(this,pe,void 0);v(this,be,void 0);let{glacierApiUrl:o,proxyApiUrl:s}=Mt(r);S(this,pe,a),S(this,be,n),S(this,ce,new Ge({glacierApiUrl:o,headers:j(a)})),S(this,Pe,s),S(this,le,o),S(this,O,t);}getProvider(t){return k({isTestnet:!!t.isTestnet})}getAddress({accountIndex:t,xpubXP:r,walletType:a,network:n}){return ur({accountIndex:t,xpubXP:r,walletType:a,network:n})}getBalances({addresses:t,network:r,storage:a,currency:n}){let o=new ye({storage:a,proxyApiUrl:y(this,Pe),fetch:y(this,be)?.fetch});return Ir({addresses:t,currency:n,network:r,glacierService:y(this,ce),tokenService:o})}getManifest(){let t=vmModuleTypes.parseManifest(Bt);return t.success?t.data:void 0}getNetworkFee(t){let{isTestnet:r,vmName:a}=t;return kr({isTestnet:!!r,vmName:a})}getTransactionHistory({network:t,address:r,nextPageToken:a,offset:n}){return Nr({network:t,address:r,nextPageToken:a,offset:n,glacierService:y(this,ce)})}getTokens(t){return Promise.resolve([])}buildDerivationPath(t){return ve(t)}async deriveAddress(t){return pr({...t,approvalController:y(this,O)})}async onRpcRequest(t,r){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return rr({request:t,network:r,approvalController:y(this,O)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return lr({request:t,network:r,approvalController:y(this,O),glacierApiUrl:y(this,le),appInfo:y(this,pe)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return Zt({request:t,network:r,approvalController:y(this,O),glacierApiUrl:y(this,le),appInfo:y(this,pe)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:r}){return wr({blockchainId:t,isTestnet:r})}};ce=new WeakMap,Pe=new WeakMap,le=new WeakMap,O=new WeakMap,pe=new WeakMap,be=new WeakMap;var Wc=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,$c=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
23
23
 
24
- exports.AvalancheModule = vr;
25
- exports.isAddPermissionlessDelegatorTx = qe;
26
- exports.isAddPermissionlessValidatorTx = $e;
27
- exports.isAddSubnetValidatorTx = Ke;
28
- exports.isBaseTx = ca;
29
- exports.isBlockchainDetails = lr;
30
- exports.isChainDetails = cr;
31
- exports.isConvertSubnetToL1Tx = ar;
32
- exports.isCreateChainTx = la;
33
- exports.isCreateSubnetTx = pa;
34
- exports.isDisableL1ValidatorTx = nr;
35
- exports.isExportImportTxDetails = os;
36
- exports.isExportTx = je;
37
- exports.isImportTx = Je;
38
- exports.isIncreaseL1ValidatorBalanceTx = or;
39
- exports.isRegisterL1ValidatorTx = sr;
40
- exports.isRemoveSubnetValidatorTx = ze;
41
- exports.isSetL1ValidatorWeightTx = ir;
42
- exports.isStakingDetails = ns;
43
- exports.isSubnetDetails = pr;
44
- exports.isTokenWithBalanceAVM = Ec;
45
- exports.isTokenWithBalancePVM = Bc;
24
+ exports.AvalancheModule = Rr;
25
+ exports.isAddPermissionlessDelegatorTx = et;
26
+ exports.isAddPermissionlessValidatorTx = tt;
27
+ exports.isAddSubnetValidatorTx = nt;
28
+ exports.isBaseTx = ta;
29
+ exports.isBlockchainDetails = $t;
30
+ exports.isChainDetails = Wt;
31
+ exports.isConvertSubnetToL1Tx = Ot;
32
+ exports.isCreateChainTx = ra;
33
+ exports.isCreateSubnetTx = aa;
34
+ exports.isDisableL1ValidatorTx = Xt;
35
+ exports.isExportImportTxDetails = no;
36
+ exports.isExportTx = rt;
37
+ exports.isImportTx = at;
38
+ exports.isIncreaseL1ValidatorBalanceTx = Ht;
39
+ exports.isRegisterL1ValidatorTx = Gt;
40
+ exports.isRemoveSubnetValidatorTx = ot;
41
+ exports.isSetL1ValidatorWeightTx = qt;
42
+ exports.isStakingDetails = ao;
43
+ exports.isSubnetDetails = jt;
44
+ exports.isTokenWithBalanceAVM = $c;
45
+ exports.isTokenWithBalancePVM = Wc;
46
46
  //# sourceMappingURL=out.js.map
47
47
  //# sourceMappingURL=index.cjs.map