@avalabs/avalanche-module 0.12.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -17,7 +17,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
17
17
  var M__default = /*#__PURE__*/_interopDefault(M);
18
18
  var Ua__default = /*#__PURE__*/_interopDefault(Ua);
19
19
 
20
- var ia=Object.defineProperty;var sa=(e,t,a)=>t in e?ia(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var U=(e,t,a)=>(sa(e,typeof t!="symbol"?t+"":t,a),a),mt=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var A=(e,t,a)=>(mt(e,t,"read from private field"),a?a.call(e):t.get(e)),R=(e,t,a)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,a);},E=(e,t,a,r)=>(mt(e,t,"write to private field"),r?r.call(e,a):t.set(e,a),a);var pt={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"]}},manifestVersion:"0.0"};var C=async({isTestnet:e,isDevnet:t})=>{let a=t?coreChainsSdk.AVALANCHE_P_DEV_NETWORK:e?coreChainsSdk.AVALANCHE_XP_TEST_NETWORK:coreChainsSdk.AVALANCHE_XP_NETWORK,r=await new avalanchejs.info.InfoApi(a.rpcUrl).getUpgradesInfo().catch(()=>{});return t?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultDevnetProvider(r):e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider(r):coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider(r)};async function dt({isTestnet:e,isDevnet:t,vmName:a}){let r=await C({isTestnet:e,isDevnet:t});if(a===vmModuleTypes.NetworkVMType.AVM||!r.isEtnaEnabled())return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0};let{price:n}=await r.getApiP().getFeeState(),o=100/Number(n)/100,s=Math.min(1,Math.max(o,.15)),i=Math.min(1,Math.max(o*2,.3)),l=1+s,c=1+i;return {baseFee:n,low:{maxFeePerGas:n},medium:{maxFeePerGas:n*BigInt(Math.round(100*l))/100n},high:{maxFeePerGas:n*BigInt(Math.round(100*c))/100n},isFixedFee:!1}}var gt=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,ft=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function ye(e,t,a="tx"){return `${e}/${a}/${t}`}function F({amount:e,decimals:t}){return e===void 0?new M__default.default(0):new M__default.default(e/10**t)}function yt({tx:e,address:t,networkToken:a,chainId:r,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(m=>m.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(m=>m.addresses)||[]),l=ga({tx:e,isTestnet:o,networkToken:a,froms:s}),c=fa({tx:e,isTestnet:o,networkToken:a}),g=t.toLowerCase().startsWith("p-")?t.slice(2):t,p=s.has(g);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:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:l.toString()}],gasUsed:c.toString(),explorerLink:ye(n??"",e.txHash,"tx"),txType:e.txType,chainId:r.toString()}}function ga({tx:e,isTestnet:t,networkToken:a,froms:r}){let n=["ImportTx","ExportTx"].includes(e.txType),o=e.txType==="BaseTx",s=e.emittedUtxos.filter(m=>m.asset.assetId===ae(!!t)&&!m.addresses.some(d=>r.has(d))).reduce((m,d)=>m.add(d.asset.amount),new M__default.default(0)),i=e.value.find(m=>m.assetId===ae(!!t))?.amount,l=s.gt(new M__default.default(0))?s:i?new M__default.default(i):new M__default.default(0)??new M__default.default(0),c=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,g=e.emittedUtxos.filter(m=>m.asset.assetId===ae(!!t)&&(e.txType==="ImportTx"&&m.consumedOnChainId===c||e.txType==="ExportTx"&&m.consumedOnChainId!==c)).reduce((m,d)=>m.add(d.amount),new M__default.default(0)),p=o?l:n?g:e.amountStaked.length===0?xt(e.value,!!t):xt(e.amountStaked,!!t);return F({amount:p?.toNumber(),decimals:a.decimals})}function fa({tx:e,isTestnet:t,networkToken:a}){let r=e.amountBurned?.filter(n=>n.assetId===ae(!!t)).reduce((n,o)=>n.add(o.amount),new M__default.default(0));return F({amount:r?.toNumber(),decimals:a.decimals})}function xt(e,t){return e.filter(a=>a.assetId===ae(t)).reduce((a,r)=>a.add(r.amount),new M__default.default(0))}function ae(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function Tt({tx:e,address:t,networkToken:a,chainId:r,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(x=>x.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(x=>x.addresses)||[]),l=t.toLowerCase().startsWith("x-")?t.slice(2):t,c=["ImportTx","ExportTx"].includes(e.txType),{amount:g,isSender:p}=ya({tx:e,isTestnet:o,networkToken:a,chainAddress:l,isImportExport:c}),m=Ta({isTestnet:o,tx:e,networkToken:a}),d=c?g.toString():p?g.minus(m).toString():g.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:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:d}],gasUsed:m.toString(),explorerLink:ye(n??"",e.txHash,"tx"),txType:e.txType,chainId:r.toString()}}function ya({tx:e,isTestnet:t,networkToken:a,chainAddress:r,isImportExport:n}){if(n){let c=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,g=e.emittedUtxos.filter(p=>p.asset.assetId===ne(!!t)&&(e.txType==="ImportTx"&&p.consumedOnChainId===c||e.txType==="ExportTx"&&p.consumedOnChainId!==c)).reduce((p,m)=>p.add(m.asset.amount),new M__default.default(0));return {amount:F({amount:g.toNumber(),decimals:a.decimals}),isSender:!0}}let o=e.consumedUtxos.filter(c=>c.asset.assetId===ne(!!t)&&c.addresses.includes(r)).reduce((c,g)=>c.add(g.asset.amount),new M__default.default(0)),s=e.emittedUtxos.filter(c=>c.asset.assetId===ne(!!t)&&c.addresses.includes(r)).reduce((c,g)=>c.add(g.asset.amount),new M__default.default(0)),i=o.gte(s),l=i?o.minus(s):s.minus(o);return {amount:F({amount:l.toNumber(),decimals:a.decimals}),isSender:i}}function Ta({isTestnet:e,tx:t,networkToken:a}){let r=t.amountUnlocked.filter(s=>s.assetId===ne(!!e)).reduce((s,i)=>s.add(i.amount),new M__default.default(0)),n=t.amountCreated.filter(s=>s.assetId===ne(!!e)).reduce((s,i)=>s.add(i.amount),new M__default.default(0)),o=r.minus(n);return F({amount:o.toNumber(),decimals:a.decimals})}function ne(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var S=e=>e.chainId===coreChainsSdk.ChainId.AVALANCHE_DEVNET_P||e.chainId===43117||e.chainId===coreChainsSdk.ChainId.AVALANCHE_DEVNET_X;var St=async({address:e,nextPageToken:t,offset:a,network:r,glacierService:n})=>{let{isTestnet:o,networkToken:s,explorerUrl:i,chainId:l}=r;if(!n.isHealthy())return {transactions:[],nextPageToken:""};let g=S(r)?glacierSdk.Network.DEVNET:r.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,p=await n.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:Ia(e),network:g,pageSize:a,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),m=[];return gt(p)&&(m=p.transactions.map(d=>yt({tx:d,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:l}))),ft(p)&&(m=p.transactions.map(d=>Tt({tx:d,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:l}))),{transactions:m,nextPageToken:p.nextPageToken}},Ia=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var Sa={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},va={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},we=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return Sa;case vmModuleTypes.Environment.DEV:return va}};var Ie=class extends Error{constructor(){super(...arguments);U(this,"message","Glacier is unhealthy. Try again later.");}},Se=class{constructor({glacierApiUrl:t,headers:a}){U(this,"glacierSdk");U(this,"isGlacierHealthy",!0);U(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:t,HEADERS:a});}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 Ie&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof Ie&&this.setGlacierToUnhealthy(),a}}};var O=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:r=oe.exponential()})=>{let n=0,o=0,s;for(;o<a;){o>0&&await ka(n);try{let l=await e(o);if(t(l))return l}catch(l){s=l;}n=r(o),o++;}let i=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(i)},oe=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function ka(e){return new Promise(t=>setTimeout(t,e))}var Me=e=>O({operation:t=>e(t>0),maxRetries:2,backoffPolicy:oe.constant(1),isSuccess:t=>t?.status?.error_code!==429});function Dt(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function Le(e){let t,a=0;for(t=0;t<e.length;t++){let r=Dt(e[t]??"");a=a+65027/r;}return (""+a).slice(0,16)}async function ve(e,t){let a=await fetch(...e);if(!a.ok)throw new Error(`Request failed with status ${a.status}`);let r=await a.json();return t.parse(r)}var ie=class{constructor(t){this.proxyApiUrl=t;}simplePrice(t){let a=new URLSearchParams(t);return ve([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(t){let{id:a,...r}=t,n=new URLSearchParams(r);return ve([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${a}?${n}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.SimplePriceResponseSchema)}};var kt=coreCoingeckoSdk.getBasicCoingeckoHttp(),L,j,ce=class{constructor({storage:t,proxyApiUrl:a}){R(this,L,void 0);R(this,j,void 0);U(this,"transformSimplePriceResponse",(t,a=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let r={};return Object.keys(t).forEach(n=>{let o=t[n];r[n]={},a.forEach(s=>{r[n]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),r});E(this,L,t),E(this,j,a);}async getSimplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD]}){let r,o=`getSimplePrice-${t?`${Le(t)}-${a.toString()}`:`${a.toString()}`}`;if(r=A(this,L)?.get?.(o),r)return r;try{r=await Me(s=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{r=void 0;}return A(this,L)?.set?.(o,r),r}async getPricesByAddresses(t,a,r=coreCoingeckoSdk.VsCurrencyType.USD){let n,s=`getPricesWithMarketDataByAddresses-${`${Le(t)}-${a}-${r}`}`;if(n=A(this,L)?.get?.(s),n)return n;try{n=await Me(i=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:r,useCoingeckoProxy:i}));}catch{n=void 0;}return A(this,L)?.set?.(s,n),n}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:r=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:n=!1}){return n?new ie(A(this,j)).simplePriceByContractAddresses({id:t,contract_addresses:a,vs_currencies:[r],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}):coreCoingeckoSdk.simpleTokenPrice(kt,{assetPlatformId:t,tokenAddresses:a,currencies:[r],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:r=!1,vol24:n=!1,change24:o=!1,lastUpdated:s=!1,useCoingeckoProxy:i=!1,shouldThrow:l=!0}){if(i){let c=await new ie(A(this,j)).simplePrice({ids:t,vs_currencies:a,include_market_cap:r,include_24hr_vol:n,include_24hr_change:o,include_last_updated_at:s});return this.transformSimplePriceResponse(c,a)}return coreCoingeckoSdk.simplePrice(kt,{coinIds:t,currencies:a,marketCap:r,vol24:n,change24:o,lastUpdated:s,shouldThrow:l})}};L=new WeakMap,j=new WeakMap;zod.object({date:zod.string(),usd:zod.record(zod.number())});var u=(e,t,a,r)=>({label:e,type:vmModuleTypes.DetailItemType.CURRENCY,value:t,maxDecimals:a,symbol:r}),f=(e,t,a="horizontal")=>({label:e,alignment:a,type:vmModuleTypes.DetailItemType.TEXT,value:t});var me=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t}),y=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t});var V=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t});var X=({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 bt=e=>Object.keys(e).includes("unlockedUnstaked"),Pt=e=>Object.keys(e).includes("locked");function De(e){let t=Object.values(e).reduce(function(a,r){let n=r.reduce(function(o,s){let i=Number(s.amount);return o+i},0);return a+n},0);return BigInt(t)}var Nt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:r,vol24:n,change24:o,coingeckoId:s})=>{let i={},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 d in l){let x=l[d];if(!x||!x.length){i[d]=0n;continue}x.forEach(T=>{let P=(i[d]??0n)+BigInt(T.amount);i[d]=P;});}let c=new coreUtilsSdk.TokenUnit(i.unlockedUnstaked?i.unlockedUnstaked:0n,t.decimals,t.symbol),g=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,p=new coreUtilsSdk.TokenUnit(De(e),t.decimals,t.symbol),m=a?p.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:p.toSubUnit(),balanceInCurrency:m,balanceDisplayValue:p.toDisplay(),balanceCurrencyDisplayValue:m?.toFixed(2),available:c.toSubUnit(),availableInCurrency:g,availableDisplayValue:c.toDisplay(),availableCurrencyDisplayValue:g?.toFixed(2),utxos:e,balancePerType:{lockedStaked:i.lockedStaked,lockedStakeable:i.lockedStakeable,lockedPlatform:i.lockedPlatform,atomicMemoryLocked:i.atomicMemoryLocked,atomicMemoryUnlocked:i.atomicMemoryUnlocked,unlockedUnstaked:i.unlockedUnstaked,unlockedStaked:i.unlockedStaked,pendingStaked:i.pendingStaked},marketCap:r,vol24:n,change24:o,coingeckoId:s}};var Rt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:r,vol24:n,change24:o,coingeckoId:s})=>{let i={},l={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let d in l){let x=l[d];if(!x||!x.length){i[d]=0n;continue}x.forEach(T=>{let P=(i[d]??0n)+BigInt(T.amount);i[d]=P;});}let c=new coreUtilsSdk.TokenUnit(i.unlocked?i.unlocked:0n,t.decimals,t.symbol),g=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,p=new coreUtilsSdk.TokenUnit(De(e),t.decimals,t.symbol),m=a!==void 0?p.mul(a):void 0;return {...t,coingeckoId:s,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:p.toSubUnit(),balanceInCurrency:m?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:p.toDisplay(),balanceCurrencyDisplayValue:m?.toDisplay({fixedDp:2}),available:c.toSubUnit(),availableInCurrency:g,availableDisplayValue:c.toDisplay(),availableCurrencyDisplayValue:g?.toFixed(2),utxos:e,balancePerType:{unlocked:i.unlocked,locked:i.locked,atomicMemoryUnlocked:i.atomicMemoryUnlocked,atomicMemoryLocked:i.atomicMemoryLocked},marketCap:r,vol24:n,change24:o}};var Bt=async({addresses:e,currency:t,network:a,glacierService:r,tokenService:n})=>{if(!r.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let s=t.toLowerCase(),i=e[0]??"",l=a.networkToken,c=a.pricingProviders?.coingecko.nativeTokenId,g=a.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,p=S(a)?glacierSdk.Network.DEVNET:a.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,m=await r.getChainBalance({blockchainId:g,network:p,addresses:e.join(",")}).then(w=>w.balances),d=c?await n.getSimplePrice({coinIds:[c],currencies:[s]}):{},x=d?.[c??""]?.[s]?.price??void 0,T=d?.[c??""]?.[s]?.marketCap??void 0,b=d?.[c??""]?.[s]?.vol24??void 0,P=d?.[c??""]?.[s]?.change24??void 0,k;return bt(m)?(k=Nt({balance:m,networkToken:l,priceInCurrency:x,marketCap:T,vol24:b,change24:P,coingeckoId:c??""}),{[i]:{[l.symbol]:k}}):Pt(m)?(k=Rt({balance:m,networkToken:l,priceInCurrency:x,marketCap:T,vol24:b,change24:P,coingeckoId:c??""}),{[i]:{[l.symbol]:k}}):Promise.reject("Incorrect type balance was returned from glacier")};function wt({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,r=Ua__default.default.createHash("sha256").update(a).digest("base64");return "avax:"+Fa(r).substring(0,32)}var Fa=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var _t=async({accountIndex:e,xpubXP:t,walletType:a,network:r})=>{let n=!!r?.isTestnet,o=r&&S(r);if(t===void 0)throw rpcErrors.rpcErrors.invalidParams("xpubXP is required to get address");let s=await C({isTestnet:n,isDevnet:o}),i;switch(a){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:{i=coreWalletsSdk.Avalanche.getAddressPublicKeyFromXpub(t,e);break}case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{i=Buffer.from(t,"hex");break}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${a}`)}return {[vmModuleTypes.NetworkVMType.AVM]:s.getAddress(i,"X"),[vmModuleTypes.NetworkVMType.PVM]:s.getAddress(i,"P")}};var Xa=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")])]),Ut=e=>Xa.safeParse(e);var Ot=async({request:e,network:t,approvalController:a})=>{let r=Ut(e.params);if(!r.success)return console.error("invalid params",r.error),{error:rpcErrors.rpcErrors.invalidParams({message:"Params are invalid",data:{cause:r.error}})};let[n,o]=r.data,s=Buffer.from(n,"utf-8").toString("hex"),i={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE,data:s,accountIndex:o},l={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},details:[{title:"Message",items:[n]}]},c=await a.requestApproval({request:e,displayData:l,signingData:i});return "error"in c?{error:c.error}:"signedData"in c?{result:c.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var Ga=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()}),Xt=e=>Ga.safeParse(e);var Gt=({utxoHexes:e=[],vm:t})=>{try{let a=avalanchejs.utils.getManagerForVM(t).getDefaultCodec();return e.map(r=>{let n=avalanchejs.utils.hexToBuffer(r);return avalanchejs.Utxo.fromBytes(n,a)[0]})}catch{return []}};var ke=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 Wt=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";case vmModuleTypes.TxType.ConvertSubnetToL1:return "Convert Subnet to L1";case vmModuleTypes.TxType.DisableL1Validator:return "Disable L1 Validator";case vmModuleTypes.TxType.IncreaseL1ValidatorBalance:return "Increase L1 Validator Balance";case vmModuleTypes.TxType.RegisterL1Validator:return "Register L1 Validator";case vmModuleTypes.TxType.SetL1ValidatorWeight:return "Set L1 Validator Weight";default:return "Sign Message"}};var Ue=async({indices:e,chainAlias:t,isChange:a,isTestnet:r,xpubXP:n})=>{if(!n||a&&t!=="X")return [];let o=await C({isTestnet:r});return e.map(s=>coreWalletsSdk.Avalanche.getAddressFromXpub(n,s,o,t,a))};var Fe=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,Oe=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,Xe=e=>e.type===vmModuleTypes.TxType.Export,He=e=>e.type===vmModuleTypes.TxType.Import,$a=e=>e.type===vmModuleTypes.TxType.Base,Ge=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,Ja=e=>e.type===vmModuleTypes.TxType.CreateChain,qa=e=>e.type===vmModuleTypes.TxType.CreateSubnet,We=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,jt=e=>e.type===vmModuleTypes.TxType.ConvertSubnetToL1,$t=e=>e.type===vmModuleTypes.TxType.DisableL1Validator,Jt=e=>e.type===vmModuleTypes.TxType.IncreaseL1ValidatorBalance,qt=e=>e.type===vmModuleTypes.TxType.RegisterL1Validator,Kt=e=>e.type===vmModuleTypes.TxType.SetL1ValidatorWeight,ko=e=>Fe(e)||Oe(e)||Ge(e)||We(e),bo=e=>Xe(e)||He(e),zt=e=>$a(e),Yt=e=>Ja(e),Zt=e=>qa(e);var B=(r=>(r.AVM="X-Chain",r.PVM="P-Chain",r.EVM="C-Chain",r))(B||{});function be(e){return e===coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID}var je=(e,t)=>{let a=[],{txFee:r,nodeID:n,start:o,end:s,stake:i,subnetID:l}=e,c=[y("Node ID",n),be(l)?f("Subnet ID","Primary Network"):y("Subnet ID",l),u("Stake Amount",i,9,t),V("Start Date",o),V("End Date",s)];return a.push({title:"Staking Details",items:c}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var $e=(e,t)=>{let a=[],{txFee:r,nodeID:n,delegationFee:o,start:s,end:i,stake:l,subnetID:c,signature:g,publicKey:p}=e,m=[y("Node ID",n),be(c)?f("Subnet ID","Primary Network"):y("Subnet ID",c)];return p&&g&&m.push(y("Public Key",p),y("Proof",g)),m.push(u("Stake Amount",l,9,t),f("Delegation Fee",`${o/1e4} %`),V("Start Date",s),V("End Date",i)),a.push({title:"Staking Details",items:m}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var Je=(e,t)=>{let a=[],{txFee:r,nodeID:n,start:o,end:s,subnetID:i}=e,l=[y("Subnet ID",i),y("Node ID",n),V("Start Date",o),V("End Date",s)];return a.push({title:"Staking Details",items:l}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var qe=(e,t)=>{let a=[],{txFee:r,chainID:n,managerAddress:o,subnetID:s,validators:i}=e,l=[y("Subnet ID",s),y("Chain ID",n),me("Manager Address",o)];return a.push({title:"L1 Details",items:l}),i.forEach(({balance:c,stake:g,nodeId:p,remainingBalanceOwners:m,deactivationOwners:d},x)=>{let T=[y("Node ID",p),u("Balance",c,9,t),u("Stake",g,9,t)];d.length>0&&T.push(f(`${d.length>1?"Owners":"Owner"} Able to Deactivate`,d.join(`
20
+ var ia=Object.defineProperty;var sa=(e,t,a)=>t in e?ia(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var U=(e,t,a)=>(sa(e,typeof t!="symbol"?t+"":t,a),a),mt=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var A=(e,t,a)=>(mt(e,t,"read from private field"),a?a.call(e):t.get(e)),R=(e,t,a)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,a);},E=(e,t,a,r)=>(mt(e,t,"write to private field"),r?r.call(e,a):t.set(e,a),a);var pt={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 C=async({isTestnet:e,isDevnet:t})=>{let a=t?coreChainsSdk.AVALANCHE_P_DEV_NETWORK:e?coreChainsSdk.AVALANCHE_XP_TEST_NETWORK:coreChainsSdk.AVALANCHE_XP_NETWORK,r=await new avalanchejs.info.InfoApi(a.rpcUrl).getUpgradesInfo().catch(()=>{});return t?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultDevnetProvider(r):e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider(r):coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider(r)};async function dt({isTestnet:e,isDevnet:t,vmName:a}){let r=await C({isTestnet:e,isDevnet:t});if(a===vmModuleTypes.NetworkVMType.AVM||!r.isEtnaEnabled())return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0};let{price:n}=await r.getApiP().getFeeState(),o=100/Number(n)/100,s=Math.min(1,Math.max(o,.15)),i=Math.min(1,Math.max(o*2,.3)),l=1+s,c=1+i;return {baseFee:n,low:{maxFeePerGas:n},medium:{maxFeePerGas:n*BigInt(Math.round(100*l))/100n},high:{maxFeePerGas:n*BigInt(Math.round(100*c))/100n},isFixedFee:!1}}var gt=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,ft=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function ye(e,t,a="tx"){return `${e}/${a}/${t}`}function F({amount:e,decimals:t}){return e===void 0?new M__default.default(0):new M__default.default(e/10**t)}function yt({tx:e,address:t,networkToken:a,chainId:r,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(m=>m.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(m=>m.addresses)||[]),l=ga({tx:e,isTestnet:o,networkToken:a,froms:s}),c=fa({tx:e,isTestnet:o,networkToken:a}),g=t.toLowerCase().startsWith("p-")?t.slice(2):t,p=s.has(g);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:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:l.toString()}],gasUsed:c.toString(),explorerLink:ye(n??"",e.txHash,"tx"),txType:e.txType,chainId:r.toString()}}function ga({tx:e,isTestnet:t,networkToken:a,froms:r}){let n=["ImportTx","ExportTx"].includes(e.txType),o=e.txType==="BaseTx",s=e.emittedUtxos.filter(m=>m.asset.assetId===ae(!!t)&&!m.addresses.some(d=>r.has(d))).reduce((m,d)=>m.add(d.asset.amount),new M__default.default(0)),i=e.value.find(m=>m.assetId===ae(!!t))?.amount,l=s.gt(new M__default.default(0))?s:i?new M__default.default(i):new M__default.default(0)??new M__default.default(0),c=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,g=e.emittedUtxos.filter(m=>m.asset.assetId===ae(!!t)&&(e.txType==="ImportTx"&&m.consumedOnChainId===c||e.txType==="ExportTx"&&m.consumedOnChainId!==c)).reduce((m,d)=>m.add(d.amount),new M__default.default(0)),p=o?l:n?g:e.amountStaked.length===0?xt(e.value,!!t):xt(e.amountStaked,!!t);return F({amount:p?.toNumber(),decimals:a.decimals})}function fa({tx:e,isTestnet:t,networkToken:a}){let r=e.amountBurned?.filter(n=>n.assetId===ae(!!t)).reduce((n,o)=>n.add(o.amount),new M__default.default(0));return F({amount:r?.toNumber(),decimals:a.decimals})}function xt(e,t){return e.filter(a=>a.assetId===ae(t)).reduce((a,r)=>a.add(r.amount),new M__default.default(0))}function ae(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function Tt({tx:e,address:t,networkToken:a,chainId:r,explorerUrl:n,isTestnet:o}){let s=new Set(e.consumedUtxos.flatMap(x=>x.addresses)||[]),i=new Set(e.emittedUtxos.flatMap(x=>x.addresses)||[]),l=t.toLowerCase().startsWith("x-")?t.slice(2):t,c=["ImportTx","ExportTx"].includes(e.txType),{amount:g,isSender:p}=ya({tx:e,isTestnet:o,networkToken:a,chainAddress:l,isImportExport:c}),m=Ta({isTestnet:o,tx:e,networkToken:a}),d=c?g.toString():p?g.minus(m).toString():g.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:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:d}],gasUsed:m.toString(),explorerLink:ye(n??"",e.txHash,"tx"),txType:e.txType,chainId:r.toString()}}function ya({tx:e,isTestnet:t,networkToken:a,chainAddress:r,isImportExport:n}){if(n){let c=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,g=e.emittedUtxos.filter(p=>p.asset.assetId===ne(!!t)&&(e.txType==="ImportTx"&&p.consumedOnChainId===c||e.txType==="ExportTx"&&p.consumedOnChainId!==c)).reduce((p,m)=>p.add(m.asset.amount),new M__default.default(0));return {amount:F({amount:g.toNumber(),decimals:a.decimals}),isSender:!0}}let o=e.consumedUtxos.filter(c=>c.asset.assetId===ne(!!t)&&c.addresses.includes(r)).reduce((c,g)=>c.add(g.asset.amount),new M__default.default(0)),s=e.emittedUtxos.filter(c=>c.asset.assetId===ne(!!t)&&c.addresses.includes(r)).reduce((c,g)=>c.add(g.asset.amount),new M__default.default(0)),i=o.gte(s),l=i?o.minus(s):s.minus(o);return {amount:F({amount:l.toNumber(),decimals:a.decimals}),isSender:i}}function Ta({isTestnet:e,tx:t,networkToken:a}){let r=t.amountUnlocked.filter(s=>s.assetId===ne(!!e)).reduce((s,i)=>s.add(i.amount),new M__default.default(0)),n=t.amountCreated.filter(s=>s.assetId===ne(!!e)).reduce((s,i)=>s.add(i.amount),new M__default.default(0)),o=r.minus(n);return F({amount:o.toNumber(),decimals:a.decimals})}function ne(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var S=e=>e.chainId===coreChainsSdk.ChainId.AVALANCHE_DEVNET_P||e.chainId===43117||e.chainId===coreChainsSdk.ChainId.AVALANCHE_DEVNET_X;var St=async({address:e,nextPageToken:t,offset:a,network:r,glacierService:n})=>{let{isTestnet:o,networkToken:s,explorerUrl:i,chainId:l}=r;if(!n.isHealthy())return {transactions:[],nextPageToken:""};let g=S(r)?glacierSdk.Network.DEVNET:r.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,p=await n.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:Ia(e),network:g,pageSize:a,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),m=[];return gt(p)&&(m=p.transactions.map(d=>yt({tx:d,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:l}))),ft(p)&&(m=p.transactions.map(d=>Tt({tx:d,isTestnet:o,address:e,networkToken:s,explorerUrl:i,chainId:l}))),{transactions:m,nextPageToken:p.nextPageToken}},Ia=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var Sa={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},va={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},we=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return Sa;case vmModuleTypes.Environment.DEV:return va}};var Ie=class extends Error{constructor(){super(...arguments);U(this,"message","Glacier is unhealthy. Try again later.");}},Se=class{constructor({glacierApiUrl:t,headers:a}){U(this,"glacierSdk");U(this,"isGlacierHealthy",!0);U(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:t,HEADERS:a});}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 Ie&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof Ie&&this.setGlacierToUnhealthy(),a}}};var O=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:r=oe.exponential()})=>{let n=0,o=0,s;for(;o<a;){o>0&&await ka(n);try{let l=await e(o);if(t(l))return l}catch(l){s=l;}n=r(o),o++;}let i=s?`Max retry exceeded. ${s}`:"Max retry exceeded.";throw new Error(i)},oe=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function ka(e){return new Promise(t=>setTimeout(t,e))}var Me=e=>O({operation:t=>e(t>0),maxRetries:2,backoffPolicy:oe.constant(1),isSuccess:t=>t?.status?.error_code!==429});function Dt(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function Le(e){let t,a=0;for(t=0;t<e.length;t++){let r=Dt(e[t]??"");a=a+65027/r;}return (""+a).slice(0,16)}async function ve(e,t){let a=await fetch(...e);if(!a.ok)throw new Error(`Request failed with status ${a.status}`);let r=await a.json();return t.parse(r)}var ie=class{constructor(t){this.proxyApiUrl=t;}simplePrice(t){let a=new URLSearchParams(t);return ve([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(t){let{id:a,...r}=t,n=new URLSearchParams(r);return ve([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${a}?${n}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.SimplePriceResponseSchema)}};var kt=coreCoingeckoSdk.getBasicCoingeckoHttp(),L,j,ce=class{constructor({storage:t,proxyApiUrl:a}){R(this,L,void 0);R(this,j,void 0);U(this,"transformSimplePriceResponse",(t,a=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let r={};return Object.keys(t).forEach(n=>{let o=t[n];r[n]={},a.forEach(s=>{r[n]={[s]:{price:o?.[s],change24:o?.[`${s}_24h_change`],vol24:o?.[`${s}_24h_vol`],marketCap:o?.[`${s}_market_cap`]}};});}),r});E(this,L,t),E(this,j,a);}async getSimplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD]}){let r,o=`getSimplePrice-${t?`${Le(t)}-${a.toString()}`:`${a.toString()}`}`;if(r=A(this,L)?.get?.(o),r)return r;try{r=await Me(s=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:s}));}catch{r=void 0;}return A(this,L)?.set?.(o,r),r}async getPricesByAddresses(t,a,r=coreCoingeckoSdk.VsCurrencyType.USD){let n,s=`getPricesWithMarketDataByAddresses-${`${Le(t)}-${a}-${r}`}`;if(n=A(this,L)?.get?.(s),n)return n;try{n=await Me(i=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:r,useCoingeckoProxy:i}));}catch{n=void 0;}return A(this,L)?.set?.(s,n),n}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:r=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:n=!1}){return n?new ie(A(this,j)).simplePriceByContractAddresses({id:t,contract_addresses:a,vs_currencies:[r],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}):coreCoingeckoSdk.simpleTokenPrice(kt,{assetPlatformId:t,tokenAddresses:a,currencies:[r],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:r=!1,vol24:n=!1,change24:o=!1,lastUpdated:s=!1,useCoingeckoProxy:i=!1,shouldThrow:l=!0}){if(i){let c=await new ie(A(this,j)).simplePrice({ids:t,vs_currencies:a,include_market_cap:r,include_24hr_vol:n,include_24hr_change:o,include_last_updated_at:s});return this.transformSimplePriceResponse(c,a)}return coreCoingeckoSdk.simplePrice(kt,{coinIds:t,currencies:a,marketCap:r,vol24:n,change24:o,lastUpdated:s,shouldThrow:l})}};L=new WeakMap,j=new WeakMap;zod.object({date:zod.string(),usd:zod.record(zod.number())});var u=(e,t,a,r)=>({label:e,type:vmModuleTypes.DetailItemType.CURRENCY,value:t,maxDecimals:a,symbol:r}),f=(e,t,a="horizontal")=>({label:e,alignment:a,type:vmModuleTypes.DetailItemType.TEXT,value:t});var me=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t}),y=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t});var V=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t});var X=({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 bt=e=>Object.keys(e).includes("unlockedUnstaked"),Pt=e=>Object.keys(e).includes("locked");function De(e){let t=Object.values(e).reduce(function(a,r){let n=r.reduce(function(o,s){let i=Number(s.amount);return o+i},0);return a+n},0);return BigInt(t)}var Nt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:r,vol24:n,change24:o,coingeckoId:s})=>{let i={},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 d in l){let x=l[d];if(!x||!x.length){i[d]=0n;continue}x.forEach(T=>{let P=(i[d]??0n)+BigInt(T.amount);i[d]=P;});}let c=new coreUtilsSdk.TokenUnit(i.unlockedUnstaked?i.unlockedUnstaked:0n,t.decimals,t.symbol),g=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,p=new coreUtilsSdk.TokenUnit(De(e),t.decimals,t.symbol),m=a?p.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:p.toSubUnit(),balanceInCurrency:m,balanceDisplayValue:p.toDisplay(),balanceCurrencyDisplayValue:m?.toFixed(2),available:c.toSubUnit(),availableInCurrency:g,availableDisplayValue:c.toDisplay(),availableCurrencyDisplayValue:g?.toFixed(2),utxos:e,balancePerType:{lockedStaked:i.lockedStaked,lockedStakeable:i.lockedStakeable,lockedPlatform:i.lockedPlatform,atomicMemoryLocked:i.atomicMemoryLocked,atomicMemoryUnlocked:i.atomicMemoryUnlocked,unlockedUnstaked:i.unlockedUnstaked,unlockedStaked:i.unlockedStaked,pendingStaked:i.pendingStaked},marketCap:r,vol24:n,change24:o,coingeckoId:s}};var Rt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:r,vol24:n,change24:o,coingeckoId:s})=>{let i={},l={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let d in l){let x=l[d];if(!x||!x.length){i[d]=0n;continue}x.forEach(T=>{let P=(i[d]??0n)+BigInt(T.amount);i[d]=P;});}let c=new coreUtilsSdk.TokenUnit(i.unlocked?i.unlocked:0n,t.decimals,t.symbol),g=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,p=new coreUtilsSdk.TokenUnit(De(e),t.decimals,t.symbol),m=a!==void 0?p.mul(a):void 0;return {...t,coingeckoId:s,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:p.toSubUnit(),balanceInCurrency:m?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:p.toDisplay(),balanceCurrencyDisplayValue:m?.toDisplay({fixedDp:2}),available:c.toSubUnit(),availableInCurrency:g,availableDisplayValue:c.toDisplay(),availableCurrencyDisplayValue:g?.toFixed(2),utxos:e,balancePerType:{unlocked:i.unlocked,locked:i.locked,atomicMemoryUnlocked:i.atomicMemoryUnlocked,atomicMemoryLocked:i.atomicMemoryLocked},marketCap:r,vol24:n,change24:o}};var Bt=async({addresses:e,currency:t,network:a,glacierService:r,tokenService:n})=>{if(!r.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let s=t.toLowerCase(),i=e[0]??"",l=a.networkToken,c=a.pricingProviders?.coingecko.nativeTokenId,g=a.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,p=S(a)?glacierSdk.Network.DEVNET:a.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,m=await r.getChainBalance({blockchainId:g,network:p,addresses:e.join(",")}).then(w=>w.balances),d=c?await n.getSimplePrice({coinIds:[c],currencies:[s]}):{},x=d?.[c??""]?.[s]?.price??void 0,T=d?.[c??""]?.[s]?.marketCap??void 0,b=d?.[c??""]?.[s]?.vol24??void 0,P=d?.[c??""]?.[s]?.change24??void 0,k;return bt(m)?(k=Nt({balance:m,networkToken:l,priceInCurrency:x,marketCap:T,vol24:b,change24:P,coingeckoId:c??""}),{[i]:{[l.symbol]:k}}):Pt(m)?(k=Rt({balance:m,networkToken:l,priceInCurrency:x,marketCap:T,vol24:b,change24:P,coingeckoId:c??""}),{[i]:{[l.symbol]:k}}):Promise.reject("Incorrect type balance was returned from glacier")};function wt({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,r=Ua__default.default.createHash("sha256").update(a).digest("base64");return "avax:"+Fa(r).substring(0,32)}var Fa=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var _t=async({accountIndex:e,xpubXP:t,walletType:a,network:r})=>{let n=!!r?.isTestnet,o=r&&S(r);if(t===void 0)throw rpcErrors.rpcErrors.invalidParams("xpubXP is required to get address");let s=await C({isTestnet:n,isDevnet:o}),i;switch(a){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:{i=coreWalletsSdk.Avalanche.getAddressPublicKeyFromXpub(t,e);break}case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{i=Buffer.from(t,"hex");break}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${a}`)}return {[vmModuleTypes.NetworkVMType.AVM]:s.getAddress(i,"X"),[vmModuleTypes.NetworkVMType.PVM]:s.getAddress(i,"P")}};var Xa=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")])]),Ut=e=>Xa.safeParse(e);var Ot=async({request:e,network:t,approvalController:a})=>{let r=Ut(e.params);if(!r.success)return console.error("invalid params",r.error),{error:rpcErrors.rpcErrors.invalidParams({message:"Params are invalid",data:{cause:r.error}})};let[n,o]=r.data,s=Buffer.from(n,"utf-8").toString("hex"),i={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE,data:s,accountIndex:o},l={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},details:[{title:"Message",items:[n]}]},c=await a.requestApproval({request:e,displayData:l,signingData:i});return "error"in c?{error:c.error}:"signedData"in c?{result:c.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var Ga=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()}),Xt=e=>Ga.safeParse(e);var Gt=({utxoHexes:e=[],vm:t})=>{try{let a=avalanchejs.utils.getManagerForVM(t).getDefaultCodec();return e.map(r=>{let n=avalanchejs.utils.hexToBuffer(r);return avalanchejs.Utxo.fromBytes(n,a)[0]})}catch{return []}};var ke=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 Wt=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";case vmModuleTypes.TxType.ConvertSubnetToL1:return "Convert Subnet to L1";case vmModuleTypes.TxType.DisableL1Validator:return "Disable L1 Validator";case vmModuleTypes.TxType.IncreaseL1ValidatorBalance:return "Increase L1 Validator Balance";case vmModuleTypes.TxType.RegisterL1Validator:return "Register L1 Validator";case vmModuleTypes.TxType.SetL1ValidatorWeight:return "Set L1 Validator Weight";default:return "Sign Message"}};var Ue=async({indices:e,chainAlias:t,isChange:a,isTestnet:r,xpubXP:n})=>{if(!n||a&&t!=="X")return [];let o=await C({isTestnet:r});return e.map(s=>coreWalletsSdk.Avalanche.getAddressFromXpub(n,s,o,t,a))};var Fe=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,Oe=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,Xe=e=>e.type===vmModuleTypes.TxType.Export,He=e=>e.type===vmModuleTypes.TxType.Import,$a=e=>e.type===vmModuleTypes.TxType.Base,Ge=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,Ja=e=>e.type===vmModuleTypes.TxType.CreateChain,qa=e=>e.type===vmModuleTypes.TxType.CreateSubnet,We=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,jt=e=>e.type===vmModuleTypes.TxType.ConvertSubnetToL1,$t=e=>e.type===vmModuleTypes.TxType.DisableL1Validator,Jt=e=>e.type===vmModuleTypes.TxType.IncreaseL1ValidatorBalance,qt=e=>e.type===vmModuleTypes.TxType.RegisterL1Validator,Kt=e=>e.type===vmModuleTypes.TxType.SetL1ValidatorWeight,ko=e=>Fe(e)||Oe(e)||Ge(e)||We(e),bo=e=>Xe(e)||He(e),zt=e=>$a(e),Yt=e=>Ja(e),Zt=e=>qa(e);var B=(r=>(r.AVM="X-Chain",r.PVM="P-Chain",r.EVM="C-Chain",r))(B||{});function be(e){return e===coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID}var je=(e,t)=>{let a=[],{txFee:r,nodeID:n,start:o,end:s,stake:i,subnetID:l}=e,c=[y("Node ID",n),be(l)?f("Subnet ID","Primary Network"):y("Subnet ID",l),u("Stake Amount",i,9,t),V("Start Date",o),V("End Date",s)];return a.push({title:"Staking Details",items:c}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var $e=(e,t)=>{let a=[],{txFee:r,nodeID:n,delegationFee:o,start:s,end:i,stake:l,subnetID:c,signature:g,publicKey:p}=e,m=[y("Node ID",n),be(c)?f("Subnet ID","Primary Network"):y("Subnet ID",c)];return p&&g&&m.push(y("Public Key",p),y("Proof",g)),m.push(u("Stake Amount",l,9,t),f("Delegation Fee",`${o/1e4} %`),V("Start Date",s),V("End Date",i)),a.push({title:"Staking Details",items:m}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var Je=(e,t)=>{let a=[],{txFee:r,nodeID:n,start:o,end:s,subnetID:i}=e,l=[y("Subnet ID",i),y("Node ID",n),V("Start Date",o),V("End Date",s)];return a.push({title:"Staking Details",items:l}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var qe=(e,t)=>{let a=[],{txFee:r,chainID:n,managerAddress:o,subnetID:s,validators:i}=e,l=[y("Subnet ID",s),y("Chain ID",n),me("Manager Address",o)];return a.push({title:"L1 Details",items:l}),i.forEach(({balance:c,stake:g,nodeId:p,remainingBalanceOwners:m,deactivationOwners:d},x)=>{let T=[y("Node ID",p),u("Balance",c,9,t),u("Stake",g,9,t)];d.length>0&&T.push(f(`${d.length>1?"Owners":"Owner"} Able to Deactivate`,d.join(`
21
21
  `),"vertical")),m.length>0&&T.push(f(`${m.length>1?"Owners":"Owner"} of the Remaining Balance`,m.join(`
22
22
  `),"vertical")),a.push({title:x===0?"Validators":void 0,items:T});}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var Ke=(e,t)=>{let a=[],{txFee:r,amount:n,chain:o,destination:s,type:i}=e;return a.push({title:"Transaction Details",items:[f("Source Chain",`Avalanche ${B[o]}`),f("Target Chain",`Avalanche ${B[s]}`),f("Transaction Type",i?(i[0]||"").toUpperCase()+i.slice(1):""),u("Amount",n,9,t)]}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var ze=(e,t)=>{let a=[],{txFee:r,amount:n,chain:o,source:s,type:i}=e;return a.push({title:"Transaction Details",items:[f("Source Chain",`Avalanche ${B[s]}`),f("Destination Chain",`Avalanche ${B[o]}`),f("Transaction Type",i?(i[0]||"").toUpperCase()+i.slice(1):""),u("Amount",n,9,t)]}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var Ye=(e,t)=>{let a=[],{txFee:r,nodeID:n,subnetID:o}=e,s=[y("Node ID",n),y("Subnet ID",o)];return a.push({title:"Staking Details",items:s}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var Ze=(e,t)=>{let a=[],{txFee:r,chain:n,outputs:o,memo:s}=e;return a.push({title:"Chain Details",items:[f("Active chain",`Avalanche ${B[n]}`)]}),o.forEach((i,l)=>{let c=i.owners.flatMap(g=>[me("To",g),u("Amount",i.amount,9,t)]);i.owners.length>1&&c.push(f("Threshold",i.threshold.toString())),a.push({title:l===0?"Balance Change":void 0,items:c});}),n!==avalanchejs.PVM&&s&&a.push({title:"Memo",items:[s]}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var Qe=(e,t)=>{let a=[],{txFee:r,threshold:n,controlKeys:o}=e;return a.push({title:"Subnet Details",items:[f(o.length>1?"Owners":"Owner",o.join(`
23
23
  `),"vertical"),f("Signature Threshold",`${n}/${o.length}`,"vertical")]}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var et=(e,t)=>{let a=[],{txFee:r,chainID:n,chainName:o,vmID:s,genesisData:i}=e,l=[f("Blockchain name",o,"vertical"),f("Blockchain ID",n,"vertical"),f("Virtual Machine ID",s,"vertical"),f("Genesis Data",i,"vertical")];return a.push({title:"Blockchain Details",items:l}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var tt=(e,t)=>{let a=[],{txFee:r,validationId:n}=e,o=[y("Validation ID",n)];return a.push({title:"L1 Details",items:o}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var at=(e,t)=>{let a=[],{txFee:r,balance:n,validationId:o}=e,s=[y("Validation ID",o),u("Increase by amount",n,9,t)];return a.push({title:"L1 Details",items:s}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var rt=(e,t)=>{let a=[],{txFee:r,balance:n}=e,o=[u("Initial balance",n,9,t)];return a.push({title:"L1 Details",items:o}),r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var nt=(e,t)=>{let a=[],{txFee:r}=e;return r&&a.push({title:"Network Fee",items:[u("Fee Amount",r,9,t)]}),a};var Pe=(e,t)=>{if(zt(e))return Ze(e,t);if(Xe(e))return Ke(e,t);if(He(e))return ze(e,t);if(Zt(e))return Qe(e,t);if(Fe(e))return je(e,t);if(Oe(e))return $e(e,t);if(Yt(e))return et(e,t);if(Ge(e))return Je(e,t);if(We(e))return Ye(e,t);if(jt(e))return qe(e,t);if($t(e))return tt(e,t);if(Jt(e))return at(e,t);if(qt(e))return rt(e,t);if(Kt(e))return nt(e,t)};var er=process.env.GLACIER_API_KEY,Qt=async({request:e,network:t,approvalController:a,glacierApiUrl:r,appInfo:n})=>{let o=Xt(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:l,internalIndices:c,utxos:g}=o.data,p=coreWalletsSdk.Avalanche.getVmByChainAlias(i),m=avalanchejs.utils.hexToBuffer(s),d=t.isTestnet??!1,x=await C({isTestnet:d,isDevnet:S(t)}),T=e.context?.currentAddress;if(!T||typeof T!="string")return {error:rpcErrors.rpcErrors.invalidRequest("No active account found")};let b=Gt({utxoHexes:g,vm:p}),P=b.length?b:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:s,chainAlias:i,network:S(t)?glacierSdk.Network.DEVNET:d?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:r,token:er,headers:X(n)}),k;if(i==="C")k=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:m,vm:p,utxos:P,fromAddress:T});else {let te=avalanchejs.utils.unpackWithManager(p,m),N=e.context?.xpubXP;if(N!==void 0&&typeof N!="string")return {error:rpcErrors.rpcErrors.invalidParams("xpubXP must be a string")};let Ve=await Ue({indices:l??[],chainAlias:i,isChange:!1,isTestnet:d,xpubXP:N}),Re=await Ue({indices:c??[],chainAlias:i,isChange:!0,isTestnet:d,xpubXP:N}),na=[...new Set([T,...Ve,...Re])].map(oa=>avalanchejs.utils.parse(oa)[2]);k=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:te,utxos:P,provider:x,fromAddressBytes:na});}let w=await coreWalletsSdk.Avalanche.parseAvalancheTx(k,x,T),Ne=ke(w),Q=Wt(w);if(w.type==="unknown"||Ne===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let ge={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(k.toJSON()),data:w,vm:p,externalIndices:l,internalIndices:c},fe=Pe(Ne,t.networkToken.symbol);if(fe===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let xe={title:Q,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:fe,networkFeeSelector:!1},ee=await a.requestApproval({request:e,displayData:xe,signingData:ge});if("error"in ee)return {error:ee.error};let _=await tr(x,ee,p);return ar({provider:x,txHash:_,vm:p,onTransactionConfirmed:a.onTransactionConfirmed,onTransactionReverted:a.onTransactionReverted,requestId:e.requestId}),{result:_}}catch(s){return console.error(s),{error:rpcErrors.rpcErrors.internal({message:"Unable to create transaction",data:{cause:s}})}}},tr=async(e,t,a)=>{if("txHash"in t)return t.txHash;let{txID:r}=await e.issueTxHex(t.signedData,a);return r},ar=async({provider:e,txHash:t,vm:a,onTransactionConfirmed:r,onTransactionReverted:n,requestId:o})=>{try{a===avalanchejs.PVM?(await O({operation:()=>e.getApiP().getTxStatus({txID:t}),isSuccess:l=>["Committed","Dropped"].includes(l.status),maxRetries:7})).status==="Committed"?r(t,o):n(t,o):a===avalanchejs.AVM?(await O({operation:()=>e.getApiX().getTxStatus({txID:t}),isSuccess:l=>["Accepted","Rejected"].includes(l.status),maxRetries:7})).status==="Accepted"?r(t,o):n(t,o):(await O({operation:()=>e.getApiC().getAtomicTxStatus(t),isSuccess:l=>["Accepted","Dropped"].includes(l.status),maxRetries:7})).status==="Accepted"?r(t,o):n(t,o);}catch(i){console.error(i),i instanceof Error&&i.message.startsWith("Max retry exceeded.")||n(t,o);}};var rr=zod.z.object({from:zod.z.string().describe("Avalanche receiving address"),transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"])}),ea=e=>rr.safeParse(e);var ir=process.env.GLACIER_API_KEY,aa=async({request:e,network:t,approvalController:a,glacierApiUrl:r,appInfo:n})=>{let o=ea(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:l}=o.data,c=coreWalletsSdk.Avalanche.getVmByChainAlias(i),g=avalanchejs.utils.hexToBuffer(s),p=t.isTestnet??!1,m=await C({isTestnet:p,isDevnet:S(t)}),d=avalanchejs.utils.unpackWithManager(c,g),x=await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:s,chainAlias:i,network:S(t)?glacierSdk.Network.DEVNET:p?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:r,token:ir,headers:X(n)}),T;try{let N=avalanchejs.utils.getManagerForVM(c).unpack(g,avalanchejs.avaxSerial.SignedTx),Ve=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:d,utxos:x,provider:m,credentials:N.getCredentials()});T=d.getSigIndices().map((Re,lt)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(Re,{unsignedTx:Ve,credentialIndex:lt})));}catch{T=d.getSigIndices().map(N=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(N)));}let b=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:d,provider:m,credentials:T,utxos:x}),P=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(l)[2]])[0];if(!P)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let k=b.getSigIndicesForAddress(P);if(!k)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let w=b.getSigIndices();if(!k.some(([te,N])=>w[te]?.includes(N)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let Q=await coreWalletsSdk.Avalanche.parseAvalancheTx(b,m,l),ge=ke(Q);if(Q.type==="unknown"||ge===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let fe={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:Q,vm:c,unsignedTxJson:JSON.stringify(b.toJSON()),ownSignatureIndices:k},xe=Pe(ge,t.networkToken.symbol);if(xe===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let ee={title:"Sign Transaction",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} requests you to sign the following transaction`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:xe},_=await a.requestApproval({request:e,displayData:ee,signingData:fe});return "error"in _?{error:_.error}:"signedData"in _?{result:_.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var z,he,Y,W,Z,ra=class{constructor({approvalController:t,environment:a,appInfo:r}){R(this,z,void 0);R(this,he,void 0);R(this,Y,void 0);R(this,W,void 0);R(this,Z,void 0);let{glacierApiUrl:n,proxyApiUrl:o}=we(a);E(this,Z,r),E(this,z,new Se({glacierApiUrl:n,headers:X(r)})),E(this,he,o),E(this,Y,n),E(this,W,t);}getProvider(t){return C({isTestnet:!!t.isTestnet,isDevnet:S(t)})}getAddress({accountIndex:t,xpubXP:a,walletType:r,network:n}){return _t({accountIndex:t,xpubXP:a,walletType:r,network:n})}getBalances({addresses:t,network:a,storage:r,currency:n}){let o=S(a)?we(vmModuleTypes.Environment.DEV).proxyApiUrl:A(this,he),s=new ce({storage:r,proxyApiUrl:o});return Bt({addresses:t,currency:n,network:a,glacierService:A(this,z),tokenService:s})}getManifest(){let t=vmModuleTypes.parseManifest(pt);return t.success?t.data:void 0}getNetworkFee(t){let{isTestnet:a,vmName:r}=t;return dt({isTestnet:!!a,isDevnet:S(t),vmName:r})}getTransactionHistory({network:t,address:a,nextPageToken:r,offset:n}){return St({network:t,address:a,nextPageToken:r,offset:n,glacierService:A(this,z)})}getTokens(t){return Promise.resolve([])}async onRpcRequest(t,a){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return Ot({request:t,network:a,approvalController:A(this,W)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return aa({request:t,network:a,approvalController:A(this,W),glacierApiUrl:A(this,Y),appInfo:A(this,Z)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return Qt({request:t,network:a,approvalController:A(this,W),glacierApiUrl:A(this,Y),appInfo:A(this,Z)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:a}){return wt({blockchainId:t,isTestnet:a})}};z=new WeakMap,he=new WeakMap,Y=new WeakMap,W=new WeakMap,Z=new WeakMap;var _s=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,Us=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;