@avalabs/avalanche-module 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -3,38 +3,38 @@
3
3
  var vmModuleTypes = require('@avalabs/vm-module-types');
4
4
  var rpcErrors = require('@metamask/rpc-errors');
5
5
  var glacierSdk = require('@avalabs/glacier-sdk');
6
- var D = require('big.js');
6
+ var R = require('big.js');
7
7
  var coreWalletsSdk = require('@avalabs/core-wallets-sdk');
8
8
  var coreCoingeckoSdk = require('@avalabs/core-coingecko-sdk');
9
9
  var core = require('@zodios/core');
10
10
  var zod = require('zod');
11
11
  var coreUtilsSdk = require('@avalabs/core-utils-sdk');
12
- var Vt = require('crypto');
12
+ var jt = require('crypto');
13
13
  var avalanchejs = require('@avalabs/avalanchejs');
14
14
 
15
15
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
16
 
17
- var D__default = /*#__PURE__*/_interopDefault(D);
18
- var Vt__default = /*#__PURE__*/_interopDefault(Vt);
17
+ var R__default = /*#__PURE__*/_interopDefault(R);
18
+ var jt__default = /*#__PURE__*/_interopDefault(jt);
19
19
 
20
- var mt=Object.defineProperty;var dt=(e,t,a)=>t in e?mt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var I=(e,t,a)=>(dt(e,typeof t!="symbol"?t+"":t,a),a),le=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var y=(e,t,a)=>(le(e,t,"read from private field"),a?a.call(e):t.get(e)),S=(e,t,a)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,a);},B=(e,t,a,n)=>(le(e,t,"write to private field"),n?n.call(e,a):t.set(e,a),a);var pe={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 me(){return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0}}var he=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,ye=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function q(e,t,a="tx"){return `${e}/${a}/${t}`}function w({amount:e,decimals:t}){return e===void 0?new D__default.default(0):new D__default.default(e/10**t)}function fe({tx:e,address:t,networkToken:a,chainId:n,explorerUrl:r,isTestnet:o}){let i=new Set(e.consumedUtxos.flatMap(c=>c.addresses)||[]),l=new Set(e.emittedUtxos.flatMap(c=>c.addresses)||[]),s=yt({tx:e,isTestnet:o,networkToken:a,froms:i}),p=gt({tx:e,isTestnet:o,networkToken:a}),m=t.toLowerCase().startsWith("p-")?t.slice(2):t,d=i.has(m);return {hash:e.txHash,isContractCall:!1,isIncoming:!d,isOutgoing:d,from:[...i.values()].join(","),to:[...l.values()].join(","),isSender:d,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:s.toString()}],gasUsed:p.toString(),explorerLink:q(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function yt({tx:e,isTestnet:t,networkToken:a,froms:n}){let r=["ImportTx","ExportTx"].includes(e.txType),o=e.txType==="BaseTx",i=e.emittedUtxos.filter(c=>c.asset.assetId===L(!!t)&&!c.addresses.some(u=>n.has(u))).reduce((c,u)=>c.add(u.asset.amount),new D__default.default(0)),l=e.value.find(c=>c.assetId===L(!!t))?.amount,s=i.gt(new D__default.default(0))?i:l?new D__default.default(l):new D__default.default(0)??new D__default.default(0),p=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,m=e.emittedUtxos.filter(c=>c.asset.assetId===L(!!t)&&(e.txType==="ImportTx"&&c.consumedOnChainId===p||e.txType==="ExportTx"&&c.consumedOnChainId!==p)).reduce((c,u)=>c.add(u.amount),new D__default.default(0)),d=o?s:r?m:e.amountStaked.length===0?ge(e.value,!!t):ge(e.amountStaked,!!t);return w({amount:d?.toNumber(),decimals:a.decimals})}function gt({tx:e,isTestnet:t,networkToken:a}){let n=e.amountBurned?.filter(r=>r.assetId===L(!!t)).reduce((r,o)=>r.add(o.amount),new D__default.default(0));return w({amount:n?.toNumber(),decimals:a.decimals})}function ge(e,t){return e.filter(a=>a.assetId===L(t)).reduce((a,n)=>a.add(n.amount),new D__default.default(0))}function L(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function xe({tx:e,address:t,networkToken:a,chainId:n,explorerUrl:r,isTestnet:o}){let i=new Set(e.consumedUtxos.flatMap(c=>c.addresses)||[]),l=new Set(e.emittedUtxos.flatMap(c=>c.addresses)||[]),s=xt({tx:e,isTestnet:o,networkToken:a}),p=Tt({isTestnet:o,tx:e,totalAmountCreated:s,networkToken:a}),m=t.toLowerCase().startsWith("x-")?t.slice(2):t,d=i.has(m);return {hash:e.txHash,isContractCall:!1,isIncoming:!d,isOutgoing:d,from:[...i.values()].join(","),to:[...l.values()].join(","),isSender:d,timestamp:e.timestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:s.toString()}],gasUsed:p.toString(),explorerLink:q(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function xt({tx:e,isTestnet:t,networkToken:a}){let n=["ImportTx","ExportTx"].includes(e.txType),r=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,o=e.emittedUtxos.filter(s=>s.asset.assetId===te(!!t)&&(e.txType==="ImportTx"&&s.consumedOnChainId===r||e.txType==="ExportTx"&&s.consumedOnChainId!==r)).reduce((s,p)=>s.add(p.asset.amount),new D__default.default(0)),i=e.amountCreated.filter(s=>s.assetId===te(!!t)).reduce((s,p)=>s.add(p.amount),new D__default.default(0));return w({amount:(n?o:i).toNumber(),decimals:a.decimals})}function Tt({isTestnet:e,tx:t,totalAmountCreated:a,networkToken:n}){let o=t.amountUnlocked.filter(i=>i.assetId===te(!!e)).reduce((i,l)=>i.add(l.amount),new D__default.default(0)).minus(a);return w({amount:o.toNumber(),decimals:n.decimals})}function te(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var ve=async({address:e,nextPageToken:t,offset:a,network:n,glacierService:r})=>{let{isTestnet:o,networkToken:i,explorerUrl:l,chainId:s}=n;if(!r.isHealthy())return {transactions:[],nextPageToken:""};let m=await r.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:vt(e),network:o?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,pageSize:a,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),d=[];return he(m)&&(d=m.transactions.map(c=>fe({tx:c,isTestnet:o,address:e,networkToken:i,explorerUrl:l,chainId:s}))),ye(m)&&(d=m.transactions.map(c=>xe({tx:c,isTestnet:o,address:e,networkToken:i,explorerUrl:l,chainId:s}))),{transactions:d,nextPageToken:m.nextPageToken}},vt=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var At={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Pt={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Pe=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return At;case vmModuleTypes.Environment.DEV:return Pt}};var K=class extends Error{constructor(){super(...arguments);I(this,"message","Glacier is unhealthy. Try again later.");}},z=class{constructor({glacierApiUrl:t}){I(this,"glacierSdk");I(this,"isGlacierHealthy",!0);I(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:t});}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async listLatestPrimaryNetworkTransactions(t){try{return this.glacierSdk.primaryNetworkTransactions.listLatestPrimaryNetworkTransactions(t)}catch(a){throw a instanceof K&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof K&&this.setGlacierToUnhealthy(),a}}};var be=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:n=X.exponential()})=>{let r=0,o=0,i;for(;o<a;){o>0&&await Ct(r);try{let s=await e(o);if(t(s))return s}catch(s){i=s;}r=n(o),o++;}let l=i?`Max retry exceeded. ${i}`:"Max retry exceeded.";throw new Error(l)},X=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function Ct(e){return new Promise(t=>setTimeout(t,e))}var ae=e=>be({operation:t=>e(t>0),maxRetries:2,backoffPolicy:X.constant(1),isSuccess:t=>t?.status?.error_code!==429});function Ce(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function ne(e){let t,a=0;for(t=0;t<e.length;t++){let n=Ce(e[t]??"");a=a+65027/n;}return (""+a).slice(0,16)}var se=e=>new core.Zodios(`${e}/proxy/coingecko`,[{method:"post",path:"/simple/price",parameters:[{name:"ids",type:"Query",schema:zod.string()},{name:"vs_currencies",type:"Query",schema:zod.string()},{name:"include_market_cap",type:"Query",schema:zod.string().optional()},{name:"include_24hr_vol",type:"Query",schema:zod.string().optional()},{name:"include_24hr_change",type:"Query",schema:zod.string().optional()},{name:"include_last_updated_at",type:"Query",schema:zod.string().optional()}],alias:"simplePrice",response:vmModuleTypes.RawSimplePriceResponseSchema},{method:"post",path:"/simple/token_price/:id",parameters:[{name:"id",type:"Path",schema:zod.string()},{name:"contract_addresses",type:"Query",schema:zod.string().array()},{name:"vs_currencies",type:"Query",schema:zod.string().array()},{name:"include_market_cap",type:"Query",schema:zod.boolean().optional()},{name:"include_24hr_vol",type:"Query",schema:zod.boolean().optional()},{name:"include_24hr_change",type:"Query",schema:zod.boolean().optional()}],alias:"simplePriceByContractAddresses",response:vmModuleTypes.SimplePriceResponseSchema}],{axiosConfig:{headers:{"Content-Type":"application/json"}}});var Se=coreCoingeckoSdk.getBasicCoingeckoHttp(),R,N,H=class{constructor({storage:t,proxyApiUrl:a}){S(this,R,void 0);S(this,N,void 0);I(this,"transformSimplePriceResponse",(t,a=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(t).forEach(r=>{let o=t[r];n[r]={},a.forEach(i=>{n[r]={[i]:{price:o?.[i],change24:o?.[`${i}_24h_change`],vol24:o?.[`${i}_24h_vol`],marketCap:o?.[`${i}_market_cap`]}};});}),n});B(this,R,t),B(this,N,a);}async getSimplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${t?`${ne(t)}-${a.toString()}`:`${a.toString()}`}`;if(n=y(this,R)?.get?.(o),n)return n;try{n=await ae(i=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{n=void 0;}return y(this,R)?.set?.(o,n),n}async getPricesByAddresses(t,a,n=coreCoingeckoSdk.VsCurrencyType.USD){let r,i=`getPricesWithMarketDataByAddresses-${`${ne(t)}-${a}-${n}`}`;if(r=y(this,R)?.get?.(i),r)return r;try{r=await ae(l=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:n,useCoingeckoProxy:l}));}catch{r=void 0;}return y(this,R)?.set?.(i,r),r}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:r=!1}){return r?se(y(this,N)).simplePriceByContractAddresses(void 0,{params:{id:t},queries:{contract_addresses:a,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}}):coreCoingeckoSdk.simpleTokenPrice(Se,{assetPlatformId:t,tokenAddresses:a,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:r=!1,change24:o=!1,lastUpdated:i=!1,useCoingeckoProxy:l=!1,shouldThrow:s=!0}){if(l){let p=await se(y(this,N)).simplePrice(void 0,{queries:{ids:t?.join(","),vs_currencies:a.join(","),include_market_cap:String(n),include_24hr_vol:String(r),include_24hr_change:String(o),include_last_updated_at:String(i)}});return this.transformSimplePriceResponse(p,a)}return coreCoingeckoSdk.simplePrice(Se,{coinIds:t,currencies:a,marketCap:n,vol24:r,change24:o,lastUpdated:i,shouldThrow:s})}};R=new WeakMap,N=new WeakMap;var Be=e=>Object.keys(e).includes("unlockedUnstaked"),De=e=>Object.keys(e).includes("locked");function Y(e){let t=Object.values(e).reduce(function(a,n){let r=n.reduce(function(o,i){let l=Number(i.amount);return o+l},0);return a+r},0);return BigInt(t)}function g(e,t){return t===void 0?0:t/10**e}var Ie=({balance:e,networkToken:t,priceInCurrency:a,marketCap:n,vol24:r,change24:o,coingeckoId:i})=>{let l=t.decimals,s={},p={unlockedUnstaked:e.unlockedUnstaked,unlockedStaked:e.unlockedStaked,pendingStaked:e.pendingStaked,lockedStaked:e.lockedStaked,lockedStakeable:e.lockedStakeable,lockedPlatform:e.lockedPlatform,atomicMemoryLocked:e.atomicMemoryLocked,atomicMemoryUnlocked:e.atomicMemoryUnlocked};for(let h in p){let f=p[h];if(!f||!f.length){s[h]=0;continue}f.forEach(v=>{let x=(s[h]??0)+Number(v.amount);s[h]=x;});}let m=new coreUtilsSdk.TokenUnit(s.unlockedUnstaked?s.unlockedUnstaked:0n,t.decimals,t.symbol),d=a?m.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,c=new coreUtilsSdk.TokenUnit(Y(e),t.decimals,t.symbol),u=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:c.toSubUnit(),balanceInCurrency:u,balanceDisplayValue:c.toDisplay(),balanceCurrencyDisplayValue:u?.toFixed(2),available:m.toSubUnit(),availableInCurrency:d,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:d?.toFixed(2),utxos:e,balancePerType:{lockedStaked:g(l,s.lockedStaked),lockedStakeable:g(l,s.lockedStakeable),lockedPlatform:g(l,s.lockedPlatform),atomicMemoryLocked:g(l,s.atomicMemoryLocked),atomicMemoryUnlocked:g(l,s.atomicMemoryUnlocked),unlockedUnstaked:g(l,s.unlockedUnstaked),unlockedStaked:g(l,s.unlockedStaked),pendingStaked:g(l,s.pendingStaked)},marketCap:n,vol24:r,change24:o,coingeckoId:i}};var Ne=({balance:e,networkToken:t,priceInCurrency:a,marketCap:n,vol24:r,change24:o,coingeckoId:i})=>{let l=t.decimals,s={},p={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let h in p){let f=p[h];if(!f||!f.length){s[h]=0;continue}f.forEach(v=>{let x=(s[h]??0)+Number(v.amount);s[h]=x;});}let m=new coreUtilsSdk.TokenUnit(s.unlocked?s.unlocked:0n,t.decimals,t.symbol),d=a?m.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,c=new coreUtilsSdk.TokenUnit(Y(e),t.decimals,t.symbol),u=a!==void 0?c.mul(a):void 0;return {...t,coingeckoId:i,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:c.toSubUnit(),balanceInCurrency:u?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:c.toDisplay(),balanceCurrencyDisplayValue:u?.toDisplay({fixedDp:2}),available:m.toSubUnit(),availableInCurrency:d,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:d?.toFixed(2),utxos:e,balancePerType:{unlocked:g(l,s.unlocked),locked:g(l,s.locked),atomicMemoryUnlocked:g(l,s.atomicMemoryUnlocked),atomicMemoryLocked:g(l,s.atomicMemoryLocked)},marketCap:n,vol24:r,change24:o}};var Ve=async({addresses:e,currency:t,network:a,glacierService:n,tokenService:r})=>{if(!n.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let i=t.toLowerCase(),l=e[0]??"",s=a.networkToken,p=a.pricingProviders?.coingecko.nativeTokenId,m=a.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,d=a.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,c=await n.getChainBalance({blockchainId:m,network:d,addresses:e.join(",")}).then(T=>T.balances),u=p?await r.getSimplePrice({coinIds:[p],currencies:[i]}):{},h=u?.[p??""]?.[i]?.price??void 0,f=u?.[p??""]?.[i]?.marketCap??void 0,v=u?.[p??""]?.[i]?.vol24??void 0,A=u?.[p??""]?.[i]?.change24??void 0,x;return Be(c)?(x=Ie({balance:c,networkToken:s,priceInCurrency:h,marketCap:f,vol24:v,change24:A,coingeckoId:p??""}),{[l]:{[s.symbol]:x}}):De(c)?(x=Ne({balance:c,networkToken:s,priceInCurrency:h,marketCap:f,vol24:v,change24:A,coingeckoId:p??""}),{[l]:{[s.symbol]:x}}):Promise.reject("Incorrect type balance was returned from glacier")};function Ee({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,n=Vt__default.default.createHash("sha256").update(a).digest("base64");return "avax:"+Et(n).substring(0,32)}var Et=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var Xe=async({accountIndex:e,isTestnet:t,xpubXP:a,walletType:n})=>{if(a===void 0)throw rpcErrors.rpcErrors.invalidParams("xpubXP is required to get address");let r=t?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider(),o;switch(n){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:{o=coreWalletsSdk.Avalanche.getAddressPublicKeyFromXpub(a,e);break}case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{o=Buffer.from(a,"hex");break}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${n}`)}return {[vmModuleTypes.NetworkVMType.AVM]:r.getAddress(o,"X"),[vmModuleTypes.NetworkVMType.PVM]:r.getAddress(o,"P")}};var _t=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")])]),Ge=e=>_t.safeParse(e);var He=async({request:e,network:t,approvalController:a})=>{let n=Ge(e.params);if(!n.success)return console.error("invalid params",n.error),{error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let[r,o]=n.data,i=Buffer.from(r,"utf-8").toString("hex"),l={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE,data:i,accountIndex:o},s={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},messageDetails:r},p=await a.requestApproval({request:e,displayData:s,signingData:l});return "error"in p?{error:p.error}:{result:p.result}};var Gt=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()}),Fe=e=>Gt.safeParse(e);var ie=({isTestnet:e})=>e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider();var Oe=({utxoHexes:e=[],vm:t})=>{try{let a=avalanchejs.utils.getManagerForVM(t).getDefaultCodec();return e.map(n=>{let r=avalanchejs.utils.hexToBuffer(n);return avalanchejs.Utxo.fromBytes(r,a)[0]})}catch{return []}};var $e=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 qe=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 Ft=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,jt=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,Wt=e=>e.type===vmModuleTypes.TxType.Export,Ot=e=>e.type===vmModuleTypes.TxType.Import,$t=e=>e.type===vmModuleTypes.TxType.Base,qt=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,Jt=e=>e.type===vmModuleTypes.TxType.CreateChain,Qt=e=>e.type===vmModuleTypes.TxType.CreateSubnet,Kt=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,Je=e=>Ft(e)||jt(e)||qt(e)||Kt(e),Qe=e=>Wt(e)||Ot(e),Ke=e=>$t(e),ze=e=>Jt(e),Ye=e=>Qt(e);var Yt=process.env.GLACIER_API_KEY,et=async({request:e,network:t,approvalController:a,glacierApiUrl:n})=>{let r=Fe(e.params);if(!r.success)return {error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};try{let{transactionHex:o,chainAlias:i,externalIndices:l,internalIndices:s,utxos:p}=r.data,m=coreWalletsSdk.Avalanche.getVmByChainAlias(i),d=avalanchejs.utils.hexToBuffer(o),c=t.isTestnet??!1,u=ie({isTestnet:c}),h=e.context?.currentAddress;if(!h||typeof h!="string")return {error:rpcErrors.rpcErrors.invalidRequest("No active account found")};let f=Oe({utxoHexes:p,vm:m}),v=f.length?f:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:o,chainAlias:i,isTestnet:c,url:n,token:Yt}),A;if(i==="C")A=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:d,vm:m,utxos:v,fromAddress:h});else {let ot=avalanchejs.utils.unpackWithManager(m,d),$=e.context?.xpubXP;if(!$||typeof $!="string")return {error:rpcErrors.rpcErrors.invalidParams("Request should have xpubXP in context")};let it=await Ze({indices:l??[],chainAlias:i,isChange:!1,isTestnet:c,xpubXP:$}),ct=await Ze({indices:s??[],chainAlias:i,isChange:!0,isTestnet:c,xpubXP:$}),lt=[...new Set([h,...it,...ct])].map(pt=>avalanchejs.utils.parse(pt)[2]);A=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:ot,utxos:v,provider:u,fromAddressBytes:lt});}let x=await coreWalletsSdk.Avalanche.parseAvalancheTx(A,u,h),T=$e(x),nt=qe(x);if(x.type==="unknown"||T===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let rt={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(A.toJSON()),data:x,vm:m},st={title:nt,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},transactionDetails:Qe(T)?T:void 0,stakingDetails:Je(T)?T:void 0,chainDetails:Ke(T)?T:void 0,blockchainDetails:ze(T)?T:void 0,subnetDetails:Ye(T)?T:void 0,networkFeeSelector:!1},Z=await a.requestApproval({request:e,displayData:st,signingData:rt});return "error"in Z?{error:Z.error}:{result:Z.result}}catch(o){return console.error(o),{error:rpcErrors.rpcErrors.internal("Unable to create transaction")}}},Ze=async({indices:e,chainAlias:t,isChange:a,isTestnet:n,xpubXP:r})=>{if(a&&t!=="X")return [];let o=ie({isTestnet:n});return e.map(i=>coreWalletsSdk.Avalanche.getAddressFromXpub(r,i,o,t,a))};var E,W,O,_,at=class{constructor({approvalController:t,environment:a}){S(this,E,void 0);S(this,W,void 0);S(this,O,void 0);S(this,_,void 0);let{glacierApiUrl:n,proxyApiUrl:r}=Pe(a);B(this,E,new z({glacierApiUrl:n})),B(this,W,r),B(this,O,n),B(this,_,t);}getAddress({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r}){return Xe({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r})}getBalances({addresses:t,network:a,storage:n,currency:r}){let o=new H({storage:n,proxyApiUrl:y(this,W)});return Ve({addresses:t,currency:r,network:a,glacierService:y(this,E),tokenService:o})}getManifest(){let t=vmModuleTypes.parseManifest(pe);return t.success?t.data:void 0}getNetworkFee(t){return me()}getTransactionHistory({network:t,address:a,nextPageToken:n,offset:r}){return ve({network:t,address:a,nextPageToken:n,offset:r,glacierService:y(this,E)})}getTokens(t){return Promise.resolve([])}async onRpcRequest(t,a){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return He({request:t,network:a,approvalController:y(this,_)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return et({request:t,network:a,approvalController:y(this,_),glacierApiUrl:y(this,O)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:a}){return Ee({blockchainId:t,isTestnet:a})}};E=new WeakMap,W=new WeakMap,O=new WeakMap,_=new WeakMap;var xr=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,Tr=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
20
+ var ut=Object.defineProperty;var ht=(e,t,a)=>t in e?ut(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var w=(e,t,a)=>(ht(e,typeof t!="symbol"?t+"":t,a),a),le=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var y=(e,t,a)=>(le(e,t,"read from private field"),a?a.call(e):t.get(e)),S=(e,t,a)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,a);},B=(e,t,a,n)=>(le(e,t,"write to private field"),n?n.call(e,a):t.set(e,a),a);var pe={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 me(){return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0}}var he=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,ye=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function q(e,t,a="tx"){return `${e}/${a}/${t}`}function I({amount:e,decimals:t}){return e===void 0?new R__default.default(0):new R__default.default(e/10**t)}function xe({tx:e,address:t,networkToken:a,chainId:n,explorerUrl:r,isTestnet:o}){let i=new Set(e.consumedUtxos.flatMap(c=>c.addresses)||[]),l=new Set(e.emittedUtxos.flatMap(c=>c.addresses)||[]),s=xt({tx:e,isTestnet:o,networkToken:a,froms:i}),p=ft({tx:e,isTestnet:o,networkToken:a}),m=t.toLowerCase().startsWith("p-")?t.slice(2):t,d=i.has(m);return {hash:e.txHash,isContractCall:!1,isIncoming:!d,isOutgoing:d,from:[...i.values()].join(","),to:[...l.values()].join(","),isSender:d,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:s.toString()}],gasUsed:p.toString(),explorerLink:q(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function xt({tx:e,isTestnet:t,networkToken:a,froms:n}){let r=["ImportTx","ExportTx"].includes(e.txType),o=e.txType==="BaseTx",i=e.emittedUtxos.filter(c=>c.asset.assetId===L(!!t)&&!c.addresses.some(u=>n.has(u))).reduce((c,u)=>c.add(u.asset.amount),new R__default.default(0)),l=e.value.find(c=>c.assetId===L(!!t))?.amount,s=i.gt(new R__default.default(0))?i:l?new R__default.default(l):new R__default.default(0)??new R__default.default(0),p=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,m=e.emittedUtxos.filter(c=>c.asset.assetId===L(!!t)&&(e.txType==="ImportTx"&&c.consumedOnChainId===p||e.txType==="ExportTx"&&c.consumedOnChainId!==p)).reduce((c,u)=>c.add(u.amount),new R__default.default(0)),d=o?s:r?m:e.amountStaked.length===0?ge(e.value,!!t):ge(e.amountStaked,!!t);return I({amount:d?.toNumber(),decimals:a.decimals})}function ft({tx:e,isTestnet:t,networkToken:a}){let n=e.amountBurned?.filter(r=>r.assetId===L(!!t)).reduce((r,o)=>r.add(o.amount),new R__default.default(0));return I({amount:n?.toNumber(),decimals:a.decimals})}function ge(e,t){return e.filter(a=>a.assetId===L(t)).reduce((a,n)=>a.add(n.amount),new R__default.default(0))}function L(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function fe({tx:e,address:t,networkToken:a,chainId:n,explorerUrl:r,isTestnet:o}){let i=new Set(e.consumedUtxos.flatMap(c=>c.addresses)||[]),l=new Set(e.emittedUtxos.flatMap(c=>c.addresses)||[]),s=kt({tx:e,isTestnet:o,networkToken:a}),p=vt({isTestnet:o,tx:e,totalAmountCreated:s,networkToken:a}),m=t.toLowerCase().startsWith("x-")?t.slice(2):t,d=i.has(m);return {hash:e.txHash,isContractCall:!1,isIncoming:!d,isOutgoing:d,from:[...i.values()].join(","),to:[...l.values()].join(","),isSender:d,timestamp:e.timestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:s.toString()}],gasUsed:p.toString(),explorerLink:q(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function kt({tx:e,isTestnet:t,networkToken:a}){let n=["ImportTx","ExportTx"].includes(e.txType),r=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,o=e.emittedUtxos.filter(s=>s.asset.assetId===te(!!t)&&(e.txType==="ImportTx"&&s.consumedOnChainId===r||e.txType==="ExportTx"&&s.consumedOnChainId!==r)).reduce((s,p)=>s.add(p.asset.amount),new R__default.default(0)),i=e.amountCreated.filter(s=>s.assetId===te(!!t)).reduce((s,p)=>s.add(p.amount),new R__default.default(0));return I({amount:(n?o:i).toNumber(),decimals:a.decimals})}function vt({isTestnet:e,tx:t,totalAmountCreated:a,networkToken:n}){let o=t.amountUnlocked.filter(i=>i.assetId===te(!!e)).reduce((i,l)=>i.add(l.amount),new R__default.default(0)).minus(a);return I({amount:o.toNumber(),decimals:n.decimals})}function te(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var ve=async({address:e,nextPageToken:t,offset:a,network:n,glacierService:r})=>{let{isTestnet:o,networkToken:i,explorerUrl:l,chainId:s}=n;if(!r.isHealthy())return {transactions:[],nextPageToken:""};let m=await r.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:Pt(e),network:o?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,pageSize:a,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),d=[];return he(m)&&(d=m.transactions.map(c=>xe({tx:c,isTestnet:o,address:e,networkToken:i,explorerUrl:l,chainId:s}))),ye(m)&&(d=m.transactions.map(c=>fe({tx:c,isTestnet:o,address:e,networkToken:i,explorerUrl:l,chainId:s}))),{transactions:d,nextPageToken:m.nextPageToken}},Pt=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var bt={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Ct={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Pe=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return bt;case vmModuleTypes.Environment.DEV:return Ct}};var z=class extends Error{constructor(){super(...arguments);w(this,"message","Glacier is unhealthy. Try again later.");}},K=class{constructor({glacierApiUrl:t}){w(this,"glacierSdk");w(this,"isGlacierHealthy",!0);w(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:t});}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async listLatestPrimaryNetworkTransactions(t){try{return this.glacierSdk.primaryNetworkTransactions.listLatestPrimaryNetworkTransactions(t)}catch(a){throw a instanceof z&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof z&&this.setGlacierToUnhealthy(),a}}};var be=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:n=X.exponential()})=>{let r=0,o=0,i;for(;o<a;){o>0&&await Bt(r);try{let s=await e(o);if(t(s))return s}catch(s){i=s;}r=n(o),o++;}let l=i?`Max retry exceeded. ${i}`:"Max retry exceeded.";throw new Error(l)},X=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function Bt(e){return new Promise(t=>setTimeout(t,e))}var ae=e=>be({operation:t=>e(t>0),maxRetries:2,backoffPolicy:X.constant(1),isSuccess:t=>t?.status?.error_code!==429});function Ce(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function ne(e){let t,a=0;for(t=0;t<e.length;t++){let n=Ce(e[t]??"");a=a+65027/n;}return (""+a).slice(0,16)}var se=e=>new core.Zodios(`${e}/proxy/coingecko`,[{method:"post",path:"/simple/price",parameters:[{name:"ids",type:"Query",schema:zod.string()},{name:"vs_currencies",type:"Query",schema:zod.string()},{name:"include_market_cap",type:"Query",schema:zod.string().optional()},{name:"include_24hr_vol",type:"Query",schema:zod.string().optional()},{name:"include_24hr_change",type:"Query",schema:zod.string().optional()},{name:"include_last_updated_at",type:"Query",schema:zod.string().optional()}],alias:"simplePrice",response:vmModuleTypes.RawSimplePriceResponseSchema},{method:"post",path:"/simple/token_price/:id",parameters:[{name:"id",type:"Path",schema:zod.string()},{name:"contract_addresses",type:"Query",schema:zod.string().array()},{name:"vs_currencies",type:"Query",schema:zod.string().array()},{name:"include_market_cap",type:"Query",schema:zod.boolean().optional()},{name:"include_24hr_vol",type:"Query",schema:zod.boolean().optional()},{name:"include_24hr_change",type:"Query",schema:zod.boolean().optional()}],alias:"simplePriceByContractAddresses",response:vmModuleTypes.SimplePriceResponseSchema}],{axiosConfig:{headers:{"Content-Type":"application/json"}}});var Se=coreCoingeckoSdk.getBasicCoingeckoHttp(),D,E,H=class{constructor({storage:t,proxyApiUrl:a}){S(this,D,void 0);S(this,E,void 0);w(this,"transformSimplePriceResponse",(t,a=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(t).forEach(r=>{let o=t[r];n[r]={},a.forEach(i=>{n[r]={[i]:{price:o?.[i],change24:o?.[`${i}_24h_change`],vol24:o?.[`${i}_24h_vol`],marketCap:o?.[`${i}_market_cap`]}};});}),n});B(this,D,t),B(this,E,a);}async getSimplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${t?`${ne(t)}-${a.toString()}`:`${a.toString()}`}`;if(n=y(this,D)?.get?.(o),n)return n;try{n=await ae(i=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{n=void 0;}return y(this,D)?.set?.(o,n),n}async getPricesByAddresses(t,a,n=coreCoingeckoSdk.VsCurrencyType.USD){let r,i=`getPricesWithMarketDataByAddresses-${`${ne(t)}-${a}-${n}`}`;if(r=y(this,D)?.get?.(i),r)return r;try{r=await ae(l=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:n,useCoingeckoProxy:l}));}catch{r=void 0;}return y(this,D)?.set?.(i,r),r}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:r=!1}){return r?se(y(this,E)).simplePriceByContractAddresses(void 0,{params:{id:t},queries:{contract_addresses:a,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}}):coreCoingeckoSdk.simpleTokenPrice(Se,{assetPlatformId:t,tokenAddresses:a,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:r=!1,change24:o=!1,lastUpdated:i=!1,useCoingeckoProxy:l=!1,shouldThrow:s=!0}){if(l){let p=await se(y(this,E)).simplePrice(void 0,{queries:{ids:t?.join(","),vs_currencies:a.join(","),include_market_cap:String(n),include_24hr_vol:String(r),include_24hr_change:String(o),include_last_updated_at:String(i)}});return this.transformSimplePriceResponse(p,a)}return coreCoingeckoSdk.simplePrice(Se,{coinIds:t,currencies:a,marketCap:n,vol24:r,change24:o,lastUpdated:i,shouldThrow:s})}};D=new WeakMap,E=new WeakMap;var Lt="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",Xt="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",Re=zod.object({date:zod.string(),usd:zod.record(zod.number())});new core.Zodios(Lt,[{method:"get",path:"",alias:"getExchangeRates",response:Re}]);new core.Zodios(Xt,[{method:"get",path:"",alias:"getExchangeRates",response:Re}]);var De=e=>Object.keys(e).includes("unlockedUnstaked"),we=e=>Object.keys(e).includes("locked");function Y(e){let t=Object.values(e).reduce(function(a,n){let r=n.reduce(function(o,i){let l=Number(i.amount);return o+l},0);return a+r},0);return BigInt(t)}function g(e,t){return t===void 0?0:t/10**e}var Ee=({balance:e,networkToken:t,priceInCurrency:a,marketCap:n,vol24:r,change24:o,coingeckoId:i})=>{let l=t.decimals,s={},p={unlockedUnstaked:e.unlockedUnstaked,unlockedStaked:e.unlockedStaked,pendingStaked:e.pendingStaked,lockedStaked:e.lockedStaked,lockedStakeable:e.lockedStakeable,lockedPlatform:e.lockedPlatform,atomicMemoryLocked:e.atomicMemoryLocked,atomicMemoryUnlocked:e.atomicMemoryUnlocked};for(let h in p){let x=p[h];if(!x||!x.length){s[h]=0;continue}x.forEach(v=>{let f=(s[h]??0)+Number(v.amount);s[h]=f;});}let m=new coreUtilsSdk.TokenUnit(s.unlockedUnstaked?s.unlockedUnstaked:0n,t.decimals,t.symbol),d=a?m.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,c=new coreUtilsSdk.TokenUnit(Y(e),t.decimals,t.symbol),u=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:c.toSubUnit(),balanceInCurrency:u,balanceDisplayValue:c.toDisplay(),balanceCurrencyDisplayValue:u?.toFixed(2),available:m.toSubUnit(),availableInCurrency:d,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:d?.toFixed(2),utxos:e,balancePerType:{lockedStaked:g(l,s.lockedStaked),lockedStakeable:g(l,s.lockedStakeable),lockedPlatform:g(l,s.lockedPlatform),atomicMemoryLocked:g(l,s.atomicMemoryLocked),atomicMemoryUnlocked:g(l,s.atomicMemoryUnlocked),unlockedUnstaked:g(l,s.unlockedUnstaked),unlockedStaked:g(l,s.unlockedStaked),pendingStaked:g(l,s.pendingStaked)},marketCap:n,vol24:r,change24:o,coingeckoId:i}};var Ue=({balance:e,networkToken:t,priceInCurrency:a,marketCap:n,vol24:r,change24:o,coingeckoId:i})=>{let l=t.decimals,s={},p={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let h in p){let x=p[h];if(!x||!x.length){s[h]=0;continue}x.forEach(v=>{let f=(s[h]??0)+Number(v.amount);s[h]=f;});}let m=new coreUtilsSdk.TokenUnit(s.unlocked?s.unlocked:0n,t.decimals,t.symbol),d=a?m.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,c=new coreUtilsSdk.TokenUnit(Y(e),t.decimals,t.symbol),u=a!==void 0?c.mul(a):void 0;return {...t,coingeckoId:i,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:c.toSubUnit(),balanceInCurrency:u?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:c.toDisplay(),balanceCurrencyDisplayValue:u?.toDisplay({fixedDp:2}),available:m.toSubUnit(),availableInCurrency:d,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:d?.toFixed(2),utxos:e,balancePerType:{unlocked:g(l,s.unlocked),locked:g(l,s.locked),atomicMemoryUnlocked:g(l,s.atomicMemoryUnlocked),atomicMemoryLocked:g(l,s.atomicMemoryLocked)},marketCap:n,vol24:r,change24:o}};var _e=async({addresses:e,currency:t,network:a,glacierService:n,tokenService:r})=>{if(!n.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let i=t.toLowerCase(),l=e[0]??"",s=a.networkToken,p=a.pricingProviders?.coingecko.nativeTokenId,m=a.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,d=a.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,c=await n.getChainBalance({blockchainId:m,network:d,addresses:e.join(",")}).then(T=>T.balances),u=p?await r.getSimplePrice({coinIds:[p],currencies:[i]}):{},h=u?.[p??""]?.[i]?.price??void 0,x=u?.[p??""]?.[i]?.marketCap??void 0,v=u?.[p??""]?.[i]?.vol24??void 0,A=u?.[p??""]?.[i]?.change24??void 0,f;return De(c)?(f=Ee({balance:c,networkToken:s,priceInCurrency:h,marketCap:x,vol24:v,change24:A,coingeckoId:p??""}),{[l]:{[s.symbol]:f}}):we(c)?(f=Ue({balance:c,networkToken:s,priceInCurrency:h,marketCap:x,vol24:v,change24:A,coingeckoId:p??""}),{[l]:{[s.symbol]:f}}):Promise.reject("Incorrect type balance was returned from glacier")};function Le({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,n=jt__default.default.createHash("sha256").update(a).digest("base64");return "avax:"+Wt(n).substring(0,32)}var Wt=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var He=async({accountIndex:e,isTestnet:t,xpubXP:a,walletType:n})=>{if(a===void 0)throw rpcErrors.rpcErrors.invalidParams("xpubXP is required to get address");let r=t?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider(),o;switch(n){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:{o=coreWalletsSdk.Avalanche.getAddressPublicKeyFromXpub(a,e);break}case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{o=Buffer.from(a,"hex");break}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${n}`)}return {[vmModuleTypes.NetworkVMType.AVM]:r.getAddress(o,"X"),[vmModuleTypes.NetworkVMType.PVM]:r.getAddress(o,"P")}};var Ot=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")])]),Fe=e=>Ot.safeParse(e);var je=async({request:e,network:t,approvalController:a})=>{let n=Fe(e.params);if(!n.success)return console.error("invalid params",n.error),{error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let[r,o]=n.data,i=Buffer.from(r,"utf-8").toString("hex"),l={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE,data:i,accountIndex:o},s={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},messageDetails:r},p=await a.requestApproval({request:e,displayData:s,signingData:l});return "error"in p?{error:p.error}:{result:p.result}};var Jt=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()}),We=e=>Jt.safeParse(e);var ie=({isTestnet:e})=>e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider();var qe=({utxoHexes:e=[],vm:t})=>{try{let a=avalanchejs.utils.getManagerForVM(t).getDefaultCodec();return e.map(n=>{let r=avalanchejs.utils.hexToBuffer(n);return avalanchejs.Utxo.fromBytes(r,a)[0]})}catch{return []}};var Je=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 Qe=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 zt=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,Kt=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,Yt=e=>e.type===vmModuleTypes.TxType.Export,Zt=e=>e.type===vmModuleTypes.TxType.Import,ea=e=>e.type===vmModuleTypes.TxType.Base,ta=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,aa=e=>e.type===vmModuleTypes.TxType.CreateChain,na=e=>e.type===vmModuleTypes.TxType.CreateSubnet,ra=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,ze=e=>zt(e)||Kt(e)||ta(e)||ra(e),Ke=e=>Yt(e)||Zt(e),Ye=e=>ea(e),Ze=e=>aa(e),et=e=>na(e);var oa=process.env.GLACIER_API_KEY,at=async({request:e,network:t,approvalController:a,glacierApiUrl:n})=>{let r=We(e.params);if(!r.success)return {error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};try{let{transactionHex:o,chainAlias:i,externalIndices:l,internalIndices:s,utxos:p}=r.data,m=coreWalletsSdk.Avalanche.getVmByChainAlias(i),d=avalanchejs.utils.hexToBuffer(o),c=t.isTestnet??!1,u=ie({isTestnet:c}),h=e.context?.currentAddress;if(!h||typeof h!="string")return {error:rpcErrors.rpcErrors.invalidRequest("No active account found")};let x=qe({utxoHexes:p,vm:m}),v=x.length?x:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:o,chainAlias:i,isTestnet:c,url:n,token:oa}),A;if(i==="C")A=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:d,vm:m,utxos:v,fromAddress:h});else {let ct=avalanchejs.utils.unpackWithManager(m,d),$=e.context?.xpubXP;if(!$||typeof $!="string")return {error:rpcErrors.rpcErrors.invalidParams("Request should have xpubXP in context")};let lt=await tt({indices:l??[],chainAlias:i,isChange:!1,isTestnet:c,xpubXP:$}),pt=await tt({indices:s??[],chainAlias:i,isChange:!0,isTestnet:c,xpubXP:$}),mt=[...new Set([h,...lt,...pt])].map(dt=>avalanchejs.utils.parse(dt)[2]);A=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:ct,utxos:v,provider:u,fromAddressBytes:mt});}let f=await coreWalletsSdk.Avalanche.parseAvalancheTx(A,u,h),T=Je(f),st=Qe(f);if(f.type==="unknown"||T===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let ot={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(A.toJSON()),data:f,vm:m},it={title:st,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},transactionDetails:Ke(T)?T:void 0,stakingDetails:ze(T)?T:void 0,chainDetails:Ye(T)?T:void 0,blockchainDetails:Ze(T)?T:void 0,subnetDetails:et(T)?T:void 0,networkFeeSelector:!1},Z=await a.requestApproval({request:e,displayData:it,signingData:ot});return "error"in Z?{error:Z.error}:{result:Z.result}}catch(o){return console.error(o),{error:rpcErrors.rpcErrors.internal("Unable to create transaction")}}},tt=async({indices:e,chainAlias:t,isChange:a,isTestnet:n,xpubXP:r})=>{if(a&&t!=="X")return [];let o=ie({isTestnet:n});return e.map(i=>coreWalletsSdk.Avalanche.getAddressFromXpub(r,i,o,t,a))};var V,W,O,_,rt=class{constructor({approvalController:t,environment:a}){S(this,V,void 0);S(this,W,void 0);S(this,O,void 0);S(this,_,void 0);let{glacierApiUrl:n,proxyApiUrl:r}=Pe(a);B(this,V,new K({glacierApiUrl:n})),B(this,W,r),B(this,O,n),B(this,_,t);}getAddress({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r}){return He({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r})}getBalances({addresses:t,network:a,storage:n,currency:r}){let o=new H({storage:n,proxyApiUrl:y(this,W)});return _e({addresses:t,currency:r,network:a,glacierService:y(this,V),tokenService:o})}getManifest(){let t=vmModuleTypes.parseManifest(pe);return t.success?t.data:void 0}getNetworkFee(t){return me()}getTransactionHistory({network:t,address:a,nextPageToken:n,offset:r}){return ve({network:t,address:a,nextPageToken:n,offset:r,glacierService:y(this,V)})}getTokens(t){return Promise.resolve([])}async onRpcRequest(t,a){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return je({request:t,network:a,approvalController:y(this,_)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return at({request:t,network:a,approvalController:y(this,_),glacierApiUrl:y(this,O)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:a}){return Le({blockchainId:t,isTestnet:a})}};V=new WeakMap,W=new WeakMap,O=new WeakMap,_=new WeakMap;var Ur=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,Mr=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
21
21
 
22
- exports.AvalancheModule = at;
23
- exports.isAddPermissionlessDelegatorTx = Ft;
24
- exports.isAddPermissionlessValidatorTx = jt;
25
- exports.isAddSubnetValidatorTx = qt;
26
- exports.isBaseTx = $t;
27
- exports.isBlockchainDetails = ze;
28
- exports.isChainDetails = Ke;
29
- exports.isCreateChainTx = Jt;
30
- exports.isCreateSubnetTx = Qt;
31
- exports.isExportImportTxDetails = Qe;
32
- exports.isExportTx = Wt;
33
- exports.isImportTx = Ot;
34
- exports.isRemoveSubnetValidatorTx = Kt;
35
- exports.isStakingDetails = Je;
36
- exports.isSubnetDetails = Ye;
37
- exports.isTokenWithBalanceAVM = Tr;
38
- exports.isTokenWithBalancePVM = xr;
22
+ exports.AvalancheModule = rt;
23
+ exports.isAddPermissionlessDelegatorTx = zt;
24
+ exports.isAddPermissionlessValidatorTx = Kt;
25
+ exports.isAddSubnetValidatorTx = ta;
26
+ exports.isBaseTx = ea;
27
+ exports.isBlockchainDetails = Ze;
28
+ exports.isChainDetails = Ye;
29
+ exports.isCreateChainTx = aa;
30
+ exports.isCreateSubnetTx = na;
31
+ exports.isExportImportTxDetails = Ke;
32
+ exports.isExportTx = Yt;
33
+ exports.isImportTx = Zt;
34
+ exports.isRemoveSubnetValidatorTx = ra;
35
+ exports.isStakingDetails = ze;
36
+ exports.isSubnetDetails = et;
37
+ exports.isTokenWithBalanceAVM = Mr;
38
+ exports.isTokenWithBalancePVM = Ur;
39
39
  //# sourceMappingURL=out.js.map
40
40
  //# sourceMappingURL=index.cjs.map