@avalabs/avalanche-module
Advanced tools
Comparing version 0.12.1 to 1.1.0
import * as _metamask_rpc_errors from '@metamask/rpc-errors'; | ||
import * as _avalabs_vm_module_types_dist_rpc from '@avalabs/vm-module-types/dist/rpc'; | ||
import * as _avalabs_vm_module_types_dist_rpc_ab7acd4d from '@avalabs/vm-module-types/dist/rpc-ab7acd4d'; | ||
import * as _avalabs_vm_module_types_dist_transaction_history from '@avalabs/vm-module-types/dist/transaction-history'; | ||
@@ -19,3 +19,3 @@ import { Module, ConstructorParams, Network, GetAddressParams, GetAddressResponse, GetBalancesParams, GetBalancesResponse, Manifest, NetworkFees, GetTransactionHistory, RpcRequest, TokenWithBalance, TokenWithBalancePVM, TokenWithBalanceAVM, TxDetails, AddPermissionlessDelegatorTx, AddPermissionlessValidatorTx, ExportTx, ImportTx, BaseTx, AddSubnetValidatorTx, CreateChainTx, CreateSubnetTx, RemoveSubnetValidatorTx, ConvertSubnetToL1Tx, DisableL1ValidatorTx, IncreaseL1ValidatorBalanceTx, RegisterL1ValidatorTx, SetL1ValidatorWeightTx, StakingDetails, ExportImportTxDetails } from '@avalabs/vm-module-types'; | ||
onRpcRequest(request: RpcRequest, network: Network): Promise<{ | ||
error: _avalabs_vm_module_types_dist_rpc.RpcError; | ||
error: _avalabs_vm_module_types_dist_rpc_ab7acd4d.b; | ||
result?: undefined; | ||
@@ -22,0 +22,0 @@ } | { |
@@ -13,3 +13,3 @@ import { TxType, Environment, parseManifest, RpcMethod, NetworkVMType, AppName, WalletType, TokenType, RawSimplePriceResponseSchema, SimplePriceResponseSchema, DetailItemType } from '@avalabs/vm-module-types'; | ||
var ia=Object.defineProperty;var sa=(e,t,a)=>t in e?ia(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var U=(e,t,a)=>(sa(e,typeof t!="symbol"?t+"":t,a),a),mt=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var A=(e,t,a)=>(mt(e,t,"read from private field"),a?a.call(e):t.get(e)),R=(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);},E=(e,t,a,r)=>(mt(e,t,"write to private field"),r?r.call(e,a):t.set(e,a),a);var pt={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"]}},manifestVersion:"0.0"};var C=async({isTestnet:e,isDevnet:t})=>{let a=t?AVALANCHE_P_DEV_NETWORK:e?AVALANCHE_XP_TEST_NETWORK:AVALANCHE_XP_NETWORK,r=await new info.InfoApi(a.rpcUrl).getUpgradesInfo().catch(()=>{});return t?Avalanche.JsonRpcProvider.getDefaultDevnetProvider(r):e?Avalanche.JsonRpcProvider.getDefaultFujiProvider(r):Avalanche.JsonRpcProvider.getDefaultMainnetProvider(r)};async function dt({isTestnet:e,isDevnet:t,vmName:a}){let r=await C({isTestnet:e,isDevnet:t});if(a===NetworkVMType.AVM||!r.isEtnaEnabled())return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0};let{price:n}=await r.getApiP().getFeeState(),o=100/Number(n)/100,s=Math.min(1,Math.max(o,.15)),i=Math.min(1,Math.max(o*2,.3)),l=1+s,c=1+i;return {baseFee:n,low:{maxFeePerGas:n},medium:{maxFeePerGas:n*BigInt(Math.round(100*l))/100n},high:{maxFeePerGas:n*BigInt(Math.round(100*c))/100n},isFixedFee:!1}}var gt=e=>e.chainInfo.chainName===PrimaryNetworkChainName.P_CHAIN,ft=e=>e.chainInfo.chainName===PrimaryNetworkChainName.X_CHAIN;function ye(e,t,a="tx"){return `${e}/${a}/${t}`}function F({amount:e,decimals:t}){return e===void 0?new M(0):new M(e/10**t)}function yt({tx:e,address:t,networkToken:a,chainId:r,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(m=>m.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(m=>m.addresses)||[]),l=ga({tx:e,isTestnet:o,networkToken:a,froms:s}),c=fa({tx:e,isTestnet:o,networkToken:a}),g=t.toLowerCase().startsWith("p-")?t.slice(2):t,p=s.has(g);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:a.decimals.toString(),name:a.name,symbol:a.symbol,type:TokenType.NATIVE,amount:l.toString()}],gasUsed:c.toString(),explorerLink:ye(n??"",e.txHash,"tx"),txType:e.txType,chainId:r.toString()}}function ga({tx:e,isTestnet:t,networkToken:a,froms:r}){let n=["ImportTx","ExportTx"].includes(e.txType),o=e.txType==="BaseTx",s=e.emittedUtxos.filter(m=>m.asset.assetId===ae(!!t)&&!m.addresses.some(d=>r.has(d))).reduce((m,d)=>m.add(d.asset.amount),new M(0)),i=e.value.find(m=>m.assetId===ae(!!t))?.amount,l=s.gt(new M(0))?s:i?new M(i):new M(0)??new M(0),c=t?Avalanche.FujiContext.pBlockchainID:Avalanche.MainnetContext.pBlockchainID,g=e.emittedUtxos.filter(m=>m.asset.assetId===ae(!!t)&&(e.txType==="ImportTx"&&m.consumedOnChainId===c||e.txType==="ExportTx"&&m.consumedOnChainId!==c)).reduce((m,d)=>m.add(d.amount),new M(0)),p=o?l:n?g:e.amountStaked.length===0?xt(e.value,!!t):xt(e.amountStaked,!!t);return F({amount:p?.toNumber(),decimals:a.decimals})}function fa({tx:e,isTestnet:t,networkToken:a}){let r=e.amountBurned?.filter(n=>n.assetId===ae(!!t)).reduce((n,o)=>n.add(o.amount),new M(0));return F({amount:r?.toNumber(),decimals:a.decimals})}function xt(e,t){return e.filter(a=>a.assetId===ae(t)).reduce((a,r)=>a.add(r.amount),new M(0))}function ae(e){return e?Avalanche.FujiContext.avaxAssetID:Avalanche.MainnetContext.avaxAssetID}function Tt({tx:e,address:t,networkToken:a,chainId:r,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(x=>x.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(x=>x.addresses)||[]),l=t.toLowerCase().startsWith("x-")?t.slice(2):t,c=["ImportTx","ExportTx"].includes(e.txType),{amount:g,isSender:p}=ya({tx:e,isTestnet:o,networkToken:a,chainAddress:l,isImportExport:c}),m=Ta({isTestnet:o,tx:e,networkToken:a}),d=c?g.toString():p?g.minus(m).toString():g.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:a.decimals.toString(),name:a.name,symbol:a.symbol,type:TokenType.NATIVE,amount:d}],gasUsed:m.toString(),explorerLink:ye(n??"",e.txHash,"tx"),txType:e.txType,chainId:r.toString()}}function ya({tx:e,isTestnet:t,networkToken:a,chainAddress:r,isImportExport:n}){if(n){let c=t?Avalanche.FujiContext.xBlockchainID:Avalanche.MainnetContext.xBlockchainID,g=e.emittedUtxos.filter(p=>p.asset.assetId===ne(!!t)&&(e.txType==="ImportTx"&&p.consumedOnChainId===c||e.txType==="ExportTx"&&p.consumedOnChainId!==c)).reduce((p,m)=>p.add(m.asset.amount),new M(0));return {amount:F({amount:g.toNumber(),decimals:a.decimals}),isSender:!0}}let o=e.consumedUtxos.filter(c=>c.asset.assetId===ne(!!t)&&c.addresses.includes(r)).reduce((c,g)=>c.add(g.asset.amount),new M(0)),s=e.emittedUtxos.filter(c=>c.asset.assetId===ne(!!t)&&c.addresses.includes(r)).reduce((c,g)=>c.add(g.asset.amount),new M(0)),i=o.gte(s),l=i?o.minus(s):s.minus(o);return {amount:F({amount:l.toNumber(),decimals:a.decimals}),isSender:i}}function Ta({isTestnet:e,tx:t,networkToken:a}){let r=t.amountUnlocked.filter(s=>s.assetId===ne(!!e)).reduce((s,i)=>s.add(i.amount),new M(0)),n=t.amountCreated.filter(s=>s.assetId===ne(!!e)).reduce((s,i)=>s.add(i.amount),new M(0)),o=r.minus(n);return F({amount:o.toNumber(),decimals:a.decimals})}function ne(e){return e?Avalanche.FujiContext.avaxAssetID:Avalanche.MainnetContext.avaxAssetID}var S=e=>e.chainId===ChainId.AVALANCHE_DEVNET_P||e.chainId===43117||e.chainId===ChainId.AVALANCHE_DEVNET_X;var St=async({address:e,nextPageToken:t,offset:a,network:r,glacierService:n})=>{let{isTestnet:o,networkToken:s,explorerUrl:i,chainId:l}=r;if(!n.isHealthy())return {transactions:[],nextPageToken:""};let g=S(r)?Network.DEVNET:r.isTestnet?Network.FUJI:Network.MAINNET,p=await n.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:Ia(e),network:g,pageSize:a,pageToken:t,sortOrder:SortOrder.DESC}),m=[];return gt(p)&&(m=p.transactions.map(d=>yt({tx:d,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:l}))),ft(p)&&(m=p.transactions.map(d=>Tt({tx:d,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:l}))),{transactions:m,nextPageToken:p.nextPageToken}},Ia=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?BlockchainId.P_CHAIN:BlockchainId.X_CHAIN;var Sa={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},va={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},we=e=>{switch(e){case Environment.PRODUCTION:return Sa;case Environment.DEV:return va}};var Ie=class extends Error{constructor(){super(...arguments);U(this,"message","Glacier is unhealthy. Try again later.");}},Se=class{constructor({glacierApiUrl:t,headers:a}){U(this,"glacierSdk");U(this,"isGlacierHealthy",!0);U(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new 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 Ie&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof Ie&&this.setGlacierToUnhealthy(),a}}};var O=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:r=oe.exponential()})=>{let n=0,o=0,s;for(;o<a;){o>0&&await ka(n);try{let l=await e(o);if(t(l))return l}catch(l){s=l;}n=r(o),o++;}let i=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(i)},oe=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function ka(e){return new Promise(t=>setTimeout(t,e))}var Me=e=>O({operation:t=>e(t>0),maxRetries:2,backoffPolicy:oe.constant(1),isSuccess:t=>t?.status?.error_code!==429});function Dt(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function Le(e){let t,a=0;for(t=0;t<e.length;t++){let r=Dt(e[t]??"");a=a+65027/r;}return (""+a).slice(0,16)}async function ve(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 ie=class{constructor(t){this.proxyApiUrl=t;}simplePrice(t){let a=new URLSearchParams(t);return ve([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],RawSimplePriceResponseSchema)}simplePriceByContractAddresses(t){let{id:a,...r}=t,n=new URLSearchParams(r);return ve([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${a}?${n}`,{method:"POST",headers:{"Content-Type":"application/json"}}],SimplePriceResponseSchema)}};var kt=getBasicCoingeckoHttp(),L,j,ce=class{constructor({storage:t,proxyApiUrl:a}){R(this,L,void 0);R(this,j,void 0);U(this,"transformSimplePriceResponse",(t,a=[VsCurrencyType.USD])=>{let r={};return Object.keys(t).forEach(n=>{let o=t[n];r[n]={},a.forEach(s=>{r[n]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),r});E(this,L,t),E(this,j,a);}async getSimplePrice({coinIds:t=[],currencies:a=[VsCurrencyType.USD]}){let r,o=`getSimplePrice-${t?`${Le(t)}-${a.toString()}`:`${a.toString()}`}`;if(r=A(this,L)?.get?.(o),r)return r;try{r=await Me(s=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{r=void 0;}return A(this,L)?.set?.(o,r),r}async getPricesByAddresses(t,a,r=VsCurrencyType.USD){let n,s=`getPricesWithMarketDataByAddresses-${`${Le(t)}-${a}-${r}`}`;if(n=A(this,L)?.get?.(s),n)return n;try{n=await Me(i=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:r,useCoingeckoProxy:i}));}catch{n=void 0;}return A(this,L)?.set?.(s,n),n}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:r=VsCurrencyType.USD,useCoingeckoProxy:n=!1}){return n?new ie(A(this,j)).simplePriceByContractAddresses({id:t,contract_addresses:a,vs_currencies:[r],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}):simpleTokenPrice(kt,{assetPlatformId:t,tokenAddresses:a,currencies:[r],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:a=[VsCurrencyType.USD],marketCap:r=!1,vol24:n=!1,change24:o=!1,lastUpdated:s=!1,useCoingeckoProxy:i=!1,shouldThrow:l=!0}){if(i){let c=await new ie(A(this,j)).simplePrice({ids:t,vs_currencies:a,include_market_cap:r,include_24hr_vol:n,include_24hr_change:o,include_last_updated_at:s});return this.transformSimplePriceResponse(c,a)}return simplePrice(kt,{coinIds:t,currencies:a,marketCap:r,vol24:n,change24:o,lastUpdated:s,shouldThrow:l})}};L=new WeakMap,j=new WeakMap;object({date:string(),usd:record(number())});var u=(e,t,a,r)=>({label:e,type:DetailItemType.CURRENCY,value:t,maxDecimals:a,symbol:r}),f=(e,t,a="horizontal")=>({label:e,alignment:a,type:DetailItemType.TEXT,value:t});var me=(e,t)=>({label:e,type:DetailItemType.ADDRESS,value:t}),y=(e,t)=>({label:e,type:DetailItemType.NODE_ID,value:t});var V=(e,t)=>({label:e,type:DetailItemType.DATE,value:t});var X=({name:e,version:t})=>{switch(e){case AppName.CORE_MOBILE_IOS:case AppName.CORE_MOBILE_ANDROID:case AppName.CORE_WEB:case AppName.CORE_EXTENSION:case AppName.EXPLORER:return {"x-application-name":e,"x-application-version":t};case AppName.OTHER:return}};var bt=e=>Object.keys(e).includes("unlockedUnstaked"),Pt=e=>Object.keys(e).includes("locked");function De(e){let t=Object.values(e).reduce(function(a,r){let n=r.reduce(function(o,s){let i=Number(s.amount);return o+i},0);return a+n},0);return BigInt(t)}var Nt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:r,vol24:n,change24:o,coingeckoId:s})=>{let i={},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 d in l){let x=l[d];if(!x||!x.length){i[d]=0n;continue}x.forEach(T=>{let P=(i[d]??0n)+BigInt(T.amount);i[d]=P;});}let c=new TokenUnit(i.unlockedUnstaked?i.unlockedUnstaked:0n,t.decimals,t.symbol),g=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,p=new TokenUnit(De(e),t.decimals,t.symbol),m=a?p.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:TokenType.NATIVE,priceInCurrency:a,balance:p.toSubUnit(),balanceInCurrency:m,balanceDisplayValue:p.toDisplay(),balanceCurrencyDisplayValue:m?.toFixed(2),available:c.toSubUnit(),availableInCurrency:g,availableDisplayValue:c.toDisplay(),availableCurrencyDisplayValue:g?.toFixed(2),utxos:e,balancePerType:{lockedStaked:i.lockedStaked,lockedStakeable:i.lockedStakeable,lockedPlatform:i.lockedPlatform,atomicMemoryLocked:i.atomicMemoryLocked,atomicMemoryUnlocked:i.atomicMemoryUnlocked,unlockedUnstaked:i.unlockedUnstaked,unlockedStaked:i.unlockedStaked,pendingStaked:i.pendingStaked},marketCap:r,vol24:n,change24:o,coingeckoId:s}};var Rt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:r,vol24:n,change24:o,coingeckoId:s})=>{let i={},l={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let d in l){let x=l[d];if(!x||!x.length){i[d]=0n;continue}x.forEach(T=>{let P=(i[d]??0n)+BigInt(T.amount);i[d]=P;});}let c=new TokenUnit(i.unlocked?i.unlocked:0n,t.decimals,t.symbol),g=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,p=new TokenUnit(De(e),t.decimals,t.symbol),m=a!==void 0?p.mul(a):void 0;return {...t,coingeckoId:s,type:TokenType.NATIVE,priceInCurrency:a,balance:p.toSubUnit(),balanceInCurrency:m?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:p.toDisplay(),balanceCurrencyDisplayValue:m?.toDisplay({fixedDp:2}),available:c.toSubUnit(),availableInCurrency:g,availableDisplayValue:c.toDisplay(),availableCurrencyDisplayValue:g?.toFixed(2),utxos:e,balancePerType:{unlocked:i.unlocked,locked:i.locked,atomicMemoryUnlocked:i.atomicMemoryUnlocked,atomicMemoryLocked:i.atomicMemoryLocked},marketCap:r,vol24:n,change24:o}};var Bt=async({addresses:e,currency:t,network:a,glacierService:r,tokenService:n})=>{if(!r.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let s=t.toLowerCase(),i=e[0]??"",l=a.networkToken,c=a.pricingProviders?.coingecko.nativeTokenId,g=a.vmName===NetworkVMType.PVM?BlockchainId.P_CHAIN:BlockchainId.X_CHAIN,p=S(a)?Network.DEVNET:a.isTestnet?Network.FUJI:Network.MAINNET,m=await r.getChainBalance({blockchainId:g,network:p,addresses:e.join(",")}).then(w=>w.balances),d=c?await n.getSimplePrice({coinIds:[c],currencies:[s]}):{},x=d?.[c??""]?.[s]?.price??void 0,T=d?.[c??""]?.[s]?.marketCap??void 0,b=d?.[c??""]?.[s]?.vol24??void 0,P=d?.[c??""]?.[s]?.change24??void 0,k;return bt(m)?(k=Nt({balance:m,networkToken:l,priceInCurrency:x,marketCap:T,vol24:b,change24:P,coingeckoId:c??""}),{[i]:{[l.symbol]:k}}):Pt(m)?(k=Rt({balance:m,networkToken:l,priceInCurrency:x,marketCap:T,vol24:b,change24:P,coingeckoId:c??""}),{[i]:{[l.symbol]:k}}):Promise.reject("Incorrect type balance was returned from glacier")};function wt({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,r=Ua.createHash("sha256").update(a).digest("base64");return "avax:"+Fa(r).substring(0,32)}var Fa=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var _t=async({accountIndex:e,xpubXP:t,walletType:a,network:r})=>{let n=!!r?.isTestnet,o=r&&S(r);if(t===void 0)throw rpcErrors.invalidParams("xpubXP is required to get address");let s=await C({isTestnet:n,isDevnet:o}),i;switch(a){case WalletType.Mnemonic:case WalletType.Ledger:case WalletType.Keystone:{i=Avalanche.getAddressPublicKeyFromXpub(t,e);break}case WalletType.LedgerLive:case WalletType.Seedless:{i=Buffer.from(t,"hex");break}default:throw rpcErrors.invalidParams(`Unsupported wallet type: ${a}`)}return {[NetworkVMType.AVM]:s.getAddress(i,"X"),[NetworkVMType.PVM]:s.getAddress(i,"P")}};var Xa=z$1.union([z$1.tuple([z$1.string()]).describe("message to sign"),z$1.tuple([z$1.string().describe("message to sign"),z$1.number().nonnegative().describe("account index")])]),Ut=e=>Xa.safeParse(e);var Ot=async({request:e,network:t,approvalController:a})=>{let r=Ut(e.params);if(!r.success)return console.error("invalid params",r.error),{error:rpcErrors.invalidParams({message:"Params are invalid",data:{cause:r.error}})};let[n,o]=r.data,s=Buffer.from(n,"utf-8").toString("hex"),i={type:RpcMethod.AVALANCHE_SIGN_MESSAGE,data:s,accountIndex:o},l={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]}]},c=await a.requestApproval({request:e,displayData:l,signingData:i});return "error"in c?{error:c.error}:"signedData"in c?{result:c.signedData}:{error:rpcErrors.internal("No signed data returned")}};var Ga=z$1.object({transactionHex:z$1.string(),chainAlias:z$1.enum(["X","P","C"]),externalIndices:z$1.number().array().optional(),internalIndices:z$1.number().array().optional(),utxos:z$1.string().array().optional()}),Xt=e=>Ga.safeParse(e);var Gt=({utxoHexes:e=[],vm:t})=>{try{let a=utils.getManagerForVM(t).getDefaultCodec();return e.map(r=>{let n=utils.hexToBuffer(r);return Utxo.fromBytes(n,a)[0]})}catch{return []}};var ke=e=>{switch(e.type){case TxType.AddPermissionlessDelegator:case TxType.AddSubnetValidator:case TxType.CreateChain:case TxType.CreateSubnet:case TxType.RemoveSubnetValidator:case TxType.AddPermissionlessValidator:return e;case TxType.ConvertSubnetToL1:case TxType.SetL1ValidatorWeight:case TxType.DisableL1Validator:case TxType.IncreaseL1ValidatorBalance:case TxType.RegisterL1Validator:return {...e,chain:e.chain};case TxType.Export:return {...e,type:TxType.Export,chain:e.chain,destination:e.destination};case TxType.Import:return {...e,type:TxType.Import,chain:e.chain,source:e.source};case TxType.Base:return {...e,type:TxType.Base,chain:e.chain};default:return}};var Wt=e=>{switch(e.type){case TxType.AddPermissionlessDelegator:return "Add Delegator";case TxType.AddPermissionlessValidator:return "Add Validator";case TxType.Export:return "Approve Export";case TxType.Import:return "Approve Import";case TxType.Base:return "Approve Transaction";case TxType.AddSubnetValidator:return "Add Subnet Validator";case TxType.CreateChain:return "Approve Create Chain";case TxType.CreateSubnet:return "Approve Create Subnet";case TxType.RemoveSubnetValidator:return "Remove Subnet Validator";case TxType.ConvertSubnetToL1:return "Convert Subnet to L1";case TxType.DisableL1Validator:return "Disable L1 Validator";case TxType.IncreaseL1ValidatorBalance:return "Increase L1 Validator Balance";case TxType.RegisterL1Validator:return "Register L1 Validator";case TxType.SetL1ValidatorWeight:return "Set L1 Validator Weight";default:return "Sign Message"}};var Ue=async({indices:e,chainAlias:t,isChange:a,isTestnet:r,xpubXP:n})=>{if(!n||a&&t!=="X")return [];let o=await C({isTestnet:r});return e.map(s=>Avalanche.getAddressFromXpub(n,s,o,t,a))};var Fe=e=>e.type===TxType.AddPermissionlessDelegator,Oe=e=>e.type===TxType.AddPermissionlessValidator,Xe=e=>e.type===TxType.Export,He=e=>e.type===TxType.Import,$a=e=>e.type===TxType.Base,Ge=e=>e.type===TxType.AddSubnetValidator,Ja=e=>e.type===TxType.CreateChain,qa=e=>e.type===TxType.CreateSubnet,We=e=>e.type===TxType.RemoveSubnetValidator,jt=e=>e.type===TxType.ConvertSubnetToL1,$t=e=>e.type===TxType.DisableL1Validator,Jt=e=>e.type===TxType.IncreaseL1ValidatorBalance,qt=e=>e.type===TxType.RegisterL1Validator,Kt=e=>e.type===TxType.SetL1ValidatorWeight,ko=e=>Fe(e)||Oe(e)||Ge(e)||We(e),bo=e=>Xe(e)||He(e),zt=e=>$a(e),Yt=e=>Ja(e),Zt=e=>qa(e);var B=(r=>(r.AVM="X-Chain",r.PVM="P-Chain",r.EVM="C-Chain",r))(B||{});function be(e){return e===Avalanche.MainnetContext.pBlockchainID}var je=(e,t)=>{let a=[],{txFee:r,nodeID:n,start:o,end:s,stake:i,subnetID:l}=e,c=[y("Node ID",n),be(l)?f("Subnet ID","Primary Network"):y("Subnet ID",l),u("Stake Amount",i,9,t),V("Start Date",o),V("End Date",s)];return a.push({title:"Staking Details",items:c}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var $e=(e,t)=>{let a=[],{txFee:r,nodeID:n,delegationFee:o,start:s,end:i,stake:l,subnetID:c,signature:g,publicKey:p}=e,m=[y("Node ID",n),be(c)?f("Subnet ID","Primary Network"):y("Subnet ID",c)];return p&&g&&m.push(y("Public Key",p),y("Proof",g)),m.push(u("Stake Amount",l,9,t),f("Delegation Fee",`${o/1e4} %`),V("Start Date",s),V("End Date",i)),a.push({title:"Staking Details",items:m}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var Je=(e,t)=>{let a=[],{txFee:r,nodeID:n,start:o,end:s,subnetID:i}=e,l=[y("Subnet ID",i),y("Node ID",n),V("Start Date",o),V("End Date",s)];return a.push({title:"Staking Details",items:l}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var qe=(e,t)=>{let a=[],{txFee:r,chainID:n,managerAddress:o,subnetID:s,validators:i}=e,l=[y("Subnet ID",s),y("Chain ID",n),me("Manager Address",o)];return a.push({title:"L1 Details",items:l}),i.forEach(({balance:c,stake:g,nodeId:p,remainingBalanceOwners:m,deactivationOwners:d},x)=>{let T=[y("Node ID",p),u("Balance",c,9,t),u("Stake",g,9,t)];d.length>0&&T.push(f(`${d.length>1?"Owners":"Owner"} Able to Deactivate`,d.join(` | ||
var ia=Object.defineProperty;var sa=(e,t,a)=>t in e?ia(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var U=(e,t,a)=>(sa(e,typeof t!="symbol"?t+"":t,a),a),mt=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var A=(e,t,a)=>(mt(e,t,"read from private field"),a?a.call(e):t.get(e)),R=(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);},E=(e,t,a,r)=>(mt(e,t,"write to private field"),r?r.call(e,a):t.set(e,a),a);var pt={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 C=async({isTestnet:e,isDevnet:t})=>{let a=t?AVALANCHE_P_DEV_NETWORK:e?AVALANCHE_XP_TEST_NETWORK:AVALANCHE_XP_NETWORK,r=await new info.InfoApi(a.rpcUrl).getUpgradesInfo().catch(()=>{});return t?Avalanche.JsonRpcProvider.getDefaultDevnetProvider(r):e?Avalanche.JsonRpcProvider.getDefaultFujiProvider(r):Avalanche.JsonRpcProvider.getDefaultMainnetProvider(r)};async function dt({isTestnet:e,isDevnet:t,vmName:a}){let r=await C({isTestnet:e,isDevnet:t});if(a===NetworkVMType.AVM||!r.isEtnaEnabled())return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0};let{price:n}=await r.getApiP().getFeeState(),o=100/Number(n)/100,s=Math.min(1,Math.max(o,.15)),i=Math.min(1,Math.max(o*2,.3)),l=1+s,c=1+i;return {baseFee:n,low:{maxFeePerGas:n},medium:{maxFeePerGas:n*BigInt(Math.round(100*l))/100n},high:{maxFeePerGas:n*BigInt(Math.round(100*c))/100n},isFixedFee:!1}}var gt=e=>e.chainInfo.chainName===PrimaryNetworkChainName.P_CHAIN,ft=e=>e.chainInfo.chainName===PrimaryNetworkChainName.X_CHAIN;function ye(e,t,a="tx"){return `${e}/${a}/${t}`}function F({amount:e,decimals:t}){return e===void 0?new M(0):new M(e/10**t)}function yt({tx:e,address:t,networkToken:a,chainId:r,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(m=>m.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(m=>m.addresses)||[]),l=ga({tx:e,isTestnet:o,networkToken:a,froms:s}),c=fa({tx:e,isTestnet:o,networkToken:a}),g=t.toLowerCase().startsWith("p-")?t.slice(2):t,p=s.has(g);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:a.decimals.toString(),name:a.name,symbol:a.symbol,type:TokenType.NATIVE,amount:l.toString()}],gasUsed:c.toString(),explorerLink:ye(n??"",e.txHash,"tx"),txType:e.txType,chainId:r.toString()}}function ga({tx:e,isTestnet:t,networkToken:a,froms:r}){let n=["ImportTx","ExportTx"].includes(e.txType),o=e.txType==="BaseTx",s=e.emittedUtxos.filter(m=>m.asset.assetId===ae(!!t)&&!m.addresses.some(d=>r.has(d))).reduce((m,d)=>m.add(d.asset.amount),new M(0)),i=e.value.find(m=>m.assetId===ae(!!t))?.amount,l=s.gt(new M(0))?s:i?new M(i):new M(0)??new M(0),c=t?Avalanche.FujiContext.pBlockchainID:Avalanche.MainnetContext.pBlockchainID,g=e.emittedUtxos.filter(m=>m.asset.assetId===ae(!!t)&&(e.txType==="ImportTx"&&m.consumedOnChainId===c||e.txType==="ExportTx"&&m.consumedOnChainId!==c)).reduce((m,d)=>m.add(d.amount),new M(0)),p=o?l:n?g:e.amountStaked.length===0?xt(e.value,!!t):xt(e.amountStaked,!!t);return F({amount:p?.toNumber(),decimals:a.decimals})}function fa({tx:e,isTestnet:t,networkToken:a}){let r=e.amountBurned?.filter(n=>n.assetId===ae(!!t)).reduce((n,o)=>n.add(o.amount),new M(0));return F({amount:r?.toNumber(),decimals:a.decimals})}function xt(e,t){return e.filter(a=>a.assetId===ae(t)).reduce((a,r)=>a.add(r.amount),new M(0))}function ae(e){return e?Avalanche.FujiContext.avaxAssetID:Avalanche.MainnetContext.avaxAssetID}function Tt({tx:e,address:t,networkToken:a,chainId:r,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(x=>x.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(x=>x.addresses)||[]),l=t.toLowerCase().startsWith("x-")?t.slice(2):t,c=["ImportTx","ExportTx"].includes(e.txType),{amount:g,isSender:p}=ya({tx:e,isTestnet:o,networkToken:a,chainAddress:l,isImportExport:c}),m=Ta({isTestnet:o,tx:e,networkToken:a}),d=c?g.toString():p?g.minus(m).toString():g.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:a.decimals.toString(),name:a.name,symbol:a.symbol,type:TokenType.NATIVE,amount:d}],gasUsed:m.toString(),explorerLink:ye(n??"",e.txHash,"tx"),txType:e.txType,chainId:r.toString()}}function ya({tx:e,isTestnet:t,networkToken:a,chainAddress:r,isImportExport:n}){if(n){let c=t?Avalanche.FujiContext.xBlockchainID:Avalanche.MainnetContext.xBlockchainID,g=e.emittedUtxos.filter(p=>p.asset.assetId===ne(!!t)&&(e.txType==="ImportTx"&&p.consumedOnChainId===c||e.txType==="ExportTx"&&p.consumedOnChainId!==c)).reduce((p,m)=>p.add(m.asset.amount),new M(0));return {amount:F({amount:g.toNumber(),decimals:a.decimals}),isSender:!0}}let o=e.consumedUtxos.filter(c=>c.asset.assetId===ne(!!t)&&c.addresses.includes(r)).reduce((c,g)=>c.add(g.asset.amount),new M(0)),s=e.emittedUtxos.filter(c=>c.asset.assetId===ne(!!t)&&c.addresses.includes(r)).reduce((c,g)=>c.add(g.asset.amount),new M(0)),i=o.gte(s),l=i?o.minus(s):s.minus(o);return {amount:F({amount:l.toNumber(),decimals:a.decimals}),isSender:i}}function Ta({isTestnet:e,tx:t,networkToken:a}){let r=t.amountUnlocked.filter(s=>s.assetId===ne(!!e)).reduce((s,i)=>s.add(i.amount),new M(0)),n=t.amountCreated.filter(s=>s.assetId===ne(!!e)).reduce((s,i)=>s.add(i.amount),new M(0)),o=r.minus(n);return F({amount:o.toNumber(),decimals:a.decimals})}function ne(e){return e?Avalanche.FujiContext.avaxAssetID:Avalanche.MainnetContext.avaxAssetID}var S=e=>e.chainId===ChainId.AVALANCHE_DEVNET_P||e.chainId===43117||e.chainId===ChainId.AVALANCHE_DEVNET_X;var St=async({address:e,nextPageToken:t,offset:a,network:r,glacierService:n})=>{let{isTestnet:o,networkToken:s,explorerUrl:i,chainId:l}=r;if(!n.isHealthy())return {transactions:[],nextPageToken:""};let g=S(r)?Network.DEVNET:r.isTestnet?Network.FUJI:Network.MAINNET,p=await n.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:Ia(e),network:g,pageSize:a,pageToken:t,sortOrder:SortOrder.DESC}),m=[];return gt(p)&&(m=p.transactions.map(d=>yt({tx:d,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:l}))),ft(p)&&(m=p.transactions.map(d=>Tt({tx:d,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:l}))),{transactions:m,nextPageToken:p.nextPageToken}},Ia=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?BlockchainId.P_CHAIN:BlockchainId.X_CHAIN;var Sa={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},va={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},we=e=>{switch(e){case Environment.PRODUCTION:return Sa;case Environment.DEV:return va}};var Ie=class extends Error{constructor(){super(...arguments);U(this,"message","Glacier is unhealthy. Try again later.");}},Se=class{constructor({glacierApiUrl:t,headers:a}){U(this,"glacierSdk");U(this,"isGlacierHealthy",!0);U(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new 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 Ie&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof Ie&&this.setGlacierToUnhealthy(),a}}};var O=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:r=oe.exponential()})=>{let n=0,o=0,s;for(;o<a;){o>0&&await ka(n);try{let l=await e(o);if(t(l))return l}catch(l){s=l;}n=r(o),o++;}let i=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(i)},oe=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function ka(e){return new Promise(t=>setTimeout(t,e))}var Me=e=>O({operation:t=>e(t>0),maxRetries:2,backoffPolicy:oe.constant(1),isSuccess:t=>t?.status?.error_code!==429});function Dt(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function Le(e){let t,a=0;for(t=0;t<e.length;t++){let r=Dt(e[t]??"");a=a+65027/r;}return (""+a).slice(0,16)}async function ve(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 ie=class{constructor(t){this.proxyApiUrl=t;}simplePrice(t){let a=new URLSearchParams(t);return ve([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],RawSimplePriceResponseSchema)}simplePriceByContractAddresses(t){let{id:a,...r}=t,n=new URLSearchParams(r);return ve([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${a}?${n}`,{method:"POST",headers:{"Content-Type":"application/json"}}],SimplePriceResponseSchema)}};var kt=getBasicCoingeckoHttp(),L,j,ce=class{constructor({storage:t,proxyApiUrl:a}){R(this,L,void 0);R(this,j,void 0);U(this,"transformSimplePriceResponse",(t,a=[VsCurrencyType.USD])=>{let r={};return Object.keys(t).forEach(n=>{let o=t[n];r[n]={},a.forEach(s=>{r[n]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),r});E(this,L,t),E(this,j,a);}async getSimplePrice({coinIds:t=[],currencies:a=[VsCurrencyType.USD]}){let r,o=`getSimplePrice-${t?`${Le(t)}-${a.toString()}`:`${a.toString()}`}`;if(r=A(this,L)?.get?.(o),r)return r;try{r=await Me(s=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{r=void 0;}return A(this,L)?.set?.(o,r),r}async getPricesByAddresses(t,a,r=VsCurrencyType.USD){let n,s=`getPricesWithMarketDataByAddresses-${`${Le(t)}-${a}-${r}`}`;if(n=A(this,L)?.get?.(s),n)return n;try{n=await Me(i=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:r,useCoingeckoProxy:i}));}catch{n=void 0;}return A(this,L)?.set?.(s,n),n}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:r=VsCurrencyType.USD,useCoingeckoProxy:n=!1}){return n?new ie(A(this,j)).simplePriceByContractAddresses({id:t,contract_addresses:a,vs_currencies:[r],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}):simpleTokenPrice(kt,{assetPlatformId:t,tokenAddresses:a,currencies:[r],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:a=[VsCurrencyType.USD],marketCap:r=!1,vol24:n=!1,change24:o=!1,lastUpdated:s=!1,useCoingeckoProxy:i=!1,shouldThrow:l=!0}){if(i){let c=await new ie(A(this,j)).simplePrice({ids:t,vs_currencies:a,include_market_cap:r,include_24hr_vol:n,include_24hr_change:o,include_last_updated_at:s});return this.transformSimplePriceResponse(c,a)}return simplePrice(kt,{coinIds:t,currencies:a,marketCap:r,vol24:n,change24:o,lastUpdated:s,shouldThrow:l})}};L=new WeakMap,j=new WeakMap;object({date:string(),usd:record(number())});var u=(e,t,a,r)=>({label:e,type:DetailItemType.CURRENCY,value:t,maxDecimals:a,symbol:r}),f=(e,t,a="horizontal")=>({label:e,alignment:a,type:DetailItemType.TEXT,value:t});var me=(e,t)=>({label:e,type:DetailItemType.ADDRESS,value:t}),y=(e,t)=>({label:e,type:DetailItemType.NODE_ID,value:t});var V=(e,t)=>({label:e,type:DetailItemType.DATE,value:t});var X=({name:e,version:t})=>{switch(e){case AppName.CORE_MOBILE_IOS:case AppName.CORE_MOBILE_ANDROID:case AppName.CORE_WEB:case AppName.CORE_EXTENSION:case AppName.EXPLORER:return {"x-application-name":e,"x-application-version":t};case AppName.OTHER:return}};var bt=e=>Object.keys(e).includes("unlockedUnstaked"),Pt=e=>Object.keys(e).includes("locked");function De(e){let t=Object.values(e).reduce(function(a,r){let n=r.reduce(function(o,s){let i=Number(s.amount);return o+i},0);return a+n},0);return BigInt(t)}var Nt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:r,vol24:n,change24:o,coingeckoId:s})=>{let i={},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 d in l){let x=l[d];if(!x||!x.length){i[d]=0n;continue}x.forEach(T=>{let P=(i[d]??0n)+BigInt(T.amount);i[d]=P;});}let c=new TokenUnit(i.unlockedUnstaked?i.unlockedUnstaked:0n,t.decimals,t.symbol),g=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,p=new TokenUnit(De(e),t.decimals,t.symbol),m=a?p.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:TokenType.NATIVE,priceInCurrency:a,balance:p.toSubUnit(),balanceInCurrency:m,balanceDisplayValue:p.toDisplay(),balanceCurrencyDisplayValue:m?.toFixed(2),available:c.toSubUnit(),availableInCurrency:g,availableDisplayValue:c.toDisplay(),availableCurrencyDisplayValue:g?.toFixed(2),utxos:e,balancePerType:{lockedStaked:i.lockedStaked,lockedStakeable:i.lockedStakeable,lockedPlatform:i.lockedPlatform,atomicMemoryLocked:i.atomicMemoryLocked,atomicMemoryUnlocked:i.atomicMemoryUnlocked,unlockedUnstaked:i.unlockedUnstaked,unlockedStaked:i.unlockedStaked,pendingStaked:i.pendingStaked},marketCap:r,vol24:n,change24:o,coingeckoId:s}};var Rt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:r,vol24:n,change24:o,coingeckoId:s})=>{let i={},l={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let d in l){let x=l[d];if(!x||!x.length){i[d]=0n;continue}x.forEach(T=>{let P=(i[d]??0n)+BigInt(T.amount);i[d]=P;});}let c=new TokenUnit(i.unlocked?i.unlocked:0n,t.decimals,t.symbol),g=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,p=new TokenUnit(De(e),t.decimals,t.symbol),m=a!==void 0?p.mul(a):void 0;return {...t,coingeckoId:s,type:TokenType.NATIVE,priceInCurrency:a,balance:p.toSubUnit(),balanceInCurrency:m?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:p.toDisplay(),balanceCurrencyDisplayValue:m?.toDisplay({fixedDp:2}),available:c.toSubUnit(),availableInCurrency:g,availableDisplayValue:c.toDisplay(),availableCurrencyDisplayValue:g?.toFixed(2),utxos:e,balancePerType:{unlocked:i.unlocked,locked:i.locked,atomicMemoryUnlocked:i.atomicMemoryUnlocked,atomicMemoryLocked:i.atomicMemoryLocked},marketCap:r,vol24:n,change24:o}};var Bt=async({addresses:e,currency:t,network:a,glacierService:r,tokenService:n})=>{if(!r.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let s=t.toLowerCase(),i=e[0]??"",l=a.networkToken,c=a.pricingProviders?.coingecko.nativeTokenId,g=a.vmName===NetworkVMType.PVM?BlockchainId.P_CHAIN:BlockchainId.X_CHAIN,p=S(a)?Network.DEVNET:a.isTestnet?Network.FUJI:Network.MAINNET,m=await r.getChainBalance({blockchainId:g,network:p,addresses:e.join(",")}).then(w=>w.balances),d=c?await n.getSimplePrice({coinIds:[c],currencies:[s]}):{},x=d?.[c??""]?.[s]?.price??void 0,T=d?.[c??""]?.[s]?.marketCap??void 0,b=d?.[c??""]?.[s]?.vol24??void 0,P=d?.[c??""]?.[s]?.change24??void 0,k;return bt(m)?(k=Nt({balance:m,networkToken:l,priceInCurrency:x,marketCap:T,vol24:b,change24:P,coingeckoId:c??""}),{[i]:{[l.symbol]:k}}):Pt(m)?(k=Rt({balance:m,networkToken:l,priceInCurrency:x,marketCap:T,vol24:b,change24:P,coingeckoId:c??""}),{[i]:{[l.symbol]:k}}):Promise.reject("Incorrect type balance was returned from glacier")};function wt({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,r=Ua.createHash("sha256").update(a).digest("base64");return "avax:"+Fa(r).substring(0,32)}var Fa=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var _t=async({accountIndex:e,xpubXP:t,walletType:a,network:r})=>{let n=!!r?.isTestnet,o=r&&S(r);if(t===void 0)throw rpcErrors.invalidParams("xpubXP is required to get address");let s=await C({isTestnet:n,isDevnet:o}),i;switch(a){case WalletType.Mnemonic:case WalletType.Ledger:case WalletType.Keystone:{i=Avalanche.getAddressPublicKeyFromXpub(t,e);break}case WalletType.LedgerLive:case WalletType.Seedless:{i=Buffer.from(t,"hex");break}default:throw rpcErrors.invalidParams(`Unsupported wallet type: ${a}`)}return {[NetworkVMType.AVM]:s.getAddress(i,"X"),[NetworkVMType.PVM]:s.getAddress(i,"P")}};var Xa=z$1.union([z$1.tuple([z$1.string()]).describe("message to sign"),z$1.tuple([z$1.string().describe("message to sign"),z$1.number().nonnegative().describe("account index")])]),Ut=e=>Xa.safeParse(e);var Ot=async({request:e,network:t,approvalController:a})=>{let r=Ut(e.params);if(!r.success)return console.error("invalid params",r.error),{error:rpcErrors.invalidParams({message:"Params are invalid",data:{cause:r.error}})};let[n,o]=r.data,s=Buffer.from(n,"utf-8").toString("hex"),i={type:RpcMethod.AVALANCHE_SIGN_MESSAGE,data:s,accountIndex:o},l={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]}]},c=await a.requestApproval({request:e,displayData:l,signingData:i});return "error"in c?{error:c.error}:"signedData"in c?{result:c.signedData}:{error:rpcErrors.internal("No signed data returned")}};var Ga=z$1.object({transactionHex:z$1.string(),chainAlias:z$1.enum(["X","P","C"]),externalIndices:z$1.number().array().optional(),internalIndices:z$1.number().array().optional(),utxos:z$1.string().array().optional()}),Xt=e=>Ga.safeParse(e);var Gt=({utxoHexes:e=[],vm:t})=>{try{let a=utils.getManagerForVM(t).getDefaultCodec();return e.map(r=>{let n=utils.hexToBuffer(r);return Utxo.fromBytes(n,a)[0]})}catch{return []}};var ke=e=>{switch(e.type){case TxType.AddPermissionlessDelegator:case TxType.AddSubnetValidator:case TxType.CreateChain:case TxType.CreateSubnet:case TxType.RemoveSubnetValidator:case TxType.AddPermissionlessValidator:return e;case TxType.ConvertSubnetToL1:case TxType.SetL1ValidatorWeight:case TxType.DisableL1Validator:case TxType.IncreaseL1ValidatorBalance:case TxType.RegisterL1Validator:return {...e,chain:e.chain};case TxType.Export:return {...e,type:TxType.Export,chain:e.chain,destination:e.destination};case TxType.Import:return {...e,type:TxType.Import,chain:e.chain,source:e.source};case TxType.Base:return {...e,type:TxType.Base,chain:e.chain};default:return}};var Wt=e=>{switch(e.type){case TxType.AddPermissionlessDelegator:return "Add Delegator";case TxType.AddPermissionlessValidator:return "Add Validator";case TxType.Export:return "Approve Export";case TxType.Import:return "Approve Import";case TxType.Base:return "Approve Transaction";case TxType.AddSubnetValidator:return "Add Subnet Validator";case TxType.CreateChain:return "Approve Create Chain";case TxType.CreateSubnet:return "Approve Create Subnet";case TxType.RemoveSubnetValidator:return "Remove Subnet Validator";case TxType.ConvertSubnetToL1:return "Convert Subnet to L1";case TxType.DisableL1Validator:return "Disable L1 Validator";case TxType.IncreaseL1ValidatorBalance:return "Increase L1 Validator Balance";case TxType.RegisterL1Validator:return "Register L1 Validator";case TxType.SetL1ValidatorWeight:return "Set L1 Validator Weight";default:return "Sign Message"}};var Ue=async({indices:e,chainAlias:t,isChange:a,isTestnet:r,xpubXP:n})=>{if(!n||a&&t!=="X")return [];let o=await C({isTestnet:r});return e.map(s=>Avalanche.getAddressFromXpub(n,s,o,t,a))};var Fe=e=>e.type===TxType.AddPermissionlessDelegator,Oe=e=>e.type===TxType.AddPermissionlessValidator,Xe=e=>e.type===TxType.Export,He=e=>e.type===TxType.Import,$a=e=>e.type===TxType.Base,Ge=e=>e.type===TxType.AddSubnetValidator,Ja=e=>e.type===TxType.CreateChain,qa=e=>e.type===TxType.CreateSubnet,We=e=>e.type===TxType.RemoveSubnetValidator,jt=e=>e.type===TxType.ConvertSubnetToL1,$t=e=>e.type===TxType.DisableL1Validator,Jt=e=>e.type===TxType.IncreaseL1ValidatorBalance,qt=e=>e.type===TxType.RegisterL1Validator,Kt=e=>e.type===TxType.SetL1ValidatorWeight,ko=e=>Fe(e)||Oe(e)||Ge(e)||We(e),bo=e=>Xe(e)||He(e),zt=e=>$a(e),Yt=e=>Ja(e),Zt=e=>qa(e);var B=(r=>(r.AVM="X-Chain",r.PVM="P-Chain",r.EVM="C-Chain",r))(B||{});function be(e){return e===Avalanche.MainnetContext.pBlockchainID}var je=(e,t)=>{let a=[],{txFee:r,nodeID:n,start:o,end:s,stake:i,subnetID:l}=e,c=[y("Node ID",n),be(l)?f("Subnet ID","Primary Network"):y("Subnet ID",l),u("Stake Amount",i,9,t),V("Start Date",o),V("End Date",s)];return a.push({title:"Staking Details",items:c}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var $e=(e,t)=>{let a=[],{txFee:r,nodeID:n,delegationFee:o,start:s,end:i,stake:l,subnetID:c,signature:g,publicKey:p}=e,m=[y("Node ID",n),be(c)?f("Subnet ID","Primary Network"):y("Subnet ID",c)];return p&&g&&m.push(y("Public Key",p),y("Proof",g)),m.push(u("Stake Amount",l,9,t),f("Delegation Fee",`${o/1e4} %`),V("Start Date",s),V("End Date",i)),a.push({title:"Staking Details",items:m}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var Je=(e,t)=>{let a=[],{txFee:r,nodeID:n,start:o,end:s,subnetID:i}=e,l=[y("Subnet ID",i),y("Node ID",n),V("Start Date",o),V("End Date",s)];return a.push({title:"Staking Details",items:l}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var qe=(e,t)=>{let a=[],{txFee:r,chainID:n,managerAddress:o,subnetID:s,validators:i}=e,l=[y("Subnet ID",s),y("Chain ID",n),me("Manager Address",o)];return a.push({title:"L1 Details",items:l}),i.forEach(({balance:c,stake:g,nodeId:p,remainingBalanceOwners:m,deactivationOwners:d},x)=>{let T=[y("Node ID",p),u("Balance",c,9,t),u("Stake",g,9,t)];d.length>0&&T.push(f(`${d.length>1?"Owners":"Owner"} Able to Deactivate`,d.join(` | ||
`),"vertical")),m.length>0&&T.push(f(`${m.length>1?"Owners":"Owner"} of the Remaining Balance`,m.join(` | ||
@@ -16,0 +16,0 @@ `),"vertical")),a.push({title:x===0?"Validators":void 0,items:T});}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var Ke=(e,t)=>{let a=[],{txFee:r,amount:n,chain:o,destination:s,type:i}=e;return a.push({title:"Transaction Details",items:[f("Source Chain",`Avalanche ${B[o]}`),f("Target Chain",`Avalanche ${B[s]}`),f("Transaction Type",i?(i[0]||"").toUpperCase()+i.slice(1):""),u("Amount",n,9,t)]}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var ze=(e,t)=>{let a=[],{txFee:r,amount:n,chain:o,source:s,type:i}=e;return a.push({title:"Transaction Details",items:[f("Source Chain",`Avalanche ${B[s]}`),f("Destination Chain",`Avalanche ${B[o]}`),f("Transaction Type",i?(i[0]||"").toUpperCase()+i.slice(1):""),u("Amount",n,9,t)]}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var Ye=(e,t)=>{let a=[],{txFee:r,nodeID:n,subnetID:o}=e,s=[y("Node ID",n),y("Subnet ID",o)];return a.push({title:"Staking Details",items:s}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var Ze=(e,t)=>{let a=[],{txFee:r,chain:n,outputs:o,memo:s}=e;return a.push({title:"Chain Details",items:[f("Active chain",`Avalanche ${B[n]}`)]}),o.forEach((i,l)=>{let c=i.owners.flatMap(g=>[me("To",g),u("Amount",i.amount,9,t)]);i.owners.length>1&&c.push(f("Threshold",i.threshold.toString())),a.push({title:l===0?"Balance Change":void 0,items:c});}),n!==PVM&&s&&a.push({title:"Memo",items:[s]}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var Qe=(e,t)=>{let a=[],{txFee:r,threshold:n,controlKeys:o}=e;return a.push({title:"Subnet Details",items:[f(o.length>1?"Owners":"Owner",o.join(` |
@@ -33,6 +33,7 @@ { | ||
"dapps": true, | ||
"methods": ["avalanche_sendTransaction", "avalanche_signTransaction", "avalanche_signMessage"] | ||
"methods": ["avalanche_sendTransaction", "avalanche_signTransaction", "avalanche_signMessage"], | ||
"nonRestrictedMethods": [] | ||
} | ||
}, | ||
"manifestVersion": "0.0" | ||
"manifestVersion": "0.1" | ||
} |
{ | ||
"name": "@avalabs/avalanche-module", | ||
"version": "0.12.1", | ||
"version": "1.1.0", | ||
"main": "dist/index.cjs", | ||
@@ -26,3 +26,3 @@ "module": "dist/index.js", | ||
"zod": "3.23.8", | ||
"@avalabs/vm-module-types": "0.12.1" | ||
"@avalabs/vm-module-types": "1.1.0" | ||
}, | ||
@@ -37,3 +37,3 @@ "devDependencies": { | ||
"@internal/tsup-config": "0.0.1", | ||
"@internal/utils": "0.3.4", | ||
"@internal/utils": "0.3.5", | ||
"eslint-config-custom": "0.0.1" | ||
@@ -40,0 +40,0 @@ }, |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
376577
438
2
+ Added@avalabs/vm-module-types@1.1.0(transitive)
+ Added@ledgerhq/cryptoassets@13.9.0(transitive)
+ Added@ledgerhq/domain-service@1.2.17(transitive)
+ Added@ledgerhq/types-live@6.58.0(transitive)
+ Addedcaniuse-lite@1.0.30001696(transitive)
+ Addedelectron-to-chromium@1.5.91(transitive)
- Removed@avalabs/vm-module-types@0.12.1(transitive)
- Removed@ledgerhq/cryptoassets@13.10.0(transitive)
- Removed@ledgerhq/domain-service@1.2.18(transitive)
- Removed@ledgerhq/types-live@6.59.0(transitive)
- Removedcaniuse-lite@1.0.30001697(transitive)
- Removedelectron-to-chromium@1.5.92(transitive)