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