@avalabs/avalanche-module 0.1.5 → 0.1.6
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 +22 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +6 -7
- package/dist/index.js.map +1 -1
- package/package.json +11 -11
package/dist/index.cjs
CHANGED
|
@@ -3,39 +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
|
|
6
|
+
var D = 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
|
|
12
|
+
var Vt = require('crypto');
|
|
13
13
|
var avalanchejs = require('@avalabs/avalanchejs');
|
|
14
|
-
var coreChainsSdk = require('@avalabs/core-chains-sdk');
|
|
15
14
|
|
|
16
15
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
16
|
|
|
18
|
-
var
|
|
19
|
-
var
|
|
17
|
+
var D__default = /*#__PURE__*/_interopDefault(D);
|
|
18
|
+
var Vt__default = /*#__PURE__*/_interopDefault(Vt);
|
|
20
19
|
|
|
21
|
-
var yt=Object.defineProperty;var xt=(e,t,a)=>t in e?yt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var N=(e,t,a)=>(xt(e,typeof t!="symbol"?t+"":t,a),a),ue=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var g=(e,t,a)=>(ue(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)=>(ue(e,t,"write to private field"),n?n.call(e,a):t.set(e,a),a);var he={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 ge(){return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0}}var Te=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,fe=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function J(e,t,a="tx"){return `${e}/${a}/${t}`}function D({amount:e,decimals:t}){return e===void 0?new w__default.default(0):new w__default.default(e/10**t)}function Ae({tx:e,address:t,networkToken:a,chainId:n,explorerUrl:r,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(l=>l.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(l=>l.addresses)||[]),i=kt({tx:e,isTestnet:o,networkToken:a,froms:s}),p=At({tx:e,isTestnet:o,networkToken:a}),m=t.toLowerCase().startsWith("p-")?t.slice(2):t,d=s.has(m);return {hash:e.txHash,isContractCall:!1,isIncoming:!d,isOutgoing:d,from:[...s.values()].join(","),to:[...c.values()].join(","),isSender:d,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:i.toString()}],gasUsed:p.toString(),explorerLink:J(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function kt({tx:e,isTestnet:t,networkToken:a,froms:n}){let r=["ImportTx","ExportTx"].includes(e.txType),o=e.txType==="BaseTx",s=e.emittedUtxos.filter(l=>l.asset.assetId===X(!!t)&&!l.addresses.some(u=>n.has(u))).reduce((l,u)=>l.add(u.asset.amount),new w__default.default(0)),c=e.value.find(l=>l.assetId===X(!!t))?.amount,i=s.gt(new w__default.default(0))?s:c?new w__default.default(c):new w__default.default(0)??new w__default.default(0),p=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,m=e.emittedUtxos.filter(l=>l.asset.assetId===X(!!t)&&(e.txType==="ImportTx"&&l.consumedOnChainId===p||e.txType==="ExportTx"&&l.consumedOnChainId!==p)).reduce((l,u)=>l.add(u.amount),new w__default.default(0)),d=o?i:r?m:e.amountStaked.length===0?ke(e.value,!!t):ke(e.amountStaked,!!t);return D({amount:d?.toNumber(),decimals:a.decimals})}function At({tx:e,isTestnet:t,networkToken:a}){let n=e.amountBurned?.filter(r=>r.assetId===X(!!t)).reduce((r,o)=>r.add(o.amount),new w__default.default(0));return D({amount:n?.toNumber(),decimals:a.decimals})}function ke(e,t){return e.filter(a=>a.assetId===X(t)).reduce((a,n)=>a.add(n.amount),new w__default.default(0))}function X(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function ve({tx:e,address:t,networkToken:a,chainId:n,explorerUrl:r,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(l=>l.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(l=>l.addresses)||[]),i=Pt({tx:e,isTestnet:o,networkToken:a}),p=Ct({isTestnet:o,tx:e,totalAmountCreated:i,networkToken:a}),m=t.toLowerCase().startsWith("x-")?t.slice(2):t,d=s.has(m);return {hash:e.txHash,isContractCall:!1,isIncoming:!d,isOutgoing:d,from:[...s.values()].join(","),to:[...c.values()].join(","),isSender:d,timestamp:e.timestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:i.toString()}],gasUsed:p.toString(),explorerLink:J(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function Pt({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(i=>i.asset.assetId===ne(!!t)&&(e.txType==="ImportTx"&&i.consumedOnChainId===r||e.txType==="ExportTx"&&i.consumedOnChainId!==r)).reduce((i,p)=>i.add(p.asset.amount),new w__default.default(0)),s=e.amountCreated.filter(i=>i.assetId===ne(!!t)).reduce((i,p)=>i.add(p.amount),new w__default.default(0));return D({amount:(n?o:s).toNumber(),decimals:a.decimals})}function Ct({isTestnet:e,tx:t,totalAmountCreated:a,networkToken:n}){let o=t.amountUnlocked.filter(s=>s.assetId===ne(!!e)).reduce((s,c)=>s.add(c.amount),new w__default.default(0)).minus(a);return D({amount:o.toNumber(),decimals:n.decimals})}function ne(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var be=async({address:e,nextPageToken:t,offset:a,network:n,glacierService:r})=>{let{isTestnet:o,networkToken:s,explorerUrl:c,chainId:i}=n;if(!r.isHealthy())return {transactions:[],nextPageToken:""};let m=await r.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:St(e),network:o?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,pageSize:a,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),d=[];return Te(m)&&(d=m.transactions.map(l=>Ae({tx:l,isTestnet:o,address:e,networkToken:s,explorerUrl:c,chainId:i}))),fe(m)&&(d=m.transactions.map(l=>ve({tx:l,isTestnet:o,address:e,networkToken:s,explorerUrl:c,chainId:i}))),{transactions:d,nextPageToken:m.nextPageToken}},St=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"},wt={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Be=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return Bt;case vmModuleTypes.Environment.DEV:return wt}};var K=class extends Error{constructor(){super(...arguments);N(this,"message","Glacier is unhealthy. Try again later.");}},Y=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 K&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof K&&this.setGlacierToUnhealthy(),a}}};var we=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:n=H.exponential()})=>{let r=0,o=0,s;for(;o<a;){o>0&&await Rt(r);try{let i=await e(o);if(t(i))return i}catch(i){s=i;}r=n(o),o++;}let c=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(c)},H=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function Rt(e){return new Promise(t=>setTimeout(t,e))}var re=e=>we({operation:t=>e(t>0),maxRetries:2,backoffPolicy:H.constant(1),isSuccess:t=>t?.status?.error_code!==429});function Ie(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function se(e){let t,a=0;for(t=0;t<e.length;t++){let n=Ie(e[t]??"");a=a+65027/n;}return (""+a).slice(0,16)}var ie=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 Re=coreCoingeckoSdk.getBasicCoingeckoHttp(),I,U,j=class{constructor({storage:t,proxyApiUrl:a}){S(this,I,void 0);S(this,U,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(s=>{n[r]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),n});B(this,I,t),B(this,U,a);}async getSimplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${t?`${se(t)}-${a.toString()}`:`${a.toString()}`}`;if(n=g(this,I)?.get?.(o),n)return n;try{n=await re(s=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{n=void 0;}return g(this,I)?.set?.(o,n),n}async getPricesByAddresses(t,a,n=coreCoingeckoSdk.VsCurrencyType.USD){let r,s=`getPricesWithMarketDataByAddresses-${`${se(t)}-${a}-${n}`}`;if(r=g(this,I)?.get?.(s),r)return r;try{r=await re(c=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:n,useCoingeckoProxy:c}));}catch{r=void 0;}return g(this,I)?.set?.(s,r),r}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:r=!1}){return r?ie(g(this,U)).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(Re,{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:s=!1,useCoingeckoProxy:c=!1,shouldThrow:i=!0}){if(c){let p=await ie(g(this,U)).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(s)}});return this.transformSimplePriceResponse(p,a)}return coreCoingeckoSdk.simplePrice(Re,{coinIds:t,currencies:a,marketCap:n,vol24:r,change24:o,lastUpdated:s,shouldThrow:i})}};I=new WeakMap,U=new WeakMap;var Ne=e=>Object.keys(e).includes("unlockedUnstaked"),De=e=>Object.keys(e).includes("locked");function Z(e){let t=Object.values(e).reduce(function(a,n){let r=n.reduce(function(o,s){let c=Number(s.amount);return o+c},0);return a+r},0);return BigInt(t)}function y(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:s})=>{let c=t.decimals,i={},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 k in p){let v=p[k];if(!v||!v.length){i[k]=0;continue}v.forEach(T=>{let f=(i[k]??0)+Number(T.amount);i[k]=f;});}let m=new coreUtilsSdk.TokenUnit(i.unlockedUnstaked?i.unlockedUnstaked:0n,t.decimals,t.symbol),d=a?Number(m.mul(a).toDisplay(2)):void 0,l=m.toDisplay(),u=new coreUtilsSdk.TokenUnit(Z(e),t.decimals,t.symbol),x=a?Number(u.mul(a).toDisplay(2).replaceAll(",","")):void 0,h=u.toDisplay();return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:u.toSubUnit(),balanceInCurrency:x,balanceDisplayValue:h,balanceCurrencyDisplayValue:x?.toFixed(2),available:m.toSubUnit(),availableInCurrency:d,availableDisplayValue:l,availableCurrencyDisplayValue:d?.toFixed(2),utxos:e,balancePerType:{lockedStaked:y(c,i.lockedStaked),lockedStakeable:y(c,i.lockedStakeable),lockedPlatform:y(c,i.lockedPlatform),atomicMemoryLocked:y(c,i.atomicMemoryLocked),atomicMemoryUnlocked:y(c,i.atomicMemoryUnlocked),unlockedUnstaked:y(c,i.unlockedUnstaked),unlockedStaked:y(c,i.unlockedStaked),pendingStaked:y(c,i.pendingStaked)},marketCap:n,vol24:r,change24:o,coingeckoId:s}};var Ve=({balance:e,networkToken:t,priceInCurrency:a,marketCap:n,vol24:r,change24:o,coingeckoId:s})=>{let c=t.decimals,i={},p={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let x in p){let h=p[x];if(!h||!h.length){i[x]=0;continue}h.forEach(k=>{let T=(i[x]??0)+Number(k.amount);i[x]=T;});}let m=new coreUtilsSdk.TokenUnit(Z(e),t.decimals,t.symbol),d=m.toDisplay(),l=a?m.mul(a).toDisplay(2):void 0,u=l?Number(l.replaceAll(",","")):void 0;return {...t,coingeckoId:s,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:m.toSubUnit(),balanceInCurrency:u,balanceDisplayValue:d,balanceCurrencyDisplayValue:l,utxos:e,balancePerType:{unlocked:y(c,i.unlocked),locked:y(c,i.locked),atomicMemoryUnlocked:y(c,i.atomicMemoryUnlocked),atomicMemoryLocked:y(c,i.atomicMemoryLocked)},marketCap:n,vol24:r,change24:o}};var Le=async({addresses:e,currency:t,network:a,glacierService:n,tokenService:r})=>{if(!n.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let s=t.toLowerCase(),c=e[0]??"",i=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,l=await n.getChainBalance({blockchainId:m,network:d,addresses:e.join(",")}).then(R=>R.balances),u=p?await r.getSimplePrice({coinIds:[p],currencies:[s]}):{},x=u?.[p??""]?.[s]?.price??void 0,h=u?.[p??""]?.[s]?.marketCap??void 0,k=u?.[p??""]?.[s]?.vol24??void 0,v=u?.[p??""]?.[s]?.change24??void 0,T;return Ne(l)?(T=Ee({balance:l,networkToken:i,priceInCurrency:x,marketCap:h,vol24:k,change24:v,coingeckoId:p??""}),{[c]:{[i.symbol]:T}}):De(l)?(T=Ve({balance:l,networkToken:i,priceInCurrency:x,marketCap:h,vol24:k,change24:v,coingeckoId:p??""}),{[c]:{[i.symbol]:T}}):Promise.reject("Incorrect type balance was returned from glacier")};function Xe({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,n=Gt__default.default.createHash("sha256").update(a).digest("base64");return "avax:"+jt(n).substring(0,32)}var jt=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var je=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 Ft=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=>Ft.safeParse(e);var We=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,s=Buffer.from(r,"utf-8").toString("hex"),c={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE,data:s,accountIndex:o},i={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:i,signingData:c});return "error"in p?{error:p.error}:{result:p.result}};var qt=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()}),Oe=e=>qt.safeParse(e);var le=({isTestnet:e})=>e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider();var Je=({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 Qe=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 ze=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 Jt=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,Qt=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,zt=e=>e.type===vmModuleTypes.TxType.Export,Kt=e=>e.type===vmModuleTypes.TxType.Import,Yt=e=>e.type===vmModuleTypes.TxType.Base,Zt=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,ea=e=>e.type===vmModuleTypes.TxType.CreateChain,ta=e=>e.type===vmModuleTypes.TxType.CreateSubnet,aa=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,Ke=e=>Jt(e)||Qt(e)||Zt(e)||aa(e),Ye=e=>zt(e)||Kt(e),Ze=e=>Yt(e),et=e=>ea(e),tt=e=>ta(e);var nt=(e,t)=>{switch(e){case"P":return t.isTestnet?ra:na;case"X":return t.isTestnet?oa:sa;default:return t}},na={...coreChainsSdk.AVALANCHE_XP_NETWORK,chainId:coreChainsSdk.ChainId.AVALANCHE_P,isTestnet:!1,vmName:vmModuleTypes.NetworkVMType.PVM,chainName:"Avalanche (P-Chain)",logoUri:"https://images.ctfassets.net/gcj8jwzm6086/42aMwoCLblHOklt6Msi6tm/1e64aa637a8cead39b2db96fe3225c18/pchain-square.svg",networkToken:{...coreChainsSdk.AVALANCHE_XP_NETWORK.networkToken,logoUri:"https://glacier-api.avax.network/proxy/chain-assets/cb14a1f/chains/43114/token-logo.png"},explorerUrl:"https://subnets.avax.network/p-chain"},ra={...coreChainsSdk.AVALANCHE_XP_TEST_NETWORK,chainId:coreChainsSdk.ChainId.AVALANCHE_TEST_P,isTestnet:!0,vmName:vmModuleTypes.NetworkVMType.PVM,chainName:"Avalanche (P-Chain)",logoUri:"https://images.ctfassets.net/gcj8jwzm6086/42aMwoCLblHOklt6Msi6tm/1e64aa637a8cead39b2db96fe3225c18/pchain-square.svg",networkToken:{...coreChainsSdk.AVALANCHE_XP_TEST_NETWORK.networkToken,logoUri:"https://glacier-api.avax.network/proxy/chain-assets/cb14a1f/chains/43114/token-logo.png"},explorerUrl:"https://subnets-test.avax.network/p-chain"},sa={...coreChainsSdk.AVALANCHE_XP_NETWORK,isTestnet:!1,chainId:coreChainsSdk.ChainId.AVALANCHE_X,chainName:"Avalanche (X-Chain)",logoUri:"https://images.ctfassets.net/gcj8jwzm6086/5xiGm7IBR6G44eeVlaWrxi/1b253c4744a3ad21a278091e3119feba/xchain-square.svg",explorerUrl:"https://subnets.avax.network/x-chain"},oa={...coreChainsSdk.AVALANCHE_XP_TEST_NETWORK,isTestnet:!0,chainId:coreChainsSdk.ChainId.AVALANCHE_TEST_X,chainName:"Avalanche (X-Chain)",logoUri:"https://images.ctfassets.net/gcj8jwzm6086/5xiGm7IBR6G44eeVlaWrxi/1b253c4744a3ad21a278091e3119feba/xchain-square.svg",explorerUrl:"https://subnets-test.avax.network/x-chain"};var ca=process.env.GLACIER_API_KEY,st=async({request:e,network:t,approvalController:a,glacierApiUrl:n})=>{let r=Oe(e.params);if(!r.success)return {error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};try{let{transactionHex:o,chainAlias:s,externalIndices:c,internalIndices:i,utxos:p}=r.data,m=nt(s,t),d=coreWalletsSdk.Avalanche.getVmByChainAlias(s),l=avalanchejs.utils.hexToBuffer(o),u=m.isTestnet??!1,x=le({isTestnet:u}),h=e.context?.currentAddress;if(!h||typeof h!="string")return {error:rpcErrors.rpcErrors.invalidRequest("No active account found")};let k=Je({utxoHexes:p,vm:d}),v=k.length?k:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:o,chainAlias:s,isTestnet:u,url:n,token:ca}),T;if(s==="C")T=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:l,vm:d,utxos:v,fromAddress:h});else {let mt=avalanchejs.utils.unpackWithManager(d,l),$=e.context?.xpubXP;if(!$||typeof $!="string")return {error:rpcErrors.rpcErrors.invalidParams("Request should have xpubXP in context")};let dt=await rt({indices:c??[],chainAlias:s,isChange:!1,isTestnet:u,xpubXP:$}),ut=await rt({indices:i??[],chainAlias:s,isChange:!0,isTestnet:u,xpubXP:$}),ht=[...new Set([h,...dt,...ut])].map(gt=>avalanchejs.utils.parse(gt)[2]);T=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:mt,utxos:v,provider:x,fromAddressBytes:ht});}let R=await coreWalletsSdk.Avalanche.parseAvalancheTx(T,x,h),f=Qe(R),ct=ze(R);if(R.type==="unknown"||f===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let lt={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(T.toJSON()),data:R,vm:d},pt={title:ct,network:{chainId:m.chainId,name:m.chainName,logoUri:m.logoUri},transactionDetails:Ye(f)?f:void 0,stakingDetails:Ke(f)?f:void 0,chainDetails:Ze(f)?f:void 0,blockchainDetails:et(f)?f:void 0,subnetDetails:tt(f)?f:void 0,networkFeeSelector:!1},te=await a.requestApproval({request:e,displayData:pt,signingData:lt});return "error"in te?{error:te.error}:{result:te.result}}catch(o){return console.error(o),{error:rpcErrors.rpcErrors.internal("Unable to create transaction")}}},rt=async({indices:e,chainAlias:t,isChange:a,isTestnet:n,xpubXP:r})=>{if(a&&t!=="X")return [];let o=le({isTestnet:n});return e.map(s=>coreWalletsSdk.Avalanche.getAddressFromXpub(r,s,o,t,a))};var _,O,q,L,it=class{constructor({approvalController:t,environment:a}){S(this,_,void 0);S(this,O,void 0);S(this,q,void 0);S(this,L,void 0);let{glacierApiUrl:n,proxyApiUrl:r}=Be(a);B(this,_,new Y({glacierApiUrl:n})),B(this,O,r),B(this,q,n),B(this,L,t);}getAddress({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r}){return je({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r})}getBalances({addresses:t,network:a,storage:n,currency:r}){let o=new j({storage:n,proxyApiUrl:g(this,O)});return Le({addresses:t,currency:r,network:a,glacierService:g(this,_),tokenService:o})}getManifest(){let t=vmModuleTypes.parseManifest(he);return t.success?t.data:void 0}getNetworkFee(t){return ge()}getTransactionHistory({network:t,address:a,nextPageToken:n,offset:r}){return be({network:t,address:a,nextPageToken:n,offset:r,glacierService:g(this,_)})}getTokens(t){return Promise.resolve([])}async onRpcRequest(t,a){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return We({request:t,network:a,approvalController:g(this,L)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return st({request:t,network:a,approvalController:g(this,L),glacierApiUrl:g(this,q)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:a}){return Xe({blockchainId:t,isTestnet:a})}};_=new WeakMap,O=new WeakMap,q=new WeakMap,L=new WeakMap;var Dr=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,Ur=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
|
|
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;
|
|
22
21
|
|
|
23
|
-
exports.AvalancheModule =
|
|
24
|
-
exports.isAddPermissionlessDelegatorTx =
|
|
25
|
-
exports.isAddPermissionlessValidatorTx =
|
|
26
|
-
exports.isAddSubnetValidatorTx =
|
|
27
|
-
exports.isBaseTx =
|
|
28
|
-
exports.isBlockchainDetails =
|
|
29
|
-
exports.isChainDetails =
|
|
30
|
-
exports.isCreateChainTx =
|
|
31
|
-
exports.isCreateSubnetTx =
|
|
32
|
-
exports.isExportImportTxDetails =
|
|
33
|
-
exports.isExportTx =
|
|
34
|
-
exports.isImportTx =
|
|
35
|
-
exports.isRemoveSubnetValidatorTx =
|
|
36
|
-
exports.isStakingDetails =
|
|
37
|
-
exports.isSubnetDetails =
|
|
38
|
-
exports.isTokenWithBalanceAVM =
|
|
39
|
-
exports.isTokenWithBalancePVM =
|
|
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;
|
|
40
39
|
//# sourceMappingURL=out.js.map
|
|
41
40
|
//# sourceMappingURL=index.cjs.map
|