@avalabs/avalanche-module 3.1.2 → 3.1.4
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 +27 -27
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -8,40 +8,40 @@ var M = require('big.js');
|
|
|
8
8
|
var coreCoingeckoSdk = require('@avalabs/core-coingecko-sdk');
|
|
9
9
|
var zod = require('zod');
|
|
10
10
|
var coreUtilsSdk = require('@avalabs/core-utils-sdk');
|
|
11
|
-
var
|
|
11
|
+
var Zr = require('crypto');
|
|
12
12
|
var avalanchejs = require('@avalabs/avalanchejs');
|
|
13
13
|
|
|
14
14
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
15
|
|
|
16
16
|
var M__default = /*#__PURE__*/_interopDefault(M);
|
|
17
|
-
var
|
|
17
|
+
var Zr__default = /*#__PURE__*/_interopDefault(Zr);
|
|
18
18
|
|
|
19
|
-
var Dr=Object.defineProperty;var kr=(e,t,r)=>t in e?Dr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var F=(e,t,r)=>(kr(e,typeof t!="symbol"?t+"":t,r),r),gt=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var A=(e,t,r)=>(gt(e,t,"read from private field"),r?r.call(e):t.get(e)),R=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r);},w=(e,t,r,a)=>(gt(e,t,"write to private field"),a?a.call(e,r):t.set(e,r),r);var ft={name:"Avalanche",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/index.js",packageName:"@avalabs/avalanche-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:["avax:8aDU0Kqh-5d23op-B-r-4YbQFRbsgF9a","avax:YRLfeDBJpfEqUWe2FYR1OpXsnDDZeKWd","avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo","avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG","avax:imji8papUf2EhV3le337w1vgFauqkJg-","avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl","avax:N5PeRoKwDDREF0awn2GPsb9sHnGRzdEX"],namespaces:["avax"]},cointype:"9000",permissions:{rpc:{dapps:!0,methods:["avalanche_sendTransaction","avalanche_signTransaction","avalanche_signMessage"],nonRestrictedMethods:[]}},manifestVersion:"0.1"};var I=async({isTestnet:e})=>e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider();async function yt({isTestnet:e,vmName:t}){let r=await I({isTestnet:e});if(t===vmModuleTypes.NetworkVMType.AVM)return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0};let{price:a}=await r.getApiP().getFeeState(),n=100/Number(a)/100,o=Math.min(1,Math.max(n,.15)),s=Math.min(1,Math.max(n*2,.3)),i=1+o,c=1+s;return {baseFee:a,low:{maxFeePerGas:a},medium:{maxFeePerGas:a*BigInt(Math.round(100*i))/100n},high:{maxFeePerGas:a*BigInt(Math.round(100*c))/100n},isFixedFee:!1}}var vt=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,It=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function J(e,t,r="tx"){return `${e}/${r}/${t}`}function O({amount:e,decimals:t}){return e===void 0?new M__default.default(0):new M__default.default(e/10**t)}function kt({tx:e,address:t,networkToken:r,chainId:a,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(d=>d.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(d=>d.addresses)||[]),c=Cr({tx:e,isTestnet:o,networkToken:r,froms:s}),l=Nr({tx:e,isTestnet:o,networkToken:r}),m=t.toLowerCase().startsWith("p-")?t.slice(2):t,p=s.has(m);return {hash:e.txHash,isContractCall:!1,isIncoming:!p,isOutgoing:p,from:[...s.values()].join(","),to:[...i.values()].join(","),isSender:p,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:c.toString()}],gasUsed:l.toString(),explorerLink:J(n??"",e.txHash,"tx"),txType:e.txType,chainId:a.toString()}}function Cr({tx:e,isTestnet:t,networkToken:r,froms:a}){let n=["ImportTx","ExportTx"].includes(e.txType),o=e.txType==="BaseTx",s=e.emittedUtxos.filter(d=>d.asset.assetId===le(!!t)&&!d.addresses.some(g=>a.has(g))).reduce((d,g)=>d.add(g.asset.amount),new M__default.default(0)),i=e.value.find(d=>d.assetId===le(!!t))?.amount,c=s.gt(new M__default.default(0))?s:i?new M__default.default(i):new M__default.default(0)??new M__default.default(0),l=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,m=e.emittedUtxos.filter(d=>d.asset.assetId===le(!!t)&&(e.txType==="ImportTx"&&d.consumedOnChainId===l||e.txType==="ExportTx"&&d.consumedOnChainId!==l)).reduce((d,g)=>d.add(g.amount),new M__default.default(0)),p=o?c:n?m:e.amountStaked.length===0?Dt(e.value,!!t):Dt(e.amountStaked,!!t);return O({amount:p?.toNumber(),decimals:r.decimals})}function Nr({tx:e,isTestnet:t,networkToken:r}){let a=e.amountBurned?.filter(n=>n.assetId===le(!!t)).reduce((n,o)=>n.add(o.amount),new M__default.default(0));return O({amount:a?.toNumber(),decimals:r.decimals})}function Dt(e,t){return e.filter(r=>r.assetId===le(t)).reduce((r,a)=>r.add(a.amount),new M__default.default(0))}function le(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function St({tx:e,address:t,networkToken:r,chainId:a,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(f=>f.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(f=>f.addresses)||[]),c=t.toLowerCase().startsWith("x-")?t.slice(2):t,l=["ImportTx","ExportTx"].includes(e.txType),{amount:m,isSender:p}=wr({tx:e,isTestnet:o,networkToken:r,chainAddress:c,isImportExport:l}),d=Vr({isTestnet:o,tx:e,networkToken:r}),g=l?m.toString():p?m.minus(d).toString():m.toString();return {hash:e.txHash,isContractCall:!1,isIncoming:!p,isOutgoing:p,from:[...s.values()].join(","),to:[...i.values()].join(","),isSender:p,timestamp:e.timestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:g}],gasUsed:d.toString(),explorerLink:J(n??"",e.txHash,"tx"),txType:e.txType,chainId:a.toString()}}function wr({tx:e,isTestnet:t,networkToken:r,chainAddress:a,isImportExport:n}){if(n){let l=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,m=e.emittedUtxos.filter(p=>p.asset.assetId===me(!!t)&&(e.txType==="ImportTx"&&p.consumedOnChainId===l||e.txType==="ExportTx"&&p.consumedOnChainId!==l)).reduce((p,d)=>p.add(d.asset.amount),new M__default.default(0));return {amount:O({amount:m.toNumber(),decimals:r.decimals}),isSender:!0}}let o=e.consumedUtxos.filter(l=>l.asset.assetId===me(!!t)&&l.addresses.includes(a)).reduce((l,m)=>l.add(m.asset.amount),new M__default.default(0)),s=e.emittedUtxos.filter(l=>l.asset.assetId===me(!!t)&&l.addresses.includes(a)).reduce((l,m)=>l.add(m.asset.amount),new M__default.default(0)),i=o.gte(s),c=i?o.minus(s):s.minus(o);return {amount:O({amount:c.toNumber(),decimals:r.decimals}),isSender:i}}function Vr({isTestnet:e,tx:t,networkToken:r}){let a=t.amountUnlocked.filter(s=>s.assetId===me(!!e)).reduce((s,i)=>s.add(i.amount),new M__default.default(0)),n=t.amountCreated.filter(s=>s.assetId===me(!!e)).reduce((s,i)=>s.add(i.amount),new M__default.default(0)),o=a.minus(n);return O({amount:o.toNumber(),decimals:r.decimals})}function me(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var Ct=async({address:e,nextPageToken:t,offset:r,network:a,glacierService:n})=>{let{isTestnet:o,networkToken:s,explorerUrl:i,chainId:c}=a;if(!n.isHealthy())return {transactions:[],nextPageToken:""};let m=a.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,p=await n.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:Er(e),network:m,pageSize:r,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),d=[];return vt(p)&&(d=p.transactions.map(g=>kt({tx:g,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:c}))),It(p)&&(d=p.transactions.map(g=>St({tx:g,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:c}))),{transactions:d,nextPageToken:p.nextPageToken}},Er=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var Mr={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Lr={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Rt=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return Mr;case vmModuleTypes.Environment.DEV:return Lr}};var X=async({operation:e,isSuccess:t,maxRetries:r=10,backoffPolicy:a=z.exponential()})=>{let n=0,o=0,s;for(;o<r;){o>0&&await _r(n);try{let c=await e(o);if(t(c))return c}catch(c){s=c;}n=a(o),o++;}let i=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(i)},z=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return r=>t*1e3}static constantMs(t){return r=>t}static linearThenExponential(t,r){return a=>{if(a<t)return (a+1)*r;let n=a-t+1,o=t*r,s=2*r*(Math.pow(2,n)-1);return o+s}}};function _r(e){return new Promise(t=>setTimeout(t,e))}var Fe=e=>X({operation:t=>e(t>0),maxRetries:2,backoffPolicy:z.constant(1),isSuccess:t=>t?.status?.error_code!==429});function wt(e){let t,r=0;for(t=0;t<e.length;t++)r+=e.charCodeAt(t)*(t+1);return r}function Oe(e){let t,r=0;for(t=0;t<e.length;t++){let a=wt(e[t]??"");r=r+65027/a;}return (""+r).slice(0,16)}async function H(e,t){let r=await fetch(...e);if(!r.ok)throw new Error(`Request failed with status ${r.status}`);let a=await r.json();return t.parse(a)}var de=class{constructor(t){this.proxyApiUrl=t;}simplePrice(t){let r=new URLSearchParams(t);return H([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(t){let{id:r,...a}=t,n=new URLSearchParams(a);return H([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${n}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}};var Ur=zod.z.array(zod.z.object({internalId:zod.z.string(),id:zod.z.string(),symbol:zod.z.string(),name:zod.z.string(),image:zod.z.string().optional().nullable(),current_price:zod.z.number().optional().nullable(),price_change_percentage_24h:zod.z.number().optional().nullable(),market_cap:zod.z.number().optional().nullable(),total_volume:zod.z.number().optional().nullable(),platforms:zod.z.record(zod.z.string(),zod.z.string())})),be=class{constructor(t){this.proxyApiUrl=t;}watchlistToken(t){let r=new URLSearchParams(t);return H([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],Ur)}};var Bt=coreCoingeckoSdk.getBasicCoingeckoHttp(),L,G,ue=class{constructor({storage:t,proxyApiUrl:r}){R(this,L,void 0);R(this,G,void 0);F(this,"transformSimplePriceResponse",(t,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let a={};return Object.keys(t).forEach(n=>{let o=t[n];a[n]={},r.forEach(s=>{a[n]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),a});w(this,L,t),w(this,G,r);}async getWatchlistDataForToken({tokenDetails:t,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new be(A(this,G)).watchlistToken({tokens:t.symbol,currency:r})).filter(o=>t.isNative?o.internalId===`NATIVE-${t.symbol.toLowerCase()}`:o.platforms[t.caip2Id]===t.address)[0];return n?{priceInCurrency:n.current_price??0,change24:n.price_change_percentage_24h??0,marketCap:n.market_cap??0,vol24:n.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:t=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let a,o=`getSimplePrice-${t?`${Oe(t)}-${r.toString()}`:`${r.toString()}`}`;if(a=A(this,L)?.get?.(o),a)return a;try{a=await Fe(s=>this.simplePrice({coinIds:t,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{a=void 0;}return A(this,L)?.set?.(o,a),a}async getPricesByAddresses(t,r,a=coreCoingeckoSdk.VsCurrencyType.USD){let n,s=`getPricesWithMarketDataByAddresses-${`${Oe(t)}-${r}-${a}`}`;if(n=A(this,L)?.get?.(s),n)return n;try{n=await Fe(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:t,currency:a,useCoingeckoProxy:i}));}catch(i){console.error(i),n=void 0;}return A(this,L)?.set?.(s,n),n}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:r,currency:a=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:n=!1}){if(n){let o=await new de(A(this,G)).simplePriceByContractAddresses({id:t,contract_addresses:r,vs_currencies:[a],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(o,[a])}return coreCoingeckoSdk.simpleTokenPrice(Bt,{assetPlatformId:t,tokenAddresses:r,currencies:[a],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:a=!1,vol24:n=!1,change24:o=!1,lastUpdated:s=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await new de(A(this,G)).simplePrice({ids:t,vs_currencies:r,include_market_cap:a,include_24hr_vol:n,include_24hr_change:o,include_last_updated_at:s});return this.transformSimplePriceResponse(l,r)}return coreCoingeckoSdk.simplePrice(Bt,{coinIds:t,currencies:r,marketCap:a,vol24:n,change24:o,lastUpdated:s,shouldThrow:c})}};L=new WeakMap,G=new WeakMap;zod.object({date:zod.string(),usd:zod.record(zod.number())});var u=(e,t,r,a)=>({label:e,type:vmModuleTypes.DetailItemType.CURRENCY,value:t,maxDecimals:r,symbol:a}),x=(e,t,r="horizontal")=>({label:e,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:t});var ge=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t});var y=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t});var N=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t});var W=({name:e,version:t})=>{switch(e){case vmModuleTypes.AppName.CORE_MOBILE_IOS:case vmModuleTypes.AppName.CORE_MOBILE_ANDROID:case vmModuleTypes.AppName.CORE_WEB:case vmModuleTypes.AppName.CORE_EXTENSION:case vmModuleTypes.AppName.EXPLORER:return {"x-application-name":e,"x-application-version":t};case vmModuleTypes.AppName.OTHER:return}};var Et=process.env.GLACIER_API_KEY;var j=()=>Et;var $r={rltoken:j()},fe=class extends glacierSdk.FetchHttpRequest{constructor(t){super(t);}request(t){let r={...$r,...t.query||{}},a={...t,query:Object.keys(r).length>0?r:void 0};return super.request(a)}};var Pe=class extends Error{constructor(){super(...arguments);F(this,"message","Glacier is unhealthy. Try again later.");}},Ce=class{constructor({glacierApiUrl:t,headers:r}){F(this,"glacierSdk");F(this,"isGlacierHealthy",!0);F(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:t,HEADERS:r},fe);}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async listLatestPrimaryNetworkTransactions(t){try{return this.glacierSdk.primaryNetworkTransactions.listLatestPrimaryNetworkTransactions(t)}catch(r){throw r instanceof Pe&&this.setGlacierToUnhealthy(),r}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(r){throw r instanceof Pe&&this.setGlacierToUnhealthy(),r}}};var Mt=e=>Object.keys(e).includes("unlockedUnstaked"),Lt=e=>Object.keys(e).includes("locked");function Ne(e,t){let r=Object.values(e).reduce(function(a,n){let o=n.reduce(function(s,i){if(i.assetId!==t)return s;let c=Number(i.amount);return s+c},0);return a+o},0);return BigInt(r)}var Ut=({balance:e,networkToken:t,priceInCurrency:r,marketCap:a,vol24:n,change24:o,coingeckoId:s,avaxAssetId:i})=>{let c={},l={unlockedUnstaked:e.unlockedUnstaked,unlockedStaked:e.unlockedStaked,pendingStaked:e.pendingStaked,lockedStaked:e.lockedStaked,lockedStakeable:e.lockedStakeable,lockedPlatform:e.lockedPlatform,atomicMemoryLocked:e.atomicMemoryLocked,atomicMemoryUnlocked:e.atomicMemoryUnlocked};for(let f in l){let T=l[f];if(!T||!T.length){c[f]=0n;continue}T.forEach(D=>{if(D.assetId!==i)return;let C=(c[f]??0n)+BigInt(D.amount);c[f]=C;});}let m=new coreUtilsSdk.TokenUnit(c.unlockedUnstaked?c.unlockedUnstaked:0n,t.decimals,t.symbol),p=r?m.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,d=new coreUtilsSdk.TokenUnit(Ne(e,i),t.decimals,t.symbol),g=r?d.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:r,balance:d.toSubUnit(),balanceInCurrency:g,balanceDisplayValue:d.toDisplay(),balanceCurrencyDisplayValue:g?.toFixed(2),available:m.toSubUnit(),availableInCurrency:p,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:p?.toFixed(2),utxos:e,balancePerType:{lockedStaked:c.lockedStaked,lockedStakeable:c.lockedStakeable,lockedPlatform:c.lockedPlatform,atomicMemoryLocked:c.atomicMemoryLocked,atomicMemoryUnlocked:c.atomicMemoryUnlocked,unlockedUnstaked:c.unlockedUnstaked,unlockedStaked:c.unlockedStaked,pendingStaked:c.pendingStaked},marketCap:a,vol24:n,change24:o,coingeckoId:s}};var Ot=({balance:e,networkToken:t,priceInCurrency:r,marketCap:a,vol24:n,change24:o,coingeckoId:s,avaxAssetId:i})=>{let c={},l={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let f in l){let T=l[f];if(!T||!T.length){c[f]=0n;continue}T.forEach(D=>{if(D.assetId!==i)return;let C=(c[f]??0n)+BigInt(D.amount);c[f]=C;});}let m=new coreUtilsSdk.TokenUnit(c.unlocked?c.unlocked:0n,t.decimals,t.symbol),p=r?m.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,d=new coreUtilsSdk.TokenUnit(Ne(e,i),t.decimals,t.symbol),g=r!==void 0?d.mul(r):void 0;return {...t,coingeckoId:s,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:r,balance:d.toSubUnit(),balanceInCurrency:g?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:d.toDisplay(),balanceCurrencyDisplayValue:g?.toDisplay({fixedDp:2}),available:m.toSubUnit(),availableInCurrency:p,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:p?.toFixed(2),utxos:e,balancePerType:{unlocked:c.unlocked,locked:c.locked,atomicMemoryUnlocked:c.atomicMemoryUnlocked,atomicMemoryLocked:c.atomicMemoryLocked},marketCap:a,vol24:n,change24:o}};var Gt=async({addresses:e,currency:t,network:r,glacierService:a,tokenService:n})=>{let o=await I({isTestnet:!!r.isTestnet});if(!a.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let i=t.toLowerCase(),c=e[0]??"",l=r.networkToken,m=r.pricingProviders?.coingecko.nativeTokenId,p=r.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,d=r.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,g=await a.getChainBalance({blockchainId:p,network:d,addresses:e.join(",")}).then(D=>D.balances),f=await n.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:i}),T;return Mt(g)?(T=Ut({balance:g,networkToken:l,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:m??"",avaxAssetId:o.getContext().avaxAssetID}),{[c]:{[l.symbol]:T}}):Lt(g)?(T=Ot({balance:g,networkToken:l,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:m??"",avaxAssetId:o.getContext().avaxAssetID}),{[c]:{[l.symbol]:T}}):Promise.reject("Incorrect type balance was returned from glacier")};function Wt({blockchainId:e,isTestnet:t}){let r=t?"fuji"+e:e,a=Qr__default.default.createHash("sha256").update(r).digest("base64");return "avax:"+Zr(a).substring(0,32)}var Zr=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var $t=async({accountIndex:e,xpubXP:t,walletType:r,network:a})=>{let n=!!a?.isTestnet;if(t===void 0)throw rpcErrors.rpcErrors.invalidParams("xpubXP is required to get address");let o=await I({isTestnet:n}),s;switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:{s=coreWalletsSdk.Avalanche.getAddressPublicKeyFromXpub(t,e);break}case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{s=Buffer.from(t,"hex");break}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}return {[vmModuleTypes.NetworkVMType.AVM]:o.getAddress(s,"X"),[vmModuleTypes.NetworkVMType.PVM]:o.getAddress(s,"P")}};var ta=zod.z.union([zod.z.tuple([zod.z.string()]).describe("message to sign"),zod.z.tuple([zod.z.string().describe("message to sign"),zod.z.number().nonnegative().describe("account index")])]),Kt=e=>ta.safeParse(e);var zt=async({request:e,network:t,approvalController:r})=>{let a=Kt(e.params);if(!a.success)return console.error("invalid params",a.error),{error:rpcErrors.rpcErrors.invalidParams({message:"Params are invalid",data:{cause:a.error}})};let[n,o]=a.data,s=Buffer.from(n,"utf-8").toString("hex"),i={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE,data:s,accountIndex:o},c={title:"Sign Message",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} is requesting to sign the following message`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:[{title:"Message",items:[n]}]},l=await r.requestApproval({request:e,displayData:c,signingData:i});return "error"in l?{error:l.error}:"signedData"in l?{result:l.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var aa=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()}),Yt=e=>aa.safeParse(e);var Re=({utxoHexes:e=[],vm:t})=>{try{let r=avalanchejs.utils.getManagerForVM(t).getDefaultCodec();return e.map(a=>{let n=avalanchejs.utils.hexToBuffer(a);return avalanchejs.Utxo.fromBytes(n,r)[0]})}catch{return []}};var we=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.ConvertSubnetToL1:case vmModuleTypes.TxType.SetL1ValidatorWeight:case vmModuleTypes.TxType.DisableL1Validator:case vmModuleTypes.TxType.IncreaseL1ValidatorBalance:case vmModuleTypes.TxType.RegisterL1Validator:return {...e,chain:e.chain};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 Zt=e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:return "Do you want to add this delegator?";case vmModuleTypes.TxType.AddPermissionlessValidator:return "Do you want to add this validator?";case vmModuleTypes.TxType.Export:return "Do you approve this export?";case vmModuleTypes.TxType.Import:return "Do you approve this import?";case vmModuleTypes.TxType.Base:return "Do you approve this transaction?";case vmModuleTypes.TxType.AddSubnetValidator:return "Do you want to add this subnet validator?";case vmModuleTypes.TxType.CreateChain:return "Do you want to create this chain?";case vmModuleTypes.TxType.CreateSubnet:return "Do you want to create this subnet?";case vmModuleTypes.TxType.RemoveSubnetValidator:return "Do you want to remove this subnet validator?";case vmModuleTypes.TxType.ConvertSubnetToL1:return "Do you want to convert this subnet?";case vmModuleTypes.TxType.DisableL1Validator:return "Do you want to disable this validator?";case vmModuleTypes.TxType.IncreaseL1ValidatorBalance:return "Do you want to increase this validator balance?";case vmModuleTypes.TxType.RegisterL1Validator:return "Do you want to register this validator?";case vmModuleTypes.TxType.SetL1ValidatorWeight:return "Do you want to set this validator weight?";default:return "Sign Message"}};var Xe=async({indices:e,chainAlias:t,isChange:r,isTestnet:a,xpubXP:n,externalXPAddresses:o})=>{if(r&&t!=="X")return [];if(n){let s=await I({isTestnet:a});return e.map(i=>coreWalletsSdk.Avalanche.getAddressFromXpub(n,i,s,t,r))}return o&&Array.isArray(o)?e.map(i=>o.find(c=>c.index===i)).filter(i=>i!==void 0).map(i=>i.address):[]};var He=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,Ge=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,We=e=>e.type===vmModuleTypes.TxType.Export,je=e=>e.type===vmModuleTypes.TxType.Import,sa=e=>e.type===vmModuleTypes.TxType.Base,qe=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,ia=e=>e.type===vmModuleTypes.TxType.CreateChain,ca=e=>e.type===vmModuleTypes.TxType.CreateSubnet,$e=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,er=e=>e.type===vmModuleTypes.TxType.ConvertSubnetToL1,tr=e=>e.type===vmModuleTypes.TxType.DisableL1Validator,rr=e=>e.type===vmModuleTypes.TxType.IncreaseL1ValidatorBalance,ar=e=>e.type===vmModuleTypes.TxType.RegisterL1Validator,nr=e=>e.type===vmModuleTypes.TxType.SetL1ValidatorWeight,es=e=>He(e)||Ge(e)||qe(e)||$e(e),ts=e=>We(e)||je(e),or=e=>sa(e),sr=e=>ia(e),ir=e=>ca(e);var V=(a=>(a.AVM="X-Chain",a.PVM="P-Chain",a.EVM="C-Chain",a))(V||{});function Ve(e){return e===coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID}var Ke=(e,t)=>{let r=[],{txFee:a,nodeID:n,start:o,end:s,stake:i,subnetID:c}=e,l=[y("Node ID",n),Ve(c)?x("Subnet ID","Primary Network"):y("Subnet ID",c),u("Stake Amount",i,9,t),N("Start Date",o),N("End Date",s)];return r.push({title:"Staking Details",items:l}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var Je=(e,t)=>{let r=[],{txFee:a,nodeID:n,delegationFee:o,start:s,end:i,stake:c,subnetID:l,signature:m,publicKey:p}=e,d=[y("Node ID",n),Ve(l)?x("Subnet ID","Primary Network"):y("Subnet ID",l)];return p&&m&&d.push(y("Public Key",p),y("Proof",m)),d.push(u("Stake Amount",c,9,t),x("Delegation Fee",`${o/1e4} %`),N("Start Date",s),N("End Date",i)),r.push({title:"Staking Details",items:d}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var ze=(e,t)=>{let r=[],{txFee:a,nodeID:n,start:o,end:s,subnetID:i}=e,c=[y("Subnet ID",i),y("Node ID",n),N("Start Date",o),N("End Date",s)];return r.push({title:"Staking Details",items:c}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var Ye=(e,t)=>{let r=[],{txFee:a,chainID:n,managerAddress:o,subnetID:s,validators:i}=e,c=[y("Subnet ID",s),y("Chain ID",n),ge("Manager Address",o)];return r.push({title:"L1 Details",items:c}),i.forEach(({balance:l,stake:m,nodeId:p,remainingBalanceOwners:d,deactivationOwners:g},f)=>{let T=[y("Node ID",p),u("Balance",l,9,t),u("Stake",m,9,t)];g.length>0&&T.push(x(`${g.length>1?"Owners":"Owner"} Able to Deactivate`,g.join(`
|
|
19
|
+
var Sr=Object.defineProperty;var kr=(e,t,r)=>t in e?Sr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var F=(e,t,r)=>(kr(e,typeof t!="symbol"?t+"":t,r),r),ft=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var A=(e,t,r)=>(ft(e,t,"read from private field"),r?r.call(e):t.get(e)),R=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r);},w=(e,t,r,a)=>(ft(e,t,"write to private field"),a?a.call(e,r):t.set(e,r),r);var xt={name:"Avalanche",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/index.js",packageName:"@avalabs/avalanche-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:["avax:8aDU0Kqh-5d23op-B-r-4YbQFRbsgF9a","avax:YRLfeDBJpfEqUWe2FYR1OpXsnDDZeKWd","avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo","avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG","avax:imji8papUf2EhV3le337w1vgFauqkJg-","avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl","avax:N5PeRoKwDDREF0awn2GPsb9sHnGRzdEX"],namespaces:["avax"]},cointype:"9000",permissions:{rpc:{dapps:!0,methods:["avalanche_sendTransaction","avalanche_signTransaction","avalanche_signMessage"],nonRestrictedMethods:[]}},manifestVersion:"0.1"};var I=async({isTestnet:e})=>e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider():coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider();async function Tt({isTestnet:e,vmName:t}){let r=await I({isTestnet:e});if(t===vmModuleTypes.NetworkVMType.AVM)return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0};let{price:a}=await r.getApiP().getFeeState(),n=100/Number(a)/100,o=Math.min(1,Math.max(n,.15)),s=Math.min(1,Math.max(n*2,.3)),i=1+o,c=1+s;return {baseFee:a,low:{maxFeePerGas:a},medium:{maxFeePerGas:a*BigInt(Math.round(100*i))/100n},high:{maxFeePerGas:a*BigInt(Math.round(100*c))/100n},isFixedFee:!1}}var It=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,Dt=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function z(e,t,r="tx"){return `${e}/${r}/${t}`}function O({amount:e,decimals:t}){return e===void 0?new M__default.default(0):new M__default.default(e/10**t)}function kt({tx:e,address:t,networkToken:r,chainId:a,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(d=>d.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(d=>d.addresses)||[]),c=Nr({tx:e,isTestnet:o,networkToken:r,froms:s}),l=Rr({tx:e,isTestnet:o,networkToken:r}),m=t.toLowerCase().startsWith("p-")?t.slice(2):t,p=s.has(m);return {hash:e.txHash,isContractCall:!1,isIncoming:!p,isOutgoing:p,from:[...s.values()].join(","),to:[...i.values()].join(","),isSender:p,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:c.toString()}],gasUsed:l.toString(),explorerLink:z(n??"",e.txHash,"tx"),txType:e.txType,chainId:a.toString()}}function Nr({tx:e,isTestnet:t,networkToken:r,froms:a}){let n=["ImportTx","ExportTx"].includes(e.txType),o=e.txType==="BaseTx",s=e.emittedUtxos.filter(d=>d.asset.assetId===de(!!t)&&!d.addresses.some(g=>a.has(g))).reduce((d,g)=>d.add(g.asset.amount),new M__default.default(0)),i=e.value.find(d=>d.assetId===de(!!t))?.amount,c=s.gt(new M__default.default(0))?s:i?new M__default.default(i):new M__default.default(0)??new M__default.default(0),l=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,m=e.emittedUtxos.filter(d=>d.asset.assetId===de(!!t)&&(e.txType==="ImportTx"&&d.consumedOnChainId===l||e.txType==="ExportTx"&&d.consumedOnChainId!==l)).reduce((d,g)=>d.add(g.amount),new M__default.default(0)),p=o?c:n?m:e.amountStaked.length===0?St(e.value,!!t):St(e.amountStaked,!!t);return O({amount:p?.toNumber(),decimals:r.decimals})}function Rr({tx:e,isTestnet:t,networkToken:r}){let a=e.amountBurned?.filter(n=>n.assetId===de(!!t)).reduce((n,o)=>n.add(o.amount),new M__default.default(0));return O({amount:a?.toNumber(),decimals:r.decimals})}function St(e,t){return e.filter(r=>r.assetId===de(t)).reduce((r,a)=>r.add(a.amount),new M__default.default(0))}function de(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function bt({tx:e,address:t,networkToken:r,chainId:a,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(f=>f.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(f=>f.addresses)||[]),c=t.toLowerCase().startsWith("x-")?t.slice(2):t,l=["ImportTx","ExportTx"].includes(e.txType),{amount:m,isSender:p}=Vr({tx:e,isTestnet:o,networkToken:r,chainAddress:c,isImportExport:l}),d=Br({isTestnet:o,tx:e,networkToken:r}),g=l?m.toString():p?m.minus(d).toString():m.toString();return {hash:e.txHash,isContractCall:!1,isIncoming:!p,isOutgoing:p,from:[...s.values()].join(","),to:[...i.values()].join(","),isSender:p,timestamp:e.timestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:g}],gasUsed:d.toString(),explorerLink:z(n??"",e.txHash,"tx"),txType:e.txType,chainId:a.toString()}}function Vr({tx:e,isTestnet:t,networkToken:r,chainAddress:a,isImportExport:n}){if(n){let l=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,m=e.emittedUtxos.filter(p=>p.asset.assetId===he(!!t)&&(e.txType==="ImportTx"&&p.consumedOnChainId===l||e.txType==="ExportTx"&&p.consumedOnChainId!==l)).reduce((p,d)=>p.add(d.asset.amount),new M__default.default(0));return {amount:O({amount:m.toNumber(),decimals:r.decimals}),isSender:!0}}let o=e.consumedUtxos.filter(l=>l.asset.assetId===he(!!t)&&l.addresses.includes(a)).reduce((l,m)=>l.add(m.asset.amount),new M__default.default(0)),s=e.emittedUtxos.filter(l=>l.asset.assetId===he(!!t)&&l.addresses.includes(a)).reduce((l,m)=>l.add(m.asset.amount),new M__default.default(0)),i=o.gte(s),c=i?o.minus(s):s.minus(o);return {amount:O({amount:c.toNumber(),decimals:r.decimals}),isSender:i}}function Br({isTestnet:e,tx:t,networkToken:r}){let a=t.amountUnlocked.filter(s=>s.assetId===he(!!e)).reduce((s,i)=>s.add(i.amount),new M__default.default(0)),n=t.amountCreated.filter(s=>s.assetId===he(!!e)).reduce((s,i)=>s.add(i.amount),new M__default.default(0)),o=a.minus(n);return O({amount:o.toNumber(),decimals:r.decimals})}function he(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var Nt=async({address:e,nextPageToken:t,offset:r,network:a,glacierService:n})=>{let{isTestnet:o,networkToken:s,explorerUrl:i,chainId:c}=a;if(!n.isHealthy())return {transactions:[],nextPageToken:""};let m=a.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,p=await n.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:Mr(e),network:m,pageSize:r,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),d=[];return It(p)&&(d=p.transactions.map(g=>kt({tx:g,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:c}))),Dt(p)&&(d=p.transactions.map(g=>bt({tx:g,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:c}))),{transactions:d,nextPageToken:p.nextPageToken}},Mr=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var Lr={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},_r={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},wt=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return Lr;case vmModuleTypes.Environment.DEV:return _r}};var X=async({operation:e,isSuccess:t,maxRetries:r=10,backoffPolicy:a=Y.exponential()})=>{let n=0,o=0,s;for(;o<r;){o>0&&await Ur(n);try{let c=await e(o);if(t(c))return c}catch(c){s=c;}n=a(o),o++;}let i=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(i)},Y=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return r=>t*1e3}static constantMs(t){return r=>t}static linearThenExponential(t,r){return a=>{if(a<t)return (a+1)*r;let n=a-t+1,o=t*r,s=2*r*(Math.pow(2,n)-1);return o+s}}};function Ur(e){return new Promise(t=>setTimeout(t,e))}var Fe=e=>X({operation:t=>e(t>0),maxRetries:2,backoffPolicy:Y.constant(1),isSuccess:t=>t?.status?.error_code!==429});function Vt(e){let t,r=0;for(t=0;t<e.length;t++)r+=e.charCodeAt(t)*(t+1);return r}function Oe(e){let t,r=0;for(t=0;t<e.length;t++){let a=Vt(e[t]??"");r=r+65027/a;}return (""+r).slice(0,16)}async function H(e,t){let r=await fetch(...e);if(!r.ok)throw new Error(`Request failed with status ${r.status}`);let a=await r.json();return t.parse(a)}var ge=class{constructor(t){this.proxyApiUrl=t;}simplePrice(t){let r=new URLSearchParams(t);return H([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(t){let{id:r,...a}=t,n=new URLSearchParams(a);return H([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${n}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}};var Fr=zod.z.array(zod.z.object({internalId:zod.z.string(),id:zod.z.string(),symbol:zod.z.string(),name:zod.z.string(),image:zod.z.string().optional().nullable(),current_price:zod.z.number().optional().nullable(),price_change_percentage_24h:zod.z.number().optional().nullable(),market_cap:zod.z.number().optional().nullable(),total_volume:zod.z.number().optional().nullable(),platforms:zod.z.record(zod.z.string(),zod.z.string())})),Pe=class{constructor(t){this.proxyApiUrl=t;}watchlistToken(t){let r=new URLSearchParams(t);return H([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],Fr)}};var Et=coreCoingeckoSdk.getBasicCoingeckoHttp(),L,G,fe=class{constructor({storage:t,proxyApiUrl:r}){R(this,L,void 0);R(this,G,void 0);F(this,"transformSimplePriceResponse",(t,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let a={};return Object.keys(t).forEach(n=>{let o=t[n];a[n]={},r.forEach(s=>{a[n]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),a});w(this,L,t),w(this,G,r);}async getWatchlistDataForToken({tokenDetails:t,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new Pe(A(this,G)).watchlistToken({tokens:t.symbol,currency:r})).filter(o=>t.isNative?o.internalId===`NATIVE-${t.symbol.toLowerCase()}`:o.platforms[t.caip2Id]===t.address)[0];return n?{priceInCurrency:n.current_price??0,change24:n.price_change_percentage_24h??0,marketCap:n.market_cap??0,vol24:n.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:t=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let a,o=`getSimplePrice-${t?`${Oe(t)}-${r.toString()}`:`${r.toString()}`}`;if(a=A(this,L)?.get?.(o),a)return a;try{a=await Fe(s=>this.simplePrice({coinIds:t,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{a=void 0;}return A(this,L)?.set?.(o,a),a}async getPricesByAddresses(t,r,a=coreCoingeckoSdk.VsCurrencyType.USD){let n,s=`getPricesWithMarketDataByAddresses-${`${Oe(t)}-${r}-${a}`}`;if(n=A(this,L)?.get?.(s),n)return n;try{n=await Fe(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:t,currency:a,useCoingeckoProxy:i}));}catch(i){console.error(i),n=void 0;}return A(this,L)?.set?.(s,n),n}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:r,currency:a=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:n=!1}){if(n){let o=await new ge(A(this,G)).simplePriceByContractAddresses({id:t,contract_addresses:r,vs_currencies:[a],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(o,[a])}return coreCoingeckoSdk.simpleTokenPrice(Et,{assetPlatformId:t,tokenAddresses:r,currencies:[a],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:a=!1,vol24:n=!1,change24:o=!1,lastUpdated:s=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await new ge(A(this,G)).simplePrice({ids:t,vs_currencies:r,include_market_cap:a,include_24hr_vol:n,include_24hr_change:o,include_last_updated_at:s});return this.transformSimplePriceResponse(l,r)}return coreCoingeckoSdk.simplePrice(Et,{coinIds:t,currencies:r,marketCap:a,vol24:n,change24:o,lastUpdated:s,shouldThrow:c})}};L=new WeakMap,G=new WeakMap;zod.object({date:zod.string(),usd:zod.record(zod.number())});var u=(e,t,r,a)=>({label:e,type:vmModuleTypes.DetailItemType.CURRENCY,value:t,maxDecimals:r,symbol:a}),x=(e,t,r="horizontal")=>({label:e,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:t});var xe=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t});var y=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t}),Xe=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATA,value:t}),N=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t});var W=({name:e,version:t})=>{switch(e){case vmModuleTypes.AppName.CORE_MOBILE_IOS:case vmModuleTypes.AppName.CORE_MOBILE_ANDROID:case vmModuleTypes.AppName.CORE_WEB:case vmModuleTypes.AppName.CORE_EXTENSION:case vmModuleTypes.AppName.EXPLORER:return {"x-application-name":e,"x-application-version":t};case vmModuleTypes.AppName.OTHER:return}};var Mt=process.env.GLACIER_API_KEY;var j=()=>Mt;var Jr={rltoken:j()},ye=class extends glacierSdk.FetchHttpRequest{constructor(t){super(t);}request(t){let r={...Jr,...t.query||{}},a={...t,query:Object.keys(r).length>0?r:void 0};return super.request(a)}};var Ce=class extends Error{constructor(){super(...arguments);F(this,"message","Glacier is unhealthy. Try again later.");}},Ne=class{constructor({glacierApiUrl:t,headers:r}){F(this,"glacierSdk");F(this,"isGlacierHealthy",!0);F(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:t,HEADERS:r},ye);}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async listLatestPrimaryNetworkTransactions(t){try{return this.glacierSdk.primaryNetworkTransactions.listLatestPrimaryNetworkTransactions(t)}catch(r){throw r instanceof Ce&&this.setGlacierToUnhealthy(),r}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(r){throw r instanceof Ce&&this.setGlacierToUnhealthy(),r}}};var Lt=e=>Object.keys(e).includes("unlockedUnstaked"),_t=e=>Object.keys(e).includes("locked");function Re(e,t){let r=Object.values(e).reduce(function(a,n){let o=n.reduce(function(s,i){if(i.assetId!==t)return s;let c=Number(i.amount);return s+c},0);return a+o},0);return BigInt(r)}var Ft=({balance:e,networkToken:t,priceInCurrency:r,marketCap:a,vol24:n,change24:o,coingeckoId:s,avaxAssetId:i})=>{let c={},l={unlockedUnstaked:e.unlockedUnstaked,unlockedStaked:e.unlockedStaked,pendingStaked:e.pendingStaked,lockedStaked:e.lockedStaked,lockedStakeable:e.lockedStakeable,lockedPlatform:e.lockedPlatform,atomicMemoryLocked:e.atomicMemoryLocked,atomicMemoryUnlocked:e.atomicMemoryUnlocked};for(let f in l){let T=l[f];if(!T||!T.length){c[f]=0n;continue}T.forEach(D=>{if(D.assetId!==i)return;let C=(c[f]??0n)+BigInt(D.amount);c[f]=C;});}let m=new coreUtilsSdk.TokenUnit(c.unlockedUnstaked?c.unlockedUnstaked:0n,t.decimals,t.symbol),p=r?m.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,d=new coreUtilsSdk.TokenUnit(Re(e,i),t.decimals,t.symbol),g=r?d.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:r,balance:d.toSubUnit(),balanceInCurrency:g,balanceDisplayValue:d.toDisplay(),balanceCurrencyDisplayValue:g?.toFixed(2),available:m.toSubUnit(),availableInCurrency:p,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:p?.toFixed(2),utxos:e,balancePerType:{lockedStaked:c.lockedStaked,lockedStakeable:c.lockedStakeable,lockedPlatform:c.lockedPlatform,atomicMemoryLocked:c.atomicMemoryLocked,atomicMemoryUnlocked:c.atomicMemoryUnlocked,unlockedUnstaked:c.unlockedUnstaked,unlockedStaked:c.unlockedStaked,pendingStaked:c.pendingStaked},marketCap:a,vol24:n,change24:o,coingeckoId:s}};var Xt=({balance:e,networkToken:t,priceInCurrency:r,marketCap:a,vol24:n,change24:o,coingeckoId:s,avaxAssetId:i})=>{let c={},l={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let f in l){let T=l[f];if(!T||!T.length){c[f]=0n;continue}T.forEach(D=>{if(D.assetId!==i)return;let C=(c[f]??0n)+BigInt(D.amount);c[f]=C;});}let m=new coreUtilsSdk.TokenUnit(c.unlocked?c.unlocked:0n,t.decimals,t.symbol),p=r?m.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,d=new coreUtilsSdk.TokenUnit(Re(e,i),t.decimals,t.symbol),g=r!==void 0?d.mul(r):void 0;return {...t,coingeckoId:s,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:r,balance:d.toSubUnit(),balanceInCurrency:g?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:d.toDisplay(),balanceCurrencyDisplayValue:g?.toDisplay({fixedDp:2}),available:m.toSubUnit(),availableInCurrency:p,availableDisplayValue:m.toDisplay(),availableCurrencyDisplayValue:p?.toFixed(2),utxos:e,balancePerType:{unlocked:c.unlocked,locked:c.locked,atomicMemoryUnlocked:c.atomicMemoryUnlocked,atomicMemoryLocked:c.atomicMemoryLocked},marketCap:a,vol24:n,change24:o}};var Wt=async({addresses:e,currency:t,network:r,glacierService:a,tokenService:n})=>{let o=await I({isTestnet:!!r.isTestnet});if(!a.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let i=t.toLowerCase(),c=e[0]??"",l=r.networkToken,m=r.pricingProviders?.coingecko.nativeTokenId,p=r.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,d=r.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,g=await a.getChainBalance({blockchainId:p,network:d,addresses:e.join(",")}).then(D=>D.balances),f=await n.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:i}),T;return Lt(g)?(T=Ft({balance:g,networkToken:l,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:m??"",avaxAssetId:o.getContext().avaxAssetID}),{[c]:{[l.symbol]:T}}):_t(g)?(T=Xt({balance:g,networkToken:l,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:m??"",avaxAssetId:o.getContext().avaxAssetID}),{[c]:{[l.symbol]:T}}):Promise.reject("Incorrect type balance was returned from glacier")};function jt({blockchainId:e,isTestnet:t}){let r=t?"fuji"+e:e,a=Zr__default.default.createHash("sha256").update(r).digest("base64");return "avax:"+ea(a).substring(0,32)}var ea=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var Jt=async({accountIndex:e,xpubXP:t,walletType:r,network:a})=>{let n=!!a?.isTestnet;if(t===void 0)throw rpcErrors.rpcErrors.invalidParams("xpubXP is required to get address");let o=await I({isTestnet:n}),s;switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:{s=coreWalletsSdk.Avalanche.getAddressPublicKeyFromXpub(t,e);break}case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{s=Buffer.from(t,"hex");break}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}return {[vmModuleTypes.NetworkVMType.AVM]:o.getAddress(s,"X"),[vmModuleTypes.NetworkVMType.PVM]:o.getAddress(s,"P")}};var ra=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")])]),Kt=e=>ra.safeParse(e);var Yt=async({request:e,network:t,approvalController:r})=>{let a=Kt(e.params);if(!a.success)return console.error("invalid params",a.error),{error:rpcErrors.rpcErrors.invalidParams({message:"Params are invalid",data:{cause:a.error}})};let[n,o]=a.data,s=Buffer.from(n,"utf-8").toString("hex"),i={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE,data:s,accountIndex:o},c={title:"Sign Message",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} is requesting to sign the following message`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:[{title:"Message",items:[n]}]},l=await r.requestApproval({request:e,displayData:c,signingData:i});return "error"in l?{error:l.error}:"signedData"in l?{result:l.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var na=zod.z.object({transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"]),externalIndices:zod.z.number().array().optional(),internalIndices:zod.z.number().array().optional(),utxos:zod.z.string().array().optional()}),Qt=e=>na.safeParse(e);var we=({utxoHexes:e=[],vm:t})=>{try{let r=avalanchejs.utils.getManagerForVM(t).getDefaultCodec();return e.map(a=>{let n=avalanchejs.utils.hexToBuffer(a);return avalanchejs.Utxo.fromBytes(n,r)[0]})}catch{return []}};var Ve=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.ConvertSubnetToL1:case vmModuleTypes.TxType.SetL1ValidatorWeight:case vmModuleTypes.TxType.DisableL1Validator:case vmModuleTypes.TxType.IncreaseL1ValidatorBalance:case vmModuleTypes.TxType.RegisterL1Validator:return {...e,chain:e.chain};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 er=e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:return "Do you want to add this delegator?";case vmModuleTypes.TxType.AddPermissionlessValidator:return "Do you want to add this validator?";case vmModuleTypes.TxType.Export:return "Do you approve this export?";case vmModuleTypes.TxType.Import:return "Do you approve this import?";case vmModuleTypes.TxType.Base:return "Do you approve this transaction?";case vmModuleTypes.TxType.AddSubnetValidator:return "Do you want to add this subnet validator?";case vmModuleTypes.TxType.CreateChain:return "Do you want to create this chain?";case vmModuleTypes.TxType.CreateSubnet:return "Do you want to create this subnet?";case vmModuleTypes.TxType.RemoveSubnetValidator:return "Do you want to remove this subnet validator?";case vmModuleTypes.TxType.ConvertSubnetToL1:return "Do you want to convert this subnet?";case vmModuleTypes.TxType.DisableL1Validator:return "Do you want to disable this validator?";case vmModuleTypes.TxType.IncreaseL1ValidatorBalance:return "Do you want to increase this validator balance?";case vmModuleTypes.TxType.RegisterL1Validator:return "Do you want to register this validator?";case vmModuleTypes.TxType.SetL1ValidatorWeight:return "Do you want to set this validator weight?";default:return "Sign Message"}};var He=async({indices:e,chainAlias:t,isChange:r,isTestnet:a,xpubXP:n,externalXPAddresses:o})=>{if(r&&t!=="X")return [];if(n){let s=await I({isTestnet:a});return e.map(i=>coreWalletsSdk.Avalanche.getAddressFromXpub(n,i,s,t,r))}return o&&Array.isArray(o)?e.map(i=>o.find(c=>c.index===i)).filter(i=>i!==void 0).map(i=>i.address):[]};var Ge=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,We=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,je=e=>e.type===vmModuleTypes.TxType.Export,qe=e=>e.type===vmModuleTypes.TxType.Import,ia=e=>e.type===vmModuleTypes.TxType.Base,$e=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,ca=e=>e.type===vmModuleTypes.TxType.CreateChain,la=e=>e.type===vmModuleTypes.TxType.CreateSubnet,Je=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,tr=e=>e.type===vmModuleTypes.TxType.ConvertSubnetToL1,rr=e=>e.type===vmModuleTypes.TxType.DisableL1Validator,ar=e=>e.type===vmModuleTypes.TxType.IncreaseL1ValidatorBalance,nr=e=>e.type===vmModuleTypes.TxType.RegisterL1Validator,or=e=>e.type===vmModuleTypes.TxType.SetL1ValidatorWeight,ts=e=>Ge(e)||We(e)||$e(e)||Je(e),rs=e=>je(e)||qe(e),sr=e=>ia(e),ir=e=>ca(e),cr=e=>la(e);var V=(a=>(a.AVM="X-Chain",a.PVM="P-Chain",a.EVM="C-Chain",a))(V||{});function Be(e){return e===coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID}var Ke=(e,t)=>{let r=[],{txFee:a,nodeID:n,start:o,end:s,stake:i,subnetID:c}=e,l=[y("Node ID",n),Be(c)?x("Subnet ID","Primary Network"):y("Subnet ID",c),u("Stake Amount",i,9,t),N("Start Date",o),N("End Date",s)];return r.push({title:"Staking Details",items:l}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var ze=(e,t)=>{let r=[],{txFee:a,nodeID:n,delegationFee:o,start:s,end:i,stake:c,subnetID:l,signature:m,publicKey:p}=e,d=[y("Node ID",n),Be(l)?x("Subnet ID","Primary Network"):y("Subnet ID",l)];return p&&m&&d.push(y("Public Key",p),y("Proof",m)),d.push(u("Stake Amount",c,9,t),x("Delegation Fee",`${o/1e4} %`),N("Start Date",s),N("End Date",i)),r.push({title:"Staking Details",items:d}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var Ye=(e,t)=>{let r=[],{txFee:a,nodeID:n,start:o,end:s,subnetID:i}=e,c=[y("Subnet ID",i),y("Node ID",n),N("Start Date",o),N("End Date",s)];return r.push({title:"Staking Details",items:c}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var Qe=(e,t)=>{let r=[],{txFee:a,chainID:n,managerAddress:o,subnetID:s,validators:i}=e,c=[y("Subnet ID",s),y("Chain ID",n),xe("Manager Address",o)];return r.push({title:"L1 Details",items:c}),i.forEach(({balance:l,stake:m,nodeId:p,remainingBalanceOwners:d,deactivationOwners:g},f)=>{let T=[y("Node ID",p),u("Balance",l,9,t),u("Stake",m,9,t)];g.length>0&&T.push(x(`${g.length>1?"Owners":"Owner"} Able to Deactivate`,g.join(`
|
|
20
20
|
`),"vertical")),d.length>0&&T.push(x(`${d.length>1?"Owners":"Owner"} of the Remaining Balance`,d.join(`
|
|
21
|
-
`),"vertical")),r.push({title:f===0?"Validators":void 0,items:T});}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var
|
|
22
|
-
`),"vertical"),x("Signature Threshold",`${n}/${o.length}`,"vertical")]}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var at=(e,t)=>{let r=[],{txFee:a,chainID:n,chainName:o,vmID:s,genesisData:i}=e,c=[x("Blockchain name",o,"vertical"),x("Blockchain ID",n,"vertical"),x("Virtual Machine ID",s,"vertical"),x("Genesis Data",i,"vertical")];return r.push({title:"Blockchain Details",items:c}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var nt=(e,t)=>{let r=[],{txFee:a,validationId:n}=e,o=[y("Validation ID",n)];return r.push({title:"L1 Details",items:o}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var ot=(e,t)=>{let r=[],{txFee:a,balance:n,validationId:o}=e,s=[y("Validation ID",o),u("Increase by amount",n,9,t)];return r.push({title:"L1 Details",items:s}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var st=(e,t)=>{let r=[],{txFee:a,balance:n}=e,o=[u("Initial balance",n,9,t)];return r.push({title:"L1 Details",items:o}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var it=(e,t)=>{let r=[],{txFee:a}=e;return a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var Be=(e,t)=>{if(or(e))return tt(e,t);if(We(e))return Qe(e,t);if(je(e))return Ze(e,t);if(ir(e))return rt(e,t);if(He(e))return Ke(e,t);if(Ge(e))return Je(e,t);if(sr(e))return at(e,t);if(qe(e))return ze(e,t);if($e(e))return et(e,t);if(er(e))return Ye(e,t);if(tr(e))return nt(e,t);if(rr(e))return ot(e,t);if(ar(e))return st(e,t);if(nr(e))return it(e,t)};var ma=zod.z.object({currentAddress:zod.z.string({required_error:"No active account found"}),currentEvmAddress:zod.z.string().optional(),xpubXP:zod.z.string({invalid_type_error:"xpubXP must be a string"}).optional()}),da=zod.z.object({account:zod.z.object({xpAddress:zod.z.string({required_error:"XP address is required",invalid_type_error:"XP address must be a string"}),evmAddress:zod.z.string().optional(),xpubXP:zod.z.string({invalid_type_error:"xpubXP must be a string"}).optional(),externalXPAddresses:zod.z.array(zod.z.object({index:zod.z.number(),address:zod.z.string()}))})}),ua=e=>({xpAddress:e.currentAddress,evmAddress:e.currentEvmAddress,xpubXP:e.xpubXP,externalXPAddresses:[]}),ha=e=>e.account,ga=e=>e!=null&&typeof e=="object"&&"account"in e&&e.account!=null&&typeof e.account=="object",Ee=e=>{if(!e)return {success:!1,error:"Missing Avalanche transaction context"};if(ga(e)){let{success:n,data:o,error:s}=da.safeParse(e);return n?{success:!0,data:ha(o)}:{success:!1,error:s.errors[0]?.message||"Invalid or missing Avalanche transaction context"}}let{success:t,data:r,error:a}=ma.safeParse(e);return t?{success:!0,data:ua(r)}:{success:!1,error:a.errors[0]?.message||"Invalid or missing Avalanche transaction context"}};var lr=async({request:e,network:t,approvalController:r,glacierApiUrl:a,appInfo:n})=>{let o=Yt(e.params);if(!o.success)return {error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:o.error}})};try{let{transactionHex:s,chainAlias:i,externalIndices:c,internalIndices:l,utxos:m}=o.data,p=coreWalletsSdk.Avalanche.getVmByChainAlias(i),d=avalanchejs.utils.hexToBuffer(s),g=t.isTestnet??!1,f=await I({isTestnet:g}),T=Ee(e.context);if(!T.success)return {error:rpcErrors.rpcErrors.invalidParams(T.error)};let{xpAddress:D,xpubXP:B,externalXPAddresses:C}=T.data,se=Re({utxoHexes:m,vm:p}),q=se.length?se:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:s,chainAlias:i,network:g?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:a,token:j(),headers:W(n)}),$;if(i==="C")$=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:d,vm:p,utxos:q,fromAddress:D});else {let Ue=avalanchejs.utils.unpackWithManager(p,d);if(B!==void 0&&typeof B!="string")return {error:rpcErrors.rpcErrors.invalidParams("xpubXP must be a string")};let Tr=await Xe({indices:c??[],chainAlias:i,isChange:!1,isTestnet:g,xpubXP:B,externalXPAddresses:C}),Ar=await Xe({indices:l??[],chainAlias:i,isChange:!0,isTestnet:g,xpubXP:B,externalXPAddresses:C}),vr=[...new Set([D,...Tr,...Ar])].map(Ir=>avalanchejs.utils.parse(Ir)[2]);$=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:Ue,utxos:q,provider:f,fromAddressBytes:vr});}let ie=await coreWalletsSdk.Avalanche.parseAvalancheTx($,f,D),K=we(ie),Ie=Zt(ie);if(ie.type==="unknown"||K===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let Le={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify($.toJSON()),data:ie,vm:p,externalIndices:c,internalIndices:l},ce=Be(K,t.networkToken.symbol);if(ce===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let _e={title:Ie,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:ce,networkFeeSelector:!1},E=await r.requestApproval({request:e,displayData:_e,signingData:Le});if("error"in E)return {error:E.error};let De=await Ta(f,E,p);return Aa({explorerUrl:t.explorerUrl??"",provider:f,txHash:De,vm:p,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),{result:De}}catch(s){return console.error(s),{error:rpcErrors.rpcErrors.internal({message:"Unable to create transaction",data:{cause:s}})}}},Ta=async(e,t,r)=>{if("txHash"in t)return t.txHash;let{txID:a}=await e.issueTxHex(t.signedData,r);return a},Aa=async({explorerUrl:e,provider:t,txHash:r,vm:a,onTransactionPending:n,onTransactionConfirmed:o,onTransactionReverted:s,request:i})=>{let l=J(e,r);try{n({txHash:r,request:i,explorerLink:l}),a===avalanchejs.PVM?(await X({operation:()=>t.getApiP().getTxStatus({txID:r}),isSuccess:p=>["Committed","Dropped"].includes(p.status),maxRetries:7})).status==="Committed"?o({txHash:r,explorerLink:l,request:i}):s({txHash:r,request:i}):a===avalanchejs.AVM?(await X({operation:()=>t.getApiX().getTxStatus({txID:r}),isSuccess:p=>["Accepted","Rejected"].includes(p.status),maxRetries:7})).status==="Accepted"?o({txHash:r,explorerLink:l,request:i}):s({txHash:r,request:i}):(await X({operation:()=>t.getApiC().getAtomicTxStatus(r),isSuccess:p=>["Accepted","Dropped"].includes(p.status),maxRetries:7})).status==="Accepted"?o({txHash:r,explorerLink:l,request:i}):s({txHash:r,request:i});}catch(m){console.error(m),m instanceof Error&&m.message.startsWith("Max retry exceeded.")||s({txHash:r,request:i});}};var va=zod.z.object({from:zod.z.string().optional().describe("Avalanche receiving address"),transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"]),utxos:zod.z.string().array().optional()}),pr=e=>va.safeParse(e);var hr=async({vm:e,txBytes:t,utxos:r,currentAddress:a,currentEvmAddress:n,provider:o})=>{let s,i,c=avalanchejs.utils.unpackWithManager(e,t);if(avalanchejs.evmSerial.isExportTx(c)){let l=c.ins[0]?.address.toHex();if(!n)throw rpcErrors.rpcErrors.invalidRequest("Missing EVM address");if(l?.toLowerCase()!==n.toLowerCase())throw new Error("This account has nothing to sign");return coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:a})}try{let m=avalanchejs.utils.getManagerForVM(e).unpack(t,avalanchejs.avaxSerial.SignedTx);avalanchejs.evmSerial.isImportTx(c)?i=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:a}):i=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:c,provider:o,credentials:m.getCredentials(),utxos:r}),s=c.getSigIndices().map((p,d)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(p,{unsignedTx:i,credentialIndex:d})));}catch{s=c.getSigIndices().map(m=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(m)));}return coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:c,provider:o,credentials:s,utxos:r})};var fr=async({request:e,network:t,approvalController:r,glacierApiUrl:a,appInfo:n})=>{let o=pr(e.params);if(!o.success)return console.error("invalid params",o.error),{error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let{transactionHex:s,chainAlias:i,from:c,utxos:l}=o.data,m=coreWalletsSdk.Avalanche.getVmByChainAlias(i),p=t.isTestnet??!1,d=await I({isTestnet:p}),g=Ee(e.context);if(!g.success)return {error:rpcErrors.rpcErrors.invalidParams(g.error)};let{xpAddress:f,evmAddress:T}=g.data,D=Re({utxoHexes:l,vm:m}),B=D.length?D:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:s,chainAlias:i,network:p?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:a,token:j(),headers:W(n)}),C=await hr({txBytes:avalanchejs.utils.hexToBuffer(s),vm:m,utxos:B,currentAddress:f,currentEvmAddress:T,provider:d}),se=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(c??f)[2]])[0];if(!se)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let q=C.getSigIndicesForAddress(se);if(!q)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let $=C.getSigIndices();if(!q.some(([De,Ue])=>$[De]?.includes(Ue)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let K=await coreWalletsSdk.Avalanche.parseAvalancheTx(C,d,c??f),Ie=we(K);if(K.type==="unknown"||Ie===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let Le={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:K,vm:m,unsignedTxJson:JSON.stringify(C.toJSON()),ownSignatureIndices:q},ce=Be(Ie,t.networkToken.symbol);if(ce===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let _e={title:"Do you approve this transaction?",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} requests you to sign the following transaction`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:ce},E=await r.requestApproval({request:e,displayData:_e,signingData:Le});return "error"in E?{error:E.error}:"signedData"in E?{result:E.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var mt=e=>"derivationPathType"in e&&"accountIndex"in e&&typeof e.accountIndex=="number"&&typeof e.derivationPathType=="string";var Ae=({accountIndex:e,derivationPathType:t,addressIndex:r=0})=>{if(e<0)throw rpcErrors.rpcErrors.invalidParams("Account index must be a non-negative integer");if(r!==void 0&&r<0)throw rpcErrors.rpcErrors.invalidParams("Address index must be a non-negative integer");switch(t){case"bip44":return {[vmModuleTypes.NetworkVMType.AVM]:`m/44'/9000'/${e}'/0/${r}`,[vmModuleTypes.NetworkVMType.CoreEth]:`m/44'/60'/0'/0/${e}`};case"ledger_live":return {[vmModuleTypes.NetworkVMType.AVM]:`m/44'/9000'/${e}'/0/${r}`,[vmModuleTypes.NetworkVMType.CoreEth]:`m/44'/60'/${e}'/0/0`};default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported derivation path type: ${t}`)}};var xr=async e=>{let{approvalController:t,network:r,secretId:a}=e,n=mt(e)?Ae(e).AVM:void 0,o=mt(e)?Ae(e).CoreEth:void 0,s=await I({isTestnet:!!r.isTestnet}),i=await t.requestPublicKey({curve:"secp256k1",secretId:a,derivationPath:n}).catch(()=>null),c=await t.requestPublicKey({curve:"secp256k1",secretId:a,derivationPath:o}).catch(()=>null),l=c?{[vmModuleTypes.NetworkVMType.CoreEth]:s.getAddress(Buffer.from(c,"hex"),"C")}:{},m=i?{[vmModuleTypes.NetworkVMType.AVM]:s.getAddress(Buffer.from(i,"hex"),"X"),[vmModuleTypes.NetworkVMType.PVM]:s.getAddress(Buffer.from(i,"hex"),"P")}:{};return {...l,...m}};var ae,ve,ne,U,oe,yr=class{constructor({approvalController:t,environment:r,appInfo:a}){R(this,ae,void 0);R(this,ve,void 0);R(this,ne,void 0);R(this,U,void 0);R(this,oe,void 0);let{glacierApiUrl:n,proxyApiUrl:o}=Rt(r);w(this,oe,a),w(this,ae,new Ce({glacierApiUrl:n,headers:W(a)})),w(this,ve,o),w(this,ne,n),w(this,U,t);}getProvider(t){return I({isTestnet:!!t.isTestnet})}getAddress({accountIndex:t,xpubXP:r,walletType:a,network:n}){return $t({accountIndex:t,xpubXP:r,walletType:a,network:n})}getBalances({addresses:t,network:r,storage:a,currency:n}){let o=new ue({storage:a,proxyApiUrl:A(this,ve)});return Gt({addresses:t,currency:n,network:r,glacierService:A(this,ae),tokenService:o})}getManifest(){let t=vmModuleTypes.parseManifest(ft);return t.success?t.data:void 0}getNetworkFee(t){let{isTestnet:r,vmName:a}=t;return yt({isTestnet:!!r,vmName:a})}getTransactionHistory({network:t,address:r,nextPageToken:a,offset:n}){return Ct({network:t,address:r,nextPageToken:a,offset:n,glacierService:A(this,ae)})}getTokens(t){return Promise.resolve([])}buildDerivationPath(t){return Ae(t)}async deriveAddress(t){return xr({...t,approvalController:A(this,U)})}async onRpcRequest(t,r){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return zt({request:t,network:r,approvalController:A(this,U)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return fr({request:t,network:r,approvalController:A(this,U),glacierApiUrl:A(this,ne),appInfo:A(this,oe)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return lr({request:t,network:r,approvalController:A(this,U),glacierApiUrl:A(this,ne),appInfo:A(this,oe)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:r}){return Wt({blockchainId:t,isTestnet:r})}};ae=new WeakMap,ve=new WeakMap,ne=new WeakMap,U=new WeakMap,oe=new WeakMap;var wc=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,Vc=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
|
|
21
|
+
`),"vertical")),r.push({title:f===0?"Validators":void 0,items:T});}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var Ze=(e,t)=>{let r=[],{txFee:a,amount:n,chain:o,destination:s,type:i}=e;return r.push({title:"Transaction Details",items:[x("Source Chain",`Avalanche ${V[o]}`),x("Target Chain",`Avalanche ${V[s]}`),x("Transaction Type",i?(i[0]||"").toUpperCase()+i.slice(1):""),u("Amount",n,9,t)]}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var et=(e,t)=>{let r=[],{txFee:a,amount:n,chain:o,source:s,type:i}=e;return r.push({title:"Transaction Details",items:[x("Source Chain",`Avalanche ${V[s]}`),x("Destination Chain",`Avalanche ${V[o]}`),x("Transaction Type",i?(i[0]||"").toUpperCase()+i.slice(1):""),u("Amount",n,9,t)]}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var tt=(e,t)=>{let r=[],{txFee:a,nodeID:n,subnetID:o}=e,s=[y("Node ID",n),y("Subnet ID",o)];return r.push({title:"Staking Details",items:s}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var rt=(e,t)=>{let r=[],{txFee:a,chain:n,outputs:o,memo:s}=e;return r.push({title:"Chain Details",items:[x("Active chain",`Avalanche ${V[n]}`)]}),o.forEach((i,c)=>{let l=i.owners.flatMap(m=>[xe("To",m),u("Amount",i.amount,9,t)]);i.owners.length>1&&l.push(x("Threshold",i.threshold.toString())),r.push({title:c===0?"Balance Change":void 0,items:l});}),n!==avalanchejs.PVM&&s&&r.push({title:"Memo",items:[s]}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var at=(e,t)=>{let r=[],{txFee:a,threshold:n,controlKeys:o}=e;return r.push({title:"Subnet Details",items:[x(o.length>1?"Owners":"Owner",o.join(`
|
|
22
|
+
`),"vertical"),x("Signature Threshold",`${n}/${o.length}`,"vertical")]}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var da=e=>{try{let t=JSON.parse(e);return JSON.stringify(t,null,2)}catch(t){return console.error("Failed to format genesis data:",t),e}},nt=(e,t)=>{let r=[],{txFee:a,chainID:n,chainName:o,vmID:s,genesisData:i}=e,c=[x("Blockchain name",o,"vertical"),x("Blockchain ID",n,"vertical"),x("Virtual Machine ID",s,"vertical"),Xe("Genesis Data",da(i))];return r.push({title:"Blockchain Details",items:c}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var ot=(e,t)=>{let r=[],{txFee:a,validationId:n}=e,o=[y("Validation ID",n)];return r.push({title:"L1 Details",items:o}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var st=(e,t)=>{let r=[],{txFee:a,balance:n,validationId:o}=e,s=[y("Validation ID",o),u("Increase by amount",n,9,t)];return r.push({title:"L1 Details",items:s}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var it=(e,t)=>{let r=[],{txFee:a,balance:n}=e,o=[u("Initial balance",n,9,t)];return r.push({title:"L1 Details",items:o}),a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var ct=(e,t)=>{let r=[],{txFee:a}=e;return a&&r.push({title:"Network Fee",items:[u("Fee Amount",a,9,t)]}),r};var Ee=(e,t)=>{if(sr(e))return rt(e,t);if(je(e))return Ze(e,t);if(qe(e))return et(e,t);if(cr(e))return at(e,t);if(Ge(e))return Ke(e,t);if(We(e))return ze(e,t);if(ir(e))return nt(e,t);if($e(e))return Ye(e,t);if(Je(e))return tt(e,t);if(tr(e))return Qe(e,t);if(rr(e))return ot(e,t);if(ar(e))return st(e,t);if(nr(e))return it(e,t);if(or(e))return ct(e,t)};var ua=zod.z.object({currentAddress:zod.z.string({required_error:"No active account found"}),currentEvmAddress:zod.z.string().optional(),xpubXP:zod.z.string({invalid_type_error:"xpubXP must be a string"}).optional()}),ha=zod.z.object({account:zod.z.object({xpAddress:zod.z.string({required_error:"XP address is required",invalid_type_error:"XP address must be a string"}),evmAddress:zod.z.string().optional(),xpubXP:zod.z.string({invalid_type_error:"xpubXP must be a string"}).optional(),externalXPAddresses:zod.z.array(zod.z.object({index:zod.z.number(),address:zod.z.string()}))})}),ga=e=>({xpAddress:e.currentAddress,evmAddress:e.currentEvmAddress,xpubXP:e.xpubXP,externalXPAddresses:[]}),fa=e=>e.account,xa=e=>e!=null&&typeof e=="object"&&"account"in e&&e.account!=null&&typeof e.account=="object",Me=e=>{if(!e)return {success:!1,error:"Missing Avalanche transaction context"};if(xa(e)){let{success:n,data:o,error:s}=ha.safeParse(e);return n?{success:!0,data:fa(o)}:{success:!1,error:s.errors[0]?.message||"Invalid or missing Avalanche transaction context"}}let{success:t,data:r,error:a}=ua.safeParse(e);return t?{success:!0,data:ga(r)}:{success:!1,error:a.errors[0]?.message||"Invalid or missing Avalanche transaction context"}};var pr=async({request:e,network:t,approvalController:r,glacierApiUrl:a,appInfo:n})=>{let o=Qt(e.params);if(!o.success)return {error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:o.error}})};try{let{transactionHex:s,chainAlias:i,externalIndices:c,internalIndices:l,utxos:m}=o.data,p=coreWalletsSdk.Avalanche.getVmByChainAlias(i),d=avalanchejs.utils.hexToBuffer(s),g=t.isTestnet??!1,f=await I({isTestnet:g}),T=Me(e.context);if(!T.success)return {error:rpcErrors.rpcErrors.invalidParams(T.error)};let{xpAddress:D,xpubXP:B,externalXPAddresses:C}=T.data,ie=we({utxoHexes:m,vm:p}),$=ie.length?ie:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:s,chainAlias:i,network:g?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:a,token:j(),headers:W(n)}),J;if(i==="C")J=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:d,vm:p,utxos:$,fromAddress:D});else {let me=avalanchejs.utils.unpackWithManager(p,d);if(B!==void 0&&typeof B!="string")return {error:rpcErrors.rpcErrors.invalidParams("xpubXP must be a string")};let Ar=await He({indices:c??[],chainAlias:i,isChange:!1,isTestnet:g,xpubXP:B,externalXPAddresses:C}),vr=await He({indices:l??[],chainAlias:i,isChange:!0,isTestnet:g,xpubXP:B,externalXPAddresses:C}),Ir=[...new Set([D,...Ar,...vr])].map(Dr=>avalanchejs.utils.parse(Dr)[2]);J=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:me,utxos:$,provider:f,fromAddressBytes:Ir});}let ce=await coreWalletsSdk.Avalanche.parseAvalancheTx(J,f,D),K=Ve(ce),Se=er(ce);if(ce.type==="unknown"||K===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let _e={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(J.toJSON()),data:ce,vm:p,externalIndices:c,internalIndices:l},le=Ee(K,t.networkToken.symbol);if(le===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let Ue={title:Se,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:le,networkFeeSelector:!1},E=await r.requestApproval({request:e,displayData:Ue,signingData:_e});if("error"in E)return {error:E.error};let pe;try{pe=await va(f,E,p);}catch(me){return {error:rpcErrors.rpcErrors.internal({message:"Unable to broadcast transaction",data:{cause:me}})}}return Ia({explorerUrl:t.explorerUrl??"",provider:f,txHash:pe,vm:p,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),{result:pe}}catch(s){return console.error(s),{error:rpcErrors.rpcErrors.internal({message:"Unable to create transaction",data:{cause:s}})}}},va=async(e,t,r)=>{if("txHash"in t)return t.txHash;let{txID:a}=await e.issueTxHex(t.signedData,r);return a},Ia=async({explorerUrl:e,provider:t,txHash:r,vm:a,onTransactionPending:n,onTransactionConfirmed:o,onTransactionReverted:s,request:i})=>{let l=z(e,r);try{n({txHash:r,request:i,explorerLink:l}),a===avalanchejs.PVM?(await X({operation:()=>t.getApiP().getTxStatus({txID:r}),isSuccess:p=>["Committed","Dropped"].includes(p.status),maxRetries:7})).status==="Committed"?o({txHash:r,explorerLink:l,request:i}):s({txHash:r,request:i}):a===avalanchejs.AVM?(await X({operation:()=>t.getApiX().getTxStatus({txID:r}),isSuccess:p=>["Accepted","Rejected"].includes(p.status),maxRetries:7})).status==="Accepted"?o({txHash:r,explorerLink:l,request:i}):s({txHash:r,request:i}):(await X({operation:()=>t.getApiC().getAtomicTxStatus(r),isSuccess:p=>["Accepted","Dropped"].includes(p.status),maxRetries:7})).status==="Accepted"?o({txHash:r,explorerLink:l,request:i}):s({txHash:r,request:i});}catch(m){console.error(m),m instanceof Error&&m.message.startsWith("Max retry exceeded.")||s({txHash:r,request:i});}};var Da=zod.z.object({from:zod.z.string().optional().describe("Avalanche receiving address"),transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"]),utxos:zod.z.string().array().optional()}),mr=e=>Da.safeParse(e);var gr=async({vm:e,txBytes:t,utxos:r,currentAddress:a,currentEvmAddress:n,provider:o})=>{let s,i,c=avalanchejs.utils.unpackWithManager(e,t);if(avalanchejs.evmSerial.isExportTx(c)){let l=c.ins[0]?.address.toHex();if(!n)throw rpcErrors.rpcErrors.invalidRequest("Missing EVM address");if(l?.toLowerCase()!==n.toLowerCase())throw new Error("This account has nothing to sign");return coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:a})}try{let m=avalanchejs.utils.getManagerForVM(e).unpack(t,avalanchejs.avaxSerial.SignedTx);avalanchejs.evmSerial.isImportTx(c)?i=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:a}):i=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:c,provider:o,credentials:m.getCredentials(),utxos:r}),s=c.getSigIndices().map((p,d)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(p,{unsignedTx:i,credentialIndex:d})));}catch{s=c.getSigIndices().map(m=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(m)));}return coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:c,provider:o,credentials:s,utxos:r})};var xr=async({request:e,network:t,approvalController:r,glacierApiUrl:a,appInfo:n})=>{let o=mr(e.params);if(!o.success)return console.error("invalid params",o.error),{error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let{transactionHex:s,chainAlias:i,from:c,utxos:l}=o.data,m=coreWalletsSdk.Avalanche.getVmByChainAlias(i),p=t.isTestnet??!1,d=await I({isTestnet:p}),g=Me(e.context);if(!g.success)return {error:rpcErrors.rpcErrors.invalidParams(g.error)};let{xpAddress:f,evmAddress:T}=g.data,D=we({utxoHexes:l,vm:m}),B=D.length?D:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:s,chainAlias:i,network:p?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:a,token:j(),headers:W(n)}),C=await gr({txBytes:avalanchejs.utils.hexToBuffer(s),vm:m,utxos:B,currentAddress:f,currentEvmAddress:T,provider:d}),ie=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(c??f)[2]])[0];if(!ie)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let $=C.getSigIndicesForAddress(ie);if(!$)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let J=C.getSigIndices();if(!$.some(([pe,me])=>J[pe]?.includes(me)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let K=await coreWalletsSdk.Avalanche.parseAvalancheTx(C,d,c??f),Se=Ve(K);if(K.type==="unknown"||Se===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let _e={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:K,vm:m,unsignedTxJson:JSON.stringify(C.toJSON()),ownSignatureIndices:$},le=Ee(Se,t.networkToken.symbol);if(le===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let Ue={title:"Do you approve this transaction?",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} requests you to sign the following transaction`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:le},E=await r.requestApproval({request:e,displayData:Ue,signingData:_e});return "error"in E?{error:E.error}:"signedData"in E?{result:E.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var dt=e=>"derivationPathType"in e&&"accountIndex"in e&&typeof e.accountIndex=="number"&&typeof e.derivationPathType=="string";var Ie=({accountIndex:e,derivationPathType:t,addressIndex:r=0})=>{if(e<0)throw rpcErrors.rpcErrors.invalidParams("Account index must be a non-negative integer");if(r!==void 0&&r<0)throw rpcErrors.rpcErrors.invalidParams("Address index must be a non-negative integer");switch(t){case"bip44":return {[vmModuleTypes.NetworkVMType.AVM]:`m/44'/9000'/${e}'/0/${r}`,[vmModuleTypes.NetworkVMType.CoreEth]:`m/44'/60'/0'/0/${e}`};case"ledger_live":return {[vmModuleTypes.NetworkVMType.AVM]:`m/44'/9000'/${e}'/0/${r}`,[vmModuleTypes.NetworkVMType.CoreEth]:`m/44'/60'/${e}'/0/0`};default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported derivation path type: ${t}`)}};var yr=async e=>{let{approvalController:t,network:r,secretId:a}=e,n=dt(e)?Ie(e).AVM:void 0,o=dt(e)?Ie(e).CoreEth:void 0,s=await I({isTestnet:!!r.isTestnet}),i=await t.requestPublicKey({curve:"secp256k1",secretId:a,derivationPath:n}).catch(()=>null),c=await t.requestPublicKey({curve:"secp256k1",secretId:a,derivationPath:o}).catch(()=>null),l=c?{[vmModuleTypes.NetworkVMType.CoreEth]:s.getAddress(Buffer.from(c,"hex"),"C")}:{},m=i?{[vmModuleTypes.NetworkVMType.AVM]:s.getAddress(Buffer.from(i,"hex"),"X"),[vmModuleTypes.NetworkVMType.PVM]:s.getAddress(Buffer.from(i,"hex"),"P")}:{};return {...l,...m}};var ne,De,oe,U,se,Tr=class{constructor({approvalController:t,environment:r,appInfo:a}){R(this,ne,void 0);R(this,De,void 0);R(this,oe,void 0);R(this,U,void 0);R(this,se,void 0);let{glacierApiUrl:n,proxyApiUrl:o}=wt(r);w(this,se,a),w(this,ne,new Ne({glacierApiUrl:n,headers:W(a)})),w(this,De,o),w(this,oe,n),w(this,U,t);}getProvider(t){return I({isTestnet:!!t.isTestnet})}getAddress({accountIndex:t,xpubXP:r,walletType:a,network:n}){return Jt({accountIndex:t,xpubXP:r,walletType:a,network:n})}getBalances({addresses:t,network:r,storage:a,currency:n}){let o=new fe({storage:a,proxyApiUrl:A(this,De)});return Wt({addresses:t,currency:n,network:r,glacierService:A(this,ne),tokenService:o})}getManifest(){let t=vmModuleTypes.parseManifest(xt);return t.success?t.data:void 0}getNetworkFee(t){let{isTestnet:r,vmName:a}=t;return Tt({isTestnet:!!r,vmName:a})}getTransactionHistory({network:t,address:r,nextPageToken:a,offset:n}){return Nt({network:t,address:r,nextPageToken:a,offset:n,glacierService:A(this,ne)})}getTokens(t){return Promise.resolve([])}buildDerivationPath(t){return Ie(t)}async deriveAddress(t){return yr({...t,approvalController:A(this,U)})}async onRpcRequest(t,r){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return Yt({request:t,network:r,approvalController:A(this,U)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return xr({request:t,network:r,approvalController:A(this,U),glacierApiUrl:A(this,oe),appInfo:A(this,se)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return pr({request:t,network:r,approvalController:A(this,U),glacierApiUrl:A(this,oe),appInfo:A(this,se)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:r}){return jt({blockchainId:t,isTestnet:r})}};ne=new WeakMap,De=new WeakMap,oe=new WeakMap,U=new WeakMap,se=new WeakMap;var Vc=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,Bc=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
|
|
23
23
|
|
|
24
|
-
exports.AvalancheModule =
|
|
25
|
-
exports.isAddPermissionlessDelegatorTx =
|
|
26
|
-
exports.isAddPermissionlessValidatorTx =
|
|
27
|
-
exports.isAddSubnetValidatorTx =
|
|
28
|
-
exports.isBaseTx =
|
|
29
|
-
exports.isBlockchainDetails =
|
|
30
|
-
exports.isChainDetails =
|
|
31
|
-
exports.isConvertSubnetToL1Tx =
|
|
32
|
-
exports.isCreateChainTx =
|
|
33
|
-
exports.isCreateSubnetTx =
|
|
34
|
-
exports.isDisableL1ValidatorTx =
|
|
35
|
-
exports.isExportImportTxDetails =
|
|
36
|
-
exports.isExportTx =
|
|
37
|
-
exports.isImportTx =
|
|
38
|
-
exports.isIncreaseL1ValidatorBalanceTx =
|
|
39
|
-
exports.isRegisterL1ValidatorTx =
|
|
40
|
-
exports.isRemoveSubnetValidatorTx =
|
|
41
|
-
exports.isSetL1ValidatorWeightTx =
|
|
42
|
-
exports.isStakingDetails =
|
|
43
|
-
exports.isSubnetDetails =
|
|
44
|
-
exports.isTokenWithBalanceAVM =
|
|
45
|
-
exports.isTokenWithBalancePVM =
|
|
24
|
+
exports.AvalancheModule = Tr;
|
|
25
|
+
exports.isAddPermissionlessDelegatorTx = Ge;
|
|
26
|
+
exports.isAddPermissionlessValidatorTx = We;
|
|
27
|
+
exports.isAddSubnetValidatorTx = $e;
|
|
28
|
+
exports.isBaseTx = ia;
|
|
29
|
+
exports.isBlockchainDetails = ir;
|
|
30
|
+
exports.isChainDetails = sr;
|
|
31
|
+
exports.isConvertSubnetToL1Tx = tr;
|
|
32
|
+
exports.isCreateChainTx = ca;
|
|
33
|
+
exports.isCreateSubnetTx = la;
|
|
34
|
+
exports.isDisableL1ValidatorTx = rr;
|
|
35
|
+
exports.isExportImportTxDetails = rs;
|
|
36
|
+
exports.isExportTx = je;
|
|
37
|
+
exports.isImportTx = qe;
|
|
38
|
+
exports.isIncreaseL1ValidatorBalanceTx = ar;
|
|
39
|
+
exports.isRegisterL1ValidatorTx = nr;
|
|
40
|
+
exports.isRemoveSubnetValidatorTx = Je;
|
|
41
|
+
exports.isSetL1ValidatorWeightTx = or;
|
|
42
|
+
exports.isStakingDetails = ts;
|
|
43
|
+
exports.isSubnetDetails = cr;
|
|
44
|
+
exports.isTokenWithBalanceAVM = Bc;
|
|
45
|
+
exports.isTokenWithBalancePVM = Vc;
|
|
46
46
|
//# sourceMappingURL=out.js.map
|
|
47
47
|
//# sourceMappingURL=index.cjs.map
|