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