@avalabs/avalanche-module 0.1.10 → 0.1.11

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
@@ -17,7 +17,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
17
17
  var I__default = /*#__PURE__*/_interopDefault(I);
18
18
  var Zt__default = /*#__PURE__*/_interopDefault(Zt);
19
19
 
20
- var Pt=Object.defineProperty;var Ct=(e,t,a)=>t in e?Pt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var N=(e,t,a)=>(Ct(e,typeof t!="symbol"?t+"":t,a),a),Re=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var y=(e,t,a)=>(Re(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);},D=(e,t,a,n)=>(Re(e,t,"write to private field"),n?n.call(e,a):t.set(e,a),a);var De={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 Ie(){return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0}}var Ee=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,Ue=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function ae(e,t,a="tx"){return `${e}/${a}/${t}`}function M({amount:e,decimals:t}){return e===void 0?new I__default.default(0):new I__default.default(e/10**t)}function Ve({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=Bt({tx:e,isTestnet:o,networkToken:a,froms:i}),p=Rt({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:ae(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function Bt({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===$(!!t)&&!c.addresses.some(u=>n.has(u))).reduce((c,u)=>c.add(u.asset.amount),new I__default.default(0)),l=e.value.find(c=>c.assetId===$(!!t))?.amount,s=i.gt(new I__default.default(0))?i:l?new I__default.default(l):new I__default.default(0)??new I__default.default(0),p=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,m=e.emittedUtxos.filter(c=>c.asset.assetId===$(!!t)&&(e.txType==="ImportTx"&&c.consumedOnChainId===p||e.txType==="ExportTx"&&c.consumedOnChainId!==p)).reduce((c,u)=>c.add(u.amount),new I__default.default(0)),d=o?s:r?m:e.amountStaked.length===0?Me(e.value,!!t):Me(e.amountStaked,!!t);return M({amount:d?.toNumber(),decimals:a.decimals})}function Rt({tx:e,isTestnet:t,networkToken:a}){let n=e.amountBurned?.filter(r=>r.assetId===$(!!t)).reduce((r,o)=>r.add(o.amount),new I__default.default(0));return M({amount:n?.toNumber(),decimals:a.decimals})}function Me(e,t){return e.filter(a=>a.assetId===$(t)).reduce((a,n)=>a.add(n.amount),new I__default.default(0))}function $(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function _e({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=It({tx:e,isTestnet:o,networkToken:a}),p=wt({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:ae(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function It({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 I__default.default(0)),i=e.amountCreated.filter(s=>s.assetId===Te(!!t)).reduce((s,p)=>s.add(p.amount),new I__default.default(0));return M({amount:(n?o:i).toNumber(),decimals:a.decimals})}function wt({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 I__default.default(0)).minus(a);return M({amount:o.toNumber(),decimals:n.decimals})}function Te(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var Ge=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:Et(e),network:o?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,pageSize:a,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),d=[];return Ee(m)&&(d=m.transactions.map(c=>Ve({tx:c,isTestnet:o,address:e,networkToken:i,explorerUrl:l,chainId:s}))),Ue(m)&&(d=m.transactions.map(c=>_e({tx:c,isTestnet:o,address:e,networkToken:i,explorerUrl:l,chainId:s}))),{transactions:d,nextPageToken:m.nextPageToken}},Et=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var Ut={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Mt={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Fe=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return Ut;case vmModuleTypes.Environment.DEV:return Mt}};var se=class extends Error{constructor(){super(...arguments);N(this,"message","Glacier is unhealthy. Try again later.");}},oe=class{constructor({glacierApiUrl:t}){N(this,"glacierSdk");N(this,"isGlacierHealthy",!0);N(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 se&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof se&&this.setGlacierToUnhealthy(),a}}};var je=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:n=J.exponential()})=>{let r=0,o=0,i;for(;o<a;){o>0&&await _t(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)},J=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function _t(e){return new Promise(t=>setTimeout(t,e))}var ke=e=>je({operation:t=>e(t>0),maxRetries:2,backoffPolicy:J.constant(1),isSuccess:t=>t?.status?.error_code!==429});function We(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function ve(e){let t,a=0;for(t=0;t<e.length;t++){let n=We(e[t]??"");a=a+65027/n;}return (""+a).slice(0,16)}var Pe=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 Oe=coreCoingeckoSdk.getBasicCoingeckoHttp(),w,V,z=class{constructor({storage:t,proxyApiUrl:a}){R(this,w,void 0);R(this,V,void 0);N(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});D(this,w,t),D(this,V,a);}async getSimplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${t?`${ve(t)}-${a.toString()}`:`${a.toString()}`}`;if(n=y(this,w)?.get?.(o),n)return n;try{n=await ke(i=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{n=void 0;}return y(this,w)?.set?.(o,n),n}async getPricesByAddresses(t,a,n=coreCoingeckoSdk.VsCurrencyType.USD){let r,i=`getPricesWithMarketDataByAddresses-${`${ve(t)}-${a}-${n}`}`;if(r=y(this,w)?.get?.(i),r)return r;try{r=await ke(l=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:n,useCoingeckoProxy:l}));}catch{r=void 0;}return y(this,w)?.set?.(i,r),r}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:r=!1}){return r?Pe(y(this,V)).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(Oe,{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 Pe(y(this,V)).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(Oe,{coinIds:t,currencies:a,marketCap:n,vol24:r,change24:o,lastUpdated:i,shouldThrow:s})}};w=new WeakMap,V=new WeakMap;var Jt="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",Qt="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",$e=zod.object({date:zod.string(),usd:zod.record(zod.number())});new core.Zodios(Jt,[{method:"get",path:"",alias:"getExchangeRates",response:$e}]);new core.Zodios(Qt,[{method:"get",path:"",alias:"getExchangeRates",response:$e}]);var Je=e=>Object.keys(e).includes("unlockedUnstaked"),Qe=e=>Object.keys(e).includes("locked");function ie(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 T(e,t){return t===void 0?0:t/10**e}var Ke=({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 g=p[h];if(!g||!g.length){s[h]=0;continue}g.forEach(A=>{let x=(s[h]??0)+Number(A.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(ie(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:T(l,s.lockedStaked),lockedStakeable:T(l,s.lockedStakeable),lockedPlatform:T(l,s.lockedPlatform),atomicMemoryLocked:T(l,s.atomicMemoryLocked),atomicMemoryUnlocked:T(l,s.atomicMemoryUnlocked),unlockedUnstaked:T(l,s.unlockedUnstaked),unlockedStaked:T(l,s.unlockedStaked),pendingStaked:T(l,s.pendingStaked)},marketCap:n,vol24:r,change24:o,coingeckoId:i}};var Ze=({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 g=p[h];if(!g||!g.length){s[h]=0;continue}g.forEach(A=>{let x=(s[h]??0)+Number(A.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(ie(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:T(l,s.unlocked),locked:T(l,s.locked),atomicMemoryUnlocked:T(l,s.atomicMemoryUnlocked),atomicMemoryLocked:T(l,s.atomicMemoryLocked)},marketCap:n,vol24:r,change24:o}};var at=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(f=>f.balances),u=p?await r.getSimplePrice({coinIds:[p],currencies:[i]}):{},h=u?.[p??""]?.[i]?.price??void 0,g=u?.[p??""]?.[i]?.marketCap??void 0,A=u?.[p??""]?.[i]?.vol24??void 0,k=u?.[p??""]?.[i]?.change24??void 0,x;return Je(c)?(x=Ke({balance:c,networkToken:s,priceInCurrency:h,marketCap:g,vol24:A,change24:k,coingeckoId:p??""}),{[l]:{[s.symbol]:x}}):Qe(c)?(x=Ze({balance:c,networkToken:s,priceInCurrency:h,marketCap:g,vol24:A,change24:k,coingeckoId:p??""}),{[l]:{[s.symbol]:x}}):Promise.reject("Incorrect type balance was returned from glacier")};function nt({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,n=Zt__default.default.createHash("sha256").update(a).digest("base64");return "avax:"+ea(n).substring(0,32)}var ea=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var ot=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 ta=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")])]),it=e=>ta.safeParse(e);var lt=async({request:e,network:t,approvalController:a})=>{let n=it(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}:"signedData"in p?{result:p.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var na=zod.z.object({transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"]),externalIndices:zod.z.number().array().optional(),internalIndices:zod.z.number().array().optional(),utxos:zod.z.string().array().optional()}),pt=e=>na.safeParse(e);var Y=({isTestnet:e})=>e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider();var ut=({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 ce=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 ht=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 sa=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,oa=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,ia=e=>e.type===vmModuleTypes.TxType.Export,ca=e=>e.type===vmModuleTypes.TxType.Import,la=e=>e.type===vmModuleTypes.TxType.Base,pa=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,ma=e=>e.type===vmModuleTypes.TxType.CreateChain,da=e=>e.type===vmModuleTypes.TxType.CreateSubnet,ua=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,le=e=>sa(e)||oa(e)||pa(e)||ua(e),pe=e=>ia(e)||ca(e),me=e=>la(e),de=e=>ma(e),ue=e=>da(e);var ga=process.env.GLACIER_API_KEY,yt=async({request:e,network:t,approvalController:a,glacierApiUrl:n})=>{let r=pt(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=Y({isTestnet:c}),h=e.context?.currentAddress;if(!h||typeof h!="string")return {error:rpcErrors.rpcErrors.invalidRequest("No active account found")};let g=ut({utxoHexes:p,vm:m}),A=g.length?g:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:o,chainAlias:i,isTestnet:c,url:n,token:ga}),k;if(i==="C")k=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:d,vm:m,utxos:A,fromAddress:h});else {let q=avalanchejs.utils.unpackWithManager(m,d),C=e.context?.xpubXP;if(!C||typeof C!="string")return {error:rpcErrors.rpcErrors.invalidParams("Request should have xpubXP in context")};let ye=await gt({indices:l??[],chainAlias:i,isChange:!1,isTestnet:c,xpubXP:C}),xe=await gt({indices:s??[],chainAlias:i,isChange:!0,isTestnet:c,xpubXP:C}),vt=[...new Set([h,...ye,...xe])].map(At=>avalanchejs.utils.parse(At)[2]);k=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:q,utxos:A,provider:u,fromAddressBytes:vt});}let x=await coreWalletsSdk.Avalanche.parseAvalancheTx(k,u,h),f=ce(x),j=ht(x);if(x.type==="unknown"||f===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let v={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(k.toJSON()),data:x,vm:m},ge={title:j,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},transactionDetails:pe(f)?f:void 0,stakingDetails:le(f)?f:void 0,chainDetails:me(f)?f:void 0,blockchainDetails:de(f)?f:void 0,subnetDetails:ue(f)?f:void 0,networkFeeSelector:!1},W=await a.requestApproval({request:e,displayData:ge,signingData:v});return "error"in W?{error:W.error}:{result:await ya(u,W,m)}}catch(o){return console.error(o),{error:rpcErrors.rpcErrors.internal("Unable to create transaction")}}},ya=async(e,t,a)=>{if("txHash"in t)return t.txHash;let{txID:n}=await e.issueTxHex(t.signedData,a);return n},gt=async({indices:e,chainAlias:t,isChange:a,isTestnet:n,xpubXP:r})=>{if(a&&t!=="X")return [];let o=Y({isTestnet:n});return e.map(i=>coreWalletsSdk.Avalanche.getAddressFromXpub(r,i,o,t,a))};var xa=zod.z.object({from:zod.z.string().describe("Avalanche receiving address"),transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"])}),xt=e=>xa.safeParse(e);var ka=process.env.GLACIER_API_KEY,Tt=async({request:e,network:t,approvalController:a,glacierApiUrl:n})=>{let r=xt(e.params);if(!r.success)return console.error("invalid params",r.error),{error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let{transactionHex:o,chainAlias:i,from:l}=r.data,s=coreWalletsSdk.Avalanche.getVmByChainAlias(i),p=avalanchejs.utils.hexToBuffer(o),m=t.isTestnet??!1,d=Y({isTestnet:m}),c=avalanchejs.utils.unpackWithManager(s,p),u=await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:o,chainAlias:i,isTestnet:m,url:n,token:ka}),h;try{let C=avalanchejs.utils.getManagerForVM(s).unpack(p,avalanchejs.avaxSerial.SignedTx),ye=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:c,utxos:u,provider:d,credentials:C.getCredentials()});h=c.getSigIndices().map((xe,Be)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(xe,{unsignedTx:ye,credentialIndex:Be})));}catch{h=c.getSigIndices().map(C=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(C)));}let g=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:c,provider:d,credentials:h,utxos:u}),A=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(l)[2]])[0];if(!A)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let k=g.getSigIndicesForAddress(A);if(!k)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let x=g.getSigIndices();if(!k.some(([q,C])=>x[q]?.includes(C)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let j=await coreWalletsSdk.Avalanche.parseAvalancheTx(g,d,l),v=ce(j);if(j.type==="unknown"||v===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let ge={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:j,vm:s,unsignedTxJson:JSON.stringify(g.toJSON()),ownSignatureIndices:k},W={title:"Sign Transaction",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} requests you to sign the following transaction`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},transactionDetails:pe(v)?v:void 0,stakingDetails:le(v)?v:void 0,chainDetails:me(v)?v:void 0,blockchainDetails:de(v)?v:void 0,subnetDetails:ue(v)?v:void 0},O=await a.requestApproval({request:e,displayData:W,signingData:ge});return "error"in O?{error:O.error}:"signedData"in O?{result:O.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var X,te,F,U,kt=class{constructor({approvalController:t,environment:a}){R(this,X,void 0);R(this,te,void 0);R(this,F,void 0);R(this,U,void 0);let{glacierApiUrl:n,proxyApiUrl:r}=Fe(a);D(this,X,new oe({glacierApiUrl:n})),D(this,te,r),D(this,F,n),D(this,U,t);}getAddress({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r}){return ot({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r})}getBalances({addresses:t,network:a,storage:n,currency:r}){let o=new z({storage:n,proxyApiUrl:y(this,te)});return at({addresses:t,currency:r,network:a,glacierService:y(this,X),tokenService:o})}getManifest(){let t=vmModuleTypes.parseManifest(De);return t.success?t.data:void 0}getNetworkFee(t){return Ie()}getTransactionHistory({network:t,address:a,nextPageToken:n,offset:r}){return Ge({network:t,address:a,nextPageToken:n,offset:r,glacierService:y(this,X)})}getTokens(t){return Promise.resolve([])}async onRpcRequest(t,a){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return lt({request:t,network:a,approvalController:y(this,U)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return Tt({request:t,network:a,approvalController:y(this,U),glacierApiUrl:y(this,F)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return yt({request:t,network:a,approvalController:y(this,U),glacierApiUrl:y(this,F)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:a}){return nt({blockchainId:t,isTestnet:a})}};X=new WeakMap,te=new WeakMap,F=new WeakMap,U=new WeakMap;var ss=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,os=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
20
+ var Pt=Object.defineProperty;var Ct=(e,t,a)=>t in e?Pt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var N=(e,t,a)=>(Ct(e,typeof t!="symbol"?t+"":t,a),a),Re=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var y=(e,t,a)=>(Re(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);},D=(e,t,a,n)=>(Re(e,t,"write to private field"),n?n.call(e,a):t.set(e,a),a);var De={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 Ie(){return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0}}var Ee=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,Ue=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function ae(e,t,a="tx"){return `${e}/${a}/${t}`}function V({amount:e,decimals:t}){return e===void 0?new I__default.default(0):new I__default.default(e/10**t)}function Ve({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=Bt({tx:e,isTestnet:o,networkToken:a,froms:i}),p=Rt({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:ae(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function Bt({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===$(!!t)&&!c.addresses.some(u=>n.has(u))).reduce((c,u)=>c.add(u.asset.amount),new I__default.default(0)),l=e.value.find(c=>c.assetId===$(!!t))?.amount,s=i.gt(new I__default.default(0))?i:l?new I__default.default(l):new I__default.default(0)??new I__default.default(0),p=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,m=e.emittedUtxos.filter(c=>c.asset.assetId===$(!!t)&&(e.txType==="ImportTx"&&c.consumedOnChainId===p||e.txType==="ExportTx"&&c.consumedOnChainId!==p)).reduce((c,u)=>c.add(u.amount),new I__default.default(0)),d=o?s:r?m:e.amountStaked.length===0?Me(e.value,!!t):Me(e.amountStaked,!!t);return V({amount:d?.toNumber(),decimals:a.decimals})}function Rt({tx:e,isTestnet:t,networkToken:a}){let n=e.amountBurned?.filter(r=>r.assetId===$(!!t)).reduce((r,o)=>r.add(o.amount),new I__default.default(0));return V({amount:n?.toNumber(),decimals:a.decimals})}function Me(e,t){return e.filter(a=>a.assetId===$(t)).reduce((a,n)=>a.add(n.amount),new I__default.default(0))}function $(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function _e({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=It({tx:e,isTestnet:o,networkToken:a}),p=wt({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:ae(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function It({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 I__default.default(0)),i=e.amountCreated.filter(s=>s.assetId===Te(!!t)).reduce((s,p)=>s.add(p.amount),new I__default.default(0));return V({amount:(n?o:i).toNumber(),decimals:a.decimals})}function wt({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 I__default.default(0)).minus(a);return V({amount:o.toNumber(),decimals:n.decimals})}function Te(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var Ge=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:Et(e),network:o?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,pageSize:a,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),d=[];return Ee(m)&&(d=m.transactions.map(c=>Ve({tx:c,isTestnet:o,address:e,networkToken:i,explorerUrl:l,chainId:s}))),Ue(m)&&(d=m.transactions.map(c=>_e({tx:c,isTestnet:o,address:e,networkToken:i,explorerUrl:l,chainId:s}))),{transactions:d,nextPageToken:m.nextPageToken}},Et=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var Ut={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Mt={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Fe=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return Ut;case vmModuleTypes.Environment.DEV:return Mt}};var se=class extends Error{constructor(){super(...arguments);N(this,"message","Glacier is unhealthy. Try again later.");}},oe=class{constructor({glacierApiUrl:t}){N(this,"glacierSdk");N(this,"isGlacierHealthy",!0);N(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 se&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof se&&this.setGlacierToUnhealthy(),a}}};var je=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:n=Q.exponential()})=>{let r=0,o=0,i;for(;o<a;){o>0&&await _t(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)},Q=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function _t(e){return new Promise(t=>setTimeout(t,e))}var ke=e=>je({operation:t=>e(t>0),maxRetries:2,backoffPolicy:Q.constant(1),isSuccess:t=>t?.status?.error_code!==429});function We(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function ve(e){let t,a=0;for(t=0;t<e.length;t++){let n=We(e[t]??"");a=a+65027/n;}return (""+a).slice(0,16)}var Pe=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 Oe=coreCoingeckoSdk.getBasicCoingeckoHttp(),w,_,K=class{constructor({storage:t,proxyApiUrl:a}){R(this,w,void 0);R(this,_,void 0);N(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});D(this,w,t),D(this,_,a);}async getSimplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${t?`${ve(t)}-${a.toString()}`:`${a.toString()}`}`;if(n=y(this,w)?.get?.(o),n)return n;try{n=await ke(i=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{n=void 0;}return y(this,w)?.set?.(o,n),n}async getPricesByAddresses(t,a,n=coreCoingeckoSdk.VsCurrencyType.USD){let r,i=`getPricesWithMarketDataByAddresses-${`${ve(t)}-${a}-${n}`}`;if(r=y(this,w)?.get?.(i),r)return r;try{r=await ke(l=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:n,useCoingeckoProxy:l}));}catch{r=void 0;}return y(this,w)?.set?.(i,r),r}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:r=!1}){return r?Pe(y(this,_)).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(Oe,{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 Pe(y(this,_)).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(Oe,{coinIds:t,currencies:a,marketCap:n,vol24:r,change24:o,lastUpdated:i,shouldThrow:s})}};w=new WeakMap,_=new WeakMap;var $t="https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/usd.min.json",Qt="https://latest.currency-api.pages.dev/v1/currencies/usd.min.json",Je=zod.object({date:zod.string(),usd:zod.record(zod.number())});new core.Zodios($t,[{method:"get",path:"",alias:"getExchangeRates",response:Je}]);new core.Zodios(Qt,[{method:"get",path:"",alias:"getExchangeRates",response:Je}]);var $e=e=>Object.keys(e).includes("unlockedUnstaked"),Qe=e=>Object.keys(e).includes("locked");function ie(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 T(e,t){return t===void 0?0:t/10**e}var Ke=({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 g=p[h];if(!g||!g.length){s[h]=0;continue}g.forEach(A=>{let f=(s[h]??0)+Number(A.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(ie(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:T(l,s.lockedStaked),lockedStakeable:T(l,s.lockedStakeable),lockedPlatform:T(l,s.lockedPlatform),atomicMemoryLocked:T(l,s.atomicMemoryLocked),atomicMemoryUnlocked:T(l,s.atomicMemoryUnlocked),unlockedUnstaked:T(l,s.unlockedUnstaked),unlockedStaked:T(l,s.unlockedStaked),pendingStaked:T(l,s.pendingStaked)},marketCap:n,vol24:r,change24:o,coingeckoId:i}};var Ze=({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 g=p[h];if(!g||!g.length){s[h]=0;continue}g.forEach(A=>{let f=(s[h]??0)+Number(A.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(ie(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:T(l,s.unlocked),locked:T(l,s.locked),atomicMemoryUnlocked:T(l,s.atomicMemoryUnlocked),atomicMemoryLocked:T(l,s.atomicMemoryLocked)},marketCap:n,vol24:r,change24:o}};var at=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(x=>x.balances),u=p?await r.getSimplePrice({coinIds:[p],currencies:[i]}):{},h=u?.[p??""]?.[i]?.price??void 0,g=u?.[p??""]?.[i]?.marketCap??void 0,A=u?.[p??""]?.[i]?.vol24??void 0,k=u?.[p??""]?.[i]?.change24??void 0,f;return $e(c)?(f=Ke({balance:c,networkToken:s,priceInCurrency:h,marketCap:g,vol24:A,change24:k,coingeckoId:p??""}),{[l]:{[s.symbol]:f}}):Qe(c)?(f=Ze({balance:c,networkToken:s,priceInCurrency:h,marketCap:g,vol24:A,change24:k,coingeckoId:p??""}),{[l]:{[s.symbol]:f}}):Promise.reject("Incorrect type balance was returned from glacier")};function nt({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,n=Zt__default.default.createHash("sha256").update(a).digest("base64");return "avax:"+ea(n).substring(0,32)}var ea=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var ot=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 ta=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")])]),it=e=>ta.safeParse(e);var lt=async({request:e,network:t,approvalController:a})=>{let n=it(e.params);if(!n.success)return console.error("invalid params",n.error),{error:rpcErrors.rpcErrors.invalidParams({message:"Params are invalid",data:{cause:n.error}})};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}:"signedData"in p?{result:p.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var na=zod.z.object({transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"]),externalIndices:zod.z.number().array().optional(),internalIndices:zod.z.number().array().optional(),utxos:zod.z.string().array().optional()}),pt=e=>na.safeParse(e);var E=({isTestnet:e})=>e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider();var ut=({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 ce=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 ht=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 sa=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,oa=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,ia=e=>e.type===vmModuleTypes.TxType.Export,ca=e=>e.type===vmModuleTypes.TxType.Import,la=e=>e.type===vmModuleTypes.TxType.Base,pa=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,ma=e=>e.type===vmModuleTypes.TxType.CreateChain,da=e=>e.type===vmModuleTypes.TxType.CreateSubnet,ua=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,le=e=>sa(e)||oa(e)||pa(e)||ua(e),pe=e=>ia(e)||ca(e),me=e=>la(e),de=e=>ma(e),ue=e=>da(e);var ga=process.env.GLACIER_API_KEY,yt=async({request:e,network:t,approvalController:a,glacierApiUrl:n})=>{let r=pt(e.params);if(!r.success)return {error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:r.error}})};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=E({isTestnet:c}),h=e.context?.currentAddress;if(!h||typeof h!="string")return {error:rpcErrors.rpcErrors.invalidRequest("No active account found")};let g=ut({utxoHexes:p,vm:m}),A=g.length?g:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:o,chainAlias:i,isTestnet:c,url:n,token:ga}),k;if(i==="C")k=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:d,vm:m,utxos:A,fromAddress:h});else {let J=avalanchejs.utils.unpackWithManager(m,d),C=e.context?.xpubXP;if(!C||typeof C!="string")return {error:rpcErrors.rpcErrors.invalidParams("Request should have xpubXP in context")};let ye=await gt({indices:l??[],chainAlias:i,isChange:!1,isTestnet:c,xpubXP:C}),fe=await gt({indices:s??[],chainAlias:i,isChange:!0,isTestnet:c,xpubXP:C}),vt=[...new Set([h,...ye,...fe])].map(At=>avalanchejs.utils.parse(At)[2]);k=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:J,utxos:A,provider:u,fromAddressBytes:vt});}let f=await coreWalletsSdk.Avalanche.parseAvalancheTx(k,u,h),x=ce(f),W=ht(f);if(f.type==="unknown"||x===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let v={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(k.toJSON()),data:f,vm:m},ge={title:W,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},transactionDetails:pe(x)?x:void 0,stakingDetails:le(x)?x:void 0,chainDetails:me(x)?x:void 0,blockchainDetails:de(x)?x:void 0,subnetDetails:ue(x)?x:void 0,networkFeeSelector:!1},O=await a.requestApproval({request:e,displayData:ge,signingData:v});return "error"in O?{error:O.error}:{result:await ya(u,O,m)}}catch(o){return console.error(o),{error:rpcErrors.rpcErrors.internal("Unable to create transaction")}}},ya=async(e,t,a)=>{if("txHash"in t)return t.txHash;let{txID:n}=await e.issueTxHex(t.signedData,a);return n},gt=async({indices:e,chainAlias:t,isChange:a,isTestnet:n,xpubXP:r})=>{if(a&&t!=="X")return [];let o=E({isTestnet:n});return e.map(i=>coreWalletsSdk.Avalanche.getAddressFromXpub(r,i,o,t,a))};var fa=zod.z.object({from:zod.z.string().describe("Avalanche receiving address"),transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"])}),ft=e=>fa.safeParse(e);var ka=process.env.GLACIER_API_KEY,Tt=async({request:e,network:t,approvalController:a,glacierApiUrl:n})=>{let r=ft(e.params);if(!r.success)return console.error("invalid params",r.error),{error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let{transactionHex:o,chainAlias:i,from:l}=r.data,s=coreWalletsSdk.Avalanche.getVmByChainAlias(i),p=avalanchejs.utils.hexToBuffer(o),m=t.isTestnet??!1,d=E({isTestnet:m}),c=avalanchejs.utils.unpackWithManager(s,p),u=await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:o,chainAlias:i,isTestnet:m,url:n,token:ka}),h;try{let C=avalanchejs.utils.getManagerForVM(s).unpack(p,avalanchejs.avaxSerial.SignedTx),ye=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:c,utxos:u,provider:d,credentials:C.getCredentials()});h=c.getSigIndices().map((fe,Be)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(fe,{unsignedTx:ye,credentialIndex:Be})));}catch{h=c.getSigIndices().map(C=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(C)));}let g=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:c,provider:d,credentials:h,utxos:u}),A=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(l)[2]])[0];if(!A)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let k=g.getSigIndicesForAddress(A);if(!k)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let f=g.getSigIndices();if(!k.some(([J,C])=>f[J]?.includes(C)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let W=await coreWalletsSdk.Avalanche.parseAvalancheTx(g,d,l),v=ce(W);if(W.type==="unknown"||v===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let ge={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:W,vm:s,unsignedTxJson:JSON.stringify(g.toJSON()),ownSignatureIndices:k},O={title:"Sign Transaction",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} requests you to sign the following transaction`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},transactionDetails:pe(v)?v:void 0,stakingDetails:le(v)?v:void 0,chainDetails:me(v)?v:void 0,blockchainDetails:de(v)?v:void 0,subnetDetails:ue(v)?v:void 0},q=await a.requestApproval({request:e,displayData:O,signingData:ge});return "error"in q?{error:q.error}:"signedData"in q?{result:q.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var F,te,j,M,kt=class{constructor({approvalController:t,environment:a}){R(this,F,void 0);R(this,te,void 0);R(this,j,void 0);R(this,M,void 0);let{glacierApiUrl:n,proxyApiUrl:r}=Fe(a);D(this,F,new oe({glacierApiUrl:n})),D(this,te,r),D(this,j,n),D(this,M,t);}getProvider(t){return E({isTestnet:!!t.isTestnet})}getAddress({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r}){return ot({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r})}getBalances({addresses:t,network:a,storage:n,currency:r}){let o=new K({storage:n,proxyApiUrl:y(this,te)});return at({addresses:t,currency:r,network:a,glacierService:y(this,F),tokenService:o})}getManifest(){let t=vmModuleTypes.parseManifest(De);return t.success?t.data:void 0}getNetworkFee(t){return Ie()}getTransactionHistory({network:t,address:a,nextPageToken:n,offset:r}){return Ge({network:t,address:a,nextPageToken:n,offset:r,glacierService:y(this,F)})}getTokens(t){return Promise.resolve([])}async onRpcRequest(t,a){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return lt({request:t,network:a,approvalController:y(this,M)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return Tt({request:t,network:a,approvalController:y(this,M),glacierApiUrl:y(this,j)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return yt({request:t,network:a,approvalController:y(this,M),glacierApiUrl:y(this,j)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:a}){return nt({blockchainId:t,isTestnet:a})}};F=new WeakMap,te=new WeakMap,j=new WeakMap,M=new WeakMap;var os=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,is=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
21
21
 
22
22
  exports.AvalancheModule = kt;
23
23
  exports.isAddPermissionlessDelegatorTx = sa;
@@ -34,7 +34,7 @@ exports.isImportTx = ca;
34
34
  exports.isRemoveSubnetValidatorTx = ua;
35
35
  exports.isStakingDetails = le;
36
36
  exports.isSubnetDetails = ue;
37
- exports.isTokenWithBalanceAVM = os;
38
- exports.isTokenWithBalancePVM = ss;
37
+ exports.isTokenWithBalanceAVM = is;
38
+ exports.isTokenWithBalancePVM = os;
39
39
  //# sourceMappingURL=out.js.map
40
40
  //# sourceMappingURL=index.cjs.map